shithub: leaf

Download patch

ref: a80af55313ca99a442b2574dd53ebedfb9e736fc
parent: e586373df54e57b080fb59c06b72ba1f50e975ff
author: spiricom <jeff@snyderphonics.com>
date: Sun Mar 1 10:30:26 EST 2020

not sure - updated things

binary files a/.DS_Store b/.DS_Store differ
binary files a/LEAF/.DS_Store b/LEAF/.DS_Store differ
binary files a/LEAF/Inc/.DS_Store /dev/null differ
--- /dev/null
+++ b/LEAF/Inc/MIDI_application.h
@@ -1,0 +1,50 @@
+/*
+ * MIDI_application.h
+ *  Created on: 6 d�c. 2014
+ *      Author: Xavier Halgand
+ *
+ *	Modified on: 9/12/16 by C.P. to handle the MIDI_IDLE state properly, and
+ *	added required code to be compatible with "NucleoSynth"
+ *
+ */
+
+#ifndef MIDI_APPLICATION_H_
+#define MIDI_APPLICATION_H_
+
+/* Includes ------------------------------------------------------------------*/
+
+#include "stdio.h"
+#include "usbh_core.h"
+#include "usbh_MIDI.h"
+#include "main.h"
+
+#include <math.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+/*------------------------------------------------------------------------------*/
+typedef enum
+{
+	MIDI_APPLICATION_IDLE = 0,
+	MIDI_APPLICATION_START,
+	MIDI_APPLICATION_READY,
+	MIDI_APPLICATION_RUNNING,
+	MIDI_APPLICATION_DISCONNECT
+}
+MIDI_ApplicationTypeDef;
+
+
+#define RX_BUFF_SIZE   64  /* Max Received data 64 bytes */
+
+extern uint8_t MIDI_RX_Buffer[RX_BUFF_SIZE];// __ATTR_RAM_D2; // MIDI reception buffer
+extern uint8_t CCs[128];
+
+extern uint8_t MIDIStartOfFrame;
+
+/* Exported functions ------------------------------------------------------- */
+void MIDI_Application(void);
+void LocalMidiHandler(uint8_t param, uint8_t data);
+void ProcessReceivedMidiDatas(uint32_t myLength);
+
+/*------------------------------------------------------------------------------*/
+#endif /* MIDI_APPLICATION_H_ */
--- /dev/null
+++ b/LEAF/Inc/adc.h
@@ -1,0 +1,58 @@
+/**
+  ******************************************************************************
+  * File Name          : ADC.h
+  * Description        : This file provides code for the configuration
+  *                      of the ADC instances.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __adc_H
+#define __adc_H
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+extern ADC_HandleTypeDef hadc1;
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_ADC1_Init(void);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__ adc_H */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/audiostream.h
@@ -1,0 +1,93 @@
+/**
+  ******************************************************************************
+  * @file    Audio_playback_and_record/inc/waveplayer.h
+  * @author  MCD Application Team
+  * @version V1.1.0
+  * @date    26-June-2014
+  * @brief   Header for waveplayer.c module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
+  *
+  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
+  * You may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at:
+  *
+  *        http://www.st.com/software_license_agreement_liberty_v2
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __AUDIOSTREAM_H
+#define __AUDIOSTREAM_H
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32h7xx_hal.h"
+#include "leaf.h"
+#include "main.h"
+
+#define AUDIO_FRAME_SIZE      128
+#define HALF_BUFFER_SIZE      AUDIO_FRAME_SIZE * 2 //number of samples per half of the "double-buffer" (twice the audio frame size because there are interleaved samples for both left and right channels)
+#define AUDIO_BUFFER_SIZE     AUDIO_FRAME_SIZE * 4 //number of samples in the whole data structure (four times the audio frame size because of stereo and also double-buffering/ping-ponging)
+
+
+extern int32_t audioOutBuffer[AUDIO_BUFFER_SIZE];
+extern int32_t audioInBuffer[AUDIO_BUFFER_SIZE];
+extern tMempool smallPool;
+extern tMempool largePool;
+extern uint8_t codecReady;
+extern float sample;
+extern float rightOut;
+extern float rightIn;
+extern tRamp adc[6];
+extern float smoothedADC[6];
+extern float audioDisplayBuffer[128];
+extern uint8_t displayBufferIndex;
+
+/* Exported types ------------------------------------------------------------*/
+typedef enum
+{
+  BUFFER_OFFSET_NONE = 0,
+  BUFFER_OFFSET_HALF,
+  BUFFER_OFFSET_FULL,
+}BUFFER_StateTypeDef;
+
+#ifdef SAMPLERATE96K
+#define SAMPLE_RATE 96000.f
+#else
+#define SAMPLE_RATE 48000.f
+#endif
+
+typedef enum BOOL {
+	FALSE = 0,
+	TRUE
+} BOOL;
+
+#define INV_SAMPLE_RATE 1.f/SAMPLE_RATE
+#define SAMPLE_RATE_MS (SAMPLE_RATE / 1000.f)
+#define INV_SR_MS 1.f/SAMPLE_RATE_MS
+#define SAMPLE_RATE_DIV_PARAMS SAMPLE_RATE / 3
+#define SAMPLE_RATE_DIV_PARAMS_MS (SAMPLE_RATE_DIV_PARAMS / 1000.f)
+#define INV_SR_DIV_PARAMS_MS 1.f/SAMPLE_RATE_DIV_PARAMS_MS
+
+/* Exported macro ------------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */
+void audioInit(I2C_HandleTypeDef* hi2c, SAI_HandleTypeDef* hsaiOut, SAI_HandleTypeDef* hsaiIn);
+
+void initFunctionPointers(void);
+
+void audioFrame(uint16_t buffer_offset);
+
+void DMA1_TransferCpltCallback(DMA_HandleTypeDef *hdma);
+void DMA1_HalfTransferCpltCallback(DMA_HandleTypeDef *hdma);
+
+#endif /* __AUDIOSTREAM_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/bdma.h
@@ -1,0 +1,56 @@
+/**
+  ******************************************************************************
+  * File Name          : dma.h
+  * Description        : This file contains all the function prototypes for
+  *                      the dma.c file
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __bdma_H
+#define __bdma_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* DMA memory to memory transfer handles -------------------------------------*/
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_BDMA_Init(void);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __bdma_H */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/bsp_driver_sd.h
@@ -1,0 +1,84 @@
+/**
+ ******************************************************************************
+  * @file    bsp_driver_sd.h (based on stm32h743i_eval_sd.h)
+  * @brief   This file contains the common defines and functions prototypes for 
+  *          the bsp_driver_sd.c driver.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32H7_SD_H
+#define __STM32H7_SD_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif 
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32h7xx_hal.h"
+#include "fatfs_platform.h"
+
+/* Exported types --------------------------------------------------------*/ 
+/** 
+  * @brief SD Card information structure 
+  */
+#define BSP_SD_CardInfo HAL_SD_CardInfoTypeDef
+
+/* Exported constants --------------------------------------------------------*/ 
+/**
+  * @brief  SD status structure definition  
+  */     
+#define   MSD_OK                        ((uint8_t)0x00)
+#define   MSD_ERROR                     ((uint8_t)0x01)
+#define   MSD_ERROR_SD_NOT_PRESENT      ((uint8_t)0x02)
+
+/** 
+  * @brief  SD transfer state definition  
+  */     
+#define   SD_TRANSFER_OK                ((uint8_t)0x00)
+#define   SD_TRANSFER_BUSY              ((uint8_t)0x01)
+
+#define SD_PRESENT               ((uint8_t)0x01)
+#define SD_NOT_PRESENT           ((uint8_t)0x00)
+#define SD_DATATIMEOUT           ((uint32_t)100000000)
+
+/* USER CODE BEGIN BSP_H_CODE */
+#define SD_DetectIRQHandler()             HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8)
+
+/* Exported functions --------------------------------------------------------*/
+uint8_t BSP_SD_Init(void);
+uint8_t BSP_SD_ITConfig(void);
+uint8_t BSP_SD_ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t Timeout);
+uint8_t BSP_SD_WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32_t Timeout);
+uint8_t BSP_SD_ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks);
+uint8_t BSP_SD_WriteBlocks_DMA(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks);
+uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr);
+uint8_t BSP_SD_GetCardState(void);
+void    BSP_SD_GetCardInfo(BSP_SD_CardInfo *CardInfo);
+uint8_t BSP_SD_IsDetected(void);
+
+/* These functions can be modified in case the current settings (e.g. DMA stream)
+   need to be changed for specific application needs */
+void    BSP_SD_AbortCallback(void);
+void    BSP_SD_WriteCpltCallback(void);
+void    BSP_SD_ReadCpltCallback(void);
+/* USER CODE END BSP_H_CODE */ 
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32H7_SD_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/codec.h
@@ -1,0 +1,162 @@
+#include "stm32h7xx_hal.h"
+
+#define CODEC_I2C_ADDRESS (0x10 << 1) // 7-bit address goes one bit over to the left to make room for R/W bit
+
+void AudioCodec_init(I2C_HandleTypeDef* hi2c);
+
+
+
+
+
+
+//Settings for CS4271
+// translated from the datasheet by JS
+
+// 01h mode control 1
+//
+// M1 M0 ratio1 ratio0 m/s dac_dif2 dac_dif1 dac_dif0   // unsure if setting bit selects master means 1
+// for 48k == 0 1 0 0 0 0 0 1    ( ratio bit chosen as 0 0 based on assumption of 256X master clock)
+// == 0x41
+// for 96k == 1 0 0 0 0 0 0 1    ( ratio bit chosen as 0 0 based on assumption of <= 256X master clock)
+// == 0x81
+// for 192k == 1 1 1 0 0 0 0 1   ( ratio bit chosen as 1 0 based on assumption of 256X master clock, choose 0 0 (full word would be 0xc1 instead of 0xe1) instead if using something like 64X)
+// == 0xe1
+
+// 02h DAC control
+// AMUTE, FILT_SEL, DEM1, DEM0, RMP_UP, RMP_DN, INV_A, INV_B
+// 0 0 0 0 1 1 0 0
+// == 0x0c
+
+// 03h dac volume and mixing
+// (NA) B=A soft zerocross ATAPI3 ATAPI2 ATAPI1 ATAPI0   (B=A makes channel volumes not independent)
+// 0 1 1 1 1 0 0 1  (the last four bits set channel L to go to output A and channel R to go to output B, but this is easily changed with mixing or reversal)
+// == 0x79
+
+// 04h Volume A
+// MUTE vol6 vol5 vol4 vol3 vol2 vol1 vol0
+// 0 0 0 0 0 0 0 0
+// == 0x00
+
+// 05h Volume B
+// MUTE vol6 vol5 vol4 vol3 vol2 vol1 vol0
+// 0 0 0 0 0 0 0 0
+// == 0x00
+
+// 06h ADC control
+// (NA) (NA) Dither16 ADC_DIF MUTEA MUTEB HPFDisableA HPFDisableB
+// 0 0 0 1 0 0 0 0
+// ==0x10
+
+// 07h mode control 2
+// (NA) (NA) (NA) LOOP MUTECA=B FREEZE CPEN PDN
+// for power down version == 0 0 0 0 0 1 1 1
+// == 0x07
+// to send dry ADC input into DAC == 0 0 0 1 0 0 1 0
+// == 0x12
+// for normal operation == 0 0 0 0 0 0 1 0
+// == 0x02
+
+/*
+
+
+#ifndef ADCHPD
+  #define ADCHPD 0
+#elif (ADCHPD == 0)||(ADCHPD == 1)
+#else
+  #error ADCHPD value not defined
+#endif
+
+#ifndef ADCS
+  #define ADCS 2
+#elif (ADCS >=0)&&(ADCS <= 2)
+#else
+  #error ADCS value not defined
+#endif
+
+#ifndef HYST
+  #define HYST 32
+#elif (HYST >= 0)&&(HYST <= 255)
+#else
+  #error HYST value not defined
+#endif
+
+#ifndef LINVOL
+  #define LINVOL 0x17
+#elif (LINVOL >= 0) && (LINVOL <= 0x1f)
+#else
+  #error LINVOL value not defined
+#endif
+
+#ifndef RINVOL
+  #define RINVOL 0x17
+#elif (RINVOL >= 0) && (RINVOL <= 0x1f)
+#else
+  #error RINVOL value not defined
+#endif
+
+#ifndef LHPVOL
+  #define LHPVOL 127
+#elif (LHPVOL == 0) || ((LHPVOL >= 0x30) && (LHPVOL <= 0x7f))
+#else
+  #error LHPVOL value not defined
+#endif
+
+#ifndef RHPVOL
+  #define RHPVOL 127
+#elif (RHPVOL == 0) || ((RHPVOL >= 0x30) && (RHPVOL <= 0x7f))
+#else
+  #error RHPVOL value not defined
+#endif
+
+#ifndef MICBOOST
+  #define MICBOOST 0
+#elif (MICBOOST == 0)||(MICBOOST == 1)
+#else
+  #error MICBOOST value not defined
+#endif
+
+	// 1 = muted
+#ifndef MUTEMIC
+  #define MUTEMIC 1
+#elif (MUTEMIC == 0)||(MUTEMIC == 1)
+#else
+  #error MUTEMIC value not defined
+#endif
+
+	// 0 = line inputs, 1 = mic in
+#ifndef INSEL
+  #define INSEL 0
+#elif (INSEL == 0)||(INSEL == 1)
+#else
+  #error INSEL value not defined
+#endif
+
+#ifndef BYPASS
+  #define BYPASS 0 //setting this to 1 passes the line input straight to the line output
+#elif (BYPASS == 0)||(BYPASS == 1)
+#else
+  #error BYPASS value not defined
+#endif
+
+#ifndef DACSEL
+  #define DACSEL 1
+#elif (DACSEL == 0)||(DACSEL == 1)
+#else
+  #error DACSEL value not defined
+#endif
+
+#ifndef SIDETONE
+  #define SIDETONE 0 // setting this to 1 passes the mic input straight to the line output
+#elif (SIDETONE == 0)||(SIDETONE == 1)
+#else
+  #error SIDETONE value not defined
+#endif
+
+#ifndef SIDEATT
+  #define SIDEATT 0
+#elif (SIDEATT >= 0)&&(SIDEATT <= 3)
+#else
+  #error SIDEATT value not defined
+#endif
+
+*/
--- /dev/null
+++ b/LEAF/Inc/custom_fonts.h
@@ -1,0 +1,6894 @@
+/*
+ * gothic_font.h
+ *
+ *  Created on: Jul 8, 2018
+ *      Author: jeffsnyder
+ */
+
+#ifndef CUSTOM_FONTS_H_
+#define CUSTOM_FONTS_H_
+
+#include "stm32h7xx_hal.h"
+#include "gfx_font.h"
+
+
+#define PROGMEM
+
+// Created by http://oleddisplay.squix.ch/ Consider a donation
+// In case of problems make sure that you are using the font file with the correct version!
+const uint8_t Monospaced_plain_18Bitmaps[] PROGMEM = {
+
+	// Bitmap Data:
+	0x00, // ' '
+	0xFF,0xFF,0xC3,0xC0, // '!'
+	0xCF,0x3C,0xF3,0xCC, // '"'
+	0x04,0xC1,0x90,0x32,0x04,0xC7,0xFE,0xFF,0xC6,0x40,0x98,0xFF,0xDF,0xF8,0xC8,0x11,0x02,0x60,0xCC,0x00, // '#'
+	0x08,0x04,0x0F,0x8F,0xEC,0x96,0x43,0x20,0xF0,0x0F,0x04,0xC2,0x71,0x3F,0xF3,0xF0,0x20,0x10,0x08,0x00, // '$'
+	0x78,0x19,0x83,0x30,0x66,0x0C,0xC0,0xF3,0x83,0x83,0x9E,0x06,0x60,0xCC,0x19,0x83,0x30,0x3C, // '%'
+	0x1F,0x0F,0xC3,0x00,0xC0,0x18,0x0F,0x06,0xCF,0x3B,0xC7,0xF0,0xEE,0x31,0xF6,0x3D,0xC0, // '&'
+	0xFF,0xC0, // '''
+	0x32,0x66,0x4C,0xCC,0xCC,0xC4,0x66,0x23, // '('
+	0xC4,0x66,0x23,0x33,0x33,0x32,0x66,0x4C, // ')'
+	0x11,0x25,0x51,0xC3,0x8A,0xA4,0x88, // '*'
+	0x0C,0x03,0x00,0xC0,0x30,0xFF,0xFF,0xF0,0xC0,0x30,0x0C,0x03,0x00, // '+'
+	0x6D,0xE8, // ','
+	0xFF,0xC0, // '-'
+	0xFC, // '.'
+	0x01,0x81,0x80,0xC0,0xC0,0x60,0x60,0x30,0x38,0x18,0x0C,0x0C,0x06,0x06,0x03,0x03,0x00, // '/'
+	0x3E,0x3F,0x98,0xD8,0x3C,0x1E,0x6F,0x37,0x83,0xC1,0xE0,0xD8,0xCF,0xE3,0xE0, // '0'
+	0x38,0xF8,0xD8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0xFF, // '1'
+	0x7E,0x7F,0xA0,0xE0,0x30,0x18,0x1C,0x0C,0x1C,0x1C,0x1C,0x18,0x1F,0xFF,0xF8, // '2'
+	0x7E,0x7F,0xA0,0xE0,0x30,0x39,0xF8,0xFC,0x07,0x01,0x80,0xE0,0xFF,0xE7,0xE0, // '3'
+	0x06,0x07,0x03,0x82,0xC3,0x61,0x31,0x99,0x8C,0xFF,0xFF,0xC1,0x80,0xC0,0x60, // '4'
+	0x7F,0x3F,0x98,0x0C,0x07,0xE3,0xF9,0x0E,0x03,0x01,0x80,0xE0,0xFF,0xE7,0xE0, // '5'
+	0x1E,0x3F,0x9C,0x5C,0x0C,0x06,0xF3,0xFD,0xC7,0xC1,0xE0,0xD8,0xEF,0xE3,0xE0, // '6'
+	0xFF,0xFF,0xC0,0xC0,0x60,0x70,0x30,0x18,0x18,0x0C,0x0E,0x06,0x03,0x03,0x00, // '7'
+	0x3E,0x3F,0xB0,0x78,0x3C,0x1B,0xF9,0xFD,0xC7,0xC1,0xE0,0xF8,0xEF,0xE3,0xE0, // '8'
+	0x3E,0x3F,0xB8,0xD8,0x3C,0x1F,0x1D,0xFE,0x7B,0x01,0x81,0xD1,0xCF,0xE3,0xC0, // '9'
+	0xFC,0x0F,0xC0, // ':'
+	0x6D,0x80,0x1B,0x7A,0x00, // ';'
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xc0, 0x1c, 0x03, 0xc0, 0x7c, 0x0f,
+	0xc1, 0xfc, 0x0f, 0xc0, 0x7c, 0x03, 0xc0, 0x1c, 0x00, 0xc0, 0x04, // '<'
+	0xFF,0xFF,0xC0,0x00,0x0F,0xFF,0xFC, // '='
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x60, 0x07, 0x00, 0x78, 0x07, 0xc0, 0x7e,
+	0x07, 0xf0, 0x7e, 0x07, 0xc0, 0x78, 0x07, 0x00, 0x60, 0x04, 0x00, // '>'
+	0x7D,0xFE,0x18,0x30,0xE3,0x8E,0x18,0x30,0x60,0x01,0x83,0x00, // '?'
+	0x1E,0x19,0x98,0x6C,0xFC,0xDE,0x6F,0x37,0x9B,0xCD,0xE6,0xF1,0xEC,0x06,0x01,0x80,0x78, // '@'
+	0x1C,0x0E,0x07,0x03,0x83,0x61,0xB0,0xD8,0x6C,0x7F,0x3F,0x98,0xD8,0x3C,0x18, // 'A'
+	0xFE,0x7F,0xB0,0x78,0x3C,0x1F,0xFB,0xFD,0x87,0xC1,0xE0,0xF0,0xFF,0xEF,0xE0, // 'B'
+	0x1F,0x1F,0xDC,0x3C,0x0C,0x06,0x03,0x01,0x80,0xC0,0x70,0x1C,0x27,0xF1,0xF0, // 'C'
+	0xFC,0x7F,0x31,0xD8,0x7C,0x1E,0x0F,0x07,0x83,0xC1,0xE1,0xF1,0xDF,0xCF,0xC0, // 'D'
+	0xFF,0xFF,0xF0,0x18,0x0C,0x07,0xFF,0xFF,0x80,0xC0,0x60,0x30,0x1F,0xFF,0xF8, // 'E'
+	0xFF,0xFF,0xF0,0x18,0x0C,0x07,0xFB,0xFD,0x80,0xC0,0x60,0x30,0x18,0x0C,0x00, // 'F'
+	0x1F,0x1F,0xDC,0x3C,0x0C,0x06,0x3F,0x1F,0x83,0xC1,0xF0,0xD8,0x67,0xF1,0xE0, // 'G'
+	0xC1,0xE0,0xF0,0x78,0x3C,0x1F,0xFF,0xFF,0x83,0xC1,0xE0,0xF0,0x78,0x3C,0x18, // 'H'
+	0xFF,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0xFF, // 'I'
+	0x3E,0x7C,0x18,0x30,0x60,0xC1,0x83,0x06,0x0E,0x1F,0xE7,0x80, // 'J'
+	0xC1,0xB0,0xCC,0x63,0x30,0xD8,0x3E,0x0F,0x83,0x30,0xCE,0x31,0x8C,0x33,0x0E,0xC1,0x80, // 'K'
+	0xC0,0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x80,0xC0,0x60,0x30,0x1F,0xFF,0xF8, // 'L'
+	0xE3,0xF1,0xF8,0xFE,0xFD,0x5E,0xAF,0x77,0x93,0xC1,0xE0,0xF0,0x78,0x3C,0x18, // 'M'
+	0xE1,0xF0,0xFC,0x7A,0x3D,0x1E,0xCF,0x27,0x9B,0xC5,0xE2,0xF1,0xF8,0x7C,0x38, // 'N'
+	0x3E,0x3F,0x98,0xD8,0x3C,0x1E,0x0F,0x07,0x83,0xC1,0xE0,0xD8,0xCF,0xE3,0xE0, // 'O'
+	0xFE,0x7F,0xB0,0xF8,0x3C,0x1E,0x1F,0xFD,0xFC,0xC0,0x60,0x30,0x18,0x0C,0x00, // 'P'
+	0x3E,0x3F,0x98,0xD8,0x3C,0x1E,0x0F,0x07,0x83,0xC1,0xE0,0xD8,0xCF,0xE3,0xE0,0x38,0x0C, // 'Q'
+	0xFE,0x3F,0xCC,0x3B,0x06,0xC1,0xB0,0xEF,0xF3,0xF8,0xC3,0x30,0xEC,0x1B,0x06,0xC0,0xC0, // 'R'
+	0x3E,0x3F,0xB8,0x58,0x0C,0x03,0xE0,0xFC,0x07,0x01,0x80,0xE0,0xFF,0xE7,0xE0, // 'S'
+	0xFF,0xFF,0xF0,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x00, // 'T'
+	0xC1,0xE0,0xF0,0x78,0x3C,0x1E,0x0F,0x07,0x83,0xC1,0xE0,0xF8,0xEF,0xE3,0xE0, // 'U'
+	0xC1,0xE0,0xD8,0xCC,0x66,0x33,0xB8,0xD8,0x6C,0x36,0x0E,0x07,0x03,0x81,0xC0, // 'V'
+	0xC0,0x78,0x0F,0x01,0xB0,0x66,0xEC,0xDD,0x9A,0xB3,0x56,0x6A,0xCF,0x78,0xC6,0x18,0xC3,0x18, // 'W'
+	0xE3,0xB1,0x9D,0x86,0xC1,0xC0,0xE0,0x70,0x38,0x3E,0x1B,0x1D,0xCC,0x6E,0x38, // 'X'
+	0xE1,0xD8,0x67,0x38,0xCC,0x1E,0x07,0x80,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x00, // 'Y'
+	0xFF,0xFF,0xC0,0xC0,0xE0,0x60,0x60,0x70,0x30,0x38,0x38,0x18,0x1F,0xFF,0xF8, // 'Z'
+	0xFF,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xFF, // '['
+	0xC0,0x30,0x18,0x06,0x03,0x00,0xC0,0x60,0x38,0x0C,0x06,0x01,0x80,0xC0,0x30,0x18,0x06, // '\'
+	0xFF,0x33,0x33,0x33,0x33,0x33,0x33,0xFF, // ']'
+	0x0C,0x07,0x83,0x31,0x86,0xC0,0xC0, // '^'
+	0xFF,0xFF,0xFC, // '_'
+	0xC6,0x30, // '`'
+	0x3E,0x3F,0x90,0xE0,0x33,0xFF,0xFF,0x07,0x87,0xFF,0xBE,0xC0, // 'a'
+	0xC0,0x60,0x30,0x18,0x0D,0xE7,0xFB,0x8F,0x83,0xC1,0xE0,0xF0,0x7C,0x7F,0xF6,0xF0, // 'b'
+	0x1E,0x7F,0x61,0xC0,0xC0,0xC0,0xC0,0x61,0x7F,0x1E, // 'c'
+	0x01,0x80,0xC0,0x60,0x33,0xDB,0xFF,0x8F,0x83,0xC1,0xE0,0xF0,0x7C,0x77,0xF9,0xEC, // 'd'
+	0x3E,0x3F,0x98,0xF8,0x3F,0xFF,0xFF,0x00,0xC1,0x7F,0x8F,0x80, // 'e'
+	0x0F,0x1F,0x18,0x18,0xFF,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, // 'f'
+	0x3D,0xBF,0xF8,0xF8,0x3C,0x1E,0x0F,0x07,0xC7,0x7F,0x9E,0xC0,0x68,0x77,0xF1,0xF0, // 'g'
+	0xC0,0x60,0x30,0x18,0x0C,0xE7,0xFB,0x8F,0x83,0xC1,0xE0,0xF0,0x78,0x3C,0x1E,0x0C, // 'h'
+	0x18,0x18,0x00,0x00,0xF8,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0xFF, // 'i'
+	0x0C,0x30,0x00,0x7D,0xF0,0xC3,0x0C,0x30,0xC3,0x0C,0x30,0xC3,0xFB,0xC0, // 'j'
+	0xC0,0x60,0x30,0x18,0x0C,0x3E,0x3B,0x39,0xB8,0xF8,0x7E,0x33,0x18,0xCC,0x76,0x1C, // 'k'
+	0xF8,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x0F,0x0F, // 'l'
+	0xDB,0xBF,0xFC,0xCF,0x33,0xCC,0xF3,0x3C,0xCF,0x33,0xCC,0xF3,0x30, // 'm'
+	0xCE,0x7F,0xB8,0xF8,0x3C,0x1E,0x0F,0x07,0x83,0xC1,0xE0,0xC0, // 'n'
+	0x3E,0x3F,0xB8,0xF8,0x3C,0x1E,0x0F,0x07,0xC7,0x7F,0x1F,0x00, // 'o'
+	0xDE,0x7F,0xB8,0xF8,0x3C,0x1E,0x0F,0x07,0xC7,0xFF,0x6F,0x30,0x18,0x0C,0x06,0x00, // 'p'
+	0x3D,0xBF,0xF8,0xF8,0x3C,0x1E,0x0F,0x07,0xC7,0x7F,0x9E,0xC0,0x60,0x30,0x18,0x0C, // 'q'
+	0xDD,0xBF,0x8E,0x0C,0x18,0x30,0x60,0xC1,0x80, // 'r'
+	0x3F,0x7F,0xF0,0x3F,0x07,0xF0,0x3C,0x07,0x03,0xFF,0xBF,0x00, // 's'
+	0x18,0x0C,0x06,0x1F,0xFF,0xF8,0xC0,0x60,0x30,0x18,0x0C,0x06,0x03,0xF0,0xF8, // 't'
+	0xC1,0xE0,0xF0,0x78,0x3C,0x1E,0x0F,0x07,0xC7,0x7F,0x9C,0xC0, // 'u'
+	0xC1,0xB1,0x98,0xCC,0x63,0x61,0xB0,0xD8,0x38,0x1C,0x0E,0x00, // 'v'
+	0xC0,0x78,0x0D,0x83,0x32,0x66,0xEC,0xD5,0x8E,0xE1,0xDC,0x31,0x86,0x30, // 'w'
+	0xE3,0xBB,0x8D,0x83,0x81,0xC0,0xE0,0xF8,0x6C,0x63,0x71,0xC0, // 'x'
+	0xC1,0xB1,0x98,0xCE,0x63,0x61,0xB0,0x78,0x38,0x0C,0x0E,0x06,0x03,0x07,0x83,0x80, // 'y'
+	0xFF,0xFF,0xC1,0xC1,0xC1,0xC0,0xC0,0xC0,0xE0,0xFF,0xFF,0xC0, // 'z'
+	0x0F,0x1F,0x18,0x18,0x18,0x18,0x18,0xF0,0xF0,0x38,0x18,0x18,0x18,0x18,0x18,0x1F,0x0F, // '{'
+	0xFF,0xFF,0xFF,0xFF,0xF0, // '|'
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x81, 0x98, 0x19, 0x81, 0x98, 0x7f,
+	0xe7, 0xfe, 0x7f, 0xe7, 0xfe, 0x7f, 0xe7, 0xfe, 0x7f, 0xe0, 0x00// lock icon
+	//0xF0,0xF8,0x18,0x18,0x18,0x18,0x18,0x0F,0x0F,0x1C,0x18,0x18,0x18,0x18,0x18,0xF8,0xF0 // '}'
+};
+const GFXglyph Monospaced_plain_18Glyphs[] PROGMEM = {
+// bitmapOffset, width, height, xAdvance, xOffset, yOffset
+	  {     0,   1,   1,  12,    0,    0 }, // ' '
+	  {     1,   2,  13,  12,    5,  -13 }, // '!'
+	  {     5,   6,   5,  12,    3,  -13 }, // '"'
+	  {     9,  11,  14,  12,    0,  -14 }, // '#'
+	  {    29,   9,  17,  12,    1,  -14 }, // '$'
+	  {    49,  11,  13,  12,    0,  -13 }, // '%'
+	  {    67,  10,  13,  12,    1,  -13 }, // '&'
+	  {    84,   2,   5,  12,    5,  -13 }, // '''
+	  {    86,   4,  16,  12,    4,  -14 }, // '('
+	  {    94,   4,  16,  12,    3,  -14 }, // ')'
+	  {   102,   7,   8,  12,    2,  -13 }, // '*'
+	  {   109,  10,  10,  12,    1,  -11 }, // '+'
+	  {   122,   3,   5,  12,    3,   -3 }, // ','
+	  {   124,   5,   2,  12,    3,   -6 }, // '-'
+	  {   126,   2,   3,  12,    4,   -3 }, // '.'
+	  {   127,   9,  15,  12,    1,  -13 }, // '/'
+	  {   144,   9,  13,  12,    1,  -13 }, // '0'
+	  {   159,   8,  13,  12,    2,  -13 }, // '1'
+	  {   172,   9,  13,  12,    1,  -13 }, // '2'
+	  {   187,   9,  13,  12,    1,  -13 }, // '3'
+	  {   202,   9,  13,  12,    1,  -13 }, // '4'
+	  {   217,   9,  13,  12,    1,  -13 }, // '5'
+	  {   232,   9,  13,  12,    1,  -13 }, // '6'
+	  {   247,   9,  13,  12,    1,  -13 }, // '7'
+	  {   262,   9,  13,  12,    1,  -13 }, // '8'
+	  {   277,   9,  13,  12,    1,  -13 }, // '9'
+	  {   292,   2,   9,  12,    4,   -9 }, // ':'
+	  {   295,   3,  11,  12,    3,   -9 }, // ';'
+	  {   300,  12,  18,  12,    0,  -18 }, // '<'
+	  {   327,   9,   6,  12,    1,   -9 }, // '='
+	  {   334,  12,  18,  12,    0,  -18 }, // '>'
+	  {   361,   7,  13,  12,    2,  -13 }, // '?'
+	  {   373,   9,  15,  12,    1,  -12 }, // '@'
+	  {   390,   9,  13,  12,    1,  -13 }, // 'A'
+	  {   405,   9,  13,  12,    1,  -13 }, // 'B'
+	  {   420,   9,  13,  12,    1,  -13 }, // 'C'
+	  {   435,   9,  13,  12,    1,  -13 }, // 'D'
+	  {   450,   9,  13,  12,    1,  -13 }, // 'E'
+	  {   465,   9,  13,  12,    1,  -13 }, // 'F'
+	  {   480,   9,  13,  12,    1,  -13 }, // 'G'
+	  {   495,   9,  13,  12,    1,  -13 }, // 'H'
+	  {   510,   8,  13,  12,    2,  -13 }, // 'I'
+	  {   524,   7,  13,  12,    1,  -13 }, // 'J'
+	  {   535,  10,  13,  12,    1,  -13 }, // 'K'
+	  {   552,   9,  13,  12,    1,  -13 }, // 'L'
+	  {   567,   9,  13,  12,    1,  -13 }, // 'M'
+	  {   582,   9,  13,  12,    1,  -13 }, // 'N'
+	  {   597,   9,  13,  12,    1,  -13 }, // 'O'
+	  {   612,   9,  13,  12,    1,  -13 }, // 'P'
+	  {   627,   9,  15,  12,    1,  -13 }, // 'Q'
+	  {   644,  10,  13,  12,    1,  -13 }, // 'R'
+	  {   661,   9,  13,  12,    1,  -13 }, // 'S'
+	  {   676,  10,  13,  12,    1,  -13 }, // 'T'
+	  {   693,   9,  13,  12,    1,  -13 }, // 'U'
+	  {   708,   9,  13,  12,    1,  -13 }, // 'V'
+	  {   723,  11,  13,  12,    0,  -13 }, // 'W'
+	  {   741,   9,  13,  12,    1,  -13 }, // 'X'
+	  {   756,  10,  13,  12,    1,  -13 }, // 'Y'
+	  {   773,   9,  13,  12,    1,  -13 }, // 'Z'
+	  {   788,   4,  16,  12,    4,  -14 }, // '['
+	  {   796,   9,  15,  12,    1,  -13 }, // '\'
+	  {   813,   4,  16,  12,    3,  -14 }, // ']'
+	  {   821,  10,   5,  12,    1,  -13 }, // '^'
+	  {   828,  11,   2,  12,    0,    2 }, // '_'
+	  {   831,   4,   3,  12,    2,  -14 }, // '`'
+	  {   833,   9,  10,  12,    1,  -10 }, // 'a'
+	  {   845,   9,  14,  12,    1,  -14 }, // 'b'
+	  {   861,   8,  10,  12,    1,  -10 }, // 'c'
+	  {   871,   9,  14,  12,    1,  -14 }, // 'd'
+	  {   887,   9,  10,  12,    1,  -10 }, // 'e'
+	  {   899,   8,  14,  12,    1,  -14 }, // 'f'
+	  {   913,   9,  14,  12,    1,  -10 }, // 'g'
+	  {   929,   9,  14,  12,    1,  -14 }, // 'h'
+	  {   945,   8,  14,  12,    2,  -14 }, // 'i'
+	  {   959,   6,  18,  12,    1,  -14 }, // 'j'
+	  {   973,   9,  14,  12,    1,  -14 }, // 'k'
+	  {   989,   8,  14,  12,    1,  -14 }, // 'l'
+	  {  1003,  10,  10,  12,    1,  -10 }, // 'm'
+	  {  1017,   9,  10,  12,    1,  -10 }, // 'n'
+	  {  1028,   9,  10,  12,    1,  -10 }, // 'o'
+	  {  1040,   9,  14,  12,    1,  -10 }, // 'p'
+	  {  1056,   9,  14,  12,    1,  -10 }, // 'q'
+	  {  1072,   7,  10,  12,    3,  -10 }, // 'r'
+	  {  1081,   9,  10,  12,    1,  -10 }, // 's'
+	  {  1093,   9,  13,  12,    1,  -13 }, // 't'
+	  {  1108,   9,  10,  12,    1,  -10 }, // 'u'
+	  {  1120,   9,  10,  12,    1,  -10 }, // 'v'
+	  {  1132,  11,  10,  12,    0,  -10 }, // 'w'
+	  {  1146,   9,  10,  12,    1,  -10 }, // 'x'
+	  {  1158,   9,  14,  12,    1,  -10 }, // 'y'
+	  {  1174,   9,  10,  12,    1,  -10 }, // 'z'
+	  {  1186,   8,  17,  12,    2,  -14 }, // '{'
+	  {  1203,   2,  18,  12,    5,  -14 }, // '|'
+	  {  1208,  12,  18,  12,    0,  -18 }  // lock icon
+	  //{  1176,   8,  17,  12,    2,  -14 } // '}'
+};
+const GFXfont Monospaced_plain_18 PROGMEM = {
+(uint8_t  *)Monospaced_plain_18Bitmaps,(GFXglyph *)Monospaced_plain_18Glyphs,0x20, 0x7E, 16};
+
+
+const uint8_t FreeMono9pt7bBitmaps[]  = {
+  0xAA, 0xA8, 0x0C, 0xED, 0x24, 0x92, 0x48, 0x24, 0x48, 0x91, 0x2F, 0xE4,
+  0x89, 0x7F, 0x28, 0x51, 0x22, 0x40, 0x08, 0x3E, 0x62, 0x40, 0x30, 0x0E,
+  0x01, 0x81, 0xC3, 0xBE, 0x08, 0x08, 0x71, 0x12, 0x23, 0x80, 0x23, 0xB8,
+  0x0E, 0x22, 0x44, 0x70, 0x38, 0x81, 0x02, 0x06, 0x1A, 0x65, 0x46, 0xC8,
+  0xEC, 0xE9, 0x24, 0x5A, 0xAA, 0xA9, 0x40, 0xA9, 0x55, 0x5A, 0x80, 0x10,
+  0x22, 0x4B, 0xE3, 0x05, 0x11, 0x00, 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04,
+  0x00, 0x6B, 0x48, 0xFF, 0x00, 0xF0, 0x02, 0x08, 0x10, 0x60, 0x81, 0x04,
+  0x08, 0x20, 0x41, 0x02, 0x08, 0x00, 0x38, 0x8A, 0x0C, 0x18, 0x30, 0x60,
+  0xC1, 0x82, 0x88, 0xE0, 0x27, 0x28, 0x42, 0x10, 0x84, 0x21, 0x3E, 0x38,
+  0x8A, 0x08, 0x10, 0x20, 0x82, 0x08, 0x61, 0x03, 0xF8, 0x7C, 0x06, 0x02,
+  0x02, 0x1C, 0x06, 0x01, 0x01, 0x01, 0x42, 0x3C, 0x18, 0xA2, 0x92, 0x8A,
+  0x28, 0xBF, 0x08, 0x21, 0xC0, 0x7C, 0x81, 0x03, 0xE4, 0x40, 0x40, 0x81,
+  0x03, 0x88, 0xE0, 0x1E, 0x41, 0x04, 0x0B, 0x98, 0xB0, 0xC1, 0xC2, 0x88,
+  0xE0, 0xFE, 0x04, 0x08, 0x20, 0x40, 0x82, 0x04, 0x08, 0x20, 0x40, 0x38,
+  0x8A, 0x0C, 0x14, 0x47, 0x11, 0x41, 0x83, 0x8C, 0xE0, 0x38, 0x8A, 0x1C,
+  0x18, 0x68, 0xCE, 0x81, 0x04, 0x13, 0xC0, 0xF0, 0x0F, 0x6C, 0x00, 0xD2,
+  0xD2, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, 0xFF, 0x80,
+  0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, 0xC0, 0x80,
+  0x3D, 0x84, 0x08, 0x30, 0xC2, 0x00, 0x00, 0x00, 0x30, 0x3C, 0x46, 0x82,
+  0x8E, 0xB2, 0xA2, 0xA2, 0x9F, 0x80, 0x80, 0x40, 0x3C, 0x3C, 0x01, 0x40,
+  0x28, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, 0xFE,
+  0x21, 0x90, 0x48, 0x67, 0xE2, 0x09, 0x02, 0x81, 0x41, 0xFF, 0x80, 0x3E,
+  0xB0, 0xF0, 0x30, 0x08, 0x04, 0x02, 0x00, 0x80, 0x60, 0x8F, 0x80, 0xFE,
+  0x21, 0x90, 0x68, 0x14, 0x0A, 0x05, 0x02, 0x83, 0x43, 0x7F, 0x00, 0xFF,
+  0x20, 0x90, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x81, 0x40, 0xFF, 0xC0, 0xFF,
+  0xA0, 0x50, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x80, 0x40, 0x78, 0x00, 0x1E,
+  0x98, 0x6C, 0x0A, 0x00, 0x80, 0x20, 0xF8, 0x0B, 0x02, 0x60, 0x87, 0xC0,
+  0xE3, 0xA0, 0x90, 0x48, 0x27, 0xF2, 0x09, 0x04, 0x82, 0x41, 0x71, 0xC0,
+  0xF9, 0x08, 0x42, 0x10, 0x84, 0x27, 0xC0, 0x1F, 0x02, 0x02, 0x02, 0x02,
+  0x02, 0x82, 0x82, 0xC6, 0x78, 0xE3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21,
+  0x08, 0x84, 0x41, 0x70, 0xC0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41,
+  0x41, 0x41, 0xFF, 0xE0, 0xEC, 0x19, 0x45, 0x28, 0xA4, 0xA4, 0x94, 0x91,
+  0x12, 0x02, 0x40, 0x5C, 0x1C, 0xC3, 0xB0, 0x94, 0x4A, 0x24, 0x92, 0x49,
+  0x14, 0x8A, 0x43, 0x70, 0x80, 0x1E, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06,
+  0x02, 0x82, 0x63, 0x0F, 0x00, 0xFE, 0x43, 0x41, 0x41, 0x42, 0x7C, 0x40,
+  0x40, 0x40, 0xF0, 0x1C, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 0x02, 0x82,
+  0x63, 0x1F, 0x04, 0x07, 0x92, 0x30, 0xFE, 0x21, 0x90, 0x48, 0x24, 0x23,
+  0xE1, 0x10, 0x84, 0x41, 0x70, 0xC0, 0x3A, 0xCD, 0x0A, 0x03, 0x01, 0x80,
+  0xC1, 0xC7, 0x78, 0xFF, 0xC4, 0x62, 0x21, 0x00, 0x80, 0x40, 0x20, 0x10,
+  0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, 0x82,
+  0x22, 0x0E, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x42, 0x10, 0x22, 0x04,
+  0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xE8, 0x09, 0x11, 0x25, 0x44, 0xA8,
+  0x55, 0x0C, 0xA1, 0x8C, 0x31, 0x84, 0x30, 0xE3, 0xA0, 0x88, 0x82, 0x80,
+  0x80, 0xC0, 0x90, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA0, 0x88, 0x82, 0x81,
+  0x40, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x81, 0x04,
+  0x10, 0x21, 0x83, 0xFC, 0xEA, 0xAA, 0xAA, 0xC0, 0x80, 0x81, 0x03, 0x02,
+  0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xD5, 0x55, 0x55, 0xC0,
+  0x10, 0x51, 0x22, 0x28, 0x20, 0xFF, 0xE0, 0x88, 0x80, 0x7E, 0x00, 0x80,
+  0x47, 0xEC, 0x14, 0x0A, 0x0C, 0xFB, 0xC0, 0x20, 0x10, 0x0B, 0xC6, 0x12,
+  0x05, 0x02, 0x81, 0x40, 0xB0, 0xB7, 0x80, 0x3A, 0x8E, 0x0C, 0x08, 0x10,
+  0x10, 0x9E, 0x03, 0x00, 0x80, 0x47, 0xA4, 0x34, 0x0A, 0x05, 0x02, 0x81,
+  0x21, 0x8F, 0x60, 0x3C, 0x43, 0x81, 0xFF, 0x80, 0x80, 0x61, 0x3E, 0x3D,
+  0x04, 0x3E, 0x41, 0x04, 0x10, 0x41, 0x0F, 0x80, 0x3D, 0xA1, 0xA0, 0x50,
+  0x28, 0x14, 0x09, 0x0C, 0x7A, 0x01, 0x01, 0x87, 0x80, 0xC0, 0x20, 0x10,
+  0x0B, 0xC6, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x01,
+  0xC0, 0x81, 0x02, 0x04, 0x08, 0x11, 0xFC, 0x10, 0x3E, 0x10, 0x84, 0x21,
+  0x08, 0x42, 0x3F, 0x00, 0xC0, 0x40, 0x40, 0x4F, 0x44, 0x58, 0x70, 0x48,
+  0x44, 0x42, 0xC7, 0x70, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23,
+  0xF8, 0xB7, 0x64, 0x62, 0x31, 0x18, 0x8C, 0x46, 0x23, 0x91, 0x5E, 0x31,
+  0x90, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x3E, 0x31, 0xA0, 0x30, 0x18,
+  0x0C, 0x05, 0x8C, 0x7C, 0xDE, 0x30, 0x90, 0x28, 0x14, 0x0A, 0x05, 0x84,
+  0xBC, 0x40, 0x20, 0x38, 0x00, 0x3D, 0xA1, 0xA0, 0x50, 0x28, 0x14, 0x09,
+  0x0C, 0x7A, 0x01, 0x00, 0x80, 0xE0, 0xCE, 0xA1, 0x82, 0x04, 0x08, 0x10,
+  0x7C, 0x3A, 0x8D, 0x0B, 0x80, 0xF0, 0x70, 0xDE, 0x40, 0x40, 0xFC, 0x40,
+  0x40, 0x40, 0x40, 0x40, 0x41, 0x3E, 0xC3, 0x41, 0x41, 0x41, 0x41, 0x41,
+  0x43, 0x3D, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x20, 0xA0, 0x50, 0x10, 0xE3,
+  0xC0, 0x92, 0x4B, 0x25, 0x92, 0xA9, 0x98, 0x44, 0xE3, 0x31, 0x05, 0x01,
+  0x01, 0x41, 0x11, 0x05, 0xC7, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x40, 0xA0,
+  0x60, 0x10, 0x10, 0x08, 0x3E, 0x00, 0xFD, 0x08, 0x20, 0x82, 0x08, 0x10,
+  0xBF, 0x29, 0x24, 0xA2, 0x49, 0x26, 0xFF, 0xF8, 0x89, 0x24, 0x8A, 0x49,
+  0x2C, 0x61, 0x24, 0x30 };
+
+const GFXglyph FreeMono9pt7bGlyphs[]  = {
+  {     0,   0,   0,  11,    0,    1 },   // 0x20 ' '
+  {     0,   2,  11,  11,    4,  -10 },   // 0x21 '!'
+  {     3,   6,   5,  11,    2,  -10 },   // 0x22 '"'
+  {     7,   7,  12,  11,    2,  -10 },   // 0x23 '#'
+  {    18,   8,  12,  11,    1,  -10 },   // 0x24 '$'
+  {    30,   7,  11,  11,    2,  -10 },   // 0x25 '%'
+  {    40,   7,  10,  11,    2,   -9 },   // 0x26 '&'
+  {    49,   3,   5,  11,    4,  -10 },   // 0x27 '''
+  {    51,   2,  13,  11,    5,  -10 },   // 0x28 '('
+  {    55,   2,  13,  11,    4,  -10 },   // 0x29 ')'
+  {    59,   7,   7,  11,    2,  -10 },   // 0x2A '*'
+  {    66,   7,   7,  11,    2,   -8 },   // 0x2B '+'
+  {    73,   3,   5,  11,    2,   -1 },   // 0x2C ','
+  {    75,   9,   1,  11,    1,   -5 },   // 0x2D '-'
+  {    77,   2,   2,  11,    4,   -1 },   // 0x2E '.'
+  {    78,   7,  13,  11,    2,  -11 },   // 0x2F '/'
+  {    90,   7,  11,  11,    2,  -10 },   // 0x30 '0'
+  {   100,   5,  11,  11,    3,  -10 },   // 0x31 '1'
+  {   107,   7,  11,  11,    2,  -10 },   // 0x32 '2'
+  {   117,   8,  11,  11,    1,  -10 },   // 0x33 '3'
+  {   128,   6,  11,  11,    3,  -10 },   // 0x34 '4'
+  {   137,   7,  11,  11,    2,  -10 },   // 0x35 '5'
+  {   147,   7,  11,  11,    2,  -10 },   // 0x36 '6'
+  {   157,   7,  11,  11,    2,  -10 },   // 0x37 '7'
+  {   167,   7,  11,  11,    2,  -10 },   // 0x38 '8'
+  {   177,   7,  11,  11,    2,  -10 },   // 0x39 '9'
+  {   187,   2,   8,  11,    4,   -7 },   // 0x3A ':'
+  {   189,   3,  11,  11,    3,   -7 },   // 0x3B ';'
+  {   194,   8,   8,  11,    1,   -8 },   // 0x3C '<'
+  {   202,   9,   4,  11,    1,   -6 },   // 0x3D '='
+  {   207,   9,   8,  11,    1,   -8 },   // 0x3E '>'
+  {   216,   7,  10,  11,    2,   -9 },   // 0x3F '?'
+  {   225,   8,  12,  11,    2,  -10 },   // 0x40 '@'
+  {   237,  11,  10,  11,    0,   -9 },   // 0x41 'A'
+  {   251,   9,  10,  11,    1,   -9 },   // 0x42 'B'
+  {   263,   9,  10,  11,    1,   -9 },   // 0x43 'C'
+  {   275,   9,  10,  11,    1,   -9 },   // 0x44 'D'
+  {   287,   9,  10,  11,    1,   -9 },   // 0x45 'E'
+  {   299,   9,  10,  11,    1,   -9 },   // 0x46 'F'
+  {   311,  10,  10,  11,    1,   -9 },   // 0x47 'G'
+  {   324,   9,  10,  11,    1,   -9 },   // 0x48 'H'
+  {   336,   5,  10,  11,    3,   -9 },   // 0x49 'I'
+  {   343,   8,  10,  11,    2,   -9 },   // 0x4A 'J'
+  {   353,   9,  10,  11,    1,   -9 },   // 0x4B 'K'
+  {   365,   8,  10,  11,    2,   -9 },   // 0x4C 'L'
+  {   375,  11,  10,  11,    0,   -9 },   // 0x4D 'M'
+  {   389,   9,  10,  11,    1,   -9 },   // 0x4E 'N'
+  {   401,   9,  10,  11,    1,   -9 },   // 0x4F 'O'
+  {   413,   8,  10,  11,    1,   -9 },   // 0x50 'P'
+  {   423,   9,  13,  11,    1,   -9 },   // 0x51 'Q'
+  {   438,   9,  10,  11,    1,   -9 },   // 0x52 'R'
+  {   450,   7,  10,  11,    2,   -9 },   // 0x53 'S'
+  {   459,   9,  10,  11,    1,   -9 },   // 0x54 'T'
+  {   471,   9,  10,  11,    1,   -9 },   // 0x55 'U'
+  {   483,  11,  10,  11,    0,   -9 },   // 0x56 'V'
+  {   497,  11,  10,  11,    0,   -9 },   // 0x57 'W'
+  {   511,   9,  10,  11,    1,   -9 },   // 0x58 'X'
+  {   523,   9,  10,  11,    1,   -9 },   // 0x59 'Y'
+  {   535,   7,  10,  11,    2,   -9 },   // 0x5A 'Z'
+  {   544,   2,  13,  11,    5,  -10 },   // 0x5B '['
+  {   548,   7,  13,  11,    2,  -11 },   // 0x5C '\'
+  {   560,   2,  13,  11,    4,  -10 },   // 0x5D ']'
+  {   564,   7,   5,  11,    2,  -10 },   // 0x5E '^'
+  {   569,  11,   1,  11,    0,    2 },   // 0x5F '_'
+  {   571,   3,   3,  11,    3,  -11 },   // 0x60 '`'
+  {   573,   9,   8,  11,    1,   -7 },   // 0x61 'a'
+  {   582,   9,  11,  11,    1,  -10 },   // 0x62 'b'
+  {   595,   7,   8,  11,    2,   -7 },   // 0x63 'c'
+  {   602,   9,  11,  11,    1,  -10 },   // 0x64 'd'
+  {   615,   8,   8,  11,    1,   -7 },   // 0x65 'e'
+  {   623,   6,  11,  11,    3,  -10 },   // 0x66 'f'
+  {   632,   9,  11,  11,    1,   -7 },   // 0x67 'g'
+  {   645,   9,  11,  11,    1,  -10 },   // 0x68 'h'
+  {   658,   7,  10,  11,    2,   -9 },   // 0x69 'i'
+  {   667,   5,  13,  11,    3,   -9 },   // 0x6A 'j'
+  {   676,   8,  11,  11,    2,  -10 },   // 0x6B 'k'
+  {   687,   7,  11,  11,    2,  -10 },   // 0x6C 'l'
+  {   697,   9,   8,  11,    1,   -7 },   // 0x6D 'm'
+  {   706,   9,   8,  11,    1,   -7 },   // 0x6E 'n'
+  {   715,   9,   8,  11,    1,   -7 },   // 0x6F 'o'
+  {   724,   9,  11,  11,    1,   -7 },   // 0x70 'p'
+  {   737,   9,  11,  11,    1,   -7 },   // 0x71 'q'
+  {   750,   7,   8,  11,    3,   -7 },   // 0x72 'r'
+  {   757,   7,   8,  11,    2,   -7 },   // 0x73 's'
+  {   764,   8,  10,  11,    2,   -9 },   // 0x74 't'
+  {   774,   8,   8,  11,    1,   -7 },   // 0x75 'u'
+  {   782,   9,   8,  11,    1,   -7 },   // 0x76 'v'
+  {   791,   9,   8,  11,    1,   -7 },   // 0x77 'w'
+  {   800,   9,   8,  11,    1,   -7 },   // 0x78 'x'
+  {   809,   9,  11,  11,    1,   -7 },   // 0x79 'y'
+  {   822,   7,   8,  11,    2,   -7 },   // 0x7A 'z'
+  {   829,   3,  13,  11,    4,  -10 },   // 0x7B '{'
+  {   834,   1,  13,  11,    5,  -10 },   // 0x7C '|'
+  {   836,   3,  13,  11,    4,  -10 },   // 0x7D '}'
+  {   841,   7,   3,  11,    2,   -6 } }; // 0x7E '~'
+
+const GFXfont FreeMono9pt7b  = {
+  (uint8_t  *)FreeMono9pt7bBitmaps,
+  (GFXglyph *)FreeMono9pt7bGlyphs,
+  0x20, 0x7E, 18 };
+const uint8_t FreeSans12pt7bBitmaps[] PROGMEM = {
+  0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x06, 0x30,
+  0x31, 0x03, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x03, 0x18, 0x18,
+  0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x01, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30,
+  0x04, 0x03, 0xE1, 0xFF, 0x72, 0x6C, 0x47, 0x88, 0xF1, 0x07, 0x20, 0x7E,
+  0x03, 0xF0, 0x17, 0x02, 0x3C, 0x47, 0x88, 0xF1, 0x1B, 0x26, 0x7F, 0xC3,
+  0xE0, 0x10, 0x02, 0x00, 0x00, 0x06, 0x03, 0xC0, 0x40, 0x7E, 0x0C, 0x0E,
+  0x70, 0x80, 0xC3, 0x18, 0x0C, 0x31, 0x00, 0xE7, 0x30, 0x07, 0xE6, 0x00,
+  0x3C, 0x40, 0x00, 0x0C, 0x7C, 0x00, 0x8F, 0xE0, 0x19, 0xC7, 0x01, 0x18,
+  0x30, 0x31, 0x83, 0x02, 0x1C, 0x70, 0x40, 0xFE, 0x04, 0x07, 0xC0, 0x0F,
+  0x00, 0x7E, 0x03, 0x9C, 0x0C, 0x30, 0x30, 0xC0, 0xE7, 0x01, 0xF8, 0x03,
+  0x80, 0x3E, 0x01, 0xCC, 0x6E, 0x19, 0xB0, 0x7C, 0xC0, 0xF3, 0x03, 0xCE,
+  0x1F, 0x9F, 0xE6, 0x1E, 0x1C, 0xFF, 0xA0, 0x08, 0x8C, 0x66, 0x31, 0x98,
+  0xC6, 0x31, 0x8C, 0x63, 0x08, 0x63, 0x08, 0x61, 0x0C, 0x20, 0x82, 0x18,
+  0xC3, 0x18, 0xC3, 0x18, 0xC6, 0x31, 0x8C, 0x62, 0x31, 0x88, 0xC4, 0x62,
+  0x00, 0x10, 0x23, 0x5B, 0xE3, 0x8D, 0x91, 0x00, 0x0C, 0x03, 0x00, 0xC0,
+  0x30, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0xF5, 0x60,
+  0xFF, 0xF0, 0xF0, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x02, 0x0C, 0x10, 0x20,
+  0xC1, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30,
+  0x6E, 0x0F, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C,
+  0x0E, 0xC1, 0x9C, 0x71, 0xFC, 0x1F, 0x00, 0x08, 0xCF, 0xFF, 0x8C, 0x63,
+  0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x1F, 0x0F, 0xF9, 0x87, 0x60, 0x7C,
+  0x06, 0x00, 0xC0, 0x18, 0x07, 0x01, 0xC0, 0xF0, 0x78, 0x1C, 0x06, 0x00,
+  0x80, 0x30, 0x07, 0xFF, 0xFF, 0xE0, 0x3F, 0x0F, 0xF3, 0x87, 0x60, 0x6C,
+  0x0C, 0x01, 0x80, 0x70, 0x7C, 0x0F, 0x80, 0x18, 0x01, 0x80, 0x3C, 0x07,
+  0x80, 0xD8, 0x73, 0xFC, 0x1F, 0x00, 0x01, 0x80, 0x70, 0x0E, 0x03, 0xC0,
+  0xD8, 0x1B, 0x06, 0x61, 0x8C, 0x21, 0x8C, 0x33, 0x06, 0x7F, 0xFF, 0xFE,
+  0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x3F, 0xCF, 0xF9, 0x80, 0x30, 0x06,
+  0x00, 0xDE, 0x1F, 0xE7, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07,
+  0x81, 0xF8, 0x73, 0xFC, 0x1F, 0x00, 0x0F, 0x07, 0xF9, 0xC3, 0x30, 0x74,
+  0x01, 0x80, 0x33, 0xC7, 0xFE, 0xF0, 0xDC, 0x1F, 0x01, 0xE0, 0x3C, 0x06,
+  0xC1, 0xDC, 0x71, 0xFC, 0x1F, 0x00, 0xFF, 0xFF, 0xFC, 0x01, 0x00, 0x60,
+  0x18, 0x02, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x30, 0x04, 0x01, 0x80,
+  0x30, 0x06, 0x01, 0x80, 0x30, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x66,
+  0x0C, 0xC1, 0x8C, 0x61, 0xFC, 0x3F, 0x8E, 0x3B, 0x01, 0xE0, 0x3C, 0x07,
+  0x80, 0xD8, 0x31, 0xFC, 0x1F, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x6C,
+  0x07, 0x80, 0xF0, 0x1E, 0x07, 0x61, 0xEF, 0xFC, 0x79, 0x80, 0x30, 0x05,
+  0x81, 0x98, 0x73, 0xFC, 0x1E, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0xF0, 0x00,
+  0x0F, 0x56, 0x00, 0x00, 0x07, 0x01, 0xE0, 0xF8, 0x3C, 0x0F, 0x00, 0xE0,
+  0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xFF, 0xFF, 0xFF, 0x00,
+  0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x00, 0x78, 0x01, 0xF0, 0x07,
+  0xC0, 0x0F, 0x00, 0x70, 0x1E, 0x0F, 0x03, 0xC0, 0xF0, 0x08, 0x00, 0x1F,
+  0x1F, 0xEE, 0x1B, 0x03, 0xC0, 0xC0, 0x30, 0x0C, 0x06, 0x03, 0x81, 0xC0,
+  0xE0, 0x30, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xFE,
+  0x00, 0x0F, 0xFE, 0x00, 0xF0, 0x3E, 0x07, 0x00, 0x3C, 0x38, 0x00, 0x30,
+  0xC1, 0xE0, 0x66, 0x0F, 0xD9, 0xD8, 0x61, 0xC3, 0xC3, 0x07, 0x0F, 0x1C,
+  0x1C, 0x3C, 0x60, 0x60, 0xF1, 0x81, 0x83, 0xC6, 0x06, 0x1B, 0x18, 0x38,
+  0xEE, 0x71, 0xE7, 0x18, 0xFD, 0xF8, 0x71, 0xE7, 0xC0, 0xE0, 0x00, 0x01,
+  0xE0, 0x00, 0x01, 0xFF, 0xC0, 0x01, 0xFC, 0x00, 0x03, 0xC0, 0x03, 0xC0,
+  0x03, 0xC0, 0x07, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30,
+  0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x1C,
+  0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x06, 0xFF, 0xC7, 0xFF, 0x30,
+  0x19, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, 0xD8, 0x0C, 0xFF, 0xC7, 0xFF,
+  0x30, 0x0D, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x06, 0xFF, 0xF7,
+  0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xF0, 0xE0, 0x73, 0x80, 0x66, 0x00, 0x6C,
+  0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x00,
+  0x06, 0x00, 0x6C, 0x00, 0xDC, 0x03, 0x1E, 0x0E, 0x1F, 0xF8, 0x0F, 0xC0,
+  0xFF, 0x83, 0xFF, 0x8C, 0x07, 0x30, 0x0E, 0xC0, 0x1B, 0x00, 0x7C, 0x00,
+  0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x00,
+  0x6C, 0x03, 0xB0, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0,
+  0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xEF, 0xFE, 0xC0,
+  0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xFF, 0xDF,
+  0xFB, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x00,
+  0x07, 0xF0, 0x1F, 0xFC, 0x3C, 0x1E, 0x70, 0x06, 0x60, 0x03, 0xE0, 0x00,
+  0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x03, 0xC0, 0x03,
+  0x60, 0x03, 0x60, 0x07, 0x30, 0x0F, 0x3C, 0x1F, 0x1F, 0xFB, 0x07, 0xE1,
+  0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78,
+  0x03, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00,
+  0x78, 0x03, 0xC0, 0x1E, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x01,
+  0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60,
+  0x3C, 0x1E, 0x0F, 0x07, 0xC7, 0x7F, 0x1F, 0x00, 0xC0, 0x3B, 0x01, 0xCC,
+  0x0E, 0x30, 0x70, 0xC3, 0x83, 0x1C, 0x0C, 0xE0, 0x33, 0x80, 0xDE, 0x03,
+  0xDC, 0x0E, 0x38, 0x30, 0x60, 0xC1, 0xC3, 0x03, 0x8C, 0x06, 0x30, 0x1C,
+  0xC0, 0x3B, 0x00, 0x60, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C,
+  0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00,
+  0xFF, 0xFF, 0xF0, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xD0,
+  0x0F, 0xD8, 0x1B, 0xD8, 0x1B, 0xD8, 0x1B, 0xCC, 0x33, 0xCC, 0x33, 0xCC,
+  0x33, 0xC6, 0x63, 0xC6, 0x63, 0xC6, 0x63, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
+  0xC3, 0xC1, 0x83, 0xE0, 0x1F, 0x00, 0xFC, 0x07, 0xE0, 0x3D, 0x81, 0xEE,
+  0x0F, 0x30, 0x79, 0xC3, 0xC6, 0x1E, 0x18, 0xF0, 0xE7, 0x83, 0x3C, 0x1D,
+  0xE0, 0x6F, 0x01, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, 0xC0, 0x03, 0xE0, 0x0F,
+  0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07,
+  0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00,
+  0x33, 0x00, 0x18, 0xC0, 0x18, 0x78, 0x3C, 0x1F, 0xFC, 0x03, 0xF8, 0x00,
+  0xFF, 0x8F, 0xFE, 0xC0, 0x6C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x07,
+  0xFF, 0xEF, 0xFC, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00,
+  0xC0, 0x0C, 0x00, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6,
+  0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00,
+  0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, 0x33, 0x01, 0x98, 0xC0, 0xFC, 0x78,
+  0x3C, 0x1F, 0xFF, 0x03, 0xF9, 0x80, 0x00, 0x40, 0xFF, 0xC3, 0xFF, 0xCC,
+  0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x0C, 0xFF, 0xE3,
+  0xFF, 0xCC, 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x06,
+  0xC0, 0x1B, 0x00, 0x70, 0x0F, 0xE0, 0x7F, 0xC3, 0x83, 0x9C, 0x07, 0x60,
+  0x0D, 0x80, 0x06, 0x00, 0x1E, 0x00, 0x3F, 0x80, 0x3F, 0xC0, 0x0F, 0x80,
+  0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0xDE, 0x0E, 0x3F, 0xF0, 0x3F, 0x80,
+  0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60,
+  0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60,
+  0x06, 0x00, 0x60, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0,
+  0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01,
+  0xE0, 0x0F, 0x80, 0xEE, 0x0E, 0x3F, 0xE0, 0x7C, 0x00, 0x60, 0x06, 0xC0,
+  0x1D, 0xC0, 0x31, 0x80, 0x63, 0x01, 0xC7, 0x03, 0x06, 0x06, 0x0C, 0x1C,
+  0x1C, 0x30, 0x18, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x66, 0x00, 0xDC, 0x01,
+  0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0xE0, 0x30, 0x1D, 0x80, 0xE0,
+  0x76, 0x07, 0x81, 0xD8, 0x1E, 0x06, 0x70, 0x7C, 0x18, 0xC1, 0xB0, 0xE3,
+  0x0C, 0xC3, 0x8C, 0x33, 0x0C, 0x38, 0xC6, 0x30, 0x67, 0x18, 0xC1, 0x98,
+  0x67, 0x06, 0x61, 0xD8, 0x1D, 0x83, 0x60, 0x3C, 0x0D, 0x80, 0xF0, 0x3E,
+  0x03, 0xC0, 0x70, 0x0F, 0x01, 0xC0, 0x18, 0x07, 0x00, 0x70, 0x0E, 0x60,
+  0x38, 0xE0, 0x60, 0xE1, 0xC0, 0xC3, 0x01, 0xCC, 0x01, 0xF8, 0x01, 0xE0,
+  0x03, 0x80, 0x07, 0x80, 0x1F, 0x00, 0x33, 0x00, 0xE7, 0x03, 0x86, 0x06,
+  0x0E, 0x1C, 0x0E, 0x70, 0x0C, 0xC0, 0x1C, 0x60, 0x06, 0x70, 0x0E, 0x30,
+  0x1C, 0x38, 0x18, 0x1C, 0x38, 0x0C, 0x30, 0x0E, 0x70, 0x06, 0x60, 0x03,
+  0xC0, 0x03, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
+  0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x0E,
+  0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03,
+  0x80, 0x38, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x1C, 0x00, 0xFF, 0xFF, 0xFF,
+  0xC0, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF,
+  0xF0, 0x81, 0x81, 0x02, 0x06, 0x04, 0x08, 0x18, 0x10, 0x20, 0x60, 0x40,
+  0x81, 0x81, 0x02, 0x06, 0x04, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33,
+  0x33, 0x33, 0x33, 0x3F, 0xF0, 0x0C, 0x0E, 0x05, 0x86, 0xC3, 0x21, 0x19,
+  0x8C, 0x83, 0xC1, 0x80, 0xFF, 0xFE, 0xE3, 0x8C, 0x30, 0x3F, 0x07, 0xF8,
+  0xE1, 0xCC, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xCF, 0x8C, 0xC0, 0xCC, 0x0C,
+  0xE3, 0xC7, 0xEF, 0x3C, 0x70, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0,
+  0x0C, 0xF8, 0xDF, 0xCF, 0x0E, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0,
+  0x3C, 0x03, 0xE0, 0x6F, 0x0E, 0xDF, 0xCC, 0xF8, 0x1F, 0x0F, 0xE7, 0x1B,
+  0x83, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x38, 0x37, 0x1C, 0xFE, 0x1F,
+  0x00, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x3C, 0xCF, 0xFB, 0x8F,
+  0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x3B, 0x8F, 0x3F,
+  0x63, 0xCC, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x3C, 0x07, 0xFF, 0xFF, 0xFE,
+  0x00, 0xC0, 0x1C, 0x0D, 0xC3, 0x1F, 0xE1, 0xF0, 0x3B, 0xD8, 0xC6, 0x7F,
+  0xEC, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x00, 0x1E, 0x67, 0xFD, 0xC7,
+  0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x9F,
+  0xB1, 0xE6, 0x00, 0xC0, 0x3E, 0x0E, 0x7F, 0xC7, 0xE0, 0xC0, 0x30, 0x0C,
+  0x03, 0x00, 0xC0, 0x33, 0xCD, 0xFB, 0xC7, 0xE0, 0xF0, 0x3C, 0x0F, 0x03,
+  0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x30, 0xF0, 0x3F, 0xFF, 0xFF,
+  0xF0, 0x33, 0x00, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F,
+  0xE0, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x83, 0x30, 0xC6, 0x30,
+  0xCC, 0x1B, 0x83, 0xF0, 0x77, 0x0C, 0x61, 0x8E, 0x30, 0xE6, 0x0C, 0xC1,
+  0xD8, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xCF, 0x1F, 0x6F, 0xDF, 0xFC,
+  0x78, 0xFC, 0x18, 0x3C, 0x0C, 0x1E, 0x06, 0x0F, 0x03, 0x07, 0x81, 0x83,
+  0xC0, 0xC1, 0xE0, 0x60, 0xF0, 0x30, 0x78, 0x18, 0x3C, 0x0C, 0x18, 0xCF,
+  0x37, 0xEF, 0x1F, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C,
+  0x0F, 0x03, 0xC0, 0xC0, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80,
+  0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x1F, 0xC1, 0xF0, 0xCF, 0x8D,
+  0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E,
+  0x07, 0xF0, 0xEF, 0xFC, 0xCF, 0x8C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x00,
+  0x1E, 0x67, 0xFD, 0xC7, 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0,
+  0x7C, 0x1D, 0xC7, 0x9F, 0xF1, 0xE6, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60,
+  0xCF, 0x7F, 0x38, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x3E, 0x1F,
+  0xEE, 0x1B, 0x00, 0xC0, 0x3C, 0x07, 0xF0, 0x3E, 0x01, 0xF0, 0x3E, 0x1D,
+  0xFE, 0x3E, 0x00, 0x63, 0x19, 0xFF, 0xB1, 0x8C, 0x63, 0x18, 0xC6, 0x31,
+  0xE7, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0,
+  0xF0, 0x7E, 0x3D, 0xFB, 0x3C, 0xC0, 0xE0, 0x66, 0x06, 0x60, 0x67, 0x0C,
+  0x30, 0xC3, 0x0C, 0x39, 0x81, 0x98, 0x19, 0x81, 0xF0, 0x0F, 0x00, 0xE0,
+  0x0E, 0x00, 0xC1, 0xC1, 0xB0, 0xE1, 0xD8, 0x70, 0xCC, 0x2C, 0x66, 0x36,
+  0x31, 0x9B, 0x18, 0xCD, 0x98, 0x64, 0x6C, 0x16, 0x36, 0x0F, 0x1A, 0x07,
+  0x8F, 0x03, 0x83, 0x80, 0xC1, 0xC0, 0x60, 0xEE, 0x18, 0xC6, 0x0C, 0xC1,
+  0xF0, 0x1C, 0x01, 0x80, 0x78, 0x1B, 0x03, 0x30, 0xC7, 0x30, 0x66, 0x06,
+  0xE0, 0x6C, 0x0D, 0x83, 0x38, 0x63, 0x0C, 0x63, 0x0E, 0x60, 0xCC, 0x1B,
+  0x03, 0x60, 0x3C, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x78, 0x0E,
+  0x00, 0xFF, 0xFF, 0xF0, 0x18, 0x0C, 0x07, 0x03, 0x81, 0xC0, 0x60, 0x30,
+  0x18, 0x0E, 0x03, 0xFF, 0xFF, 0xC0, 0x19, 0xCC, 0x63, 0x18, 0xC6, 0x31,
+  0x99, 0x86, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1C, 0x60, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFC, 0xC7, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x0C, 0x33, 0x31,
+  0x8C, 0x63, 0x18, 0xC6, 0x73, 0x00, 0x70, 0x3E, 0x09, 0xE4, 0x1F, 0x03,
+  0x80 };
+
+const GFXglyph FreeSans12pt7bGlyphs[] PROGMEM = {
+  {     0,   0,   0,   6,    0,    1 },   // 0x20 ' '
+  {     0,   2,  18,   8,    3,  -17 },   // 0x21 '!'
+  {     5,   6,   6,   8,    1,  -16 },   // 0x22 '"'
+  {    10,  13,  16,  13,    0,  -15 },   // 0x23 '#'
+  {    36,  11,  20,  13,    1,  -17 },   // 0x24 '$'
+  {    64,  20,  17,  21,    1,  -16 },   // 0x25 '%'
+  {   107,  14,  17,  16,    1,  -16 },   // 0x26 '&'
+  {   137,   2,   6,   5,    1,  -16 },   // 0x27 '''
+  {   139,   5,  23,   8,    2,  -17 },   // 0x28 '('
+  {   154,   5,  23,   8,    1,  -17 },   // 0x29 ')'
+  {   169,   7,   7,   9,    1,  -17 },   // 0x2A '*'
+  {   176,  10,  11,  14,    2,  -10 },   // 0x2B '+'
+  {   190,   2,   6,   7,    2,   -1 },   // 0x2C ','
+  {   192,   6,   2,   8,    1,   -7 },   // 0x2D '-'
+  {   194,   2,   2,   6,    2,   -1 },   // 0x2E '.'
+  {   195,   7,  18,   7,    0,  -17 },   // 0x2F '/'
+  {   211,  11,  17,  13,    1,  -16 },   // 0x30 '0'
+  {   235,   5,  17,  13,    3,  -16 },   // 0x31 '1'
+  {   246,  11,  17,  13,    1,  -16 },   // 0x32 '2'
+  {   270,  11,  17,  13,    1,  -16 },   // 0x33 '3'
+  {   294,  11,  17,  13,    1,  -16 },   // 0x34 '4'
+  {   318,  11,  17,  13,    1,  -16 },   // 0x35 '5'
+  {   342,  11,  17,  13,    1,  -16 },   // 0x36 '6'
+  {   366,  11,  17,  13,    1,  -16 },   // 0x37 '7'
+  {   390,  11,  17,  13,    1,  -16 },   // 0x38 '8'
+  {   414,  11,  17,  13,    1,  -16 },   // 0x39 '9'
+  {   438,   2,  13,   6,    2,  -12 },   // 0x3A ':'
+  {   442,   2,  16,   6,    2,  -11 },   // 0x3B ';'
+  {   446,  12,  12,  14,    1,  -11 },   // 0x3C '<'
+  {   464,  12,   6,  14,    1,   -8 },   // 0x3D '='
+  {   473,  12,  12,  14,    1,  -11 },   // 0x3E '>'
+  {   491,  10,  18,  13,    2,  -17 },   // 0x3F '?'
+  {   514,  22,  21,  24,    1,  -17 },   // 0x40 '@'
+  {   572,  16,  18,  16,    0,  -17 },   // 0x41 'A'
+  {   608,  13,  18,  16,    2,  -17 },   // 0x42 'B'
+  {   638,  15,  18,  17,    1,  -17 },   // 0x43 'C'
+  {   672,  14,  18,  17,    2,  -17 },   // 0x44 'D'
+  {   704,  12,  18,  15,    2,  -17 },   // 0x45 'E'
+  {   731,  11,  18,  14,    2,  -17 },   // 0x46 'F'
+  {   756,  16,  18,  18,    1,  -17 },   // 0x47 'G'
+  {   792,  13,  18,  17,    2,  -17 },   // 0x48 'H'
+  {   822,   2,  18,   7,    2,  -17 },   // 0x49 'I'
+  {   827,   9,  18,  13,    1,  -17 },   // 0x4A 'J'
+  {   848,  14,  18,  16,    2,  -17 },   // 0x4B 'K'
+  {   880,  10,  18,  14,    2,  -17 },   // 0x4C 'L'
+  {   903,  16,  18,  20,    2,  -17 },   // 0x4D 'M'
+  {   939,  13,  18,  18,    2,  -17 },   // 0x4E 'N'
+  {   969,  17,  18,  19,    1,  -17 },   // 0x4F 'O'
+  {  1008,  12,  18,  16,    2,  -17 },   // 0x50 'P'
+  {  1035,  17,  19,  19,    1,  -17 },   // 0x51 'Q'
+  {  1076,  14,  18,  17,    2,  -17 },   // 0x52 'R'
+  {  1108,  14,  18,  16,    1,  -17 },   // 0x53 'S'
+  {  1140,  12,  18,  15,    1,  -17 },   // 0x54 'T'
+  {  1167,  13,  18,  17,    2,  -17 },   // 0x55 'U'
+  {  1197,  15,  18,  15,    0,  -17 },   // 0x56 'V'
+  {  1231,  22,  18,  22,    0,  -17 },   // 0x57 'W'
+  {  1281,  15,  18,  16,    0,  -17 },   // 0x58 'X'
+  {  1315,  16,  18,  16,    0,  -17 },   // 0x59 'Y'
+  {  1351,  13,  18,  15,    1,  -17 },   // 0x5A 'Z'
+  {  1381,   4,  23,   7,    2,  -17 },   // 0x5B '['
+  {  1393,   7,  18,   7,    0,  -17 },   // 0x5C '\'
+  {  1409,   4,  23,   7,    1,  -17 },   // 0x5D ']'
+  {  1421,   9,   9,  11,    1,  -16 },   // 0x5E '^'
+  {  1432,  15,   1,  13,   -1,    4 },   // 0x5F '_'
+  {  1434,   5,   4,   6,    1,  -17 },   // 0x60 '`'
+  {  1437,  12,  13,  13,    1,  -12 },   // 0x61 'a'
+  {  1457,  12,  18,  13,    1,  -17 },   // 0x62 'b'
+  {  1484,  10,  13,  12,    1,  -12 },   // 0x63 'c'
+  {  1501,  11,  18,  13,    1,  -17 },   // 0x64 'd'
+  {  1526,  11,  13,  13,    1,  -12 },   // 0x65 'e'
+  {  1544,   5,  18,   7,    1,  -17 },   // 0x66 'f'
+  {  1556,  11,  18,  13,    1,  -12 },   // 0x67 'g'
+  {  1581,  10,  18,  13,    1,  -17 },   // 0x68 'h'
+  {  1604,   2,  18,   5,    2,  -17 },   // 0x69 'i'
+  {  1609,   4,  23,   6,    0,  -17 },   // 0x6A 'j'
+  {  1621,  11,  18,  12,    1,  -17 },   // 0x6B 'k'
+  {  1646,   2,  18,   5,    1,  -17 },   // 0x6C 'l'
+  {  1651,  17,  13,  19,    1,  -12 },   // 0x6D 'm'
+  {  1679,  10,  13,  13,    1,  -12 },   // 0x6E 'n'
+  {  1696,  11,  13,  13,    1,  -12 },   // 0x6F 'o'
+  {  1714,  12,  17,  13,    1,  -12 },   // 0x70 'p'
+  {  1740,  11,  17,  13,    1,  -12 },   // 0x71 'q'
+  {  1764,   6,  13,   8,    1,  -12 },   // 0x72 'r'
+  {  1774,  10,  13,  12,    1,  -12 },   // 0x73 's'
+  {  1791,   5,  16,   7,    1,  -15 },   // 0x74 't'
+  {  1801,  10,  13,  13,    1,  -12 },   // 0x75 'u'
+  {  1818,  12,  13,  12,    0,  -12 },   // 0x76 'v'
+  {  1838,  17,  13,  17,    0,  -12 },   // 0x77 'w'
+  {  1866,  11,  13,  11,    0,  -12 },   // 0x78 'x'
+  {  1884,  11,  18,  11,    0,  -12 },   // 0x79 'y'
+  {  1909,  10,  13,  12,    1,  -12 },   // 0x7A 'z'
+  {  1926,   5,  23,   8,    1,  -17 },   // 0x7B '{'
+  {  1941,   2,  23,   6,    2,  -17 },   // 0x7C '|'
+  {  1947,   5,  23,   8,    2,  -17 },   // 0x7D '}'
+  {  1962,  10,   5,  12,    1,  -10 } }; // 0x7E '~'
+
+const GFXfont FreeSans12pt7b PROGMEM = {
+  (uint8_t  *)FreeSans12pt7bBitmaps,
+  (GFXglyph *)FreeSans12pt7bGlyphs,
+  0x20, 0x7E, 29 };
+
+// Approx. 2641 bytes
+const uint8_t FreeSans9pt7bBitmaps[] PROGMEM = {
+  0xFF, 0xFF, 0xF8, 0xC0, 0xDE, 0xF7, 0x20, 0x09, 0x86, 0x41, 0x91, 0xFF,
+  0x13, 0x04, 0xC3, 0x20, 0xC8, 0xFF, 0x89, 0x82, 0x61, 0x90, 0x10, 0x1F,
+  0x14, 0xDA, 0x3D, 0x1E, 0x83, 0x40, 0x78, 0x17, 0x08, 0xF4, 0x7A, 0x35,
+  0x33, 0xF0, 0x40, 0x20, 0x38, 0x10, 0xEC, 0x20, 0xC6, 0x20, 0xC6, 0x40,
+  0xC6, 0x40, 0x6C, 0x80, 0x39, 0x00, 0x01, 0x3C, 0x02, 0x77, 0x02, 0x63,
+  0x04, 0x63, 0x04, 0x77, 0x08, 0x3C, 0x0E, 0x06, 0x60, 0xCC, 0x19, 0x81,
+  0xE0, 0x18, 0x0F, 0x03, 0x36, 0xC2, 0xD8, 0x73, 0x06, 0x31, 0xE3, 0xC4,
+  0xFE, 0x13, 0x26, 0x6C, 0xCC, 0xCC, 0xC4, 0x66, 0x23, 0x10, 0x8C, 0x46,
+  0x63, 0x33, 0x33, 0x32, 0x66, 0x4C, 0x80, 0x25, 0x7E, 0xA5, 0x00, 0x30,
+  0xC3, 0x3F, 0x30, 0xC3, 0x0C, 0xD6, 0xF0, 0xC0, 0x08, 0x44, 0x21, 0x10,
+  0x84, 0x42, 0x11, 0x08, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3, 0xC3, 0xC3,
+  0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x11, 0x3F, 0x33, 0x33, 0x33, 0x33,
+  0x30, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x18, 0x18,
+  0x10, 0x08, 0x07, 0xF8, 0x3C, 0x66, 0xC3, 0xC3, 0x03, 0x06, 0x1C, 0x07,
+  0x03, 0xC3, 0xC3, 0x66, 0x3C, 0x0C, 0x18, 0x71, 0x62, 0xC9, 0xA3, 0x46,
+  0xFE, 0x18, 0x30, 0x60, 0xC0, 0x7F, 0x20, 0x10, 0x08, 0x08, 0x07, 0xF3,
+  0x8C, 0x03, 0x01, 0x80, 0xF0, 0x6C, 0x63, 0xE0, 0x1E, 0x31, 0x98, 0x78,
+  0x0C, 0x06, 0xF3, 0x8D, 0x83, 0xC1, 0xE0, 0xD0, 0x6C, 0x63, 0xE0, 0xFF,
+  0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30,
+  0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1B, 0x18, 0xF8, 0xC6, 0xC1, 0xE0, 0xF0,
+  0x6C, 0x63, 0xE0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03,
+  0x03, 0xC2, 0x66, 0x3C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x64, 0xA0,
+  0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x07, 0x80, 0x70, 0x0E, 0x01, 0x80, 0xFF,
+  0x80, 0x00, 0x1F, 0xF0, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x18, 0x38, 0x71,
+  0xC0, 0x80, 0x00, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x18, 0x38, 0x18,
+  0x18, 0x0C, 0x00, 0x00, 0x01, 0x80, 0x03, 0xF0, 0x06, 0x0E, 0x06, 0x01,
+  0x86, 0x00, 0x66, 0x1D, 0xBB, 0x31, 0xCF, 0x18, 0xC7, 0x98, 0x63, 0xCC,
+  0x31, 0xE6, 0x11, 0xB3, 0x99, 0xCC, 0xF7, 0x86, 0x00, 0x01, 0x80, 0x00,
+  0x70, 0x40, 0x0F, 0xE0, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81,
+  0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30,
+  0xFF, 0x18, 0x33, 0x03, 0x60, 0x6C, 0x0D, 0x83, 0x3F, 0xC6, 0x06, 0xC0,
+  0x78, 0x0F, 0x01, 0xE0, 0x6F, 0xF8, 0x1F, 0x86, 0x19, 0x81, 0xA0, 0x3C,
+  0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x18, 0x61, 0xF0,
+  0xFF, 0x18, 0x33, 0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0,
+  0x78, 0x0F, 0x03, 0x60, 0xCF, 0xF0, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x06,
+  0x03, 0xFD, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xF8, 0xFF, 0xC0, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x83,
+  0x0E, 0x60, 0x66, 0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x03, 0xC0, 0x36,
+  0x03, 0x60, 0x73, 0x0F, 0x0F, 0x10, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C,
+  0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x06,
+  0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07,
+  0x8F, 0x1E, 0x27, 0x80, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, 0xB8,
+  0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x0C, 0xC0, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xE0,
+  0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, 0x63, 0x79, 0x13,
+  0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, 0xE0, 0x7C, 0x0F,
+  0xC1, 0xE8, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, 0x78, 0x6F, 0x07,
+  0xE0, 0x7C, 0x0E, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 0x6C, 0x01, 0xE0,
+  0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, 0x60, 0xC0, 0xF8,
+  0x00, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xF0, 0x6F, 0xF3, 0x00, 0xC0,
+  0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0,
+  0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x6C,
+  0x60, 0xC0, 0xFB, 0x00, 0x08, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0,
+  0x6C, 0x0C, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0xC0,
+  0x70, 0x3F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0E, 0x00,
+  0xF0, 0x3C, 0x0D, 0x86, 0x3F, 0x00, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0,
+  0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x78, 0x0F,
+  0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01,
+  0xB0, 0x61, 0xF0, 0xC0, 0x6C, 0x0D, 0x81, 0x10, 0x63, 0x0C, 0x61, 0x04,
+  0x60, 0xCC, 0x19, 0x01, 0x60, 0x3C, 0x07, 0x00, 0x60, 0xC1, 0x81, 0x30,
+  0xE1, 0x98, 0x70, 0xCC, 0x28, 0x66, 0x26, 0x21, 0x13, 0x30, 0xC8, 0x98,
+  0x6C, 0x4C, 0x14, 0x34, 0x0A, 0x1A, 0x07, 0x07, 0x03, 0x03, 0x80, 0x81,
+  0x80, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0xE0, 0x06, 0x00,
+  0xF0, 0x19, 0x01, 0x98, 0x30, 0xC6, 0x0E, 0x60, 0x60, 0xC0, 0x36, 0x06,
+  0x30, 0xC3, 0x0C, 0x19, 0x81, 0xD8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60,
+  0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03,
+  0x01, 0xC0, 0x60, 0x30, 0x18, 0x06, 0x03, 0x00, 0xFF, 0xC0, 0xFB, 0x6D,
+  0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84,
+  0x10, 0x80, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x30, 0x60, 0xA2,
+  0x44, 0xD8, 0xA1, 0x80, 0xFF, 0xC0, 0xC6, 0x30, 0x7E, 0x71, 0xB0, 0xC0,
+  0x60, 0xF3, 0xDB, 0x0D, 0x86, 0xC7, 0x3D, 0xC0, 0xC0, 0x60, 0x30, 0x1B,
+  0xCE, 0x36, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0, 0x3C,
+  0x66, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x03, 0x03, 0x03,
+  0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66,
+  0xC3, 0xC3, 0xFF, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x36, 0x6F, 0x66, 0x66,
+  0x66, 0x66, 0x60, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67,
+  0x3B, 0x03, 0x03, 0xC6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3,
+  0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0x30, 0x03,
+  0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xE0, 0xC0, 0x60, 0x30, 0x18, 0x4C,
+  0x46, 0x63, 0x61, 0xF0, 0xEC, 0x62, 0x31, 0x98, 0x6C, 0x30, 0xFF, 0xFF,
+  0xFF, 0xC0, 0xDE, 0xF7, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F,
+  0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3,
+  0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
+  0xC3, 0x66, 0x3C, 0xDE, 0x71, 0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83,
+  0xE3, 0x6F, 0x30, 0x18, 0x0C, 0x00, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3,
+  0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03, 0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18,
+  0xC6, 0x00, 0x3E, 0xE3, 0xC0, 0xC0, 0xE0, 0x3C, 0x07, 0xC3, 0xE3, 0x7E,
+  0x66, 0xF6, 0x66, 0x66, 0x66, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
+  0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0xA0, 0x98, 0xCC, 0x42, 0x21, 0xB0, 0xD0,
+  0x28, 0x1C, 0x0C, 0x00, 0xC6, 0x1E, 0x38, 0x91, 0xC4, 0xCA, 0x66, 0xD3,
+  0x16, 0xD0, 0xA6, 0x87, 0x1C, 0x38, 0xC0, 0xC6, 0x00, 0x43, 0x62, 0x36,
+  0x1C, 0x18, 0x1C, 0x3C, 0x26, 0x62, 0x43, 0xC1, 0x21, 0x98, 0xCC, 0x42,
+  0x61, 0xB0, 0xD0, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x03, 0x00, 0xFE,
+  0x0C, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xC1, 0xFC, 0x36, 0x66, 0x66, 0x6E,
+  0xCE, 0x66, 0x66, 0x66, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66,
+  0x66, 0x67, 0x37, 0x66, 0x66, 0x66, 0xC0, 0x61, 0x24, 0x38 };
+
+const GFXglyph FreeSans9pt7bGlyphs[] PROGMEM = {
+  {     0,   0,   0,   5,    0,    1 },   // 0x20 ' '
+  {     0,   2,  13,   6,    2,  -12 },   // 0x21 '!'
+  {     4,   5,   4,   6,    1,  -12 },   // 0x22 '"'
+  {     7,  10,  12,  10,    0,  -11 },   // 0x23 '#'
+  {    22,   9,  16,  10,    1,  -13 },   // 0x24 '$'
+  {    40,  16,  13,  16,    1,  -12 },   // 0x25 '%'
+  {    66,  11,  13,  12,    1,  -12 },   // 0x26 '&'
+  {    84,   2,   4,   4,    1,  -12 },   // 0x27 '''
+  {    85,   4,  17,   6,    1,  -12 },   // 0x28 '('
+  {    94,   4,  17,   6,    1,  -12 },   // 0x29 ')'
+  {   103,   5,   5,   7,    1,  -12 },   // 0x2A '*'
+  {   107,   6,   8,  11,    3,   -7 },   // 0x2B '+'
+  {   113,   2,   4,   5,    2,    0 },   // 0x2C ','
+  {   114,   4,   1,   6,    1,   -4 },   // 0x2D '-'
+  {   115,   2,   1,   5,    1,    0 },   // 0x2E '.'
+  {   116,   5,  13,   5,    0,  -12 },   // 0x2F '/'
+  {   125,   8,  13,  10,    1,  -12 },   // 0x30 '0'
+  {   138,   4,  13,  10,    3,  -12 },   // 0x31 '1'
+  {   145,   9,  13,  10,    1,  -12 },   // 0x32 '2'
+  {   160,   8,  13,  10,    1,  -12 },   // 0x33 '3'
+  {   173,   7,  13,  10,    2,  -12 },   // 0x34 '4'
+  {   185,   9,  13,  10,    1,  -12 },   // 0x35 '5'
+  {   200,   9,  13,  10,    1,  -12 },   // 0x36 '6'
+  {   215,   8,  13,  10,    0,  -12 },   // 0x37 '7'
+  {   228,   9,  13,  10,    1,  -12 },   // 0x38 '8'
+  {   243,   8,  13,  10,    1,  -12 },   // 0x39 '9'
+  {   256,   2,  10,   5,    1,   -9 },   // 0x3A ':'
+  {   259,   3,  12,   5,    1,   -8 },   // 0x3B ';'
+  {   264,   9,   9,  11,    1,   -8 },   // 0x3C '<'
+  {   275,   9,   4,  11,    1,   -5 },   // 0x3D '='
+  {   280,   9,   9,  11,    1,   -8 },   // 0x3E '>'
+  {   291,   9,  13,  10,    1,  -12 },   // 0x3F '?'
+  {   306,  17,  16,  18,    1,  -12 },   // 0x40 '@'
+  {   340,  12,  13,  12,    0,  -12 },   // 0x41 'A'
+  {   360,  11,  13,  12,    1,  -12 },   // 0x42 'B'
+  {   378,  11,  13,  13,    1,  -12 },   // 0x43 'C'
+  {   396,  11,  13,  13,    1,  -12 },   // 0x44 'D'
+  {   414,   9,  13,  11,    1,  -12 },   // 0x45 'E'
+  {   429,   8,  13,  11,    1,  -12 },   // 0x46 'F'
+  {   442,  12,  13,  14,    1,  -12 },   // 0x47 'G'
+  {   462,  11,  13,  13,    1,  -12 },   // 0x48 'H'
+  {   480,   2,  13,   5,    2,  -12 },   // 0x49 'I'
+  {   484,   7,  13,  10,    1,  -12 },   // 0x4A 'J'
+  {   496,  11,  13,  12,    1,  -12 },   // 0x4B 'K'
+  {   514,   8,  13,  10,    1,  -12 },   // 0x4C 'L'
+  {   527,  13,  13,  15,    1,  -12 },   // 0x4D 'M'
+  {   549,  11,  13,  13,    1,  -12 },   // 0x4E 'N'
+  {   567,  13,  13,  14,    1,  -12 },   // 0x4F 'O'
+  {   589,  10,  13,  12,    1,  -12 },   // 0x50 'P'
+  {   606,  13,  14,  14,    1,  -12 },   // 0x51 'Q'
+  {   629,  12,  13,  13,    1,  -12 },   // 0x52 'R'
+  {   649,  10,  13,  12,    1,  -12 },   // 0x53 'S'
+  {   666,   9,  13,  11,    1,  -12 },   // 0x54 'T'
+  {   681,  11,  13,  13,    1,  -12 },   // 0x55 'U'
+  {   699,  11,  13,  12,    0,  -12 },   // 0x56 'V'
+  {   717,  17,  13,  17,    0,  -12 },   // 0x57 'W'
+  {   745,  12,  13,  12,    0,  -12 },   // 0x58 'X'
+  {   765,  12,  13,  12,    0,  -12 },   // 0x59 'Y'
+  {   785,  10,  13,  11,    1,  -12 },   // 0x5A 'Z'
+  {   802,   3,  17,   5,    1,  -12 },   // 0x5B '['
+  {   809,   5,  13,   5,    0,  -12 },   // 0x5C '\'
+  {   818,   3,  17,   5,    0,  -12 },   // 0x5D ']'
+  {   825,   7,   7,   8,    1,  -12 },   // 0x5E '^'
+  {   832,  10,   1,  10,    0,    3 },   // 0x5F '_'
+  {   834,   4,   3,   5,    0,  -12 },   // 0x60 '`'
+  {   836,   9,  10,  10,    1,   -9 },   // 0x61 'a'
+  {   848,   9,  13,  10,    1,  -12 },   // 0x62 'b'
+  {   863,   8,  10,   9,    1,   -9 },   // 0x63 'c'
+  {   873,   8,  13,  10,    1,  -12 },   // 0x64 'd'
+  {   886,   8,  10,  10,    1,   -9 },   // 0x65 'e'
+  {   896,   4,  13,   5,    1,  -12 },   // 0x66 'f'
+  {   903,   8,  14,  10,    1,   -9 },   // 0x67 'g'
+  {   917,   8,  13,  10,    1,  -12 },   // 0x68 'h'
+  {   930,   2,  13,   4,    1,  -12 },   // 0x69 'i'
+  {   934,   4,  17,   4,    0,  -12 },   // 0x6A 'j'
+  {   943,   9,  13,   9,    1,  -12 },   // 0x6B 'k'
+  {   958,   2,  13,   4,    1,  -12 },   // 0x6C 'l'
+  {   962,  13,  10,  15,    1,   -9 },   // 0x6D 'm'
+  {   979,   8,  10,  10,    1,   -9 },   // 0x6E 'n'
+  {   989,   8,  10,  10,    1,   -9 },   // 0x6F 'o'
+  {   999,   9,  13,  10,    1,   -9 },   // 0x70 'p'
+  {  1014,   8,  13,  10,    1,   -9 },   // 0x71 'q'
+  {  1027,   5,  10,   6,    1,   -9 },   // 0x72 'r'
+  {  1034,   8,  10,   9,    1,   -9 },   // 0x73 's'
+  {  1044,   4,  12,   5,    1,  -11 },   // 0x74 't'
+  {  1050,   8,  10,  10,    1,   -9 },   // 0x75 'u'
+  {  1060,   9,  10,   9,    0,   -9 },   // 0x76 'v'
+  {  1072,  13,  10,  13,    0,   -9 },   // 0x77 'w'
+  {  1089,   8,  10,   9,    0,   -9 },   // 0x78 'x'
+  {  1099,   9,  14,   9,    0,   -9 },   // 0x79 'y'
+  {  1115,   7,  10,   9,    1,   -9 },   // 0x7A 'z'
+  {  1124,   4,  17,   6,    1,  -12 },   // 0x7B '{'
+  {  1133,   2,  17,   4,    2,  -12 },   // 0x7C '|'
+  {  1138,   4,  17,   6,    1,  -12 },   // 0x7D '}'
+  {  1147,   7,   3,   9,    1,   -7 } }; // 0x7E '~'
+
+const GFXfont FreeSans9pt7b PROGMEM = {
+  (uint8_t  *)FreeSans9pt7bBitmaps,
+  (GFXglyph *)FreeSans9pt7bGlyphs,
+  0x20, 0x7E, 22 };
+
+// Approx. 1822 bytes
+// Created by http://oleddisplay.squix.ch/ Consider a donation
+// In case of problems make sure that you are using the font file with the correct version!
+const uint8_t URW_Gothic_L_Book_16Bitmaps[] PROGMEM = {
+
+	// Bitmap Data:
+	0x00, // ' '
+	0xFF,0xB0, // '!'
+	0xB6,0xD0, // '"'
+	0x11,0x08,0x84,0x82,0x4F,0xF9,0x10,0x89,0xFF,0x24,0x22,0x11,0x08,0x80, // '#'
+	0x21,0xCC,0xA1,0x83,0x07,0x06,0x04,0x18,0x72,0x70,0x80, // '$'
+	0x78,0x8C,0xD8,0x85,0x08,0x70,0xCE,0x07,0xA0,0x06,0x00,0x5E,0x0F,0x30,0xA1,0x0B,0x31,0x1E, // '%'
+	0x3C,0x08,0xC1,0x08,0x21,0x03,0xC4,0xF1,0x13,0x64,0x38,0x83,0x10,0x71,0x1B,0x1E,0x30, // '&'
+	0xF0, // '''
+	0x13,0x64,0x88,0x88,0x8C,0x46,0x30, // '('
+	0x8C,0x62,0x11,0x11,0x13,0x26,0xC8, // ')'
+	0x52,0xBE,0x45,0x00, // '*'
+	0x10,0x20,0x40,0x8F,0xE2,0x04,0x08, // '+'
+	0x29,0x00, // ','
+	0xF0, // '-'
+	0xC0, // '.'
+	0x08,0x46,0x21,0x18,0x84,0x62,0x11,0x88,0x40, // '/'
+	0x38,0x8A,0x0C,0x18,0x30,0x60,0xC1,0x83,0x05,0x11,0xC0, // '0'
+	0xE4,0x92,0x49,0x24,0x90, // '1'
+	0x79,0x8A,0x0C,0x10,0x20,0x83,0x0C,0x30,0xC3,0x07,0xF0, // '2'
+	0x3C,0x26,0x42,0x02,0x06,0x1C,0x02,0x01,0xC1,0x41,0x62,0x3C, // '3'
+	0x06,0x06,0x0A,0x0A,0x12,0x32,0x22,0x42,0xC2,0xFF,0x02,0x02, // '4'
+	0x3E,0x20,0x60,0x40,0x7C,0x62,0x01,0x01,0x81,0xC1,0x62,0x3C, // '5'
+	0x08,0x18,0x10,0x20,0x7C,0x42,0x81,0x81,0x81,0x81,0x42,0x3C, // '6'
+	0xFE,0x0C,0x10,0x20,0x81,0x04,0x08,0x30,0x41,0x82,0x00, // '7'
+	0x38,0x89,0x12,0x26,0x47,0x11,0x41,0x83,0x05,0x11,0xC0, // '8'
+	0x3C,0x42,0x81,0x81,0x81,0x81,0x42,0x3E,0x04,0x08,0x18,0x10, // '9'
+	0xC3, // ':'
+	0x50,0x07,0x80, // ';'
+	0x01,0x06,0x38,0xE0,0xC0,0x70,0x0C,0x03, // '<'
+	0xFF,0x00,0x00,0xFF, // '='
+	0x80,0xE0,0x38,0x06,0x03,0x1C,0x70,0xC0, // '>'
+	0x38,0x8A,0x0C,0x10,0x20,0x82,0x08,0x10,0x00,0x40,0x80, // '?'
+	0x0F,0x83,0x04,0x67,0xA4,0xC9,0x88,0x99,0x09,0x91,0x19,0x12,0x53,0x64,0xDC,0x30,0x60,0xF8, // '@'
+	0x06,0x00,0x60,0x0B,0x00,0x90,0x19,0x01,0x08,0x30,0x83,0xFC,0x20,0x46,0x06,0x40,0x2C,0x02, // 'A'
+	0xFC,0x86,0x82,0x82,0x86,0xFC,0x82,0x81,0x81,0x81,0x82,0xFC, // 'B'
+	0x0F,0x86,0x19,0x00,0xA0,0x08,0x01,0x00,0x20,0x04,0x00,0x40,0x08,0x04,0xC3,0x07,0xC0, // 'C'
+	0xFC,0x20,0xC8,0x0A,0x03,0x80,0x60,0x18,0x06,0x01,0x80,0xE0,0x28,0x33,0xF0, // 'D'
+	0xFE,0x08,0x20,0x82,0x0F,0xE0,0x82,0x08,0x3F, // 'E'
+	0xFE,0x08,0x20,0x82,0x0F,0xE0,0x82,0x08,0x20, // 'F'
+	0x0F,0x83,0x0C,0x40,0x24,0x00,0x80,0x08,0x00,0x80,0x08,0xFF,0x40,0x14,0x02,0x30,0x60,0xF8, // 'G'
+	0x80,0xC0,0x60,0x30,0x18,0x0F,0xFE,0x03,0x01,0x80,0xC0,0x60,0x30,0x10, // 'H'
+	0xFF,0xF0, // 'I'
+	0x04,0x10,0x41,0x04,0x10,0x41,0x06,0x1C,0xDE, // 'J'
+	0x83,0x86,0x8C,0x88,0x90,0xB0,0xF0,0xD8,0x88,0x84,0x86,0x83, // 'K'
+	0x82,0x08,0x20,0x82,0x08,0x20,0x82,0x08,0x3F, // 'L'
+	0xC0,0x3C,0x03,0xE0,0x7A,0x05,0xB0,0xD9,0x09,0x90,0x98,0x91,0x89,0x18,0xF1,0x86,0x18,0x61, // 'M'
+	0xC0,0x78,0x1A,0x06,0x41,0x98,0x63,0x18,0x46,0x09,0x83,0x60,0x78,0x0E,0x01, // 'N'
+	0x0F,0x03,0x0C,0x40,0x24,0x02,0x80,0x18,0x01,0x80,0x18,0x01,0x40,0x24,0x02,0x30,0xC0,0xF0, // 'O'
+	0xFC,0x82,0x81,0x81,0x81,0x82,0xFC,0x80,0x80,0x80,0x80,0x80, // 'P'
+	0x0F,0x83,0x0C,0x40,0x24,0x03,0x80,0x18,0x01,0x80,0x1F,0xC1,0x43,0x36,0x0A,0x30,0xC0,0xFB, // 'Q'
+	0xFC,0x82,0x81,0x81,0x81,0x83,0x9E,0x98,0x88,0x84,0x86,0x82, // 'R'
+	0x7B,0x38,0x60,0xC1,0xC1,0x81,0x06,0x1C,0xDE, // 'S'
+	0xFE,0x20,0x40,0x81,0x02,0x04,0x08,0x10,0x20,0x40,0x80, // 'T'
+	0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x42,0x3C, // 'U'
+	0xC0,0x28,0x09,0x01,0x10,0x62,0x08,0x61,0x04,0x40,0x88,0x0B,0x01,0x40,0x38,0x02,0x00, // 'V'
+	0xC1,0x02,0x83,0x05,0x0E,0x12,0x14,0x26,0x28,0x44,0x49,0x89,0x92,0x12,0x24,0x14,0x68,0x28,0x70,0x60,0xC0,0xC1,0x80, // 'W'
+	0x40,0x98,0x42,0x30,0x48,0x1C,0x03,0x00,0xC0,0x58,0x32,0x08,0x44,0x1B,0x02, // 'X'
+	0x80,0xA0,0x90,0x44,0x42,0x20,0xA0,0x50,0x10,0x08,0x04,0x02,0x01,0x00, // 'Y'
+	0xFE,0x02,0x06,0x04,0x08,0x18,0x10,0x30,0x20,0x40,0x40,0xFF, // 'Z'
+	0x2E,0x49,0x24,0x92,0x66,0x40, // '['
+	0x41,0x06,0x08,0x20,0x41,0x06,0x08,0x20,0x41, // '\'
+	0x99,0x92,0x49,0x24,0x9D,0x00, // ']'
+	0x0C,0x06,0x05,0x82,0x42,0x21,0x09,0x84,0x81,0xC0,0x80, // '^'
+	0xFF, // '_'
+	0xC3, // '`'
+	0x3E,0xB1,0xF0,0x70,0x18,0x0C,0x07,0x06,0xC7,0x3E,0x80, // 'a'
+	0x80,0x40,0x20,0x17,0xCE,0x36,0x0E,0x03,0x01,0x80,0xE0,0xF8,0xD7,0xC0, // 'b'
+	0x3E,0x31,0xB0,0x70,0x08,0x04,0x03,0x06,0xC6,0x3E,0x00, // 'c'
+	0x00,0x80,0x40,0x27,0xD6,0x3E,0x0E,0x03,0x01,0x80,0xE0,0xD8,0xE3,0xD0, // 'd'
+	0x3C,0x21,0xA0,0x50,0x3F,0xFC,0x02,0x04,0x86,0x3C,0x00, // 'e'
+	0x34,0x4F,0x44,0x44,0x44,0x44, // 'f'
+	0x3E,0xB1,0xF0,0x70,0x18,0x0C,0x07,0x06,0xC7,0x3E,0xE0,0x58,0x47,0xC0, // 'g'
+	0x80,0x80,0x80,0xBC,0xC2,0x81,0x81,0x81,0x81,0x81,0x81,0x81, // 'h'
+	0xDF,0xF0, // 'i'
+	0x24,0x12,0x49,0x24,0x92,0xF0, // 'j'
+	0x81,0x02,0x04,0x28,0xD3,0x24,0x50,0xF1,0xB2,0x34,0x20, // 'k'
+	0xFF,0xF0, // 'l'
+	0xB8,0xE6,0x28,0xA0,0x83,0x04,0x18,0x20,0xC1,0x06,0x08,0x30,0x41,0x82,0x08, // 'm'
+	0xBC,0xC2,0x81,0x81,0x81,0x81,0x81,0x81,0x81, // 'n'
+	0x3E,0x31,0xB0,0x70,0x18,0x0C,0x07,0x06,0xC6,0x3E,0x00, // 'o'
+	0xBE,0x71,0xB0,0x70,0x18,0x0C,0x07,0x07,0xC6,0xBE,0x40,0x20,0x10,0x00, // 'p'
+	0x3E,0xB1,0xF0,0x70,0x18,0x0C,0x07,0x06,0xC7,0x3E,0x80,0x40,0x20,0x10, // 'q'
+	0xBA,0x49,0x24,0x80, // 'r'
+	0x74,0x61,0x87,0x06,0x31,0x70, // 's'
+	0x21,0x09,0xF2,0x10,0x84,0x21,0x08,0x40, // 't'
+	0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x43,0x3D, // 'u'
+	0xC1,0xA0,0x90,0xC4,0x42,0x21,0xA0,0x50,0x38,0x08,0x00, // 'v'
+	0x80,0x0A,0x10,0xD0,0xC4,0xCA,0x22,0x52,0x12,0xD0,0x72,0x83,0x18,0x18,0xC0, // 'w'
+	0xC2,0x46,0x2C,0x18,0x18,0x38,0x24,0x46,0xC2, // 'x'
+	0xC1,0x41,0x42,0x22,0x26,0x34,0x1C,0x18,0x18,0x10,0x10,0x30, // 'y'
+	0xFC,0x08,0x20,0xC1,0x04,0x18,0x20,0xFE, // 'z'
+	0x69,0x24,0xB6,0x49,0x24,0x40, // '{'
+	0xFF,0xF0, // '|'
+	0xC9,0x24,0x8B,0x49,0x25,0x00 // '}'
+};
+const GFXglyph URW_Gothic_L_Book_16Glyphs[] PROGMEM = {
+// bitmapOffset, width, height, xAdvance, xOffset, yOffset
+	  {     0,   1,   1,   5,    0,    0 }, // ' '
+	  {     1,   1,  12,   6,    2,  -12 }, // '!'
+	  {     3,   3,   4,   6,    1,  -12 }, // '"'
+	  {     5,   9,  12,  10,    0,  -12 }, // '#'
+	  {    19,   6,  14,  10,    2,  -13 }, // '$'
+	  {    30,  12,  12,  13,    0,  -12 }, // '%'
+	  {    48,  11,  12,  13,    1,  -12 }, // '&'
+	  {    65,   1,   4,   4,    1,  -12 }, // '''
+	  {    66,   4,  14,   7,    1,  -12 }, // '('
+	  {    73,   4,  14,   7,    1,  -12 }, // ')'
+	  {    80,   5,   5,   8,    1,  -12 }, // '*'
+	  {    84,   7,   8,  11,    1,   -9 }, // '+'
+	  {    91,   3,   3,   5,    1,   -2 }, // ','
+	  {    93,   4,   1,   6,    1,   -5 }, // '-'
+	  {    94,   1,   2,   5,    2,   -2 }, // '.'
+	  {    95,   5,  14,   8,    1,  -12 }, // '/'
+	  {   104,   7,  12,  10,    1,  -12 }, // '0'
+	  {   115,   3,  12,  10,    3,  -12 }, // '1'
+	  {   120,   7,  12,  10,    1,  -12 }, // '2'
+	  {   131,   8,  12,  10,    0,  -12 }, // '3'
+	  {   143,   8,  12,  10,    0,  -12 }, // '4'
+	  {   155,   8,  12,  10,    0,  -12 }, // '5'
+	  {   167,   8,  12,  10,    0,  -12 }, // '6'
+	  {   179,   7,  12,  10,    1,  -12 }, // '7'
+	  {   190,   7,  12,  10,    1,  -12 }, // '8'
+	  {   201,   8,  12,  10,    0,  -12 }, // '9'
+	  {   213,   1,   8,   5,    2,   -8 }, // ':'
+	  {   214,   2,   9,   5,    1,   -8 }, // ';'
+	  {   217,   8,   8,  11,    1,   -9 }, // '<'
+	  {   225,   8,   4,  11,    1,   -7 }, // '='
+	  {   229,   8,   8,  11,    1,   -9 }, // '>'
+	  {   237,   7,  12,  10,    1,  -12 }, // '?'
+	  {   248,  12,  12,  15,    1,  -12 }, // '@'
+	  {   266,  12,  12,  13,    0,  -12 }, // 'A'
+	  {   284,   8,  12,  10,    1,  -12 }, // 'B'
+	  {   296,  11,  12,  14,    1,  -12 }, // 'C'
+	  {   313,  10,  12,  13,    1,  -12 }, // 'D'
+	  {   328,   6,  12,  10,    1,  -12 }, // 'E'
+	  {   337,   6,  12,   9,    1,  -12 }, // 'F'
+	  {   346,  12,  12,  15,    1,  -12 }, // 'G'
+	  {   364,   9,  12,  12,    1,  -12 }, // 'H'
+	  {   378,   1,  12,   5,    1,  -12 }, // 'I'
+	  {   380,   6,  12,   9,    0,  -12 }, // 'J'
+	  {   389,   8,  12,  10,    1,  -12 }, // 'K'
+	  {   401,   6,  12,   8,    1,  -12 }, // 'L'
+	  {   410,  12,  12,  16,    1,  -12 }, // 'M'
+	  {   428,  10,  12,  13,    1,  -12 }, // 'N'
+	  {   443,  12,  12,  15,    1,  -12 }, // 'O'
+	  {   461,   8,  12,  10,    1,  -12 }, // 'P'
+	  {   473,  12,  12,  15,    1,  -12 }, // 'Q'
+	  {   491,   8,  12,  11,    1,  -12 }, // 'R'
+	  {   503,   6,  12,   9,    1,  -12 }, // 'S'
+	  {   512,   7,  12,   8,    0,  -12 }, // 'T'
+	  {   523,   8,  12,  11,    1,  -12 }, // 'U'
+	  {   535,  11,  12,  12,    0,  -12 }, // 'V'
+	  {   552,  15,  12,  16,    0,  -12 }, // 'W'
+	  {   575,  10,  12,  11,    0,  -12 }, // 'X'
+	  {   590,   9,  12,  10,    0,  -12 }, // 'Y'
+	  {   604,   8,  12,   9,    0,  -12 }, // 'Z'
+	  {   616,   3,  14,   7,    2,  -12 }, // '['
+	  {   622,   6,  12,  11,    1,  -12 }, // '\'
+	  {   631,   3,  14,   7,    1,  -12 }, // ']'
+	  {   637,   9,   9,  11,    0,  -12 }, // '^'
+	  {   648,   8,   1,   9,    0,    1 }, // '_'
+	  {   649,   4,   2,   7,    1,  -12 }, // '`'
+	  {   650,   9,   9,  12,    1,   -9 }, // 'a'
+	  {   661,   9,  12,  12,    1,  -12 }, // 'b'
+	  {   675,   9,   9,  11,    1,   -9 }, // 'c'
+	  {   686,   9,  12,  12,    1,  -12 }, // 'd'
+	  {   700,   9,   9,  11,    1,   -9 }, // 'e'
+	  {   711,   4,  12,   6,    1,  -12 }, // 'f'
+	  {   717,   9,  12,  12,    1,   -9 }, // 'g'
+	  {   731,   8,  12,  11,    1,  -12 }, // 'h'
+	  {   743,   1,  12,   4,    1,  -12 }, // 'i'
+	  {   745,   3,  15,   4,   -1,  -12 }, // 'j'
+	  {   751,   7,  12,   9,    1,  -12 }, // 'k'
+	  {   762,   1,  12,   4,    1,  -12 }, // 'l'
+	  {   764,  13,   9,  16,    1,   -9 }, // 'm'
+	  {   779,   8,   9,  11,    1,   -9 }, // 'n'
+	  {   788,   9,   9,  11,    1,   -9 }, // 'o'
+	  {   799,   9,  12,  12,    1,   -9 }, // 'p'
+	  {   813,   9,  12,  12,    1,   -9 }, // 'q'
+	  {   827,   3,   9,   6,    1,   -9 }, // 'r'
+	  {   831,   5,   9,   7,    1,   -9 }, // 's'
+	  {   837,   5,  12,   6,    0,  -12 }, // 't'
+	  {   845,   8,   9,  11,    1,   -9 }, // 'u'
+	  {   854,   9,   9,  10,    0,   -9 }, // 'v'
+	  {   865,  13,   9,  14,    0,   -9 }, // 'w'
+	  {   880,   8,   9,   9,    0,   -9 }, // 'x'
+	  {   889,   8,  12,  10,    0,   -9 }, // 'y'
+	  {   901,   7,   9,   8,    0,   -9 }, // 'z'
+	  {   909,   3,  14,   7,    1,  -12 }, // '{'
+	  {   915,   1,  12,  12,    5,  -12 }, // '|'
+	  {   917,   3,  14,   7,    1,  -12 } // '}'
+};
+const GFXfont URW_Gothic_L_Book_16 PROGMEM = {
+(uint8_t  *)URW_Gothic_L_Book_16Bitmaps,(GFXglyph *)URW_Gothic_L_Book_16Glyphs,0x20, 0x7E, 20};
+
+// Created by http://oleddisplay.squix.ch/ Consider a donation
+// In case of problems make sure that you are using the font file with the correct version!
+const uint8_t Open_Sans_Condensed_Light_16Bitmaps[] PROGMEM = {
+
+	// Bitmap Data:
+	0x00, // ' '
+	0xAA,0xAA,0x0A, // '!'
+	0xB6,0xD0, // '"'
+	0x24,0x48,0x91,0x27,0xE5,0x0A,0x7E,0x48,0x91,0x22,0x40, // '#'
+	0x22,0x7A,0xAA,0xC3,0x33,0x3E,0x22, // '$'
+	0xC5,0x52,0xA5,0x4B,0x16,0xF6,0x8D,0x2A,0x54,0xAA,0x30, // '%'
+	0x62,0x49,0x24,0x61,0x0A,0x29,0x9A,0x29,0xB9, // '&'
+	0xF0, // '''
+	0x5A,0xAA,0xAA,0x94, // '('
+	0xA5,0x55,0x55,0x68, // ')'
+	0x22,0xF6,0x90, // '*'
+	0x10,0x41,0x3F,0x10,0x41,0x00, // '+'
+	0xF0, // ','
+	0xF0, // '-'
+	0xC0, // '.'
+	0x04,0x20,0x84,0x10,0x42,0x08,0x21,0x04,0x20, // '/'
+	0x69,0x99,0x99,0x99,0x99,0x96, // '0'
+	0x2E,0x92,0x49,0x24,0x90, // '1'
+	0xE1,0x11,0x11,0x22,0x48,0x8F, // '2'
+	0xE1,0x11,0x16,0x11,0x11,0x1E, // '3'
+	0x08,0x61,0x8A,0x29,0x24,0x92,0x8B,0xF0,0x82, // '4'
+	0xF8,0x88,0x8E,0x11,0x11,0x1E, // '5'
+	0x74,0x88,0x8E,0x99,0x99,0x96, // '6'
+	0xF8,0x42,0x10,0x88,0x42,0x21,0x08,0x80, // '7'
+	0x64,0xA5,0x29,0x32,0x92,0x8C,0x64,0xC0, // '8'
+	0x69,0x99,0x99,0xF1,0x11,0x2C, // '9'
+	0xC1,0x80, // ':'
+	0xC1,0xE0, // ';'
+	0x04,0x66,0x20,0x60,0x60,0x40, // '<'
+	0xFC,0x00,0x3F, // '='
+	0x81,0x81,0x81,0x19,0x88,0x00, // '>'
+	0x70,0x82,0x11,0x08,0x84,0x40,0x18,0xC0, // '?'
+	0x3C,0x62,0x41,0x9D,0xA5,0xA5,0xA5,0xA5,0xAD,0x9E,0x80,0x40,0x38, // '@'
+	0x20,0xC3,0x0C,0x51,0x24,0x9E,0x4A,0x18,0x61, // 'A'
+	0xF4,0x63,0x18,0xFA,0x31,0x8C,0x63,0xE0, // 'B'
+	0x39,0x08,0x20,0x82,0x08,0x20,0x82,0x04,0x0E, // 'C'
+	0xF2,0x28,0x61,0x86,0x18,0x61,0x86,0x18,0xBC, // 'D'
+	0xF8,0x88,0x8F,0x88,0x88,0x8F, // 'E'
+	0xFC,0x21,0x08,0x43,0xF0,0x84,0x21,0x00, // 'F'
+	0x39,0x18,0x20,0x82,0x08,0xE1,0x86,0x14,0x4F, // 'G'
+	0x86,0x18,0x61,0x87,0xF8,0x61,0x86,0x18,0x61, // 'H'
+	0xFF,0xF0, // 'I'
+	0x24,0x92,0x49,0x24,0x92,0x70, // 'J'
+	0x8C,0xA5,0x4A,0x62,0x94,0x94,0xA5,0x10, // 'K'
+	0x84,0x21,0x08,0x42,0x10,0x84,0x21,0xF0, // 'L'
+	0xC1,0xE0,0xF0,0x74,0x5A,0x2D,0x16,0x8B,0x29,0x94,0xCA,0x66,0x31,0x10, // 'M'
+	0xC3,0x86,0x8D,0x1A,0x32,0x64,0xC5,0x8B,0x0E,0x1C,0x30, // 'N'
+	0x79,0x28,0x61,0x86,0x18,0x61,0x86,0x14,0x9E, // 'O'
+	0xF4,0x63,0x18,0xC7,0xD0,0x84,0x21,0x00, // 'P'
+	0x79,0x28,0x61,0x86,0x18,0x61,0x86,0x14,0x9E,0x08,0x20,0x80, // 'Q'
+	0xF2,0x28,0xA2,0x8A,0x2F,0x24,0x92,0x28,0xA1, // 'R'
+	0x78,0x88,0x84,0x31,0x11,0x1E, // 'S'
+	0xFC,0x82,0x08,0x20,0x82,0x08,0x20,0x82,0x08, // 'T'
+	0x86,0x18,0x61,0x86,0x18,0x61,0x86,0x14,0x9E, // 'U'
+	0x86,0x18,0x52,0x49,0x24,0x94,0x30,0xC3,0x0C, // 'V'
+	0x84,0x30,0x86,0x28,0xA5,0x24,0xA4,0x94,0x92,0x92,0x8C,0x31,0x86,0x30,0xC6,0x18,0xC0, // 'W'
+	0x45,0x24,0x8A,0x30,0x43,0x0C,0x49,0x24,0xA1, // 'X'
+	0x8C,0x54,0xA5,0x28,0x84,0x21,0x08,0x40, // 'Y'
+	0xF8,0x84,0x21,0x10,0x84,0x42,0x11,0xF0, // 'Z'
+	0xF2,0x49,0x24,0x92,0x49,0x38, // '['
+	0x81,0x04,0x08,0x20,0x81,0x04,0x10,0x20,0x81, // '\'
+	0xE4,0x92,0x49,0x24,0x92,0x78, // ']'
+	0x20,0xC4,0x92,0x84, // '^'
+	0xFE, // '_'
+	0x48,0x80, // '`'
+	0x61,0x11,0x79,0x99,0xF0, // 'a'
+	0x84,0x21,0x0F,0x66,0x31,0x8C,0x63,0x9B,0x00, // 'b'
+	0x78,0x88,0x88,0x88,0x70, // 'c'
+	0x08,0x42,0x16,0xCE,0x31,0x8C,0x63,0x36,0x80, // 'd'
+	0x69,0x99,0xF8,0x88,0x70, // 'e'
+	0x34,0x44,0xF4,0x44,0x44,0x44,0x40, // 'f'
+	0x3D,0x24,0x92,0x48,0xC4,0x10,0x39,0x18,0x61,0x78, // 'g'
+	0x84,0x21,0x0B,0x66,0x31,0x8C,0x63,0x18,0x80, // 'h'
+	0xDF,0xF0, // 'i'
+	0x51,0x55,0x55,0x56, // 'j'
+	0x84,0x21,0x09,0x4A,0x94,0xE4,0xA5,0x28,0x80, // 'k'
+	0xFF,0xF8, // 'l'
+	0xF6,0x99,0x89,0x89,0x89,0x89,0x89,0x89,0x89, // 'm'
+	0xB6,0x63,0x18,0xC6,0x31,0x88, // 'n'
+	0x74,0x63,0x18,0xC6,0x31,0x70, // 'o'
+	0xB6,0x63,0x18,0xC6,0x39,0xB4,0x21,0x08,0x00, // 'p'
+	0x7C,0xE3,0x18,0xC6,0x33,0x68,0x42,0x10,0x80, // 'q'
+	0xF2,0x49,0x24,0x80, // 'r'
+	0xF2,0x44,0x49,0xE0, // 's'
+	0x44,0xF4,0x44,0x44,0x44,0x30, // 't'
+	0x8C,0x63,0x18,0xC6,0x33,0x68, // 'u'
+	0x8C,0x62,0xA5,0x29,0x44,0x20, // 'v'
+	0x88,0xC4,0x55,0x4A,0xA5,0x52,0xA9,0x54,0x44,0x22,0x00, // 'w'
+	0x8A,0x94,0x42,0x11,0x4A,0x88, // 'x'
+	0x8C,0x54,0xA5,0x29,0x44,0x21,0x08,0x8C,0x00, // 'y'
+	0x72,0x22,0x44,0x44,0xF0, // 'z'
+	0x32,0x44,0x44,0x48,0x44,0x44,0x42,0x10, // '{'
+	0x55,0x55,0x55,0x55,0x40, // '|'
+	0x84,0x22,0x22,0x21,0x22,0x22,0x24,0x80 // '}'
+};
+const GFXglyph Open_Sans_Condensed_Light_16Glyphs[] PROGMEM = {
+// bitmapOffset, width, height, xAdvance, xOffset, yOffset
+	  {     0,   1,   1,   4,    0,    0 }, // ' '
+	  {     1,   2,  12,   5,    1,  -12 }, // '!'
+	  {     4,   3,   4,   6,    1,  -12 }, // '"'
+	  {     6,   7,  12,   8,    0,  -12 }, // '#'
+	  {    17,   4,  14,   7,    1,  -13 }, // '$'
+	  {    24,   7,  12,  10,    1,  -12 }, // '%'
+	  {    35,   6,  12,   8,    1,  -12 }, // '&'
+	  {    44,   1,   4,   4,    1,  -12 }, // '''
+	  {    45,   2,  15,   5,    1,  -12 }, // '('
+	  {    49,   2,  15,   5,    1,  -12 }, // ')'
+	  {    53,   4,   5,   7,    1,  -13 }, // '*'
+	  {    56,   6,   7,   7,    0,  -10 }, // '+'
+	  {    62,   1,   4,   4,    1,   -2 }, // ','
+	  {    63,   4,   1,   5,    0,   -5 }, // '-'
+	  {    64,   1,   2,   4,    1,   -2 }, // '.'
+	  {    65,   6,  12,   7,    0,  -12 }, // '/'
+	  {    74,   4,  12,   7,    1,  -12 }, // '0'
+	  {    80,   3,  12,   7,    1,  -12 }, // '1'
+	  {    85,   4,  12,   7,    1,  -12 }, // '2'
+	  {    91,   4,  12,   7,    1,  -12 }, // '3'
+	  {    97,   6,  12,   7,    0,  -12 }, // '4'
+	  {   106,   4,  12,   7,    1,  -12 }, // '5'
+	  {   112,   4,  12,   7,    1,  -12 }, // '6'
+	  {   118,   5,  12,   7,    0,  -12 }, // '7'
+	  {   126,   5,  12,   7,    1,  -12 }, // '8'
+	  {   134,   4,  12,   7,    1,  -12 }, // '9'
+	  {   140,   1,   9,   4,    1,   -9 }, // ':'
+	  {   142,   1,  11,   4,    1,   -9 }, // ';'
+	  {   144,   6,   7,   7,    0,  -10 }, // '<'
+	  {   150,   6,   4,   7,    0,   -8 }, // '='
+	  {   153,   6,   7,   7,    0,  -10 }, // '>'
+	  {   159,   5,  12,   6,    0,  -12 }, // '?'
+	  {   167,   8,  13,  11,    1,  -12 }, // '@'
+	  {   180,   6,  12,   7,    0,  -12 }, // 'A'
+	  {   189,   5,  12,   8,    1,  -12 }, // 'B'
+	  {   197,   6,  12,   8,    1,  -12 }, // 'C'
+	  {   206,   6,  12,   9,    1,  -12 }, // 'D'
+	  {   215,   4,  12,   7,    1,  -12 }, // 'E'
+	  {   221,   5,  12,   7,    1,  -12 }, // 'F'
+	  {   229,   6,  12,   9,    1,  -12 }, // 'G'
+	  {   238,   6,  12,   9,    1,  -12 }, // 'H'
+	  {   247,   1,  12,   4,    1,  -12 }, // 'I'
+	  {   249,   3,  15,   4,   -1,  -12 }, // 'J'
+	  {   255,   5,  12,   7,    1,  -12 }, // 'K'
+	  {   263,   5,  12,   7,    1,  -12 }, // 'L'
+	  {   271,   9,  12,  12,    1,  -12 }, // 'M'
+	  {   285,   7,  12,  10,    1,  -12 }, // 'N'
+	  {   296,   6,  12,   9,    1,  -12 }, // 'O'
+	  {   305,   5,  12,   8,    1,  -12 }, // 'P'
+	  {   313,   6,  15,   9,    1,  -12 }, // 'Q'
+	  {   325,   6,  12,   8,    1,  -12 }, // 'R'
+	  {   334,   4,  12,   7,    1,  -12 }, // 'S'
+	  {   340,   6,  12,   7,    0,  -12 }, // 'T'
+	  {   349,   6,  12,   9,    1,  -12 }, // 'U'
+	  {   358,   6,  12,   7,    0,  -12 }, // 'V'
+	  {   367,  11,  12,  12,    0,  -12 }, // 'W'
+	  {   384,   6,  12,   7,    0,  -12 }, // 'X'
+	  {   393,   5,  12,   6,    0,  -12 }, // 'Y'
+	  {   401,   5,  12,   6,    0,  -12 }, // 'Z'
+	  {   409,   3,  15,   6,    1,  -12 }, // '['
+	  {   415,   6,  12,   7,    0,  -12 }, // '\'
+	  {   424,   3,  15,   6,    1,  -12 }, // ']'
+	  {   430,   6,   5,   7,    0,  -12 }, // '^'
+	  {   434,   7,   1,   8,    0,    1 }, // '_'
+	  {   435,   3,   3,  10,    3,  -13 }, // '`'
+	  {   437,   4,   9,   7,    1,   -9 }, // 'a'
+	  {   442,   5,  13,   8,    1,  -13 }, // 'b'
+	  {   451,   4,   9,   6,    1,   -9 }, // 'c'
+	  {   456,   5,  13,   8,    1,  -13 }, // 'd'
+	  {   465,   4,   9,   7,    1,   -9 }, // 'e'
+	  {   470,   4,  13,   5,    0,  -13 }, // 'f'
+	  {   477,   6,  13,   7,    0,   -9 }, // 'g'
+	  {   487,   5,  13,   8,    1,  -13 }, // 'h'
+	  {   496,   1,  12,   4,    1,  -12 }, // 'i'
+	  {   498,   2,  16,   4,    0,  -12 }, // 'j'
+	  {   502,   5,  13,   7,    1,  -13 }, // 'k'
+	  {   511,   1,  13,   4,    1,  -13 }, // 'l'
+	  {   513,   8,   9,  11,    1,   -9 }, // 'm'
+	  {   522,   5,   9,   8,    1,   -9 }, // 'n'
+	  {   528,   5,   9,   8,    1,   -9 }, // 'o'
+	  {   534,   5,  13,   8,    1,   -9 }, // 'p'
+	  {   543,   5,  13,   8,    1,   -9 }, // 'q'
+	  {   552,   3,   9,   5,    1,   -9 }, // 'r'
+	  {   556,   3,   9,   6,    1,   -9 }, // 's'
+	  {   560,   4,  11,   5,    0,  -11 }, // 't'
+	  {   566,   5,   9,   8,    1,   -9 }, // 'u'
+	  {   572,   5,   9,   6,    0,   -9 }, // 'v'
+	  {   578,   9,   9,  10,    0,   -9 }, // 'w'
+	  {   589,   5,   9,   6,    0,   -9 }, // 'x'
+	  {   595,   5,  13,   6,    0,   -9 }, // 'y'
+	  {   604,   4,   9,   5,    0,   -9 }, // 'z'
+	  {   609,   4,  15,   7,    1,  -12 }, // '{'
+	  {   617,   2,  17,   7,    2,  -13 }, // '|'
+	  {   622,   4,  15,   7,    1,  -12 } // '}'
+};
+const GFXfont Open_Sans_Condensed_Light_16 PROGMEM = {
+(uint8_t  *)Open_Sans_Condensed_Light_16Bitmaps,(GFXglyph *)Open_Sans_Condensed_Light_16Glyphs,0x20, 0x7E, 23};
+
+
+// Created by http://oleddisplay.squix.ch/ Consider a donation
+// In case of problems make sure that you are using the font file with the correct version!
+const uint8_t Open_Sans_Condensed_Light_19Bitmaps[] PROGMEM = {
+
+	// Bitmap Data:
+	0x00, // ' '
+	0xF5,0x55,0x50,0xF0, // '!'
+	0x99,0x99,0x90, // '"'
+	0x12,0x12,0x14,0x24,0x7F,0x24,0x24,0x24,0x24,0xFE,0x24,0x28,0x48,0x48, // '#'
+	0x20,0x87,0xF9,0xA2,0x8A,0x18,0x18,0x92,0x49,0x2F,0xE2,0x08, // '$'
+	0x62,0x51,0x25,0x12,0x89,0x44,0xDA,0x6B,0x59,0x6C,0x8A,0x45,0x22,0x92,0x29,0x18, // '%'
+	0x70,0xA1,0x42,0x85,0x0A,0x08,0x30,0x95,0x2A,0x34,0x28,0xCE,0x40, // '&'
+	0xAA,0x80, // '''
+	0x25,0x29,0x24,0x92,0x48,0x92,0x20, // '('
+	0x89,0x22,0x49,0x24,0x92,0x92,0x80, // ')'
+	0x21,0x3E,0xA5,0x00, // '*'
+	0x20,0x82,0x08,0xFC,0x82,0x08,0x00, // '+'
+	0x6A, // ','
+	0xE0, // '-'
+	0xF0, // '.'
+	0x08,0x20,0x84,0x10,0x42,0x08,0x21,0x04,0x20,0x82,0x00, // '/'
+	0x31,0x28,0x61,0x86,0x18,0x61,0x86,0x18,0x61,0x49,0xC0, // '0'
+	0x13,0xD1,0x11,0x11,0x11,0x11,0x11, // '1'
+	0x7A,0x20,0x41,0x04,0x10,0x82,0x10,0x82,0x10,0x83,0xF0, // '2'
+	0x7A,0x20,0x41,0x04,0x27,0x02,0x04,0x10,0x41,0x0B,0xC0, // '3'
+	0x04,0x0C,0x0C,0x14,0x14,0x24,0x24,0x44,0x44,0x44,0xFF,0x04,0x04,0x04, // '4'
+	0xFA,0x08,0x20,0x82,0x0F,0x83,0x04,0x10,0x41,0x0B,0xC0, // '5'
+	0x39,0x84,0x20,0x82,0xEC,0xE1,0x86,0x18,0x61,0x48,0xE0, // '6'
+	0xFC,0x10,0x42,0x08,0x21,0x04,0x10,0x82,0x08,0x41,0x00, // '7'
+	0x7B,0x38,0x61,0x85,0x23,0x16,0x86,0x18,0x61,0xC5,0xE0, // '8'
+	0x73,0x28,0x61,0x86,0x18,0x73,0x74,0x10,0x82,0x1B,0xC0, // '9'
+	0xF0,0x00,0xF0, // ':'
+	0xF0,0x00,0x6A, // ';'
+	0x04,0x23,0x30,0xC0,0xC0,0x81, // '<'
+	0xFC,0x00,0x00,0xFC, // '='
+	0x81,0x03,0x03,0x0C,0xC4,0x20, // '>'
+	0x70,0x82,0x11,0x08,0x84,0x22,0x00,0x06,0x30, // '?'
+	0x1E,0x11,0x90,0x48,0x18,0xCC,0xA6,0x53,0x29,0x94,0xCA,0x65,0x33,0x68,0x02,0x01,0x80,0x78, // '@'
+	0x18,0x18,0x18,0x18,0x24,0x24,0x24,0x24,0x7E,0x42,0x42,0x42,0x81,0x81, // 'A'
+	0xFA,0x38,0x61,0x86,0x2F,0x23,0x86,0x18,0x61,0x87,0xE0, // 'B'
+	0x1C,0xC1,0x04,0x08,0x10,0x20,0x40,0x81,0x02,0x02,0x06,0x03,0x80, // 'C'
+	0xF9,0x1A,0x14,0x18,0x30,0x60,0xC1,0x83,0x06,0x0C,0x28,0xDF,0x00, // 'D'
+	0xFC,0x21,0x08,0x43,0xF0,0x84,0x21,0x08,0x7C, // 'E'
+	0xFC,0x21,0x08,0x42,0x1E,0x84,0x21,0x08,0x40, // 'F'
+	0x1E,0x21,0x40,0xC0,0x80,0x80,0x80,0x87,0x81,0x81,0xC1,0x41,0x21,0x1F, // 'G'
+	0x86,0x18,0x61,0x86,0x1F,0xE1,0x86,0x18,0x61,0x86,0x10, // 'H'
+	0xAA,0xAA,0xAA,0xA0, // 'I'
+	0x24,0x92,0x49,0x24,0x92,0x49,0xE0, // 'J'
+	0x8A,0x29,0x24,0xA2,0x8C,0x28,0xA2,0x49,0x22,0x8A,0x10, // 'K'
+	0x84,0x21,0x08,0x42,0x10,0x84,0x21,0x08,0x7C, // 'L'
+	0xC0,0x78,0x0E,0x82,0xD0,0x5A,0x0B,0x42,0x64,0x4C,0x89,0x91,0x31,0x46,0x28,0xC5,0x18,0xA3,0x08,0x40, // 'M'
+	0xC1,0xC1,0xA1,0xA1,0x91,0x91,0x91,0x89,0x89,0x85,0x85,0x85,0x83,0x83, // 'N'
+	0x3C,0x66,0x42,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x42,0x66,0x3C, // 'O'
+	0xF4,0xE3,0x18,0xC6,0x7E,0x84,0x21,0x08,0x40, // 'P'
+	0x3C,0x66,0x42,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x42,0x66,0x3C,0x04,0x04,0x02, // 'Q'
+	0xF9,0x1A,0x14,0x28,0x50,0xA3,0x78,0x91,0x12,0x24,0x28,0x50,0x80, // 'R'
+	0x3F,0x18,0x20,0x83,0x06,0x06,0x04,0x10,0x41,0x0F,0xC0, // 'S'
+	0xFE,0x20,0x40,0x81,0x02,0x04,0x08,0x10,0x20,0x40,0x81,0x02,0x00, // 'T'
+	0x83,0x06,0x0C,0x18,0x30,0x60,0xC1,0x83,0x06,0x0A,0x24,0x47,0x00, // 'U'
+	0x83,0x06,0x12,0x24,0x48,0x91,0x14,0x28,0x50,0xA1,0x41,0x02,0x00, // 'V'
+	0x82,0x0C,0x10,0x51,0x44,0x8A,0x24,0x51,0x22,0x89,0x14,0x45,0x14,0x28,0xA1,0x45,0x0A,0x28,0x51,0x41,0x0C,0x08,0x20, // 'W'
+	0x42,0x88,0x91,0x22,0x83,0x04,0x0C,0x28,0x50,0x92,0x24,0x50,0x40, // 'X'
+	0x86,0x14,0x92,0x48,0xC3,0x0C,0x10,0x41,0x04,0x10,0x40, // 'Y'
+	0xF8,0x84,0x22,0x10,0x88,0x42,0x21,0x08,0x7C, // 'Z'
+	0xF2,0x49,0x24,0x92,0x49,0x24,0xE0, // '['
+	0x82,0x08,0x10,0x41,0x02,0x08,0x10,0x41,0x02,0x08,0x20, // '\'
+	0xE4,0x92,0x49,0x24,0x92,0x49,0xE0, // ']'
+	0x18,0x18,0x24,0x24,0x42,0x42,0x42, // '^'
+	0xFF, // '_'
+	0x88,0x80, // '`'
+	0x70,0xC2,0x17,0xC6,0x31,0x9B,0x40, // 'a'
+	0x82,0x08,0x20,0x82,0xEC,0xE1,0x86,0x18,0x61,0x87,0x3B,0x80, // 'b'
+	0x7A,0x21,0x08,0x42,0x10,0x43,0xC0, // 'c'
+	0x04,0x10,0x41,0x05,0xDC,0xE1,0x86,0x18,0x61,0x87,0x37,0x40, // 'd'
+	0x74,0x63,0x1F,0xC2,0x10,0x43,0xC0, // 'e'
+	0x39,0x10,0x84,0x79,0x08,0x42,0x10,0x84,0x21,0x00, // 'f'
+	0x3E,0x89,0x12,0x24,0x48,0x8E,0x10,0x40,0x79,0x0C,0x18,0x28,0x9E,0x00, // 'g'
+	0x82,0x08,0x20,0x82,0xEC,0xA1,0x86,0x18,0x61,0x86,0x18,0x40, // 'h'
+	0xA0,0xAA,0xAA,0xA0, // 'i'
+	0x48,0x04,0x92,0x49,0x24,0x92,0x4B,0x00, // 'j'
+	0x82,0x08,0x20,0x82,0x28,0xA4,0xA2,0xCD,0x24,0x8A,0x28,0x40, // 'k'
+	0xAA,0xAA,0xAA,0xA8, // 'l'
+	0xBB,0xB3,0x28,0x46,0x11,0x84,0x61,0x18,0x46,0x11,0x84,0x61,0x10, // 'm'
+	0xBB,0x28,0x61,0x86,0x18,0x61,0x86,0x10, // 'n'
+	0x79,0x28,0x61,0x86,0x18,0x61,0x49,0xE0, // 'o'
+	0xBB,0x38,0x61,0x86,0x18,0x61,0xCE,0xE8,0x20,0x82,0x08,0x00, // 'p'
+	0x77,0x38,0x61,0x86,0x18,0x61,0xCD,0xD0,0x41,0x04,0x10,0x40, // 'q'
+	0xBC,0xC8,0x88,0x88,0x88, // 'r'
+	0x78,0x88,0x43,0x11,0x1E, // 's'
+	0x44,0xF4,0x44,0x44,0x44,0x43, // 't'
+	0x86,0x18,0x61,0x86,0x18,0x61,0x4D,0xD0, // 'u'
+	0x86,0x14,0x92,0x49,0x23,0x0C,0x30,0xC0, // 'v'
+	0x8C,0x63,0x14,0xC9,0x32,0x4C,0x94,0xA5,0x28,0xCC,0x33,0x08,0x40, // 'w'
+	0x49,0x24,0x8C,0x30,0xC3,0x12,0x4A,0x10, // 'x'
+	0x86,0x14,0x92,0x49,0x23,0x0C,0x30,0xC2,0x08,0x20,0x8C,0x00, // 'y'
+	0xE2,0x22,0x44,0x88,0x8F, // 'z'
+	0x19,0x08,0x42,0x10,0x84,0xC1,0x08,0x42,0x10,0x84,0x18, // '{'
+	0xAA,0xAA,0xAA,0xAA,0xAA, // '|'
+	0xC1,0x08,0x42,0x10,0x84,0x19,0x08,0x42,0x10,0x84,0xC0 // '}'
+};
+const GFXglyph Open_Sans_Condensed_Light_19Glyphs[] PROGMEM = {
+// bitmapOffset, width, height, xAdvance, xOffset, yOffset
+	  {     0,   1,   1,   5,    0,    0 }, // ' '
+	  {     1,   2,  14,   5,    1,  -14 }, // '!'
+	  {     5,   4,   5,   7,    1,  -14 }, // '"'
+	  {     8,   8,  14,   9,    0,  -14 }, // '#'
+	  {    22,   6,  16,   9,    1,  -15 }, // '$'
+	  {    34,   9,  14,  12,    1,  -14 }, // '%'
+	  {    50,   7,  14,   9,    1,  -14 }, // '&'
+	  {    63,   2,   5,   5,    1,  -14 }, // '''
+	  {    65,   3,  17,   6,    1,  -14 }, // '('
+	  {    72,   3,  17,   6,    1,  -14 }, // ')'
+	  {    79,   5,   5,   8,    1,  -15 }, // '*'
+	  {    83,   6,   9,   9,    1,  -12 }, // '+'
+	  {    90,   2,   4,   5,    1,   -2 }, // ','
+	  {    91,   3,   1,   6,    1,   -6 }, // '-'
+	  {    92,   2,   2,   5,    1,   -2 }, // '.'
+	  {    93,   6,  14,   8,    1,  -14 }, // '/'
+	  {   104,   6,  14,   9,    1,  -14 }, // '0'
+	  {   115,   4,  14,   9,    1,  -14 }, // '1'
+	  {   122,   6,  14,   9,    1,  -14 }, // '2'
+	  {   133,   6,  14,   9,    1,  -14 }, // '3'
+	  {   144,   8,  14,   9,    0,  -14 }, // '4'
+	  {   158,   6,  14,   9,    1,  -14 }, // '5'
+	  {   169,   6,  14,   9,    1,  -14 }, // '6'
+	  {   180,   6,  14,   9,    1,  -14 }, // '7'
+	  {   191,   6,  14,   9,    1,  -14 }, // '8'
+	  {   202,   6,  14,   9,    1,  -14 }, // '9'
+	  {   213,   2,  10,   5,    1,  -10 }, // ':'
+	  {   216,   2,  12,   5,    1,  -10 }, // ';'
+	  {   219,   6,   8,   9,    1,  -11 }, // '<'
+	  {   225,   6,   5,   9,    1,  -10 }, // '='
+	  {   229,   6,   8,   9,    1,  -11 }, // '>'
+	  {   235,   5,  14,   6,    0,  -14 }, // '?'
+	  {   244,   9,  16,  12,    1,  -14 }, // '@'
+	  {   262,   8,  14,   9,    0,  -14 }, // 'A'
+	  {   276,   6,  14,   9,    1,  -14 }, // 'B'
+	  {   287,   7,  14,   9,    1,  -14 }, // 'C'
+	  {   300,   7,  14,  10,    1,  -14 }, // 'D'
+	  {   313,   5,  14,   8,    1,  -14 }, // 'E'
+	  {   322,   5,  14,   8,    2,  -14 }, // 'F'
+	  {   331,   8,  14,  11,    1,  -14 }, // 'G'
+	  {   345,   6,  14,  11,    2,  -14 }, // 'H'
+	  {   356,   2,  14,   5,    1,  -14 }, // 'I'
+	  {   360,   3,  17,   5,   -1,  -14 }, // 'J'
+	  {   367,   6,  14,   9,    2,  -14 }, // 'K'
+	  {   378,   5,  14,   8,    2,  -14 }, // 'L'
+	  {   387,  11,  14,  14,    1,  -14 }, // 'M'
+	  {   407,   8,  14,  11,    1,  -14 }, // 'N'
+	  {   421,   8,  14,  11,    1,  -14 }, // 'O'
+	  {   435,   5,  14,   9,    2,  -14 }, // 'P'
+	  {   444,   8,  17,  11,    1,  -14 }, // 'Q'
+	  {   461,   7,  14,   9,    1,  -14 }, // 'R'
+	  {   474,   6,  14,   9,    1,  -14 }, // 'S'
+	  {   485,   7,  14,   8,    0,  -14 }, // 'T'
+	  {   498,   7,  14,  10,    1,  -14 }, // 'U'
+	  {   511,   7,  14,   8,    0,  -14 }, // 'V'
+	  {   524,  13,  14,  14,    0,  -14 }, // 'W'
+	  {   547,   7,  14,   8,    0,  -14 }, // 'X'
+	  {   560,   6,  14,   7,    0,  -14 }, // 'Y'
+	  {   571,   5,  14,   7,    1,  -14 }, // 'Z'
+	  {   580,   3,  17,   7,    2,  -14 }, // '['
+	  {   587,   6,  14,   8,    1,  -14 }, // '\'
+	  {   598,   3,  17,   7,    1,  -14 }, // ']'
+	  {   605,   8,   7,   9,    0,  -14 }, // '^'
+	  {   612,   8,   1,   9,    0,    2 }, // '_'
+	  {   613,   3,   3,  11,    4,  -15 }, // '`'
+	  {   615,   5,  10,   8,    1,  -10 }, // 'a'
+	  {   622,   6,  15,   9,    1,  -15 }, // 'b'
+	  {   634,   5,  10,   7,    1,  -10 }, // 'c'
+	  {   641,   6,  15,   9,    1,  -15 }, // 'd'
+	  {   653,   5,  10,   8,    1,  -10 }, // 'e'
+	  {   660,   5,  15,   5,    0,  -15 }, // 'f'
+	  {   670,   7,  15,   8,    0,  -10 }, // 'g'
+	  {   684,   6,  15,   9,    1,  -15 }, // 'h'
+	  {   696,   2,  14,   5,    1,  -14 }, // 'i'
+	  {   700,   3,  19,   5,    0,  -14 }, // 'j'
+	  {   708,   6,  15,   8,    1,  -15 }, // 'k'
+	  {   720,   2,  15,   5,    1,  -15 }, // 'l'
+	  {   724,  10,  10,  13,    1,  -10 }, // 'm'
+	  {   737,   6,  10,   9,    1,  -10 }, // 'n'
+	  {   745,   6,  10,   9,    1,  -10 }, // 'o'
+	  {   753,   6,  15,   9,    1,  -10 }, // 'p'
+	  {   765,   6,  15,   9,    1,  -10 }, // 'q'
+	  {   777,   4,  10,   6,    1,  -10 }, // 'r'
+	  {   782,   4,  10,   7,    1,  -10 }, // 's'
+	  {   787,   4,  12,   5,    0,  -12 }, // 't'
+	  {   793,   6,  10,   9,    1,  -10 }, // 'u'
+	  {   801,   6,  10,   7,    0,  -10 }, // 'v'
+	  {   809,  10,  10,  11,    0,  -10 }, // 'w'
+	  {   822,   6,  10,   7,    0,  -10 }, // 'x'
+	  {   830,   6,  15,   7,    0,  -10 }, // 'y'
+	  {   842,   4,  10,   6,    1,  -10 }, // 'z'
+	  {   847,   5,  17,   8,    1,  -14 }, // '{'
+	  {   858,   2,  20,   9,    3,  -15 }, // '|'
+	  {   863,   5,  17,   8,    1,  -14 } // '}'
+};
+const GFXfont Open_Sans_Condensed_Light_19 PROGMEM = {
+(uint8_t  *)Open_Sans_Condensed_Light_19Bitmaps,(GFXglyph *)Open_Sans_Condensed_Light_19Glyphs,0x20, 0x7E, 27};
+
+// Created by http://oleddisplay.squix.ch/ Consider a donation
+// In case of problems make sure that you are using the font file with the correct version!
+const uint8_t Open_Sans_Condensed_Light_22Bitmaps[] PROGMEM = {
+
+	// Bitmap Data:
+	0x00, // ' '
+	0xFF,0xF3, // '!'
+	0xDE,0xD6,0xA4,0xA4, // '"'
+	0x12,0x09,0x04,0x82,0x41,0x23,0xFC,0x48,0x44,0x22,0x12,0x3F,0xC4,0x82,0x41,0x20,0x90,0x48, // '#'
+	0x10,0x20,0xF2,0x89,0x12,0x24,0x28,0x70,0x30,0x50,0x91,0x22,0x45,0x7C,0x10,0x20,0x40, // '$'
+	0x61,0x12,0x22,0x44,0x49,0x09,0x21,0x24,0x25,0x34,0xA9,0x95,0x2C,0xA4,0x24,0x84,0x90,0x92,0x22,0x44,0x48,0x86, // '%'
+	0x30,0x48,0x48,0x48,0x48,0x48,0x30,0x20,0x50,0x92,0x8A,0x8A,0x86,0x86,0x8A,0x71, // '&'
+	0xF5,0x50, // '''
+	0x12,0x24,0x44,0xC8,0x88,0x88,0x84,0x44,0x22,0x10, // '('
+	0x84,0x42,0x22,0x31,0x11,0x11,0x12,0x22,0x44,0x80, // ')'
+	0x30,0x4D,0xCC,0x79,0x20, // '*'
+	0x10,0x20,0x40,0x81,0x1F,0xC4,0x08,0x10,0x20,0x40, // '+'
+	0x49,0x48, // ','
+	0xF0, // '-'
+	0xC0, // '.'
+	0x04,0x08,0x10,0x40,0x83,0x04,0x08,0x20,0x40,0x82,0x04,0x08,0x20,0x40, // '/'
+	0x38,0x89,0x14,0x18,0x30,0x60,0xC1,0x83,0x06,0x0C,0x18,0x28,0x91,0x1C, // '0'
+	0x35,0x91,0x11,0x11,0x11,0x11,0x11,0x11, // '1'
+	0x79,0x08,0x10,0x10,0x20,0x81,0x02,0x08,0x10,0x41,0x02,0x08,0x20,0x7F, // '2'
+	0x79,0x08,0x18,0x10,0x20,0x83,0x18,0x0C,0x0C,0x08,0x10,0x20,0xC1,0x7C, // '3'
+	0x06,0x03,0x02,0x81,0x40,0xA0,0x90,0x48,0x44,0x22,0x21,0x10,0x9F,0xF0,0x20,0x10,0x08,0x04, // '4'
+	0x7C,0x82,0x04,0x08,0x10,0x3E,0x02,0x02,0x04,0x08,0x10,0x20,0xA3,0x7C, // '5'
+	0x1C,0x41,0x02,0x04,0x10,0x2E,0x62,0x83,0x06,0x0C,0x18,0x28,0x51,0x1C, // '6'
+	0xFE,0x04,0x08,0x20,0x40,0x82,0x04,0x08,0x20,0x40,0x82,0x04,0x08,0x20, // '7'
+	0x38,0x8A,0x0C,0x18,0x28,0x99,0x1C,0x69,0x8A,0x0C,0x18,0x30,0x51,0x9C, // '8'
+	0x38,0x8A,0x14,0x38,0x30,0x60,0xC3,0x46,0x74,0x08,0x20,0x40,0x82,0x38, // '9'
+	0xC0,0x30, // ':'
+	0x48,0x00,0x00,0x01,0x25,0x20, // ';'
+	0x02,0x08,0x63,0x08,0x0C,0x06,0x03,0x02, // '<'
+	0xFE,0x00,0x00,0x00,0x1F,0xC0, // '='
+	0x80,0x80,0xC0,0x60,0x21,0x8C,0x60,0x80, // '>'
+	0x70,0x20,0x83,0x08,0x20,0x84,0x10,0x82,0x08,0x00,0x02,0x08, // '?'
+	0x0F,0x02,0x30,0x83,0x20,0x24,0x74,0x92,0x62,0x4C,0x99,0x93,0x32,0x46,0x48,0xC9,0x18,0xB4,0x9B,0x90,0x03,0x00,0x31,0x03,0xC0, // '@'
+	0x08,0x04,0x05,0x02,0x81,0x40,0xA0,0x88,0x44,0x22,0x1F,0x10,0x48,0x24,0x12,0x0A,0x03,0x01, // 'A'
+	0xF9,0x0A,0x0C,0x18,0x30,0xE1,0x7C,0x85,0x06,0x0C,0x18,0x30,0x61,0x7C, // 'B'
+	0x1E,0x41,0x02,0x04,0x10,0x20,0x40,0x81,0x02,0x02,0x04,0x0C,0x08,0x0F, // 'C'
+	0xF8,0x8C,0x86,0x82,0x82,0x81,0x81,0x81,0x81,0x81,0x81,0x82,0x82,0x86,0x8C,0xF8, // 'D'
+	0xFC,0x21,0x08,0x42,0x1F,0x84,0x21,0x08,0x42,0x1F, // 'E'
+	0xFE,0x08,0x20,0x82,0x08,0x20,0xFA,0x08,0x20,0x82,0x08,0x20, // 'F'
+	0x0F,0x8C,0x26,0x01,0x00,0x40,0x30,0x08,0x02,0x00,0x83,0xE0,0x1C,0x05,0x01,0x40,0x58,0x13,0x04,0x3E, // 'G'
+	0x83,0x06,0x0C,0x18,0x30,0x60,0xFF,0x83,0x06,0x0C,0x18,0x30,0x60,0xC1, // 'H'
+	0xFF,0xFF, // 'I'
+	0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x2E, // 'J'
+	0x85,0x0A,0x24,0x49,0x16,0x28,0x70,0xE1,0x22,0x44,0x48,0x90,0xA1,0x41, // 'K'
+	0x82,0x08,0x20,0x82,0x08,0x20,0x82,0x08,0x20,0x82,0x08,0x3F, // 'L'
+	0x80,0x38,0x0F,0x01,0xE0,0x3A,0x0B,0x41,0x68,0x2D,0x05,0x91,0x32,0x26,0x44,0xC5,0x18,0xA3,0x14,0x62,0x8C,0x21, // 'M'
+	0x81,0xC1,0xC1,0xA1,0xA1,0xA1,0x91,0x91,0x89,0x89,0x85,0x85,0x87,0x83,0x83,0x81, // 'N'
+	0x1C,0x11,0x10,0x48,0x2C,0x1C,0x06,0x03,0x01,0x80,0xC0,0x60,0x38,0x34,0x12,0x08,0x88,0x38, // 'O'
+	0xF2,0x38,0x61,0x86,0x18,0x62,0xF2,0x08,0x20,0x82,0x08,0x20, // 'P'
+	0x1C,0x11,0x10,0x48,0x2C,0x1C,0x06,0x03,0x01,0x80,0xC0,0x60,0x38,0x34,0x12,0x08,0x88,0x38,0x04,0x01,0x00,0x80,0x20, // 'Q'
+	0xF1,0x12,0x14,0x28,0x50,0xA1,0x44,0xF1,0x22,0x44,0x48,0x91,0xA1,0x42, // 'R'
+	0x3E,0x82,0x04,0x08,0x10,0x10,0x18,0x0C,0x08,0x08,0x10,0x20,0x41,0x7C, // 'S'
+	0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, // 'T'
+	0x83,0x06,0x0C,0x18,0x30,0x60,0xC1,0x83,0x06,0x0C,0x18,0x30,0x51,0x9E, // 'U'
+	0x80,0xC0,0x50,0x48,0x24,0x12,0x08,0x88,0x44,0x22,0x11,0x05,0x02,0x81,0x40,0xA0,0x20,0x10, // 'V'
+	0x81,0x03,0x82,0x0D,0x0A,0x12,0x14,0x24,0x28,0x48,0x50,0x98,0xA3,0x12,0x24,0x24,0x48,0x48,0x90,0x91,0x20,0xA2,0x81,0x83,0x03,0x06,0x06,0x0C,0x0C,0x18, // 'W'
+	0x41,0x42,0x22,0x24,0x24,0x14,0x18,0x08,0x18,0x18,0x24,0x24,0x26,0x42,0x42,0x81, // 'X'
+	0x83,0x8D,0x12,0x24,0x45,0x0A,0x14,0x10,0x20,0x40,0x81,0x02,0x04,0x08, // 'Y'
+	0xF8,0x20,0x86,0x10,0x43,0x08,0x21,0x84,0x10,0xC2,0x08,0x3F, // 'Z'
+	0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xF0, // '['
+	0x81,0x01,0x02,0x04,0x04,0x08,0x10,0x10,0x20,0x60,0x40,0x80,0x81,0x02, // '\'
+	0xF1,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0xF0, // ']'
+	0x08,0x0A,0x05,0x04,0x82,0x21,0x11,0x04,0x82, // '^'
+	0xFF,0x80, // '_'
+	0x99,0x10, // '`'
+	0x78,0x20,0x81,0x04,0xFC,0x61,0x8E,0x38,0xDD, // 'a'
+	0x81,0x02,0x04,0x08,0x17,0x31,0x43,0x83,0x06,0x0C,0x18,0x30,0x61,0x62,0xB8, // 'b'
+	0x3D,0x04,0x20,0x82,0x08,0x20,0x81,0x04,0x0E, // 'c'
+	0x02,0x04,0x08,0x10,0x27,0x51,0xA1,0x83,0x06,0x0C,0x18,0x30,0x70,0xA3,0x3A, // 'd'
+	0x38,0x89,0x1C,0x18,0x3F,0xE0,0x40,0x80,0x81,0x89,0xE0, // 'e'
+	0x19,0x08,0x42,0x7C,0x84,0x21,0x08,0x42,0x10,0x84,0x20, // 'f'
+	0x3F,0x24,0x42,0x42,0x42,0x42,0x24,0x38,0x20,0x20,0x3E,0x43,0x41,0x81,0x81,0x42,0x3C, // 'g'
+	0x82,0x08,0x20,0x82,0xE4,0xA2,0x86,0x18,0x61,0x86,0x18,0x61,0x84, // 'h'
+	0xF0,0xFF,0xFF,0xFF, // 'i'
+	0x6C,0x06,0xDB,0x6D,0xB6,0xDB,0x6D,0x2C, // 'j'
+	0x82,0x08,0x20,0x82,0x28,0xA4,0xA2,0x8E,0x24,0x92,0x48,0xA2,0x84, // 'k'
+	0xFF,0xFF,0x80, // 'l'
+	0xF3,0xA3,0x18,0xC6,0x11,0x84,0x61,0x18,0x46,0x11,0x84,0x61,0x18,0x46,0x11, // 'm'
+	0x39,0x28,0xA1,0x86,0x18,0x61,0x86,0x18,0x61, // 'n'
+	0x38,0x8B,0x1C,0x18,0x30,0x60,0xC1,0x83,0x8D,0x11,0xC0, // 'o'
+	0xB9,0x8A,0x1C,0x18,0x30,0x60,0xC1,0x83,0x0B,0x15,0xC8,0x10,0x20,0x40,0x80, // 'p'
+	0x3A,0x8D,0x0C,0x18,0x30,0x60,0xC1,0x83,0x85,0x19,0xD0,0x20,0x40,0x81,0x02, // 'q'
+	0xBC,0x88,0x88,0x88,0x88,0x88, // 'r'
+	0x7C,0x21,0x08,0x30,0x41,0x08,0x43,0xE0, // 's'
+	0x21,0x09,0xF2,0x10,0x84,0x21,0x08,0x42,0x10,0xE0, // 't'
+	0x85,0x0A,0x14,0x28,0x50,0xA1,0x43,0x86,0x8D,0x29,0x90, // 'u'
+	0x83,0x05,0x12,0x24,0x48,0x8A,0x14,0x28,0x50,0xC0,0x80, // 'v'
+	0x86,0x14,0x62,0x46,0x24,0x62,0x4A,0x24,0x92,0x29,0x42,0x94,0x29,0x42,0x94,0x30,0xC1,0x08, // 'w'
+	0x44,0x88,0xA1,0x42,0x82,0x04,0x14,0x28,0x89,0x12,0x20, // 'x'
+	0x83,0x05,0x12,0x24,0x48,0x8A,0x14,0x28,0x50,0x40,0x81,0x02,0x08,0x10,0xC0, // 'y'
+	0xF1,0x12,0x22,0x44,0x48,0x8F, // 'z'
+	0x0C,0x43,0x08,0x20,0x82,0x08,0x23,0x02,0x08,0x20,0x82,0x08,0x10,0x40,0xC0, // '{'
+	0xFF,0xFF,0xFC, // '|'
+	0xC0,0x83,0x04,0x10,0x41,0x04,0x10,0x31,0x04,0x10,0x41,0x04,0x20,0x8C,0x00 // '}'
+};
+const GFXglyph Open_Sans_Condensed_Light_22Glyphs[] PROGMEM = {
+// bitmapOffset, width, height, xAdvance, xOffset, yOffset
+	  {     0,   1,   1,   5,    0,    0 }, // ' '
+	  {     1,   1,  16,   6,    2,  -16 }, // '!'
+	  {     3,   5,   6,   8,    1,  -16 }, // '"'
+	  {     7,   9,  16,  10,    0,  -16 }, // '#'
+	  {    25,   7,  19,  10,    1,  -17 }, // '$'
+	  {    42,  11,  16,  14,    1,  -16 }, // '%'
+	  {    64,   8,  16,  10,    1,  -16 }, // '&'
+	  {    80,   2,   6,   5,    1,  -16 }, // '''
+	  {    82,   4,  19,   7,    1,  -16 }, // '('
+	  {    92,   4,  19,   7,    1,  -16 }, // ')'
+	  {   102,   6,   6,   9,    1,  -17 }, // '*'
+	  {   107,   7,  11,  10,    1,  -14 }, // '+'
+	  {   117,   3,   5,   6,    1,   -2 }, // ','
+	  {   119,   4,   1,   7,    1,   -6 }, // '-'
+	  {   120,   1,   2,   6,    2,   -2 }, // '.'
+	  {   121,   7,  16,   9,    1,  -16 }, // '/'
+	  {   135,   7,  16,  10,    1,  -16 }, // '0'
+	  {   149,   4,  16,  10,    2,  -16 }, // '1'
+	  {   157,   7,  16,  10,    1,  -16 }, // '2'
+	  {   171,   7,  16,  10,    1,  -16 }, // '3'
+	  {   185,   9,  16,  10,    0,  -16 }, // '4'
+	  {   203,   7,  16,  10,    1,  -16 }, // '5'
+	  {   217,   7,  16,  10,    1,  -16 }, // '6'
+	  {   231,   7,  16,  10,    1,  -16 }, // '7'
+	  {   245,   7,  16,  10,    1,  -16 }, // '8'
+	  {   259,   7,  16,  10,    1,  -16 }, // '9'
+	  {   273,   1,  12,   6,    2,  -12 }, // ':'
+	  {   275,   3,  15,   6,    1,  -12 }, // ';'
+	  {   281,   7,   9,  10,    1,  -13 }, // '<'
+	  {   289,   7,   6,  10,    1,  -11 }, // '='
+	  {   295,   7,   9,  10,    1,  -13 }, // '>'
+	  {   303,   6,  16,   7,    0,  -16 }, // '?'
+	  {   315,  11,  18,  14,    1,  -16 }, // '@'
+	  {   340,   9,  16,  10,    0,  -16 }, // 'A'
+	  {   358,   7,  16,  11,    2,  -16 }, // 'B'
+	  {   372,   7,  16,  10,    1,  -16 }, // 'C'
+	  {   386,   8,  16,  12,    2,  -16 }, // 'D'
+	  {   402,   5,  16,   9,    2,  -16 }, // 'E'
+	  {   412,   6,  16,   9,    2,  -16 }, // 'F'
+	  {   424,  10,  16,  13,    1,  -16 }, // 'G'
+	  {   444,   7,  16,  12,    2,  -16 }, // 'H'
+	  {   458,   1,  16,   5,    2,  -16 }, // 'I'
+	  {   460,   4,  20,   5,   -1,  -16 }, // 'J'
+	  {   470,   7,  16,  10,    2,  -16 }, // 'K'
+	  {   484,   6,  16,   9,    2,  -16 }, // 'L'
+	  {   496,  11,  16,  16,    2,  -16 }, // 'M'
+	  {   518,   8,  16,  13,    2,  -16 }, // 'N'
+	  {   534,   9,  16,  12,    1,  -16 }, // 'O'
+	  {   552,   6,  16,  10,    2,  -16 }, // 'P'
+	  {   564,   9,  20,  12,    1,  -16 }, // 'Q'
+	  {   587,   7,  16,  10,    2,  -16 }, // 'R'
+	  {   601,   7,  16,  10,    1,  -16 }, // 'S'
+	  {   615,   8,  16,   9,    0,  -16 }, // 'T'
+	  {   631,   7,  16,  12,    2,  -16 }, // 'U'
+	  {   645,   9,  16,  10,    0,  -16 }, // 'V'
+	  {   663,  15,  16,  16,    0,  -16 }, // 'W'
+	  {   693,   8,  16,   9,    0,  -16 }, // 'X'
+	  {   709,   7,  16,   8,    0,  -16 }, // 'Y'
+	  {   723,   6,  16,   8,    1,  -16 }, // 'Z'
+	  {   735,   4,  19,   8,    2,  -16 }, // '['
+	  {   745,   7,  16,   9,    1,  -16 }, // '\'
+	  {   759,   4,  19,   8,    1,  -16 }, // ']'
+	  {   769,   9,   8,  10,    0,  -16 }, // '^'
+	  {   778,   9,   1,  10,    0,    2 }, // '_'
+	  {   780,   3,   4,  13,    5,  -17 }, // '`'
+	  {   782,   6,  12,   9,    1,  -12 }, // 'a'
+	  {   791,   7,  17,  11,    2,  -17 }, // 'b'
+	  {   806,   6,  12,   8,    1,  -12 }, // 'c'
+	  {   815,   7,  17,  11,    1,  -17 }, // 'd'
+	  {   830,   7,  12,  10,    1,  -12 }, // 'e'
+	  {   841,   5,  17,   6,    0,  -17 }, // 'f'
+	  {   852,   8,  17,   9,    0,  -12 }, // 'g'
+	  {   869,   6,  17,  10,    2,  -17 }, // 'h'
+	  {   882,   2,  16,   5,    1,  -16 }, // 'i'
+	  {   886,   3,  21,   5,    0,  -16 }, // 'j'
+	  {   894,   6,  17,   9,    2,  -17 }, // 'k'
+	  {   907,   1,  17,   5,    2,  -17 }, // 'l'
+	  {   910,  10,  12,  15,    2,  -12 }, // 'm'
+	  {   925,   6,  12,  10,    2,  -12 }, // 'n'
+	  {   934,   7,  12,  10,    1,  -12 }, // 'o'
+	  {   945,   7,  17,  11,    2,  -12 }, // 'p'
+	  {   960,   7,  17,  11,    1,  -12 }, // 'q'
+	  {   975,   4,  12,   7,    2,  -12 }, // 'r'
+	  {   981,   5,  12,   8,    1,  -12 }, // 's'
+	  {   989,   5,  15,   6,    0,  -15 }, // 't'
+	  {   999,   7,  12,  10,    1,  -12 }, // 'u'
+	  {  1010,   7,  12,   8,    0,  -12 }, // 'v'
+	  {  1021,  12,  12,  13,    0,  -12 }, // 'w'
+	  {  1039,   7,  12,   8,    0,  -12 }, // 'x'
+	  {  1050,   7,  17,   8,    0,  -12 }, // 'y'
+	  {  1065,   4,  12,   7,    1,  -12 }, // 'z'
+	  {  1071,   6,  19,   9,    1,  -16 }, // '{'
+	  {  1086,   1,  22,  10,    4,  -17 }, // '|'
+	  {  1089,   6,  19,   9,    1,  -16 } // '}'
+};
+const GFXfont Open_Sans_Condensed_Light_22 PROGMEM = {
+(uint8_t  *)Open_Sans_Condensed_Light_22Bitmaps,(GFXglyph *)Open_Sans_Condensed_Light_22Glyphs,0x20, 0x7E, 31};
+
+// Created by http://oleddisplay.squix.ch/ Consider a donation
+// In case of problems make sure that you are using the font file with the correct version!
+const uint8_t Roboto_Condensed_19Bitmaps[] PROGMEM = {
+
+	// Bitmap Data:
+	0x00, // ' '
+	0xFF,0xCC, // '!'
+	0xDD,0x99, // '"'
+	0x09,0x0D,0x84,0xCF,0xF1,0x20,0x90,0xC8,0x6C,0xFF,0x12,0x09,0x04,0x82,0x43,0x20, // '#'
+	0x10,0x20,0xF3,0x2C,0x78,0xF0,0x20,0x70,0x38,0x18,0x38,0x38,0xF1,0xBE,0x10,0x20, // '$'
+	0x70,0x26,0x08,0x92,0x24,0x9A,0x1D,0x80,0x40,0x30,0x0B,0x86,0x91,0x64,0xD9,0x22,0x40,0xE0, // '%'
+	0x38,0x32,0x11,0x08,0x86,0xC3,0xC0,0xC0,0xF0,0xD9,0x66,0xA1,0xD8,0xCC,0x71,0xCC, // '&'
+	0xF0, // '''
+	0x11,0x26,0x64,0x4C,0xCC,0xCC,0x44,0x66,0x21,0x10, // '('
+	0x82,0x08,0x43,0x08,0x43,0x18,0xC6,0x31,0x08,0xC6,0x22,0x20, // ')'
+	0x18,0x18,0x99,0xFF,0x18,0x3C,0x26,0x64, // '*'
+	0x18,0x18,0x18,0x18,0xFF,0x18,0x18,0x18,0x18, // '+'
+	0x6D,0xAC, // ','
+	0xF0, // '-'
+	0xF0, // '.'
+	0x04,0x10,0xC2,0x08,0x61,0x04,0x30,0x82,0x18,0x41,0x0C,0x00, // '/'
+	0x3C,0xCB,0x1E,0x1C,0x38,0x70,0xE1,0xC3,0x87,0x0A,0x36,0x47,0x80, // '0'
+	0x09,0xF6,0x31,0x8C,0x63,0x18,0xC6,0x31,0x8C, // '1'
+	0x3C,0x46,0xC6,0xC6,0x06,0x06,0x04,0x0C,0x18,0x18,0x30,0x60,0x40,0xFF, // '2'
+	0x79,0x8B,0x18,0x30,0x61,0x8E,0x02,0x06,0x0C,0x1C,0x3C,0x4F,0x00, // '3'
+	0x06,0x03,0x03,0x83,0xC1,0x61,0xB0,0x98,0xCC,0x46,0x7F,0xC1,0x80,0xC0,0x60,0x30, // '4'
+	0x7E,0x60,0x60,0x60,0x40,0x7C,0x66,0x02,0x03,0x03,0xC3,0x42,0x66,0x3C, // '5'
+	0x1C,0x61,0x82,0x0C,0x1F,0xB9,0xE3,0xC3,0x87,0x0E,0x36,0x47,0x00, // '6'
+	0xFF,0x02,0x06,0x06,0x04,0x0C,0x0C,0x18,0x18,0x10,0x30,0x30,0x20,0x60, // '7'
+	0x38,0x8B,0x1E,0x3C,0x68,0x8E,0x22,0xC7,0x8F,0x1E,0x34,0x47,0x00, // '8'
+	0x38,0x9B,0x14,0x38,0x70,0xF1,0xE7,0x7E,0x0C,0x10,0x20,0x8E,0x00, // '9'
+	0xF0,0x00,0xF0, // ':'
+	0x6C,0x00,0x00,0x6D,0xAC, // ';'
+	0x04,0x77,0x30,0xC1,0xC1,0xC1, // '<'
+	0xFE,0x00,0x00,0x0F,0xE0, // '='
+	0x81,0xC0,0xE0,0x70,0xE7,0x38,0x40, // '>'
+	0x7B,0x38,0x41,0x0C,0x31,0x8C,0x30,0xC0,0x00,0x30,0xC0, // '?'
+	0x07,0x80,0xC3,0x0C,0x0C,0x40,0x24,0x39,0x22,0x45,0x32,0x39,0x11,0xC8,0x8E,0x44,0x72,0x27,0x93,0x24,0xEE,0x20,0x00,0x80,0x06,0x10,0x0F,0x80, // '@'
+	0x04,0x01,0xC0,0x28,0x05,0x01,0xB0,0x36,0x04,0x41,0x8C,0x31,0x87,0xF0,0x83,0x30,0x66,0x0D,0x80,0xC0, // 'A'
+	0xFE,0xC3,0xC3,0xC3,0xC3,0xC2,0xFC,0xC3,0xC3,0xC1,0xC1,0xC3,0xC3,0xFE, // 'B'
+	0x1E,0x11,0x98,0x68,0x3C,0x06,0x03,0x01,0x80,0xC0,0x60,0x10,0x6C,0x32,0x30,0xF0, // 'C'
+	0xF8,0x84,0x86,0x82,0x83,0x83,0x83,0x83,0x83,0x83,0x82,0x86,0x84,0xF8, // 'D'
+	0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0xFE,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xFF, // 'E'
+	0xFF,0x83,0x06,0x0C,0x18,0x3F,0xE0,0xC1,0x83,0x06,0x0C,0x18,0x00, // 'F'
+	0x3E,0x31,0x90,0x78,0x3C,0x06,0x03,0x01,0x8F,0xC1,0xE0,0xF0,0x68,0x36,0x30,0xF0, // 'G'
+	0x81,0x81,0x81,0x81,0x81,0x81,0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0x81, // 'H'
+	0xFF,0xFC, // 'I'
+	0x06,0x0C,0x18,0x30,0x60,0xC1,0x83,0x06,0x0E,0x1C,0x3C,0xCF,0x00, // 'J'
+	0xC3,0xE1,0xB1,0x99,0x8C,0xC6,0xC3,0xE1,0xF0,0xEC,0x66,0x31,0x98,0x6C,0x36,0x0C, // 'K'
+	0xC1,0x83,0x06,0x0C,0x18,0x30,0x60,0xC1,0x83,0x06,0x0C,0x1F,0xC0, // 'L'
+	0xE0,0x3E,0x07,0xE0,0x7F,0x07,0xF0,0xFD,0x0F,0xD8,0xBD,0x9B,0xC9,0xBC,0xD3,0xCF,0x3C,0x73,0xC6,0x3C,0x63, // 'M'
+	0xC1,0xC1,0xE1,0xE1,0xB1,0xB1,0x99,0x99,0x8D,0x8D,0x87,0x87,0x83,0x83, // 'N'
+	0x3E,0x31,0x90,0x58,0x3C,0x1E,0x0F,0x07,0x83,0xC1,0xE0,0xF0,0x68,0x26,0x31,0xF0, // 'O'
+	0xFC,0x86,0x83,0x83,0x83,0x83,0x86,0xFC,0x80,0x80,0x80,0x80,0x80,0x80, // 'P'
+	0x3E,0x31,0xB0,0x58,0x3C,0x1E,0x0F,0x07,0x83,0xC1,0xE0,0xF0,0x78,0x26,0x31,0xF8,0x0E,0x03, // 'Q'
+	0xFC,0x61,0xB0,0xD8,0x6C,0x36,0x1B,0x09,0xF8,0xC4,0x63,0x31,0x98,0x6C,0x36,0x0C, // 'R'
+	0x3C,0x63,0xC3,0xC3,0xC0,0x60,0x38,0x1E,0x07,0x03,0xC3,0xC3,0xC3,0x3C, // 'S'
+	0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, // 'T'
+	0xC1,0xE0,0xF0,0x78,0x3C,0x1E,0x0F,0x07,0x83,0xC1,0xE0,0xF0,0x68,0x26,0x31,0xF0, // 'U'
+	0xC1,0xE0,0xF0,0x68,0x26,0x33,0x18,0x8C,0x44,0x36,0x1B,0x05,0x03,0x81,0xC0,0x40, // 'V'
+	0x82,0x1E,0x30,0xF1,0xC5,0x8E,0x24,0x51,0x26,0x99,0x34,0xCD,0x36,0x68,0xA3,0x45,0x0E,0x28,0x61,0xC3,0x0E,0x18,0x20, // 'W'
+	0xC1,0xE1,0x98,0xCC,0xC3,0x60,0xE0,0x60,0x38,0x3C,0x1B,0x19,0x8C,0x6C,0x36,0x0C, // 'X'
+	0xC0,0xD8,0x66,0x18,0xCC,0x33,0x04,0x81,0xE0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x03,0x00, // 'Y'
+	0xFF,0x03,0x06,0x06,0x0C,0x0C,0x18,0x18,0x30,0x30,0x60,0x40,0xC0,0xFF, // 'Z'
+	0xFB,0x6D,0xB6,0xDB,0x6D,0xB6,0xDC, // '['
+	0xC0,0x81,0x81,0x02,0x06,0x04,0x08,0x18,0x30,0x20,0x60,0xC0,0x81,0x80, // '\'
+	0xE4,0x92,0x49,0x24,0x92,0x49,0x3C, // ']'
+	0x23,0x94,0xAD,0xEE,0x20, // '^'
+	0xFE, // '_'
+	0xCC,0x80, // '`'
+	0x3C,0x8B,0x18,0x33,0xF8,0xF1,0xE3,0xCE,0xEC, // 'a'
+	0xC1,0x83,0x06,0x0F,0xD8,0xF1,0xE1,0xC3,0x87,0x0E,0x3C,0x7F,0x80, // 'b'
+	0x3C,0x8F,0x0E,0x1C,0x18,0x30,0x61,0x46,0x78, // 'c'
+	0x06,0x0C,0x18,0x37,0xF8,0xF1,0xC3,0x87,0x0E,0x1E,0x3C,0x6F,0xC0, // 'd'
+	0x3C,0x8F,0x1E,0x1F,0xF8,0x30,0x60,0x66,0x78, // 'e'
+	0x3B,0x18,0xCF,0x31,0x8C,0x63,0x18,0xC6,0x30, // 'f'
+	0x7F,0x8F,0x1C,0x38,0x70,0xE1,0xE3,0xC6,0xFC,0x1C,0x3C,0x4F,0x00, // 'g'
+	0xC1,0x83,0x06,0x0F,0xD8,0xF1,0xE3,0xC7,0x8F,0x1E,0x3C,0x78,0xC0, // 'h'
+	0xF0,0xFF,0xFF,0xF0, // 'i'
+	0x6C,0x06,0xDB,0x6D,0xB6,0xDB,0x78, // 'j'
+	0xC0,0xC0,0xC0,0xC0,0xC6,0xCC,0xD8,0xD8,0xF0,0xF8,0xC8,0xCC,0xC6,0xC7, // 'k'
+	0xFF,0xFF,0xFF,0xF0, // 'l'
+	0xFD,0xEC,0x63,0xC6,0x3C,0x63,0xC6,0x3C,0x63,0xC6,0x3C,0x63,0xC6,0x3C,0x63, // 'm'
+	0xDD,0xCF,0x1E,0x3C,0x78,0xF1,0xE3,0xC7,0x8C, // 'n'
+	0x3C,0x66,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0x66,0x3C, // 'o'
+	0xFD,0x8F,0x1E,0x1C,0x38,0x70,0xE3,0xC7,0xFB,0x06,0x0C,0x18,0x00, // 'p'
+	0x3A,0xCF,0x0E,0x1C,0x38,0x70,0xE1,0x66,0x74,0x08,0x10,0x20,0x40, // 'q'
+	0xFE,0xCC,0xCC,0xCC,0xCC, // 'r'
+	0x3C,0x8B,0x1A,0x07,0x03,0x81,0xE3,0x46,0x78, // 's'
+	0x31,0xBE,0x63,0x18,0xC6,0x31,0x8C,0x30, // 't'
+	0xC7,0x8F,0x1E,0x3C,0x78,0xF1,0xE3,0xC6,0xFC, // 'u'
+	0xC3,0x42,0x66,0x66,0x24,0x24,0x3C,0x18,0x18,0x18, // 'v'
+	0xC6,0x34,0x62,0x46,0x26,0xF6,0x6F,0x62,0x94,0x29,0x43,0x9C,0x30,0xC1,0x08, // 'w'
+	0x63,0x66,0x34,0x3C,0x18,0x18,0x3C,0x34,0x66,0xE3, // 'x'
+	0xC3,0x66,0x66,0x66,0x24,0x3C,0x3C,0x18,0x18,0x18,0x18,0x10,0x30,0x60, // 'y'
+	0xFC,0x18,0x20,0xC3,0x06,0x18,0x30,0xC1,0xFC, // 'z'
+	0x11,0xC8,0xC6,0x31,0x8C,0xC3,0x18,0xC6,0x31,0x84,0x30,0xC0, // '{'
+	0xFF,0xFF,0x80, // '|'
+	0x47,0x08,0x63,0x18,0xC6,0x19,0x8C,0x63,0x18,0xC4,0x66,0x00 // '}'
+};
+const GFXglyph Roboto_Condensed_19Glyphs[] PROGMEM = {
+// bitmapOffset, width, height, xAdvance, xOffset, yOffset
+	  {     0,   1,   1,   5,    0,    0 }, // ' '
+	  {     1,   1,  14,   6,    2,  -14 }, // '!'
+	  {     3,   4,   4,   7,    1,  -14 }, // '"'
+	  {     5,   9,  14,  11,    1,  -14 }, // '#'
+	  {    21,   7,  18,  10,    1,  -16 }, // '$'
+	  {    37,  10,  14,  13,    1,  -14 }, // '%'
+	  {    55,   9,  14,  11,    1,  -14 }, // '&'
+	  {    71,   1,   4,   4,    1,  -14 }, // '''
+	  {    72,   4,  19,   7,    1,  -15 }, // '('
+	  {    82,   5,  19,   7,    0,  -15 }, // ')'
+	  {    94,   8,   8,   9,    0,  -14 }, // '*'
+	  {   102,   8,   9,  10,    1,  -11 }, // '+'
+	  {   111,   3,   5,   5,    0,   -2 }, // ','
+	  {   113,   4,   1,   6,    0,   -6 }, // '-'
+	  {   114,   2,   2,   6,    1,   -2 }, // '.'
+	  {   115,   6,  15,   8,    0,  -14 }, // '/'
+	  {   127,   7,  14,  10,    1,  -14 }, // '0'
+	  {   140,   5,  14,  10,    1,  -14 }, // '1'
+	  {   149,   8,  14,  10,    1,  -14 }, // '2'
+	  {   163,   7,  14,  10,    1,  -14 }, // '3'
+	  {   176,   9,  14,  10,    0,  -14 }, // '4'
+	  {   192,   8,  14,  10,    1,  -14 }, // '5'
+	  {   206,   7,  14,  10,    1,  -14 }, // '6'
+	  {   219,   8,  14,  10,    1,  -14 }, // '7'
+	  {   233,   7,  14,  10,    1,  -14 }, // '8'
+	  {   246,   7,  14,  10,    1,  -14 }, // '9'
+	  {   259,   2,  10,   5,    1,  -10 }, // ':'
+	  {   262,   3,  13,   5,    0,  -10 }, // ';'
+	  {   267,   6,   8,   9,    1,  -10 }, // '<'
+	  {   273,   7,   5,  10,    1,   -9 }, // '='
+	  {   278,   7,   8,  10,    1,  -10 }, // '>'
+	  {   285,   6,  14,   9,    1,  -14 }, // '?'
+	  {   296,  13,  17,  16,    1,  -13 }, // '@'
+	  {   324,  11,  14,  12,    0,  -14 }, // 'A'
+	  {   344,   8,  14,  11,    1,  -14 }, // 'B'
+	  {   358,   9,  14,  12,    1,  -14 }, // 'C'
+	  {   374,   8,  14,  12,    2,  -14 }, // 'D'
+	  {   388,   8,  14,  10,    1,  -14 }, // 'E'
+	  {   402,   7,  14,  10,    1,  -14 }, // 'F'
+	  {   415,   9,  14,  12,    1,  -14 }, // 'G'
+	  {   431,   8,  14,  13,    2,  -14 }, // 'H'
+	  {   445,   1,  14,   6,    2,  -14 }, // 'I'
+	  {   447,   7,  14,  10,    1,  -14 }, // 'J'
+	  {   460,   9,  14,  11,    1,  -14 }, // 'K'
+	  {   476,   7,  14,  10,    1,  -14 }, // 'L'
+	  {   489,  12,  14,  15,    1,  -14 }, // 'M'
+	  {   510,   8,  14,  13,    2,  -14 }, // 'N'
+	  {   524,   9,  14,  12,    1,  -14 }, // 'O'
+	  {   540,   8,  14,  12,    2,  -14 }, // 'P'
+	  {   554,   9,  16,  12,    1,  -14 }, // 'Q'
+	  {   572,   9,  14,  11,    1,  -14 }, // 'R'
+	  {   588,   8,  14,  11,    1,  -14 }, // 'S'
+	  {   602,   8,  14,  11,    1,  -14 }, // 'T'
+	  {   616,   9,  14,  12,    1,  -14 }, // 'U'
+	  {   632,   9,  14,  12,    1,  -14 }, // 'V'
+	  {   648,  13,  14,  15,    1,  -14 }, // 'W'
+	  {   671,   9,  14,  11,    1,  -14 }, // 'X'
+	  {   687,  10,  14,  11,    0,  -14 }, // 'Y'
+	  {   705,   8,  14,  11,    1,  -14 }, // 'Z'
+	  {   719,   3,  18,   6,    1,  -15 }, // '['
+	  {   726,   7,  15,   8,    0,  -14 }, // '\'
+	  {   740,   3,  18,   6,    0,  -15 }, // ']'
+	  {   747,   5,   7,   8,    1,  -14 }, // '^'
+	  {   752,   7,   1,   9,    0,    0 }, // '_'
+	  {   753,   3,   3,   7,    1,  -15 }, // '`'
+	  {   755,   7,  10,  10,    1,  -10 }, // 'a'
+	  {   764,   7,  14,  10,    1,  -14 }, // 'b'
+	  {   777,   7,  10,  10,    1,  -10 }, // 'c'
+	  {   786,   7,  14,  10,    1,  -14 }, // 'd'
+	  {   799,   7,  10,  10,    1,  -10 }, // 'e'
+	  {   808,   5,  14,   7,    1,  -14 }, // 'f'
+	  {   817,   7,  14,  10,    1,  -10 }, // 'g'
+	  {   830,   7,  14,  10,    1,  -14 }, // 'h'
+	  {   843,   2,  14,   5,    1,  -14 }, // 'i'
+	  {   847,   3,  18,   5,    0,  -14 }, // 'j'
+	  {   854,   8,  14,  10,    1,  -14 }, // 'k'
+	  {   868,   2,  14,   5,    1,  -14 }, // 'l'
+	  {   872,  12,  10,  15,    1,  -10 }, // 'm'
+	  {   887,   7,  10,  10,    1,  -10 }, // 'n'
+	  {   896,   8,  10,  11,    1,  -10 }, // 'o'
+	  {   906,   7,  14,  10,    1,  -10 }, // 'p'
+	  {   919,   7,  14,  11,    1,  -10 }, // 'q'
+	  {   932,   4,  10,   7,    1,  -10 }, // 'r'
+	  {   937,   7,  10,  10,    1,  -10 }, // 's'
+	  {   946,   5,  12,   7,    0,  -12 }, // 't'
+	  {   954,   7,  10,  10,    1,  -10 }, // 'u'
+	  {   963,   8,  10,   9,    0,  -10 }, // 'v'
+	  {   973,  12,  10,  13,    0,  -10 }, // 'w'
+	  {   988,   8,  10,   9,    0,  -10 }, // 'x'
+	  {   998,   8,  14,   9,    0,  -10 }, // 'y'
+	  {  1012,   7,  10,   9,    1,  -10 }, // 'z'
+	  {  1021,   5,  18,   7,    1,  -15 }, // '{'
+	  {  1033,   1,  17,   6,    2,  -14 }, // '|'
+	  {  1036,   5,  18,   7,    0,  -15 } // '}'
+};
+const GFXfont Roboto_Condensed_19 PROGMEM = {
+(uint8_t  *)Roboto_Condensed_19Bitmaps,(GFXglyph *)Roboto_Condensed_19Glyphs,0x20, 0x7E, 23};
+
+
+// Created by http://oleddisplay.squix.ch/ Consider a donation
+// In case of problems make sure that you are using the font file with the correct version!
+const uint8_t URW_Palladio_L_Roman_18Bitmaps[] PROGMEM = {
+
+	// Bitmap Data:
+	0x00, // ' '
+	0x7F,0x55,0x0F, // '!'
+	0x9C,0xA5,0x20, // '"'
+	0x13,0x09,0x04,0x82,0x47,0xF9,0x10,0x89,0xFE,0x24,0x12,0x09,0x08,0x80, // '#'
+	0x10,0xFA,0x54,0x89,0x1A,0x1F,0x0F,0x12,0x26,0x4C,0xA7,0x82,0x04,0x00, // '$'
+	0x70,0x44,0x44,0x22,0x21,0x12,0x08,0x90,0x39,0x00,0x09,0xC0,0x99,0x04,0x88,0x44,0x42,0x22,0x21,0x31,0x07,0x00, // '%'
+	0x1C,0x02,0x40,0x24,0x02,0x80,0x28,0x03,0x3F,0x50,0x89,0x88,0x8C,0x88,0x70,0xC3,0x07,0xCE, // '&'
+	0xEA, // '''
+	0x12,0x44,0x88,0x88,0x88,0x88,0x44,0x42,0x10, // '('
+	0x84,0x22,0x21,0x11,0x11,0x11,0x22,0x44,0x80, // ')'
+	0x04,0xB8,0x7E,0xD0,0x40, // '*'
+	0x08,0x04,0x02,0x01,0x0F,0xF8,0x40,0x20,0x10,0x08,0x00, // '+'
+	0x32,0x64,0x80, // ','
+	0x78, // '-'
+	0xF0, // '.'
+	0x02,0x08,0x10,0x20,0x81,0x04,0x08,0x20,0x40,0x82,0x04,0x10,0x20,0x00, // '/'
+	0x38,0x8A,0x1C,0x18,0x30,0x60,0xC1,0x83,0x07,0x12,0x23,0x80, // '0'
+	0x13,0xC1,0x04,0x10,0x41,0x04,0x10,0x41,0x1F, // '1'
+	0x3C,0x46,0x82,0x02,0x02,0x04,0x04,0x08,0x10,0x20,0x43,0xFF, // '2'
+	0x3C,0x8D,0x08,0x10,0x43,0x81,0x81,0x03,0x05,0x13,0xC0, // '3'
+	0x04,0x0C,0x1C,0x14,0x24,0x24,0x44,0x44,0xFF,0x04,0x04,0x1F, // '4'
+	0x7E,0x81,0x02,0x0B,0xC8,0xC0,0x81,0x03,0x0A,0x13,0xC0, // '5'
+	0x04,0x30,0x82,0x04,0x17,0xB1,0xC1,0x83,0x05,0x11,0xC0, // '6'
+	0xFF,0x82,0x86,0x04,0x08,0x08,0x10,0x10,0x20,0x60,0x40,0xC0, // '7'
+	0x3C,0x8E,0x0C,0x1C,0x4F,0x0F,0x23,0x83,0x06,0x0E,0x27,0x80, // '8'
+	0x3C,0x42,0x81,0x81,0x81,0x81,0x43,0x3D,0x02,0x02,0x04,0x08,0x70, // '9'
+	0xF0,0x0F, // ':'
+	0x50,0x05,0xA8, // ';'
+	0x01,0x83,0x06,0x0C,0x0C,0x01,0x80,0x30,0x06,0x00,0x80, // '<'
+	0xFF,0x80,0x00,0x00,0x0F,0xF8, // '='
+	0xC0,0x18,0x03,0x00,0x60,0x18,0x30,0x60,0xC0,0x80,0x00, // '>'
+	0x7A,0x30,0x41,0x08,0x43,0x08,0x00,0x02,0x08, // '?'
+	0x0F,0xC1,0x83,0x18,0x04,0x85,0x98,0xDC,0xCC,0x46,0x46,0x32,0x32,0x53,0xB3,0x66,0xCC,0x0C,0x1F,0x80, // '@'
+	0x02,0x00,0x18,0x01,0x40,0x0B,0x00,0x88,0x04,0x60,0x43,0x03,0xFC,0x10,0x61,0x01,0x88,0x0D,0xE0,0xF0, // 'A'
+	0xFE,0x11,0x88,0x44,0x22,0x21,0xF0,0x86,0x41,0x20,0x90,0x48,0x4F,0xC0, // 'B'
+	0x0F,0x86,0x09,0x01,0x20,0x08,0x01,0x00,0x20,0x04,0x00,0xC0,0x08,0x00,0xC1,0x07,0xC0, // 'C'
+	0xFF,0x82,0x06,0x20,0x22,0x01,0x20,0x12,0x01,0x20,0x12,0x01,0x20,0x22,0x02,0x20,0xC7,0xF0, // 'D'
+	0xFF,0x90,0x48,0x24,0x02,0x11,0xF8,0x84,0x42,0x20,0x10,0x48,0x3F,0xF0, // 'E'
+	0xFF,0x90,0x88,0x04,0x02,0x11,0xF8,0x84,0x42,0x20,0x10,0x08,0x1F,0x00, // 'F'
+	0x0F,0xE1,0x80,0x90,0x00,0x80,0x08,0x00,0x40,0x02,0x00,0x10,0x1F,0xC0,0x13,0x00,0x8E,0x04,0x1F,0xC0, // 'G'
+	0x70,0x38,0x80,0x42,0x01,0x08,0x04,0x20,0x10,0xFF,0xC2,0x01,0x08,0x04,0x20,0x10,0x80,0x42,0x01,0x3E,0x1F, // 'H'
+	0xF9,0x08,0x42,0x10,0x84,0x21,0x09,0xF0, // 'I'
+	0xF9,0x08,0x42,0x10,0x84,0x21,0x08,0x42,0x11,0x10, // 'J'
+	0xF8,0xE2,0x08,0x21,0x02,0x20,0x24,0x03,0x80,0x2C,0x02,0x60,0x23,0x02,0x18,0x20,0xEF,0x87, // 'K'
+	0xF8,0x08,0x02,0x00,0x80,0x20,0x08,0x02,0x00,0x80,0x20,0x08,0x22,0x09,0xFE, // 'L'
+	0xF0,0x07,0x38,0x0C,0x38,0x0C,0x2C,0x14,0x2C,0x14,0x26,0x24,0x26,0x24,0x23,0x44,0x23,0x44,0x21,0x84,0x21,0x84,0xF9,0x0F, // 'M'
+	0xF0,0x3E,0x70,0x10,0xF0,0x21,0x70,0x42,0x60,0x84,0x61,0x08,0x62,0x10,0x64,0x20,0x68,0x40,0xF0,0x80,0xE7,0xC0,0xC0, // 'N'
+	0x0F,0xC1,0x83,0x10,0x05,0x00,0x38,0x00,0xC0,0x06,0x00,0x30,0x01,0xC0,0x13,0x00,0x8C,0x18,0x1F,0x00, // 'O'
+	0xFF,0x88,0x32,0x04,0x81,0x20,0x8B,0xC2,0x00,0x80,0x20,0x08,0x02,0x03,0xE0, // 'P'
+	0x0F,0xC1,0x83,0x10,0x05,0x00,0x38,0x00,0xC0,0x06,0x00,0x30,0x01,0xC0,0x12,0x00,0x8C,0x08,0x3F,0x80,0x70,0x04,0xFC,0x00,0xC0, // 'Q'
+	0xFF,0x04,0x30,0x82,0x10,0x42,0x10,0x4C,0x0B,0x81,0x30,0x23,0x04,0x30,0x87,0x7C,0x70, // 'R'
+	0x3E,0x42,0x82,0x80,0x80,0x78,0x06,0x01,0x01,0x81,0x82,0x7C, // 'S'
+	0xFF,0xC4,0x42,0x01,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x07,0xC0, // 'T'
+	0xF8,0x7C,0x80,0x42,0x01,0x08,0x04,0x20,0x10,0x80,0x42,0x01,0x08,0x04,0x20,0x10,0x80,0x41,0x06,0x03,0xF0, // 'U'
+	0xF8,0x76,0x02,0x30,0x23,0x04,0x18,0x41,0x84,0x08,0x80,0xC8,0x05,0x00,0x70,0x06,0x00,0x20, // 'V'
+	0xF8,0x43,0xB0,0x60,0x88,0x30,0x46,0x2C,0x23,0x16,0x21,0x89,0x10,0x48,0xC8,0x34,0x68,0x1C,0x14,0x0E,0x0E,0x02,0x02,0x01,0x01,0x00, // 'W'
+	0x70,0x66,0x08,0x62,0x0C,0x80,0xD0,0x0C,0x01,0x80,0x58,0x11,0x82,0x30,0x83,0x20,0x30, // 'X'
+	0xE0,0x44,0x18,0xC2,0x08,0x80,0xA0,0x14,0x01,0x00,0x20,0x04,0x00,0x80,0x10,0x0F,0x80, // 'Y'
+	0x7F,0xE8,0x19,0x03,0x00,0xC0,0x30,0x0C,0x03,0x00,0x60,0x18,0x06,0x05,0x80,0xFF,0xF0, // 'Z'
+	0xF2,0x49,0x24,0x92,0x49,0x27, // '['
+	0x40,0x40,0x20,0x20,0x10,0x10,0x08,0x08,0x04,0x04,0x02,0x02,0x01, // '\'
+	0xE4,0x92,0x49,0x24,0x92,0x4F, // ']'
+	0x18,0x0A,0x09,0x04,0x44,0x32,0x0A,0x06, // '^'
+	0xFF,0x80, // '_'
+	0x84,0x20, // '`'
+	0x39,0x98,0x10,0xE6,0x50,0xA3,0x3B, // 'a'
+	0x00,0xC0,0x40,0x40,0x40,0x5E,0x63,0x41,0x41,0x41,0x42,0x42,0x3C, // 'b'
+	0x1D,0x98,0x20,0x82,0x04,0x0F, // 'c'
+	0x00,0x06,0x02,0x02,0x02,0x1E,0x66,0x82,0x82,0x82,0x82,0x82,0x46,0x3B, // 'd'
+	0x1C,0x62,0x43,0x43,0xFF,0x40,0x40,0x61,0x3E, // 'e'
+	0x1B,0x10,0x84,0x79,0x08,0x42,0x10,0x8E,0x00, // 'f'
+	0x1C,0x33,0xD0,0x88,0x46,0x41,0xC1,0x00,0x80,0x7F,0x20,0x60,0x30,0x1C,0x31,0xE0, // 'g'
+	0x00,0xC0,0x40,0x40,0x40,0x5C,0x66,0x42,0x42,0x42,0x42,0x42,0xE3, // 'h'
+	0x48,0x2C,0x92,0x49,0x70, // 'i'
+	0x22,0x03,0x51,0x11,0x11,0x11,0x11,0x12,0xC0, // 'j'
+	0xC0,0x40,0x40,0x40,0x43,0x44,0x48,0x50,0x70,0x58,0x4C,0x46,0xE3, // 'k'
+	0xC9,0x24,0x92,0x49,0x2E, // 'l'
+	0xDC,0xE3,0x38,0x90,0x84,0x84,0x24,0x21,0x21,0x09,0x08,0x5D,0xF3, // 'm'
+	0xDC,0x66,0x42,0x42,0x42,0x42,0x42,0xE3, // 'n'
+	0x38,0x8A,0x1C,0x18,0x30,0x70,0xA2,0x38, // 'o'
+	0xDC,0x62,0x41,0x41,0x41,0x42,0x62,0x7C,0x40,0x40,0x40,0x40,0xE0, // 'p'
+	0x1C,0x62,0x82,0x82,0x82,0x82,0x82,0x46,0x3A,0x02,0x02,0x02,0x02,0x0F, // 'q'
+	0x5E,0xD8,0x84,0x21,0x08,0xF0, // 'r'
+	0x7A,0x28,0x30,0x78,0x10,0x63,0xF0, // 's'
+	0x44,0x47,0xC4,0x44,0x44,0x70, // 't'
+	0x42,0xC6,0x42,0x42,0x42,0x42,0x42,0x46,0x3B, // 'u'
+	0x71,0x88,0x43,0x20,0xC8,0x12,0x07,0x00,0xC0,0x20, // 'v'
+	0xF1,0x1D,0x84,0x22,0x38,0x88,0xE4,0x34,0x90,0x53,0x81,0x8E,0x06,0x18,0x18,0x40, // 'w'
+	0xE1,0x19,0x0D,0x03,0x00,0x80,0xE0,0x98,0xC6,0xC3,0x80, // 'x'
+	0xF3,0xD8,0x42,0x10,0xC8,0x12,0x07,0x01,0xC0,0x30,0x08,0x02,0x01,0x00,0x40,0x60,0x00, // 'y'
+	0x7F,0x42,0x04,0x0C,0x18,0x30,0x61,0xFF, // 'z'
+	0x49,0x24,0x92,0x89,0x24,0x92, // '{'
+	0xFF,0xF8, // '|'
+	0x89,0x24,0x92,0x29,0x24,0x92 // '}'
+};
+const GFXglyph URW_Palladio_L_Roman_18Glyphs[] PROGMEM = {
+// bitmapOffset, width, height, xAdvance, xOffset, yOffset
+	  {     0,   1,   1,   6,    0,    0 }, // ' '
+	  {     1,   2,  12,   6,    2,  -12 }, // '!'
+	  {     4,   5,   4,   8,    1,  -12 }, // '"'
+	  {     7,   9,  12,  10,    0,  -12 }, // '#'
+	  {    21,   7,  15,  10,    1,  -13 }, // '$'
+	  {    35,  13,  13,  16,    1,  -13 }, // '%'
+	  {    57,  12,  12,  15,    1,  -12 }, // '&'
+	  {    75,   2,   4,   5,    1,  -12 }, // '''
+	  {    76,   4,  17,   7,    1,  -13 }, // '('
+	  {    85,   4,  17,   7,    0,  -13 }, // ')'
+	  {    94,   5,   7,   8,    1,  -13 }, // '*'
+	  {    99,   9,   9,  12,    1,   -9 }, // '+'
+	  {   110,   4,   5,   6,    0,   -2 }, // ','
+	  {   113,   6,   1,   7,    0,   -5 }, // '-'
+	  {   114,   2,   2,   6,    1,   -2 }, // '.'
+	  {   115,   7,  15,  12,    2,  -13 }, // '/'
+	  {   129,   7,  13,  10,    1,  -13 }, // '0'
+	  {   141,   6,  12,  10,    1,  -12 }, // '1'
+	  {   150,   8,  12,  10,    0,  -12 }, // '2'
+	  {   162,   7,  12,  10,    0,  -12 }, // '3'
+	  {   173,   8,  12,  10,    0,  -12 }, // '4'
+	  {   185,   7,  12,  10,    1,  -12 }, // '5'
+	  {   196,   7,  12,  10,    1,  -12 }, // '6'
+	  {   207,   8,  12,  10,    1,  -12 }, // '7'
+	  {   219,   7,  13,  10,    1,  -13 }, // '8'
+	  {   231,   8,  13,  10,    0,  -13 }, // '9'
+	  {   244,   2,   8,   6,    1,   -8 }, // ':'
+	  {   246,   2,  11,   6,    1,   -8 }, // ';'
+	  {   249,   9,   9,  12,    1,   -9 }, // '<'
+	  {   260,   9,   5,  12,    1,   -7 }, // '='
+	  {   266,   9,   9,  12,    1,   -9 }, // '>'
+	  {   277,   6,  12,   9,    0,  -12 }, // '?'
+	  {   286,  13,  12,  14,    0,  -12 }, // '@'
+	  {   306,  13,  12,  15,    0,  -12 }, // 'A'
+	  {   326,   9,  12,  12,    0,  -12 }, // 'B'
+	  {   340,  11,  12,  14,    0,  -12 }, // 'C'
+	  {   357,  12,  12,  15,    0,  -12 }, // 'D'
+	  {   375,   9,  12,  12,    0,  -12 }, // 'E'
+	  {   389,   9,  12,  11,    0,  -12 }, // 'F'
+	  {   403,  13,  12,  15,    0,  -12 }, // 'G'
+	  {   423,  14,  12,  16,    0,  -12 }, // 'H'
+	  {   444,   5,  12,   7,    0,  -12 }, // 'I'
+	  {   452,   5,  16,   7,    0,  -12 }, // 'J'
+	  {   462,  12,  12,  14,    0,  -12 }, // 'K'
+	  {   480,  10,  12,  12,    0,  -12 }, // 'L'
+	  {   495,  16,  12,  18,    0,  -12 }, // 'M'
+	  {   519,  15,  12,  16,    0,  -12 }, // 'N'
+	  {   542,  13,  12,  15,    0,  -12 }, // 'O'
+	  {   562,  10,  12,  12,    0,  -12 }, // 'P'
+	  {   577,  13,  15,  15,    0,  -12 }, // 'Q'
+	  {   602,  11,  12,  13,    0,  -12 }, // 'R'
+	  {   619,   8,  12,  10,    0,  -12 }, // 'S'
+	  {   631,   9,  12,  12,    1,  -12 }, // 'T'
+	  {   645,  14,  12,  15,    0,  -12 }, // 'U'
+	  {   666,  12,  12,  14,    0,  -12 }, // 'V'
+	  {   684,  17,  12,  19,    0,  -12 }, // 'W'
+	  {   710,  11,  12,  13,    0,  -12 }, // 'X'
+	  {   727,  11,  12,  13,    0,  -12 }, // 'Y'
+	  {   744,  11,  12,  13,    0,  -12 }, // 'Z'
+	  {   761,   3,  16,   7,    2,  -14 }, // '['
+	  {   767,   8,  13,  12,    1,  -13 }, // '\'
+	  {   780,   3,  16,   7,    1,  -14 }, // ']'
+	  {   786,   9,   7,  12,    1,  -12 }, // '^'
+	  {   794,   9,   1,  10,    0,    1 }, // '_'
+	  {   796,   4,   3,   7,    1,  -12 }, // '`'
+	  {   798,   7,   8,  10,    1,   -8 }, // 'a'
+	  {   805,   8,  13,  11,    0,  -13 }, // 'b'
+	  {   818,   6,   8,   9,    1,   -8 }, // 'c'
+	  {   824,   8,  14,  12,    1,  -14 }, // 'd'
+	  {   838,   8,   9,  10,    0,   -9 }, // 'e'
+	  {   847,   5,  13,   7,    1,  -13 }, // 'f'
+	  {   856,   9,  14,  11,    0,   -9 }, // 'g'
+	  {   872,   8,  13,  11,    1,  -13 }, // 'h'
+	  {   885,   3,  12,   6,    1,  -12 }, // 'i'
+	  {   890,   4,  17,   5,   -2,  -12 }, // 'j'
+	  {   899,   8,  13,  11,    1,  -13 }, // 'k'
+	  {   912,   3,  13,   6,    1,  -13 }, // 'l'
+	  {   917,  13,   8,  17,    1,   -8 }, // 'm'
+	  {   930,   8,   8,  11,    1,   -8 }, // 'n'
+	  {   938,   7,   9,  11,    1,   -9 }, // 'o'
+	  {   946,   8,  13,  12,    1,   -8 }, // 'p'
+	  {   959,   8,  14,  11,    1,   -9 }, // 'q'
+	  {   973,   5,   9,   8,    1,   -9 }, // 'r'
+	  {   979,   6,   9,   9,    1,   -9 }, // 's'
+	  {   986,   4,  11,   7,    1,  -11 }, // 't'
+	  {   992,   8,   9,  12,    1,   -9 }, // 'u'
+	  {  1001,  10,   8,  11,    0,   -8 }, // 'v'
+	  {  1011,  14,   9,  16,    0,   -9 }, // 'w'
+	  {  1027,   9,   9,  10,    0,   -9 }, // 'x'
+	  {  1038,  10,  13,  11,    0,   -8 }, // 'y'
+	  {  1055,   8,   8,  10,    0,   -8 }, // 'z'
+	  {  1063,   3,  16,   7,    1,  -13 }, // '{'
+	  {  1069,   1,  13,  12,    5,  -13 }, // '|'
+	  {  1071,   3,  16,   7,    1,  -13 } // '}'
+};
+const GFXfont URW_Palladio_L_Roman_18 PROGMEM = {
+(uint8_t  *)URW_Palladio_L_Roman_18Bitmaps,(GFXglyph *)URW_Palladio_L_Roman_18Glyphs,0x20, 0x7E, 24};
+
+// Created by http://oleddisplay.squix.ch/ Consider a donation
+// In case of problems make sure that you are using the font file with the correct version!
+const uint8_t URW_Palladio_L_Bold_18Bitmaps[] PROGMEM = {
+
+	// Bitmap Data:
+	0x00, // ' '
+	0x7F,0xB4,0x92,0x0F,0xF0, // '!'
+	0x67,0xDD,0x9A,0x24,0x48,0x80, // '"'
+	0x13,0x09,0x84,0x82,0x47,0xF9,0x90,0xD9,0xFE,0x24,0x12,0x09,0x0C,0x80, // '#'
+	0x10,0x7E,0xD2,0xD2,0xD0,0xF0,0xFE,0x3F,0x17,0x93,0x93,0x96,0xFC,0x10,0x10, // '$'
+	0x78,0x43,0x31,0x0C,0xC8,0x33,0x20,0xCD,0x01,0xE4,0x00,0x27,0x81,0x33,0x04,0xCC,0x23,0x30,0x8C,0xC4,0x1E, // '%'
+	0x0E,0x00,0x98,0x0C,0xC0,0x64,0x03,0xC0,0x1C,0x7D,0xF1,0x19,0xC8,0xC7,0x47,0x1C,0x1C,0x7E,0x7C,0xE0, // '&'
+	0xFF,0xC0, // '''
+	0x12,0x64,0xCC,0xCC,0xCC,0xC4,0x62,0x10, // '('
+	0x84,0x62,0x33,0x33,0x33,0x32,0x64,0x80, // ')'
+	0x1B,0x43,0xF4,0x18, // '*'
+	0x0C,0x03,0x00,0xC0,0x30,0xFF,0xFF,0xF0,0xC0,0x30,0x0C,0x03,0x00, // '+'
+	0x07,0x66,0xC8, // ','
+	0x7F,0xE0, // '-'
+	0xDF,0x00, // '.'
+	0x08,0xC6,0x23,0x18,0x84,0x63,0x11,0x8C,0x00, // '/'
+	0x38,0xDB,0x1E,0x3C,0x78,0xF1,0xE3,0xC7,0x8D,0xB1,0xC0, // '0'
+	0x19,0xF2,0x60,0xC1,0x83,0x06,0x0C,0x18,0x30,0x63,0xF0, // '1'
+	0x78,0x7E,0xCE,0x86,0x06,0x04,0x0C,0x18,0x10,0x20,0x7F,0xFF, // '2'
+	0x3C,0x7E,0x46,0x86,0x04,0x3C,0x3F,0x03,0x03,0x83,0xC6,0xF8, // '3'
+	0x02,0x07,0x03,0x82,0xC3,0x61,0x31,0x18,0x8C,0x7F,0x83,0x01,0x83,0xF0, // '4'
+	0x7F,0x7F,0x40,0x40,0x5E,0x7F,0x47,0x03,0x03,0x82,0x46,0x78, // '5'
+	0x04,0x31,0x82,0x0D,0xDF,0xF3,0xE3,0xC7,0x8D,0x91,0xC0, // '6'
+	0xFF,0xFE,0x82,0x84,0x04,0x08,0x08,0x10,0x30,0x30,0x60,0x60, // '7'
+	0x3C,0xCF,0x9F,0x3F,0x47,0x8B,0xA3,0xC7,0x8F,0x93,0xC0, // '8'
+	0x38,0x9B,0x1E,0x3C,0x7C,0xFF,0xBB,0x0C,0x18,0x63,0x80, // '9'
+	0xDF,0x01,0xBE, // ':'
+	0x6D,0x80,0x1B,0x5A,0x00, // ';'
+	0x00,0x81,0xC3,0xC7,0x8E,0x07,0x01,0xE0,0x1C,0x03,0x80,0x40, // '<'
+	0xFF,0xFF,0xC0,0x00,0x0F,0xFF,0xFC, // '='
+	0x00,0x70,0x1E,0x03,0xC0,0x38,0x1C,0x3C,0x70,0xE0,0x40,0x00, // '>'
+	0x7B,0xF8,0xC3,0x08,0x42,0x08,0x00,0x86,0x18, // '?'
+	0x0F,0x83,0x04,0x40,0x24,0x69,0x99,0x9B,0x99,0xB1,0x9B,0x32,0x75,0x65,0xDF,0x30,0x60,0xF8, // '@'
+	0x03,0x00,0x0C,0x00,0x78,0x01,0xE0,0x09,0xC0,0x27,0x01,0x8E,0x07,0xF8,0x10,0x60,0x81,0xC2,0x07,0x3E,0x3F, // 'A'
+	0xFF,0x0C,0x63,0x18,0xC6,0x33,0x0F,0xE3,0x1C,0xC3,0x30,0xCC,0x33,0x19,0xFC, // 'B'
+	0x0F,0xC6,0x0D,0x80,0xE0,0x1C,0x01,0x80,0x30,0x06,0x00,0x60,0x0C,0x00,0xE0,0x87,0xE0, // 'C'
+	0xFF,0xE0,0xC1,0xE3,0x01,0x8C,0x03,0x30,0x0C,0xC0,0x33,0x00,0xCC,0x03,0x30,0x18,0xC0,0x63,0x06,0x1F,0xE0, // 'D'
+	0xFF,0x8C,0x23,0x00,0xC0,0x31,0x0F,0xC3,0x10,0xC0,0x30,0x0C,0x13,0x05,0xFE, // 'E'
+	0xFF,0x98,0x4C,0x26,0x03,0x11,0xF8,0xC4,0x62,0x30,0x18,0x0C,0x1F,0x80, // 'F'
+	0x0F,0xE1,0x81,0x98,0x05,0x80,0x2C,0x00,0x60,0x03,0x00,0x18,0x1F,0x60,0x33,0x01,0x8E,0x0C,0x1F,0x80, // 'G'
+	0xFC,0xFC,0xC0,0xC3,0x03,0x0C,0x0C,0x30,0x30,0xFF,0xC3,0x03,0x0C,0x0C,0x30,0x30,0xC0,0xC3,0x03,0x3F,0x3F, // 'H'
+	0xFC,0xC3,0x0C,0x30,0xC3,0x0C,0x30,0xC3,0x3F, // 'I'
+	0xFC,0xC3,0x0C,0x30,0xC3,0x0C,0x30,0xC3,0x0C,0x30,0x82,0x30, // 'J'
+	0xFC,0x79,0x83,0x0C,0x20,0x62,0x03,0x20,0x1F,0x00,0xDC,0x06,0xF0,0x33,0xC1,0x8F,0x0C,0x3D,0xF8,0xF0, // 'K'
+	0xFC,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x13,0x05,0xFE, // 'L'
+	0xF8,0x07,0x9C,0x07,0x0F,0x03,0x85,0x82,0xC2,0xE1,0x61,0x31,0x30,0x9C,0x98,0x46,0x8C,0x23,0xC6,0x10,0xC3,0x08,0x61,0x9F,0x33,0xF0, // 'M'
+	0xF8,0x3C,0xE0,0x23,0xC0,0x8B,0x82,0x27,0x08,0x9E,0x22,0x3C,0x88,0x7A,0x20,0xF8,0x81,0xE2,0x03,0xBE,0x06, // 'N'
+	0x0F,0xC1,0x83,0x18,0x0D,0x80,0x7C,0x01,0xE0,0x0F,0x00,0x78,0x03,0xE0,0x1B,0x01,0x8C,0x18,0x3F,0x00, // 'O'
+	0xFF,0x8C,0x73,0x0C,0xC3,0x31,0x8D,0xC3,0x00,0xC0,0x30,0x0C,0x03,0x03,0xF0, // 'P'
+	0x0F,0xC1,0x83,0x18,0x0D,0x80,0x7C,0x01,0xE0,0x0F,0x00,0x78,0x03,0xE0,0x1B,0x01,0x8C,0x18,0x3F,0x00,0xF0,0x1F,0xF4,0x01,0xC0, // 'Q'
+	0xFF,0x83,0x1C,0x30,0xC3,0x0C,0x30,0x83,0x30,0x37,0x03,0x38,0x33,0xC3,0x1C,0x30,0xEF,0xCF, // 'R'
+	0x3F,0x31,0xB0,0x58,0x0F,0x03,0xF0,0x7E,0x07,0x81,0xC0,0xF0,0xCF,0xC0, // 'S'
+	0xFF,0xE3,0x18,0xC4,0x30,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x03,0x00,0xC0,0xFC, // 'T'
+	0xFC,0x7C,0xC0,0x43,0x01,0x0C,0x04,0x30,0x10,0xC0,0x43,0x01,0x0C,0x04,0x30,0x10,0xC0,0x41,0x82,0x03,0xF0, // 'U'
+	0xFC,0x3C,0xE0,0x43,0x81,0x07,0x0C,0x1C,0x20,0x30,0x80,0xE4,0x01,0x90,0x07,0x80,0x1E,0x00,0x30,0x00,0xC0, // 'V'
+	0xFC,0x43,0xDC,0x18,0x63,0x0E,0x10,0xE3,0xC4,0x39,0xF1,0x0E,0x4C,0x81,0x93,0xA0,0x78,0xE8,0x1E,0x1E,0x07,0x07,0x00,0xC0,0xC0,0x30,0x30, // 'W'
+	0xF0,0x73,0x84,0x1C,0x81,0xD8,0x0F,0x00,0x60,0x07,0x00,0xB8,0x1B,0x81,0x1C,0x21,0xCE,0x0F, // 'X'
+	0xF0,0x6E,0x08,0xE3,0x0C,0x40,0xD0,0x1A,0x01,0x80,0x30,0x06,0x00,0xC0,0x18,0x0F,0xC0, // 'Y'
+	0x7F,0xE8,0x39,0x07,0x01,0xC0,0x70,0x0E,0x03,0x80,0xE0,0x1C,0x07,0x05,0xC0,0xFF,0xF0, // 'Z'
+	0xFC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xF0, // '['
+	0x40,0x30,0x08,0x06,0x01,0x00,0xC0,0x20,0x18,0x04,0x03,0x00,0x80,0x60,0x10, // '\'
+	0xF3,0x33,0x33,0x33,0x33,0x33,0x33,0xF0, // ']'
+	0x1C,0x0E,0x0D,0x86,0xC6,0x32,0x1B,0x06, // '^'
+	0xFF,0x80, // '_'
+	0xC3,0x0C, // '`'
+	0x78,0x18,0x31,0xEC,0xD9,0xBF,0x37, // 'a'
+	0xE0,0x30,0x18,0x0D,0xE7,0xF3,0x1D,0x86,0xC3,0x61,0xB0,0x98,0x8F,0x80, // 'b'
+	0x1C,0xCB,0x16,0x0C,0x18,0x18,0x1E, // 'c'
+	0x07,0x01,0x80,0xC0,0x61,0xF3,0x3B,0x0D,0x86,0xC3,0x71,0x9F,0xC7,0x70, // 'd'
+	0x3C,0x8F,0x1F,0xFC,0x18,0x38,0x1F, // 'e'
+	0x0C,0xF6,0x18,0x63,0xE6,0x18,0x61,0x86,0x18,0xF8, // 'f'
+	0x3C,0x23,0xF1,0x98,0xCC,0x63,0xC1,0x01,0xFE,0xFF,0xA0,0xF0,0x78,0x3E,0x33,0xE0, // 'g'
+	0xE0,0x30,0x18,0x0D,0xC7,0xF3,0x19,0x8C,0xC6,0x63,0x31,0x98,0xDE,0x70, // 'h'
+	0x66,0x60,0x2E,0x66,0x66,0x66,0xF0, // 'i'
+	0x33,0x30,0x17,0x33,0x33,0x33,0x33,0x33,0x2C, // 'j'
+	0xE0,0x18,0x06,0x01,0x80,0x63,0x99,0x86,0xC1,0xF0,0x6E,0x1B,0xC6,0x7B,0xCF, // 'k'
+	0xE6,0x66,0x66,0x66,0x66,0x6F, // 'l'
+	0x6E,0x73,0xFF,0xE6,0x31,0x98,0xC6,0x63,0x19,0x8C,0x66,0x31,0x98,0xC6,0xF7,0x9C, // 'm'
+	0x2E,0x7F,0x98,0xCC,0x66,0x33,0x19,0x8C,0xC6,0xF3,0x80, // 'n'
+	0x3C,0x66,0xC3,0xC3,0xC3,0xC3,0xC3,0x66,0x3C, // 'o'
+	0x2F,0x7F,0x98,0xEC,0x36,0x1B,0x0D,0x84,0xC4,0x7C,0x30,0x18,0x0C,0x06,0x07,0x80, // 'p'
+	0x1F,0x33,0xB0,0xD8,0x6C,0x37,0x19,0xFC,0xF6,0x03,0x01,0x80,0xC0,0x60,0x78, // 'q'
+	0x2F,0xF6,0x58,0x61,0x86,0x18,0xF8, // 'r'
+	0x7B,0x2C,0x3C,0x7C,0x78,0xE3,0xF8, // 's'
+	0x23,0x18,0xCF,0xB1,0x8C,0x63,0x1E,0x60, // 't'
+	0x21,0x73,0x98,0xCC,0x66,0x33,0x19,0x8C,0xFE,0x3B,0x80, // 'u'
+	0x71,0x8C,0x43,0x10,0xEC,0x1A,0x07,0x81,0xC0,0x30, // 'v'
+	0xF9,0x9E,0x63,0x18,0xC7,0x21,0x96,0x43,0xAD,0x83,0x9E,0x07,0x1C,0x0C,0x38,0x18,0x20, // 'w'
+	0xE1,0x99,0x0F,0x03,0x81,0xC0,0xF0,0xD8,0x4E,0xC3,0x80, // 'x'
+	0xF3,0xB0,0x9C,0x46,0x43,0x21,0xE0,0x70,0x30,0x08,0x04,0x04,0x12,0x0E,0x00, // 'y'
+	0x7F,0x46,0x0E,0x1C,0x18,0x30,0x71,0xFF, // 'z'
+	0x18,0xC3,0x0C,0x30,0xC3,0x10,0x30,0xC3,0x0C,0x30,0xC1,0x80, // '{'
+	0xFF,0xFF,0xFF,0xC0, // '|'
+	0x60,0xC3,0x0C,0x30,0xC3,0x02,0x30,0xC3,0x0C,0x30,0xC6,0x00 // '}'
+};
+const GFXglyph URW_Palladio_L_Bold_18Glyphs[] PROGMEM = {
+// bitmapOffset, width, height, xAdvance, xOffset, yOffset
+	  {     0,   1,   1,   6,    0,    0 }, // ' '
+	  {     1,   3,  12,   6,    1,  -12 }, // '!'
+	  {     6,   7,   6,   8,    0,  -12 }, // '"'
+	  {    12,   9,  12,  10,    0,  -12 }, // '#'
+	  {    26,   8,  15,  10,    1,  -13 }, // '$'
+	  {    41,  14,  12,  17,    1,  -12 }, // '%'
+	  {    62,  13,  12,  16,    1,  -12 }, // '&'
+	  {    82,   2,   6,   5,    1,  -12 }, // '''
+	  {    84,   4,  15,   7,    1,  -13 }, // '('
+	  {    92,   4,  15,   7,    1,  -13 }, // ')'
+	  {   100,   6,   5,   9,    1,  -12 }, // '*'
+	  {   104,  10,  10,  12,    1,  -10 }, // '+'
+	  {   117,   4,   6,   6,    0,   -3 }, // ','
+	  {   120,   6,   2,   7,    0,   -6 }, // '-'
+	  {   122,   3,   3,   6,    1,   -3 }, // '.'
+	  {   124,   5,  13,   6,    0,  -13 }, // '/'
+	  {   133,   7,  12,  10,    1,  -12 }, // '0'
+	  {   144,   7,  12,  10,    1,  -12 }, // '1'
+	  {   155,   8,  12,  10,    1,  -12 }, // '2'
+	  {   167,   8,  12,  10,    0,  -12 }, // '3'
+	  {   179,   9,  12,  10,    0,  -12 }, // '4'
+	  {   193,   8,  12,  10,    0,  -12 }, // '5'
+	  {   205,   7,  12,  10,    1,  -12 }, // '6'
+	  {   216,   8,  12,  10,    1,  -12 }, // '7'
+	  {   228,   7,  12,  10,    1,  -12 }, // '8'
+	  {   239,   7,  12,  10,    1,  -12 }, // '9'
+	  {   250,   3,   8,   6,    1,   -8 }, // ':'
+	  {   253,   3,  11,   6,    0,   -8 }, // ';'
+	  {   258,   9,  10,  12,    1,  -10 }, // '<'
+	  {   270,   9,   6,  12,    1,   -8 }, // '='
+	  {   277,   9,  10,  12,    1,  -10 }, // '>'
+	  {   289,   6,  12,   9,    1,  -12 }, // '?'
+	  {   298,  12,  12,  14,    1,  -12 }, // '@'
+	  {   316,  14,  12,  15,    0,  -12 }, // 'A'
+	  {   337,  10,  12,  13,    0,  -12 }, // 'B'
+	  {   352,  11,  12,  14,    1,  -12 }, // 'C'
+	  {   369,  14,  12,  16,    0,  -12 }, // 'D'
+	  {   390,  10,  12,  12,    0,  -12 }, // 'E'
+	  {   405,   9,  12,  11,    0,  -12 }, // 'F'
+	  {   419,  13,  12,  16,    1,  -12 }, // 'G'
+	  {   439,  14,  12,  16,    0,  -12 }, // 'H'
+	  {   460,   6,  12,   8,    0,  -12 }, // 'I'
+	  {   469,   6,  16,   8,    0,  -12 }, // 'J'
+	  {   481,  13,  12,  15,    0,  -12 }, // 'K'
+	  {   501,  10,  12,  12,    0,  -12 }, // 'L'
+	  {   516,  17,  12,  19,    0,  -12 }, // 'M'
+	  {   542,  14,  12,  16,    0,  -12 }, // 'N'
+	  {   563,  13,  12,  16,    1,  -12 }, // 'O'
+	  {   583,  10,  12,  12,    0,  -12 }, // 'P'
+	  {   598,  13,  15,  16,    1,  -12 }, // 'Q'
+	  {   623,  12,  12,  14,    0,  -12 }, // 'R'
+	  {   641,   9,  12,  12,    1,  -12 }, // 'S'
+	  {   655,  10,  12,  13,    1,  -12 }, // 'T'
+	  {   670,  14,  12,  15,    0,  -12 }, // 'U'
+	  {   691,  14,  12,  15,    0,  -12 }, // 'V'
+	  {   712,  18,  12,  19,    0,  -12 }, // 'W'
+	  {   739,  12,  12,  13,    0,  -12 }, // 'X'
+	  {   757,  11,  12,  13,    0,  -12 }, // 'Y'
+	  {   774,  11,  12,  13,    0,  -12 }, // 'Z'
+	  {   791,   4,  15,   7,    1,  -13 }, // '['
+	  {   799,   9,  13,  12,    1,  -13 }, // '\'
+	  {   814,   4,  15,   7,    1,  -13 }, // ']'
+	  {   822,   9,   7,  12,    1,  -12 }, // '^'
+	  {   830,   9,   1,  10,    0,    1 }, // '_'
+	  {   832,   5,   3,   7,    0,  -12 }, // '`'
+	  {   834,   7,   8,  10,    1,   -8 }, // 'a'
+	  {   841,   9,  12,  12,    1,  -12 }, // 'b'
+	  {   855,   7,   8,   9,    1,   -8 }, // 'c'
+	  {   862,   9,  12,  12,    1,  -12 }, // 'd'
+	  {   876,   7,   8,  10,    1,   -8 }, // 'e'
+	  {   883,   6,  13,   8,    1,  -13 }, // 'f'
+	  {   893,   9,  14,  11,    1,   -9 }, // 'g'
+	  {   909,   9,  12,  12,    1,  -12 }, // 'h'
+	  {   923,   4,  13,   7,    1,  -13 }, // 'i'
+	  {   930,   4,  18,   7,    0,  -13 }, // 'j'
+	  {   939,  10,  12,  12,    1,  -12 }, // 'k'
+	  {   954,   4,  12,   7,    1,  -12 }, // 'l'
+	  {   960,  14,   9,  17,    1,   -9 }, // 'm'
+	  {   976,   9,   9,  12,    1,   -9 }, // 'n'
+	  {   987,   8,   9,  11,    1,   -9 }, // 'o'
+	  {   996,   9,  14,  12,    1,   -9 }, // 'p'
+	  {  1012,   9,  13,  12,    1,   -8 }, // 'q'
+	  {  1027,   6,   9,   8,    1,   -9 }, // 'r'
+	  {  1034,   6,   9,   9,    1,   -9 }, // 's'
+	  {  1041,   5,  12,   7,    1,  -12 }, // 't'
+	  {  1049,   9,   9,  12,    1,   -9 }, // 'u'
+	  {  1060,  10,   8,  11,    0,   -8 }, // 'v'
+	  {  1070,  15,   9,  16,    0,   -9 }, // 'w'
+	  {  1087,   9,   9,  10,    0,   -9 }, // 'x'
+	  {  1098,   9,  13,  11,    0,   -8 }, // 'y'
+	  {  1113,   8,   8,  10,    0,   -8 }, // 'z'
+	  {  1121,   6,  15,   7,    0,  -14 }, // '{'
+	  {  1133,   2,  13,  12,    5,  -13 }, // '|'
+	  {  1137,   6,  15,   7,    0,  -14 } // '}'
+};
+const GFXfont URW_Palladio_L_Bold_18 PROGMEM = {
+(uint8_t  *)URW_Palladio_L_Bold_18Bitmaps,(GFXglyph *)URW_Palladio_L_Bold_18Glyphs,0x20, 0x7E, 24};
+
+// Created by http://oleddisplay.squix.ch/ Consider a donation
+// In case of problems make sure that you are using the font file with the correct version!
+const uint8_t Lato_Hairline_16Bitmaps[] PROGMEM = {
+
+	// Bitmap Data:
+	0x00, // ' '
+	0x55,0x55,0x07, // '!'
+	0xB6,0xDA, // '"'
+	0x12,0x12,0x12,0xFF,0x24,0x24,0x24,0x24,0xFF,0x48,0x48,0x48, // '#'
+	0x08,0x08,0x1C,0x6A,0x48,0x48,0x48,0x30,0x0E,0x12,0x11,0x12,0xD2,0x3C,0x10,0x10, // '$'
+	0x60,0x53,0x12,0x22,0x44,0x88,0xA1,0xA8,0x09,0x70,0x51,0x12,0x24,0x44,0x88,0xA0,0xE0, // '%'
+	0x1C,0x04,0x40,0x88,0x10,0x02,0x00,0x60,0x12,0x24,0x24,0x82,0x90,0x23,0x0A,0x1E,0x30, // '&'
+	0xF8, // '''
+	0x25,0x29,0x24,0x92,0x24,0x88, // '('
+	0x91,0x24,0x49,0x25,0x25,0x20, // ')'
+	0x27,0x4D,0xD2,0x00, // '*'
+	0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10, // '+'
+	0x76, // ','
+	0xF0, // '-'
+	0x70, // '.'
+	0x04,0x20,0x82,0x10,0x42,0x08,0x41,0x04,0x20,0x80, // '/'
+	0x18,0x66,0x82,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x42,0x3C, // '0'
+	0x10,0xC5,0x24,0x10,0x41,0x04,0x10,0x41,0x3F, // '1'
+	0x18,0x66,0x42,0x81,0x02,0x02,0x04,0x08,0x10,0x20,0x40,0xFF, // '2'
+	0x18,0x66,0x42,0x82,0x02,0x06,0x1E,0x02,0x01,0x81,0x42,0x3C, // '3'
+	0x02,0x01,0x01,0x81,0x41,0x21,0x10,0x88,0x84,0xFF,0x81,0x00,0x80,0x40, // '4'
+	0x3E,0x41,0x02,0x04,0x0F,0x80,0x81,0x02,0x06,0x0B,0xE0, // '5'
+	0x04,0x08,0x08,0x10,0x20,0x7E,0x42,0x81,0x81,0x81,0x42,0x3C, // '6'
+	0xFF,0x01,0x02,0x02,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x60, // '7'
+	0x18,0x66,0x42,0x82,0x42,0x66,0x7E,0x82,0x81,0x81,0x42,0x3C, // '8'
+	0x18,0x66,0x82,0x81,0x83,0x66,0x1E,0x04,0x08,0x18,0x10,0x20, // '9'
+	0x70,0x01,0xC0, // ':'
+	0x70,0x01,0xD8, // ';'
+	0x06,0x30,0x86,0x03,0x01,0x80,0x80, // '<'
+	0xFF,0x00,0xFF, // '='
+	0xC0,0xC0,0x81,0x19,0x88,0x00, // '>'
+	0x74,0x42,0x10,0x88,0x84,0x00,0x08,0xC0, // '?'
+	0x1F,0x82,0x06,0x40,0x24,0x79,0x88,0x99,0x11,0x91,0x19,0x12,0x93,0x24,0xCC,0x20,0x01,0x8E,0x07,0x00, // '@'
+	0x04,0x00,0x80,0x28,0x05,0x01,0x20,0x22,0x04,0x41,0x04,0x3F,0x88,0x09,0x01,0x40,0x30, // 'A'
+	0xF9,0x0A,0x0C,0x18,0x30,0xBF,0x41,0x83,0x06,0x0F,0xE0, // 'B'
+	0x0E,0x0C,0x74,0x01,0x00,0x80,0x20,0x08,0x02,0x00,0x80,0x10,0x02,0x0C,0x7C, // 'C'
+	0xFC,0x20,0xC8,0x0A,0x02,0x80,0x60,0x18,0x06,0x01,0x80,0xA0,0x28,0x13,0xF8, // 'D'
+	0xFF,0x02,0x04,0x08,0x10,0x3F,0x40,0x81,0x02,0x07,0xF0, // 'E'
+	0xFF,0x02,0x04,0x08,0x10,0x3F,0x40,0x81,0x02,0x04,0x00, // 'F'
+	0x0F,0x0C,0x34,0x01,0x00,0x80,0x20,0x08,0x02,0x07,0x80,0x50,0x12,0x04,0x7E, // 'G'
+	0x80,0xC0,0x60,0x30,0x18,0x0C,0x07,0xFF,0x01,0x80,0xC0,0x60,0x30,0x10, // 'H'
+	0xFF,0xF0, // 'I'
+	0x08,0x42,0x10,0x84,0x21,0x08,0x43,0xE0, // 'J'
+	0x81,0x41,0x21,0x11,0x09,0x05,0x03,0x81,0x20,0x88,0x42,0x20,0x90,0x30, // 'K'
+	0x82,0x08,0x20,0x82,0x08,0x20,0x82,0x08,0x3F, // 'L'
+	0x80,0x30,0x07,0x01,0xD0,0x5A,0x0B,0x22,0x64,0x4C,0x51,0x8A,0x30,0x86,0x00,0xC0,0x10, // 'M'
+	0x80,0xC0,0x70,0x34,0x19,0x0C,0x86,0x23,0x09,0x84,0xC1,0x60,0x70,0x10, // 'N'
+	0x0E,0x06,0x31,0x01,0x20,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x28,0x08,0x82,0x0F,0x80, // 'O'
+	0xF1,0x1A,0x0C,0x18,0x30,0xA3,0x78,0x81,0x02,0x04,0x00, // 'P'
+	0x0E,0x03,0x18,0x40,0x44,0x02,0x80,0x28,0x02,0x80,0x28,0x02,0x80,0x24,0x04,0x20,0xC1,0xF8,0x00,0x40,0x02,0x00,0x30, // 'Q'
+	0xF8,0x84,0x82,0x82,0x82,0x8C,0xF0,0x90,0x88,0x84,0x82,0x81, // 'R'
+	0x38,0x8E,0x04,0x04,0x06,0x03,0x01,0x02,0x06,0x1B,0xC0, // 'S'
+	0xFF,0xC2,0x00,0x80,0x20,0x08,0x02,0x00,0x80,0x20,0x08,0x02,0x00,0x80,0x20, // 'T'
+	0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x42,0x3C, // 'U'
+	0x80,0x28,0x09,0x01,0x20,0x42,0x08,0x41,0x04,0x40,0x88,0x0A,0x01,0x40,0x30,0x02,0x00, // 'V'
+	0x80,0x81,0x40,0x81,0x41,0x81,0x41,0x42,0x22,0x42,0x22,0x22,0x22,0x24,0x14,0x24,0x14,0x14,0x14,0x18,0x08,0x18,0x08,0x08, // 'W'
+	0x80,0x50,0x22,0x10,0x44,0x12,0x03,0x00,0xC0,0x28,0x11,0x08,0x44,0x0B,0x01, // 'X'
+	0x80,0x50,0x24,0x10,0x84,0x12,0x05,0x00,0xC0,0x20,0x08,0x02,0x00,0x80,0x20, // 'Y'
+	0xFF,0x01,0x02,0x06,0x04,0x08,0x10,0x10,0x20,0x40,0x80,0xFF, // 'Z'
+	0xF2,0x49,0x24,0x92,0x49,0x38, // '['
+	0x82,0x08,0x10,0x40,0x82,0x04,0x10,0x40,0x82,0x04, // '\'
+	0xE4,0x92,0x49,0x24,0x92,0x78, // ']'
+	0x10,0x30,0x61,0x24,0x58,0x40, // '^'
+	0xFE, // '_'
+	0x89,0x80, // '`'
+	0x33,0x20,0x41,0x7E,0x18,0x63,0x74, // 'a'
+	0x81,0x02,0x04,0xCE,0x78,0x60,0xC1,0x83,0x07,0x0D,0xE0, // 'b'
+	0x38,0x8A,0x04,0x08,0x10,0x20,0x23,0x3C, // 'c'
+	0x02,0x04,0x09,0xD4,0x70,0x60,0xC1,0x83,0x05,0x19,0xD0, // 'd'
+	0x38,0x8A,0x0C,0x1F,0xF0,0x20,0x21,0x3C, // 'e'
+	0x1C,0x82,0x3F,0x20,0x82,0x08,0x20,0x82,0x08, // 'f'
+	0x3E,0x8A,0x14,0x24,0xCE,0x20,0x20,0xFF,0x06,0x0B,0xE0, // 'g'
+	0x81,0x02,0x04,0xCE,0x58,0x60,0xC1,0x83,0x06,0x0C,0x10, // 'h'
+	0xB2,0xAA,0xAA, // 'i'
+	0x23,0x02,0x22,0x22,0x22,0x22,0x22,0xE0, // 'j'
+	0x81,0x02,0x04,0x38,0x92,0x28,0x70,0xB1,0x32,0x34,0x30, // 'k'
+	0xAA,0xAA,0xAA, // 'l'
+	0x91,0x9D,0xCA,0x10,0xC2,0x18,0x43,0x08,0x61,0x0C,0x21,0x84,0x20, // 'm'
+	0x99,0xCB,0x0C,0x18,0x30,0x60,0xC1,0x82, // 'n'
+	0x38,0x8A,0x0C,0x18,0x30,0x60,0xA1,0x3C, // 'o'
+	0x99,0xCF,0x0C,0x18,0x30,0x60,0xE1,0xFD,0x02,0x04,0x00, // 'p'
+	0x3A,0x8E,0x0C,0x18,0x30,0x60,0xA3,0x3A,0x04,0x08,0x10, // 'q'
+	0x9F,0x31,0x08,0x42,0x10,0x80, // 'r'
+	0x36,0x61,0x07,0x04,0x31,0x70, // 's'
+	0x42,0x11,0xE4,0x21,0x08,0x42,0x12,0xE0, // 't'
+	0x83,0x06,0x0C,0x18,0x30,0x60,0xA3,0x3A, // 'u'
+	0x81,0x41,0x42,0x22,0x24,0x24,0x14,0x18,0x08, // 'v'
+	0x82,0x14,0x21,0x46,0x14,0x52,0x25,0x22,0x92,0x28,0xC1,0x0C,0x10,0x80, // 'w'
+	0x82,0x42,0x24,0x28,0x10,0x18,0x24,0x42,0xC3, // 'x'
+	0x81,0x41,0x42,0x22,0x22,0x24,0x14,0x18,0x08,0x10,0x10,0x30, // 'y'
+	0xFC,0x10,0x84,0x20,0x84,0x20,0xFC, // 'z'
+	0x74,0x44,0x44,0x4C,0x44,0x44,0x44,0x30, // '{'
+	0xFF,0xFF, // '|'
+	0xC2,0x22,0x44,0x43,0x44,0x22,0x24,0x80 // '}'
+};
+const GFXglyph Lato_Hairline_16Glyphs[] PROGMEM = {
+// bitmapOffset, width, height, xAdvance, xOffset, yOffset
+	  {     0,   1,   1,   7,    0,    0 }, // ' '
+	  {     1,   2,  12,   6,    1,  -12 }, // '!'
+	  {     4,   3,   5,   7,    1,  -12 }, // '"'
+	  {     6,   8,  12,  11,    1,  -12 }, // '#'
+	  {    18,   8,  16,  11,    1,  -14 }, // '$'
+	  {    34,  11,  12,  14,    1,  -12 }, // '%'
+	  {    51,  11,  12,  13,    1,  -12 }, // '&'
+	  {    68,   1,   5,   5,    1,  -12 }, // '''
+	  {    69,   3,  15,   6,    1,  -13 }, // '('
+	  {    75,   3,  15,   6,    1,  -13 }, // ')'
+	  {    81,   5,   5,   9,    1,  -12 }, // '*'
+	  {    85,   8,   8,  11,    1,  -10 }, // '+'
+	  {    93,   2,   4,   5,    1,   -2 }, // ','
+	  {    94,   4,   1,   8,    1,   -5 }, // '-'
+	  {    95,   2,   2,   6,    1,   -2 }, // '.'
+	  {    96,   6,  13,   9,    1,  -12 }, // '/'
+	  {   106,   8,  12,  11,    1,  -12 }, // '0'
+	  {   118,   6,  12,  11,    2,  -12 }, // '1'
+	  {   127,   8,  12,  11,    1,  -12 }, // '2'
+	  {   139,   8,  12,  11,    1,  -12 }, // '3'
+	  {   151,   9,  12,  11,    0,  -12 }, // '4'
+	  {   165,   7,  12,  11,    1,  -12 }, // '5'
+	  {   176,   8,  12,  11,    1,  -12 }, // '6'
+	  {   188,   8,  12,  11,    1,  -12 }, // '7'
+	  {   200,   8,  12,  11,    1,  -12 }, // '8'
+	  {   212,   8,  12,  11,    1,  -12 }, // '9'
+	  {   224,   2,   9,   6,    1,   -9 }, // ':'
+	  {   227,   2,  11,   6,    1,   -9 }, // ';'
+	  {   230,   7,   7,  11,    1,   -9 }, // '<'
+	  {   237,   8,   3,  11,    1,   -7 }, // '='
+	  {   240,   6,   7,  11,    2,   -9 }, // '>'
+	  {   246,   5,  12,   9,    1,  -12 }, // '?'
+	  {   254,  12,  13,  15,    1,  -11 }, // '@'
+	  {   274,  11,  12,  12,    0,  -12 }, // 'A'
+	  {   291,   7,  12,  12,    2,  -12 }, // 'B'
+	  {   302,  10,  12,  13,    1,  -12 }, // 'C'
+	  {   317,  10,  12,  14,    2,  -12 }, // 'D'
+	  {   332,   7,  12,  11,    2,  -12 }, // 'E'
+	  {   343,   7,  12,  11,    2,  -12 }, // 'F'
+	  {   354,  10,  12,  14,    1,  -12 }, // 'G'
+	  {   369,   9,  12,  14,    2,  -12 }, // 'H'
+	  {   383,   1,  12,   6,    2,  -12 }, // 'I'
+	  {   385,   5,  12,   9,    0,  -12 }, // 'J'
+	  {   393,   9,  12,  12,    2,  -12 }, // 'K'
+	  {   407,   6,  12,  10,    2,  -12 }, // 'L'
+	  {   416,  11,  12,  16,    2,  -12 }, // 'M'
+	  {   433,   9,  12,  14,    2,  -12 }, // 'N'
+	  {   447,  11,  12,  15,    1,  -12 }, // 'O'
+	  {   464,   7,  12,  11,    2,  -12 }, // 'P'
+	  {   475,  12,  15,  15,    1,  -12 }, // 'Q'
+	  {   498,   8,  12,  11,    2,  -12 }, // 'R'
+	  {   510,   7,  12,  10,    1,  -12 }, // 'S'
+	  {   521,  10,  12,  11,    0,  -12 }, // 'T'
+	  {   536,   8,  12,  14,    2,  -12 }, // 'U'
+	  {   548,  11,  12,  12,    0,  -12 }, // 'V'
+	  {   565,  16,  12,  18,    0,  -12 }, // 'W'
+	  {   589,  10,  12,  12,    0,  -12 }, // 'X'
+	  {   604,  10,  12,  11,    0,  -12 }, // 'Y'
+	  {   619,   8,  12,  12,    1,  -12 }, // 'Z'
+	  {   631,   3,  15,   7,    2,  -13 }, // '['
+	  {   637,   6,  13,   9,    1,  -12 }, // '\'
+	  {   647,   3,  15,   7,    1,  -13 }, // ']'
+	  {   653,   7,   6,  11,    1,  -12 }, // '^'
+	  {   659,   7,   1,   9,    0,    1 }, // '_'
+	  {   660,   3,   3,   8,    2,  -12 }, // '`'
+	  {   662,   6,   9,  10,    1,   -9 }, // 'a'
+	  {   669,   7,  12,  11,    1,  -12 }, // 'b'
+	  {   680,   7,   9,   9,    1,   -9 }, // 'c'
+	  {   688,   7,  12,  11,    1,  -12 }, // 'd'
+	  {   699,   7,   9,  10,    1,   -9 }, // 'e'
+	  {   707,   6,  12,   7,    0,  -12 }, // 'f'
+	  {   716,   7,  12,  10,    1,   -9 }, // 'g'
+	  {   727,   7,  12,  11,    1,  -12 }, // 'h'
+	  {   738,   2,  12,   5,    1,  -12 }, // 'i'
+	  {   741,   4,  15,   5,   -1,  -12 }, // 'j'
+	  {   749,   7,  12,   9,    1,  -12 }, // 'k'
+	  {   760,   2,  12,   5,    1,  -12 }, // 'l'
+	  {   763,  11,   9,  15,    1,   -9 }, // 'm'
+	  {   776,   7,   9,  11,    1,   -9 }, // 'n'
+	  {   784,   7,   9,  11,    1,   -9 }, // 'o'
+	  {   792,   7,  12,  11,    1,   -9 }, // 'p'
+	  {   803,   7,  12,  11,    1,   -9 }, // 'q'
+	  {   814,   5,   9,   8,    1,   -9 }, // 'r'
+	  {   820,   5,   9,   9,    1,   -9 }, // 's'
+	  {   826,   5,  12,   7,    1,  -12 }, // 't'
+	  {   834,   7,   9,  11,    1,   -9 }, // 'u'
+	  {   842,   8,   9,  10,    0,   -9 }, // 'v'
+	  {   851,  12,   9,  14,    0,   -9 }, // 'w'
+	  {   865,   8,   9,   9,    0,   -9 }, // 'x'
+	  {   874,   8,  12,  10,    0,   -9 }, // 'y'
+	  {   886,   6,   9,   9,    1,   -9 }, // 'z'
+	  {   893,   4,  15,   7,    1,  -13 }, // '{'
+	  {   901,   1,  16,   6,    2,  -13 }, // '|'
+	  {   903,   4,  15,   7,    1,  -13 } // '}'
+};
+const GFXfont Lato_Hairline_16 PROGMEM = {
+(uint8_t  *)Lato_Hairline_16Bitmaps,(GFXglyph *)Lato_Hairline_16Glyphs,0x20, 0x7E, 20};
+
+
+
+const uint8_t sourcesans8pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0x60, 0x99, 0x99, 0x12, 0x12, 0x3F, 0x24, 0x24, 0x24, 0xFC,
+  0x24, 0x48, 0x48, 0x10, 0x47, 0xB1, 0x83, 0x07, 0x06, 0x04, 0x18, 0x5E,
+  0x10, 0x60, 0x89, 0x10, 0x91, 0x09, 0x20, 0x92, 0xE9, 0x5B, 0x69, 0x10,
+  0x91, 0x11, 0x11, 0x11, 0x20, 0xE0, 0x30, 0x48, 0x48, 0x58, 0x70, 0x61,
+  0xF3, 0x9A, 0x8E, 0xCE, 0x79, 0xF0, 0x09, 0x29, 0x24, 0x92, 0x24, 0x88,
+  0x09, 0x22, 0x49, 0x24, 0xA4, 0xA0, 0x25, 0x5C, 0xE5, 0x00, 0x21, 0x09,
+  0xF2, 0x10, 0x80, 0xD8, 0xE0, 0xC0, 0x00, 0x44, 0x21, 0x08, 0x84, 0x22,
+  0x10, 0x84, 0x42, 0x00, 0x79, 0x28, 0x61, 0x86, 0x18, 0x61, 0x49, 0xE0,
+  0xE1, 0x08, 0x42, 0x10, 0x84, 0x27, 0xC0, 0x79, 0x98, 0x10, 0x20, 0xC1,
+  0x04, 0x10, 0x41, 0xFC, 0x79, 0x10, 0x43, 0x30, 0x30, 0x41, 0x8D, 0xE0,
+  0x18, 0x62, 0x8A, 0x4A, 0x2F, 0xC2, 0x08, 0x20, 0x7E, 0x08, 0x20, 0xF8,
+  0x30, 0x41, 0x8D, 0xE0, 0x39, 0x0C, 0x20, 0xBB, 0x18, 0x61, 0x4C, 0xE0,
+  0xFC, 0x20, 0x84, 0x10, 0x42, 0x08, 0x20, 0x80, 0x39, 0x14, 0x51, 0x39,
+  0x28, 0x61, 0xC5, 0xE0, 0x73, 0x28, 0x61, 0x8D, 0xD0, 0x43, 0x09, 0xC0,
+  0xC3, 0xC1, 0xC0, 0x00, 0x37, 0x20, 0xE0, 0x70, 0x40, 0xFC, 0x00, 0x00,
+  0xFC, 0x03, 0x03, 0x81, 0x1F, 0x88, 0x00, 0x74, 0x42, 0x11, 0x10, 0x84,
+  0x01, 0x08, 0x0F, 0x83, 0x06, 0x60, 0x24, 0x71, 0x89, 0x19, 0x11, 0x91,
+  0x19, 0x32, 0x8D, 0xC4, 0x00, 0x60, 0x01, 0xF0, 0x18, 0x18, 0x1C, 0x24,
+  0x24, 0x24, 0x66, 0x7E, 0x42, 0xC3, 0x81, 0xF9, 0x1A, 0x14, 0x28, 0xDF,
+  0x21, 0xC1, 0x83, 0x0F, 0xF0, 0x3C, 0xC7, 0x04, 0x08, 0x10, 0x20, 0x40,
+  0xC0, 0xC4, 0xF0, 0xF8, 0x86, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82,
+  0x86, 0xF8, 0xFE, 0x08, 0x20, 0x83, 0xE8, 0x20, 0x82, 0x0F, 0xC0, 0xFE,
+  0x08, 0x20, 0x83, 0xE8, 0x20, 0x82, 0x08, 0x00, 0x1E, 0x61, 0x40, 0x80,
+  0x80, 0x87, 0x81, 0x81, 0x41, 0x61, 0x1E, 0x81, 0x81, 0x81, 0x81, 0x81,
+  0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF, 0xE0, 0x08, 0x42, 0x10, 0x84,
+  0x21, 0x0C, 0x5C, 0x87, 0x1A, 0x64, 0x8B, 0x1E, 0x36, 0x44, 0x85, 0x0E,
+  0x08, 0x84, 0x21, 0x08, 0x42, 0x10, 0x84, 0x3E, 0xC1, 0xE0, 0xF0, 0x74,
+  0x5A, 0x2D, 0x16, 0x53, 0x29, 0x88, 0xC4, 0x60, 0x20, 0x81, 0xC1, 0xE1,
+  0xA1, 0x91, 0x99, 0x89, 0x85, 0x87, 0x83, 0x81, 0x3C, 0x42, 0x42, 0x81,
+  0x81, 0x81, 0x81, 0x81, 0x42, 0x42, 0x3C, 0xFD, 0x0E, 0x0C, 0x18, 0x7F,
+  0x20, 0x40, 0x81, 0x02, 0x00, 0x3C, 0x42, 0x42, 0x81, 0x81, 0x81, 0x81,
+  0x81, 0xC3, 0x42, 0x3C, 0x18, 0x0C, 0x07, 0xFC, 0x86, 0x82, 0x82, 0x86,
+  0xFC, 0x88, 0x8C, 0x84, 0x86, 0x82, 0x3E, 0x63, 0x40, 0x40, 0x30, 0x1E,
+  0x07, 0x01, 0x01, 0xC3, 0x3C, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08,
+  0x10, 0x20, 0x40, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
+  0x42, 0x3C, 0x81, 0x81, 0x42, 0x42, 0x42, 0x24, 0x24, 0x24, 0x38, 0x18,
+  0x18, 0x86, 0x18, 0x61, 0x86, 0x14, 0xD2, 0x4D, 0x24, 0x92, 0x49, 0x25,
+  0x8A, 0x38, 0xC3, 0x0C, 0x30, 0xC0, 0x43, 0x62, 0x24, 0x34, 0x18, 0x18,
+  0x1C, 0x24, 0x26, 0x42, 0x43, 0x82, 0x89, 0x13, 0x62, 0x85, 0x04, 0x08,
+  0x10, 0x20, 0x40, 0xFE, 0x08, 0x30, 0x41, 0x82, 0x08, 0x30, 0x41, 0x83,
+  0xF8, 0xF2, 0x49, 0x24, 0x92, 0x49, 0xC0, 0x81, 0x04, 0x10, 0x20, 0x82,
+  0x04, 0x10, 0x20, 0x82, 0x04, 0x00, 0xE4, 0x92, 0x49, 0x24, 0x93, 0xC0,
+  0x30, 0xC3, 0x12, 0x4A, 0x30, 0xFF, 0xCC, 0x78, 0x10, 0x4F, 0xC6, 0x18,
+  0xDD, 0x81, 0x02, 0x05, 0xEC, 0x50, 0x60, 0xC1, 0x83, 0x8A, 0xE0, 0x79,
+  0x08, 0x20, 0x82, 0x04, 0x1E, 0x04, 0x10, 0x5F, 0x46, 0x18, 0x61, 0x87,
+  0x37, 0x40, 0x39, 0x38, 0x7F, 0x82, 0x04, 0x0E, 0x34, 0x44, 0xE4, 0x44,
+  0x44, 0x44, 0x7F, 0x9A, 0x14, 0x2C, 0xCF, 0x20, 0x3E, 0x83, 0x07, 0x13,
+  0xC0, 0x82, 0x08, 0x2E, 0xC6, 0x18, 0x61, 0x86, 0x18, 0x40, 0xBF, 0xC0,
+  0x20, 0x92, 0x49, 0x24, 0x9E, 0x82, 0x08, 0x22, 0x9A, 0xCA, 0x34, 0x9A,
+  0x28, 0xC0, 0xAA, 0xAA, 0xAC, 0xB9, 0xD8, 0xC6, 0x10, 0xC2, 0x18, 0x43,
+  0x08, 0x61, 0x0C, 0x21, 0xBB, 0x18, 0x61, 0x86, 0x18, 0x61, 0x38, 0x8A,
+  0x0C, 0x18, 0x30, 0x51, 0x1C, 0xBD, 0x8A, 0x0C, 0x18, 0x30, 0x71, 0x5C,
+  0x81, 0x02, 0x00, 0x7D, 0x18, 0x61, 0x86, 0x1C, 0xDD, 0x04, 0x10, 0x40,
+  0xBC, 0x88, 0x88, 0x88, 0x74, 0x20, 0xC3, 0x86, 0x3E, 0x44, 0xF4, 0x44,
+  0x44, 0x43, 0x86, 0x18, 0x61, 0x86, 0x18, 0xDD, 0xC2, 0x8D, 0x13, 0x22,
+  0x45, 0x0E, 0x0C, 0x86, 0x30, 0xC5, 0x29, 0x25, 0x24, 0x94, 0x52, 0x8A,
+  0x61, 0x8C, 0x44, 0xC8, 0xA0, 0xC3, 0x85, 0x11, 0x23, 0xC2, 0x89, 0x11,
+  0x22, 0x87, 0x06, 0x08, 0x10, 0x61, 0x80, 0x7C, 0x30, 0x84, 0x30, 0x84,
+  0x3F, 0x69, 0x24, 0x94, 0x49, 0x24, 0xC0, 0xFF, 0xFF, 0xC9, 0x24, 0x91,
+  0x49, 0x25, 0x80, 0xE0, 0x70 };
+
+const GFXglyph sourcesans8pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   3,    0,    0 },   // 0x20 ' '
+  {     1,   1,  11,   5,    1,  -10 },   // 0x21 '!'
+  {     3,   4,   4,   7,    1,  -10 },   // 0x22 '"'
+  {     5,   8,  10,   8,    0,   -9 },   // 0x23 '#'
+  {    15,   6,  13,   8,    1,  -11 },   // 0x24 '$'
+  {    25,  12,  11,  13,    1,  -10 },   // 0x25 '%'
+  {    42,   8,  11,  10,    1,  -10 },   // 0x26 '&'
+  {    53,   1,   4,   4,    1,  -10 },   // 0x27 '''
+  {    54,   3,  15,   5,    1,  -11 },   // 0x28 '('
+  {    60,   3,  15,   5,    0,  -11 },   // 0x29 ')'
+  {    66,   5,   5,   7,    1,  -11 },   // 0x2A '*'
+  {    70,   5,   7,   8,    1,   -8 },   // 0x2B '+'
+  {    75,   2,   4,   4,    1,    0 },   // 0x2C ','
+  {    76,   3,   1,   5,    1,   -4 },   // 0x2D '-'
+  {    77,   1,   2,   4,    1,   -1 },   // 0x2E '.'
+  {    78,   5,  15,   6,    0,  -11 },   // 0x2F '/'
+  {    88,   6,  10,   8,    1,   -9 },   // 0x30 '0'
+  {    96,   5,  10,   8,    2,   -9 },   // 0x31 '1'
+  {   103,   7,  10,   8,    0,   -9 },   // 0x32 '2'
+  {   112,   6,  10,   8,    1,   -9 },   // 0x33 '3'
+  {   120,   6,  10,   8,    1,   -9 },   // 0x34 '4'
+  {   128,   6,  10,   8,    1,   -9 },   // 0x35 '5'
+  {   136,   6,  10,   8,    1,   -9 },   // 0x36 '6'
+  {   144,   6,  10,   8,    1,   -9 },   // 0x37 '7'
+  {   152,   6,  10,   8,    1,   -9 },   // 0x38 '8'
+  {   160,   6,  10,   8,    1,   -9 },   // 0x39 '9'
+  {   168,   1,   8,   4,    1,   -7 },   // 0x3A ':'
+  {   169,   1,  11,   4,    1,   -7 },   // 0x3B ';'
+  {   171,   6,   7,   8,    1,   -8 },   // 0x3C '<'
+  {   177,   6,   5,   8,    1,   -7 },   // 0x3D '='
+  {   181,   6,   7,   8,    1,   -8 },   // 0x3E '>'
+  {   187,   5,  11,   7,    1,  -10 },   // 0x3F '?'
+  {   194,  12,  12,  14,    1,   -9 },   // 0x40 '@'
+  {   212,   8,  11,   9,    0,  -10 },   // 0x41 'A'
+  {   223,   7,  11,   9,    1,  -10 },   // 0x42 'B'
+  {   233,   7,  11,   9,    1,  -10 },   // 0x43 'C'
+  {   243,   8,  11,  10,    1,  -10 },   // 0x44 'D'
+  {   254,   6,  11,   8,    1,  -10 },   // 0x45 'E'
+  {   263,   6,  11,   8,    1,  -10 },   // 0x46 'F'
+  {   272,   8,  11,  10,    1,  -10 },   // 0x47 'G'
+  {   283,   8,  11,  10,    1,  -10 },   // 0x48 'H'
+  {   294,   1,  11,   4,    1,  -10 },   // 0x49 'I'
+  {   296,   5,  11,   8,    1,  -10 },   // 0x4A 'J'
+  {   303,   7,  11,   9,    1,  -10 },   // 0x4B 'K'
+  {   313,   5,  11,   8,    1,  -10 },   // 0x4C 'L'
+  {   320,   9,  11,  12,    1,  -10 },   // 0x4D 'M'
+  {   333,   8,  11,  10,    1,  -10 },   // 0x4E 'N'
+  {   344,   8,  11,  11,    1,  -10 },   // 0x4F 'O'
+  {   355,   7,  11,   9,    1,  -10 },   // 0x50 'P'
+  {   365,   8,  14,  11,    1,  -10 },   // 0x51 'Q'
+  {   379,   8,  11,   9,    1,  -10 },   // 0x52 'R'
+  {   390,   8,  11,   9,    0,  -10 },   // 0x53 'S'
+  {   401,   7,  11,   9,    1,  -10 },   // 0x54 'T'
+  {   411,   8,  11,  10,    1,  -10 },   // 0x55 'U'
+  {   422,   8,  11,   8,    0,  -10 },   // 0x56 'V'
+  {   433,  12,  11,  13,    0,  -10 },   // 0x57 'W'
+  {   450,   8,  11,   8,    0,  -10 },   // 0x58 'X'
+  {   461,   7,  11,   8,    0,  -10 },   // 0x59 'Y'
+  {   471,   7,  11,   9,    1,  -10 },   // 0x5A 'Z'
+  {   481,   3,  14,   5,    2,  -11 },   // 0x5B '['
+  {   487,   6,  14,   6,    0,  -10 },   // 0x5C '\'
+  {   498,   3,  14,   5,    1,  -11 },   // 0x5D ']'
+  {   504,   6,   6,   8,    1,  -10 },   // 0x5E '^'
+  {   509,   8,   1,   8,    0,    2 },   // 0x5F '_'
+  {   510,   3,   2,   9,    3,  -10 },   // 0x60 '`'
+  {   511,   6,   8,   8,    1,   -7 },   // 0x61 'a'
+  {   517,   7,  11,   9,    1,  -10 },   // 0x62 'b'
+  {   527,   6,   8,   7,    1,   -7 },   // 0x63 'c'
+  {   533,   6,  11,   9,    1,  -10 },   // 0x64 'd'
+  {   542,   6,   8,   8,    1,   -7 },   // 0x65 'e'
+  {   548,   4,  12,   5,    1,  -11 },   // 0x66 'f'
+  {   554,   7,  12,   8,    1,   -7 },   // 0x67 'g'
+  {   565,   6,  11,   9,    1,  -10 },   // 0x68 'h'
+  {   574,   1,  10,   4,    1,   -9 },   // 0x69 'i'
+  {   576,   3,  13,   4,   -1,   -9 },   // 0x6A 'j'
+  {   581,   6,  11,   8,    1,  -10 },   // 0x6B 'k'
+  {   590,   2,  11,   4,    1,  -10 },   // 0x6C 'l'
+  {   593,  11,   8,  13,    1,   -7 },   // 0x6D 'm'
+  {   604,   6,   8,   9,    1,   -7 },   // 0x6E 'n'
+  {   610,   7,   8,   9,    1,   -7 },   // 0x6F 'o'
+  {   617,   7,  11,   9,    1,   -7 },   // 0x70 'p'
+  {   627,   6,  11,   9,    1,   -7 },   // 0x71 'q'
+  {   636,   4,   8,   6,    1,   -7 },   // 0x72 'r'
+  {   640,   5,   8,   7,    1,   -7 },   // 0x73 's'
+  {   645,   4,  10,   5,    1,   -9 },   // 0x74 't'
+  {   650,   6,   8,   9,    1,   -7 },   // 0x75 'u'
+  {   656,   7,   8,   7,    0,   -7 },   // 0x76 'v'
+  {   663,  11,   8,  11,    0,   -7 },   // 0x77 'w'
+  {   674,   7,   8,   7,    0,   -7 },   // 0x78 'x'
+  {   681,   7,  11,   7,    0,   -7 },   // 0x79 'y'
+  {   691,   6,   8,   7,    0,   -7 },   // 0x7A 'z'
+  {   697,   3,  14,   5,    1,  -11 },   // 0x7B '{'
+  {   703,   1,  16,   4,    1,  -11 },   // 0x7C '|'
+  {   705,   3,  14,   5,    1,  -11 },   // 0x7D '}'
+  {   711,   6,   2,   8,    1,   -5 } }; // 0x7E '~'
+
+const GFXfont sourcesans8pt7b PROGMEM = {
+  (uint8_t  *)sourcesans8pt7bBitmaps,
+  (GFXglyph *)sourcesans8pt7bGlyphs,
+  0x20, 0x7E, 21 };
+
+
+const uint8_t sourcesans10pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xFF, 0xCF, 0xC0, 0xDE, 0xF7, 0xBD, 0x80, 0x22, 0x22, 0xFF,
+  0xFF, 0x22, 0x22, 0xFF, 0xFF, 0x44, 0x44, 0x44, 0x44, 0x30, 0x61, 0xF6,
+  0x2C, 0x18, 0x38, 0x38, 0x1C, 0x1C, 0x18, 0x38, 0xFF, 0x9E, 0x18, 0x78,
+  0x10, 0xFC, 0x20, 0xCC, 0x20, 0xCC, 0x40, 0xCC, 0x9C, 0xCC, 0xBE, 0xCD,
+  0x77, 0x7A, 0x63, 0x32, 0x63, 0x04, 0x63, 0x08, 0x63, 0x08, 0x7F, 0x10,
+  0x3E, 0x1E, 0x03, 0xE0, 0xCC, 0x19, 0x83, 0x60, 0x38, 0x0E, 0x1B, 0x62,
+  0xC6, 0xD8, 0x73, 0x8F, 0x3F, 0xB3, 0xC2, 0xFF, 0xC0, 0x11, 0x22, 0x64,
+  0xCC, 0xCC, 0xCC, 0xC4, 0x62, 0x21, 0x00, 0x88, 0x44, 0x62, 0x33, 0x33,
+  0x33, 0x32, 0x64, 0x48, 0x00, 0x10, 0x21, 0xF1, 0xC2, 0x88, 0x80, 0x30,
+  0xC3, 0x3F, 0xFC, 0xC3, 0x0C, 0x33, 0x36, 0xC0, 0xFF, 0xFC, 0x00, 0x03,
+  0x06, 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30,
+  0x60, 0x60, 0x60, 0xC0, 0x00, 0x3C, 0x7E, 0x66, 0xC3, 0xC3, 0xC3, 0xC3,
+  0xC3, 0xC3, 0xC3, 0xC3, 0x66, 0x7E, 0x3C, 0x71, 0xC3, 0x0C, 0x30, 0xC3,
+  0x0C, 0x30, 0xC3, 0x3F, 0xFC, 0x3C, 0x3F, 0x31, 0xC0, 0x60, 0x30, 0x18,
+  0x0C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0xFC, 0x1E, 0x1F, 0x98,
+  0xE0, 0x30, 0x18, 0x1C, 0x38, 0x1E, 0x03, 0x80, 0xC0, 0x60, 0x3C, 0x31,
+  0xF0, 0x06, 0x0E, 0x16, 0x16, 0x26, 0x46, 0x86, 0xFF, 0xFF, 0x06, 0x06,
+  0x06, 0x06, 0x3F, 0x18, 0x0C, 0x07, 0xC3, 0xF1, 0x1C, 0x06, 0x03, 0x01,
+  0x80, 0xF0, 0xC7, 0x80, 0x1F, 0x18, 0x98, 0x18, 0x0C, 0xE6, 0xFB, 0x8F,
+  0x83, 0xC1, 0xF0, 0xD8, 0xEF, 0xE1, 0xE0, 0xFE, 0x0C, 0x10, 0x60, 0x83,
+  0x06, 0x08, 0x30, 0x60, 0xC1, 0x80, 0x1C, 0x3E, 0x63, 0x63, 0x63, 0x32,
+  0x1C, 0x2E, 0xC3, 0xC3, 0xC3, 0xE3, 0x7E, 0x3C, 0x3C, 0x7E, 0xE6, 0xC3,
+  0xC3, 0xC3, 0xE7, 0x7F, 0x3B, 0x03, 0x02, 0x06, 0x44, 0x78, 0xFC, 0x03,
+  0xF0, 0xFC, 0x00, 0xFF, 0x80, 0x00, 0x07, 0x1C, 0xF0, 0xC0, 0x70, 0x1E,
+  0x03, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xE0, 0x38, 0x0F, 0x03,
+  0x0E, 0x70, 0xC0, 0x7D, 0x0C, 0x18, 0x30, 0xC3, 0x04, 0x18, 0x00, 0x00,
+  0xC1, 0x83, 0x00, 0x03, 0xF0, 0x0F, 0xF8, 0x1C, 0x1C, 0x38, 0x06, 0x70,
+  0x06, 0x63, 0x83, 0xE7, 0xA3, 0xC6, 0x63, 0xCC, 0x63, 0xCC, 0x63, 0xCC,
+  0x66, 0xCF, 0xFE, 0xE7, 0x38, 0x70, 0x00, 0x38, 0x00, 0x1F, 0xE0, 0x07,
+  0xC0, 0x0E, 0x01, 0x40, 0x28, 0x0D, 0x81, 0xB0, 0x22, 0x0C, 0x61, 0x8C,
+  0x3F, 0x8F, 0xF9, 0x83, 0x30, 0x6C, 0x06, 0xFC, 0x7F, 0xB0, 0xD8, 0x6C,
+  0x37, 0xE3, 0xFD, 0x87, 0xC1, 0xE0, 0xF0, 0xFF, 0xEF, 0xE0, 0x0F, 0x0F,
+  0xE7, 0x09, 0x80, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x07, 0x0C,
+  0xFE, 0x0F, 0x00, 0xFE, 0x3F, 0xCC, 0x3B, 0x07, 0xC0, 0xF0, 0x3C, 0x0F,
+  0x03, 0xC0, 0xF0, 0x6C, 0x3B, 0xFC, 0xFC, 0x00, 0xFF, 0x83, 0x06, 0x0C,
+  0x18, 0x3F, 0x60, 0xC1, 0x83, 0x06, 0x0F, 0xE0, 0xFF, 0x83, 0x06, 0x0C,
+  0x18, 0x3F, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x00, 0x1F, 0x0F, 0xE7, 0x0B,
+  0x80, 0xC0, 0x30, 0x0C, 0x3F, 0x03, 0xC0, 0xD8, 0x37, 0x0C, 0xFF, 0x1F,
+  0x00, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xC0,
+  0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xC7, 0x7E, 0x3C, 0xC1,
+  0xB0, 0xCC, 0x63, 0x18, 0xCC, 0x37, 0x0F, 0xC3, 0x98, 0xC2, 0x30, 0xCC,
+  0x1B, 0x06, 0xC0, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1,
+  0x83, 0x06, 0x0F, 0xE0, 0xE0, 0xFC, 0x1F, 0x83, 0xF8, 0x7D, 0x17, 0xA2,
+  0xF4, 0x5E, 0x53, 0xCA, 0x79, 0x4F, 0x11, 0xE2, 0x3C, 0x06, 0xC0, 0xF8,
+  0x3F, 0x0F, 0x43, 0xD8, 0xF2, 0x3C, 0xCF, 0x13, 0xC6, 0xF0, 0xBC, 0x3F,
+  0x07, 0xC0, 0xC0, 0x1F, 0x83, 0xFC, 0x70, 0xE6, 0x06, 0xC0, 0x3C, 0x03,
+  0xC0, 0x3C, 0x03, 0xC0, 0x36, 0x06, 0x70, 0xE3, 0xFC, 0x1F, 0x80, 0xFE,
+  0x7F, 0xB0, 0xF8, 0x3C, 0x1E, 0x1F, 0xF9, 0x80, 0xC0, 0x60, 0x30, 0x18,
+  0x0C, 0x00, 0x0F, 0x03, 0xFC, 0x70, 0xE6, 0x06, 0xC0, 0x3C, 0x03, 0xC0,
+  0x3C, 0x03, 0xC0, 0x3C, 0x03, 0x60, 0x67, 0x0E, 0x1F, 0x80, 0x60, 0x03,
+  0x00, 0x1F, 0xFE, 0x7F, 0xB0, 0xF8, 0x3C, 0x1E, 0x1B, 0xF9, 0x98, 0xC6,
+  0x63, 0x30, 0xD8, 0x6C, 0x18, 0x1F, 0x0F, 0xE7, 0x09, 0x80, 0x60, 0x0E,
+  0x00, 0xF0, 0x0E, 0x00, 0xC0, 0x36, 0x1D, 0xFE, 0x1F, 0x00, 0xFF, 0x18,
+  0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xC0,
+  0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x36,
+  0x19, 0xFE, 0x3F, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x30, 0x62, 0x0C, 0x63,
+  0x0C, 0x60, 0x8C, 0x19, 0x03, 0x60, 0x2C, 0x07, 0x00, 0xE0, 0xC1, 0x03,
+  0xC1, 0x83, 0x43, 0x86, 0x62, 0x86, 0x62, 0x86, 0x62, 0x46, 0x66, 0x4C,
+  0x24, 0x4C, 0x34, 0x4C, 0x34, 0x2C, 0x3C, 0x38, 0x38, 0x38, 0x18, 0x38,
+  0x60, 0x98, 0x63, 0x10, 0x4C, 0x1A, 0x03, 0x80, 0xC0, 0x78, 0x12, 0x0C,
+  0xC2, 0x19, 0x86, 0x40, 0xC0, 0xC0, 0xD8, 0x26, 0x18, 0x84, 0x33, 0x04,
+  0x81, 0xE0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x00, 0x7F, 0x81,
+  0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0F,
+  0xF8, 0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x80, 0x80, 0x40, 0x40,
+  0x20, 0x20, 0x10, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02,
+  0x01, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x18, 0x38, 0x24, 0x24,
+  0x66, 0x42, 0x42, 0xFF, 0xFF, 0xF0, 0xC8, 0x80, 0x3C, 0x7E, 0x03, 0x1F,
+  0x7F, 0xE3, 0xC3, 0xC7, 0xFF, 0x7B, 0xC0, 0xC0, 0xC0, 0xC0, 0xDC, 0xE6,
+  0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xE6, 0xFC, 0x1E, 0x3F, 0x60, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xC0, 0x61, 0x1E, 0x01, 0x80, 0xC0, 0x60, 0x33, 0xFB,
+  0x1D, 0x87, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x36, 0x39, 0xEC, 0x3E, 0x3F,
+  0xB0, 0x7F, 0xFF, 0xFE, 0x03, 0x00, 0xC2, 0x7F, 0x0F, 0x00, 0x3D, 0xF6,
+  0x18, 0x63, 0xCF, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x00, 0x3F, 0x9F,
+  0xEE, 0x63, 0x0C, 0xC3, 0x39, 0xC7, 0xE3, 0x70, 0xFF, 0x9F, 0xFC, 0x0F,
+  0x07, 0xFF, 0x9F, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3,
+  0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xF0, 0xFF, 0xFF, 0xF0, 0x33, 0x00,
+  0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3,
+  0xC6, 0xCC, 0xD8, 0xD8, 0xFC, 0xE4, 0xC6, 0xC3, 0xC3, 0xDB, 0x6D, 0xB6,
+  0xDB, 0x6C, 0xC0, 0xDE, 0x77, 0x3C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1,
+  0x8F, 0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3,
+  0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x1C, 0x3F, 0x98, 0xD8, 0x3C, 0x1E,
+  0x0F, 0x07, 0x83, 0x63, 0x1F, 0x00, 0xDC, 0xE6, 0xC3, 0xC3, 0xC3, 0xC3,
+  0xC3, 0xC3, 0xE6, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0x3D, 0xB1, 0xD8, 0x78,
+  0x3C, 0x1E, 0x0F, 0x07, 0x83, 0x63, 0x9E, 0xC0, 0x60, 0x30, 0x18, 0x0C,
+  0xDF, 0xEE, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x00, 0x79, 0xFB, 0x16, 0x07,
+  0x03, 0x81, 0xC3, 0xFC, 0xF0, 0x61, 0x8F, 0xBE, 0x61, 0x86, 0x18, 0x61,
+  0x87, 0xCF, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC7, 0x7B,
+  0xC1, 0xA0, 0xD8, 0x4C, 0x62, 0x31, 0x90, 0x58, 0x2C, 0x1C, 0x06, 0x00,
+  0xC7, 0x0F, 0x1C, 0x36, 0x78, 0x99, 0xA6, 0x66, 0x98, 0x9A, 0x43, 0x6D,
+  0x0F, 0x14, 0x3C, 0x60, 0x71, 0x80, 0x63, 0x31, 0x8D, 0x82, 0x81, 0xC0,
+  0xE0, 0xD0, 0x4C, 0x63, 0x20, 0x80, 0xC1, 0xE0, 0x90, 0xCC, 0x62, 0x21,
+  0x30, 0xD8, 0x28, 0x1C, 0x0E, 0x06, 0x07, 0x0F, 0x07, 0x00, 0xFF, 0xFC,
+  0x30, 0x41, 0x06, 0x18, 0x20, 0xFF, 0xFC, 0x19, 0x8C, 0x63, 0x18, 0xDC,
+  0xE1, 0x8C, 0x63, 0x18, 0xC6, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3,
+  0x18, 0xC6, 0x31, 0x87, 0x3B, 0x18, 0xC6, 0x31, 0x8C, 0xC0, 0x60, 0xF1,
+  0x8F, 0x06 };
+
+const GFXglyph sourcesans10pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   4,    0,    0 },   // 0x20 ' '
+  {     1,   2,  13,   6,    2,  -12 },   // 0x21 '!'
+  {     5,   5,   5,   9,    2,  -13 },   // 0x22 '"'
+  {     9,   8,  12,  10,    1,  -11 },   // 0x23 '#'
+  {    21,   7,  16,  10,    2,  -14 },   // 0x24 '$'
+  {    35,  16,  13,  16,    1,  -12 },   // 0x25 '%'
+  {    61,  11,  13,  12,    1,  -12 },   // 0x26 '&'
+  {    79,   2,   5,   5,    2,  -13 },   // 0x27 '''
+  {    81,   4,  19,   6,    2,  -14 },   // 0x28 '('
+  {    91,   4,  19,   6,    1,  -14 },   // 0x29 ')'
+  {   101,   7,   6,   8,    1,  -13 },   // 0x2A '*'
+  {   107,   6,   8,  10,    2,  -10 },   // 0x2B '+'
+  {   113,   4,   5,   5,    1,   -1 },   // 0x2C ','
+  {   116,   4,   2,   6,    1,   -5 },   // 0x2D '-'
+  {   117,   2,   3,   5,    1,   -2 },   // 0x2E '.'
+  {   118,   8,  19,   7,    0,  -14 },   // 0x2F '/'
+  {   137,   8,  14,  10,    1,  -13 },   // 0x30 '0'
+  {   151,   6,  13,  10,    3,  -12 },   // 0x31 '1'
+  {   161,   9,  14,  10,    1,  -13 },   // 0x32 '2'
+  {   177,   9,  14,  10,    0,  -13 },   // 0x33 '3'
+  {   193,   8,  13,  10,    1,  -12 },   // 0x34 '4'
+  {   206,   9,  12,  10,    0,  -11 },   // 0x35 '5'
+  {   220,   9,  13,  10,    1,  -12 },   // 0x36 '6'
+  {   235,   7,  12,  10,    2,  -11 },   // 0x37 '7'
+  {   246,   8,  14,  10,    1,  -13 },   // 0x38 '8'
+  {   260,   8,  14,  10,    1,  -13 },   // 0x39 '9'
+  {   274,   2,  10,   5,    1,   -9 },   // 0x3A ':'
+  {   277,   2,  13,   4,    1,   -9 },   // 0x3B ';'
+  {   281,   8,   8,  10,    1,  -10 },   // 0x3C '<'
+  {   289,   8,   6,  10,    1,   -9 },   // 0x3D '='
+  {   295,   8,   8,  10,    1,  -10 },   // 0x3E '>'
+  {   303,   7,  13,   8,    1,  -12 },   // 0x3F '?'
+  {   315,  16,  17,  17,    1,  -13 },   // 0x40 '@'
+  {   349,  11,  13,  11,    0,  -12 },   // 0x41 'A'
+  {   367,   9,  13,  12,    2,  -12 },   // 0x42 'B'
+  {   382,  10,  13,  11,    1,  -12 },   // 0x43 'C'
+  {   399,  10,  13,  12,    2,  -12 },   // 0x44 'D'
+  {   416,   7,  13,  11,    2,  -12 },   // 0x45 'E'
+  {   428,   7,  13,  10,    2,  -12 },   // 0x46 'F'
+  {   440,  10,  13,  12,    1,  -12 },   // 0x47 'G'
+  {   457,  10,  13,  13,    2,  -12 },   // 0x48 'H'
+  {   474,   2,  13,   5,    2,  -12 },   // 0x49 'I'
+  {   478,   8,  13,  10,    0,  -12 },   // 0x4A 'J'
+  {   491,  10,  13,  12,    2,  -12 },   // 0x4B 'K'
+  {   508,   7,  13,  10,    2,  -12 },   // 0x4C 'L'
+  {   520,  11,  13,  15,    2,  -12 },   // 0x4D 'M'
+  {   538,  10,  13,  13,    2,  -12 },   // 0x4E 'N'
+  {   555,  12,  13,  13,    1,  -12 },   // 0x4F 'O'
+  {   575,   9,  13,  12,    2,  -12 },   // 0x50 'P'
+  {   590,  12,  16,  13,    1,  -12 },   // 0x51 'Q'
+  {   614,   9,  13,  12,    2,  -12 },   // 0x52 'R'
+  {   629,  10,  13,  11,    0,  -12 },   // 0x53 'S'
+  {   646,   8,  13,  11,    2,  -12 },   // 0x54 'T'
+  {   659,  10,  13,  13,    2,  -12 },   // 0x55 'U'
+  {   676,  11,  13,  10,    0,  -12 },   // 0x56 'V'
+  {   694,  16,  13,  16,    0,  -12 },   // 0x57 'W'
+  {   720,  10,  13,  10,    0,  -12 },   // 0x58 'X'
+  {   737,  10,  13,  10,    0,  -12 },   // 0x59 'Y'
+  {   754,   9,  13,  11,    1,  -12 },   // 0x5A 'Z'
+  {   769,   3,  17,   6,    2,  -13 },   // 0x5B '['
+  {   776,   8,  17,   7,    0,  -13 },   // 0x5C '\'
+  {   793,   3,  17,   6,    1,  -13 },   // 0x5D ']'
+  {   800,   8,   7,  10,    1,  -12 },   // 0x5E '^'
+  {   807,  10,   2,  10,    0,    2 },   // 0x5F '_'
+  {   810,   3,   3,  11,    3,  -13 },   // 0x60 '`'
+  {   812,   8,  10,  10,    1,   -9 },   // 0x61 'a'
+  {   822,   8,  14,  11,    2,  -13 },   // 0x62 'b'
+  {   836,   8,  10,   9,    1,   -9 },   // 0x63 'c'
+  {   846,   9,  14,  11,    1,  -13 },   // 0x64 'd'
+  {   862,   9,  10,  10,    1,   -9 },   // 0x65 'e'
+  {   874,   6,  15,   6,    1,  -14 },   // 0x66 'f'
+  {   886,  10,  14,  10,    1,   -9 },   // 0x67 'g'
+  {   904,   8,  14,  11,    2,  -13 },   // 0x68 'h'
+  {   918,   2,  14,   5,    1,  -13 },   // 0x69 'i'
+  {   922,   4,  18,   5,    0,  -13 },   // 0x6A 'j'
+  {   931,   8,  14,  10,    2,  -13 },   // 0x6B 'k'
+  {   945,   3,  14,   5,    2,  -13 },   // 0x6C 'l'
+  {   951,  13,  10,  17,    2,   -9 },   // 0x6D 'm'
+  {   968,   8,  10,  11,    2,   -9 },   // 0x6E 'n'
+  {   978,   9,  10,  11,    1,   -9 },   // 0x6F 'o'
+  {   990,   8,  14,  11,    2,   -9 },   // 0x70 'p'
+  {  1004,   9,  14,  11,    1,   -9 },   // 0x71 'q'
+  {  1020,   6,  10,   7,    2,   -9 },   // 0x72 'r'
+  {  1028,   7,  10,   8,    1,   -9 },   // 0x73 's'
+  {  1037,   6,  12,   7,    1,  -11 },   // 0x74 't'
+  {  1046,   8,  10,  11,    2,   -9 },   // 0x75 'u'
+  {  1056,   9,  10,   9,    0,   -9 },   // 0x76 'v'
+  {  1068,  14,  10,  14,    0,   -9 },   // 0x77 'w'
+  {  1086,   9,  10,   9,    0,   -9 },   // 0x78 'x'
+  {  1098,   9,  14,   9,    1,   -9 },   // 0x79 'y'
+  {  1114,   7,  10,   8,    1,   -9 },   // 0x7A 'z'
+  {  1123,   5,  17,   6,    0,  -13 },   // 0x7B '{'
+  {  1134,   2,  20,   5,    2,  -14 },   // 0x7C '|'
+  {  1139,   5,  17,   6,    2,  -13 },   // 0x7D '}'
+  {  1150,   8,   4,  10,    1,   -8 } }; // 0x7E '~'
+
+const GFXfont sourcesans10pt7b PROGMEM = {
+  (uint8_t  *)sourcesans10pt7bBitmaps,
+  (GFXglyph *)sourcesans10pt7bGlyphs,
+  0x20, 0x7E, 26 };
+
+const uint8_t sourcesans9pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xFF, 0x0F, 0xDE, 0xF7, 0xBD, 0x80, 0x24, 0x48, 0x97, 0xF2,
+  0x4D, 0xBF, 0xA4, 0x48, 0x91, 0x20, 0x18, 0x31, 0xF7, 0x2C, 0x18, 0x18,
+  0x0C, 0x0E, 0x0C, 0x1C, 0x37, 0xC3, 0x00, 0x78, 0x43, 0x21, 0x0C, 0xC8,
+  0x33, 0x20, 0xCD, 0x03, 0x35, 0xE7, 0xAC, 0xC1, 0x33, 0x04, 0xCC, 0x23,
+  0x30, 0x84, 0x84, 0x1E, 0x1E, 0x06, 0x60, 0xCC, 0x19, 0x81, 0x60, 0x30,
+  0x1E, 0x1F, 0x22, 0xC2, 0xD8, 0x71, 0x8F, 0x1F, 0x30, 0xFF, 0xC0, 0x12,
+  0x26, 0x4C, 0xCC, 0xCC, 0xC4, 0x62, 0x21, 0x84, 0x46, 0x23, 0x33, 0x33,
+  0x32, 0x64, 0x48, 0x21, 0x3E, 0xED, 0x80, 0x30, 0xC3, 0x3F, 0x30, 0xC3,
+  0x00, 0x33, 0x64, 0xF0, 0xF0, 0x00, 0x08, 0x10, 0x20, 0x81, 0x02, 0x08,
+  0x10, 0x40, 0x81, 0x04, 0x08, 0x20, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3,
+  0xC3, 0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x71, 0x8C, 0x63, 0x18, 0xC6,
+  0x31, 0xBE, 0x78, 0x8C, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x30,
+  0x20, 0x7F, 0x3C, 0x66, 0x03, 0x03, 0x03, 0x06, 0x0C, 0x03, 0x03, 0x03,
+  0xC6, 0x7C, 0x0C, 0x18, 0xF1, 0x64, 0xD1, 0xA3, 0x7F, 0x0C, 0x18, 0x30,
+  0x7E, 0x60, 0x60, 0x40, 0xFC, 0x46, 0x03, 0x03, 0x03, 0xC6, 0x7C, 0x3E,
+  0x62, 0x60, 0xC0, 0xDC, 0xE7, 0xC3, 0xC3, 0x43, 0x66, 0x3C, 0xFC, 0x21,
+  0x84, 0x30, 0xC2, 0x18, 0x61, 0x86, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x32,
+  0x1C, 0x2E, 0xC3, 0xC3, 0xC3, 0x63, 0x3C, 0x3C, 0x66, 0xC6, 0xC3, 0xC3,
+  0xC3, 0x67, 0x3B, 0x03, 0x06, 0x46, 0x7C, 0xF0, 0x0F, 0xF0, 0x03, 0xF8,
+  0x00, 0x0C, 0xE6, 0x0C, 0x07, 0x03, 0x80, 0xFE, 0x00, 0x00, 0x0F, 0xE0,
+  0x01, 0x80, 0xE0, 0x30, 0x67, 0x38, 0x00, 0x7B, 0x30, 0xC3, 0x08, 0x41,
+  0x0C, 0x00, 0x03, 0x0C, 0x07, 0xC0, 0x60, 0xC3, 0x01, 0x98, 0x07, 0x67,
+  0x0F, 0x32, 0x3D, 0x88, 0xF6, 0x23, 0xD8, 0x8B, 0x66, 0x6C, 0xEF, 0x18,
+  0x00, 0x60, 0x00, 0xE0, 0x00, 0xF8, 0x00, 0x0C, 0x03, 0x01, 0xE0, 0x48,
+  0x12, 0x0C, 0xC3, 0x30, 0xFC, 0x61, 0x98, 0x64, 0x0B, 0x03, 0xFC, 0xC6,
+  0xC6, 0xC6, 0xC4, 0xF8, 0xC6, 0xC3, 0xC3, 0xC3, 0xC6, 0xFC, 0x1F, 0x18,
+  0xD8, 0x08, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x63, 0xE0,
+  0xFC, 0x63, 0x30, 0xD8, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE1, 0xB1,
+  0x9F, 0x80, 0xFF, 0x0C, 0x30, 0xC3, 0xEC, 0x30, 0xC3, 0x0C, 0x3F, 0xFF,
+  0x0C, 0x30, 0xC3, 0x0F, 0xF0, 0xC3, 0x0C, 0x30, 0x1F, 0x8C, 0x26, 0x03,
+  0x00, 0xC0, 0x30, 0x0C, 0x1F, 0x03, 0xC0, 0xD8, 0x33, 0x0C, 0x7E, 0xC1,
+  0xE0, 0xF0, 0x78, 0x3C, 0x1F, 0xFF, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78,
+  0x30, 0xFF, 0xFF, 0xFF, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06,
+  0x0F, 0x33, 0xC0, 0xC1, 0x61, 0x31, 0x99, 0x8D, 0x87, 0xE3, 0xB1, 0xCC,
+  0xC2, 0x61, 0xB0, 0x58, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3,
+  0x0C, 0x3F, 0xC0, 0xF8, 0x7E, 0x1F, 0x87, 0xD2, 0xF4, 0xBD, 0x2F, 0x33,
+  0xCC, 0xF3, 0x3C, 0x0F, 0x03, 0xC1, 0xF0, 0xF8, 0x7A, 0x3D, 0x1E, 0x4F,
+  0x27, 0x8B, 0xC5, 0xE1, 0xF0, 0xF8, 0x30, 0x1E, 0x1C, 0xE6, 0x1B, 0x03,
+  0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xD8, 0x63, 0x30, 0x78, 0xFC, 0xC7,
+  0xC3, 0xC3, 0xC3, 0xC6, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x1E, 0x1C,
+  0xE6, 0x1B, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xD8, 0x66, 0x18,
+  0xFC, 0x0C, 0x01, 0x80, 0x3C, 0xFC, 0xC7, 0xC3, 0xC3, 0xC3, 0xC6, 0xFC,
+  0xC8, 0xCC, 0xC6, 0xC6, 0xC3, 0x3C, 0xE2, 0xC0, 0xC0, 0x60, 0x38, 0x0E,
+  0x07, 0x03, 0x03, 0xC6, 0x7C, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+  0x18, 0x18, 0x18, 0x18, 0x18, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F,
+  0x07, 0x83, 0xC1, 0xE0, 0xD8, 0xC7, 0xC0, 0xC0, 0xD0, 0x36, 0x19, 0x86,
+  0x21, 0x8C, 0xC3, 0x30, 0x4C, 0x16, 0x07, 0x80, 0xE0, 0x30, 0xC3, 0x0F,
+  0x0C, 0x34, 0x30, 0x99, 0xC6, 0x64, 0x99, 0x92, 0x66, 0x49, 0x09, 0x24,
+  0x38, 0x70, 0xE1, 0xC3, 0x86, 0x0E, 0x18, 0x41, 0x31, 0x88, 0x86, 0xC1,
+  0xC0, 0x60, 0x70, 0x28, 0x36, 0x11, 0x98, 0xC8, 0x30, 0x40, 0x98, 0x62,
+  0x10, 0xCC, 0x12, 0x07, 0x80, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30,
+  0xFF, 0x02, 0x06, 0x04, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x60, 0xC0, 0xFF,
+  0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xB7, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08,
+  0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x81, 0x01, 0xED, 0xB6, 0xDB, 0x6D,
+  0xB6, 0xDF, 0x10, 0x50, 0xA3, 0x64, 0x48, 0xB1, 0x80, 0xFF, 0x80, 0xC8,
+  0x80, 0x7C, 0x8C, 0x18, 0xF6, 0x78, 0xF1, 0xE7, 0x76, 0xC0, 0x60, 0x30,
+  0x18, 0x0D, 0xE7, 0x1B, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0,
+  0x1E, 0xC5, 0x06, 0x0C, 0x18, 0x30, 0x31, 0x1E, 0x03, 0x03, 0x03, 0x03,
+  0x3F, 0x63, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66, 0xC3,
+  0xC3, 0xFF, 0xC0, 0xC0, 0x62, 0x3E, 0x39, 0x86, 0x18, 0xF1, 0x86, 0x18,
+  0x61, 0x86, 0x18, 0x60, 0x7F, 0x62, 0x31, 0x98, 0xCE, 0xC3, 0xC3, 0x01,
+  0x80, 0x7F, 0x60, 0xF0, 0x78, 0x67, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xDE,
+  0xE3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0x30,
+  0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3E, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6,
+  0xC4, 0xC8, 0xD8, 0xF8, 0xEC, 0xC4, 0xC6, 0xC3, 0xDB, 0x6D, 0xB6, 0xDB,
+  0x6E, 0xDE, 0x77, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F, 0x0C,
+  0x78, 0x63, 0xC3, 0x18, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
+  0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x66, 0x3C, 0xDE, 0x71,
+  0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0xC6, 0xDE, 0x60, 0x30, 0x18, 0x0C,
+  0x00, 0x3F, 0x63, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03,
+  0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18, 0xC0, 0x7D, 0x8B, 0x07, 0x03, 0xC1,
+  0xC1, 0xC3, 0x7C, 0x61, 0x8F, 0x18, 0x61, 0x86, 0x18, 0x61, 0x83, 0xC0,
+  0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0x43, 0x62,
+  0x62, 0x26, 0x34, 0x34, 0x1C, 0x18, 0xC2, 0x1E, 0x38, 0xD9, 0x4C, 0xCA,
+  0x66, 0x53, 0x14, 0xD0, 0xE2, 0x87, 0x1C, 0x38, 0xC0, 0x42, 0x66, 0x34,
+  0x1C, 0x18, 0x3C, 0x24, 0x66, 0x42, 0x41, 0xA0, 0x98, 0xC4, 0x62, 0x21,
+  0xB0, 0x58, 0x28, 0x0C, 0x06, 0x06, 0x02, 0x06, 0x00, 0xFC, 0x31, 0x84,
+  0x31, 0x84, 0x30, 0xFC, 0x19, 0x8C, 0x63, 0x18, 0xD8, 0x31, 0x8C, 0x63,
+  0x18, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xC3, 0x18, 0xC6, 0x31, 0x83,
+  0x63, 0x18, 0xC6, 0x31, 0x98, 0xE3, 0x3C };
+
+const GFXglyph sourcesans9pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   4,    0,    0 },   // 0x20 ' '
+  {     1,   2,  12,   5,    2,  -11 },   // 0x21 '!'
+  {     4,   5,   5,   8,    2,  -12 },   // 0x22 '"'
+  {     8,   7,  11,   9,    1,  -10 },   // 0x23 '#'
+  {    18,   7,  14,   9,    1,  -12 },   // 0x24 '$'
+  {    31,  14,  12,  15,    1,  -11 },   // 0x25 '%'
+  {    52,  11,  12,  11,    1,  -11 },   // 0x26 '&'
+  {    69,   2,   5,   4,    2,  -12 },   // 0x27 '''
+  {    71,   4,  16,   5,    1,  -12 },   // 0x28 '('
+  {    79,   4,  16,   5,    1,  -12 },   // 0x29 ')'
+  {    87,   5,   5,   8,    1,  -12 },   // 0x2A '*'
+  {    91,   6,   7,   9,    2,   -8 },   // 0x2B '+'
+  {    97,   4,   4,   4,    0,    0 },   // 0x2C ','
+  {    99,   4,   1,   6,    1,   -4 },   // 0x2D '-'
+  {   100,   2,   2,   4,    1,   -1 },   // 0x2E '.'
+  {   101,   7,  16,   6,    0,  -12 },   // 0x2F '/'
+  {   115,   8,  12,   9,    1,  -11 },   // 0x30 '0'
+  {   127,   5,  11,   9,    2,  -10 },   // 0x31 '1'
+  {   134,   8,  12,   9,    1,  -11 },   // 0x32 '2'
+  {   146,   8,  12,   9,    1,  -11 },   // 0x33 '3'
+  {   158,   7,  11,   9,    1,  -10 },   // 0x34 '4'
+  {   168,   8,  11,   9,    1,  -10 },   // 0x35 '5'
+  {   179,   8,  11,   9,    1,  -10 },   // 0x36 '6'
+  {   190,   6,  11,   9,    2,  -10 },   // 0x37 '7'
+  {   199,   8,  12,   9,    1,  -11 },   // 0x38 '8'
+  {   211,   8,  12,   9,    1,  -11 },   // 0x39 '9'
+  {   223,   2,   8,   4,    1,   -7 },   // 0x3A ':'
+  {   225,   2,  11,   4,    1,   -7 },   // 0x3B ';'
+  {   228,   7,   8,   9,    1,   -9 },   // 0x3C '<'
+  {   235,   7,   5,   9,    1,   -7 },   // 0x3D '='
+  {   240,   7,   8,   9,    1,   -9 },   // 0x3E '>'
+  {   247,   6,  12,   8,    1,  -11 },   // 0x3F '?'
+  {   256,  14,  15,  15,    1,  -11 },   // 0x40 '@'
+  {   283,  10,  12,  10,    0,  -11 },   // 0x41 'A'
+  {   298,   8,  12,  11,    2,  -11 },   // 0x42 'B'
+  {   310,   9,  12,  10,    1,  -11 },   // 0x43 'C'
+  {   324,   9,  12,  11,    2,  -11 },   // 0x44 'D'
+  {   338,   6,  12,   9,    2,  -11 },   // 0x45 'E'
+  {   347,   6,  12,   9,    2,  -11 },   // 0x46 'F'
+  {   356,  10,  12,  11,    1,  -11 },   // 0x47 'G'
+  {   371,   9,  12,  12,    2,  -11 },   // 0x48 'H'
+  {   385,   2,  12,   5,    2,  -11 },   // 0x49 'I'
+  {   388,   7,  12,   9,    1,  -11 },   // 0x4A 'J'
+  {   399,   9,  12,  10,    2,  -11 },   // 0x4B 'K'
+  {   413,   6,  12,   9,    2,  -11 },   // 0x4C 'L'
+  {   422,  10,  12,  13,    2,  -11 },   // 0x4D 'M'
+  {   437,   9,  12,  12,    2,  -11 },   // 0x4E 'N'
+  {   451,  10,  12,  12,    1,  -11 },   // 0x4F 'O'
+  {   466,   8,  12,  10,    2,  -11 },   // 0x50 'P'
+  {   478,  10,  15,  12,    1,  -11 },   // 0x51 'Q'
+  {   497,   8,  12,  10,    2,  -11 },   // 0x52 'R'
+  {   509,   8,  12,  10,    1,  -11 },   // 0x53 'S'
+  {   521,   8,  12,  10,    1,  -11 },   // 0x54 'T'
+  {   533,   9,  12,  12,    2,  -11 },   // 0x55 'U'
+  {   547,  10,  12,   9,    0,  -11 },   // 0x56 'V'
+  {   562,  14,  12,  14,    0,  -11 },   // 0x57 'W'
+  {   583,   9,  12,   9,    0,  -11 },   // 0x58 'X'
+  {   597,  10,  12,   9,    0,  -11 },   // 0x59 'Y'
+  {   612,   8,  12,  10,    1,  -11 },   // 0x5A 'Z'
+  {   624,   3,  16,   5,    2,  -12 },   // 0x5B '['
+  {   630,   7,  16,   6,    0,  -12 },   // 0x5C '\'
+  {   644,   3,  16,   5,    1,  -12 },   // 0x5D ']'
+  {   650,   7,   7,   9,    1,  -11 },   // 0x5E '^'
+  {   657,   9,   1,   9,    0,    2 },   // 0x5F '_'
+  {   659,   3,   3,  10,    3,  -12 },   // 0x60 '`'
+  {   661,   7,   9,   9,    1,   -8 },   // 0x61 'a'
+  {   669,   9,  13,  10,    1,  -12 },   // 0x62 'b'
+  {   684,   7,   9,   8,    1,   -8 },   // 0x63 'c'
+  {   692,   8,  13,  10,    1,  -12 },   // 0x64 'd'
+  {   705,   8,   9,   9,    1,   -8 },   // 0x65 'e'
+  {   714,   6,  13,   5,    1,  -12 },   // 0x66 'f'
+  {   724,   9,  13,   9,    1,   -8 },   // 0x67 'g'
+  {   739,   8,  13,  10,    1,  -12 },   // 0x68 'h'
+  {   752,   2,  12,   4,    1,  -11 },   // 0x69 'i'
+  {   755,   4,  16,   4,    0,  -11 },   // 0x6A 'j'
+  {   763,   8,  13,   9,    1,  -12 },   // 0x6B 'k'
+  {   776,   3,  13,   5,    1,  -12 },   // 0x6C 'l'
+  {   781,  13,   9,  15,    1,   -8 },   // 0x6D 'm'
+  {   796,   8,   9,  10,    1,   -8 },   // 0x6E 'n'
+  {   805,   8,   9,  10,    1,   -8 },   // 0x6F 'o'
+  {   814,   9,  13,  10,    1,   -8 },   // 0x70 'p'
+  {   829,   8,  12,  10,    1,   -8 },   // 0x71 'q'
+  {   841,   5,   9,   6,    1,   -8 },   // 0x72 'r'
+  {   847,   7,   9,   8,    1,   -8 },   // 0x73 's'
+  {   855,   6,  11,   6,    1,  -10 },   // 0x74 't'
+  {   864,   8,   9,  10,    1,   -8 },   // 0x75 'u'
+  {   873,   8,   9,   8,    0,   -8 },   // 0x76 'v'
+  {   882,  13,   9,  13,    0,   -8 },   // 0x77 'w'
+  {   897,   8,   9,   8,    0,   -8 },   // 0x78 'x'
+  {   906,   9,  13,   8,    0,   -8 },   // 0x79 'y'
+  {   921,   6,   9,   8,    1,   -8 },   // 0x7A 'z'
+  {   928,   5,  16,   5,    0,  -12 },   // 0x7B '{'
+  {   938,   2,  19,   4,    2,  -13 },   // 0x7C '|'
+  {   943,   5,  16,   5,    1,  -12 },   // 0x7D '}'
+  {   953,   7,   2,   9,    1,   -6 } }; // 0x7E '~'
+
+const GFXfont sourcesans9pt7b PROGMEM = {
+  (uint8_t  *)sourcesans9pt7bBitmaps,
+  (GFXglyph *)sourcesans9pt7bGlyphs,
+  0x20, 0x7E, 24 };
+
+// Approx. 1627 bytes
+const uint8_t sourcesans_semi9pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xD5, 0x3F, 0xCF, 0x3C, 0xF3, 0xCC, 0x24, 0x4B, 0xFF, 0xF2,
+  0x5F, 0xFF, 0xA4, 0x48, 0x91, 0x20, 0x18, 0x31, 0xFE, 0x2C, 0x1C, 0x1E,
+  0x0E, 0x0E, 0x0E, 0x1F, 0xF7, 0xC3, 0x00, 0x78, 0x43, 0xF1, 0x0C, 0xC8,
+  0x33, 0x20, 0xCD, 0x7B, 0x35, 0xE7, 0xAC, 0xDE, 0xB3, 0x04, 0xCC, 0x13,
+  0x30, 0x8F, 0xC2, 0x1E, 0x3C, 0x1F, 0x86, 0x61, 0x98, 0x6C, 0x0E, 0x07,
+  0x8F, 0x76, 0xCF, 0x31, 0xE7, 0xFC, 0xF3, 0xFF, 0xC0, 0x32, 0x66, 0xCC,
+  0xCC, 0xCC, 0xCC, 0x66, 0x23, 0xC4, 0x66, 0x33, 0x33, 0x33, 0x33, 0x66,
+  0x4C, 0x10, 0x21, 0xF1, 0xC2, 0x85, 0x00, 0x30, 0xCF, 0xFF, 0x30, 0xC0,
+  0x33, 0x36, 0xC0, 0xFF, 0xFC, 0x00, 0x10, 0x82, 0x18, 0x41, 0x0C, 0x30,
+  0x82, 0x18, 0x41, 0x08, 0x00, 0x3C, 0x7E, 0x66, 0xC3, 0xC3, 0xC3, 0xC3,
+  0xC3, 0xC3, 0x66, 0x7E, 0x3C, 0xF3, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x33,
+  0xFF, 0xC0, 0x78, 0xFC, 0xCE, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x70,
+  0xFF, 0xFF, 0x3E, 0x7F, 0x23, 0x03, 0x07, 0x1E, 0x1E, 0x03, 0x03, 0x43,
+  0xFE, 0x3C, 0x0E, 0x1E, 0x1E, 0x36, 0x66, 0x46, 0xFF, 0xFF, 0x06, 0x06,
+  0x06, 0x3E, 0x3E, 0x30, 0x60, 0x6C, 0x7E, 0x07, 0x03, 0x03, 0x47, 0x7E,
+  0x3C, 0x1E, 0x7F, 0x62, 0xC0, 0xDC, 0xFE, 0xE3, 0xC3, 0xC3, 0x67, 0x7E,
+  0x3C, 0xFF, 0xFC, 0x10, 0x60, 0x83, 0x06, 0x08, 0x30, 0x60, 0xC1, 0x80,
+  0x38, 0xFB, 0x1E, 0x3E, 0x6F, 0x9F, 0x63, 0xC7, 0x8D, 0xF1, 0xC0, 0x38,
+  0xFB, 0x36, 0x3C, 0x79, 0xDF, 0xBB, 0x06, 0x1B, 0xF3, 0xC0, 0xFC, 0x0F,
+  0xC0, 0xFC, 0x03, 0xFE, 0x01, 0x0F, 0x3C, 0xE0, 0xE0, 0x7C, 0x0F, 0x01,
+  0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xE0, 0x7C, 0x0F, 0x0F, 0x7C,
+  0xE0, 0x80, 0x79, 0xFD, 0x18, 0x30, 0xE3, 0x86, 0x18, 0x30, 0x00, 0xC1,
+  0x83, 0x00, 0x07, 0xC0, 0xFF, 0x8E, 0x0C, 0xE6, 0xB6, 0x7C, 0xE7, 0x67,
+  0x33, 0x39, 0x91, 0xCC, 0x9E, 0x7F, 0xB9, 0x98, 0xC0, 0x07, 0x84, 0x1F,
+  0xE0, 0x3E, 0x00, 0x0C, 0x07, 0x81, 0xE0, 0x48, 0x33, 0x0C, 0xC3, 0x31,
+  0xFE, 0x7F, 0x98, 0x6C, 0x0F, 0x03, 0xFC, 0xFE, 0xC6, 0xC6, 0xFC, 0xFE,
+  0xC7, 0xC3, 0xC3, 0xC7, 0xFE, 0xFC, 0x1E, 0x1F, 0xDC, 0x5C, 0x0C, 0x06,
+  0x03, 0x01, 0x80, 0xE0, 0x30, 0x9F, 0xE3, 0xC0, 0xF8, 0xFE, 0xC6, 0xC3,
+  0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC6, 0xFE, 0xF8, 0xFF, 0xFF, 0x06, 0x0C,
+  0x1F, 0xBF, 0x60, 0xC1, 0x83, 0xFF, 0xF0, 0xFF, 0xFF, 0x06, 0x0C, 0x1F,
+  0xBF, 0x60, 0xC1, 0x83, 0x06, 0x00, 0x1E, 0x1F, 0xDC, 0x4C, 0x0C, 0x06,
+  0x03, 0x1F, 0x8F, 0xC1, 0xB0, 0xDF, 0xE3, 0xE0, 0xC3, 0xC3, 0xC3, 0xC3,
+  0xC3, 0xFF, 0xFF, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xFF, 0x06,
+  0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x8D, 0xF1, 0xE0, 0xC3, 0x63,
+  0x33, 0x99, 0x8D, 0x87, 0xC3, 0xF1, 0xDC, 0xC6, 0x63, 0xB0, 0xD8, 0x30,
+  0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0xFF, 0xE0, 0xF8, 0x7E,
+  0x1F, 0xC7, 0xF3, 0xF4, 0xBD, 0x2F, 0x7B, 0xCC, 0xF3, 0x3C, 0xCF, 0x03,
+  0xC3, 0xE3, 0xE3, 0xF3, 0xD3, 0xDB, 0xDB, 0xCB, 0xCF, 0xC7, 0xC7, 0xC3,
+  0x1E, 0x1F, 0xE6, 0x1B, 0x87, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xE1, 0xD8,
+  0x67, 0xF0, 0x78, 0xFC, 0xFE, 0xC3, 0xC3, 0xC3, 0xC7, 0xFE, 0xFC, 0xC0,
+  0xC0, 0xC0, 0xC0, 0x1E, 0x0F, 0xF1, 0x86, 0x70, 0xEC, 0x0D, 0x81, 0xB0,
+  0x36, 0x06, 0xC0, 0xCC, 0x30, 0xFC, 0x0F, 0x00, 0xE0, 0x0F, 0x80, 0xF8,
+  0xFC, 0x7F, 0x31, 0xD8, 0x6C, 0x36, 0x3B, 0xF9, 0xF8, 0xCC, 0x63, 0x31,
+  0xD8, 0x60, 0x1E, 0x1F, 0xD8, 0x4C, 0x07, 0x01, 0xF0, 0x3C, 0x07, 0x01,
+  0xB0, 0xDF, 0xC7, 0xC0, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+  0x18, 0x18, 0x18, 0x18, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07,
+  0x83, 0xC1, 0xF1, 0xDF, 0xC7, 0xC0, 0xC0, 0xF0, 0x36, 0x19, 0x86, 0x61,
+  0x8C, 0xC3, 0x30, 0xCC, 0x1E, 0x07, 0x81, 0xE0, 0x70, 0xC3, 0x8F, 0x0E,
+  0x3E, 0x38, 0xD8, 0xE2, 0x66, 0xD9, 0x9B, 0x66, 0x4D, 0x9D, 0x36, 0x3C,
+  0xD0, 0xF1, 0xC3, 0xC7, 0x0E, 0x1C, 0x61, 0x98, 0xC3, 0x30, 0xD8, 0x1E,
+  0x07, 0x01, 0xC0, 0x78, 0x37, 0x0C, 0xC6, 0x39, 0x86, 0x61, 0x98, 0x63,
+  0x30, 0xCC, 0x1A, 0x07, 0x80, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30,
+  0xFF, 0xFF, 0x06, 0x0E, 0x0C, 0x18, 0x38, 0x30, 0x60, 0xE0, 0xFF, 0xFF,
+  0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xB7, 0x01, 0x01, 0x02, 0x02, 0x04, 0x0C,
+  0x08, 0x10, 0x30, 0x20, 0x40, 0x40, 0x81, 0x01, 0xED, 0xB6, 0xDB, 0x6D,
+  0xB6, 0xDF, 0x18, 0x70, 0xA3, 0x66, 0x48, 0xF1, 0x80, 0xFF, 0xFF, 0xC0,
+  0xC9, 0x80, 0x3D, 0xFC, 0x18, 0xF7, 0xFC, 0xF1, 0xFF, 0x76, 0xC0, 0xC0,
+  0xC0, 0xDC, 0xFE, 0xC7, 0xC3, 0xC3, 0xC3, 0xC7, 0xFE, 0xDC, 0x3C, 0xFF,
+  0x86, 0x0C, 0x18, 0x38, 0x3F, 0x3C, 0x03, 0x03, 0x03, 0x3B, 0x7F, 0xE3,
+  0xC3, 0xC3, 0xC3, 0xE3, 0x7F, 0x3B, 0x3C, 0xFE, 0x1F, 0xFF, 0xF0, 0x30,
+  0x3E, 0x3C, 0x3B, 0xD8, 0xCF, 0x79, 0x8C, 0x63, 0x18, 0xC6, 0x00, 0x7F,
+  0xFF, 0xC6, 0xC6, 0x7E, 0x7C, 0xC0, 0xFE, 0x7F, 0xC3, 0xC3, 0xFE, 0x7C,
+  0xC0, 0xC0, 0xC0, 0xDE, 0xFF, 0xE3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
+  0xF3, 0xFF, 0xFF, 0x33, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0xFE, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xC6, 0xCC, 0xDC, 0xD8, 0xF8, 0xEC, 0xCC, 0xC6, 0xC7,
+  0xDB, 0x6D, 0xB6, 0xDB, 0xB0, 0xDE, 0x77, 0xFF, 0xF8, 0xE7, 0x86, 0x3C,
+  0x31, 0xE1, 0x8F, 0x0C, 0x78, 0x63, 0xC3, 0x18, 0xDE, 0xFF, 0xE3, 0xC3,
+  0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x7E, 0xE7, 0xC3, 0xC3, 0xC3, 0xE7,
+  0x7E, 0x3C, 0xDC, 0xFE, 0xC7, 0xC3, 0xC3, 0xC3, 0xC7, 0xFE, 0xDC, 0xC0,
+  0xC0, 0xC0, 0x3B, 0x7F, 0xE3, 0xC3, 0xC3, 0xC3, 0xE3, 0x7F, 0x3B, 0x03,
+  0x03, 0xDF, 0xF9, 0x8C, 0x63, 0x18, 0xC0, 0x7B, 0xFC, 0x38, 0x78, 0x38,
+  0xFF, 0x78, 0x61, 0x8F, 0xBE, 0x61, 0x86, 0x18, 0x61, 0xE3, 0xC0, 0xC3,
+  0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC7, 0xFF, 0x7B, 0xC1, 0xB1, 0x98, 0xCC,
+  0x63, 0x61, 0xB0, 0xD8, 0x38, 0x1C, 0x00, 0xC3, 0x1E, 0x1C, 0xD9, 0xE4,
+  0xCB, 0x66, 0x5B, 0x3A, 0xD8, 0xF3, 0x87, 0x1C, 0x38, 0xE0, 0x63, 0x76,
+  0x36, 0x1C, 0x1C, 0x3C, 0x36, 0x66, 0x63, 0xC3, 0xC3, 0xC6, 0x66, 0x66,
+  0x2C, 0x3C, 0x3C, 0x18, 0x18, 0x30, 0xF0, 0xE0, 0xFD, 0xF8, 0x70, 0xC3,
+  0x0C, 0x38, 0x7F, 0xFE, 0x19, 0x8C, 0x63, 0x18, 0xDC, 0xE1, 0x8C, 0x63,
+  0x18, 0xC3, 0xFF, 0xFF, 0xE0, 0xC3, 0x18, 0xC6, 0x31, 0x87, 0x3B, 0x18,
+  0xC6, 0x31, 0x98, 0x60, 0xF2, 0x9E, 0x0C };
+
+const GFXglyph sourcesans_semi9pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   4,    0,    0 },   // 0x20 ' '
+  {     1,   2,  12,   6,    2,  -11 },   // 0x21 '!'
+  {     4,   6,   5,   9,    1,  -11 },   // 0x22 '"'
+  {     8,   7,  11,   9,    1,  -10 },   // 0x23 '#'
+  {    18,   7,  14,   9,    1,  -12 },   // 0x24 '$'
+  {    31,  14,  12,  15,    1,  -11 },   // 0x25 '%'
+  {    52,  10,  12,  12,    1,  -11 },   // 0x26 '&'
+  {    67,   2,   5,   5,    1,  -11 },   // 0x27 '''
+  {    69,   4,  16,   6,    1,  -12 },   // 0x28 '('
+  {    77,   4,  16,   6,    1,  -12 },   // 0x29 ')'
+  {    85,   7,   6,   8,    0,  -12 },   // 0x2A '*'
+  {    91,   6,   6,   9,    2,   -8 },   // 0x2B '+'
+  {    96,   4,   5,   5,    1,   -1 },   // 0x2C ','
+  {    99,   4,   2,   6,    1,   -5 },   // 0x2D '-'
+  {   100,   2,   3,   5,    1,   -2 },   // 0x2E '.'
+  {   101,   6,  16,   6,    0,  -12 },   // 0x2F '/'
+  {   113,   8,  12,   9,    1,  -11 },   // 0x30 '0'
+  {   125,   6,  11,   9,    2,  -10 },   // 0x31 '1'
+  {   134,   8,  12,   9,    1,  -11 },   // 0x32 '2'
+  {   146,   8,  12,   9,    0,  -11 },   // 0x33 '3'
+  {   158,   8,  11,   9,    0,  -10 },   // 0x34 '4'
+  {   169,   8,  12,   9,    0,  -11 },   // 0x35 '5'
+  {   181,   8,  12,   9,    1,  -11 },   // 0x36 '6'
+  {   193,   7,  12,   9,    1,  -11 },   // 0x37 '7'
+  {   204,   7,  12,   9,    1,  -11 },   // 0x38 '8'
+  {   215,   7,  12,   9,    1,  -11 },   // 0x39 '9'
+  {   226,   2,   9,   5,    1,   -8 },   // 0x3A ':'
+  {   229,   2,  12,   4,    1,   -8 },   // 0x3B ';'
+  {   232,   8,   8,   9,    1,   -9 },   // 0x3C '<'
+  {   240,   8,   6,   9,    1,   -8 },   // 0x3D '='
+  {   246,   8,   8,   9,    1,   -9 },   // 0x3E '>'
+  {   254,   7,  13,   8,    0,  -12 },   // 0x3F '?'
+  {   266,  13,  15,  16,    1,  -11 },   // 0x40 '@'
+  {   291,  10,  12,  10,    0,  -11 },   // 0x41 'A'
+  {   306,   8,  12,  11,    2,  -11 },   // 0x42 'B'
+  {   318,   9,  12,  10,    1,  -11 },   // 0x43 'C'
+  {   332,   8,  12,  11,    2,  -11 },   // 0x44 'D'
+  {   344,   7,  12,  10,    2,  -11 },   // 0x45 'E'
+  {   355,   7,  12,   9,    2,  -11 },   // 0x46 'F'
+  {   366,   9,  12,  11,    1,  -11 },   // 0x47 'G'
+  {   380,   8,  12,  12,    2,  -11 },   // 0x48 'H'
+  {   392,   2,  12,   5,    2,  -11 },   // 0x49 'I'
+  {   395,   7,  12,   9,    0,  -11 },   // 0x4A 'J'
+  {   406,   9,  12,  11,    2,  -11 },   // 0x4B 'K'
+  {   420,   6,  12,   9,    2,  -11 },   // 0x4C 'L'
+  {   429,  10,  12,  13,    2,  -11 },   // 0x4D 'M'
+  {   444,   8,  12,  12,    2,  -11 },   // 0x4E 'N'
+  {   456,  10,  12,  12,    1,  -11 },   // 0x4F 'O'
+  {   471,   8,  12,  11,    2,  -11 },   // 0x50 'P'
+  {   483,  11,  15,  12,    1,  -11 },   // 0x51 'Q'
+  {   504,   9,  12,  11,    2,  -11 },   // 0x52 'R'
+  {   518,   9,  12,  10,    0,  -11 },   // 0x53 'S'
+  {   532,   8,  12,  10,    1,  -11 },   // 0x54 'T'
+  {   544,   9,  12,  12,    1,  -11 },   // 0x55 'U'
+  {   558,  10,  12,  10,    0,  -11 },   // 0x56 'V'
+  {   573,  14,  12,  14,    0,  -11 },   // 0x57 'W'
+  {   594,  10,  12,  10,    0,  -11 },   // 0x58 'X'
+  {   609,  10,  12,   9,   -1,  -11 },   // 0x59 'Y'
+  {   624,   8,  12,  10,    1,  -11 },   // 0x5A 'Z'
+  {   636,   3,  16,   6,    2,  -12 },   // 0x5B '['
+  {   642,   7,  16,   6,    0,  -12 },   // 0x5C '\'
+  {   656,   3,  16,   6,    1,  -12 },   // 0x5D ']'
+  {   662,   7,   7,   9,    1,  -11 },   // 0x5E '^'
+  {   669,   9,   2,   9,    0,    1 },   // 0x5F '_'
+  {   672,   3,   3,  10,    3,  -12 },   // 0x60 '`'
+  {   674,   7,   9,   9,    1,   -8 },   // 0x61 'a'
+  {   682,   8,  12,  10,    1,  -11 },   // 0x62 'b'
+  {   694,   7,   9,   8,    1,   -8 },   // 0x63 'c'
+  {   702,   8,  12,  10,    1,  -11 },   // 0x64 'd'
+  {   714,   7,   9,   9,    2,   -8 },   // 0x65 'e'
+  {   722,   5,  13,   6,    1,  -12 },   // 0x66 'f'
+  {   731,   8,  13,   9,    1,   -8 },   // 0x67 'g'
+  {   744,   8,  12,  10,    1,  -11 },   // 0x68 'h'
+  {   756,   2,  12,   5,    1,  -11 },   // 0x69 'i'
+  {   759,   4,  16,   5,   -1,  -11 },   // 0x6A 'j'
+  {   767,   8,  13,   9,    1,  -12 },   // 0x6B 'k'
+  {   780,   3,  12,   5,    1,  -11 },   // 0x6C 'l'
+  {   785,  13,   9,  15,    1,   -8 },   // 0x6D 'm'
+  {   800,   8,   9,  10,    1,   -8 },   // 0x6E 'n'
+  {   809,   8,   9,  10,    1,   -8 },   // 0x6F 'o'
+  {   818,   8,  12,  10,    1,   -8 },   // 0x70 'p'
+  {   830,   8,  11,  10,    1,   -8 },   // 0x71 'q'
+  {   841,   5,   9,   7,    1,   -8 },   // 0x72 'r'
+  {   847,   6,   9,   8,    1,   -8 },   // 0x73 's'
+  {   854,   6,  11,   6,    1,  -10 },   // 0x74 't'
+  {   863,   8,   9,  10,    1,   -8 },   // 0x75 'u'
+  {   872,   9,   9,   9,    0,   -8 },   // 0x76 'v'
+  {   883,  13,   9,  13,    0,   -8 },   // 0x77 'w'
+  {   898,   8,   9,   9,    0,   -8 },   // 0x78 'x'
+  {   907,   8,  13,   9,    1,   -8 },   // 0x79 'y'
+  {   920,   7,   9,   8,    1,   -8 },   // 0x7A 'z'
+  {   928,   5,  16,   6,    0,  -12 },   // 0x7B '{'
+  {   938,   1,  19,   5,    2,  -13 },   // 0x7C '|'
+  {   941,   5,  16,   6,    1,  -12 },   // 0x7D '}'
+  {   951,   8,   4,   9,    1,   -7 } }; // 0x7E '~'
+
+const GFXfont sourcesans_semi9pt7b PROGMEM = {
+  (uint8_t  *)sourcesans_semi9pt7bBitmaps,
+  (GFXglyph *)sourcesans_semi9pt7bGlyphs,
+  0x20, 0x7E, 24 };
+
+// Approx. 1627 bytes
+const uint8_t sourcesans_bold9pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xFF, 0xFF, 0x1F, 0xF0, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x42,
+  0x24, 0x4B, 0xFF, 0xF2, 0x4D, 0xBF, 0xFF, 0x48, 0x91, 0x20, 0x18, 0x18,
+  0x7E, 0xFF, 0xE2, 0xE0, 0xF0, 0x7C, 0x1E, 0x0F, 0x07, 0xC7, 0xFE, 0x7C,
+  0x18, 0x18, 0x78, 0x21, 0xF8, 0xC3, 0x31, 0x06, 0x66, 0x0C, 0xC9, 0x99,
+  0xB7, 0x9E, 0xD9, 0x99, 0x33, 0x06, 0x66, 0x08, 0xCC, 0x31, 0xF8, 0x41,
+  0xE0, 0x0E, 0x01, 0xF0, 0x3B, 0x03, 0xB0, 0x3E, 0x01, 0xC7, 0x7C, 0x7F,
+  0x6E, 0xE7, 0xCE, 0x3E, 0x7F, 0xF3, 0xE3, 0xFF, 0xFE, 0x80, 0x19, 0x9C,
+  0xE6, 0x73, 0x9C, 0xE7, 0x38, 0xC7, 0x38, 0xC3, 0xC3, 0x1C, 0xE3, 0x1C,
+  0xE7, 0x39, 0xCE, 0x67, 0x39, 0x98, 0x10, 0x23, 0xFB, 0xE3, 0x8D, 0x80,
+  0x00, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0xDF, 0x97, 0xA0,
+  0xFF, 0xFF, 0x80, 0x00, 0x86, 0x31, 0x8C, 0x46, 0x31, 0x88, 0x46, 0x31,
+  0x88, 0x46, 0x31, 0x88, 0x00, 0x3C, 0x7E, 0x66, 0xE7, 0xE7, 0xE7, 0xE7,
+  0xE7, 0xE7, 0x66, 0x7E, 0x3C, 0x79, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x3B,
+  0xFF, 0xC0, 0x3C, 0x7F, 0x11, 0xC0, 0xE0, 0x70, 0x38, 0x38, 0x3C, 0x1C,
+  0x1C, 0x1F, 0xEF, 0xF0, 0x1E, 0x3F, 0x88, 0xE0, 0x70, 0x78, 0xF0, 0x7C,
+  0x07, 0x03, 0xA1, 0xFF, 0xC7, 0xC0, 0x0E, 0x1E, 0x3E, 0x2E, 0x6E, 0xCE,
+  0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x3F, 0x1F, 0x9C, 0x0E, 0x07, 0xE3, 0xF8,
+  0x0E, 0x07, 0x43, 0xFF, 0x8F, 0x80, 0x1E, 0x7F, 0x72, 0xE0, 0xE0, 0xEE,
+  0xFF, 0xE7, 0xE7, 0xE7, 0x7E, 0x3C, 0xFF, 0xF0, 0x86, 0x18, 0xC3, 0x1C,
+  0x71, 0xC7, 0x00, 0x3C, 0x7E, 0xE7, 0xE7, 0xF7, 0x7C, 0x7E, 0xE7, 0xE7,
+  0xE7, 0x7E, 0x3C, 0x3C, 0x7E, 0xE6, 0xE7, 0xE7, 0xE7, 0x7F, 0x37, 0x07,
+  0x0E, 0xFE, 0x7C, 0xFF, 0x80, 0x3F, 0xE0, 0xFF, 0x80, 0x3F, 0xE5, 0xE8,
+  0x03, 0x0F, 0x7E, 0xF0, 0xF0, 0x7E, 0x0F, 0x03, 0xFF, 0xFF, 0x00, 0x00,
+  0xFF, 0xFF, 0x80, 0xF0, 0x7C, 0x0F, 0x0F, 0x7C, 0xF0, 0x80, 0x3C, 0xFF,
+  0x47, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x00, 0x38, 0x38, 0x38, 0x07, 0xE0,
+  0x7F, 0xC3, 0xC1, 0x9C, 0x02, 0x63, 0xE7, 0x9F, 0x9C, 0xEC, 0x73, 0x31,
+  0xCC, 0xCF, 0x3D, 0xEE, 0x77, 0x18, 0x00, 0x78, 0x00, 0xFF, 0x00, 0xFC,
+  0x00, 0x0E, 0x03, 0xE0, 0x6C, 0x0D, 0x83, 0xB8, 0x77, 0x0C, 0x63, 0xFE,
+  0x7F, 0xCE, 0x3B, 0x83, 0xF0, 0x70, 0xFE, 0x3F, 0xEE, 0x3B, 0x8E, 0xE3,
+  0xBF, 0xCF, 0xFB, 0x87, 0xE1, 0xF8, 0x7F, 0xFB, 0xFC, 0x1F, 0x0F, 0xE7,
+  0x11, 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xF0, 0x1C, 0x63, 0xFC, 0x7C,
+  0xFE, 0x3F, 0xCE, 0x3B, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE3, 0xF8,
+  0xEF, 0xF3, 0xF8, 0xFF, 0xFF, 0x87, 0x0E, 0x1F, 0xBF, 0x70, 0xE1, 0xC3,
+  0xFF, 0xF0, 0xFF, 0xFF, 0x87, 0x0E, 0x1F, 0xBF, 0x70, 0xE1, 0xC3, 0x87,
+  0x00, 0x1F, 0x0F, 0xF7, 0x13, 0x80, 0xE0, 0x38, 0xFE, 0x3F, 0x87, 0xF1,
+  0xDC, 0x73, 0xFC, 0x7E, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xFF, 0xFF,
+  0xFF, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0,
+  0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x47, 0xFE, 0x3C,
+  0xE3, 0xB8, 0xCE, 0x73, 0xB8, 0xFC, 0x3F, 0x0F, 0xE3, 0xDC, 0xE7, 0x38,
+  0xEE, 0x3B, 0x87, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3,
+  0xFF, 0xF0, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x9F, 0xF9, 0xFF, 0x9F, 0xEF,
+  0x7E, 0xF7, 0xE6, 0x7E, 0x67, 0xE6, 0x7E, 0x07, 0xE1, 0xFC, 0x7F, 0x1F,
+  0xE7, 0xF9, 0xFB, 0x7E, 0xDF, 0x9F, 0xE7, 0xF8, 0xFE, 0x3F, 0x87, 0x1F,
+  0x07, 0xF1, 0xC7, 0x70, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xEE,
+  0x38, 0xFE, 0x0F, 0x80, 0xFF, 0x3F, 0xEE, 0x3F, 0x87, 0xE1, 0xF8, 0xFF,
+  0xFB, 0xFC, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0x1F, 0x07, 0xF1, 0xC7, 0x70,
+  0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xEE, 0x38, 0xFE, 0x0F, 0x80,
+  0x70, 0x0F, 0xC0, 0x78, 0xFF, 0x3F, 0xEE, 0x3F, 0x87, 0xE1, 0xF8, 0xFF,
+  0xFB, 0xFC, 0xE7, 0x38, 0xEE, 0x3B, 0x87, 0x3E, 0x3F, 0xB8, 0xDC, 0x0F,
+  0x83, 0xF0, 0xFC, 0x0F, 0x03, 0xA1, 0xFF, 0xCF, 0xC0, 0xFF, 0xFC, 0xE1,
+  0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC0, 0xE1, 0xF8, 0x7E, 0x1F,
+  0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xDC, 0xE7, 0xF8, 0xFC, 0xE1,
+  0xF8, 0x77, 0x39, 0xCE, 0x73, 0x8C, 0xC3, 0x30, 0xFC, 0x1E, 0x07, 0x81,
+  0xE0, 0x70, 0xE3, 0x8F, 0xC7, 0x1F, 0x8E, 0x33, 0x1C, 0xE7, 0x7D, 0xCE,
+  0xDB, 0x9D, 0xB7, 0x3B, 0x6C, 0x34, 0xD8, 0x79, 0xF0, 0xF1, 0xE1, 0xE3,
+  0xC0, 0x71, 0xDC, 0xE3, 0x38, 0xEC, 0x1F, 0x07, 0x81, 0xE0, 0x7C, 0x3F,
+  0x0C, 0xE7, 0x3B, 0x87, 0x60, 0xCE, 0x38, 0xC6, 0x1D, 0xC1, 0xB0, 0x3E,
+  0x07, 0xC0, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xFF, 0xFF, 0x06,
+  0x0E, 0x1C, 0x1C, 0x38, 0x30, 0x70, 0xE0, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC,
+  0xCC, 0xCC, 0xCC, 0xCC, 0xFF, 0x08, 0x8C, 0xCC, 0x44, 0x46, 0x66, 0x62,
+  0x22, 0x33, 0x31, 0x20, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xFF,
+  0x38, 0x38, 0x3C, 0x6C, 0x66, 0x66, 0xC6, 0xFF, 0xFF, 0xC0, 0x63, 0x3C,
+  0x7E, 0x47, 0x1F, 0x7F, 0xE7, 0xE7, 0xFF, 0x7F, 0xE0, 0x70, 0x38, 0x1C,
+  0x0E, 0xE7, 0xFB, 0x8F, 0xC7, 0xE3, 0xF1, 0xF9, 0xFF, 0xED, 0xE0, 0x1E,
+  0x7E, 0xF0, 0xE0, 0xE0, 0xE0, 0xF2, 0x7E, 0x3E, 0x07, 0x07, 0x07, 0x07,
+  0x3F, 0x7F, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x7F, 0x3F, 0x3C, 0x7E, 0xC7,
+  0xFF, 0xFF, 0xC0, 0xE0, 0x7E, 0x3E, 0x1D, 0xF7, 0x1C, 0xFB, 0xE7, 0x1C,
+  0x71, 0xC7, 0x1C, 0x70, 0x3F, 0xFF, 0xF9, 0xDC, 0xE7, 0xF3, 0xE1, 0x80,
+  0xFE, 0x7F, 0xF1, 0xF8, 0xFF, 0xE7, 0xE0, 0xE0, 0x70, 0x38, 0x1C, 0x0E,
+  0xF7, 0xFF, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x38, 0xFC, 0x7F,
+  0xFF, 0xFF, 0xF0, 0x39, 0xC0, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9F,
+  0xFE, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x77, 0x3B, 0xB9, 0xF8, 0xFC, 0x7F,
+  0x39, 0x9C, 0xEE, 0x38, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEF, 0x70, 0xFE,
+  0x7B, 0xFF, 0xFE, 0x71, 0xF9, 0xC7, 0xE7, 0x1F, 0x9C, 0x7E, 0x71, 0xF9,
+  0xC7, 0xE7, 0x1C, 0xEF, 0x7F, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7,
+  0xE3, 0x80, 0x3E, 0x3F, 0xB8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, 0xFE, 0x3E,
+  0x00, 0xFE, 0x7F, 0xB8, 0xFC, 0x7E, 0x3F, 0x1F, 0x9F, 0xFE, 0xFE, 0x70,
+  0x38, 0x1C, 0x00, 0x3B, 0x7F, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x7F, 0x3F,
+  0x07, 0x07, 0x07, 0xEF, 0xFF, 0x38, 0xE3, 0x8E, 0x38, 0xE0, 0x7D, 0xFF,
+  0x97, 0x87, 0xC3, 0xD3, 0xFF, 0x7C, 0x71, 0xCF, 0xBE, 0x71, 0xC7, 0x1C,
+  0x71, 0xF3, 0xC0, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, 0x7F,
+  0xC3, 0xF1, 0xB9, 0xCC, 0xE6, 0x63, 0xB0, 0xF8, 0x78, 0x3C, 0x00, 0xE3,
+  0x1F, 0x8E, 0x77, 0x79, 0x9D, 0xEE, 0x77, 0xB8, 0xD3, 0xC3, 0xCF, 0x0F,
+  0x3C, 0x3C, 0xF0, 0x73, 0xBB, 0x8F, 0x87, 0xC1, 0xC1, 0xF0, 0xD8, 0xEE,
+  0x63, 0x80, 0xE3, 0xB1, 0xDC, 0xC6, 0x63, 0x71, 0xF0, 0x78, 0x38, 0x0C,
+  0x0E, 0x1E, 0x0E, 0x00, 0xFF, 0xFC, 0x71, 0xC3, 0x8E, 0x38, 0x7F, 0xFE,
+  0x3B, 0xDC, 0xE3, 0x18, 0xDE, 0xF1, 0x8C, 0xE7, 0x39, 0xE7, 0xFF, 0xFF,
+  0xE0, 0xE7, 0x9C, 0xE6, 0x31, 0x8F, 0x7B, 0x18, 0xC7, 0x3B, 0xDC, 0x72,
+  0xFF, 0x8E };
+
+const GFXglyph sourcesans_bold9pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   4,    0,    0 },   // 0x20 ' '
+  {     1,   3,  12,   6,    1,  -11 },   // 0x21 '!'
+  {     6,   8,   6,  10,    1,  -11 },   // 0x22 '"'
+  {    12,   7,  11,  10,    1,  -10 },   // 0x23 '#'
+  {    22,   8,  16,   9,    1,  -13 },   // 0x24 '$'
+  {    38,  15,  12,  15,    0,  -11 },   // 0x25 '%'
+  {    61,  12,  12,  12,    0,  -11 },   // 0x26 '&'
+  {    79,   3,   6,   5,    1,  -11 },   // 0x27 '''
+  {    82,   5,  16,   6,    1,  -12 },   // 0x28 '('
+  {    92,   5,  16,   6,    1,  -12 },   // 0x29 ')'
+  {   102,   7,   7,   8,    0,  -12 },   // 0x2A '*'
+  {   109,   8,   8,   9,    1,   -9 },   // 0x2B '+'
+  {   117,   3,   7,   5,    1,   -2 },   // 0x2C ','
+  {   120,   4,   2,   6,    1,   -5 },   // 0x2D '-'
+  {   121,   3,   3,   5,    1,   -2 },   // 0x2E '.'
+  {   123,   5,  22,   6,    0,  -15 },   // 0x2F '/'
+  {   137,   8,  12,  10,    1,  -11 },   // 0x30 '0'
+  {   149,   6,  11,   9,    2,  -10 },   // 0x31 '1'
+  {   158,   9,  12,   9,    1,  -11 },   // 0x32 '2'
+  {   172,   9,  12,   9,    0,  -11 },   // 0x33 '3'
+  {   186,   8,  11,   9,    1,  -10 },   // 0x34 '4'
+  {   197,   9,  11,   9,    0,  -10 },   // 0x35 '5'
+  {   210,   8,  12,  10,    1,  -11 },   // 0x36 '6'
+  {   222,   6,  11,   9,    2,  -10 },   // 0x37 '7'
+  {   231,   8,  12,  10,    1,  -11 },   // 0x38 '8'
+  {   243,   8,  12,  10,    1,  -11 },   // 0x39 '9'
+  {   255,   3,   9,   5,    1,   -8 },   // 0x3A ':'
+  {   259,   3,  13,   5,    1,   -8 },   // 0x3B ';'
+  {   264,   8,   8,  10,    1,   -9 },   // 0x3C '<'
+  {   272,   8,   6,   9,    1,   -8 },   // 0x3D '='
+  {   278,   8,   8,  10,    1,   -9 },   // 0x3E '>'
+  {   286,   8,  12,   8,    0,  -11 },   // 0x3F '?'
+  {   298,  14,  15,  16,    1,  -11 },   // 0x40 '@'
+  {   325,  11,  12,  10,    0,  -11 },   // 0x41 'A'
+  {   342,  10,  12,  11,    1,  -11 },   // 0x42 'B'
+  {   357,  10,  12,  10,    1,  -11 },   // 0x43 'C'
+  {   372,  10,  12,  11,    1,  -11 },   // 0x44 'D'
+  {   387,   7,  12,  10,    1,  -11 },   // 0x45 'E'
+  {   398,   7,  12,   9,    1,  -11 },   // 0x46 'F'
+  {   409,  10,  12,  11,    1,  -11 },   // 0x47 'G'
+  {   424,  10,  12,  12,    1,  -11 },   // 0x48 'H'
+  {   439,   3,  12,   5,    1,  -11 },   // 0x49 'I'
+  {   444,   8,  12,   9,    0,  -11 },   // 0x4A 'J'
+  {   456,  10,  12,  11,    1,  -11 },   // 0x4B 'K'
+  {   471,   7,  12,   9,    1,  -11 },   // 0x4C 'L'
+  {   482,  12,  12,  14,    1,  -11 },   // 0x4D 'M'
+  {   500,  10,  12,  12,    1,  -11 },   // 0x4E 'N'
+  {   515,  11,  12,  12,    1,  -11 },   // 0x4F 'O'
+  {   532,  10,  12,  11,    1,  -11 },   // 0x50 'P'
+  {   547,  11,  15,  12,    1,  -11 },   // 0x51 'Q'
+  {   568,  10,  12,  11,    1,  -11 },   // 0x52 'R'
+  {   583,   9,  12,  10,    1,  -11 },   // 0x53 'S'
+  {   597,   7,  12,  10,    2,  -11 },   // 0x54 'T'
+  {   608,  10,  12,  12,    1,  -11 },   // 0x55 'U'
+  {   623,  10,  12,  10,    0,  -11 },   // 0x56 'V'
+  {   638,  15,  12,  15,    0,  -11 },   // 0x57 'W'
+  {   661,  10,  12,  10,    0,  -11 },   // 0x58 'X'
+  {   676,  11,  12,   9,   -1,  -11 },   // 0x59 'Y'
+  {   693,   8,  12,  10,    1,  -11 },   // 0x5A 'Z'
+  {   705,   4,  16,   6,    2,  -12 },   // 0x5B '['
+  {   713,   4,  22,   6,    1,  -15 },   // 0x5C '\'
+  {   724,   4,  16,   6,    1,  -12 },   // 0x5D ']'
+  {   732,   8,   7,  10,    1,  -11 },   // 0x5E '^'
+  {   739,   9,   2,   9,    0,    2 },   // 0x5F '_'
+  {   742,   4,   2,  10,    2,  -11 },   // 0x60 '`'
+  {   743,   8,   9,  10,    1,   -8 },   // 0x61 'a'
+  {   752,   9,  13,  10,    1,  -12 },   // 0x62 'b'
+  {   767,   8,   9,   8,    1,   -8 },   // 0x63 'c'
+  {   776,   8,  13,  10,    1,  -12 },   // 0x64 'd'
+  {   789,   8,   9,   9,    1,   -8 },   // 0x65 'e'
+  {   798,   6,  13,   6,    1,  -12 },   // 0x66 'f'
+  {   808,   9,  13,  10,    1,   -8 },   // 0x67 'g'
+  {   823,   9,  13,  10,    1,  -12 },   // 0x68 'h'
+  {   838,   3,  12,   5,    1,  -11 },   // 0x69 'i'
+  {   843,   5,  16,   5,   -1,  -11 },   // 0x6A 'j'
+  {   853,   9,  13,  10,    1,  -12 },   // 0x6B 'k'
+  {   868,   4,  13,   5,    1,  -12 },   // 0x6C 'l'
+  {   875,  14,   9,  15,    1,   -8 },   // 0x6D 'm'
+  {   891,   9,   9,  10,    1,   -8 },   // 0x6E 'n'
+  {   902,   9,   9,  10,    1,   -8 },   // 0x6F 'o'
+  {   913,   9,  12,  10,    1,   -8 },   // 0x70 'p'
+  {   927,   8,  12,  10,    1,   -8 },   // 0x71 'q'
+  {   939,   6,   9,   7,    1,   -8 },   // 0x72 'r'
+  {   946,   7,   9,   8,    1,   -8 },   // 0x73 's'
+  {   954,   6,  11,   7,    1,  -10 },   // 0x74 't'
+  {   963,   8,   9,  10,    1,   -8 },   // 0x75 'u'
+  {   972,   9,   9,   9,    1,   -8 },   // 0x76 'v'
+  {   983,  14,   9,  14,    0,   -8 },   // 0x77 'w'
+  {   999,   9,   9,   9,    0,   -8 },   // 0x78 'x'
+  {  1010,   9,  12,   9,    0,   -8 },   // 0x79 'y'
+  {  1024,   7,   9,   8,    1,   -8 },   // 0x7A 'z'
+  {  1032,   5,  16,   6,    1,  -12 },   // 0x7B '{'
+  {  1042,   1,  19,   5,    2,  -13 },   // 0x7C '|'
+  {  1045,   5,  16,   6,    1,  -12 },   // 0x7D '}'
+  {  1055,   8,   3,   9,    1,   -6 } }; // 0x7E '~'
+
+const GFXfont sourcesans_bold9pt7b PROGMEM = {
+  (uint8_t  *)sourcesans_bold9pt7bBitmaps,
+  (GFXglyph *)sourcesans_bold9pt7bGlyphs,
+  0x20, 0x7E, 24 };
+
+const uint8_t DINAlternateBold9pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xFF, 0xCF, 0xFF, 0xF0, 0x32, 0x32, 0x36, 0xFF, 0x26, 0x24,
+  0x64, 0xFF, 0x64, 0x4C, 0x4C, 0x4C, 0x08, 0x08, 0x3E, 0x7E, 0x68, 0x68,
+  0x68, 0x3C, 0x1E, 0x0B, 0x0B, 0x4B, 0xFE, 0x3C, 0x08, 0x08, 0xE3, 0x4A,
+  0x97, 0x40, 0x82, 0x04, 0x17, 0x2A, 0x95, 0x2C, 0x70, 0x3C, 0x0F, 0xC1,
+  0x98, 0x33, 0x03, 0xC0, 0x70, 0x13, 0x06, 0x36, 0xC3, 0x9C, 0x71, 0xFF,
+  0x1E, 0x60, 0xFC, 0x22, 0x64, 0xCC, 0xCC, 0xCC, 0x46, 0x22, 0x84, 0x62,
+  0x33, 0x33, 0x33, 0x26, 0x48, 0x27, 0xC9, 0xF2, 0x00, 0x18, 0x0C, 0x06,
+  0x03, 0x0F, 0xFF, 0xFC, 0x60, 0x30, 0x18, 0x00, 0xF8, 0xFF, 0xC0, 0xF0,
+  0x0C, 0x21, 0x86, 0x10, 0xC2, 0x08, 0x61, 0x04, 0x30, 0x39, 0xFF, 0x1E,
+  0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0xF9, 0xC0, 0x7F, 0xB3, 0x33, 0x33,
+  0x33, 0x33, 0x38, 0xFB, 0x1E, 0x30, 0x61, 0x86, 0x18, 0x70, 0xC3, 0xFF,
+  0xF0, 0x79, 0xFF, 0x18, 0x33, 0xC7, 0x83, 0x83, 0x07, 0x9F, 0xF3, 0xC0,
+  0x0C, 0x18, 0x18, 0x30, 0x30, 0x66, 0x66, 0xC6, 0xFF, 0xFF, 0x06, 0x06,
+  0xFF, 0xFF, 0x07, 0xEF, 0xD8, 0xC1, 0x83, 0x07, 0x8F, 0xF1, 0xC0, 0x18,
+  0x30, 0xC1, 0x86, 0x0F, 0x3F, 0x63, 0xC7, 0x8F, 0x3F, 0xE3, 0x00, 0xFF,
+  0xFF, 0x1E, 0x60, 0xC1, 0x86, 0x0C, 0x30, 0x60, 0xC3, 0x00, 0x7D, 0xFF,
+  0x1E, 0x37, 0xCF, 0xBB, 0xE3, 0xC7, 0xDD, 0xF1, 0xC0, 0x7D, 0xCF, 0x1E,
+  0x3C, 0x7F, 0xDF, 0x06, 0x18, 0x30, 0xC1, 0x80, 0xF0, 0xF0, 0xF0, 0xF8,
+  0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0x80, 0xFF,
+  0xFF, 0xC0, 0x1F, 0xFF, 0xF8, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0x18, 0x38,
+  0x71, 0xE0, 0x80, 0x00, 0x7B, 0xFC, 0xF3, 0x0C, 0x63, 0x8C, 0x30, 0x03,
+  0x0C, 0x0F, 0xC1, 0xFF, 0x1F, 0xDD, 0xF1, 0xFF, 0x89, 0xF8, 0x4F, 0xC6,
+  0x7E, 0x26, 0x7F, 0xC3, 0x83, 0x8F, 0xF8, 0x1F, 0x00, 0x0C, 0x01, 0xC0,
+  0x38, 0x0D, 0x81, 0xB0, 0x62, 0x0C, 0x61, 0xFC, 0x7F, 0x8C, 0x19, 0x83,
+  0x60, 0x30, 0xFE, 0x7F, 0xF0, 0x78, 0x3C, 0x3F, 0xFB, 0xFD, 0x83, 0xC1,
+  0xE0, 0xFF, 0xDF, 0xC0, 0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x06, 0x03, 0x01,
+  0x80, 0xC1, 0xF1, 0xDF, 0xC7, 0xC0, 0xFE, 0x7F, 0xB0, 0xF8, 0x3C, 0x1E,
+  0x0F, 0x07, 0x83, 0xC1, 0xE1, 0xFF, 0xDF, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0,
+  0xC0, 0xFE, 0xFE, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0,
+  0xC0, 0xFE, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x3E, 0x3F, 0xB8, 0xF8,
+  0x0C, 0x06, 0x3F, 0x1F, 0x83, 0xC1, 0xF1, 0xDF, 0xC7, 0xC0, 0xC1, 0xE0,
+  0xF0, 0x78, 0x3C, 0x1F, 0xFF, 0xFF, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x30,
+  0xFF, 0xFF, 0xFF, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x1F,
+  0xF3, 0xC0, 0xC1, 0xB0, 0xCC, 0x63, 0x30, 0xDC, 0x37, 0x0F, 0xE3, 0x98,
+  0xC3, 0x30, 0xCC, 0x1B, 0x07, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0x7C, 0x1F, 0x83, 0xF0, 0xFF, 0x1F,
+  0xE3, 0xF6, 0xDE, 0xDB, 0xCE, 0x79, 0xCF, 0x01, 0xE0, 0x30, 0xC1, 0xF0,
+  0xF8, 0x7E, 0x3D, 0x9E, 0xCF, 0x37, 0x9B, 0xC7, 0xE1, 0xF0, 0xF8, 0x30,
+  0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xF1, 0xDF,
+  0xC7, 0xC0, 0xFE, 0x7F, 0xB0, 0xF8, 0x3C, 0x3F, 0xFB, 0xF9, 0x80, 0xC0,
+  0x60, 0x30, 0x18, 0x00, 0x3E, 0x1F, 0xCE, 0x3B, 0x06, 0xC1, 0xB0, 0x6C,
+  0x1B, 0x16, 0xCF, 0xB8, 0xE7, 0xFC, 0xFB, 0xFE, 0x3F, 0xCC, 0x1B, 0x06,
+  0xC3, 0xBF, 0xCF, 0xE3, 0x18, 0xC6, 0x30, 0xCC, 0x3B, 0x06, 0x1F, 0x0F,
+  0xF7, 0x09, 0x80, 0x60, 0x0F, 0x80, 0xF8, 0x03, 0x00, 0xD8, 0x77, 0xF8,
+  0x7C, 0xFF, 0xFF, 0xC6, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C,
+  0x06, 0x03, 0x00, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83,
+  0xC1, 0xF1, 0xDF, 0xC7, 0xC0, 0xC0, 0xD0, 0x66, 0x19, 0x86, 0x23, 0x0C,
+  0xC3, 0x30, 0x58, 0x1E, 0x07, 0x80, 0xC0, 0x30, 0xC3, 0x0D, 0x8C, 0x36,
+  0x38, 0xD8, 0xE3, 0x66, 0x98, 0x9B, 0x63, 0x4D, 0x8F, 0x36, 0x3C, 0x70,
+  0x71, 0xC1, 0x87, 0x06, 0x08, 0xE1, 0x98, 0xC3, 0x30, 0xD8, 0x1E, 0x07,
+  0x01, 0xC0, 0x78, 0x36, 0x1C, 0xC6, 0x1B, 0x06, 0xE1, 0xD8, 0x63, 0x30,
+  0xCC, 0x1E, 0x07, 0x80, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0xFF,
+  0xFF, 0x06, 0x06, 0x0C, 0x18, 0x18, 0x30, 0x60, 0xE0, 0xFF, 0xFF, 0xFC,
+  0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, 0xC1, 0x04, 0x18, 0x20, 0x83, 0x04,
+  0x18, 0x60, 0x83, 0xF3, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x08, 0x0C,
+  0x05, 0x06, 0x82, 0x63, 0x11, 0x0D, 0x82, 0xFF, 0x80, 0xE6, 0x30, 0x3C,
+  0xFC, 0x1B, 0xFF, 0xF8, 0xF1, 0xFF, 0x7E, 0xC1, 0x83, 0x06, 0xEF, 0xF8,
+  0xF1, 0xC3, 0xC7, 0x8F, 0xFE, 0xE0, 0x3C, 0xFF, 0x8E, 0x0C, 0x18, 0x38,
+  0x3F, 0x3C, 0x06, 0x0C, 0x1B, 0xBF, 0xF8, 0xF1, 0xE3, 0xC7, 0x8F, 0xFB,
+  0xB0, 0x38, 0xFB, 0x1F, 0xFF, 0xF8, 0x39, 0x3F, 0x3C, 0x3B, 0xD9, 0xFF,
+  0xB1, 0x8C, 0x63, 0x18, 0xC0, 0x77, 0xFF, 0x1E, 0x3C, 0x78, 0xF1, 0xFF,
+  0x76, 0x0D, 0x3F, 0xE7, 0x80, 0xC1, 0x83, 0x06, 0xEF, 0xF8, 0xF1, 0xE3,
+  0xC7, 0x8F, 0x1E, 0x30, 0xF3, 0xFF, 0xFF, 0x33, 0x03, 0x33, 0x33, 0x33,
+  0x33, 0x33, 0xFE, 0xC0, 0xC0, 0xC0, 0xC6, 0xCC, 0xD8, 0xD8, 0xF8, 0xEC,
+  0xCC, 0xC6, 0xC3, 0xDB, 0x6D, 0xB6, 0xDB, 0xB0, 0xDD, 0xEF, 0xFF, 0xC6,
+  0x3C, 0x63, 0xC6, 0x3C, 0x63, 0xC6, 0x3C, 0x63, 0xC6, 0x30, 0xDD, 0xFF,
+  0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC6, 0x38, 0xFB, 0x1E, 0x3C, 0x78, 0xF1,
+  0xBE, 0x38, 0xDD, 0xFF, 0x1E, 0x38, 0x78, 0xF1, 0xFF, 0xDD, 0x83, 0x06,
+  0x0C, 0x00, 0x77, 0xFF, 0x1E, 0x3C, 0x78, 0xF1, 0xFF, 0x76, 0x0C, 0x18,
+  0x30, 0x60, 0xDF, 0xFC, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x3E, 0x7F, 0x62,
+  0x60, 0x3E, 0x03, 0x43, 0x7F, 0x3E, 0x66, 0x6F, 0xF6, 0x66, 0x66, 0x73,
+  0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xFF, 0x76, 0xC3, 0xC2, 0x66, 0x66,
+  0x24, 0x3C, 0x3C, 0x18, 0x18, 0xC2, 0x1A, 0x31, 0x99, 0xCC, 0xCA, 0x66,
+  0xD2, 0x16, 0xF0, 0xE7, 0x87, 0x18, 0x18, 0xC0, 0x63, 0x66, 0x3E, 0x1C,
+  0x18, 0x3C, 0x36, 0x66, 0xE3, 0xC3, 0xC2, 0x66, 0x66, 0x24, 0x3C, 0x3C,
+  0x18, 0x18, 0x18, 0x30, 0x70, 0x60, 0xFF, 0xF0, 0x86, 0x31, 0x84, 0x3F,
+  0xFC, 0x1C, 0xC3, 0x0C, 0x30, 0xCC, 0x1C, 0x30, 0xC3, 0x0C, 0x30, 0x70,
+  0xFF, 0xFF, 0xFF, 0xE1, 0x8C, 0x63, 0x18, 0x63, 0x31, 0x8C, 0x63, 0x70,
+  0x71, 0xFF, 0x8E };
+
+const GFXglyph DINAlternateBold9pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   4,    0,    0 },   // 0x20 ' '
+  {     1,   2,  12,   4,    1,  -11 },   // 0x21 '!'
+  {     4,   4,   3,   6,    1,  -11 },   // 0x22 '"'
+  {     6,   8,  12,  10,    1,  -11 },   // 0x23 '#'
+  {    18,   8,  16,   9,    0,  -13 },   // 0x24 '$'
+  {    34,   7,  12,   9,    1,  -11 },   // 0x25 '%'
+  {    45,  11,  12,  12,    1,  -11 },   // 0x26 '&'
+  {    62,   2,   3,   4,    1,  -11 },   // 0x27 '''
+  {    63,   4,  14,   5,    1,  -11 },   // 0x28 '('
+  {    70,   4,  14,   5,    0,  -11 },   // 0x29 ')'
+  {    77,   5,   5,   7,    1,  -11 },   // 0x2A '*'
+  {    81,   9,   9,  11,    1,   -8 },   // 0x2B '+'
+  {    92,   2,   3,   4,    1,   -1 },   // 0x2C ','
+  {    93,   5,   2,   7,    1,   -5 },   // 0x2D '-'
+  {    95,   2,   2,   4,    1,   -1 },   // 0x2E '.'
+  {    96,   6,  12,   6,    0,  -11 },   // 0x2F '/'
+  {   105,   7,  12,   8,    1,  -11 },   // 0x30 '0'
+  {   116,   4,  12,   8,    2,  -11 },   // 0x31 '1'
+  {   122,   7,  12,   8,    1,  -11 },   // 0x32 '2'
+  {   133,   7,  12,   8,    1,  -11 },   // 0x33 '3'
+  {   144,   8,  12,   8,    1,  -11 },   // 0x34 '4'
+  {   156,   7,  12,   8,    1,  -11 },   // 0x35 '5'
+  {   167,   7,  13,   8,    1,  -11 },   // 0x36 '6'
+  {   179,   7,  12,   8,    1,  -11 },   // 0x37 '7'
+  {   190,   7,  12,   8,    1,  -11 },   // 0x38 '8'
+  {   201,   7,  12,   8,    1,  -11 },   // 0x39 '9'
+  {   212,   2,   6,   4,    1,   -5 },   // 0x3A ':'
+  {   214,   2,   7,   4,    1,   -5 },   // 0x3B ';'
+  {   216,   9,   9,  11,    1,   -8 },   // 0x3C '<'
+  {   227,   9,   5,  11,    1,   -6 },   // 0x3D '='
+  {   233,   9,   9,  11,    1,   -8 },   // 0x3E '>'
+  {   244,   6,  12,   8,    1,  -11 },   // 0x3F '?'
+  {   253,  13,  12,  15,    1,  -11 },   // 0x40 '@'
+  {   273,  11,  12,  11,    0,  -11 },   // 0x41 'A'
+  {   290,   9,  12,  11,    1,  -11 },   // 0x42 'B'
+  {   304,   9,  12,  10,    1,  -11 },   // 0x43 'C'
+  {   318,   9,  12,  11,    1,  -11 },   // 0x44 'D'
+  {   332,   8,  12,  10,    1,  -11 },   // 0x45 'E'
+  {   344,   8,  12,  10,    1,  -11 },   // 0x46 'F'
+  {   356,   9,  12,  11,    1,  -11 },   // 0x47 'G'
+  {   370,   9,  12,  11,    1,  -11 },   // 0x48 'H'
+  {   384,   2,  12,   4,    1,  -11 },   // 0x49 'I'
+  {   387,   7,  12,   8,    0,  -11 },   // 0x4A 'J'
+  {   398,  10,  12,  11,    1,  -11 },   // 0x4B 'K'
+  {   413,   8,  12,  10,    1,  -11 },   // 0x4C 'L'
+  {   425,  11,  12,  13,    1,  -11 },   // 0x4D 'M'
+  {   442,   9,  12,  11,    1,  -11 },   // 0x4E 'N'
+  {   456,   9,  12,  11,    1,  -11 },   // 0x4F 'O'
+  {   470,   9,  12,  11,    1,  -11 },   // 0x50 'P'
+  {   484,  10,  12,  11,    1,  -11 },   // 0x51 'Q'
+  {   499,  10,  12,  11,    1,  -11 },   // 0x52 'R'
+  {   514,  10,  12,  11,    0,  -11 },   // 0x53 'S'
+  {   529,   9,  12,  11,    1,  -11 },   // 0x54 'T'
+  {   543,   9,  12,  11,    1,  -11 },   // 0x55 'U'
+  {   557,  10,  12,  10,    0,  -11 },   // 0x56 'V'
+  {   572,  14,  12,  15,    0,  -11 },   // 0x57 'W'
+  {   593,  10,  12,   9,    0,  -11 },   // 0x58 'X'
+  {   608,  10,  12,  10,    0,  -11 },   // 0x59 'Y'
+  {   623,   8,  12,  10,    1,  -11 },   // 0x5A 'Z'
+  {   635,   4,  14,   5,    1,  -11 },   // 0x5B '['
+  {   642,   6,  12,   6,    0,  -11 },   // 0x5C '\'
+  {   651,   4,  14,   5,    0,  -11 },   // 0x5D ']'
+  {   658,   9,   8,  11,    1,  -12 },   // 0x5E '^'
+  {   667,   9,   1,   9,    0,    2 },   // 0x5F '_'
+  {   669,   4,   3,   4,   -1,  -12 },   // 0x60 '`'
+  {   671,   7,   9,   9,    1,   -8 },   // 0x61 'a'
+  {   679,   7,  12,   9,    1,  -11 },   // 0x62 'b'
+  {   690,   7,   9,   9,    1,   -8 },   // 0x63 'c'
+  {   698,   7,  12,   9,    1,  -11 },   // 0x64 'd'
+  {   709,   7,   9,   9,    1,   -8 },   // 0x65 'e'
+  {   717,   5,  12,   6,    1,  -11 },   // 0x66 'f'
+  {   725,   7,  13,   9,    1,   -8 },   // 0x67 'g'
+  {   737,   7,  12,   9,    1,  -11 },   // 0x68 'h'
+  {   748,   2,  12,   4,    1,  -11 },   // 0x69 'i'
+  {   751,   4,  16,   4,   -1,  -11 },   // 0x6A 'j'
+  {   759,   8,  12,   9,    1,  -11 },   // 0x6B 'k'
+  {   771,   3,  12,   5,    1,  -11 },   // 0x6C 'l'
+  {   776,  12,   9,  14,    1,   -8 },   // 0x6D 'm'
+  {   790,   7,   9,   9,    1,   -8 },   // 0x6E 'n'
+  {   798,   7,   9,   9,    1,   -8 },   // 0x6F 'o'
+  {   806,   7,  13,   9,    1,   -8 },   // 0x70 'p'
+  {   818,   7,  13,   9,    1,   -8 },   // 0x71 'q'
+  {   830,   6,   9,   7,    1,   -8 },   // 0x72 'r'
+  {   837,   8,   9,   9,    0,   -8 },   // 0x73 's'
+  {   846,   4,  12,   6,    1,  -11 },   // 0x74 't'
+  {   852,   7,   9,   9,    1,   -8 },   // 0x75 'u'
+  {   860,   8,   9,   8,    0,   -8 },   // 0x76 'v'
+  {   869,  13,   9,  13,    0,   -8 },   // 0x77 'w'
+  {   884,   8,   9,   8,    0,   -8 },   // 0x78 'x'
+  {   893,   8,  13,   8,    0,   -8 },   // 0x79 'y'
+  {   906,   6,   9,   8,    1,   -8 },   // 0x7A 'z'
+  {   913,   6,  14,   6,    0,  -11 },   // 0x7B '{'
+  {   924,   2,  12,   4,    1,  -11 },   // 0x7C '|'
+  {   927,   5,  14,   6,    0,  -11 },   // 0x7D '}'
+  {   936,   8,   3,  11,    1,   -5 } }; // 0x7E '~'
+
+const GFXfont DINAlternateBold9pt7b PROGMEM = {
+  (uint8_t  *)DINAlternateBold9pt7bBitmaps,
+  (GFXglyph *)DINAlternateBold9pt7bGlyphs,
+  0x20, 0x7E, 21 };
+
+// Approx. 1611 bytes
+const uint8_t DINCondensedBold9pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xFF, 0xCF, 0xFF, 0xF0, 0x25, 0x96, 0xFF, 0x49, 0x24, 0xBF,
+  0xDB, 0x69, 0x24, 0x10, 0xE7, 0xF7, 0xDF, 0x4F, 0x0F, 0x1C, 0x7D, 0xF7,
+  0x7C, 0x41, 0x00, 0xEE, 0xAE, 0x86, 0x10, 0x42, 0x08, 0x7D, 0x55, 0x77,
+  0x78, 0xFC, 0xCC, 0xCC, 0x78, 0x30, 0x70, 0xDB, 0xCE, 0xCE, 0xFE, 0x73,
+  0xFC, 0x2D, 0x2D, 0xB6, 0xD9, 0x26, 0x40, 0x99, 0x26, 0xDB, 0x6D, 0x2D,
+  0x00, 0x25, 0x5C, 0xEA, 0x90, 0x18, 0x0C, 0x06, 0x03, 0x0F, 0xFF, 0xFC,
+  0x60, 0x30, 0x18, 0x00, 0xF8, 0xFF, 0xC0, 0xF0, 0x33, 0x22, 0x26, 0x64,
+  0x44, 0xCC, 0x77, 0xF7, 0xBD, 0xEF, 0x7B, 0xDE, 0xFE, 0xE0, 0x7F, 0xB3,
+  0x33, 0x33, 0x33, 0x33, 0x77, 0xF7, 0xB1, 0x98, 0xCC, 0x66, 0x3F, 0xF0,
+  0x77, 0xF6, 0x33, 0x98, 0x63, 0xDE, 0xFE, 0xE0, 0x30, 0xC6, 0x18, 0x61,
+  0x6D, 0xB6, 0xFF, 0xF1, 0x86, 0xFF, 0xF1, 0x8F, 0x7E, 0x63, 0x1E, 0xFE,
+  0xE0, 0x31, 0x88, 0xC6, 0x7F, 0x7B, 0xDE, 0xFE, 0xE0, 0xFF, 0xFC, 0x86,
+  0x18, 0x63, 0x0C, 0x31, 0x86, 0x18, 0x77, 0xF7, 0xBF, 0xFF, 0x7B, 0xDE,
+  0xFE, 0xE0, 0x77, 0xF7, 0xBD, 0xEF, 0xE6, 0x31, 0x18, 0xC0, 0xF0, 0xF0,
+  0xF0, 0xF8, 0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x03, 0x80, 0x70, 0x0E, 0x00,
+  0x80, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xF8, 0x80, 0x70, 0x0F, 0x00, 0xE0,
+  0x18, 0x38, 0x70, 0xE0, 0x80, 0x00, 0x77, 0xF3, 0x90, 0x8C, 0xC6, 0x30,
+  0x0C, 0x60, 0x0F, 0x81, 0xC3, 0x1B, 0xDC, 0xFE, 0xBD, 0x89, 0xF8, 0x4F,
+  0xC6, 0xFE, 0x26, 0x7F, 0xF3, 0xE7, 0x8E, 0x18, 0x1F, 0x00, 0x10, 0x70,
+  0xE1, 0x42, 0x85, 0x9B, 0x3E, 0x7C, 0x8F, 0x1E, 0x30, 0xFB, 0xFC, 0xF3,
+  0xFB, 0xEC, 0xF3, 0xCF, 0x3F, 0xFE, 0x7B, 0xFC, 0xF3, 0xC3, 0x0C, 0x30,
+  0xCF, 0x3F, 0xDE, 0xFB, 0xFC, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3F, 0xFE,
+  0xFF, 0xFC, 0x30, 0xC3, 0xEF, 0xB0, 0xC3, 0x0F, 0xFF, 0xFF, 0xFC, 0x30,
+  0xC3, 0xEF, 0xB0, 0xC3, 0x0C, 0x30, 0x7B, 0xFC, 0xF0, 0xC3, 0x7D, 0xF3,
+  0xCF, 0x3F, 0xDE, 0xCF, 0x3C, 0xF3, 0xCF, 0xFF, 0xF3, 0xCF, 0x3C, 0xF3,
+  0xFF, 0xFF, 0xFF, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x37, 0xDE,
+  0xCD, 0x9B, 0x66, 0xCF, 0x1E, 0x3E, 0x7C, 0xCD, 0x9B, 0x36, 0x30, 0xC3,
+  0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0xFF, 0xC3, 0xC3, 0xE7, 0xE7,
+  0xE7, 0xFF, 0xDB, 0xDB, 0xDB, 0xDB, 0xC3, 0xC3, 0xCF, 0x3E, 0xFB, 0xEF,
+  0xBD, 0xF7, 0xDF, 0x7C, 0xF3, 0x7B, 0xFC, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF,
+  0x3F, 0xDE, 0xFB, 0xFC, 0xF3, 0xCF, 0xFF, 0xB0, 0xC3, 0x0C, 0x30, 0x79,
+  0xFB, 0x36, 0x6C, 0xD9, 0xB3, 0x66, 0xDD, 0xBB, 0xF3, 0xA0, 0xFB, 0xFC,
+  0xF3, 0xCF, 0xFF, 0x36, 0xDB, 0x2C, 0xF3, 0x7B, 0xFC, 0xF3, 0xC1, 0xC1,
+  0xC3, 0xCF, 0x3F, 0xDE, 0xFF, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3,
+  0x0C, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3F, 0xDE, 0xC6, 0x8D,
+  0x93, 0x66, 0xCD, 0x8B, 0x14, 0x38, 0x70, 0xE0, 0x80, 0xCC, 0xD3, 0x34,
+  0xCD, 0xBB, 0x6E, 0x9F, 0xA7, 0xA9, 0xEE, 0x33, 0x8C, 0xE3, 0x38, 0xC4,
+  0xC6, 0xD9, 0xB1, 0xC3, 0x86, 0x0E, 0x1C, 0x68, 0xD9, 0x36, 0x30, 0xCF,
+  0x3C, 0xDE, 0x79, 0xE3, 0x0C, 0x30, 0xC3, 0x0C, 0xFF, 0xC6, 0x23, 0x19,
+  0x8C, 0x46, 0x3F, 0xF0, 0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xC0, 0xCC, 0x44,
+  0x46, 0x62, 0x22, 0x33, 0xED, 0xB6, 0xDB, 0x6D, 0xB7, 0xC0, 0x08, 0x0C,
+  0x07, 0x06, 0x82, 0x23, 0x11, 0x05, 0x82, 0xFF, 0x80, 0xC6, 0x20, 0x7B,
+  0xF0, 0xDF, 0xFF, 0x3C, 0xFF, 0x6C, 0xC6, 0x31, 0xFF, 0xEF, 0x7B, 0xDE,
+  0xFF, 0xF0, 0x73, 0xEC, 0xB0, 0xC3, 0x0C, 0xBE, 0x70, 0x18, 0xC7, 0xFF,
+  0xEF, 0x7B, 0xDE, 0xFF, 0xF0, 0x77, 0xF7, 0xFF, 0xE3, 0x7F, 0x70, 0x37,
+  0x6F, 0xF6, 0x66, 0x66, 0x66, 0xFF, 0xF7, 0xBD, 0xEF, 0x7F, 0xF8, 0xF7,
+  0xF7, 0x00, 0xC6, 0x31, 0xFF, 0xEF, 0x7B, 0xDE, 0xF7, 0xB0, 0xF3, 0xFF,
+  0xFF, 0x6C, 0x36, 0xDB, 0x6D, 0xB6, 0xFE, 0xC3, 0x0C, 0x33, 0xDB, 0x6F,
+  0x3C, 0xFB, 0x6C, 0xF3, 0xDB, 0x6D, 0xB6, 0xDB, 0xB0, 0xF6, 0xFF, 0xDB,
+  0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xFF, 0xF7, 0xBD, 0xEF, 0x7B, 0xD8,
+  0x77, 0xF7, 0xBD, 0xEF, 0x7F, 0x70, 0xFF, 0xF7, 0xBD, 0xEF, 0x7F, 0xFE,
+  0x31, 0x8C, 0x00, 0xFF, 0xF7, 0xBD, 0xEF, 0x7F, 0xF8, 0xC6, 0x31, 0x80,
+  0xDF, 0xCC, 0xCC, 0xCC, 0xC0, 0x77, 0xF7, 0x87, 0x0F, 0x7F, 0x70, 0x66,
+  0x6F, 0xF6, 0x66, 0x66, 0x73, 0xDE, 0xF7, 0xBD, 0xEF, 0x7F, 0xF8, 0xCF,
+  0x34, 0xDA, 0x79, 0xE3, 0x8C, 0x30, 0xCD, 0xE6, 0xD3, 0x6F, 0xB7, 0xD3,
+  0xB8, 0xDC, 0x6E, 0x32, 0x00, 0xCD, 0x67, 0x8C, 0x31, 0xC7, 0x96, 0xCC,
+  0xC4, 0xD9, 0xB3, 0x62, 0x85, 0x0E, 0x1C, 0x18, 0x20, 0xC3, 0x86, 0x00,
+  0xFF, 0xC6, 0x62, 0x33, 0x1F, 0xF8, 0x36, 0x66, 0x66, 0x68, 0x66, 0x66,
+  0x63, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66, 0x66, 0x61, 0x66, 0x66,
+  0x6C, 0x71, 0xFF, 0x8E };
+
+const GFXglyph DINCondensedBold9pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   3,    0,    0 },   // 0x20 ' '
+  {     1,   2,  12,   4,    1,  -11 },   // 0x21 '!'
+  {     4,   4,   3,   6,    1,  -11 },   // 0x22 '"'
+  {     6,   6,  12,   8,    1,  -11 },   // 0x23 '#'
+  {    15,   6,  15,   8,    1,  -12 },   // 0x24 '$'
+  {    27,   6,  12,   8,    1,  -11 },   // 0x25 '%'
+  {    36,   8,  12,   9,    1,  -11 },   // 0x26 '&'
+  {    48,   2,   3,   4,    1,  -11 },   // 0x27 '''
+  {    49,   3,  14,   4,    1,  -11 },   // 0x28 '('
+  {    55,   3,  14,   4,    0,  -11 },   // 0x29 ')'
+  {    61,   5,   6,   7,    1,  -11 },   // 0x2A '*'
+  {    65,   9,   9,  11,    1,   -8 },   // 0x2B '+'
+  {    76,   2,   3,   4,    1,   -1 },   // 0x2C ','
+  {    77,   5,   2,   7,    1,   -5 },   // 0x2D '-'
+  {    79,   2,   2,   4,    1,   -1 },   // 0x2E '.'
+  {    80,   4,  12,   4,    0,  -11 },   // 0x2F '/'
+  {    86,   5,  12,   7,    1,  -11 },   // 0x30 '0'
+  {    94,   4,  12,   7,    1,  -11 },   // 0x31 '1'
+  {   100,   5,  12,   7,    1,  -11 },   // 0x32 '2'
+  {   108,   5,  12,   7,    1,  -11 },   // 0x33 '3'
+  {   116,   6,  12,   7,    1,  -11 },   // 0x34 '4'
+  {   125,   5,  12,   7,    1,  -11 },   // 0x35 '5'
+  {   133,   5,  12,   7,    1,  -11 },   // 0x36 '6'
+  {   141,   6,  12,   7,    1,  -11 },   // 0x37 '7'
+  {   150,   5,  12,   7,    1,  -11 },   // 0x38 '8'
+  {   158,   5,  12,   7,    1,  -11 },   // 0x39 '9'
+  {   166,   2,   6,   4,    1,   -5 },   // 0x3A ':'
+  {   168,   2,   7,   4,    1,   -5 },   // 0x3B ';'
+  {   170,   9,   9,  11,    1,   -8 },   // 0x3C '<'
+  {   181,   9,   5,  11,    1,   -6 },   // 0x3D '='
+  {   187,   9,   9,  11,    1,   -8 },   // 0x3E '>'
+  {   198,   5,  12,   7,    1,  -11 },   // 0x3F '?'
+  {   206,  13,  12,  15,    1,  -11 },   // 0x40 '@'
+  {   226,   7,  12,   7,    0,  -11 },   // 0x41 'A'
+  {   237,   6,  12,   8,    1,  -11 },   // 0x42 'B'
+  {   246,   6,  12,   8,    1,  -11 },   // 0x43 'C'
+  {   255,   6,  12,   8,    1,  -11 },   // 0x44 'D'
+  {   264,   6,  12,   7,    1,  -11 },   // 0x45 'E'
+  {   273,   6,  12,   7,    1,  -11 },   // 0x46 'F'
+  {   282,   6,  12,   8,    1,  -11 },   // 0x47 'G'
+  {   291,   6,  12,   8,    1,  -11 },   // 0x48 'H'
+  {   300,   2,  12,   4,    1,  -11 },   // 0x49 'I'
+  {   303,   6,  12,   6,   -1,  -11 },   // 0x4A 'J'
+  {   312,   7,  12,   8,    1,  -11 },   // 0x4B 'K'
+  {   323,   6,  12,   7,    1,  -11 },   // 0x4C 'L'
+  {   332,   8,  12,  10,    1,  -11 },   // 0x4D 'M'
+  {   344,   6,  12,   8,    1,  -11 },   // 0x4E 'N'
+  {   353,   6,  12,   8,    1,  -11 },   // 0x4F 'O'
+  {   362,   6,  12,   8,    1,  -11 },   // 0x50 'P'
+  {   371,   7,  12,   8,    1,  -11 },   // 0x51 'Q'
+  {   382,   6,  12,   8,    1,  -11 },   // 0x52 'R'
+  {   391,   6,  12,   8,    1,  -11 },   // 0x53 'S'
+  {   400,   6,  12,   6,    0,  -11 },   // 0x54 'T'
+  {   409,   6,  12,   8,    1,  -11 },   // 0x55 'U'
+  {   418,   7,  12,   7,    0,  -11 },   // 0x56 'V'
+  {   429,  10,  12,  10,    0,  -11 },   // 0x57 'W'
+  {   444,   7,  12,   7,    0,  -11 },   // 0x58 'X'
+  {   455,   6,  12,   8,    1,  -11 },   // 0x59 'Y'
+  {   464,   5,  12,   7,    1,  -11 },   // 0x5A 'Z'
+  {   472,   3,  14,   4,    1,  -11 },   // 0x5B '['
+  {   478,   4,  12,   4,    0,  -11 },   // 0x5C '\'
+  {   484,   3,  14,   4,    0,  -11 },   // 0x5D ']'
+  {   490,   9,   8,  11,    1,  -12 },   // 0x5E '^'
+  {   499,   9,   1,   9,    0,    2 },   // 0x5F '_'
+  {   501,   4,   3,   3,   -1,  -12 },   // 0x60 '`'
+  {   503,   6,   9,   8,    1,   -8 },   // 0x61 'a'
+  {   510,   5,  12,   7,    1,  -11 },   // 0x62 'b'
+  {   518,   6,   9,   7,    1,   -8 },   // 0x63 'c'
+  {   525,   5,  12,   7,    1,  -11 },   // 0x64 'd'
+  {   533,   5,   9,   7,    1,   -8 },   // 0x65 'e'
+  {   539,   4,  12,   5,    1,  -11 },   // 0x66 'f'
+  {   545,   5,  13,   7,    1,   -8 },   // 0x67 'g'
+  {   554,   5,  12,   7,    1,  -11 },   // 0x68 'h'
+  {   562,   2,  12,   4,    1,  -11 },   // 0x69 'i'
+  {   565,   3,  16,   4,    0,  -11 },   // 0x6A 'j'
+  {   571,   6,  12,   7,    1,  -11 },   // 0x6B 'k'
+  {   580,   3,  12,   4,    1,  -11 },   // 0x6C 'l'
+  {   585,   8,   9,  10,    1,   -8 },   // 0x6D 'm'
+  {   594,   5,   9,   7,    1,   -8 },   // 0x6E 'n'
+  {   600,   5,   9,   7,    1,   -8 },   // 0x6F 'o'
+  {   606,   5,  13,   7,    1,   -8 },   // 0x70 'p'
+  {   615,   5,  13,   7,    1,   -8 },   // 0x71 'q'
+  {   624,   4,   9,   5,    1,   -8 },   // 0x72 'r'
+  {   629,   5,   9,   7,    1,   -8 },   // 0x73 's'
+  {   635,   4,  12,   4,    0,  -11 },   // 0x74 't'
+  {   641,   5,   9,   7,    1,   -8 },   // 0x75 'u'
+  {   647,   6,   9,   6,    0,   -8 },   // 0x76 'v'
+  {   654,   9,   9,   9,    0,   -8 },   // 0x77 'w'
+  {   665,   6,   9,   6,    0,   -8 },   // 0x78 'x'
+  {   672,   7,  13,   6,    0,   -8 },   // 0x79 'y'
+  {   684,   5,   9,   7,    1,   -8 },   // 0x7A 'z'
+  {   690,   4,  14,   5,    1,  -11 },   // 0x7B '{'
+  {   697,   2,  17,   4,    1,  -12 },   // 0x7C '|'
+  {   702,   4,  14,   4,    0,  -11 },   // 0x7D '}'
+  {   709,   8,   3,  11,    1,   -5 } }; // 0x7E '~'
+
+const GFXfont DINCondensedBold9pt7b PROGMEM = {
+  (uint8_t  *)DINCondensedBold9pt7bBitmaps,
+  (GFXglyph *)DINCondensedBold9pt7bGlyphs,
+  0x20, 0x7E, 21 };
+
+// Approx. 1384 bytes
+const uint8_t EuphemiaCAS9pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xFF, 0xF0, 0x40, 0xDE, 0xD2, 0x0C, 0x20, 0x20, 0x80, 0x82,
+  0x1F, 0xFF, 0x08, 0x60, 0x21, 0x01, 0x84, 0x06, 0x10, 0x10, 0x40, 0x41,
+  0x0F, 0xFF, 0x84, 0x30, 0x10, 0x80, 0xC2, 0x03, 0x08, 0x00, 0x08, 0x1E,
+  0x3B, 0x4A, 0x48, 0x48, 0x68, 0x3C, 0x0E, 0x0B, 0x09, 0x09, 0x49, 0xEA,
+  0x3E, 0x08, 0x08, 0x70, 0x14, 0x41, 0x22, 0x19, 0x10, 0x88, 0x88, 0x44,
+  0x82, 0x2C, 0x0E, 0xDE, 0x05, 0x08, 0x48, 0x46, 0x42, 0x62, 0x12, 0x19,
+  0xA0, 0x7B, 0x00, 0x00, 0x3C, 0x0C, 0x41, 0x08, 0x21, 0x02, 0x40, 0x70,
+  0x1E, 0x06, 0x63, 0x84, 0x50, 0x5A, 0x06, 0x21, 0xE3, 0xE6, 0xF4, 0x12,
+  0x44, 0xC8, 0x88, 0x88, 0x84, 0x44, 0x21, 0x84, 0x22, 0x31, 0x11, 0x11,
+  0x12, 0x22, 0x48, 0x11, 0xAC, 0xE0, 0x83, 0x9A, 0xC4, 0x00, 0x08, 0x04,
+  0x02, 0x01, 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xD6, 0xF8, 0xC0,
+  0x00, 0x80, 0x40, 0x40, 0x60, 0x20, 0x30, 0x10, 0x10, 0x08, 0x08, 0x04,
+  0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x80, 0x00, 0x3C, 0x42, 0x42, 0x81,
+  0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x42, 0x42, 0x3C, 0x33, 0xC9, 0x04,
+  0x10, 0x41, 0x04, 0x10, 0x41, 0x04, 0x7C, 0x3E, 0x63, 0x01, 0x01, 0x01,
+  0x03, 0x06, 0x0C, 0x10, 0x60, 0x40, 0x80, 0xFE, 0x7C, 0x82, 0x01, 0x02,
+  0x02, 0x1C, 0x02, 0x01, 0x01, 0x01, 0x01, 0x82, 0xFC, 0x02, 0x06, 0x0A,
+  0x0A, 0x12, 0x22, 0x62, 0x42, 0xFF, 0x02, 0x02, 0x02, 0x02, 0xFD, 0x02,
+  0x04, 0x0F, 0x90, 0x80, 0x81, 0x02, 0x04, 0x0C, 0x2F, 0x80, 0x1F, 0x22,
+  0x40, 0xC0, 0xFC, 0xC2, 0x81, 0x81, 0x81, 0x81, 0xC1, 0x42, 0x3C, 0xFF,
+  0x01, 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x08, 0x18, 0x10, 0x30, 0x20,
+  0x3C, 0xC3, 0x81, 0x81, 0xC3, 0x3C, 0x3C, 0x42, 0x81, 0x81, 0x81, 0x42,
+  0x3C, 0x3C, 0x42, 0x81, 0x81, 0x81, 0x81, 0x43, 0x3F, 0x03, 0x03, 0x02,
+  0x84, 0xF8, 0xC0, 0x03, 0xC0, 0x03, 0x58, 0x04, 0x1C, 0x61, 0x82, 0x08,
+  0x20, 0x20, 0x20, 0x60, 0x60, 0x60, 0x60, 0xFF, 0x80, 0x00, 0x1F, 0xF0,
+  0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x86, 0x18, 0x61, 0x86, 0x08, 0x00,
+  0xFA, 0x20, 0x41, 0x04, 0x10, 0x8C, 0x21, 0x86, 0x00, 0x40, 0x07, 0xE0,
+  0x18, 0x18, 0x30, 0x04, 0x60, 0x02, 0x40, 0x02, 0x87, 0xE1, 0x88, 0x21,
+  0x90, 0x21, 0x90, 0x21, 0x90, 0x21, 0x90, 0x22, 0x88, 0x62, 0x47, 0xBC,
+  0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x07, 0xC0, 0x04, 0x01, 0x40, 0x28,
+  0x05, 0x81, 0x10, 0x22, 0x04, 0x61, 0xFC, 0x20, 0x84, 0x19, 0x03, 0x20,
+  0x2C, 0x06, 0xFD, 0x0E, 0x0C, 0x18, 0x5F, 0x21, 0x41, 0x83, 0x06, 0x0C,
+  0x2F, 0x80, 0x1F, 0x30, 0xD0, 0x18, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80,
+  0x60, 0x10, 0x2C, 0x31, 0xF0, 0xFC, 0x20, 0xC8, 0x0A, 0x03, 0x80, 0x60,
+  0x18, 0x06, 0x01, 0x80, 0x60, 0x28, 0x1A, 0x0C, 0xFC, 0x00, 0xFF, 0x02,
+  0x04, 0x08, 0x1F, 0xA0, 0x40, 0x81, 0x02, 0x04, 0x0F, 0xE0, 0xFF, 0x02,
+  0x04, 0x08, 0x1F, 0xA0, 0x40, 0x81, 0x02, 0x04, 0x08, 0x00, 0x1F, 0x88,
+  0x34, 0x01, 0x00, 0x80, 0x20, 0x08, 0x02, 0x01, 0x80, 0x50, 0x14, 0x04,
+  0xC1, 0x1F, 0x80, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x1F, 0xFE,
+  0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, 0x40, 0xFF, 0xF8, 0x02, 0x04,
+  0x08, 0x10, 0x20, 0x40, 0x81, 0x02, 0x07, 0x0E, 0x37, 0xC0, 0x83, 0x43,
+  0x23, 0x13, 0x0B, 0x07, 0x03, 0x01, 0xC0, 0xB0, 0x4C, 0x23, 0x10, 0xC8,
+  0x38, 0x81, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x02, 0x04, 0x0F,
+  0xE0, 0x80, 0x1C, 0x03, 0xC0, 0x3E, 0x07, 0xA0, 0x5A, 0x05, 0xB0, 0xD9,
+  0x09, 0x99, 0x98, 0x91, 0x8F, 0x18, 0x61, 0x86, 0x10, 0x80, 0x70, 0x1E,
+  0x06, 0xC1, 0x90, 0x66, 0x18, 0xC6, 0x19, 0x86, 0x60, 0xD8, 0x1E, 0x07,
+  0x80, 0xC0, 0x0F, 0x83, 0x0C, 0x40, 0x24, 0x02, 0x80, 0x18, 0x01, 0x80,
+  0x18, 0x01, 0x80, 0x14, 0x02, 0x40, 0x23, 0x0C, 0x1F, 0x00, 0xFC, 0x82,
+  0x81, 0x81, 0x81, 0x86, 0xFC, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x0F,
+  0x83, 0x0C, 0x40, 0x24, 0x02, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80,
+  0x14, 0x03, 0x40, 0x23, 0x0C, 0x1F, 0x80, 0x10, 0x01, 0x80, 0x0C, 0x00,
+  0x60, 0xFC, 0x41, 0x20, 0x50, 0x28, 0x14, 0x33, 0xF1, 0x18, 0x84, 0x43,
+  0x20, 0x90, 0x68, 0x18, 0x1F, 0x10, 0xD0, 0x08, 0x06, 0x01, 0xC0, 0x38,
+  0x06, 0x00, 0x80, 0x50, 0x3C, 0x23, 0xE0, 0xFF, 0x84, 0x02, 0x01, 0x00,
+  0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x80, 0x30,
+  0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06,
+  0x00, 0xB0, 0x63, 0xF8, 0xC0, 0x50, 0x36, 0x0D, 0x82, 0x21, 0x8C, 0x43,
+  0x10, 0x4C, 0x1A, 0x06, 0x80, 0xE0, 0x30, 0x0C, 0x00, 0xC1, 0x06, 0x83,
+  0x0D, 0x06, 0x13, 0x14, 0x26, 0x28, 0xC4, 0x59, 0x89, 0x92, 0x1A, 0x24,
+  0x34, 0x68, 0x28, 0xF0, 0x70, 0xC0, 0xC1, 0x81, 0x83, 0x00, 0x60, 0xC4,
+  0x10, 0xC6, 0x0D, 0x80, 0xA0, 0x18, 0x03, 0x80, 0x50, 0x1B, 0x02, 0x20,
+  0x82, 0x30, 0x6C, 0x06, 0xC1, 0xA0, 0x98, 0xC4, 0x41, 0x40, 0xA0, 0x20,
+  0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x7F, 0x80, 0xC0, 0x40, 0x40,
+  0x60, 0x20, 0x20, 0x30, 0x10, 0x18, 0x18, 0x08, 0x0F, 0xF8, 0xF2, 0x49,
+  0x24, 0x92, 0x49, 0x24, 0xE0, 0x80, 0x40, 0x10, 0x08, 0x02, 0x01, 0x00,
+  0x40, 0x20, 0x08, 0x04, 0x01, 0x00, 0xC0, 0x20, 0x18, 0x04, 0x03, 0x00,
+  0x80, 0xE4, 0x92, 0x49, 0x24, 0x92, 0x49, 0xE0, 0x08, 0x05, 0x01, 0x20,
+  0x88, 0x61, 0x10, 0x68, 0x0C, 0xFF, 0x80, 0x4C, 0x21, 0x3C, 0x31, 0x00,
+  0x80, 0x47, 0xE6, 0x12, 0x09, 0x0C, 0x7B, 0x80, 0x80, 0x80, 0x80, 0x80,
+  0xBC, 0xC2, 0x81, 0x81, 0x81, 0x81, 0x83, 0x86, 0xFC, 0x3E, 0x43, 0x80,
+  0x80, 0x80, 0x80, 0xC0, 0x63, 0x3E, 0x01, 0x01, 0x01, 0x01, 0x3F, 0x41,
+  0xC1, 0x81, 0x81, 0x81, 0xC1, 0x41, 0x3F, 0x3C, 0x8E, 0x0F, 0xF8, 0x10,
+  0x30, 0x23, 0x3C, 0x3D, 0x04, 0x10, 0xF1, 0x04, 0x10, 0x41, 0x04, 0x10,
+  0x40, 0x3F, 0xE3, 0x20, 0x90, 0x4C, 0x63, 0xE2, 0x01, 0x00, 0x7C, 0x43,
+  0x20, 0x90, 0xC7, 0xC0, 0x80, 0x80, 0x80, 0x80, 0xBE, 0xC3, 0x81, 0x81,
+  0x81, 0x81, 0x81, 0x81, 0x81, 0xC0, 0x55, 0x55, 0x40, 0x30, 0x00, 0x22,
+  0x22, 0x22, 0x22, 0x22, 0x26, 0xC0, 0x81, 0x02, 0x04, 0x08, 0x73, 0x2C,
+  0x70, 0xB1, 0x32, 0x24, 0x68, 0x60, 0x92, 0x49, 0x24, 0x92, 0x4E, 0xB9,
+  0xD8, 0xC6, 0x10, 0xC2, 0x18, 0x43, 0x08, 0x61, 0x0C, 0x21, 0x84, 0x20,
+  0xBE, 0xC3, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x3E, 0x30, 0xB0,
+  0x70, 0x18, 0x0C, 0x07, 0x06, 0xC6, 0x3E, 0x00, 0xBC, 0xC2, 0x81, 0x81,
+  0x81, 0x81, 0x81, 0x82, 0xFC, 0x80, 0x80, 0x80, 0x80, 0x3F, 0x41, 0x81,
+  0x81, 0x81, 0x81, 0xC1, 0x41, 0x3F, 0x01, 0x01, 0x01, 0x01, 0xBE, 0x21,
+  0x08, 0x42, 0x10, 0x80, 0x7D, 0x0E, 0x06, 0x03, 0x80, 0xC0, 0xE1, 0x7C,
+  0x42, 0x11, 0xE4, 0x21, 0x08, 0x42, 0x10, 0xF0, 0x83, 0x06, 0x0C, 0x18,
+  0x30, 0x60, 0xC3, 0x7A, 0x81, 0x83, 0x82, 0x46, 0x46, 0x24, 0x2C, 0x2C,
+  0x18, 0xC4, 0x34, 0x62, 0x46, 0x66, 0xA6, 0x29, 0x42, 0x94, 0x29, 0xC1,
+  0x18, 0x10, 0x80, 0x43, 0x26, 0x24, 0x18, 0x18, 0x1C, 0x24, 0x66, 0xC3,
+  0xC1, 0xA0, 0x98, 0xC4, 0x43, 0x20, 0xA0, 0x50, 0x38, 0x08, 0x04, 0x06,
+  0x02, 0x0E, 0x00, 0xFE, 0x08, 0x30, 0xC3, 0x04, 0x10, 0x60, 0xFE, 0x19,
+  0x08, 0x42, 0x10, 0x84, 0xC1, 0x08, 0x42, 0x10, 0x84, 0x18, 0xFF, 0xFF,
+  0x80, 0xC1, 0x08, 0x42, 0x10, 0x84, 0x19, 0x08, 0x42, 0x10, 0x84, 0xC0,
+  0x70, 0xC7, 0x80 };
+
+const GFXglyph EuphemiaCAS9pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   9,    0,    0 },   // 0x20 ' '
+  {     1,   2,  13,   4,    1,  -12 },   // 0x21 '!'
+  {     5,   5,   3,   7,    1,  -12 },   // 0x22 '"'
+  {     7,  14,  15,  16,    1,  -13 },   // 0x23 '#'
+  {    34,   8,  17,  10,    1,  -14 },   // 0x24 '$'
+  {    51,  13,  15,  17,    2,  -13 },   // 0x25 '%'
+  {    76,  11,  13,  13,    1,  -12 },   // 0x26 '&'
+  {    94,   2,   3,   4,    1,  -12 },   // 0x27 '''
+  {    95,   4,  16,   6,    1,  -14 },   // 0x28 '('
+  {   103,   4,  16,   6,    1,  -14 },   // 0x29 ')'
+  {   111,   7,   7,   9,    1,  -14 },   // 0x2A '*'
+  {   118,   9,   9,  11,    1,   -9 },   // 0x2B '+'
+  {   129,   2,   4,   4,    1,    0 },   // 0x2C ','
+  {   130,   5,   1,   7,    1,   -6 },   // 0x2D '-'
+  {   131,   2,   1,   4,    1,    0 },   // 0x2E '.'
+  {   132,   9,  17,  11,    1,  -14 },   // 0x2F '/'
+  {   152,   8,  13,  10,    1,  -12 },   // 0x30 '0'
+  {   165,   6,  13,  10,    2,  -12 },   // 0x31 '1'
+  {   175,   8,  13,  10,    1,  -12 },   // 0x32 '2'
+  {   188,   8,  13,  10,    1,  -12 },   // 0x33 '3'
+  {   201,   8,  13,  10,    1,  -12 },   // 0x34 '4'
+  {   214,   7,  13,  10,    2,  -12 },   // 0x35 '5'
+  {   226,   8,  13,  10,    1,  -12 },   // 0x36 '6'
+  {   239,   8,  13,  10,    1,  -12 },   // 0x37 '7'
+  {   252,   8,  13,  10,    1,  -12 },   // 0x38 '8'
+  {   265,   8,  13,  10,    1,  -12 },   // 0x39 '9'
+  {   278,   2,   8,   4,    1,   -7 },   // 0x3A ':'
+  {   280,   2,  11,   4,    1,   -7 },   // 0x3B ';'
+  {   283,   7,  13,   9,    1,  -12 },   // 0x3C '<'
+  {   295,   9,   4,  11,    1,   -8 },   // 0x3D '='
+  {   300,   7,  13,   9,    1,  -12 },   // 0x3E '>'
+  {   312,   6,  13,   9,    1,  -12 },   // 0x3F '?'
+  {   322,  16,  17,  18,    1,  -12 },   // 0x40 '@'
+  {   356,  11,  13,  11,    0,  -12 },   // 0x41 'A'
+  {   374,   7,  13,  11,    2,  -12 },   // 0x42 'B'
+  {   386,   9,  13,  12,    1,  -12 },   // 0x43 'C'
+  {   401,  10,  13,  12,    1,  -12 },   // 0x44 'D'
+  {   418,   7,  13,  10,    2,  -12 },   // 0x45 'E'
+  {   430,   7,  13,   9,    2,  -12 },   // 0x46 'F'
+  {   442,  10,  13,  12,    1,  -12 },   // 0x47 'G'
+  {   459,  10,  13,  12,    1,  -12 },   // 0x48 'H'
+  {   476,   1,  13,   4,    2,  -12 },   // 0x49 'I'
+  {   478,   7,  13,   9,    1,  -12 },   // 0x4A 'J'
+  {   490,   9,  13,  11,    2,  -12 },   // 0x4B 'K'
+  {   505,   7,  13,   9,    2,  -12 },   // 0x4C 'L'
+  {   517,  12,  13,  14,    1,  -12 },   // 0x4D 'M'
+  {   537,  10,  13,  12,    1,  -12 },   // 0x4E 'N'
+  {   554,  12,  13,  14,    1,  -12 },   // 0x4F 'O'
+  {   574,   8,  13,  10,    1,  -12 },   // 0x50 'P'
+  {   587,  12,  17,  14,    1,  -12 },   // 0x51 'Q'
+  {   613,   9,  13,  11,    1,  -12 },   // 0x52 'R'
+  {   628,   9,  13,  11,    0,  -12 },   // 0x53 'S'
+  {   643,   9,  13,  11,    1,  -12 },   // 0x54 'T'
+  {   658,  11,  13,  13,    1,  -12 },   // 0x55 'U'
+  {   676,  10,  13,  11,    0,  -12 },   // 0x56 'V'
+  {   693,  15,  13,  16,    0,  -12 },   // 0x57 'W'
+  {   718,  11,  13,  11,    0,  -12 },   // 0x58 'X'
+  {   736,   9,  13,  10,    1,  -12 },   // 0x59 'Y'
+  {   751,   9,  13,  10,    0,  -12 },   // 0x5A 'Z'
+  {   766,   3,  17,   5,    1,  -14 },   // 0x5B '['
+  {   773,   9,  17,  11,    1,  -14 },   // 0x5C '\'
+  {   793,   3,  17,   5,    1,  -14 },   // 0x5D ']'
+  {   800,  10,   7,  11,    1,  -13 },   // 0x5E '^'
+  {   809,   9,   1,   9,    0,    3 },   // 0x5F '_'
+  {   811,   4,   4,   0,   -2,  -13 },   // 0x60 '`'
+  {   813,   9,   9,  10,    1,   -8 },   // 0x61 'a'
+  {   824,   8,  13,  10,    1,  -12 },   // 0x62 'b'
+  {   837,   8,   9,   9,    1,   -8 },   // 0x63 'c'
+  {   846,   8,  13,  11,    1,  -12 },   // 0x64 'd'
+  {   859,   7,   9,  10,    1,   -8 },   // 0x65 'e'
+  {   867,   6,  13,   6,    1,  -12 },   // 0x66 'f'
+  {   877,   9,  13,  10,    1,   -8 },   // 0x67 'g'
+  {   892,   8,  13,  10,    1,  -12 },   // 0x68 'h'
+  {   905,   2,  13,   4,    1,  -12 },   // 0x69 'i'
+  {   909,   4,  17,   4,   -1,  -12 },   // 0x6A 'j'
+  {   918,   7,  13,   9,    1,  -12 },   // 0x6B 'k'
+  {   930,   3,  13,   4,    1,  -12 },   // 0x6C 'l'
+  {   935,  11,   9,  13,    1,   -8 },   // 0x6D 'm'
+  {   948,   8,   9,  10,    1,   -8 },   // 0x6E 'n'
+  {   957,   9,   9,  11,    1,   -8 },   // 0x6F 'o'
+  {   968,   8,  13,  10,    1,   -8 },   // 0x70 'p'
+  {   981,   8,  13,  10,    1,   -8 },   // 0x71 'q'
+  {   994,   5,   9,   7,    1,   -8 },   // 0x72 'r'
+  {  1000,   7,   9,   9,    1,   -8 },   // 0x73 's'
+  {  1008,   5,  12,   6,    1,  -11 },   // 0x74 't'
+  {  1016,   7,   9,  10,    1,   -8 },   // 0x75 'u'
+  {  1024,   8,   9,   8,   -1,   -8 },   // 0x76 'v'
+  {  1033,  12,   9,  12,    0,   -8 },   // 0x77 'w'
+  {  1047,   8,   9,   8,    0,   -8 },   // 0x78 'x'
+  {  1056,   9,  13,   9,    0,   -8 },   // 0x79 'y'
+  {  1071,   7,   9,   9,    1,   -8 },   // 0x7A 'z'
+  {  1079,   5,  17,   6,    0,  -13 },   // 0x7B '{'
+  {  1090,   1,  17,   9,    4,  -12 },   // 0x7C '|'
+  {  1093,   5,  17,   6,    1,  -13 },   // 0x7D '}'
+  {  1104,   9,   2,  11,    1,   -5 } }; // 0x7E '~'
+
+const GFXfont EuphemiaCAS9pt7b PROGMEM = {
+  (uint8_t  *)EuphemiaCAS9pt7bBitmaps,
+  (GFXglyph *)EuphemiaCAS9pt7bGlyphs,
+  0x20, 0x7E, 24 };
+
+// Approx. 1779 bytes
+const uint8_t Futura9pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xFF, 0xFC, 0xF0, 0xDE, 0xF7, 0xBD, 0x80, 0x11, 0x84, 0x61,
+  0x18, 0xC6, 0xFF, 0xFF, 0xF3, 0x30, 0xCC, 0xFF, 0xFF, 0xF2, 0x31, 0x8C,
+  0x62, 0x18, 0x80, 0x0C, 0x06, 0x0F, 0xCE, 0x76, 0x03, 0x01, 0xC0, 0x78,
+  0x1F, 0x03, 0xC0, 0x68, 0x3C, 0x1B, 0x1D, 0xFC, 0x7C, 0x0C, 0x06, 0x00,
+  0x38, 0x30, 0xF8, 0x43, 0x19, 0x86, 0x32, 0x0C, 0x6C, 0x0F, 0x90, 0x0E,
+  0x40, 0x00, 0x9C, 0x02, 0x7C, 0x05, 0x8C, 0x13, 0x18, 0x66, 0x30, 0x87,
+  0xC3, 0x07, 0x00, 0x1E, 0x03, 0xF0, 0x33, 0x03, 0x30, 0x3F, 0x01, 0xE0,
+  0x3C, 0x07, 0xE0, 0xE7, 0x6C, 0x3C, 0xC1, 0x8E, 0x3C, 0x7E, 0xE3, 0xC6,
+  0xFF, 0xC0, 0x76, 0x66, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xE6, 0x66, 0x20,
+  0xC6, 0x66, 0x33, 0x33, 0x33, 0x33, 0x33, 0x76, 0x66, 0x40, 0x18, 0x18,
+  0x7E, 0x7E, 0x3C, 0x66, 0x24, 0x0C, 0x06, 0x03, 0x1F, 0xFF, 0xF8, 0x60,
+  0x30, 0x18, 0x0C, 0x00, 0x23, 0x26, 0x6C, 0xFF, 0xF0, 0x01, 0x80, 0xC0,
+  0xC0, 0x60, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x02, 0x03, 0x01,
+  0x81, 0x80, 0xC0, 0xC0, 0x60, 0x10, 0x00, 0x1C, 0x1F, 0x18, 0xDC, 0x6C,
+  0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF8, 0xCC, 0x63, 0xE0, 0xE0, 0x7F,
+  0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x3F, 0x98, 0xEC, 0x30, 0x18,
+  0x0C, 0x0C, 0x0E, 0x0E, 0x06, 0x06, 0x06, 0x07, 0xFF, 0xFC, 0x3C, 0x7E,
+  0xE7, 0x03, 0x03, 0x1E, 0x1E, 0x07, 0x03, 0x03, 0xC3, 0xC7, 0x7E, 0x3C,
+  0x00, 0x00, 0x10, 0x06, 0x00, 0xC0, 0x38, 0x0F, 0x01, 0xE0, 0x6C, 0x1D,
+  0x83, 0x30, 0xC6, 0x3F, 0xF7, 0xFE, 0x03, 0x00, 0x60, 0x1F, 0x8F, 0xC6,
+  0x06, 0x03, 0xE1, 0xF9, 0x8C, 0x03, 0x01, 0x80, 0xD0, 0x7C, 0x67, 0xF1,
+  0xE0, 0x00, 0x03, 0x03, 0x81, 0x81, 0x81, 0xC0, 0xF8, 0xFE, 0xE3, 0xE0,
+  0xF0, 0x78, 0x3E, 0x33, 0xF8, 0x78, 0xFF, 0xFF, 0xE0, 0x30, 0x0C, 0x06,
+  0x01, 0x80, 0xC0, 0x70, 0x18, 0x0C, 0x03, 0x01, 0x80, 0xE0, 0x30, 0x00,
+  0x3C, 0x7E, 0xE7, 0xC3, 0xC3, 0xE7, 0x7E, 0x7E, 0xE7, 0xC3, 0xC3, 0xE7,
+  0x7E, 0x3C, 0x3C, 0x3F, 0xB8, 0xF8, 0x3C, 0x1E, 0x0F, 0x8E, 0xFE, 0x3E,
+  0x07, 0x03, 0x03, 0x03, 0x81, 0x80, 0x00, 0xF0, 0x03, 0xC0, 0x33, 0x00,
+  0x00, 0x32, 0x66, 0x44, 0x01, 0x83, 0xC7, 0x8F, 0x0E, 0x07, 0x01, 0xE0,
+  0x3C, 0x07, 0x80, 0xC0, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xF8, 0xC0, 0x78,
+  0x0E, 0x01, 0xC0, 0x38, 0x3C, 0x78, 0xF0, 0xE0, 0x40, 0x00, 0x38, 0xFB,
+  0x1E, 0x30, 0xE7, 0xBC, 0x60, 0xCD, 0xF9, 0xE0, 0x03, 0x06, 0x00, 0x0F,
+  0xC0, 0x61, 0xC3, 0x01, 0x99, 0xD6, 0xCF, 0xCF, 0x73, 0x3D, 0x84, 0xF6,
+  0x33, 0xD8, 0xDB, 0xBD, 0xE7, 0x77, 0x0E, 0x00, 0x3F, 0xE0, 0x3F, 0x00,
+  0x02, 0x00, 0x10, 0x01, 0xC0, 0x0E, 0x00, 0xF8, 0x06, 0xC0, 0x73, 0x03,
+  0x18, 0x18, 0xE1, 0xFF, 0x0F, 0xF8, 0xC0, 0x66, 0x03, 0x60, 0x0C, 0xF8,
+  0xFC, 0xCE, 0xC6, 0xC6, 0xCE, 0xFC, 0xFE, 0xC7, 0xC3, 0xC3, 0xC7, 0xFE,
+  0xFC, 0x0F, 0x83, 0xFC, 0xE1, 0xB0, 0x0E, 0x01, 0x80, 0x30, 0x06, 0x00,
+  0xC0, 0x1C, 0x01, 0x80, 0x9C, 0x31, 0xFE, 0x1F, 0x00, 0xFC, 0x3F, 0xCC,
+  0x7B, 0x06, 0xC1, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x7C, 0x1B, 0x1E,
+  0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x06, 0x0C, 0x1F, 0xFF, 0xE0, 0xC1, 0x83,
+  0x06, 0x0F, 0xFF, 0xC0, 0xFF, 0xFF, 0x06, 0x0C, 0x1F, 0xFF, 0xE0, 0xC1,
+  0x83, 0x06, 0x0C, 0x18, 0x00, 0x0F, 0x80, 0xFF, 0x0E, 0x1C, 0xC0, 0x4E,
+  0x00, 0x60, 0x03, 0x07, 0xF8, 0x3F, 0xC0, 0x1F, 0x01, 0xD8, 0x0C, 0x71,
+  0xE1, 0xFE, 0x07, 0xC0, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xFF, 0xFF,
+  0xFF, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x30, 0xFF, 0xFF,
+  0xFF, 0xF0, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC7, 0xFB,
+  0xC0, 0xC1, 0xB0, 0xCC, 0x73, 0x38, 0xDC, 0x3E, 0x0F, 0x03, 0xE0, 0xDC,
+  0x33, 0x0C, 0x63, 0x1C, 0xC3, 0xB0, 0x70, 0xC3, 0x0C, 0x30, 0xC3, 0x0C,
+  0x30, 0xC3, 0x0C, 0x30, 0xFF, 0xF0, 0x00, 0x00, 0x20, 0x20, 0xC0, 0x61,
+  0x80, 0xC3, 0x83, 0x87, 0x07, 0x0F, 0x1E, 0x16, 0x34, 0x6C, 0xEC, 0xCD,
+  0x99, 0x9B, 0x33, 0x1C, 0x66, 0x38, 0xD8, 0x21, 0xB0, 0x41, 0x80, 0x80,
+  0x00, 0x08, 0x03, 0xC0, 0x3E, 0x03, 0xF0, 0x3F, 0x83, 0xDC, 0x3C, 0xE3,
+  0xC7, 0x3C, 0x3B, 0xC1, 0xFC, 0x0F, 0xC0, 0x7C, 0x03, 0xC0, 0x10, 0x00,
+  0x0F, 0xC0, 0x7F, 0x83, 0x87, 0x18, 0x06, 0xE0, 0x1F, 0x00, 0x3C, 0x00,
+  0xF0, 0x03, 0xC0, 0x0F, 0x80, 0x76, 0x01, 0x8E, 0x1C, 0x1F, 0xE0, 0x3F,
+  0x00, 0xF9, 0xFB, 0x3E, 0x3C, 0x79, 0xFF, 0x7C, 0xC1, 0x83, 0x06, 0x0C,
+  0x18, 0x00, 0x0F, 0xC0, 0x7F, 0x83, 0x87, 0x18, 0x06, 0xE0, 0x1F, 0x00,
+  0x3C, 0x00, 0xF0, 0x03, 0xC3, 0x8F, 0x87, 0x76, 0x0F, 0x8E, 0x1C, 0x1F,
+  0xF8, 0x3E, 0x70, 0xF8, 0xFC, 0xCE, 0xC6, 0xC6, 0xCE, 0xFC, 0xF8, 0xD0,
+  0xD8, 0xCC, 0xCC, 0xC6, 0xC7, 0x1E, 0x1F, 0x9C, 0xCC, 0x06, 0x01, 0xC0,
+  0x78, 0x0E, 0x01, 0x80, 0xF8, 0x6C, 0x77, 0xF0, 0xF0, 0xFF, 0xFF, 0x18,
+  0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xC0,
+  0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C,
+  0x0D, 0x86, 0x7F, 0x87, 0x80, 0xC0, 0x76, 0x06, 0x60, 0x67, 0x0C, 0x30,
+  0xC3, 0x0C, 0x19, 0x81, 0x98, 0x1F, 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x06,
+  0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x18, 0x08, 0x19, 0x81, 0x03, 0x30,
+  0x60, 0xE7, 0x0E, 0x18, 0x63, 0xC3, 0x0C, 0x78, 0xC0, 0xCD, 0x98, 0x1B,
+  0x37, 0x03, 0x63, 0xC0, 0x3C, 0x78, 0x07, 0x0E, 0x00, 0xE0, 0xC0, 0x0C,
+  0x18, 0x01, 0x02, 0x00, 0x00, 0x00, 0x60, 0xC6, 0x38, 0xC6, 0x0D, 0xC1,
+  0xB0, 0x1C, 0x03, 0x80, 0x70, 0x1F, 0x03, 0x60, 0xC6, 0x18, 0xC6, 0x0D,
+  0xC1, 0x80, 0xC0, 0xF8, 0x76, 0x18, 0xCC, 0x33, 0x07, 0x81, 0xE0, 0x30,
+  0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x7F, 0x9F, 0xE0, 0x30,
+  0x0C, 0x06, 0x03, 0x80, 0xC0, 0x70, 0x18, 0x0E, 0x03, 0x01, 0x80, 0x7F,
+  0xFF, 0xF0, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, 0xF0,
+  0xC0, 0x20, 0x18, 0x0C, 0x03, 0x01, 0x80, 0x40, 0x30, 0x18, 0x06, 0x03,
+  0x00, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x01, 0x80, 0xC0, 0x00, 0xFF, 0x33,
+  0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0xF0, 0x0C, 0x07, 0x81, 0xE0,
+  0xCC, 0x33, 0x18, 0x66, 0x18, 0xFF, 0xFF, 0xF0, 0xCE, 0x62, 0x3D, 0xBF,
+  0xF8, 0xF8, 0x3C, 0x1E, 0x0F, 0x8E, 0xFF, 0x3D, 0x80, 0xC0, 0x60, 0x30,
+  0x18, 0x0C, 0x06, 0x03, 0x79, 0xFE, 0xE3, 0xE0, 0xF0, 0x78, 0x3E, 0x3F,
+  0xFB, 0x78, 0x3E, 0xFF, 0x8E, 0x0C, 0x18, 0x38, 0xBF, 0x3E, 0x01, 0x80,
+  0xC0, 0x60, 0x30, 0x18, 0x0C, 0xF6, 0xFF, 0xE3, 0xE0, 0xF0, 0x78, 0x3E,
+  0x3B, 0xFC, 0xF6, 0x3C, 0x7E, 0xE3, 0xFF, 0xFF, 0xC0, 0xE3, 0x7E, 0x3C,
+  0x3B, 0xD8, 0xC6, 0x33, 0xFF, 0x63, 0x18, 0xC6, 0x31, 0x80, 0x3D, 0xBF,
+  0xF8, 0xF8, 0x3C, 0x1E, 0x0F, 0x8E, 0xFF, 0x3D, 0x80, 0xF0, 0x6C, 0x77,
+  0xF0, 0xF0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x37, 0x7F, 0xE7, 0x8F, 0x1E,
+  0x3C, 0x78, 0xF1, 0x80, 0xF0, 0x3F, 0xFF, 0xF0, 0xF0, 0x3F, 0xFF, 0xFF,
+  0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xCE, 0xDC, 0xF8, 0xF0, 0xF0,
+  0xD8, 0xDC, 0xCC, 0xC6, 0xFF, 0xFF, 0xFF, 0xFC, 0xDD, 0xEF, 0xFF, 0xE7,
+  0x3C, 0x63, 0xC6, 0x3C, 0x63, 0xC6, 0x3C, 0x63, 0xC6, 0x30, 0xDD, 0xFF,
+  0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC6, 0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x1E,
+  0x0F, 0x8E, 0xFE, 0x3E, 0x00, 0xDE, 0x7F, 0xB8, 0xF8, 0x3C, 0x1E, 0x0F,
+  0x8F, 0xFE, 0xDE, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x00, 0x3D, 0xBF, 0xF8,
+  0xF8, 0x3C, 0x1E, 0x0F, 0x8E, 0xFF, 0x3D, 0x80, 0xC0, 0x60, 0x30, 0x18,
+  0x0C, 0xFB, 0xEE, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x73, 0xEC, 0x38, 0x38,
+  0x3C, 0xFF, 0x78, 0x66, 0x6F, 0xF6, 0x66, 0x66, 0x66, 0xC7, 0x8F, 0x1E,
+  0x3C, 0x78, 0xF1, 0xBE, 0x38, 0xC3, 0xB1, 0x99, 0xC6, 0xC3, 0x60, 0xE0,
+  0x70, 0x10, 0x08, 0x00, 0x00, 0x03, 0x08, 0x66, 0x31, 0x99, 0xCC, 0x37,
+  0xB0, 0xDF, 0x81, 0xCE, 0x07, 0x38, 0x08, 0xC0, 0x21, 0x00, 0x61, 0x8C,
+  0xC1, 0xE0, 0x78, 0x0C, 0x07, 0x83, 0x31, 0xCE, 0xE1, 0x80, 0xE1, 0xB0,
+  0xDC, 0xC6, 0x63, 0xE0, 0xF0, 0x70, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x07,
+  0x03, 0x00, 0x7F, 0xBF, 0x81, 0x81, 0x81, 0xC1, 0xC0, 0xC0, 0xFF, 0xFF,
+  0x80, 0x3B, 0xD8, 0xC6, 0x31, 0x8C, 0xE6, 0x38, 0xC6, 0x31, 0x8C, 0x63,
+  0xCE, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE7, 0x8C, 0x63, 0x18, 0xC6, 0x38,
+  0xCE, 0x63, 0x18, 0xC6, 0x37, 0xB8, 0x78, 0xFF, 0xE3, 0xC0 };
+
+const GFXglyph Futura9pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   5,    0,    0 },   // 0x20 ' '
+  {     1,   2,  14,   6,    2,  -13 },   // 0x21 '!'
+  {     5,   5,   5,   7,    1,  -13 },   // 0x22 '"'
+  {     9,  10,  14,  12,    1,  -13 },   // 0x23 '#'
+  {    27,   9,  18,  11,    1,  -15 },   // 0x24 '$'
+  {    48,  15,  14,  17,    1,  -13 },   // 0x25 '%'
+  {    75,  12,  14,  13,    1,  -13 },   // 0x26 '&'
+  {    96,   2,   5,   4,    1,  -13 },   // 0x27 '''
+  {    98,   4,  19,   7,    2,  -14 },   // 0x28 '('
+  {   108,   4,  19,   7,    1,  -14 },   // 0x29 ')'
+  {   118,   8,   7,  12,    2,  -14 },   // 0x2A '*'
+  {   125,   9,   9,  11,    1,  -11 },   // 0x2B '+'
+  {   136,   4,   6,   5,    0,   -2 },   // 0x2C ','
+  {   139,   4,   2,   4,    0,   -5 },   // 0x2D '-'
+  {   140,   2,   2,   6,    2,   -1 },   // 0x2E '.'
+  {   141,   9,  19,   9,    0,  -14 },   // 0x2F '/'
+  {   163,   9,  14,  11,    1,  -13 },   // 0x30 '0'
+  {   179,   4,  14,  11,    3,  -13 },   // 0x31 '1'
+  {   186,   9,  14,  11,    0,  -13 },   // 0x32 '2'
+  {   202,   8,  14,  11,    1,  -13 },   // 0x33 '3'
+  {   216,  11,  15,  11,    0,  -14 },   // 0x34 '4'
+  {   237,   9,  14,  11,    1,  -13 },   // 0x35 '5'
+  {   253,   9,  15,  11,    1,  -14 },   // 0x36 '6'
+  {   270,  10,  14,  11,    1,  -13 },   // 0x37 '7'
+  {   288,   8,  14,  11,    1,  -13 },   // 0x38 '8'
+  {   302,   9,  15,  11,    1,  -13 },   // 0x39 '9'
+  {   319,   2,   9,   6,    2,   -8 },   // 0x3A ':'
+  {   322,   4,  12,   5,    0,   -8 },   // 0x3B ';'
+  {   328,   9,  10,  11,    1,  -11 },   // 0x3C '<'
+  {   340,   9,   5,  11,    1,   -9 },   // 0x3D '='
+  {   346,   9,  10,  11,    1,  -11 },   // 0x3E '>'
+  {   358,   7,  14,   9,    1,  -13 },   // 0x3F '?'
+  {   371,  14,  14,  16,    1,  -13 },   // 0x40 '@'
+  {   396,  13,  14,  13,    0,  -13 },   // 0x41 'A'
+  {   419,   8,  14,  11,    2,  -13 },   // 0x42 'B'
+  {   433,  11,  14,  12,    1,  -13 },   // 0x43 'C'
+  {   453,  10,  14,  13,    2,  -13 },   // 0x44 'D'
+  {   471,   7,  14,  10,    2,  -13 },   // 0x45 'E'
+  {   484,   7,  14,   9,    2,  -13 },   // 0x46 'F'
+  {   497,  13,  14,  15,    1,  -13 },   // 0x47 'G'
+  {   520,  10,  14,  14,    2,  -13 },   // 0x48 'H'
+  {   538,   2,  14,   6,    2,  -13 },   // 0x49 'I'
+  {   542,   6,  14,   8,    0,  -13 },   // 0x4A 'J'
+  {   553,  10,  14,  12,    2,  -13 },   // 0x4B 'K'
+  {   571,   6,  14,   9,    2,  -13 },   // 0x4C 'L'
+  {   582,  15,  16,  17,    1,  -14 },   // 0x4D 'M'
+  {   612,  12,  16,  16,    2,  -14 },   // 0x4E 'N'
+  {   636,  14,  14,  16,    1,  -13 },   // 0x4F 'O'
+  {   661,   7,  14,  10,    2,  -13 },   // 0x50 'P'
+  {   674,  14,  14,  16,    1,  -13 },   // 0x51 'Q'
+  {   699,   8,  14,  11,    2,  -13 },   // 0x52 'R'
+  {   713,   9,  14,  11,    1,  -13 },   // 0x53 'S'
+  {   729,   8,  14,  10,    1,  -13 },   // 0x54 'T'
+  {   743,  10,  14,  14,    2,  -13 },   // 0x55 'U'
+  {   761,  12,  15,  12,    0,  -13 },   // 0x56 'V'
+  {   784,  19,  16,  19,    0,  -14 },   // 0x57 'W'
+  {   822,  11,  14,  11,    0,  -13 },   // 0x58 'X'
+  {   842,  10,  14,  10,    0,  -13 },   // 0x59 'Y'
+  {   860,  10,  14,  11,    1,  -13 },   // 0x5A 'Z'
+  {   878,   4,  19,   6,    2,  -14 },   // 0x5B '['
+  {   888,   9,  19,   9,    0,  -14 },   // 0x5C '\'
+  {   910,   4,  19,   6,    0,  -14 },   // 0x5D ']'
+  {   920,  10,   7,  10,    0,  -13 },   // 0x5E '^'
+  {   929,  10,   2,  10,    0,    2 },   // 0x5F '_'
+  {   932,   4,   4,  10,    2,  -13 },   // 0x60 '`'
+  {   934,   9,   9,  11,    1,   -8 },   // 0x61 'a'
+  {   945,   9,  15,  11,    1,  -14 },   // 0x62 'b'
+  {   962,   7,   9,   9,    1,   -8 },   // 0x63 'c'
+  {   970,   9,  15,  11,    1,  -14 },   // 0x64 'd'
+  {   987,   8,   9,  10,    1,   -8 },   // 0x65 'e'
+  {   996,   5,  15,   6,    1,  -14 },   // 0x66 'f'
+  {  1006,   9,  14,  11,    1,   -8 },   // 0x67 'g'
+  {  1022,   7,  15,   9,    1,  -14 },   // 0x68 'h'
+  {  1036,   2,  14,   4,    1,  -13 },   // 0x69 'i'
+  {  1040,   2,  19,   4,    1,  -13 },   // 0x6A 'j'
+  {  1045,   8,  15,   9,    1,  -14 },   // 0x6B 'k'
+  {  1060,   2,  15,   4,    1,  -14 },   // 0x6C 'l'
+  {  1064,  12,   9,  14,    1,   -8 },   // 0x6D 'm'
+  {  1078,   7,   9,   9,    1,   -8 },   // 0x6E 'n'
+  {  1086,   9,   9,  11,    1,   -8 },   // 0x6F 'o'
+  {  1097,   9,  14,  11,    1,   -8 },   // 0x70 'p'
+  {  1113,   9,  14,  11,    1,   -8 },   // 0x71 'q'
+  {  1129,   6,   9,   6,    1,   -8 },   // 0x72 'r'
+  {  1136,   6,   9,   8,    1,   -8 },   // 0x73 's'
+  {  1143,   4,  12,   6,    1,  -11 },   // 0x74 't'
+  {  1149,   7,   9,   9,    1,   -8 },   // 0x75 'u'
+  {  1157,   9,   9,   9,    0,   -8 },   // 0x76 'v'
+  {  1168,  14,  10,  14,    0,   -9 },   // 0x77 'w'
+  {  1186,  10,   9,  10,    0,   -8 },   // 0x78 'x'
+  {  1198,   9,  14,  10,    0,   -8 },   // 0x79 'y'
+  {  1214,   9,   9,   9,    0,   -8 },   // 0x7A 'z'
+  {  1225,   5,  19,   6,    1,  -14 },   // 0x7B '{'
+  {  1237,   2,  17,  10,    4,  -13 },   // 0x7C '|'
+  {  1242,   5,  19,   6,    0,  -14 },   // 0x7D '}'
+  {  1254,   9,   3,  13,    2,  -14 } }; // 0x7E '~'
+
+const GFXfont Futura9pt7b PROGMEM = {
+  (uint8_t  *)Futura9pt7bBitmaps,
+  (GFXglyph *)Futura9pt7bGlyphs,
+  0x20, 0x7E, 23 };
+
+// Approx. 1930 bytes
+const uint8_t GillSans9pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xFE, 0x0F, 0xDE, 0xF7, 0xBD, 0x80, 0x08, 0x82, 0x10, 0x42,
+  0x7F, 0xF1, 0x08, 0x42, 0x08, 0x47, 0xFF, 0x21, 0x0C, 0x21, 0x08, 0x21,
+  0x00, 0x18, 0x3C, 0xFE, 0xDA, 0xD8, 0xF8, 0x7C, 0x1E, 0x1B, 0x9B, 0xFF,
+  0x7E, 0x18, 0x18, 0x70, 0x5F, 0x13, 0x64, 0x7C, 0x87, 0x20, 0x08, 0x01,
+  0x00, 0x4E, 0x13, 0xE2, 0x6C, 0x8F, 0xA0, 0xE0, 0x1E, 0x07, 0xE0, 0xCC,
+  0x19, 0x83, 0xE0, 0x30, 0x0F, 0x3B, 0x3E, 0xC3, 0x98, 0xF3, 0xF3, 0x3C,
+  0x70, 0xFF, 0xC0, 0x18, 0x88, 0xC4, 0x63, 0x18, 0xC6, 0x30, 0x86, 0x10,
+  0xC3, 0xC3, 0x08, 0x61, 0x0C, 0x63, 0x18, 0xC6, 0x23, 0x11, 0x18, 0x10,
+  0x23, 0x5B, 0xE1, 0x0F, 0xB5, 0x88, 0x10, 0x08, 0x04, 0x02, 0x01, 0x0F,
+  0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xF6, 0xFF, 0xF0, 0x08, 0x44, 0x21,
+  0x10, 0x88, 0x42, 0x21, 0x00, 0x38, 0xF9, 0xB6, 0x3C, 0x78, 0xF1, 0xE3,
+  0xC6, 0xD9, 0xF1, 0xC0, 0xFF, 0xFF, 0xFF, 0x78, 0xFC, 0xCE, 0x86, 0x06,
+  0x04, 0x0C, 0x18, 0x10, 0x20, 0x7F, 0xFF, 0x7B, 0xF8, 0xC3, 0x0C, 0xE3,
+  0xC3, 0x0E, 0x3F, 0x9C, 0x06, 0x06, 0x0E, 0x1E, 0x36, 0x26, 0x66, 0xFF,
+  0xFF, 0x06, 0x06, 0x06, 0x7C, 0xF9, 0x83, 0x07, 0x8F, 0x83, 0x83, 0x07,
+  0x1F, 0xF3, 0xC0, 0x10, 0x70, 0xC3, 0x86, 0x1F, 0xBF, 0xE3, 0xC7, 0x8D,
+  0xF1, 0xC0, 0xFF, 0xFE, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x30,
+  0x60, 0x60, 0x38, 0xFB, 0x1E, 0x3C, 0x67, 0x1F, 0x63, 0xC7, 0x8D, 0xF1,
+  0xC0, 0x38, 0xFB, 0x1E, 0x3C, 0x6F, 0xCF, 0x86, 0x1C, 0x71, 0xC1, 0x00,
+  0xF0, 0x0F, 0xF0, 0x0F, 0x60, 0x00, 0x83, 0xCF, 0xDF, 0x0C, 0x07, 0xC0,
+  0xFC, 0x0F, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x80, 0x78, 0x1F,
+  0x81, 0xF0, 0x18, 0x7D, 0xF9, 0xE0, 0x80, 0x00, 0x6F, 0x33, 0x37, 0x66,
+  0x20, 0x66, 0x07, 0xF0, 0x0F, 0xF8, 0x3C, 0x1C, 0x30, 0x06, 0x63, 0x9F,
+  0x67, 0xF3, 0xC6, 0x73, 0xCC, 0x33, 0xCC, 0x33, 0xCC, 0x66, 0xCC, 0x6E,
+  0xCF, 0xFC, 0x67, 0x78, 0x70, 0x03, 0x3C, 0x0E, 0x1F, 0xFC, 0x07, 0xF0,
+  0x02, 0x00, 0x38, 0x01, 0xC0, 0x1B, 0x00, 0xD8, 0x0C, 0x60, 0x63, 0x07,
+  0xFC, 0x3F, 0xE3, 0x01, 0x98, 0x0D, 0x80, 0x30, 0xFC, 0xFE, 0xC6, 0xC6,
+  0xC6, 0xFC, 0xFE, 0xC3, 0xC3, 0xC3, 0xFE, 0xFC, 0x0F, 0xC7, 0xFD, 0xC0,
+  0xB0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0x60, 0x0E, 0x04, 0xFF, 0x87,
+  0xE0, 0xFF, 0x0F, 0xFC, 0xC0, 0xEC, 0x06, 0xC0, 0x3C, 0x03, 0xC0, 0x3C,
+  0x03, 0xC0, 0x6C, 0x0E, 0xFF, 0xCF, 0xF0, 0xFF, 0xFF, 0x06, 0x0C, 0x1F,
+  0xFF, 0xE0, 0xC1, 0x83, 0xFF, 0xF0, 0xFF, 0xFC, 0x30, 0xC3, 0xFF, 0xF0,
+  0xC3, 0x0C, 0x30, 0x0F, 0xC7, 0xFD, 0xC0, 0xB0, 0x0C, 0x01, 0x80, 0x30,
+  0x7E, 0x0F, 0xE0, 0x6E, 0x0C, 0xFF, 0x87, 0xC0, 0xC0, 0x78, 0x0F, 0x01,
+  0xE0, 0x3C, 0x07, 0xFF, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0,
+  0x30, 0xFF, 0xFF, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xFE,
+  0xC1, 0xB0, 0xCC, 0x63, 0x30, 0xD8, 0x3C, 0x0D, 0x83, 0x30, 0xC6, 0x30,
+  0xCC, 0x1B, 0x03, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83,
+  0xFF, 0xF0, 0xC0, 0xFC, 0x1F, 0xC7, 0xED, 0xBD, 0xF7, 0x9C, 0xF1, 0x1E,
+  0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x30, 0xC0, 0x3E, 0x03, 0xF0, 0x3D,
+  0x83, 0xCC, 0x3C, 0x63, 0xC6, 0x3C, 0x33, 0xC1, 0xBC, 0x0F, 0xC0, 0x7C,
+  0x03, 0x0F, 0x81, 0xFF, 0x1C, 0x1C, 0xC0, 0x6C, 0x01, 0xE0, 0x0F, 0x00,
+  0x78, 0x03, 0x60, 0x33, 0x83, 0x8F, 0xF8, 0x1F, 0x00, 0xFC, 0xFE, 0xC3,
+  0xC3, 0xC3, 0xFE, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x81, 0xFF,
+  0x1C, 0x1C, 0xC0, 0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xE0, 0x33,
+  0x83, 0x8F, 0xF8, 0x3F, 0x00, 0x3F, 0x80, 0x78, 0xF8, 0x7E, 0x31, 0x98,
+  0xCC, 0x67, 0xE3, 0xE1, 0x98, 0xC6, 0x63, 0x30, 0xD8, 0x30, 0x7B, 0xFC,
+  0x70, 0xC1, 0xC3, 0x83, 0x0E, 0x3F, 0xDE, 0xFF, 0xFF, 0xF0, 0xC0, 0x30,
+  0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0xC0, 0x78,
+  0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D,
+  0xFF, 0x0F, 0x80, 0xC0, 0x6C, 0x19, 0x83, 0x30, 0x63, 0x18, 0x63, 0x06,
+  0xC0, 0xD8, 0x0E, 0x01, 0xC0, 0x38, 0x02, 0x00, 0xC0, 0xE0, 0x6C, 0x1C,
+  0x19, 0x86, 0x83, 0x38, 0xD8, 0xE3, 0x1B, 0x18, 0x66, 0x33, 0x06, 0xC6,
+  0xC0, 0xD8, 0xD8, 0x0E, 0x0E, 0x01, 0xC1, 0xC0, 0x38, 0x38, 0x02, 0x02,
+  0x00, 0xC0, 0x1B, 0x01, 0x8C, 0x18, 0x31, 0x80, 0xD8, 0x03, 0x80, 0x1C,
+  0x01, 0xB0, 0x18, 0xC1, 0x83, 0x18, 0x0D, 0x80, 0x70, 0xC0, 0x6C, 0x18,
+  0xC6, 0x0C, 0xC0, 0xF0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18,
+  0x03, 0x00, 0x7F, 0xEF, 0xF8, 0x06, 0x01, 0x80, 0x70, 0x0C, 0x03, 0x00,
+  0xC0, 0x18, 0x06, 0x01, 0xFF, 0xFF, 0xF0, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC,
+  0xCC, 0xCC, 0xFF, 0x84, 0x10, 0x84, 0x10, 0x82, 0x10, 0x82, 0x10, 0xFF,
+  0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xFF, 0x38, 0x71, 0xB3, 0x66, 0xD8,
+  0xF1, 0x80, 0xFF, 0xC0, 0xCC, 0x80, 0x79, 0xFA, 0x30, 0xE6, 0xD9, 0xB3,
+  0x3F, 0xC1, 0x83, 0x06, 0x0D, 0xDF, 0xB3, 0xE3, 0xC7, 0x9F, 0xF7, 0xC0,
+  0x3D, 0xFE, 0x30, 0xC3, 0x87, 0xCF, 0x06, 0x0C, 0x18, 0x33, 0xEF, 0xF9,
+  0xE3, 0xC7, 0x8D, 0xF9, 0xF0, 0x38, 0xFB, 0x1F, 0xFC, 0x1C, 0x1F, 0x9F,
+  0x3B, 0xD8, 0xCF, 0x79, 0x8C, 0x63, 0x18, 0xC0, 0x7F, 0x9F, 0x36, 0x67,
+  0x98, 0x3C, 0x3E, 0xCF, 0x0F, 0x3B, 0xE0, 0xC1, 0x83, 0x06, 0x0D, 0xDF,
+  0xF9, 0xE3, 0xC7, 0x8F, 0x1E, 0x30, 0xF3, 0xFF, 0xFC, 0x6C, 0x36, 0xDB,
+  0x6D, 0xB7, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, 0xCC, 0xD8, 0xF0, 0xD8,
+  0xCC, 0xC6, 0xC3, 0xFF, 0xFF, 0xFF, 0xDC, 0xEF, 0xFF, 0xC6, 0x3C, 0x63,
+  0xC6, 0x3C, 0x63, 0xC6, 0x3C, 0x63, 0xDD, 0xFF, 0x1E, 0x3C, 0x78, 0xF1,
+  0xE3, 0x3C, 0x7E, 0xE7, 0xC3, 0xC3, 0xE7, 0x7E, 0x3C, 0xF9, 0xFB, 0x3E,
+  0x3C, 0x79, 0xFF, 0x7C, 0xC1, 0x83, 0x06, 0x00, 0x3E, 0xFF, 0x9E, 0x3C,
+  0x7C, 0xDF, 0x9F, 0x06, 0x0C, 0x18, 0x30, 0xDB, 0xFE, 0xB0, 0xC3, 0x0C,
+  0x30, 0x77, 0xF2, 0xC3, 0x4F, 0xEE, 0x00, 0x87, 0xFF, 0x61, 0x86, 0x18,
+  0x7C, 0xF0, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xFF, 0xBB, 0xC7, 0x8D, 0xB3,
+  0x66, 0xC7, 0x8E, 0x1C, 0xC7, 0x1E, 0x38, 0xD9, 0xCC, 0xDB, 0x66, 0xDB,
+  0x1C, 0x70, 0xE3, 0x86, 0x0C, 0xC1, 0xB1, 0x8D, 0x83, 0x81, 0xC1, 0xB1,
+  0x8D, 0x83, 0xC3, 0x66, 0x66, 0x3C, 0x3C, 0x18, 0x18, 0x30, 0x30, 0x60,
+  0x60, 0xC0, 0xFF, 0xF8, 0x70, 0xC3, 0x0E, 0x1F, 0xFF, 0x1C, 0xF3, 0x0C,
+  0x30, 0xC3, 0x18, 0x83, 0x87, 0x0C, 0x30, 0xC3, 0x0F, 0x1C, 0xFF, 0xFF,
+  0xE3, 0xC3, 0x0C, 0x30, 0xC3, 0x06, 0x04, 0x73, 0x8C, 0x30, 0xC3, 0x3C,
+  0xE0, 0xF8, 0xC7, 0xC0 };
+
+const GFXglyph GillSans9pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   5,    0,    0 },   // 0x20 ' '
+  {     1,   2,  12,   5,    1,  -11 },   // 0x21 '!'
+  {     4,   5,   5,   6,    1,  -11 },   // 0x22 '"'
+  {     8,  11,  12,  11,    0,  -11 },   // 0x23 '#'
+  {    25,   8,  14,  10,    1,  -11 },   // 0x24 '$'
+  {    39,  11,  12,  12,    0,  -11 },   // 0x25 '%'
+  {    56,  11,  12,  11,    1,  -11 },   // 0x26 '&'
+  {    73,   2,   5,   3,    1,  -11 },   // 0x27 '''
+  {    75,   5,  16,   6,    1,  -11 },   // 0x28 '('
+  {    85,   5,  16,   6,    0,  -11 },   // 0x29 ')'
+  {    95,   7,   9,   8,    0,  -12 },   // 0x2A '*'
+  {   103,   9,   9,  11,    1,  -10 },   // 0x2B '+'
+  {   114,   2,   4,   4,    1,   -1 },   // 0x2C ','
+  {   115,   4,   2,   6,    1,   -4 },   // 0x2D '-'
+  {   116,   2,   2,   4,    1,   -1 },   // 0x2E '.'
+  {   117,   5,  12,   5,    0,  -11 },   // 0x2F '/'
+  {   125,   7,  12,   9,    1,  -11 },   // 0x30 '0'
+  {   136,   2,  12,   9,    3,  -11 },   // 0x31 '1'
+  {   139,   8,  12,   9,    1,  -11 },   // 0x32 '2'
+  {   151,   6,  12,   9,    1,  -11 },   // 0x33 '3'
+  {   160,   8,  12,   9,    0,  -11 },   // 0x34 '4'
+  {   172,   7,  12,   9,    1,  -11 },   // 0x35 '5'
+  {   183,   7,  12,   9,    1,  -11 },   // 0x36 '6'
+  {   194,   8,  12,   9,    1,  -11 },   // 0x37 '7'
+  {   206,   7,  12,   9,    1,  -11 },   // 0x38 '8'
+  {   217,   7,  12,   9,    1,  -11 },   // 0x39 '9'
+  {   228,   2,   8,   4,    1,   -7 },   // 0x3A ':'
+  {   230,   2,  10,   4,    1,   -7 },   // 0x3B ';'
+  {   233,   9,   9,  11,    1,  -10 },   // 0x3C '<'
+  {   244,   9,   4,  11,    1,   -8 },   // 0x3D '='
+  {   249,   9,   9,  11,    1,  -10 },   // 0x3E '>'
+  {   260,   4,  12,   6,    1,  -11 },   // 0x3F '?'
+  {   266,  16,  17,  18,    1,  -12 },   // 0x40 '@'
+  {   300,  13,  12,  12,    0,  -11 },   // 0x41 'A'
+  {   320,   8,  12,  10,    1,  -11 },   // 0x42 'B'
+  {   332,  11,  12,  13,    1,  -11 },   // 0x43 'C'
+  {   349,  12,  12,  14,    1,  -11 },   // 0x44 'D'
+  {   367,   7,  12,   9,    1,  -11 },   // 0x45 'E'
+  {   378,   6,  12,   8,    1,  -11 },   // 0x46 'F'
+  {   387,  11,  12,  13,    1,  -11 },   // 0x47 'G'
+  {   404,  11,  12,  13,    1,  -11 },   // 0x48 'H'
+  {   421,   2,  12,   5,    1,  -11 },   // 0x49 'I'
+  {   424,   4,  16,   5,   -1,  -11 },   // 0x4A 'J'
+  {   432,  10,  12,  12,    1,  -11 },   // 0x4B 'K'
+  {   447,   7,  12,   9,    1,  -11 },   // 0x4C 'L'
+  {   458,  11,  12,  14,    1,  -11 },   // 0x4D 'M'
+  {   475,  12,  12,  14,    1,  -11 },   // 0x4E 'N'
+  {   493,  13,  12,  15,    1,  -11 },   // 0x4F 'O'
+  {   513,   8,  12,   9,    1,  -11 },   // 0x50 'P'
+  {   525,  13,  14,  15,    1,  -11 },   // 0x51 'Q'
+  {   548,   9,  12,  11,    1,  -11 },   // 0x52 'R'
+  {   562,   6,  12,   8,    1,  -11 },   // 0x53 'S'
+  {   571,  10,  12,  11,    0,  -11 },   // 0x54 'T'
+  {   586,  11,  12,  13,    1,  -11 },   // 0x55 'U'
+  {   603,  11,  12,  11,    0,  -11 },   // 0x56 'V'
+  {   620,  19,  12,  19,    0,  -11 },   // 0x57 'W'
+  {   649,  13,  12,  13,    0,  -11 },   // 0x58 'X'
+  {   669,  11,  12,  11,    0,  -11 },   // 0x59 'Y'
+  {   686,  11,  12,  12,    0,  -11 },   // 0x5A 'Z'
+  {   703,   4,  16,   6,    2,  -11 },   // 0x5B '['
+  {   711,   5,  12,   5,    0,  -11 },   // 0x5C '\'
+  {   719,   4,  16,   6,    0,  -11 },   // 0x5D ']'
+  {   727,   7,   7,   8,    0,  -11 },   // 0x5E '^'
+  {   734,  10,   1,  10,    0,    4 },   // 0x5F '_'
+  {   736,   3,   3,   6,    1,  -12 },   // 0x60 '`'
+  {   738,   7,   8,   8,    1,   -7 },   // 0x61 'a'
+  {   745,   7,  12,   9,    1,  -11 },   // 0x62 'b'
+  {   756,   6,   8,   8,    1,   -7 },   // 0x63 'c'
+  {   762,   7,  12,   9,    1,  -11 },   // 0x64 'd'
+  {   773,   7,   8,   9,    1,   -7 },   // 0x65 'e'
+  {   780,   5,  12,   5,    0,  -11 },   // 0x66 'f'
+  {   788,   7,  12,   8,    1,   -7 },   // 0x67 'g'
+  {   799,   7,  12,   9,    1,  -11 },   // 0x68 'h'
+  {   810,   2,  11,   4,    1,  -10 },   // 0x69 'i'
+  {   813,   3,  15,   4,    0,  -10 },   // 0x6A 'j'
+  {   819,   8,  12,   9,    1,  -11 },   // 0x6B 'k'
+  {   831,   2,  12,   4,    1,  -11 },   // 0x6C 'l'
+  {   834,  12,   8,  14,    1,   -7 },   // 0x6D 'm'
+  {   846,   7,   8,   9,    1,   -7 },   // 0x6E 'n'
+  {   853,   8,   8,  10,    1,   -7 },   // 0x6F 'o'
+  {   861,   7,  12,   9,    1,   -7 },   // 0x70 'p'
+  {   872,   7,  12,   9,    1,   -7 },   // 0x71 'q'
+  {   883,   6,   8,   7,    1,   -7 },   // 0x72 'r'
+  {   889,   5,   8,   7,    1,   -7 },   // 0x73 's'
+  {   894,   6,  10,   6,    0,   -9 },   // 0x74 't'
+  {   902,   7,   8,   9,    1,   -7 },   // 0x75 'u'
+  {   909,   7,   8,   8,    0,   -7 },   // 0x76 'v'
+  {   916,  13,   8,  13,    0,   -7 },   // 0x77 'w'
+  {   929,   9,   8,   9,    0,   -7 },   // 0x78 'x'
+  {   938,   8,  12,   8,    0,   -7 },   // 0x79 'y'
+  {   950,   7,   8,   8,    0,   -7 },   // 0x7A 'z'
+  {   957,   6,  17,   6,    0,  -12 },   // 0x7B '{'
+  {   970,   1,  16,   5,    2,  -11 },   // 0x7C '|'
+  {   972,   6,  17,   6,    0,  -12 },   // 0x7D '}'
+  {   985,   9,   2,  11,    1,   -6 } }; // 0x7E '~'
+
+const GFXfont GillSans9pt7b PROGMEM = {
+  (uint8_t  *)GillSans9pt7bBitmaps,
+  (GFXglyph *)GillSans9pt7bGlyphs,
+  0x20, 0x7E, 20 };
+
+// Approx. 1660 bytes
+const uint8_t ptmono9pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xFF, 0xCF, 0xC0, 0xCF, 0x3C, 0xF3, 0xCE, 0x20, 0x1D, 0xC6,
+  0x61, 0x99, 0xFF, 0x7F, 0xCC, 0xC3, 0x33, 0xFE, 0xFF, 0x8C, 0xC6, 0x61,
+  0x98, 0x18, 0x18, 0x3E, 0x7E, 0xCA, 0xC8, 0xE8, 0x78, 0x7E, 0x1F, 0x17,
+  0x13, 0x93, 0xFE, 0xFC, 0x18, 0x18, 0x70, 0x5F, 0x0F, 0x63, 0x6C, 0xCF,
+  0xB0, 0xEC, 0x01, 0x00, 0x6E, 0x1B, 0xE6, 0x6D, 0x8D, 0xE1, 0xF4, 0x1C,
+  0x3C, 0x1F, 0x86, 0x61, 0x98, 0x3C, 0x0E, 0x07, 0x8F, 0x33, 0xC6, 0xF0,
+  0xEE, 0x39, 0xFF, 0x3C, 0x40, 0xFF, 0xE0, 0x06, 0x3C, 0xE3, 0x86, 0x1C,
+  0x30, 0x60, 0xC1, 0x83, 0x07, 0x06, 0x0E, 0x0E, 0x0F, 0x06, 0xC1, 0xE0,
+  0xE0, 0xE0, 0xC1, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x70, 0xC3, 0x8E, 0x78,
+  0xC0, 0x22, 0x3B, 0x85, 0x1F, 0xFF, 0xF8, 0xA1, 0xD8, 0x46, 0x18, 0x18,
+  0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x67, 0x71, 0x2C, 0xFF,
+  0xC0, 0xFF, 0x80, 0x02, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x18,
+  0x30, 0x30, 0x70, 0x60, 0x60, 0xC0, 0x40, 0x3E, 0x3F, 0x98, 0xD8, 0x3C,
+  0x7E, 0x7F, 0x77, 0xF3, 0xE1, 0xE0, 0xD8, 0xCF, 0xE3, 0xE0, 0x18, 0x38,
+  0x78, 0xD8, 0x98, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x7C,
+  0xFE, 0x47, 0x03, 0x03, 0x03, 0x06, 0x0C, 0x18, 0x38, 0x60, 0xFF, 0xFF,
+  0xFE, 0xFE, 0x0C, 0x1C, 0x18, 0x3E, 0x3F, 0x07, 0x03, 0x03, 0x87, 0xFE,
+  0xFC, 0x03, 0x01, 0xC0, 0xF0, 0x7C, 0x3B, 0x0C, 0xC6, 0x33, 0xFF, 0xFF,
+  0xC0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x7F, 0x7F, 0x60, 0x60, 0x60, 0x7C,
+  0x7E, 0x07, 0x03, 0x03, 0x87, 0xFE, 0xFC, 0x06, 0x0F, 0x0E, 0x0E, 0x06,
+  0x06, 0xF3, 0xFD, 0xC7, 0xC1, 0xE0, 0xF8, 0xEF, 0xE3, 0xE0, 0xFF, 0xFF,
+  0x07, 0x06, 0x0E, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0xE0, 0x3E,
+  0x3F, 0xF8, 0xF8, 0x3E, 0x31, 0xF0, 0xFC, 0xCF, 0xC1, 0xE0, 0xF8, 0xEF,
+  0xE3, 0xE0, 0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x1F, 0x0D, 0xFE, 0x7B, 0x03,
+  0x01, 0x83, 0x87, 0x83, 0x80, 0xFF, 0x80, 0x07, 0xFC, 0x77, 0x70, 0x00,
+  0x06, 0x77, 0x12, 0xC0, 0x01, 0x01, 0xC3, 0xC7, 0x87, 0x07, 0x01, 0xE0,
+  0x78, 0x0F, 0x01, 0xC0, 0x40, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xFF, 0xFC,
+  0x40, 0x70, 0x1E, 0x03, 0xC0, 0x70, 0x1C, 0x3C, 0x3C, 0x78, 0x70, 0x10,
+  0x00, 0x3E, 0x3F, 0xF0, 0x60, 0x30, 0x38, 0x38, 0x38, 0x30, 0x18, 0x00,
+  0x06, 0x03, 0x81, 0x80, 0x0F, 0x07, 0xF1, 0xC3, 0x30, 0x6E, 0x0D, 0x9F,
+  0xB7, 0xF6, 0xC6, 0xD8, 0xDB, 0xFF, 0xBB, 0xB0, 0x07, 0x88, 0x7F, 0x83,
+  0xF0, 0x0C, 0x03, 0x01, 0xE0, 0x78, 0x1E, 0x0C, 0xC3, 0x30, 0xCC, 0x7F,
+  0x9F, 0xE6, 0x1B, 0x03, 0xC0, 0xC0, 0xFE, 0x7F, 0xF0, 0x78, 0x3C, 0x37,
+  0xF3, 0xFD, 0x87, 0xC1, 0xE0, 0xF0, 0xFF, 0xEF, 0xE0, 0x1F, 0x9F, 0xDC,
+  0x6C, 0x3C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x70, 0xDC, 0x67, 0xF1, 0xF0,
+  0xFC, 0x7F, 0xB0, 0xD8, 0x7C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE1, 0xF1,
+  0xDF, 0xCF, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0xC0, 0xC0,
+  0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x1F, 0x9F, 0xDC, 0x6C, 0x3C, 0x06, 0x03,
+  0x1F, 0x8F, 0xC1, 0xB0, 0xDC, 0x67, 0xF1, 0xF0, 0xC1, 0xE0, 0xF0, 0x78,
+  0x3C, 0x1F, 0xFF, 0xFF, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x18, 0xFF,
+  0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF,
+  0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x87, 0xFE,
+  0x7C, 0xC1, 0xF0, 0xEC, 0x73, 0x1C, 0xCE, 0x3F, 0x0F, 0xC3, 0x38, 0xC6,
+  0x31, 0xCC, 0x3B, 0x0E, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+  0xC0, 0xC0, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC1, 0xF1, 0xFD, 0xFE, 0xFF,
+  0xFE, 0xEF, 0x27, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x18, 0xC1, 0xF0,
+  0xF8, 0x7E, 0x3F, 0x9F, 0xCF, 0x77, 0xBF, 0xCF, 0xE3, 0xF1, 0xF8, 0x7C,
+  0x18, 0x1E, 0x1F, 0xE6, 0x1B, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0,
+  0xF0, 0x36, 0x19, 0xFE, 0x1E, 0x00, 0xFE, 0x7F, 0xB0, 0xF8, 0x3C, 0x1E,
+  0x0F, 0x0F, 0xFE, 0xFC, 0x60, 0x30, 0x18, 0x0C, 0x00, 0x1E, 0x1F, 0xE6,
+  0x1B, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x36, 0x19, 0xFE,
+  0x1E, 0x03, 0x00, 0x7C, 0x0F, 0xFC, 0x7F, 0x31, 0xD8, 0x6C, 0x36, 0x3B,
+  0xF9, 0xF8, 0xCE, 0x67, 0x31, 0xD8, 0xEC, 0x38, 0x3F, 0xBF, 0xF0, 0x78,
+  0x3E, 0x03, 0xC0, 0xF8, 0x1F, 0x01, 0xE0, 0xF0, 0xFF, 0xE7, 0xE0, 0xFF,
+  0xFF, 0xFC, 0xCF, 0x33, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00,
+  0xC0, 0xFC, 0x3F, 0x00, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07,
+  0x83, 0xC1, 0xE0, 0xF8, 0xEF, 0xE3, 0xE0, 0xE1, 0xF8, 0x76, 0x19, 0xC6,
+  0x73, 0x8C, 0xC3, 0x30, 0xEC, 0x3F, 0x07, 0x81, 0xE0, 0x78, 0x0E, 0x00,
+  0xC0, 0x78, 0x0F, 0x01, 0xF0, 0x3E, 0x66, 0xDD, 0x9B, 0xB3, 0x5E, 0x7B,
+  0xCF, 0x79, 0xC7, 0x38, 0xE7, 0x1C, 0xE0, 0xEE, 0x38, 0xE6, 0x1D, 0xC1,
+  0xF0, 0x3E, 0x03, 0x80, 0xF8, 0x1B, 0x07, 0x71, 0xC7, 0x38, 0xEE, 0x0E,
+  0xE1, 0xD8, 0x67, 0x38, 0xCC, 0x3F, 0x07, 0x81, 0xE0, 0x30, 0x0C, 0x03,
+  0x00, 0xC0, 0x30, 0x0C, 0x00, 0xFF, 0xFF, 0xC0, 0xE0, 0xE0, 0xE0, 0x60,
+  0x70, 0x70, 0x70, 0x38, 0x38, 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0x06, 0x0C,
+  0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x7F, 0xFE, 0x40,
+  0xC0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x06,
+  0x06, 0x03, 0x02, 0xFF, 0xFC, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C,
+  0x18, 0x30, 0x60, 0xC1, 0xFF, 0xFE, 0x0C, 0x03, 0x81, 0xE0, 0xCC, 0x33,
+  0x18, 0x6E, 0x1C, 0xFF, 0xFF, 0xE7, 0x30, 0x7E, 0x3F, 0x80, 0xC7, 0xEF,
+  0xF6, 0x1B, 0x0D, 0xFF, 0x7B, 0x80, 0xE0, 0x38, 0x06, 0x01, 0x80, 0x6F,
+  0x1F, 0xE7, 0x1D, 0x83, 0x60, 0xD8, 0x36, 0x1D, 0xFE, 0x3E, 0x00, 0x1F,
+  0x3F, 0xF8, 0x78, 0x3C, 0x06, 0x03, 0x84, 0xFF, 0x3F, 0x00, 0x03, 0x80,
+  0xE0, 0x18, 0x06, 0x1F, 0x9F, 0xEE, 0x1B, 0x06, 0xC1, 0xB0, 0x6E, 0x39,
+  0xFF, 0x3C, 0xC0, 0x3E, 0x3F, 0xB0, 0x7F, 0xFF, 0xFE, 0x03, 0x84, 0xFF,
+  0x3F, 0x00, 0x0F, 0x8F, 0xCC, 0x46, 0x0F, 0xF7, 0xF8, 0xC0, 0x60, 0x30,
+  0x18, 0x0C, 0x1F, 0xEF, 0xF0, 0x3F, 0xBF, 0xF8, 0x78, 0x3C, 0x1E, 0x0F,
+  0x8E, 0xFF, 0x3F, 0x80, 0xC8, 0xEF, 0xE3, 0xE0, 0xE0, 0x70, 0x18, 0x0C,
+  0x06, 0xF3, 0xFD, 0xC6, 0xC3, 0x61, 0xB0, 0xD8, 0x6C, 0x36, 0x18, 0x1C,
+  0x1C, 0x1C, 0x00, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF,
+  0x0E, 0x1C, 0x38, 0x07, 0xEF, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60,
+  0xE3, 0xFE, 0x78, 0xE0, 0x38, 0x06, 0x01, 0x80, 0x63, 0x99, 0xC6, 0xE1,
+  0xB0, 0x7C, 0x1B, 0x86, 0x71, 0x9F, 0x63, 0xC0, 0xF0, 0xF0, 0x30, 0x30,
+  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3F, 0x1E, 0xFB, 0xBF, 0xFC,
+  0xCF, 0x33, 0xCC, 0xF3, 0x3C, 0xCF, 0x33, 0xCC, 0xC0, 0xEF, 0x7F, 0xDC,
+  0xEC, 0x36, 0x1B, 0x0D, 0x86, 0xC3, 0x61, 0x80, 0x3F, 0x1F, 0xEE, 0x1F,
+  0x03, 0xC0, 0xF0, 0x3E, 0x1D, 0xFE, 0x3F, 0x00, 0xEF, 0x3F, 0xE7, 0x1D,
+  0x83, 0x60, 0xD8, 0x36, 0x1D, 0xFE, 0x7F, 0x18, 0x06, 0x01, 0x80, 0x60,
+  0x00, 0x1F, 0xBF, 0xF8, 0x78, 0x3C, 0x1E, 0x0F, 0x8E, 0xFF, 0x3D, 0x80,
+  0xC0, 0x60, 0x30, 0x18, 0xF7, 0x7F, 0xCE, 0x66, 0x03, 0x01, 0x80, 0xC1,
+  0xFE, 0xFF, 0x00, 0x7E, 0xFF, 0xC2, 0xF0, 0x7E, 0x07, 0x43, 0xFF, 0x3E,
+  0x10, 0x0C, 0x03, 0x03, 0xFE, 0xFF, 0x8C, 0x03, 0x00, 0xC0, 0x30, 0x0E,
+  0x21, 0xFC, 0x3C, 0xE3, 0xB8, 0xE6, 0x19, 0x86, 0x61, 0x98, 0x66, 0x39,
+  0xFF, 0x3C, 0xC0, 0xE1, 0xD8, 0x67, 0x18, 0xCE, 0x3B, 0x0E, 0xC1, 0xE0,
+  0x78, 0x0E, 0x00, 0xC0, 0x7C, 0x0D, 0x9B, 0x37, 0x66, 0xEC, 0xDF, 0x9E,
+  0xF1, 0xDC, 0x39, 0x80, 0xE3, 0xB9, 0x8D, 0x87, 0xC1, 0xC1, 0xF1, 0xDC,
+  0xC6, 0xE3, 0x80, 0xE1, 0xD8, 0x76, 0x19, 0xC6, 0x33, 0x8E, 0xC1, 0xB0,
+  0x7C, 0x0E, 0x01, 0x84, 0xE1, 0xF0, 0x38, 0x00, 0xFF, 0xFF, 0x06, 0x0C,
+  0x18, 0x30, 0x60, 0xFF, 0xFF, 0x0F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18,
+  0x38, 0xF0, 0xF0, 0x38, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x0F, 0xFF, 0xFF,
+  0xFF, 0xFC, 0xF0, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0F, 0x0F,
+  0x1C, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF0, 0x72, 0xFF, 0x8F };
+
+const GFXglyph ptmono9pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,  11,    0,    0 },   // 0x20 ' '
+  {     1,   2,  13,  11,    4,  -12 },   // 0x21 '!'
+  {     5,   6,   6,  11,    2,  -12 },   // 0x22 '"'
+  {    10,  10,  12,  11,    0,  -11 },   // 0x23 '#'
+  {    25,   8,  17,  11,    1,  -14 },   // 0x24 '$'
+  {    42,  11,  13,  11,    0,  -12 },   // 0x25 '%'
+  {    60,  10,  13,  11,    0,  -12 },   // 0x26 '&'
+  {    77,   2,   6,  11,    4,  -12 },   // 0x27 '''
+  {    79,   7,  17,  11,    2,  -12 },   // 0x28 '('
+  {    94,   7,  17,  11,    2,  -12 },   // 0x29 ')'
+  {   109,   9,   8,  11,    1,  -12 },   // 0x2A '*'
+  {   118,   8,  10,  11,    1,  -10 },   // 0x2B '+'
+  {   128,   4,   6,  11,    3,   -2 },   // 0x2C ','
+  {   131,   5,   2,  11,    3,   -5 },   // 0x2D '-'
+  {   133,   3,   3,  11,    4,   -2 },   // 0x2E '.'
+  {   135,   8,  16,  11,    1,  -12 },   // 0x2F '/'
+  {   151,   9,  13,  11,    1,  -12 },   // 0x30 '0'
+  {   166,   8,  13,  11,    2,  -12 },   // 0x31 '1'
+  {   179,   8,  13,  11,    1,  -12 },   // 0x32 '2'
+  {   192,   8,  13,  11,    2,  -12 },   // 0x33 '3'
+  {   205,  10,  13,  11,    0,  -12 },   // 0x34 '4'
+  {   222,   8,  13,  11,    1,  -12 },   // 0x35 '5'
+  {   235,   9,  13,  11,    1,  -12 },   // 0x36 '6'
+  {   250,   8,  13,  11,    1,  -12 },   // 0x37 '7'
+  {   263,   9,  13,  11,    1,  -12 },   // 0x38 '8'
+  {   278,   9,  13,  11,    1,  -12 },   // 0x39 '9'
+  {   293,   3,  10,  11,    4,   -9 },   // 0x3A ':'
+  {   297,   4,  13,  11,    3,   -9 },   // 0x3B ';'
+  {   304,   9,  11,  11,    1,  -10 },   // 0x3C '<'
+  {   317,   9,   6,  11,    1,   -8 },   // 0x3D '='
+  {   324,   9,  11,  11,    1,  -10 },   // 0x3E '>'
+  {   337,   9,  13,  11,    1,  -12 },   // 0x3F '?'
+  {   352,  11,  15,  11,    0,  -10 },   // 0x40 '@'
+  {   373,  10,  13,  11,    0,  -12 },   // 0x41 'A'
+  {   390,   9,  13,  11,    1,  -12 },   // 0x42 'B'
+  {   405,   9,  13,  11,    1,  -12 },   // 0x43 'C'
+  {   420,   9,  13,  11,    1,  -12 },   // 0x44 'D'
+  {   435,   8,  13,  11,    1,  -12 },   // 0x45 'E'
+  {   448,   8,  13,  11,    2,  -12 },   // 0x46 'F'
+  {   461,   9,  13,  11,    1,  -12 },   // 0x47 'G'
+  {   476,   9,  13,  11,    1,  -12 },   // 0x48 'H'
+  {   491,   8,  13,  11,    1,  -12 },   // 0x49 'I'
+  {   504,   8,  13,  11,    1,  -12 },   // 0x4A 'J'
+  {   517,  10,  13,  11,    1,  -12 },   // 0x4B 'K'
+  {   534,   8,  13,  11,    2,  -12 },   // 0x4C 'L'
+  {   547,   9,  13,  11,    1,  -12 },   // 0x4D 'M'
+  {   562,   9,  13,  11,    1,  -12 },   // 0x4E 'N'
+  {   577,  10,  13,  11,    0,  -12 },   // 0x4F 'O'
+  {   594,   9,  13,  11,    1,  -12 },   // 0x50 'P'
+  {   609,  10,  16,  11,    0,  -12 },   // 0x51 'Q'
+  {   629,   9,  13,  11,    1,  -12 },   // 0x52 'R'
+  {   644,   9,  13,  11,    1,  -12 },   // 0x53 'S'
+  {   659,  10,  13,  11,    0,  -12 },   // 0x54 'T'
+  {   676,   9,  13,  11,    1,  -12 },   // 0x55 'U'
+  {   691,  10,  13,  11,    0,  -12 },   // 0x56 'V'
+  {   708,  11,  13,  11,    0,  -12 },   // 0x57 'W'
+  {   726,  11,  13,  11,    0,  -12 },   // 0x58 'X'
+  {   744,  10,  13,  11,    0,  -12 },   // 0x59 'Y'
+  {   761,   9,  13,  11,    1,  -12 },   // 0x5A 'Z'
+  {   776,   7,  17,  11,    2,  -12 },   // 0x5B '['
+  {   791,   8,  16,  11,    1,  -12 },   // 0x5C '\'
+  {   807,   7,  17,  11,    2,  -12 },   // 0x5D ']'
+  {   822,  10,   7,  11,    0,  -12 },   // 0x5E '^'
+  {   831,   8,   2,  11,    1,    3 },   // 0x5F '_'
+  {   833,   4,   3,  11,    3,  -12 },   // 0x60 '`'
+  {   835,   9,   9,  11,    1,   -8 },   // 0x61 'a'
+  {   846,  10,  13,  11,    0,  -12 },   // 0x62 'b'
+  {   863,   9,   9,  11,    1,   -8 },   // 0x63 'c'
+  {   874,  10,  13,  11,    0,  -12 },   // 0x64 'd'
+  {   891,   9,   9,  11,    1,   -8 },   // 0x65 'e'
+  {   902,   9,  13,  11,    1,  -12 },   // 0x66 'f'
+  {   917,   9,  13,  11,    1,   -8 },   // 0x67 'g'
+  {   932,   9,  13,  11,    0,  -12 },   // 0x68 'h'
+  {   947,   8,  13,  11,    1,  -12 },   // 0x69 'i'
+  {   960,   7,  17,  11,    1,  -12 },   // 0x6A 'j'
+  {   975,  10,  13,  11,    1,  -12 },   // 0x6B 'k'
+  {   992,   8,  13,  11,    1,  -12 },   // 0x6C 'l'
+  {  1005,  10,   9,  11,    0,   -8 },   // 0x6D 'm'
+  {  1017,   9,   9,  11,    1,   -8 },   // 0x6E 'n'
+  {  1028,  10,   9,  11,    0,   -8 },   // 0x6F 'o'
+  {  1040,  10,  13,  11,    0,   -8 },   // 0x70 'p'
+  {  1057,   9,  13,  11,    1,   -8 },   // 0x71 'q'
+  {  1072,   9,   9,  11,    1,   -8 },   // 0x72 'r'
+  {  1083,   8,   9,  11,    1,   -8 },   // 0x73 's'
+  {  1092,  10,  12,  11,    0,  -11 },   // 0x74 't'
+  {  1107,  10,   9,  11,    0,   -8 },   // 0x75 'u'
+  {  1119,  10,   9,  11,    0,   -8 },   // 0x76 'v'
+  {  1131,  11,   9,  11,    0,   -8 },   // 0x77 'w'
+  {  1144,   9,   9,  11,    1,   -8 },   // 0x78 'x'
+  {  1155,  10,  13,  11,    0,   -8 },   // 0x79 'y'
+  {  1172,   8,   9,  11,    1,   -8 },   // 0x7A 'z'
+  {  1181,   8,  17,  11,    1,  -12 },   // 0x7B '{'
+  {  1198,   2,  15,  11,    4,  -12 },   // 0x7C '|'
+  {  1202,   8,  17,  11,    2,  -12 },   // 0x7D '}'
+  {  1219,   8,   3,  11,    1,   -7 } }; // 0x7E '~'
+
+const GFXfont ptmono9pt7b PROGMEM = {
+  (uint8_t  *)ptmono9pt7bBitmaps,
+  (GFXglyph *)ptmono9pt7bGlyphs,
+  0x20, 0x7E, 20 };
+
+// Approx. 1894 bytes
+const uint8_t SourceCodePro_Regular9pt7bBitmaps[] PROGMEM = {
+  0x00, 0x49, 0x24, 0x90, 0x1B, 0xE0, 0xCF, 0x34, 0x51, 0x45, 0x10, 0x24,
+  0x48, 0x97, 0xF4, 0x48, 0xBF, 0xA4, 0x48, 0x91, 0x20, 0x10, 0x21, 0xF6,
+  0x38, 0x18, 0x1E, 0x0E, 0x06, 0x06, 0x1B, 0xE1, 0x02, 0x04, 0x00, 0x38,
+  0x13, 0x14, 0x4D, 0x16, 0x4D, 0x0E, 0x80, 0x38, 0x13, 0x14, 0x49, 0x16,
+  0x4F, 0x0E, 0x38, 0x32, 0x11, 0x0D, 0x83, 0x81, 0x85, 0xC3, 0xB3, 0x8D,
+  0x43, 0x31, 0xEF, 0x10, 0xF5, 0x50, 0x11, 0xD8, 0x8C, 0x42, 0x10, 0x84,
+  0x21, 0x84, 0x30, 0xC3, 0xC3, 0x08, 0x21, 0x0C, 0x21, 0x08, 0x46, 0x21,
+  0x11, 0x98, 0x10, 0x22, 0x4B, 0xE3, 0x8D, 0x11, 0x00, 0x10, 0x20, 0x40,
+  0x8F, 0xE2, 0x04, 0x08, 0x10, 0xFF, 0x97, 0xA0, 0xFC, 0xFF, 0x80, 0x02,
+  0x08, 0x10, 0x60, 0x81, 0x06, 0x08, 0x10, 0x60, 0x83, 0x04, 0x08, 0x30,
+  0x40, 0x3C, 0x31, 0x10, 0x58, 0x2D, 0x96, 0xEF, 0x05, 0x82, 0x41, 0x31,
+  0x0F, 0x00, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+  0xFF, 0x3C, 0xC2, 0x03, 0x03, 0x03, 0x06, 0x04, 0x08, 0x30, 0x60, 0xFF,
+  0x3C, 0xC3, 0x03, 0x03, 0x06, 0x1C, 0x03, 0x01, 0x01, 0xC3, 0x7E, 0x06,
+  0x05, 0x06, 0x82, 0x42, 0x22, 0x13, 0x09, 0xFF, 0x02, 0x01, 0x00, 0x80,
+  0x7F, 0x60, 0x60, 0x40, 0x7E, 0x43, 0x01, 0x01, 0x01, 0xC3, 0x7C, 0x1F,
+  0x10, 0x98, 0x08, 0x0D, 0xE7, 0x1B, 0x06, 0x83, 0x41, 0x31, 0x87, 0x80,
+  0xFF, 0x81, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x30, 0x18, 0x0C, 0x06,
+  0x00, 0x3E, 0x31, 0x90, 0x4C, 0x23, 0x31, 0xF1, 0x99, 0x82, 0xC1, 0xA1,
+  0x8F, 0x80, 0x3C, 0x42, 0xC1, 0xC1, 0x41, 0x3F, 0x01, 0x01, 0x03, 0x46,
+  0xFC, 0xFF, 0x80, 0x3F, 0xE0, 0xFF, 0x80, 0x3F, 0xE5, 0xE8, 0x02, 0x18,
+  0x63, 0x08, 0x0C, 0x06, 0x06, 0x02, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x80,
+  0x80, 0xC0, 0x60, 0x61, 0x8C, 0x20, 0x80, 0x79, 0x88, 0x18, 0x20, 0x82,
+  0x0C, 0x00, 0x00, 0x60, 0xC1, 0x80, 0x1E, 0x10, 0x90, 0x38, 0x18, 0x7C,
+  0xC6, 0x43, 0x23, 0x8E, 0xC0, 0x30, 0x08, 0x02, 0x10, 0xF0, 0x18, 0x0A,
+  0x05, 0x06, 0x82, 0x61, 0x11, 0x88, 0xFE, 0x41, 0x60, 0xB0, 0x70, 0x10,
+  0xFC, 0x86, 0x82, 0x82, 0x86, 0xF8, 0x86, 0x83, 0x83, 0x83, 0x86, 0xFC,
+  0x1F, 0x18, 0xD8, 0x08, 0x0C, 0x06, 0x03, 0x01, 0x80, 0x40, 0x30, 0x0C,
+  0x63, 0xE0, 0xF8, 0x8C, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x86,
+  0x8C, 0xF8, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0,
+  0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0,
+  0xC0, 0xC0, 0x1F, 0x10, 0x90, 0x18, 0x0C, 0x06, 0x03, 0x1F, 0x83, 0xC1,
+  0xA0, 0xD8, 0x63, 0xC0, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xFF, 0xC1, 0xC1,
+  0xC1, 0xC1, 0xC1, 0xC1, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10,
+  0x20, 0x47, 0xF0, 0x7F, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x83, 0x42, 0x3C, 0x83, 0x86, 0x8C, 0x98, 0x90, 0xB8, 0xE8, 0xCC, 0x84,
+  0x86, 0x83, 0x83, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+  0xC0, 0xC0, 0xFF, 0xC1, 0xE3, 0xE3, 0xE5, 0xD5, 0xD5, 0xD9, 0xC9, 0xC1,
+  0xC1, 0xC1, 0xC1, 0xC1, 0xE1, 0xE1, 0xD1, 0xD1, 0xD9, 0xC9, 0xCD, 0xC5,
+  0xC3, 0xC3, 0xC1, 0x3C, 0x31, 0x90, 0x58, 0x3C, 0x1C, 0x0E, 0x07, 0x83,
+  0xC1, 0xA0, 0x98, 0xC7, 0x80, 0xFC, 0x82, 0x83, 0x83, 0x83, 0x86, 0xFC,
+  0x80, 0x80, 0x80, 0x80, 0x80, 0x3C, 0x31, 0x90, 0x58, 0x3C, 0x1C, 0x0E,
+  0x07, 0x83, 0xC1, 0xA0, 0x98, 0xC7, 0x80, 0x80, 0x60, 0x0E, 0xFC, 0x86,
+  0x83, 0x83, 0x82, 0x86, 0xFC, 0x88, 0x8C, 0x84, 0x86, 0x83, 0x3E, 0x30,
+  0x90, 0x08, 0x06, 0x01, 0xE0, 0x3C, 0x06, 0x01, 0x80, 0xF0, 0xC7, 0xC0,
+  0xFF, 0x84, 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02,
+  0x01, 0x00, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0x41,
+  0x63, 0x3E, 0x81, 0xE0, 0xD0, 0x48, 0x26, 0x33, 0x10, 0x88, 0x4C, 0x34,
+  0x0A, 0x05, 0x03, 0x00, 0xC0, 0x78, 0x09, 0x01, 0x20, 0x24, 0x44, 0x98,
+  0x92, 0xB3, 0x56, 0x6A, 0x86, 0x30, 0xC6, 0x18, 0xC0, 0xC1, 0xB1, 0x88,
+  0x86, 0xC1, 0x40, 0xE0, 0x70, 0x28, 0x26, 0x31, 0x10, 0xD8, 0x30, 0xC1,
+  0xE0, 0x98, 0xCC, 0x43, 0x60, 0xA0, 0x70, 0x10, 0x08, 0x04, 0x02, 0x01,
+  0x00, 0x7F, 0x81, 0x80, 0x80, 0xC0, 0x40, 0x60, 0x60, 0x20, 0x30, 0x30,
+  0x10, 0x1F, 0xF0, 0xFC, 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0x08, 0x42,
+  0x1F, 0x81, 0x81, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x10, 0x30, 0x20, 0x40,
+  0xC0, 0x81, 0x01, 0xF8, 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0x84,
+  0x3F, 0x10, 0x70, 0xA3, 0x44, 0x48, 0xA1, 0x80, 0xFF, 0x80, 0xC6, 0x30,
+  0x3E, 0x43, 0x01, 0x0F, 0x71, 0x41, 0xC1, 0x43, 0x3D, 0x80, 0x80, 0x80,
+  0x80, 0xBC, 0xC6, 0x82, 0x83, 0x83, 0x83, 0x82, 0xC6, 0xBC, 0x1F, 0x10,
+  0xD8, 0x08, 0x0C, 0x02, 0x01, 0x00, 0xC2, 0x1F, 0x80, 0x01, 0x01, 0x01,
+  0x01, 0x3D, 0x63, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0x63, 0x3D, 0x1E, 0x31,
+  0x90, 0x58, 0x3F, 0xFE, 0x01, 0x00, 0xC2, 0x1F, 0x00, 0x0F, 0x10, 0x30,
+  0x30, 0xFE, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3F, 0xB1,
+  0x10, 0xC8, 0x66, 0x21, 0xE1, 0x00, 0x80, 0x3F, 0x20, 0x70, 0x28, 0x33,
+  0xE0, 0x81, 0x02, 0x04, 0x09, 0xDC, 0xE0, 0xC1, 0x83, 0x06, 0x0C, 0x18,
+  0x20, 0x18, 0xC0, 0x0F, 0x84, 0x21, 0x08, 0x42, 0x10, 0x80, 0x0C, 0x30,
+  0x00, 0x7C, 0x10, 0x41, 0x04, 0x10, 0x41, 0x04, 0x10, 0x43, 0xF8, 0x80,
+  0x80, 0x80, 0x80, 0x83, 0x84, 0x88, 0x98, 0xB8, 0xCC, 0x84, 0x82, 0x83,
+  0xF8, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06,
+  0x01, 0x00, 0x78, 0xBB, 0x66, 0xF2, 0x39, 0x1C, 0x8E, 0x47, 0x23, 0x91,
+  0xC8, 0x80, 0x9D, 0xCE, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x82, 0x3C, 0x31,
+  0xB0, 0x58, 0x3C, 0x1E, 0x0F, 0x04, 0xC6, 0x3C, 0x00, 0xBC, 0xC6, 0x82,
+  0x83, 0x83, 0x83, 0x82, 0xC6, 0xBC, 0x80, 0x80, 0x80, 0x80, 0x3D, 0x63,
+  0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0x63, 0x3D, 0x01, 0x01, 0x01, 0x01, 0x9F,
+  0x43, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x3E, 0x61, 0x40, 0x70, 0x1E,
+  0x03, 0x01, 0x43, 0xBE, 0x10, 0x08, 0x3F, 0xC2, 0x01, 0x00, 0x80, 0x40,
+  0x20, 0x10, 0x0C, 0x03, 0xE0, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC3,
+  0x45, 0x39, 0xC1, 0xA0, 0x90, 0xCC, 0x42, 0x21, 0xB0, 0x50, 0x28, 0x18,
+  0x00, 0xC4, 0x78, 0x89, 0x29, 0x25, 0x26, 0xAC, 0xD5, 0x8C, 0xA1, 0x8C,
+  0x31, 0x80, 0xC3, 0x31, 0x0D, 0x82, 0x81, 0x80, 0xE0, 0x98, 0xC6, 0xC1,
+  0x80, 0xC1, 0xA0, 0x90, 0x4C, 0x62, 0x21, 0xB0, 0x50, 0x38, 0x0C, 0x04,
+  0x06, 0x02, 0x0E, 0x00, 0x7F, 0x01, 0x81, 0x81, 0x81, 0x80, 0x80, 0xC0,
+  0xC0, 0xFF, 0x80, 0x1E, 0x20, 0x40, 0x81, 0x02, 0x0C, 0x60, 0x30, 0x20,
+  0x40, 0x81, 0x02, 0x04, 0x0F, 0xFF, 0xFF, 0xC0, 0xE0, 0x20, 0x40, 0x81,
+  0x02, 0x04, 0x07, 0x18, 0x20, 0x40, 0x81, 0x02, 0x04, 0x70, 0x31, 0x49,
+  0x86 };
+
+const GFXglyph SourceCodePro_Regular9pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,  11,    0,    0 },   // 0x20 ' '
+  {     1,   3,  12,  11,    4,  -11 },   // 0x21 '!'
+  {     6,   6,   6,  11,    2,  -11 },   // 0x22 '"'
+  {    11,   7,  11,  11,    2,  -10 },   // 0x23 '#'
+  {    21,   7,  15,  11,    2,  -12 },   // 0x24 '$'
+  {    35,  10,  12,  11,    0,  -11 },   // 0x25 '%'
+  {    50,   9,  12,  11,    1,  -11 },   // 0x26 '&'
+  {    64,   2,   6,  11,    4,  -11 },   // 0x27 '''
+  {    66,   5,  16,  11,    4,  -12 },   // 0x28 '('
+  {    76,   5,  16,  11,    2,  -12 },   // 0x29 ')'
+  {    86,   7,   7,  11,    2,  -12 },   // 0x2A '*'
+  {    93,   7,   9,  11,    2,   -9 },   // 0x2B '+'
+  {   101,   3,   7,  11,    4,   -2 },   // 0x2C ','
+  {   104,   6,   1,  11,    2,   -5 },   // 0x2D '-'
+  {   105,   3,   3,  11,    4,   -2 },   // 0x2E '.'
+  {   107,   7,  16,  11,    2,  -12 },   // 0x2F '/'
+  {   121,   9,  11,  11,    1,  -10 },   // 0x30 '0'
+  {   134,   8,  11,  11,    2,  -10 },   // 0x31 '1'
+  {   145,   8,  11,  11,    1,  -10 },   // 0x32 '2'
+  {   156,   8,  11,  11,    1,  -10 },   // 0x33 '3'
+  {   167,   9,  11,  11,    1,  -10 },   // 0x34 '4'
+  {   180,   8,  11,  11,    1,  -10 },   // 0x35 '5'
+  {   191,   9,  11,  11,    1,  -10 },   // 0x36 '6'
+  {   204,   9,  11,  11,    1,  -10 },   // 0x37 '7'
+  {   217,   9,  11,  11,    1,  -10 },   // 0x38 '8'
+  {   230,   8,  11,  11,    1,  -10 },   // 0x39 '9'
+  {   241,   3,   9,  11,    4,   -8 },   // 0x3A ':'
+  {   245,   3,  13,  11,    4,   -8 },   // 0x3B ';'
+  {   250,   7,   9,  11,    2,   -9 },   // 0x3C '<'
+  {   258,   7,   5,  11,    2,   -7 },   // 0x3D '='
+  {   263,   7,   9,  11,    2,   -9 },   // 0x3E '>'
+  {   271,   7,  12,  11,    2,  -11 },   // 0x3F '?'
+  {   282,   9,  14,  11,    1,  -10 },   // 0x40 '@'
+  {   298,   9,  12,  11,    1,  -11 },   // 0x41 'A'
+  {   312,   8,  12,  11,    2,  -11 },   // 0x42 'B'
+  {   324,   9,  12,  11,    1,  -11 },   // 0x43 'C'
+  {   338,   8,  12,  11,    2,  -11 },   // 0x44 'D'
+  {   350,   8,  12,  11,    2,  -11 },   // 0x45 'E'
+  {   362,   8,  12,  11,    2,  -11 },   // 0x46 'F'
+  {   374,   9,  12,  11,    1,  -11 },   // 0x47 'G'
+  {   388,   8,  12,  11,    1,  -11 },   // 0x48 'H'
+  {   400,   7,  12,  11,    2,  -11 },   // 0x49 'I'
+  {   411,   8,  12,  11,    1,  -11 },   // 0x4A 'J'
+  {   423,   8,  12,  11,    2,  -11 },   // 0x4B 'K'
+  {   435,   8,  12,  11,    2,  -11 },   // 0x4C 'L'
+  {   447,   8,  12,  11,    1,  -11 },   // 0x4D 'M'
+  {   459,   8,  12,  11,    1,  -11 },   // 0x4E 'N'
+  {   471,   9,  12,  11,    1,  -11 },   // 0x4F 'O'
+  {   485,   8,  12,  11,    2,  -11 },   // 0x50 'P'
+  {   497,   9,  15,  11,    1,  -11 },   // 0x51 'Q'
+  {   514,   8,  12,  11,    2,  -11 },   // 0x52 'R'
+  {   526,   9,  12,  11,    1,  -11 },   // 0x53 'S'
+  {   540,   9,  12,  11,    1,  -11 },   // 0x54 'T'
+  {   554,   8,  12,  11,    1,  -11 },   // 0x55 'U'
+  {   566,   9,  12,  11,    1,  -11 },   // 0x56 'V'
+  {   580,  11,  12,  11,    0,  -11 },   // 0x57 'W'
+  {   597,   9,  12,  11,    1,  -11 },   // 0x58 'X'
+  {   611,   9,  12,  11,    1,  -11 },   // 0x59 'Y'
+  {   625,   9,  12,  11,    1,  -11 },   // 0x5A 'Z'
+  {   639,   5,  16,  11,    4,  -12 },   // 0x5B '['
+  {   649,   7,  16,  11,    2,  -12 },   // 0x5C '\'
+  {   663,   5,  16,  11,    2,  -12 },   // 0x5D ']'
+  {   673,   7,   7,  11,    2,  -11 },   // 0x5E '^'
+  {   680,   9,   1,  11,    1,    2 },   // 0x5F '_'
+  {   682,   4,   3,  11,    3,  -12 },   // 0x60 '`'
+  {   684,   8,   9,  11,    1,   -8 },   // 0x61 'a'
+  {   693,   8,  13,  11,    2,  -12 },   // 0x62 'b'
+  {   706,   9,   9,  11,    1,   -8 },   // 0x63 'c'
+  {   717,   8,  13,  11,    1,  -12 },   // 0x64 'd'
+  {   730,   9,   9,  11,    1,   -8 },   // 0x65 'e'
+  {   741,   8,  13,  11,    2,  -12 },   // 0x66 'f'
+  {   754,   9,  13,  11,    1,   -8 },   // 0x67 'g'
+  {   769,   7,  13,  11,    2,  -12 },   // 0x68 'h'
+  {   781,   5,  13,  11,    2,  -12 },   // 0x69 'i'
+  {   790,   6,  17,  11,    1,  -12 },   // 0x6A 'j'
+  {   803,   8,  13,  11,    2,  -12 },   // 0x6B 'k'
+  {   816,   9,  13,  11,    1,  -12 },   // 0x6C 'l'
+  {   831,   9,   9,  11,    1,   -8 },   // 0x6D 'm'
+  {   842,   7,   9,  11,    2,   -8 },   // 0x6E 'n'
+  {   850,   9,   9,  11,    1,   -8 },   // 0x6F 'o'
+  {   861,   8,  13,  11,    2,   -8 },   // 0x70 'p'
+  {   874,   8,  13,  11,    1,   -8 },   // 0x71 'q'
+  {   887,   7,   9,  11,    3,   -8 },   // 0x72 'r'
+  {   895,   8,   9,  11,    1,   -8 },   // 0x73 's'
+  {   904,   9,  11,  11,    1,  -10 },   // 0x74 't'
+  {   917,   8,   9,  11,    1,   -8 },   // 0x75 'u'
+  {   926,   9,   9,  11,    1,   -8 },   // 0x76 'v'
+  {   937,  11,   9,  11,    0,   -8 },   // 0x77 'w'
+  {   950,   9,   9,  11,    1,   -8 },   // 0x78 'x'
+  {   961,   9,  13,  11,    1,   -8 },   // 0x79 'y'
+  {   976,   9,   9,  11,    1,   -8 },   // 0x7A 'z'
+  {   987,   7,  16,  11,    2,  -12 },   // 0x7B '{'
+  {  1001,   1,  18,  11,    5,  -12 },   // 0x7C '|'
+  {  1004,   7,  16,  11,    2,  -12 },   // 0x7D '}'
+  {  1018,   8,   3,  11,    1,   -6 } }; // 0x7E '~'
+
+const GFXfont SourceCodePro_Regular9pt7b PROGMEM = {
+  (uint8_t  *)SourceCodePro_Regular9pt7bBitmaps,
+  (GFXglyph *)SourceCodePro_Regular9pt7bGlyphs,
+  0x20, 0x7E, 22 };
+
+// Approx. 1693 bytes
+const uint8_t SourceCodePro_SemiBold9pt7bBitmaps[] PROGMEM = {
+  0x00, 0xDB, 0x64, 0x92, 0x1F, 0xF0, 0xEF, 0xDF, 0xBE, 0x64, 0x48, 0x80,
+  0x12, 0x12, 0x7F, 0x7F, 0x22, 0x26, 0xFF, 0xFF, 0x24, 0x24, 0x64, 0x08,
+  0x08, 0x3E, 0x7F, 0x62, 0x70, 0x3C, 0x0F, 0x03, 0x43, 0xFF, 0x3E, 0x08,
+  0x08, 0x08, 0x38, 0x1F, 0x14, 0xCD, 0x36, 0x7F, 0x0E, 0x00, 0x38, 0x1F,
+  0x14, 0xCD, 0x36, 0x7F, 0x0E, 0x38, 0x3E, 0x1B, 0x0D, 0x87, 0xC1, 0xCF,
+  0xC7, 0xB3, 0xCF, 0x63, 0xBF, 0xEF, 0x10, 0xFF, 0xE4, 0x80, 0x08, 0x73,
+  0x08, 0x61, 0x84, 0x30, 0xC1, 0x06, 0x18, 0x20, 0xC1, 0x83, 0x47, 0x0C,
+  0x61, 0x8C, 0x61, 0x08, 0xC6, 0x33, 0x19, 0x98, 0x10, 0x23, 0x5F, 0xF3,
+  0x87, 0x1B, 0x22, 0x08, 0x08, 0x08, 0xFF, 0xFF, 0x08, 0x08, 0x08, 0x77,
+  0x71, 0x36, 0xC0, 0xFF, 0xF0, 0xFF, 0xF0, 0x06, 0x0C, 0x10, 0x60, 0xC3,
+  0x06, 0x08, 0x30, 0x60, 0x83, 0x06, 0x18, 0x30, 0x60, 0x3C, 0x3F, 0x98,
+  0xDB, 0x6D, 0xDE, 0xCF, 0x07, 0x86, 0x63, 0x3F, 0x8F, 0x00, 0xF8, 0xF8,
+  0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x3C, 0x3F, 0x30,
+  0xC0, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x7F, 0xFF, 0xE0, 0x3E, 0x7F,
+  0xC3, 0x03, 0x1E, 0x1E, 0x03, 0x03, 0xC3, 0xFF, 0x3E, 0x0E, 0x07, 0x07,
+  0x86, 0xC6, 0x66, 0x33, 0xFF, 0xFF, 0x06, 0x03, 0x01, 0x80, 0x7F, 0x7F,
+  0x60, 0x7E, 0x7F, 0x63, 0x03, 0x03, 0xC3, 0xFF, 0x3C, 0x1E, 0x1F, 0x98,
+  0x6C, 0x0D, 0xE7, 0xFB, 0x8F, 0x83, 0x63, 0xBF, 0x87, 0x80, 0xFF, 0xFF,
+  0xC0, 0xC0, 0xC0, 0x40, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x06, 0x00, 0x3E,
+  0x3F, 0x98, 0xCC, 0x63, 0xE1, 0xF1, 0x9D, 0x83, 0xC3, 0xBF, 0x8F, 0x80,
+  0x3C, 0x3F, 0x30, 0xD8, 0x2C, 0x3B, 0xFC, 0xE4, 0x06, 0x47, 0x7F, 0x0F,
+  0x00, 0xFF, 0xF0, 0x3F, 0xFC, 0x77, 0x77, 0x00, 0x07, 0x77, 0x13, 0x6C,
+  0x02, 0x0C, 0x31, 0xC7, 0x18, 0x30, 0x38, 0x38, 0x18, 0x18, 0x10, 0xFF,
+  0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x81, 0x83, 0x81, 0xC1, 0xC1, 0xC3, 0x8E,
+  0x39, 0xC3, 0x04, 0x00, 0x79, 0xF9, 0x38, 0x30, 0xC3, 0x0C, 0x18, 0x00,
+  0x60, 0xE1, 0x80, 0x1E, 0x1F, 0x98, 0x78, 0x3C, 0x0C, 0x3E, 0x3F, 0x33,
+  0x99, 0xCF, 0xF3, 0xB8, 0x06, 0x11, 0xF8, 0x78, 0x0E, 0x03, 0x81, 0xA0,
+  0x6C, 0x1B, 0x0C, 0xC3, 0x18, 0xFE, 0x7F, 0x98, 0x76, 0x0F, 0x83, 0xFC,
+  0xFE, 0xC6, 0xC6, 0xFC, 0xFE, 0xC7, 0xC3, 0xC3, 0xC7, 0xFE, 0xFC, 0x1E,
+  0x1F, 0xDC, 0x5C, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xE0, 0x38, 0xCF, 0xE3,
+  0xE0, 0xFC, 0x7F, 0x31, 0xD8, 0x7C, 0x1E, 0x0F, 0x07, 0x83, 0xC3, 0xE3,
+  0xBF, 0x9F, 0x80, 0xFE, 0xFE, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0xC0, 0xC0,
+  0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0xC0, 0xC0,
+  0xC0, 0xC0, 0xC0, 0x1E, 0x3F, 0x9C, 0x7C, 0x0C, 0x06, 0x3F, 0x1F, 0x83,
+  0xE1, 0xB0, 0xDF, 0xE3, 0xC0, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3F, 0xFF,
+  0xFF, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x70, 0xFF, 0xFC, 0xC1, 0x83, 0x06,
+  0x0C, 0x18, 0x30, 0x63, 0xFF, 0xF0, 0x7F, 0x7F, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x47, 0xFE, 0x3C, 0xE3, 0xB8, 0xCE, 0x63, 0xB0, 0xFC,
+  0x3F, 0x0F, 0xE3, 0x98, 0xE7, 0x38, 0xCE, 0x3B, 0x87, 0xC0, 0xC0, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xE3, 0xE3, 0xE3,
+  0xE7, 0xF5, 0xD5, 0xD5, 0xD9, 0xC9, 0xC1, 0xC1, 0xC1, 0xE3, 0xE3, 0xF3,
+  0xD3, 0xDB, 0xDB, 0xCB, 0xCD, 0xC5, 0xC7, 0xC3, 0xC3, 0x3C, 0x3F, 0xB8,
+  0xD8, 0x7C, 0x1E, 0x0F, 0x07, 0x83, 0xC3, 0xB1, 0x9F, 0xC7, 0x80, 0xFC,
+  0xFE, 0xC7, 0xC3, 0xC3, 0xC7, 0xFE, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0x3C,
+  0x3F, 0xB8, 0xD8, 0x7C, 0x1E, 0x0F, 0x07, 0x83, 0xC3, 0xF1, 0x9F, 0xC7,
+  0xC0, 0xC0, 0x7C, 0x1E, 0xFC, 0xFE, 0xC7, 0xC3, 0xC7, 0xFE, 0xFC, 0xCC,
+  0xCC, 0xC6, 0xC6, 0xC3, 0x3E, 0x3F, 0x98, 0x4C, 0x07, 0x01, 0xE0, 0x7C,
+  0x07, 0x01, 0xA1, 0xFF, 0xC7, 0xC0, 0xFF, 0xFF, 0xC6, 0x03, 0x01, 0x80,
+  0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0xC3, 0xE1, 0xF0, 0xF8,
+  0x7C, 0x3E, 0x1F, 0x0F, 0x86, 0xE3, 0x31, 0x9F, 0xC7, 0xC0, 0xE0, 0xD8,
+  0x36, 0x1C, 0xC6, 0x31, 0x8C, 0x63, 0x30, 0x6C, 0x1B, 0x06, 0x80, 0xE0,
+  0x38, 0xC0, 0x78, 0x0B, 0x03, 0x32, 0x66, 0xEC, 0xD5, 0x9A, 0xB3, 0x56,
+  0x7B, 0xCF, 0x70, 0xC6, 0x18, 0xC0, 0xC3, 0xB1, 0x99, 0xC6, 0xC3, 0x40,
+  0xE0, 0x70, 0x7C, 0x36, 0x33, 0xB8, 0xD8, 0x30, 0xE0, 0xD8, 0x73, 0x18,
+  0xC6, 0x1B, 0x06, 0xC0, 0xE0, 0x38, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x7F,
+  0xBF, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x3F, 0xFF,
+  0xF0, 0xFF, 0xE1, 0x08, 0x42, 0x10, 0x84, 0x21, 0x08, 0x43, 0xFF, 0xC1,
+  0x83, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x60, 0xC0, 0x81,
+  0x83, 0xFF, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8F, 0xFF, 0x30,
+  0x70, 0xA3, 0x64, 0xD8, 0xB1, 0x80, 0xFF, 0xFF, 0xC0, 0xC6, 0x30, 0x3E,
+  0x7F, 0x43, 0x1F, 0x7F, 0xE3, 0xC3, 0x7F, 0x79, 0xE0, 0x70, 0x38, 0x1C,
+  0x0F, 0xE7, 0xFB, 0x8F, 0xC3, 0xE1, 0xF0, 0xF8, 0xDF, 0xED, 0xE0, 0x1E,
+  0x3F, 0xDC, 0x5C, 0x0C, 0x07, 0x01, 0xC4, 0xFF, 0x1E, 0x00, 0x03, 0x03,
+  0x03, 0x03, 0x3F, 0x7F, 0xE3, 0xC3, 0xC3, 0xC3, 0xE3, 0x7F, 0x39, 0x1E,
+  0x3F, 0x98, 0x7F, 0xFF, 0xFE, 0x01, 0x84, 0xFE, 0x1E, 0x00, 0x0F, 0x1F,
+  0x38, 0x30, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3F,
+  0xBF, 0xD8, 0x8C, 0x67, 0xE3, 0xE1, 0x00, 0xFE, 0x7F, 0xE0, 0xFF, 0xEF,
+  0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0C, 0xE7, 0xFB, 0xCD, 0xC7, 0xE3, 0xF1,
+  0xF8, 0xFC, 0x7E, 0x38, 0x18, 0x71, 0x80, 0x03, 0xEF, 0x86, 0x18, 0x61,
+  0x86, 0x18, 0x60, 0x0C, 0x1C, 0x30, 0x00, 0x0F, 0x9F, 0x06, 0x0C, 0x18,
+  0x30, 0x60, 0xC1, 0x83, 0x7E, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC7, 0xCE,
+  0xDC, 0xF8, 0xF8, 0xEC, 0xCE, 0xC6, 0xC3, 0xF8, 0x7C, 0x06, 0x03, 0x01,
+  0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0xE0, 0xF8, 0xFB, 0x7F,
+  0xF3, 0x79, 0x3C, 0x9E, 0x4F, 0x27, 0x93, 0xC9, 0x80, 0xCE, 0x7F, 0xBC,
+  0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0x80, 0x3E, 0x3F, 0xB8, 0xD8,
+  0x3C, 0x1E, 0x0F, 0x8C, 0xFE, 0x3E, 0x00, 0xDE, 0x7F, 0xB8, 0xFC, 0x3E,
+  0x1F, 0x0F, 0x8D, 0xFE, 0xFE, 0x70, 0x38, 0x1C, 0x00, 0x3D, 0x7F, 0xE3,
+  0xC3, 0xC3, 0xC3, 0xE3, 0x7F, 0x3B, 0x03, 0x03, 0x03, 0xCF, 0xDF, 0xF0,
+  0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x3E, 0x3F, 0x98, 0x4E, 0x03, 0xE0,
+  0x39, 0x07, 0xFE, 0x3E, 0x00, 0x10, 0x08, 0x3F, 0xFF, 0xF3, 0x01, 0x80,
+  0xC0, 0x70, 0x18, 0x0F, 0xC3, 0xE0, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
+  0xE7, 0x7F, 0x79, 0xC1, 0xE0, 0x98, 0xCC, 0x67, 0x61, 0xB0, 0xD8, 0x38,
+  0x1C, 0x00, 0xC4, 0x79, 0xC9, 0xBB, 0x35, 0x66, 0xAC, 0xD5, 0x9E, 0xB1,
+  0xDC, 0x31, 0x80, 0xE3, 0xB1, 0x8D, 0x83, 0x81, 0xC1, 0xE0, 0xD8, 0xC6,
+  0xC3, 0x80, 0xC1, 0xE0, 0x98, 0xCC, 0x63, 0x21, 0xB0, 0x50, 0x38, 0x1C,
+  0x0C, 0x3E, 0x1C, 0x00, 0x7F, 0xBF, 0x81, 0x81, 0xC1, 0xC1, 0xC1, 0xC1,
+  0xFF, 0xFF, 0x80, 0x1E, 0x3C, 0xC1, 0x81, 0x02, 0x0C, 0x78, 0xF0, 0x60,
+  0x40, 0x83, 0x06, 0x07, 0x8F, 0xFF, 0xFF, 0xC0, 0xF1, 0xE0, 0x40, 0x81,
+  0x02, 0x06, 0x0F, 0x1E, 0x30, 0x40, 0x81, 0x02, 0x3C, 0x78, 0x79, 0xBF,
+  0xB3, 0x80 };
+
+const GFXglyph SourceCodePro_SemiBold9pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,  11,    0,    0 },   // 0x20 ' '
+  {     1,   3,  12,  11,    4,  -11 },   // 0x21 '!'
+  {     6,   7,   6,  11,    2,  -11 },   // 0x22 '"'
+  {    12,   8,  11,  11,    1,  -10 },   // 0x23 '#'
+  {    23,   8,  15,  11,    1,  -12 },   // 0x24 '$'
+  {    38,  10,  12,  11,    0,  -11 },   // 0x25 '%'
+  {    53,   9,  12,  11,    1,  -11 },   // 0x26 '&'
+  {    67,   3,   6,  11,    4,  -11 },   // 0x27 '''
+  {    70,   6,  16,  11,    3,  -12 },   // 0x28 '('
+  {    82,   5,  16,  11,    2,  -12 },   // 0x29 ')'
+  {    92,   7,   8,  11,    2,  -12 },   // 0x2A '*'
+  {    99,   8,   8,  11,    1,   -9 },   // 0x2B '+'
+  {   107,   4,   7,  11,    3,   -2 },   // 0x2C ','
+  {   111,   6,   2,  11,    2,   -5 },   // 0x2D '-'
+  {   113,   3,   4,  11,    4,   -3 },   // 0x2E '.'
+  {   115,   7,  16,  11,    2,  -12 },   // 0x2F '/'
+  {   129,   9,  11,  11,    1,  -10 },   // 0x30 '0'
+  {   142,   8,  11,  11,    2,  -10 },   // 0x31 '1'
+  {   153,   9,  11,  11,    1,  -10 },   // 0x32 '2'
+  {   166,   8,  11,  11,    1,  -10 },   // 0x33 '3'
+  {   177,   9,  11,  11,    1,  -10 },   // 0x34 '4'
+  {   190,   8,  11,  11,    1,  -10 },   // 0x35 '5'
+  {   201,   9,  11,  11,    1,  -10 },   // 0x36 '6'
+  {   214,   9,  11,  11,    1,  -10 },   // 0x37 '7'
+  {   227,   9,  11,  11,    1,  -10 },   // 0x38 '8'
+  {   240,   9,  11,  11,    1,  -10 },   // 0x39 '9'
+  {   253,   3,  10,  11,    4,   -9 },   // 0x3A ':'
+  {   257,   4,  14,  11,    3,   -9 },   // 0x3B ';'
+  {   264,   7,  12,  11,    2,  -11 },   // 0x3C '<'
+  {   275,   8,   6,  11,    1,   -8 },   // 0x3D '='
+  {   281,   7,  12,  11,    2,  -11 },   // 0x3E '>'
+  {   292,   7,  12,  11,    2,  -11 },   // 0x3F '?'
+  {   303,   9,  15,  11,    1,  -11 },   // 0x40 '@'
+  {   320,  10,  12,  11,    0,  -11 },   // 0x41 'A'
+  {   335,   8,  12,  11,    2,  -11 },   // 0x42 'B'
+  {   347,   9,  12,  11,    1,  -11 },   // 0x43 'C'
+  {   361,   9,  12,  11,    1,  -11 },   // 0x44 'D'
+  {   375,   8,  12,  11,    2,  -11 },   // 0x45 'E'
+  {   387,   8,  12,  11,    2,  -11 },   // 0x46 'F'
+  {   399,   9,  12,  11,    1,  -11 },   // 0x47 'G'
+  {   413,   9,  12,  11,    1,  -11 },   // 0x48 'H'
+  {   427,   7,  12,  11,    2,  -11 },   // 0x49 'I'
+  {   438,   8,  12,  11,    1,  -11 },   // 0x4A 'J'
+  {   450,  10,  12,  11,    1,  -11 },   // 0x4B 'K'
+  {   465,   8,  12,  11,    2,  -11 },   // 0x4C 'L'
+  {   477,   8,  12,  11,    1,  -11 },   // 0x4D 'M'
+  {   489,   8,  12,  11,    1,  -11 },   // 0x4E 'N'
+  {   501,   9,  12,  11,    1,  -11 },   // 0x4F 'O'
+  {   515,   8,  12,  11,    2,  -11 },   // 0x50 'P'
+  {   527,   9,  15,  11,    1,  -11 },   // 0x51 'Q'
+  {   544,   8,  12,  11,    2,  -11 },   // 0x52 'R'
+  {   556,   9,  12,  11,    1,  -11 },   // 0x53 'S'
+  {   570,   9,  12,  11,    1,  -11 },   // 0x54 'T'
+  {   584,   9,  12,  11,    1,  -11 },   // 0x55 'U'
+  {   598,  10,  12,  11,    0,  -11 },   // 0x56 'V'
+  {   613,  11,  12,  11,    0,  -11 },   // 0x57 'W'
+  {   630,   9,  12,  11,    1,  -11 },   // 0x58 'X'
+  {   644,  10,  12,  11,    0,  -11 },   // 0x59 'Y'
+  {   659,   9,  12,  11,    1,  -11 },   // 0x5A 'Z'
+  {   673,   5,  16,  11,    4,  -12 },   // 0x5B '['
+  {   683,   7,  16,  11,    2,  -12 },   // 0x5C '\'
+  {   697,   5,  16,  11,    2,  -12 },   // 0x5D ']'
+  {   707,   7,   7,  11,    2,  -11 },   // 0x5E '^'
+  {   714,   9,   2,  11,    1,    2 },   // 0x5F '_'
+  {   717,   4,   3,  11,    3,  -12 },   // 0x60 '`'
+  {   719,   8,   9,  11,    1,   -8 },   // 0x61 'a'
+  {   728,   9,  13,  11,    1,  -12 },   // 0x62 'b'
+  {   743,   9,   9,  11,    1,   -8 },   // 0x63 'c'
+  {   754,   8,  13,  11,    1,  -12 },   // 0x64 'd'
+  {   767,   9,   9,  11,    1,   -8 },   // 0x65 'e'
+  {   778,   8,  13,  11,    2,  -12 },   // 0x66 'f'
+  {   791,   9,  12,  11,    1,   -8 },   // 0x67 'g'
+  {   805,   9,  13,  11,    1,  -12 },   // 0x68 'h'
+  {   820,   6,  14,  11,    2,  -13 },   // 0x69 'i'
+  {   831,   7,  17,  11,    1,  -13 },   // 0x6A 'j'
+  {   846,   8,  13,  11,    2,  -12 },   // 0x6B 'k'
+  {   859,   9,  13,  11,    1,  -12 },   // 0x6C 'l'
+  {   874,   9,   9,  11,    1,   -8 },   // 0x6D 'm'
+  {   885,   9,   9,  11,    1,   -8 },   // 0x6E 'n'
+  {   896,   9,   9,  11,    1,   -8 },   // 0x6F 'o'
+  {   907,   9,  12,  11,    1,   -8 },   // 0x70 'p'
+  {   921,   8,  12,  11,    1,   -8 },   // 0x71 'q'
+  {   933,   8,   9,  11,    2,   -8 },   // 0x72 'r'
+  {   942,   9,   9,  11,    1,   -8 },   // 0x73 's'
+  {   953,   9,  11,  11,    1,  -10 },   // 0x74 't'
+  {   966,   8,   9,  11,    1,   -8 },   // 0x75 'u'
+  {   975,   9,   9,  11,    1,   -8 },   // 0x76 'v'
+  {   986,  11,   9,  11,    0,   -8 },   // 0x77 'w'
+  {   999,   9,   9,  11,    1,   -8 },   // 0x78 'x'
+  {  1010,   9,  12,  11,    1,   -8 },   // 0x79 'y'
+  {  1024,   9,   9,  11,    1,   -8 },   // 0x7A 'z'
+  {  1035,   7,  16,  11,    2,  -12 },   // 0x7B '{'
+  {  1049,   1,  18,  11,    5,  -12 },   // 0x7C '|'
+  {  1052,   7,  16,  11,    2,  -12 },   // 0x7D '}'
+  {  1066,   9,   3,  11,    1,   -6 } }; // 0x7E '~'
+
+const GFXfont SourceCodePro_SemiBold9pt7b PROGMEM = {
+  (uint8_t  *)SourceCodePro_SemiBold9pt7bBitmaps,
+  (GFXglyph *)SourceCodePro_SemiBold9pt7bGlyphs,
+  0x20, 0x7E, 22 };
+
+// Approx. 1742 bytes
+const uint8_t Shree7149pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xEA, 0x80, 0xC0, 0x99, 0x99, 0x04, 0x20, 0x21, 0x01, 0x10,
+  0x77, 0xE0, 0x84, 0x04, 0x40, 0x42, 0x1F, 0xFE, 0x11, 0x01, 0x08, 0x08,
+  0x40, 0x04, 0x07, 0x82, 0x59, 0x13, 0x44, 0x51, 0x06, 0x40, 0xF0, 0x07,
+  0x01, 0x30, 0x45, 0x11, 0x44, 0x59, 0x21, 0xF0, 0x10, 0x04, 0x00, 0x00,
+  0x09, 0xE0, 0x44, 0x42, 0x20, 0x90, 0x82, 0x41, 0x12, 0x03, 0x90, 0x00,
+  0x80, 0x02, 0xF0, 0x12, 0x20, 0x90, 0x44, 0x42, 0x10, 0x88, 0x81, 0xC0,
+  0x00, 0x03, 0xC0, 0x84, 0x11, 0x01, 0x20, 0x28, 0x06, 0x01, 0x20, 0x42,
+  0x50, 0x2A, 0x05, 0x20, 0x44, 0x14, 0x7C, 0x40, 0xEA, 0x12, 0x44, 0x44,
+  0x88, 0x88, 0x84, 0x44, 0x21, 0x04, 0x22, 0x21, 0x11, 0x11, 0x12, 0x22,
+  0x40, 0x18, 0x18, 0xF3, 0x24, 0x24, 0x53, 0x18, 0x18, 0x08, 0x04, 0x02,
+  0x01, 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xD4, 0x7E, 0xC0, 0x01,
+  0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40,
+  0x40, 0x3E, 0x20, 0x90, 0x50, 0x28, 0x14, 0x06, 0x03, 0x01, 0x81, 0x40,
+  0x90, 0x48, 0x43, 0xC0, 0x11, 0xF1, 0x11, 0x11, 0x11, 0x11, 0x10, 0x3E,
+  0x41, 0x41, 0x01, 0x01, 0x01, 0x02, 0x0C, 0x30, 0x40, 0x40, 0x80, 0xFF,
+  0x7E, 0x20, 0xA0, 0x40, 0x20, 0x10, 0x10, 0x78, 0x02, 0x01, 0x40, 0x60,
+  0x48, 0x23, 0xE0, 0x06, 0x03, 0x02, 0x82, 0x41, 0x21, 0x11, 0x08, 0x84,
+  0x82, 0x7F, 0xC0, 0x80, 0x40, 0x20, 0x7E, 0x20, 0x10, 0x08, 0x04, 0x03,
+  0xF1, 0x04, 0x02, 0x00, 0x80, 0x60, 0x48, 0x23, 0xE0, 0x3E, 0x30, 0x90,
+  0x30, 0x08, 0x05, 0xF3, 0x05, 0x82, 0x80, 0xC0, 0x50, 0x48, 0x23, 0xE0,
+  0x7F, 0x02, 0x02, 0x04, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x20, 0x20,
+  0x20, 0x3E, 0x20, 0x90, 0x48, 0x24, 0x11, 0xB0, 0xB8, 0x82, 0x81, 0x40,
+  0x60, 0x48, 0x23, 0xE0, 0x7E, 0x21, 0xA0, 0x50, 0x28, 0x14, 0x0D, 0x0A,
+  0x79, 0x01, 0x00, 0xA0, 0x48, 0x43, 0xC0, 0xF0, 0x00, 0x30, 0xF0, 0x00,
+  0x35, 0x00, 0x02, 0x18, 0xC2, 0x0C, 0x04, 0x06, 0x03, 0x00, 0xFF, 0x00,
+  0x00, 0x00, 0xFF, 0x00, 0x80, 0xC0, 0x60, 0x20, 0x43, 0x18, 0x41, 0x00,
+  0x18, 0x66, 0x41, 0x81, 0x01, 0x01, 0x02, 0x04, 0x08, 0x08, 0x00, 0x00,
+  0x00, 0x08, 0x07, 0xF8, 0x06, 0x01, 0x82, 0x00, 0x11, 0x00, 0x02, 0x40,
+  0x00, 0xA0, 0xFA, 0x18, 0x41, 0x86, 0x10, 0x21, 0x84, 0x08, 0x61, 0x02,
+  0x18, 0x40, 0x86, 0x08, 0x62, 0x41, 0x6C, 0x90, 0x20, 0xC2, 0x00, 0x00,
+  0x60, 0x08, 0x07, 0xFC, 0x00, 0x06, 0x00, 0x60, 0x09, 0x00, 0x90, 0x09,
+  0x01, 0x08, 0x10, 0x82, 0x04, 0x3F, 0xC2, 0x04, 0x40, 0x24, 0x02, 0x80,
+  0x10, 0xFF, 0xA0, 0x28, 0x06, 0x02, 0x80, 0xA0, 0x6F, 0xFA, 0x01, 0x80,
+  0x60, 0x18, 0x06, 0x02, 0xFF, 0x00, 0x06, 0x07, 0x31, 0x81, 0x20, 0x18,
+  0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, 0xA0, 0x12, 0x04,
+  0x3F, 0x00, 0xFF, 0x10, 0x12, 0x01, 0x40, 0x28, 0x03, 0x00, 0x60, 0x0C,
+  0x01, 0x80, 0x50, 0x0A, 0x01, 0x40, 0x4F, 0xF0, 0xFF, 0xC0, 0x20, 0x10,
+  0x08, 0x04, 0x03, 0xFD, 0x00, 0x80, 0x40, 0x20, 0x10, 0x0F, 0xF8, 0xFF,
+  0xC0, 0x20, 0x10, 0x08, 0x04, 0x03, 0xFD, 0x00, 0x80, 0x40, 0x20, 0x10,
+  0x08, 0x00, 0x06, 0x03, 0x31, 0x81, 0x20, 0x18, 0x01, 0x00, 0x20, 0x04,
+  0x1F, 0x80, 0x30, 0x06, 0x00, 0xA0, 0x32, 0x06, 0x3F, 0x40, 0x80, 0x60,
+  0x18, 0x06, 0x01, 0x80, 0x60, 0x1F, 0xFE, 0x01, 0x80, 0x60, 0x18, 0x06,
+  0x01, 0x80, 0x40, 0xFF, 0xF8, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81,
+  0x03, 0x06, 0x0A, 0x13, 0xC0, 0x80, 0xE0, 0x48, 0x22, 0x10, 0x88, 0x26,
+  0x0A, 0x83, 0x10, 0x82, 0x20, 0x48, 0x1A, 0x02, 0x80, 0x40, 0x80, 0x80,
+  0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xC0,
+  0x1D, 0x00, 0xE8, 0x0B, 0x40, 0x59, 0x02, 0xC8, 0x26, 0x21, 0x31, 0x11,
+  0x88, 0x8C, 0x24, 0x61, 0x43, 0x06, 0x18, 0x20, 0x80, 0xC0, 0x34, 0x06,
+  0x80, 0xC8, 0x18, 0x83, 0x10, 0x61, 0x0C, 0x11, 0x82, 0x30, 0x26, 0x02,
+  0xC0, 0x58, 0x06, 0x0E, 0x03, 0x18, 0x40, 0x44, 0x02, 0x80, 0x28, 0x02,
+  0x80, 0x28, 0x01, 0x80, 0x28, 0x02, 0x80, 0x24, 0x04, 0x20, 0xC1, 0xF0,
+  0xFF, 0x20, 0x28, 0x0A, 0x01, 0x80, 0xA0, 0x2F, 0xF2, 0x00, 0x80, 0x20,
+  0x08, 0x02, 0x00, 0x80, 0x00, 0x06, 0x07, 0x31, 0x81, 0x20, 0x28, 0x03,
+  0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xA0, 0xB2, 0x0C, 0x37,
+  0xC1, 0x08, 0xFF, 0xA0, 0x18, 0x06, 0x01, 0x80, 0x60, 0x2F, 0xF2, 0x02,
+  0x80, 0x60, 0x18, 0x06, 0x01, 0x80, 0x40, 0x18, 0x33, 0xA0, 0x50, 0x18,
+  0x04, 0x01, 0x80, 0x3C, 0x01, 0x00, 0x60, 0x30, 0x1C, 0x13, 0xF0, 0xFF,
+  0xC1, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00,
+  0x40, 0x10, 0x04, 0x00, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18,
+  0x06, 0x01, 0x80, 0x60, 0x14, 0x05, 0x02, 0x3F, 0x00, 0xC0, 0x48, 0x09,
+  0x01, 0x10, 0x42, 0x08, 0x41, 0x04, 0x40, 0x88, 0x11, 0x01, 0x40, 0x28,
+  0x05, 0x00, 0x40, 0x81, 0x81, 0x41, 0x81, 0x41, 0x41, 0x41, 0x42, 0x22,
+  0x42, 0x22, 0x22, 0x22, 0x24, 0x24, 0x24, 0x14, 0x24, 0x14, 0x14, 0x14,
+  0x18, 0x18, 0x18, 0x08, 0x18, 0x40, 0xC8, 0x22, 0x10, 0x44, 0x0A, 0x03,
+  0x00, 0xC0, 0x28, 0x12, 0x0C, 0x42, 0x09, 0x02, 0x40, 0x40, 0x40, 0x6C,
+  0x08, 0x82, 0x08, 0xC1, 0x90, 0x14, 0x01, 0x80, 0x20, 0x04, 0x00, 0x80,
+  0x10, 0x02, 0x00, 0x40, 0x7F, 0xC0, 0x20, 0x18, 0x04, 0x02, 0x01, 0x00,
+  0xC0, 0x20, 0x10, 0x08, 0x06, 0x01, 0x00, 0xFF, 0xC0, 0xF8, 0x88, 0x88,
+  0x88, 0x88, 0x88, 0x88, 0x8F, 0x01, 0x04, 0x10, 0x20, 0x81, 0x04, 0x10,
+  0x20, 0x82, 0x04, 0xF1, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x1F, 0x08,
+  0x0A, 0x09, 0x04, 0x44, 0x12, 0x08, 0xFF, 0x80, 0x49, 0x00, 0x38, 0xC6,
+  0x82, 0x02, 0x06, 0x7A, 0x82, 0x82, 0x82, 0x7F, 0x80, 0x40, 0x20, 0x13,
+  0x8A, 0x26, 0x0B, 0x03, 0x01, 0x80, 0xC0, 0x70, 0x58, 0x2B, 0xE0, 0x1C,
+  0x62, 0xC1, 0x80, 0x80, 0x80, 0x80, 0x81, 0x41, 0x3E, 0x01, 0x01, 0x01,
+  0x3D, 0x43, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x43, 0x3D, 0x3C, 0x42,
+  0x81, 0x81, 0xFF, 0x80, 0x80, 0x81, 0x41, 0x3E, 0x32, 0x22, 0x72, 0x22,
+  0x22, 0x22, 0x20, 0x3D, 0x43, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x43,
+  0x3D, 0x81, 0x81, 0x7E, 0x80, 0x80, 0x80, 0x9C, 0xA2, 0xC1, 0x81, 0x81,
+  0x81, 0x81, 0x81, 0x81, 0x81, 0x9F, 0xF8, 0x20, 0x12, 0x49, 0x24, 0x92,
+  0x49, 0xC0, 0x80, 0x80, 0x80, 0x83, 0x84, 0x88, 0x90, 0xB0, 0xC8, 0x84,
+  0x84, 0x82, 0x81, 0xFF, 0xF8, 0x98, 0x65, 0x3C, 0xF0, 0x83, 0x04, 0x18,
+  0x20, 0xC1, 0x06, 0x08, 0x30, 0x41, 0x82, 0x0C, 0x10, 0x40, 0x9C, 0xA2,
+  0xC1, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x3C, 0x21, 0xA0, 0x50,
+  0x18, 0x0C, 0x06, 0x03, 0x02, 0x41, 0x1F, 0x00, 0x9C, 0x51, 0xB0, 0x58,
+  0x18, 0x0C, 0x06, 0x03, 0x82, 0xA1, 0x4B, 0x22, 0x10, 0x08, 0x04, 0x00,
+  0x3D, 0x43, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x43, 0x25, 0x19, 0x01,
+  0x01, 0x01, 0x9D, 0x31, 0x88, 0x42, 0x10, 0x84, 0x00, 0x79, 0x0A, 0x0C,
+  0x06, 0x03, 0x80, 0x81, 0x82, 0xF8, 0x44, 0xF4, 0x44, 0x44, 0x44, 0x43,
+  0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x83, 0x43, 0x7D, 0x81, 0x41,
+  0x41, 0x42, 0x22, 0x24, 0x24, 0x14, 0x18, 0x08, 0x82, 0x0C, 0x10, 0x51,
+  0x44, 0x8A, 0x24, 0x51, 0x12, 0x90, 0xA2, 0x85, 0x14, 0x18, 0xC0, 0x82,
+  0x00, 0x41, 0x21, 0x08, 0x82, 0x81, 0x80, 0xC0, 0x50, 0x44, 0x42, 0x20,
+  0x80, 0x80, 0x41, 0x41, 0x42, 0x22, 0x22, 0x24, 0x14, 0x18, 0x08, 0x08,
+  0x10, 0x30, 0x40, 0x7E, 0x02, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40,
+  0xFF, 0x08, 0x42, 0x08, 0x20, 0x82, 0x08, 0xC0, 0x82, 0x08, 0x20, 0x82,
+  0x04, 0x18, 0x10, 0xFF, 0xFF, 0x80, 0x40, 0x82, 0x04, 0x10, 0x41, 0x04,
+  0x0C, 0x41, 0x04, 0x10, 0x41, 0x08, 0x62, 0x00, 0x70, 0x0F };
+
+const GFXglyph Shree7149pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   7,    0,    0 },   // 0x20 ' '
+  {     1,   2,  13,   4,    1,  -12 },   // 0x21 '!'
+  {     5,   4,   4,   6,    1,  -13 },   // 0x22 '"'
+  {     7,  13,  11,  15,    1,  -10 },   // 0x23 '#'
+  {    25,  10,  17,  13,    1,  -14 },   // 0x24 '$'
+  {    47,  14,  14,  16,    1,  -13 },   // 0x25 '%'
+  {    72,  11,  14,  11,    0,  -13 },   // 0x26 '&'
+  {    92,   2,   4,   4,    1,  -13 },   // 0x27 '''
+  {    93,   4,  16,   6,    1,  -13 },   // 0x28 '('
+  {   101,   4,  16,   6,    1,  -13 },   // 0x29 ')'
+  {   109,   8,   8,  10,    1,  -13 },   // 0x2A '*'
+  {   117,   9,   9,  11,    1,   -8 },   // 0x2B '+'
+  {   128,   2,   4,   4,    1,    0 },   // 0x2C ','
+  {   129,   8,   1,  10,    1,   -4 },   // 0x2D '-'
+  {   130,   2,   1,   4,    1,    0 },   // 0x2E '.'
+  {   131,   8,  14,  11,    1,  -12 },   // 0x2F '/'
+  {   145,   9,  13,  11,    1,  -12 },   // 0x30 '0'
+  {   160,   4,  13,  11,    3,  -12 },   // 0x31 '1'
+  {   167,   8,  13,  11,    1,  -12 },   // 0x32 '2'
+  {   180,   9,  13,  11,    1,  -12 },   // 0x33 '3'
+  {   195,   9,  13,  11,    1,  -12 },   // 0x34 '4'
+  {   210,   9,  13,  11,    1,  -12 },   // 0x35 '5'
+  {   225,   9,  13,  11,    1,  -12 },   // 0x36 '6'
+  {   240,   8,  13,  11,    1,  -12 },   // 0x37 '7'
+  {   253,   9,  13,  11,    1,  -12 },   // 0x38 '8'
+  {   268,   9,  13,  11,    1,  -12 },   // 0x39 '9'
+  {   283,   2,  10,   4,    1,   -9 },   // 0x3A ':'
+  {   286,   2,  13,   4,    1,   -9 },   // 0x3B ';'
+  {   290,   7,   9,  10,    1,   -8 },   // 0x3C '<'
+  {   298,   8,   5,  10,    1,   -6 },   // 0x3D '='
+  {   303,   7,  10,  10,    1,   -9 },   // 0x3E '>'
+  {   312,   8,  14,  11,    1,  -13 },   // 0x3F '?'
+  {   326,  18,  17,  20,    1,  -13 },   // 0x40 '@'
+  {   365,  12,  13,  12,    0,  -12 },   // 0x41 'A'
+  {   385,  10,  13,  12,    1,  -12 },   // 0x42 'B'
+  {   402,  11,  14,  12,    1,  -13 },   // 0x43 'C'
+  {   422,  11,  13,  12,    1,  -12 },   // 0x44 'D'
+  {   440,   9,  13,  10,    1,  -12 },   // 0x45 'E'
+  {   455,   9,  13,  10,    1,  -12 },   // 0x46 'F'
+  {   470,  11,  14,  13,    1,  -13 },   // 0x47 'G'
+  {   490,  10,  13,  13,    1,  -12 },   // 0x48 'H'
+  {   507,   1,  13,   4,    1,  -12 },   // 0x49 'I'
+  {   509,   7,  13,   9,    0,  -12 },   // 0x4A 'J'
+  {   521,  10,  13,  12,    1,  -12 },   // 0x4B 'K'
+  {   538,   8,  13,  10,    1,  -12 },   // 0x4C 'L'
+  {   551,  13,  13,  15,    1,  -12 },   // 0x4D 'M'
+  {   573,  11,  13,  13,    1,  -12 },   // 0x4E 'N'
+  {   591,  12,  14,  13,    1,  -13 },   // 0x4F 'O'
+  {   612,  10,  13,  11,    1,  -12 },   // 0x50 'P'
+  {   629,  11,  15,  13,    1,  -13 },   // 0x51 'Q'
+  {   650,  10,  13,  12,    1,  -12 },   // 0x52 'R'
+  {   667,   9,  14,  11,    1,  -13 },   // 0x53 'S'
+  {   683,  10,  13,  10,    0,  -12 },   // 0x54 'T'
+  {   700,  10,  13,  12,    1,  -12 },   // 0x55 'U'
+  {   717,  11,  13,  11,    0,  -12 },   // 0x56 'V'
+  {   735,  16,  13,  17,    0,  -12 },   // 0x57 'W'
+  {   761,  10,  13,  11,    0,  -12 },   // 0x58 'X'
+  {   778,  11,  13,  11,    0,  -12 },   // 0x59 'Y'
+  {   796,  10,  13,  11,    0,  -12 },   // 0x5A 'Z'
+  {   813,   4,  16,   6,    1,  -13 },   // 0x5B '['
+  {   821,   6,  13,   8,    1,  -11 },   // 0x5C '\'
+  {   831,   4,  16,   6,    1,  -13 },   // 0x5D ']'
+  {   839,   9,   6,  11,    1,   -7 },   // 0x5E '^'
+  {   846,   9,   1,   9,    0,    3 },   // 0x5F '_'
+  {   848,   3,   3,   5,    1,  -13 },   // 0x60 '`'
+  {   850,   8,  10,  10,    1,   -9 },   // 0x61 'a'
+  {   860,   9,  13,  11,    1,  -12 },   // 0x62 'b'
+  {   875,   8,  10,  10,    1,   -9 },   // 0x63 'c'
+  {   885,   8,  13,  11,    1,  -12 },   // 0x64 'd'
+  {   898,   8,  10,  10,    1,   -9 },   // 0x65 'e'
+  {   908,   4,  13,   4,    0,  -12 },   // 0x66 'f'
+  {   915,   8,  13,  11,    1,   -9 },   // 0x67 'g'
+  {   928,   8,  13,  10,    1,  -12 },   // 0x68 'h'
+  {   941,   1,  13,   4,    1,  -12 },   // 0x69 'i'
+  {   943,   3,  17,   4,    0,  -12 },   // 0x6A 'j'
+  {   950,   8,  13,   9,    1,  -12 },   // 0x6B 'k'
+  {   963,   1,  13,   4,    1,  -12 },   // 0x6C 'l'
+  {   965,  13,  10,  15,    1,   -9 },   // 0x6D 'm'
+  {   982,   8,  10,  10,    1,   -9 },   // 0x6E 'n'
+  {   992,   9,  10,  11,    1,   -9 },   // 0x6F 'o'
+  {  1004,   9,  14,  11,    1,   -9 },   // 0x70 'p'
+  {  1020,   8,  14,  11,    1,   -9 },   // 0x71 'q'
+  {  1034,   5,  10,   6,    1,   -9 },   // 0x72 'r'
+  {  1041,   7,  10,   9,    1,   -9 },   // 0x73 's'
+  {  1050,   4,  12,   4,    0,  -11 },   // 0x74 't'
+  {  1056,   8,  10,  10,    1,   -9 },   // 0x75 'u'
+  {  1066,   8,  10,   9,    0,   -9 },   // 0x76 'v'
+  {  1076,  13,  10,  13,    0,   -9 },   // 0x77 'w'
+  {  1093,   9,  10,   9,    0,   -9 },   // 0x78 'x'
+  {  1105,   8,  14,   9,    0,   -9 },   // 0x79 'y'
+  {  1119,   8,  10,   8,    0,   -9 },   // 0x7A 'z'
+  {  1129,   6,  18,   8,    1,  -13 },   // 0x7B '{'
+  {  1143,   1,  17,   4,    1,  -13 },   // 0x7C '|'
+  {  1146,   6,  18,   8,    1,  -13 },   // 0x7D '}'
+  {  1160,   8,   2,  11,    1,   -5 } }; // 0x7E '~'
+
+const GFXfont Shree7149pt7b PROGMEM = {
+  (uint8_t  *)Shree7149pt7bBitmaps,
+  (GFXglyph *)Shree7149pt7bGlyphs,
+  0x20, 0x7E, 26 };
+
+// Approx. 1834 bytes
+
+
+// Approx. 1730 bytes
+
+// Approx. 1385 bytes
+
+const uint8_t C649pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x0F, 0xF0, 0xF0, 0x7F, 0x83,
+  0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3C, 0x3C, 0x1E, 0x0F, 0x07, 0x83,
+  0xC1, 0xE0, 0xF0, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xC1, 0xE0, 0xF0,
+  0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E,
+  0x0F, 0x07, 0x83, 0xC1, 0xE0, 0x07, 0x80, 0x3C, 0x0F, 0xFE, 0x7F, 0xFF,
+  0x00, 0x78, 0x00, 0xFF, 0x87, 0xFC, 0x00, 0x78, 0x03, 0xC0, 0x19, 0xFF,
+  0xCF, 0xFE, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x1F, 0x01, 0xF0, 0xFF, 0x0F,
+  0x03, 0xC0, 0x3C, 0x07, 0x80, 0x78, 0x04, 0x03, 0xC0, 0x30, 0x0F, 0x0F,
+  0xF0, 0xFC, 0x0F, 0xC0, 0xF0, 0x3F, 0xE0, 0x7F, 0xC3, 0xC1, 0xE7, 0x83,
+  0xC3, 0xFE, 0x07, 0xFC, 0x0F, 0xE0, 0x1F, 0xC0, 0x30, 0x81, 0xE0, 0xFF,
+  0xC1, 0xFF, 0x83, 0xCF, 0x07, 0x87, 0xFF, 0xCF, 0xFF, 0x80, 0x07, 0x83,
+  0xCF, 0x07, 0x8F, 0x07, 0x80, 0x07, 0x83, 0xCF, 0x07, 0x8F, 0x07, 0x83,
+  0xC1, 0xE0, 0xF0, 0x78, 0x0F, 0x07, 0x83, 0xC0, 0x3C, 0x1E, 0xF0, 0x78,
+  0x0F, 0x07, 0x80, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xCF, 0x07, 0x83,
+  0xC7, 0x83, 0xC0, 0x3C, 0x1E, 0x0F, 0x07, 0x80, 0xFF, 0x80, 0x3F, 0xE0,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0x80, 0x3F, 0xE0, 0x3C, 0x1E, 0x0F,
+  0x07, 0x80, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x7F, 0xFF,
+  0xFF, 0xE0, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x3C, 0xF3, 0xCF, 0xF3,
+  0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0x00, 0x0F, 0x80, 0x07, 0xC0,
+  0x1E, 0x00, 0x0F, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x06, 0x00, 0x0F, 0x00,
+  0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x00, 0x3F,
+  0xE1, 0xFF, 0x3C, 0x1F, 0xE0, 0xFF, 0x3F, 0xF9, 0xFF, 0xF9, 0xFF, 0xCF,
+  0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0x9F, 0xF0, 0xFF, 0x80,
+  0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x03, 0xF8, 0x1F, 0xC0, 0x1E, 0x00,
+  0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x7F, 0xFF, 0xFF,
+  0xE0, 0x3F, 0xE1, 0xFF, 0x3C, 0x1F, 0xE0, 0xF0, 0x07, 0x80, 0x3C, 0x07,
+  0x80, 0x3C, 0x3C, 0x01, 0xE0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x7F, 0xFF,
+  0xFF, 0xE0, 0x3F, 0xE1, 0xFF, 0x3C, 0x1F, 0xE0, 0xF0, 0x07, 0x80, 0x3C,
+  0x3F, 0x81, 0xFC, 0x00, 0x60, 0x03, 0xC0, 0x1F, 0xE0, 0xFF, 0x07, 0x9F,
+  0xF0, 0xFF, 0x80, 0x00, 0x78, 0x00, 0x78, 0x03, 0xF8, 0x03, 0xF8, 0x0F,
+  0xF8, 0x0F, 0xF8, 0xF0, 0x78, 0xF0, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
+  0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0xFF, 0xFF, 0xFF,
+  0xFC, 0x01, 0xE0, 0x0F, 0xFE, 0x7F, 0xF0, 0x01, 0x80, 0x0F, 0x00, 0x78,
+  0x03, 0xC0, 0x1F, 0xE0, 0xFF, 0x07, 0x9F, 0xF0, 0xFF, 0x80, 0x3F, 0xE1,
+  0xFF, 0x3C, 0x1F, 0xE0, 0xFF, 0x00, 0x78, 0x03, 0xFF, 0x9F, 0xFC, 0xF0,
+  0x67, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0x9F, 0xF0, 0xFF, 0x80, 0xFF,
+  0xFF, 0xFF, 0xFC, 0x1F, 0xE0, 0xF0, 0x1E, 0x00, 0xF0, 0x1E, 0x00, 0xF0,
+  0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00,
+  0x3F, 0xE1, 0xFF, 0x3C, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3C, 0xFF, 0x87,
+  0xFC, 0x30, 0x67, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0x9F, 0xF0, 0xFF,
+  0x80, 0x3F, 0xE1, 0xFF, 0x3C, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3C, 0xFF,
+  0xE7, 0xFF, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xE0, 0xFF, 0x07, 0x9F, 0xF0,
+  0xFF, 0x80, 0xFF, 0x00, 0x00, 0xFF, 0x3C, 0xF0, 0x00, 0x00, 0x00, 0x0F,
+  0x3C, 0xF3, 0xFC, 0xF0, 0x03, 0xF8, 0x1F, 0xC1, 0xE0, 0x0F, 0x03, 0xC0,
+  0x1E, 0x03, 0xC0, 0x1E, 0x00, 0x30, 0x01, 0xE0, 0x01, 0xE0, 0x0F, 0x00,
+  0x78, 0x01, 0xFC, 0x0F, 0xE0, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x0F,
+  0xFF, 0xFF, 0xFC, 0xFE, 0x07, 0xF0, 0x01, 0xE0, 0x0F, 0x00, 0x1E, 0x00,
+  0xF0, 0x01, 0xE0, 0x0F, 0x00, 0x60, 0x0F, 0x01, 0xE0, 0x0F, 0x00, 0x78,
+  0x7F, 0x03, 0xF8, 0x00, 0x3F, 0xE1, 0xFF, 0x3C, 0x1F, 0xE0, 0xF0, 0x07,
+  0x80, 0x3C, 0x07, 0x80, 0x3C, 0x07, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x03, 0xC0, 0x1E, 0x00, 0x3F, 0xE1, 0xFF, 0x3C, 0x1F, 0xE0, 0xFF,
+  0x3F, 0xF9, 0xFF, 0xCF, 0xFE, 0x7F, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0,
+  0x3F, 0x01, 0x9F, 0xF0, 0xFF, 0x80, 0x07, 0x80, 0x3C, 0x0F, 0xF8, 0x7F,
+  0xCF, 0x07, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, 0xF0, 0x7F, 0x83, 0xFC, 0x1F,
+  0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xE0, 0xFF, 0xE7, 0xFF, 0x3C, 0x1F,
+  0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xFF, 0x9F, 0xFC, 0xF0, 0x67, 0x83, 0xFC,
+  0x1F, 0xE0, 0xFF, 0x07, 0xFF, 0xF3, 0xFF, 0x80, 0x3F, 0xE1, 0xFF, 0x3C,
+  0x1F, 0xE0, 0xFF, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80,
+  0x3C, 0x01, 0xE0, 0xFF, 0x07, 0x9F, 0xF0, 0xFF, 0x80, 0xFF, 0x87, 0xFC,
+  0x3C, 0x79, 0xE3, 0xCF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F,
+  0x83, 0xFC, 0x79, 0xE3, 0xCF, 0x1E, 0x7F, 0xC3, 0xFE, 0x00, 0xFF, 0xFF,
+  0xFF, 0xFC, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xFE, 0x1F, 0xF0, 0xF0,
+  0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x7F, 0xFF, 0xFF, 0xE0, 0xFF,
+  0xFF, 0xFF, 0xFC, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xFE, 0x1F, 0xF0,
+  0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x00,
+  0x3F, 0xE1, 0xFF, 0x3C, 0x1F, 0xE0, 0xFF, 0x00, 0x78, 0x03, 0xCF, 0xFE,
+  0x7F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0x9F, 0xF0, 0xFF,
+  0x80, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xFF,
+  0xFF, 0xFF, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F,
+  0xC1, 0xE0, 0xFF, 0xFF, 0xCF, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C,
+  0x1E, 0x0F, 0x07, 0x83, 0xC7, 0xFF, 0xFE, 0x0F, 0xF8, 0x7F, 0xC0, 0x78,
+  0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00,
+  0x79, 0xE3, 0xCF, 0x1E, 0x1F, 0xC0, 0xFE, 0x00, 0xF0, 0x7F, 0x83, 0xFC,
+  0x79, 0xE3, 0xCF, 0xF8, 0x7F, 0xC3, 0xF8, 0x1F, 0xC0, 0xFE, 0x07, 0xFC,
+  0x3C, 0x79, 0xE3, 0xCF, 0x1E, 0x78, 0x3F, 0xC1, 0xE0, 0xF0, 0x07, 0x80,
+  0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07,
+  0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x7F, 0xFF, 0xFF, 0xE0, 0xF0, 0x1F,
+  0xE0, 0x3F, 0xF9, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x67, 0xF8,
+  0xCF, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03,
+  0xFC, 0x07, 0x80, 0xF0, 0x7F, 0x83, 0xFF, 0x9F, 0xFC, 0xFF, 0xFF, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0x9F, 0xFC, 0x1F, 0xE0, 0xFF, 0x07,
+  0xF8, 0x3F, 0xC1, 0xE0, 0x3F, 0xE1, 0xFF, 0x3C, 0x1F, 0xE0, 0xFF, 0x07,
+  0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF,
+  0x07, 0x9F, 0xF0, 0xFF, 0x80, 0xFF, 0xE7, 0xFF, 0x3C, 0x1F, 0xE0, 0xFF,
+  0x07, 0xF8, 0x3F, 0xFF, 0x9F, 0xFC, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0,
+  0x0F, 0x00, 0x78, 0x03, 0xC0, 0x00, 0x3F, 0xE1, 0xFF, 0x3C, 0x1F, 0xE0,
+  0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1E,
+  0x7F, 0xC3, 0xFE, 0x01, 0xFC, 0x0F, 0xE0, 0xFF, 0xE7, 0xFF, 0x3C, 0x1F,
+  0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xFF, 0x9F, 0xFC, 0xFF, 0x87, 0xFC, 0x3C,
+  0x79, 0xE3, 0xCF, 0x1E, 0x78, 0x3F, 0xC1, 0xE0, 0x3F, 0xE1, 0xFF, 0x3C,
+  0x1F, 0xE0, 0xFF, 0x00, 0x78, 0x00, 0xFF, 0x87, 0xFC, 0x00, 0x60, 0x03,
+  0xC0, 0x1F, 0xE0, 0xFF, 0x07, 0x9F, 0xF0, 0xFF, 0x80, 0xFF, 0xFF, 0xFF,
+  0xC1, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80,
+  0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x7F,
+  0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0,
+  0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0x9F, 0xF0, 0xFF, 0x80, 0xF0,
+  0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F,
+  0xF0, 0x7F, 0x83, 0xFC, 0x1E, 0x7F, 0xC3, 0xFE, 0x03, 0xC0, 0x1E, 0x00,
+  0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC,
+  0x67, 0xF8, 0xCF, 0xF1, 0x9F, 0xFF, 0xFF, 0xF9, 0xFF, 0xF3, 0xFF, 0xE7,
+  0xFE, 0x03, 0xFC, 0x07, 0x80, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xF3,
+  0xFE, 0x1F, 0xF0, 0x1E, 0x00, 0xF0, 0x3F, 0xE1, 0xFF, 0x0C, 0x19, 0xE0,
+  0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xE0, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0,
+  0xFF, 0x07, 0xF8, 0x3C, 0xFF, 0x87, 0xFC, 0x07, 0x80, 0x3C, 0x01, 0xE0,
+  0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x1E,
+  0x00, 0xF0, 0x1E, 0x00, 0xF0, 0x1E, 0x00, 0xF0, 0x3C, 0x01, 0xE0, 0x3C,
+  0x01, 0xE0, 0x0F, 0x00, 0x7F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, 0x1E,
+  0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0xFF,
+  0xFE, 0xF0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00,
+  0x3C, 0x00, 0x06, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E,
+  0x00, 0x01, 0xF0, 0x00, 0xF8, 0xFF, 0xFF, 0xC1, 0xE0, 0xF0, 0x78, 0x3C,
+  0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7F, 0xFF, 0xFE, 0x01, 0x80,
+  0x03, 0x00, 0x1F, 0x80, 0x3F, 0x00, 0x46, 0x07, 0x8F, 0x0E, 0x06, 0x7C,
+  0x0F, 0xF8, 0x1F, 0x80, 0x0F, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0,
+  0xC3, 0x00, 0x0C, 0x30, 0x30, 0xC0, 0x3F, 0xE1, 0xFF, 0x00, 0x1E, 0x00,
+  0xF3, 0xFF, 0x9F, 0xFC, 0xC1, 0xFE, 0x0F, 0xF0, 0x79, 0xFF, 0xCF, 0xFE,
+  0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0xFE, 0x7F, 0xF3, 0xC1, 0x9E,
+  0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xFF, 0xCF, 0xFE, 0x00, 0x3F, 0xE7,
+  0xFF, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0x30, 0x07, 0xFC,
+  0xFF, 0x80, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF3, 0xFF, 0x9F, 0xFC,
+  0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1E, 0x7F, 0xF3, 0xFF, 0x80,
+  0x3F, 0xE1, 0xFF, 0x3C, 0x1F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x1E,
+  0x00, 0x30, 0x01, 0xFF, 0x0F, 0xF8, 0x0F, 0xE1, 0xFC, 0xF0, 0x1E, 0x0F,
+  0xFF, 0xFF, 0xCF, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0,
+  0x3F, 0xF9, 0xFF, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3C, 0xFF, 0xE7,
+  0xFF, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFF, 0xCF, 0xFE, 0x00, 0xF0, 0x07,
+  0x80, 0x3C, 0x01, 0xE0, 0x0F, 0xFE, 0x7F, 0xF3, 0xC1, 0x9E, 0x0F, 0xF0,
+  0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0x00,
+  0x0F, 0xC7, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x1F, 0xFF, 0xF8, 0x01,
+  0xE0, 0x3C, 0x00, 0x00, 0x00, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0,
+  0x3C, 0x07, 0x80, 0xF0, 0x1F, 0xFF, 0x3F, 0xE0, 0xF0, 0x07, 0x80, 0x3C,
+  0x01, 0xE0, 0x0F, 0x1E, 0x78, 0xF3, 0xFE, 0x1F, 0xF0, 0xF1, 0xE7, 0x8F,
+  0x3C, 0x79, 0xE0, 0xFF, 0x07, 0x80, 0xFC, 0x7E, 0x0F, 0x07, 0x83, 0xC1,
+  0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x1F, 0xFF, 0xF8, 0xF0, 0x79, 0xE0,
+  0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x67, 0xF8, 0xCF,
+  0xF1, 0x9F, 0xE0, 0x3F, 0xC0, 0x78, 0xFF, 0xE7, 0xFF, 0x3C, 0x1F, 0xE0,
+  0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1E,
+  0x3F, 0xE1, 0xFF, 0x3C, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE,
+  0x0F, 0x30, 0x61, 0xFF, 0x0F, 0xF8, 0xFF, 0xE7, 0xFF, 0x3C, 0x1F, 0xE0,
+  0xFF, 0x07, 0xF8, 0x3F, 0xFF, 0x9F, 0xFC, 0xF0, 0x07, 0x80, 0x3C, 0x01,
+  0xE0, 0x0F, 0x00, 0x00, 0x3F, 0xF9, 0xFF, 0xFC, 0x1F, 0xE0, 0xFF, 0x07,
+  0xF8, 0x3C, 0xFF, 0xE7, 0xFF, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0,
+  0x07, 0x80, 0xFF, 0xE7, 0xFF, 0x3C, 0x1F, 0xE0, 0xFF, 0x00, 0x78, 0x03,
+  0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0x3F, 0xF9, 0xFF, 0xFC,
+  0x01, 0xE0, 0x03, 0xFE, 0x1F, 0xF0, 0x01, 0x80, 0x0F, 0x00, 0x7F, 0xFF,
+  0x3F, 0xF8, 0x07, 0x80, 0x3C, 0x3F, 0xFF, 0xFF, 0xF0, 0x78, 0x03, 0xC0,
+  0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x07, 0xF0, 0x3F, 0x80,
+  0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE,
+  0x0F, 0xF0, 0x79, 0xFF, 0xCF, 0xFE, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0,
+  0xFF, 0x07, 0xF8, 0x3C, 0xC1, 0x87, 0xFC, 0x3F, 0xE0, 0x3C, 0x01, 0xE0,
+  0xF0, 0x1F, 0xE0, 0x3F, 0xC6, 0x7F, 0x8C, 0xFF, 0x19, 0xFF, 0xFF, 0xCF,
+  0xFE, 0x1F, 0xFC, 0x3C, 0x78, 0x78, 0xF0, 0xF1, 0xE0, 0xF0, 0x7F, 0x83,
+  0xCF, 0xF8, 0x7F, 0xC0, 0x78, 0x03, 0xC0, 0xFF, 0x87, 0xFC, 0x30, 0x67,
+  0x83, 0xFC, 0x1E, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8,
+  0x3C, 0xFF, 0xE7, 0xFF, 0x01, 0xE0, 0x0F, 0x00, 0x79, 0xFF, 0x0F, 0xF8,
+  0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x1E,
+  0x07, 0x80, 0x3C, 0x07, 0xFF, 0xFF, 0xFE, 0x07, 0x83, 0xCF, 0x07, 0x83,
+  0xC1, 0xE3, 0xC1, 0xE0, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC0, 0x3C, 0x1E,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x78, 0x0F,
+  0x07, 0x83, 0xC1, 0xE0, 0x1E, 0x0F, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC7,
+  0x83, 0xC0, 0x3F, 0x86, 0x7F, 0x0F, 0x0F, 0xE6, 0x1F, 0xC0 };
+
+const GFXglyph C649pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,  18,    0,    0 },   // 0x20 ' '
+  {     1,   4,  15,  18,    7,  -14 },   // 0x21 '!'
+  {     9,  13,   6,  18,    2,  -14 },   // 0x22 '"'
+  {    19,  18,  15,  18,    0,  -14 },   // 0x23 '#'
+  {    53,  13,  15,  18,    2,  -14 },   // 0x24 '$'
+  {    78,  12,  15,  18,    2,  -14 },   // 0x25 '%'
+  {   101,  15,  15,  18,    2,  -14 },   // 0x26 '&'
+  {   130,   9,   6,  18,    7,  -14 },   // 0x27 '''
+  {   137,   9,  15,  18,    4,  -14 },   // 0x28 '('
+  {   154,   9,  15,  18,    4,  -14 },   // 0x29 ')'
+  {   171,  18,  10,  18,    0,  -12 },   // 0x2A '*'
+  {   194,  13,  11,  18,    2,  -12 },   // 0x2B '+'
+  {   212,   6,   6,  18,    4,   -3 },   // 0x2C ','
+  {   217,  13,   2,  18,    2,   -8 },   // 0x2D '-'
+  {   221,   4,   4,  18,    7,   -3 },   // 0x2E '.'
+  {   223,  17,  13,  18,    2,  -12 },   // 0x2F '/'
+  {   251,  13,  15,  18,    2,  -14 },   // 0x30 '0'
+  {   276,  13,  15,  18,    2,  -14 },   // 0x31 '1'
+  {   301,  13,  15,  18,    2,  -14 },   // 0x32 '2'
+  {   326,  13,  15,  18,    2,  -14 },   // 0x33 '3'
+  {   351,  16,  15,  18,    2,  -14 },   // 0x34 '4'
+  {   381,  13,  15,  18,    2,  -14 },   // 0x35 '5'
+  {   406,  13,  15,  18,    2,  -14 },   // 0x36 '6'
+  {   431,  13,  15,  18,    2,  -14 },   // 0x37 '7'
+  {   456,  13,  15,  18,    2,  -14 },   // 0x38 '8'
+  {   481,  13,  15,  18,    2,  -14 },   // 0x39 '9'
+  {   506,   4,   8,  18,    7,  -10 },   // 0x3A ':'
+  {   510,   6,  13,  18,    4,  -10 },   // 0x3B ';'
+  {   520,  13,  15,  18,    2,  -14 },   // 0x3C '<'
+  {   545,  13,   6,  18,    2,  -10 },   // 0x3D '='
+  {   555,  13,  15,  18,    2,  -14 },   // 0x3E '>'
+  {   580,  13,  15,  18,    2,  -14 },   // 0x3F '?'
+  {   605,  13,  15,  18,    2,  -14 },   // 0x40 '@'
+  {   630,  13,  15,  18,    2,  -14 },   // 0x41 'A'
+  {   655,  13,  15,  18,    2,  -14 },   // 0x42 'B'
+  {   680,  13,  15,  18,    2,  -14 },   // 0x43 'C'
+  {   705,  13,  15,  18,    2,  -14 },   // 0x44 'D'
+  {   730,  13,  15,  18,    2,  -14 },   // 0x45 'E'
+  {   755,  13,  15,  18,    2,  -14 },   // 0x46 'F'
+  {   780,  13,  15,  18,    2,  -14 },   // 0x47 'G'
+  {   805,  13,  15,  18,    2,  -14 },   // 0x48 'H'
+  {   830,   9,  15,  18,    4,  -14 },   // 0x49 'I'
+  {   847,  13,  15,  18,    2,  -14 },   // 0x4A 'J'
+  {   872,  13,  15,  18,    2,  -14 },   // 0x4B 'K'
+  {   897,  13,  15,  18,    2,  -14 },   // 0x4C 'L'
+  {   922,  15,  15,  18,    2,  -14 },   // 0x4D 'M'
+  {   951,  13,  15,  18,    2,  -14 },   // 0x4E 'N'
+  {   976,  13,  15,  18,    2,  -14 },   // 0x4F 'O'
+  {  1001,  13,  15,  18,    2,  -14 },   // 0x50 'P'
+  {  1026,  13,  15,  18,    2,  -14 },   // 0x51 'Q'
+  {  1051,  13,  15,  18,    2,  -14 },   // 0x52 'R'
+  {  1076,  13,  15,  18,    2,  -14 },   // 0x53 'S'
+  {  1101,  13,  15,  18,    2,  -14 },   // 0x54 'T'
+  {  1126,  13,  15,  18,    2,  -14 },   // 0x55 'U'
+  {  1151,  13,  15,  18,    2,  -14 },   // 0x56 'V'
+  {  1176,  15,  15,  18,    2,  -14 },   // 0x57 'W'
+  {  1205,  13,  15,  18,    2,  -14 },   // 0x58 'X'
+  {  1230,  13,  15,  18,    2,  -14 },   // 0x59 'Y'
+  {  1255,  13,  15,  18,    2,  -14 },   // 0x5A 'Z'
+  {  1280,   9,  15,  18,    4,  -14 },   // 0x5B '['
+  {  1297,  17,  13,  18,    2,  -12 },   // 0x5C '\'
+  {  1325,   9,  15,  18,    4,  -14 },   // 0x5D ']'
+  {  1342,  15,  11,  18,    2,  -14 },   // 0x5E '^'
+  {  1363,  18,   2,  18,    0,    1 },   // 0x5F '_'
+  {  1368,   6,   7,  18,    4,  -15 },   // 0x60 '`'
+  {  1374,  13,  11,  18,    2,  -10 },   // 0x61 'a'
+  {  1392,  13,  13,  18,    2,  -12 },   // 0x62 'b'
+  {  1414,  11,  11,  18,    2,  -10 },   // 0x63 'c'
+  {  1430,  13,  13,  18,    2,  -12 },   // 0x64 'd'
+  {  1452,  13,  11,  18,    2,  -10 },   // 0x65 'e'
+  {  1470,  11,  13,  18,    4,  -12 },   // 0x66 'f'
+  {  1488,  13,  13,  18,    2,  -10 },   // 0x67 'g'
+  {  1510,  13,  13,  18,    2,  -12 },   // 0x68 'h'
+  {  1532,   9,  13,  18,    4,  -12 },   // 0x69 'i'
+  {  1547,  11,  15,  18,    4,  -12 },   // 0x6A 'j'
+  {  1568,  13,  13,  18,    2,  -12 },   // 0x6B 'k'
+  {  1590,   9,  13,  18,    4,  -12 },   // 0x6C 'l'
+  {  1605,  15,  11,  18,    2,  -10 },   // 0x6D 'm'
+  {  1626,  13,  11,  18,    2,  -10 },   // 0x6E 'n'
+  {  1644,  13,  11,  18,    2,  -10 },   // 0x6F 'o'
+  {  1662,  13,  13,  18,    2,  -10 },   // 0x70 'p'
+  {  1684,  13,  13,  18,    2,  -10 },   // 0x71 'q'
+  {  1706,  13,  11,  18,    2,  -10 },   // 0x72 'r'
+  {  1724,  13,  11,  18,    2,  -10 },   // 0x73 's'
+  {  1742,  13,  13,  18,    2,  -12 },   // 0x74 't'
+  {  1764,  13,  11,  18,    2,  -10 },   // 0x75 'u'
+  {  1782,  13,  11,  18,    2,  -10 },   // 0x76 'v'
+  {  1800,  15,  11,  18,    2,  -10 },   // 0x77 'w'
+  {  1821,  13,  11,  18,    2,  -10 },   // 0x78 'x'
+  {  1839,  13,  13,  18,    2,  -10 },   // 0x79 'y'
+  {  1861,  13,  11,  18,    2,  -10 },   // 0x7A 'z'
+  {  1879,   9,  15,  18,    4,  -14 },   // 0x7B '{'
+  {  1896,   4,  17,  18,    7,  -14 },   // 0x7C '|'
+  {  1905,   9,  15,  18,    4,  -14 },   // 0x7D '}'
+  {  1922,  15,   4,  18,    2,   -7 } }; // 0x7E '~'
+
+const GFXfont C649pt7b PROGMEM = {
+  (uint8_t  *)C649pt7bBitmaps,
+  (GFXglyph *)C649pt7bGlyphs,
+  0x20, 0x7E, 18 };
+
+// Approx. 2602 bytes
+const uint8_t C645pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xC3, 0xC7, 0x8F, 0x18, 0x63, 0x18, 0xCF, 0xFD, 0x8C, 0xFF,
+  0xD8, 0xC6, 0x31, 0x8C, 0x18, 0xFF, 0x03, 0xE0, 0x60, 0xBF, 0x0C, 0xC3,
+  0x31, 0x86, 0x21, 0x0C, 0xE3, 0x7C, 0xC6, 0x7C, 0x78, 0x48, 0xC7, 0xC6,
+  0x7F, 0x1B, 0x30, 0x1B, 0x31, 0x8C, 0x21, 0x83, 0xC3, 0x06, 0x31, 0x91,
+  0x98, 0x63, 0x0F, 0x8F, 0xFC, 0xF8, 0x63, 0x00, 0x18, 0x30, 0x67, 0xF1,
+  0x83, 0x00, 0x6F, 0x00, 0xFE, 0xF0, 0x01, 0xC1, 0x80, 0xE0, 0x20, 0x30,
+  0x18, 0x0C, 0x00, 0x7D, 0x8F, 0x7F, 0xBC, 0x78, 0xF1, 0xBE, 0x18, 0x31,
+  0xE0, 0xC1, 0x83, 0x06, 0x7F, 0x7D, 0x8C, 0x18, 0x66, 0x08, 0x30, 0x7F,
+  0x7D, 0x8C, 0x19, 0xE0, 0x40, 0xF1, 0xBE, 0x06, 0x1E, 0x3E, 0xC6, 0xFF,
+  0x06, 0x06, 0x06, 0xFF, 0x83, 0xF0, 0x20, 0x60, 0xF1, 0xBE, 0x7D, 0x8F,
+  0x07, 0xEC, 0x58, 0xF1, 0xBE, 0xFF, 0x8C, 0x30, 0xC1, 0x83, 0x06, 0x0C,
+  0x7D, 0x8F, 0x1B, 0xE4, 0x58, 0xF1, 0xBE, 0x7D, 0x8F, 0x1B, 0xF0, 0x60,
+  0xF1, 0xBE, 0xC3, 0x60, 0x06, 0xF0, 0x0F, 0x18, 0x60, 0xC0, 0x40, 0x20,
+  0x18, 0x0F, 0xFE, 0x03, 0xF8, 0xF0, 0x30, 0x30, 0x30, 0x41, 0x06, 0x78,
+  0x7D, 0x8C, 0x18, 0x61, 0x80, 0x00, 0x0C, 0x7D, 0x8F, 0x3E, 0x7C, 0x18,
+  0x30, 0xBE, 0x18, 0xFB, 0x1F, 0xFC, 0x78, 0xF1, 0xE3, 0xFD, 0x8F, 0x1F,
+  0xEC, 0x58, 0xF1, 0xFE, 0x7D, 0x8F, 0x06, 0x0C, 0x18, 0x31, 0xBE, 0xF9,
+  0x9B, 0x1E, 0x3C, 0x78, 0xB3, 0x7C, 0xFF, 0x83, 0x07, 0x8C, 0x18, 0x30,
+  0x7F, 0xFF, 0x83, 0x07, 0x8C, 0x18, 0x30, 0x60, 0x7D, 0x8F, 0x06, 0xFC,
+  0x78, 0xF1, 0xBE, 0xC7, 0x8F, 0x1F, 0xFC, 0x78, 0xF1, 0xE3, 0xFB, 0x18,
+  0xC6, 0x31, 0x9F, 0x3E, 0x18, 0x30, 0x60, 0xC1, 0xB3, 0x3C, 0xC7, 0x9B,
+  0xE7, 0x8F, 0x19, 0x33, 0x63, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x7F,
+  0xC3, 0xF7, 0xFF, 0xCB, 0xC3, 0xC3, 0xC3, 0xC3, 0xC7, 0xEF, 0xFF, 0xFD,
+  0xF8, 0xF1, 0xE3, 0x7D, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xBE, 0xFD, 0x8F,
+  0x1F, 0xEC, 0x18, 0x30, 0x60, 0x7C, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x7C,
+  0x0F, 0xFD, 0x8F, 0x1F, 0xEF, 0x99, 0x31, 0x63, 0x7D, 0x8F, 0x03, 0xE0,
+  0x40, 0xF1, 0xBE, 0xFE, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0xC7, 0x8F,
+  0x1E, 0x3C, 0x78, 0xF1, 0xBE, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xDF, 0x0C,
+  0xC3, 0xC3, 0xC3, 0xCB, 0xCB, 0xF7, 0xF7, 0xC3, 0xC7, 0x8D, 0xF0, 0xC1,
+  0x8C, 0xB1, 0xE3, 0xC7, 0x8F, 0x1B, 0xE1, 0x83, 0x06, 0x0C, 0xFE, 0x0C,
+  0x30, 0xC6, 0x08, 0x30, 0x7F, 0xFC, 0xCC, 0xCC, 0xCF, 0xC0, 0x18, 0x01,
+  0x80, 0x20, 0x06, 0x01, 0x80, 0x1C, 0xF3, 0x33, 0x33, 0x3F, 0x08, 0x3C,
+  0x24, 0x42, 0xC3, 0x81, 0xFF, 0xC0, 0x81, 0x10, 0x7C, 0x0D, 0xFA, 0x3C,
+  0x6F, 0xC0, 0xC1, 0x83, 0xF6, 0x2C, 0x78, 0xFF, 0x00, 0x7F, 0x0C, 0x30,
+  0x41, 0xF0, 0x06, 0x0D, 0xFA, 0x3C, 0x78, 0xDF, 0x80, 0x7D, 0x8F, 0xFE,
+  0x04, 0x0F, 0x80, 0x3D, 0x8F, 0xD8, 0x61, 0x86, 0x00, 0x7F, 0x8F, 0x1B,
+  0xF0, 0x60, 0xFF, 0x00, 0xC1, 0x83, 0xF6, 0x2C, 0x78, 0xF1, 0x80, 0x60,
+  0x38, 0xC6, 0x33, 0xE0, 0x0C, 0x00, 0xC3, 0x0C, 0x30, 0xFE, 0xC1, 0x83,
+  0x37, 0xCC, 0x99, 0xB1, 0x80, 0xE3, 0x18, 0xC6, 0x33, 0xE0, 0xC6, 0xFF,
+  0xFF, 0xCB, 0xC3, 0xC3, 0xFD, 0x8F, 0x1E, 0x3C, 0x78, 0xC0, 0x7D, 0x8F,
+  0x1E, 0x34, 0x4F, 0x80, 0xFD, 0x8F, 0x1F, 0xEC, 0x18, 0x30, 0x00, 0x7F,
+  0x8F, 0x1B, 0xF0, 0x60, 0xC1, 0x80, 0xFD, 0x8F, 0x06, 0x0C, 0x18, 0x00,
+  0x7F, 0x81, 0xF0, 0x20, 0x7F, 0x80, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x18,
+  0x0F, 0xC7, 0x8F, 0x1E, 0x3C, 0x6F, 0xC0, 0xC7, 0x8F, 0x1A, 0x23, 0x83,
+  0x00, 0xC3, 0xCB, 0xCB, 0x7E, 0x66, 0x66, 0xC6, 0xF8, 0x60, 0xC6, 0x58,
+  0xC0, 0xC7, 0x8F, 0x1B, 0xF0, 0xC1, 0xBE, 0x00, 0xFE, 0x18, 0x60, 0xC6,
+  0x1F, 0xC0, 0x1B, 0x19, 0x86, 0x31, 0x83, 0xFF, 0xFF, 0xC0, 0xC3, 0x18,
+  0x36, 0x31, 0x98, 0x79, 0x8F };
+
+const GFXglyph C645pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,  10,    0,    0 },   // 0x20 ' '
+  {     1,   2,   8,  10,    4,   -7 },   // 0x21 '!'
+  {     3,   7,   3,  10,    1,   -7 },   // 0x22 '"'
+  {     6,  10,   8,  10,    0,   -7 },   // 0x23 '#'
+  {    16,   7,   8,  10,    1,   -7 },   // 0x24 '$'
+  {    23,   6,   8,  10,    1,   -7 },   // 0x25 '%'
+  {    29,   8,   8,  10,    1,   -7 },   // 0x26 '&'
+  {    37,   5,   3,  10,    4,   -7 },   // 0x27 '''
+  {    39,   5,   8,  10,    2,   -7 },   // 0x28 '('
+  {    44,   5,   8,  10,    2,   -7 },   // 0x29 ')'
+  {    49,  10,   5,  10,    0,   -6 },   // 0x2A '*'
+  {    56,   7,   6,  10,    1,   -6 },   // 0x2B '+'
+  {    62,   3,   3,  10,    2,   -1 },   // 0x2C ','
+  {    64,   7,   1,  10,    1,   -4 },   // 0x2D '-'
+  {    65,   2,   2,  10,    4,   -1 },   // 0x2E '.'
+  {    66,  10,   7,  10,    1,   -6 },   // 0x2F '/'
+  {    75,   7,   8,  10,    1,   -7 },   // 0x30 '0'
+  {    82,   7,   8,  10,    1,   -7 },   // 0x31 '1'
+  {    89,   7,   8,  10,    1,   -7 },   // 0x32 '2'
+  {    96,   7,   8,  10,    1,   -7 },   // 0x33 '3'
+  {   103,   8,   8,  10,    1,   -7 },   // 0x34 '4'
+  {   111,   7,   8,  10,    1,   -7 },   // 0x35 '5'
+  {   118,   7,   8,  10,    1,   -7 },   // 0x36 '6'
+  {   125,   7,   8,  10,    1,   -7 },   // 0x37 '7'
+  {   132,   7,   8,  10,    1,   -7 },   // 0x38 '8'
+  {   139,   7,   8,  10,    1,   -7 },   // 0x39 '9'
+  {   146,   2,   4,  10,    4,   -5 },   // 0x3A ':'
+  {   147,   3,   7,  10,    2,   -5 },   // 0x3B ';'
+  {   150,   8,   8,  10,    1,   -7 },   // 0x3C '<'
+  {   158,   7,   3,  10,    1,   -5 },   // 0x3D '='
+  {   161,   7,   8,  10,    1,   -7 },   // 0x3E '>'
+  {   168,   7,   8,  10,    1,   -7 },   // 0x3F '?'
+  {   175,   7,   8,  10,    1,   -7 },   // 0x40 '@'
+  {   182,   7,   8,  10,    1,   -7 },   // 0x41 'A'
+  {   189,   7,   8,  10,    1,   -7 },   // 0x42 'B'
+  {   196,   7,   8,  10,    1,   -7 },   // 0x43 'C'
+  {   203,   7,   8,  10,    1,   -7 },   // 0x44 'D'
+  {   210,   7,   8,  10,    1,   -7 },   // 0x45 'E'
+  {   217,   7,   8,  10,    1,   -7 },   // 0x46 'F'
+  {   224,   7,   8,  10,    1,   -7 },   // 0x47 'G'
+  {   231,   7,   8,  10,    1,   -7 },   // 0x48 'H'
+  {   238,   5,   8,  10,    2,   -7 },   // 0x49 'I'
+  {   243,   7,   8,  10,    1,   -7 },   // 0x4A 'J'
+  {   250,   7,   8,  10,    1,   -7 },   // 0x4B 'K'
+  {   257,   7,   8,  10,    1,   -7 },   // 0x4C 'L'
+  {   264,   8,   8,  10,    1,   -7 },   // 0x4D 'M'
+  {   272,   7,   8,  10,    1,   -7 },   // 0x4E 'N'
+  {   279,   7,   8,  10,    1,   -7 },   // 0x4F 'O'
+  {   286,   7,   8,  10,    1,   -7 },   // 0x50 'P'
+  {   293,   8,   8,  10,    1,   -7 },   // 0x51 'Q'
+  {   301,   7,   8,  10,    1,   -7 },   // 0x52 'R'
+  {   308,   7,   8,  10,    1,   -7 },   // 0x53 'S'
+  {   315,   7,   8,  10,    1,   -7 },   // 0x54 'T'
+  {   322,   7,   8,  10,    1,   -7 },   // 0x55 'U'
+  {   329,   7,   8,  10,    1,   -7 },   // 0x56 'V'
+  {   336,   8,   8,  10,    1,   -7 },   // 0x57 'W'
+  {   344,   7,   8,  10,    1,   -7 },   // 0x58 'X'
+  {   351,   7,   8,  10,    1,   -7 },   // 0x59 'Y'
+  {   358,   7,   8,  10,    1,   -7 },   // 0x5A 'Z'
+  {   365,   4,   8,  10,    2,   -7 },   // 0x5B '['
+  {   369,  10,   7,  10,    1,   -6 },   // 0x5C '\'
+  {   378,   4,   8,  10,    3,   -7 },   // 0x5D ']'
+  {   382,   8,   6,  10,    1,   -7 },   // 0x5E '^'
+  {   388,  10,   1,  10,    0,    1 },   // 0x5F '_'
+  {   390,   3,   4,  10,    2,   -8 },   // 0x60 '`'
+  {   392,   7,   6,  10,    1,   -5 },   // 0x61 'a'
+  {   398,   7,   7,  10,    1,   -6 },   // 0x62 'b'
+  {   405,   6,   6,  10,    1,   -5 },   // 0x63 'c'
+  {   410,   7,   7,  10,    1,   -6 },   // 0x64 'd'
+  {   417,   7,   6,  10,    1,   -5 },   // 0x65 'e'
+  {   423,   6,   7,  10,    2,   -6 },   // 0x66 'f'
+  {   429,   7,   7,  10,    1,   -5 },   // 0x67 'g'
+  {   436,   7,   7,  10,    1,   -6 },   // 0x68 'h'
+  {   443,   5,   7,  10,    2,   -6 },   // 0x69 'i'
+  {   448,   6,   8,  10,    2,   -6 },   // 0x6A 'j'
+  {   454,   7,   7,  10,    1,   -6 },   // 0x6B 'k'
+  {   461,   5,   7,  10,    2,   -6 },   // 0x6C 'l'
+  {   466,   8,   6,  10,    1,   -5 },   // 0x6D 'm'
+  {   472,   7,   6,  10,    1,   -5 },   // 0x6E 'n'
+  {   478,   7,   6,  10,    1,   -5 },   // 0x6F 'o'
+  {   484,   7,   7,  10,    1,   -5 },   // 0x70 'p'
+  {   491,   7,   7,  10,    1,   -5 },   // 0x71 'q'
+  {   498,   7,   6,  10,    1,   -5 },   // 0x72 'r'
+  {   504,   7,   6,  10,    1,   -5 },   // 0x73 's'
+  {   510,   8,   7,  10,    1,   -6 },   // 0x74 't'
+  {   517,   7,   6,  10,    1,   -5 },   // 0x75 'u'
+  {   523,   7,   6,  10,    1,   -5 },   // 0x76 'v'
+  {   529,   8,   6,  10,    1,   -5 },   // 0x77 'w'
+  {   535,   7,   6,  10,    1,   -5 },   // 0x78 'x'
+  {   541,   7,   7,  10,    1,   -5 },   // 0x79 'y'
+  {   548,   7,   6,  10,    1,   -5 },   // 0x7A 'z'
+  {   554,   5,   8,  10,    2,   -7 },   // 0x7B '{'
+  {   559,   2,   9,  10,    4,   -7 },   // 0x7C '|'
+  {   562,   5,   8,  10,    2,   -7 },   // 0x7D '}'
+  {   567,   8,   2,  10,    1,   -4 } }; // 0x7E '~'
+
+const GFXfont C645pt7b PROGMEM = {
+  (uint8_t  *)C645pt7bBitmaps,
+  (GFXglyph *)C645pt7bGlyphs,
+  0x20, 0x7E, 10 };
+
+// Approx. 1241 bytes
+
+const uint8_t FUTRFW8pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xD0, 0x99, 0x99, 0x90, 0x16, 0x14, 0x14, 0x14, 0x7F, 0x28,
+  0x28, 0xFE, 0x28, 0x50, 0x50, 0x18, 0x3C, 0x5A, 0x58, 0x58, 0x78, 0x1C,
+  0x1F, 0x19, 0xD9, 0xDB, 0x7E, 0x18, 0x18, 0x70, 0x46, 0xC2, 0x22, 0x21,
+  0x12, 0x08, 0x90, 0x39, 0x00, 0x18, 0x00, 0x9E, 0x09, 0x08, 0x48, 0x44,
+  0x46, 0x61, 0xE0, 0x3C, 0x10, 0x84, 0x21, 0x08, 0x24, 0x0E, 0x06, 0x83,
+  0x32, 0x84, 0xA0, 0xC4, 0x78, 0xF2, 0xF8, 0x29, 0x69, 0x24, 0x92, 0x24,
+  0x88, 0x89, 0x32, 0x49, 0x24, 0xA4, 0xA0, 0x25, 0x5C, 0xEE, 0x90, 0x10,
+  0x20, 0x47, 0xF1, 0x02, 0x04, 0x08, 0x2D, 0x20, 0xF0, 0x80, 0x04, 0x08,
+  0x10, 0x40, 0x82, 0x04, 0x18, 0x20, 0x41, 0x02, 0x00, 0x38, 0x89, 0x14,
+  0x18, 0x30, 0x60, 0xC1, 0x83, 0x89, 0x11, 0xC0, 0x71, 0x11, 0x11, 0x11,
+  0x11, 0x11, 0x78, 0x8E, 0x0C, 0x10, 0x20, 0x81, 0x04, 0x18, 0x61, 0x87,
+  0xF0, 0x7C, 0x8A, 0x08, 0x10, 0x20, 0x86, 0x03, 0x03, 0x07, 0x1B, 0xE0,
+  0x04, 0x04, 0x0C, 0x1C, 0x14, 0x24, 0x24, 0x44, 0xC4, 0xFF, 0x04, 0x04,
+  0x3E, 0x40, 0x82, 0x04, 0x0F, 0x01, 0x81, 0x03, 0x07, 0x13, 0xC0, 0x0C,
+  0x10, 0x41, 0x82, 0x0F, 0x11, 0xC1, 0x83, 0x05, 0x13, 0xC0, 0xFE, 0x04,
+  0x10, 0x20, 0x81, 0x04, 0x08, 0x20, 0x41, 0x04, 0x00, 0x7D, 0x8E, 0x0C,
+  0x14, 0x47, 0x11, 0x41, 0x83, 0x05, 0x11, 0xC0, 0x38, 0x8A, 0x0C, 0x18,
+  0x28, 0x8F, 0x04, 0x18, 0x20, 0x80, 0xC0, 0x20, 0x20, 0x02, 0x56, 0xC0,
+  0x03, 0x1C, 0xE0, 0xE0, 0x1C, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x38,
+  0x07, 0x07, 0x38, 0xC0, 0x7B, 0x18, 0x43, 0x19, 0xCC, 0x22, 0x89, 0xC0,
+  0x08, 0x1F, 0x06, 0x11, 0x01, 0x67, 0x59, 0x1B, 0x43, 0x68, 0x4D, 0x09,
+  0xF3, 0x4B, 0xB0, 0xC0, 0x0F, 0xC0, 0x04, 0x00, 0x80, 0x28, 0x05, 0x01,
+  0x90, 0x22, 0x04, 0x21, 0xFC, 0x20, 0x88, 0x09, 0x01, 0x20, 0x10, 0xF9,
+  0x0A, 0x0C, 0x18, 0x30, 0xBF, 0x43, 0x83, 0x06, 0x1F, 0xE0, 0x1F, 0x18,
+  0x50, 0x08, 0x08, 0x04, 0x02, 0x01, 0x00, 0xC0, 0x20, 0x0C, 0x23, 0xF0,
+  0xFE, 0x20, 0xC8, 0x0A, 0x03, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, 0xE0,
+  0x28, 0x13, 0xF8, 0xFE, 0x08, 0x20, 0x83, 0xF8, 0x20, 0x82, 0x08, 0x3F,
+  0xFE, 0x08, 0x20, 0x83, 0xF8, 0x20, 0x82, 0x08, 0x20, 0x1F, 0x83, 0x0E,
+  0x40, 0x2C, 0x00, 0x80, 0x08, 0x00, 0x81, 0xF8, 0x01, 0xC0, 0x14, 0x02,
+  0x30, 0x40, 0xF8, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xFE, 0x03, 0x01,
+  0x80, 0xC0, 0x60, 0x30, 0x10, 0xFF, 0xF0, 0x08, 0x42, 0x10, 0x84, 0x21,
+  0x08, 0x42, 0xE0, 0x83, 0x43, 0x23, 0x11, 0x09, 0x07, 0x02, 0x41, 0x30,
+  0x8C, 0x42, 0x20, 0x90, 0x20, 0x84, 0x21, 0x08, 0x42, 0x10, 0x84, 0x21,
+  0xF0, 0x20, 0x20, 0xC0, 0xC3, 0x03, 0x0A, 0x14, 0x28, 0x50, 0xA1, 0x44,
+  0x49, 0x91, 0x26, 0x43, 0x09, 0x0C, 0x24, 0x20, 0xA0, 0x02, 0x00, 0x60,
+  0x1C, 0x06, 0x81, 0x90, 0x66, 0x18, 0xC6, 0x19, 0x83, 0x60, 0x78, 0x0E,
+  0x01, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0x80, 0x28, 0x00, 0xC0, 0x06, 0x00,
+  0x30, 0x01, 0x40, 0x13, 0x01, 0x8C, 0x18, 0x1F, 0x00, 0xF9, 0x0E, 0x0C,
+  0x18, 0x30, 0xBE, 0x40, 0x81, 0x02, 0x04, 0x00, 0x0F, 0x81, 0x83, 0x10,
+  0x04, 0x80, 0x28, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x41, 0x9B, 0x06,
+  0x8C, 0x08, 0x1F, 0xE0, 0x01, 0x00, 0xFD, 0x0A, 0x0C, 0x18, 0x30, 0xFF,
+  0x70, 0xB1, 0x32, 0x34, 0x30, 0x7D, 0x8E, 0x04, 0x04, 0x06, 0x03, 0x01,
+  0x03, 0x07, 0x13, 0xC0, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10,
+  0x20, 0x40, 0x80, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01,
+  0x80, 0xC0, 0xD0, 0x47, 0xC0, 0x80, 0xB0, 0x24, 0x19, 0x04, 0x61, 0x08,
+  0x82, 0x20, 0x48, 0x14, 0x07, 0x00, 0x80, 0x20, 0xC1, 0x02, 0x83, 0x05,
+  0x06, 0x1B, 0x0C, 0x22, 0x2C, 0x44, 0x49, 0x8C, 0x92, 0x0A, 0x34, 0x1C,
+  0x38, 0x38, 0x60, 0x20, 0xC0, 0x40, 0x80, 0x41, 0x31, 0x08, 0x82, 0x81,
+  0x40, 0x40, 0x20, 0x28, 0x22, 0x11, 0x10, 0x58, 0x30, 0x80, 0xA0, 0x98,
+  0xC4, 0x41, 0x40, 0xA0, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x7F,
+  0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x60, 0x20, 0x20, 0x10, 0x10, 0x1F,
+  0xF0, 0xF2, 0x49, 0x24, 0x92, 0x49, 0x38, 0x40, 0x40, 0x20, 0x10, 0x10,
+  0x08, 0x0C, 0x04, 0x02, 0x02, 0x01, 0xE4, 0x92, 0x49, 0x24, 0x92, 0x78,
+  0x32, 0x96, 0x7F, 0xFE, 0xC8, 0x80, 0x3D, 0x43, 0x81, 0x81, 0x81, 0x43,
+  0x3D, 0x81, 0x02, 0x04, 0x08, 0x17, 0xB1, 0x41, 0x83, 0x07, 0x15, 0xC0,
+  0x3D, 0x08, 0x20, 0x81, 0x03, 0xC0, 0x02, 0x04, 0x08, 0x10, 0x27, 0x51,
+  0xC1, 0x83, 0x05, 0x19, 0xD0, 0x3C, 0x8E, 0x0F, 0xF8, 0x08, 0xCF, 0x00,
+  0x3A, 0x10, 0x84, 0x7D, 0x08, 0x42, 0x10, 0x80, 0x3D, 0x43, 0x81, 0x81,
+  0x81, 0x43, 0x3D, 0x01, 0x83, 0x7C, 0x82, 0x08, 0x20, 0x83, 0xEC, 0xE1,
+  0x86, 0x18, 0x61, 0x8F, 0xF0, 0x8F, 0xFE, 0x81, 0x02, 0x04, 0x08, 0x11,
+  0xA6, 0x58, 0xE1, 0x22, 0x24, 0x20, 0xFF, 0xF0, 0xF7, 0x46, 0x62, 0x31,
+  0x18, 0x8C, 0x46, 0x22, 0xBB, 0x18, 0x61, 0x86, 0x18, 0x40, 0x3C, 0x42,
+  0x81, 0x81, 0x81, 0x42, 0x3C, 0xB9, 0x8A, 0x0C, 0x18, 0x38, 0xAF, 0x40,
+  0x81, 0x00, 0x3A, 0x8E, 0x0C, 0x18, 0x28, 0xCE, 0x81, 0x02, 0x04, 0xBC,
+  0x88, 0x88, 0x80, 0x7A, 0x18, 0x1E, 0x04, 0x1F, 0x80, 0x49, 0x2E, 0x92,
+  0x49, 0x00, 0x86, 0x18, 0x61, 0x87, 0x37, 0x80, 0xC2, 0x42, 0x64, 0x24,
+  0x38, 0x18, 0x10, 0x44, 0x34, 0x62, 0x66, 0x62, 0x94, 0x29, 0x41, 0x08,
+  0x10, 0x80, 0x42, 0x24, 0x18, 0x18, 0x3C, 0x24, 0x42, 0x42, 0x62, 0x24,
+  0x24, 0x18, 0x18, 0x10, 0x10, 0x20, 0x20, 0xFC, 0x21, 0x08, 0x61, 0x0F,
+  0xC0, 0x74, 0x44, 0x44, 0x48, 0x44, 0x44, 0x44, 0x70, 0xFF, 0xE0, 0xE2,
+  0x22, 0x22, 0x21, 0x22, 0x22, 0x22, 0xE0, 0x71, 0x59, 0x86 };
+
+const GFXglyph FUTRFW8pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,  16,    0,    0 },   // 0x20 ' '
+  {     1,   1,  12,  16,    7,  -11 },   // 0x21 '!'
+  {     3,   4,   5,  16,    5,  -11 },   // 0x22 '"'
+  {     6,   8,  11,  16,    4,  -10 },   // 0x23 '#'
+  {    17,   8,  14,  16,    4,  -11 },   // 0x24 '$'
+  {    31,  13,  12,  16,    1,  -11 },   // 0x25 '%'
+  {    51,  10,  12,  16,    3,  -11 },   // 0x26 '&'
+  {    66,   1,   5,  16,    7,  -11 },   // 0x27 '''
+  {    67,   3,  15,  16,    6,  -11 },   // 0x28 '('
+  {    73,   3,  15,  16,    6,  -11 },   // 0x29 ')'
+  {    79,   5,   6,  16,    5,  -11 },   // 0x2A '*'
+  {    83,   7,   8,  16,    4,   -7 },   // 0x2B '+'
+  {    90,   3,   5,  16,    6,   -1 },   // 0x2C ','
+  {    92,   4,   1,  16,    6,   -3 },   // 0x2D '-'
+  {    93,   1,   1,  16,    4,    0 },   // 0x2E '.'
+  {    94,   7,  12,  16,    3,  -11 },   // 0x2F '/'
+  {   105,   7,  12,  16,    3,  -11 },   // 0x30 '0'
+  {   116,   4,  12,  16,    5,  -11 },   // 0x31 '1'
+  {   122,   7,  12,  16,    4,  -11 },   // 0x32 '2'
+  {   133,   7,  12,  16,    4,  -11 },   // 0x33 '3'
+  {   144,   8,  12,  16,    3,  -11 },   // 0x34 '4'
+  {   156,   7,  12,  16,    4,  -11 },   // 0x35 '5'
+  {   167,   7,  12,  16,    4,  -11 },   // 0x36 '6'
+  {   178,   7,  12,  16,    4,  -11 },   // 0x37 '7'
+  {   189,   7,  12,  16,    4,  -11 },   // 0x38 '8'
+  {   200,   7,  11,  16,    4,  -11 },   // 0x39 '9'
+  {   210,   2,   6,  16,    5,   -5 },   // 0x3A ':'
+  {   212,   3,   9,  16,    4,   -5 },   // 0x3B ';'
+  {   216,   8,   6,  16,    3,   -6 },   // 0x3C '<'
+  {   222,   8,   4,  16,    4,   -5 },   // 0x3D '='
+  {   226,   8,   6,  16,    4,   -6 },   // 0x3E '>'
+  {   232,   6,  12,  16,    5,  -11 },   // 0x3F '?'
+  {   241,  11,  12,  16,    2,  -11 },   // 0x40 '@'
+  {   258,  11,  12,  16,    2,  -11 },   // 0x41 'A'
+  {   275,   7,  12,  16,    4,  -11 },   // 0x42 'B'
+  {   286,   9,  12,  16,    2,  -11 },   // 0x43 'C'
+  {   300,  10,  12,  16,    3,  -11 },   // 0x44 'D'
+  {   315,   6,  12,  16,    4,  -11 },   // 0x45 'E'
+  {   324,   6,  12,  16,    5,  -11 },   // 0x46 'F'
+  {   333,  12,  12,  16,    2,  -11 },   // 0x47 'G'
+  {   351,   9,  12,  16,    3,  -11 },   // 0x48 'H'
+  {   365,   1,  12,  16,    7,  -11 },   // 0x49 'I'
+  {   367,   5,  12,  16,    4,  -11 },   // 0x4A 'J'
+  {   375,   9,  12,  16,    4,  -11 },   // 0x4B 'K'
+  {   389,   5,  12,  16,    4,  -11 },   // 0x4C 'L'
+  {   397,  14,  12,  16,    1,  -11 },   // 0x4D 'M'
+  {   418,  10,  12,  16,    3,  -11 },   // 0x4E 'N'
+  {   433,  13,  12,  16,    1,  -11 },   // 0x4F 'O'
+  {   453,   7,  12,  16,    5,  -11 },   // 0x50 'P'
+  {   464,  13,  13,  16,    2,  -11 },   // 0x51 'Q'
+  {   486,   7,  12,  16,    4,  -11 },   // 0x52 'R'
+  {   497,   7,  12,  16,    4,  -11 },   // 0x53 'S'
+  {   508,   7,  12,  16,    3,  -11 },   // 0x54 'T'
+  {   519,   9,  12,  16,    3,  -11 },   // 0x55 'U'
+  {   533,  10,  12,  16,    2,  -11 },   // 0x56 'V'
+  {   548,  15,  12,  16,    0,  -11 },   // 0x57 'W'
+  {   571,   9,  12,  16,    3,  -11 },   // 0x58 'X'
+  {   585,   9,  12,  16,    3,  -11 },   // 0x59 'Y'
+  {   599,   9,  12,  16,    3,  -11 },   // 0x5A 'Z'
+  {   613,   3,  15,  16,    6,  -11 },   // 0x5B '['
+  {   619,   8,  11,  16,    4,  -10 },   // 0x5C '\'
+  {   630,   3,  15,  16,    6,  -11 },   // 0x5D ']'
+  {   636,   5,   3,  16,    5,  -10 },   // 0x5E '^'
+  {   638,  16,   1,  16,    0,    1 },   // 0x5F '_'
+  {   640,   3,   3,  16,    5,  -10 },   // 0x60 '`'
+  {   642,   8,   7,  16,    4,   -6 },   // 0x61 'a'
+  {   649,   7,  12,  16,    4,  -11 },   // 0x62 'b'
+  {   660,   6,   7,  16,    4,   -6 },   // 0x63 'c'
+  {   666,   7,  12,  16,    3,  -11 },   // 0x64 'd'
+  {   677,   7,   7,  16,    4,   -6 },   // 0x65 'e'
+  {   684,   5,  12,  16,    5,  -11 },   // 0x66 'f'
+  {   692,   8,  10,  16,    4,   -6 },   // 0x67 'g'
+  {   702,   6,  12,  16,    5,  -11 },   // 0x68 'h'
+  {   711,   1,  12,  16,    7,  -11 },   // 0x69 'i'
+  {   713,   1,  15,  16,    7,  -11 },   // 0x6A 'j'
+  {   715,   7,  12,  16,    5,  -11 },   // 0x6B 'k'
+  {   726,   1,  12,  16,    7,  -11 },   // 0x6C 'l'
+  {   728,   9,   7,  16,    3,   -6 },   // 0x6D 'm'
+  {   736,   6,   7,  16,    5,   -6 },   // 0x6E 'n'
+  {   742,   8,   7,  16,    4,   -6 },   // 0x6F 'o'
+  {   749,   7,  10,  16,    4,   -6 },   // 0x70 'p'
+  {   758,   7,  10,  16,    4,   -6 },   // 0x71 'q'
+  {   767,   4,   7,  16,    6,   -6 },   // 0x72 'r'
+  {   771,   6,   7,  16,    5,   -6 },   // 0x73 's'
+  {   777,   3,  11,  16,    6,  -10 },   // 0x74 't'
+  {   782,   6,   7,  16,    5,   -6 },   // 0x75 'u'
+  {   788,   8,   7,  16,    4,   -6 },   // 0x76 'v'
+  {   795,  12,   7,  16,    2,   -6 },   // 0x77 'w'
+  {   806,   8,   7,  16,    4,   -6 },   // 0x78 'x'
+  {   813,   8,  10,  16,    4,   -6 },   // 0x79 'y'
+  {   823,   6,   7,  16,    4,   -6 },   // 0x7A 'z'
+  {   829,   4,  15,  16,    5,  -11 },   // 0x7B '{'
+  {   837,   1,  11,  16,    7,  -10 },   // 0x7C '|'
+  {   839,   4,  15,  16,    6,  -11 },   // 0x7D '}'
+  {   847,   8,   3,  16,    4,   -4 } }; // 0x7E '~'
+
+const GFXfont FUTRFW8pt7b PROGMEM = {
+  (uint8_t  *)FUTRFW8pt7bBitmaps,
+  (GFXglyph *)FUTRFW8pt7bGlyphs,
+  0x20, 0x7E, 20 };
+const uint8_t nk57_monospace_cd_rg9pt7bBitmaps[] PROGMEM = {
+  0x00, 0xDB, 0x64, 0x92, 0x48, 0x0D, 0xF0, 0x8C, 0x63, 0x18, 0xC4, 0x00,
+  0x12, 0x09, 0x0C, 0x86, 0x43, 0x23, 0xFC, 0x88, 0x44, 0x26, 0x7F, 0xBF,
+  0xC4, 0x82, 0x43, 0x21, 0x90, 0x08, 0x08, 0x3E, 0x7F, 0x63, 0x43, 0x40,
+  0x60, 0x1C, 0x03, 0x01, 0xC1, 0x41, 0x63, 0x7E, 0x18, 0x08, 0x08, 0x20,
+  0x78, 0x26, 0x11, 0x08, 0x8C, 0xCF, 0xC8, 0x48, 0x18, 0x11, 0x13, 0xD1,
+  0x30, 0x88, 0x44, 0x26, 0x1E, 0x07, 0x00, 0x3C, 0x1F, 0x18, 0x8C, 0x46,
+  0x21, 0x30, 0xF0, 0x30, 0x79, 0xA4, 0xB1, 0xD8, 0xCC, 0x63, 0xF8, 0xE6,
+  0xFC, 0x0C, 0x63, 0x0C, 0x61, 0x84, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C,
+  0x10, 0x61, 0x83, 0x0C, 0x18, 0x30, 0xC1, 0x82, 0x0C, 0x10, 0x61, 0x82,
+  0x0C, 0x30, 0xC3, 0x0C, 0x30, 0x86, 0x18, 0x43, 0x08, 0x63, 0x00, 0x10,
+  0x22, 0x5B, 0xE3, 0x0F, 0xA5, 0x88, 0x10, 0x08, 0x08, 0x08, 0x08, 0xFF,
+  0xFF, 0x08, 0x08, 0x08, 0xDF, 0xA5, 0x00, 0xFF, 0xF0, 0xDF, 0x00, 0x01,
+  0x80, 0x80, 0x40, 0x60, 0x20, 0x30, 0x18, 0x08, 0x0C, 0x04, 0x02, 0x03,
+  0x01, 0x01, 0x80, 0xC0, 0x40, 0x60, 0x20, 0x10, 0x18, 0x00, 0x38, 0xFB,
+  0x16, 0x28, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1E, 0x3C, 0x4F, 0x8E, 0x00,
+  0x10, 0x20, 0x47, 0x8F, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x1F,
+  0xFF, 0x80, 0x79, 0xFA, 0x1C, 0x30, 0x60, 0xC1, 0x82, 0x0C, 0x10, 0x61,
+  0x86, 0x1F, 0xFF, 0x80, 0x79, 0xFA, 0x1C, 0x30, 0x60, 0xCF, 0x1E, 0x06,
+  0x0E, 0x0C, 0x3C, 0x7F, 0x9E, 0x00, 0x02, 0x06, 0x06, 0x0E, 0x1A, 0x12,
+  0x32, 0x22, 0x62, 0x42, 0xFF, 0xFF, 0x02, 0x02, 0x02, 0x7E, 0xFD, 0x06,
+  0x0C, 0x1F, 0xBF, 0x43, 0x06, 0x04, 0x0C, 0x38, 0x7F, 0x9E, 0x00, 0x3C,
+  0xFF, 0x1E, 0x38, 0x17, 0xBF, 0xC3, 0x83, 0x06, 0x0E, 0x3C, 0x6F, 0x9E,
+  0x00, 0xFF, 0xFC, 0x18, 0x20, 0xC1, 0x82, 0x0C, 0x18, 0x20, 0xC1, 0x83,
+  0x04, 0x18, 0x00, 0x3C, 0x7E, 0x63, 0x41, 0x41, 0x63, 0x3E, 0x3E, 0x63,
+  0x41, 0xC1, 0x41, 0x63, 0x7E, 0x3C, 0x3E, 0x7F, 0x63, 0x43, 0xC1, 0xC1,
+  0x41, 0x43, 0x63, 0x3F, 0x1A, 0x06, 0x04, 0x0C, 0x18, 0xDF, 0x00, 0x37,
+  0xC0, 0xDF, 0x00, 0x37, 0xE9, 0x40, 0x01, 0x03, 0x0E, 0x18, 0x70, 0xC0,
+  0xE0, 0x38, 0x1C, 0x07, 0x01, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF,
+  0xFF, 0x80, 0xE0, 0x30, 0x1C, 0x07, 0x01, 0x03, 0x0E, 0x38, 0x70, 0xC0,
+  0x80, 0x7D, 0xFE, 0x1C, 0x10, 0x20, 0xC1, 0x86, 0x18, 0x20, 0x40, 0x03,
+  0x07, 0x0C, 0x00, 0x3E, 0x7F, 0x41, 0x41, 0x4D, 0x4F, 0xD9, 0xD9, 0xD9,
+  0xC9, 0x4F, 0x45, 0x40, 0x41, 0x7F, 0x3E, 0x18, 0x1C, 0x1C, 0x14, 0x14,
+  0x34, 0x36, 0x26, 0x22, 0x22, 0x7E, 0x7F, 0x43, 0x43, 0xC1, 0xFD, 0xFE,
+  0x1C, 0x38, 0x70, 0xFF, 0x7E, 0x87, 0x06, 0x0C, 0x18, 0x7F, 0xFF, 0x00,
+  0x7D, 0xFF, 0x1E, 0x38, 0x10, 0x20, 0x40, 0x81, 0x02, 0x06, 0x3C, 0x7F,
+  0x9F, 0x00, 0xF9, 0xFA, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C,
+  0x38, 0x7F, 0xBE, 0x00, 0xFF, 0xFE, 0x04, 0x08, 0x10, 0x3F, 0xFF, 0x81,
+  0x02, 0x04, 0x08, 0x1F, 0xFF, 0x80, 0xFF, 0xFE, 0x04, 0x08, 0x10, 0x20,
+  0x7F, 0xFF, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x7D, 0xFF, 0x1E, 0x38,
+  0x10, 0x20, 0x47, 0x8F, 0x0E, 0x1E, 0x3C, 0x7F, 0xDC, 0x80, 0x87, 0x0E,
+  0x1C, 0x38, 0x70, 0xFF, 0xFF, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0x80,
+  0xFF, 0xFC, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x1F,
+  0xFF, 0x80, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0E, 0x1C,
+  0x38, 0x7F, 0x9E, 0x00, 0x83, 0x86, 0x84, 0x8C, 0x98, 0x98, 0xB8, 0xAC,
+  0xEC, 0xC4, 0xC4, 0x86, 0x86, 0x86, 0x83, 0xC1, 0x83, 0x06, 0x0C, 0x18,
+  0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x1F, 0xFF, 0x80, 0xC1, 0xC3, 0xE3,
+  0xE3, 0xF5, 0xD5, 0xDD, 0xD9, 0xC9, 0xC9, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1,
+  0xC3, 0x87, 0x0F, 0x1E, 0x34, 0x6C, 0xC9, 0x9B, 0x16, 0x2C, 0x78, 0x70,
+  0xE0, 0x80, 0x7D, 0xFF, 0x1C, 0x38, 0x70, 0x60, 0xC1, 0x83, 0x06, 0x1C,
+  0x3C, 0x7F, 0xDF, 0x00, 0xFD, 0xFE, 0x1C, 0x18, 0x30, 0x60, 0xC3, 0xFF,
+  0xFA, 0x04, 0x08, 0x10, 0x20, 0x00, 0x7D, 0xFF, 0x1C, 0x38, 0x30, 0x60,
+  0xC1, 0x83, 0x06, 0x0C, 0x3C, 0x7F, 0xDF, 0x04, 0x08, 0x1C, 0x18, 0xFC,
+  0xFE, 0x86, 0x82, 0x82, 0x82, 0x86, 0xFE, 0xFC, 0x98, 0x88, 0x8C, 0x84,
+  0x86, 0x83, 0x3E, 0x7F, 0x43, 0xC3, 0x40, 0x60, 0x7C, 0x1E, 0x03, 0x03,
+  0x01, 0xC3, 0x43, 0x7E, 0x3C, 0xFF, 0xFF, 0x08, 0x08, 0x08, 0x08, 0x08,
+  0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x87, 0x0E, 0x1C, 0x38,
+  0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x3C, 0x7F, 0xDF, 0x00, 0xC1, 0x43,
+  0x63, 0x63, 0x62, 0x62, 0x26, 0x26, 0x36, 0x34, 0x14, 0x1C, 0x1C, 0x18,
+  0x18, 0xC1, 0xE0, 0xF2, 0x79, 0x2D, 0x96, 0xC9, 0x74, 0xAA, 0x55, 0x2A,
+  0x99, 0xCC, 0xE6, 0x33, 0x19, 0x8C, 0x63, 0x31, 0x8C, 0x86, 0xC1, 0x40,
+  0xE0, 0x70, 0x38, 0x1C, 0x1A, 0x0D, 0x84, 0xC6, 0x32, 0x1B, 0x06, 0xC1,
+  0xB1, 0x98, 0xC6, 0xC3, 0x60, 0xE0, 0x70, 0x10, 0x08, 0x04, 0x02, 0x01,
+  0x00, 0x80, 0x40, 0x20, 0xFF, 0xFC, 0x10, 0x60, 0xC3, 0x06, 0x18, 0x30,
+  0x41, 0x83, 0x0C, 0x1F, 0xFF, 0x80, 0xFF, 0xE1, 0x08, 0x42, 0x10, 0x84,
+  0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0x0F, 0xFC, 0xC0, 0x60, 0x10, 0x0C,
+  0x06, 0x01, 0x00, 0xC0, 0x20, 0x10, 0x0C, 0x02, 0x01, 0x80, 0xC0, 0x20,
+  0x18, 0x04, 0x02, 0x01, 0x80, 0x40, 0x30, 0xFF, 0xF0, 0xC3, 0x0C, 0x30,
+  0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0xFF, 0xF0,
+  0x18, 0x0E, 0x05, 0x06, 0x82, 0x63, 0x11, 0x8D, 0x83, 0xFF, 0xFF, 0xC0,
+  0xE2, 0x10, 0x79, 0xFB, 0x18, 0x33, 0xFC, 0xE1, 0xC3, 0xFE, 0xEC, 0xC1,
+  0x83, 0x06, 0x0C, 0x1B, 0xBF, 0x63, 0xC7, 0x8F, 0x1E, 0x3C, 0x7F, 0xF7,
+  0x00, 0x7D, 0xFF, 0x1E, 0x38, 0x10, 0x30, 0x63, 0xFC, 0xF8, 0x06, 0x0C,
+  0x18, 0x30, 0x6E, 0xFF, 0xE3, 0x87, 0x0E, 0x1C, 0x3C, 0x7F, 0xDD, 0x80,
+  0x78, 0xFB, 0x1C, 0x3F, 0xFF, 0xE0, 0x63, 0xFC, 0xF8, 0x1E, 0x3F, 0x21,
+  0x20, 0x20, 0xFF, 0xFF, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x01, 0x81, 0xC0, 0x87, 0xC7, 0xF3, 0x19, 0x0C, 0xC6, 0x7F, 0x1F, 0x18,
+  0x0F, 0xC7, 0xF2, 0x0F, 0x07, 0xFE, 0x7F, 0x00, 0xC1, 0x83, 0x06, 0x0C,
+  0x1B, 0xBF, 0xE3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0x80, 0x31, 0xC3,
+  0x00, 0xE3, 0x82, 0x08, 0x20, 0x82, 0x08, 0xFF, 0xF0, 0x0C, 0x30, 0xC0,
+  0x3C, 0xF0, 0x41, 0x04, 0x10, 0x41, 0x04, 0x18, 0x61, 0xFD, 0xE0, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xC0, 0xC7, 0xCC, 0xD8, 0xD8, 0xEC, 0xEC, 0xC4, 0xC6,
+  0xC6, 0xC3, 0xF3, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x33,
+  0xFF, 0xC0, 0xF3, 0x7F, 0xB2, 0x79, 0x3C, 0x9E, 0x4F, 0x27, 0x93, 0xC9,
+  0xE4, 0xC0, 0xDD, 0xFF, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8C, 0x79,
+  0xFB, 0x1E, 0x38, 0x70, 0xF1, 0xE3, 0xFC, 0xF0, 0xFD, 0xFB, 0x1E, 0x3C,
+  0x78, 0xF1, 0xE3, 0xFD, 0xBB, 0x06, 0x0C, 0x18, 0x00, 0x77, 0xFF, 0x1C,
+  0x38, 0x70, 0xE1, 0xE3, 0xFE, 0xEC, 0x18, 0x30, 0x60, 0xC0, 0xDD, 0xFF,
+  0x8E, 0x1C, 0x18, 0x30, 0x60, 0xC1, 0x80, 0x79, 0xFA, 0x14, 0x07, 0x81,
+  0xC1, 0xC3, 0xFC, 0xF0, 0x20, 0x20, 0x20, 0xFF, 0xFF, 0x20, 0x20, 0x20,
+  0x20, 0x21, 0x21, 0x37, 0x1E, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3,
+  0xFE, 0xEC, 0xC1, 0x43, 0x63, 0x62, 0x26, 0x36, 0x34, 0x1C, 0x1C, 0x18,
+  0xC1, 0xE0, 0xF2, 0x49, 0x25, 0x92, 0xA9, 0x5C, 0xCE, 0x67, 0x31, 0x00,
+  0x63, 0x11, 0x0D, 0x83, 0x81, 0x80, 0xE0, 0xD0, 0x4C, 0x63, 0x60, 0xC0,
+  0xC1, 0x63, 0x62, 0x26, 0x36, 0x3C, 0x1C, 0x18, 0x18, 0x10, 0x30, 0x30,
+  0x20, 0x60, 0xFF, 0xFC, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xFF, 0xFC, 0x1E,
+  0x3C, 0xC0, 0x81, 0x02, 0x06, 0x0C, 0x18, 0x33, 0xE7, 0x81, 0x83, 0x06,
+  0x0C, 0x18, 0x20, 0x41, 0x81, 0xE3, 0xC0, 0xFF, 0xFF, 0xFC, 0xF8, 0xF8,
+  0x08, 0x08, 0x18, 0x18, 0x18, 0x10, 0x10, 0x10, 0x1F, 0x1F, 0x10, 0x10,
+  0x10, 0x18, 0x18, 0x18, 0x08, 0x08, 0xF8, 0xF8, 0x71, 0xDF, 0x87 };
+
+const GFXglyph nk57_monospace_cd_rg9pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   9,    0,    0 },   // 0x20 ' '
+  {     1,   3,  15,   9,    3,  -14 },   // 0x21 '!'
+  {     7,   5,   7,   9,    2,  -14 },   // 0x22 '"'
+  {    12,   9,  15,   9,    0,  -14 },   // 0x23 '#'
+  {    29,   8,  18,   9,    0,  -15 },   // 0x24 '$'
+  {    47,   9,  17,   9,    0,  -15 },   // 0x25 '%'
+  {    67,   9,  15,   9,    0,  -14 },   // 0x26 '&'
+  {    84,   1,   6,   9,    4,  -14 },   // 0x27 '''
+  {    85,   6,  22,   9,    2,  -17 },   // 0x28 '('
+  {   102,   6,  22,   9,    1,  -17 },   // 0x29 ')'
+  {   119,   7,   9,   9,    1,  -14 },   // 0x2A '*'
+  {   127,   8,   9,   9,    0,  -11 },   // 0x2B '+'
+  {   136,   3,   6,   9,    3,   -2 },   // 0x2C ','
+  {   139,   6,   2,   9,    1,   -6 },   // 0x2D '-'
+  {   141,   3,   3,   9,    3,   -2 },   // 0x2E '.'
+  {   143,   9,  20,   9,    0,  -16 },   // 0x2F '/'
+  {   166,   7,  15,   9,    1,  -14 },   // 0x30 '0'
+  {   180,   7,  15,   9,    1,  -14 },   // 0x31 '1'
+  {   194,   7,  15,   9,    1,  -14 },   // 0x32 '2'
+  {   208,   7,  15,   9,    1,  -14 },   // 0x33 '3'
+  {   222,   8,  15,   9,    0,  -14 },   // 0x34 '4'
+  {   237,   7,  15,   9,    1,  -14 },   // 0x35 '5'
+  {   251,   7,  15,   9,    1,  -14 },   // 0x36 '6'
+  {   265,   7,  15,   9,    1,  -14 },   // 0x37 '7'
+  {   279,   8,  15,   9,    0,  -14 },   // 0x38 '8'
+  {   294,   8,  15,   9,    0,  -14 },   // 0x39 '9'
+  {   309,   3,   9,   9,    3,   -8 },   // 0x3A ':'
+  {   313,   3,  12,   9,    3,   -9 },   // 0x3B ';'
+  {   318,   8,  12,   9,    0,  -12 },   // 0x3C '<'
+  {   330,   8,   7,   9,    0,  -10 },   // 0x3D '='
+  {   337,   8,  12,   9,    0,  -12 },   // 0x3E '>'
+  {   349,   7,  15,   9,    1,  -14 },   // 0x3F '?'
+  {   363,   8,  16,   9,    0,  -12 },   // 0x40 '@'
+  {   379,   8,  15,   9,    0,  -14 },   // 0x41 'A'
+  {   394,   7,  15,   9,    1,  -14 },   // 0x42 'B'
+  {   408,   7,  15,   9,    1,  -14 },   // 0x43 'C'
+  {   422,   7,  15,   9,    1,  -14 },   // 0x44 'D'
+  {   436,   7,  15,   9,    1,  -14 },   // 0x45 'E'
+  {   450,   7,  15,   9,    1,  -14 },   // 0x46 'F'
+  {   464,   7,  15,   9,    1,  -14 },   // 0x47 'G'
+  {   478,   7,  15,   9,    1,  -14 },   // 0x48 'H'
+  {   492,   7,  15,   9,    1,  -14 },   // 0x49 'I'
+  {   506,   7,  15,   9,    1,  -14 },   // 0x4A 'J'
+  {   520,   8,  15,   9,    1,  -14 },   // 0x4B 'K'
+  {   535,   7,  15,   9,    1,  -14 },   // 0x4C 'L'
+  {   549,   8,  15,   9,    0,  -14 },   // 0x4D 'M'
+  {   564,   7,  15,   9,    1,  -14 },   // 0x4E 'N'
+  {   578,   7,  15,   9,    1,  -14 },   // 0x4F 'O'
+  {   592,   7,  15,   9,    1,  -14 },   // 0x50 'P'
+  {   606,   7,  19,   9,    1,  -14 },   // 0x51 'Q'
+  {   623,   8,  15,   9,    1,  -14 },   // 0x52 'R'
+  {   638,   8,  15,   9,    0,  -14 },   // 0x53 'S'
+  {   653,   8,  15,   9,    0,  -14 },   // 0x54 'T'
+  {   668,   7,  15,   9,    1,  -14 },   // 0x55 'U'
+  {   682,   8,  15,   9,    0,  -14 },   // 0x56 'V'
+  {   697,   9,  15,   9,    0,  -14 },   // 0x57 'W'
+  {   714,   9,  15,   9,    0,  -14 },   // 0x58 'X'
+  {   731,   9,  15,   9,    0,  -14 },   // 0x59 'Y'
+  {   748,   7,  15,   9,    1,  -14 },   // 0x5A 'Z'
+  {   762,   5,  22,   9,    3,  -17 },   // 0x5B '['
+  {   776,   9,  20,   9,    0,  -16 },   // 0x5C '\'
+  {   799,   6,  22,   9,    0,  -17 },   // 0x5D ']'
+  {   816,   9,   8,   9,    0,  -14 },   // 0x5E '^'
+  {   825,   9,   2,   9,    0,    2 },   // 0x5F '_'
+  {   828,   4,   3,   9,    2,  -13 },   // 0x60 '`'
+  {   830,   7,  10,   9,    1,   -9 },   // 0x61 'a'
+  {   839,   7,  15,   9,    1,  -14 },   // 0x62 'b'
+  {   853,   7,  10,   9,    1,   -9 },   // 0x63 'c'
+  {   862,   7,  15,   9,    1,  -14 },   // 0x64 'd'
+  {   876,   7,  10,   9,    1,   -9 },   // 0x65 'e'
+  {   885,   8,  15,   9,    0,  -14 },   // 0x66 'f'
+  {   900,   9,  17,   9,    0,  -12 },   // 0x67 'g'
+  {   920,   7,  15,   9,    1,  -14 },   // 0x68 'h'
+  {   934,   6,  14,   9,    2,  -13 },   // 0x69 'i'
+  {   945,   6,  18,   9,    1,  -13 },   // 0x6A 'j'
+  {   959,   8,  15,   9,    1,  -14 },   // 0x6B 'k'
+  {   974,   6,  15,   9,    2,  -14 },   // 0x6C 'l'
+  {   986,   9,  10,   9,    0,   -9 },   // 0x6D 'm'
+  {   998,   7,  10,   9,    1,   -9 },   // 0x6E 'n'
+  {  1007,   7,  10,   9,    1,   -9 },   // 0x6F 'o'
+  {  1016,   7,  14,   9,    1,   -9 },   // 0x70 'p'
+  {  1029,   7,  14,   9,    1,   -9 },   // 0x71 'q'
+  {  1042,   7,  10,   9,    1,   -9 },   // 0x72 'r'
+  {  1051,   7,  10,   9,    1,   -9 },   // 0x73 's'
+  {  1060,   8,  13,   9,    0,  -12 },   // 0x74 't'
+  {  1073,   7,  10,   9,    1,   -9 },   // 0x75 'u'
+  {  1082,   8,  10,   9,    0,   -9 },   // 0x76 'v'
+  {  1092,   9,  10,   9,    0,   -9 },   // 0x77 'w'
+  {  1104,   9,  10,   9,    0,   -9 },   // 0x78 'x'
+  {  1116,   8,  14,   9,    0,   -9 },   // 0x79 'y'
+  {  1130,   7,  10,   9,    1,   -9 },   // 0x7A 'z'
+  {  1139,   7,  22,   9,    1,  -17 },   // 0x7B '{'
+  {  1159,   1,  22,   9,    4,  -17 },   // 0x7C '|'
+  {  1162,   8,  22,   9,    0,  -17 },   // 0x7D '}'
+  {  1184,   8,   3,   9,    0,   -8 } }; // 0x7E '~'
+
+const GFXfont nk57_monospace_cd_rg9pt7b PROGMEM = {
+  (uint8_t  *)nk57_monospace_cd_rg9pt7bBitmaps,
+  (GFXglyph *)nk57_monospace_cd_rg9pt7bGlyphs,
+  0x20, 0x7E, 21 };
+
+// Approx. 1859 bytes
+
+const uint8_t nk57_monospace_no_rg9pt7bBitmaps[] PROGMEM = {
+  0x00, 0xDB, 0x6D, 0xB6, 0xD8, 0x0D, 0xF0, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
+  0xC3, 0x00, 0x08, 0x40, 0x84, 0x08, 0xC1, 0x8C, 0x18, 0xC7, 0xFF, 0x18,
+  0x81, 0x08, 0x10, 0x8F, 0xFE, 0xFF, 0xE3, 0x18, 0x31, 0x83, 0x18, 0x21,
+  0x00, 0x0C, 0x01, 0x80, 0xFE, 0x7F, 0xEC, 0x0D, 0x81, 0xB0, 0x07, 0x00,
+  0x3F, 0x00, 0x78, 0x03, 0x00, 0x3C, 0x05, 0x81, 0xBF, 0xF1, 0xF8, 0x0C,
+  0x01, 0x80, 0x18, 0x07, 0xE0, 0x62, 0x04, 0x20, 0x42, 0x16, 0x23, 0x7E,
+  0xC1, 0xB0, 0x06, 0x01, 0x98, 0x67, 0xE8, 0x62, 0x04, 0x20, 0x42, 0x04,
+  0x20, 0x7E, 0x03, 0xC0, 0x1F, 0x03, 0xFC, 0x30, 0xC2, 0x0C, 0x20, 0xC3,
+  0x18, 0x1F, 0x00, 0xE0, 0x36, 0x36, 0x22, 0xC1, 0x6C, 0x1C, 0xE0, 0xC7,
+  0xFE, 0x3E, 0x30, 0xFF, 0xF0, 0x07, 0x0C, 0x18, 0x30, 0x30, 0x60, 0x60,
+  0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x30, 0x30,
+  0x18, 0x0C, 0x07, 0xE0, 0x30, 0x18, 0x0C, 0x0E, 0x06, 0x07, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x06, 0x0E, 0x0C, 0x18, 0x30,
+  0xE0, 0x0C, 0x03, 0x04, 0xCB, 0xFF, 0x1E, 0x07, 0x8F, 0x7D, 0x32, 0x0C,
+  0x03, 0x00, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x0F, 0xFF, 0xFF, 0xC3, 0x00,
+  0x60, 0x0C, 0x00, 0xDF, 0xAD, 0x00, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x30,
+  0x03, 0x00, 0x60, 0x06, 0x00, 0xC0, 0x0C, 0x01, 0x80, 0x10, 0x03, 0x00,
+  0x20, 0x06, 0x00, 0x40, 0x0C, 0x01, 0x80, 0x18, 0x03, 0x00, 0x30, 0x06,
+  0x00, 0x60, 0x0C, 0x00, 0x1E, 0x0F, 0xC6, 0x1B, 0x06, 0xC0, 0xF0, 0x3C,
+  0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0D, 0x06, 0x61, 0x8F, 0xC1, 0xE0, 0x04,
+  0x03, 0x00, 0xC1, 0xF0, 0x7C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00,
+  0xC0, 0x30, 0x0C, 0x3F, 0xFF, 0xFC, 0x3F, 0x3F, 0xEC, 0x0F, 0x03, 0x00,
+  0xC0, 0x30, 0x0C, 0x06, 0x03, 0x81, 0xC0, 0xE0, 0x60, 0x30, 0x3F, 0xFF,
+  0xFC, 0x3F, 0x3F, 0xEC, 0x0F, 0x03, 0x00, 0xC0, 0x31, 0xF8, 0x7E, 0x00,
+  0xC0, 0x3C, 0x0F, 0x03, 0xC0, 0xDF, 0xE3, 0xF0, 0x01, 0x80, 0x70, 0x0E,
+  0x03, 0xC0, 0xD8, 0x33, 0x0C, 0x61, 0x0C, 0x61, 0x98, 0x33, 0xFF, 0xFF,
+  0xF0, 0x18, 0x03, 0x00, 0x60, 0x7F, 0xDF, 0xF6, 0x01, 0x80, 0x60, 0x17,
+  0xC7, 0xFB, 0x03, 0x00, 0xC0, 0x30, 0x0F, 0x03, 0xC0, 0xDF, 0xE3, 0xF0,
+  0x1F, 0x8F, 0xF6, 0x0D, 0x03, 0xC0, 0x37, 0xCF, 0xFF, 0x03, 0xC0, 0xF0,
+  0x1C, 0x07, 0x03, 0x60, 0xDF, 0xE3, 0xF0, 0xFF, 0xFF, 0xF0, 0x0C, 0x06,
+  0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06,
+  0x03, 0x00, 0x3F, 0x1F, 0xEC, 0x0F, 0x03, 0xC0, 0xF0, 0x37, 0xF9, 0xFE,
+  0xE1, 0xF0, 0x3C, 0x07, 0x03, 0xC0, 0xDF, 0xE3, 0xF0, 0x3F, 0x1F, 0xEC,
+  0x0F, 0x03, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0xE1, 0xDF, 0xF1, 0x98, 0x0C,
+  0x03, 0x01, 0x81, 0xC0, 0xDF, 0x00, 0x37, 0xC0, 0xDF, 0x00, 0x37, 0xEB,
+  0x40, 0x00, 0x60, 0x3C, 0x1E, 0x0E, 0x0F, 0x01, 0x80, 0x38, 0x01, 0xC0,
+  0x0F, 0x00, 0x78, 0x03, 0x80, 0x10, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00,
+  0x01, 0xFF, 0xFF, 0xF8, 0x80, 0x1C, 0x01, 0xE0, 0x07, 0x00, 0x3C, 0x01,
+  0xC0, 0x78, 0x38, 0x3C, 0x1E, 0x03, 0x00, 0x40, 0x00, 0x3F, 0x3F, 0xFC,
+  0x0F, 0x03, 0x00, 0xC0, 0x30, 0x1C, 0x0C, 0x06, 0x03, 0x00, 0xC0, 0x00,
+  0x0C, 0x03, 0x80, 0xC0, 0x3F, 0x0F, 0xFB, 0x03, 0x60, 0x28, 0x75, 0x1F,
+  0xA2, 0x14, 0x42, 0x88, 0x51, 0x8A, 0x3F, 0x43, 0x2C, 0x01, 0x80, 0x5F,
+  0xF9, 0xFC, 0x06, 0x00, 0x70, 0x0F, 0x00, 0xF0, 0x0D, 0x81, 0x98, 0x19,
+  0x81, 0x88, 0x30, 0xC3, 0x0C, 0x3F, 0xC3, 0xFE, 0x60, 0x66, 0x06, 0xC0,
+  0x30, 0xFF, 0x1F, 0xFB, 0x03, 0x60, 0x6C, 0x0D, 0x81, 0xBF, 0xE7, 0xFC,
+  0xC0, 0xD8, 0x1B, 0x01, 0xE0, 0x3C, 0x0D, 0xFF, 0xBF, 0xE0, 0x3F, 0x9F,
+  0xFE, 0x0F, 0x03, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03,
+  0x03, 0xE0, 0xDF, 0xE3, 0xF0, 0xFF, 0x3F, 0xEC, 0x1F, 0x03, 0xC0, 0xF0,
+  0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC1, 0xFF, 0xEF, 0xF0,
+  0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xC0, 0x30, 0x0F, 0xFF, 0xFF, 0xC0, 0x30,
+  0x0C, 0x03, 0x00, 0xC0, 0x3F, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0x03, 0x00,
+  0xC0, 0x30, 0x0C, 0x03, 0xFF, 0xFF, 0xF0, 0x0C, 0x03, 0x00, 0xC0, 0x30,
+  0x0C, 0x00, 0x3F, 0x9F, 0xFE, 0x0F, 0x03, 0xC0, 0x30, 0x0C, 0x03, 0x1F,
+  0xC7, 0xF0, 0x3C, 0x0F, 0x03, 0xE1, 0xDF, 0xD3, 0xE4, 0xC0, 0xF0, 0x3C,
+  0x0F, 0x03, 0xC0, 0xF0, 0x3F, 0xFF, 0xFF, 0xC0, 0xF0, 0x3C, 0x0F, 0x03,
+  0xC0, 0xF0, 0x3C, 0x0C, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00,
+  0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x3F, 0xFF, 0xFC, 0x00,
+  0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x3C,
+  0x0F, 0x03, 0xC1, 0xDF, 0xE3, 0xF0, 0xC0, 0xF8, 0x1B, 0x06, 0x61, 0x8C,
+  0x61, 0x9C, 0x33, 0xC6, 0xD8, 0xF3, 0x9C, 0x33, 0x06, 0x60, 0x6C, 0x0D,
+  0x81, 0xB0, 0x18, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03,
+  0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x3F, 0xFF, 0xFC, 0xC0, 0x78,
+  0x1F, 0x83, 0xD0, 0xFB, 0x37, 0x26, 0xE7, 0x9C, 0x73, 0x8C, 0x70, 0x8E,
+  0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x18, 0xC0, 0xF8, 0x3E, 0x0F, 0xC3,
+  0xF8, 0xF6, 0x3C, 0xCF, 0x33, 0xC6, 0xF1, 0xBC, 0x3F, 0x07, 0xC1, 0xF0,
+  0x3C, 0x0C, 0x3F, 0x9F, 0xFC, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03,
+  0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xDF, 0xF3, 0xF8, 0xFF, 0x9F, 0xFB,
+  0x03, 0x60, 0x6C, 0x07, 0x80, 0xF0, 0x36, 0x06, 0xFF, 0xDF, 0xF3, 0x00,
+  0x60, 0x0C, 0x01, 0x80, 0x30, 0x00, 0x3F, 0x0F, 0xF3, 0x03, 0x60, 0x6C,
+  0x0D, 0x81, 0xB0, 0x36, 0x06, 0xC0, 0xD8, 0x1B, 0x03, 0x60, 0x6C, 0x0C,
+  0xFF, 0x8F, 0xC0, 0x10, 0x02, 0x00, 0x7C, 0x07, 0x80, 0xFF, 0x9F, 0xFB,
+  0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x37, 0xFE, 0xFF, 0x98, 0xC3, 0x0C,
+  0x61, 0xCC, 0x19, 0x81, 0xB0, 0x38, 0x3F, 0x9F, 0xFC, 0x0F, 0x03, 0xC0,
+  0x38, 0x07, 0xE0, 0x7E, 0x01, 0xC0, 0x30, 0x0F, 0x03, 0xC0, 0xFF, 0xE3,
+  0xF0, 0xFF, 0xFF, 0xFC, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60,
+  0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0xC0, 0xF0,
+  0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F,
+  0x03, 0xC0, 0xDF, 0xF3, 0xF8, 0xE0, 0x36, 0x06, 0x60, 0x63, 0x06, 0x30,
+  0xC3, 0x0C, 0x30, 0xC1, 0x88, 0x19, 0x81, 0x98, 0x0D, 0x00, 0xF0, 0x0F,
+  0x00, 0x70, 0x06, 0x00, 0xC0, 0x3C, 0x03, 0xC6, 0x3C, 0x63, 0x46, 0x34,
+  0x73, 0x6F, 0x26, 0x92, 0x69, 0x66, 0x9E, 0x79, 0xE7, 0x0E, 0x30, 0xE3,
+  0x0E, 0x30, 0xC0, 0x70, 0x73, 0x06, 0x38, 0xC1, 0x9C, 0x0D, 0x80, 0xF0,
+  0x07, 0x00, 0x70, 0x0F, 0x01, 0xD8, 0x19, 0x83, 0x0C, 0x30, 0xE6, 0x06,
+  0xE0, 0x70, 0xE0, 0x36, 0x06, 0x30, 0xC1, 0x8C, 0x19, 0x80, 0xF0, 0x07,
+  0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06,
+  0x00, 0xFF, 0xFF, 0xF0, 0x18, 0x0E, 0x03, 0x01, 0x80, 0x60, 0x30, 0x1C,
+  0x06, 0x03, 0x01, 0xC0, 0x60, 0x3F, 0xFF, 0xFC, 0xFF, 0xFF, 0xC0, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0x04, 0x00, 0x60, 0x02, 0x00,
+  0x30, 0x01, 0x00, 0x18, 0x00, 0xC0, 0x0C, 0x00, 0x60, 0x06, 0x00, 0x30,
+  0x03, 0x00, 0x18, 0x01, 0x80, 0x0C, 0x00, 0x40, 0x06, 0x00, 0x20, 0x03,
+  0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x06, 0x00,
+  0xF0, 0x0D, 0x01, 0x98, 0x18, 0xC3, 0x0C, 0x60, 0x6E, 0x07, 0xFF, 0xFF,
+  0xFF, 0xE0, 0xC0, 0xC0, 0x3F, 0x0F, 0xF1, 0x02, 0x00, 0x61, 0xFC, 0xF1,
+  0xB0, 0x36, 0x0E, 0xFF, 0xEF, 0x9C, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0,
+  0x33, 0xCF, 0xFB, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xE0, 0xFF, 0xEC,
+  0xF0, 0x3F, 0x1F, 0xF6, 0x0F, 0x03, 0xC0, 0x30, 0x0C, 0x01, 0x83, 0x7F,
+  0x8F, 0xC0, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xCF, 0x37, 0xFF, 0x87,
+  0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xE1, 0xDF, 0xF3, 0xEC, 0x3F, 0x1F, 0xE6,
+  0x0F, 0x03, 0xFF, 0xFF, 0xFC, 0x01, 0x83, 0x7F, 0x8F, 0xC0, 0x0F, 0xC3,
+  0xFC, 0xC1, 0x98, 0x03, 0x01, 0xFF, 0xFF, 0xF9, 0x80, 0x30, 0x06, 0x00,
+  0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x70, 0x0F, 0x00, 0x81,
+  0xF8, 0x3F, 0xC6, 0x06, 0x60, 0x66, 0x06, 0x3F, 0xE1, 0xF8, 0x30, 0x07,
+  0xFC, 0x7F, 0xF4, 0x03, 0xC0, 0x3F, 0xFF, 0x7F, 0xE0, 0xC0, 0x30, 0x0C,
+  0x03, 0x00, 0xC0, 0x33, 0xEF, 0xFB, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x03,
+  0xC0, 0xF0, 0x3C, 0x0C, 0x1C, 0x0E, 0x07, 0x00, 0x0F, 0x87, 0xC0, 0x60,
+  0x30, 0x18, 0x0C, 0x06, 0x03, 0x0F, 0xFF, 0xFC, 0x01, 0x81, 0xC0, 0x60,
+  0x01, 0xF8, 0xFC, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F,
+  0x07, 0x83, 0x7F, 0x9F, 0x80, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01,
+  0x81, 0xF0, 0x66, 0x38, 0xCF, 0x1B, 0x63, 0xC6, 0x60, 0xCC, 0x0D, 0x81,
+  0xB0, 0x18, 0xFC, 0x7E, 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C,
+  0x06, 0x03, 0x01, 0x80, 0xC7, 0xFF, 0xFE, 0xDC, 0xEF, 0xFF, 0xC6, 0x3C,
+  0x63, 0xC6, 0x3C, 0x63, 0xC6, 0x3C, 0x63, 0xC6, 0x3C, 0x63, 0xCF, 0xBF,
+  0xEE, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x30, 0x3F,
+  0x1F, 0xE6, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0D, 0x83, 0x7F, 0x8F, 0xC0,
+  0xCF, 0x3F, 0xEE, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x83, 0xDF, 0xB3,
+  0xEC, 0x03, 0x00, 0xC0, 0x30, 0x00, 0x3C, 0xDF, 0xFE, 0x1F, 0x03, 0xC0,
+  0xF0, 0x3C, 0x0F, 0x87, 0x7F, 0xCF, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30,
+  0xC7, 0xB7, 0xFF, 0x07, 0x81, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30,
+  0x00, 0x3F, 0x1F, 0xEC, 0x0B, 0x00, 0x7F, 0x00, 0xE0, 0x0F, 0x03, 0x73,
+  0x8F, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x7F, 0xFF, 0xFE, 0x60, 0x0C, 0x01,
+  0x80, 0x30, 0x06, 0x0C, 0xC1, 0x8F, 0xF0, 0xFC, 0xC0, 0xF0, 0x3C, 0x0F,
+  0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x07, 0x7F, 0xCF, 0x30, 0xE0, 0x36, 0x06,
+  0x30, 0x63, 0x0C, 0x10, 0xC1, 0x98, 0x19, 0x80, 0xF0, 0x0F, 0x00, 0x60,
+  0xC0, 0x3C, 0x63, 0x46, 0x34, 0x62, 0x6F, 0x66, 0x96, 0x69, 0x63, 0x9E,
+  0x30, 0xC3, 0x0C, 0x70, 0x73, 0x8C, 0x19, 0x80, 0xF0, 0x07, 0x00, 0xF0,
+  0x19, 0x83, 0x8C, 0x70, 0xEE, 0x07, 0xE0, 0x76, 0x06, 0x30, 0xC3, 0x0C,
+  0x19, 0x81, 0xB0, 0x0F, 0x00, 0x60, 0x06, 0x00, 0xC0, 0x18, 0x01, 0x80,
+  0x30, 0x07, 0x00, 0xFF, 0xFF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81,
+  0xC0, 0xFF, 0xFF, 0xF0, 0x07, 0xE1, 0xFC, 0x30, 0x06, 0x00, 0xC0, 0x18,
+  0x01, 0x80, 0x30, 0x06, 0x00, 0xC3, 0xF8, 0x7F, 0x00, 0x60, 0x0C, 0x01,
+  0x80, 0x30, 0x06, 0x01, 0x80, 0x30, 0x06, 0x00, 0xFE, 0x0F, 0xC0, 0xFF,
+  0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF8, 0x3F, 0x00, 0xC0, 0x30, 0x0C, 0x03,
+  0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0xFC, 0x3F, 0x18, 0x06, 0x01, 0x80,
+  0x60, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0xFC, 0x3E, 0x00, 0x78, 0x3B, 0xFE,
+  0x1E, 0x00 };
+
+const GFXglyph nk57_monospace_no_rg9pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,  12,    0,    0 },   // 0x20 ' '
+  {     1,   3,  15,  12,    5,  -14 },   // 0x21 '!'
+  {     7,   8,   7,  12,    2,  -14 },   // 0x22 '"'
+  {    14,  12,  15,  12,    0,  -14 },   // 0x23 '#'
+  {    37,  11,  18,  12,    1,  -15 },   // 0x24 '$'
+  {    62,  12,  17,  12,    0,  -15 },   // 0x25 '%'
+  {    88,  12,  15,  12,    0,  -14 },   // 0x26 '&'
+  {   111,   2,   6,  12,    5,  -14 },   // 0x27 '''
+  {   113,   8,  22,  12,    3,  -17 },   // 0x28 '('
+  {   135,   8,  22,  12,    1,  -17 },   // 0x29 ')'
+  {   157,  10,  10,  12,    1,  -14 },   // 0x2A '*'
+  {   170,  11,   9,  12,    1,  -11 },   // 0x2B '+'
+  {   183,   3,   6,  12,    5,   -2 },   // 0x2C ','
+  {   186,   8,   2,  12,    2,   -6 },   // 0x2D '-'
+  {   188,   3,   3,  12,    5,   -2 },   // 0x2E '.'
+  {   190,  12,  20,  12,    0,  -16 },   // 0x2F '/'
+  {   220,  10,  15,  12,    1,  -14 },   // 0x30 '0'
+  {   239,  10,  15,  12,    1,  -14 },   // 0x31 '1'
+  {   258,  10,  15,  12,    1,  -14 },   // 0x32 '2'
+  {   277,  10,  15,  12,    1,  -14 },   // 0x33 '3'
+  {   296,  11,  15,  12,    1,  -14 },   // 0x34 '4'
+  {   317,  10,  15,  12,    1,  -14 },   // 0x35 '5'
+  {   336,  10,  15,  12,    1,  -14 },   // 0x36 '6'
+  {   355,  10,  15,  12,    1,  -14 },   // 0x37 '7'
+  {   374,  10,  15,  12,    1,  -14 },   // 0x38 '8'
+  {   393,  10,  15,  12,    1,  -14 },   // 0x39 '9'
+  {   412,   3,   9,  12,    5,   -8 },   // 0x3A ':'
+  {   416,   3,  12,  12,    5,   -9 },   // 0x3B ';'
+  {   421,  11,  12,  12,    1,  -12 },   // 0x3C '<'
+  {   438,  11,   7,  12,    1,  -10 },   // 0x3D '='
+  {   448,  11,  12,  12,    1,  -12 },   // 0x3E '>'
+  {   465,  10,  15,  12,    1,  -14 },   // 0x3F '?'
+  {   484,  11,  16,  12,    1,  -12 },   // 0x40 '@'
+  {   506,  12,  15,  12,    0,  -14 },   // 0x41 'A'
+  {   529,  11,  15,  12,    1,  -14 },   // 0x42 'B'
+  {   550,  10,  15,  12,    1,  -14 },   // 0x43 'C'
+  {   569,  10,  15,  12,    1,  -14 },   // 0x44 'D'
+  {   588,  10,  15,  12,    1,  -14 },   // 0x45 'E'
+  {   607,  10,  15,  12,    1,  -14 },   // 0x46 'F'
+  {   626,  10,  15,  12,    1,  -14 },   // 0x47 'G'
+  {   645,  10,  15,  12,    1,  -14 },   // 0x48 'H'
+  {   664,  10,  15,  12,    1,  -14 },   // 0x49 'I'
+  {   683,  10,  15,  12,    1,  -14 },   // 0x4A 'J'
+  {   702,  11,  15,  12,    1,  -14 },   // 0x4B 'K'
+  {   723,  10,  15,  12,    1,  -14 },   // 0x4C 'L'
+  {   742,  11,  15,  12,    1,  -14 },   // 0x4D 'M'
+  {   763,  10,  15,  12,    1,  -14 },   // 0x4E 'N'
+  {   782,  10,  15,  12,    1,  -14 },   // 0x4F 'O'
+  {   801,  11,  15,  12,    1,  -14 },   // 0x50 'P'
+  {   822,  11,  19,  12,    1,  -14 },   // 0x51 'Q'
+  {   849,  11,  15,  12,    1,  -14 },   // 0x52 'R'
+  {   870,  10,  15,  12,    1,  -14 },   // 0x53 'S'
+  {   889,  11,  15,  12,    1,  -14 },   // 0x54 'T'
+  {   910,  10,  15,  12,    1,  -14 },   // 0x55 'U'
+  {   929,  12,  15,  12,    0,  -14 },   // 0x56 'V'
+  {   952,  12,  15,  12,    0,  -14 },   // 0x57 'W'
+  {   975,  12,  15,  12,    0,  -14 },   // 0x58 'X'
+  {   998,  12,  15,  12,    0,  -14 },   // 0x59 'Y'
+  {  1021,  10,  15,  12,    1,  -14 },   // 0x5A 'Z'
+  {  1040,   8,  22,  12,    4,  -17 },   // 0x5B '['
+  {  1062,  12,  20,  12,    0,  -16 },   // 0x5C '\'
+  {  1092,   8,  22,  12,    1,  -17 },   // 0x5D ']'
+  {  1114,  12,   8,  12,    0,  -14 },   // 0x5E '^'
+  {  1126,  12,   2,  12,    0,    2 },   // 0x5F '_'
+  {  1129,   6,   3,  12,    3,  -13 },   // 0x60 '`'
+  {  1132,  11,  10,  12,    1,   -9 },   // 0x61 'a'
+  {  1146,  10,  15,  12,    1,  -14 },   // 0x62 'b'
+  {  1165,  10,  10,  12,    1,   -9 },   // 0x63 'c'
+  {  1178,  10,  15,  12,    1,  -14 },   // 0x64 'd'
+  {  1197,  10,  10,  12,    1,   -9 },   // 0x65 'e'
+  {  1210,  11,  15,  12,    0,  -14 },   // 0x66 'f'
+  {  1231,  12,  17,  12,    0,  -12 },   // 0x67 'g'
+  {  1257,  10,  15,  12,    1,  -14 },   // 0x68 'h'
+  {  1276,   9,  14,  12,    2,  -13 },   // 0x69 'i'
+  {  1292,   9,  18,  12,    1,  -13 },   // 0x6A 'j'
+  {  1313,  11,  15,  12,    1,  -14 },   // 0x6B 'k'
+  {  1334,   9,  15,  12,    2,  -14 },   // 0x6C 'l'
+  {  1351,  12,  10,  12,    0,   -9 },   // 0x6D 'm'
+  {  1366,  10,  10,  12,    1,   -9 },   // 0x6E 'n'
+  {  1379,  10,  10,  12,    1,   -9 },   // 0x6F 'o'
+  {  1392,  10,  14,  12,    1,   -9 },   // 0x70 'p'
+  {  1410,  10,  14,  12,    1,   -9 },   // 0x71 'q'
+  {  1428,  10,  10,  12,    1,   -9 },   // 0x72 'r'
+  {  1441,  10,  10,  12,    1,   -9 },   // 0x73 's'
+  {  1454,  11,  13,  12,    0,  -12 },   // 0x74 't'
+  {  1472,  10,  10,  12,    1,   -9 },   // 0x75 'u'
+  {  1485,  12,  10,  12,    0,   -9 },   // 0x76 'v'
+  {  1500,  12,  10,  12,    0,   -9 },   // 0x77 'w'
+  {  1515,  12,  10,  12,    0,   -9 },   // 0x78 'x'
+  {  1530,  12,  14,  12,    0,   -9 },   // 0x79 'y'
+  {  1551,  10,  10,  12,    1,   -9 },   // 0x7A 'z'
+  {  1564,  11,  22,  12,    1,  -17 },   // 0x7B '{'
+  {  1595,   2,  22,  12,    5,  -17 },   // 0x7C '|'
+  {  1601,  10,  22,  12,    1,  -17 },   // 0x7D '}'
+  {  1629,  11,   3,  12,    1,   -8 } }; // 0x7E '~'
+
+const GFXfont nk57_monospace_no_rg9pt7b PROGMEM = {
+  (uint8_t  *)nk57_monospace_no_rg9pt7bBitmaps,
+  (GFXglyph *)nk57_monospace_no_rg9pt7bGlyphs,
+  0x20, 0x7E, 21 };
+
+// Approx. 2306 bytes
+const uint8_t nk57_monospace_no_rg7pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0xEA, 0x3F, 0xCE, 0x28, 0xA2, 0x88, 0x00, 0x11, 0x08, 0x84,
+  0x42, 0x67, 0xF9, 0x90, 0x89, 0xFF, 0x22, 0x11, 0x09, 0x8C, 0xC0, 0x10,
+  0x10, 0x7E, 0xC3, 0x83, 0x80, 0xE0, 0x3C, 0x03, 0x03, 0x83, 0xC3, 0x7E,
+  0x10, 0x10, 0x78, 0x64, 0x22, 0x11, 0x17, 0x88, 0x18, 0x30, 0x20, 0x67,
+  0x46, 0x42, 0x21, 0x10, 0xC8, 0x3C, 0x3E, 0x31, 0x98, 0xCC, 0x62, 0x60,
+  0xC0, 0xE2, 0x9B, 0xC7, 0x61, 0x99, 0xC7, 0x90, 0xEA, 0x80, 0x0E, 0x30,
+  0xC1, 0x06, 0x08, 0x30, 0x60, 0xC1, 0x83, 0x02, 0x06, 0x04, 0x0C, 0x0C,
+  0x0E, 0xC0, 0x81, 0x06, 0x08, 0x30, 0xC1, 0x04, 0x10, 0xC3, 0x08, 0x61,
+  0x08, 0xC0, 0x11, 0x27, 0x59, 0xE3, 0x9A, 0xE4, 0x88, 0x08, 0x04, 0x02,
+  0x1F, 0xF0, 0x80, 0x40, 0x20, 0xFE, 0xFC, 0xFC, 0x00, 0x80, 0x40, 0x40,
+  0x20, 0x20, 0x30, 0x10, 0x18, 0x08, 0x0C, 0x04, 0x06, 0x02, 0x03, 0x01,
+  0x01, 0x80, 0x38, 0x66, 0xC6, 0x82, 0x83, 0x83, 0x83, 0x83, 0x82, 0xC6,
+  0x66, 0x3C, 0x18, 0x30, 0x67, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x67,
+  0xF0, 0x7C, 0xC6, 0x83, 0x03, 0x03, 0x02, 0x06, 0x0C, 0x18, 0x30, 0xC0,
+  0xFF, 0x7C, 0xC6, 0x83, 0x03, 0x02, 0x3C, 0x02, 0x03, 0x83, 0x83, 0xC6,
+  0x7C, 0x03, 0x03, 0x81, 0xC1, 0x61, 0xB1, 0x98, 0x8C, 0x86, 0xFF, 0x81,
+  0x80, 0xC0, 0x60, 0x7E, 0x40, 0x40, 0xC0, 0xFC, 0xC6, 0x03, 0x03, 0x83,
+  0x83, 0xC6, 0x7C, 0x3E, 0x63, 0xC3, 0x80, 0xBC, 0xE6, 0x83, 0x83, 0x83,
+  0xC3, 0x66, 0x7C, 0xFF, 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x10,
+  0x30, 0x30, 0x60, 0x7C, 0xC6, 0x83, 0x83, 0xC2, 0x7C, 0xC6, 0x83, 0x83,
+  0x83, 0xC6, 0x7C, 0x7C, 0xC6, 0x83, 0x83, 0x83, 0x83, 0xC3, 0x7E, 0x06,
+  0x0C, 0x08, 0x30, 0xFC, 0x0F, 0xC0, 0xFC, 0x03, 0xF8, 0x01, 0x83, 0x87,
+  0x0C, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x00,
+  0x0F, 0xF8, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x18, 0x38, 0xE1, 0xC0, 0x80,
+  0x00, 0x7E, 0xC7, 0x83, 0x03, 0x03, 0x0C, 0x18, 0x18, 0x00, 0x18, 0x18,
+  0x18, 0x3F, 0x30, 0x90, 0x29, 0xD4, 0x9A, 0x47, 0x22, 0x93, 0x4F, 0xA0,
+  0x10, 0x0C, 0x13, 0xF8, 0x0C, 0x06, 0x07, 0x02, 0xC1, 0x61, 0x90, 0xCC,
+  0x46, 0x63, 0x3F, 0x90, 0x78, 0x30, 0xFE, 0x86, 0x83, 0x83, 0x82, 0xFC,
+  0x83, 0x83, 0x83, 0x83, 0x83, 0xFE, 0x7E, 0xC3, 0xC3, 0x80, 0x80, 0x80,
+  0x80, 0x80, 0x83, 0xC3, 0xC6, 0x7C, 0xFC, 0x86, 0x82, 0x83, 0x83, 0x83,
+  0x83, 0x83, 0x83, 0x82, 0x86, 0xFC, 0xFF, 0x80, 0x80, 0x80, 0x80, 0xFF,
+  0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0xFF,
+  0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7E, 0xC3, 0xC3, 0x80, 0x80, 0x8F,
+  0x83, 0x83, 0x83, 0xC3, 0xC7, 0x79, 0x83, 0x83, 0x83, 0x83, 0x83, 0xFF,
+  0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0xFE, 0x30, 0x60, 0xC1, 0x83, 0x06,
+  0x0C, 0x18, 0x30, 0x67, 0xF0, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x83, 0x82, 0xC6, 0x7C, 0x83, 0x86, 0x84, 0x8C, 0x9C, 0xBC, 0xA4,
+  0xC6, 0xC6, 0x82, 0x83, 0x83, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xC1, 0xF0, 0xF8, 0xFE, 0x5D, 0x6E, 0xE7,
+  0x33, 0x91, 0xC0, 0xE0, 0x70, 0x38, 0x10, 0xC3, 0xC3, 0xE3, 0xA3, 0xB3,
+  0x93, 0x9B, 0x8B, 0x87, 0x87, 0x83, 0x83, 0x7E, 0xC6, 0x83, 0x83, 0x83,
+  0x83, 0x83, 0x83, 0x83, 0x83, 0xC6, 0x7E, 0xFE, 0x87, 0x83, 0x83, 0x83,
+  0x83, 0x83, 0xFE, 0x80, 0x80, 0x80, 0x80, 0x7C, 0xC6, 0x83, 0x83, 0x83,
+  0x83, 0x83, 0x83, 0x83, 0x83, 0xC6, 0x7E, 0x08, 0x0C, 0x07, 0xFE, 0x83,
+  0x83, 0x83, 0x83, 0x83, 0xFE, 0x88, 0x8C, 0x86, 0x82, 0x83, 0x3F, 0x31,
+  0xD0, 0x68, 0x06, 0x01, 0xF0, 0x1C, 0x03, 0xC1, 0xA0, 0xD8, 0xC7, 0xC0,
+  0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+  0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0xC3, 0xC6, 0x7E,
+  0xC1, 0xA0, 0xD8, 0x4C, 0x22, 0x31, 0x10, 0xC8, 0x2C, 0x16, 0x0E, 0x03,
+  0x01, 0x80, 0xC0, 0xE4, 0x72, 0x39, 0x94, 0xCA, 0xAD, 0x56, 0xA7, 0x53,
+  0x31, 0x98, 0xCC, 0x20, 0x61, 0x91, 0x8C, 0xC2, 0xC1, 0xC0, 0x60, 0x70,
+  0x2C, 0x32, 0x11, 0x98, 0x78, 0x30, 0xC1, 0xB0, 0x88, 0xC6, 0xC1, 0xC0,
+  0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xFE, 0x04, 0x18, 0x60,
+  0xC3, 0x04, 0x18, 0x60, 0xC3, 0x07, 0xF0, 0xFE, 0x08, 0x20, 0x82, 0x08,
+  0x20, 0x82, 0x08, 0x20, 0x82, 0x08, 0x20, 0xFC, 0x80, 0x20, 0x10, 0x04,
+  0x03, 0x00, 0x80, 0x60, 0x10, 0x0C, 0x02, 0x01, 0x80, 0x40, 0x30, 0x08,
+  0x06, 0x01, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18,
+  0x30, 0x60, 0xC1, 0x83, 0xFE, 0x0C, 0x0E, 0x05, 0x86, 0x42, 0x33, 0x0B,
+  0x06, 0xFF, 0x80, 0xC3, 0x7C, 0xC6, 0xC2, 0x1E, 0xE2, 0x82, 0xCE, 0x7B,
+  0xC0, 0xC0, 0xC0, 0xC0, 0xDE, 0xE6, 0xC3, 0xC3, 0xC3, 0xC3, 0xE6, 0xDE,
+  0x7D, 0x8F, 0x0C, 0x08, 0x18, 0x71, 0xBE, 0x02, 0x04, 0x08, 0x17, 0xB8,
+  0xF0, 0xC1, 0x83, 0x87, 0x1B, 0xD0, 0x7D, 0x8E, 0x0F, 0xF8, 0x18, 0x71,
+  0xBE, 0x1F, 0x18, 0xC8, 0x64, 0x0F, 0xF1, 0x00, 0x80, 0x40, 0x20, 0x10,
+  0x08, 0x04, 0x00, 0x01, 0x81, 0x0F, 0x8C, 0x24, 0x1B, 0x08, 0xFC, 0x60,
+  0x40, 0x3F, 0xF0, 0x38, 0x17, 0xF8, 0xC1, 0x83, 0x06, 0x0D, 0xFC, 0xF0,
+  0xE1, 0xC3, 0x87, 0x0E, 0x10, 0x30, 0xC0, 0x00, 0xF0, 0xC3, 0x0C, 0x30,
+  0xC3, 0x3F, 0x06, 0x0C, 0x00, 0x03, 0xE0, 0xC1, 0x83, 0x06, 0x0C, 0x18,
+  0x38, 0x78, 0xDF, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0xC4, 0xDC, 0xF4,
+  0xE6, 0xC2, 0xC3, 0xC1, 0xF0, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3,
+  0x3F, 0xFB, 0xE6, 0x72, 0x39, 0x1C, 0x8E, 0x47, 0x23, 0x91, 0xDF, 0xCF,
+  0x0E, 0x1C, 0x38, 0x70, 0xE1, 0x7C, 0xC6, 0xC2, 0x83, 0x83, 0xC2, 0xC6,
+  0x7C, 0xFE, 0xE6, 0xC3, 0xC3, 0xC3, 0xC3, 0xE6, 0xFE, 0xC0, 0xC0, 0xC0,
+  0x7B, 0x8F, 0x0C, 0x18, 0x38, 0x71, 0xBD, 0x02, 0x04, 0x08, 0xDE, 0xF3,
+  0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7D, 0x8E, 0x03, 0xE0, 0x70, 0x71,
+  0xBE, 0x20, 0x10, 0x3F, 0xC4, 0x02, 0x01, 0x00, 0x80, 0x43, 0x31, 0x8F,
+  0x80, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x71, 0xBD, 0xC1, 0xB0, 0x98, 0xC4,
+  0x63, 0x20, 0xB0, 0x70, 0x18, 0x80, 0xE4, 0x53, 0x2B, 0xB5, 0x5A, 0x99,
+  0x8C, 0x46, 0x61, 0x99, 0x87, 0x81, 0x81, 0xC1, 0xB1, 0x8D, 0x83, 0xC1,
+  0xB0, 0x88, 0xC6, 0xC1, 0x40, 0xE0, 0x20, 0x30, 0x30, 0x10, 0x18, 0x00,
+  0xFE, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0x7F, 0x1F, 0x18, 0x10, 0x18, 0x18,
+  0x08, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x08, 0x18, 0x18, 0x10, 0x18, 0x1F,
+  0xFF, 0xFF, 0x80, 0xF8, 0x0C, 0x0C, 0x08, 0x08, 0x18, 0x18, 0x18, 0x0F,
+  0x18, 0x10, 0x18, 0x08, 0x08, 0x0C, 0x0C, 0xF8, 0x78, 0xC7, 0xC0 };
+
+const GFXglyph nk57_monospace_no_rg7pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   9,    0,    0 },   // 0x20 ' '
+  {     1,   2,  12,   9,    4,  -11 },   // 0x21 '!'
+  {     4,   6,   6,   9,    2,  -11 },   // 0x22 '"'
+  {     9,   9,  12,   9,    0,  -11 },   // 0x23 '#'
+  {    23,   8,  15,   9,    1,  -13 },   // 0x24 '$'
+  {    38,   9,  14,   9,    0,  -11 },   // 0x25 '%'
+  {    54,   9,  12,   9,    0,  -11 },   // 0x26 '&'
+  {    68,   2,   5,   9,    4,  -11 },   // 0x27 '''
+  {    70,   7,  17,   9,    2,  -13 },   // 0x28 '('
+  {    85,   6,  17,   9,    1,  -13 },   // 0x29 ')'
+  {    98,   7,   8,   9,    1,  -11 },   // 0x2A '*'
+  {   105,   9,   7,   9,    0,   -8 },   // 0x2B '+'
+  {   113,   2,   4,   9,    4,   -1 },   // 0x2C ','
+  {   114,   6,   1,   9,    2,   -5 },   // 0x2D '-'
+  {   115,   2,   3,   9,    4,   -2 },   // 0x2E '.'
+  {   116,   9,  16,   9,    0,  -13 },   // 0x2F '/'
+  {   134,   8,  12,   9,    1,  -11 },   // 0x30 '0'
+  {   146,   7,  12,   9,    1,  -11 },   // 0x31 '1'
+  {   157,   8,  12,   9,    1,  -11 },   // 0x32 '2'
+  {   169,   8,  12,   9,    1,  -11 },   // 0x33 '3'
+  {   181,   9,  12,   9,    0,  -11 },   // 0x34 '4'
+  {   195,   8,  12,   9,    1,  -11 },   // 0x35 '5'
+  {   207,   8,  12,   9,    1,  -11 },   // 0x36 '6'
+  {   219,   8,  12,   9,    1,  -11 },   // 0x37 '7'
+  {   231,   8,  12,   9,    1,  -11 },   // 0x38 '8'
+  {   243,   8,  12,   9,    1,  -11 },   // 0x39 '9'
+  {   255,   2,   9,   9,    4,   -8 },   // 0x3A ':'
+  {   258,   2,  11,   9,    4,   -8 },   // 0x3B ';'
+  {   261,   9,   9,   9,    0,   -9 },   // 0x3C '<'
+  {   272,   9,   5,   9,    0,   -7 },   // 0x3D '='
+  {   278,   9,   9,   9,    0,   -9 },   // 0x3E '>'
+  {   289,   8,  12,   9,    1,  -11 },   // 0x3F '?'
+  {   301,   9,  13,   9,    0,  -10 },   // 0x40 '@'
+  {   316,   9,  12,   9,    0,  -11 },   // 0x41 'A'
+  {   330,   8,  12,   9,    1,  -11 },   // 0x42 'B'
+  {   342,   8,  12,   9,    1,  -11 },   // 0x43 'C'
+  {   354,   8,  12,   9,    1,  -11 },   // 0x44 'D'
+  {   366,   8,  12,   9,    1,  -11 },   // 0x45 'E'
+  {   378,   8,  12,   9,    1,  -11 },   // 0x46 'F'
+  {   390,   8,  12,   9,    1,  -11 },   // 0x47 'G'
+  {   402,   8,  12,   9,    1,  -11 },   // 0x48 'H'
+  {   414,   7,  12,   9,    1,  -11 },   // 0x49 'I'
+  {   425,   8,  12,   9,    1,  -11 },   // 0x4A 'J'
+  {   437,   8,  12,   9,    1,  -11 },   // 0x4B 'K'
+  {   449,   8,  12,   9,    1,  -11 },   // 0x4C 'L'
+  {   461,   9,  12,   9,    0,  -11 },   // 0x4D 'M'
+  {   475,   8,  12,   9,    1,  -11 },   // 0x4E 'N'
+  {   487,   8,  12,   9,    1,  -11 },   // 0x4F 'O'
+  {   499,   8,  12,   9,    1,  -11 },   // 0x50 'P'
+  {   511,   8,  15,   9,    1,  -11 },   // 0x51 'Q'
+  {   526,   8,  12,   9,    1,  -11 },   // 0x52 'R'
+  {   538,   9,  12,   9,    0,  -11 },   // 0x53 'S'
+  {   552,   8,  12,   9,    1,  -11 },   // 0x54 'T'
+  {   564,   8,  12,   9,    1,  -11 },   // 0x55 'U'
+  {   576,   9,  12,   9,    0,  -11 },   // 0x56 'V'
+  {   590,   9,  12,   9,    0,  -11 },   // 0x57 'W'
+  {   604,   9,  12,   9,    0,  -11 },   // 0x58 'X'
+  {   618,   9,  12,   9,    0,  -11 },   // 0x59 'Y'
+  {   632,   7,  12,   9,    1,  -11 },   // 0x5A 'Z'
+  {   643,   6,  17,   9,    3,  -13 },   // 0x5B '['
+  {   656,   9,  16,   9,    0,  -13 },   // 0x5C '\'
+  {   674,   7,  17,   9,    0,  -13 },   // 0x5D ']'
+  {   689,   9,   7,   9,    0,  -11 },   // 0x5E '^'
+  {   697,   9,   1,   9,    0,    2 },   // 0x5F '_'
+  {   699,   4,   2,   9,    3,  -11 },   // 0x60 '`'
+  {   700,   8,   8,   9,    1,   -7 },   // 0x61 'a'
+  {   708,   8,  12,   9,    1,  -11 },   // 0x62 'b'
+  {   720,   7,   8,   9,    1,   -7 },   // 0x63 'c'
+  {   727,   7,  12,   9,    1,  -11 },   // 0x64 'd'
+  {   738,   7,   8,   9,    1,   -7 },   // 0x65 'e'
+  {   745,   9,  12,   9,    0,  -11 },   // 0x66 'f'
+  {   759,   9,  13,   9,    0,   -9 },   // 0x67 'g'
+  {   774,   7,  12,   9,    1,  -11 },   // 0x68 'h'
+  {   785,   6,  12,   9,    2,  -11 },   // 0x69 'i'
+  {   794,   7,  15,   9,    1,  -11 },   // 0x6A 'j'
+  {   808,   8,  12,   9,    1,  -11 },   // 0x6B 'k'
+  {   820,   6,  12,   9,    2,  -11 },   // 0x6C 'l'
+  {   829,   9,   8,   9,    0,   -7 },   // 0x6D 'm'
+  {   838,   7,   8,   9,    1,   -7 },   // 0x6E 'n'
+  {   845,   8,   8,   9,    1,   -7 },   // 0x6F 'o'
+  {   853,   8,  11,   9,    1,   -7 },   // 0x70 'p'
+  {   864,   7,  11,   9,    1,   -7 },   // 0x71 'q'
+  {   874,   8,   8,   9,    1,   -7 },   // 0x72 'r'
+  {   882,   7,   8,   9,    1,   -7 },   // 0x73 's'
+  {   889,   9,  10,   9,    0,   -9 },   // 0x74 't'
+  {   901,   7,   8,   9,    1,   -7 },   // 0x75 'u'
+  {   908,   9,   8,   9,    0,   -7 },   // 0x76 'v'
+  {   917,   9,   8,   9,    0,   -7 },   // 0x77 'w'
+  {   926,   9,   8,   9,    0,   -7 },   // 0x78 'x'
+  {   935,   9,  11,   9,    0,   -7 },   // 0x79 'y'
+  {   948,   7,   8,   9,    1,   -7 },   // 0x7A 'z'
+  {   955,   8,  17,   9,    1,  -13 },   // 0x7B '{'
+  {   972,   1,  17,   9,    4,  -13 },   // 0x7C '|'
+  {   975,   8,  17,   9,    0,  -13 },   // 0x7D '}'
+  {   992,   9,   2,   9,    0,   -6 } }; // 0x7E '~'
+
+const GFXfont nk57_monospace_no_rg7pt7b PROGMEM = {
+  (uint8_t  *)nk57_monospace_no_rg7pt7bBitmaps,
+  (GFXglyph *)nk57_monospace_no_rg7pt7bGlyphs,
+  0x20, 0x7E, 16 };
+
+// Approx. 1667 bytes
+const uint8_t nk57_monospace_cd_rg7pt7bBitmaps[] PROGMEM = {
+  0x00, 0x55, 0x55, 0x1D, 0x4A, 0x52, 0x94, 0x80, 0x24, 0x48, 0x91, 0x2F,
+  0xE5, 0x12, 0x7E, 0x48, 0x91, 0x22, 0x40, 0x10, 0x47, 0xD1, 0xC7, 0x06,
+  0x0F, 0x04, 0x1C, 0x51, 0x78, 0x41, 0x00, 0x70, 0xA2, 0x42, 0x97, 0x41,
+  0x04, 0x10, 0x5D, 0x28, 0x91, 0x21, 0x43, 0x80, 0x38, 0x91, 0x12, 0x47,
+  0x86, 0x1D, 0xEA, 0x8D, 0x13, 0x33, 0xB0, 0xF8, 0x32, 0x44, 0xC8, 0x88,
+  0x88, 0x88, 0xC4, 0x42, 0x30, 0x84, 0x62, 0x31, 0x11, 0x11, 0x11, 0x32,
+  0x64, 0x80, 0x11, 0x5F, 0xC4, 0xFD, 0x51, 0x00, 0x10, 0x41, 0x3F, 0x10,
+  0x41, 0x00, 0xD5, 0xF8, 0x74, 0x02, 0x08, 0x10, 0x20, 0x81, 0x06, 0x08,
+  0x10, 0x60, 0x81, 0x04, 0x08, 0x10, 0x40, 0x39, 0xA4, 0x51, 0x47, 0x1C,
+  0x51, 0x45, 0x16, 0x8E, 0x21, 0x09, 0xC2, 0x10, 0x84, 0x21, 0x09, 0xF0,
+  0xF4, 0xE2, 0x10, 0x84, 0x62, 0x22, 0x21, 0xF0, 0xF4, 0xE2, 0x10, 0xB8,
+  0x21, 0x8C, 0x66, 0xE0, 0x0C, 0x18, 0x70, 0xE2, 0xC5, 0x93, 0x26, 0xFE,
+  0x18, 0x30, 0x60, 0xFC, 0x21, 0x0F, 0x4C, 0x21, 0x8C, 0x66, 0xE0, 0x7E,
+  0x63, 0x0F, 0x6E, 0x31, 0x8C, 0x76, 0xE0, 0xF8, 0x42, 0x31, 0x08, 0xC4,
+  0x23, 0x10, 0x80, 0x39, 0x34, 0x51, 0x44, 0xE4, 0xF1, 0xC7, 0x16, 0xCE,
+  0x39, 0x3C, 0x71, 0xC7, 0x14, 0x5F, 0x0C, 0x21, 0x0C, 0x74, 0x07, 0x40,
+  0x74, 0x03, 0x54, 0x04, 0x73, 0x30, 0xC1, 0x81, 0x83, 0x04, 0xFC, 0x00,
+  0x00, 0xFC, 0xC1, 0x81, 0x83, 0x04, 0x63, 0x30, 0x80, 0xF4, 0xE2, 0x10,
+  0x88, 0x84, 0x01, 0x18, 0x40, 0x79, 0x14, 0x67, 0x96, 0x59, 0x65, 0x9E,
+  0x04, 0x11, 0x7C, 0x10, 0x60, 0xE1, 0x42, 0x85, 0x1A, 0x26, 0x4C, 0xF9,
+  0x16, 0x30, 0xF4, 0x63, 0x18, 0xFA, 0x31, 0x8C, 0x63, 0xF0, 0x3D, 0x94,
+  0x50, 0xC3, 0x0C, 0x30, 0x45, 0x16, 0xCE, 0xF4, 0xE3, 0x18, 0xC6, 0x31,
+  0x8C, 0x67, 0xE0, 0xFC, 0x21, 0x08, 0x7E, 0x10, 0x84, 0x21, 0xF0, 0xFC,
+  0x21, 0x08, 0x7E, 0x10, 0x84, 0x21, 0x00, 0x3D, 0x94, 0x50, 0xC3, 0x3C,
+  0x71, 0x45, 0x14, 0xDD, 0x8C, 0x63, 0x18, 0xFE, 0x31, 0x8C, 0x63, 0x10,
+  0xF9, 0x08, 0x42, 0x10, 0x84, 0x21, 0x09, 0xF0, 0x04, 0x10, 0x41, 0x04,
+  0x10, 0x41, 0xC5, 0x14, 0xDE, 0x8E, 0x29, 0x24, 0xB2, 0xCD, 0x36, 0x8A,
+  0x28, 0xA3, 0x84, 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0xF0, 0xC7, 0x8F,
+  0x3D, 0x7A, 0xF6, 0xE5, 0xCB, 0x87, 0x0E, 0x1C, 0x30, 0x8C, 0x73, 0x9E,
+  0xD6, 0xB3, 0x9C, 0xE3, 0x10, 0x79, 0x34, 0x71, 0xC7, 0x1C, 0x71, 0xC5,
+  0x14, 0xDE, 0xF4, 0xE3, 0x18, 0xC6, 0x3F, 0x84, 0x21, 0x00, 0x78, 0x99,
+  0x12, 0x2C, 0x58, 0xB1, 0x62, 0x44, 0x89, 0x33, 0xC0, 0x81, 0x03, 0x80,
+  0xFA, 0x28, 0xA2, 0x8A, 0x2F, 0xAC, 0x92, 0x68, 0xA3, 0x3D, 0x3C, 0x70,
+  0x41, 0xE0, 0xC1, 0xC7, 0x14, 0xDE, 0xFC, 0x41, 0x04, 0x10, 0x41, 0x04,
+  0x10, 0x41, 0x04, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x67, 0xE0, 0xC6,
+  0x89, 0x12, 0x24, 0xCD, 0x0A, 0x14, 0x28, 0x70, 0xC0, 0x80, 0x83, 0x06,
+  0x5C, 0xBD, 0x5E, 0x9B, 0x36, 0x6C, 0xD9, 0x32, 0x20, 0x44, 0xC8, 0xA1,
+  0x43, 0x82, 0x0C, 0x14, 0x68, 0x99, 0x16, 0x30, 0xC6, 0x89, 0xB1, 0x43,
+  0x82, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0xF8, 0x46, 0x23, 0x11, 0x8C,
+  0x46, 0x21, 0xF0, 0xFC, 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0x08, 0x42,
+  0x10, 0xF8, 0x81, 0x81, 0x02, 0x06, 0x04, 0x08, 0x08, 0x10, 0x20, 0x20,
+  0x40, 0xC0, 0x81, 0x03, 0xF8, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31,
+  0x8C, 0x63, 0xF8, 0x10, 0x70, 0xA1, 0x44, 0xC8, 0xB1, 0x80, 0xFE, 0xCC,
+  0x74, 0xE2, 0x7C, 0xC6, 0x7D, 0x84, 0x21, 0x0B, 0x6E, 0x31, 0x8C, 0x77,
+  0x60, 0x76, 0x63, 0x08, 0x47, 0x6E, 0x08, 0x42, 0x1E, 0xCE, 0x31, 0x8C,
+  0x67, 0xD0, 0x74, 0xE3, 0xF8, 0x47, 0x6E, 0x3D, 0x94, 0x50, 0xFD, 0x04,
+  0x10, 0x41, 0x04, 0x10, 0x06, 0x11, 0xE2, 0x24, 0x48, 0x9F, 0x30, 0x40,
+  0xFA, 0x0C, 0x3F, 0xC0, 0x84, 0x21, 0x0B, 0x6E, 0x31, 0x8C, 0x63, 0x10,
+  0x21, 0x00, 0x0E, 0x10, 0x84, 0x21, 0x09, 0xF0, 0x18, 0xC0, 0x07, 0x8C,
+  0x63, 0x18, 0xC6, 0x39, 0xCF, 0xC0, 0x82, 0x08, 0x20, 0x8E, 0x4B, 0x3C,
+  0xD2, 0x28, 0xA3, 0xE1, 0x08, 0x42, 0x10, 0x84, 0x21, 0x09, 0xF0, 0xFD,
+  0xAE, 0x4C, 0x99, 0x32, 0x64, 0xC9, 0xB6, 0xE3, 0x18, 0xC6, 0x31, 0x76,
+  0xE3, 0x18, 0xC7, 0x6E, 0xB6, 0xE3, 0x18, 0xC7, 0x76, 0x84, 0x20, 0xEC,
+  0xE3, 0x18, 0xC6, 0x7D, 0x08, 0x42, 0xBE, 0x63, 0x08, 0x42, 0x10, 0xF4,
+  0xE1, 0xE1, 0xC6, 0x7E, 0x41, 0x0F, 0xD0, 0x41, 0x04, 0x11, 0x64, 0xF0,
+  0x8C, 0x63, 0x18, 0xC6, 0x7D, 0xC6, 0x89, 0x13, 0x42, 0x85, 0x0C, 0x08,
+  0x83, 0x0E, 0x56, 0xA6, 0xCD, 0x9B, 0x26, 0x44, 0xD8, 0xA0, 0x83, 0x85,
+  0x13, 0x63, 0xC6, 0x89, 0x31, 0x43, 0x86, 0x04, 0x10, 0x20, 0xC1, 0x00,
+  0xF8, 0xC4, 0x46, 0x22, 0x1F, 0x3C, 0x82, 0x08, 0x20, 0xC3, 0x0C, 0xE0,
+  0xC3, 0x0C, 0x20, 0x82, 0x08, 0x3C, 0xFF, 0xFF, 0x80, 0xF0, 0x41, 0x04,
+  0x30, 0xC2, 0x08, 0x1C, 0x82, 0x08, 0x30, 0x41, 0x04, 0xF0, 0x76, 0x70 };
+
+const GFXglyph nk57_monospace_cd_rg7pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   7,    0,    0 },   // 0x20 ' '
+  {     1,   2,  12,   7,    2,  -11 },   // 0x21 '!'
+  {     4,   5,   6,   7,    1,  -11 },   // 0x22 '"'
+  {     8,   7,  12,   7,    0,  -11 },   // 0x23 '#'
+  {    19,   6,  15,   7,    0,  -13 },   // 0x24 '$'
+  {    31,   7,  14,   7,    0,  -11 },   // 0x25 '%'
+  {    44,   7,  12,   7,    0,  -11 },   // 0x26 '&'
+  {    55,   1,   5,   7,    3,  -11 },   // 0x27 '''
+  {    56,   4,  17,   7,    2,  -13 },   // 0x28 '('
+  {    65,   4,  17,   7,    1,  -13 },   // 0x29 ')'
+  {    74,   6,   7,   7,    0,  -11 },   // 0x2A '*'
+  {    80,   6,   7,   7,    0,   -8 },   // 0x2B '+'
+  {    86,   2,   4,   7,    2,   -1 },   // 0x2C ','
+  {    87,   5,   1,   7,    1,   -5 },   // 0x2D '-'
+  {    88,   2,   3,   7,    2,   -2 },   // 0x2E '.'
+  {    89,   7,  16,   7,    0,  -13 },   // 0x2F '/'
+  {   103,   6,  12,   7,    0,  -11 },   // 0x30 '0'
+  {   112,   5,  12,   7,    1,  -11 },   // 0x31 '1'
+  {   120,   5,  12,   7,    1,  -11 },   // 0x32 '2'
+  {   128,   5,  12,   7,    1,  -11 },   // 0x33 '3'
+  {   136,   7,  12,   7,    0,  -11 },   // 0x34 '4'
+  {   147,   5,  12,   7,    1,  -11 },   // 0x35 '5'
+  {   155,   5,  12,   7,    1,  -11 },   // 0x36 '6'
+  {   163,   5,  12,   7,    1,  -11 },   // 0x37 '7'
+  {   171,   6,  12,   7,    0,  -11 },   // 0x38 '8'
+  {   180,   6,  12,   7,    0,  -11 },   // 0x39 '9'
+  {   189,   2,   9,   7,    2,   -8 },   // 0x3A ':'
+  {   192,   2,  11,   7,    2,   -8 },   // 0x3B ';'
+  {   195,   6,   9,   7,    0,   -9 },   // 0x3C '<'
+  {   202,   6,   5,   7,    0,   -7 },   // 0x3D '='
+  {   206,   6,   9,   7,    0,   -9 },   // 0x3E '>'
+  {   213,   5,  12,   7,    1,  -11 },   // 0x3F '?'
+  {   221,   6,  13,   7,    0,  -10 },   // 0x40 '@'
+  {   231,   7,  12,   7,    0,  -11 },   // 0x41 'A'
+  {   242,   5,  12,   7,    1,  -11 },   // 0x42 'B'
+  {   250,   6,  12,   7,    0,  -11 },   // 0x43 'C'
+  {   259,   5,  12,   7,    1,  -11 },   // 0x44 'D'
+  {   267,   5,  12,   7,    1,  -11 },   // 0x45 'E'
+  {   275,   5,  12,   7,    1,  -11 },   // 0x46 'F'
+  {   283,   6,  12,   7,    0,  -11 },   // 0x47 'G'
+  {   292,   5,  12,   7,    1,  -11 },   // 0x48 'H'
+  {   300,   5,  12,   7,    1,  -11 },   // 0x49 'I'
+  {   308,   6,  12,   7,    0,  -11 },   // 0x4A 'J'
+  {   317,   6,  12,   7,    1,  -11 },   // 0x4B 'K'
+  {   326,   5,  12,   7,    1,  -11 },   // 0x4C 'L'
+  {   334,   7,  12,   7,    0,  -11 },   // 0x4D 'M'
+  {   345,   5,  12,   7,    1,  -11 },   // 0x4E 'N'
+  {   353,   6,  12,   7,    0,  -11 },   // 0x4F 'O'
+  {   362,   5,  12,   7,    1,  -11 },   // 0x50 'P'
+  {   370,   7,  15,   7,    0,  -11 },   // 0x51 'Q'
+  {   384,   6,  12,   7,    1,  -11 },   // 0x52 'R'
+  {   393,   6,  12,   7,    0,  -11 },   // 0x53 'S'
+  {   402,   6,  12,   7,    0,  -11 },   // 0x54 'T'
+  {   411,   5,  12,   7,    1,  -11 },   // 0x55 'U'
+  {   419,   7,  12,   7,    0,  -11 },   // 0x56 'V'
+  {   430,   7,  12,   7,    0,  -11 },   // 0x57 'W'
+  {   441,   7,  12,   7,    0,  -11 },   // 0x58 'X'
+  {   452,   7,  12,   7,    0,  -11 },   // 0x59 'Y'
+  {   463,   5,  12,   7,    1,  -11 },   // 0x5A 'Z'
+  {   471,   5,  17,   7,    2,  -13 },   // 0x5B '['
+  {   482,   7,  16,   7,    0,  -13 },   // 0x5C '\'
+  {   496,   5,  17,   7,    0,  -13 },   // 0x5D ']'
+  {   507,   7,   7,   7,    0,  -11 },   // 0x5E '^'
+  {   514,   7,   1,   7,    0,    2 },   // 0x5F '_'
+  {   515,   3,   2,   7,    2,  -11 },   // 0x60 '`'
+  {   516,   5,   8,   7,    1,   -7 },   // 0x61 'a'
+  {   521,   5,  12,   7,    1,  -11 },   // 0x62 'b'
+  {   529,   5,   8,   7,    1,   -7 },   // 0x63 'c'
+  {   534,   5,  12,   7,    1,  -11 },   // 0x64 'd'
+  {   542,   5,   8,   7,    1,   -7 },   // 0x65 'e'
+  {   547,   6,  12,   7,    0,  -11 },   // 0x66 'f'
+  {   556,   7,  13,   7,    0,   -9 },   // 0x67 'g'
+  {   568,   5,  12,   7,    1,  -11 },   // 0x68 'h'
+  {   576,   5,  12,   7,    1,  -11 },   // 0x69 'i'
+  {   584,   5,  15,   7,    1,  -11 },   // 0x6A 'j'
+  {   594,   6,  12,   7,    1,  -11 },   // 0x6B 'k'
+  {   603,   5,  12,   7,    1,  -11 },   // 0x6C 'l'
+  {   611,   7,   8,   7,    0,   -7 },   // 0x6D 'm'
+  {   618,   5,   8,   7,    1,   -7 },   // 0x6E 'n'
+  {   623,   5,   8,   7,    1,   -7 },   // 0x6F 'o'
+  {   628,   5,  11,   7,    1,   -7 },   // 0x70 'p'
+  {   635,   5,  11,   7,    1,   -7 },   // 0x71 'q'
+  {   642,   5,   8,   7,    1,   -7 },   // 0x72 'r'
+  {   647,   5,   8,   7,    1,   -7 },   // 0x73 's'
+  {   652,   6,  10,   7,    0,   -9 },   // 0x74 't'
+  {   660,   5,   8,   7,    1,   -7 },   // 0x75 'u'
+  {   665,   7,   8,   7,    0,   -7 },   // 0x76 'v'
+  {   672,   7,   8,   7,    0,   -7 },   // 0x77 'w'
+  {   679,   7,   8,   7,    0,   -7 },   // 0x78 'x'
+  {   686,   7,  11,   7,    0,   -7 },   // 0x79 'y'
+  {   696,   5,   8,   7,    1,   -7 },   // 0x7A 'z'
+  {   701,   6,  17,   7,    1,  -13 },   // 0x7B '{'
+  {   714,   1,  17,   7,    3,  -13 },   // 0x7C '|'
+  {   717,   6,  17,   7,    0,  -13 },   // 0x7D '}'
+  {   730,   6,   2,   7,    0,   -6 } }; // 0x7E '~'
+
+const GFXfont nk57_monospace_cd_rg7pt7b PROGMEM = {
+  (uint8_t  *)nk57_monospace_cd_rg7pt7bBitmaps,
+  (GFXglyph *)nk57_monospace_cd_rg7pt7bGlyphs,
+  0x20, 0x7E, 16 };
+
+// Approx. 1404 bytes
+const uint8_t nk57_monospace_no_bd7pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFD, 0xB6, 0xD8, 0xFF, 0x80, 0xCF, 0x3C, 0xF3, 0xCC, 0x13, 0x09,
+  0x8C, 0xCF, 0xF7, 0xF9, 0x93, 0xFF, 0xFF, 0x26, 0x33, 0x19, 0x80, 0x18,
+  0x18, 0x7E, 0xC3, 0xC0, 0xE0, 0xFC, 0x1F, 0x07, 0xC3, 0xC7, 0xFE, 0x18,
+  0x18, 0x78, 0x64, 0x32, 0x19, 0x17, 0x98, 0x18, 0x30, 0x60, 0xC7, 0xC6,
+  0x43, 0x21, 0x90, 0x78, 0x3E, 0x3F, 0x98, 0xC6, 0xC3, 0xC3, 0xCD, 0xB7,
+  0x8E, 0xE3, 0x3F, 0x8F, 0x60, 0xFF, 0xC0, 0x0E, 0x30, 0xC3, 0x86, 0x0C,
+  0x38, 0x70, 0xE1, 0xC3, 0x83, 0x06, 0x0E, 0x0C, 0x0C, 0x0E, 0xE1, 0xC3,
+  0x06, 0x1C, 0x70, 0xC3, 0x0C, 0x30, 0xC7, 0x1C, 0x63, 0x1C, 0xE0, 0x19,
+  0x27, 0x5B, 0xE3, 0xDE, 0xE4, 0x8C, 0x0C, 0x06, 0x03, 0x1F, 0xFF, 0xF8,
+  0x60, 0x30, 0x7F, 0xB6, 0xFF, 0xF0, 0xFF, 0x80, 0x01, 0x80, 0xC0, 0xC0,
+  0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x03, 0x03,
+  0x00, 0x3C, 0x7E, 0xC6, 0xC6, 0xC7, 0xC7, 0xC7, 0xC6, 0xC6, 0x7E, 0x3C,
+  0x18, 0x33, 0xE6, 0xC1, 0x83, 0x06, 0x0C, 0x19, 0xFF, 0xF8, 0x7C, 0xFE,
+  0xC7, 0x07, 0x06, 0x06, 0x0C, 0x18, 0x70, 0xFF, 0xFF, 0x7C, 0xFE, 0xC7,
+  0x07, 0x3E, 0x3E, 0x07, 0x03, 0xC7, 0xFE, 0x7C, 0x03, 0x03, 0x83, 0xC3,
+  0x63, 0x31, 0x99, 0x8D, 0xFF, 0xFF, 0x81, 0x80, 0xC0, 0x7E, 0x7E, 0x60,
+  0xFC, 0xFE, 0x47, 0x03, 0x03, 0xC7, 0xFE, 0x7C, 0x3E, 0x7F, 0xC3, 0xDC,
+  0xFE, 0xC7, 0xC3, 0xC3, 0xC7, 0xFE, 0x7C, 0xFF, 0xFF, 0x06, 0x06, 0x0C,
+  0x0C, 0x18, 0x18, 0x38, 0x30, 0x70, 0x7C, 0xFE, 0xC3, 0xC3, 0xFE, 0xFE,
+  0xC7, 0xC3, 0xC3, 0xFE, 0x7C, 0x7C, 0xFE, 0xC7, 0xC3, 0xC3, 0xC3, 0xFE,
+  0x36, 0x0C, 0x1C, 0x38, 0xFF, 0x80, 0x3F, 0xE0, 0xFF, 0x80, 0x1F, 0xED,
+  0x80, 0x00, 0x83, 0xC7, 0x8F, 0x0E, 0x03, 0xC0, 0x7C, 0x07, 0x00, 0x80,
+  0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0xC0, 0x78, 0x0F, 0x00, 0xF0,
+  0x18, 0x7C, 0xF1, 0xE0, 0x80, 0x00, 0x7E, 0xFF, 0xC3, 0x03, 0x06, 0x0C,
+  0x18, 0x00, 0x38, 0x38, 0x38, 0x1E, 0x3F, 0x98, 0x68, 0x34, 0xFA, 0x4F,
+  0x26, 0x93, 0x4F, 0xA0, 0x18, 0x2F, 0xF3, 0xF0, 0x0C, 0x0E, 0x07, 0x83,
+  0xC3, 0x61, 0xB8, 0xCC, 0xFE, 0x7F, 0x30, 0xF8, 0x60, 0xFE, 0xFE, 0xC7,
+  0xC7, 0xFE, 0xFE, 0xC7, 0xC3, 0xC3, 0xFF, 0xFE, 0x7E, 0xFF, 0xC7, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xC0, 0xC7, 0xFE, 0x7C, 0xFC, 0xFE, 0xC6, 0xC7, 0xC7,
+  0xC7, 0xC7, 0xC7, 0xC6, 0xFE, 0xFC, 0xFF, 0xFF, 0xC0, 0xC0, 0xFF, 0xFF,
+  0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xC0, 0x7E, 0xFF, 0xC7, 0xC0, 0xCF, 0xCF, 0xC3, 0xC3,
+  0xC3, 0xFF, 0x7B, 0xC7, 0xC7, 0xC7, 0xC7, 0xFF, 0xFF, 0xC7, 0xC7, 0xC7,
+  0xC7, 0xC7, 0xFF, 0xFC, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x19, 0xFF, 0xF8,
+  0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xC6, 0xFE, 0x7C, 0xC7,
+  0xC6, 0xCC, 0xDC, 0xFC, 0xFC, 0xEE, 0xC6, 0xC6, 0xC7, 0xC3, 0xC0, 0xC0,
+  0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xE1, 0xF1, 0xFC,
+  0xFE, 0xFF, 0xDF, 0x6F, 0xA7, 0xC3, 0xE1, 0xF0, 0xF8, 0x60, 0xC3, 0xE3,
+  0xE3, 0xF3, 0xF3, 0xDB, 0xDF, 0xCF, 0xC7, 0xC7, 0xC3, 0x7E, 0xFE, 0xC7,
+  0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC7, 0xFE, 0x7E, 0xFE, 0xFF, 0xC3, 0xC3,
+  0xC3, 0xC7, 0xFE, 0xFC, 0xC0, 0xC0, 0xC0, 0x7E, 0xFE, 0xC7, 0xC3, 0xC3,
+  0xC3, 0xC3, 0xC3, 0xC7, 0xFE, 0x7E, 0x08, 0x0F, 0x07, 0xFE, 0xFF, 0xC3,
+  0xC3, 0xC3, 0xFF, 0xFC, 0xCC, 0xCE, 0xC6, 0xC7, 0x3F, 0x3F, 0xD8, 0xEC,
+  0x07, 0xC1, 0xF8, 0x0F, 0x03, 0x63, 0xBF, 0x8F, 0x80, 0xFF, 0xFF, 0x18,
+  0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xC7, 0xC7, 0xC7, 0xC7,
+  0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xFE, 0x7E, 0xE1, 0xB1, 0xD8, 0xCE, 0x63,
+  0x31, 0xB0, 0xD8, 0x3C, 0x1E, 0x0E, 0x07, 0x00, 0xC1, 0xE4, 0xF3, 0x79,
+  0xBD, 0xDB, 0xED, 0xDE, 0xEF, 0x73, 0xB1, 0xD8, 0xC0, 0x73, 0x99, 0x8F,
+  0xC3, 0xC1, 0xE0, 0xE0, 0x78, 0x6C, 0x77, 0x31, 0xF8, 0xE0, 0xE1, 0xB9,
+  0x8D, 0xC7, 0xC1, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0xFF,
+  0xFC, 0x38, 0x61, 0xC7, 0x0C, 0x38, 0x61, 0xFF, 0xF8, 0xFF, 0xFC, 0x30,
+  0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x3F, 0xFC, 0xC0, 0x30,
+  0x18, 0x06, 0x03, 0x00, 0xC0, 0x60, 0x18, 0x0C, 0x03, 0x01, 0x80, 0x60,
+  0x30, 0x0C, 0x06, 0xFF, 0xFC, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C,
+  0x38, 0x70, 0xE1, 0xC3, 0xFF, 0xFE, 0x1C, 0x0F, 0x0D, 0x86, 0x66, 0x37,
+  0x0C, 0xFF, 0xFF, 0xC0, 0xE0, 0xC0, 0x7C, 0xFE, 0xC6, 0x3E, 0xF6, 0xC6,
+  0xFF, 0x7F, 0xC0, 0xC0, 0xC0, 0xDE, 0xFE, 0xC7, 0xC7, 0xC7, 0xC7, 0xFE,
+  0xDE, 0x7D, 0xFF, 0x1E, 0x0C, 0x18, 0xFF, 0xBE, 0x06, 0x0C, 0x1B, 0xFF,
+  0xF8, 0xF1, 0xE3, 0xC7, 0xFD, 0xF8, 0x7D, 0xFF, 0x1F, 0xFF, 0xF8, 0x3F,
+  0xBE, 0x1F, 0x1F, 0xCC, 0x1F, 0xEF, 0xF1, 0x80, 0xC0, 0x60, 0x30, 0x18,
+  0x0C, 0x00, 0x03, 0x81, 0xCF, 0x8F, 0xE6, 0x3B, 0x1D, 0xFC, 0x3C, 0x7F,
+  0x3F, 0xF0, 0x7F, 0xF7, 0xF8, 0xC1, 0x83, 0x06, 0xFF, 0xF8, 0xF1, 0xE3,
+  0xC7, 0x8F, 0x18, 0x30, 0xC3, 0x3C, 0xF0, 0xC3, 0x0C, 0x33, 0xFF, 0xC0,
+  0x0E, 0x1C, 0x19, 0xF3, 0xE0, 0xC1, 0x83, 0x06, 0x0C, 0x1E, 0x3F, 0xEF,
+  0x80, 0xC0, 0xC0, 0xC0, 0xC7, 0xCE, 0xDC, 0xFC, 0xE6, 0xC6, 0xC7, 0xC3,
+  0xF3, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x33, 0xFF, 0xC0, 0xFB, 0xFF, 0xF3,
+  0x79, 0xBC, 0xDE, 0x6F, 0x37, 0x9B, 0xDF, 0xFF, 0x1E, 0x3C, 0x78, 0xF1,
+  0xE3, 0x7C, 0xFE, 0xC6, 0xC7, 0xC7, 0xC6, 0xFE, 0x7C, 0xDE, 0xFE, 0xC7,
+  0xC7, 0xC7, 0xC7, 0xFE, 0xDE, 0xC0, 0xC0, 0xC0, 0x7F, 0xFF, 0x1E, 0x3C,
+  0x78, 0xFF, 0xBF, 0x06, 0x0C, 0x18, 0xDE, 0xFF, 0xC3, 0xC0, 0xC0, 0xC0,
+  0xC0, 0xC0, 0x7D, 0xFF, 0x1B, 0xC0, 0xF8, 0xFF, 0xBE, 0x30, 0x18, 0x3F,
+  0xDF, 0xE3, 0x01, 0x80, 0xC0, 0x63, 0x3F, 0x8F, 0x80, 0xC7, 0x8F, 0x1E,
+  0x3C, 0x78, 0xFF, 0xBF, 0xE1, 0xB1, 0xDC, 0xC6, 0x63, 0x60, 0xF0, 0x70,
+  0x38, 0xC1, 0xE4, 0xF3, 0x6F, 0xB7, 0x5B, 0xBD, 0xCC, 0xC6, 0x73, 0x99,
+  0x87, 0x83, 0x81, 0xE1, 0xB1, 0xCD, 0xC3, 0xE1, 0xB1, 0x8C, 0xC6, 0xC1,
+  0xE0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x00, 0xFF, 0xFC, 0x30, 0xC3,
+  0x0C, 0x3F, 0xFF, 0x1F, 0x1F, 0x18, 0x18, 0x18, 0x1C, 0x1C, 0x1C, 0xF8,
+  0xF8, 0x0C, 0x1C, 0x18, 0x18, 0x18, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
+  0xC0, 0xF8, 0xFC, 0x0C, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x18,
+  0x18, 0x18, 0x1C, 0x0C, 0xFC, 0xF8, 0x78, 0xFF, 0xE1, 0xC0 };
+
+const GFXglyph nk57_monospace_no_bd7pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   9,    0,    0 },   // 0x20 ' '
+  {     1,   3,  11,   9,    3,  -10 },   // 0x21 '!'
+  {     6,   6,   5,   9,    2,  -10 },   // 0x22 '"'
+  {    10,   9,  11,   9,    0,  -10 },   // 0x23 '#'
+  {    23,   8,  14,   9,    1,  -12 },   // 0x24 '$'
+  {    37,   9,  13,   9,    0,  -11 },   // 0x25 '%'
+  {    52,   9,  11,   9,    0,  -10 },   // 0x26 '&'
+  {    65,   2,   5,   9,    4,  -10 },   // 0x27 '''
+  {    67,   7,  17,   9,    2,  -13 },   // 0x28 '('
+  {    82,   6,  17,   9,    1,  -13 },   // 0x29 ')'
+  {    95,   7,   8,   9,    1,  -10 },   // 0x2A '*'
+  {   102,   9,   7,   9,    0,   -8 },   // 0x2B '+'
+  {   110,   3,   5,   9,    3,   -2 },   // 0x2C ','
+  {   112,   6,   2,   9,    2,   -5 },   // 0x2D '-'
+  {   114,   3,   3,   9,    3,   -2 },   // 0x2E '.'
+  {   116,   9,  15,   9,    0,  -12 },   // 0x2F '/'
+  {   133,   8,  11,   9,    1,  -10 },   // 0x30 '0'
+  {   144,   7,  11,   9,    1,  -10 },   // 0x31 '1'
+  {   154,   8,  11,   9,    1,  -10 },   // 0x32 '2'
+  {   165,   8,  11,   9,    1,  -10 },   // 0x33 '3'
+  {   176,   9,  11,   9,    0,  -10 },   // 0x34 '4'
+  {   189,   8,  11,   9,    1,  -10 },   // 0x35 '5'
+  {   200,   8,  11,   9,    1,  -10 },   // 0x36 '6'
+  {   211,   8,  11,   9,    1,  -10 },   // 0x37 '7'
+  {   222,   8,  11,   9,    1,  -10 },   // 0x38 '8'
+  {   233,   8,  11,   9,    1,  -10 },   // 0x39 '9'
+  {   244,   3,   9,   9,    3,   -8 },   // 0x3A ':'
+  {   248,   3,  11,   9,    3,   -8 },   // 0x3B ';'
+  {   253,   9,   9,   9,    0,   -9 },   // 0x3C '<'
+  {   264,   9,   6,   9,    0,   -8 },   // 0x3D '='
+  {   271,   9,   9,   9,    0,   -9 },   // 0x3E '>'
+  {   282,   8,  11,   9,    1,  -10 },   // 0x3F '?'
+  {   293,   9,  13,   9,    0,  -10 },   // 0x40 '@'
+  {   308,   9,  11,   9,    0,  -10 },   // 0x41 'A'
+  {   321,   8,  11,   9,    1,  -10 },   // 0x42 'B'
+  {   332,   8,  11,   9,    1,  -10 },   // 0x43 'C'
+  {   343,   8,  11,   9,    1,  -10 },   // 0x44 'D'
+  {   354,   8,  11,   9,    1,  -10 },   // 0x45 'E'
+  {   365,   8,  11,   9,    1,  -10 },   // 0x46 'F'
+  {   376,   8,  11,   9,    1,  -10 },   // 0x47 'G'
+  {   387,   8,  11,   9,    1,  -10 },   // 0x48 'H'
+  {   398,   7,  11,   9,    1,  -10 },   // 0x49 'I'
+  {   408,   8,  11,   9,    1,  -10 },   // 0x4A 'J'
+  {   419,   8,  11,   9,    1,  -10 },   // 0x4B 'K'
+  {   430,   8,  11,   9,    1,  -10 },   // 0x4C 'L'
+  {   441,   9,  11,   9,    0,  -10 },   // 0x4D 'M'
+  {   454,   8,  11,   9,    1,  -10 },   // 0x4E 'N'
+  {   465,   8,  11,   9,    1,  -10 },   // 0x4F 'O'
+  {   476,   8,  11,   9,    1,  -10 },   // 0x50 'P'
+  {   487,   8,  14,   9,    1,  -10 },   // 0x51 'Q'
+  {   501,   8,  11,   9,    1,  -10 },   // 0x52 'R'
+  {   512,   9,  11,   9,    0,  -10 },   // 0x53 'S'
+  {   525,   8,  11,   9,    1,  -10 },   // 0x54 'T'
+  {   536,   8,  11,   9,    1,  -10 },   // 0x55 'U'
+  {   547,   9,  11,   9,    0,  -10 },   // 0x56 'V'
+  {   560,   9,  11,   9,    0,  -10 },   // 0x57 'W'
+  {   573,   9,  11,   9,    0,  -10 },   // 0x58 'X'
+  {   586,   9,  11,   9,    0,  -10 },   // 0x59 'Y'
+  {   599,   7,  11,   9,    1,  -10 },   // 0x5A 'Z'
+  {   609,   6,  17,   9,    3,  -13 },   // 0x5B '['
+  {   622,   9,  15,   9,    0,  -12 },   // 0x5C '\'
+  {   639,   7,  17,   9,    0,  -13 },   // 0x5D ']'
+  {   654,   9,   6,   9,    0,  -10 },   // 0x5E '^'
+  {   661,   9,   2,   9,    0,    2 },   // 0x5F '_'
+  {   664,   5,   2,   9,    2,  -10 },   // 0x60 '`'
+  {   666,   8,   8,   9,    1,   -7 },   // 0x61 'a'
+  {   674,   8,  11,   9,    1,  -10 },   // 0x62 'b'
+  {   685,   7,   8,   9,    1,   -7 },   // 0x63 'c'
+  {   692,   7,  11,   9,    1,  -10 },   // 0x64 'd'
+  {   702,   7,   8,   9,    1,   -7 },   // 0x65 'e'
+  {   709,   9,  11,   9,    0,  -10 },   // 0x66 'f'
+  {   722,   9,  13,   9,    0,   -9 },   // 0x67 'g'
+  {   737,   7,  11,   9,    1,  -10 },   // 0x68 'h'
+  {   747,   6,  11,   9,    2,  -10 },   // 0x69 'i'
+  {   756,   7,  14,   9,    1,  -10 },   // 0x6A 'j'
+  {   769,   8,  11,   9,    1,  -10 },   // 0x6B 'k'
+  {   780,   6,  11,   9,    2,  -10 },   // 0x6C 'l'
+  {   789,   9,   8,   9,    0,   -7 },   // 0x6D 'm'
+  {   798,   7,   8,   9,    1,   -7 },   // 0x6E 'n'
+  {   805,   8,   8,   9,    1,   -7 },   // 0x6F 'o'
+  {   813,   8,  11,   9,    1,   -7 },   // 0x70 'p'
+  {   824,   7,  11,   9,    1,   -7 },   // 0x71 'q'
+  {   834,   8,   8,   9,    1,   -7 },   // 0x72 'r'
+  {   842,   7,   8,   9,    1,   -7 },   // 0x73 's'
+  {   849,   9,  10,   9,    0,   -9 },   // 0x74 't'
+  {   861,   7,   8,   9,    1,   -7 },   // 0x75 'u'
+  {   868,   9,   8,   9,    0,   -7 },   // 0x76 'v'
+  {   877,   9,   8,   9,    0,   -7 },   // 0x77 'w'
+  {   886,   9,   8,   9,    0,   -7 },   // 0x78 'x'
+  {   895,   9,  11,   9,    0,   -7 },   // 0x79 'y'
+  {   908,   7,   8,   9,    1,   -7 },   // 0x7A 'z'
+  {   915,   8,  17,   9,    1,  -13 },   // 0x7B '{'
+  {   932,   2,  17,   9,    4,  -13 },   // 0x7C '|'
+  {   937,   8,  17,   9,    0,  -13 },   // 0x7D '}'
+  {   954,   9,   3,   9,    0,   -6 } }; // 0x7E '~'
+
+const GFXfont nk57_monospace_no_bd7pt7b PROGMEM = {
+  (uint8_t  *)nk57_monospace_no_bd7pt7bBitmaps,
+  (GFXglyph *)nk57_monospace_no_bd7pt7bGlyphs,
+  0x20, 0x7E, 16 };
+
+// Approx. 1630 bytes
+const uint8_t EuphemiaCAS7pt7bBitmaps[] PROGMEM = {
+  0x00, 0xFF, 0x40, 0xB4, 0x11, 0x84, 0x41, 0x13, 0xFF, 0x11, 0x08, 0x42,
+  0x10, 0x88, 0xFF, 0xC8, 0x82, 0x21, 0x88, 0x10, 0x79, 0x52, 0x85, 0x06,
+  0x07, 0x0B, 0x12, 0x27, 0x5B, 0xE1, 0x00, 0x70, 0x51, 0x12, 0x24, 0x44,
+  0x88, 0xA0, 0xEB, 0x82, 0x88, 0x51, 0x12, 0x24, 0x45, 0x87, 0x20, 0x00,
+  0x30, 0x48, 0x48, 0x50, 0x20, 0xD0, 0x89, 0x8A, 0xC6, 0x7B, 0xC0, 0x29,
+  0x49, 0x24, 0x89, 0x22, 0x91, 0x12, 0x49, 0x29, 0x48, 0xAB, 0x88, 0xEA,
+  0x80, 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04, 0x00, 0x58, 0xE0, 0x80, 0x01,
+  0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40,
+  0x80, 0x79, 0x28, 0x61, 0x86, 0x18, 0x61, 0x49, 0xE0, 0x65, 0x08, 0x42,
+  0x10, 0x84, 0x27, 0xC0, 0x7A, 0x10, 0x41, 0x08, 0x42, 0x10, 0x83, 0xF0,
+  0x7A, 0x20, 0x42, 0x30, 0x30, 0x41, 0x8F, 0xE0, 0x04, 0x18, 0x51, 0x22,
+  0x48, 0xBF, 0x82, 0x04, 0x08, 0xFA, 0x08, 0x3E, 0x8C, 0x10, 0x41, 0x8B,
+  0xE0, 0x3D, 0x08, 0x3E, 0x8E, 0x18, 0x61, 0xCD, 0xE0, 0xFC, 0x10, 0x82,
+  0x08, 0x41, 0x08, 0x21, 0x00, 0x7A, 0x18, 0x73, 0x31, 0x28, 0x61, 0xCD,
+  0xE0, 0x7B, 0x38, 0x61, 0xC5, 0xF0, 0x43, 0x0B, 0xC0, 0x82, 0x40, 0x05,
+  0x80, 0x08, 0x88, 0x88, 0x41, 0x04, 0x10, 0x40, 0xFE, 0x03, 0xF8, 0x86,
+  0x18, 0x61, 0x8C, 0xCC, 0xC4, 0x00, 0xF4, 0xC2, 0x11, 0x91, 0x08, 0x02,
+  0x00, 0x0F, 0x83, 0x04, 0x40, 0x24, 0x01, 0x8F, 0x99, 0x09, 0x90, 0x99,
+  0x09, 0x99, 0xA4, 0xFE, 0x60, 0x03, 0x00, 0x0F, 0x00, 0x08, 0x18, 0x14,
+  0x14, 0x24, 0x22, 0x7E, 0x43, 0x41, 0xC1, 0xFA, 0x18, 0x63, 0xF2, 0x38,
+  0x61, 0x8F, 0xE0, 0x3C, 0x42, 0xC0, 0x80, 0x80, 0x80, 0x80, 0xC0, 0x63,
+  0x3C, 0xF9, 0x1A, 0x1C, 0x18, 0x30, 0x60, 0xC2, 0x8D, 0xF0, 0xFA, 0x08,
+  0x20, 0xFA, 0x08, 0x20, 0x83, 0xF0, 0xFC, 0x21, 0x0F, 0xC2, 0x10, 0x84,
+  0x00, 0x3C, 0x8F, 0x04, 0x08, 0x10, 0x60, 0xE1, 0x42, 0x7C, 0x83, 0x06,
+  0x0C, 0x1F, 0xF0, 0x60, 0xC1, 0x83, 0x04, 0xFF, 0xC0, 0x04, 0x10, 0x41,
+  0x04, 0x10, 0x61, 0x45, 0xE0, 0x87, 0x12, 0x45, 0x0C, 0x18, 0x28, 0x48,
+  0x89, 0x0C, 0x82, 0x08, 0x20, 0x82, 0x08, 0x20, 0x83, 0xF0, 0x80, 0xE0,
+  0xF0, 0x78, 0x3A, 0x2D, 0x16, 0x53, 0x29, 0x94, 0xC4, 0x40, 0x81, 0xC1,
+  0xA1, 0xB1, 0x91, 0x89, 0x8D, 0x85, 0x83, 0x83, 0x3E, 0x31, 0x90, 0x70,
+  0x18, 0x0C, 0x06, 0x03, 0x82, 0x63, 0x1F, 0x00, 0xFA, 0x38, 0x61, 0x8F,
+  0xC8, 0x20, 0x82, 0x00, 0x3E, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 0x03,
+  0x83, 0x63, 0x1F, 0x01, 0x00, 0x40, 0x10, 0xF9, 0x1A, 0x14, 0x28, 0xDE,
+  0x24, 0x44, 0x8D, 0x0C, 0x3C, 0x8D, 0x02, 0x03, 0x01, 0x80, 0x81, 0xC6,
+  0xF8, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x20, 0x81, 0x81,
+  0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xC3, 0x7C, 0xC1, 0x43, 0x42, 0x62,
+  0x26, 0x24, 0x34, 0x18, 0x18, 0x18, 0xC6, 0x34, 0x62, 0x46, 0x24, 0x62,
+  0x69, 0x62, 0x94, 0x29, 0x42, 0x94, 0x30, 0xC1, 0x08, 0x43, 0x22, 0x24,
+  0x1C, 0x08, 0x18, 0x34, 0x26, 0x42, 0xC1, 0x82, 0x89, 0x11, 0x43, 0x02,
+  0x04, 0x08, 0x10, 0x20, 0x7E, 0x08, 0x10, 0x41, 0x02, 0x08, 0x30, 0x41,
+  0xFC, 0xEA, 0xAA, 0xAA, 0xC0, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10,
+  0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0xD5, 0x55, 0x55, 0xC0, 0x08,
+  0x18, 0x14, 0x22, 0x62, 0xC1, 0xFE, 0x5C, 0x80, 0x72, 0x20, 0x9E, 0x8A,
+  0x2F, 0xC0, 0x82, 0x08, 0x3E, 0x8E, 0x18, 0x61, 0x8F, 0xE0, 0x39, 0x18,
+  0x20, 0x81, 0x17, 0x80, 0x04, 0x10, 0x5F, 0x46, 0x18, 0x61, 0xC5, 0xF0,
+  0x7A, 0x1F, 0xE0, 0x83, 0x17, 0x80, 0x3A, 0x11, 0xE4, 0x21, 0x08, 0x42,
+  0x00, 0x7E, 0x28, 0xA2, 0x72, 0x07, 0xA2, 0x8B, 0xC0, 0x82, 0x08, 0x2E,
+  0xC6, 0x18, 0x61, 0x86, 0x10, 0x9F, 0xC0, 0x20, 0x12, 0x49, 0x24, 0x9C,
+  0x84, 0x21, 0x3B, 0x72, 0x94, 0x94, 0x40, 0xAA, 0xAA, 0xB0, 0xF7, 0x44,
+  0x62, 0x31, 0x18, 0x8C, 0x46, 0x22, 0xBB, 0x18, 0x61, 0x86, 0x18, 0x40,
+  0x7B, 0x38, 0x61, 0x87, 0x37, 0x80, 0xFA, 0x38, 0x61, 0x86, 0x3F, 0xA0,
+  0x82, 0x00, 0x7F, 0x18, 0x61, 0x87, 0x17, 0xC1, 0x04, 0x10, 0xBC, 0x88,
+  0x88, 0x80, 0x74, 0x60, 0xE0, 0xC5, 0xC0, 0x44, 0xF4, 0x44, 0x44, 0x70,
+  0x86, 0x18, 0x61, 0x86, 0x17, 0xC0, 0x82, 0x89, 0x12, 0x22, 0x85, 0x04,
+  0x00, 0x88, 0xA4, 0xD5, 0x4A, 0xA3, 0x51, 0x90, 0x88, 0xC5, 0x23, 0x04,
+  0x31, 0x2C, 0x40, 0xC6, 0x89, 0x11, 0x42, 0x83, 0x04, 0x08, 0x21, 0xC0,
+  0x7C, 0x31, 0x84, 0x21, 0x0F, 0xC0, 0x19, 0x08, 0x42, 0x33, 0x0C, 0x21,
+  0x08, 0x41, 0x80, 0xFF, 0xF8, 0xC2, 0x22, 0x22, 0x12, 0x22, 0x22, 0xC0,
+  0x71, 0xCE };
+
+const GFXglyph EuphemiaCAS7pt7bGlyphs[] PROGMEM = {
+  {     0,   1,   1,   7,    0,    0 },   // 0x20 ' '
+  {     1,   1,  10,   3,    1,   -9 },   // 0x21 '!'
+  {     3,   3,   2,   5,    1,   -9 },   // 0x22 '"'
+  {     4,  10,  12,  12,    1,  -10 },   // 0x23 '#'
+  {    19,   7,  13,   8,    0,  -11 },   // 0x24 '$'
+  {    31,  11,  12,  13,    1,  -10 },   // 0x25 '%'
+  {    48,   8,  10,  10,    1,   -9 },   // 0x26 '&'
+  {    58,   1,   2,   3,    1,   -9 },   // 0x27 '''
+  {    59,   3,  13,   4,    1,  -11 },   // 0x28 '('
+  {    64,   3,  13,   4,    1,  -11 },   // 0x29 ')'
+  {    69,   5,   5,   7,    1,  -10 },   // 0x2A '*'
+  {    73,   7,   7,   8,    1,   -7 },   // 0x2B '+'
+  {    80,   2,   3,   3,    0,    0 },   // 0x2C ','
+  {    81,   3,   1,   5,    1,   -4 },   // 0x2D '-'
+  {    82,   1,   1,   3,    1,    0 },   // 0x2E '.'
+  {    83,   8,  14,   8,    0,  -11 },   // 0x2F '/'
+  {    97,   6,  10,   8,    1,   -9 },   // 0x30 '0'
+  {   105,   5,  10,   8,    2,   -9 },   // 0x31 '1'
+  {   112,   6,  10,   8,    1,   -9 },   // 0x32 '2'
+  {   120,   6,  10,   8,    1,   -9 },   // 0x33 '3'
+  {   128,   7,  10,   8,    0,   -9 },   // 0x34 '4'
+  {   137,   6,  10,   8,    1,   -9 },   // 0x35 '5'
+  {   145,   6,  10,   8,    1,   -9 },   // 0x36 '6'
+  {   153,   6,  10,   8,    1,   -9 },   // 0x37 '7'
+  {   161,   6,  10,   8,    1,   -9 },   // 0x38 '8'
+  {   169,   6,  10,   8,    1,   -9 },   // 0x39 '9'
+  {   177,   1,   7,   3,    1,   -6 },   // 0x3A ':'
+  {   178,   2,   9,   3,    0,   -6 },   // 0x3B ';'
+  {   181,   5,  10,   7,    1,   -9 },   // 0x3C '<'
+  {   188,   7,   3,   9,    1,   -6 },   // 0x3D '='
+  {   191,   5,  10,   7,    1,   -9 },   // 0x3E '>'
+  {   198,   5,  10,   7,    1,   -9 },   // 0x3F '?'
+  {   205,  12,  13,  15,    1,   -9 },   // 0x40 '@'
+  {   225,   8,  10,   9,    0,   -9 },   // 0x41 'A'
+  {   235,   6,  10,   9,    1,   -9 },   // 0x42 'B'
+  {   243,   8,  10,   9,    1,   -9 },   // 0x43 'C'
+  {   253,   7,  10,   9,    1,   -9 },   // 0x44 'D'
+  {   262,   6,  10,   8,    1,   -9 },   // 0x45 'E'
+  {   270,   5,  10,   7,    1,   -9 },   // 0x46 'F'
+  {   277,   7,  10,   9,    1,   -9 },   // 0x47 'G'
+  {   286,   7,  10,  10,    1,   -9 },   // 0x48 'H'
+  {   295,   1,  10,   3,    1,   -9 },   // 0x49 'I'
+  {   297,   6,  10,   7,    0,   -9 },   // 0x4A 'J'
+  {   305,   7,  10,   9,    1,   -9 },   // 0x4B 'K'
+  {   314,   6,  10,   7,    1,   -9 },   // 0x4C 'L'
+  {   322,   9,  10,  11,    1,   -9 },   // 0x4D 'M'
+  {   334,   8,  10,  10,    1,   -9 },   // 0x4E 'N'
+  {   344,   9,  10,  11,    1,   -9 },   // 0x4F 'O'
+  {   356,   6,  10,   8,    1,   -9 },   // 0x50 'P'
+  {   364,   9,  13,  11,    1,   -9 },   // 0x51 'Q'
+  {   379,   7,  10,   8,    1,   -9 },   // 0x52 'R'
+  {   388,   7,  10,   8,    0,   -9 },   // 0x53 'S'
+  {   397,   7,  10,   8,    1,   -9 },   // 0x54 'T'
+  {   406,   8,  10,  10,    1,   -9 },   // 0x55 'U'
+  {   416,   8,  10,   8,    0,   -9 },   // 0x56 'V'
+  {   426,  12,  10,  12,    0,   -9 },   // 0x57 'W'
+  {   441,   8,  10,   9,    0,   -9 },   // 0x58 'X'
+  {   451,   7,  10,   8,    0,   -9 },   // 0x59 'Y'
+  {   460,   7,  10,   8,    0,   -9 },   // 0x5A 'Z'
+  {   469,   2,  13,   4,    1,  -11 },   // 0x5B '['
+  {   473,   8,  14,   9,    0,  -11 },   // 0x5C '\'
+  {   487,   2,  13,   4,    1,  -11 },   // 0x5D ']'
+  {   491,   8,   6,   9,    0,  -10 },   // 0x5E '^'
+  {   497,   7,   1,   7,    0,    3 },   // 0x5F '_'
+  {   498,   3,   3,   0,   -2,  -10 },   // 0x60 '`'
+  {   500,   6,   7,   8,    1,   -6 },   // 0x61 'a'
+  {   506,   6,  10,   8,    1,   -9 },   // 0x62 'b'
+  {   514,   6,   7,   7,    1,   -6 },   // 0x63 'c'
+  {   520,   6,  10,   8,    1,   -9 },   // 0x64 'd'
+  {   528,   6,   7,   8,    1,   -6 },   // 0x65 'e'
+  {   534,   5,  10,   4,    0,   -9 },   // 0x66 'f'
+  {   541,   6,  10,   8,    1,   -6 },   // 0x67 'g'
+  {   549,   6,  10,   8,    1,   -9 },   // 0x68 'h'
+  {   557,   1,  10,   3,    1,   -9 },   // 0x69 'i'
+  {   559,   3,  13,   3,   -1,   -9 },   // 0x6A 'j'
+  {   564,   5,  10,   7,    1,   -9 },   // 0x6B 'k'
+  {   571,   2,  10,   3,    1,   -9 },   // 0x6C 'l'
+  {   574,   9,   7,  11,    1,   -6 },   // 0x6D 'm'
+  {   582,   6,   7,   8,    1,   -6 },   // 0x6E 'n'
+  {   588,   6,   7,   8,    1,   -6 },   // 0x6F 'o'
+  {   594,   6,  10,   8,    1,   -6 },   // 0x70 'p'
+  {   602,   6,  10,   8,    1,   -6 },   // 0x71 'q'
+  {   610,   4,   7,   5,    1,   -6 },   // 0x72 'r'
+  {   614,   5,   7,   7,    1,   -6 },   // 0x73 's'
+  {   619,   4,   9,   5,    0,   -8 },   // 0x74 't'
+  {   624,   6,   7,   8,    1,   -6 },   // 0x75 'u'
+  {   630,   7,   7,   7,    0,   -6 },   // 0x76 'v'
+  {   637,   9,   7,   9,    0,   -6 },   // 0x77 'w'
+  {   645,   6,   7,   6,    0,   -6 },   // 0x78 'x'
+  {   651,   7,  10,   7,    0,   -6 },   // 0x79 'y'
+  {   660,   6,   7,   7,    0,   -6 },   // 0x7A 'z'
+  {   666,   5,  13,   5,    0,  -10 },   // 0x7B '{'
+  {   675,   1,  13,   7,    3,   -9 },   // 0x7C '|'
+  {   677,   4,  13,   5,    0,  -10 },   // 0x7D '}'
+  {   684,   8,   2,   9,    0,   -4 } }; // 0x7E '~'
+
+const GFXfont EuphemiaCAS7pt7b PROGMEM = {
+  (uint8_t  *)EuphemiaCAS7pt7bBitmaps,
+  (GFXglyph *)EuphemiaCAS7pt7bGlyphs,
+  0x20, 0x7E, 19 };
+
+// Approx. 1358 bytes
+
+
+// Approx. 1522 bytes
+
+#endif /* CUSTOM_FONTS_H_ */
--- /dev/null
+++ b/LEAF/Inc/debug.h
@@ -1,0 +1,56 @@
+/**
+  ******************************************************************************
+  * File Name          : DEBUG.h
+  * Description        : This file provides code for the configuration
+  *                      of the DEBUG instances.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __debug_H
+#define __debug_H
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_DEBUG_Init(void);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__ debug_H */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/dma.h
@@ -1,0 +1,56 @@
+/**
+  ******************************************************************************
+  * File Name          : dma.h
+  * Description        : This file contains all the function prototypes for
+  *                      the dma.c file
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __dma_H
+#define __dma_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* DMA memory to memory transfer handles -------------------------------------*/
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_DMA_Init(void);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __dma_H */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/eeprom.h
@@ -1,0 +1,125 @@
+
+
+/**
+  ******************************************************************************
+  * @file    EEPROM_Emulation/inc/eeprom.h
+  * @author  MCD Application Team
+  * @brief   This file contains all the functions prototypes for the EEPROM
+  *          emulation firmware library.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __EEPROM_H
+#define __EEPROM_H
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32h7xx_hal.h"
+#include "main.h"
+
+/* Exported constants --------------------------------------------------------*/
+/* EEPROM emulation firmware error codes */
+#define EE_OK      (uint32_t)HAL_OK
+#define EE_ERROR   (uint32_t)HAL_ERROR
+#define EE_BUSY    (uint32_t)HAL_BUSY
+#define EE_TIMEOUT (uint32_t)HAL_TIMEOUT
+
+
+#define FLASH_BASE_ADDR      (uint32_t)(FLASH_BASE)
+#define FLASH_END_ADDR       (uint32_t)(0x081FFFFF)
+
+/* Base address of the Flash sectors Bank 1 */
+#define ADDR_FLASH_SECTOR_0_BANK1     ((uint32_t)0x08000000) /* Base @ of Sector 0, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_1_BANK1     ((uint32_t)0x08020000) /* Base @ of Sector 1, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_2_BANK1     ((uint32_t)0x08040000) /* Base @ of Sector 2, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_3_BANK1     ((uint32_t)0x08060000) /* Base @ of Sector 3, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_4_BANK1     ((uint32_t)0x08080000) /* Base @ of Sector 4, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_5_BANK1     ((uint32_t)0x080A0000) /* Base @ of Sector 5, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_6_BANK1     ((uint32_t)0x080C0000) /* Base @ of Sector 6, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_7_BANK1     ((uint32_t)0x080E0000) /* Base @ of Sector 7, 128 Kbytes */
+
+/* Base address of the Flash sectors Bank 2 */
+#define ADDR_FLASH_SECTOR_0_BANK2     ((uint32_t)0x08100000) /* Base @ of Sector 0, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_1_BANK2     ((uint32_t)0x08120000) /* Base @ of Sector 1, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_2_BANK2     ((uint32_t)0x08140000) /* Base @ of Sector 2, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_3_BANK2     ((uint32_t)0x08160000) /* Base @ of Sector 3, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_4_BANK2     ((uint32_t)0x08180000) /* Base @ of Sector 4, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_5_BANK2     ((uint32_t)0x081A0000) /* Base @ of Sector 5, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_6_BANK2     ((uint32_t)0x081C0000) /* Base @ of Sector 6, 128 Kbytes */
+#define ADDR_FLASH_SECTOR_7_BANK2     ((uint32_t)0x081E0000) /* Base @ of Sector 7, 128 Kbytes */
+
+
+/* Define the size of the sectors to be used */
+
+  #define PAGE_SIZE               (uint32_t)0x20000  /* Page size = 128KByte */
+
+
+/* Device voltage range supposed to be [2.7V to 3.6V], the operation will
+   be done by word  */
+#define VOLTAGE_RANGE           (uint8_t)VOLTAGE_RANGE_3
+
+/* EEPROM emulation start address in Flash */
+
+  #define EEPROM_START_ADDRESS  ADDR_FLASH_SECTOR_6_BANK2 /* sector6 of bank 2 */
+
+
+/* Pages 0 and 1 base and end addresses */
+#define PAGE0_BASE_ADDRESS    ((uint32_t)(EEPROM_START_ADDRESS + 0x0000))
+#define PAGE0_END_ADDRESS     ((uint32_t)(EEPROM_START_ADDRESS + (PAGE_SIZE - 1)))
+
+  #define PAGE0_ID               FLASH_SECTOR_6
+
+
+#define PAGE1_BASE_ADDRESS    ((uint32_t)(EEPROM_START_ADDRESS + PAGE_SIZE))
+#define PAGE1_END_ADDRESS     ((uint32_t)(EEPROM_START_ADDRESS + (2 * PAGE_SIZE - 1)))
+
+  #define PAGE1_ID               FLASH_SECTOR_7
+
+
+/* Used Flash pages for EEPROM emulation */
+#define PAGE0                 ((uint16_t)0x0000)
+#define PAGE1                 ((uint16_t)0x0001) /* Page nb between PAGE0_BASE_ADDRESS & PAGE1_BASE_ADDRESS*/
+
+/* No valid page define */
+#define NO_VALID_PAGE         ((uint16_t)0x00AB)
+
+/* Page status definitions */
+#define ERASED                ((uint16_t)0xFFFF)     /* Page is empty */
+#define RECEIVE_DATA          ((uint16_t)0xEEEE)     /* Page is marked to receive data */
+#define VALID_PAGE            ((uint16_t)0x0000)     /* Page containing valid data */
+
+/* Valid pages in read and write defines */
+#define READ_FROM_VALID_PAGE  ((uint8_t)0x00)
+#define WRITE_IN_VALID_PAGE   ((uint8_t)0x01)
+
+/* Page full define */
+#define PAGE_FULL             ((uint8_t)0x80)
+
+/* Variables' number */
+#define NB_OF_VAR             ((uint8_t)0x03)
+
+/* Exported types ------------------------------------------------------------*/
+/* Exported macro ------------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */
+
+/* Virtual address defined by the user: 0xFFFF value is prohibited */
+extern uint16_t VirtAddVarTab[NB_OF_VAR];
+uint16_t EE_Init(void);
+uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data);
+uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data);
+
+#endif /* __EEPROM_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
--- /dev/null
+++ b/LEAF/Inc/fatfs.h
@@ -1,0 +1,49 @@
+/**
+  ******************************************************************************
+  * @file   fatfs.h
+  * @brief  Header for fatfs applications
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __fatfs_H
+#define __fatfs_H
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "ff.h"
+#include "ff_gen_drv.h"
+#include "sd_diskio.h" /* defines SD_Driver as external */
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+extern uint8_t retSD; /* Return value for SD */
+extern char SDPath[4]; /* SD logical drive path */
+extern FATFS SDFatFS; /* File system object for SD logical drive */
+extern FIL SDFile; /* File object for SD */
+
+void MX_FATFS_Init(void);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+#ifdef __cplusplus
+}
+#endif
+#endif /*__fatfs_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/fatfs_platform.h
@@ -1,0 +1,26 @@
+/**
+  ******************************************************************************
+  * @file           : fatfs_platform.h
+  * @brief          : fatfs_platform header file
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+*/
+/* Includes ------------------------------------------------------------------*/
+#include "stm32h7xx_hal.h"           
+/* Defines ------------------------------------------------------------------*/
+#define SD_PRESENT               ((uint8_t)0x01)  /* also in bsp_driver_sd.h */
+#define SD_NOT_PRESENT           ((uint8_t)0x00)  /* also in bsp_driver_sd.h */
+#define SD_DETECT_PIN         GPIO_PIN_13
+#define SD_DETECT_GPIO_PORT   GPIOC
+/* Prototypes ---------------------------------------------------------------*/
+uint8_t	BSP_PlatformIsDetected(void);
--- /dev/null
+++ b/LEAF/Inc/ffconf.h
@@ -1,0 +1,269 @@
+/* USER CODE BEGIN Header */
+/**
+  ******************************************************************************
+  *  FatFs - Generic FAT file system module  R0.12c (C)ChaN, 2017
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* USER CODE END Header */
+
+#ifndef _FFCONF
+#define _FFCONF 68300	/* Revision ID */
+
+/*-----------------------------------------------------------------------------/
+/ Additional user header to be used  
+/-----------------------------------------------------------------------------*/
+#include "main.h"
+#include "stm32h7xx_hal.h"
+#include "bsp_driver_sd.h"
+
+/*-----------------------------------------------------------------------------/
+/ Function Configurations
+/-----------------------------------------------------------------------------*/
+
+#define _FS_READONLY         0      /* 0:Read/Write or 1:Read only */
+/* This option switches read-only configuration. (0:Read/Write or 1:Read-only)
+/  Read-only configuration removes writing API functions, f_write(), f_sync(),
+/  f_unlink(), f_mkdir(), f_chmod(), f_rename(), f_truncate(), f_getfree()
+/  and optional writing functions as well. */
+
+#define _FS_MINIMIZE         0      /* 0 to 3 */
+/* This option defines minimization level to remove some basic API functions.
+/
+/   0: All basic functions are enabled.
+/   1: f_stat(), f_getfree(), f_unlink(), f_mkdir(), f_truncate() and f_rename()
+/      are removed.
+/   2: f_opendir(), f_readdir() and f_closedir() are removed in addition to 1.
+/   3: f_lseek() function is removed in addition to 2. */
+
+#define _USE_STRFUNC         2      /* 0:Disable or 1-2:Enable */
+/* This option switches string functions, f_gets(), f_putc(), f_puts() and
+/  f_printf().
+/
+/  0: Disable string functions.
+/  1: Enable without LF-CRLF conversion.
+/  2: Enable with LF-CRLF conversion. */
+
+#define _USE_FIND            0
+/* This option switches filtered directory read functions, f_findfirst() and
+/  f_findnext(). (0:Disable, 1:Enable 2:Enable with matching altname[] too) */
+
+#define _USE_MKFS            1
+/* This option switches f_mkfs() function. (0:Disable or 1:Enable) */
+
+#define _USE_FASTSEEK        1
+/* This option switches fast seek feature. (0:Disable or 1:Enable) */
+
+#define	_USE_EXPAND		0
+/* This option switches f_expand function. (0:Disable or 1:Enable) */
+
+#define _USE_CHMOD		0
+/* This option switches attribute manipulation functions, f_chmod() and f_utime().
+/  (0:Disable or 1:Enable) Also _FS_READONLY needs to be 0 to enable this option. */
+
+#define _USE_LABEL           0
+/* This option switches volume label functions, f_getlabel() and f_setlabel().
+/  (0:Disable or 1:Enable) */
+
+#define _USE_FORWARD         0
+/* This option switches f_forward() function. (0:Disable or 1:Enable) */
+
+/*-----------------------------------------------------------------------------/
+/ Locale and Namespace Configurations
+/-----------------------------------------------------------------------------*/
+
+#define _CODE_PAGE         850
+/* This option specifies the OEM code page to be used on the target system.
+/  Incorrect setting of the code page can cause a file open failure.
+/
+/   1   - ASCII (No extended character. Non-LFN cfg. only)
+/   437 - U.S.
+/   720 - Arabic
+/   737 - Greek
+/   771 - KBL
+/   775 - Baltic
+/   850 - Latin 1
+/   852 - Latin 2
+/   855 - Cyrillic
+/   857 - Turkish
+/   860 - Portuguese
+/   861 - Icelandic
+/   862 - Hebrew
+/   863 - Canadian French
+/   864 - Arabic
+/   865 - Nordic
+/   866 - Russian
+/   869 - Greek 2
+/   932 - Japanese (DBCS)
+/   936 - Simplified Chinese (DBCS)
+/   949 - Korean (DBCS)
+/   950 - Traditional Chinese (DBCS)
+*/
+
+#define _USE_LFN     0    /* 0 to 3 */
+#define _MAX_LFN     255  /* Maximum LFN length to handle (12 to 255) */
+/* The _USE_LFN switches the support of long file name (LFN).
+/
+/   0: Disable support of LFN. _MAX_LFN has no effect.
+/   1: Enable LFN with static working buffer on the BSS. Always NOT thread-safe.
+/   2: Enable LFN with dynamic working buffer on the STACK.
+/   3: Enable LFN with dynamic working buffer on the HEAP.
+/
+/  To enable the LFN, Unicode handling functions (option/unicode.c) must be added
+/  to the project. The working buffer occupies (_MAX_LFN + 1) * 2 bytes and
+/  additional 608 bytes at exFAT enabled. _MAX_LFN can be in range from 12 to 255.
+/  It should be set 255 to support full featured LFN operations.
+/  When use stack for the working buffer, take care on stack overflow. When use heap
+/  memory for the working buffer, memory management functions, ff_memalloc() and
+/  ff_memfree(), must be added to the project. */
+
+#define _LFN_UNICODE    0 /* 0:ANSI/OEM or 1:Unicode */
+/* This option switches character encoding on the API. (0:ANSI/OEM or 1:UTF-16)
+/  To use Unicode string for the path name, enable LFN and set _LFN_UNICODE = 1.
+/  This option also affects behavior of string I/O functions. */
+
+#define _STRF_ENCODE    3
+/* When _LFN_UNICODE == 1, this option selects the character encoding ON THE FILE to
+/  be read/written via string I/O functions, f_gets(), f_putc(), f_puts and f_printf().
+/
+/  0: ANSI/OEM
+/  1: UTF-16LE
+/  2: UTF-16BE
+/  3: UTF-8
+/
+/  This option has no effect when _LFN_UNICODE == 0. */
+
+#define _FS_RPATH       0 /* 0 to 2 */
+/* This option configures support of relative path.
+/
+/   0: Disable relative path and remove related functions.
+/   1: Enable relative path. f_chdir() and f_chdrive() are available.
+/   2: f_getcwd() function is available in addition to 1.
+*/
+
+/*---------------------------------------------------------------------------/
+/ Drive/Volume Configurations
+/----------------------------------------------------------------------------*/
+
+#define _VOLUMES    1
+/* Number of volumes (logical drives) to be used. */
+
+/* USER CODE BEGIN Volumes */  
+#define _STR_VOLUME_ID          0	/* 0:Use only 0-9 for drive ID, 1:Use strings for drive ID */
+#define _VOLUME_STRS            "RAM","NAND","CF","SD1","SD2","USB1","USB2","USB3"
+/* _STR_VOLUME_ID switches string support of volume ID.
+/  When _STR_VOLUME_ID is set to 1, also pre-defined strings can be used as drive
+/  number in the path name. _VOLUME_STRS defines the drive ID strings for each
+/  logical drives. Number of items must be equal to _VOLUMES. Valid characters for
+/  the drive ID strings are: A-Z and 0-9. */
+/* USER CODE END Volumes */  
+
+#define _MULTI_PARTITION     0 /* 0:Single partition, 1:Multiple partition */
+/* This option switches support of multi-partition on a physical drive.
+/  By default (0), each logical drive number is bound to the same physical drive
+/  number and only an FAT volume found on the physical drive will be mounted.
+/  When multi-partition is enabled (1), each logical drive number can be bound to
+/  arbitrary physical drive and partition listed in the VolToPart[]. Also f_fdisk()
+/  funciton will be available. */
+#define _MIN_SS    512  /* 512, 1024, 2048 or 4096 */
+#define _MAX_SS    512  /* 512, 1024, 2048 or 4096 */
+/* These options configure the range of sector size to be supported. (512, 1024,
+/  2048 or 4096) Always set both 512 for most systems, all type of memory cards and
+/  harddisk. But a larger value may be required for on-board flash memory and some
+/  type of optical media. When _MAX_SS is larger than _MIN_SS, FatFs is configured
+/  to variable sector size and GET_SECTOR_SIZE command must be implemented to the
+/  disk_ioctl() function. */
+
+#define	_USE_TRIM      0
+/* This option switches support of ATA-TRIM. (0:Disable or 1:Enable)
+/  To enable Trim function, also CTRL_TRIM command should be implemented to the
+/  disk_ioctl() function. */
+
+#define _FS_NOFSINFO    0 /* 0,1,2 or 3 */
+/* If you need to know correct free space on the FAT32 volume, set bit 0 of this
+/  option, and f_getfree() function at first time after volume mount will force
+/  a full FAT scan. Bit 1 controls the use of last allocated cluster number.
+/
+/  bit0=0: Use free cluster count in the FSINFO if available.
+/  bit0=1: Do not trust free cluster count in the FSINFO.
+/  bit1=0: Use last allocated cluster number in the FSINFO if available.
+/  bit1=1: Do not trust last allocated cluster number in the FSINFO.
+*/
+
+/*---------------------------------------------------------------------------/
+/ System Configurations
+/----------------------------------------------------------------------------*/
+
+#define _FS_TINY    0      /* 0:Normal or 1:Tiny */
+/* This option switches tiny buffer configuration. (0:Normal or 1:Tiny)
+/  At the tiny configuration, size of file object (FIL) is reduced _MAX_SS bytes.
+/  Instead of private sector buffer eliminated from the file object, common sector
+/  buffer in the file system object (FATFS) is used for the file data transfer. */
+
+#define _FS_EXFAT	0
+/* This option switches support of exFAT file system. (0:Disable or 1:Enable)
+/  When enable exFAT, also LFN needs to be enabled. (_USE_LFN >= 1)
+/  Note that enabling exFAT discards C89 compatibility. */
+
+#define _FS_NORTC	0
+#define _NORTC_MON	6
+#define _NORTC_MDAY	4
+#define _NORTC_YEAR	2015
+/* The option _FS_NORTC switches timestamp functiton. If the system does not have
+/  any RTC function or valid timestamp is not needed, set _FS_NORTC = 1 to disable
+/  the timestamp function. All objects modified by FatFs will have a fixed timestamp
+/  defined by _NORTC_MON, _NORTC_MDAY and _NORTC_YEAR in local time.
+/  To enable timestamp function (_FS_NORTC = 0), get_fattime() function need to be
+/  added to the project to get current time form real-time clock. _NORTC_MON,
+/  _NORTC_MDAY and _NORTC_YEAR have no effect. 
+/  These options have no effect at read-only configuration (_FS_READONLY = 1). */
+
+#define _FS_LOCK    2     /* 0:Disable or >=1:Enable */
+/* The option _FS_LOCK switches file lock function to control duplicated file open
+/  and illegal operation to open objects. This option must be 0 when _FS_READONLY
+/  is 1.
+/
+/  0:  Disable file lock function. To avoid volume corruption, application program
+/      should avoid illegal open, remove and rename to the open objects.
+/  >0: Enable file lock function. The value defines how many files/sub-directories
+/      can be opened simultaneously under file lock control. Note that the file
+/      lock control is independent of re-entrancy. */
+
+#define _FS_REENTRANT    0  /* 0:Disable or 1:Enable */
+#define _FS_TIMEOUT      1000 /* Timeout period in unit of time ticks */
+#define _SYNC_t          NULL
+/* The option _FS_REENTRANT switches the re-entrancy (thread safe) of the FatFs
+/  module itself. Note that regardless of this option, file access to different
+/  volume is always re-entrant and volume control functions, f_mount(), f_mkfs()
+/  and f_fdisk() function, are always not re-entrant. Only file/directory access
+/  to the same volume is under control of this function.
+/
+/   0: Disable re-entrancy. _FS_TIMEOUT and _SYNC_t have no effect.
+/   1: Enable re-entrancy. Also user provided synchronization handlers,
+/      ff_req_grant(), ff_rel_grant(), ff_del_syncobj() and ff_cre_syncobj()
+/      function, must be added to the project. Samples are available in
+/      option/syscall.c.
+/
+/  The _FS_TIMEOUT defines timeout period in unit of time tick.
+/  The _SYNC_t defines O/S dependent sync object type. e.g. HANDLE, ID, OS_EVENT*,
+/  SemaphoreHandle_t and etc.. A header file for O/S definitions needs to be
+/  included somewhere in the scope of ff.h. */
+
+/* define the ff_malloc ff_free macros as standard malloc free */
+#if !defined(ff_malloc) && !defined(ff_free)
+#include <stdlib.h>
+#define ff_malloc  malloc
+#define ff_free  free
+#endif
+
+#endif /* _FFCONF */
--- /dev/null
+++ b/LEAF/Inc/fmc.h
@@ -1,0 +1,60 @@
+/**
+  ******************************************************************************
+  * File Name          : FMC.h
+  * Description        : This file provides code for the configuration
+  *                      of the FMC peripheral.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __FMC_H
+#define __FMC_H
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+extern SDRAM_HandleTypeDef hsdram1;
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_FMC_Init(void);
+void HAL_SDRAM_MspInit(SDRAM_HandleTypeDef* hsdram);
+void HAL_SDRAM_MspDeInit(SDRAM_HandleTypeDef* hsdram);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__FMC_H */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/gfx.h
@@ -1,0 +1,120 @@
+/*
+ * gfx.h
+ *
+ *  Created on: Jul 8, 2018
+ *      Author: jeffsnyder
+ */
+
+#ifndef GFX_H_
+#define GFX_H_
+
+
+#include "gfx_font.h"
+#include "ssd1306.h"
+
+typedef struct _GFX
+{
+	int16_t WIDTH;
+	int16_t HEIGHT;
+	uint16_t _width;
+    uint16_t _height;
+    uint16_t rotation;
+    uint16_t cursor_y;
+	uint16_t cursor_x;
+    uint16_t textsize;
+    uint16_t textcolor;
+    uint16_t textbgcolor;
+    uint16_t wrap;
+    uint16_t _cp437;
+    GFXfont *gfxFont;
+} GFX;
+
+void GFXinit(GFX* myGfx, int16_t w, int16_t h); // Constructor
+
+  // This MUST be defined by the subclass:
+void GFXdrawPixel(GFX* myGfx, int16_t x, int16_t y, uint16_t color);
+
+  // TRANSACTION API / CORE DRAW API
+  // These MAY be overridden by the subclass to provide device-specific
+  // optimized code.  Otherwise 'generic' versions are used.
+void GFXstartWrite(GFX* myGfx);
+void GFXwritePixel(GFX* myGfx, int16_t x, int16_t y, uint16_t color);
+void GFXwriteFillRect(GFX* myGfx, int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
+void GFXwriteFastVLine(GFX* myGfx, int16_t x, int16_t y, int16_t h, uint16_t color);
+void GFXwriteFastHLine(GFX* myGfx, int16_t x, int16_t y, int16_t w, uint16_t color);
+void GFXwriteLine(GFX* myGfx, int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
+void GFXendWrite(GFX* myGfx);
+
+  // CONTROL API
+  // These MAY be overridden by the subclass to provide device-specific
+  // optimized code.  Otherwise 'generic' versions are used.
+void GFXsetRotation(GFX* myGfx, uint8_t r);
+void GFXinvertDisplay(GFX* myGfx, uint8_t i);
+
+  // BASIC DRAW API
+  // These MAY be overridden by the subclass to provide device-specific
+  // optimized code.  Otherwise 'generic' versions are used.
+
+    // It's good to implement those, even if using transaction API
+void GFXdrawFastVLine(GFX* myGfx, int16_t x, int16_t y, int16_t h, uint16_t color);
+void    GFXdrawFastHLine(GFX* myGfx, int16_t x, int16_t y, int16_t w, uint16_t color);
+void    GFXfillRect(GFX* myGfx, int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
+void    GFXfillScreen(GFX* myGfx, uint16_t color);
+    // Optional and probably not necessary to change
+void    GFXdrawLine(GFX* myGfx, int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
+void    GFXdrawRect(GFX* myGfx, int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
+
+  // These exist only with Adafruit_GFX (no subclass overrides)
+
+void    GFXdrawCircle(GFX* myGfx, int16_t x0, int16_t y0, int16_t r, uint16_t color);
+void    GFXdrawCircleHelper(GFX* myGfx, int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
+      uint16_t color);
+void    GFXfillCircle(GFX* myGfx, int16_t x0, int16_t y0, int16_t r, uint16_t color);
+void    GFXfillCircleHelper(GFX* myGfx, int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
+      int16_t delta, uint16_t color);
+void    GFXdrawTriangle(GFX* myGfx, int16_t x0, int16_t y0, int16_t x1, int16_t y1,
+      int16_t x2, int16_t y2, uint16_t color);
+void    GFXfillTriangle(GFX* myGfx, int16_t x0, int16_t y0, int16_t x1, int16_t y1,
+      int16_t x2, int16_t y2, uint16_t color);
+void    GFXdrawRoundRect(GFX* myGfx, int16_t x0, int16_t y0, int16_t w, int16_t h,
+      int16_t radius, uint16_t color);
+void    GFXfillRoundRect(GFX* myGfx, int16_t x0, int16_t y0, int16_t w, int16_t h,
+      int16_t radius, uint16_t color);
+void    GFXdrawBitmap(GFX* myGfx, int16_t x, int16_t y, uint8_t *bitmap,
+      int16_t w, int16_t h, uint16_t color, uint16_t bg);
+void    GFXdrawChar(GFX* myGfx, int16_t x, int16_t y, unsigned char c, uint16_t color,
+      uint16_t bg, uint8_t size);
+void    GFXsetCursor(GFX* myGfx, int16_t x, int16_t y);
+void   GFXsetTextColor(GFX* myGfx, uint16_t c, uint16_t bg);
+void    GFXsetTextSize(GFX* myGfx, uint8_t s);
+void   GFXsetTextWrap(GFX* myGfx, uint8_t w);
+void   GFXcp437(GFX* myGfx, uint8_t x);
+void    GFXsetFont(GFX* myGfx, const GFXfont *f);
+void   GFXgetTextBounds(GFX* myGfx, char *string, int16_t x, int16_t y,
+      int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h);
+
+
+void   GFXwrite(GFX* myGfx, uint8_t);
+
+
+  int16_t GFXheight(GFX* myGfx );
+  int16_t GFXwidth(GFX* myGfx );
+
+  uint8_t GFXgetRotation(GFX* myGfx );
+
+  // get current cursor position (get rotation safe maximum values, using: width() for x, height() for y)
+  int16_t GFXgetCursorX(GFX* myGfx);
+  int16_t GFXgetCursorY(GFX* myGfx );
+
+  void GFXcharBounds(GFX* myGfx, char c, int16_t *x, int16_t *y,
+      int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy);
+
+int OLEDparseInt(char* buffer, uint32_t myNumber, uint8_t numDigits);
+
+int OLEDparsePitch(char* buffer, float midi);
+
+int OLEDparsePitchClass(char* buffer, float midi);
+
+int OLEDparseFixedFloat(char* buffer, float input, uint8_t numDigits, uint8_t numDecimal);
+
+#endif /* GFX_H_ */
--- /dev/null
+++ b/LEAF/Inc/gfx_font.h
@@ -1,0 +1,24 @@
+// Font structures for newer Adafruit_GFX (1.1 and later).
+// Example fonts are included in 'Fonts' directory.
+// To use a font in your Arduino sketch, #include the corresponding .h
+// file and pass address of GFXfont struct to setFont().  Pass NULL to
+// revert to 'classic' fixed-space bitmap font.
+
+#ifndef _GFXFONT_H_
+#define _GFXFONT_H_
+
+typedef struct { // Data stored PER GLYPH
+	uint16_t bitmapOffset;     // Pointer into GFXfont->bitmap
+	uint8_t  width, height;    // Bitmap dimensions in pixels
+	uint8_t  xAdvance;         // Distance to advance cursor (x axis)
+	int8_t   xOffset, yOffset; // Dist from cursor pos to UL corner
+} GFXglyph;
+
+typedef struct { // Data stored for FONT AS A WHOLE:
+	uint8_t  *bitmap;      // Glyph bitmaps, concatenated
+	GFXglyph *glyph;       // Glyph array
+	uint8_t   first, last; // ASCII extents
+	uint8_t   yAdvance;    // Newline distance (y axis)
+} GFXfont;
+
+#endif // _GFXFONT_H_
--- /dev/null
+++ b/LEAF/Inc/gpio.h
@@ -1,0 +1,57 @@
+/**
+  ******************************************************************************
+  * File Name          : gpio.h
+  * Description        : This file contains all the functions prototypes for 
+  *                      the gpio  
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __gpio_H
+#define __gpio_H
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_GPIO_Init(void);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__ pinoutConfig_H */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/i2c.h
@@ -1,0 +1,60 @@
+/**
+  ******************************************************************************
+  * File Name          : I2C.h
+  * Description        : This file provides code for the configuration
+  *                      of the I2C instances.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __i2c_H
+#define __i2c_H
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+extern I2C_HandleTypeDef hi2c2;
+extern I2C_HandleTypeDef hi2c4;
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_I2C2_Init(void);
+void MX_I2C4_Init(void);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__ i2c_H */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- a/LEAF/Inc/leaf-analysis.h
+++ /dev/null
@@ -1,258 +1,0 @@
-/*==============================================================================
- 
- leaf-analysis.h
- Created: 25 Oct 2019 10:30:52am
- Author:  Matthew Wang
- 
- ==============================================================================*/
-
-#ifndef LEAF_ANALYSIS_H_INCLUDED
-#define LEAF_ANALYSIS_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-    
-#include "leaf-global.h"
-#include "leaf-mempool.h"
-#include "leaf-math.h"
-#include "leaf-filters.h"
-#include "leaf-envelopes.h"
-    
-    //==============================================================================
-    
-    /* Envelope Follower */
-    typedef struct _tEnvelopeFollower
-    {
-        float y;
-        float a_thresh;
-        float d_coeff;
-        
-    } _tEnvelopeFollower;
-    
-    typedef _tEnvelopeFollower* tEnvelopeFollower;
-    
-    void    tEnvelopeFollower_init          (tEnvelopeFollower* const, float attackThreshold, float decayCoeff);
-    void    tEnvelopeFollower_free          (tEnvelopeFollower* const);
-    void    tEnvelopeFollower_initToPool    (tEnvelopeFollower* const, float attackThreshold, float decayCoeff, tMempool* const);
-    void    tEnvelopeFollower_freeFromPool  (tEnvelopeFollower* const, tMempool* const);
-    
-    float   tEnvelopeFollower_tick          (tEnvelopeFollower* const, float x);
-    int     tEnvelopeFollower_decayCoeff    (tEnvelopeFollower* const, float decayCoeff);
-    int     tEnvelopeFollower_attackThresh  (tEnvelopeFollower* const, float attackThresh);
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    /* PowerEnvelopeFollower */
-    typedef struct _tPowerFollower {
-        float factor, oneminusfactor;
-        float curr;
-        
-    } _tPowerFollower;
-    
-    typedef _tPowerFollower* tPowerFollower;
-    
-    void    tPowerFollower_init         (tPowerFollower* const, float factor);
-    void    tPowerFollower_free         (tPowerFollower* const);
-    void    tPowerFollower_initToPool   (tPowerFollower* const, float factor, tMempool* const);
-    void    tPowerFollower_freeFromPool (tPowerFollower* const, tMempool* const);
-    
-    float   tPowerFollower_tick         (tPowerFollower* const, float input);
-    float   tPowerFollower_sample       (tPowerFollower* const);
-    int     tPowerFollower_setFactor    (tPowerFollower* const, float factor);
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    // ENV~ from PD, modified for LEAF
-#define MAXOVERLAP 32
-#define INITVSTAKEN 64
-#define ENV_WINDOW_SIZE 1024
-#define ENV_HOP_SIZE 256
-    
-    typedef struct _tEnvPD
-    {
-        float buf[ENV_WINDOW_SIZE + INITVSTAKEN];
-        uint16_t x_phase;                    /* number of points since last output */
-        uint16_t x_period;                   /* requested period of output */
-        uint16_t x_realperiod;               /* period rounded up to vecsize multiple */
-        uint16_t x_npoints;                  /* analysis window size in samples */
-        float x_result;                 /* result to output */
-        float x_sumbuf[MAXOVERLAP];     /* summing buffer */
-        float x_f;
-        uint16_t windowSize, hopSize, blockSize;
-        uint16_t x_allocforvs;               /* extra buffer for DSP vector size */
-    } _tEnvPD;
-    
-    typedef _tEnvPD* tEnvPD;
-    
-    void    tEnvPD_init             (tEnvPD* const, int windowSize, int hopSize, int blockSize);
-    void    tEnvPD_free             (tEnvPD* const);
-    void    tEnvPD_initToPool       (tEnvPD* const, int windowSize, int hopSize, int blockSize, tMempool* const);
-    void    tEnvPD_freeFromPool     (tEnvPD* const, tMempool* const);
-    
-    float   tEnvPD_tick             (tEnvPD* const);
-    void    tEnvPD_processBlock     (tEnvPD* const, float* in);
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    /* tAttackDetection */
-#define DEFBLOCKSIZE 1024
-#define DEFTHRESHOLD 6
-#define DEFATTACK    10
-#define DEFRELEASE    10
-    
-    typedef struct _tAttackDetection
-    {
-        float env;
-        
-        //Attack & Release times in msec
-        int atk;
-        int rel;
-        
-        //Attack & Release coefficients based on times
-        float atk_coeff;
-        float rel_coeff;
-        
-        int blocksize;
-        int samplerate;
-        
-        //RMS amplitude of previous block - used to decide if attack is present
-        float prevAmp;
-        
-        float threshold;
-    } _tAttackDetection;
-    
-    typedef _tAttackDetection* tAttackDetection;
-    
-    void    tAttackDetection_init           (tAttackDetection* const, int blocksize, int atk, int rel);
-    void    tAttackDetection_free           (tAttackDetection* const);
-    void    tAttackDetection_initToPool     (tAttackDetection* const, int blocksize, int atk, int rel, tMempool* const);
-    void    tAttackDetection_freeFromPool   (tAttackDetection* const, tMempool* const);
-    
-    // set expected input blocksize
-    void    tAttackDetection_setBlocksize   (tAttackDetection* const, int size);
-    
-    // change atkDetector sample rate
-    void    tAttackDetection_setSamplerate  (tAttackDetection* const, int inRate);
-    
-    // set attack time and coeff
-    void    tAttackDetection_setAttack      (tAttackDetection* const, int inAtk);
-    
-    // set release time and coeff
-    void    tAttackDetection_setRelease     (tAttackDetection* const, int inRel);
-    
-    // set level above which values are identified as attacks
-    void    tAttackDetection_setThreshold   (tAttackDetection* const, float thres);
-    
-    // find largest transient in input block, return index of attack
-    int     tAttackDetection_detect         (tAttackDetection* const, float *in);
-    
-    //==============================================================================
-    
-    // tSNAC: period detector
-    // from Katja Vetters http://www.katjaas.nl/helmholtz/helmholtz.html
-#define SNAC_FRAME_SIZE 1024           // default analysis framesize // should be the same as (or smaller than?) PS_FRAME_SIZE
-#define DEFOVERLAP 1                // default overlap
-#define DEFBIAS 0.2f        // default bias
-#define DEFMINRMS 0.003f   // default minimum RMS
-#define SEEK 0.85f       // seek-length as ratio of framesize
-    
-    typedef struct _tSNAC
-    {
-        float* inputbuf;
-        float* processbuf;
-        float* spectrumbuf;
-        float* biasbuf;
-        uint16_t timeindex;
-        uint16_t framesize;
-        uint16_t overlap;
-        uint16_t periodindex;
-        
-        float periodlength;
-        float fidelity;
-        float biasfactor;
-        float minrms;
-        
-    } _tSNAC;
-    
-    typedef _tSNAC* tSNAC;
-    
-    void    tSNAC_init          (tSNAC* const, int overlaparg);
-    void    tSNAC_free          (tSNAC* const);
-    void    tSNAC_initToPool    (tSNAC* const, int overlaparg, tMempool* const);
-    void    tSNAC_freeFromPool  (tSNAC* const, tMempool* const);
-    
-    void    tSNAC_ioSamples     (tSNAC *s, float *in, float *out, int size);
-    void    tSNAC_setOverlap    (tSNAC *s, int lap);
-    void    tSNAC_setBias       (tSNAC *s, float bias);
-    void    tSNAC_setMinRMS     (tSNAC *s, float rms);
-    
-    /*To get freq, perform SAMPLE_RATE/snac_getperiod() */
-    float   tSNAC_getPeriod     (tSNAC *s);
-    float   tSNAC_getFidelity   (tSNAC *s);
-    
-#define DEFPITCHRATIO 2.0f
-#define DEFTIMECONSTANT 100.0f
-#define DEFHOPSIZE 64
-#define DEFWINDOWSIZE 64
-#define FBA 20
-#define HPFREQ 40.0f
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    // Period detection
-    typedef struct _tPeriodDetection
-    {
-        tEnvPD env;
-        tSNAC snac;
-        float* inBuffer;
-        float* outBuffer;
-        int frameSize;
-        int bufSize;
-        int framesPerBuffer;
-        int curBlock;
-        int lastBlock;
-        int i;
-        int indexstore;
-        int iLast;
-        int index;
-        float period;
-        
-        uint16_t hopSize;
-        uint16_t windowSize;
-        uint8_t fba;
-        
-        float timeConstant;
-        float radius;
-        float max;
-        float lastmax;
-        float deltamax;
-        
-        float fidelityThreshold;
-        
-    } _tPeriodDetection;
-    
-    typedef _tPeriodDetection* tPeriodDetection;
-    
-    void    tPeriodDetection_init               (tPeriodDetection* const, float* in, float* out, int bufSize, int frameSize);
-    void    tPeriodDetection_free               (tPeriodDetection* const);
-    void    tPeriodDetection_initToPool         (tPeriodDetection* const, float* in, float* out, int bufSize, int frameSize, tMempool* const);
-    void    tPeriodDetection_freeFromPool       (tPeriodDetection* const, tMempool* const);
-    
-    float   tPeriodDetection_tick               (tPeriodDetection* const, float sample);
-    float   tPeriodDetection_getPeriod          (tPeriodDetection* const);
-    void    tPeriodDetection_setHopSize         (tPeriodDetection* const, int hs);
-    void    tPeriodDetection_setWindowSize      (tPeriodDetection* const, int ws);
-    void    tPeriodDetection_setFidelityThreshold(tPeriodDetection* const, float threshold);
-    
-    //==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // LEAF_ANALYSIS_H_INCLUDED
-
-//==============================================================================
-
--- a/LEAF/Inc/leaf-delay.h
+++ /dev/null
@@ -1,221 +1,0 @@
-/*==============================================================================
- 
- leaf-delay.h
- Created: 20 Jan 2017 12:01:24pm
- Author:  Michael R Mulshine
- 
- ==============================================================================*/
-
-#ifndef LEAF_DELAY_H_INCLUDED
-#define LEAF_DELAY_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-    
-#include "leaf-math.h"
-#include "leaf-mempool.h"
-    
-    //==============================================================================
-    
-    /* Non-interpolating delay, reimplemented from STK (Cook and Scavone). */
-    typedef struct _tDelay
-    {
-        float gain;
-        float* buff;
-        
-        float lastOut, lastIn;
-        
-        uint32_t inPoint, outPoint;
-        
-        uint32_t delay, maxDelay;
-        
-    } _tDelay;
-    
-    typedef _tDelay* tDelay;
-    
-    void        tDelay_init         (tDelay* const, uint32_t delay, uint32_t maxDelay);
-    void        tDelay_free         (tDelay* const);
-    void        tDelay_initToPool   (tDelay* const, uint32_t delay, uint32_t maxDelay, tMempool* const);
-    void        tDelay_freeFromPool (tDelay* const, tMempool* const);
-    
-    void        tDelay_clear        (tDelay* const);
-    int         tDelay_setDelay     (tDelay* const, uint32_t delay);
-    uint32_t    tDelay_getDelay     (tDelay* const);
-    void        tDelay_tapIn        (tDelay* const, float in, uint32_t tapDelay);
-    float       tDelay_tapOut       (tDelay* const, uint32_t tapDelay);
-    float       tDelay_addTo        (tDelay* const, float value, uint32_t tapDelay);
-    float       tDelay_tick         (tDelay* const, float sample);
-    float       tDelay_getLastOut   (tDelay* const);
-    float       tDelay_getLastIn    (tDelay* const);
-    
-    //==============================================================================
-    
-    /* Linearly-interpolating delay, reimplemented from STK (Cook and Scavone). */
-    typedef struct _tLinearDelay
-    {
-        float gain;
-        float* buff;
-        
-        float lastOut, lastIn;
-        
-        uint32_t inPoint, outPoint;
-        
-        uint32_t maxDelay;
-        
-        float delay;
-        
-        float alpha, omAlpha;
-        
-    } _tLinearDelay;
-    
-    typedef _tLinearDelay* tLinearDelay;
-    
-    void    tLinearDelay_init        (tLinearDelay* const, float delay, uint32_t maxDelay);
-    void    tLinearDelay_free        (tLinearDelay* const);
-    void    tLinearDelay_initToPool  (tLinearDelay* const, float delay, uint32_t maxDelay, tMempool* const);
-    void    tLinearDelay_freeFromPool(tLinearDelay* const, tMempool* const);
-    void    tLinearDelay_clear		 (tLinearDelay* const dl);
-    int     tLinearDelay_setDelay    (tLinearDelay* const, float delay);
-    float   tLinearDelay_getDelay    (tLinearDelay* const);
-    void    tLinearDelay_tapIn       (tLinearDelay* const, float in, uint32_t tapDelay);
-    float 	tLinearDelay_tapOut 	 (tLinearDelay* const, uint32_t tapDelay);
-    float   tLinearDelay_addTo       (tLinearDelay* const, float value, uint32_t tapDelay);
-    float   tLinearDelay_tick        (tLinearDelay* const, float sample);
-    void    tLinearDelay_tickIn      (tLinearDelay* const, float input);
-    float   tLinearDelay_tickOut     (tLinearDelay* const);
-    float   tLinearDelay_getLastOut  (tLinearDelay* const);
-    float   tLinearDelay_getLastIn   (tLinearDelay* const);
-    
-
-
-    //==============================================================================
-
-    /* Hermite-interpolating delay, created by adapting STK linear delay with Hermite interpolation */
-    typedef struct _tHermiteDelay
-    {
-        float gain;
-        float* buff;
-
-        float lastOut, lastIn;
-
-        uint32_t inPoint, outPoint;
-
-        uint32_t maxDelay;
-
-        float delay;
-
-        float alpha, omAlpha;
-
-    } _tHermiteDelay;
-
-    typedef _tHermiteDelay* tHermiteDelay;
-
-    void   	tHermiteDelay_init 			(tHermiteDelay* const dl, float delay, uint32_t maxDelay);
-    void 	tHermiteDelay_free			(tHermiteDelay* const dl);
-    void    tHermiteDelay_initToPool  	(tHermiteDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp);
-    void    tHermiteDelay_freeFromPool	(tHermiteDelay* const dl, tMempool* const mp);
-    void    tHermiteDelay_clear			(tHermiteDelay* const dl);
-    float   tHermiteDelay_tick 			(tHermiteDelay* const dl, float input);
-    void   	tHermiteDelay_tickIn 		(tHermiteDelay* const dl, float input);
-    float   tHermiteDelay_tickOut 		(tHermiteDelay* const dl);
-    int     tHermiteDelay_setDelay 		(tHermiteDelay* const dl, float delay);
-    float 	tHermiteDelay_tapOut 		(tHermiteDelay* const dl, uint32_t tapDelay);
-    void 	tHermiteDelay_tapIn 		(tHermiteDelay* const dl, float value, uint32_t tapDelay);
-    float 	tHermiteDelay_addTo 		(tHermiteDelay* const dl, float value, uint32_t tapDelay);
-    float   tHermiteDelay_getDelay 		(tHermiteDelay* const dl);
-    float   tHermiteDelay_getLastOut 	(tHermiteDelay* const dl);
-    float   tHermiteDelay_getLastIn 	(tHermiteDelay* const dl);
-    void 	tHermiteDelay_setGain 		(tHermiteDelay* const dl, float gain);
-    float 	tHermiteDelay_getGain 		(tHermiteDelay* const dl);
-
-
-    //==============================================================================
-    
-    /* Allpass-interpolating delay, reimplemented from STK (Cook and Scavone). */
-    typedef struct _tAllpassDelay
-    {
-        float gain;
-        float* buff;
-        
-        float lastOut, lastIn;
-        
-        uint32_t inPoint, outPoint;
-        
-        uint32_t maxDelay;
-        
-        float delay;
-        
-        float alpha, omAlpha, coeff;
-        
-        float apInput;
-        
-    } _tAllpassDelay;
-    
-    typedef _tAllpassDelay* tAllpassDelay;
-    
-    void    tAllpassDelay_init        (tAllpassDelay* const, float delay, uint32_t maxDelay);
-    void    tAllpassDelay_free        (tAllpassDelay* const);
-    void    tAllpassDelay_initToPool  (tAllpassDelay* const, float delay, uint32_t maxDelay, tMempool* const);
-    void    tAllpassDelay_freeFromPool(tAllpassDelay* const, tMempool* const);
-    
-    void    tAllpassDelay_clear       (tAllpassDelay* const);
-    int     tAllpassDelay_setDelay    (tAllpassDelay* const, float delay);
-    float   tAllpassDelay_getDelay    (tAllpassDelay* const);
-    void    tAllpassDelay_tapIn       (tAllpassDelay* const, float in, uint32_t tapDelay);
-    float   tAllpassDelay_tapOut      (tAllpassDelay* const, uint32_t tapDelay);
-    float   tAllpassDelay_addTo       (tAllpassDelay* const, float value, uint32_t tapDelay);
-    float   tAllpassDelay_tick        (tAllpassDelay* const, float sample);
-    float   tAllpassDelay_getLastOut  (tAllpassDelay* const);
-    float   tAllpassDelay_getLastIn   (tAllpassDelay* const);
-    
-    //==============================================================================
-    
-    /* Linear interpolating delay with fixed read and write pointers, variable rate. */
-    typedef struct _tTapeDelay
-    {
-        float gain;
-        float* buff;
-        
-        float lastOut, lastIn;
-        
-        uint32_t inPoint;
-        
-        uint32_t maxDelay;
-        
-        float delay, inc, idx;
-        
-        float apInput;
-        
-    } _tTapeDelay;
-    
-    typedef _tTapeDelay* tTapeDelay;
-    
-    void    tTapeDelay_init        (tTapeDelay* const, float delay, uint32_t maxDelay);
-    void    tTapeDelay_free        (tTapeDelay* const);
-    void    tTapeDelay_initToPool  (tTapeDelay* const, float delay, uint32_t maxDelay, tMempool* const);
-    void    tTapeDelay_freeFromPool(tTapeDelay* const, tMempool* const);
-    
-    void    tTapeDelay_clear       (tTapeDelay* const);
-    void    tTapeDelay_setDelay    (tTapeDelay* const, float delay);
-    float   tTapeDelay_getDelay    (tTapeDelay* const);
-    void    tTapeDelay_tapIn       (tTapeDelay* const, float in, uint32_t tapDelay);
-    float   tTapeDelay_tapOut      (tTapeDelay* const d, float tapDelay);
-    float   tTapeDelay_addTo       (tTapeDelay* const, float value, uint32_t tapDelay);
-    float   tTapeDelay_tick        (tTapeDelay* const, float sample);
-    void    tTapeDelay_incrementInPoint(tTapeDelay* const dl);
-    float   tTapeDelay_getLastOut  (tTapeDelay* const);
-    float   tTapeDelay_getLastIn   (tTapeDelay* const);
-    
-    //==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // LEAF_DELAY_H_INCLUDED
-
-//==============================================================================
-
--- a/LEAF/Inc/leaf-distortion.h
+++ /dev/null
@@ -1,148 +1,0 @@
-/*==============================================================================
- 
- leaf-distortion.h
- Created: 25 Oct 2019 10:23:28am
- Author:  Matthew Wang
- 
- ==============================================================================*/
-
-#ifndef LEAF_DISTORTION_H_INCLUDED
-#define LEAF_DISTORTION_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-    
-#include "leaf-global.h"
-#include "leaf-mempool.h"
-#include "leaf-math.h"
-    
-    //==============================================================================
-    
-    typedef struct _tSampleReducer
-    {
-        float invRatio;
-        float hold;
-        uint32_t count;
-    } _tSampleReducer;
-    
-    typedef _tSampleReducer* tSampleReducer;
-    
-    void    tSampleReducer_init    (tSampleReducer* const);
-    void    tSampleReducer_free    (tSampleReducer* const);
-    void    tSampleReducer_initToPool   (tSampleReducer* const, tMempool* const);
-    void    tSampleReducer_freeFromPool (tSampleReducer* const, tMempool* const);
-    
-    float   tSampleReducer_tick    (tSampleReducer* const, float input);
-    
-    // sampling ratio
-    void    tSampleReducer_setRatio (tSampleReducer* const, float ratio);
-    
-    //==============================================================================
-    
-    typedef struct _tOversampler
-    {
-        int ratio;
-        float* pCoeffs;
-        float* upState;
-        float* downState;
-        int numTaps;
-        int phaseLength;
-    } _tOversampler;
-    
-    typedef _tOversampler* tOversampler;
-    
-    void    tOversampler_init           (tOversampler* const, int order, oBool extraQuality);
-    void    tOversampler_free           (tOversampler* const);
-    void    tOversampler_initToPool     (tOversampler* const, int order, oBool extraQuality, tMempool* const);
-    void    tOversampler_freeFromPool   (tOversampler* const, tMempool* const);
-    
-    void    tOversampler_upsample       (tOversampler* const, float input, float* output);
-    float   tOversampler_downsample     (tOversampler* const os, float* input);
-    float   tOversampler_tick           (tOversampler* const, float input, float (*effectTick)(float));
-    int     tOversampler_getLatency     (tOversampler* const os);
-    
-    //==============================================================================
-    
-    /* tLockhartWavefolder */
-    
-    typedef struct _tLockhartWavefolder
-    {
-        double Ln1;
-        double Fn1;
-        float xn1;
-
-        double RL;
-        double R;
-        double VT;
-        double Is;
-
-        double a;
-        double b;
-        double d;
-
-        // Antialiasing error threshold
-        double thresh;
-        double half_a;
-        double longthing;
-
-    } _tLockhartWavefolder;
-    
-    typedef _tLockhartWavefolder* tLockhartWavefolder;
-    
-    void    tLockhartWavefolder_init    (tLockhartWavefolder* const);
-    void    tLockhartWavefolder_free    (tLockhartWavefolder* const);
-    void    tLockhartWavefolder_initToPool   (tLockhartWavefolder* const, tMempool* const);
-    void    tLockhartWavefolder_freeFromPool (tLockhartWavefolder* const, tMempool* const);
-    
-    float   tLockhartWavefolder_tick    (tLockhartWavefolder* const, float samp);
-
-    //==============================================================================
-
-    typedef struct _tCrusher
-    {
-        float srr;
-        float mult, div;
-        float rnd;
-        
-        uint32_t  op; //which bitwise operation (0-7)
-        
-        float gain;
-        tSampleReducer sReducer;
-        
-    } _tCrusher;
-    
-    typedef _tCrusher* tCrusher;
-    
-    void    tCrusher_init    (tCrusher* const);
-    void    tCrusher_free    (tCrusher* const);
-    void    tCrusher_initToPool   (tCrusher* const, tMempool* const);
-    void    tCrusher_freeFromPool (tCrusher* const, tMempool* const);
-    
-    float   tCrusher_tick    (tCrusher* const, float input);
-    
-    // 0.0 - 1.0
-    void    tCrusher_setOperation (tCrusher* const, float op);
-    
-    // 0.0 - 1.0
-    void    tCrusher_setQuality (tCrusher* const, float val);
-    
-    // what division to round to
-    void    tCrusher_setRound (tCrusher* const, float rnd);
-    
-    // sampling ratio
-    void    tCrusher_setSamplingRatio (tCrusher* const, float ratio);
-    
-    //==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif // LEAF_DISTORTION_H_INCLUDED
-
-//==============================================================================
-
-
--- a/LEAF/Inc/leaf-dynamics.h
+++ /dev/null
@@ -1,90 +1,0 @@
-/*==============================================================================
- 
- leaf-dynamics.h
- Created: 30 Nov 2018 11:57:05am
- Author:  airship
- 
- ==============================================================================*/
-
-#ifndef LEAF_DYNAMICS_H_INCLUDED
-#define LEAF_DYNAMICS_H_INCLUDED
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-    
-#include "leaf-global.h"
-#include "leaf-math.h"
-#include "leaf-mempool.h"
-#include "leaf-analysis.h"
-    
-    //==============================================================================
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    /* Compressor */
-    typedef struct _tCompressor
-    {
-        float tauAttack, tauRelease;
-        float T, R, W, M; // Threshold, compression Ratio, decibel Width of knee transition, decibel Make-up gain
-        
-        float x_G[2], y_G[2], x_T[2], y_T[2];
-        
-        oBool isActive;
-        
-    } _tCompressor;
-    
-    typedef _tCompressor* tCompressor;
-    
-    void    tCompressor_init        (tCompressor* const);
-    void    tCompressor_free        (tCompressor* const);
-    void    tCompressor_initToPool  (tCompressor* const, tMempool* const);
-    void    tCompressor_freeFromPool(tCompressor* const, tMempool* const);
-    
-    float   tCompressor_tick        (tCompressor* const, float input);
-    
-    ///
-    /* Feedback leveller */
-    // An auto VCA that you put into a feedback circuit to make it stay at the same level.
-    // It can enforce level bidirectionally (amplifying and attenuating as needed) or
-    // just attenutating. The former option allows for infinite sustain strings, for example, while
-    // The latter option allows for decaying strings, which can never exceed
-    // a specific level.
-    
-    typedef struct _tFeedbackLeveler {
-        float targetLevel;    // target power level
-        float strength;        // how strongly level difference affects the VCA
-        int      mode;            // 0 for upwards limiting only, 1 for biderctional limiting
-        float curr;
-        tPowerFollower pwrFlw;    // internal power follower needed for level tracking
-        
-    } _tFeedbackLeveler;
-    
-    typedef _tFeedbackLeveler* tFeedbackLeveler;
-    
-    void    tFeedbackLeveler_init           (tFeedbackLeveler* const, float targetLevel, float factor, float strength, int mode);
-    void    tFeedbackLeveler_free           (tFeedbackLeveler* const);
-    void    tFeedbackLeveler_initToPool     (tFeedbackLeveler* const, float targetLevel, float factor, float strength, int mode, tMempool* const);
-    void    tFeedbackLeveler_freeFromPool   (tFeedbackLeveler* const, tMempool* const);
-    
-    float   tFeedbackLeveler_tick           (tFeedbackLeveler* const, float input);
-    float   tFeedbackLeveler_sample         (tFeedbackLeveler* const);
-    void    tFeedbackLeveler_setTargetLevel (tFeedbackLeveler* const, float TargetLevel);
-    void    tFeedbackLeveler_setFactor      (tFeedbackLeveler* const, float factor);
-    void    tFeedbackLeveler_setMode        (tFeedbackLeveler* const, int mode); // 0 for upwards limiting only, 1 for biderctional limiting
-    void    tFeedbackLeveler_setStrength    (tFeedbackLeveler* const, float strength);
-    
-    
-    //==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif // LEAF_DYNAMICS_H_INCLUDED
-
-//==============================================================================
-
--- a/LEAF/Inc/leaf-effects.h
+++ /dev/null
@@ -1,316 +1,0 @@
-/*==============================================================================
- 
- leaf-effects.h
- Created: 20 Jan 2017 12:01:54pm
- Author:  Michael R Mulshine
- 
- ==============================================================================*/
-
-#ifndef LEAF_EFFECTS_H_INCLUDED
-#define LEAF_EFFECTS_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-#include "leaf-global.h"
-#include "leaf-math.h"
-#include "leaf-mempool.h"
-#include "leaf-dynamics.h"
-#include "leaf-analysis.h"
-#include "leaf-envelopes.h"
-    
-    //==============================================================================
-    
-    /* tTalkbox */
-#define NUM_TALKBOX_PARAM 4
-    
-    typedef struct _tTalkbox
-    {
-        float param[NUM_TALKBOX_PARAM];
-        
-        int bufsize;
-        float* car0;
-        float* car1;
-        float* window;
-        float* buf0;
-        float* buf1;
-        
-        float emphasis;
-        int32_t K, N, O, pos;
-        float wet, dry, FX;
-        float d0, d1, d2, d3, d4;
-        float u0, u1, u2, u3, u4;
-        
-    } _tTalkbox;
-    
-    typedef _tTalkbox* tTalkbox;
-    
-    void    tTalkbox_init           (tTalkbox* const, int bufsize);
-    void    tTalkbox_free           (tTalkbox* const);
-    void    tTalkbox_initToPool     (tTalkbox* const, int bufsize, tMempool* const);
-    void    tTalkbox_freeFromPool   (tTalkbox* const, tMempool* const);
-    
-    float   tTalkbox_tick           (tTalkbox* const, float synth, float voice);
-    void    tTalkbox_update         (tTalkbox* const);
-    void    tTalkbox_suspend        (tTalkbox* const);
-    void    tTalkbox_lpcDurbin      (float *r, int p, float *k, float *g);
-    void    tTalkbox_lpc            (float *buf, float *car, int32_t n, int32_t o);
-    void    tTalkbox_setQuality     (tTalkbox* const, float quality);
-    
-    //==============================================================================
-    
-    /* tVocoder */
-#define NUM_VOCODER_PARAM 8
-#define NBANDS 16
-    
-    typedef struct _tVocoder
-    {
-        float param[NUM_VOCODER_PARAM];
-        
-        float gain;         //output level
-        float thru, high;   //hf thru
-        float kout;         //downsampled output
-        int32_t  kval;      //downsample counter
-        int32_t  nbnd;      //number of bands
-        
-        //filter coeffs and buffers - seems it's faster to leave this global than make local copy
-        float f[NBANDS][13]; //[0-8][0 1 2 | 0 1 2 3 | 0 1 2 3 | val rate]
-        
-    } _tVocoder;
-    
-    typedef _tVocoder* tVocoder;
-    
-    void    tVocoder_init           (tVocoder* const);
-    void    tVocoder_free           (tVocoder* const);
-    void    tVocoder_initToPool     (tVocoder* const, tMempool* const);
-    void    tVocoder_freeFromPool   (tVocoder* const, tMempool* const);
-    
-    float   tVocoder_tick           (tVocoder* const, float synth, float voice);
-    void    tVocoder_update         (tVocoder* const);
-    void    tVocoder_suspend        (tVocoder* const);
-    
-    //==============================================================================
-    
-    
-    //==============================================================================
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    /* tSOLAD : pitch shifting algorithm that underlies tRetune etc */
-    // from Katja Vetters http://www.katjaas.nl/pitchshiftlowlatency/pitchshiftlowlatency.html
-#define LOOPSIZE (2048*2)      // (4096*2) // loop size must be power of two
-#define LOOPMASK (LOOPSIZE - 1)
-#define PITCHFACTORDEFAULT 1.0f
-#define INITPERIOD 64.0f
-#define MAXPERIOD (float)((LOOPSIZE - w->blocksize) * 0.8f)
-#define MINPERIOD 8.0f
-    
-    typedef struct _tSOLAD
-    {
-        uint16_t timeindex;              // current reference time, write index
-        uint16_t blocksize;              // signal input / output block size
-        float pitchfactor;        // pitch factor between 0.25 and 4
-        float readlag;            // read pointer's lag behind write pointer
-        float period;             // period length in input signal
-        float jump;               // read pointer jump length and direction
-        float xfadelength;        // crossfade length expressed at input sample rate
-        float xfadevalue;         // crossfade phase and value
-        
-        float* delaybuf;
-        
-    } _tSOLAD;
-    
-    typedef _tSOLAD* tSOLAD;
-    
-    void    tSOLAD_init             (tSOLAD* const);
-    void    tSOLAD_free             (tSOLAD* const);
-    void    tSOLAD_initToPool       (tSOLAD* const, tMempool* const);
-    void    tSOLAD_freeFromPool     (tSOLAD* const, tMempool* const);
-    
-    // send one block of input samples, receive one block of output samples
-    void    tSOLAD_ioSamples        (tSOLAD *w, float* in, float* out, int blocksize);
-    // set periodicity analysis data
-    void    tSOLAD_setPeriod        (tSOLAD *w, float period);
-    // set pitch factor between 0.25 and 4
-    void    tSOLAD_setPitchFactor   (tSOLAD *w, float pitchfactor);
-    // force readpointer lag
-    void    tSOLAD_setReadLag       (tSOLAD *w, float readlag);
-    // reset state variables
-    void    tSOLAD_resetState       (tSOLAD *w);
-    
-    // Pitch shift
-    typedef struct _tPitchShift
-    {
-        tSOLAD sola;
-        tHighpass hp;
-        tPeriodDetection* p;
-        
-        float* outBuffer;
-        int frameSize;
-        int bufSize;
-        
-        int framesPerBuffer;
-        int curBlock;
-        int lastBlock;
-        int index;
-        
-        float pitchFactor;
-        float timeConstant;
-        float radius;
-    } _tPitchShift;
-    
-    typedef _tPitchShift* tPitchShift;
-    
-    void    tPitchShift_init            (tPitchShift* const, tPeriodDetection* const, float* out, int bufSize);
-    void    tPitchShift_free            (tPitchShift* const);
-    void    tPitchShift_initToPool      (tPitchShift* const, tPeriodDetection* const, float* out, int bufSize, tMempool* const);
-    void    tPitchShift_freeFromPool    (tPitchShift* const, tMempool* const);
-    
-    float   tPitchShift_shift           (tPitchShift* const);
-    float   tPitchShift_shiftToFunc     (tPitchShift* const, float (*fun)(float));
-    float   tPitchShift_shiftToFreq     (tPitchShift* const, float freq);
-    void    tPitchShift_setPitchFactor  (tPitchShift* const, float pf);
-    
-    // Retune
-    typedef struct _tRetune
-    {
-        tPeriodDetection pd;
-        tPitchShift* ps;
-        
-        float* inBuffer;
-        float** outBuffers;
-        float* tickOutput;
-        int frameSize;
-        int bufSize;
-        
-        uint16_t hopSize;
-        uint16_t windowSize;
-        uint8_t fba;
-        
-        float* pitchFactor;
-        float timeConstant;
-        float radius;
-        
-        float inputPeriod;
-        
-        int numVoices;
-    } _tRetune;
-    
-    typedef _tRetune* tRetune;
-    
-    void    tRetune_init                (tRetune* const, int numVoices, int bufSize, int frameSize);
-    void    tRetune_free                (tRetune* const);
-    void    tRetune_initToPool          (tRetune* const, int numVoices, int bufSize, int frameSize, tMempool* const);
-    void    tRetune_freeFromPool        (tRetune* const, tMempool* const);
-    
-    float*  tRetune_tick                (tRetune* const, float sample);
-    void    tRetune_setNumVoices        (tRetune* const, int numVoices);
-    void    tRetune_setPitchFactors     (tRetune* const, float pf);
-    void    tRetune_setPitchFactor      (tRetune* const, float pf, int voice);
-    void    tRetune_setTimeConstant     (tRetune* const, float tc);
-    void    tRetune_setHopSize          (tRetune* const, int hs);
-    void    tRetune_setWindowSize       (tRetune* const, int ws);
-    void    tRetune_setFidelityThreshold(tRetune* const, float threshold);
-    float   tRetune_getInputPeriod      (tRetune* const);
-    float   tRetune_getInputFreq        (tRetune* const);
-    
-    // Autotune
-    typedef struct _tAutotune
-    {
-        tPeriodDetection pd;
-        tPitchShift* ps;
-        
-        float* inBuffer;
-        float** outBuffers;
-        float* tickOutput;
-        int frameSize;
-        int bufSize;
-        
-        uint16_t hopSize;
-        uint16_t windowSize;
-        uint8_t fba;
-        
-        float* freq;
-        float timeConstant;
-        float radius;
-        
-        float inputPeriod;
-        
-        int numVoices;
-    } _tAutotune;
-    
-    typedef _tAutotune* tAutotune;
-    
-    void    tAutotune_init                  (tAutotune* const, int numVoices, int bufSize, int frameSize);
-    void    tAutotune_free                  (tAutotune* const);
-    void    tAutotune_initToPool            (tAutotune* const, int numVoices, int bufSize, int frameSize, tMempool* const);
-    void    tAutotune_freeFromPool          (tAutotune* const, tMempool* const);
-    
-    float*  tAutotune_tick                  (tAutotune* const, float sample);
-    void    tAutotune_setNumVoices          (tAutotune* const, int numVoices);
-    void    tAutotune_setFreqs              (tAutotune* const, float f);
-    void    tAutotune_setFreq               (tAutotune* const, float f, int voice);
-    void    tAutotune_setTimeConstant       (tAutotune* const, float tc);
-    void    tAutotune_setHopSize            (tAutotune* const, int hs);
-    void    tAutotune_setWindowSize         (tAutotune* const, int ws);
-    void    tAutotune_setFidelityThreshold  (tAutotune* const, float threshold);
-    float   tAutotune_getInputPeriod        (tAutotune* const);
-    float   tAutotune_getInputFreq          (tAutotune* const);
-    
-    //==============================================================================
-    
-    
-    typedef struct _tFormantShifter
-    {
-        int ford;
-        float falph;
-        float flamb;
-        float* fk;
-        float* fb;
-        float* fc;
-        float* frb;
-        float* frc;
-        float* fsig;
-        float* fsmooth;
-        float fhp;
-        float flp;
-        float flpa;
-        float* fbuff;
-        float* ftvec;
-        float fmute;
-        float fmutealph;
-        unsigned int cbi;
-        float shiftFactor;
-        float intensity, invIntensity;
-        tHighpass hp;
-        tHighpass hp2;
-        tFeedbackLeveler fbl1;
-        tFeedbackLeveler fbl2;
-        
-    } _tFormantShifter;
-    
-    typedef _tFormantShifter* tFormantShifter;
-    
-    void    tFormantShifter_init            (tFormantShifter* const, int order);
-    void    tFormantShifter_free            (tFormantShifter* const);
-    void    tFormantShifter_initToPool      (tFormantShifter* const, int order, tMempool* const);
-    void    tFormantShifter_freeFromPool    (tFormantShifter* const, tMempool* const);
-    
-    float   tFormantShifter_tick            (tFormantShifter* const, float input);
-    float   tFormantShifter_remove          (tFormantShifter* const, float input);
-    float   tFormantShifter_add             (tFormantShifter* const, float input);
-    void    tFormantShifter_ioSamples       (tFormantShifter* const, float* in, float* out, int size, float fwarp);
-    void    tFormantShifter_setShiftFactor  (tFormantShifter* const, float shiftFactor);
-    void    tFormantShifter_setIntensity    (tFormantShifter* const, float intensity);
-    
-    //==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // LEAF_EFFECTS_H_INCLUDED
-
-//==============================================================================
--- a/LEAF/Inc/leaf-electrical.h
+++ /dev/null
@@ -1,95 +1,0 @@
-/*
- * leaf-electrical.h
- *
- *  Created on: Sep 25, 2019
- *      Author: jeffsnyder
- */
-
-#ifndef LEAF_INC_LEAF_ELECTRICAL_H_
-#define LEAF_INC_LEAF_ELECTRICAL_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-    
-#include "leaf-global.h"
-#include "leaf-math.h"
-#include "leaf-mempool.h"
-    
-    //==============================================================================
-    
-    typedef enum WDFComponentType
-    {
-        SeriesAdaptor = 0,
-        ParallelAdaptor,
-        Resistor,
-        Capacitor,
-        Inductor,
-        Inverter,
-        ResistiveSource,
-        IdealSource,
-        Diode,
-        DiodePair,
-        RootNil,
-        WDFComponentNil
-    } WDFComponentType;
-    
-    typedef struct _tWDF _tWDF; // needed to allow tWDF pointers in struct
-    typedef _tWDF* tWDF;
-    struct _tWDF
-    {
-        WDFComponentType type;
-        float port_resistance_up;
-        float port_resistance_left;
-        float port_resistance_right;
-        float port_conductance_up;
-        float port_conductance_left;
-        float port_conductance_right;
-        float incident_wave_up;
-        float incident_wave_left;
-        float incident_wave_right;
-        float reflected_wave_up;
-        float reflected_wave_left;
-        float reflected_wave_right;
-        float gamma_zero;
-        float sample_rate;
-        float value;
-        tWDF* child_left;
-        tWDF* child_right;
-        float (*get_port_resistance)(tWDF* const);
-        float (*get_reflected_wave_up)(tWDF* const, float);
-        float (*get_reflected_wave_down)(tWDF* const, float, float);
-        void (*set_incident_wave)(tWDF* const, float, float);
-    };
-    
-    //WDF Linear Components
-    void    tWDF_init                   (tWDF* const, WDFComponentType type, float value, tWDF* const rL, tWDF* const rR);
-    void    tWDF_free                   (tWDF* const);
-    void    tWDF_initToPool             (tWDF* const, WDFComponentType type, float value, tWDF* const rL, tWDF* const rR, tMempool* const);
-    void    tWDF_freeFromPool           (tWDF* const, tMempool* const);
-    
-    float   tWDF_tick                   (tWDF* const, float sample, tWDF* const outputPoint, uint8_t paramsChanged);
-    
-    void    tWDF_setValue               (tWDF* const, float value);
-    void    tWDF_setSampleRate          (tWDF* const, float sample_rate);
-    uint8_t tWDF_isLeaf                 (tWDF* const);
-    
-    float   tWDF_getPortResistance      (tWDF* const);
-    float   tWDF_getReflectedWaveUp     (tWDF* const, float input); //for tree, only uses input for resistive source
-    float   tWDF_getReflectedWaveDown   (tWDF* const, float input, float incident_wave); //for roots
-    void    tWDF_setIncidentWave        (tWDF* const, float incident_wave, float input);
-    
-    float   tWDF_getVoltage             (tWDF* const);
-    float   tWDF_getCurrent             (tWDF* const);
-    
-    
-    //==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LEAF_INC_LEAF_ELECTRICAL_H_ */
-
--- a/LEAF/Inc/leaf-envelopes.h
+++ /dev/null
@@ -1,154 +1,0 @@
-/*
- ==============================================================================
- 
- leaf-envelopes.h
- Created: 20 Jan 2017 12:02:17pm
- Author:  Michael R Mulshine
- 
- ==============================================================================
- */
-
-#ifndef LEAF_ENVELOPES_H_INCLUDED
-#define LEAF_ENVELOPES_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-#include "leaf-math.h"
-#include "leaf-mempool.h"
-#include "leaf-filters.h"
-#include "leaf-delay.h"
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    /* Attack-Decay envelope */
-    typedef struct _tEnvelope {
-        
-       const float *exp_buff;
-       const float *inc_buff;
-        uint32_t buff_size;
-        
-        float next;
-        
-        float attackInc, decayInc, rampInc;
-        
-        oBool inAttack, inDecay, inRamp;
-        
-        oBool loop;
-        
-        float gain, rampPeak;
-        
-        float attackPhase, decayPhase, rampPhase;
-        
-    } _tEnvelope;
-    
-    typedef _tEnvelope* tEnvelope;
-    
-    void    tEnvelope_init          (tEnvelope* const, float attack, float decay, oBool loop);
-    void    tEnvelope_free          (tEnvelope* const);
-    void    tEnvelope_initToPool    (tEnvelope* const, float attack, float decay, oBool loop, tMempool* const);
-    void    tEnvelope_freeFromPool  (tEnvelope* const, tMempool* const);
-    
-    float   tEnvelope_tick          (tEnvelope* const);
-    void    tEnvelope_setAttack     (tEnvelope* const, float attack);
-    void    tEnvelope_setDecay      (tEnvelope* const, float decay);
-    void    tEnvelope_loop          (tEnvelope* const, oBool loop);
-    void    tEnvelope_on            (tEnvelope* const, float velocity);
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    /* ADSR */
-    typedef struct _tADSR
-    {
-       const float *exp_buff;
-       const float *inc_buff;
-        uint32_t buff_size;
-        
-        float next;
-        
-        float attackInc, decayInc, releaseInc, rampInc;
-        
-        oBool inAttack, inDecay, inSustain, inRelease, inRamp;
-        
-        float sustain, gain, rampPeak, releasePeak;
-        
-        float attackPhase, decayPhase, releasePhase, rampPhase;
-        
-    } _tADSR;
-    
-    typedef _tADSR* tADSR;
-    
-    void    tADSR_init          (tADSR* const, float attack, float decay, float sustain, float release);
-    void    tADSR_free          (tADSR* const);
-    void    tADSR_initToPool    (tADSR* const, float attack, float decay, float sustain, float release, tMempool* const);
-    void    tADSR_freeFromPool  (tADSR* const, tMempool* const);
-    
-    float   tADSR_tick          (tADSR* const);
-    void    tADSR_setAttack     (tADSR* const, float attack);
-    void    tADSR_setDecay      (tADSR* const, float decay);
-    void    tADSR_setSustain    (tADSR* const, float sustain);
-    void    tADSR_setRelease    (tADSR* const, float release);
-    void    tADSR_on            (tADSR* const, float velocity);
-    void    tADSR_off           (tADSR* const);
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    /* Ramp */
-    typedef struct _tRamp {
-        float inc;
-        float inv_sr_ms;
-        float minimum_time;
-        float curr,dest;
-        float time;
-        int samples_per_tick;
-        
-    } _tRamp;
-    
-    typedef _tRamp* tRamp;
-    
-    void    tRamp_init          (tRamp* const, float time, int samplesPerTick);
-    void    tRamp_free          (tRamp* const);
-    void    tRamp_initToPool    (tRamp* const, float time, int samplesPerTick, tMempool* const);
-    void    tRamp_freeFromPool  (tRamp* const, tMempool* const);
-    
-    float   tRamp_tick          (tRamp* const);
-    float   tRamp_sample        (tRamp* const);
-    void    tRamp_setTime       (tRamp* const, float time);
-    void    tRamp_setDest       (tRamp* const, float dest);
-    void    tRamp_setVal        (tRamp* const, float val);
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    /* Exponential Smoother */
-    typedef struct _tExpSmooth {
-        float factor, oneminusfactor;
-        float curr,dest;
-        
-    } _tExpSmooth;
-    
-    typedef _tExpSmooth* tExpSmooth;
-    
-    void    tExpSmooth_init         (tExpSmooth* const, float val, float factor);
-    void    tExpSmooth_free         (tExpSmooth* const);
-    void    tExpSmooth_initToPool   (tExpSmooth* const, float val, float factor, tMempool* const);
-    void    tExpSmooth_freeFromPool (tExpSmooth* const, tMempool* const);
-    
-    float   tExpSmooth_tick         (tExpSmooth* const);
-    float   tExpSmooth_sample       (tExpSmooth* const);
-    void    tExpSmooth_setFactor    (tExpSmooth* const, float factor);
-    void    tExpSmooth_setDest      (tExpSmooth* const, float dest);
-    void    tExpSmooth_setVal       (tExpSmooth* const, float val);
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // LEAF_ENVELOPES_H_INCLUDED
-
-
-
--- a/LEAF/Inc/leaf-filters.h
+++ /dev/null
@@ -1,358 +1,0 @@
-/*==============================================================================
- 
- leaf-filters.h
- Created: 20 Jan 2017 12:01:10pm
- Author:  Michael R Mulshine
- 
- ==============================================================================*/
-
-#ifndef LEAF_FILTERS_H_INCLUDED
-#define LEAF_FILTERS_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-    
-#include "leaf-math.h"
-#include "leaf-mempool.h"
-#include "leaf-delay.h"
-#include "leaf-tables.h"
-    
-    //==============================================================================
-    
-    /* tAllpass: Schroeder allpass. Comb-filter with feedforward and feedback. */
-    typedef struct _tAllpass
-    {
-        float gain;
-        
-        tLinearDelay delay;
-        
-        float lastOut;
-        
-    } _tAllpass;
-    
-    typedef _tAllpass* tAllpass;
-    
-    void    tAllpass_init           (tAllpass* const, float initDelay, uint32_t maxDelay);
-    void    tAllpass_free           (tAllpass* const);
-    void    tAllpass_initToPool     (tAllpass* const, float initDelay, uint32_t maxDelay, tMempool* const);
-    void    tAllpass_freeFromPool   (tAllpass* const, tMempool* const);
-    
-    float   tAllpass_tick           (tAllpass* const, float input);
-    void    tAllpass_setGain        (tAllpass* const, float gain);
-    void    tAllpass_setDelay       (tAllpass* const, float delay);
-    
-    
-    //==============================================================================
-    
-    /* tOnePole: OnePole filter, reimplemented from STK (Cook and Scavone). */
-    typedef struct _tOnePole
-    {
-        float gain;
-        float a0,a1;
-        float b0,b1;
-        float lastIn, lastOut;
-
-        
-    } _tOnePole;
-    
-    typedef _tOnePole* tOnePole;
-    
-    void    tOnePole_init           (tOnePole* const, float thePole);
-    void    tOnePole_free           (tOnePole* const);
-    void    tOnePole_initToPool     (tOnePole* const, float thePole, tMempool* const);
-    void    tOnePole_freeFromPool   (tOnePole* const, tMempool* const);
-    
-    float   tOnePole_tick           (tOnePole* const, float input);
-    void    tOnePole_setB0          (tOnePole* const, float b0);
-    void    tOnePole_setA1          (tOnePole* const, float a1);
-    void    tOnePole_setPole        (tOnePole* const, float thePole);
-    void    tOnePole_setFreq        (tOnePole* const, float freq);
-    void    tOnePole_setCoefficients(tOnePole* const, float b0, float a1);
-    void    tOnePole_setGain        (tOnePole* const, float gain);
-    
-    //==============================================================================
-    
-    /* TwoPole filter, reimplemented from STK (Cook and Scavone). */
-    typedef struct _tTwoPole
-    {
-        float gain;
-        float a0, a1, a2;
-        float b0;
-        
-        float radius, frequency;
-        oBool normalize;
-
-        float lastOut[2];
-        
-    } _tTwoPole;
-    
-    typedef _tTwoPole* tTwoPole;
-    
-    void    tTwoPole_init           (tTwoPole* const);
-    void    tTwoPole_free           (tTwoPole* const);
-    void    tTwoPole_initToPool     (tTwoPole* const, tMempool* const);
-    void    tTwoPole_freeFromPool   (tTwoPole* const, tMempool* const);
-    
-    float   tTwoPole_tick           (tTwoPole* const, float input);
-    void    tTwoPole_setB0          (tTwoPole* const, float b0);
-    void    tTwoPole_setA1          (tTwoPole* const, float a1);
-    void    tTwoPole_setA2          (tTwoPole* const, float a2);
-    void    tTwoPole_setResonance   (tTwoPole* const, float freq, float radius, oBool normalize);
-    void    tTwoPole_setCoefficients(tTwoPole* const, float b0, float a1, float a2);
-    void    tTwoPole_setGain        (tTwoPole* const, float gain);
-    
-    //==============================================================================
-    
-    /* OneZero filter, reimplemented from STK (Cook and Scavone). */
-    typedef struct _tOneZero
-    {
-        float gain;
-        float b0,b1;
-        float lastIn, lastOut, frequency;
-        
-    } _tOneZero;
-    
-    typedef _tOneZero* tOneZero;
-    
-    void    tOneZero_init           (tOneZero* const, float theZero);
-    void    tOneZero_free           (tOneZero* const);
-    void    tOneZero_initToPool     (tOneZero* const, float theZero, tMempool* const);
-    void    tOneZero_freeFromPool   (tOneZero* const, tMempool* const);
-    
-    float   tOneZero_tick           (tOneZero* const, float input);
-    void    tOneZero_setB0          (tOneZero* const, float b0);
-    void    tOneZero_setB1          (tOneZero* const, float b1);
-    void    tOneZero_setZero        (tOneZero* const, float theZero);
-    void    tOneZero_setCoefficients(tOneZero* const, float b0, float b1);
-    void    tOneZero_setGain        (tOneZero* const, float gain);
-    float   tOneZero_getPhaseDelay  (tOneZero *f, float frequency );
-    
-    //==============================================================================
-    
-    /* TwoZero filter, reimplemented from STK (Cook and Scavone). */
-    typedef struct _tTwoZero
-    {
-        float gain;
-        float b0, b1, b2;
-        
-        float frequency, radius;
-        
-        float lastIn[2];
-        
-    } _tTwoZero;
-    
-    typedef _tTwoZero* tTwoZero;
-    
-    void    tTwoZero_init           (tTwoZero* const);
-    void    tTwoZero_free           (tTwoZero* const);
-    void    tTwoZero_initToPool     (tTwoZero* const, tMempool* const);
-    void    tTwoZero_freeFromPool   (tTwoZero* const, tMempool* const);
-    
-    float   tTwoZero_tick           (tTwoZero* const, float input);
-    void    tTwoZero_setB0          (tTwoZero* const, float b0);
-    void    tTwoZero_setB1          (tTwoZero* const, float b1);
-    void    tTwoZero_setB2          (tTwoZero* const, float b2);
-    void    tTwoZero_setNotch       (tTwoZero* const, float frequency, float radius);
-    void    tTwoZero_setCoefficients(tTwoZero* const, float b0, float b1, float b2);
-    void    tTwoZero_setGain        (tTwoZero* const, float gain);
-    
-    //==============================================================================
-    
-    /* PoleZero filter, reimplemented from STK (Cook and Scavone). */
-    typedef struct _tPoleZero
-    {
-        float gain;
-        float a0,a1;
-        float b0,b1;
-        
-        float lastIn, lastOut;
-        
-    } _tPoleZero;
-    
-    typedef _tPoleZero* tPoleZero;
-    
-    void    tPoleZero_init              (tPoleZero* const);
-    void    tPoleZero_free              (tPoleZero* const);
-    void    tPoleZero_initToPool        (tPoleZero* const, tMempool* const);
-    void    tPoleZero_freeFromPool      (tPoleZero* const, tMempool* const);
-    
-    float   tPoleZero_tick              (tPoleZero* const, float input);
-    void    tPoleZero_setB0             (tPoleZero* const, float b0);
-    void    tPoleZero_setB1             (tPoleZero* const, float b1);
-    void    tPoleZero_setA1             (tPoleZero* const, float a1);
-    void    tPoleZero_setCoefficients   (tPoleZero* const, float b0, float b1, float a1);
-    void    tPoleZero_setAllpass        (tPoleZero* const, float coeff);
-    void    tPoleZero_setBlockZero      (tPoleZero* const, float thePole);
-    void    tPoleZero_setGain           (tPoleZero* const, float gain);
-    
-    //==============================================================================
-    
-    /* BiQuad filter, reimplemented from STK (Cook and Scavone). */
-    typedef struct _tBiQuad
-    {
-        float gain;
-        float a0, a1, a2;
-        float b0, b1, b2;
-        
-        float lastIn[2];
-        float lastOut[2];
-        
-        float frequency, radius;
-        oBool normalize;
-    } _tBiQuad;
-    
-    typedef _tBiQuad* tBiQuad;
-    
-    void    tBiQuad_init           (tBiQuad* const);
-    void    tBiQuad_free           (tBiQuad* const);
-    void    tBiQuad_initToPool     (tBiQuad* const, tMempool* const);
-    void    tBiQuad_freeFromPool   (tBiQuad* const, tMempool* const);
-    
-    float   tBiQuad_tick           (tBiQuad* const, float input);
-    void    tBiQuad_setB0          (tBiQuad* const, float b0);
-    void    tBiQuad_setB1          (tBiQuad* const, float b1);
-    void    tBiQuad_setB2          (tBiQuad* const, float b2);
-    void    tBiQuad_setA1          (tBiQuad* const, float a1);
-    void    tBiQuad_setA2          (tBiQuad* const, float a2);
-    void    tBiQuad_setNotch       (tBiQuad* const, float freq, float radius);
-    void    tBiQuad_setResonance   (tBiQuad* const, float freq, float radius, oBool normalize);
-    void    tBiQuad_setCoefficients(tBiQuad* const, float b0, float b1, float b2, float a1, float a2);
-    void    tBiQuad_setGain        (tBiQuad* const, float gain);
-    
-    //==============================================================================
-    
-    /* State Variable Filter, algorithm from Andy Simper. */
-    typedef enum SVFType
-    {
-        SVFTypeHighpass = 0,
-        SVFTypeLowpass,
-        SVFTypeBandpass,
-        SVFTypeNotch,
-        SVFTypePeak,
-    } SVFType;
-    
-    typedef struct _tSVF
-    {
-        SVFType type;
-        float cutoff, Q;
-        float ic1eq,ic2eq;
-        float g,k,a1,a2,a3;
-        
-    } _tSVF;
-    
-    typedef _tSVF* tSVF;
-    
-    void    tSVF_init           (tSVF* const, SVFType type, float freq, float Q);
-    void    tSVF_free           (tSVF* const);
-    void    tSVF_initToPool     (tSVF* const, SVFType type, float freq, float Q, tMempool* const);
-    void    tSVF_freeFromPool   (tSVF* const, tMempool* const);
-    
-    float   tSVF_tick           (tSVF* const, float v0);
-    void    tSVF_setFreq        (tSVF* const, float freq);
-    void    tSVF_setQ           (tSVF* const, float Q);
-    
-    //==============================================================================
-    
-    /* Efficient State Variable Filter for 14-bit control input, [0, 4096). */
-    typedef struct _tEfficientSVF
-    {
-        SVFType type;
-        float cutoff, Q;
-        float ic1eq,ic2eq;
-        float g,k,a1,a2,a3;
-        
-    } _tEfficientSVF;
-    
-    typedef _tEfficientSVF* tEfficientSVF;
-    
-    void    tEfficientSVF_init          (tEfficientSVF* const, SVFType type, uint16_t input, float Q);
-    void    tEfficientSVF_free          (tEfficientSVF* const);
-    void    tEfficientSVF_initToPool    (tEfficientSVF* const, SVFType type, uint16_t input, float Q, tMempool* const);
-    void    tEfficientSVF_freeFromPool  (tEfficientSVF* const, tMempool* const);
-    
-    float   tEfficientSVF_tick          (tEfficientSVF* const, float v0);
-    void    tEfficientSVF_setFreq       (tEfficientSVF* const, uint16_t controlFreq);
-    void    tEfficientSVF_setQ          (tEfficientSVF* const, float Q);
-    
-    //==============================================================================
-    
-    /* Simple Highpass filter. */
-    typedef struct _tHighpass
-    {
-        float xs, ys, R;
-        float frequency;
-        
-    } _tHighpass;
-    
-    typedef _tHighpass* tHighpass;
-    
-    void    tHighpass_init          (tHighpass* const, float freq);
-    void    tHighpass_free          (tHighpass* const);
-    void    tHighpass_initToPool    (tHighpass* const, float freq, tMempool* const);
-    void    tHighpass_freeFromPool  (tHighpass* const, tMempool* const);
-    
-    float   tHighpass_tick          (tHighpass* const, float x);
-    void    tHighpass_setFreq       (tHighpass* const, float freq);
-    float   tHighpass_getFreq       (tHighpass* const);
-    
-    //==============================================================================
-    
-    // Butterworth Filter
-#define NUM_SVF_BW 16
-    typedef struct _tButterworth
-    {
-        float gain;
-        
-        int N;
-        
-        tSVF low[NUM_SVF_BW];
-        tSVF high[NUM_SVF_BW];
-        
-        float f1,f2;
-        
-    } _tButterworth;
-    
-    typedef _tButterworth* tButterworth;
-    
-    void    tButterworth_init           (tButterworth* const, int N, float f1, float f2);
-    void    tButterworth_free           (tButterworth* const);
-    void    tButterworth_initToPool     (tButterworth* const, int N, float f1, float f2, tMempool* const);
-    void    tButterworth_freeFromPool   (tButterworth* const, tMempool* const);
-    
-    float   tButterworth_tick           (tButterworth* const, float input);
-    void    tButterworth_setF1          (tButterworth* const, float in);
-    void    tButterworth_setF2          (tButterworth* const, float in);
-    void    tButterworth_setFreqs       (tButterworth* const, float f1, float f2);
-    
-    //==============================================================================
-    
-    typedef struct _tFIR
-    {
-        float* past;
-        float* coeff;
-        int numTaps;
-    } _tFIR;
-    
-    typedef _tFIR* tFIR;
-    
-    void    tFIR_init           (tFIR* const, float* coeffs, int numTaps);
-    void    tFIR_free           (tFIR* const);
-    void    tFIR_initToPool     (tFIR* const, float* coeffs, int numTaps, tMempool* const);
-    void    tFIR_freeFromPool   (tFIR* const, tMempool* const);
-    
-    float   tFIR_tick           (tFIR* const, float input);
-    void    tFIR_coeffs         (tFIR* const, float in);
-    
-    //==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // LEAF_FILTERS_H_INCLUDED
-
-//==============================================================================
-
--- a/LEAF/Inc/leaf-global.h
+++ /dev/null
@@ -1,39 +1,0 @@
-/*
- ==============================================================================
- 
- leaf-global.h
- Created: 24 Oct 2019 2:24:38pm
- Author:  Matthew Wang
- 
- ==============================================================================
- */
-
-#ifndef LEAF_GLOBAL_H_INCLUDED
-#define LEAF_GLOBAL_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    typedef struct _LEAF
-    {
-        float   sampleRate;
-        float   invSampleRate;
-        int     blockSize;
-        float   twoPiTimesInvSampleRate;
-        float   (*random)(void);
-        int     clearOnAllocation;
-    } LEAF;
-    
-    extern LEAF leaf; // The global instance of LEAF.
-    
-    //==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // LEAF_GLOBAL_H_INCLUDED
-
-//==============================================================================
-
--- a/LEAF/Inc/leaf-instruments.h
+++ /dev/null
@@ -1,201 +1,0 @@
-/*==============================================================================
- 
- leaf-instruments.h
- Created: 30 Nov 2018 10:24:44am
- Author:  airship
- 
- ==============================================================================*/
-
-#ifndef LEAF_INSTRUMENTS_H_INCLUDED
-#define LEAF_INSTRUMENTS_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-    
-#include "leaf-math.h"
-#include "leaf-mempool.h"
-#include "leaf-oscillators.h"
-#include "leaf-filters.h"
-#include "leaf-envelopes.h"
-    
-    //==============================================================================
-    
-    // 808 Cowbell
-    typedef struct _t808Cowbell {
-        
-        tSquare p[2];
-        tNoise stick;
-        tSVF bandpassOsc;
-        tSVF bandpassStick;
-        tEnvelope envGain;
-        tEnvelope envStick;
-        tEnvelope envFilter;
-        tHighpass highpass;
-        float oscMix;
-        float filterCutoff;
-        oBool useStick;
-        
-    } _t808Cowbell;
-    
-    typedef _t808Cowbell* t808Cowbell;
-    
-    void    t808Cowbell_init            (t808Cowbell* const, int useStick);
-    void    t808Cowbell_free            (t808Cowbell* const);
-    void    t808Cowbell_initToPool      (t808Cowbell* const, int useStick, tMempool* const);
-    void    t808Cowbell_freeFromPool    (t808Cowbell* const, tMempool* const);
-    
-    float   t808Cowbell_tick            (t808Cowbell* const);
-    void    t808Cowbell_on              (t808Cowbell* const, float vel);
-    void    t808Cowbell_setDecay        (t808Cowbell* const, float decay);
-    void    t808Cowbell_setHighpassFreq (t808Cowbell* const, float freq);
-    void    t808Cowbell_setBandpassFreq (t808Cowbell* const, float freq);
-    void    t808Cowbell_setFreq         (t808Cowbell* const, float freq);
-    void    t808Cowbell_setOscMix       (t808Cowbell* const, float oscMix);
-    void    t808Cowbell_setStick        (t808Cowbell* const, int useStick);
-    
-    //==============================================================================
-    
-    // 808 Hihat
-    typedef struct _t808Hihat {
-        
-        // 6 Square waves
-        tSquare p[6];
-        tNoise n;
-        tSVF bandpassOsc;
-        tSVF bandpassStick;
-        tEnvelope envGain;
-        tEnvelope envStick;
-        tEnvelope noiseFMGain;
-        tHighpass highpass;
-        tNoise stick;
-        
-        float freq;
-        float stretch;
-        float FM_amount;
-        float oscNoiseMix;
-        
-    } _t808Hihat;
-    
-    typedef _t808Hihat* t808Hihat;
-    
-    void    t808Hihat_init                  (t808Hihat* const);
-    void    t808Hihat_free                  (t808Hihat* const);
-    void    t808Hihat_initToPool            (t808Hihat* const, tMempool* const);
-    void    t808Hihat_freeFromPool          (t808Hihat* const, tMempool* const);
-    
-    float   t808Hihat_tick                  (t808Hihat* const);
-    void    t808Hihat_on                    (t808Hihat* const, float vel);
-    void    t808Hihat_setOscNoiseMix        (t808Hihat* const, float oscNoiseMix);
-    void    t808Hihat_setDecay              (t808Hihat* const, float decay);
-    void    t808Hihat_setHighpassFreq       (t808Hihat* const, float freq);
-    void    t808Hihat_setOscBandpassFreq    (t808Hihat* const, float freq);
-    void    t808Hihat_setOscBandpassQ       (t808Hihat* const hihat, float Q);
-    void    t808Hihat_setStickBandPassFreq  (t808Hihat* const, float freq);
-    void    t808Hihat_setStickBandPassQ     (t808Hihat* const hihat, float Q);
-    void    t808Hihat_setOscFreq            (t808Hihat* const, float freq);
-    void    t808Hihat_setStretch            (t808Hihat* const hihat, float stretch);
-    void    t808Hihat_setFM                 (t808Hihat* const hihat, float FM_amount);
-    
-    //==============================================================================
-    
-    // 808 Snare
-    typedef struct _t808Snare {
-        
-        // Tone 1, Tone 2, Noise
-        tTriangle tone[2]; // Tri (not yet antialiased or wavetabled)
-        tNoise noiseOsc;
-        tSVF toneLowpass[2];
-        tSVF noiseLowpass; // Lowpass from SVF filter
-        tEnvelope toneEnvOsc[2];
-        tEnvelope toneEnvGain[2];
-        tEnvelope noiseEnvGain;
-        tEnvelope toneEnvFilter[2];
-        tEnvelope noiseEnvFilter;
-        
-        float toneGain[2];
-        float noiseGain;
-        
-        float toneNoiseMix;
-        
-        float tone1Freq, tone2Freq;
-        
-        float noiseFilterFreq;
-        
-    } _t808Snare;
-    
-    typedef _t808Snare* t808Snare;
-    
-    void    t808Snare_init                  (t808Snare* const);
-    void    t808Snare_free                  (t808Snare* const);
-    void    t808Snare_initToPool            (t808Snare* const, tMempool* const);
-    void    t808Snare_freeFromPool          (t808Snare* const, tMempool* const);
-    
-    float   t808Snare_tick                  (t808Snare* const);
-    void    t808Snare_on                    (t808Snare* const, float vel);
-    void    t808Snare_setTone1Freq          (t808Snare* const, float freq);
-    void    t808Snare_setTone2Freq          (t808Snare* const, float freq);
-    void    t808Snare_setTone1Decay         (t808Snare* const, float decay);
-    void    t808Snare_setTone2Decay         (t808Snare* const, float decay);
-    void    t808Snare_setNoiseDecay         (t808Snare* const, float decay);
-    void    t808Snare_setToneNoiseMix       (t808Snare* const, float toneNoiseMix);
-    void    t808Snare_setNoiseFilterFreq    (t808Snare* const, float noiseFilterFreq);
-    void    t808Snare_setNoiseFilterQ       (t808Snare* const, float noiseFilterQ);
-    
-    //==============================================================================
-    
-    // 808 Kick
-    typedef struct _t808Kick {
-        
-        
-        tCycle tone; // Tri
-        tNoise noiseOsc;
-        tSVF toneLowpass;
-        tEnvelope toneEnvOscChirp;
-        tEnvelope toneEnvOscSigh;
-        tEnvelope toneEnvGain;
-        tEnvelope noiseEnvGain;
-        tEnvelope toneEnvFilter;
-        
-        float toneGain;
-        float noiseGain;
-        
-        float toneInitialFreq;
-        float sighAmountInHz;
-        float chirpRatioMinusOne;
-        float noiseFilterFreq;
-        
-    } _t808Kick;
-    
-    typedef _t808Kick* t808Kick;
-    
-    void    t808Kick_init               (t808Kick* const);
-    void    t808Kick_free               (t808Kick* const);
-    void    t808Kick_initToPool         (t808Kick* const, tMempool* const);
-    void    t808Kick_freeFromPool       (t808Kick* const, tMempool* const);
-    
-    float   t808Kick_tick               (t808Kick* const);
-    void    t808Kick_on                 (t808Kick* const, float vel);
-    void    t808Kick_setToneFreq        (t808Kick* const, float freq);
-    void    t808Kick_setToneDecay       (t808Kick* const, float decay);
-    void    t808Kick_setNoiseDecay      (t808Kick* const, float decay);
-    void    t808Kick_setSighAmount      (t808Kick* const, float sigh);
-    void    t808Kick_setChirpAmount     (t808Kick* const, float chirp);
-    void    t808Kick_setToneNoiseMix    (t808Kick* const, float toneNoiseMix);
-    void    t808Kick_setNoiseFilterFreq (t808Kick* const, float noiseFilterFreq);
-    void    t808Kick_setNoiseFilterQ    (t808Kick* const, float noiseFilterQ);
-    
-    //==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif // LEAF_INSTRUMENTS_H_INCLUDED
-
-//==============================================================================
-
-
-
--- a/LEAF/Inc/leaf-math.h
+++ /dev/null
@@ -1,179 +1,0 @@
-/*==============================================================================
- 
- leaf-math.h
- Created: 22 Jan 2017 7:02:56pm
- Author:  Michael R Mulshine
- 
- ==============================================================================*/
-
-#ifndef LEAF_MATH_H_INCLUDED
-#define LEAF_MATH_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-#include "leaf-global.h"
-#include "math.h"
-#include "stdint.h"
-#include "stdlib.h"
-    
-    //==============================================================================
-    
-    //==============================================================================
-    
-    typedef enum oBool
-    {
-        OTRUE  = 1,
-        OFALSE = 0
-    }oBool;
-    
-    // Allows for bitwise operations on floats
-    union unholy_t { /* a union between a float and an integer */
-        float f;
-        int i;
-    };
-    
-#define SQRT8 2.82842712475f
-#define WSCALE 1.30612244898f
-#define PI              (3.14159265358979f)
-#define TWO_PI          (2 * PI)
-    
-#define VSF             1.0e-38f
-    
-#define MAX_DELAY       8192
-#define INV_128         0.0078125f
-    
-#define INV_20         0.05f
-#define INV_40         0.025f
-#define INV_80         0.0125f
-#define INV_160        0.00625f
-#define INV_320        0.003125f
-#define INV_640        0.0015625f
-#define INV_1280       0.00078125f
-#define INV_2560       0.000390625f
-#define INV_5120       0.0001953125f
-#define INV_10240      0.00009765625f
-#define INV_20480      0.000048828125f
-    
-    
-#define INV_TWELVE                 0.0833333333f
-#define INV_440                     0.0022727273f
-    
-#define LOG2                             0.3010299957f
-#define INV_LOG2                     3.321928095f
-    
-#define SOS_M                         343.0f
-#define TWO_TO_5                     32.0f
-#define INV_TWO_TO_5             0.03125f
-#define TWO_TO_7                     128.f
-#define INV_TWO_TO_7             0.0078125f
-#define TWO_TO_8                     256.f
-#define INV_TWO_TO_8             0.00390625f
-#define TWO_TO_9                     512.f
-#define INV_TWO_TO_9             0.001953125f
-#define TWO_TO_10                 1024.f
-#define INV_TWO_TO_10         0.0009765625f
-#define TWO_TO_11                 2048.f
-#define INV_TWO_TO_11         0.00048828125f
-#define TWO_TO_12                 4096.f
-#define INV_TWO_TO_12         0.00024414062f
-#define TWO_TO_15                 32768.f
-#define TWO_TO_16                 65536.f
-#define INV_TWO_TO_15         0.00003051757f
-#define INV_TWO_TO_16         0.00001525878f
-#define TWO_TO_16_MINUS_ONE 65535.0f
-#define TWO_TO_23        8388608.0f
-#define INV_TWO_TO_23    0.00000011920929f
-#define TWO_TO_31        2147483648.0f
-#define INV_TWO_TO_31    0.000000000465661f
-#define TWO_TO_32        4294967296.0f
-#define INV_TWO_TO_32    0.000000000232831f
-    
-
-#define LOGTEN 2.302585092994
-
-    // Jones shaper
-    float LEAF_shaper     (float input, float m_drive);
-    float LEAF_reedTable  (float input, float offset, float slope);
-    
-    float LEAF_reduct (float input, float ratio);
-    float LEAF_round (float input, float rnd);
-    float LEAF_bitwise_xor(float input, uint32_t op);
-    
-    float LEAF_reduct (float input, float ratio);
-    float LEAF_round (float input, float rnd);
-    float LEAF_bitwise_xor(float input, uint32_t op);
-    
-    float       LEAF_clip               (float min, float val, float max);
-    int         LEAF_clipInt            (int min, int val, int max);
-    float       LEAF_softClip            (float val, float thresh);
-    oBool       LEAF_isPrime            (uint64_t number );
-    
-    float       LEAF_midiToFrequency    (float f);
-    float       LEAF_frequencyToMidi(float f);
-    
-    void        LEAF_generate_sine     (float* buffer, int size);
-    void        LEAF_generate_sawtooth (float* buffer, float basefreq, int size);
-    void        LEAF_generate_triangle (float* buffer, float basefreq, int size);
-    void        LEAF_generate_square   (float* buffer, float basefreq, int size);
-    
-    // dope af
-    float       LEAF_chebyshevT(float in, int n);
-    float       LEAF_CompoundChebyshevT(float in, int n, float* amps);
-    
-    // Hermite interpolation
-    float LEAF_interpolate_hermite (float A, float B, float C, float D, float t);
-    float LEAF_interpolate_hermite_x(float yy0, float yy1, float yy2, float yy3, float xx);
-    float LEAF_interpolation_linear (float A, float B, float t);
-    
-    float interpolate3max(float *buf, const int peakindex);
-    float interpolate3phase(float *buf, const int peakindex);
-    
-    // alternative implementation for abs()
-    // REQUIRES: 32 bit integers
-    int fastabs_int(int in);
-    
-    // alternative implementation for abs()
-    // REQUIRES: 32 bit floats
-    float fastabsf(float f);
-    
-    float fastexp2f(float f);
-    
-    
-    void LEAF_crossfade(float fade, float* volumes);
-
-
-
-    float fast_mtof(float f);
-
-    float fastexpf(float x);
-
-    float fasterexpf(float x);
-
-    float mtof(float f);
-    
-    float fast_mtof(float f);
-
-    float faster_mtof(float f);
-
-    float ftom(float f);
-    
-    float powtodb(float f);
-    
-    float rmstodb(float f);
-    
-    float dbtopow(float f);
-    
-    float dbtorms(float f);
-    
-    //==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // LEAF_MATH_H_INCLUDED
-
-//==============================================================================
-
--- a/LEAF/Inc/leaf-mempool.h
+++ /dev/null
@@ -1,127 +1,0 @@
-/*==============================================================================
- 
- In short, mpool is distributed under so called "BSD license",
- 
- Copyright (c) 2009-2010 Tatsuhiko Kubo <cubicdaiya@gmail.com>
- All rights reserved.
- 
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
- 
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- 
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- 
- * Neither the name of the authors nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
- 
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- 
- written by C99 style
- ==============================================================================*/
-
-#ifndef LEAF_MPOOL_H_INCLUDED
-#define LEAF_MPOOL_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-    
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdbool.h>
-    
-    //==============================================================================
-    
-#define MPOOL_ALIGN_SIZE (8)
-    
-    //#define size_t unsigned long
-    
-    /**
-     * memory pool structure
-     */
-    
-    // node of free list
-    typedef struct mpool_node_t {
-        void                *pool;     // memory pool field
-        struct mpool_node_t *next;     // next node pointer
-        struct mpool_node_t *prev;     // prev node pointer
-        size_t size;
-    } mpool_node_t;
-    
-    typedef struct mpool_t {
-        void*         mpool;       // start of the mpool
-        size_t        usize;       // used size of the pool
-        size_t        msize;       // max size of the pool
-        mpool_node_t* head;        // first node of memory pool free list
-    } mpool_t;
-    
-    void mpool_create (char* memory, size_t size, mpool_t* pool);
-
-    void* mpool_alloc(size_t size, mpool_t* pool);
-    void* mpool_calloc(size_t asize, mpool_t* pool);
-
-    void mpool_free(void* ptr, mpool_t* pool);
-    
-    size_t mpool_get_size(mpool_t* pool);
-    size_t mpool_get_used(mpool_t* pool);
-    
-    void leaf_pool_init(char* memory, size_t size);
-    
-    void* leaf_alloc(size_t size);
-    void* leaf_calloc(size_t size);
-
-    void leaf_free(void* ptr);
-    
-    size_t leaf_pool_get_size(void);
-    size_t leaf_pool_get_used(void);
-    
-    void* leaf_pool_get_pool(void);
-    
-    void leaf_mempool_overrun(void);
-    
-    // User object for creating additional mempools
-    
-    typedef struct _tMempool
-    {
-        mpool_t pool;
-    } _tMempool;
-    
-    typedef _tMempool* tMempool;
-    
-    void    tMempool_init           (tMempool* const, char* memory, size_t size);
-    void    tMempool_free           (tMempool* const);
-    void    tMempool_initToPool     (tMempool* const, char* memory, size_t size, tMempool* const);
-    void    tMempool_freeFromPool   (tMempool* const, tMempool* const);
-    
-    //==============================================================================
-    
-    extern tMempool leaf_mempool;
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif // LEAF_MPOOL_H
-
-//==============================================================================
-
-
-
--- a/LEAF/Inc/leaf-midi.h
+++ /dev/null
@@ -1,133 +1,0 @@
-/*==============================================================================
- 
- leaf-midi.h
- Created: 30 Nov 2018 11:29:26am
- Author:  airship
- 
- ==============================================================================*/
-
-#ifndef LEAF_MIDI_H_INCLUDED
-#define LEAF_MIDI_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-    
-#include "leaf-global.h"
-#include "leaf-mempool.h"
-#include "leaf-math.h"
-#include "leaf-envelopes.h"
-    
-    //==============================================================================
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    // STACK implementation (fixed size)
-#define STACK_SIZE 128
-    typedef struct _tStack
-    {
-        int data[STACK_SIZE];
-        uint16_t pos;
-        uint16_t size;
-        uint16_t capacity;
-        oBool ordered;
-        
-    } _tStack;
-    
-    typedef _tStack* tStack;
-    
-    void    tStack_init                 (tStack* const);
-    void    tStack_free                 (tStack* const);
-    void    tStack_initToPool           (tStack* const, tMempool* const);
-    void    tStack_freeFromPool         (tStack* const, tMempool* const);
-    
-    void    tStack_setCapacity          (tStack* const, uint16_t cap);
-    int     tStack_addIfNotAlreadyThere (tStack* const, uint16_t item);
-    void    tStack_add                  (tStack* const, uint16_t item);
-    int     tStack_remove               (tStack* const, uint16_t item);
-    void    tStack_clear                (tStack* const);
-    int     tStack_first                (tStack* const);
-    int     tStack_getSize              (tStack* const);
-    int     tStack_contains             (tStack* const, uint16_t item);
-    int     tStack_next                 (tStack* const);
-    int     tStack_get                  (tStack* const, int which);
-    
-    /* tPoly */
-    typedef struct _tPoly
-    {
-        tStack stack;
-        tStack orderStack;
-        
-        tRamp* ramps;
-        float* rampVals;
-        oBool* firstReceived;
-        float glideTime;
-        oBool pitchGlideIsActive;
-        
-        int numVoices;
-        int maxNumVoices;
-        
-        //int voices[POLY_NUM_MAX_VOICES][2];
-        int** voices;
-        
-        int notes[128][2];
-        
-        int CCs[128];
-        
-        uint8_t CCsRaw[128];
-        
-        int lastVoiceToChange;
-        
-        float pitchBend;
-        tRamp pitchBendRamp;
-        
-        int currentNote;
-        int currentVoice;
-        int currentVelocity;
-        int maxLength;
-        
-    } _tPoly;
-    
-    typedef _tPoly* tPoly;
-    
-    /* MPoly*/
-    void    tPoly_init                  (tPoly* const, int maxNumVoices);
-    void    tPoly_free                  (tPoly* const);
-    void    tPoly_initToPool            (tPoly* const, int maxNumVoices, tMempool* const);
-    void    tPoly_freeFromPool          (tPoly* const, tMempool* const);
-    
-    //ADDING A NOTE
-    int     tPoly_noteOn                (tPoly* const, int note, uint8_t vel);
-    int     tPoly_noteOff               (tPoly* const, uint8_t note);
-    void    tPoly_orderedAddToStack     (tPoly* const, uint8_t noteVal);
-    void    tPoly_setNumVoices          (tPoly* const, uint8_t numVoices);
-    
-    void    tPoly_setPitchBend          (tPoly* const, float pitchBend);
-    void    tPoly_setPitchGlideActive   (tPoly* const, oBool isActive);
-    void    tPoly_setPitchGlideTime     (tPoly* const, float t);
-    void 	tPoly_setBendGlideTime		(tPoly* const polyh, float t);
-    void 	tPoly_setBendSamplesPerTick	(tPoly* const polyh, float t);
-    void    tPoly_tickPitch             (tPoly* const);
-    void    tPoly_tickPitchGlide        (tPoly* const);
-    void    tPoly_tickPitchBend         (tPoly* const);
-    
-    int     tPoly_getNumVoices          (tPoly* const);
-    int     tPoly_getNumActiveVoices    (tPoly* const);
-    float   tPoly_getPitch              (tPoly* const, uint8_t voice);
-    int     tPoly_getKey                (tPoly* const, uint8_t voice);
-    int     tPoly_getVelocity           (tPoly* const, uint8_t voice);
-    int     tPoly_isOn                  (tPoly* const, uint8_t voice);
-    
-    //==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif // LEAF_MIDI_H_INCLUDED
-
-//==============================================================================
-
-
--- a/LEAF/Inc/leaf-oscillators.h
+++ /dev/null
@@ -1,208 +1,0 @@
-/*==============================================================================
- leaf-oscillators.h
- Created: 20 Jan 2017 12:00:58pm
- Author:  Michael R Mulshine
- ==============================================================================*/
-
-#ifndef LEAF_OSCILLATORS_H_INCLUDED
-#define LEAF_OSCILLATORS_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-    
-#include "leaf-math.h"
-#include "leaf-mempool.h"
-#include "leaf-filters.h"
-    
-    //==============================================================================
-    
-    /* tCycle: Cycle/Sine waveform. Wavetable synthesis.*/
-    typedef struct _tCycle
-    {
-        // Underlying phasor
-        float phase;
-        float inc,freq;
-        
-    } _tCycle;
-    
-    typedef _tCycle* tCycle;
-    
-    void    tCycle_init         (tCycle* const);
-    void    tCycle_free         (tCycle* const);
-    void    tCycle_initToPool   (tCycle* const, tMempool* const);
-    void    tCycle_freeFromPool (tCycle* const, tMempool* const);
-    
-    float   tCycle_tick         (tCycle* const);
-    int     tCycle_setFreq      (tCycle* const, float freq);
-    
-    //==============================================================================
-    
-    /* tTriangle: Anti-aliased Triangle waveform using wavetable interpolation. Wavetables constructed from sine components. */
-    typedef struct _tTriangle
-    {
-        // Underlying phasor
-        float phase;
-        float inc,freq;
-        
-    } _tTriangle;
-    
-    typedef _tTriangle* tTriangle;
-    
-    void    tTriangle_init          (tTriangle* const);
-    void    tTriangle_free          (tTriangle* const);
-    void    tTriangle_initToPool    (tTriangle* const, tMempool* const);
-    void    tTriangle_freeFromPool  (tTriangle* const, tMempool* const);
-    
-    float   tTriangle_tick          (tTriangle* const);
-    int     tTriangle_setFreq       (tTriangle* const, float freq);
-    
-    //==============================================================================
-    
-    /* tSquare: Anti-aliased Square waveform using wavetable interpolation. Wavetables constructed from sine components. */
-    typedef struct _tSquare
-    {
-        // Underlying phasor
-        float phase;
-        float inc,freq;
-        
-    } _tSquare;
-    
-    typedef _tSquare* tSquare;
-    
-    void    tSquare_init        (tSquare* const);
-    void    tSquare_free        (tSquare* const);
-    void    tSquare_initToPool  (tSquare* const, tMempool* const);
-    void    tSquare_freeFromPool(tSquare* const, tMempool* const);
-    
-    float   tSquare_tick        (tSquare* const);
-    int     tSquare_setFreq     (tSquare* const, float freq);
-    
-    //==============================================================================
-    
-    /* tSawtooth: Anti-aliased Sawtooth waveform using wavetable interpolation. Wavetables constructed from sine components. */
-    typedef struct _tSawtooth
-    {
-        // Underlying phasor
-        float phase;
-        float inc,freq;
-        
-    } _tSawtooth;
-    
-    typedef _tSawtooth* tSawtooth;
-    
-    void    tSawtooth_init          (tSawtooth* const);
-    void    tSawtooth_free          (tSawtooth* const);
-    void    tSawtooth_initToPool    (tSawtooth* const, tMempool* const);
-    void    tSawtooth_freeFromPool  (tSawtooth* const, tMempool* const);
-    
-    float   tSawtooth_tick          (tSawtooth* const);
-    int     tSawtooth_setFreq       (tSawtooth* const, float freq);
-    
-    //==============================================================================
-    
-    /* tPhasor: Aliasing phasor [0.0, 1.0) */
-    typedef struct _tPhasor
-    {
-        float phase;
-        float inc,freq;
-        
-    } _tPhasor;
-    
-    typedef _tPhasor* tPhasor;
-    
-    void    tPhasor_init        (tPhasor* const);
-    void    tPhasor_free        (tPhasor* const);
-    void    tPhasor_initToPool  (tPhasor* const, tMempool* const);
-    void    tPhasor_freeFromPool(tPhasor* const, tMempool* const);
-    
-    float   tPhasor_tick        (tPhasor* const);
-    int     tPhasor_setFreq     (tPhasor* const, float freq);
-    
-    //==============================================================================
-    
-    /* tNoise. WhiteNoise, PinkNoise. */
-    typedef enum NoiseType
-    {
-        WhiteNoise=0,
-        PinkNoise,
-        NoiseTypeNil,
-    } NoiseType;
-    
-    typedef struct _tNoise
-    {
-        NoiseType type;
-        float pinkb0, pinkb1, pinkb2;
-        float(*rand)(void);
-        
-    } _tNoise;
-    
-    typedef _tNoise* tNoise;
-    
-    void    tNoise_init         (tNoise* const, NoiseType type);
-    void    tNoise_free         (tNoise* const);
-    void    tNoise_initToPool   (tNoise* const, NoiseType type, tMempool* const);
-    void    tNoise_freeFromPool (tNoise* const, tMempool* const);
-    
-    float   tNoise_tick         (tNoise* const);
-    
-    //==============================================================================
-    
-    /* tNeuron */
-    typedef enum NeuronMode
-    {
-        NeuronNormal = 0,
-        NeuronTanh,
-        NeuronAaltoShaper,
-        NeuronModeNil
-    } NeuronMode;
-    
-    typedef struct _tNeuron
-    {
-        tPoleZero f;
-        
-        NeuronMode mode;
-        
-        float voltage, current;
-        float timeStep;
-        
-        float alpha[3];
-        float beta[3];
-        float rate[3];
-        float V[3];
-        float P[3];
-        float gK, gN, gL, C;
-    } _tNeuron;
-    
-    typedef _tNeuron* tNeuron;
-    
-    void    tNeuron_init        (tNeuron* const);
-    void    tNeuron_free        (tNeuron* const);
-    void    tNeuron_initToPool  (tNeuron* const, tMempool* const);
-    void    tNeuron_freeFromPool(tNeuron* const, tMempool* const);
-    
-    void    tNeuron_reset       (tNeuron* const);
-    float   tNeuron_tick        (tNeuron* const);
-    void    tNeuron_setMode     (tNeuron* const, NeuronMode mode);
-    void    tNeuron_setCurrent  (tNeuron* const, float current);
-    void    tNeuron_setK        (tNeuron* const, float K);
-    void    tNeuron_setL        (tNeuron* const, float L);
-    void    tNeuron_setN        (tNeuron* const, float N);
-    void    tNeuron_setC        (tNeuron* const, float C);
-    void    tNeuron_setV1       (tNeuron* const, float V1);
-    void    tNeuron_setV2       (tNeuron* const, float V2);
-    void    tNeuron_setV3       (tNeuron* const, float V3);
-    void    tNeuron_setTimeStep (tNeuron* const, float timestep);
-    
-    //==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // LEAF_OSCILLATORS_H_INCLUDED
-
-//==============================================================================
-
--- a/LEAF/Inc/leaf-physical.h
+++ /dev/null
@@ -1,251 +1,0 @@
-/*
- ==============================================================================
- 
- leaf-physical.h
- Created: 30 Nov 2018 10:41:55am
- Author:  airship
- 
- ==============================================================================
- */
-
-#ifndef LEAF_PHYSICAL_H_INCLUDED
-#define LEAF_PHYSICAL_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-    
-#include "leaf-global.h"
-#include "leaf-math.h"
-#include "leaf-mempool.h"
-#include "leaf-delay.h"
-#include "leaf-filters.h"
-#include "leaf-oscillators.h"
-#include "leaf-envelopes.h"
-#include "leaf-dynamics.h"
-    
-    //==============================================================================
-    
-    /* Karplus Strong model */
-    typedef struct _tPluck
-    {
-        tAllpassDelay     delayLine; // Allpass or Linear??  big difference...
-        tOneZero    loopFilter;
-        tOnePole    pickFilter;
-        tNoise      noise;
-        
-        float lastOut;
-        float loopGain;
-        float lastFreq;
-        
-        float sr;
-        
-    } _tPluck;
-    
-    typedef _tPluck* tPluck;
-    
-    void    tPluck_init          (tPluck* const, float lowestFrequency); //float delayBuff[DELAY_LENGTH]);
-    void    tPluck_free          (tPluck* const);
-    void    tPluck_initToPool    (tPluck* const, float lowestFrequency, tMempool* const);
-    void    tPluck_freeFromPool  (tPluck* const, tMempool* const);
-    
-    float       tPluck_tick          (tPluck* const);
-    
-    // Pluck the string.
-    void    tPluck_pluck         (tPluck* const, float amplitude);
-    
-    // Start a note with the given frequency and amplitude.;
-    void    tPluck_noteOn        (tPluck* const, float frequency, float amplitude );
-    
-    // Stop a note with the given amplitude (speed of decay).
-    void    tPluck_noteOff       (tPluck* const, float amplitude );
-    
-    // Set instrument parameters for a particular frequency.
-    void    tPluck_setFrequency  (tPluck* const, float frequency );
-    
-    // Perform the control change specified by \e number and \e value (0.0 - 128.0).
-    void    tPluck_controlChange (tPluck* const, int number, float value);
-    
-    // tPluck Utilities.
-    float   tPluck_getLastOut    (tPluck* const);
-    
-    //==============================================================================
-    
-    typedef enum SKControlType
-    {
-        SKPickPosition = 0,
-        SKStringDamping,
-        SKDetune,
-        SKControlTypeNil
-    } SKControlType;
-    
-    /* Stif Karplus Strong model */
-    typedef struct _tKarplusStrong
-    {
-        tAllpassDelay  delayLine;
-        tLinearDelay combDelay;
-        tOneZero filter;
-        tNoise   noise;
-        tBiQuad  biquad[4];
-        
-        uint32_t length;
-        float loopGain;
-        float baseLoopGain;
-        float lastFrequency;
-        float lastLength;
-        float stretching;
-        float pluckAmplitude;
-        float pickupPosition;
-        
-        float lastOut;
-        
-    } _tKarplusStrong;
-    
-    typedef _tKarplusStrong* tKarplusStrong;
-    
-    void    tKarplusStrong_init               (tKarplusStrong* const, float lowestFrequency); // float delayBuff[2][DELAY_LENGTH]);
-    void    tKarplusStrong_free               (tKarplusStrong* const);
-    void    tKarplusStrong_initToPool         (tKarplusStrong* const, float lowestFrequency, tMempool* const);
-    void    tKarplusStrong_freeFromPool       (tKarplusStrong* const, tMempool* const);
-    
-    float   tKarplusStrong_tick               (tKarplusStrong* const);
-    
-    // Pluck the string.
-    void    tKarplusStrong_pluck              (tKarplusStrong* const, float amplitude);
-    
-    // Start a note with the given frequency and amplitude.;
-    void    tKarplusStrong_noteOn             (tKarplusStrong* const, float frequency, float amplitude );
-    
-    // Stop a note with the given amplitude (speed of decay).
-    void    tKarplusStrong_noteOff            (tKarplusStrong* const, float amplitude );
-    
-    // Set instrument parameters for a particular frequency.
-    void    tKarplusStrong_setFrequency       (tKarplusStrong* const, float frequency );
-    
-    // Perform the control change specified by \e number and \e value (0.0 - 128.0).
-    // Use SKPickPosition, SKStringDamping, or SKDetune for type.
-    void    tKarplusStrong_controlChange      (tKarplusStrong* const, SKControlType type, float value);
-    
-    // Set the stretch "factor" of the string (0.0 - 1.0).
-    void    tKarplusStrong_setStretch         (tKarplusStrong* const, float stretch );
-    
-    // Set the pluck or "excitation" position along the string (0.0 - 1.0).
-    void    tKarplusStrong_setPickupPosition  (tKarplusStrong* const, float position );
-    
-    // Set the base loop gain.
-    void    tKarplusStrong_setBaseLoopGain    (tKarplusStrong* const, float aGain );
-    
-    // tKarplusStrong utilities.
-    float   tKarplusStrong_getLastOut         (tKarplusStrong* const);
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    /* Simple Living String */
-    typedef struct _tSimpleLivingString {
-        float freq, waveLengthInSamples;        // the frequency of the string, determining delay length
-        float dampFreq;    // frequency for the bridge LP filter, in Hz
-        float decay; // amplitude damping factor for the string (only active in mode 0)
-        float levMode;
-        float curr;
-        tLinearDelay delayLine;
-        tOnePole bridgeFilter;
-        tHighpass DCblocker;
-        tFeedbackLeveler fbLev;
-        tExpSmooth wlSmooth;
-    } _tSimpleLivingString;
-    
-    typedef _tSimpleLivingString* tSimpleLivingString;
-    
-    void    tSimpleLivingString_init                (tSimpleLivingString* const, float freq, float dampFreq,
-                                                     float decay, float targetLev, float levSmoothFactor,
-                                                     float levStrength, int levMode);
-    void    tSimpleLivingString_free                (tSimpleLivingString* const);
-    void    tSimpleLivingString_initToPool          (tSimpleLivingString* const, float freq, float dampFreq,
-                                                     float decay, float targetLev, float levSmoothFactor,
-                                                     float levStrength, int levMode, tMempool* const);
-    void    tSimpleLivingString_freeFromPool        (tSimpleLivingString* const, tMempool* const);
-    
-    float   tSimpleLivingString_tick                (tSimpleLivingString* const, float input);
-    float   tSimpleLivingString_sample              (tSimpleLivingString* const);
-    void    tSimpleLivingString_setFreq             (tSimpleLivingString* const, float freq);
-    void    tSimpleLivingString_setWaveLength       (tSimpleLivingString* const, float waveLength); // in samples
-    void    tSimpleLivingString_setDampFreq         (tSimpleLivingString* const, float dampFreq);
-    void    tSimpleLivingString_setDecay            (tSimpleLivingString* const, float decay); // should be near 1.0
-    void    tSimpleLivingString_setTargetLev        (tSimpleLivingString* const, float targetLev);
-    void    tSimpleLivingString_setLevSmoothFactor  (tSimpleLivingString* const, float levSmoothFactor);
-    void    tSimpleLivingString_setLevStrength      (tSimpleLivingString* const, float levStrength);
-    void    tSimpleLivingString_setLevMode          (tSimpleLivingString* const, int levMode);
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    /* Living String */
-    typedef struct _tLivingString {
-        float freq, waveLengthInSamples;        // the frequency of the whole string, determining delay length
-        float pickPos;    // the pick position, dividing the string in two, in ratio
-        float prepIndex;    // the amount of pressure on the pickpoint of the string (near 0=soft obj, near 1=hard obj)
-        float dampFreq;    // frequency for the bridge LP filter, in Hz
-        float decay; // amplitude damping factor for the string (only active in mode 0)
-        float levMode;
-        float curr;
-        tLinearDelay delLF,delUF,delUB,delLB;    // delay for lower/upper/forward/backward part of the waveguide model
-        tOnePole bridgeFilter, nutFilter, prepFilterU, prepFilterL;
-        tHighpass DCblockerL, DCblockerU;
-        tFeedbackLeveler fbLevU, fbLevL;
-        tExpSmooth wlSmooth, ppSmooth;
-    } _tLivingString;
-    
-    typedef _tLivingString* tLivingString;
-    
-    void    tLivingString_init                  (tLivingString* const, float freq, float pickPos, float prepIndex,
-                                                 float dampFreq, float decay, float targetLev, float levSmoothFactor,
-                                                 float levStrength, int levMode);
-    void    tLivingString_free                  (tLivingString* const);
-    void    tLivingString_initToPool            (tLivingString* const, float freq, float pickPos, float prepIndex,
-                                                 float dampFreq, float decay, float targetLev, float levSmoothFactor,
-                                                 float levStrength, int levMode, tMempool* const);
-    void    tLivingString_freeFromPool          (tLivingString* const, tMempool* const);
-    
-    float   tLivingString_tick                  (tLivingString* const, float input);
-    float   tLivingString_sample                (tLivingString* const);
-    void    tLivingString_setFreq               (tLivingString* const, float freq);
-    void    tLivingString_setWaveLength         (tLivingString* const, float waveLength); // in samples
-    void    tLivingString_setPickPos            (tLivingString* const, float pickPos);
-    void    tLivingString_setPrepIndex          (tLivingString* const, float prepIndex);
-    void    tLivingString_setDampFreq           (tLivingString* const, float dampFreq);
-    void    tLivingString_setDecay              (tLivingString* const, float decay); // should be near 1.0
-    void    tLivingString_setTargetLev          (tLivingString* const, float targetLev);
-    void    tLivingString_setLevSmoothFactor    (tLivingString* const, float levSmoothFactor);
-    void    tLivingString_setLevStrength        (tLivingString* const, float levStrength);
-    void    tLivingString_setLevMode            (tLivingString* const, int levMode);
-    
-    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
-    
-    //Reed Table - borrowed from STK
-    typedef struct _tReedTable {
-        float offset, slope;
-    } _tReedTable;
-    
-    typedef _tReedTable* tReedTable;
-    
-    void    tReedTable_init         (tReedTable* const, float offset, float slope);
-    void    tReedTable_free         (tReedTable* const);
-    void    tReedTable_initToPool   (tReedTable* const, float offset, float slope, tMempool* const);
-    void    tReedTable_freeFromPool (tReedTable* const, tMempool* const);
-    
-    float   tReedTable_tick         (tReedTable* const, float input);
-    float   tReedTable_tanh_tick    (tReedTable* const, float input); //tanh softclip version of reed table - replacing the hard clip in original stk code
-    void    tReedTable_setOffset    (tReedTable* const, float offset);
-    void    tReedTable_setSlope     (tReedTable* const, float slope);
-    
-    //==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif // LEAF_PHYSICAL_H_INCLUDED
-
-//==============================================================================
-
--- a/LEAF/Inc/leaf-reverb.h
+++ /dev/null
@@ -1,167 +1,0 @@
-/*==============================================================================
- 
- leaf-reverb.h
- Created: 20 Jan 2017 12:02:04pm
- Author:  Michael R Mulshine
- 
- ==============================================================================*/
-
-#ifndef LEAF_REVERB_H_INCLUDED
-#define LEAF_REVERB_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-    
-#include "leaf-global.h"
-#include "leaf-math.h"
-#include "leaf-mempool.h"
-#include "leaf-delay.h"
-#include "leaf-filters.h"
-#include "leaf-oscillators.h"
-    
-    //==============================================================================
-    
-    /* PRCReverb: Reverb, reimplemented from STK (Cook and Scavone). */
-    typedef struct _tPRCReverb
-    {
-        float mix, t60;
-        
-        float inv_441;
-        
-        tDelay allpassDelays[2];
-        tDelay combDelay;
-        float allpassCoeff;
-        float combCoeff;
-        
-        float lastIn, lastOut;
-        
-    } _tPRCReverb;
-    
-    typedef _tPRCReverb* tPRCReverb;
-    
-    void    tPRCReverb_init         (tPRCReverb* const, float t60);
-    void    tPRCReverb_free         (tPRCReverb* const);
-    void    tPRCReverb_initToPool   (tPRCReverb* const, float t60, tMempool* const);
-    void    tPRCReverb_freeFromPool (tPRCReverb* const, tMempool* const);
-    
-    void    tPRCReverb_clear        (tPRCReverb* const);
-    float   tPRCReverb_tick         (tPRCReverb* const, float input);
-    
-    // Set reverb time in seconds.
-    void    tPRCReverb_setT60       (tPRCReverb* const, float t60);
-    
-    // Set mix between dry input and wet output signal.
-    void    tPRCReverb_setMix       (tPRCReverb* const, float mix);
-    
-    //==============================================================================
-    
-    /* NReverb: Reverb, reimplemented from STK (Cook and Scavone). */
-    typedef struct _tNReverb
-    {
-        float mix, t60;
-        
-        float inv_sr, inv_441;
-        
-        tLinearDelay allpassDelays[8];
-        tLinearDelay combDelays[6];
-        float allpassCoeff;
-        float combCoeffs[6];
-        float lowpassState;
-        
-        float lastIn, lastOut;
-        
-    } _tNReverb;
-    
-    typedef _tNReverb* tNReverb;
-    
-    void    tNReverb_init           (tNReverb* const, float t60);
-    void    tNReverb_free           (tNReverb* const);
-    void    tNReverb_initToPool     (tNReverb* const, float t60, tMempool* const);
-    void    tNReverb_freeFromPool   (tNReverb* const, tMempool* const);
-    
-    void    tNReverb_clear          (tNReverb* const);
-    float   tNReverb_tick           (tNReverb* const, float input);
-    void    tNReverb_tickStereo     (tNReverb* const rev, float input, float* output);
-    
-    // Set reverb time in seconds.
-    void    tNReverb_setT60         (tNReverb* const, float t60);
-    
-    // Set mix between dry input and wet output signal.
-    void    tNReverb_setMix         (tNReverb* const, float mix);
-    
-    //==============================================================================
-    
-    typedef struct _tDattorroReverb
-    {
-        float   predelay;
-        float   input_filter;
-        float   feedback_filter;
-        float   feedback_gain;
-        float   mix;
-        uint32_t frozen;
-        
-        float   size, size_max, t;
-        
-        float   f1_delay_2_last,
-        f2_delay_2_last;
-        
-        float   f1_last,
-        f2_last;
-        
-        // INPUT
-        tTapeDelay  in_delay;
-        tOnePole    in_filter;
-        tAllpass    in_allpass[4];
-        
-        // FEEDBACK 1
-        tAllpass    f1_allpass;
-        tTapeDelay  f1_delay_1;
-        tOnePole    f1_filter;
-        tTapeDelay  f1_delay_2;
-        tTapeDelay  f1_delay_3;
-        tHighpass   f1_hp;
-        
-        tCycle      f1_lfo;
-        
-        // FEEDBACK 2
-        tAllpass    f2_allpass;
-        tTapeDelay  f2_delay_1;
-        tOnePole    f2_filter;
-        tTapeDelay  f2_delay_2;
-        tTapeDelay  f2_delay_3;
-        tHighpass   f2_hp;
-        
-        tCycle      f2_lfo;
-        
-    } _tDattorroReverb;
-    
-    typedef _tDattorroReverb* tDattorroReverb;
-    
-    void    tDattorroReverb_init              (tDattorroReverb* const);
-    void    tDattorroReverb_free              (tDattorroReverb* const);
-    void    tDattorroReverb_initToPool        (tDattorroReverb* const, tMempool* const);
-    void    tDattorroReverb_freeFromPool      (tDattorroReverb* const, tMempool* const);
-    
-    void    tDattorroReverb_clear             (tDattorroReverb* const);
-    float   tDattorroReverb_tick              (tDattorroReverb* const, float input);
-    void    tDattorroReverb_tickStereo        (tDattorroReverb* const rev, float input, float* output);
-    void    tDattorroReverb_setMix            (tDattorroReverb* const, float mix);
-    void    tDattorroReverb_setFreeze         (tDattorroReverb* const rev, uint32_t freeze);
-    void    tDattorroReverb_setHP             (tDattorroReverb* const, float freq);
-    void    tDattorroReverb_setSize           (tDattorroReverb* const, float size);
-    void    tDattorroReverb_setInputDelay     (tDattorroReverb* const, float preDelay);
-    void    tDattorroReverb_setInputFilter    (tDattorroReverb* const, float freq);
-    void    tDattorroReverb_setFeedbackFilter (tDattorroReverb* const, float freq);
-    void    tDattorroReverb_setFeedbackGain   (tDattorroReverb* const, float gain);
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // LEAF_REVERB_H_INCLUDED
-
-//==============================================================================
-
--- a/LEAF/Inc/leaf-sampling.h
+++ /dev/null
@@ -1,176 +1,0 @@
-/*==============================================================================
- 
- leaf-sampling.h
- Created: 23 Jan 2019 11:22:09am
- Author:  Mike Mulshine
- 
- ==============================================================================*/
-
-
-#ifndef LEAF_SAMPLING_H_INCLUDED
-#define LEAF_SAMPLING_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    //==============================================================================
-    
-#include "leaf-global.h"
-#include "leaf-math.h"
-#include "leaf-mempool.h"
-#include "leaf-envelopes.h"
-#include "leaf-mempool.h"
-#include "leaf-analysis.h"
-    
-    //==============================================================================
-    
-    typedef enum RecordMode
-    {
-        RecordOneShot = 0,
-        RecordLoop,
-        RecordModeNil
-    } RecordMode;
-    
-    typedef struct _tBuffer
-    {
-        float* buff;
-        
-        uint32_t idx;
-        uint32_t bufferLength;
-        uint32_t recordedLength;
-        RecordMode mode;
-        
-        int active;
-        
-    } _tBuffer;
-    
-    typedef _tBuffer* tBuffer;
-    
-    void  tBuffer_init                  (tBuffer* const, uint32_t length);
-    void  tBuffer_free                  (tBuffer* const);
-    void  tBuffer_initToPool            (tBuffer* const, uint32_t length, tMempool* const);
-    void  tBuffer_freeFromPool          (tBuffer* const, tMempool* const);
-    
-    void  tBuffer_tick                  (tBuffer* const, float sample);
-    
-    void  tBuffer_read                  (tBuffer* const, float* buff, uint32_t len);
-    
-    float tBuffer_get                   (tBuffer* const, int idx);
-    
-    void  tBuffer_record                (tBuffer* const);
-    void  tBuffer_stop                  (tBuffer* const);
-    int   tBuffer_getRecordPosition     (tBuffer* const);
-    
-    void  tBuffer_setRecordMode         (tBuffer* const, RecordMode mode);
-    
-    void  tBuffer_clear                 (tBuffer* const);
-    
-    uint32_t tBuffer_getBufferLength    (tBuffer* const);
-    uint32_t tBuffer_getRecordedLength  (tBuffer* const sb);
-    
-    //==============================================================================
-    
-    typedef enum PlayMode
-    {
-        PlayNormal,
-        PlayLoop,
-        PlayBackAndForth,
-        PlayModeNil
-    } PlayMode;
-    
-    typedef struct _tSampler
-    {
-        tBuffer samp;
-        
-        tRamp gain;
-        
-        float idx;
-        float inc;
-        float last;
-        float iinc;
-        int8_t dir;
-        int8_t flip;
-        int8_t bnf;
-        
-        int32_t start, targetstart;
-        int32_t end, targetend;
-
-        uint32_t len;
-        uint32_t cfxlen;
-        float numticks;
-        PlayMode mode;
-        int retrigger;
-        
-        int active;
-        
-    } _tSampler;
-    
-    typedef _tSampler* tSampler;
-    
-    void    tSampler_init               (tSampler* const, tBuffer* const);
-    void    tSampler_free               (tSampler* const);
-    void    tSampler_initToPool         (tSampler* const, tBuffer* const, tMempool* const);
-    void    tSampler_freeFromPool       (tSampler* const, tMempool* const);
-    
-    float   tSampler_tick               (tSampler* const);
-    
-    void    tSampler_setSample          (tSampler* const, tBuffer* const);
-    
-    void    tSampler_setMode            (tSampler* const, PlayMode mode);
-    
-    void    tSampler_play               (tSampler* const);
-    void    tSampler_stop               (tSampler* const);
-    
-    void    tSampler_setStart           (tSampler* const, int32_t start);
-    void    tSampler_setEnd             (tSampler* const, int32_t end);
-
-    static void handleStartEndChange    (tSampler* const sp);
-
-    void 	tSampler_setCrossfadeLength (tSampler* const sp, uint32_t length);
-    
-    void    tSampler_setRate            (tSampler* const, float rate);
-    
-    //==============================================================================
-    
-    typedef struct _tAutoSampler
-    {
-        tSampler sampler;
-        tEnvelopeFollower ef;
-        uint32_t windowSize;
-        float threshold;
-        float previousPower;
-        uint32_t sampleCounter;
-        uint32_t powerCounter;
-        uint8_t sampleTriggered;
-    } _tAutoSampler;
-    
-    typedef _tAutoSampler* tAutoSampler;
-    
-    void    tAutoSampler_init               (tAutoSampler* const, tBuffer* const);
-    void    tAutoSampler_free               (tAutoSampler* const);
-    void    tAutoSampler_initToPool         (tAutoSampler* const, tBuffer* const, tMempool* const);
-    void    tAutoSampler_freeFromPool       (tAutoSampler* const, tMempool* const);
-    
-    float   tAutoSampler_tick               (tAutoSampler* const, float input);
-    
-    void    tAutoSampler_setBuffer          (tAutoSampler* const, tBuffer* const);
-    
-    void    tAutoSampler_setMode            (tAutoSampler* const, PlayMode mode);
-    
-    void    tAutoSampler_play               (tAutoSampler* const);
-    void    tAutoSampler_stop               (tAutoSampler* const);
-    
-    void    tAutoSampler_setThreshold       (tAutoSampler* const, float thresh);
-    void    tAutoSampler_setWindowSize      (tAutoSampler* const, uint32_t size);
-    void    tAutoSampler_setCrossfadeLength (tAutoSampler* const, uint32_t length);
-    
-    void    tAutoSampler_setRate            (tAutoSampler* const, float rate);
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif // LEAF_SAMPLING_H_INCLUDED
-
-//==============================================================================
--- a/LEAF/Inc/leaf-tables.h
+++ /dev/null
@@ -1,100 +1,0 @@
-/*==============================================================================
-
-    leaf-tables.h
-    Created: 4 Dec 2016 9:42:41pm
-    Author:  Michael R Mulshine
-
-==============================================================================*/
-
-#ifndef LEAF_TABLES_H_INCLUDED
-#define LEAF_TABLES_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-//==============================================================================
-
-#include "leaf-math.h"
-
-//==============================================================================
-
-
-#define SINE_TABLE_SIZE 2048
-#define SAW_TABLE_SIZE 2048
-#define SQR_TABLE_SIZE 2048
-#define TRI_TABLE_SIZE 2048
-#define EXP_DECAY_TABLE_SIZE 65536
-#define ATTACK_DECAY_INC_TABLE_SIZE 65536
-#define TANH1_TABLE_SIZE 65536
-#define DECAY_COEFF_TABLE_SIZE 4096
-#define MTOF1_TABLE_SIZE 4096
-#define FILTERTAN_TABLE_SIZE 4096
-    
-#define SHAPER1_TABLE_SIZE 65536
-extern const float shaper1[SHAPER1_TABLE_SIZE];
-    
-#define COEFFS_SIZE 32
-extern const float* firCoeffs[COEFFS_SIZE];
-extern const float firNumTaps[COEFFS_SIZE];
-extern const float fir2XLow[32];
-extern const float fir4XLow[64];
-extern const float fir8XLow[64];
-extern const float fir16XLow[128];
-extern const float fir32XLow[256];
-extern const float fir64XLow[256];
-extern const float fir2XHigh[128];
-extern const float fir4XHigh[256];
-extern const float fir8XHigh[256];
-extern const float fir16XHigh[512];
-extern const float fir32XHigh[512];
-extern const float fir64XHigh[1024];
-
-typedef enum TableName
-{
-    T20 = 0,
-    T40,
-    T80,
-    T160,
-    T320,
-    T640,
-    T1280,
-    T2560,
-    T5120,
-    T10240,
-    T20480,
-    TableNameNil
-} TableName;
-
-// mtof lookup table based on input range [0.0,1.0) in 4096 increments - midi frequency values scaled between m25 and m134 (from the Snyderphonics DrumBox code)
-
-extern const float exp_decay[EXP_DECAY_TABLE_SIZE];
-extern const float attack_decay_inc[ATTACK_DECAY_INC_TABLE_SIZE];
-
-extern const float filtertan[FILTERTAN_TABLE_SIZE];
-
-extern const float mtof1[MTOF1_TABLE_SIZE];
-extern const float decayCoeffTable[DECAY_COEFF_TABLE_SIZE];
-
-extern const float tanh1[TANH1_TABLE_SIZE];
-
-//==============================================================================
-
-/* Sine wave table ripped from http://aquaticus.info/pwm-sine-wave. */
-extern const float sinewave[SINE_TABLE_SIZE];
-
-extern const float sawtooth[11][SAW_TABLE_SIZE];
-
-extern const float triangle[11][TRI_TABLE_SIZE];
-
-extern const float squarewave[11][SQR_TABLE_SIZE];
-
-//==============================================================================
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // LEAF_TABLES_H_INCLUDED
-
-//==============================================================================
--- /dev/null
+++ b/LEAF/Inc/main.h
@@ -1,0 +1,81 @@
+/* USER CODE BEGIN Header */
+/**
+  ******************************************************************************
+  * @file           : main.h
+  * @brief          : Header for main.c file.
+  *                   This file contains the common defines of the application.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __MAIN_H
+#define __MAIN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32h7xx_hal.h"
+#include "stm32h7xx_hal.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+#define __ATTR_RAM_D1	__attribute__ ((section(".RAM_D1"))) __attribute__ ((aligned (32)))
+#define __ATTR_RAM_D2	__attribute__ ((section(".RAM_D2"))) __attribute__ ((aligned (32)))
+#define __ATTR_RAM_D3	__attribute__ ((section(".RAM_D3"))) __attribute__ ((aligned (32)))
+#define __ATTR_SDRAM	__attribute__ ((section(".SDRAM"))) __attribute__ ((aligned (32)))
+
+#define STM32 // define this so that LEAF knows you are building for STM32
+/* USER CODE END EM */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void Error_Handler(void);
+
+/* USER CODE BEGIN EFP */
+float randomNumber(void);
+static void HardFault_Handler(void) __attribute__ ((naked));
+void prvGetRegistersFromStack( uint32_t *pulFaultStackAddress );
+void writeIntToFlash(uint32_t data, uint32_t location);
+uint32_t readIntFromFlash (uint32_t location);
+/* USER CODE END EFP */
+
+/* Private defines -----------------------------------------------------------*/
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MAIN_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/oled.h
@@ -1,0 +1,90 @@
+/*
+ * oled.h
+ *
+ *  Created on: Feb 05, 2020
+ *      Author: Matthew Wang
+ */
+
+#ifndef OLED_H_
+#define OLED_H_
+
+extern char oled_buffer[32];
+
+typedef enum _OLEDLine
+{
+	FirstLine = 0,
+	SecondLine,
+	BothLines,
+	NilLine
+} OLEDLine;
+
+void OLED_init(I2C_HandleTypeDef* hi2c);
+
+void initUIFunctionPointers(void);
+
+void setLED_Edit(uint8_t onOff);
+
+void setLED_USB(uint8_t onOff);
+
+void setLED_1(uint8_t onOff);
+
+void setLED_2(uint8_t onOff);
+
+void setLED_A(uint8_t onOff);
+
+void setLED_B(uint8_t onOff);
+
+void setLED_C(uint8_t onOff);
+
+void setLED_leftout_clip(uint8_t onOff);
+
+void setLED_rightout_clip(uint8_t onOff);
+
+void setLED_leftin_clip(uint8_t onOff);
+
+void setLED_rightin_clip(uint8_t onOff);
+
+int getCursorX(void);
+
+void OLED_process(void);
+
+void OLED_writePreset(void);
+
+void OLED_writeEditScreen(void);
+
+void OLED_writeKnobParameter(uint8_t whichParam);
+
+void OLED_writeButtonAction(uint8_t whichButton, uint8_t whichAction);
+
+void OLED_writeTuning(void);
+
+void OLED_draw(void);
+
+void OLEDclear(void);
+
+void OLEDclearLine(OLEDLine line);
+
+void OLEDwriteString(char* myCharArray, uint8_t arrayLength, uint8_t startCursor, OLEDLine line);
+
+void OLEDwriteLine(char* myCharArray, uint8_t arrayLength, OLEDLine line);
+
+void OLEDwriteInt(uint32_t myNumber, uint8_t numDigits, uint8_t startCursor, OLEDLine line);
+
+void OLEDwriteIntLine(uint32_t myNumber, uint8_t numDigits, OLEDLine line);
+
+void OLEDwritePitch(float midi, uint8_t startCursor, OLEDLine line);
+
+void OLEDwritePitchClass(float midi, uint8_t startCursor, OLEDLine line);
+
+void OLEDwritePitchLine(float midi, OLEDLine line);
+
+void OLEDwriteFixedFloat(float input, uint8_t numDigits, uint8_t numDecimal, uint8_t startCursor, OLEDLine line);
+
+void OLEDwriteFixedFloatLine(float input, uint8_t numDigits, uint8_t numDecimal, OLEDLine line);
+
+void OLEDwriteFloat(float input, uint8_t startCursor, OLEDLine line);
+
+void OLEDdrawFloatArray(float* input, float min, float max, uint8_t size, uint8_t offset, uint8_t startCursor, OLEDLine line);
+
+#endif /* OLED_H_ */
+
--- /dev/null
+++ b/LEAF/Inc/rng.h
@@ -1,0 +1,58 @@
+/**
+  ******************************************************************************
+  * File Name          : RNG.h
+  * Description        : This file provides code for the configuration
+  *                      of the RNG instances.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __rng_H
+#define __rng_H
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+extern RNG_HandleTypeDef hrng;
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_RNG_Init(void);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__ rng_H */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/sai.h
@@ -1,0 +1,59 @@
+/**
+  ******************************************************************************
+  * File Name          : SAI.h
+  * Description        : This file provides code for the configuration
+  *                      of the SAI instances.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __sai_H
+#define __sai_H
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+extern SAI_HandleTypeDef hsai_BlockA1;
+extern SAI_HandleTypeDef hsai_BlockB1;
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_SAI1_Init(void);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__ sai_H */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/sd_diskio.h
@@ -1,0 +1,45 @@
+/* USER CODE BEGIN Header */
+/**
+  ******************************************************************************
+  * @file    sd_diskio.h
+  * @brief   Header for sd_diskio.c module
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* USER CODE END Header */
+
+/* Note: code generation based on sd_diskio_template.h */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __SD_DISKIO_H
+#define __SD_DISKIO_H
+
+/* USER CODE BEGIN firstSection */ 
+/* can be used to modify / undefine following code or add new definitions */
+/* USER CODE END firstSection */
+
+/* Includes ------------------------------------------------------------------*/
+#include "bsp_driver_sd.h"
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */
+extern const Diskio_drvTypeDef  SD_Driver;
+
+/* USER CODE BEGIN lastSection */ 
+/* can be used to modify / undefine previous code or add new definitions */
+/* USER CODE END lastSection */
+
+#endif /* __SD_DISKIO_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
--- /dev/null
+++ b/LEAF/Inc/sdmmc.h
@@ -1,0 +1,58 @@
+/**
+  ******************************************************************************
+  * File Name          : SDMMC.h
+  * Description        : This file provides code for the configuration
+  *                      of the SDMMC instances.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __sdmmc_H
+#define __sdmmc_H
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+extern SD_HandleTypeDef hsd1;
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_SDMMC1_SD_Init(void);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__ sdmmc_H */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/sfx.h
@@ -1,0 +1,177 @@
+/*
+ * sfx.h
+ *
+ *  Created on: Dec 23, 2019
+ *      Author: josnyder
+ */
+#ifndef SFX_H_
+#define SFX_H_
+
+#include "audiostream.h"
+#include "ui.h"
+
+#define NUM_VOC_VOICES 8
+#define NUM_OSC_PER_VOICE 3
+#define NUM_VOC_OSC 1
+#define INV_NUM_VOC_VOICES 0.125
+#define INV_NUM_VOC_OSC 1
+#define NUM_AUTOTUNE 2
+#define NUM_RETUNE 1
+#define OVERSAMPLER_RATIO 8
+#define OVERSAMPLER_HQ FALSE
+
+extern float presetKnobValues[PresetNil][NUM_ADC_CHANNELS];
+extern uint8_t knobActive[NUM_ADC_CHANNELS];
+
+extern tPoly poly;
+extern tRamp polyRamp[NUM_VOC_VOICES];
+extern tSawtooth osc[NUM_VOC_VOICES * NUM_OSC_PER_VOICE];
+
+extern PlayMode samplerMode;
+extern float sampleLength;
+
+extern uint32_t freeze;
+
+void initGlobalSFXObjects();
+
+//1 vocoder internal poly
+extern uint8_t numVoices;
+extern uint8_t internalExternal;
+
+void SFXVocoderAlloc();
+void SFXVocoderFrame();
+void SFXVocoderTick(float audioIn);
+void SFXVocoderFree(void);
+
+//4 pitch shift
+void SFXPitchShiftAlloc();
+void SFXPitchShiftFrame();
+void SFXPitchShiftTick(float audioIn);
+void SFXPitchShiftFree(void);
+
+//5 neartune
+extern uint8_t autotuneChromatic;
+
+void SFXNeartuneAlloc();
+void SFXNeartuneFrame();
+void SFXNeartuneTick(float audioIn);
+void SFXNeartuneFree(void);
+
+//6 autotune
+void SFXAutotuneAlloc();
+void SFXAutotuneFrame();
+void SFXAutotuneTick(float audioIn);
+void SFXAutotuneFree(void);
+
+//7 sampler - button press
+extern uint8_t samplePlaying;
+
+void SFXSamplerBPAlloc();
+void SFXSamplerBPFrame();
+void SFXSamplerBPTick(float audioIn);
+void SFXSamplerBPFree(void);
+
+
+//8 sampler - auto ch1
+extern uint8_t triggerChannel;
+
+void SFXSamplerAutoAlloc();
+void SFXSamplerAutoFrame();
+void SFXSamplerAutoTick(float audioIn);
+void SFXSamplerAutoFree(void);
+
+//10 distortion tanh
+extern uint8_t distortionMode;
+
+void SFXDistortionAlloc();
+void SFXDistortionFrame();
+void SFXDistortionTick(float audioIn);
+void SFXDistortionFree(void);
+
+//12 distortion wave folder
+void SFXWaveFolderAlloc();
+void SFXWaveFolderFrame();
+void SFXWaveFolderTick(float audioIn);
+void SFXWaveFolderFree(void);
+
+
+//13 bitcrusher
+void SFXBitcrusherAlloc();
+void SFXBitcrusherFrame();
+void SFXBitcrusherTick(float audioIn);
+void SFXBitcrusherFree(void);
+
+
+//14 delay
+extern int delayShaper;
+
+void SFXDelayAlloc();
+void SFXDelayFrame();
+void SFXDelayTick(float audioIn);
+void SFXDelayFree(void);
+
+
+//15 reverb
+void SFXReverbAlloc();
+void SFXReverbFrame();
+void SFXReverbTick(float audioIn);
+void SFXReverbFree(void);
+
+//16 reverb2
+void SFXReverb2Alloc();
+void SFXReverb2Frame();
+void SFXReverb2Tick(float audioIn);
+void SFXReverb2Free(void);
+
+//17 living string
+void SFXLivingStringAlloc();
+void SFXLivingStringFrame();
+void SFXLivingStringTick(float audioIn);
+void SFXLivingStringFree(void);
+
+//17 living string
+void SFXLivingStringSynthAlloc();
+void SFXLivingStringSynthFrame();
+void SFXLivingStringSynthTick(float audioIn);
+void SFXLivingStringSynthFree(void);
+
+
+//17 living string
+void SFXClassicSynthAlloc();
+void SFXClassicSynthFrame();
+void SFXClassicSynthTick(float audioIn);
+void SFXClassicSynthFree(void);
+
+
+//17 living string
+void SFXRhodesAlloc();
+void SFXRhodesFrame();
+void SFXRhodesTick(float audioIn);
+void SFXRhodesFree(void);
+
+
+// MIDI FUNCTIONS
+void noteOn(int key, int velocity);
+void noteOff(int key, int velocity);
+void pitchBend(int data);
+void sustainOn(void);
+void sustainOff(void);
+void toggleBypass(void);
+void toggleSustain(void);
+
+void calculateFreq(int voice);
+
+float calculateTunedMidiNote(float tempNote);
+
+
+void calculateNoteArray(void);
+//void calculatePeriodArray(void);
+float nearestNote(float period);
+//float nearestPeriod(float period);
+
+void clearNotes(void);
+
+void ctrlInput(int ctrl, int value);
+
+
+#endif /* SFX_H_ */
--- /dev/null
+++ b/LEAF/Inc/ssd1306.h
@@ -1,0 +1,127 @@
+
+/*
+ * ssd1306.h
+ *
+ *  Created on: Jul 6, 2018
+ *      Author: jeffsnyder
+ */
+#include "stm32h7xx_hal.h"
+#include "main.h"
+
+#ifndef SSD1306_H_
+#define SSD1306_H_
+
+#define pgm_read_byte(addr) (*(const unsigned char *)(addr))
+
+#define BLACK 0
+#define WHITE 1
+#define INVERSE 2
+
+#define SSD1306_I2C_ADDRESS   (0x3C<<1)  // 011110+SA0+RW - 0x3C or 0x3D
+// Address for 128x32 is 0x3C
+// Address for 128x64 is 0x3D (default) or 0x3C (if SA0 is grounded)
+
+/*=========================================================================
+    SSD1306 Displays
+    -----------------------------------------------------------------------
+    The driver is used in multiple displays (128x64, 128x32, etc.).
+    Select the appropriate display below to create an appropriately
+    sized framebuffer, etc.
+
+    SSD1306_128_64  128x64 pixel display
+
+    SSD1306_128_32  128x32 pixel display
+
+    SSD1306_96_16
+
+    -----------------------------------------------------------------------*/
+//   #define SSD1306_128_64
+   #define SSD1306_128_32
+//   #define SSD1306_96_16
+/*=========================================================================*/
+
+#if defined SSD1306_128_64 && defined SSD1306_128_32
+  #error "Only one SSD1306 display can be specified at once in SSD1306.h"
+#endif
+#if !defined SSD1306_128_64 && !defined SSD1306_128_32 && !defined SSD1306_96_16
+  #error "At least one SSD1306 display must be specified in SSD1306.h"
+#endif
+
+#if defined SSD1306_128_64
+  #define SSD1306_LCDWIDTH                  128
+  #define SSD1306_LCDHEIGHT                 64
+#endif
+#if defined SSD1306_128_32
+  #define SSD1306_LCDWIDTH                  128
+  #define SSD1306_LCDHEIGHT                 32
+#endif
+#if defined SSD1306_96_16
+  #define SSD1306_LCDWIDTH                  96
+  #define SSD1306_LCDHEIGHT                 16
+#endif
+
+#define SSD1306_SETCONTRAST 0x81
+#define SSD1306_DISPLAYALLON_RESUME 0xA4
+#define SSD1306_DISPLAYALLON 0xA5
+#define SSD1306_NORMALDISPLAY 0xA6
+#define SSD1306_INVERTDISPLAY 0xA7
+#define SSD1306_DISPLAYOFF 0xAE
+#define SSD1306_DISPLAYON 0xAF
+
+#define SSD1306_SETDISPLAYOFFSET 0xD3
+#define SSD1306_SETCOMPINS 0xDA
+
+#define SSD1306_SETVCOMDETECT 0xDB
+
+#define SSD1306_SETDISPLAYCLOCKDIV 0xD5
+#define SSD1306_SETPRECHARGE 0xD9
+
+#define SSD1306_SETMULTIPLEX 0xA8
+
+#define SSD1306_SETLOWCOLUMN 0x00
+#define SSD1306_SETHIGHCOLUMN 0x10
+
+#define SSD1306_SETSTARTLINE 0x40
+
+#define SSD1306_MEMORYMODE 0x20
+#define SSD1306_COLUMNADDR 0x21
+#define SSD1306_PAGEADDR   0x22
+
+#define SSD1306_COMSCANINC 0xC0
+#define SSD1306_COMSCANDEC 0xC8
+
+#define SSD1306_SEGREMAP 0xA0
+
+#define SSD1306_CHARGEPUMP 0x8D
+
+#define SSD1306_EXTERNALVCC 0x1
+#define SSD1306_SWITCHCAPVCC 0x2
+
+// Scrolling #defines
+#define SSD1306_ACTIVATE_SCROLL 0x2F
+#define SSD1306_DEACTIVATE_SCROLL 0x2E
+#define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3
+#define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26
+#define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27
+#define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29
+#define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A
+
+extern unsigned char buffer [];
+
+void ssd1306_begin(I2C_HandleTypeDef* hi2c, uint8_t vccstate, uint8_t i2caddr);
+void ssd1306_drawPixel(int16_t x, int16_t y, uint16_t color);
+void sdd1306_invertDisplay(uint8_t i);
+void ssd1306_command(uint8_t c);
+void ssd1306_dim(uint8_t dim);
+void ssd1306_display_full_buffer(void);
+void ssd1306_display(void);
+void ssd1306_write(uint8_t* data, uint16_t numBytes);
+void ssd1306_move(uint8_t row, uint8_t column);
+void ssd1306_move_raw(uint8_t row, uint8_t column);
+void ssd1306_home(void);
+
+
+
+
+
+#endif /* SSD1306_H_ */
--- /dev/null
+++ b/LEAF/Inc/stm32h7xx_hal_conf.h
@@ -1,0 +1,493 @@
+/**
+  ******************************************************************************
+  * @file    stm32h7xx_hal_conf.h
+  * @author  MCD Application Team
+  * @brief   HAL configuration file.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under BSD 3-Clause license,
+  * the "License"; You may not use this file except in compliance with the
+  * License. You may obtain a copy of the License at:
+  *                        opensource.org/licenses/BSD-3-Clause
+  *
+  ******************************************************************************
+  */ 
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32H7xx_HAL_CONF_H
+#define __STM32H7xx_HAL_CONF_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+
+/* ########################## Module Selection ############################## */
+/**
+  * @brief This is the list of modules to be used in the HAL driver 
+  */
+#define HAL_MODULE_ENABLED  
+
+  #define HAL_ADC_MODULE_ENABLED
+/* #define HAL_FDCAN_MODULE_ENABLED   */
+/* #define HAL_CEC_MODULE_ENABLED   */
+/* #define HAL_COMP_MODULE_ENABLED   */
+/* #define HAL_CRC_MODULE_ENABLED   */
+/* #define HAL_CRYP_MODULE_ENABLED   */
+/* #define HAL_DAC_MODULE_ENABLED   */
+/* #define HAL_DCMI_MODULE_ENABLED   */
+/* #define HAL_DMA2D_MODULE_ENABLED   */
+/* #define HAL_ETH_MODULE_ENABLED   */
+/* #define HAL_NAND_MODULE_ENABLED   */
+/* #define HAL_NOR_MODULE_ENABLED   */
+/* #define HAL_OTFDEC_MODULE_ENABLED   */
+/* #define HAL_SRAM_MODULE_ENABLED   */
+#define HAL_SDRAM_MODULE_ENABLED
+/* #define HAL_HASH_MODULE_ENABLED   */
+/* #define HAL_HRTIM_MODULE_ENABLED   */
+/* #define HAL_HSEM_MODULE_ENABLED   */
+/* #define HAL_GFXMMU_MODULE_ENABLED   */
+/* #define HAL_JPEG_MODULE_ENABLED   */
+/* #define HAL_OPAMP_MODULE_ENABLED   */
+/* #define HAL_OSPI_MODULE_ENABLED   */
+/* #define HAL_OSPI_MODULE_ENABLED   */
+/* #define HAL_I2S_MODULE_ENABLED   */
+/* #define HAL_SMBUS_MODULE_ENABLED   */
+/* #define HAL_IWDG_MODULE_ENABLED   */
+/* #define HAL_LPTIM_MODULE_ENABLED   */
+/* #define HAL_LTDC_MODULE_ENABLED   */
+/* #define HAL_QSPI_MODULE_ENABLED   */
+#define HAL_RNG_MODULE_ENABLED
+/* #define HAL_RTC_MODULE_ENABLED   */
+#define HAL_SAI_MODULE_ENABLED
+#define HAL_SD_MODULE_ENABLED
+/* #define HAL_MMC_MODULE_ENABLED   */
+/* #define HAL_SPDIFRX_MODULE_ENABLED   */
+/* #define HAL_SPI_MODULE_ENABLED   */
+/* #define HAL_SWPMI_MODULE_ENABLED   */
+#define HAL_TIM_MODULE_ENABLED
+/* #define HAL_UART_MODULE_ENABLED   */
+/* #define HAL_USART_MODULE_ENABLED   */
+/* #define HAL_IRDA_MODULE_ENABLED   */
+/* #define HAL_SMARTCARD_MODULE_ENABLED   */
+/* #define HAL_WWDG_MODULE_ENABLED   */
+/* #define HAL_PCD_MODULE_ENABLED   */
+#define HAL_HCD_MODULE_ENABLED
+/* #define HAL_DFSDM_MODULE_ENABLED   */
+/* #define HAL_DSI_MODULE_ENABLED   */
+/* #define HAL_JPEG_MODULE_ENABLED   */
+/* #define HAL_MDIOS_MODULE_ENABLED   */
+/* #define HAL_PSSI_MODULE_ENABLED   */
+/* #define HAL_DTS_MODULE_ENABLED   */
+#define HAL_GPIO_MODULE_ENABLED
+#define HAL_DMA_MODULE_ENABLED
+#define HAL_MDMA_MODULE_ENABLED
+#define HAL_RCC_MODULE_ENABLED
+#define HAL_FLASH_MODULE_ENABLED
+#define HAL_EXTI_MODULE_ENABLED
+#define HAL_PWR_MODULE_ENABLED
+#define HAL_I2C_MODULE_ENABLED
+#define HAL_CORTEX_MODULE_ENABLED
+#define HAL_HSEM_MODULE_ENABLED
+
+/* ########################## Oscillator Values adaptation ####################*/
+/**
+  * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
+  *        This value is used by the RCC HAL module to compute the system frequency
+  *        (when HSE is used as system clock source, directly or through the PLL).  
+  */
+#if !defined  (HSE_VALUE) 
+#define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz : FPGA case fixed to 60MHZ */
+#endif /* HSE_VALUE */
+
+#if !defined  (HSE_STARTUP_TIMEOUT)
+  #define HSE_STARTUP_TIMEOUT    ((uint32_t)100U)   /*!< Time out for HSE start up, in ms */
+#endif /* HSE_STARTUP_TIMEOUT */
+
+/**
+  * @brief Internal  oscillator (CSI) default value.
+  *        This value is the default CSI value after Reset.
+  */
+#if !defined  (CSI_VALUE)
+  #define CSI_VALUE    ((uint32_t)4000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* CSI_VALUE */
+   
+/**
+  * @brief Internal High Speed oscillator (HSI) value.
+  *        This value is used by the RCC HAL module to compute the system frequency
+  *        (when HSI is used as system clock source, directly or through the PLL). 
+  */
+#if !defined  (HSI_VALUE)
+  #define HSI_VALUE    ((uint32_t)64000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+/**
+  * @brief External Low Speed oscillator (LSE) value.
+  *        This value is used by the UART, RTC HAL module to compute the system frequency
+  */
+#if !defined  (LSE_VALUE)
+  #define LSE_VALUE    ((uint32_t)32768U) /*!< Value of the External oscillator in Hz*/
+#endif /* LSE_VALUE */
+
+#if !defined  (LSE_STARTUP_TIMEOUT)
+  #define LSE_STARTUP_TIMEOUT    ((uint32_t)5000U)   /*!< Time out for LSE start up, in ms */
+#endif /* LSE_STARTUP_TIMEOUT */
+
+/**
+  * @brief External clock source for I2S peripheral
+  *        This value is used by the I2S HAL module to compute the I2S clock source 
+  *        frequency, this source is inserted directly through I2S_CKIN pad. 
+  */
+#if !defined  (EXTERNAL_CLOCK_VALUE)
+  #define EXTERNAL_CLOCK_VALUE    12288000U /*!< Value of the External clock in Hz*/
+#endif /* EXTERNAL_CLOCK_VALUE */
+
+/* Tip: To avoid modifying this file each time you need to use different HSE,
+   ===  you can define the HSE value in your toolchain compiler preprocessor. */
+
+/* ########################### System Configuration ######################### */
+/**
+  * @brief This is the HAL system configuration section
+  */     
+#define  VDD_VALUE                    ((uint32_t)3300U) /*!< Value of VDD in mv */
+#define  TICK_INT_PRIORITY            ((uint32_t)0U) /*!< tick interrupt priority */
+#define  USE_RTOS                     0U
+#define  USE_SD_TRANSCEIVER           1U               /*!< use uSD Transceiver */
+
+#define  USE_HAL_ADC_REGISTER_CALLBACKS     0U /* ADC register callback disabled     */
+#define  USE_HAL_CEC_REGISTER_CALLBACKS     0U /* CEC register callback disabled     */
+#define  USE_HAL_COMP_REGISTER_CALLBACKS    0U /* COMP register callback disabled    */
+#define  USE_HAL_CRYP_REGISTER_CALLBACKS    0U /* CRYP register callback disabled    */
+#define  USE_HAL_DAC_REGISTER_CALLBACKS     0U /* DAC register callback disabled     */
+#define  USE_HAL_DCMI_REGISTER_CALLBACKS    0U /* DCMI register callback disabled    */
+#define  USE_HAL_DFSDM_REGISTER_CALLBACKS   0U /* DFSDM register callback disabled   */
+#define  USE_HAL_DMA2D_REGISTER_CALLBACKS   0U /* DMA2D register callback disabled   */
+#define  USE_HAL_DSI_REGISTER_CALLBACKS     0U /* DSI register callback disabled     */
+#define  USE_HAL_DTS_REGISTER_CALLBACKS     0U /* DTS register callback disabled     */
+#define  USE_HAL_ETH_REGISTER_CALLBACKS     0U /* ETH register callback disabled     */
+#define  USE_HAL_FDCAN_REGISTER_CALLBACKS   0U /* FDCAN register callback disabled   */
+#define  USE_HAL_NAND_REGISTER_CALLBACKS    0U /* NAND register callback disabled    */
+#define  USE_HAL_NOR_REGISTER_CALLBACKS     0U /* NOR register callback disabled     */
+#define  USE_HAL_SDRAM_REGISTER_CALLBACKS   0U /* SDRAM register callback disabled   */
+#define  USE_HAL_SRAM_REGISTER_CALLBACKS    0U /* SRAM register callback disabled    */
+#define  USE_HAL_HASH_REGISTER_CALLBACKS    0U /* HASH register callback disabled    */
+#define  USE_HAL_HCD_REGISTER_CALLBACKS     0U /* HCD register callback disabled     */
+#define  USE_HAL_GFXMMU_REGISTER_CALLBACKS  0U /* GFXMMU register callback disabled  */
+#define  USE_HAL_HRTIM_REGISTER_CALLBACKS   0U /* HRTIM register callback disabled   */
+#define  USE_HAL_I2C_REGISTER_CALLBACKS     0U /* I2C register callback disabled     */
+#define  USE_HAL_I2S_REGISTER_CALLBACKS     0U /* I2S register callback disabled     */
+#define  USE_HAL_IRDA_REGISTER_CALLBACKS    0U /* IRDA register callback disabled    */
+#define  USE_HAL_JPEG_REGISTER_CALLBACKS    0U /* JPEG register callback disabled    */
+#define  USE_HAL_LPTIM_REGISTER_CALLBACKS   0U /* LPTIM register callback disabled   */
+#define  USE_HAL_LTDC_REGISTER_CALLBACKS    0U /* LTDC register callback disabled    */
+#define  USE_HAL_MDIOS_REGISTER_CALLBACKS   0U /* MDIO register callback disabled    */
+#define  USE_HAL_MMC_REGISTER_CALLBACKS     0U /* MMC register callback disabled     */
+#define  USE_HAL_OPAMP_REGISTER_CALLBACKS   0U /* MDIO register callback disabled    */
+#define  USE_HAL_OSPI_REGISTER_CALLBACKS    0U /* OSPI register callback disabled    */
+#define  USE_HAL_OTFDEC_REGISTER_CALLBACKS  0U /* OTFDEC register callback disabled  */
+#define  USE_HAL_PCD_REGISTER_CALLBACKS     0U /* PCD register callback disabled     */
+#define  USE_HAL_QSPI_REGISTER_CALLBACKS    0U /* QSPI register callback disabled    */
+#define  USE_HAL_RNG_REGISTER_CALLBACKS     0U /* RNG register callback disabled     */
+#define  USE_HAL_RTC_REGISTER_CALLBACKS     0U /* RTC register callback disabled     */
+#define  USE_HAL_SAI_REGISTER_CALLBACKS     0U /* SAI register callback disabled     */
+#define  USE_HAL_SD_REGISTER_CALLBACKS      0U /* SD register callback disabled      */
+#define  USE_HAL_SMARTCARD_REGISTER_CALLBACKS  0U /* SMARTCARD register callback disabled */
+#define  USE_HAL_SPDIFRX_REGISTER_CALLBACKS 0U /* SPDIFRX register callback disabled */
+#define  USE_HAL_SMBUS_REGISTER_CALLBACKS   0U /* SMBUS register callback disabled   */
+#define  USE_HAL_SPI_REGISTER_CALLBACKS     0U /* SPI register callback disabled     */
+#define  USE_HAL_SWPMI_REGISTER_CALLBACKS   0U /* SWPMI register callback disabled   */
+#define  USE_HAL_TIM_REGISTER_CALLBACKS     0U /* TIM register callback disabled     */
+#define  USE_HAL_UART_REGISTER_CALLBACKS    0U /* UART register callback disabled    */
+#define  USE_HAL_USART_REGISTER_CALLBACKS   0U /* USART register callback disabled   */
+#define  USE_HAL_WWDG_REGISTER_CALLBACKS    0U /* WWDG register callback disabled    */
+
+/* ########################### Ethernet Configuration ######################### */
+#define ETH_TX_DESC_CNT         4  /* number of Ethernet Tx DMA descriptors */
+#define ETH_RX_DESC_CNT         4  /* number of Ethernet Rx DMA descriptors */
+
+#define ETH_MAC_ADDR0    ((uint8_t)0x02)
+#define ETH_MAC_ADDR1    ((uint8_t)0x00)
+#define ETH_MAC_ADDR2    ((uint8_t)0x00)
+#define ETH_MAC_ADDR3    ((uint8_t)0x00)
+#define ETH_MAC_ADDR4    ((uint8_t)0x00)
+#define ETH_MAC_ADDR5    ((uint8_t)0x00)
+
+/* ########################## Assert Selection ############################## */
+/**
+  * @brief Uncomment the line below to expanse the "assert_param" macro in the 
+  *        HAL drivers code
+  */
+/* #define USE_FULL_ASSERT    1U */ 
+
+/* Includes ------------------------------------------------------------------*/
+/**
+  * @brief Include module's header file 
+  */
+
+#ifdef HAL_RCC_MODULE_ENABLED
+  #include "stm32h7xx_hal_rcc.h"
+#endif /* HAL_RCC_MODULE_ENABLED */
+
+#ifdef HAL_GPIO_MODULE_ENABLED
+  #include "stm32h7xx_hal_gpio.h"
+#endif /* HAL_GPIO_MODULE_ENABLED */
+
+#ifdef HAL_DMA_MODULE_ENABLED
+  #include "stm32h7xx_hal_dma.h"
+#endif /* HAL_DMA_MODULE_ENABLED */
+
+#ifdef HAL_MDMA_MODULE_ENABLED
+ #include "stm32h7xx_hal_mdma.h"
+#endif /* HAL_MDMA_MODULE_ENABLED */
+
+#ifdef HAL_HASH_MODULE_ENABLED
+  #include "stm32h7xx_hal_hash.h"
+#endif /* HAL_HASH_MODULE_ENABLED */
+
+#ifdef HAL_DCMI_MODULE_ENABLED
+  #include "stm32h7xx_hal_dcmi.h"
+#endif /* HAL_DCMI_MODULE_ENABLED */
+
+#ifdef HAL_DMA2D_MODULE_ENABLED
+  #include "stm32h7xx_hal_dma2d.h"
+#endif /* HAL_DMA2D_MODULE_ENABLED */
+
+#ifdef HAL_DSI_MODULE_ENABLED
+  #include "stm32h7xx_hal_dsi.h"
+#endif /* HAL_DSI_MODULE_ENABLED */
+
+#ifdef HAL_DFSDM_MODULE_ENABLED
+  #include "stm32h7xx_hal_dfsdm.h"
+#endif /* HAL_DFSDM_MODULE_ENABLED */
+
+#ifdef HAL_ETH_MODULE_ENABLED
+  #include "stm32h7xx_hal_eth.h"
+#endif /* HAL_ETH_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+  #include "stm32h7xx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
+
+#ifdef HAL_CORTEX_MODULE_ENABLED
+  #include "stm32h7xx_hal_cortex.h"
+#endif /* HAL_CORTEX_MODULE_ENABLED */
+
+#ifdef HAL_ADC_MODULE_ENABLED
+  #include "stm32h7xx_hal_adc.h"
+#endif /* HAL_ADC_MODULE_ENABLED */
+
+#ifdef HAL_FDCAN_MODULE_ENABLED
+  #include "stm32h7xx_hal_fdcan.h"
+#endif /* HAL_FDCAN_MODULE_ENABLED */
+
+#ifdef HAL_CEC_MODULE_ENABLED
+  #include "stm32h7xx_hal_cec.h"
+#endif /* HAL_CEC_MODULE_ENABLED */
+
+#ifdef HAL_COMP_MODULE_ENABLED
+  #include "stm32h7xx_hal_comp.h"
+#endif /* HAL_COMP_MODULE_ENABLED */
+
+#ifdef HAL_CRC_MODULE_ENABLED
+  #include "stm32h7xx_hal_crc.h"
+#endif /* HAL_CRC_MODULE_ENABLED */
+
+#ifdef HAL_CRYP_MODULE_ENABLED
+  #include "stm32h7xx_hal_cryp.h"
+#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_DAC_MODULE_ENABLED
+  #include "stm32h7xx_hal_dac.h"
+#endif /* HAL_DAC_MODULE_ENABLED */
+
+#ifdef HAL_FLASH_MODULE_ENABLED
+  #include "stm32h7xx_hal_flash.h"
+#endif /* HAL_FLASH_MODULE_ENABLED */
+
+#ifdef HAL_GFXMMU_MODULE_ENABLED
+  #include "stm32h7xx_hal_gfxmmu.h"
+#endif /* HAL_GFXMMU_MODULE_ENABLED */
+
+#ifdef HAL_HRTIM_MODULE_ENABLED
+  #include "stm32h7xx_hal_hrtim.h"
+#endif /* HAL_HRTIM_MODULE_ENABLED */
+
+#ifdef HAL_HSEM_MODULE_ENABLED
+  #include "stm32h7xx_hal_hsem.h"
+#endif /* HAL_HSEM_MODULE_ENABLED */
+
+#ifdef HAL_SRAM_MODULE_ENABLED
+  #include "stm32h7xx_hal_sram.h"
+#endif /* HAL_SRAM_MODULE_ENABLED */
+
+#ifdef HAL_NOR_MODULE_ENABLED
+  #include "stm32h7xx_hal_nor.h"
+#endif /* HAL_NOR_MODULE_ENABLED */
+
+#ifdef HAL_NAND_MODULE_ENABLED
+  #include "stm32h7xx_hal_nand.h"
+#endif /* HAL_NAND_MODULE_ENABLED */
+
+#ifdef HAL_I2C_MODULE_ENABLED
+ #include "stm32h7xx_hal_i2c.h"
+#endif /* HAL_I2C_MODULE_ENABLED */
+
+#ifdef HAL_I2S_MODULE_ENABLED
+ #include "stm32h7xx_hal_i2s.h"
+#endif /* HAL_I2S_MODULE_ENABLED */
+
+#ifdef HAL_IWDG_MODULE_ENABLED
+ #include "stm32h7xx_hal_iwdg.h"
+#endif /* HAL_IWDG_MODULE_ENABLED */
+
+#ifdef HAL_JPEG_MODULE_ENABLED
+ #include "stm32h7xx_hal_jpeg.h"
+#endif /* HAL_JPEG_MODULE_ENABLED */
+
+#ifdef HAL_MDIOS_MODULE_ENABLED
+ #include "stm32h7xx_hal_mdios.h"
+#endif /* HAL_MDIOS_MODULE_ENABLED */
+
+#ifdef HAL_MMC_MODULE_ENABLED
+ #include "stm32h7xx_hal_mmc.h"
+#endif /* HAL_MMC_MODULE_ENABLED */
+
+#ifdef HAL_LPTIM_MODULE_ENABLED
+#include "stm32h7xx_hal_lptim.h"
+#endif /* HAL_LPTIM_MODULE_ENABLED */
+
+#ifdef HAL_LTDC_MODULE_ENABLED
+#include "stm32h7xx_hal_ltdc.h"
+#endif /* HAL_LTDC_MODULE_ENABLED */
+
+#ifdef HAL_OPAMP_MODULE_ENABLED
+#include "stm32h7xx_hal_opamp.h"
+#endif /* HAL_OPAMP_MODULE_ENABLED */
+
+#ifdef HAL_OSPI_MODULE_ENABLED
+  #include "stm32h7xx_hal_ospi.h"
+#endif /* HAL_OSPI_MODULE_ENABLED */
+   
+#ifdef HAL_OTFDEC_MODULE_ENABLED
+#include "stm32h7xx_hal_otfdec.h"
+#endif /* HAL_OTFDEC_MODULE_ENABLED */
+
+#ifdef HAL_PWR_MODULE_ENABLED
+ #include "stm32h7xx_hal_pwr.h"
+#endif /* HAL_PWR_MODULE_ENABLED */
+
+#ifdef HAL_QSPI_MODULE_ENABLED
+ #include "stm32h7xx_hal_qspi.h"
+#endif /* HAL_QSPI_MODULE_ENABLED */
+
+#ifdef HAL_RAMECC_MODULE_ENABLED
+ #include "stm32h7xx_hal_ramecc.h"
+#endif /* HAL_HCD_MODULE_ENABLED */
+
+#ifdef HAL_RNG_MODULE_ENABLED
+ #include "stm32h7xx_hal_rng.h"
+#endif /* HAL_RNG_MODULE_ENABLED */
+
+#ifdef HAL_RTC_MODULE_ENABLED
+ #include "stm32h7xx_hal_rtc.h"
+#endif /* HAL_RTC_MODULE_ENABLED */
+
+#ifdef HAL_SAI_MODULE_ENABLED
+ #include "stm32h7xx_hal_sai.h"
+#endif /* HAL_SAI_MODULE_ENABLED */
+
+#ifdef HAL_SD_MODULE_ENABLED
+ #include "stm32h7xx_hal_sd.h"
+#endif /* HAL_SD_MODULE_ENABLED */
+
+#ifdef HAL_SDRAM_MODULE_ENABLED
+ #include "stm32h7xx_hal_sdram.h"
+#endif /* HAL_SDRAM_MODULE_ENABLED */
+
+#ifdef HAL_SPI_MODULE_ENABLED
+ #include "stm32h7xx_hal_spi.h"
+#endif /* HAL_SPI_MODULE_ENABLED */
+
+#ifdef HAL_SPDIFRX_MODULE_ENABLED
+ #include "stm32h7xx_hal_spdifrx.h"
+#endif /* HAL_SPDIFRX_MODULE_ENABLED */
+
+#ifdef HAL_SWPMI_MODULE_ENABLED
+ #include "stm32h7xx_hal_swpmi.h"
+#endif /* HAL_SWPMI_MODULE_ENABLED */
+
+#ifdef HAL_TIM_MODULE_ENABLED
+ #include "stm32h7xx_hal_tim.h"
+#endif /* HAL_TIM_MODULE_ENABLED */
+
+#ifdef HAL_UART_MODULE_ENABLED
+ #include "stm32h7xx_hal_uart.h"
+#endif /* HAL_UART_MODULE_ENABLED */
+
+#ifdef HAL_USART_MODULE_ENABLED
+ #include "stm32h7xx_hal_usart.h"
+#endif /* HAL_USART_MODULE_ENABLED */
+
+#ifdef HAL_IRDA_MODULE_ENABLED
+ #include "stm32h7xx_hal_irda.h"
+#endif /* HAL_IRDA_MODULE_ENABLED */
+
+#ifdef HAL_SMARTCARD_MODULE_ENABLED
+ #include "stm32h7xx_hal_smartcard.h"
+#endif /* HAL_SMARTCARD_MODULE_ENABLED */
+
+#ifdef HAL_SMBUS_MODULE_ENABLED
+ #include "stm32h7xx_hal_smbus.h"
+#endif /* HAL_SMBUS_MODULE_ENABLED */
+
+#ifdef HAL_WWDG_MODULE_ENABLED
+ #include "stm32h7xx_hal_wwdg.h"
+#endif /* HAL_WWDG_MODULE_ENABLED */
+
+#ifdef HAL_PCD_MODULE_ENABLED
+ #include "stm32h7xx_hal_pcd.h"
+#endif /* HAL_PCD_MODULE_ENABLED */
+
+#ifdef HAL_HCD_MODULE_ENABLED
+ #include "stm32h7xx_hal_hcd.h"
+#endif /* HAL_HCD_MODULE_ENABLED */
+
+#ifdef HAL_PSSI_MODULE_ENABLED
+  #include "stm32h7xx_hal_pssi.h"
+#endif /* HAL_PSSI_MODULE_ENABLED */
+
+#ifdef HAL_DTS_MODULE_ENABLED
+  #include "stm32h7xx_hal_dts.h"
+#endif /* HAL_DTS_MODULE_ENABLED */
+
+/* Exported macro ------------------------------------------------------------*/
+#ifdef  USE_FULL_ASSERT
+/**
+  * @brief  The assert_param macro is used for function's parameters check.
+  * @param  expr: If expr is false, it calls assert_failed function
+  *         which reports the name of the source file and the source
+  *         line number of the call that failed. 
+  *         If expr is true, it returns no value.
+  * @retval None
+  */
+  #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+/* Exported functions ------------------------------------------------------- */
+  void assert_failed(uint8_t* file, uint32_t line);
+#else
+  #define assert_param(expr) ((void)0U)
+#endif /* USE_FULL_ASSERT */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32H7xx_HAL_CONF_H */
+ 
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/stm32h7xx_it.h
@@ -1,0 +1,81 @@
+/* USER CODE BEGIN Header */
+/**
+  ******************************************************************************
+  * @file    stm32h7xx_it.h
+  * @brief   This file contains the headers of the interrupt handlers.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+ ******************************************************************************
+  */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32H7xx_IT_H
+#define __STM32H7xx_IT_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif 
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void NMI_Handler(void);
+void HardFault_Handler(void);
+void MemManage_Handler(void);
+void BusFault_Handler(void);
+void UsageFault_Handler(void);
+void SVC_Handler(void);
+void DebugMon_Handler(void);
+void PendSV_Handler(void);
+void SysTick_Handler(void);
+void DMA1_Stream0_IRQHandler(void);
+void DMA1_Stream1_IRQHandler(void);
+void DMA1_Stream2_IRQHandler(void);
+void ADC_IRQHandler(void);
+void I2C4_EV_IRQHandler(void);
+void I2C4_ER_IRQHandler(void);
+void OTG_FS_EP1_OUT_IRQHandler(void);
+void OTG_FS_EP1_IN_IRQHandler(void);
+void OTG_FS_IRQHandler(void);
+void DMAMUX1_OVR_IRQHandler(void);
+void BDMA_Channel0_IRQHandler(void);
+void BDMA_Channel1_IRQHandler(void);
+/* USER CODE BEGIN EFP */
+
+/* USER CODE END EFP */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32H7xx_IT_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/sys.h
@@ -1,0 +1,56 @@
+/**
+  ******************************************************************************
+  * File Name          : SYS.h
+  * Description        : This file provides code for the configuration
+  *                      of the SYS instances.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __sys_H
+#define __sys_H
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_SYS_Init(void);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__ sys_H */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/tim.h
@@ -1,0 +1,62 @@
+/**
+  ******************************************************************************
+  * File Name          : TIM.h
+  * Description        : This file provides code for the configuration
+  *                      of the TIM instances.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __tim_H
+#define __tim_H
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+extern TIM_HandleTypeDef htim3;
+extern TIM_HandleTypeDef htim4;
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_TIM3_Init(void);
+void MX_TIM4_Init(void);
+                        
+void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
+                                        
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__ tim_H */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/tunings.h
@@ -1,0 +1,20 @@
+/*
+ * tunings.h
+ *
+ *  Created on: Dec 18, 2019
+ *      Author: josnyder
+ */
+
+#ifndef TUNINGS_H_
+#define TUNINGS_H_
+
+#define NUM_TUNINGS 66
+
+extern float centsDeviation[12];
+extern float tuningPresets[NUM_TUNINGS][12];
+extern uint32_t currentTuning;
+extern uint8_t keyCenter;
+extern char tuningNames[NUM_TUNINGS][6];
+
+
+#endif /* TUNINGS_H_ */
--- /dev/null
+++ b/LEAF/Inc/ui.h
@@ -1,0 +1,116 @@
+/*
+ * ui.h
+ *
+ *  Created on: Aug 30, 2019
+ *      Author: jeffsnyder
+ */
+#ifndef UI_H_
+#define UI_H_
+
+#define NUM_ADC_CHANNELS 6
+#define NUM_BUTTONS 10
+
+//PresetNil is used as a counter for the size of the enum
+typedef enum _VocodecPresetType
+{
+	Vocoder = 0,
+	Pitchshift,
+	AutotuneMono,
+	AutotunePoly,
+	SamplerButtonPress,
+	SamplerAutoGrab,
+	Distortion,
+	Wavefolder,
+	BitCrusher,
+	Delay,
+	Reverb,
+	Reverb2,
+	LivingString,
+	LivingStringSynth,
+	ClassicSynth,
+	Rhodes,
+	PresetNil
+} VocodecPresetType;
+
+typedef enum _VocodecButton
+{
+	ButtonEdit = 0,
+	ButtonLeft,
+	ButtonRight,
+	ButtonDown,
+	ButtonUp,
+	ButtonA,
+	ButtonB,
+	ButtonC,
+	ButtonD,
+	ButtonE,
+	ButtonNil
+} VocodecButton;
+
+typedef enum _ButtonAction
+{
+	ActionPress = 0,
+	ActionRelease,
+	ActionHoldInstant,
+	ActionHoldContinuous,
+	ActionNil
+} ButtonAction;
+
+extern uint16_t ADC_values[NUM_ADC_CHANNELS];
+
+extern uint8_t buttonValues[NUM_BUTTONS];
+//extern uint8_t buttonPressed[NUM_BUTTONS];
+//extern uint8_t buttonReleased[NUM_BUTTONS];
+
+extern int8_t writeKnobFlag;
+extern int8_t writeButtonFlag;
+extern int8_t writeActionFlag;
+
+extern float floatADCUI[NUM_ADC_CHANNELS];
+
+extern uint8_t currentPreset;
+extern uint8_t previousPreset;
+extern uint8_t loadingPreset;
+// Display values
+extern char* modeNames[PresetNil];
+extern char* modeNamesDetails[PresetNil];
+extern char* shortModeNames[PresetNil];
+extern char* paramNames[PresetNil][NUM_ADC_CHANNELS + NUM_BUTTONS];
+extern float knobParams[NUM_ADC_CHANNELS];
+extern int8_t cvAddParam;
+extern uint8_t buttonActionsSFX[NUM_BUTTONS][ActionNil];
+extern char* (*buttonActionFunctions[PresetNil])(VocodecButton, ButtonAction);
+
+void initModeNames(void);
+
+void buttonCheck(void);
+
+void adcCheck(void);
+
+void clearButtonActions(void);
+
+void changeTuning(void);
+
+void writeCurrentPresetToFlash(void);
+
+char* UIVocoderButtons(VocodecButton button, ButtonAction action);
+char* UIPitchShiftButtons(VocodecButton button, ButtonAction action);
+char* UINeartuneButtons(VocodecButton button, ButtonAction action);
+char* UIAutotuneButtons(VocodecButton button, ButtonAction action);
+char* UISamplerBPButtons(VocodecButton button, ButtonAction action);
+char* UISamplerAutoButtons(VocodecButton button, ButtonAction action);
+char* UIDistortionButtons(VocodecButton button, ButtonAction action);
+char* UIWaveFolderButtons(VocodecButton button, ButtonAction action);
+char* UIBitcrusherButtons(VocodecButton button, ButtonAction action);
+char* UIDelayButtons(VocodecButton button, ButtonAction action);
+char* UIReverbButtons(VocodecButton button, ButtonAction action);
+char* UIReverb2Buttons(VocodecButton button, ButtonAction action);
+char* UILivingStringButtons(VocodecButton button, ButtonAction action);
+char* UILivingStringSynthButtons(VocodecButton button, ButtonAction action);
+char* UIClassicSynthButtons(VocodecButton button, ButtonAction action);
+char* UIRhodesButtons(VocodecButton button, ButtonAction action);
+
+
+
+#endif /* UI_H_ */
+
--- /dev/null
+++ b/LEAF/Inc/usb_host.h
@@ -1,0 +1,94 @@
+/* USER CODE BEGIN Header */
+/**
+  ******************************************************************************
+  * @file           : usb_host.h
+  * @version        : v1.0_Cube
+  * @brief          : Header for usb_host.c file.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __USB_HOST__H__
+#define __USB_HOST__H__
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32h7xx.h"
+#include "stm32h7xx_hal.h"
+
+/* USER CODE BEGIN INCLUDE */
+
+/* USER CODE END INCLUDE */
+
+/** @addtogroup USBH_OTG_DRIVER
+  * @{
+  */
+
+/** @defgroup USBH_HOST USBH_HOST
+  * @brief Host file for Usb otg low level driver.
+  * @{
+  */
+
+/** @defgroup USBH_HOST_Exported_Variables USBH_HOST_Exported_Variables
+  * @brief Public variables.
+  * @{
+  */
+
+/**
+  * @}
+  */
+
+/** Status of the application. */
+typedef enum {
+  APPLICATION_IDLE = 0,
+  APPLICATION_START,
+  APPLICATION_READY,
+  APPLICATION_DISCONNECT
+}ApplicationTypeDef;
+
+/** @defgroup USBH_HOST_Exported_FunctionsPrototype USBH_HOST_Exported_FunctionsPrototype
+  * @brief Declaration of public functions for Usb host.
+  * @{
+  */
+
+/* Exported functions -------------------------------------------------------*/
+
+/** @brief USB Host initialization function. */
+void MX_USB_HOST_Init(void);
+
+void MX_USB_HOST_Process(void);
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __USB_HOST__H__ */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/usbh_MIDI.h
@@ -1,0 +1,211 @@
+/**
+ ******************************************************************************
+ * @file    usbh_MIDI.h
+ * @author  Xavier Halgand
+ * @version 
+ * @date    
+ * @brief   This file contains all the prototypes for the usbh_MIDI.c
+ ******************************************************************************
+ */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* Define to prevent recursive  ----------------------------------------------*/
+#ifndef __USBH_MIDI_CORE_H
+#define __USBH_MIDI_CORE_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "usbh_core.h"
+//#include "stm32f7xx_nucleo_144.h"
+
+/*-------------------------------------------------------------------------------*/
+// buffer size (should be at least >= MIOS32_USB_MIDI_DESC_DATA_*_SIZE/4)
+#define USB_MIDI_RX_BUFFER_SIZE   64 // packages
+#define USB_MIDI_TX_BUFFER_SIZE   64 // packages
+
+// size of IN/OUT pipe
+#define USB_MIDI_DATA_IN_SIZE           64
+#define USB_MIDI_DATA_OUT_SIZE          64
+
+// endpoint assignments (don't change!)
+#define USB_MIDI_DATA_OUT_EP 0x02
+#define USB_MIDI_DATA_IN_EP  0x81
+/** @defgroup USBH_MIDI_CORE_Exported_Defines
+ * @{
+ */
+#define USB_AUDIO_CLASS                                 0x01
+#define USB_MIDISTREAMING_SubCLASS                      0x03
+#define USB_MIDI_DESC_SIZE                                 9
+#define USBH_MIDI_CLASS    &MIDI_Class
+
+/*-------------------------------------------------------------------------------*/
+
+extern USBH_ClassTypeDef  MIDI_Class;
+
+/* -------------------- Exported_Types ------------------------------------------*/
+
+typedef enum {
+	NoteOff       = 0x8,
+	NoteOn        = 0x9,
+	PolyPressure  = 0xa,
+	CC            = 0xb,
+	ProgramChange = 0xc,
+	Aftertouch    = 0xd,
+	PitchBend     = 0xe
+} midi_event_t;
+
+
+typedef enum {
+	Chn1,
+	Chn2,
+	Chn3,
+	Chn4,
+	Chn5,
+	Chn6,
+	Chn7,
+	Chn8,
+	Chn9,
+	Chn10,
+	Chn11,
+	Chn12,
+	Chn13,
+	Chn14,
+	Chn15,
+	Chn16
+} midi_chn_t;
+
+#pragma anon_unions
+
+typedef union {
+	struct {
+		uint32_t ALL;
+	};
+	struct {
+		uint8_t cin_cable;
+		uint8_t evnt0;
+		uint8_t evnt1;
+		uint8_t evnt2;
+	};
+	struct {
+		uint8_t type:4;
+		uint8_t cable:4;
+		uint8_t chn:4; // mios32_midi_chn_t
+		uint8_t event:4; // mios32_midi_event_t
+		uint8_t value1;
+		uint8_t value2;
+	};
+
+	// C++ doesn't allow to redefine names in anonymous unions
+	// as a simple workaround, we rename these redundant names
+	struct {
+		uint8_t cin:4;
+		uint8_t dummy1_cable:4;
+		uint8_t dummy1_chn:4; // mios32_midi_chn_t
+		uint8_t dummy1_event:4; // mios32_midi_event_t
+		uint8_t note:8;
+		uint8_t velocity:8;
+	};
+	struct {
+		uint8_t dummy2_cin:4;
+		uint8_t dummy2_cable:4;
+		uint8_t dummy2_chn:4; // mios32_midi_chn_t
+		uint8_t dummy2_event:4; // mios32_midi_event_t
+		uint8_t cc_number:8;
+		uint8_t value:8;
+	};
+	struct {
+		uint8_t dummy3_cin:4;
+		uint8_t dummy3_cable:4;
+		uint8_t dummy3_chn:4; // mios32_midi_chn_t
+		uint8_t dummy3_event:4; // mios32_midi_event_t
+		uint8_t program_change:8;
+		uint8_t dummy3:8;
+	};
+} midi_package_t;
+
+/* States for MIDI State Machine */
+typedef enum
+{
+	MIDI_IDLE= 0,
+	MIDI_SEND_DATA,
+	MIDI_SEND_DATA_WAIT,
+	MIDI_RECEIVE_DATA,
+	MIDI_RECEIVE_DATA_WAIT,
+}
+MIDI_DataStateTypeDef;
+
+typedef enum
+{
+	MIDI_IDLE_STATE= 0,
+	MIDI_TRANSFER_DATA,
+	MIDI_ERROR_STATE,
+}
+MIDI_StateTypeDef;
+
+/* Structure for MIDI process */
+typedef struct _MIDI_Process
+{
+	MIDI_StateTypeDef			state;
+	uint8_t			InPipe;
+	uint8_t			OutPipe;
+	uint8_t			OutEp;
+	uint8_t			InEp;
+	uint16_t		OutEpSize;
+	uint16_t		InEpSize;
+
+	uint8_t			*pTxData;
+	uint8_t			*pRxData;
+	uint16_t		TxDataLength;
+	uint16_t		RxDataLength;
+	MIDI_DataStateTypeDef		data_tx_state;
+	MIDI_DataStateTypeDef		data_rx_state;
+	uint8_t						Rx_Poll;
+	//uint8_t			buff[8];
+	//MIDI_DataItfTypedef                DataItf;
+	//CDC_InterfaceDesc_Typedef         CDC_Desc;
+}
+MIDI_HandleTypeDef;
+
+/*---------------------------Exported_FunctionsPrototype-------------------------------------*/
+
+USBH_StatusTypeDef  USBH_MIDI_Transmit(USBH_HandleTypeDef *phost,
+                                      uint8_t *pbuff,
+                                      uint16_t length);
+
+USBH_StatusTypeDef  USBH_MIDI_Receive(USBH_HandleTypeDef *phost,
+                                     uint8_t *pbuff,
+                                     uint16_t length);
+
+
+uint32_t            USBH_MIDI_GetLastReceivedDataSize(USBH_HandleTypeDef *phost);
+
+USBH_StatusTypeDef  USBH_MIDI_Stop(USBH_HandleTypeDef *phost);
+
+void USBH_MIDI_TransmitCallback(USBH_HandleTypeDef *phost);
+
+void USBH_MIDI_ReceiveCallback(USBH_HandleTypeDef *phost, uint32_t myLength);
+
+/*-------------------------------------------------------------------------------------------*/
+#endif /* __USBH_MIDI_CORE_H */
+
+
+/*****************************END OF FILE*************************************************************/
+
--- /dev/null
+++ b/LEAF/Inc/usbh_conf.h
@@ -1,0 +1,199 @@
+/* USER CODE BEGIN Header */
+/**
+  ******************************************************************************
+  * @file           : usbh_conf.h
+  * @version        : v1.0_Cube
+  * @brief          : Header for usbh_conf.c file.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __USBH_CONF__H__
+#define __USBH_CONF__H__
+#ifdef __cplusplus
+ extern "C" {
+#endif
+/* Includes ------------------------------------------------------------------*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "main.h"
+
+#include "stm32h7xx.h"
+#include "stm32h7xx_hal.h"
+
+/* USER CODE BEGIN INCLUDE */
+
+/* USER CODE END INCLUDE */
+
+/** @addtogroup STM32_USB_HOST_LIBRARY
+  * @{
+  */
+
+/** @defgroup USBH_CONF
+  * @brief usb host low level driver configuration file
+  * @{
+  */
+
+/** @defgroup USBH_CONF_Exported_Variables USBH_CONF_Exported_Variables
+  * @brief Public variables.
+  * @{
+  */
+
+/**
+  * @}
+  */
+
+/** @defgroup USBH_CONF_Exported_Defines USBH_CONF_Exported_Defines
+  * @brief Defines for configuration of the Usb host.
+  * @{
+  */
+
+/*----------   -----------*/
+#define USBH_MAX_NUM_ENDPOINTS      2U
+ 
+/*----------   -----------*/
+#define USBH_MAX_NUM_INTERFACES      10U
+ 
+/*----------   -----------*/
+#define USBH_MAX_NUM_CONFIGURATION      10U
+ 
+/*----------   -----------*/
+#define USBH_KEEP_CFG_DESCRIPTOR      1U
+ 
+/*----------   -----------*/
+#define USBH_MAX_NUM_SUPPORTED_CLASS      1U
+ 
+/*----------   -----------*/
+#define USBH_MAX_SIZE_CONFIGURATION      256U
+ 
+/*----------   -----------*/
+#define USBH_MAX_DATA_BUFFER      512U
+ 
+/*----------   -----------*/
+#define USBH_DEBUG_LEVEL      0U
+ 
+/*----------   -----------*/
+#define USBH_USE_OS      0U
+ 
+ 
+ 
+
+/****************************************/
+/* #define for FS and HS identification */
+#define HOST_HS 		0
+#define HOST_FS 		1
+
+#if (USBH_USE_OS == 1)
+  #include "cmsis_os.h"
+  #define USBH_PROCESS_PRIO          osPriorityNormal
+  #define USBH_PROCESS_STACK_SIZE    ((uint16_t)0)
+#endif /* (USBH_USE_OS == 1) */
+
+/**
+  * @}
+  */
+
+/** @defgroup USBH_CONF_Exported_Macros USBH_CONF_Exported_Macros
+  * @brief Aliases.
+  * @{
+  */
+
+/* Memory management macros */
+
+/** Alias for memory allocation. */
+#define USBH_malloc         malloc
+
+/** Alias for memory release. */
+#define USBH_free           free
+
+/** Alias for memory set. */
+#define USBH_memset         memset
+
+/** Alias for memory copy. */
+#define USBH_memcpy         memcpy
+
+/* DEBUG macros */
+
+#if (USBH_DEBUG_LEVEL > 0U)
+#define  USBH_UsrLog(...)   do { \
+                            printf(__VA_ARGS__); \
+                            printf("\n"); \
+} while (0)
+#else
+#define USBH_UsrLog(...) do {} while (0)
+#endif
+
+#if (USBH_DEBUG_LEVEL > 1U)
+
+#define  USBH_ErrLog(...) do { \
+                            printf("ERROR: ") ; \
+                            printf(__VA_ARGS__); \
+                            printf("\n"); \
+} while (0)
+#else
+#define USBH_ErrLog(...) do {} while (0)
+#endif
+
+#if (USBH_DEBUG_LEVEL > 2U)
+#define  USBH_DbgLog(...)   do { \
+                            printf("DEBUG : ") ; \
+                            printf(__VA_ARGS__); \
+                            printf("\n"); \
+} while (0)
+#else
+#define USBH_DbgLog(...) do {} while (0)
+#endif
+
+/**
+  * @}
+  */
+
+/** @defgroup USBH_CONF_Exported_Types USBH_CONF_Exported_Types
+  * @brief Types.
+  * @{
+  */
+
+/**
+  * @}
+  */
+
+/** @defgroup USBH_CONF_Exported_FunctionsPrototype USBH_CONF_Exported_FunctionsPrototype
+  * @brief Declaration of public functions for Usb host.
+  * @{
+  */
+
+/* Exported functions -------------------------------------------------------*/
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __USBH_CONF__H__ */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Inc/usbh_platform.h
@@ -1,0 +1,44 @@
+/* USER CODE BEGIN Header */
+/**
+  ******************************************************************************
+  * @file           : usbh_platform.h
+  * @brief          : Header for usbh_platform.c file.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __USBH_PLATFORM_H__
+#define __USBH_PLATFORM_H__
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "usb_host.h"
+
+/* USER CODE BEGIN INCLUDE */
+
+/* USER CODE END INCLUDE */
+
+void MX_DriverVbusFS(uint8_t state); 
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __USBH_PLATFORM_H__ */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
binary files a/LEAF/Src/.DS_Store /dev/null differ
--- /dev/null
+++ b/LEAF/Src/MIDI_application.c
@@ -1,0 +1,192 @@
+/*
+ * MIDI_application.c
+ *
+ *  Created on: 6 d�c. 2014
+ *      Author: Xavier Halgand
+ *
+ *	Modified on: 9/12/16 by C.P. to handle the MIDI_IDLE state properly, and
+ *	added required code to be compatible with "NucleoSynth"
+ *
+ *	11/8/17 by C.P.: Version 0.7.7 - Use for Casio CTK-6200 Keyboard
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "audiostream.h"
+#include "MIDI_application.h"
+#include "usbh_core.h"
+#include "usbh_MIDI.h"
+#include "usb_host.h"
+#include "sfx.h"
+
+MIDI_ApplicationTypeDef MIDI_Appli_state = MIDI_APPLICATION_READY;
+extern ApplicationTypeDef Appli_state;
+extern USBH_HandleTypeDef hUsbHostFS;
+uint8_t MIDI_RX_Buffer[RX_BUFF_SIZE]__ATTR_RAM_D2; // MIDI reception buffer
+
+uint8_t key, velocity, ctrl, data, sustainInverted;
+
+uint8_t CCs[128];
+/* Private define ------------------------------------------------------------*/
+
+/* Private function prototypes -----------------------------------------------*/
+
+
+
+
+/*-----------------------------------------------------------------------------*/
+/**
+ * @brief  Main routine for MIDI application, looped in main.c
+ * @param  None
+ * @retval none
+ */
+void MIDI_Application(void)
+{
+	if(Appli_state == APPLICATION_READY)
+	{
+		if(MIDI_Appli_state == MIDI_APPLICATION_READY)
+		{
+
+			USBH_MIDI_Receive(&hUsbHostFS, MIDI_RX_Buffer, RX_BUFF_SIZE); // just once at the beginning, start the first reception
+			MIDI_Appli_state = MIDI_APPLICATION_RUNNING;
+		}
+	}
+	if(Appli_state == APPLICATION_DISCONNECT)
+	{
+		MIDI_Appli_state = MIDI_APPLICATION_READY;
+		USBH_MIDI_Stop(&hUsbHostFS);
+	}
+}
+
+/*-----------------------------------------------------------------------------*/
+void ProcessReceivedMidiDatas(uint32_t myLength)
+{
+	uint16_t numberOfPackets;
+	uint8_t *ptr = MIDI_RX_Buffer;
+	midi_package_t pack;
+
+	numberOfPackets = myLength >> 2; //each USB midi package is 4 bytes long
+
+	if (numberOfPackets != 0)
+	{
+		while(numberOfPackets--)
+		{
+			pack.cin_cable = *ptr ; ptr++ ;
+			pack.evnt0 = *ptr ; ptr++ ;
+			pack.evnt1 = *ptr ; ptr++ ;
+			pack.evnt2 = *ptr ; ptr++ ;
+
+			// Handle MIDI messages
+			switch(pack.evnt0)
+			{
+				case (0x80): // Note Off
+					key = pack.evnt1;
+					velocity = pack.evnt2;
+
+					noteOff(key, velocity);
+
+					break;
+				case (0x90): // Note On
+					key = pack.evnt1;
+					velocity = pack.evnt2;
+
+					noteOn(key, velocity);
+
+					break;
+				case (0xA0):
+					break;
+				case (0xB0):
+					ctrl = pack.evnt1;
+					data = pack.evnt2;
+					CCs[ctrl] = data;
+					switch(ctrl)
+					{
+						case (0x01):
+							break;
+						case (0x02):
+							break;
+						case (0x03):
+							break;
+						case (0x04):
+							break;
+						case (0x0D):
+							break;
+						case (0x4B):
+							break;
+						case (0x4C):
+							break;
+						case (0x5C):
+							break;
+						case (0x5F):
+							break;
+						case (0x49):
+							break;
+						case (0x48):
+							break;
+						case (0x5B):
+							break;
+						case (0x5D):
+							break;
+						case (0x4A):
+							break;
+						case (0x47):
+							break;
+						case (0x05):
+							break;
+						case (0x54):
+							break;
+						case (0x10):
+							break;
+						case (0x11):
+							break;
+						case (0x12):
+							break;
+						case (0x07):
+							break;
+						case (0x13):
+							break;
+						case (0x14):
+							break;
+						case (64): // sustain
+							if (data)
+							{
+								if (sustainInverted) 	sustainOff();
+								else					sustainOn();
+							}
+							else
+							{
+								if (sustainInverted) 	sustainOn();
+								else					sustainOff();
+							}
+							break;
+					}
+
+
+          break;
+				case (0xC0): // Program Change
+					break;
+				case (0xD0): // Mono Aftertouch
+					break;
+				case (0xE0): // Pitch Bend
+					pitchBend((pack.evnt1) + (pack.evnt2 << 7));
+					break;
+				case (0xF0):
+					break;
+			}
+		}
+	}
+}
+
+
+
+/*-----------------------------------------------------------------------------*/
+/**
+ * @brief  MIDI data receive callback.
+ * @param  phost: Host handle
+ * @retval None
+ */
+void USBH_MIDI_ReceiveCallback(USBH_HandleTypeDef *phost, uint32_t myLength)
+{
+	ProcessReceivedMidiDatas(myLength);
+	USBH_MIDI_Receive(&hUsbHostFS, MIDI_RX_Buffer, RX_BUFF_SIZE); // start a new reception
+}
+
--- /dev/null
+++ b/LEAF/Src/adc.c
@@ -1,0 +1,239 @@
+/**
+  ******************************************************************************
+  * File Name          : ADC.c
+  * Description        : This file provides code for the configuration
+  *                      of the ADC instances.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "adc.h"
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+ADC_HandleTypeDef hadc1;
+DMA_HandleTypeDef hdma_adc1;
+
+/* ADC1 init function */
+void MX_ADC1_Init(void)
+{
+  ADC_MultiModeTypeDef multimode = {0};
+  ADC_ChannelConfTypeDef sConfig = {0};
+
+  /** Common config 
+  */
+  hadc1.Instance = ADC1;
+  hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV4;
+  hadc1.Init.Resolution = ADC_RESOLUTION_16B;
+  hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
+  hadc1.Init.EOCSelection = ADC_EOC_SEQ_CONV;
+  hadc1.Init.LowPowerAutoWait = DISABLE;
+  hadc1.Init.ContinuousConvMode = ENABLE;
+  hadc1.Init.NbrOfConversion = 6;
+  hadc1.Init.DiscontinuousConvMode = DISABLE;
+  hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
+  hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
+  hadc1.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DMA_CIRCULAR;
+  hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
+  hadc1.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE;
+  hadc1.Init.OversamplingMode = ENABLE;
+  hadc1.Init.Oversampling.Ratio = 64;
+  hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_6;
+  hadc1.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;
+  hadc1.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE;
+  if (HAL_ADC_Init(&hadc1) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /** Configure the ADC multi-mode 
+  */
+  multimode.Mode = ADC_MODE_INDEPENDENT;
+  if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /** Configure Regular Channel 
+  */
+  sConfig.Channel = ADC_CHANNEL_7;
+  sConfig.Rank = ADC_REGULAR_RANK_1;
+  sConfig.SamplingTime = ADC_SAMPLETIME_64CYCLES_5;
+  sConfig.SingleDiff = ADC_SINGLE_ENDED;
+  sConfig.OffsetNumber = ADC_OFFSET_NONE;
+  sConfig.Offset = 0;
+  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /** Configure Regular Channel 
+  */
+  sConfig.Channel = ADC_CHANNEL_19;
+  sConfig.Rank = ADC_REGULAR_RANK_2;
+  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /** Configure Regular Channel 
+  */
+  sConfig.Channel = ADC_CHANNEL_14;
+  sConfig.Rank = ADC_REGULAR_RANK_3;
+  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /** Configure Regular Channel 
+  */
+  sConfig.Channel = ADC_CHANNEL_16;
+  sConfig.Rank = ADC_REGULAR_RANK_4;
+  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /** Configure Regular Channel 
+  */
+  sConfig.Channel = ADC_CHANNEL_15;
+  sConfig.Rank = ADC_REGULAR_RANK_5;
+  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /** Configure Regular Channel 
+  */
+  sConfig.Channel = ADC_CHANNEL_8;
+  sConfig.Rank = ADC_REGULAR_RANK_6;
+  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+}
+
+void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
+{
+
+  GPIO_InitTypeDef GPIO_InitStruct = {0};
+  HAL_DMA_MuxSyncConfigTypeDef pSyncConfig= {0};
+  if(adcHandle->Instance==ADC1)
+  {
+  /* USER CODE BEGIN ADC1_MspInit 0 */
+
+  /* USER CODE END ADC1_MspInit 0 */
+    /* ADC1 clock enable */
+    __HAL_RCC_ADC12_CLK_ENABLE();
+  
+    __HAL_RCC_GPIOC_CLK_ENABLE();
+    __HAL_RCC_GPIOA_CLK_ENABLE();
+    /**ADC1 GPIO Configuration    
+    PC1     ------> ADC1_INP11
+    PA0     ------> ADC1_INP16
+    PA2     ------> ADC1_INP14
+    PA3     ------> ADC1_INP15
+    PA5     ------> ADC1_INP19
+    PA7     ------> ADC1_INP7
+    PC5     ------> ADC1_INP8 
+    */
+    GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_5;
+    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+    GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_5 
+                          |GPIO_PIN_7;
+    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+    /* ADC1 DMA Init */
+    /* ADC1 Init */
+    hdma_adc1.Instance = DMA1_Stream0;
+    hdma_adc1.Init.Request = DMA_REQUEST_ADC1;
+    hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
+    hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
+    hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
+    hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
+    hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
+    hdma_adc1.Init.Mode = DMA_CIRCULAR;
+    hdma_adc1.Init.Priority = DMA_PRIORITY_HIGH;
+    hdma_adc1.Init.FIFOMode = DMA_FIFOMODE_ENABLE;
+    hdma_adc1.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_1QUARTERFULL;
+    hdma_adc1.Init.MemBurst = DMA_MBURST_SINGLE;
+    hdma_adc1.Init.PeriphBurst = DMA_PBURST_SINGLE;
+    if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
+    {
+      Error_Handler();
+    }
+
+    pSyncConfig.SyncSignalID = HAL_DMAMUX1_SYNC_EXTI0;
+    pSyncConfig.SyncPolarity = HAL_DMAMUX_SYNC_RISING;
+    pSyncConfig.SyncEnable = DISABLE;
+    pSyncConfig.EventEnable = ENABLE;
+    pSyncConfig.RequestNumber = 1;
+    if (HAL_DMAEx_ConfigMuxSync(&hdma_adc1, &pSyncConfig) != HAL_OK)
+    {
+      Error_Handler();
+    }
+
+    __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc1);
+
+    /* ADC1 interrupt Init */
+    HAL_NVIC_SetPriority(ADC_IRQn, 0, 0);
+    HAL_NVIC_EnableIRQ(ADC_IRQn);
+  /* USER CODE BEGIN ADC1_MspInit 1 */
+
+  /* USER CODE END ADC1_MspInit 1 */
+  }
+}
+
+void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle)
+{
+
+  if(adcHandle->Instance==ADC1)
+  {
+  /* USER CODE BEGIN ADC1_MspDeInit 0 */
+
+  /* USER CODE END ADC1_MspDeInit 0 */
+    /* Peripheral clock disable */
+    __HAL_RCC_ADC12_CLK_DISABLE();
+  
+    /**ADC1 GPIO Configuration    
+    PC1     ------> ADC1_INP11
+    PA0     ------> ADC1_INP16
+    PA2     ------> ADC1_INP14
+    PA3     ------> ADC1_INP15
+    PA5     ------> ADC1_INP19
+    PA7     ------> ADC1_INP7
+    PC5     ------> ADC1_INP8 
+    */
+    HAL_GPIO_DeInit(GPIOC, GPIO_PIN_1|GPIO_PIN_5);
+
+    HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_5 
+                          |GPIO_PIN_7);
+
+    /* ADC1 DMA DeInit */
+    HAL_DMA_DeInit(adcHandle->DMA_Handle);
+
+    /* ADC1 interrupt Deinit */
+    HAL_NVIC_DisableIRQ(ADC_IRQn);
+  /* USER CODE BEGIN ADC1_MspDeInit 1 */
+
+  /* USER CODE END ADC1_MspDeInit 1 */
+  }
+} 
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Src/audiostream.c
@@ -1,0 +1,518 @@
+/*
+ * audiostream.c
+ *
+ *  Created on: Aug 30, 2019
+ *      Author: jeffsnyder
+ */
+
+
+/* Includes ------------------------------------------------------------------*/
+#include "audiostream.h"
+#include "main.h"
+#include "leaf.h"
+#include "codec.h"
+#include "ui.h"
+#include "oled.h"
+#include "tunings.h"
+#include "i2c.h"
+#include "gpio.h"
+#include "sfx.h"
+#include "tim.h"
+
+//the audio buffers are put in the D2 RAM area because that is a memory location that the DMA has access to.
+int32_t audioOutBuffer[AUDIO_BUFFER_SIZE] __ATTR_RAM_D2;
+int32_t audioInBuffer[AUDIO_BUFFER_SIZE] __ATTR_RAM_D2;
+
+#define SMALL_MEM_SIZE 8192
+#define MED_MEM_SIZE 500000
+#define LARGE_MEM_SIZE 33554432 //32 MBytes - size of SDRAM IC
+char small_memory[SMALL_MEM_SIZE];
+char medium_memory[MED_MEM_SIZE]__ATTR_RAM_D1;
+char large_memory[LARGE_MEM_SIZE] __ATTR_SDRAM;
+
+#define DISPLAY_BLOCK_SIZE 512
+float audioDisplayBuffer[128];
+uint8_t displayBufferIndex = 0;
+float displayBlockVal = 0.0f;
+uint32_t displayBlockCount = 0;
+
+
+void audioFrame(uint16_t buffer_offset);
+float audioTickL(float audioIn);
+float audioTickR(float audioIn);
+void buttonCheck(void);
+
+HAL_StatusTypeDef transmit_status;
+HAL_StatusTypeDef receive_status;
+
+uint8_t codecReady = 0;
+
+uint16_t frameCounter = 0;
+
+tMempool smallPool;
+tMempool largePool;
+
+tRamp adc[6];
+
+tNoise myNoise;
+tCycle mySine[2];
+float smoothedADC[6];
+tEnvelopeFollower LED_envelope[4];
+
+uint32_t clipCounter[4] = {0,0,0,0};
+uint8_t clipped[4] = {0,0,0,0};
+
+
+float rightIn = 0.0f;
+float rightOut = 0.0f;
+float sample = 0.0f;
+
+
+
+// Vocoder
+float glideTimeVoc = 5.0f;
+
+// Formant
+float formantShiftFactor = -1.0f;
+float formantKnob = 0.0f;
+
+// PitchShift
+float pitchFactor = 2.0f;
+float formantWarp = 1.0f;
+float formantIntensity = 1.0f;
+
+// Autotune1
+
+// Autotune2
+float glideTimeAuto = 5.0f;
+
+// Sampler Button Press
+
+
+// Sampler Auto Grab
+
+
+
+
+
+
+BOOL frameCompleted = TRUE;
+
+BOOL bufferCleared = TRUE;
+
+int numBuffersToClearOnLoad = 2;
+int numBuffersCleared = 0;
+
+/**********************************************/
+
+void (*allocFunctions[PresetNil])(void);
+void (*frameFunctions[PresetNil])(void);
+void (*tickFunctions[PresetNil])(float);
+void (*freeFunctions[PresetNil])(void);
+
+void audioInit(I2C_HandleTypeDef* hi2c, SAI_HandleTypeDef* hsaiOut, SAI_HandleTypeDef* hsaiIn)
+{
+	// Initialize LEAF.
+
+	LEAF_init(SAMPLE_RATE, AUDIO_FRAME_SIZE, medium_memory, MED_MEM_SIZE, &randomNumber);
+
+	tMempool_init (&smallPool, small_memory, SMALL_MEM_SIZE);
+	tMempool_init (&largePool, large_memory, LARGE_MEM_SIZE);
+
+	initFunctionPointers();
+
+	//ramps to smooth the knobs
+	for (int i = 0; i < 6; i++)
+	{
+		tRamp_init(&adc[i],19.0f, 1); //set all ramps for knobs to be 9ms ramp time and let the init function know they will be ticked every sample
+	}
+
+	for (int i = 0; i < 4; i++)
+	{
+		tEnvelopeFollower_init(&LED_envelope[i], 0.02f, .9995f);
+	}
+
+	initGlobalSFXObjects();
+
+//	allocFunctions[currentPreset]();
+
+	loadingPreset = 1;
+	previousPreset = PresetNil;
+
+	HAL_Delay(10);
+
+	for (int i = 0; i < AUDIO_BUFFER_SIZE; i++)
+	{
+		audioOutBuffer[i] = 0;
+	}
+
+	HAL_Delay(1);
+
+	// set up the I2S driver to send audio data to the codec (and retrieve input as well)
+	transmit_status = HAL_SAI_Transmit_DMA(hsaiOut, (uint8_t *)&audioOutBuffer[0], AUDIO_BUFFER_SIZE);
+	receive_status = HAL_SAI_Receive_DMA(hsaiIn, (uint8_t *)&audioInBuffer[0], AUDIO_BUFFER_SIZE);
+
+	// with the CS4271 codec IC, the SAI Transmit and Receive must be happening before the chip will respond to
+	// I2C setup messages (it seems to use the masterclock input as it's own internal clock for i2c data, etc)
+	// so while we used to set up codec before starting SAI, now we need to set up codec afterwards, and set a flag to make sure it's ready
+
+	//now to send all the necessary messages to the codec
+	AudioCodec_init(hi2c);
+	HAL_Delay(1);
+
+	//now reconfigue so buttons C and E can be used (they were also connected to I2C for codec setup)
+	HAL_I2C_MspDeInit(hi2c);
+
+	GPIO_InitTypeDef GPIO_InitStruct = {0};
+
+    //PB10, PB11     ------> buttons C and E
+    GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;
+    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+    GPIO_InitStruct.Pull = GPIO_PULLUP;
+    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+}
+
+void audioFrame(uint16_t buffer_offset)
+{
+	frameCompleted = FALSE;
+
+	int i;
+	int32_t current_sample;
+
+	buttonCheck();
+	adcCheck();
+
+	if (!loadingPreset)
+	{
+		frameFunctions[currentPreset]();
+	}
+
+	//if the codec isn't ready, keep the buffer as all zeros
+	//otherwise, start computing audio!
+
+	bufferCleared = TRUE;
+
+	if (codecReady)
+	{
+		for (i = 0; i < (HALF_BUFFER_SIZE); i++)
+		{
+			if ((i & 1) == 0)
+			{
+				current_sample = (int32_t)(audioTickR((float) (audioInBuffer[buffer_offset + i] << 8) * INV_TWO_TO_31) * TWO_TO_23);
+			}
+			else
+			{
+				current_sample = (int32_t)(audioTickL((float) (audioInBuffer[buffer_offset + i] << 8) * INV_TWO_TO_31) * TWO_TO_23);
+			}
+
+			audioOutBuffer[buffer_offset + i] = current_sample;
+		}
+
+	}
+
+	if (bufferCleared)
+	{
+		numBuffersCleared++;
+		if (numBuffersCleared >= numBuffersToClearOnLoad)
+		{
+			numBuffersCleared = numBuffersToClearOnLoad;
+			if (loadingPreset)
+			{
+				if (previousPreset != PresetNil)
+				{
+					// do this if you want to save knob values when changing off a preset
+//					for (int i = 0; i < NUM_ADC_CHANNELS; i++)
+//					{
+//						presetKnobValues[previousPreset][i] = smoothedADC[i];
+//					}
+					freeFunctions[previousPreset]();
+				}
+				else
+				{
+					leaf.clearOnAllocation = 1;
+				}
+				setLED_A(0);
+				setLED_B(0);
+				setLED_1(0);
+				allocFunctions[currentPreset]();
+				for (int i = 0; i < NUM_ADC_CHANNELS; i++)
+				{
+					knobActive[i] = 0;
+					floatADCUI[i] = -1.0f;
+					tRamp_setVal(&adc[i], presetKnobValues[currentPreset][i]);
+					tRamp_setDest(&adc[i], presetKnobValues[currentPreset][i]);
+					smoothedADC[i] = presetKnobValues[currentPreset][i];
+				}
+				leaf.clearOnAllocation = 0;
+				loadingPreset = 0;
+			}
+		}
+	}
+	else numBuffersCleared = 0;
+
+	frameCompleted = TRUE;
+
+	OLED_process(); // process what to write to the screen but don't actually draw
+}
+
+
+
+
+float audioTickL(float audioIn)
+{
+	sample = 0.0f;
+
+	for (int i = 0; i < NUM_ADC_CHANNELS; i++)
+	{
+		smoothedADC[i] = tRamp_tick(&adc[i]);
+	}
+
+	if (loadingPreset) return sample;
+
+	bufferCleared = FALSE;
+
+	tickFunctions[currentPreset](audioIn);
+/*
+	displayBlockVal += fabsf(sample);
+	displayBlockCount++;
+	if (displayBlockCount >= DISPLAY_BLOCK_SIZE)
+	{
+		displayBlockVal *= INV_TWO_TO_9;
+		audioDisplayBuffer[displayBufferIndex] = displayBlockVal;
+		displayBlockVal = 0.0f;
+		displayBlockCount = 0;
+		displayBufferIndex++;
+		if (displayBufferIndex >= 128) displayBufferIndex = 0;
+	}
+	*/
+
+	if ((audioIn >= 0.999999f) || (audioIn <= -0.999999f))
+	{
+		setLED_leftin_clip(1);
+		clipCounter[0] = 10000;
+		clipped[0] = 1;
+	}
+	if ((clipCounter[0] > 0) && (clipped[0] == 1))
+	{
+		clipCounter[0]--;
+	}
+	else if ((clipCounter[0] == 0) && (clipped[0] == 1))
+	{
+		setLED_leftin_clip(0);
+		clipped[0] = 0;
+	}
+
+	float current_env = tEnvelopeFollower_tick(&LED_envelope[0], audioIn);
+	uint16_t audioLEDLevel = LEAF_clip(0, (current_env * 32.0f), 16);
+	 __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, audioLEDLevel);
+
+
+	current_env = tEnvelopeFollower_tick(&LED_envelope[1], sample);
+	audioLEDLevel = LEAF_clip(0, (current_env * 32.0f), 15);
+	 __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_3, audioLEDLevel);
+
+
+
+	if ((sample >= 0.999999f) || (sample <= -0.999999f))
+	{
+		setLED_leftout_clip(1);
+		clipCounter[2] = 10000;
+		clipped[2] = 1;
+	}
+	if ((clipCounter[2] > 0) && (clipped[2] == 1))
+	{
+		clipCounter[2]--;
+	}
+	else if ((clipCounter[2] == 0) && (clipped[2] == 1))
+	{
+		setLED_leftout_clip(0);
+		clipped[2] = 0;
+	}
+
+	return sample;
+}
+
+
+
+float audioTickR(float audioIn)
+{
+	rightIn = audioIn;
+
+
+	if ((rightIn >= 0.999999f) || (rightIn <= -0.999999f))
+	{
+		setLED_rightin_clip(1);
+		clipCounter[1] = 10000;
+		clipped[1] = 1;
+	}
+	if ((clipCounter[1] > 0) && (clipped[1] == 1))
+	{
+		clipCounter[1]--;
+	}
+	else if ((clipCounter[1] == 0) && (clipped[1] == 1))
+	{
+		setLED_rightin_clip(0);
+		clipped[1] = 0;
+	}
+
+
+
+	if ((rightOut >= 0.999999f) || (rightOut <= -0.999999f))
+	{
+		setLED_rightout_clip(1);
+		clipCounter[3] = 10000;
+		clipped[3] = 1;
+	}
+	if ((clipCounter[3] > 0) && (clipped[3] == 1))
+	{
+		clipCounter[3]--;
+	}
+	else if ((clipCounter[3] == 0) && (clipped[3] == 1))
+	{
+		setLED_rightout_clip(0);
+		clipped[3] = 0;
+	}
+
+
+	float current_env = tEnvelopeFollower_tick(&LED_envelope[2], rightIn);
+	uint16_t audioLEDLevel = LEAF_clip(0, (current_env * 32.0f), 16);
+	 __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_2, audioLEDLevel);
+
+
+	current_env = tEnvelopeFollower_tick(&LED_envelope[3], rightOut);
+	audioLEDLevel = LEAF_clip(0, (current_env * 32.0f), 16);
+	 __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_1, audioLEDLevel);
+
+
+	return rightOut;
+}
+
+void initFunctionPointers(void)
+{
+	allocFunctions[Vocoder] = SFXVocoderAlloc;
+	frameFunctions[Vocoder] = SFXVocoderFrame;
+	tickFunctions[Vocoder] = SFXVocoderTick;
+	freeFunctions[Vocoder] = SFXVocoderFree;
+
+	allocFunctions[Pitchshift] = SFXPitchShiftAlloc;
+	frameFunctions[Pitchshift] = SFXPitchShiftFrame;
+	tickFunctions[Pitchshift] = SFXPitchShiftTick;
+	freeFunctions[Pitchshift] = SFXPitchShiftFree;
+
+	allocFunctions[AutotuneMono] = SFXNeartuneAlloc;
+	frameFunctions[AutotuneMono] = SFXNeartuneFrame;
+	tickFunctions[AutotuneMono] = SFXNeartuneTick;
+	freeFunctions[AutotuneMono] = SFXNeartuneFree;
+
+	allocFunctions[AutotunePoly] = SFXAutotuneAlloc;
+	frameFunctions[AutotunePoly] = SFXAutotuneFrame;
+	tickFunctions[AutotunePoly] = SFXAutotuneTick;
+	freeFunctions[AutotunePoly] = SFXAutotuneFree;
+
+	allocFunctions[SamplerButtonPress] = SFXSamplerBPAlloc;
+	frameFunctions[SamplerButtonPress] = SFXSamplerBPFrame;
+	tickFunctions[SamplerButtonPress] = SFXSamplerBPTick;
+	freeFunctions[SamplerButtonPress] = SFXSamplerBPFree;
+
+	allocFunctions[SamplerAutoGrab] = SFXSamplerAutoAlloc;
+	frameFunctions[SamplerAutoGrab] = SFXSamplerAutoFrame;
+	tickFunctions[SamplerAutoGrab] = SFXSamplerAutoTick;
+	freeFunctions[SamplerAutoGrab] = SFXSamplerAutoFree;
+
+	allocFunctions[Distortion] = SFXDistortionAlloc;
+	frameFunctions[Distortion] = SFXDistortionFrame;
+	tickFunctions[Distortion] = SFXDistortionTick;
+	freeFunctions[Distortion] = SFXDistortionFree;
+
+	allocFunctions[Wavefolder] = SFXWaveFolderAlloc;
+	frameFunctions[Wavefolder] = SFXWaveFolderFrame;
+	tickFunctions[Wavefolder] = SFXWaveFolderTick;
+	freeFunctions[Wavefolder] = SFXWaveFolderFree;
+
+	allocFunctions[BitCrusher] = SFXBitcrusherAlloc;
+	frameFunctions[BitCrusher] = SFXBitcrusherFrame;
+	tickFunctions[BitCrusher] = SFXBitcrusherTick;
+	freeFunctions[BitCrusher] = SFXBitcrusherFree;
+
+	allocFunctions[Delay] = SFXDelayAlloc;
+	frameFunctions[Delay] = SFXDelayFrame;
+	tickFunctions[Delay] = SFXDelayTick;
+	freeFunctions[Delay] = SFXDelayFree;
+
+	allocFunctions[Reverb] = SFXReverbAlloc;
+	frameFunctions[Reverb] = SFXReverbFrame;
+	tickFunctions[Reverb] = SFXReverbTick;
+	freeFunctions[Reverb] = SFXReverbFree;
+
+	allocFunctions[Reverb2] = SFXReverb2Alloc;
+	frameFunctions[Reverb2] = SFXReverb2Frame;
+	tickFunctions[Reverb2] = SFXReverb2Tick;
+	freeFunctions[Reverb2] = SFXReverb2Free;
+
+	allocFunctions[LivingString] = SFXLivingStringAlloc;
+	frameFunctions[LivingString] = SFXLivingStringFrame;
+	tickFunctions[LivingString] = SFXLivingStringTick;
+	freeFunctions[LivingString] = SFXLivingStringFree;
+
+	allocFunctions[LivingStringSynth] = SFXLivingStringSynthAlloc;
+	frameFunctions[LivingStringSynth] = SFXLivingStringSynthFrame;
+	tickFunctions[LivingStringSynth] = SFXLivingStringSynthTick;
+	freeFunctions[LivingStringSynth] = SFXLivingStringSynthFree;
+
+	allocFunctions[ClassicSynth] = SFXClassicSynthAlloc;
+	frameFunctions[ClassicSynth] = SFXClassicSynthFrame;
+	tickFunctions[ClassicSynth] = SFXClassicSynthTick;
+	freeFunctions[ClassicSynth] = SFXClassicSynthFree;
+
+	allocFunctions[Rhodes] = SFXRhodesAlloc;
+	frameFunctions[Rhodes] = SFXRhodesFrame;
+	tickFunctions[Rhodes] = SFXRhodesTick;
+	freeFunctions[Rhodes] = SFXRhodesFree;
+}
+
+
+
+void HAL_SAI_ErrorCallback(SAI_HandleTypeDef *hsai)
+{
+	if (!frameCompleted)
+	{
+		setLED_C(1);
+	}
+}
+
+void HAL_SAI_TxCpltCallback(SAI_HandleTypeDef *hsai)
+{
+	if (!frameCompleted)
+		{
+			setLED_C(1);
+		}
+}
+
+void HAL_SAI_TxHalfCpltCallback(SAI_HandleTypeDef *hsai)
+{
+	if (!frameCompleted)
+		{
+			setLED_C(1);
+		}
+}
+
+
+void HAL_SAI_RxCpltCallback(SAI_HandleTypeDef *hsai)
+{
+	if (!frameCompleted)
+	{
+		setLED_C(1);
+	}
+
+	audioFrame(HALF_BUFFER_SIZE);
+}
+
+void HAL_SAI_RxHalfCpltCallback(SAI_HandleTypeDef *hsai)
+{
+	if (!frameCompleted)
+	{
+		setLED_C(1);
+	}
+
+	audioFrame(0);
+}
--- /dev/null
+++ b/LEAF/Src/bdma.c
@@ -1,0 +1,66 @@
+/**
+  ******************************************************************************
+  * File Name          : dma.c
+  * Description        : This file provides code for the configuration
+  *                      of all the requested memory to memory DMA transfers.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "bdma.h"
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/*----------------------------------------------------------------------------*/
+/* Configure DMA                                                              */
+/*----------------------------------------------------------------------------*/
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+
+/** 
+  * Enable DMA controller clock
+  */
+void MX_BDMA_Init(void) 
+{
+
+  /* DMA controller clock enable */
+  __HAL_RCC_BDMA_CLK_ENABLE();
+
+  /* DMA interrupt init */
+  /* BDMA_Channel0_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(BDMA_Channel0_IRQn, 0, 0);
+  HAL_NVIC_EnableIRQ(BDMA_Channel0_IRQn);
+  /* BDMA_Channel1_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(BDMA_Channel1_IRQn, 0, 0);
+  HAL_NVIC_EnableIRQ(BDMA_Channel1_IRQn);
+
+}
+
+/* USER CODE BEGIN 2 */
+
+/* USER CODE END 2 */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Src/bsp_driver_sd.c
@@ -1,0 +1,307 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file    bsp_driver_sd.c for H7 (based on stm32h743i_eval_sd.c)
+ * @brief   This file includes a generic uSD card driver.
+ *          To be completed by the user according to the board used for the project.
+ * @note    Functions generated as weak: they can be overriden by
+ *          - code in user files
+ *          - or BSP code from the FW pack files
+ *          if such files are added to the generated project (by the user).
+ ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* USER CODE BEGIN FirstSection */
+/* can be used to modify / undefine following code or add new definitions */
+/* USER CODE END FirstSection */
+/* Includes ------------------------------------------------------------------*/
+#include "bsp_driver_sd.h"
+
+/* Extern variables ---------------------------------------------------------*/ 
+  
+extern SD_HandleTypeDef hsd1;
+
+/* USER CODE BEGIN BeforeInitSection */
+/* can be used to modify / undefine following code or add code */
+/* USER CODE END BeforeInitSection */
+/**
+  * @brief  Initializes the SD card device.
+  * @retval SD status
+  */
+__weak uint8_t BSP_SD_Init(void)
+{
+  uint8_t sd_state = MSD_OK;
+  /* Check if the SD card is plugged in the slot */
+  if (BSP_SD_IsDetected() != SD_PRESENT)
+  {
+    return MSD_ERROR_SD_NOT_PRESENT;
+  }
+  /* HAL SD initialization */
+  sd_state = HAL_SD_Init(&hsd1);
+  /* Configure SD Bus width (4 bits mode selected) */
+  if (sd_state == MSD_OK)
+  {
+    /* Enable wide operation */
+    if (HAL_SD_ConfigWideBusOperation(&hsd1, SDMMC_BUS_WIDE_4B) != HAL_OK)
+    {
+      sd_state = MSD_ERROR;
+    }
+  }
+
+  return sd_state;
+}
+/* USER CODE BEGIN AfterInitSection */
+/* can be used to modify previous code / undefine following code / add code */
+/* USER CODE END AfterInitSection */
+
+/* USER CODE BEGIN InterruptMode */
+/**
+  * @brief  Configures Interrupt mode for SD detection pin.
+  * @retval Returns 0
+  */
+__weak uint8_t BSP_SD_ITConfig(void)
+{  
+  /* Code to be updated by the user or replaced by one from the FW pack (in a stmxxxx_sd.c file) */
+  
+  return (uint8_t)0;
+}
+
+/* USER CODE END InterruptMode */
+
+/* USER CODE BEGIN BeforeReadBlocksSection */
+/* can be used to modify previous code / undefine following code / add code */
+/* USER CODE END BeforeReadBlocksSection */
+/**
+  * @brief  Reads block(s) from a specified address in an SD card, in polling mode.
+  * @param  pData: Pointer to the buffer that will contain the data to transmit
+  * @param  ReadAddr: Address from where data is to be read
+  * @param  NumOfBlocks: Number of SD blocks to read
+  * @param  Timeout: Timeout for read operation
+  * @retval SD status
+  */
+__weak uint8_t BSP_SD_ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t Timeout)
+{
+  uint8_t sd_state = MSD_OK;
+
+  if (HAL_SD_ReadBlocks(&hsd1, (uint8_t *)pData, ReadAddr, NumOfBlocks, Timeout) != HAL_OK)
+  {
+    sd_state = MSD_ERROR;
+  }
+
+  return sd_state;  
+}
+
+/* USER CODE BEGIN BeforeWriteBlocksSection */
+/* can be used to modify previous code / undefine following code / add code */
+/* USER CODE END BeforeWriteBlocksSection */
+/**
+  * @brief  Writes block(s) to a specified address in an SD card, in polling mode. 
+  * @param  pData: Pointer to the buffer that will contain the data to transmit
+  * @param  WriteAddr: Address from where data is to be written
+  * @param  NumOfBlocks: Number of SD blocks to write
+  * @param  Timeout: Timeout for write operation
+  * @retval SD status
+  */
+__weak uint8_t BSP_SD_WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32_t Timeout)
+{
+  uint8_t sd_state = MSD_OK;
+
+  if (HAL_SD_WriteBlocks(&hsd1, (uint8_t *)pData, WriteAddr, NumOfBlocks, Timeout) != HAL_OK) 
+  {
+    sd_state = MSD_ERROR;
+  }
+
+  return sd_state;  
+}
+
+/* USER CODE BEGIN BeforeReadDMABlocksSection */
+/* can be used to modify previous code / undefine following code / add code */
+/* USER CODE END BeforeReadDMABlocksSection */
+/**
+  * @brief  Reads block(s) from a specified address in an SD card, in DMA mode.
+  * @param  pData: Pointer to the buffer that will contain the data to transmit
+  * @param  ReadAddr: Address from where data is to be read
+  * @param  NumOfBlocks: Number of SD blocks to read 
+  * @retval SD status
+  */
+__weak uint8_t BSP_SD_ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks)
+{
+  uint8_t sd_state = MSD_OK;
+  
+  /* Read block(s) in DMA transfer mode */
+  if (HAL_SD_ReadBlocks_DMA(&hsd1, (uint8_t *)pData, ReadAddr, NumOfBlocks) != HAL_OK)
+  {
+    sd_state = MSD_ERROR;
+  }
+  
+  return sd_state; 
+}
+
+/* USER CODE BEGIN BeforeWriteDMABlocksSection */
+/* can be used to modify previous code / undefine following code / add code */
+/* USER CODE END BeforeWriteDMABlocksSection */
+/**
+  * @brief  Writes block(s) to a specified address in an SD card, in DMA mode.
+  * @param  pData: Pointer to the buffer that will contain the data to transmit
+  * @param  WriteAddr: Address from where data is to be written
+  * @param  NumOfBlocks: Number of SD blocks to write 
+  * @retval SD status
+  */
+__weak uint8_t BSP_SD_WriteBlocks_DMA(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks)
+{
+  uint8_t sd_state = MSD_OK;
+  
+  /* Write block(s) in DMA transfer mode */
+  if (HAL_SD_WriteBlocks_DMA(&hsd1, (uint8_t *)pData, WriteAddr, NumOfBlocks) != HAL_OK)
+  {
+    sd_state = MSD_ERROR;
+  }
+  
+  return sd_state; 
+}
+
+/* USER CODE BEGIN BeforeEraseSection */
+/* can be used to modify previous code / undefine following code / add code */
+/* USER CODE END BeforeEraseSection */
+/**
+  * @brief  Erases the specified memory area of the given SD card. 
+  * @param  StartAddr: Start byte address
+  * @param  EndAddr: End byte address
+  * @retval SD status
+  */
+__weak uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr)
+{
+  uint8_t sd_state = MSD_OK;
+
+  if (HAL_SD_Erase(&hsd1, StartAddr, EndAddr) != HAL_OK)  
+  {
+    sd_state = MSD_ERROR;
+  }
+
+  return sd_state; 
+}
+
+/* USER CODE BEGIN BeforeGetCardStateSection */
+/* can be used to modify previous code / undefine following code / add code */
+/* USER CODE END BeforeGetCardStateSection */
+
+/**
+  * @brief  Gets the current SD card data status.
+  * @param  None
+  * @retval Data transfer state.
+  *          This value can be one of the following values:
+  *            @arg  SD_TRANSFER_OK: No data transfer is acting
+  *            @arg  SD_TRANSFER_BUSY: Data transfer is acting
+  */
+__weak uint8_t BSP_SD_GetCardState(void)
+{
+  return ((HAL_SD_GetCardState(&hsd1) == HAL_SD_CARD_TRANSFER ) ? SD_TRANSFER_OK : SD_TRANSFER_BUSY);
+}
+
+/**
+  * @brief  Get SD information about specific SD card.
+  * @param  CardInfo: Pointer to HAL_SD_CardInfoTypedef structure
+  * @retval None 
+  */
+__weak void BSP_SD_GetCardInfo(HAL_SD_CardInfoTypeDef *CardInfo)
+{
+  /* Get SD card Information */
+  HAL_SD_GetCardInfo(&hsd1, CardInfo);
+}
+
+/* USER CODE BEGIN BeforeCallBacksSection */
+/* can be used to modify previous code / undefine following code / add code */
+/* USER CODE END BeforeCallBacksSection */
+/**
+  * @brief SD Abort callbacks
+  * @param hsd: SD handle
+  * @retval None
+  */
+__weak void HAL_SD_AbortCallback(SD_HandleTypeDef *hsd)
+{
+  BSP_SD_AbortCallback();
+}
+
+/**
+  * @brief Tx Transfer completed callback
+  * @param hsd: SD handle
+  * @retval None
+  */
+__weak void HAL_SD_TxCpltCallback(SD_HandleTypeDef *hsd)
+{
+  BSP_SD_WriteCpltCallback();
+}
+
+/**
+  * @brief Rx Transfer completed callback
+  * @param hsd: SD handle
+  * @retval None
+  */
+__weak void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd)
+{
+  BSP_SD_ReadCpltCallback();
+}
+
+/* USER CODE BEGIN CallBacksSection_C */
+/**
+  * @brief BSP SD Abort callback
+  * @retval None
+  */
+__weak void BSP_SD_AbortCallback(void)
+{
+
+}
+
+/**
+  * @brief BSP Tx Transfer completed callback
+  * @retval None
+  */
+__weak void BSP_SD_WriteCpltCallback(void)
+{
+
+}
+
+/**
+  * @brief BSP Rx Transfer completed callback
+  * @retval None
+  */
+__weak void BSP_SD_ReadCpltCallback(void)
+{
+
+}
+/* USER CODE END CallBacksSection_C */
+
+/**
+ * @brief  Detects if SD card is correctly plugged in the memory slot or not.
+ * @param  None
+ * @retval Returns if SD is detected or not
+ */
+__weak uint8_t BSP_SD_IsDetected(void)
+{
+  __IO uint8_t status = SD_PRESENT;
+
+  if (BSP_PlatformIsDetected() == 0x0) 
+  {
+    status = SD_NOT_PRESENT;
+  }
+
+  return status;
+}
+
+/* USER CODE BEGIN AdditionalCode */
+/* user code can be inserted here */
+/* USER CODE END AdditionalCode */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Src/codec.c
@@ -1,0 +1,125 @@
+#include "codec.h"
+#include "main.h"
+#include "gpio.h"
+#include "audiostream.h"
+
+uint16_t i2cDataSize = 2;
+uint8_t myI2cData[2] = {0,0};
+uint32_t I2Ctimeout = 2000;
+
+//Settings for CS4271
+// translated from the datasheet by JS
+
+// 01h mode control 1
+//
+// M1 M0 ratio1 ratio0 m/s dac_dif2 dac_dif1 dac_dif0   // unsure if setting bit selects master means 1
+// for 48k == 0 1 0 0 0 0 0 1    ( ratio bit chosen as 0 0 based on assumption of 256X master clock)
+// == 0x41
+// for 96k == 1 0 0 0 0 0 0 1    ( ratio bit chosen as 0 0 based on assumption of <= 256X master clock)
+// == 0x81
+// for 192k == 1 1 1 0 0 0 0 1   ( ratio bit chosen as 1 0 based on assumption of 256X master clock, choose 0 0 (full word would be 0xc1 instead of 0xe1) instead if using something like 64X)
+// == 0xe1
+
+// 02h DAC control
+// AMUTE, FILT_SEL, DEM1, DEM0, RMP_UP, RMP_DN, INV_A, INV_B
+// 0 0 0 0 1 1 0 0
+// == 0x0c if you want a slow ramp up when the part turns on
+// == 0x00 if you want quick start up (which may click)
+
+// 03h dac volume and mixing
+// (NA) B=A soft zerocross ATAPI3 ATAPI2 ATAPI1 ATAPI0   (B=A makes channel volumes not independent)
+// 0 1 1 1 1 0 0 1  (the last four bits set channel L to go to output A and channel R to go to output B, but this is easily changed with mixing or reversal)
+// == 0x79
+//or without soft ramp for any programmed volume changes // == 0x39
+
+// 04h Volume A
+// MUTE vol6 vol5 vol4 vol3 vol2 vol1 vol0
+// 0 0 0 0 0 0 0 0
+// == 0x00
+//or 0x14 for -20db
+
+// 05h Volume B
+// MUTE vol6 vol5 vol4 vol3 vol2 vol1 vol0
+// 0 0 0 0 0 0 0 0
+// == 0x00
+//or 0x14 for -20db
+
+// 06h ADC control
+// (NA) (NA) Dither16 ADC_DIF MUTEA MUTEB HPFDisableA HPFDisableB
+// 0 0 0 1 0 0 0 0
+// ==0x10
+
+// 07h mode control 2
+// (NA) (NA) (NA) LOOP MUTECA=B FREEZE CPEN PDN
+// for power down version == 0 0 0 0 0 0 1 1
+// == 0x03
+// to send dry ADC input into DAC (it seems this will mute the normal DAC output) == 0 0 0 1 0 0 1 0
+// == 0x12
+// for normal operation == 0 0 0 0 0 0 1 0
+// == 0x02
+
+HAL_StatusTypeDef testVal;
+
+
+volatile int blankCount = 0;
+uint16_t addressCounter = 0;
+
+
+void AudioCodec_init(I2C_HandleTypeDef* hi2c) {
+
+	//pull codec reset pin high to start codec working
+	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_SET);
+
+	HAL_Delay(2);
+	//enable control port and put part in power-down mode while loading registers
+	myI2cData[0] = 0x07;
+	myI2cData[1] = 0x03;
+	testVal = HAL_I2C_Master_Transmit(hi2c, CODEC_I2C_ADDRESS, myI2cData, i2cDataSize, I2Ctimeout);
+	//HAL_Delay(2);
+
+	myI2cData[0] = 0x01;
+	myI2cData[1] = 0x41;
+	testVal = HAL_I2C_Master_Transmit(hi2c, CODEC_I2C_ADDRESS, myI2cData, i2cDataSize, I2Ctimeout);
+
+	//HAL_Delay(1); // might not be necessary
+
+	myI2cData[0] = 0x02;
+	myI2cData[1] = 0x00;
+	testVal = HAL_I2C_Master_Transmit(hi2c, CODEC_I2C_ADDRESS, myI2cData, i2cDataSize, I2Ctimeout);
+
+	//HAL_Delay(1); // might not be necessary
+
+	myI2cData[0] = 0x03;
+	myI2cData[1] = 0x79;
+	testVal = HAL_I2C_Master_Transmit(hi2c, CODEC_I2C_ADDRESS, myI2cData, i2cDataSize, I2Ctimeout);
+
+	//HAL_Delay(1); // might not be necessary
+
+	myI2cData[0] = 0x04;
+	myI2cData[1] = 0x01;
+	testVal = HAL_I2C_Master_Transmit(hi2c, CODEC_I2C_ADDRESS, myI2cData, i2cDataSize, I2Ctimeout);
+
+	//HAL_Delay(1); // might not be necessary
+
+	myI2cData[0] = 0x05;
+	myI2cData[1] = 0x01;
+	testVal = HAL_I2C_Master_Transmit(hi2c, CODEC_I2C_ADDRESS, myI2cData, i2cDataSize, I2Ctimeout);
+
+	//HAL_Delay(1); // might not be necessary
+
+	myI2cData[0] = 0x06;
+	myI2cData[1] = 0x10;
+	testVal = HAL_I2C_Master_Transmit(hi2c, CODEC_I2C_ADDRESS, myI2cData, i2cDataSize, I2Ctimeout);
+
+	//HAL_Delay(1); // might not be necessary
+
+	//turn off power down bit to start things cookin'
+	myI2cData[0] = 0x07;
+	myI2cData[1] = 0x02;
+	HAL_I2C_Master_Transmit(hi2c, CODEC_I2C_ADDRESS, myI2cData, i2cDataSize, I2Ctimeout);
+
+
+	//HAL_Delay(1); // might not be necessary
+	codecReady = 1;
+
+}
--- /dev/null
+++ b/LEAF/Src/debug.c
@@ -1,0 +1,37 @@
+/**
+  ******************************************************************************
+  * File Name          : DEBUG.c
+  * Description        : This file provides code for the configuration
+  *                      of the DEBUG instances.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "debug.h"
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/* DEBUG init function */
+void MX_DEBUG_Init(void)
+{
+
+}
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Src/dma.c
@@ -1,0 +1,72 @@
+/**
+  ******************************************************************************
+  * File Name          : dma.c
+  * Description        : This file provides code for the configuration
+  *                      of all the requested memory to memory DMA transfers.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "dma.h"
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/*----------------------------------------------------------------------------*/
+/* Configure DMA                                                              */
+/*----------------------------------------------------------------------------*/
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+
+/** 
+  * Enable DMA controller clock
+  */
+void MX_DMA_Init(void) 
+{
+
+  /* DMA controller clock enable */
+  __HAL_RCC_DMA1_CLK_ENABLE();
+
+  /* DMA interrupt init */
+  /* DMA1_Stream0_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(DMA1_Stream0_IRQn, 5, 0);
+  HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn);
+  /* DMA1_Stream1_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 2, 0);
+  HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
+  /* DMA1_Stream2_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(DMA1_Stream2_IRQn, 2, 0);
+  HAL_NVIC_EnableIRQ(DMA1_Stream2_IRQn);
+  /* DMAMUX1_OVR_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(DMAMUX1_OVR_IRQn, 0, 0);
+  HAL_NVIC_EnableIRQ(DMAMUX1_OVR_IRQn);
+
+}
+
+/* USER CODE BEGIN 2 */
+
+/* USER CODE END 2 */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Src/eeprom.c
@@ -1,0 +1,718 @@
+
+
+/** @addtogroup EEPROM_Emulation
+  * @{
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "eeprom.h"
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+
+/* Global variable used to store variable value in read sequence */
+uint16_t DataVar = 0;
+
+/* Virtual address defined by the user: 0xFFFF value is prohibited */
+
+uint16_t VirtAddVarTab[NB_OF_VAR] = {0x5555, 0x6666, 0x7777};
+uint32_t Address = 0;
+/* Private function prototypes -----------------------------------------------*/
+/* Private functions ---------------------------------------------------------*/
+static HAL_StatusTypeDef EE_Format(void);
+static uint16_t EE_FindValidPage(uint8_t Operation);
+static uint16_t EE_VerifyPageFullWriteVariable(uint16_t VirtAddress, uint16_t Data);
+static uint16_t EE_PageTransfer(uint16_t VirtAddress, uint16_t Data);
+static uint16_t EE_VerifyPageFullyErased(uint32_t Address);
+
+/**
+  * @brief  Restore the pages to a known good state in case of page's status
+  *   corruption after a power loss.
+  * @param  None.
+  * @retval - Flash error code: on write Flash error
+  *         - FLASH_COMPLETE: on success
+  */
+
+uint16_t EE_Init(void)
+{
+  uint16_t PageStatus0 = 6, PageStatus1 = 6;
+  uint16_t VarIdx = 0;
+  uint16_t EepromStatus = 0, ReadStatus = 0;
+  int16_t x = -1;
+  HAL_StatusTypeDef  FlashStatus;
+  uint32_t SectorError = 0;
+  FLASH_EraseInitTypeDef pEraseInit;
+  uint32_t valid[8] = {0x0000};
+
+  /* Get Page0 status */
+  PageStatus0 = (*(__IO uint16_t*)PAGE0_BASE_ADDRESS);
+  /* Get Page1 status */
+  PageStatus1 = (*(__IO uint16_t*)PAGE1_BASE_ADDRESS);
+
+  pEraseInit.TypeErase = TYPEERASE_SECTORS;
+  pEraseInit.Banks = FLASH_BANK_2 ;
+  pEraseInit.Sector = PAGE0_ID;
+  pEraseInit.NbSectors = 1;
+  pEraseInit.VoltageRange = VOLTAGE_RANGE;
+
+  /* Check for invalid header states and repair if necessary */
+  switch (PageStatus0)
+  {
+    case ERASED:
+      if (PageStatus1 == VALID_PAGE) /* Page0 erased, Page1 valid */
+      {
+          /* Erase Page0 */
+        if(!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS))
+        {
+          FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
+          /* If erase operation was failed, a Flash error code is returned */
+          if (FlashStatus != HAL_OK)
+          {
+            return FlashStatus;
+          }
+        }
+      }
+      else if (PageStatus1 == RECEIVE_DATA) /* Page0 erased, Page1 receive */
+      {
+        /* Erase Page0 */
+        if(!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS))
+        {
+          FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
+          /* If erase operation was failed, a Flash error code is returned */
+          if (FlashStatus != HAL_OK)
+          {
+            return FlashStatus;
+          }
+        }
+        /* Mark Page1 as valid */
+        FlashStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, PAGE1_BASE_ADDRESS, ((uint32_t)valid));
+
+        /* If program operation was failed, a Flash error code is returned */
+        if (FlashStatus != HAL_OK)
+        {
+          return FlashStatus;
+        }
+      }
+      else /* First EEPROM access (Page0&1 are erased) or invalid state -> format EEPROM */
+      {
+        /* Erase both Page0 and Page1 and set Page0 as valid page */
+        FlashStatus = EE_Format();
+        /* If erase/program operation was failed, a Flash error code is returned */
+        if (FlashStatus != HAL_OK)
+        {
+          return FlashStatus;
+        }
+      }
+      break;
+
+    case RECEIVE_DATA:
+      if (PageStatus1 == VALID_PAGE) /* Page0 receive, Page1 valid */
+      {
+        /* Transfer data from Page1 to Page0 */
+        for (VarIdx = 0; VarIdx < NB_OF_VAR; VarIdx++)
+        {
+          if (( *(__IO uint16_t*)(PAGE0_BASE_ADDRESS + 6)) == VirtAddVarTab[VarIdx])
+          {
+            x = VarIdx;
+          }
+          if (VarIdx != x)
+          {
+            /* Read the last variables' updates */
+            ReadStatus = EE_ReadVariable(VirtAddVarTab[VarIdx], &DataVar);
+            /* In case variable corresponding to the virtual address was found */
+            if (ReadStatus != 0x1)
+            {
+              /* Transfer the variable to the Page0 */
+              EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddVarTab[VarIdx], DataVar);
+              /* If program operation was failed, a Flash error code is returned */
+              if (EepromStatus != HAL_OK)
+              {
+                return EepromStatus;
+              }
+            }
+          }
+        }
+        /* Mark Page0 as valid */
+        FlashStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, PAGE0_BASE_ADDRESS, ((uint32_t)valid));
+
+        /* If program operation was failed, a Flash error code is returned */
+        if (FlashStatus != HAL_OK)
+        {
+          return FlashStatus;
+        }
+        pEraseInit.Sector = PAGE1_ID;
+        pEraseInit.Banks = FLASH_BANK_2 ;
+        pEraseInit.NbSectors = 1;
+        pEraseInit.VoltageRange = VOLTAGE_RANGE;
+        /* Erase Page1 */
+        if(!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS))
+        {
+          FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
+          /* If erase operation was failed, a Flash error code is returned */
+          if (FlashStatus != HAL_OK)
+          {
+            return FlashStatus;
+          }
+        }
+      }
+      else if (PageStatus1 == ERASED) /* Page0 receive, Page1 erased */
+      {
+        pEraseInit.Sector = PAGE1_ID;
+        pEraseInit.Banks = FLASH_BANK_1 ;
+        pEraseInit.NbSectors = 1;
+        pEraseInit.VoltageRange = VOLTAGE_RANGE;
+        /* Erase Page1 */
+        if(!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS))
+        {
+          FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
+          /* If erase operation was failed, a Flash error code is returned */
+          if (FlashStatus != HAL_OK)
+          {
+            return FlashStatus;
+          }
+        }
+        /* Mark Page0 as valid */
+        FlashStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, PAGE0_BASE_ADDRESS, ((uint32_t)valid));
+        /* If program operation was failed, a Flash error code is returned */
+        if (FlashStatus != HAL_OK)
+        {
+          return FlashStatus;
+        }
+      }
+      else /* Invalid state -> format eeprom */
+      {
+        /* Erase both Page0 and Page1 and set Page0 as valid page */
+        FlashStatus = EE_Format();
+        /* If erase/program operation was failed, a Flash error code is returned */
+        if (FlashStatus != HAL_OK)
+        {
+          return FlashStatus;
+        }
+      }
+      break;
+
+    case VALID_PAGE:
+      if (PageStatus1 == VALID_PAGE) /* Invalid state -> format eeprom */
+      {
+        /* Erase both Page0 and Page1 and set Page0 as valid page */
+        FlashStatus = EE_Format();
+        /* If erase/program operation was failed, a Flash error code is returned */
+        if (FlashStatus != HAL_OK)
+        {
+          return FlashStatus;
+        }
+      }
+      else if (PageStatus1 == ERASED) /* Page0 valid, Page1 erased */
+      {
+        pEraseInit.Sector = PAGE1_ID;
+        pEraseInit.Banks = FLASH_BANK_2 ;
+        pEraseInit.NbSectors = 1;
+        pEraseInit.VoltageRange = VOLTAGE_RANGE;
+        /* Erase Page1 */
+        if(!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS))
+        {
+          FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
+          /* If erase operation was failed, a Flash error code is returned */
+          if (FlashStatus != HAL_OK)
+          {
+            return FlashStatus;
+          }
+        }
+      }
+      else /* Page0 valid, Page1 receive */
+      {
+        /* Transfer data from Page0 to Page1 */
+        for (VarIdx = 0; VarIdx < NB_OF_VAR; VarIdx++)
+        {
+          if ((*(__IO uint16_t*)(PAGE1_BASE_ADDRESS + 6)) == VirtAddVarTab[VarIdx])
+          {
+            x = VarIdx;
+          }
+          if (VarIdx != x)
+          {
+            /* Read the last variables' updates */
+            ReadStatus = EE_ReadVariable(VirtAddVarTab[VarIdx], &DataVar);
+            /* In case variable corresponding to the virtual address was found */
+            if (ReadStatus != 0x1)
+            {
+              /* Transfer the variable to the Page1 */
+              EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddVarTab[VarIdx], DataVar);
+              /* If program operation was failed, a Flash error code is returned */
+              if (EepromStatus != HAL_OK)
+              {
+                return EepromStatus;
+              }
+            }
+          }
+        }
+        /* Mark Page1 as valid */
+        FlashStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, PAGE1_BASE_ADDRESS, ((uint32_t)valid));
+
+        /* If program operation was failed, a Flash error code is returned */
+        if (FlashStatus != HAL_OK)
+        {
+          return FlashStatus;
+        }
+        pEraseInit.Sector = PAGE0_ID;
+        pEraseInit.Banks = FLASH_BANK_2 ;
+        pEraseInit.NbSectors = 1;
+        pEraseInit.VoltageRange = VOLTAGE_RANGE;
+        /* Erase Page0 */
+        if(!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS))
+        {
+          FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
+          /* If erase operation was failed, a Flash error code is returned */
+          if (FlashStatus != HAL_OK)
+          {
+            return FlashStatus;
+          }
+        }
+      }
+      break;
+
+    default:  /* Any other state -> format eeprom */
+      /* Erase both Page0 and Page1 and set Page0 as valid page */
+      FlashStatus = EE_Format();
+      /* If erase/program operation was failed, a Flash error code is returned */
+      if (FlashStatus != HAL_OK)
+      {
+        return FlashStatus;
+      }
+      break;
+  }
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Verify if specified page is fully erased.
+  * @param  Address: page address
+  *   This parameter can be one of the following values:
+  *     @arg PAGE0_BASE_ADDRESS: Page0 base address
+  *     @arg PAGE1_BASE_ADDRESS: Page1 base address
+  * @retval page fully erased status:
+  *           - 0: if Page not erased
+  *           - 1: if Page erased
+  */
+uint16_t EE_VerifyPageFullyErased(uint32_t Address)
+{
+  uint32_t ReadStatus = 1;
+  uint16_t AddressValue = 0x5555;
+
+  /* Check each active page address starting from end */
+  while (Address <= PAGE0_END_ADDRESS)
+  {
+    /* Get the current location content to be compared with virtual address */
+    AddressValue = (*(__IO uint16_t*)Address);
+
+    /* Compare the read address with the virtual address */
+    if (AddressValue != ERASED)
+    {
+
+      /* In case variable value is read, reset ReadStatus flag */
+      ReadStatus = 0;
+
+      break;
+    }
+    /* Next address location */
+    Address = Address + 4;
+  }
+
+  /* Return ReadStatus value: (0: Page not erased, 1: Sector erased) */
+  return ReadStatus;
+}
+
+/**
+  * @brief  Returns the last stored variable data, if found, which correspond to
+  *   the passed virtual address
+  * @param  VirtAddress: Variable virtual address
+  * @param  Data: Global variable contains the read variable value
+  * @retval Success or error status:
+  *           - 0: if variable was found
+  *           - 1: if the variable was not found
+  *           - NO_VALID_PAGE: if no valid page was found.
+  */
+uint16_t EE_ReadVariable(uint16_t VirtAddress, uint16_t* Data)
+{
+  uint16_t ValidPage = PAGE0;
+  uint16_t AddressValue = 0x5555, ReadStatus = 1;
+  uint32_t Address = EEPROM_START_ADDRESS, PageStartAddress = EEPROM_START_ADDRESS;
+
+  /* Get active Page for read operation */
+  ValidPage = EE_FindValidPage(READ_FROM_VALID_PAGE);
+
+  /* Check if there is no valid page */
+  if (ValidPage == NO_VALID_PAGE)
+  {
+    return  NO_VALID_PAGE;
+  }
+
+  /* Get the valid Page start Address */
+  PageStartAddress = (uint32_t)(EEPROM_START_ADDRESS + (uint32_t)(ValidPage * PAGE_SIZE));
+
+  /* Get the valid Page end Address */
+  Address = (uint32_t)((EEPROM_START_ADDRESS - 32) + (uint32_t)((1 + ValidPage) * PAGE_SIZE));
+
+  /* Check each active page address starting from end */
+  while (Address > (PageStartAddress + 32))
+  {
+    /* Get the current location content to be compared with virtual address */
+    AddressValue = (*(__IO uint16_t*)Address);
+
+    /* Compare the read address with the virtual address */
+    if (AddressValue == VirtAddress)
+    {
+      /* Get content of Address-2 which is variable value */
+      *Data = (*(__IO uint16_t*)(Address - 32));
+
+      /* In case variable value is read, reset ReadStatus flag */
+      ReadStatus = 0;
+
+      break;
+    }
+    else
+    {
+      /* Next address location */
+      Address = Address - 32;
+    }
+  }
+
+  /* Return ReadStatus value: (0: variable exist, 1: variable doesn't exist) */
+  return ReadStatus;
+}
+
+/**
+  * @brief  Writes/upadtes variable data in EEPROM.
+  * @param  VirtAddress: Variable virtual address
+  * @param  Data: 16 bit data to be written
+  * @retval Success or error status:
+  *           - FLASH_COMPLETE: on success
+  *           - PAGE_FULL: if valid page is full
+  *           - NO_VALID_PAGE: if no valid page was found
+  *           - Flash error code: on write Flash error
+  */
+uint16_t EE_WriteVariable(uint16_t VirtAddress, uint16_t Data)
+{
+  uint16_t Status = 0;
+
+  /* Write the variable virtual address and value in the EEPROM */
+  Status = EE_VerifyPageFullWriteVariable(VirtAddress, Data);
+
+  /* In case the EEPROM active page is full */
+  if (Status == PAGE_FULL)
+  {
+    /* Perform Page transfer */
+    Status = EE_PageTransfer(VirtAddress, Data);
+  }
+
+  /* Return last operation status */
+  return Status;
+}
+
+/**
+  * @brief  Erases PAGE and PAGE1 and writes VALID_PAGE header to PAGE
+  * @param  None
+  * @retval Status of the last operation (Flash write or erase) done during
+  *         EEPROM formating
+  */
+static HAL_StatusTypeDef EE_Format(void)
+{
+  HAL_StatusTypeDef FlashStatus = HAL_OK;
+  uint32_t SectorError = 0;
+  FLASH_EraseInitTypeDef pEraseInit;
+  uint32_t valid[8] = {0x0000};
+
+  pEraseInit.TypeErase = FLASH_TYPEERASE_SECTORS;
+  pEraseInit.Banks = FLASH_BANK_2 ;
+  pEraseInit.Sector = PAGE0_ID;
+  pEraseInit.NbSectors = 1;
+  pEraseInit.VoltageRange = VOLTAGE_RANGE;
+
+  /* Erase Page0 */
+  if(!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS))
+  {
+    FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
+    /* If erase operation was failed, a Flash error code is returned */
+    if (FlashStatus != HAL_OK)
+    {
+      return FlashStatus;
+    }
+  }
+
+  /* Set Page0 as valid page: Write VALID_PAGE at Page0 base address */
+  FlashStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, PAGE0_BASE_ADDRESS,((uint32_t)valid));
+
+  /* If program operation was failed, a Flash error code is returned */
+  if (FlashStatus != HAL_OK)
+  {
+    return FlashStatus;
+  }
+
+  pEraseInit.Sector = PAGE1_ID;
+  /* Erase Page1 */
+  if(!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS))
+  {
+    FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
+    /* If erase operation was failed, a Flash error code is returned */
+    if (FlashStatus != HAL_OK)
+    {
+      return FlashStatus;
+    }
+  }
+
+  return HAL_OK;
+}
+
+/**
+  * @brief  Find valid Page for write or read operation
+  * @param  Operation: operation to achieve on the valid page.
+  *   This parameter can be one of the following values:
+  *     @arg READ_FROM_VALID_PAGE: read operation from valid page
+  *     @arg WRITE_IN_VALID_PAGE: write operation from valid page
+  * @retval Valid page number (PAGE or PAGE1) or NO_VALID_PAGE in case
+  *   of no valid page was found
+  */
+static uint16_t EE_FindValidPage(uint8_t Operation)
+{
+  uint16_t PageStatus0 = 6, PageStatus1 = 6;
+
+  /* Get Page0 actual status */
+  PageStatus0 = (*(__IO uint16_t*)PAGE0_BASE_ADDRESS);
+
+  /* Get Page1 actual status */
+  PageStatus1 = (*(__IO uint16_t*)PAGE1_BASE_ADDRESS);
+
+  /* Write or read operation */
+  switch (Operation)
+  {
+    case WRITE_IN_VALID_PAGE:   /* ---- Write operation ---- */
+      if (PageStatus1 == VALID_PAGE)
+      {
+        /* Page0 receiving data */
+        if (PageStatus0 == RECEIVE_DATA)
+        {
+          return PAGE0;         /* Page0 valid */
+        }
+        else
+        {
+          return PAGE1;         /* Page1 valid */
+        }
+      }
+      else if (PageStatus0 == VALID_PAGE)
+      {
+        /* Page1 receiving data */
+        if (PageStatus1 == RECEIVE_DATA)
+        {
+          return PAGE1;         /* Page1 valid */
+        }
+        else
+        {
+          return PAGE0;         /* Page0 valid */
+        }
+      }
+      else
+      {
+        return NO_VALID_PAGE;   /* No valid Page */
+      }
+
+    case READ_FROM_VALID_PAGE:  /* ---- Read operation ---- */
+      if (PageStatus0 == VALID_PAGE)
+      {
+        return PAGE0;           /* Page0 valid */
+      }
+      else if (PageStatus1 == VALID_PAGE)
+      {
+        return PAGE1;           /* Page1 valid */
+      }
+      else
+      {
+        return NO_VALID_PAGE ;  /* No valid Page */
+      }
+
+    default:
+      return PAGE0;             /* Page0 valid */
+  }
+}
+
+/**
+  * @brief  Verify if active page is full and Writes variable in EEPROM.
+  * @param  VirtAddress: 16 bit virtual address of the variable
+  * @param  Data: 16 bit data to be written as variable value
+  * @retval Success or error status:
+  *           - FLASH_COMPLETE: on success
+  *           - PAGE_FULL: if valid page is full
+  *           - NO_VALID_PAGE: if no valid page was found
+  *           - Flash error code: on write Flash error
+  */
+static uint16_t EE_VerifyPageFullWriteVariable(uint16_t VirtAddress, uint16_t Data)
+{
+  HAL_StatusTypeDef FlashStatus = HAL_OK;
+  uint16_t ValidPage = PAGE0;
+  uint32_t Address = EEPROM_START_ADDRESS, PageEndAddress = EEPROM_START_ADDRESS+PAGE_SIZE;
+
+  uint32_t data32[8] = {Data};
+  uint32_t VirtAddress1[8] = {VirtAddress};
+  /* Get valid Page for write operation */
+  ValidPage = EE_FindValidPage(WRITE_IN_VALID_PAGE);
+
+  /* Check if there is no valid page */
+  if (ValidPage == NO_VALID_PAGE)
+  {
+    return  NO_VALID_PAGE;
+  }
+
+  /* Get the valid Page start Address */
+  Address = (uint32_t)(EEPROM_START_ADDRESS + (uint32_t)(ValidPage * PAGE_SIZE));
+
+  /* Get the valid Page end Address */
+  PageEndAddress = (uint32_t)((EEPROM_START_ADDRESS - 1) + (uint32_t)((ValidPage + 1) * PAGE_SIZE));
+
+  /* Check each active page address starting from begining */
+  while (Address < PageEndAddress)
+  {
+    /* Verify if Address and Address+2 contents are 0xFFFFFFFF */
+    if ((*(__IO uint32_t*)Address) == 0xFFFFFFFF)
+    {
+      /* Set variable data */
+      FlashStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, Address, ((uint32_t)data32));
+
+      /* If program operation was failed, a Flash error code is returned */
+      if (FlashStatus != HAL_OK)
+      {
+        return FlashStatus;
+      }
+      /* Set variable virtual address */
+     FlashStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, Address + 32, ((uint32_t)VirtAddress1));
+
+      /* Return program operation status */
+     return FlashStatus;
+    }
+    else
+    {
+      /* Next address location */
+      Address = Address + 64;
+    }
+  }
+
+  /* Return PAGE_FULL in case the valid page is full */
+  return PAGE_FULL;
+}
+
+/**
+  * @brief  Transfers last updated variables data from the full Page to
+  *   an empty one.
+  * @param  VirtAddress: 16 bit virtual address of the variable
+  * @param  Data: 16 bit data to be written as variable value
+  * @retval Success or error status:
+  *           - FLASH_COMPLETE: on success
+  *           - PAGE_FULL: if valid page is full
+  *           - NO_VALID_PAGE: if no valid page was found
+  *           - Flash error code: on write Flash error
+  */
+static uint16_t EE_PageTransfer(uint16_t VirtAddress, uint16_t Data)
+{
+  HAL_StatusTypeDef FlashStatus = HAL_OK;
+  uint32_t NewPageAddress = EEPROM_START_ADDRESS;
+  uint16_t OldPageId=0;
+  uint16_t ValidPage = PAGE0, VarIdx = 0;
+  uint16_t EepromStatus = 0, ReadStatus = 0;
+  uint32_t SectorError = 0;
+  FLASH_EraseInitTypeDef pEraseInit;
+  uint32_t valid[8] = {0x0000};
+  uint32_t receive[8] = {0xEEEE};
+  /* Get active Page for read operation */
+  ValidPage = EE_FindValidPage(READ_FROM_VALID_PAGE);
+
+  if (ValidPage == PAGE1)       /* Page1 valid */
+  {
+    /* New page address where variable will be moved to */
+    NewPageAddress = PAGE0_BASE_ADDRESS;
+
+    /* Old page ID where variable will be taken from */
+    OldPageId = PAGE1_ID;
+  }
+  else if (ValidPage == PAGE0)  /* Page0 valid */
+  {
+    /* New page address  where variable will be moved to */
+    NewPageAddress = PAGE1_BASE_ADDRESS;
+
+    /* Old page ID where variable will be taken from */
+    OldPageId = PAGE0_ID;
+  }
+  else
+  {
+    return NO_VALID_PAGE;       /* No valid Page */
+  }
+
+  /* Set the new Page status to RECEIVE_DATA status */
+
+  FlashStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, NewPageAddress, ((uint32_t)receive));
+
+  /* If program operation was failed, a Flash error code is returned */
+  if (FlashStatus != HAL_OK)
+  {
+    return FlashStatus;
+  }
+
+  /* Write the variable passed as parameter in the new active page */
+  EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddress, Data);
+  /* If program operation was failed, a Flash error code is returned */
+  if (EepromStatus != HAL_OK)
+  {
+    return EepromStatus;
+  }
+
+  /* Transfer process: transfer variables from old to the new active page */
+  for (VarIdx = 0; VarIdx < NB_OF_VAR; VarIdx++)
+  {
+    if (VirtAddVarTab[VarIdx] != VirtAddress)  /* Check each variable except the one passed as parameter */
+    {
+      /* Read the other last variable updates */
+      ReadStatus = EE_ReadVariable(VirtAddVarTab[VarIdx], &DataVar);
+      /* In case variable corresponding to the virtual address was found */
+      if (ReadStatus != 0x1)
+      {
+        /* Transfer the variable to the new active page */
+        EepromStatus = EE_VerifyPageFullWriteVariable(VirtAddVarTab[VarIdx], DataVar);
+        /* If program operation was failed, a Flash error code is returned */
+        if (EepromStatus != HAL_OK)
+        {
+          return EepromStatus;
+        }
+      }
+    }
+  }
+
+  HAL_FLASH_Unlock();
+
+  /* Clear pending flags (if any) */
+  __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |
+                         FLASH_FLAG_PGSERR | FLASH_FLAG_WRPERR);
+
+  pEraseInit.TypeErase = TYPEERASE_SECTORS;
+  pEraseInit.Banks = FLASH_BANK_2 ;
+  pEraseInit.Sector = OldPageId;
+  pEraseInit.NbSectors = 1;
+  pEraseInit.VoltageRange = VOLTAGE_RANGE;
+
+  /* Erase the old Page: Set old Page status to ERASED status */
+  FlashStatus = HAL_FLASHEx_Erase(&pEraseInit, &SectorError);
+  /* If erase operation was failed, a Flash error code is returned */
+  if (FlashStatus != HAL_OK)
+  {
+    return FlashStatus;
+  }
+
+  /* Set new Page status to VALID_PAGE status */
+  FlashStatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, NewPageAddress, ((uint32_t)valid));
+  /* If program operation was failed, a Flash error code is returned */
+  if (FlashStatus != HAL_OK)
+  {
+    return FlashStatus;
+  }
+
+  /* Return last operation flash status */
+  return FlashStatus;
+}
--- /dev/null
+++ b/LEAF/Src/fatfs.c
@@ -1,0 +1,56 @@
+/**
+  ******************************************************************************
+  * @file   fatfs.c
+  * @brief  Code for fatfs applications
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+
+#include "fatfs.h"
+
+uint8_t retSD;    /* Return value for SD */
+char SDPath[4];   /* SD logical drive path */
+FATFS SDFatFS;    /* File system object for SD logical drive */
+FIL SDFile;       /* File object for SD */
+
+/* USER CODE BEGIN Variables */
+
+/* USER CODE END Variables */    
+
+void MX_FATFS_Init(void) 
+{
+  /*## FatFS: Link the SD driver ###########################*/
+  retSD = FATFS_LinkDriver(&SD_Driver, SDPath);
+
+  /* USER CODE BEGIN Init */
+  /* additional user code for init */     
+  /* USER CODE END Init */
+}
+
+/**
+  * @brief  Gets Time from RTC 
+  * @param  None
+  * @retval Time in DWORD
+  */
+DWORD get_fattime(void)
+{
+  /* USER CODE BEGIN get_fattime */
+  return 0;
+  /* USER CODE END get_fattime */  
+}
+
+/* USER CODE BEGIN Application */
+     
+/* USER CODE END Application */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Src/fatfs_platform.c
@@ -1,0 +1,31 @@
+/**
+  ******************************************************************************
+  * @file           : fatfs_platform.c
+  * @brief          : fatfs_platform source file
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+*/
+#include "fatfs_platform.h"
+
+uint8_t	BSP_PlatformIsDetected(void) {
+    uint8_t status = SD_PRESENT;
+    /* Check SD card detect pin */
+    if(HAL_GPIO_ReadPin(SD_DETECT_GPIO_PORT, SD_DETECT_PIN) != GPIO_PIN_RESET)
+    {
+        status = SD_NOT_PRESENT;
+    }
+    /* USER CODE BEGIN 1 */
+    /* user code can be inserted here */
+    /* USER CODE END 1 */ 
+    return status;
+}  
--- /dev/null
+++ b/LEAF/Src/fmc.c
@@ -1,0 +1,281 @@
+/**
+  ******************************************************************************
+  * File Name          : FMC.c
+  * Description        : This file provides code for the configuration
+  *                      of the FMC peripheral.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "fmc.h"
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+SDRAM_HandleTypeDef hsdram1;
+
+/* FMC initialization function */
+void MX_FMC_Init(void)
+{
+  FMC_SDRAM_TimingTypeDef SdramTiming = {0};
+
+  /** Perform the SDRAM1 memory initialization sequence
+  */
+  hsdram1.Instance = FMC_SDRAM_DEVICE;
+  /* hsdram1.Init */
+  hsdram1.Init.SDBank = FMC_SDRAM_BANK1;
+  hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_9;
+  hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_13;
+  hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16;
+  hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4;
+  hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_2;
+  hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE;
+  hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_3;
+  hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_ENABLE;
+  hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_0;
+  /* SdramTiming */
+  SdramTiming.LoadToActiveDelay = 2;
+  SdramTiming.ExitSelfRefreshDelay = 6;
+  SdramTiming.SelfRefreshTime = 4;
+  SdramTiming.RowCycleDelay = 6;
+  SdramTiming.WriteRecoveryTime = 2;
+  SdramTiming.RPDelay = 2;
+  SdramTiming.RCDDelay = 2;
+
+  if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK)
+  {
+    Error_Handler( );
+  }
+
+  HAL_SetFMCMemorySwappingConfig(FMC_SWAPBMAP_SDRAM_SRAM);
+
+}
+
+static uint32_t FMC_Initialized = 0;
+
+static void HAL_FMC_MspInit(void){
+  /* USER CODE BEGIN FMC_MspInit 0 */
+
+  /* USER CODE END FMC_MspInit 0 */
+  GPIO_InitTypeDef GPIO_InitStruct = {0};
+  if (FMC_Initialized) {
+    return;
+  }
+  FMC_Initialized = 1;
+
+  /* Peripheral clock enable */
+  __HAL_RCC_FMC_CLK_ENABLE();
+  
+  /** FMC GPIO Configuration  
+  PF0   ------> FMC_A0
+  PF1   ------> FMC_A1
+  PF2   ------> FMC_A2
+  PF3   ------> FMC_A3
+  PF4   ------> FMC_A4
+  PF5   ------> FMC_A5
+  PC0   ------> FMC_SDNWE
+  PC2_C   ------> FMC_SDNE0
+  PC3_C   ------> FMC_SDCKE0
+  PF11   ------> FMC_SDNRAS
+  PF12   ------> FMC_A6
+  PF13   ------> FMC_A7
+  PF14   ------> FMC_A8
+  PF15   ------> FMC_A9
+  PG0   ------> FMC_A10
+  PG1   ------> FMC_A11
+  PE7   ------> FMC_D4
+  PE8   ------> FMC_D5
+  PE9   ------> FMC_D6
+  PE10   ------> FMC_D7
+  PE11   ------> FMC_D8
+  PE12   ------> FMC_D9
+  PE13   ------> FMC_D10
+  PE14   ------> FMC_D11
+  PE15   ------> FMC_D12
+  PD8   ------> FMC_D13
+  PD9   ------> FMC_D14
+  PD10   ------> FMC_D15
+  PD14   ------> FMC_D0
+  PD15   ------> FMC_D1
+  PG2   ------> FMC_A12
+  PG4   ------> FMC_BA0
+  PG5   ------> FMC_BA1
+  PG8   ------> FMC_SDCLK
+  PD0   ------> FMC_D2
+  PD1   ------> FMC_D3
+  PG15   ------> FMC_SDNCAS
+  PE0   ------> FMC_NBL0
+  PE1   ------> FMC_NBL1
+  */
+  /* GPIO_InitStruct */
+  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3 
+                          |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_11|GPIO_PIN_12 
+                          |GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
+  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+  GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
+
+  HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
+
+  /* GPIO_InitStruct */
+  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3;
+  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+  GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
+
+  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+  /* GPIO_InitStruct */
+  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_4 
+                          |GPIO_PIN_5|GPIO_PIN_8|GPIO_PIN_15;
+  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+  GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
+
+  HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
+
+  /* GPIO_InitStruct */
+  GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10 
+                          |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14 
+                          |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1;
+  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+  GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
+
+  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
+
+  /* GPIO_InitStruct */
+  GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_14 
+                          |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1;
+  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+  GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
+
+  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
+
+  /* USER CODE BEGIN FMC_MspInit 1 */
+
+  /* USER CODE END FMC_MspInit 1 */
+}
+
+void HAL_SDRAM_MspInit(SDRAM_HandleTypeDef* sdramHandle){
+  /* USER CODE BEGIN SDRAM_MspInit 0 */
+
+  /* USER CODE END SDRAM_MspInit 0 */
+  HAL_FMC_MspInit();
+  /* USER CODE BEGIN SDRAM_MspInit 1 */
+
+  /* USER CODE END SDRAM_MspInit 1 */
+}
+
+static uint32_t FMC_DeInitialized = 0;
+
+static void HAL_FMC_MspDeInit(void){
+  /* USER CODE BEGIN FMC_MspDeInit 0 */
+
+  /* USER CODE END FMC_MspDeInit 0 */
+  if (FMC_DeInitialized) {
+    return;
+  }
+  FMC_DeInitialized = 1;
+  /* Peripheral clock enable */
+  __HAL_RCC_FMC_CLK_DISABLE();
+  
+  /** FMC GPIO Configuration  
+  PF0   ------> FMC_A0
+  PF1   ------> FMC_A1
+  PF2   ------> FMC_A2
+  PF3   ------> FMC_A3
+  PF4   ------> FMC_A4
+  PF5   ------> FMC_A5
+  PC0   ------> FMC_SDNWE
+  PC2_C   ------> FMC_SDNE0
+  PC3_C   ------> FMC_SDCKE0
+  PF11   ------> FMC_SDNRAS
+  PF12   ------> FMC_A6
+  PF13   ------> FMC_A7
+  PF14   ------> FMC_A8
+  PF15   ------> FMC_A9
+  PG0   ------> FMC_A10
+  PG1   ------> FMC_A11
+  PE7   ------> FMC_D4
+  PE8   ------> FMC_D5
+  PE9   ------> FMC_D6
+  PE10   ------> FMC_D7
+  PE11   ------> FMC_D8
+  PE12   ------> FMC_D9
+  PE13   ------> FMC_D10
+  PE14   ------> FMC_D11
+  PE15   ------> FMC_D12
+  PD8   ------> FMC_D13
+  PD9   ------> FMC_D14
+  PD10   ------> FMC_D15
+  PD14   ------> FMC_D0
+  PD15   ------> FMC_D1
+  PG2   ------> FMC_A12
+  PG4   ------> FMC_BA0
+  PG5   ------> FMC_BA1
+  PG8   ------> FMC_SDCLK
+  PD0   ------> FMC_D2
+  PD1   ------> FMC_D3
+  PG15   ------> FMC_SDNCAS
+  PE0   ------> FMC_NBL0
+  PE1   ------> FMC_NBL1
+  */
+
+  HAL_GPIO_DeInit(GPIOF, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3 
+                          |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_11|GPIO_PIN_12 
+                          |GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);
+
+  HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3);
+
+  HAL_GPIO_DeInit(GPIOG, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_4 
+                          |GPIO_PIN_5|GPIO_PIN_8|GPIO_PIN_15);
+
+  HAL_GPIO_DeInit(GPIOE, GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10 
+                          |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14 
+                          |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1);
+
+  HAL_GPIO_DeInit(GPIOD, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_14 
+                          |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1);
+
+  /* USER CODE BEGIN FMC_MspDeInit 1 */
+
+  /* USER CODE END FMC_MspDeInit 1 */
+}
+
+void HAL_SDRAM_MspDeInit(SDRAM_HandleTypeDef* sdramHandle){
+  /* USER CODE BEGIN SDRAM_MspDeInit 0 */
+
+  /* USER CODE END SDRAM_MspDeInit 0 */
+  HAL_FMC_MspDeInit();
+  /* USER CODE BEGIN SDRAM_MspDeInit 1 */
+
+  /* USER CODE END SDRAM_MspDeInit 1 */
+}
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Src/gfx.c
@@ -1,0 +1,983 @@
+/*
+ * gfx.c
+ *  a C port of the Adafruit GFX library
+ *  Created on: Jul 8, 2018
+ *      Author: jeffsnyder
+ */
+
+
+/*
+This is the core graphics library for all our displays, providing a common
+set of graphics primitives (points, lines, circles, etc.).  It needs to be
+paired with a hardware-specific library for each display device we carry
+(to handle the lower-level functions).
+
+Adafruit invests time and resources providing this open source code, please
+support Adafruit & open-source hardware by purchasing products from Adafruit!
+
+Copyright (c) 2013 Adafruit Industries.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+- Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+- Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "stm32h7xx_hal.h"
+#include "gfx.h"
+#include "gfx_font.c"
+#include "main.h"
+
+// Many (but maybe not all) non-AVR board installs define macros
+// for compatibility with existing PROGMEM-reading AVR code.
+// Do our own checks and defines here for good measure...
+
+#ifndef pgm_read_byte
+ #define pgm_read_byte(addr) (*(const unsigned char *)(addr))
+#endif
+#ifndef pgm_read_word
+ #define pgm_read_word(addr) (*(const unsigned short *)(addr))
+#endif
+#ifndef pgm_read_dword
+ #define pgm_read_dword(addr) (*(const unsigned long *)(addr))
+#endif
+
+// Pointers are a peculiar case...typically 16-bit on AVR boards,
+// 32 bits elsewhere.  Try to accommodate both...
+
+
+ #define pgm_read_pointer(addr) ((void *)pgm_read_dword(addr))
+
+
+#ifndef min
+#define min(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#ifndef _swap_int16_t
+#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; }
+#endif
+
+void GFXinit(GFX* myGfx, int16_t w, int16_t h)
+{
+	myGfx->WIDTH = w;
+	myGfx->HEIGHT = h;
+	myGfx->_width    = w;
+	myGfx->_height   = h;
+	myGfx->rotation  = 0;
+	myGfx->cursor_y  = 0;
+	myGfx->cursor_x = 0;
+	myGfx->textsize  = 1;
+	myGfx->textcolor = 0xFFFF;
+	myGfx->textbgcolor = 0xFFFF;
+	myGfx->wrap      = 1;
+	myGfx->_cp437    = 0;
+	myGfx->gfxFont   = NULL;
+}
+
+// Bresenham's algorithm - thx wikpedia
+void GFXwriteLine(GFX* myGFX, int16_t x0, int16_t y0, int16_t x1, int16_t y1,
+        uint16_t color) {
+    int16_t steep = abs(y1 - y0) > abs(x1 - x0);
+    if (steep) {
+        _swap_int16_t(x0, y0);
+        _swap_int16_t(x1, y1);
+    }
+
+    if (x0 > x1) {
+        _swap_int16_t(x0, x1);
+        _swap_int16_t(y0, y1);
+    }
+
+    int16_t dx, dy;
+    dx = x1 - x0;
+    dy = abs(y1 - y0);
+
+    int16_t err = dx / 2;
+    int16_t ystep;
+
+    if (y0 < y1) {
+        ystep = 1;
+    } else {
+        ystep = -1;
+    }
+
+    for (; x0<=x1; x0++) {
+        if (steep) {
+        	GFXwritePixel(myGFX, y0, x0, color);
+        } else {
+        	GFXwritePixel(myGFX, x0, y0, color);
+        }
+        err -= dy;
+        if (err < 0) {
+            y0 += ystep;
+            err += dx;
+        }
+    }
+}
+
+void GFXstartWrite(GFX* myGFX){
+    // Overwrite in subclasses if desired!
+}
+
+// the most basic function, set a single pixel
+void GFXdrawPixel(GFX* myGFX, int16_t x, int16_t y, uint16_t color) {
+  if ((x < 0) || (x >= myGFX->_width) || (y < 0) || (y >= myGFX->_height))
+    return;
+
+  // check rotation, move pixel around if necessary
+  switch (GFXgetRotation(myGFX)) {
+  case 1:
+    _swap_int16_t(x, y);
+    x = myGFX->WIDTH - x - 1;
+    break;
+  case 2:
+    x = myGFX->WIDTH - x - 1;
+    y = myGFX->HEIGHT - y - 1;
+    break;
+  case 3:
+	_swap_int16_t(x, y);
+    y = myGFX->HEIGHT - y - 1;
+    break;
+  }
+
+  // x is which column
+    switch (color)
+    {
+      case WHITE:   buffer[x+ (y/8)*myGFX->WIDTH] |=  (1 << (y&7)); break;
+      case BLACK:   buffer[x+ (y/8)*myGFX->WIDTH] &= ~(1 << (y&7)); break;
+      case INVERSE: buffer[x+ (y/8)*myGFX->WIDTH] ^=  (1 << (y&7)); break;
+    }
+
+}
+
+void GFXwritePixel(GFX* myGFX,int16_t x, int16_t y, uint16_t color){
+    // Overwrite in subclasses if startWrite is defined!
+    GFXdrawPixel(myGFX, x, y, color);
+}
+
+// (x,y) is topmost point; if unsure, calling function
+// should sort endpoints or call writeLine() instead
+void GFXwriteFastVLine(GFX* myGFX,int16_t x, int16_t y,
+        int16_t h, uint16_t color) {
+    // Overwrite in subclasses if startWrite is defined!
+    // Can be just writeLine(x, y, x, y+h-1, color);
+    // or writeFillRect(x, y, 1, h, color);
+    GFXdrawFastVLine(myGFX, x, y, h, color);
+}
+
+// (x,y) is leftmost point; if unsure, calling function
+// should sort endpoints or call writeLine() instead
+void GFXwriteFastHLine(GFX* myGFX, int16_t x, int16_t y,
+        int16_t w, uint16_t color) {
+    // Overwrite in subclasses if startWrite is defined!
+    // Example: writeLine(x, y, x+w-1, y, color);
+    // or writeFillRect(x, y, w, 1, color);
+    GFXdrawFastHLine(myGFX,x, y, w, color);
+}
+
+void GFXwriteFillRect(GFX* myGFX,int16_t x, int16_t y, int16_t w, int16_t h,
+        uint16_t color) {
+    // Overwrite in subclasses if desired!
+    GFXfillRect(myGFX,x,y,w,h,color);
+}
+
+void GFXendWrite(GFX* myGFX){
+    // Overwrite in subclasses if startWrite is defined!
+}
+
+// (x,y) is topmost point; if unsure, calling function
+// should sort endpoints or call drawLine() instead
+void GFXdrawFastVLine(GFX* myGFX,int16_t x, int16_t y,
+        int16_t h, uint16_t color) {
+    // Update in subclasses if desired!
+    GFXwriteLine(myGFX,x, y, x, y+h-1, color);
+}
+
+// (x,y) is leftmost point; if unsure, calling function
+// should sort endpoints or call drawLine() instead
+void GFXdrawFastHLine(GFX* myGFX,int16_t x, int16_t y,
+        int16_t w, uint16_t color) {
+    // Update in subclasses if desired!
+    GFXwriteLine(myGFX,x, y, x+w-1, y, color);
+}
+
+void GFXfillRect(GFX* myGFX,int16_t x, int16_t y, int16_t w, int16_t h,
+        uint16_t color) {
+    // Update in subclasses if desired!
+    for (int16_t i=x; i<x+w; i++) {
+        GFXwriteFastVLine(myGFX,i, y, h, color);
+    }
+}
+
+void GFXfillScreen(GFX* myGFX,uint16_t color) {
+    // Update in subclasses if desired!
+    GFXfillRect(myGFX,0, 0, myGFX->_width, myGFX->_height, color);
+}
+
+void GFXdrawLine(GFX* myGFX,int16_t x0, int16_t y0, int16_t x1, int16_t y1,
+        uint16_t color) {
+    // Update in subclasses if desired!
+    if(x0 == x1){
+        if(y0 > y1) _swap_int16_t(y0, y1);
+        GFXdrawFastVLine(myGFX,x0, y0, y1 - y0 + 1, color);
+    } else if(y0 == y1){
+        if(x0 > x1) _swap_int16_t(x0, x1);
+        GFXdrawFastHLine(myGFX,x0, y0, x1 - x0 + 1, color);
+    } else {
+        GFXwriteLine(myGFX,x0, y0, x1, y1, color);
+    }
+}
+
+// Draw a circle outline
+void GFXdrawCircle(GFX* myGFX,int16_t x0, int16_t y0, int16_t r,
+        uint16_t color) {
+    int16_t f = 1 - r;
+    int16_t ddF_x = 1;
+    int16_t ddF_y = -2 * r;
+    int16_t x = 0;
+    int16_t y = r;
+
+    GFXwritePixel(myGFX,x0  , y0+r, color);
+    GFXwritePixel(myGFX,x0  , y0-r, color);
+    GFXwritePixel(myGFX,x0+r, y0  , color);
+    GFXwritePixel(myGFX,x0-r, y0  , color);
+
+    while (x<y) {
+        if (f >= 0) {
+            y--;
+            ddF_y += 2;
+            f += ddF_y;
+        }
+        x++;
+        ddF_x += 2;
+        f += ddF_x;
+
+        GFXwritePixel(myGFX,x0 + x, y0 + y, color);
+        GFXwritePixel(myGFX,x0 - x, y0 + y, color);
+        GFXwritePixel(myGFX,x0 + x, y0 - y, color);
+        GFXwritePixel(myGFX,x0 - x, y0 - y, color);
+        GFXwritePixel(myGFX,x0 + y, y0 + x, color);
+        GFXwritePixel(myGFX,x0 - y, y0 + x, color);
+        GFXwritePixel(myGFX,x0 + y, y0 - x, color);
+        GFXwritePixel(myGFX,x0 - y, y0 - x, color);
+    }
+
+}
+
+void GFXdrawCircleHelper(GFX* myGFX,int16_t x0, int16_t y0,
+        int16_t r, uint8_t cornername, uint16_t color) {
+    int16_t f     = 1 - r;
+    int16_t ddF_x = 1;
+    int16_t ddF_y = -2 * r;
+    int16_t x     = 0;
+    int16_t y     = r;
+
+    while (x<y) {
+        if (f >= 0) {
+            y--;
+            ddF_y += 2;
+            f     += ddF_y;
+        }
+        x++;
+        ddF_x += 2;
+        f     += ddF_x;
+        if (cornername & 0x4) {
+            GFXwritePixel(myGFX, x0 + x, y0 + y, color);
+            GFXwritePixel(myGFX, x0 + y, y0 + x, color);
+        }
+        if (cornername & 0x2) {
+        	GFXwritePixel(myGFX, x0 + x, y0 - y, color);
+        	GFXwritePixel(myGFX, x0 + y, y0 - x, color);
+        }
+        if (cornername & 0x8) {
+        	GFXwritePixel(myGFX, x0 - y, y0 + x, color);
+        	GFXwritePixel(myGFX, x0 - x, y0 + y, color);
+        }
+        if (cornername & 0x1) {
+        	GFXwritePixel(myGFX, x0 - y, y0 - x, color);
+        	GFXwritePixel(myGFX, x0 - x, y0 - y, color);
+        }
+    }
+}
+
+void GFXfillCircle(GFX* myGFX, int16_t x0, int16_t y0, int16_t r,
+        uint16_t color) {
+
+    GFXwriteFastVLine(myGFX, x0, y0-r, 2*r+1, color);
+    GFXfillCircleHelper(myGFX, x0, y0, r, 3, 0, color);
+
+}
+
+// Used to do circles and roundrects
+void GFXfillCircleHelper(GFX* myGFX, int16_t x0, int16_t y0, int16_t r,
+        uint8_t cornername, int16_t delta, uint16_t color) {
+
+    int16_t f     = 1 - r;
+    int16_t ddF_x = 1;
+    int16_t ddF_y = -2 * r;
+    int16_t x     = 0;
+    int16_t y     = r;
+
+    while (x<y) {
+        if (f >= 0) {
+            y--;
+            ddF_y += 2;
+            f     += ddF_y;
+        }
+        x++;
+        ddF_x += 2;
+        f     += ddF_x;
+
+        if (cornername & 0x1) {
+            GFXwriteFastVLine(myGFX, x0+x, y0-y, 2*y+1+delta, color);
+            GFXwriteFastVLine(myGFX, x0+y, y0-x, 2*x+1+delta, color);
+        }
+        if (cornername & 0x2) {
+        	GFXwriteFastVLine(myGFX, x0-x, y0-y, 2*y+1+delta, color);
+        	GFXwriteFastVLine(myGFX, x0-y, y0-x, 2*x+1+delta, color);
+        }
+    }
+}
+
+// Draw a rectangle
+void GFXdrawRect(GFX* myGFX, int16_t x, int16_t y, int16_t w, int16_t h,
+        uint16_t color) {
+
+    GFXwriteFastHLine(myGFX, x, y, w, color);
+    GFXwriteFastHLine(myGFX, x, y+h-1, w, color);
+    GFXwriteFastVLine(myGFX, x, y, h, color);
+    GFXwriteFastVLine(myGFX, x+w-1, y, h, color);
+
+}
+
+// Draw a rounded rectangle
+void GFXdrawRoundRect(GFX* myGFX, int16_t x, int16_t y, int16_t w,
+        int16_t h, int16_t r, uint16_t color) {
+    // smarter version
+    GFXwriteFastHLine(myGFX, x+r  , y    , w-2*r, color); // Top
+    GFXwriteFastHLine(myGFX, x+r  , y+h-1, w-2*r, color); // Bottom
+    GFXwriteFastVLine(myGFX, x    , y+r  , h-2*r, color); // Left
+    GFXwriteFastVLine(myGFX, x+w-1, y+r  , h-2*r, color); // Right
+    // draw four corners
+    GFXdrawCircleHelper(myGFX, x+r    , y+r    , r, 1, color);
+    GFXdrawCircleHelper(myGFX, x+w-r-1, y+r    , r, 2, color);
+    GFXdrawCircleHelper(myGFX, x+w-r-1, y+h-r-1, r, 4, color);
+    GFXdrawCircleHelper(myGFX, x+r    , y+h-r-1, r, 8, color);
+
+}
+
+// Fill a rounded rectangle
+void GFXfillRoundRect(GFX* myGFX, int16_t x, int16_t y, int16_t w,
+        int16_t h, int16_t r, uint16_t color) {
+    // smarter version
+    GFXwriteFillRect(myGFX, x+r, y, w-2*r, h, color);
+    // draw four corners
+    GFXfillCircleHelper(myGFX, x+w-r-1, y+r, r, 1, h-2*r-1, color);
+    GFXfillCircleHelper(myGFX, x+r    , y+r, r, 2, h-2*r-1, color);
+
+}
+
+// Draw a triangle
+void GFXdrawTriangle(GFX* myGFX, int16_t x0, int16_t y0,
+        int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) {
+    GFXdrawLine(myGFX, x0, y0, x1, y1, color);
+    GFXdrawLine(myGFX, x1, y1, x2, y2, color);
+    GFXdrawLine(myGFX, x2, y2, x0, y0, color);
+}
+
+// Fill a triangle
+void GFXfillTriangle(GFX* myGFX, int16_t x0, int16_t y0,
+        int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) {
+
+    int16_t a, b, y, last;
+
+    // Sort coordinates by Y order (y2 >= y1 >= y0)
+    if (y0 > y1) {
+        _swap_int16_t(y0, y1); _swap_int16_t(x0, x1);
+    }
+    if (y1 > y2) {
+        _swap_int16_t(y2, y1); _swap_int16_t(x2, x1);
+    }
+    if (y0 > y1) {
+        _swap_int16_t(y0, y1); _swap_int16_t(x0, x1);
+    }
+
+
+    if(y0 == y2) { // Handle awkward all-on-same-line case as its own thing
+        a = b = x0;
+        if(x1 < a)      a = x1;
+        else if(x1 > b) b = x1;
+        if(x2 < a)      a = x2;
+        else if(x2 > b) b = x2;
+        GFXwriteFastHLine(myGFX, a, y0, b-a+1, color);
+
+        return;
+    }
+
+    int16_t
+    dx01 = x1 - x0,
+    dy01 = y1 - y0,
+    dx02 = x2 - x0,
+    dy02 = y2 - y0,
+    dx12 = x2 - x1,
+    dy12 = y2 - y1;
+    int32_t
+    sa   = 0,
+    sb   = 0;
+
+    // For upper part of triangle, find scanline crossings for segments
+    // 0-1 and 0-2.  If y1=y2 (flat-bottomed triangle), the scanline y1
+    // is included here (and second loop will be skipped, avoiding a /0
+    // error there), otherwise scanline y1 is skipped here and handled
+    // in the second loop...which also avoids a /0 error here if y0=y1
+    // (flat-topped triangle).
+    if(y1 == y2) last = y1;   // Include y1 scanline
+    else         last = y1-1; // Skip it
+
+    for(y=y0; y<=last; y++) {
+        a   = x0 + sa / dy01;
+        b   = x0 + sb / dy02;
+        sa += dx01;
+        sb += dx02;
+        /* longhand:
+        a = x0 + (x1 - x0) * (y - y0) / (y1 - y0);
+        b = x0 + (x2 - x0) * (y - y0) / (y2 - y0);
+        */
+        if(a > b) _swap_int16_t(a,b);
+        GFXwriteFastHLine(myGFX,a, y, b-a+1, color);
+    }
+
+    // For lower part of triangle, find scanline crossings for segments
+    // 0-2 and 1-2.  This loop is skipped if y1=y2.
+    sa = dx12 * (y - y1);
+    sb = dx02 * (y - y0);
+    for(; y<=y2; y++) {
+        a   = x1 + sa / dy12;
+        b   = x0 + sb / dy02;
+        sa += dx12;
+        sb += dx02;
+        /* longhand:
+        a = x1 + (x2 - x1) * (y - y1) / (y2 - y1);
+        b = x0 + (x2 - x0) * (y - y0) / (y2 - y0);
+        */
+        if(a > b) _swap_int16_t(a,b);
+        GFXwriteFastHLine(myGFX, a, y, b-a+1, color);
+    }
+
+}
+
+// BITMAP / XBITMAP / GRAYSCALE / RGB BITMAP FUNCTIONS ---------------------
+
+
+
+// Draw a RAM-resident 1-bit image at the specified (x,y) position,
+// using the specified foreground (for set bits) and background (unset
+// bits) colors.
+void GFXdrawBitmap(GFX* myGFX, int16_t x, int16_t y,
+  uint8_t *bitmap, int16_t w, int16_t h, uint16_t color, uint16_t bg) {
+
+    int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte
+    uint8_t byte = 0;
+
+    startWrite();
+    for(int16_t j=0; j<h; j++, y++) {
+        for(int16_t i=0; i<w; i++ ) {
+            if(i & 7) byte <<= 1;
+            else      byte   = bitmap[j * byteWidth + i / 8];
+            GFXwritePixel(myGFX, x+i, y, (byte & 0x80) ? color : bg);
+        }
+    }
+    endWrite();
+}
+
+
+
+// TEXT- AND CHARACTER-HANDLING FUNCTIONS ----------------------------------
+
+// Draw a character
+void GFXdrawChar(GFX* myGFX, int16_t x, int16_t y, unsigned char c,
+  uint16_t color, uint16_t bg, uint8_t size) {
+
+    if(!myGFX->gfxFont) { // 'Classic' built-in font
+
+        if((x >= myGFX->_width)            || // Clip right
+           (y >= myGFX->_height)           || // Clip bottom
+           ((x + 6 * size - 1) < 0) || // Clip left
+           ((y + 8 * size - 1) < 0))   // Clip top
+            return;
+
+        if(!myGFX->_cp437 && (c >= 176)) c++; // Handle 'classic' charset behavior
+
+
+        for(int8_t i=0; i<5; i++ ) { // Char bitmap = 5 columns
+            uint8_t line = pgm_read_byte(&standardGFXfont[c * 5 + i]);
+            for(int8_t j=0; j<8; j++, line >>= 1) {
+                if(line & 1) {
+                    if(size == 1)
+                        GFXwritePixel(myGFX, x+i, y+j, color);
+                    else
+                        GFXwriteFillRect(myGFX, x+i*size, y+j*size, size, size, color);
+                } else if(bg != color) {
+                    if(size == 1)
+                        GFXwritePixel(myGFX, x+i, y+j, bg);
+                    else
+                        GFXwriteFillRect(myGFX, x+i*size, y+j*size, size, size, bg);
+                }
+            }
+        }
+        if(bg != color) { // If opaque, draw vertical line for last column
+            if(size == 1) GFXwriteFastVLine(myGFX, x+5, y, 8, bg);
+            else          GFXwriteFillRect(myGFX, x+5*size, y, size, 8*size, bg);
+        }
+
+
+    } else { // Custom font
+
+        // Character is assumed previously filtered by write() to eliminate
+        // newlines, returns, non-printable characters, etc.  Calling
+        // drawChar() directly with 'bad' characters of font may cause mayhem!
+
+        c -= (uint8_t)pgm_read_byte(&myGFX->gfxFont->first);
+        GFXglyph *glyph  = &(((GFXglyph *)pgm_read_pointer(&myGFX->gfxFont->glyph))[c]);
+        uint8_t  *bitmap = (uint8_t *)pgm_read_pointer(&myGFX->gfxFont->bitmap);
+
+        uint16_t bo = pgm_read_word(&glyph->bitmapOffset);
+        uint8_t  w  = pgm_read_byte(&glyph->width),
+                 h  = pgm_read_byte(&glyph->height);
+        int8_t   xo = pgm_read_byte(&glyph->xOffset),
+                 yo = pgm_read_byte(&glyph->yOffset);
+        uint8_t  xx, yy, bits = 0, bit = 0;
+        int16_t  xo16 = 0, yo16 = 0;
+
+        if(size > 1) {
+            xo16 = xo;
+            yo16 = yo;
+        }
+
+        // Todo: Add character clipping here
+
+        // NOTE: THERE IS NO 'BACKGROUND' COLOR OPTION ON CUSTOM FONTS.
+        // THIS IS ON PURPOSE AND BY DESIGN.  The background color feature
+        // has typically been used with the 'classic' font to overwrite old
+        // screen contents with new data.  This ONLY works because the
+        // characters are a uniform size; it's not a sensible thing to do with
+        // proportionally-spaced fonts with glyphs of varying sizes (and that
+        // may overlap).  To replace previously-drawn text when using a custom
+        // font, use the getTextBounds() function to determine the smallest
+        // rectangle encompassing a string, erase the area with fillRect(),
+        // then draw new text.  This WILL infortunately 'blink' the text, but
+        // is unavoidable.  Drawing 'background' pixels will NOT fix this,
+        // only creates a new set of problems.  Have an idea to work around
+        // this (a canvas object type for MCUs that can afford the RAM and
+        // displays supporting setAddrWindow() and pushColors()), but haven't
+        // implemented this yet.
+
+
+        for(yy=0; yy<h; yy++) {
+            for(xx=0; xx<w; xx++) {
+                if(!(bit++ & 7)) {
+                    bits = pgm_read_byte(&bitmap[bo++]);
+                }
+                if(bits & 0x80) {
+                    if(size == 1) {
+                        GFXwritePixel(myGFX, x+xo+xx, y+yo+yy, color);
+                    } else {
+                        GFXwriteFillRect(myGFX, x+(xo16+xx)*size, y+(yo16+yy)*size,
+                          size, size, color);
+                    }
+                }
+                bits <<= 1;
+            }
+        }
+
+
+    } // End classic vs custom font
+}
+
+
+void GFXwrite(GFX* myGFX, uint8_t c) {
+
+    if(!myGFX->gfxFont) { // 'Classic' built-in font
+
+        if(c == '\n') {                        // Newline?
+        	myGFX->cursor_x  = 0;                     // Reset x to zero,
+        	myGFX->cursor_y += myGFX->textsize * 8;          // advance y one line
+        } else if(c != '\r') {                 // Ignore carriage returns
+            if(myGFX->wrap && ((myGFX->cursor_x + myGFX->textsize * 6) > myGFX->_width)) { // Off right?
+            	myGFX->cursor_x  = 0;                 // Reset x to zero,
+            	myGFX->cursor_y += myGFX->textsize * 8;      // advance y one line
+            }
+            GFXdrawChar(myGFX, myGFX->cursor_x, myGFX->cursor_y, c, myGFX->textcolor, myGFX->textbgcolor, myGFX->textsize);
+            myGFX->cursor_x += myGFX->textsize * 6;          // Advance x one char
+        }
+
+    } else { // Custom font
+
+        if(c == '\n') {
+        	myGFX->cursor_x  = 0;
+        	myGFX->cursor_y += (int16_t)myGFX->textsize *
+                        (uint8_t)pgm_read_byte(&myGFX->gfxFont->yAdvance);
+        } else if(c != '\r') {
+            uint8_t first = pgm_read_byte(&myGFX->gfxFont->first);
+            if((c >= first) && (c <= (uint8_t)pgm_read_byte(&myGFX->gfxFont->last))) {
+                GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(
+                  &myGFX->gfxFont->glyph))[c - first]);
+                uint8_t   w     = pgm_read_byte(&glyph->width),
+                          h     = pgm_read_byte(&glyph->height);
+                if((w > 0) && (h > 0)) { // Is there an associated bitmap?
+                    int16_t xo = (int8_t)pgm_read_byte(&glyph->xOffset); // sic
+                    if(myGFX->wrap && ((myGFX->cursor_x + myGFX->textsize * (xo + w)) > myGFX->_width)) {
+                    	myGFX->cursor_x  = 0;
+                    	myGFX->cursor_y += (int16_t)myGFX->textsize *
+                          (uint8_t)pgm_read_byte(&myGFX->gfxFont->yAdvance);
+                    }
+                    GFXdrawChar(myGFX, myGFX->cursor_x, myGFX->cursor_y, c, myGFX->textcolor, myGFX->textbgcolor, myGFX->textsize);
+                }
+                myGFX->cursor_x += (uint8_t)pgm_read_byte(&glyph->xAdvance) * (int16_t)myGFX->textsize;
+            }
+        }
+
+    }
+
+}
+
+void GFXsetCursor(GFX* myGFX, int16_t x, int16_t y) {
+	myGFX->cursor_x = x;
+	myGFX->cursor_y = y;
+}
+
+int16_t GFXgetCursorX(GFX* myGFX)
+{
+    return myGFX->cursor_x;
+}
+
+int16_t GFXgetCursorY(GFX* myGFX)
+{
+    return myGFX->cursor_y;
+}
+
+void GFXsetTextSize(GFX* myGFX, uint8_t s) {
+	myGFX->textsize = (s > 0) ? s : 1;
+}
+
+void GFXsetTextColor(GFX* myGFX, uint16_t c, uint16_t b) {
+	myGFX->textcolor   = c;
+	myGFX->textbgcolor = b;
+}
+
+void GFXsetTextWrap(GFX* myGFX, uint8_t w) {
+	myGFX->wrap = w;
+}
+
+uint8_t GFXgetRotation(GFX* myGFX)  {
+    return myGFX->rotation;
+}
+
+void GFXsetRotation(GFX* myGFX, uint8_t x) {
+	myGFX->rotation = (x & 3);
+    switch(myGFX->rotation) {
+        case 0:
+        case 2:
+        	myGFX->_width  = myGFX->WIDTH;
+        	myGFX->_height = myGFX->HEIGHT;
+            break;
+        case 1:
+        case 3:
+        	myGFX->_width  = myGFX->HEIGHT;
+        	myGFX->_height = myGFX->WIDTH;
+            break;
+    }
+}
+
+// Enable (or disable) Code Page 437-compatible charset.
+// There was an error in glcdfont.c for the longest time -- one character
+// (#176, the 'light shade' block) was missing -- this threw off the index
+// of every character that followed it.  But a TON of code has been written
+// with the erroneous character indices.  By default, the library uses the
+// original 'wrong' behavior and old sketches will still work.  Pass 'true'
+// to this function to use correct CP437 character values in your code.
+void GFXcp437(GFX* myGFX, uint8_t x) {
+	myGFX->_cp437 = x;
+}
+
+void GFXsetFont(GFX* myGFX, const GFXfont *f) {
+    if(f) {            // Font struct pointer passed in?
+        if(!myGFX->gfxFont) { // And no current font struct?
+            // Switching from classic to new font behavior.
+            // Move cursor pos down 6 pixels so it's on baseline.
+        	myGFX->cursor_y += 6;
+        }
+    } else if(myGFX->gfxFont) { // NULL passed.  Current font struct defined?
+        // Switching from new to classic font behavior.
+        // Move cursor pos up 6 pixels so it's at top-left of char.
+    	myGFX->cursor_y -= 6;
+    }
+    myGFX->gfxFont = (GFXfont *)f;
+}
+
+// Broke this out as it's used by both the PROGMEM- and RAM-resident
+// getTextBounds() functions.
+void GFXcharBounds(GFX* myGFX, char c, int16_t *x, int16_t *y,
+  int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy) {
+
+    if(myGFX->gfxFont) {
+
+        if(c == '\n') { // Newline?
+            *x  = 0;    // Reset x to zero, advance y by one line
+            *y += myGFX->textsize * (uint8_t)pgm_read_byte(&myGFX->gfxFont->yAdvance);
+        } else if(c != '\r') { // Not a carriage return; is normal char
+            uint8_t first = pgm_read_byte(&myGFX->gfxFont->first),
+                    last  = pgm_read_byte(&myGFX->gfxFont->last);
+            if((c >= first) && (c <= last)) { // Char present in this font?
+                GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(
+                  &myGFX->gfxFont->glyph))[c - first]);
+                uint8_t gw = pgm_read_byte(&glyph->width),
+                        gh = pgm_read_byte(&glyph->height),
+                        xa = pgm_read_byte(&glyph->xAdvance);
+                int8_t  xo = pgm_read_byte(&glyph->xOffset),
+                        yo = pgm_read_byte(&glyph->yOffset);
+                if(myGFX->wrap && ((*x+(((int16_t)xo+gw)*myGFX->textsize)) > myGFX->_width)) {
+                    *x  = 0; // Reset x to zero, advance y by one line
+                    *y += myGFX->textsize * (uint8_t)pgm_read_byte(&myGFX->gfxFont->yAdvance);
+                }
+                int16_t ts = (int16_t)myGFX->textsize,
+                        x1 = *x + xo * ts,
+                        y1 = *y + yo * ts,
+                        x2 = x1 + gw * ts - 1,
+                        y2 = y1 + gh * ts - 1;
+                if(x1 < *minx) *minx = x1;
+                if(y1 < *miny) *miny = y1;
+                if(x2 > *maxx) *maxx = x2;
+                if(y2 > *maxy) *maxy = y2;
+                *x += xa * ts;
+            }
+        }
+
+    } else { // Default font
+
+        if(c == '\n') {                     // Newline?
+            *x  = 0;                        // Reset x to zero,
+            *y += myGFX->textsize * 8;             // advance y one line
+            // min/max x/y unchaged -- that waits for next 'normal' character
+        } else if(c != '\r') {  // Normal char; ignore carriage returns
+            if(myGFX->wrap && ((*x + myGFX->textsize * 6) > myGFX->_width)) { // Off right?
+                *x  = 0;                    // Reset x to zero,
+                *y += myGFX->textsize * 8;         // advance y one line
+            }
+            int x2 = *x + myGFX->textsize * 6 - 1, // Lower-right pixel of char
+                y2 = *y + myGFX->textsize * 8 - 1;
+            if(x2 > *maxx) *maxx = x2;      // Track max x, y
+            if(y2 > *maxy) *maxy = y2;
+            if(*x < *minx) *minx = *x;      // Track min x, y
+            if(*y < *miny) *miny = *y;
+            *x += myGFX->textsize * 6;             // Advance x one char
+        }
+    }
+}
+
+// Pass string and a cursor position, returns UL corner and W,H.
+void GFXgetTextBounds(GFX* myGFX, char *str, int16_t x, int16_t y,
+        int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) {
+    uint8_t c; // Current character
+
+    *x1 = x;
+    *y1 = y;
+    *w  = *h = 0;
+
+    int16_t minx = myGFX->_width, miny = myGFX->_height, maxx = -1, maxy = -1;
+
+    while((c = *str++))
+    	GFXcharBounds(myGFX, c, &x, &y, &minx, &miny, &maxx, &maxy);
+
+    if(maxx >= minx) {
+        *x1 = minx;
+        *w  = maxx - minx + 1;
+    }
+    if(maxy >= miny) {
+        *y1 = miny;
+        *h  = maxy - miny + 1;
+    }
+}
+
+
+
+// Return the size of the display (per current rotation)
+int16_t GFXwidth(GFX* myGFX ) {
+    return myGFX->_width;
+}
+
+int16_t GFXheight(GFX* myGFX)  {
+    return myGFX->_height;
+}
+
+void GFXinvertDisplay(GFX* myGFX, uint8_t i) {
+    // Do nothing, must be subclassed if supported by hardware
+}
+
+uint8_t pitches[24] =
+{
+	'C', ' ',
+	'C', '#',
+	'D', ' ',
+	'D', '#',
+	'E', ' ',
+	'F', ' ',
+	'F', '#',
+	'G', ' ',
+	'G', '#',
+	'A', ' ',
+	'A', '#',
+	'B', ' '
+};
+
+int OLEDparseInt(char* buffer, uint32_t myNumber, uint8_t numDigits)
+{
+	for (int i = 0; i < numDigits; i++)
+	{
+		int whichPlace = (uint32_t)(powf(10.0f,(numDigits - 1) - i));
+		int thisDigit = (myNumber / whichPlace);
+		buffer[i] = thisDigit + 48;
+		myNumber -= thisDigit * whichPlace;
+	}
+
+	return numDigits;
+}
+
+int OLEDparsePitch(char* buffer, float midi)
+{
+	int pclass, octave, note, neg = 0; float offset;
+
+	note = (int)midi;
+	offset = midi - note;
+
+	if ((midi + 0.5f) > (note+1))
+	{
+		note += 1;
+		offset = (1.0f - offset) + 0.01f;
+		neg = 1;
+	}
+
+	pclass = (note % 12);
+	octave = (int)(note / 12) - 1;
+
+	int idx = 0;
+
+	buffer[idx++] = pitches[pclass*2];
+	buffer[idx++] = pitches[pclass*2+1];
+
+	OLEDparseInt(&buffer[idx++], octave, 1);
+
+	buffer[idx++] = ' ';
+
+	if (neg == 1)
+		buffer[idx++] = '-';
+	else
+		buffer[idx++] = '+';
+
+	OLEDparseInt(&buffer[idx], (uint32_t) (offset * 100.0f), 2);
+
+	return idx+2;
+}
+
+int OLEDparsePitchClass(char* buffer, float midi)
+{
+	int pclass, note;
+	float offset;
+
+	note = (int)midi;
+	offset = midi - note;
+
+	if ((midi + 0.5f) > (note+1))
+	{
+		note += 1;
+		offset = (1.0f - offset) + 0.01f;
+	}
+
+	pclass = (note % 12);
+
+	int idx = 0;
+
+	buffer[idx++] = pitches[pclass*2];
+	buffer[idx++] = pitches[pclass*2+1];
+
+	return idx;
+}
+
+int OLEDparseFixedFloat(char* buffer, float input, uint8_t numDigits, uint8_t numDecimal)
+{
+	float power = powf(10.0f, numDecimal);
+	float f = ((float)(int)(input * power + 0.5f)) / power;
+
+	int nonzeroHasHappened = 0, decimalHasHappened = 0;
+
+	int myNumber = (int)(f * power);
+
+	int idx = 0, i = 0;
+
+	if (myNumber < 0)
+	{
+		myNumber *= -1;
+		buffer[idx++] = '-';
+		i++;
+	}
+
+	while (i < numDigits)
+	{
+		if ((decimalHasHappened == 0) && ((numDigits-i) == numDecimal))
+		{
+			if (nonzeroHasHappened == 0)
+			{
+				idx++; //get past the negative if there is one - this is hacky should figure out how to do it right
+				buffer[idx-1] = '0';
+				nonzeroHasHappened = 1;
+			}
+
+			buffer[idx++] = '.';
+			decimalHasHappened = 1;
+		}
+		else
+		{
+
+			int whichPlace = (uint32_t) powf(10.0f,(numDigits - 1 - i));
+			int thisDigit = (myNumber / whichPlace);
+
+			if (nonzeroHasHappened == 0)
+			{
+				if (thisDigit > 0)
+				{
+					buffer[idx++] = thisDigit + 48;
+					nonzeroHasHappened = 1;
+				}
+				else
+				{
+					buffer[idx++] = ' ';
+				}
+			}
+			else
+			{
+				buffer[idx++] = thisDigit + 48;
+			}
+
+			myNumber -= thisDigit * whichPlace;
+
+			i++;
+		}
+	}
+
+	return idx;
+}
--- /dev/null
+++ b/LEAF/Src/gfx_font.c
@@ -1,0 +1,281 @@
+/*
+ * gfx_font.c
+ *
+ *  Created on: Jul 8, 2018
+ *      Author: jeffsnyder
+ */
+
+
+// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
+// See gfxfont.h for newer custom bitmap font info.
+
+#ifndef FONT5X7_H
+#define FONT5X7_H
+
+
+ #define PROGMEM
+
+
+// Standard ASCII 5x7 font
+
+static const unsigned char standardGFXfont[] = {
+	0x00, 0x00, 0x00, 0x00, 0x00,
+	0x3E, 0x5B, 0x4F, 0x5B, 0x3E,
+	0x3E, 0x6B, 0x4F, 0x6B, 0x3E,
+	0x1C, 0x3E, 0x7C, 0x3E, 0x1C,
+	0x18, 0x3C, 0x7E, 0x3C, 0x18,
+	0x1C, 0x57, 0x7D, 0x57, 0x1C,
+	0x1C, 0x5E, 0x7F, 0x5E, 0x1C,
+	0x00, 0x18, 0x3C, 0x18, 0x00,
+	0xFF, 0xE7, 0xC3, 0xE7, 0xFF,
+	0x00, 0x18, 0x24, 0x18, 0x00,
+	0xFF, 0xE7, 0xDB, 0xE7, 0xFF,
+	0x30, 0x48, 0x3A, 0x06, 0x0E,
+	0x26, 0x29, 0x79, 0x29, 0x26,
+	0x40, 0x7F, 0x05, 0x05, 0x07,
+	0x40, 0x7F, 0x05, 0x25, 0x3F,
+	0x5A, 0x3C, 0xE7, 0x3C, 0x5A,
+	0x7F, 0x3E, 0x1C, 0x1C, 0x08,
+	0x08, 0x1C, 0x1C, 0x3E, 0x7F,
+	0x14, 0x22, 0x7F, 0x22, 0x14,
+	0x5F, 0x5F, 0x00, 0x5F, 0x5F,
+	0x06, 0x09, 0x7F, 0x01, 0x7F,
+	0x00, 0x66, 0x89, 0x95, 0x6A,
+	0x60, 0x60, 0x60, 0x60, 0x60,
+	0x94, 0xA2, 0xFF, 0xA2, 0x94,
+	0x08, 0x04, 0x7E, 0x04, 0x08,
+	0x10, 0x20, 0x7E, 0x20, 0x10,
+	0x08, 0x08, 0x2A, 0x1C, 0x08,
+	0x08, 0x1C, 0x2A, 0x08, 0x08,
+	0x1E, 0x10, 0x10, 0x10, 0x10,
+	0x0C, 0x1E, 0x0C, 0x1E, 0x0C,
+	0x30, 0x38, 0x3E, 0x38, 0x30,
+	0x06, 0x0E, 0x3E, 0x0E, 0x06,
+	0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x5F, 0x00, 0x00,
+	0x00, 0x07, 0x00, 0x07, 0x00,
+	0x14, 0x7F, 0x14, 0x7F, 0x14,
+	0x24, 0x2A, 0x7F, 0x2A, 0x12,
+	0x23, 0x13, 0x08, 0x64, 0x62,
+	0x36, 0x49, 0x56, 0x20, 0x50,
+	0x00, 0x08, 0x07, 0x03, 0x00,
+	0x00, 0x1C, 0x22, 0x41, 0x00,
+	0x00, 0x41, 0x22, 0x1C, 0x00,
+	0x2A, 0x1C, 0x7F, 0x1C, 0x2A,
+	0x08, 0x08, 0x3E, 0x08, 0x08,
+	0x00, 0x80, 0x70, 0x30, 0x00,
+	0x08, 0x08, 0x08, 0x08, 0x08,
+	0x00, 0x00, 0x60, 0x60, 0x00,
+	0x20, 0x10, 0x08, 0x04, 0x02,
+	0x3E, 0x51, 0x49, 0x45, 0x3E,
+	0x00, 0x42, 0x7F, 0x40, 0x00,
+	0x72, 0x49, 0x49, 0x49, 0x46,
+	0x21, 0x41, 0x49, 0x4D, 0x33,
+	0x18, 0x14, 0x12, 0x7F, 0x10,
+	0x27, 0x45, 0x45, 0x45, 0x39,
+	0x3C, 0x4A, 0x49, 0x49, 0x31,
+	0x41, 0x21, 0x11, 0x09, 0x07,
+	0x36, 0x49, 0x49, 0x49, 0x36,
+	0x46, 0x49, 0x49, 0x29, 0x1E,
+	0x00, 0x00, 0x14, 0x00, 0x00,
+	0x00, 0x40, 0x34, 0x00, 0x00,
+	0x00, 0x08, 0x14, 0x22, 0x41,
+	0x14, 0x14, 0x14, 0x14, 0x14,
+	0x00, 0x41, 0x22, 0x14, 0x08,
+	0x02, 0x01, 0x59, 0x09, 0x06,
+	0x3E, 0x41, 0x5D, 0x59, 0x4E,
+	0x7C, 0x12, 0x11, 0x12, 0x7C,
+	0x7F, 0x49, 0x49, 0x49, 0x36,
+	0x3E, 0x41, 0x41, 0x41, 0x22,
+	0x7F, 0x41, 0x41, 0x41, 0x3E,
+	0x7F, 0x49, 0x49, 0x49, 0x41,
+	0x7F, 0x09, 0x09, 0x09, 0x01,
+	0x3E, 0x41, 0x41, 0x51, 0x73,
+	0x7F, 0x08, 0x08, 0x08, 0x7F,
+	0x00, 0x41, 0x7F, 0x41, 0x00,
+	0x20, 0x40, 0x41, 0x3F, 0x01,
+	0x7F, 0x08, 0x14, 0x22, 0x41,
+	0x7F, 0x40, 0x40, 0x40, 0x40,
+	0x7F, 0x02, 0x1C, 0x02, 0x7F,
+	0x7F, 0x04, 0x08, 0x10, 0x7F,
+	0x3E, 0x41, 0x41, 0x41, 0x3E,
+	0x7F, 0x09, 0x09, 0x09, 0x06,
+	0x3E, 0x41, 0x51, 0x21, 0x5E,
+	0x7F, 0x09, 0x19, 0x29, 0x46,
+	0x26, 0x49, 0x49, 0x49, 0x32,
+	0x03, 0x01, 0x7F, 0x01, 0x03,
+	0x3F, 0x40, 0x40, 0x40, 0x3F,
+	0x1F, 0x20, 0x40, 0x20, 0x1F,
+	0x3F, 0x40, 0x38, 0x40, 0x3F,
+	0x63, 0x14, 0x08, 0x14, 0x63,
+	0x03, 0x04, 0x78, 0x04, 0x03,
+	0x61, 0x59, 0x49, 0x4D, 0x43,
+	0x00, 0x7F, 0x41, 0x41, 0x41,
+	0x02, 0x04, 0x08, 0x10, 0x20,
+	0x00, 0x41, 0x41, 0x41, 0x7F,
+	0x04, 0x02, 0x01, 0x02, 0x04,
+	0x40, 0x40, 0x40, 0x40, 0x40,
+	0x00, 0x03, 0x07, 0x08, 0x00,
+	0x20, 0x54, 0x54, 0x78, 0x40,
+	0x7F, 0x28, 0x44, 0x44, 0x38,
+	0x38, 0x44, 0x44, 0x44, 0x28,
+	0x38, 0x44, 0x44, 0x28, 0x7F,
+	0x38, 0x54, 0x54, 0x54, 0x18,
+	0x00, 0x08, 0x7E, 0x09, 0x02,
+	0x18, 0xA4, 0xA4, 0x9C, 0x78,
+	0x7F, 0x08, 0x04, 0x04, 0x78,
+	0x00, 0x44, 0x7D, 0x40, 0x00,
+	0x20, 0x40, 0x40, 0x3D, 0x00,
+	0x7F, 0x10, 0x28, 0x44, 0x00,
+	0x00, 0x41, 0x7F, 0x40, 0x00,
+	0x7C, 0x04, 0x78, 0x04, 0x78,
+	0x7C, 0x08, 0x04, 0x04, 0x78,
+	0x38, 0x44, 0x44, 0x44, 0x38,
+	0xFC, 0x18, 0x24, 0x24, 0x18,
+	0x18, 0x24, 0x24, 0x18, 0xFC,
+	0x7C, 0x08, 0x04, 0x04, 0x08,
+	0x48, 0x54, 0x54, 0x54, 0x24,
+	0x04, 0x04, 0x3F, 0x44, 0x24,
+	0x3C, 0x40, 0x40, 0x20, 0x7C,
+	0x1C, 0x20, 0x40, 0x20, 0x1C,
+	0x3C, 0x40, 0x30, 0x40, 0x3C,
+	0x44, 0x28, 0x10, 0x28, 0x44,
+	0x4C, 0x90, 0x90, 0x90, 0x7C,
+	0x44, 0x64, 0x54, 0x4C, 0x44,
+	0x00, 0x08, 0x36, 0x41, 0x00,
+	0x00, 0x00, 0x77, 0x00, 0x00,
+	0x00, 0x41, 0x36, 0x08, 0x00,
+	0x02, 0x01, 0x02, 0x04, 0x02,
+	0x3C, 0x26, 0x23, 0x26, 0x3C,
+	0x1E, 0xA1, 0xA1, 0x61, 0x12,
+	0x3A, 0x40, 0x40, 0x20, 0x7A,
+	0x38, 0x54, 0x54, 0x55, 0x59,
+	0x21, 0x55, 0x55, 0x79, 0x41,
+	0x22, 0x54, 0x54, 0x78, 0x42, // a-umlaut
+	0x21, 0x55, 0x54, 0x78, 0x40,
+	0x20, 0x54, 0x55, 0x79, 0x40,
+	0x0C, 0x1E, 0x52, 0x72, 0x12,
+	0x39, 0x55, 0x55, 0x55, 0x59,
+	0x39, 0x54, 0x54, 0x54, 0x59,
+	0x39, 0x55, 0x54, 0x54, 0x58,
+	0x00, 0x00, 0x45, 0x7C, 0x41,
+	0x00, 0x02, 0x45, 0x7D, 0x42,
+	0x00, 0x01, 0x45, 0x7C, 0x40,
+	0x7D, 0x12, 0x11, 0x12, 0x7D, // A-umlaut
+	0xF0, 0x28, 0x25, 0x28, 0xF0,
+	0x7C, 0x54, 0x55, 0x45, 0x00,
+	0x20, 0x54, 0x54, 0x7C, 0x54,
+	0x7C, 0x0A, 0x09, 0x7F, 0x49,
+	0x32, 0x49, 0x49, 0x49, 0x32,
+	0x3A, 0x44, 0x44, 0x44, 0x3A, // o-umlaut
+	0x32, 0x4A, 0x48, 0x48, 0x30,
+	0x3A, 0x41, 0x41, 0x21, 0x7A,
+	0x3A, 0x42, 0x40, 0x20, 0x78,
+	0x00, 0x9D, 0xA0, 0xA0, 0x7D,
+	0x3D, 0x42, 0x42, 0x42, 0x3D, // O-umlaut
+	0x3D, 0x40, 0x40, 0x40, 0x3D,
+	0x3C, 0x24, 0xFF, 0x24, 0x24,
+	0x48, 0x7E, 0x49, 0x43, 0x66,
+	0x2B, 0x2F, 0xFC, 0x2F, 0x2B,
+	0xFF, 0x09, 0x29, 0xF6, 0x20,
+	0xC0, 0x88, 0x7E, 0x09, 0x03,
+	0x20, 0x54, 0x54, 0x79, 0x41,
+	0x00, 0x00, 0x44, 0x7D, 0x41,
+	0x30, 0x48, 0x48, 0x4A, 0x32,
+	0x38, 0x40, 0x40, 0x22, 0x7A,
+	0x00, 0x7A, 0x0A, 0x0A, 0x72,
+	0x7D, 0x0D, 0x19, 0x31, 0x7D,
+	0x26, 0x29, 0x29, 0x2F, 0x28,
+	0x26, 0x29, 0x29, 0x29, 0x26,
+	0x30, 0x48, 0x4D, 0x40, 0x20,
+	0x38, 0x08, 0x08, 0x08, 0x08,
+	0x08, 0x08, 0x08, 0x08, 0x38,
+	0x2F, 0x10, 0xC8, 0xAC, 0xBA,
+	0x2F, 0x10, 0x28, 0x34, 0xFA,
+	0x00, 0x00, 0x7B, 0x00, 0x00,
+	0x08, 0x14, 0x2A, 0x14, 0x22,
+	0x22, 0x14, 0x2A, 0x14, 0x08,
+	0x55, 0x00, 0x55, 0x00, 0x55, // #176 (25% block) missing in old code
+	0xAA, 0x55, 0xAA, 0x55, 0xAA, // 50% block
+	0xFF, 0x55, 0xFF, 0x55, 0xFF, // 75% block
+	0x00, 0x00, 0x00, 0xFF, 0x00,
+	0x10, 0x10, 0x10, 0xFF, 0x00,
+	0x14, 0x14, 0x14, 0xFF, 0x00,
+	0x10, 0x10, 0xFF, 0x00, 0xFF,
+	0x10, 0x10, 0xF0, 0x10, 0xF0,
+	0x14, 0x14, 0x14, 0xFC, 0x00,
+	0x14, 0x14, 0xF7, 0x00, 0xFF,
+	0x00, 0x00, 0xFF, 0x00, 0xFF,
+	0x14, 0x14, 0xF4, 0x04, 0xFC,
+	0x14, 0x14, 0x17, 0x10, 0x1F,
+	0x10, 0x10, 0x1F, 0x10, 0x1F,
+	0x14, 0x14, 0x14, 0x1F, 0x00,
+	0x10, 0x10, 0x10, 0xF0, 0x00,
+	0x00, 0x00, 0x00, 0x1F, 0x10,
+	0x10, 0x10, 0x10, 0x1F, 0x10,
+	0x10, 0x10, 0x10, 0xF0, 0x10,
+	0x00, 0x00, 0x00, 0xFF, 0x10,
+	0x10, 0x10, 0x10, 0x10, 0x10,
+	0x10, 0x10, 0x10, 0xFF, 0x10,
+	0x00, 0x00, 0x00, 0xFF, 0x14,
+	0x00, 0x00, 0xFF, 0x00, 0xFF,
+	0x00, 0x00, 0x1F, 0x10, 0x17,
+	0x00, 0x00, 0xFC, 0x04, 0xF4,
+	0x14, 0x14, 0x17, 0x10, 0x17,
+	0x14, 0x14, 0xF4, 0x04, 0xF4,
+	0x00, 0x00, 0xFF, 0x00, 0xF7,
+	0x14, 0x14, 0x14, 0x14, 0x14,
+	0x14, 0x14, 0xF7, 0x00, 0xF7,
+	0x14, 0x14, 0x14, 0x17, 0x14,
+	0x10, 0x10, 0x1F, 0x10, 0x1F,
+	0x14, 0x14, 0x14, 0xF4, 0x14,
+	0x10, 0x10, 0xF0, 0x10, 0xF0,
+	0x00, 0x00, 0x1F, 0x10, 0x1F,
+	0x00, 0x00, 0x00, 0x1F, 0x14,
+	0x00, 0x00, 0x00, 0xFC, 0x14,
+	0x00, 0x00, 0xF0, 0x10, 0xF0,
+	0x10, 0x10, 0xFF, 0x10, 0xFF,
+	0x14, 0x14, 0x14, 0xFF, 0x14,
+	0x10, 0x10, 0x10, 0x1F, 0x00,
+	0x00, 0x00, 0x00, 0xF0, 0x10,
+	0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+	0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
+	0xFF, 0xFF, 0xFF, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0xFF, 0xFF,
+	0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
+	0x38, 0x44, 0x44, 0x38, 0x44,
+	0xFC, 0x4A, 0x4A, 0x4A, 0x34, // sharp-s or beta
+	0x7E, 0x02, 0x02, 0x06, 0x06,
+	0x02, 0x7E, 0x02, 0x7E, 0x02,
+	0x63, 0x55, 0x49, 0x41, 0x63,
+	0x38, 0x44, 0x44, 0x3C, 0x04,
+	0x40, 0x7E, 0x20, 0x1E, 0x20,
+	0x06, 0x02, 0x7E, 0x02, 0x02,
+	0x99, 0xA5, 0xE7, 0xA5, 0x99,
+	0x1C, 0x2A, 0x49, 0x2A, 0x1C,
+	0x4C, 0x72, 0x01, 0x72, 0x4C,
+	0x30, 0x4A, 0x4D, 0x4D, 0x30,
+	0x30, 0x48, 0x78, 0x48, 0x30,
+	0xBC, 0x62, 0x5A, 0x46, 0x3D,
+	0x3E, 0x49, 0x49, 0x49, 0x00,
+	0x7E, 0x01, 0x01, 0x01, 0x7E,
+	0x2A, 0x2A, 0x2A, 0x2A, 0x2A,
+	0x44, 0x44, 0x5F, 0x44, 0x44,
+	0x40, 0x51, 0x4A, 0x44, 0x40,
+	0x40, 0x44, 0x4A, 0x51, 0x40,
+	0x00, 0x00, 0xFF, 0x01, 0x03,
+	0xE0, 0x80, 0xFF, 0x00, 0x00,
+	0x08, 0x08, 0x6B, 0x6B, 0x08,
+	0x36, 0x12, 0x36, 0x24, 0x36,
+	0x06, 0x0F, 0x09, 0x0F, 0x06,
+	0x00, 0x00, 0x18, 0x18, 0x00,
+	0x00, 0x00, 0x10, 0x10, 0x00,
+	0x30, 0x40, 0xFF, 0x01, 0x01,
+	0x00, 0x1F, 0x01, 0x01, 0x1E,
+	0x00, 0x19, 0x1D, 0x17, 0x12,
+	0x00, 0x3C, 0x3C, 0x3C, 0x3C,
+	0x00, 0x00, 0x00, 0x00, 0x00  // #255 NBSP
+};
+
+
+#endif // FONT5X7_H
--- /dev/null
+++ b/LEAF/Src/gpio.c
@@ -1,0 +1,176 @@
+/**
+  ******************************************************************************
+  * File Name          : gpio.c
+  * Description        : This file provides code for the configuration
+  *                      of all used GPIO pins.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "gpio.h"
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/*----------------------------------------------------------------------------*/
+/* Configure GPIO                                                             */
+/*----------------------------------------------------------------------------*/
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+
+/** Configure pins
+     PH0-OSC_IN (PH0)   ------> RCC_OSC_IN
+     PH1-OSC_OUT (PH1)   ------> RCC_OSC_OUT
+     PA13 (JTMS/SWDIO)   ------> DEBUG_JTMS-SWDIO
+     PA14 (JTCK/SWCLK)   ------> DEBUG_JTCK-SWCLK
+     PB3 (JTDO/TRACESWO)   ------> DEBUG_JTDO-SWO
+*/
+void MX_GPIO_Init(void)
+{
+
+  GPIO_InitTypeDef GPIO_InitStruct = {0};
+
+  /* GPIO Ports Clock Enable */
+  __HAL_RCC_GPIOE_CLK_ENABLE();
+  __HAL_RCC_GPIOC_CLK_ENABLE();
+  __HAL_RCC_GPIOF_CLK_ENABLE();
+  __HAL_RCC_GPIOH_CLK_ENABLE();
+  __HAL_RCC_GPIOA_CLK_ENABLE();
+  __HAL_RCC_GPIOB_CLK_ENABLE();
+  __HAL_RCC_GPIOG_CLK_ENABLE();
+  __HAL_RCC_GPIOD_CLK_ENABLE();
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14|GPIO_PIN_4|GPIO_PIN_6|GPIO_PIN_7, GPIO_PIN_RESET);
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(GPIOF, GPIO_PIN_6, GPIO_PIN_RESET);
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4|GPIO_PIN_6|GPIO_PIN_8|GPIO_PIN_9 
+                          |GPIO_PIN_10, GPIO_PIN_RESET);
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_4, GPIO_PIN_RESET);
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(GPIOG, GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_10, GPIO_PIN_RESET);
+
+  /*Configure GPIO pin : PC13 */
+  GPIO_InitStruct.Pin = GPIO_PIN_13;
+  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PC14 PC4 PC6 PC7 */
+  GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_4|GPIO_PIN_6|GPIO_PIN_7;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+  /*Configure GPIO pin : PC15 */
+  GPIO_InitStruct.Pin = GPIO_PIN_15;
+  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+  /*Configure GPIO pin : PF6 */
+  GPIO_InitStruct.Pin = GPIO_PIN_6;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PF7 PF8 PF9 PF10 */
+  GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10;
+  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PA1 PA15 */
+  GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_15;
+  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PA4 PA6 PA8 PA9 
+                           PA10 */
+  GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_6|GPIO_PIN_8|GPIO_PIN_9 
+                          |GPIO_PIN_10;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PB0 PB4 */
+  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_4;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PB1 PB12 PB13 PB14 
+                           PB15 */
+  GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14 
+                          |GPIO_PIN_15;
+  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+  GPIO_InitStruct.Pull = GPIO_PULLUP;
+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PB2 PB9 */
+  GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_9;
+  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PD11 PD7 */
+  GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_7;
+  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+  GPIO_InitStruct.Pull = GPIO_PULLUP;
+  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PG3 PG9 PG13 PG14 */
+  GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_9|GPIO_PIN_13|GPIO_PIN_14;
+  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PG6 PG7 PG10 */
+  GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_10;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PD3 PD4 PD5 PD6 */
+  GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;
+  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PG11 PG12 */
+  GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12;
+  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+  GPIO_InitStruct.Pull = GPIO_PULLUP;
+  HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
+
+}
+
+/* USER CODE BEGIN 2 */
+
+/* USER CODE END 2 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- /dev/null
+++ b/LEAF/Src/i2c.c
@@ -1,0 +1,242 @@
+/**
+  ******************************************************************************
+  * File Name          : I2C.c
+  * Description        : This file provides code for the configuration
+  *                      of the I2C instances.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "i2c.h"
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+I2C_HandleTypeDef hi2c2;
+I2C_HandleTypeDef hi2c4;
+DMA_HandleTypeDef hdma_i2c4_rx;
+DMA_HandleTypeDef hdma_i2c4_tx;
+
+/* I2C2 init function */
+void MX_I2C2_Init(void)
+{
+
+  hi2c2.Instance = I2C2;
+  hi2c2.Init.Timing = 0x505097F4;
+  hi2c2.Init.OwnAddress1 = 0;
+  hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+  hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+  hi2c2.Init.OwnAddress2 = 0;
+  hi2c2.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
+  hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+  hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+  if (HAL_I2C_Init(&hi2c2) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /** Configure Analogue filter 
+  */
+  if (HAL_I2CEx_ConfigAnalogFilter(&hi2c2, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /** Configure Digital filter 
+  */
+  if (HAL_I2CEx_ConfigDigitalFilter(&hi2c2, 0) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+}
+/* I2C4 init function */
+void MX_I2C4_Init(void)
+{
+
+  hi2c4.Instance = I2C4;
+  hi2c4.Init.Timing = 0x307075B1;
+  hi2c4.Init.OwnAddress1 = 0;
+  hi2c4.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+  hi2c4.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+  hi2c4.Init.OwnAddress2 = 0;
+  hi2c4.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
+  hi2c4.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+  hi2c4.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+  if (HAL_I2C_Init(&hi2c4) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /** Configure Analogue filter 
+  */
+  if (HAL_I2CEx_ConfigAnalogFilter(&hi2c4, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /** Configure Digital filter 
+  */
+  if (HAL_I2CEx_ConfigDigitalFilter(&hi2c4, 0) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+}
+
+void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
+{
+
+  GPIO_InitTypeDef GPIO_InitStruct = {0};
+  if(i2cHandle->Instance==I2C2)
+  {
+  /* USER CODE BEGIN I2C2_MspInit 0 */
+
+  /* USER CODE END I2C2_MspInit 0 */
+  
+    __HAL_RCC_GPIOB_CLK_ENABLE();
+    /**I2C2 GPIO Configuration    
+    PB10     ------> I2C2_SCL
+    PB11     ------> I2C2_SDA 
+    */
+    GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+    GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
+    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+    /* I2C2 clock enable */
+    __HAL_RCC_I2C2_CLK_ENABLE();
+  /* USER CODE BEGIN I2C2_MspInit 1 */
+
+  /* USER CODE END I2C2_MspInit 1 */
+  }
+  else if(i2cHandle->Instance==I2C4)
+  {
+  /* USER CODE BEGIN I2C4_MspInit 0 */
+
+  /* USER CODE END I2C4_MspInit 0 */
+  
+    __HAL_RCC_GPIOD_CLK_ENABLE();
+    /**I2C4 GPIO Configuration    
+    PD12     ------> I2C4_SCL
+    PD13     ------> I2C4_SDA 
+    */
+    GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13;
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
+    GPIO_InitStruct.Alternate = GPIO_AF4_I2C4;
+    HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
+
+    /* I2C4 clock enable */
+    __HAL_RCC_I2C4_CLK_ENABLE();
+  
+    /* I2C4 DMA Init */
+    /* I2C4_RX Init */
+    hdma_i2c4_rx.Instance = BDMA_Channel0;
+    hdma_i2c4_rx.Init.Request = BDMA_REQUEST_I2C4_RX;
+    hdma_i2c4_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
+    hdma_i2c4_rx.Init.PeriphInc = DMA_PINC_DISABLE;
+    hdma_i2c4_rx.Init.MemInc = DMA_MINC_ENABLE;
+    hdma_i2c4_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+    hdma_i2c4_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+    hdma_i2c4_rx.Init.Mode = DMA_NORMAL;
+    hdma_i2c4_rx.Init.Priority = DMA_PRIORITY_LOW;
+    if (HAL_DMA_Init(&hdma_i2c4_rx) != HAL_OK)
+    {
+      Error_Handler();
+    }
+
+    __HAL_LINKDMA(i2cHandle,hdmarx,hdma_i2c4_rx);
+
+    /* I2C4_TX Init */
+    hdma_i2c4_tx.Instance = BDMA_Channel1;
+    hdma_i2c4_tx.Init.Request = BDMA_REQUEST_I2C4_TX;
+    hdma_i2c4_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
+    hdma_i2c4_tx.Init.PeriphInc = DMA_PINC_DISABLE;
+    hdma_i2c4_tx.Init.MemInc = DMA_MINC_ENABLE;
+    hdma_i2c4_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
+    hdma_i2c4_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
+    hdma_i2c4_tx.Init.Mode = DMA_NORMAL;
+    hdma_i2c4_tx.Init.Priority = DMA_PRIORITY_LOW;
+    if (HAL_DMA_Init(&hdma_i2c4_tx) != HAL_OK)
+    {
+      Error_Handler();
+    }
+
+    __HAL_LINKDMA(i2cHandle,hdmatx,hdma_i2c4_tx);
+
+    /* I2C4 interrupt Init */
+    HAL_NVIC_SetPriority(I2C4_EV_IRQn, 6, 0);
+    HAL_NVIC_EnableIRQ(I2C4_EV_IRQn);
+    HAL_NVIC_SetPriority(I2C4_ER_IRQn, 6, 0);
+    HAL_NVIC_EnableIRQ(I2C4_ER_IRQn);
+  /* USER CODE BEGIN I2C4_MspInit 1 */
+
+  /* USER CODE END I2C4_MspInit 1 */
+  }
+}
+
+void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle)
+{
+
+  if(i2cHandle->Instance==I2C2)
+  {
+  /* USER CODE BEGIN I2C2_MspDeInit 0 */
+
+  /* USER CODE END I2C2_MspDeInit 0 */
+    /* Peripheral clock disable */
+    __HAL_RCC_I2C2_CLK_DISABLE();
+  
+    /**I2C2 GPIO Configuration    
+    PB10     ------> I2C2_SCL
+    PB11     ------> I2C2_SDA 
+    */
+    HAL_GPIO_DeInit(GPIOB, GPIO_PIN_10|GPIO_PIN_11);
+
+  /* USER CODE BEGIN I2C2_MspDeInit 1 */
+
+  /* USER CODE END I2C2_MspDeInit 1 */
+  }
+  else if(i2cHandle->Instance==I2C4)
+  {
+  /* USER CODE BEGIN I2C4_MspDeInit 0 */
+
+  /* USER CODE END I2C4_MspDeInit 0 */
+    /* Peripheral clock disable */
+    __HAL_RCC_I2C4_CLK_DISABLE();
+  
+    /**I2C4 GPIO Configuration    
+    PD12     ------> I2C4_SCL
+    PD13     ------> I2C4_SDA 
+    */
+    HAL_GPIO_DeInit(GPIOD, GPIO_PIN_12|GPIO_PIN_13);
+
+    /* I2C4 DMA DeInit */
+    HAL_DMA_DeInit(i2cHandle->hdmarx);
+    HAL_DMA_DeInit(i2cHandle->hdmatx);
+
+    /* I2C4 interrupt Deinit */
+    HAL_NVIC_DisableIRQ(I2C4_EV_IRQn);
+    HAL_NVIC_DisableIRQ(I2C4_ER_IRQn);
+  /* USER CODE BEGIN I2C4_MspDeInit 1 */
+
+  /* USER CODE END I2C4_MspDeInit 1 */
+  }
+} 
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
--- a/LEAF/Src/leaf-analysis.c
+++ /dev/null
@@ -1,946 +1,0 @@
-/*==============================================================================
-
-    leaf-analysis.c
-    Created: 30 Nov 2018 11:56:49am
-    Author:  airship
-
-==============================================================================*/
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-analysis.h"
-#include "..\Externals\d_fft_mayer.h"
-
-#else
-
-#include "../Inc/leaf-analysis.h"
-#include "../Externals/d_fft_mayer.h"
-
-#endif
-
-//===========================================================================
-/* Envelope Follower */
-//===========================================================================
-
-void    tEnvelopeFollower_init(tEnvelopeFollower* const ef, float attackThreshold, float decayCoeff)
-{
-    _tEnvelopeFollower* e = *ef = (_tEnvelopeFollower*) leaf_alloc(sizeof(_tEnvelopeFollower));
-    
-    e->y = 0.0f;
-    e->a_thresh = attackThreshold;
-    e->d_coeff = decayCoeff;
-}
-
-void tEnvelopeFollower_free(tEnvelopeFollower* const ef)
-{
-    _tEnvelopeFollower* e = *ef;
-    
-    leaf_free(e);
-}
-
-void    tEnvelopeFollower_initToPool    (tEnvelopeFollower* const ef, float attackThreshold, float decayCoeff, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tEnvelopeFollower* e = *ef = (_tEnvelopeFollower*) mpool_alloc(sizeof(_tEnvelopeFollower), &m->pool);
-    
-    e->y = 0.0f;
-    e->a_thresh = attackThreshold;
-    e->d_coeff = decayCoeff;
-}
-
-void    tEnvelopeFollower_freeFromPool  (tEnvelopeFollower* const ef, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tEnvelopeFollower* e = *ef;
-    
-    mpool_free(e, &m->pool);
-}
-
-float   tEnvelopeFollower_tick(tEnvelopeFollower* const ef, float x)
-{
-    _tEnvelopeFollower* e = *ef;
-    
-    if (x < 0.0f ) x = -x;  /* Absolute value. */
-    
-    if ((x >= e->y) && (x > e->a_thresh)) e->y = x;                      /* If we hit a peak, ride the peak to the top. */
-    else                                    e->y = e->y * e->d_coeff;    /* Else, exponential decay of output. */
-    
-    //ef->y = envelope_pow[(uint16_t)(ef->y * (float)UINT16_MAX)] * ef->d_coeff; //not quite the right behavior - too much loss of precision?
-    //ef->y = powf(ef->y, 1.000009f) * ef->d_coeff;  // too expensive
-    
-    if( e->y < VSF)   e->y = 0.0f;
-    
-    return e->y;
-}
-
-int     tEnvelopeFollower_decayCoeff(tEnvelopeFollower* const ef, float decayCoeff)
-{
-    _tEnvelopeFollower* e = *ef;
-    return e->d_coeff = decayCoeff;
-}
-
-int     tEnvelopeFollower_attackThresh(tEnvelopeFollower* const ef, float attackThresh)
-{
-    _tEnvelopeFollower* e = *ef;
-    return e->a_thresh = attackThresh;
-}
-
-
-//===========================================================================
-/* Power Follower */
-//===========================================================================
-void    tPowerFollower_init(tPowerFollower* const pf, float factor)
-{
-    _tPowerFollower* p = *pf = (_tPowerFollower*) leaf_alloc(sizeof(_tPowerFollower));
-    
-    p->curr=0.0f;
-    p->factor=factor;
-    p->oneminusfactor=1.0f-factor;
-}
-
-void tPowerFollower_free(tPowerFollower* const pf)
-{
-    _tPowerFollower* p = *pf;
-    
-    leaf_free(p);
-}
-
-void    tPowerFollower_initToPool   (tPowerFollower* const pf, float factor, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPowerFollower* p = *pf = (_tPowerFollower*) mpool_alloc(sizeof(_tPowerFollower), &m->pool);
-    
-    p->curr=0.0f;
-    p->factor=factor;
-    p->oneminusfactor=1.0f-factor;
-}
-
-void    tPowerFollower_freeFromPool (tPowerFollower* const pf, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPowerFollower* p = *pf;
-    
-    mpool_free(p, &m->pool);
-}
-
-int     tPowerFollower_setFactor(tPowerFollower* const pf, float factor)
-{
-    _tPowerFollower* p = *pf;
-    
-    if (factor<0) factor=0;
-    if (factor>1) factor=1;
-    p->factor=factor;
-    p->oneminusfactor=1.0f-factor;
-    return 0;
-}
-
-float   tPowerFollower_tick(tPowerFollower* const pf, float input)
-{
-    _tPowerFollower* p = *pf;
-    p->curr = p->factor*input*input+p->oneminusfactor*p->curr;
-    return p->curr;
-}
-
-float   tPowerFollower_sample(tPowerFollower* const pf)
-{
-    _tPowerFollower* p = *pf;
-    return p->curr;
-}
-
-
-
-
-//===========================================================================
-/* ---------------- env~ - simple envelope follower. ----------------- */
-//===========================================================================
-
-void tEnvPD_init(tEnvPD* const xpd, int ws, int hs, int bs)
-{
-    _tEnvPD* x = *xpd = (_tEnvPD*) leaf_calloc(sizeof(_tEnvPD));
-    
-    int period = hs, npoints = ws;
-    
-    int i;
-    
-    if (npoints < 1) npoints = 1024;
-    if (period < 1) period = npoints/2;
-    if (period < npoints / MAXOVERLAP + 1)
-        period = npoints / MAXOVERLAP + 1;
-    
-    x->x_npoints = npoints;
-    x->x_phase = 0;
-    x->x_period = period;
-    
-    x->windowSize = npoints;
-    x->hopSize = period;
-    x->blockSize = bs;
-    
-    for (i = 0; i < MAXOVERLAP; i++) x->x_sumbuf[i] = 0.0f;
-    for (i = 0; i < npoints; i++)
-        x->buf[i] = (1.0f - cosf((TWO_PI * i) / npoints))/npoints;
-    for (; i < npoints+INITVSTAKEN; i++) x->buf[i] = 0.0f;
-    
-    x->x_f = 0.0f;
-    
-    x->x_allocforvs = INITVSTAKEN;
-    
-    // ~ ~ ~ dsp ~ ~ ~
-    if (x->x_period % x->blockSize)
-    {
-        x->x_realperiod = x->x_period + x->blockSize - (x->x_period % x->blockSize);
-    }
-    else
-    {
-        x->x_realperiod = x->x_period;
-    }
-    // ~ ~ ~ ~ ~ ~ ~ ~
-}
-
-void tEnvPD_free (tEnvPD* const xpd)
-{
-    _tEnvPD* x = *xpd;
-    
-    leaf_free(x);
-}
-
-void    tEnvPD_initToPool       (tEnvPD* const xpd, int ws, int hs, int bs, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tEnvPD* x = *xpd = (_tEnvPD*) mpool_calloc(sizeof(_tEnvPD), &m->pool);
-    
-    int period = hs, npoints = ws;
-    
-    int i;
-    
-    if (npoints < 1) npoints = 1024;
-    if (period < 1) period = npoints/2;
-    if (period < npoints / MAXOVERLAP + 1)
-        period = npoints / MAXOVERLAP + 1;
-    
-    x->x_npoints = npoints;
-    x->x_phase = 0;
-    x->x_period = period;
-    
-    x->windowSize = npoints;
-    x->hopSize = period;
-    x->blockSize = bs;
-    
-    for (i = 0; i < MAXOVERLAP; i++) x->x_sumbuf[i] = 0;
-    for (i = 0; i < npoints; i++)
-        x->buf[i] = (1.0f - cosf((2 * PI * i) / npoints))/npoints;
-    for (; i < npoints+INITVSTAKEN; i++) x->buf[i] = 0;
-    
-    x->x_f = 0;
-    
-    x->x_allocforvs = INITVSTAKEN;
-    
-    // ~ ~ ~ dsp ~ ~ ~
-    if (x->x_period % x->blockSize)
-    {
-        x->x_realperiod = x->x_period + x->blockSize - (x->x_period % x->blockSize);
-    }
-    else
-    {
-        x->x_realperiod = x->x_period;
-    }
-    // ~ ~ ~ ~ ~ ~ ~ ~
-}
-
-void    tEnvPD_freeFromPool     (tEnvPD* const xpd, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tEnvPD* x = *xpd;
-    
-    mpool_free(x, &m->pool);
-}
-
-float tEnvPD_tick (tEnvPD* const xpd)
-{
-    _tEnvPD* x = *xpd;
-    return powtodb(x->x_result);
-}
-
-void tEnvPD_processBlock(tEnvPD* const xpd, float* in)
-{
-    _tEnvPD* x = *xpd;
-    
-    int n = x->blockSize;
-    
-    int count;
-    t_sample *sump;
-    in += n;
-    for (count = x->x_phase, sump = x->x_sumbuf;
-         count < x->x_npoints; count += x->x_realperiod, sump++)
-    {
-        t_sample *hp = x->buf + count;
-        t_sample *fp = in;
-        t_sample sum = *sump;
-        int i;
-        
-        for (i = 0; i < n; i++)
-        {
-            fp--;
-            sum += *hp++ * (*fp * *fp);
-        }
-        *sump = sum;
-    }
-    sump[0] = 0;
-    x->x_phase -= n;
-    if (x->x_phase < 0)
-    {
-        x->x_result = x->x_sumbuf[0];
-        for (count = x->x_realperiod, sump = x->x_sumbuf;
-             count < x->x_npoints; count += x->x_realperiod, sump++)
-            sump[0] = sump[1];
-        sump[0] = 0;
-        x->x_phase = x->x_realperiod - n;
-    }
-}
-
-//===========================================================================
-// ATTACKDETECTION
-//===========================================================================
-/********Private function prototypes**********/
-static void atkdtk_init(tAttackDetection* const a, int blocksize, int atk, int rel);
-static void atkdtk_envelope(tAttackDetection* const a, float *in);
-
-/********Constructor/Destructor***************/
-
-void tAttackDetection_init(tAttackDetection* const ad, int blocksize, int atk, int rel)
-{
-    *ad = (_tAttackDetection*) leaf_alloc(sizeof(_tAttackDetection));
-    
-    atkdtk_init(ad, blocksize, atk, rel);
-}
-
-void tAttackDetection_free(tAttackDetection* const ad)
-{
-    _tAttackDetection* a = *ad;
-    
-    leaf_free(a);
-}
-
-void    tAttackDetection_initToPool     (tAttackDetection* const ad, int blocksize, int atk, int rel, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    *ad = (_tAttackDetection*) mpool_alloc(sizeof(_tAttackDetection), &m->pool);
-    
-    atkdtk_init(ad, blocksize, atk, rel);
-}
-
-void    tAttackDetection_freeFromPool   (tAttackDetection* const ad, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tAttackDetection* a = *ad;
-    
-    mpool_free(a, &m->pool);
-}
-
-/*******Public Functions***********/
-
-
-void tAttackDetection_setBlocksize(tAttackDetection* const ad, int size)
-{
-    _tAttackDetection* a = *ad;
-    
-    if(!((size==64)|(size==128)|(size==256)|(size==512)|(size==1024)|(size==2048)))
-        size = DEFBLOCKSIZE;
-    a->blocksize = size;
-    
-    return;
-    
-}
-
-void tAttackDetection_setSamplerate(tAttackDetection* const ad, int inRate)
-{
-    _tAttackDetection* a = *ad;
-    
-    a->samplerate = inRate;
-    
-    //Reset atk and rel to recalculate coeff
-    tAttackDetection_setAttack(ad, a->atk);
-    tAttackDetection_setRelease(ad, a->rel);
-}
-
-void tAttackDetection_setThreshold(tAttackDetection* const ad, float thres)
-{
-    _tAttackDetection* a = *ad;
-    a->threshold = thres;
-}
-
-void tAttackDetection_setAttack(tAttackDetection* const ad, int inAtk)
-{
-    _tAttackDetection* a = *ad;
-    a->atk = inAtk;
-    a->atk_coeff = pow(0.01, 1.0/(a->atk * a->samplerate * 0.001));
-}
-
-void tAttackDetection_setRelease(tAttackDetection* const ad, int inRel)
-{
-    _tAttackDetection* a = *ad;
-    a->rel = inRel;
-    a->rel_coeff = pow(0.01, 1.0/(a->rel * a->samplerate * 0.001));
-}
-
-
-int tAttackDetection_detect(tAttackDetection* const ad, float *in)
-{
-    _tAttackDetection* a = *ad;
-    
-    int result;
-    
-    atkdtk_envelope(ad, in);
-    
-    if(a->env >= a->prevAmp*2) //2 times greater = 6dB increase
-        result = 1;
-    else
-        result = 0;
-    
-    a->prevAmp = a->env;
-    
-    return result;
-}
-
-/*******Private Functions**********/
-
-static void atkdtk_init(tAttackDetection* const ad, int blocksize, int atk, int rel)
-{
-    _tAttackDetection* a = *ad;
-    
-    a->env = 0;
-    a->blocksize = blocksize;
-    a->threshold = DEFTHRESHOLD;
-    a->samplerate = leaf.sampleRate;
-    a->prevAmp = 0;
-    
-    a->env = 0;
-    
-    tAttackDetection_setAttack(ad, atk);
-    tAttackDetection_setRelease(ad, rel);
-}
-
-static void atkdtk_envelope(tAttackDetection* const ad, float *in)
-{
-    _tAttackDetection* a = *ad;
-    
-    int i = 0;
-    float tmp;
-    for(i = 0; i < a->blocksize; ++i){
-        tmp = fastabsf(in[i]);
-        
-        if(tmp > a->env)
-            a->env = a->atk_coeff * (a->env - tmp) + tmp;
-        else
-            a->env = a->rel_coeff * (a->env - tmp) + tmp;
-    }
-    
-}
-
-//===========================================================================
-// SNAC
-//===========================================================================
-/******************************************************************************/
-/***************************** private procedures *****************************/
-/******************************************************************************/
-
-#define REALFFT mayer_realfft
-#define REALIFFT mayer_realifft
-
-static void snac_analyzeframe(tSNAC* const s);
-static void snac_autocorrelation(tSNAC* const s);
-static void snac_normalize(tSNAC* const s);
-static void snac_pickpeak(tSNAC* const s);
-static void snac_periodandfidelity(tSNAC* const s);
-static void snac_biasbuf(tSNAC* const s);
-static float snac_spectralpeak(tSNAC* const s, float periodlength);
-
-
-/******************************************************************************/
-/******************************** constructor, destructor *********************/
-/******************************************************************************/
-
-
-void tSNAC_init(tSNAC* const snac, int overlaparg)
-{
-    _tSNAC* s = *snac = (_tSNAC*) leaf_calloc(sizeof(_tSNAC));
-    
-    s->biasfactor = DEFBIAS;
-    s->timeindex = 0;
-    s->periodindex = 0;
-    s->periodlength = 0.;
-    s->fidelity = 0.;
-    s->minrms = DEFMINRMS;
-    s->framesize = SNAC_FRAME_SIZE;
-    
-    s->inputbuf = (float*) leaf_calloc(sizeof(float) * SNAC_FRAME_SIZE);
-    s->processbuf = (float*) leaf_calloc(sizeof(float) * (SNAC_FRAME_SIZE * 2));
-    s->spectrumbuf = (float*) leaf_calloc(sizeof(float) * (SNAC_FRAME_SIZE / 2));
-    s->biasbuf = (float*) leaf_calloc(sizeof(float) * SNAC_FRAME_SIZE);
-    
-    snac_biasbuf(snac);
-    tSNAC_setOverlap(snac, overlaparg);
-}
-
-void tSNAC_free(tSNAC* const snac)
-{
-    _tSNAC* s = *snac;
-    
-    leaf_free(s->inputbuf);
-    leaf_free(s->processbuf);
-    leaf_free(s->spectrumbuf);
-    leaf_free(s->biasbuf);
-    leaf_free(s);
-}
-
-void    tSNAC_initToPool    (tSNAC* const snac, int overlaparg, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSNAC* s = *snac = (_tSNAC*) mpool_alloc(sizeof(_tSNAC), &m->pool);
-    
-    s->biasfactor = DEFBIAS;
-    s->timeindex = 0;
-    s->periodindex = 0;
-    s->periodlength = 0.;
-    s->fidelity = 0.;
-    s->minrms = DEFMINRMS;
-    s->framesize = SNAC_FRAME_SIZE;
-
-    s->inputbuf = (float*) mpool_calloc(sizeof(float) * SNAC_FRAME_SIZE, &m->pool);
-    s->processbuf = (float*) mpool_calloc(sizeof(float) * (SNAC_FRAME_SIZE * 2), &m->pool);
-    s->spectrumbuf = (float*) mpool_calloc(sizeof(float) * (SNAC_FRAME_SIZE / 2), &m->pool);
-    s->biasbuf = (float*) mpool_calloc(sizeof(float) * SNAC_FRAME_SIZE, &m->pool);
-    
-    snac_biasbuf(snac);
-    tSNAC_setOverlap(snac, overlaparg);
-}
-
-void    tSNAC_freeFromPool  (tSNAC* const snac, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSNAC* s = *snac;
-    
-    mpool_free(s->inputbuf, &m->pool);
-    mpool_free(s->processbuf, &m->pool);
-    mpool_free(s->spectrumbuf, &m->pool);
-    mpool_free(s->biasbuf, &m->pool);
-    mpool_free(s, &m->pool);
-}
-
-/******************************************************************************/
-/************************** public access functions****************************/
-/******************************************************************************/
-
-
-void tSNAC_ioSamples(tSNAC* const snac, float *in, float *out, int size)
-{
-    _tSNAC* s = *snac;
-    
-    int timeindex = s->timeindex;
-    int mask = s->framesize - 1;
-    int outindex = 0;
-    float *inputbuf = s->inputbuf;
-    float *processbuf = s->processbuf;
-    
-    // call analysis function when it is time
-    if(!(timeindex & (s->framesize / s->overlap - 1))) snac_analyzeframe(snac);
-    
-    while(size--)
-    {
-        inputbuf[timeindex] = *in++;
-        out[outindex++] = processbuf[timeindex++];
-        timeindex &= mask;
-    }
-    s->timeindex = timeindex;
-}
-
-void tSNAC_setOverlap(tSNAC* const snac, int lap)
-{
-    _tSNAC* s = *snac;
-    if(!((lap==1)|(lap==2)|(lap==4)|(lap==8))) lap = DEFOVERLAP;
-    s->overlap = lap;
-}
-
-
-void tSNAC_setBias(tSNAC* const snac, float bias)
-{
-    _tSNAC* s = *snac;
-    if(bias > 1.) bias = 1.;
-    if(bias < 0.) bias = 0.;
-    s->biasfactor = bias;
-    snac_biasbuf(snac);
-    return;
-}
-
-
-void tSNAC_setMinRMS(tSNAC* const snac, float rms)
-{
-    _tSNAC* s = *snac;
-    if(rms > 1.) rms = 1.;
-    if(rms < 0.) rms = 0.;
-    s->minrms = rms;
-    return;
-}
-
-
-float tSNAC_getPeriod(tSNAC* const snac)
-{
-    _tSNAC* s = *snac;
-    return(s->periodlength);
-}
-
-
-float tSNAC_getFidelity(tSNAC* const snac)
-{
-    _tSNAC* s = *snac;
-    return(s->fidelity);
-}
-
-
-/******************************************************************************/
-/***************************** private procedures *****************************/
-/******************************************************************************/
-
-
-// main analysis function
-static void snac_analyzeframe(tSNAC* const snac)
-{
-    _tSNAC* s = *snac;
-    
-    int n, tindex = s->timeindex;
-    int framesize = s->framesize;
-    int mask = framesize - 1;
-    float norm = 1. / sqrt((float)(framesize * 2));
-    
-    float *inputbuf = s->inputbuf;
-    float *processbuf = s->processbuf;
-    
-    // copy input to processing buffers
-    for(n=0; n<framesize; n++)
-    {
-        processbuf[n] = inputbuf[tindex] * norm;
-        tindex++;
-        tindex &= mask;
-    }
-    
-    // zeropadding
-    for(n=framesize; n<(framesize<<1); n++) processbuf[n] = 0.;
-    
-    // call analysis procedures
-    snac_autocorrelation(snac);
-    snac_normalize(snac);
-    snac_pickpeak(snac);
-    snac_periodandfidelity(snac);
-}
-
-
-static void snac_autocorrelation(tSNAC* const snac)
-{
-    _tSNAC* s = *snac;
-    
-    int n, m;
-    int framesize = s->framesize;
-    int fftsize = framesize * 2;
-    float *processbuf = s->processbuf;
-    float *spectrumbuf = s->spectrumbuf;
-    
-    REALFFT(fftsize, processbuf);
-    
-    // compute power spectrum
-    processbuf[0] *= processbuf[0];                      // DC
-    processbuf[framesize] *= processbuf[framesize];      // Nyquist
-    
-    for(n=1; n<framesize; n++)
-    {
-        processbuf[n] = processbuf[n] * processbuf[n]
-        + processbuf[fftsize-n] * processbuf[fftsize-n]; // imag coefficients appear reversed
-        processbuf[fftsize-n] = 0.;
-    }
-    
-    // store power spectrum up to SR/4 for possible later use
-    for(m=0; m<(framesize>>1); m++)
-    {
-        spectrumbuf[m] = processbuf[m];
-    }
-    
-    // transform power spectrum to autocorrelation function
-    REALIFFT(fftsize, processbuf);
-    return;
-}
-
-
-static void snac_normalize(tSNAC* const snac)
-{
-    _tSNAC* s = *snac;
-    
-    int framesize = s->framesize;
-    int framesizeplustimeindex = s->framesize + s->timeindex;
-    int timeindexminusone = s->timeindex - 1;
-    int n, m;
-    int mask = framesize - 1;
-    int seek = framesize * SEEK;
-    float *inputbuf = s->inputbuf;
-    float *processbuf= s->processbuf;
-    float signal1, signal2;
-    
-    // minimum RMS implemented as minimum autocorrelation at index 0
-    // functionally equivalent to white noise floor
-    float rms = s->minrms / sqrt(1.0f / (float)framesize);
-    float minrzero = rms * rms;
-    float rzero = processbuf[0];
-    if(rzero < minrzero) rzero = minrzero;
-    double normintegral = (double)rzero * 2.;
-    
-    // normalize biased autocorrelation function
-    // inputbuf is circular buffer: timeindex may be non-zero when overlap > 1
-    processbuf[0] = 1;
-    for(n=1, m=s->timeindex+1; n<seek; n++, m++)
-    {
-        signal1 = inputbuf[(n + timeindexminusone)&mask];
-        signal2 = inputbuf[(framesizeplustimeindex - n)&mask];
-        normintegral -= (double)(signal1 * signal1 + signal2 * signal2);
-        processbuf[n] /= (float)normintegral * 0.5f;
-    }
-    
-    // flush instable function tail
-    for(n = seek; n<framesize; n++) processbuf[n] = 0.;
-    return;
-}
-
-
-static void snac_periodandfidelity(tSNAC* const snac)
-{
-    _tSNAC* s = *snac;
-    
-    float periodlength;
-    
-    if(s->periodindex)
-    {
-        periodlength = (float)s->periodindex +
-        interpolate3phase(s->processbuf, s->periodindex);
-        if(periodlength < 8) periodlength = snac_spectralpeak(snac, periodlength);
-        s->periodlength = periodlength;
-        s->fidelity = interpolate3max(s->processbuf, s->periodindex);
-    }
-    return;
-}
-
-// select the peak which most probably represents period length
-static void snac_pickpeak(tSNAC* const snac)
-{
-    _tSNAC* s = *snac;
-    
-    int n, peakindex=0;
-    int seek = s->framesize * SEEK;
-    float *processbuf= s->processbuf;
-    float maxvalue = 0.;
-    float biasedpeak;
-    float *biasbuf = s->biasbuf;
-    
-    // skip main lobe
-    for(n=1; n<seek; n++)
-    {
-        if(processbuf[n] < 0.) break;
-    }
-    
-    // find interpolated / biased maximum in SNAC function
-    // interpolation finds the 'real maximum'
-    // biasing favours the first candidate
-    for(; n<seek-1; n++)
-    {
-        if(processbuf[n] >= processbuf[n-1])
-        {
-            if(processbuf[n] > processbuf[n+1])     // we have a local peak
-            {
-                biasedpeak = interpolate3max(processbuf, n) * biasbuf[n];
-                
-                if(biasedpeak > maxvalue)
-                {
-                    maxvalue = biasedpeak;
-                    peakindex = n;
-                }
-            }
-        }
-    }
-    s->periodindex = peakindex;
-    return;
-}
-
-
-// verify period length via frequency domain (up till SR/4)
-// frequency domain is more precise than lag domain for period lengths < 8
-// argument 'periodlength' is initial estimation from autocorrelation
-static float snac_spectralpeak(tSNAC* const snac, float periodlength)
-{
-    _tSNAC* s = *snac;
-    
-    if(periodlength < 4.0f) return periodlength;
-    
-    float max = 0.;
-    int n, startbin, stopbin, peakbin = 0;
-    int spectrumsize = s->framesize>>1;
-    float *spectrumbuf = s->spectrumbuf;
-    float peaklocation = (float)(s->framesize * 2.0f) / periodlength;
-    
-    startbin = (int)(peaklocation * 0.8f + 0.5f);
-    if(startbin < 1) startbin = 1;
-    stopbin = (int)(peaklocation * 1.25f + 0.5f);
-    if(stopbin >= spectrumsize - 1) stopbin = spectrumsize - 1;
-    
-    for(n=startbin; n<stopbin; n++)
-    {
-        if(spectrumbuf[n] >= spectrumbuf[n-1])
-        {
-            if(spectrumbuf[n] > spectrumbuf[n+1])
-            {
-                if(spectrumbuf[n] > max)
-                {
-                    max = spectrumbuf[n];
-                    peakbin = n;
-                }
-            }
-        }
-    }
-    
-    // calculate amplitudes in peak region
-    for(n=(peakbin-1); n<(peakbin+2); n++)
-    {
-        spectrumbuf[n] = sqrtf(spectrumbuf[n]);
-    }
-    
-    peaklocation = (float)peakbin + interpolate3phase(spectrumbuf, peakbin);
-    periodlength = (float)(s->framesize * 2.0f) / peaklocation;
-    
-    return periodlength;
-}
-
-
-// modified logarithmic bias function
-static void snac_biasbuf(tSNAC* const snac)
-{
-    _tSNAC* s = *snac;
-    
-    int n;
-    int maxperiod = (int)(s->framesize * (float)SEEK);
-    float bias = s->biasfactor / logf((float)(maxperiod - 4));
-    float *biasbuf = s->biasbuf;
-    
-    for(n=0; n<5; n++)    // periods < 5 samples can't be tracked
-    {
-        biasbuf[n] = 0.0f;
-    }
-    
-    for(n=5; n<maxperiod; n++)
-    {
-        biasbuf[n] = 1.0f - (float)logf(n - 4) * bias;
-    }
-}
-
-//===========================================================================
-// PERIODDETECTION
-//===========================================================================
-void    tPeriodDetection_init    (tPeriodDetection* const pd, float* in, float* out, int bufSize, int frameSize)
-{
-    tPeriodDetection_initToPool(pd, in, out, bufSize, frameSize, &leaf_mempool);
-}
-
-void tPeriodDetection_free (tPeriodDetection* const pd)
-{
-    tPeriodDetection_freeFromPool(pd, &leaf_mempool);
-}
-
-void    tPeriodDetection_initToPool  (tPeriodDetection* const pd, float* in, float* out, int bufSize, int frameSize, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPeriodDetection* p = *pd = (_tPeriodDetection*) mpool_calloc(sizeof(_tPeriodDetection), &m->pool);
-    
-    p->inBuffer = in;
-    p->outBuffer = out;
-    p->bufSize = bufSize;
-    p->frameSize = frameSize;
-    p->framesPerBuffer = p->bufSize / p->frameSize;
-    p->curBlock = 1;
-    p->lastBlock = 0;
-    p->index = 0;
-    
-    p->hopSize = DEFHOPSIZE;
-    p->windowSize = DEFWINDOWSIZE;
-    p->fba = FBA;
-    
-    tEnvPD_initToPool(&p->env, p->windowSize, p->hopSize, p->frameSize, mp);
-    
-    tSNAC_initToPool(&p->snac, DEFOVERLAP, mp);
-    
-    p->timeConstant = DEFTIMECONSTANT;
-    p->radius = expf(-1000.0f * p->hopSize * leaf.invSampleRate / p->timeConstant);
-    p->fidelityThreshold = 0.95;
-}
-
-void    tPeriodDetection_freeFromPool       (tPeriodDetection* const pd, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPeriodDetection* p = *pd;
-    
-    tEnvPD_freeFromPool(&p->env, mp);
-    tSNAC_freeFromPool(&p->snac, mp);
-    mpool_free(p, &m->pool);
-}
-
-float tPeriodDetection_tick (tPeriodDetection* pd, float sample)
-{
-    _tPeriodDetection* p = *pd;
-    
-    int i, iLast;
-    
-    i = (p->curBlock*p->frameSize);
-    iLast = (p->lastBlock*p->frameSize)+p->index;
-    
-    p->i = i;
-    p->iLast = iLast;
-    
-    p->inBuffer[i+p->index] = sample;
-    
-    p->index++;
-    p->indexstore = p->index;
-    if (p->index >= p->frameSize)
-    {
-        p->index = 0;
-        
-        tEnvPD_processBlock(&p->env, &(p->inBuffer[i]));
-        
-        tSNAC_ioSamples(&p->snac, &(p->inBuffer[i]), &(p->outBuffer[i]), p->frameSize);
-        float fidelity = tSNAC_getFidelity(&p->snac);
-        // Fidelity threshold recommended by Katja Vetters is 0.95 for most instruments/voices http://www.katjaas.nl/helmholtz/helmholtz.html
-        if (fidelity > p->fidelityThreshold) p->period = tSNAC_getPeriod(&p->snac);
-        
-        p->curBlock++;
-        if (p->curBlock >= p->framesPerBuffer) p->curBlock = 0;
-        p->lastBlock++;
-        if (p->lastBlock >= p->framesPerBuffer) p->lastBlock = 0;
-    }
-    
-    return p->period;
-}
-
-float tPeriodDetection_getPeriod(tPeriodDetection* pd)
-{
-    _tPeriodDetection* p = *pd;
-    return p->period;
-}
-
-void tPeriodDetection_setHopSize(tPeriodDetection* pd, int hs)
-{
-    _tPeriodDetection* p = *pd;
-    p->hopSize = hs;
-}
-
-void tPeriodDetection_setWindowSize(tPeriodDetection* pd, int ws)
-{
-    _tPeriodDetection* p = *pd;
-    p->windowSize = ws;
-}
-
-void tPeriodDetection_setFidelityThreshold(tPeriodDetection* pd, float threshold)
-{
-    _tPeriodDetection* p = *pd;
-    p->fidelityThreshold = threshold;
-}
--- a/LEAF/Src/leaf-delay.c
+++ /dev/null
@@ -1,928 +1,0 @@
-/*==============================================================================
-
-    leaf-delay.c
-    Created: 20 Jan 2017 12:01:24pm
-    Author:  Michael R Mulshine
-
-==============================================================================*/
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-delay.h"
-#include "..\leaf.h"
-
-#else
-
-#include "../Inc/leaf-delay.h"
-#include "../leaf.h"
-
-#endif
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Delay ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void    tDelay_init (tDelay* const dl, uint32_t delay, uint32_t maxDelay)
-{
-    tDelay_initToPool(dl, delay, maxDelay, &leaf_mempool);
-}
-
-void    tDelay_free(tDelay* const dl)
-{
-    tDelay_freeFromPool(dl, &leaf_mempool);
-}
-
-void    tDelay_initToPool   (tDelay* const dl, uint32_t delay, uint32_t maxDelay, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tDelay* d = *dl = (_tDelay*) mpool_alloc(sizeof(_tDelay), &m->pool);
-    
-    d->maxDelay = maxDelay;
-    
-    d->delay = delay;
-    
-    d->buff = (float*) mpool_alloc(sizeof(float) * maxDelay, &m->pool);
-    
-    d->inPoint = 0;
-    d->outPoint = 0;
-    
-    d->lastIn = 0.0f;
-    d->lastOut = 0.0f;
-    
-    d->gain = 1.0f;
-    
-    tDelay_setDelay(dl, d->delay);
-}
-
-void        tDelay_freeFromPool (tDelay* const dl, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tDelay* d = *dl;
-    
-    mpool_free(d->buff, &m->pool);
-    mpool_free(d, &m->pool);
-}
-
-void    tDelay_clear(tDelay* const dl)
-{
-    _tDelay* d = *dl;
-    for (int i = 0; i < d->maxDelay; i++)
-    {
-        d->buff[i] = 0;
-    }
-}
-
-float   tDelay_tick (tDelay* const dl, float input)
-{
-    _tDelay* d = *dl;
-    
-    // Input
-    d->lastIn = input;
-    d->buff[d->inPoint] = input * d->gain;
-    if (++(d->inPoint) == d->maxDelay)     d->inPoint = 0;
-    
-    // Output
-    d->lastOut = d->buff[d->outPoint];
-    if (++(d->outPoint) == d->maxDelay)    d->outPoint = 0;
-    
-    return d->lastOut;
-}
-
-int     tDelay_setDelay (tDelay* const dl, uint32_t delay)
-{
-    _tDelay* d = *dl;
-    
-    d->delay = LEAF_clip(0.0f, delay,  d->maxDelay);
-    
-    // read chases write
-    if ( d->inPoint >= delay )  d->outPoint = d->inPoint - d->delay;
-    else                        d->outPoint = d->maxDelay + d->inPoint - d->delay;
-    
-    return 0;
-}
-
-float tDelay_tapOut (tDelay* const dl, uint32_t tapDelay)
-{
-    _tDelay* d = *dl;
-    
-    int32_t tap = d->inPoint - tapDelay - 1;
-    
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-    
-    return d->buff[tap];
-    
-}
-
-void tDelay_tapIn (tDelay* const dl, float value, uint32_t tapDelay)
-{
-    _tDelay* d = *dl;
-    
-    int32_t tap = d->inPoint - tapDelay - 1;
-    
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-    
-    d->buff[tap] = value;
-}
-
-float tDelay_addTo (tDelay* const dl, float value, uint32_t tapDelay)
-{
-    _tDelay* d = *dl;
-    
-    int32_t tap = d->inPoint - tapDelay - 1;
-    
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-    
-    return (d->buff[tap] += value);
-}
-
-uint32_t   tDelay_getDelay (tDelay* const dl)
-{
-    _tDelay* d = *dl;
-    return d->delay;
-}
-
-float   tDelay_getLastOut (tDelay* const dl)
-{
-    _tDelay* d = *dl;
-    return d->lastOut;
-}
-
-float   tDelay_getLastIn (tDelay* const dl)
-{
-    _tDelay* d = *dl;
-    return d->lastIn;
-}
-
-void tDelay_setGain (tDelay* const dl, float gain)
-{
-    _tDelay* d = *dl;
-    if (gain < 0.0f)    d->gain = 0.0f;
-    else                d->gain = gain;
-}
-
-float tDelay_getGain (tDelay* const dl)
-{
-    _tDelay* d = *dl;
-    return d->gain;
-}
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ LinearDelay ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void   tLinearDelay_init (tLinearDelay* const dl, float delay, uint32_t maxDelay)
-{
-    tLinearDelay_initToPool(dl, delay, maxDelay, &leaf_mempool);
-}
-
-void tLinearDelay_free(tLinearDelay* const dl)
-{
-    tLinearDelay_freeFromPool(dl, &leaf_mempool);
-}
-
-void    tLinearDelay_initToPool  (tLinearDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tLinearDelay* d = *dl = (_tLinearDelay*) mpool_alloc(sizeof(_tLinearDelay), &m->pool);
-    
-    d->maxDelay = maxDelay;
-    
-    if (delay > maxDelay)   d->delay = maxDelay;
-    else if (delay < 0.0f)  d->delay = 0.0f;
-    else                    d->delay = delay;
-    
-    d->buff = (float*) mpool_alloc(sizeof(float) * maxDelay, &m->pool);
-    
-    d->gain = 1.0f;
-    
-    d->lastIn = 0.0f;
-    d->lastOut = 0.0f;
-    
-    d->inPoint = 0;
-    d->outPoint = 0;
-    
-    tLinearDelay_setDelay(dl, d->delay);
-}
-
-void    tLinearDelay_freeFromPool(tLinearDelay* const dl, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tLinearDelay* d = *dl;
-    
-    mpool_free(d->buff, &m->pool);
-    mpool_free(d, &m->pool);
-}
-
-void    tLinearDelay_clear(tLinearDelay* const dl)
-{
-	_tLinearDelay* d = *dl;
-	for (int i = 0; i < d->maxDelay; i++)
-	{
-		d->buff[i] = 0;
-	}
-}
-
-float   tLinearDelay_tick (tLinearDelay* const dl, float input)
-{
-    _tLinearDelay* d = *dl;
-    
-    d->buff[d->inPoint] = input * d->gain;
-    
-    // Increment input pointer modulo length.
-    if (++(d->inPoint) == d->maxDelay )    d->inPoint = 0;
-
-    uint32_t idx = (uint32_t) d->outPoint;
-    // First 1/2 of interpolation
-    d->lastOut = d->buff[idx] * d->omAlpha;
-        // Second 1/2 of interpolation
-    if ((idx + 1) < d->maxDelay)
-        d->lastOut += d->buff[idx+1] * d->alpha;
-    else
-        d->lastOut += d->buff[0] * d->alpha;
-
-    // Increment output pointer modulo length
-    if ( (++d->outPoint) >= d->maxDelay )   d->outPoint = 0;
-    
-    return d->lastOut;
-}
-
-void   tLinearDelay_tickIn (tLinearDelay* const dl, float input)
-{
-    _tLinearDelay* d = *dl;
-    
-    d->buff[d->inPoint] = input * d->gain;
-
-    // Increment input pointer modulo length.
-    if (++(d->inPoint) == d->maxDelay )    d->inPoint = 0;
-}
-
-float   tLinearDelay_tickOut (tLinearDelay* const dl)
-{
-    _tLinearDelay* d = *dl;
-    
-	uint32_t idx = (uint32_t) d->outPoint;
-	// First 1/2 of interpolation
-	d->lastOut = d->buff[idx] * d->omAlpha;
-		// Second 1/2 of interpolation
-	if ((idx + 1) < d->maxDelay)
-		d->lastOut += d->buff[idx+1] * d->alpha;
-	else
-		d->lastOut += d->buff[0] * d->alpha;
-
-	// Increment output pointer modulo length
-	if ( (++d->outPoint) >= d->maxDelay )   d->outPoint = 0;
-
-	return d->lastOut;
-}
-
-int     tLinearDelay_setDelay (tLinearDelay* const dl, float delay)
-{
-    _tLinearDelay* d = *dl;
-    
-    d->delay = LEAF_clip(0.0f, delay,  d->maxDelay);
-    
-    float outPointer = d->inPoint - d->delay;
-    
-    while ( outPointer < 0 )
-        outPointer += d->maxDelay; // modulo maximum length
-    
-    d->outPoint = (uint32_t) outPointer;   // integer part
-    
-    d->alpha = outPointer - d->outPoint; // fractional part
-    d->omAlpha = 1.0f - d->alpha;
-    
-    if ( d->outPoint == d->maxDelay ) d->outPoint = 0;
-    
-    return 0;
-}
-
-float tLinearDelay_tapOut (tLinearDelay* const dl, uint32_t tapDelay)
-{
-    _tLinearDelay* d = *dl;
-    
-    uint32_t tap = d->inPoint - tapDelay - 1;
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-    
-    return d->buff[tap];
-}
-
-void tLinearDelay_tapIn (tLinearDelay* const dl, float value, uint32_t tapDelay)
-{
-    _tLinearDelay* d = *dl;
-    
-    uint32_t tap = d->inPoint - tapDelay - 1;
-    
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-    
-    d->buff[tap] = value;
-}
-
-float tLinearDelay_addTo (tLinearDelay* const dl, float value, uint32_t tapDelay)
-{
-    _tLinearDelay* d = *dl;
-    
-    int32_t tap = d->inPoint - tapDelay - 1;
-    
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-    
-    return (d->buff[tap] += value);
-}
-
-float   tLinearDelay_getDelay (tLinearDelay* const dl)
-{
-    _tLinearDelay* d = *dl;
-    return d->delay;
-}
-
-float   tLinearDelay_getLastOut (tLinearDelay* const dl)
-{
-    _tLinearDelay* d = *dl;
-    return d->lastOut;
-}
-
-float   tLinearDelay_getLastIn (tLinearDelay* const dl)
-{
-    _tLinearDelay* d = *dl;
-    return d->lastIn;
-}
-
-void tLinearDelay_setGain (tLinearDelay* const dl, float gain)
-{
-    _tLinearDelay* d = *dl;
-    if (gain < 0.0f)    d->gain = 0.0f;
-    else                d->gain = gain;
-}
-
-float tLinearDelay_getGain (tLinearDelay* const dl)
-{
-    _tLinearDelay* d = *dl;
-    return d->gain;
-}
-
-
-
-
-
-/// Hermite Interpolated Delay
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ LinearDelay ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void   tHermiteDelay_init (tHermiteDelay* const dl, float delay, uint32_t maxDelay)
-{
-    tHermiteDelay_initToPool(dl, delay, maxDelay, &leaf_mempool);
-}
-
-void tHermiteDelay_free(tHermiteDelay* const dl)
-{
-    tHermiteDelay_freeFromPool(dl, &leaf_mempool);
-}
-
-void    tHermiteDelay_initToPool  (tHermiteDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tHermiteDelay* d = *dl = (_tHermiteDelay*) mpool_alloc(sizeof(_tHermiteDelay), &m->pool);
-
-    d->maxDelay = maxDelay;
-
-    if (delay > maxDelay)   d->delay = maxDelay;
-    else if (delay < 0.0f)  d->delay = 0.0f;
-    else                    d->delay = delay;
-
-    d->buff = (float*) mpool_alloc(sizeof(float) * maxDelay, &m->pool);
-
-    d->gain = 1.0f;
-
-    d->lastIn = 0.0f;
-    d->lastOut = 0.0f;
-
-    d->inPoint = 0;
-    d->outPoint = 0;
-
-    tHermiteDelay_setDelay(dl, d->delay);
-}
-
-void    tHermiteDelay_freeFromPool(tHermiteDelay* const dl, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tHermiteDelay* d = *dl;
-
-    mpool_free(d->buff, &m->pool);
-    mpool_free(d, &m->pool);
-}
-
-
-void    tHermiteDelay_clear(tHermiteDelay* const dl)
-{
-	_tHermiteDelay* d = *dl;
-	for (int i = 0; i < d->maxDelay; i++)
-	{
-		d->buff[i] = 0;
-	}
-}
-
-float   tHermiteDelay_tick (tHermiteDelay* const dl, float input)
-{
-	_tHermiteDelay* d = *dl;
-
-    d->buff[d->inPoint] = input * d->gain;
-
-    // Increment input pointer modulo length.
-    if (++(d->inPoint) == d->maxDelay )    d->inPoint = 0;
-
-
-    uint32_t idx = (uint32_t) d->outPoint;
-    d->lastOut =    LEAF_interpolate_hermite (d->buff[((idx - 1) + d->maxDelay) % d->maxDelay],
-                                              d->buff[idx],
-                                              d->buff[(idx + 1) % d->maxDelay],
-                                              d->buff[(idx + 2) % d->maxDelay],
-                                              d->alpha);
-
-    // Increment output pointer modulo length
-    if ( (++d->outPoint) >= d->maxDelay )   d->outPoint = 0;
-
-    return d->lastOut;
-}
-
-void   tHermiteDelay_tickIn (tHermiteDelay* const dl, float input)
-{
-	_tHermiteDelay* d = *dl;
-
-    d->buff[d->inPoint] = input * d->gain;
-
-    // Increment input pointer modulo length.
-    if (++(d->inPoint) == d->maxDelay )    d->inPoint = 0;
-}
-
-float   tHermiteDelay_tickOut (tHermiteDelay* const dl)
-{
-	_tHermiteDelay* d = *dl;
-
-    uint32_t idx = (uint32_t) d->outPoint;
-
-
-
-    d->lastOut =    LEAF_interpolate_hermite (d->buff[((idx - 1) + d->maxDelay) % d->maxDelay],
-                                              d->buff[idx],
-                                              d->buff[(idx + 1) % d->maxDelay],
-                                              d->buff[(idx + 2) % d->maxDelay],
-                                              d->alpha);
-
-    // Increment output pointer modulo length
-    if ( (++d->outPoint) >= d->maxDelay )   d->outPoint = 0;
-
-    return d->lastOut;
-}
-
-int     tHermiteDelay_setDelay (tHermiteDelay* const dl, float delay)
-{
-	_tHermiteDelay* d = *dl;
-
-    d->delay = LEAF_clip(0.0f, delay,  d->maxDelay);
-
-    float outPointer = d->inPoint - d->delay;
-
-    while ( outPointer < 0 )
-        outPointer += d->maxDelay; // modulo maximum length
-
-    d->outPoint = (uint32_t) outPointer;   // integer part
-
-    d->alpha = outPointer - d->outPoint; // fractional part
-    d->omAlpha = 1.0f - d->alpha;
-
-    if ( d->outPoint == d->maxDelay ) d->outPoint = 0;
-
-    return 0;
-}
-
-float tHermiteDelay_tapOut (tHermiteDelay* const dl, uint32_t tapDelay)
-{
-	_tHermiteDelay* d = *dl;
-
-    uint32_t tap = d->inPoint - tapDelay - 1;
-
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-
-    return d->buff[tap];
-
-}
-
-void tHermiteDelay_tapIn (tHermiteDelay* const dl, float value, uint32_t tapDelay)
-{
-	_tHermiteDelay* d = *dl;
-
-    int32_t tap = d->inPoint - tapDelay - 1;
-
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-
-    d->buff[tap] = value;
-}
-
-float tHermiteDelay_addTo (tHermiteDelay* const dl, float value, uint32_t tapDelay)
-{
-	_tHermiteDelay* d = *dl;
-
-    int32_t tap = d->inPoint - tapDelay - 1;
-
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-
-    return (d->buff[tap] += value);
-}
-
-float   tHermiteDelay_getDelay (tHermiteDelay* const dl)
-{
-    _tHermiteDelay* d = *dl;
-    return d->delay;
-}
-
-float   tHermiteDelay_getLastOut (tHermiteDelay* const dl)
-{
-	_tHermiteDelay* d = *dl;
-    return d->lastOut;
-}
-
-float   tHermiteDelay_getLastIn (tHermiteDelay* const dl)
-{
-	_tHermiteDelay* d = *dl;
-    return d->lastIn;
-}
-
-void tHermiteDelay_setGain (tHermiteDelay* const dl, float gain)
-{
-	_tHermiteDelay* d = *dl;
-    if (gain < 0.0f)    d->gain = 0.0f;
-    else                d->gain = gain;
-}
-
-float tHermiteDelay_getGain (tHermiteDelay* const dl)
-{
-	_tHermiteDelay* d = *dl;
-    return d->gain;
-}
-
-
-
-
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ AllpassDelay ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void  tAllpassDelay_init (tAllpassDelay* const dl, float delay, uint32_t maxDelay)
-{
-    tAllpassDelay_initToPool(dl, delay, maxDelay, &leaf_mempool);
-}
-
-void tAllpassDelay_free(tAllpassDelay* const dl)
-{
-    tAllpassDelay_freeFromPool(dl, &leaf_mempool);
-}
-
-void    tAllpassDelay_initToPool  (tAllpassDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tAllpassDelay* d = *dl = (_tAllpassDelay*) mpool_alloc(sizeof(_tAllpassDelay), &m->pool);
-    
-    d->maxDelay = maxDelay;
-    
-    if (delay > maxDelay)   d->delay = maxDelay;
-    else if (delay < 0.0f)  d->delay = 0.0f;
-    else                    d->delay = delay;
-    
-    d->buff = (float*) mpool_alloc(sizeof(float) * maxDelay, &m->pool);
-    
-    d->gain = 1.0f;
-    
-    d->lastIn = 0.0f;
-    d->lastOut = 0.0f;
-    
-    d->inPoint = 0;
-    d->outPoint = 0;
-    
-    tAllpassDelay_setDelay(dl, d->delay);
-    
-    d->apInput = 0.0f;
-}
-
-void    tAllpassDelay_freeFromPool(tAllpassDelay* const dl, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tAllpassDelay* d = *dl;
-    
-    mpool_free(d->buff, &m->pool);
-    mpool_free(d, &m->pool);
-}
-
-void    tAllpassDelay_clear(tAllpassDelay* const dl)
-{
-    _tAllpassDelay* d = *dl;
-    for (int i = 0; i < d->maxDelay; i++)
-    {
-        d->buff[i] = 0;
-    }
-}
-
-float   tAllpassDelay_tick (tAllpassDelay* const dl, float input)
-{
-    _tAllpassDelay* d = *dl;
-    
-    d->buff[d->inPoint] = input * d->gain;
-    
-    // Increment input pointer modulo length.
-    if ( ++(d->inPoint) >= d->maxDelay )    d->inPoint = 0;
-    
-    // Do allpass interpolation delay.
-    float out = d->lastOut * -d->coeff;
-    out += d->apInput + ( d->coeff * d->buff[d->outPoint] );
-    d->lastOut = out;
-    
-    // Save allpass input
-    d->apInput = d->buff[d->outPoint];
-    
-    // Increment output pointer modulo length.
-    if (++(d->outPoint) >= d->maxDelay )   d->outPoint = 0;
-    
-    return d->lastOut;
-}
-
-int     tAllpassDelay_setDelay (tAllpassDelay* const dl, float delay)
-{
-    _tAllpassDelay* d = *dl;
-    
-    d->delay = LEAF_clip(0.5f, delay,  d->maxDelay);
-    
-    // outPoint chases inPoint
-    float outPointer = (float)d->inPoint - d->delay + 1.0f;
-    
-    while ( outPointer < 0 )    outPointer += d->maxDelay;  // mod max length
-    
-    d->outPoint = (uint32_t) outPointer;         // integer part
-    
-    if ( d->outPoint >= d->maxDelay )   d->outPoint = 0;
-    
-    d->alpha = 1.0f + (float)d->outPoint - outPointer; // fractional part
-    
-    if ( d->alpha < 0.5f )
-    {
-        // The optimal range for alpha is about 0.5 - 1.5 in order to
-        // achieve the flattest phase delay response.
-        
-        d->outPoint += 1;
-        
-        if ( d->outPoint >= d->maxDelay ) d->outPoint -= d->maxDelay;
-        
-        d->alpha += 1.0f;
-    }
-    
-    d->coeff = (1.0f - d->alpha) / (1.0f + d->alpha);  // coefficient for allpass
-    
-    return 0;
-}
-
-float tAllpassDelay_tapOut (tAllpassDelay* const dl, uint32_t tapDelay)
-{
-    _tAllpassDelay* d = *dl;
-    
-    int32_t tap = d->inPoint - tapDelay - 1;
-    
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-    
-    return d->buff[tap];
-    
-}
-
-void tAllpassDelay_tapIn (tAllpassDelay* const dl, float value, uint32_t tapDelay)
-{
-    _tAllpassDelay* d = *dl;
-    
-    int32_t tap = d->inPoint - tapDelay - 1;
-    
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-    
-    d->buff[tap] = value;
-}
-
-float tAllpassDelay_addTo (tAllpassDelay* const dl, float value, uint32_t tapDelay)
-{
-    _tAllpassDelay* d = *dl;
-    
-    int32_t tap = d->inPoint - tapDelay - 1;
-    
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-    
-    return (d->buff[tap] += value);
-}
-
-float   tAllpassDelay_getDelay (tAllpassDelay* const dl)
-{
-    _tAllpassDelay* d = *dl;
-    return d->delay;
-}
-
-float   tAllpassDelay_getLastOut (tAllpassDelay* const dl)
-{
-    _tAllpassDelay* d = *dl;
-    return d->lastOut;
-}
-
-float   tAllpassDelay_getLastIn (tAllpassDelay* const dl)
-{
-    _tAllpassDelay* d = *dl;
-    return d->lastIn;
-}
-
-void tAllpassDelay_setGain (tAllpassDelay* const dl, float gain)
-{
-    _tAllpassDelay* d = *dl;
-    if (gain < 0.0f)    d->gain = 0.0f;
-    else                d->gain = gain;
-}
-
-float tAllpassDelay_getGain (tAllpassDelay* const dl)
-{
-    _tAllpassDelay* d = *dl;
-    return d->gain;
-}
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ TapeDelay ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void   tTapeDelay_init (tTapeDelay* const dl, float delay, uint32_t maxDelay)
-{
-    tTapeDelay_initToPool(dl, delay, maxDelay, &leaf_mempool);
-}
-
-void tTapeDelay_free(tTapeDelay* const dl)
-{
-    tTapeDelay_freeFromPool(dl, &leaf_mempool);
-}
-
-void    tTapeDelay_initToPool  (tTapeDelay* const dl, float delay, uint32_t maxDelay, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tTapeDelay* d = *dl = (_tTapeDelay*) mpool_alloc(sizeof(_tTapeDelay), &m->pool);
-    
-    d->maxDelay = maxDelay;
-    
-    d->buff = (float*) mpool_alloc(sizeof(float) * maxDelay, &m->pool);
-    
-    d->gain = 1.0f;
-    
-    d->lastIn = 0.0f;
-    d->lastOut = 0.0f;
-    
-    d->idx = 0.0f;
-    d->inc = 1.0f;
-    d->inPoint = 0;
-    
-    tTapeDelay_setDelay(dl, delay);
-}
-
-void    tTapeDelay_freeFromPool(tTapeDelay* const dl, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tTapeDelay* d = *dl;
-    
-    mpool_free(d->buff, &m->pool);
-    mpool_free(d, &m->pool);
-}
-
-void    tTapeDelay_clear(tTapeDelay* const dl)
-{
-    _tTapeDelay* d = *dl;
-    for (int i = 0; i < d->maxDelay; i++)
-    {
-        d->buff[i] = 0;
-    }
-}
-
-//#define SMOOTH_FACTOR 10.f
-
-float   tTapeDelay_tick (tTapeDelay* const dl, float input)
-{
-    _tTapeDelay* d = *dl;
-    
-    d->buff[d->inPoint] = input * d->gain;
-    
-    // Increment input pointer modulo length.
-    if (++(d->inPoint) == d->maxDelay )    d->inPoint = 0;
-
-    int idx =  (int) d->idx;
-    float alpha = d->idx - idx;
-    
-    d->lastOut =    LEAF_interpolate_hermite_x (d->buff[((idx - 1) + d->maxDelay) % d->maxDelay],
-                                              d->buff[idx],
-                                              d->buff[(idx + 1) % d->maxDelay],
-                                              d->buff[(idx + 2) % d->maxDelay],
-                                              alpha);
-    
-    float diff = (d->inPoint - d->idx);
-    while (diff < 0.f) diff += d->maxDelay;
-    
-    d->inc = 1.0f + (diff - d->delay) / d->delay; //* SMOOTH_FACTOR;
-
-    d->idx += d->inc;
-    
-    if (d->idx >= d->maxDelay) d->idx = 0.0f;
-
-    if (d->lastOut)
-        return d->lastOut;
-    return 0.0f;
-}
-
-void  tTapeDelay_incrementInPoint(tTapeDelay* const dl)
-{
-    _tTapeDelay* d = *dl;
-    // Increment input pointer modulo length.
-    if (++(d->inPoint) == d->maxDelay )    d->inPoint = 0;
-}
-
-
-void tTapeDelay_setRate(tTapeDelay* const dl, float rate)
-{
-    _tTapeDelay* d = *dl;
-    d->inc = rate;
-}
-
-void     tTapeDelay_setDelay (tTapeDelay* const dl, float delay)
-{
-    _tTapeDelay* d = *dl;
-    d->delay = LEAF_clip(1.f, delay,  d->maxDelay);
-}
-
-float tTapeDelay_tapOut (tTapeDelay* const dl, float tapDelay)
-{
-    _tTapeDelay* d = *dl;
-    
-    float tap = (float) d->inPoint - tapDelay - 1.f;
-    
-    // Check for wraparound.
-    while ( tap < 0.f )   tap += (float)d->maxDelay;
-    
-    int idx =  (int) tap;
-    
-    float alpha = tap - idx;
-    
-    float samp =    LEAF_interpolate_hermite_x (d->buff[((idx - 1) + d->maxDelay) % d->maxDelay],
-                                              d->buff[idx],
-                                              d->buff[(idx + 1) % d->maxDelay],
-                                              d->buff[(idx + 2) % d->maxDelay],
-                                              alpha);
-    
-    return samp;
-    
-}
-
-void tTapeDelay_tapIn (tTapeDelay* const dl, float value, uint32_t tapDelay)
-{
-    _tTapeDelay* d = *dl;
-    
-    int32_t tap = d->inPoint - tapDelay - 1;
-    
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-    
-    d->buff[tap] = value;
-}
-
-float tTapeDelay_addTo (tTapeDelay* const dl, float value, uint32_t tapDelay)
-{
-    _tTapeDelay* d = *dl;
-    
-    int32_t tap = d->inPoint - tapDelay - 1;
-    
-    // Check for wraparound.
-    while ( tap < 0 )   tap += d->maxDelay;
-    
-    return (d->buff[tap] += value);
-}
-
-float   tTapeDelay_getDelay (tTapeDelay *dl)
-{
-    _tTapeDelay* d = *dl;
-    return d->delay;
-}
-
-float   tTapeDelay_getLastOut (tTapeDelay* const dl)
-{
-    _tTapeDelay* d = *dl;
-    return d->lastOut;
-}
-
-float   tTapeDelay_getLastIn (tTapeDelay* const dl)
-{
-    _tTapeDelay* d = *dl;
-    return d->lastIn;
-}
-
-void tTapeDelay_setGain (tTapeDelay* const dl, float gain)
-{
-    _tTapeDelay* d = *dl;
-    if (gain < 0.0f)    d->gain = 0.0f;
-    else                d->gain = gain;
-}
-
-float tTapeDelay_getGain (tTapeDelay* const dl)
-{
-    _tTapeDelay* d = *dl;
-    return d->gain;
-}
-
--- a/LEAF/Src/leaf-distortion.c
+++ /dev/null
@@ -1,587 +1,0 @@
-//
-//  leaf-distortion.c
-//  LEAF
-//
-//  Created by Jeff Snyder, Matthew Wang, Michael Mulshine, and Joshua Becker
-//  Copyright © 2019 Princeton University. All rights reserved.
-//
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-distortion.h"
-#include "..\Inc\leaf-tables.h"
-#else
-
-
-#include "../Inc/leaf-distortion.h"
-#include "../Inc/leaf-tables.h"
-
-//testing
-//#include "gpio.h"
-
-#endif
-
-//============================================================================================================
-// Sample-Rate reducer
-//============================================================================================================
-
-
-void tSampleReducer_init(tSampleReducer* const sr)
-{
-    _tSampleReducer* s = *sr = (_tSampleReducer*) leaf_alloc(sizeof(_tSampleReducer));
-    
-    s->invRatio = 1.0f;
-    s->hold = 0.0f;
-    s->count = 0;
-}
-
-void    tSampleReducer_free    (tSampleReducer* const sr)
-{
-    _tSampleReducer* s = *sr;
-    
-    leaf_free(s);
-}
-
-void    tSampleReducer_initToPool   (tSampleReducer* const sr, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSampleReducer* s = *sr = (_tSampleReducer*) mpool_alloc(sizeof(_tSampleReducer), &m->pool);
-    
-    s->invRatio = 1.0f;
-    s->hold = 0.0f;
-    s->count = 0;
-}
-
-void    tSampleReducer_freeFromPool (tSampleReducer* const sr, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSampleReducer* s = *sr;
-    
-    mpool_free(s, &m->pool);
-}
-
-float tSampleReducer_tick(tSampleReducer* const sr, float input)
-{
-    _tSampleReducer* s = *sr;
-    if (s->count > s->invRatio)
-    {
-        s->hold = input;
-        s->count = 0;
-    }
-    
-    s->count++;
-    return s->hold;
-}
-
-
-void tSampleReducer_setRatio(tSampleReducer* const sr, float ratio)
-{
-    _tSampleReducer* s = *sr;
-    if ((ratio <= 1.0f) && (ratio >= 0.0f))
-        s->invRatio = 1.0f / ratio;
-    
-}
-
-//============================================================================================================
-// Oversampler
-//============================================================================================================
-// Latency is equal to the phase length (numTaps / ratio)
-void tOversampler_init(tOversampler* const osr, int ratio, oBool extraQuality)
-{
-    _tOversampler* os = *osr = (_tOversampler*) leaf_alloc(sizeof(_tOversampler));
-    
-    uint8_t offset = 0;
-    if (extraQuality) offset = 6;
-    if (ratio == 2 || ratio == 4  ||
-        ratio == 8 || ratio == 16 ||
-        ratio == 32 || ratio == 64) {
-        os->ratio = ratio;
-        int idx = (int)(log2f(os->ratio))-1+offset;
-        os->numTaps = firNumTaps[idx];
-        os->phaseLength = os->numTaps / os->ratio;
-        os->pCoeffs = (float*) firCoeffs[idx];
-        os->upState = leaf_alloc(sizeof(float) * os->numTaps * 2);
-        os->downState = leaf_alloc(sizeof(float) * os->numTaps * 2);
-    }
-}
-
-void tOversampler_free(tOversampler* const osr)
-{
-    _tOversampler* os = *osr;
-    
-    leaf_free(os->upState);
-    leaf_free(os->downState);
-    leaf_free(os);
-}
-
-void    tOversampler_initToPool     (tOversampler* const osr, int ratio, oBool extraQuality, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tOversampler* os = *osr = (_tOversampler*) mpool_alloc(sizeof(_tOversampler), &m->pool);
-    
-    uint8_t offset = 0;
-    if (extraQuality) offset = 6;
-    if (ratio == 2 || ratio == 4  ||
-        ratio == 8 || ratio == 16 ||
-        ratio == 32 || ratio == 64) {
-        os->ratio = ratio;
-        int idx = (int)(log2f(os->ratio))-1+offset;
-        os->numTaps = firNumTaps[idx];
-        os->phaseLength = os->numTaps / os->ratio;
-        os->pCoeffs = (float*) firCoeffs[idx];
-        os->upState = mpool_alloc(sizeof(float) * os->numTaps * 2, &m->pool);
-        os->downState = mpool_alloc(sizeof(float) * os->numTaps * 2, &m->pool);
-    }
-}
-
-void    tOversampler_freeFromPool   (tOversampler* const osr, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tOversampler* os = *osr;
-    
-    mpool_free(os->upState, &m->pool);
-    mpool_free(os->downState, &m->pool);
-    mpool_free(os, &m->pool);
-}
-
-float tOversampler_tick(tOversampler* const osr, float input, float (*effectTick)(float))
-{
-    _tOversampler* os = *osr;
-    
-    float buf[os->ratio];
-    
-    tOversampler_upsample(osr, input, buf);
-    
-    for (int i = 0; i < os->ratio; ++i) {
-        buf[i] = effectTick(buf[i]);
-    }
-    
-    return tOversampler_downsample(osr, buf);
-}
-
-// From CMSIS DSP Library
-void tOversampler_upsample(tOversampler* const osr, float input, float* output)
-{
-    _tOversampler* os = *osr;
-    
-    float *pState = os->upState;                 /* State pointer */
-    float *pCoeffs = os->pCoeffs;               /* Coefficient pointer */
-    float *pStateCur;
-    float *ptr1;                               /* Temporary pointer for state buffer */
-    float *ptr2;                               /* Temporary pointer for coefficient buffer */
-    float sum0;                                /* Accumulators */
-    uint32_t i, tapCnt;                    /* Loop counters */
-    uint32_t phaseLen = os->phaseLength;            /* Length of each polyphase filter component */
-    uint32_t j;
-    
-    /* os->pState buffer contains previous frame (phaseLen - 1) samples */
-    /* pStateCur points to the location where the new input data should be written */
-    pStateCur = os->upState + (phaseLen - 1U);
-    
-    /* Copy new input sample into the state buffer */
-    *pStateCur = input;
-    
-    /* Address modifier index of coefficient buffer */
-    j = 1U;
-    
-    /* Loop over the Interpolation factor. */
-    i = os->ratio;
-    
-    while (i > 0U)
-    {
-        /* Set accumulator to zero */
-        sum0 = 0.0f;
-        
-        /* Initialize state pointer */
-        ptr1 = pState;
-        
-        /* Initialize coefficient pointer */
-        ptr2 = pCoeffs + (os->ratio - j);
-        
-        /* Loop over the polyPhase length.
-         Repeat until we've computed numTaps-(4*os->L) coefficients. */
-        
-        /* Initialize tapCnt with number of samples */
-        tapCnt = phaseLen;
-        
-        while (tapCnt > 0U)
-        {
-            /* Perform the multiply-accumulate */
-            sum0 += *ptr1++ * *ptr2;
-            
-            /* Upsampling is done by stuffing L-1 zeros between each sample.
-             * So instead of multiplying zeros with coefficients,
-             * Increment the coefficient pointer by interpolation factor times. */
-            ptr2 += os->ratio;
-            
-            /* Decrement loop counter */
-            tapCnt--;
-        }
-        
-        /* The result is in the accumulator, store in the destination buffer. */
-        *output++ = sum0 * os->ratio;
-        
-        /* Increment the address modifier index of coefficient buffer */
-        j++;
-        
-        /* Decrement the loop counter */
-        i--;
-    }
-    
-    /* Advance the state pointer by 1
-     * to process the next group of interpolation factor number samples */
-    pState = pState + 1;
-    
-    /* Processing is complete.
-     Now copy the last phaseLen - 1 samples to the satrt of the state buffer.
-     This prepares the state buffer for the next function call. */
-    
-    /* Points to the start of the state buffer */
-    pStateCur = os->upState;
-    
-    /* Initialize tapCnt with number of samples */
-    tapCnt = (phaseLen - 1U);
-    
-    /* Copy data */
-    while (tapCnt > 0U)
-    {
-        *pStateCur++ = *pState++;
-        
-        /* Decrement loop counter */
-        tapCnt--;
-    }
-}
-
-// From CMSIS DSP Library
-float tOversampler_downsample(tOversampler *const osr, float* input)
-{
-    _tOversampler* os = *osr;
-    
-    float *pState = os->downState;                 /* State pointer */
-    float *pCoeffs = os->pCoeffs;               /* Coefficient pointer */
-    float *pStateCur;                          /* Points to the current sample of the state */
-    float *px0;                                /* Temporary pointer for state buffer */
-    float *pb;                                 /* Temporary pointer for coefficient buffer */
-    float x0, c0;                              /* Temporary variables to hold state and coefficient values */
-    float acc0;                                /* Accumulator */
-    uint32_t numTaps = os->numTaps;                 /* Number of filter coefficients in the filter */
-    uint32_t i, tapCnt;
-    float output;
-    
-    /* os->pState buffer contains previous frame (numTaps - 1) samples */
-    /* pStateCur points to the location where the new input data should be written */
-    pStateCur = os->downState + (numTaps - 1U);
-    
-    /* Copy decimation factor number of new input samples into the state buffer */
-    i = os->ratio;
-    
-    do
-    {
-        *pStateCur++ = *input++;
-        
-    } while (--i);
-    
-    /* Set accumulator to zero */
-    acc0 = 0.0f;
-    
-    /* Initialize state pointer */
-    px0 = pState;
-    
-    /* Initialize coeff pointer */
-    pb = pCoeffs;
-    
-    /* Initialize tapCnt with number of taps */
-    tapCnt = numTaps;
-    
-    while (tapCnt > 0U)
-    {
-        /* Read coefficients */
-        c0 = *pb++;
-        
-        /* Fetch 1 state variable */
-        x0 = *px0++;
-        
-        /* Perform the multiply-accumulate */
-        acc0 += x0 * c0;
-        
-        /* Decrement loop counter */
-        tapCnt--;
-    }
-    
-    /* Advance the state pointer by the decimation factor
-     * to process the next group of decimation factor number samples */
-    pState = pState + os->ratio;
-    
-    /* The result is in the accumulator, store in the destination buffer. */
-    output = acc0;
-    
-    /* Processing is complete.
-     Now copy the last numTaps - 1 samples to the start of the state buffer.
-     This prepares the state buffer for the next function call. */
-    
-    /* Points to the start of the state buffer */
-    pStateCur = os->downState;
-    
-    /* Initialize tapCnt with number of taps */
-    tapCnt = (numTaps - 1U);
-    
-    /* Copy data */
-    while (tapCnt > 0U)
-    {
-        *pStateCur++ = *pState++;
-        
-        /* Decrement loop counter */
-        tapCnt--;
-    }
-    
-    return output;
-}
-
-int tOversampler_getLatency(tOversampler* const osr)
-{
-    _tOversampler* os = *osr;
-    return os->phaseLength;
-}
-
-//============================================================================================================
-// WAVEFOLDER
-//============================================================================================================
-
-
-//from the paper: Virtual Analog Model of the Lockhart Wavefolder
-//by Fabián Esqueda, Henri Pöntynen, Julian D. Parker and Stefan Bilbao
-
-void tLockhartWavefolder_init(tLockhartWavefolder* const wf)
-{
-    _tLockhartWavefolder* w = *wf = (_tLockhartWavefolder*) leaf_alloc(sizeof(_tLockhartWavefolder));
-    
-    w->Ln1 = 0.0;
-    w->Fn1 = 0.0;
-    w->xn1 = 0.0f;
-
-    w->RL = 7.5e3;
-    w->R = 15e3;
-    w->VT = 26e-3;
-    w->Is = 10e-16;
-
-    w->a = 2.0*w->RL/w->R;
-    w->b = (w->R+2.0*w->RL)/(w->VT*w->R);
-    w->d = (w->RL*w->Is)/w->VT;
-    w->half_a = 0.5 * w->a;
-    w->longthing = (0.5*w->VT/w->b);
-
-
-    // Antialiasing error threshold
-    w->thresh = 10e-10;
-}
-
-void tLockhartWavefolder_free(tLockhartWavefolder* const wf)
-{
-    _tLockhartWavefolder* w = *wf;
-    
-    leaf_free(w);
-}
-
-void    tLockhartWavefolder_initToPool   (tLockhartWavefolder* const wf, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tLockhartWavefolder* w = *wf = (_tLockhartWavefolder*) mpool_alloc(sizeof(_tLockhartWavefolder), &m->pool);
-    
-    w->Ln1 = 0.0;
-    w->Fn1 = 0.0;
-    w->xn1 = 0.0f;
-    
-    w->RL = 7.5e3;
-    w->R = 15e3;
-    w->VT = 26e-3;
-    w->Is = 10e-16;
-    
-    w->a = 2.0*w->RL/w->R;
-    w->b = (w->R+2.0*w->RL)/(w->VT*w->R);
-    w->d = (w->RL*w->Is)/w->VT;
-    w->half_a = 0.5 * w->a;
-    w->longthing = (0.5*w->VT/w->b);
-    
-    
-    // Antialiasing error threshold
-    w->thresh = 10e-10;
-}
-
-void    tLockhartWavefolder_freeFromPool (tLockhartWavefolder* const wf, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tLockhartWavefolder* w = *wf;
-    
-    mpool_free(w, &m->pool);
-}
-
-double tLockhartWavefolderLambert(double x, double ln)
-{
-    double thresh, w, expw, p, r, s, err;
-    // Error threshold
-    thresh = 10e-12;
-    // Initial guess (use previous value)
-    w = ln;
-    
-    // Haley's method (Sec. 4.2 of the paper)
-    for(int i=0; i<1000; i+=1) {
-        
-        expw = exp(w);
-        
-        p = w*expw - x;
-        r = (w+1.0)*expw;
-        s = (w+2.0)/(2.0*(w+1.0));
-        err = (p/(r-(p*s)));
-        
-        if (fabs(err)<thresh) {
-
-        	break;
-        }
-        
-        w = w - err;
-        if (i == 999)
-        {
-        	//HAL_GPIO_WritePin(GPIOG, GPIO_PIN_7, GPIO_PIN_SET);
-        }
-
-    }
-    return w;
-}
-
-float tLockhartWavefolder_tick(tLockhartWavefolder* const wf, float samp)
-{
-    _tLockhartWavefolder* w = *wf;
-    
-    float out = 0.0f;
-    
-    // Compute Antiderivative
-    int l = (samp > 0.0f) - (samp < 0.0f);
-    double u = w->d*exp(l*w->b*samp);
-    double Ln = tLockhartWavefolderLambert(u,w->Ln1);
-    double Fn = w->longthing*(Ln*(Ln + 2.0)) - w->half_a*samp*samp;
-    
-    // Check for ill-conditioning
-    if (fabs(samp-w->xn1)<w->thresh) {
-        
-        // Compute Averaged Wavefolder Output
-        float xn = 0.5f*(samp+w->xn1);
-        u = w->d*exp(l*w->b*xn);
-        Ln = tLockhartWavefolderLambert(u,w->Ln1);
-        out = (float) (l*w->VT*Ln - w->a*xn);
-
-    }
-    else {
-        
-        // Apply AA Form
-        out = (float) ((Fn-w->Fn1)/(samp-w->xn1));
-    }
-    
-    // Update States
-    w->Ln1 = Ln;
-    w->Fn1 = Fn;
-    w->xn1 = samp;
-    
-    return out;
-}
-
-//============================================================================================================
-// CRUSHER
-//============================================================================================================
-#define SCALAR 5000.f
-
-void    tCrusher_init    (tCrusher* const cr)
-{
-    _tCrusher* c = *cr = (_tCrusher*) leaf_alloc(sizeof(_tCrusher));
-    
-    c->op = 4;
-    c->div = SCALAR;
-    c->rnd = 0.25f;
-    c->srr = 0.25f;
-    tSampleReducer_init(&c->sReducer);
-    c->gain = (c->div / SCALAR) * 0.7f + 0.3f;
-}
-
-void    tCrusher_free    (tCrusher* const cr)
-{
-    _tCrusher* c = *cr;
-    tSampleReducer_free(&c->sReducer);
-    leaf_free(c);
-}
-
-void    tCrusher_initToPool   (tCrusher* const cr, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tCrusher* c = *cr = (_tCrusher*) mpool_alloc(sizeof(_tCrusher), &m->pool);
-    
-    c->op = 4;
-    c->div = SCALAR;
-    c->rnd = 0.25f;
-    c->srr = 0.25f;
-    tSampleReducer_initToPool(&c->sReducer, mp);
-    c->gain = (c->div / SCALAR) * 0.7f + 0.3f;
-}
-
-void    tCrusher_freeFromPool (tCrusher* const cr, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tCrusher* c = *cr;
-    tSampleReducer_freeFromPool(&c->sReducer, mp);
-    mpool_free(c, &m->pool);
-}
-
-float   tCrusher_tick    (tCrusher* const cr, float input)
-{
-    _tCrusher* c = *cr;
-    
-    float sample = input;
-    
-    sample *= SCALAR; // SCALAR is 5000 by default
-    
-    sample = (int32_t) sample;
-    
-    sample /= c->div;
-    
-    sample = LEAF_bitwise_xor(sample, c->op << 23);
-    
-    sample = LEAF_clip(-1.f, sample, 1.f);
-    
-    sample = LEAF_round(sample, c->rnd);
-    
-    sample = tSampleReducer_tick(&c->sReducer, sample);
-    
-    return sample * c->gain;
-    
-}
-
-void    tCrusher_setOperation (tCrusher* const cr, float op)
-{
-    _tCrusher* c = *cr;
-    c->op = (uint32_t) (op * 8.0f);
-}
-
-// 0.0 - 1.0
-void    tCrusher_setQuality (tCrusher* const cr, float val)
-{
-    _tCrusher* c = *cr;
-    
-    val = LEAF_clip(0.0f, val, 1.0f);
-    
-    c->div = 0.01f + val * SCALAR;
-    
-    c->gain = (c->div / SCALAR) * 0.7f + 0.3f;
-}
-
-// what decimal to round to
-void    tCrusher_setRound (tCrusher* const cr, float rnd)
-{
-    _tCrusher* c = *cr;
-    c->rnd = fabsf(rnd);
-}
-
-void    tCrusher_setSamplingRatio (tCrusher* const cr, float ratio)
-{
-    _tCrusher* c = *cr;
-    c->srr = ratio;
-    tSampleReducer_setRatio(&c->sReducer, ratio);
-
-}
--- a/LEAF/Src/leaf-dynamics.c
+++ /dev/null
@@ -1,221 +1,0 @@
-/*==============================================================================
-
-    leaf-dynamics.c
-    Created: 30 Nov 2018 11:56:49am
-    Author:  airship
-
-==============================================================================*/
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-dynamics.h"
-
-#else
-
-#include "../Inc/leaf-dynamics.h"
-
-#endif
-
-//==============================================================================
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Compressor ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-
-/*
- tCompressor*    tCompressorInit(int tauAttack, int tauRelease)
- {
- tCompressor* c = &leaf.tCompressorRegistry[leaf.registryIndex[T_COMPRESSOR]++];
- 
- c->tauAttack = tauAttack;
- c->tauRelease = tauRelease;
- 
- c->x_G[0] = 0.0f, c->x_G[1] = 0.0f,
- c->y_G[0] = 0.0f, c->y_G[1] = 0.0f,
- c->x_T[0] = 0.0f, c->x_T[1] = 0.0f,
- c->y_T[0] = 0.0f, c->y_T[1] = 0.0f;
- 
- c->T = 0.0f; // Threshold
- c->R = 1.0f; // compression Ratio
- c->M = 0.0f; // decibel Make-up gain
- c->W = 0.0f; // decibel Width of knee transition
- 
- return c;
- }
- */
-void    tCompressor_init(tCompressor* const comp)
-{
-    _tCompressor* c = *comp = (_tCompressor*) leaf_alloc(sizeof(_tCompressor));
-    
-    c->tauAttack = 100;
-    c->tauRelease = 100;
-    
-    c->isActive = OFALSE;
-    
-    c->T = 0.0f; // Threshold
-    c->R = 0.5f; // compression Ratio
-    c->M = 3.0f; // decibel Width of knee transition
-    c->W = 1.0f; // decibel Make-up gain
-}
-
-void tCompressor_free(tCompressor* const comp)
-{
-    _tCompressor* c = *comp;
-    
-    leaf_free(c);
-}
-
-void    tCompressor_initToPool  (tCompressor* const comp, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tCompressor* c = *comp = (_tCompressor*) mpool_alloc(sizeof(_tCompressor), &m->pool);
-    
-    c->tauAttack = 100;
-    c->tauRelease = 100;
-    
-    c->isActive = OFALSE;
-    
-    c->T = 0.0f; // Threshold
-    c->R = 0.5f; // compression Ratio
-    c->M = 3.0f; // decibel Width of knee transition
-    c->W = 1.0f; // decibel Make-up gain
-}
-
-void    tCompressor_freeFromPool(tCompressor* const comp, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tCompressor* c = *comp;
-    
-    mpool_free(c, &m->pool);
-}
-
-float tCompressor_tick(tCompressor* const comp, float in)
-{
-    _tCompressor* c = *comp;
-    
-    float slope, overshoot;
-    float alphaAtt, alphaRel;
-    
-    float in_db = 20.0f * log10f( fmaxf( fabsf( in), 0.000001f)), out_db = 0.0f;
-    
-    c->y_T[1] = c->y_T[0];
-    
-    slope = c->R - 1.0f; // feed-forward topology; was 1/C->R - 1
-    
-    overshoot = in_db - c->T;
-    
-    
-    if (overshoot <= -(c->W * 0.5f))
-    {
-        out_db = in_db;
-        c->isActive = OFALSE;
-    }
-    else if ((overshoot > -(c->W * 0.5f)) && (overshoot < (c->W * 0.5f)))
-    {
-        out_db = in_db + slope * (powf((overshoot + c->W*0.5f),2) / (2.0f * c->W)); // .^ 2 ???
-        c->isActive = OTRUE;
-    }
-    else if (overshoot >= (c->W * 0.5f))
-    {
-        out_db = in_db + slope * overshoot;
-        c->isActive = OTRUE;
-    }
-    
-    
-    
-    c->x_T[0] = out_db - in_db;
-    
-    alphaAtt = expf(-1.0f/(0.001f * c->tauAttack * leaf.sampleRate));
-    alphaRel = expf(-1.0f/(0.001f * c->tauRelease * leaf.sampleRate));
-    
-    if (c->x_T[0] > c->y_T[1])
-        c->y_T[0] = alphaAtt * c->y_T[1] + (1-alphaAtt) * c->x_T[0];
-    else
-        c->y_T[0] = alphaRel * c->y_T[1] + (1-alphaRel) * c->x_T[0];
-    
-    float attenuation = powf(10.0f, ((c->M - c->y_T[0])/20.0f));
-    
-    return attenuation * in;
-}
-
-/* Feedback Leveler */
-
-void    tFeedbackLeveler_init(tFeedbackLeveler* const fb, float targetLevel, float factor, float strength, int mode)
-{
-    _tFeedbackLeveler* p = *fb = (_tFeedbackLeveler*) leaf_alloc(sizeof(_tFeedbackLeveler));
-    
-    p->curr=0.0f;
-    p->targetLevel=targetLevel;
-    tPowerFollower_init(&p->pwrFlw,factor);
-    p->mode=mode;
-    p->strength=strength;
-}
-
-void tFeedbackLeveler_free(tFeedbackLeveler* const fb)
-{
-    _tFeedbackLeveler* p = *fb;
-    
-    tPowerFollower_free(&p->pwrFlw);
-    leaf_free(p);
-}
-
-void    tFeedbackLeveler_initToPool     (tFeedbackLeveler* const fb, float targetLevel, float factor, float strength, int mode, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tFeedbackLeveler* p = *fb = (_tFeedbackLeveler*) mpool_alloc(sizeof(_tFeedbackLeveler), &m->pool);
-    
-    p->curr=0.0f;
-    p->targetLevel=targetLevel;
-    tPowerFollower_initToPool(&p->pwrFlw,factor, mp);
-    p->mode=mode;
-    p->strength=strength;
-}
-
-void    tFeedbackLeveler_freeFromPool   (tFeedbackLeveler* const fb, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tFeedbackLeveler* p = *fb;
-    
-    tPowerFollower_freeFromPool(&p->pwrFlw, mp);
-    mpool_free(p, &m->pool);
-}
-
-void     tFeedbackLeveler_setStrength(tFeedbackLeveler* const fb, float strength)
-{    // strength is how strongly level diff is affecting the amp ratio
-    // try 0.125 for a start
-    _tFeedbackLeveler* p = *fb;
-    p->strength=strength;
-}
-
-void     tFeedbackLeveler_setFactor(tFeedbackLeveler* const fb, float factor)
-{
-    _tFeedbackLeveler* p = *fb;
-    tPowerFollower_setFactor(&p->pwrFlw,factor);
-}
-
-void     tFeedbackLeveler_setMode(tFeedbackLeveler* const fb, int mode)
-{    // 0 for decaying with upwards lev limiting, 1 for constrained absolute level (also downwards limiting)
-    _tFeedbackLeveler* p = *fb;
-    p->mode=mode;
-}
-
-float   tFeedbackLeveler_tick(tFeedbackLeveler* const fb, float input)
-{
-    _tFeedbackLeveler* p = *fb;
-    float levdiff=(tPowerFollower_tick(&p->pwrFlw, input)-p->targetLevel);
-    if (p->mode==0 && levdiff<0.0f) levdiff=0.0f;
-    p->curr=input*(1.0f-p->strength*levdiff);
-    return p->curr;
-}
-
-float   tFeedbackLeveler_sample(tFeedbackLeveler* const fb)
-{
-    _tFeedbackLeveler* p = *fb;
-    return p->curr;
-}
-
-
-void     tFeedbackLeveler_setTargetLevel   (tFeedbackLeveler* const fb, float TargetLevel)
-{
-    _tFeedbackLeveler* p = *fb;
-    p->targetLevel=TargetLevel;
-}
-
--- a/LEAF/Src/leaf-effects.c
+++ /dev/null
@@ -1,1676 +1,0 @@
-/*==============================================================================
- 
- leaf-vocoder.c
- Created: 20 Jan 2017 12:01:54pm
- Author:  Michael R Mulshine
- 
- ==============================================================================*/
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-effects.c"
-#include "..\leaf.h"
-
-#else
-
-#include "../Inc/leaf-effects.h"
-#include "../leaf.h"
-
-#endif
-
-
-
-//============================================================================================================
-// TALKBOX
-//============================================================================================================
-
-void tTalkbox_init(tTalkbox* const voc, int bufsize)
-{
-    
-    _tTalkbox* v = *voc = (_tTalkbox*) leaf_alloc(sizeof(_tTalkbox));
-    
-    v->param[0] = 0.5f;  //wet
-    v->param[1] = 0.0f;  //dry
-    v->param[2] = 0; // Swap
-    v->param[3] = 1.0f;  //quality
-    
-    v->bufsize = bufsize;
-    
-    v->car0 =   (float*) leaf_alloc(sizeof(float) * v->bufsize);
-    v->car1 =   (float*) leaf_alloc(sizeof(float) * v->bufsize);
-    v->window = (float*) leaf_alloc(sizeof(float) * v->bufsize);
-    v->buf0 =   (float*) leaf_alloc(sizeof(float) * v->bufsize);
-    v->buf1 =   (float*) leaf_alloc(sizeof(float) * v->bufsize);
-    
-    tTalkbox_update(voc);
-    tTalkbox_suspend(voc);
-}
-
-void tTalkbox_free(tTalkbox* const voc)
-{
-    _tTalkbox* v = *voc;
-    
-    leaf_free(v->buf1);
-    leaf_free(v->buf0);
-    leaf_free(v->window);
-    leaf_free(v->car1);
-    leaf_free(v->car0);
-    
-    leaf_free(v);
-}
-
-void    tTalkbox_initToPool     (tTalkbox* const voc, int bufsize, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tTalkbox* v = *voc = (_tTalkbox*) mpool_alloc(sizeof(_tTalkbox), &m->pool);
-    
-    v->param[0] = 0.5f;  //wet
-    v->param[1] = 0.0f;  //dry
-    v->param[2] = 0; // Swap
-    v->param[3] = 1.0f;  //quality
-    
-    v->bufsize = bufsize;
-    
-    v->car0 =   (float*) mpool_alloc(sizeof(float) * v->bufsize, &m->pool);
-    v->car1 =   (float*) mpool_alloc(sizeof(float) * v->bufsize, &m->pool);
-    v->window = (float*) mpool_alloc(sizeof(float) * v->bufsize, &m->pool);
-    v->buf0 =   (float*) mpool_alloc(sizeof(float) * v->bufsize, &m->pool);
-    v->buf1 =   (float*) mpool_alloc(sizeof(float) * v->bufsize, &m->pool);
-    
-    tTalkbox_update(voc);
-    tTalkbox_suspend(voc);
-}
-
-void    tTalkbox_freeFromPool   (tTalkbox* const voc, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tTalkbox* v = *voc;
-    
-    mpool_free(v->buf1, &m->pool);
-    mpool_free(v->buf0, &m->pool);
-    mpool_free(v->window, &m->pool);
-    mpool_free(v->car1, &m->pool);
-    mpool_free(v->car0, &m->pool);
-    
-    mpool_free(v, &m->pool);
-}
-
-void tTalkbox_update(tTalkbox* const voc) ///update internal parameters...
-{
-    _tTalkbox* v = *voc;
-    
-    float fs = leaf.sampleRate;
-    if(fs <  8000.0f) fs =  8000.0f;
-    if(fs > 96000.0f) fs = 96000.0f;
-    
-    int32_t n = (int32_t)(0.01633f * fs);
-    if(n > v->bufsize) n = v->bufsize;
-    
-    //O = (VstInt32)(0.0005f * fs);
-    v->O = (int32_t)((0.0001f + 0.0004f * v->param[3]) * fs);
-    
-    if(n != v->N) //recalc hanning window
-    {
-        v->N = n;
-        float dp = TWO_PI / v->N;
-        float p = 0.0f;
-        for(n=0; n<v->N; n++)
-        {
-            v->window[n] = 0.5f - 0.5f * cosf(p);
-            p += dp;
-        }
-    }
-    v->wet = 0.5f * v->param[0] * v->param[0];
-    v->dry = 2.0f * v->param[1] * v->param[1];
-}
-
-void tTalkbox_suspend(tTalkbox* const voc) ///clear any buffers...
-{
-    _tTalkbox* v = *voc;
-    
-    v->pos = v->K = 0;
-    v->emphasis = 0.0f;
-    v->FX = 0;
-    
-    v->u0 = v->u1 = v->u2 = v->u3 = v->u4 = 0.0f;
-    v->d0 = v->d1 = v->d2 = v->d3 = v->d4 = 0.0f;
-    
-    for (int32_t i = 0; i < v->bufsize; i++)
-    {
-        v->buf0[i] = 0;
-        v->buf1[i] = 0;
-        v->car0[i] = 0;
-        v->car1[i] = 0;
-    }
-}
-
-
-#define ORD_MAX           100 // Was 50. Increasing this gets rid of glitchiness, lowering it breaks it; not sure how it affects performance
-void tTalkbox_lpc(float *buf, float *car, int32_t n, int32_t o)
-{
-    float z[ORD_MAX], r[ORD_MAX], k[ORD_MAX], G, x;
-    int32_t i, j, nn=n;
-    
-    for(j=0; j<=o; j++, nn--)  //buf[] is already emphasized and windowed
-    {
-        z[j] = r[j] = 0.0f;
-        for(i=0; i<nn; i++) r[j] += buf[i] * buf[i+j]; //autocorrelation
-    }
-    r[0] *= 1.001f;  //stability fix
-    
-    float min = 0.00001f;
-    if(r[0] < min) { for(i=0; i<n; i++) buf[i] = 0.0f; return; }
-    
-    tTalkbox_lpcDurbin(r, o, k, &G);  //calc reflection coeffs
-    
-    for(i=0; i<=o; i++)
-    {
-        if(k[i] > 0.995f) k[i] = 0.995f; else if(k[i] < -0.995f) k[i] = -.995f;
-    }
-    
-    for(i=0; i<n; i++)
-    {
-        x = G * car[i];
-        for(j=o; j>0; j--)  //lattice filter
-        {
-            x -= k[j] * z[j-1];
-            z[j] = z[j-1] + k[j] * x;
-        }
-        buf[i] = z[0] = x;  //output buf[] will be windowed elsewhere
-    }
-}
-
-
-void tTalkbox_lpcDurbin(float *r, int p, float *k, float *g)
-{
-    int i, j;
-    float a[ORD_MAX], at[ORD_MAX], e=r[0];
-    
-    for(i=0; i<=p; i++) a[i] = at[i] = 0.0f; //probably don't need to clear at[] or k[]
-    
-    for(i=1; i<=p; i++)
-    {
-        k[i] = -r[i];
-        
-        for(j=1; j<i; j++)
-        {
-            at[j] = a[j];
-            k[i] -= a[j] * r[i-j];
-        }
-        if(fabs(e) < 1.0e-20f) { e = 0.0f;  break; }
-        k[i] /= e; // This might be costing us
-        
-        a[i] = k[i];
-        for(j=1; j<i; j++) a[j] = at[j] + k[i] * at[i-j];
-        
-        e *= 1.0f - k[i] * k[i];
-    }
-    
-    if(e < 1.0e-20f) e = 0.0f;
-    *g = sqrtf(e);
-}
-
-float tTalkbox_tick(tTalkbox* const voc, float synth, float voice)
-{
-    _tTalkbox* v = *voc;
-    
-    int32_t  p0=v->pos, p1 = (v->pos + v->N/2) % v->N;
-    float e=v->emphasis, w, o, x, dr, fx=v->FX;
-    float p, q, h0=0.3f, h1=0.77f;
-    
-    o = voice;
-    x = synth;
-    
-    dr = o;
-    
-    p = v->d0 + h0 *  x; v->d0 = v->d1;  v->d1 = x  - h0 * p;
-    q = v->d2 + h1 * v->d4; v->d2 = v->d3;  v->d3 = v->d4 - h1 * q;
-    v->d4 = x;
-    x = p + q;
-    
-    if(v->K++)
-    {
-        v->K = 0;
-        
-        v->car0[p0] = v->car1[p1] = x; //carrier input
-        
-        x = o - e;  e = o;  //6dB/oct pre-emphasis
-        
-        w = v->window[p0]; fx = v->buf0[p0] * w;  v->buf0[p0] = x * w;  //50% overlapping hanning windows
-        if(++p0 >= v->N) { tTalkbox_lpc(v->buf0, v->car0, v->N, v->O);  p0 = 0; }
-        
-        w = 1.0f - w;  fx += v->buf1[p1] * w;  v->buf1[p1] = x * w;
-        if(++p1 >= v->N) { tTalkbox_lpc(v->buf1, v->car1, v->N, v->O);  p1 = 0; }
-    }
-    
-    p = v->u0 + h0 * fx; v->u0 = v->u1;  v->u1 = fx - h0 * p;
-    q = v->u2 + h1 * v->u4; v->u2 = v->u3;  v->u3 = v->u4 - h1 * q;
-    v->u4 = fx;
-    x = p + q;
-    
-    o = x;
-    
-    v->emphasis = e;
-    v->pos = p0;
-    v->FX = fx;
-    
-
-    return o;
-}
-
-void tTalkbox_setQuality(tTalkbox* const voc, float quality)
-{
-    _tTalkbox* v = *voc;
-    
-    v->param[3] = quality;
-    v->O = (int32_t)((0.0001f + 0.0004f * v->param[3]) * leaf.sampleRate);
-}
-
-
-//============================================================================================================
-// VOCODER
-//============================================================================================================
-
-void   tVocoder_init        (tVocoder* const voc)
-{
-    _tVocoder* v = *voc = (_tVocoder*) leaf_alloc(sizeof(_tVocoder));
-    
-    v->param[0] = 0.33f;  //input select
-    v->param[1] = 0.50f;  //output dB
-    v->param[2] = 0.40f;  //hi thru
-    v->param[3] = 0.40f;  //hi band
-    v->param[4] = 0.16f;  //envelope
-    v->param[5] = 0.55f;  //filter q
-    v->param[6] = 0.6667f;//freq range
-    v->param[7] = 0.33f;  //num bands
-    
-    tVocoder_update(voc);
-}
-
-void tVocoder_free (tVocoder* const voc)
-{
-    _tVocoder* v = *voc;
-    
-    leaf_free(v);
-}
-
-void    tVocoder_initToPool     (tVocoder* const voc, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tVocoder* v = *voc = (_tVocoder*) mpool_alloc(sizeof(_tVocoder), &m->pool);
-    
-    v->param[0] = 0.33f;  //input select
-    v->param[1] = 0.50f;  //output dB
-    v->param[2] = 0.40f;  //hi thru
-    v->param[3] = 0.40f;  //hi band
-    v->param[4] = 0.16f;  //envelope
-    v->param[5] = 0.55f;  //filter q
-    v->param[6] = 0.6667f;//freq range
-    v->param[7] = 0.33f;  //num bands
-    
-    tVocoder_update(voc);
-}
-
-void    tVocoder_freeFromPool   (tVocoder* const voc, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tVocoder* v = *voc;
-    
-    mpool_free(v, &m->pool);
-}
-
-void        tVocoder_update      (tVocoder* const voc)
-{
-    _tVocoder* v = *voc;
-    
-    float tpofs = 6.2831853f * leaf.invSampleRate;
-    
-    float rr, th, re;
-    
-    float sh;
-    
-    int32_t i;
-    
-    v->gain = (float)pow(10.0f, 2.0f * v->param[1] - 3.0f * v->param[5] - 2.0f);
-    
-    v->thru = (float)pow(10.0f, 0.5f + 2.0f * v->param[1]);
-    v->high =  v->param[3] * v->param[3] * v->param[3] * v->thru;
-    v->thru *= v->param[2] * v->param[2] * v->param[2];
-    
-    if(v->param[7]<0.5f)
-    {
-        v->nbnd=8;
-        re=0.003f;
-        v->f[1][2] = 3000.0f;
-        v->f[2][2] = 2200.0f;
-        v->f[3][2] = 1500.0f;
-        v->f[4][2] = 1080.0f;
-        v->f[5][2] = 700.0f;
-        v->f[6][2] = 390.0f;
-        v->f[7][2] = 190.0f;
-    }
-    else
-    {
-        v->nbnd=16;
-        re=0.0015f;
-        v->f[ 1][2] = 5000.0f; //+1000
-        v->f[ 2][2] = 4000.0f; //+750
-        v->f[ 3][2] = 3250.0f; //+500
-        v->f[ 4][2] = 2750.0f; //+450
-        v->f[ 5][2] = 2300.0f; //+300
-        v->f[ 6][2] = 2000.0f; //+250
-        v->f[ 7][2] = 1750.0f; //+250
-        v->f[ 8][2] = 1500.0f; //+250
-        v->f[ 9][2] = 1250.0f; //+250
-        v->f[10][2] = 1000.0f; //+250
-        v->f[11][2] =  750.0f; //+210
-        v->f[12][2] =  540.0f; //+190
-        v->f[13][2] =  350.0f; //+155
-        v->f[14][2] =  195.0f; //+100
-        v->f[15][2] =   95.0f;
-    }
-    
-    if(v->param[4]<0.05f) //freeze
-    {
-        for(i=0;i<v->nbnd;i++) v->f[i][12]=0.0f;
-    }
-    else
-    {
-        v->f[0][12] = (float)pow(10.0, -1.7 - 2.7f * v->param[4]); //envelope speed
-        
-        rr = 0.022f / (float)v->nbnd; //minimum proportional to frequency to stop distortion
-        for(i=1;i<v->nbnd;i++)
-        {
-            v->f[i][12] = (float)(0.025 - rr * (double)i);
-            if(v->f[0][12] < v->f[i][12]) v->f[i][12] = v->f[0][12];
-        }
-        v->f[0][12] = 0.5f * v->f[0][12]; //only top band is at full rate
-    }
-    
-    rr = 1.0 - pow(10.0f, -1.0f - 1.2f * v->param[5]);
-    sh = (float)pow(2.0f, 3.0f * v->param[6] - 1.0f); //filter bank range shift
-    
-    for(i=1;i<v->nbnd;i++)
-    {
-        v->f[i][2] *= sh;
-        th = acos((2.0 * rr * cos(tpofs * v->f[i][2])) / (1.0 + rr * rr));
-        v->f[i][0] = (float)(2.0 * rr * cos(th)); //a0
-        v->f[i][1] = (float)(-rr * rr);           //a1
-        //was .98
-        v->f[i][2] *= 0.96f; //shift 2nd stage slightly to stop high resonance peaks
-        th = acos((2.0 * rr * cos(tpofs * v->f[i][2])) / (1.0 + rr * rr));
-        v->f[i][2] = (float)(2.0 * rr * cos(th));
-    }
-}
-
-float       tVocoder_tick        (tVocoder* const voc, float synth, float voice)
-{
-    _tVocoder* v = *voc;
-    
-    float a, b, o=0.0f, aa, bb, oo = v->kout, g = v->gain, ht = v->thru, hh = v->high, tmp;
-    uint32_t i, k = v->kval, nb = v->nbnd;
-    
-    a = voice; //speech
-    b = synth; //synth
-    
-    tmp = a - v->f[0][7]; //integrate modulator for HF band and filter bank pre-emphasis
-    v->f[0][7] = a;
-    a = tmp;
-    
-    if(tmp<0.0f) tmp = -tmp;
-    v->f[0][11] -= v->f[0][12] * (v->f[0][11] - tmp);      //high band envelope
-    o = v->f[0][11] * (ht * a + hh * (b - v->f[0][3])); //high band + high thru
-    
-    v->f[0][3] = b; //integrate carrier for HF band
-    
-    if(++k & 0x1) //this block runs at half sample rate
-    {
-        oo = 0.0f;
-        aa = a + v->f[0][9] - v->f[0][8] - v->f[0][8];  //apply zeros here instead of in each reson
-        v->f[0][9] = v->f[0][8];  v->f[0][8] = a;
-        bb = b + v->f[0][5] - v->f[0][4] - v->f[0][4];
-        v->f[0][5] = v->f[0][4];  v->f[0][4] = b;
-        
-        for(i=1; i<nb; i++) //filter bank: 4th-order band pass
-        {
-            tmp = v->f[i][0] * v->f[i][3] + v->f[i][1] * v->f[i][4] + bb;
-            v->f[i][4] = v->f[i][3];
-            v->f[i][3] = tmp;
-            tmp += v->f[i][2] * v->f[i][5] + v->f[i][1] * v->f[i][6];
-            v->f[i][6] = v->f[i][5];
-            v->f[i][5] = tmp;
-            
-            tmp = v->f[i][0] * v->f[i][7] + v->f[i][1] * v->f[i][8] + aa;
-            v->f[i][8] = v->f[i][7];
-            v->f[i][7] = tmp;
-            tmp += v->f[i][2] * v->f[i][9] + v->f[i][1] * v->f[i][10];
-            v->f[i][10] = v->f[i][9];
-            v->f[i][9] = tmp;
-            
-            if(tmp<0.0f) tmp = -tmp;
-            v->f[i][11] -= v->f[i][12] * (v->f[i][11] - tmp);
-            oo += v->f[i][5] * v->f[i][11];
-        }
-    }
-    o += oo * g; //effect of interpolating back up to Fs would be minimal (aliasing >16kHz)
-    
-    v->kout = oo;
-    v->kval = k & 0x1;
-    if(fabs(v->f[0][11])<1.0e-10) v->f[0][11] = 0.0f; //catch HF envelope denormal
-    
-    for(i=1;i<nb;i++)
-        if(fabs(v->f[i][3])<1.0e-10 || fabs(v->f[i][7])<1.0e-10)
-            for(k=3; k<12; k++) v->f[i][k] = 0.0f; //catch reson & envelope denormals
-    
-    if(fabs(o)>10.0f) tVocoder_suspend(voc); //catch instability
-    
-    return o;
-    
-}
-
-void        tVocoder_suspend     (tVocoder* const voc)
-{
-    _tVocoder* v = *voc;
-    
-    int32_t i, j;
-    
-    for(i=0; i<v->nbnd; i++) for(j=3; j<12; j++) v->f[i][j] = 0.0f; //zero band filters and envelopes
-    v->kout = 0.0f;
-    v->kval = 0;
-}
-
-//============================================================================================================
-// SOLAD
-//============================================================================================================
-/******************************************************************************/
-/***************** static function declarations *******************************/
-/******************************************************************************/
-
-static void solad_init(_tSOLAD *w);
-static inline float read_sample(_tSOLAD *w, float floatindex);
-static void pitchdown(_tSOLAD *w, float *out);
-static void pitchup(_tSOLAD *w, float *out);
-
-/******************************************************************************/
-/***************** public access functions ************************************/
-/******************************************************************************/
-
-// init
-void     tSOLAD_init(tSOLAD* const wp)
-{
-    _tSOLAD* w = *wp = (_tSOLAD*) leaf_calloc(sizeof(_tSOLAD));
-    
-    w->pitchfactor = 1.;
-    w->delaybuf = (float*) leaf_calloc(sizeof(float) * (LOOPSIZE+16));
-    
-    solad_init(w);
-}
-
-void tSOLAD_free(tSOLAD* const wp)
-{
-    _tSOLAD* w = *wp;
-    
-    leaf_free(w->delaybuf);
-    leaf_free(w);
-}
-
-void    tSOLAD_initToPool       (tSOLAD* const wp, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-
-    _tSOLAD* w = *wp = (_tSOLAD*) mpool_calloc(sizeof(_tSOLAD), &m->pool);
-    
-    w->pitchfactor = 1.;
-    w->delaybuf = (float*) mpool_calloc(sizeof(float) * (LOOPSIZE+16), &m->pool);
-
-    solad_init(w);
-}
-
-void    tSOLAD_freeFromPool     (tSOLAD* const wp, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSOLAD* w = *wp;
-    
-    mpool_free(w->delaybuf, &m->pool);
-    mpool_free(w, &m->pool);
-}
-
-// send one block of input samples, receive one block of output samples
-void tSOLAD_ioSamples(tSOLAD* const wp, float* in, float* out, int blocksize)
-{
-    _tSOLAD* w = *wp;
-    
-    int i = w->timeindex;
-    int n = w->blocksize = blocksize;
-    
-    if(!i) w->delaybuf[LOOPSIZE] = in[0];   // copy one sample for interpolation
-    while(n--) w->delaybuf[i++] = *in++;    // copy one input block to delay buffer
-    
-    if(w->pitchfactor > 1) pitchup(w, out);
-    else pitchdown(w, out);
-    
-    w->timeindex += blocksize;
-    w->timeindex &= LOOPMASK;
-}
-
-// set periodicity analysis data
-void tSOLAD_setPeriod(tSOLAD* const wp, float period)
-{
-    _tSOLAD* w = *wp;
-    
-    if(period > MAXPERIOD) period = MAXPERIOD;
-    if(period > MINPERIOD) w->period = period;  // ignore period when too small
-}
-
-// set pitch factor between 0.25 and 4
-void tSOLAD_setPitchFactor(tSOLAD* const wp, float pitchfactor)
-{
-    _tSOLAD* w = *wp;
-    
-    if (pitchfactor <= 0.0f) return;
-    w->pitchfactor = pitchfactor;
-}
-
-// force readpointer lag
-void tSOLAD_setReadLag(tSOLAD* const wp, float readlag)
-{
-    _tSOLAD* w = *wp;
-    
-    if(readlag < 0) readlag = 0;
-    if(readlag < w->readlag)               // do not jump backward, only forward
-    {
-        w->jump = w->readlag - readlag;
-        w->readlag = readlag;
-        w->xfadelength = readlag;
-        w->xfadevalue = 1;
-    }
-}
-
-// reset state variables
-void tSOLAD_resetState(tSOLAD* const wp)
-{
-    _tSOLAD* w = *wp;
-    
-    int n = LOOPSIZE + 1;
-    float *buf = w->delaybuf;
-    
-    while(n--) *buf++ = 0;
-    solad_init(w);
-}
-
-/******************************************************************************/
-/******************** private procedures **************************************/
-/******************************************************************************/
-
-/*
- Function pitchdown() is called to read samples from the delay buffer when pitch
- factor is between 0.25 and 1. The read pointer lags behind because of the slowed
- down speed, and it must jump forward towards the write pointer soon as there is
- sufficient space to jump. That is, if there is at least one period of the input
- signal between read pointer and write pointer.  When short periods follow up on
- long periods, the read pointer may have space to jump over more than one period
- lenghts. Jump length must be [periodlength ^ 2] in any case.
- 
- A linear crossfade function joins the jump-from point with the jump-to point.
- The crossfade must be completed before another read pointer jump is allowed.
- Length of the crossfade function is stored as a number of samples in terms of
- the input sample rate. This length is dynamically translated
- to a crossfade length expressed in output reading rate, according to pitch
- factor which can change before the crossfade is completed. Crossfade length does
- not cover an invariable length in periods for all pitch transposition factors.
- For pitch factors from 0.5 till 1, crossfade length is stretched in the
- output just as much as the signal itself, as crossfade speed is set to equal
- pitch factor. For pitch factors below 0.5, the read pointer wants to jump
- forward before one period is read, therefore the crossfade length as expressed
- in output periods must be shorter. Crossfade speed is set to [1 - pitchfactor]
- for those cases. Pitch factor 0.5 is the natural switch point between crossfade
- speeds [pitchfactor] and [1 - pitchfactor] because 0.5 == 1 - 0.5. The crossfade
- speed modification for pitch factors below 0.5 also means that much of the
- original signal content will be skipped.
- */
-
-
-static void pitchdown(_tSOLAD* const w, float *out)
-{
-    int n = w->blocksize;
-    float refindex = (float)(w->timeindex + LOOPSIZE); // no negative values!
-    float pitchfactor = w->pitchfactor;
-    float period = w->period;
-    float readlag = w->readlag;
-    float readlagstep = 1 - pitchfactor;
-    float jump = w->jump;
-    float xfadevalue = w->xfadevalue;
-    float xfadelength = w->xfadelength;
-    float xfadespeed, xfadestep, readindex, outputsample;
-    
-    if(pitchfactor > 0.5) xfadespeed = pitchfactor;
-    else xfadespeed = 1 - pitchfactor;
-    xfadestep = xfadespeed / xfadelength;
-    
-    while(n--)
-    {
-        if(readlag > period)        // check if read pointer may jump forward...
-        {
-            if(xfadevalue <= 0)      // ...but do not interrupt crossfade
-            {
-                jump = period;                           // jump forward
-                while((jump * 2) < readlag) jump *= 2;   // use available space
-                readlag -= jump;                         // reduce read pointer lag
-                xfadevalue = 1;                          // start crossfade
-                xfadelength = period - 1;
-                xfadestep = xfadespeed / xfadelength;
-            }
-        }
-        
-        readindex = refindex - readlag;
-        outputsample = read_sample(w, readindex);
-        
-        if(xfadevalue > 0)
-        {
-            outputsample *= (1 - xfadevalue);                               // fadein
-            outputsample += read_sample(w, readindex - jump) * xfadevalue;  // fadeout
-            xfadevalue -= xfadestep;
-        }
-        
-        *out++ = outputsample;
-        refindex += 1;
-        readlag += readlagstep;
-    }
-    
-    w->jump = jump;                 // state variables
-    w->readlag = readlag;
-    w->xfadevalue = xfadevalue;
-    w->xfadelength = xfadelength;
-}
-
-
-/*
- Function pitchup() for pitch factors above 1 is more complicated than
- pitchdown(). The read pointer increments faster than the write pointer and a
- backward jump must happen in time, reckoning with the crossfade region. The read
- pointer backward jump length is always one period. In order to minimize the area
- of signal duplicates, crossfade length is aimed at [period / pitchfactor].
- This leads to a crossfade speed of [pitchfactor * pitchfactor].
- 
- Some samples for the fade out (but not all of them) must already be in the
- buffer, otherwise we will run out of input samples before the crossfade is
- completed. The ratio of past samples and future samples for a crossfade of any
- length is as follows:
- 
- past samples: xfadelength * (1 - 1 / pitchfactor)
- future samples: xfadelength * (1 / pitchfactor)
- 
- For example in the case of pitch factor 1.5 this would be:
- 
- past samples: xfadelength * (1 - 1 / 1.5) = xfadelength * 1 / 3
- future samples: xfadelength * (1 / 1.5) = xfadelength * 2 / 3
- 
- In the case of pitch factor 4 this would be:
- 
- past samples: xfadelength * (1 - 1 / 4) = xfadelength * 3 / 4
- future samples: xfadelength * (1 / 4) = xfadelength * 1 / 4
- 
- The read pointer lag must therefore preserve a minimum dependent on pitch
- factor. The minimum is called 'limit' here:
- 
- limit = period * (pitchfactor - 1) / pitchfactor * pitchfactor
- 
- Components of this expression are combined to reuse them in operations, while
- (pitchfactor - 1) is changed to (pitchfactor - 0.99) to avoid numerical
- resolution issues for pitch factors slightly above 1:
- 
- xfadespeed = pitchfactor * pitchfactor
- limitfactor = (pitchfactor - 0.99) / xfadespeed
- limit = period * limitfactor
- 
- When read lag is smaller than this limit, the read pointer must preferably
- jump backward, unless a previous crossfade is not yet completed. Crossfades must
- preferably be completed, unless the read pointer lag becomes smaller than zero.
- With fluctuating period lengths and pitch factors, the readpointer lag limit may
- change from one input block to the next in such a way that the actual lag is
- suddenly much smaller than the limit, and the intended crossfade length can not
- be applied. Therefore the crossfade length is simply calculated from the
- available amount of samples for all cases, like so:
- 
- xfadelength = readlag / limitfactor
- 
- For most occurrences, this will amount to a crossfade length reduced to
- [period / pitchfactor] in the output for pitch factors above 1, while in some
- cases it will be considerably shorter. Fortunately, an incidental aberration of
- the intended crossfade length hardly ever creates an audible artifact. The
- reason to specify preferred crossfade length according to pitch factor is to
- minimize the impression of echoes without sacrificing too much of the signal
- content. The readpointer jump length remains one period in any case.
- 
- Sometimes, the input signal periodicity may decrease substantially between one
- signal block and the next. In such cases it may be possible for the read pointer
- to jump forward and reduce latency. For every signal block, a check on this
- possibility is done. A previous crossfade must be completed before a forward
- jump is allowed.
- */
-static void pitchup(_tSOLAD* const w, float *out)
-{
-    int n = w->blocksize;
-    float refindex = (float)(w->timeindex + LOOPSIZE); // no negative values
-    float pitchfactor = w->pitchfactor;
-    float period = w->period;
-    float readlag = w->readlag;
-    float jump = w->jump;
-    float xfadevalue = w->xfadevalue;
-    float xfadelength = w->xfadelength;
-    
-    float readlagstep = pitchfactor - 1;
-    float xfadespeed = pitchfactor * pitchfactor;
-    float xfadestep = xfadespeed / xfadelength;
-    float limitfactor = (pitchfactor - (float)0.99) / xfadespeed;
-    float limit = period * limitfactor;
-    float readindex, outputsample;
-    
-    if((readlag > (period + 2 * limit)) & (xfadevalue < 0))
-    {
-        jump = period;                                        // jump forward
-        while((jump * 2) < (readlag - 2 * limit)) jump *= 2;  // use available space
-        readlag -= jump;                                      // reduce read pointer lag
-        xfadevalue = 1;                                       // start crossfade
-        xfadelength = period - 1;
-        xfadestep = xfadespeed / xfadelength;
-    }
-    
-    while(n--)
-    {
-        if(readlag < limit)  // check if read pointer should jump backward...
-        {
-            if((xfadevalue < 0) | (readlag < 0)) // ...but try not to interrupt crossfade
-            {
-                xfadelength = readlag / limitfactor;
-                if(xfadelength < 1) xfadelength = 1;
-                xfadestep = xfadespeed / xfadelength;
-                
-                jump = -period;         // jump backward
-                readlag += period;      // increase read pointer lag
-                xfadevalue = 1;         // start crossfade
-            }
-        }
-        
-        readindex = refindex - readlag;
-        outputsample = read_sample(w, readindex);
-        
-        if(xfadevalue > 0)
-        {
-            outputsample *= (1 - xfadevalue);
-            outputsample += read_sample(w, readindex - jump) * xfadevalue;
-            xfadevalue -= xfadestep;
-        }
-        
-        *out++ = outputsample;
-        refindex += 1;
-        readlag -= readlagstep;
-    }
-    
-    w->readlag = readlag;               // state variables
-    w->jump = jump;
-    w->xfadelength = xfadelength;
-    w->xfadevalue = xfadevalue;
-}
-
-// read one sample from delay buffer, with linear interpolation
-static inline float read_sample(_tSOLAD* const w, float floatindex)
-{
-    int index = (int)floatindex;
-    float fraction = floatindex - (float)index;
-    float *buf = w->delaybuf;
-    index &= LOOPMASK;
-    
-    return (buf[index] + (fraction * (buf[index+1] - buf[index])));
-}
-
-static void solad_init(_tSOLAD* const w)
-{
-    w->timeindex = 0;
-    w->xfadevalue = -1;
-    w->period = INITPERIOD;
-    w->readlag = INITPERIOD;
-    w->blocksize = INITPERIOD;
-}
-
-//============================================================================================================
-// PITCHSHIFT
-//============================================================================================================
-
-static int pitchshift_attackdetect(_tPitchShift* ps)
-{
-    float envout;
-    
-    _tPeriodDetection* p = *ps->p;
-    
-    envout = tEnvPD_tick(&p->env);
-    
-    if (envout >= 1.0f)
-    {
-        p->lastmax = p->max;
-        if (envout > p->max)
-        {
-            p->max = envout;
-        }
-        else
-        {
-            p->deltamax = envout - p->max;
-            p->max = p->max * ps->radius;
-        }
-        p->deltamax = p->max - p->lastmax;
-    }
-    
-    p->fba = p->fba ? (p->fba - 1) : 0;
-    
-    return (p->fba == 0 && (p->max > 60 && p->deltamax > 6)) ? 1 : 0;
-}
-
-void tPitchShift_init (tPitchShift* const psr, tPeriodDetection* pd, float* out, int bufSize)
-{
-    _tPitchShift* ps = *psr = (_tPitchShift*) leaf_calloc(sizeof(_tPitchShift));
-    _tPeriodDetection* p = *pd;
-    
-    ps->p = pd;
-    
-    ps->outBuffer = out;
-    ps->bufSize = bufSize;
-    ps->frameSize = p->frameSize;
-    ps->framesPerBuffer = ps->bufSize / ps->frameSize;
-    ps->curBlock = 1;
-    ps->lastBlock = 0;
-    ps->index = 0;
-    ps->pitchFactor = 1.0f;
-    
-    tSOLAD_init(&ps->sola);
-    
-    tHighpass_init(&ps->hp, HPFREQ);
-    
-    tSOLAD_setPitchFactor(&ps->sola, DEFPITCHRATIO);
-}
-
-void tPitchShift_free(tPitchShift* const psr)
-{
-    _tPitchShift* ps = *psr;
-    
-    tSOLAD_free(&ps->sola);
-    tHighpass_free(&ps->hp);
-    leaf_free(ps);
-}
-
-void    tPitchShift_initToPool      (tPitchShift* const psr, tPeriodDetection* const pd, float* out, int bufSize, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-
-    _tPitchShift* ps = *psr = (_tPitchShift*) mpool_calloc(sizeof(_tPitchShift), &m->pool);
-
-    _tPeriodDetection* p = *pd;
-    
-    ps->p = pd;
-    
-    ps->outBuffer = out;
-    ps->bufSize = bufSize;
-    ps->frameSize = p->frameSize;
-    ps->framesPerBuffer = ps->bufSize / ps->frameSize;
-    ps->curBlock = 1;
-    ps->lastBlock = 0;
-    ps->index = 0;
-    ps->pitchFactor = 1.0f;
-    
-    tSOLAD_initToPool(&ps->sola, mp);
-    
-    tHighpass_initToPool(&ps->hp, HPFREQ, mp);
-    
-    tSOLAD_setPitchFactor(&ps->sola, DEFPITCHRATIO);
-}
-
-void    tPitchShift_freeFromPool    (tPitchShift* const psr, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPitchShift* ps = *psr;
-    
-    tSOLAD_freeFromPool(&ps->sola, mp);
-    tHighpass_freeFromPool(&ps->hp, mp);
-    mpool_free(ps, &m->pool);
-}
-
-void tPitchShift_setPitchFactor(tPitchShift* psr, float pf)
-{
-    _tPitchShift* ps = *psr;
-    
-    ps->pitchFactor = pf;
-}
-
-float tPitchShift_shift (tPitchShift* psr)
-{
-    _tPitchShift* ps = *psr;
-    _tPeriodDetection* p = *ps->p;
-    
-    float period, out;
-    int i, iLast;
-    
-    i = p->i;
-    iLast = p->iLast;
-    
-    out = tHighpass_tick(&ps->hp, ps->outBuffer[iLast]);
-    
-    if (p->indexstore >= ps->frameSize)
-    {
-        period = tPeriodDetection_getPeriod(&p);
-        
-        if(pitchshift_attackdetect(ps) == 1)
-        {
-            p->fba = 5;
-            tSOLAD_setReadLag(&ps->sola, p->windowSize);
-        }
-        
-        tSOLAD_setPeriod(&ps->sola, period);
-        tSOLAD_setPitchFactor(&ps->sola, ps->pitchFactor);
-        
-        tSOLAD_ioSamples(&ps->sola, &(p->inBuffer[i]), &(ps->outBuffer[i]), ps->frameSize);
-    }
-    
-    return out;
-}
-
-float tPitchShift_shiftToFreq (tPitchShift* psr, float freq)
-{
-    _tPitchShift* ps = *psr;
-    _tPeriodDetection* p = *ps->p;
-    
-    float period, out;
-    int i, iLast;
-    
-    i = p->i;
-    iLast = p->iLast;
-    
-    out = tHighpass_tick(&ps->hp, ps->outBuffer[iLast]);
-    
-    if (p->indexstore >= ps->frameSize)
-    {
-        period = tPeriodDetection_getPeriod(&p);
-        
-        if(pitchshift_attackdetect(ps) == 1)
-        {
-            p->fba = 5;
-            tSOLAD_setReadLag(&ps->sola, p->windowSize);
-        }
-        
-        tSOLAD_setPeriod(&ps->sola, period);
-        
-        if (period != 0) ps->pitchFactor = period*freq*leaf.invSampleRate;
-        else ps->pitchFactor = 1.0f;
-        
-        tSOLAD_setPitchFactor(&ps->sola, ps->pitchFactor);
-        
-        tSOLAD_ioSamples(&ps->sola, &(p->inBuffer[i]), &(ps->outBuffer[i]), ps->frameSize);
-    }
-    return out;
-}
-
-float tPitchShift_shiftToFunc (tPitchShift* psr, float (*fun)(float))
-{
-    _tPitchShift* ps = *psr;
-    _tPeriodDetection* p = *ps->p;
-    
-    float period, out;
-    int i, iLast;
-    
-    i = p->i;
-    iLast = p->iLast;
-    
-    out = tHighpass_tick(&ps->hp, ps->outBuffer[iLast]);
-    
-    if (p->indexstore >= ps->frameSize)
-    {
-        period = tPeriodDetection_getPeriod(&p);
-        
-        if(pitchshift_attackdetect(ps) == 1)
-        {
-            p->fba = 5;
-            tSOLAD_setReadLag(&ps->sola, p->windowSize);
-        }
-        
-        tSOLAD_setPeriod(&ps->sola, period);
-        
-        ps->pitchFactor = period/fun(period);
-        tSOLAD_setPitchFactor(&ps->sola, ps->pitchFactor);
-        
-        tSOLAD_ioSamples(&ps->sola, &(p->inBuffer[i]), &(ps->outBuffer[i]), ps->frameSize);
-        
-        ps->curBlock++;
-        if (ps->curBlock >= p->framesPerBuffer) ps->curBlock = 0;
-        ps->lastBlock++;
-        if (ps->lastBlock >= ps->framesPerBuffer) ps->lastBlock = 0;
-    }
-    
-    return out;
-}
-
-//============================================================================================================
-// RETUNE
-//============================================================================================================
-
-void tRetune_init(tRetune* const rt, int numVoices, int bufSize, int frameSize)
-{
-    tRetune_initToPool(rt, numVoices, bufSize, frameSize, &leaf_mempool);
-}
-
-void tRetune_free(tRetune* const rt)
-{
-    tRetune_freeFromPool(rt, &leaf_mempool);
-}
-
-void    tRetune_initToPool      (tRetune* const rt, int numVoices, int bufSize, int frameSize, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tRetune* r = *rt = (_tRetune*) mpool_alloc(sizeof(_tRetune), &m->pool);
-    
-    r->bufSize = bufSize;
-    r->frameSize = frameSize;
-    r->numVoices = numVoices;
-    
-    r->inBuffer = (float*) mpool_calloc(sizeof(float) * r->bufSize, &m->pool);
-    r->outBuffers = (float**) mpool_calloc(sizeof(float*) * r->numVoices, &m->pool);
-    
-    r->hopSize = DEFHOPSIZE;
-    r->windowSize = DEFWINDOWSIZE;
-    r->fba = FBA;
-    tRetune_setTimeConstant(rt, DEFTIMECONSTANT);
-    
-    r->inputPeriod = 0.0f;
-
-    r->ps = (tPitchShift*) mpool_calloc(sizeof(tPitchShift) * r->numVoices, &m->pool);
-    r->pitchFactor = (float*) mpool_calloc(sizeof(float) * r->numVoices, &m->pool);
-    r->tickOutput = (float*) mpool_calloc(sizeof(float) * r->numVoices, &m->pool);
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        r->outBuffers[i] = (float*) mpool_calloc(sizeof(float) * r->bufSize, &m->pool);
-    }
-    
-    tPeriodDetection_initToPool(&r->pd, r->inBuffer, r->outBuffers[0], r->bufSize, r->frameSize, mp);
-
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        tPitchShift_initToPool(&r->ps[i], &r->pd, r->outBuffers[i], r->bufSize, mp);
-    }
-}
-
-void    tRetune_freeFromPool    (tRetune* const rt, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tRetune* r = *rt;
-    
-    tPeriodDetection_freeFromPool(&r->pd, mp);
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        tPitchShift_freeFromPool(&r->ps[i], mp);
-        mpool_free(r->outBuffers[i], &m->pool);
-    }
-    mpool_free(r->tickOutput, &m->pool);
-    mpool_free(r->pitchFactor, &m->pool);
-    mpool_free(r->ps, &m->pool);
-    mpool_free(r->inBuffer, &m->pool);
-    mpool_free(r->outBuffers, &m->pool);
-    mpool_free(r, &m->pool);
-}
-
-float* tRetune_tick(tRetune* const rt, float sample)
-{
-    _tRetune* r = *rt;
-    
-    r->inputPeriod = tPeriodDetection_tick(&r->pd, sample);
-    
-    for (int v = 0; v < r->numVoices; ++v)
-    {
-        r->tickOutput[v] = tPitchShift_shift(&r->ps[v]);
-    }
-    
-    return r->tickOutput;
-}
-
-void tRetune_setNumVoices(tRetune* const rt, int numVoices)
-{
-    _tRetune* r = *rt;
-    
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        tPitchShift_free(&r->ps[i]);
-        leaf_free(r->outBuffers[i]);
-    }
-    leaf_free(r->tickOutput);
-    leaf_free(r->pitchFactor);
-    leaf_free(r->ps);
-    leaf_free(r->outBuffers);
-    
-    r->numVoices = numVoices;
-    
-    r->outBuffers = (float**) leaf_alloc(sizeof(float*) * r->numVoices);
-    r->ps = (tPitchShift*) leaf_alloc(sizeof(tPitchShift) * r->numVoices);
-    r->pitchFactor = (float*) leaf_alloc(sizeof(float) * r->numVoices);
-    r->tickOutput = (float*) leaf_alloc(sizeof(float) * r->numVoices);
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        r->outBuffers[i] = (float*) leaf_alloc(sizeof(float) * r->bufSize);
-        tPitchShift_init(&r->ps[i], &r->pd, r->outBuffers[i], r->bufSize);
-    }
-}
-
-void tRetune_setPitchFactors(tRetune* const rt, float pf)
-{
-    _tRetune* r = *rt;
-    
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        r->pitchFactor[i] = pf;
-        tPitchShift_setPitchFactor(&r->ps[i], r->pitchFactor[i]);
-    }
-}
-
-void tRetune_setPitchFactor(tRetune* const rt, float pf, int voice)
-{
-    _tRetune* r = *rt;
-    
-    r->pitchFactor[voice] = pf;
-    tPitchShift_setPitchFactor(&r->ps[voice], r->pitchFactor[voice]);
-}
-
-void tRetune_setTimeConstant(tRetune* const rt, float tc)
-{
-    _tRetune* r = *rt;
-    
-    r->timeConstant = tc;
-    r->radius = expf(-1000.0f * r->hopSize * leaf.invSampleRate / r->timeConstant);
-}
-
-void tRetune_setHopSize(tRetune* const rt, int hs)
-{
-    _tRetune* r = *rt;
-    
-    r->hopSize = hs;
-    tPeriodDetection_setHopSize(&r->pd, r->hopSize);
-}
-
-void tRetune_setWindowSize(tRetune* const rt, int ws)
-{
-    _tRetune* r = *rt;
-    
-    r->windowSize = ws;
-    tPeriodDetection_setWindowSize(&r->pd, r->windowSize);
-}
-
-void tRetune_setFidelityThreshold(tRetune* const rt, float threshold)
-{
-    _tRetune* r = *rt;
-    
-    tPeriodDetection_setFidelityThreshold(&r->pd, threshold);
-}
-
-float tRetune_getInputPeriod(tRetune* const rt)
-{
-    _tRetune* r = *rt;
-    
-    return r->inputPeriod;
-}
-
-float tRetune_getInputFreq(tRetune* const rt)
-{
-    _tRetune* r = *rt;
-    
-    return 1.0f/r->inputPeriod;
-}
-
-//============================================================================================================
-// AUTOTUNE
-//============================================================================================================
-
-void tAutotune_init(tAutotune* const rt, int numVoices, int bufSize, int frameSize)
-{
-    tAutotune_initToPool(rt, numVoices, bufSize, frameSize, &leaf_mempool);
-}
-
-void tAutotune_free(tAutotune* const rt)
-{
-    tAutotune_freeFromPool(rt, &leaf_mempool);
-}
-
-void    tAutotune_initToPool        (tAutotune* const rt, int numVoices, int bufSize, int frameSize, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tAutotune* r = *rt = (_tAutotune*) mpool_alloc(sizeof(_tAutotune), &m->pool);
-    
-    r->bufSize = bufSize;
-    r->frameSize = frameSize;
-    r->numVoices = numVoices;
-    
-    r->inBuffer = (float*) mpool_alloc(sizeof(float) * r->bufSize, &m->pool);
-    r->outBuffers = (float**) mpool_alloc(sizeof(float*) * r->numVoices, &m->pool);
-    
-    r->hopSize = DEFHOPSIZE;
-    r->windowSize = DEFWINDOWSIZE;
-    r->fba = FBA;
-    tAutotune_setTimeConstant(rt, DEFTIMECONSTANT);
-    
-    r->ps = (tPitchShift*) mpool_alloc(sizeof(tPitchShift) * r->numVoices, &m->pool);
-    r->freq = (float*) mpool_alloc(sizeof(float) * r->numVoices, &m->pool);
-    r->tickOutput = (float*) mpool_alloc(sizeof(float) * r->numVoices, &m->pool);
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        r->outBuffers[i] = (float*) mpool_alloc(sizeof(float) * r->bufSize, &m->pool);
-    }
-    
-    tPeriodDetection_initToPool(&r->pd, r->inBuffer, r->outBuffers[0], r->bufSize, r->frameSize, mp);
-
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        tPitchShift_initToPool(&r->ps[i], &r->pd, r->outBuffers[i], r->bufSize, mp);
-    }
-    
-    r->inputPeriod = 0.0f;
-}
-
-void    tAutotune_freeFromPool      (tAutotune* const rt, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tAutotune* r = *rt;
-    
-    tPeriodDetection_freeFromPool(&r->pd, mp);
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        tPitchShift_freeFromPool(&r->ps[i], mp);
-        mpool_free(r->outBuffers[i], &m->pool);
-    }
-    mpool_free(r->tickOutput, &m->pool);
-    mpool_free(r->freq, &m->pool);
-    mpool_free(r->ps, &m->pool);
-    mpool_free(r->inBuffer, &m->pool);
-    mpool_free(r->outBuffers, &m->pool);
-    mpool_free(r, &m->pool);
-}
-
-float* tAutotune_tick(tAutotune* const rt, float sample)
-{
-    _tAutotune* r = *rt;
-    
-    float tempPeriod = tPeriodDetection_tick(&r->pd, sample);
-    if (tempPeriod < 1000.0f) //to avoid trying to follow consonants JS
-	{
-		r->inputPeriod = tempPeriod;
-	}
-
-	for (int v = 0; v < r->numVoices; ++v)
-	{
-		r->tickOutput[v] = tPitchShift_shiftToFreq(&r->ps[v], r->freq[v]);
-	}
-
-    return r->tickOutput;
-}
-
-void tAutotune_setNumVoices(tAutotune* const rt, int numVoices)
-{
-    _tAutotune* r = *rt;
-    
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        tPitchShift_free(&r->ps[i]);
-        leaf_free(r->outBuffers[i]);
-    }
-    leaf_free(r->tickOutput);
-    leaf_free(r->freq);
-    leaf_free(r->ps);
-    leaf_free(r->outBuffers);
-    
-    r->numVoices = numVoices;
-    
-    r->outBuffers = (float**) leaf_alloc(sizeof(float*) * r->numVoices);
-    r->ps = (tPitchShift*) leaf_alloc(sizeof(tPitchShift) * r->numVoices);
-    r->freq = (float*) leaf_alloc(sizeof(float) * r->numVoices);
-    r->tickOutput = (float*) leaf_alloc(sizeof(float) * r->numVoices);
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        r->outBuffers[i] = (float*) leaf_alloc(sizeof(float) * r->bufSize);
-        tPitchShift_init(&r->ps[i], &r->pd, r->outBuffers[i], r->bufSize);
-    }
-}
-
-void tAutotune_setFreqs(tAutotune* const rt, float f)
-{
-    _tAutotune* r = *rt;
-    
-    for (int i = 0; i < r->numVoices; ++i)
-    {
-        r->freq[i] = f;
-    }
-}
-
-void tAutotune_setFreq(tAutotune* const rt, float f, int voice)
-{
-    _tAutotune* r = *rt;
-    
-    r->freq[voice] = f;
-}
-
-void tAutotune_setTimeConstant(tAutotune* const rt, float tc)
-{
-    _tAutotune* r = *rt;
-    
-    r->timeConstant = tc;
-    r->radius = expf(-1000.0f * r->hopSize * leaf.invSampleRate / r->timeConstant);
-}
-
-void tAutotune_setHopSize(tAutotune* const rt, int hs)
-{
-    _tAutotune* r = *rt;
-    
-    r->hopSize = hs;
-    tPeriodDetection_setHopSize(&r->pd, r->hopSize);
-}
-
-void tAutotune_setWindowSize(tAutotune* const rt, int ws)
-{
-    _tAutotune* r = *rt;
-    
-    r->windowSize = ws;
-    tPeriodDetection_setWindowSize(&r->pd, r->windowSize);
-}
-
-void tAutotune_setFidelityThreshold(tAutotune* const rt, float threshold)
-{
-    _tAutotune* r = *rt;
-
-    tPeriodDetection_setFidelityThreshold(&r->pd, threshold);
-}
-
-float tAutotune_getInputPeriod(tAutotune* const rt)
-{
-    _tAutotune* r = *rt;
-    
-    return r->inputPeriod;
-}
-
-float tAutotune_getInputFreq(tAutotune* const rt)
-{
-    _tAutotune* r = *rt;
-    
-    return 1.0f/r->inputPeriod;
-}
-
-//============================================================================================================
-// FORMANTSHIFTER
-//============================================================================================================
-// algorithm from Tom Baran's autotalent code.
-
-void tFormantShifter_init(tFormantShifter* const fsr, int order)
-{
-    _tFormantShifter* fs = *fsr = (_tFormantShifter*) leaf_alloc(sizeof(_tFormantShifter));
-    
-    fs->ford = order;
-    fs->fk = (float*) leaf_calloc(sizeof(float) * fs->ford);
-    fs->fb = (float*) leaf_calloc(sizeof(float) * fs->ford);
-    fs->fc = (float*) leaf_calloc(sizeof(float) * fs->ford);
-    fs->frb = (float*) leaf_calloc(sizeof(float) * fs->ford);
-    fs->frc = (float*) leaf_calloc(sizeof(float) * fs->ford);
-    fs->fsig = (float*) leaf_calloc(sizeof(float) * fs->ford);
-    fs->fsmooth = (float*) leaf_calloc(sizeof(float) * fs->ford);
-    fs->ftvec = (float*) leaf_calloc(sizeof(float) * fs->ford);
-    fs->fbuff = (float*) leaf_calloc(sizeof(float*) * fs->ford);
-
-    fs->falph = powf(0.001f, 40.0f * leaf.invSampleRate);
-    fs->flamb = -(0.8517f*sqrtf(atanf(0.06583f*leaf.sampleRate))-0.1916f);
-    fs->fhp = 0.0f;
-    fs->flp = 0.0f;
-    fs->flpa = powf(0.001f, 10.0f * leaf.invSampleRate);
-    fs->fmute = 1.0f;
-    fs->fmutealph = powf(0.001f, 0.5f * leaf.invSampleRate);
-    fs->cbi = 0;
-    fs->intensity = 1.0f;
-	fs->invIntensity = 1.0f;
-	tHighpass_init(&fs->hp, 10.0f);
-	tHighpass_init(&fs->hp2, 10.0f);
-	tFeedbackLeveler_init(&fs->fbl1, 0.99f, 0.005f, 0.125f, 0);
-	tFeedbackLeveler_init(&fs->fbl2, 0.99f, 0.005f, 0.125f, 0);
-}
-
-void tFormantShifter_free(tFormantShifter* const fsr)
-{
-    _tFormantShifter* fs = *fsr;
-    
-    leaf_free(fs->fk);
-    leaf_free(fs->fb);
-    leaf_free(fs->fc);
-    leaf_free(fs->frb);
-    leaf_free(fs->frc);
-    leaf_free(fs->fsig);
-    leaf_free(fs->fsmooth);
-    leaf_free(fs->ftvec);
-    leaf_free(fs->fbuff);
-    tHighpass_free(&fs->hp);
-    tHighpass_free(&fs->hp2);
-	tFeedbackLeveler_free(&fs->fbl1);
-	tFeedbackLeveler_free(&fs->fbl2);
-    leaf_free(fs);
-}
-
-void    tFormantShifter_initToPool      (tFormantShifter* const fsr, int order, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tFormantShifter* fs = *fsr = (_tFormantShifter*) mpool_alloc(sizeof(_tFormantShifter), &m->pool);
-    
-    fs->ford = order;
-    fs->fk = (float*) mpool_calloc(sizeof(float) * fs->ford, &m->pool);
-    fs->fb = (float*) mpool_calloc(sizeof(float) * fs->ford, &m->pool);
-    fs->fc = (float*) mpool_calloc(sizeof(float) * fs->ford, &m->pool);
-    fs->frb = (float*) mpool_calloc(sizeof(float) * fs->ford, &m->pool);
-    fs->frc = (float*) mpool_calloc(sizeof(float) * fs->ford, &m->pool);
-    fs->fsig = (float*) mpool_calloc(sizeof(float) * fs->ford, &m->pool);
-    fs->fsmooth = (float*) mpool_calloc(sizeof(float) * fs->ford, &m->pool);
-    fs->ftvec = (float*) mpool_calloc(sizeof(float) * fs->ford, &m->pool);
-    
-    fs->fbuff = (float*) mpool_calloc(sizeof(float*) * fs->ford, &m->pool);
-
-    
-    fs->falph = powf(0.001f, 10.0f * leaf.invSampleRate);
-    fs->flamb = -(0.8517f*sqrtf(atanf(0.06583f*leaf.sampleRate))-0.1916f);
-    fs->fhp = 0.0f;
-    fs->flp = 0.0f;
-    fs->flpa = powf(0.001f, 10.0f * leaf.invSampleRate);
-    fs->fmute = 1.0f;
-    fs->fmutealph = powf(0.001f, 1.0f * leaf.invSampleRate);
-    fs->cbi = 0;
-    fs->intensity = 1.0f;
-    fs->invIntensity = 1.0f;
-    tHighpass_initToPool(&fs->hp, 20.0f, mp);
-    tHighpass_initToPool(&fs->hp2, 20.0f, mp);
-    tFeedbackLeveler_initToPool(&fs->fbl1, 0.8f, .005f, 0.125, 1, mp);
-    tFeedbackLeveler_initToPool(&fs->fbl2, 0.8f, .005f, 0.125, 1, mp);
-}
-
-void    tFormantShifter_freeFromPool    (tFormantShifter* const fsr, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tFormantShifter* fs = *fsr;
-    
-    mpool_free(fs->fk, &m->pool);
-    mpool_free(fs->fb, &m->pool);
-    mpool_free(fs->fc, &m->pool);
-    mpool_free(fs->frb, &m->pool);
-    mpool_free(fs->frc, &m->pool);
-    mpool_free(fs->fsig, &m->pool);
-    mpool_free(fs->fsmooth, &m->pool);
-    mpool_free(fs->ftvec, &m->pool);
-    mpool_free(fs->fbuff, &m->pool);
-    tHighpass_freeFromPool(&fs->hp, mp);
-    tHighpass_freeFromPool(&fs->hp2, mp);
-    tFeedbackLeveler_freeFromPool(&fs->fbl1, mp);
-    tFeedbackLeveler_freeFromPool(&fs->fbl2, mp);
-    mpool_free(fs, &m->pool);
-}
-
-float tFormantShifter_tick(tFormantShifter* const fsr, float in)
-{
-    return tFormantShifter_add(fsr, tFormantShifter_remove(fsr, in));
-}
-
-float tFormantShifter_remove(tFormantShifter* const fsr, float in)
-{
-    _tFormantShifter* fs = *fsr;
-    in = tFeedbackLeveler_tick(&fs->fbl1, in);
-    in = tHighpass_tick(&fs->hp, in * fs->intensity);
-    
-
-    float fa, fb, fc, foma, falph, ford, flamb, tf, fk;
-
-    ford = fs->ford;
-    falph = fs->falph;
-    foma = (1.0f - falph);
-    flamb = fs->flamb;
-    
-    tf = in;
-    
-    fa = tf - fs->fhp;
-    fs->fhp = tf;
-    fb = fa;
-    for(int i = 0; i < ford; i++)
-    {
-        fs->fsig[i] = fa*fa*foma + fs->fsig[i]*falph;
-        fc = (fb - fs->fc[i])*flamb + fs->fb[i];
-        fs->fc[i] = fc;
-        fs->fb[i] = fb;
-        fk = fa*fc*foma + fs->fk[i]*falph;
-        fs->fk[i] = fk;
-        tf = fk/(fs->fsig[i] + 0.000001f);
-        tf = tf*foma + fs->fsmooth[i]*falph;
-        fs->fsmooth[i] = tf;
-        fs->fbuff[i] = tf;
-        fb = fc - tf*fa;
-        fa = fa - tf*fc;
-    }
-
-    //return fa * 0.1f;
-    return fa;
-}
-
-float tFormantShifter_add(tFormantShifter* const fsr, float in)
-{
-    _tFormantShifter* fs = *fsr;
-    
-    float fa, fb, fc, ford, flpa, flamb, tf, tf2, f0resp, f1resp, frlamb;
-    ford = fs->ford;
-
-    flpa = fs->flpa;
-    flamb = fs->flamb;
-    tf = fs->shiftFactor * (1.0f+flamb)/(1.0f-flamb);
-    frlamb = (tf-1.0f)/(tf+1.0f);
-    
-    tf2 = in;
-    fa = 0.0f;
-    fb = fa;
-    for (int i=0; i<ford; i++)
-    {
-        fc = (fb-fs->frc[i])*frlamb + fs->frb[i];
-        tf = fs->fbuff[i];
-        fb = fc - tf*fa;
-        fs->ftvec[i] = tf*fc;
-        fa = fa - fs->ftvec[i];
-    }
-    tf = -fa;
-    for (int i=ford-1; i>=0; i--)
-    {
-        tf = tf + fs->ftvec[i];
-    }
-    f0resp = tf;
-    
-    //  second time: compute 1-response
-    fa = 1.0f;
-    fb = fa;
-    for (int i=0; i<ford; i++)
-    {
-        fc = (fb-fs->frc[i])*frlamb + fs->frb[i];
-        tf = fs->fbuff[i];
-        fb = fc - tf*fa;
-        fs->ftvec[i] = tf*fc;
-        fa = fa - fs->ftvec[i];
-    }
-    tf = -fa;
-    for (int i=ford-1; i>=0; i--)
-    {
-        tf = tf + fs->ftvec[i];
-    }
-    f1resp = tf;
-    
-    //  now solve equations for output, based on 0-response and 1-response
-    tf = 2.0f*tf2;
-    tf2 = tf;
-    tf = (1.0f - f1resp + f0resp);
-    if (tf!=0.0f)
-    {
-        tf2 = (tf2 + f0resp) / tf;
-    }
-    else
-    {
-        tf2 = 0.0f;
-    }
-    
-    //  third time: update delay registers
-    fa = tf2;
-    fb = fa;
-    for (int i=0; i<ford; i++)
-    {
-        fc = (fb-fs->frc[i])*frlamb + fs->frb[i];
-        fs->frc[i] = fc;
-        fs->frb[i] = fb;
-        tf = fs->fbuff[i];
-        fb = fc - tf*fa;
-        fa = fa - tf*fc;
-    }
-    tf = tf2;
-    tf = tf + flpa * fs->flp;  // lowpass post-emphasis filter
-    fs->flp = tf;
-    
-    // Bring up the gain slowly when formant correction goes from disabled
-    // to enabled, while things stabilize.
-    if (fs->fmute>0.5f)
-    {
-        tf = tf*(fs->fmute - 0.5f)*2.0f;
-    }
-    else
-    {
-        tf = 0.0f;
-    }
-    tf2 = fs->fmutealph;
-    fs->fmute = (1.0f-tf2) + tf2*fs->fmute;
-    // now tf is signal output
-    // ...and we're done messing with formants
-    //tf = tFeedbackLeveler_tick(&fs->fbl2, tf);
-    tf = tHighpass_tick(&fs->hp2, tanhf(tf));
-
-    return tf * fs->invIntensity;
-}
-
-// 1.0f is no change, 2.0f is an octave up, 0.5f is an octave down
-void tFormantShifter_setShiftFactor(tFormantShifter* const fsr, float shiftFactor)
-{
-    _tFormantShifter* fs = *fsr;
-    fs->shiftFactor = shiftFactor;
-}
-
-void tFormantShifter_setIntensity(tFormantShifter* const fsr, float intensity)
-{
-    _tFormantShifter* fs = *fsr;
-
-
-
-    fs->intensity = LEAF_clip(1.0f, intensity, 100.0f);
-
-   // tFeedbackLeveler_setTargetLevel(&fs->fbl1, fs->intensity);
-    //tFeedbackLeveler_setTargetLevel(&fs->fbl2, fs->intensity);
-    //make sure you don't divide by zero, doofies
-    if (fs->intensity != 0.0f)
-    {
-    	fs->invIntensity = 1.0f/fs->intensity;
-    }
-    else
-    {
-    	fs->invIntensity = 1.0f;
-    }
-
-}
--- a/LEAF/Src/leaf-electrical.c
+++ /dev/null
@@ -1,551 +1,0 @@
-/*
- * leaf-electrical.c
- *
- *  Created on: Sep 25, 2019
- *      Author: jeffsnyder
- */
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-electrical.h"
-#include "..\leaf.h"
-
-#else
-
-#include "../Inc/leaf-electrical.h"
-#include "../leaf.h"
-
-#endif
-
-//==============================================================================
-
-static float get_port_resistance_for_resistor(tWDF* const r);
-static float get_port_resistance_for_capacitor(tWDF* const r);
-static float get_port_resistance_for_inductor(tWDF* const r);
-static float get_port_resistance_for_resistive(tWDF* const r);
-static float get_port_resistance_for_inverter(tWDF* const r);
-static float get_port_resistance_for_series(tWDF* const r);
-static float get_port_resistance_for_parallel(tWDF* const r);
-static float get_port_resistance_for_root(tWDF* const r);
-
-static void set_incident_wave_for_leaf(tWDF* const r, float incident_wave, float input);
-static void set_incident_wave_for_leaf_inverted(tWDF* const r, float incident_wave, float input);
-static void set_incident_wave_for_inverter(tWDF* const r, float incident_wave, float input);
-static void set_incident_wave_for_series(tWDF* const r, float incident_wave, float input);
-static void set_incident_wave_for_parallel(tWDF* const r, float incident_wave, float input);
-
-static float get_reflected_wave_for_resistor(tWDF* const r, float input);
-static float get_reflected_wave_for_capacitor(tWDF* const r, float input);
-static float get_reflected_wave_for_resistive(tWDF* const r, float input);
-static float get_reflected_wave_for_inverter(tWDF* const r, float input);
-static float get_reflected_wave_for_series(tWDF* const r, float input);
-static float get_reflected_wave_for_parallel(tWDF* const r, float input);
-
-static float get_reflected_wave_for_ideal(tWDF* const n, float input, float incident_wave);
-static float get_reflected_wave_for_diode(tWDF* const n, float input, float incident_wave);
-static float get_reflected_wave_for_diode_pair(tWDF* const n, float input, float incident_wave);
-
-static void wdf_init(tWDF* const wdf, WDFComponentType type, float value, tWDF* const rL, tWDF* const rR)
-{
-    _tWDF* r = *wdf;
-    
-    r->type = type;
-    r->child_left = rL;
-    r->child_right = rR;
-    r->incident_wave_up = 0.0f;
-    r->incident_wave_left = 0.0f;
-    r->incident_wave_right = 0.0f;
-    r->reflected_wave_up = 0.0f;
-    r->reflected_wave_left = 0.0f;
-    r->reflected_wave_right = 0.0f;
-    r->sample_rate = leaf.sampleRate;
-    r->value = value;
-    
-    tWDF* child;
-    if (r->child_left != NULL) child = r->child_left;
-    else child = r->child_right;
-    
-    if (r->type == Resistor)
-    {
-        r->port_resistance_up = r->value;
-        r->port_conductance_up = 1.0f / r->value;
-        
-        r->get_port_resistance = &get_port_resistance_for_resistor;
-        r->get_reflected_wave_up = &get_reflected_wave_for_resistor;
-        r->set_incident_wave = &set_incident_wave_for_leaf;
-    }
-    else if (r->type == Capacitor)
-    {
-        r->port_conductance_up = r->sample_rate * 2.0f * r->value;
-        r->port_resistance_up = 1.0f / r->port_conductance_up; //based on trapezoidal discretization
-        
-        r->get_port_resistance = &get_port_resistance_for_capacitor;
-        r->get_reflected_wave_up = &get_reflected_wave_for_capacitor;
-        r->set_incident_wave = &set_incident_wave_for_leaf;
-    }
-    else if (r->type == Inductor)
-    {
-        r->port_resistance_up = r->sample_rate * 2.0f * r->value; //based on trapezoidal discretization
-        r->port_conductance_up = 1.0f / r->port_resistance_up;
-        
-        r->get_port_resistance = &get_port_resistance_for_inductor;
-        r->get_reflected_wave_up = &get_reflected_wave_for_capacitor; // same as capacitor
-        r->set_incident_wave = &set_incident_wave_for_leaf_inverted;
-    }
-    else if (r->type == ResistiveSource)
-    {
-        r->port_resistance_up = r->value;
-        r->port_conductance_up = 1.0f / r->port_resistance_up;
-        
-        r->get_port_resistance = &get_port_resistance_for_resistive;
-        r->get_reflected_wave_up = &get_reflected_wave_for_resistive;
-        r->set_incident_wave = &set_incident_wave_for_leaf;
-    }
-    else if (r->type == Inverter)
-    {
-        r->port_resistance_up = tWDF_getPortResistance(r->child_left);
-        r->port_conductance_up = 1.0f / r->port_resistance_up;
-        
-        r->get_port_resistance = &get_port_resistance_for_inverter;
-        r->get_reflected_wave_up = &get_reflected_wave_for_inverter;
-        r->set_incident_wave = &set_incident_wave_for_inverter;
-    }
-    else if (r->type == SeriesAdaptor)
-    {
-        r->port_resistance_left = tWDF_getPortResistance(r->child_left);
-        r->port_resistance_right = tWDF_getPortResistance(r->child_right);
-        r->port_resistance_up = r->port_resistance_left + r->port_resistance_right;
-        r->port_conductance_up  = 1.0f / r->port_resistance_up;
-        r->port_conductance_left = 1.0f / r->port_resistance_left;
-        r->port_conductance_right = 1.0f / r->port_resistance_right;
-        r->gamma_zero = 1.0f / (r->port_resistance_right + r->port_resistance_left);
-        
-        r->get_port_resistance = &get_port_resistance_for_series;
-        r->get_reflected_wave_up = &get_reflected_wave_for_series;
-        r->set_incident_wave = &set_incident_wave_for_series;
-    }
-    else if (r->type == ParallelAdaptor)
-    {
-        r->port_resistance_left = tWDF_getPortResistance(r->child_left);
-        r->port_resistance_right = tWDF_getPortResistance(r->child_right);
-        r->port_resistance_up = (r->port_resistance_left * r->port_resistance_right) / (r->port_resistance_left + r->port_resistance_right);
-        r->port_conductance_up  = 1.0f / r->port_resistance_up;
-        r->port_conductance_left = 1.0f / r->port_resistance_left;
-        r->port_conductance_right = 1.0f / r->port_resistance_right;
-        r->gamma_zero = 1.0f / (r->port_resistance_right + r->port_resistance_left);
-        
-        r->get_port_resistance = &get_port_resistance_for_parallel;
-        r->get_reflected_wave_up = &get_reflected_wave_for_parallel;
-        r->set_incident_wave = &set_incident_wave_for_parallel;
-    }
-    else if (r->type == IdealSource)
-    {
-        r->port_resistance_up = tWDF_getPortResistance(child);
-        r->port_conductance_up = 1.0f / r->port_resistance_up;
-        
-        r->get_reflected_wave_down = &get_reflected_wave_for_ideal;
-        r->get_port_resistance = &get_port_resistance_for_root;
-    }
-    else if (r->type == Diode)
-    {
-        r->port_resistance_up = tWDF_getPortResistance(child);
-        r->port_conductance_up = 1.0f / r->port_resistance_up;
-        
-        r->get_reflected_wave_down = &get_reflected_wave_for_diode;
-        r->get_port_resistance = &get_port_resistance_for_root;
-    }
-    else if (r->type == DiodePair)
-    {
-        r->port_resistance_up = tWDF_getPortResistance(child);
-        r->port_conductance_up = 1.0f / r->port_resistance_up;
-        
-        r->get_reflected_wave_down = &get_reflected_wave_for_diode_pair;
-        r->get_port_resistance = &get_port_resistance_for_root;
-    }
-}
-//WDF
-void tWDF_init(tWDF* const wdf, WDFComponentType type, float value, tWDF* const rL, tWDF* const rR)
-{
-    *wdf = (_tWDF*) leaf_alloc(sizeof(_tWDF));
-    
-    wdf_init(wdf, type, value, rL, rR);
-}
-
-void tWDF_free(tWDF* const wdf)
-{
-    _tWDF* r = *wdf;
-    
-    leaf_free(r);
-}
-
-void    tWDF_initToPool             (tWDF* const wdf, WDFComponentType type, float value, tWDF* const rL, tWDF* const rR, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    *wdf = (_tWDF*) mpool_alloc(sizeof(_tWDF), &m->pool);
-    
-    wdf_init(wdf, type, value, rL, rR);
-}
-
-void    tWDF_freeFromPool           (tWDF* const wdf, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tWDF* r = *wdf;
-    
-    mpool_free(r, &m->pool);
-}
-
-float tWDF_tick(tWDF* const wdf, float sample, tWDF* const outputPoint, uint8_t paramsChanged)
-{
-    _tWDF* r = *wdf;
-    
-    tWDF* child;
-    if (r->child_left != NULL) child = r->child_left;
-    else child = r->child_right;
-    
-	//step 0 : update port resistances if something changed
-	if (paramsChanged) tWDF_getPortResistance(wdf);
-
-	//step 1 : set inputs to what they should be
-	float input = sample;
-
-	//step 2 : scan the waves up the tree
-	r->incident_wave_up = tWDF_getReflectedWaveUp(child, input);
-
-	//step 3 : do root scattering computation
-	r->reflected_wave_up = tWDF_getReflectedWaveDown(wdf, input, r->incident_wave_up);
-
-	//step 4 : propogate waves down the tree
-	tWDF_setIncidentWave(child, r->reflected_wave_up, input);
-
-	//step 5 : grab whatever voltages or currents we want as outputs
-    return tWDF_getVoltage(outputPoint);
-}
-
-void tWDF_setValue(tWDF* const wdf, float value)
-{
-    _tWDF* r = *wdf;
-	r->value = value;
-}
-
-void tWDF_setSampleRate(tWDF* const wdf, float sample_rate)
-{
-    _tWDF* r = *wdf;
-    r->sample_rate = sample_rate;
-}
-
-uint8_t tWDF_isLeaf(tWDF* const wdf)
-{
-    _tWDF* r = *wdf;
-    if (r->child_left == NULL && r->child_right == NULL) return 1;
-    return 0;
-}
-
-float tWDF_getPortResistance(tWDF* const wdf)
-{
-    _tWDF* r = *wdf;
-	return r->get_port_resistance(wdf);
-}
-
-void tWDF_setIncidentWave(tWDF* const wdf, float incident_wave, float input)
-{
-    _tWDF* r = *wdf;
-	r->set_incident_wave(wdf, incident_wave, input);
-}
-
-float tWDF_getReflectedWaveUp(tWDF* const wdf, float input)
-{
-    _tWDF* r = *wdf;
-	return r->get_reflected_wave_up(wdf, input);
-}
-
-float tWDF_getReflectedWaveDown(tWDF* const wdf, float input, float incident_wave)
-{
-    _tWDF* r = *wdf;
-    return r->get_reflected_wave_down(wdf, input, incident_wave);
-}
-
-float tWDF_getVoltage(tWDF* const wdf)
-{
-    _tWDF* r = *wdf;
-	return ((r->incident_wave_up * 0.5f) + (r->reflected_wave_up * 0.5f));
-}
-
-float tWDF_getCurrent(tWDF* const wdf)
-{
-    _tWDF* r = *wdf;
-	return (((r->incident_wave_up * 0.5f) - (r->reflected_wave_up * 0.5f)) * r->port_conductance_up);
-}
-
-//============ Static Functions to be Pointed To ====================
-//===================================================================
-//============ Get and Calculate Port Resistances ===================
-
-static float get_port_resistance_for_resistor(tWDF* const wdf)
-{
-    _tWDF* r = *wdf;
-    
-	r->port_resistance_up = r->value;
-	r->port_conductance_up = 1.0f / r->value;
-
-	return r->port_resistance_up;
-}
-
-static float get_port_resistance_for_capacitor(tWDF* const wdf)
-{
-    _tWDF* r = *wdf;
-    
-	r->port_conductance_up = r->sample_rate * 2.0f * r->value; //based on trapezoidal discretization
-	r->port_resistance_up = (1.0f / r->port_conductance_up);
-
-	return r->port_resistance_up;
-}
-
-static float get_port_resistance_for_inductor(tWDF* const wdf)
-{
-    _tWDF* r = *wdf;
-    
-    r->port_resistance_up = r->sample_rate * 2.0f * r->value; //based on trapezoidal discretization
-    r->port_conductance_up = (1.0f / r->port_resistance_up);
-    
-    return r->port_resistance_up;
-}
-
-static float get_port_resistance_for_resistive(tWDF* const wdf)
-{
-    _tWDF* r = *wdf;
-    
-    r->port_resistance_up = r->value;
-    r->port_conductance_up = 1.0f / r->port_resistance_up;
-    
-    return r->port_resistance_up;
-}
-
-static float get_port_resistance_for_inverter(tWDF* const wdf)
-{
-    _tWDF* r = *wdf;
-    
-    r->port_resistance_up = tWDF_getPortResistance(r->child_left);
-    r->port_conductance_up = 1.0f / r->port_resistance_up;
-    
-    return r->port_resistance_up;
-}
-
-static float get_port_resistance_for_series(tWDF* const wdf)
-{
-    _tWDF* r = *wdf;
-    
-	r->port_resistance_left = tWDF_getPortResistance(r->child_left);
-	r->port_resistance_right = tWDF_getPortResistance(r->child_right);
-	r->port_resistance_up = r->port_resistance_left + r->port_resistance_right;
-	r->port_conductance_up  = 1.0f / r->port_resistance_up;
-	r->port_conductance_left = 1.0f / r->port_resistance_left;
-	r->port_conductance_right = 1.0f / r->port_resistance_right;
-	r->gamma_zero = 1.0f / (r->port_resistance_right + r->port_resistance_left);
-
-	return r->port_resistance_up;
-}
-
-static float get_port_resistance_for_parallel(tWDF* const wdf)
-{
-    _tWDF* r = *wdf;
-    
-	r->port_resistance_left = tWDF_getPortResistance(r->child_left);
-	r->port_resistance_right = tWDF_getPortResistance(r->child_right);
-	r->port_resistance_up = (r->port_resistance_left * r->port_resistance_right) / (r->port_resistance_left + r->port_resistance_right);
-	r->port_conductance_up  = 1.0f / r->port_resistance_up;
-	r->port_conductance_left = 1.0f / r->port_resistance_left;
-	r->port_conductance_right = 1.0f / r->port_resistance_right;
-	r->gamma_zero = 1.0f / (r->port_conductance_right + r->port_conductance_left);
-
-	return r->port_resistance_up;
-}
-
-static float get_port_resistance_for_root(tWDF* const wdf)
-{
-    _tWDF* r = *wdf;
-    
-    tWDF* child;
-    if (r->child_left != NULL) child = r->child_left;
-    else child = r->child_right;
-    
-    r->port_resistance_up = tWDF_getPortResistance(child);
-    r->port_conductance_up = 1.0f / r->port_resistance_up;
-    
-    return r->port_resistance_up;
-}
-
-//===================================================================
-//================ Set Incident Waves ===============================
-
-static void set_incident_wave_for_leaf(tWDF* const wdf, float incident_wave, float input)
-{
-    _tWDF* r = *wdf;
-	r->incident_wave_up = incident_wave;
-}
-
-static void set_incident_wave_for_leaf_inverted(tWDF* const wdf, float incident_wave, float input)
-{
-    _tWDF* r = *wdf;
-    r->incident_wave_up = -1.0f * incident_wave;
-}
-
-static void set_incident_wave_for_inverter(tWDF* const wdf, float incident_wave, float input)
-{
-    _tWDF* r = *wdf;
-    r->incident_wave_up = incident_wave;
-    tWDF_setIncidentWave(r->child_left, -1.0f * incident_wave, input);
-}
-
-static void set_incident_wave_for_series(tWDF* const wdf, float incident_wave, float input)
-{
-    _tWDF* r = *wdf;
-    
-    r->incident_wave_up = incident_wave;
-	float gamma_left = r->port_resistance_left * r->gamma_zero;
-	float gamma_right = r->port_resistance_right * r->gamma_zero;
-	float left_wave = tWDF_getReflectedWaveUp(r->child_left, input);
-	float right_wave = tWDF_getReflectedWaveUp(r->child_right, input);
-//    downPorts[0]->b = yl * ( downPorts[0]->a * ((1.0 / yl) - 1) - downPorts[1]->a - descendingWave );
-//    downPorts[1]->b = yr * ( downPorts[1]->a * ((1.0 / yr) - 1) - downPorts[0]->a - descendingWave );
-	tWDF_setIncidentWave(r->child_left, (-1.0f * gamma_left * incident_wave) + (gamma_right * left_wave) - (gamma_left * right_wave), input);
-	tWDF_setIncidentWave(r->child_right, (-1.0f * gamma_right * incident_wave) + (gamma_left * right_wave) - (gamma_right * left_wave), input);
-	// From rt-wdf
-//	tWDF_setIncidentWave(r->child_left, gamma_left * (left_wave * ((1.0f / gamma_left) - 1.0f) - right_wave - incident_wave));
-//	tWDF_setIncidentWave(r->child_right, gamma_right * (right_wave * ((1.0f / gamma_right) - 1.0f) - left_wave - incident_wave));
-
-}
-
-static void set_incident_wave_for_parallel(tWDF* const wdf, float incident_wave, float input)
-{
-    _tWDF* r = *wdf;
-    
-    r->incident_wave_up = incident_wave;
-	float gamma_left = r->port_conductance_left * r->gamma_zero;
-	float gamma_right = r->port_conductance_right * r->gamma_zero;
-	float left_wave = tWDF_getReflectedWaveUp(r->child_left, input);
-	float right_wave = tWDF_getReflectedWaveUp(r->child_right, input);
-//    downPorts[0]->b = ( ( dl - 1 ) * downPorts[0]->a + dr * downPorts[1]->a + du * descendingWave );
-//    downPorts[1]->b = ( dl * downPorts[0]->a + ( dr - 1 ) * downPorts[1]->a + du * descendingWave );
-	tWDF_setIncidentWave(r->child_left, (gamma_left - 1.0f) * left_wave + gamma_right * right_wave + incident_wave, input);
-	tWDF_setIncidentWave(r->child_right, gamma_left * left_wave + (gamma_right - 1.0f) * right_wave + incident_wave, input);
-}
-
-//===================================================================
-//================ Get Reflected Waves ==============================
-
-static float get_reflected_wave_for_resistor(tWDF* const wdf, float input)
-{
-    _tWDF* r = *wdf;
-	r->reflected_wave_up = 0.0f;
-	return r->reflected_wave_up;
-}
-
-static float get_reflected_wave_for_capacitor(tWDF* const wdf, float input)
-{
-    _tWDF* r = *wdf;
-	r->reflected_wave_up = r->incident_wave_up;
-	return r->reflected_wave_up;
-}
-
-static float get_reflected_wave_for_resistive(tWDF* const wdf, float input)
-{
-    _tWDF* r = *wdf;
-    r->reflected_wave_up = input;
-    return r->reflected_wave_up;
-}
-
-static float get_reflected_wave_for_inverter(tWDF* const wdf, float input)
-{
-    _tWDF* r = *wdf;
-    r->reflected_wave_up = -1.0f * tWDF_getReflectedWaveUp(r->child_left, input);
-    return r->reflected_wave_up;
-}
-
-static float get_reflected_wave_for_series(tWDF* const wdf, float input)
-{
-    _tWDF* r = *wdf;
-	//-( downPorts[0]->a + downPorts[1]->a );
-    r->reflected_wave_up = (-1.0f * (tWDF_getReflectedWaveUp(r->child_left, input) + tWDF_getReflectedWaveUp(r->child_right, input)));
-	return r->reflected_wave_up;
-}
-
-static float get_reflected_wave_for_parallel(tWDF* const wdf, float input)
-{
-    _tWDF* r = *wdf;
-    
-	float gamma_left = r->port_conductance_left * r->gamma_zero;
-	float gamma_right = r->port_conductance_right * r->gamma_zero;
-	//return ( dl * downPorts[0]->a + dr * downPorts[1]->a );
-    r->reflected_wave_up = (gamma_left * tWDF_getReflectedWaveUp(r->child_left, input) + gamma_right * tWDF_getReflectedWaveUp(r->child_right, input));
-	return r->reflected_wave_up;
-}
-
-static float get_reflected_wave_for_ideal(tWDF* const wdf, float input, float incident_wave)
-{
-    return (2.0f * input) - incident_wave;
-}
-
-#define l2A 0.1640425613334452f
-#define l2B -1.098865286222744f
-#define l2Y 3.148297929334117f
-#define l2K -2.213475204444817f
-static float log2Approximation(float x)
-{
-    return (l2A * x*x*x) + (l2B * x*x) + (l2Y * x) + l2K;
-}
-
-#define wX1 -3.684303659906469f
-#define wX2 1.972967391708859f
-#define wA  9.451797158780131e-3f
-#define wB  0.1126446405111627f
-#define wY  0.4451353886588814f
-#define wK  0.5836596684310648f
-static float wrightOmega3(float x)
-{
-    if (x <= wX1)
-    {
-        return 0;
-    }
-    else if (x < wX2)
-    {
-        return (wA * x*x*x) + (wB * x*x) + (wY * x) + wK;
-    }
-    else
-    {
-        return x - logf(x);
-    }
-}
-
-static float wrightOmegaApproximation(float x)
-{
-    float w3 = wrightOmega3(x);
-    return w3 - ((w3 - expf(x - w3)) / (w3 + 1.0f));
-}
-
-static float lambertW(float a, float r, float I, float iVT)
-{
-    return wrightOmegaApproximation(((a + r*I) * iVT) + log((r * I) * iVT));
-}
-
-#define Is_DIODE    2.52e-9f
-#define VT_DIODE    0.02585f
-static float get_reflected_wave_for_diode(tWDF* const wdf, float input, float incident_wave)
-{
-    _tWDF* n = *wdf;
-    
-    float a = incident_wave;
-    float r = n->port_resistance_up;
-    return a + 2.0f*r*Is_DIODE - 2.0f*VT_DIODE*lambertW(a, r, Is_DIODE, 1.0f/VT_DIODE);
-}
-
-static float get_reflected_wave_for_diode_pair(tWDF* const wdf, float input, float incident_wave)
-{
-    _tWDF* n = *wdf;
-    
-    float a = incident_wave;
-    float sgn = 0.0f;
-    if (a > 0.0f) sgn = 1.0f;
-    else if (a < 0.0f) sgn = -1.0f;
-    float r = n->port_resistance_up;
-    return a + 2 * sgn * (r*Is_DIODE - VT_DIODE*lambertW(sgn*a, r, Is_DIODE, 1.0f/VT_DIODE));
-}
--- a/LEAF/Src/leaf-envelopes.c
+++ /dev/null
@@ -1,760 +1,0 @@
-/*
-  ==============================================================================
-
-    leaf-envelopes.c
-    Created: 20 Jan 2017 12:02:17pm
-    Author:  Michael R Mulshine
-
-  ==============================================================================
-*/
-
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-envelopes.h"
-#include "..\Inc\leaf-tables.h"
-#include "..\leaf.h"
-
-#else
-
-#include "../Inc/leaf-envelopes.h"
-#include "../Inc/leaf-tables.h"
-#include "../leaf.h"
-
-#endif
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Envelope ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void    tEnvelope_init(tEnvelope* const envlp, float attack, float decay, oBool loop)
-{
-    _tEnvelope* env = *envlp = (_tEnvelope*) leaf_alloc(sizeof(_tEnvelope));
-    
-    env->exp_buff = exp_decay;
-    env->inc_buff = attack_decay_inc;
-    env->buff_size = sizeof(exp_decay);
-    
-    env->loop = loop;
-    
-    if (attack > 8192.0f)
-        attack = 8192.0f;
-    if (attack < 0.0f)
-        attack = 0.0f;
-    
-    if (decay > 8192.0f)
-        decay = 8192.0f;
-    if (decay < 0.0f)
-        decay = 0.0f;
-    
-    int16_t attackIndex = ((int16_t)(attack * 8.0f))-1;
-    int16_t decayIndex = ((int16_t)(decay * 8.0f))-1;
-    int16_t rampIndex = ((int16_t)(2.0f * 8.0f))-1;
-    
-    if (attackIndex < 0)
-        attackIndex = 0;
-    if (decayIndex < 0)
-        decayIndex = 0;
-    if (rampIndex < 0)
-        rampIndex = 0;
-    
-    env->inRamp = OFALSE;
-    env->inAttack = OFALSE;
-    env->inDecay = OFALSE;
-    
-    env->attackInc = env->inc_buff[attackIndex];
-    env->decayInc = env->inc_buff[decayIndex];
-    env->rampInc = env->inc_buff[rampIndex];
-}
-
-void tEnvelope_free(tEnvelope* const envlp)
-{
-    _tEnvelope* env = *envlp;
-    leaf_free(env);
-}
-
-void    tEnvelope_initToPool    (tEnvelope* const envlp, float attack, float decay, oBool loop, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tEnvelope* env = *envlp = (_tEnvelope*) mpool_alloc(sizeof(_tEnvelope), &m->pool);
-    
-    env->exp_buff = exp_decay;
-    env->inc_buff = attack_decay_inc;
-    env->buff_size = sizeof(exp_decay);
-    
-    env->loop = loop;
-    
-    if (attack > 8192.0f)
-        attack = 8192.0f;
-    if (attack < 0.0f)
-        attack = 0.0f;
-    
-    if (decay > 8192.0f)
-        decay = 8192.0f;
-    if (decay < 0.0f)
-        decay = 0.0f;
-    
-    int16_t attackIndex = ((int16_t)(attack * 8.0f))-1;
-    int16_t decayIndex = ((int16_t)(decay * 8.0f))-1;
-    int16_t rampIndex = ((int16_t)(2.0f * 8.0f))-1;
-    
-    if (attackIndex < 0)
-        attackIndex = 0;
-    if (decayIndex < 0)
-        decayIndex = 0;
-    if (rampIndex < 0)
-        rampIndex = 0;
-    
-    env->inRamp = OFALSE;
-    env->inAttack = OFALSE;
-    env->inDecay = OFALSE;
-    
-    env->attackInc = env->inc_buff[attackIndex];
-    env->decayInc = env->inc_buff[decayIndex];
-    env->rampInc = env->inc_buff[rampIndex];
-}
-
-void    tEnvelope_freeFromPool  (tEnvelope* const envlp, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tEnvelope* env = *envlp;
-    mpool_free(env, &m->pool);
-}
-
-void     tEnvelope_setAttack(tEnvelope* const envlp, float attack)
-{
-    _tEnvelope* env = *envlp;
-    
-    int32_t attackIndex;
-    
-    if (attack < 0.0f) {
-        attackIndex = 0.0f;
-    } else if (attack < 8192.0f) {
-        attackIndex = ((int32_t)(attack * 8.0f))-1;
-    } else {
-        attackIndex = ((int32_t)(8192.0f * 8.0f))-1;
-    }
-    
-    env->attackInc = env->inc_buff[attackIndex];
-}
-
-void     tEnvelope_setDecay(tEnvelope* const envlp, float decay)
-{
-    _tEnvelope* env = *envlp;
-    
-    int32_t decayIndex;
-    
-    if (decay < 0.0f) {
-        decayIndex = 0.0f;
-    } else if (decay < 8192.0f) {
-        decayIndex = ((int32_t)(decay * 8.0f)) - 1;
-    } else {
-        decayIndex = ((int32_t)(8192.0f * 8.0f)) - 1; 
-    }
-    
-    env->decayInc = env->inc_buff[decayIndex];
-}
-
-void     tEnvelope_loop(tEnvelope* const envlp, oBool loop)
-{
-    _tEnvelope* env = *envlp;
-    env->loop = loop;
-}
-
-
-void     tEnvelope_on(tEnvelope* const envlp, float velocity)
-{
-    _tEnvelope* env = *envlp;
-    
-    if (env->inAttack || env->inDecay) // In case envelope retriggered while it is still happening.
-    {
-        env->rampPhase = 0;
-        env->inRamp = OTRUE;
-        env->rampPeak = env->next;
-    }
-    else // Normal start.
-    {
-        env->inAttack = OTRUE;
-    }
-    
-    
-    env->attackPhase = 0;
-    env->decayPhase = 0;
-    env->inDecay = OFALSE;
-    env->gain = velocity;
-}
-
-float   tEnvelope_tick(tEnvelope* const envlp)
-{
-    _tEnvelope* env = *envlp;
-    
-    if (env->inRamp)
-    {
-        if (env->rampPhase > UINT16_MAX)
-        {
-            env->inRamp = OFALSE;
-            env->inAttack = OTRUE;
-            env->next = 0.0f;
-        }
-        else
-        {
-            env->next = env->rampPeak * env->exp_buff[(uint32_t)env->rampPhase];
-        }
-        
-        env->rampPhase += env->rampInc;
-    }
-    
-    if (env->inAttack)
-    {
-        
-        // If attack done, time to turn around.
-        if (env->attackPhase > UINT16_MAX)
-        {
-            env->inDecay = OTRUE;
-            env->inAttack = OFALSE;
-            env->next = env->gain * 1.0f;
-        }
-        else
-        {
-            // do interpolation !
-            env->next = env->gain * env->exp_buff[UINT16_MAX - (uint32_t)env->attackPhase]; // inverted and backwards to get proper rising exponential shape/perception
-        }
-        
-        // Increment envelope attack.
-        env->attackPhase += env->attackInc;
-        
-    }
-    
-    if (env->inDecay)
-    {
-        
-        // If decay done, finish.
-        if (env->decayPhase >= UINT16_MAX)
-        {
-            env->inDecay = OFALSE;
-            
-            if (env->loop)
-            {
-                env->attackPhase = 0;
-                env->decayPhase = 0;
-                env->inAttack = OTRUE;
-            }
-            else
-            {
-                env->next = 0.0f;
-            }
-            
-        } else {
-            
-            env->next = env->gain * (env->exp_buff[(uint32_t)env->decayPhase]); // do interpolation !
-        }
-        
-        // Increment envelope decay;
-        env->decayPhase += env->decayInc;
-    }
-    
-    return env->next;
-}
-
-/* ADSR */
-void    tADSR_init(tADSR* const adsrenv, float attack, float decay, float sustain, float release)
-{
-    _tADSR* adsr = *adsrenv = (_tADSR*) leaf_alloc(sizeof(_tADSR));
-    
-    adsr->exp_buff = exp_decay;
-    adsr->inc_buff = attack_decay_inc;
-    adsr->buff_size = sizeof(exp_decay);
-    
-    if (attack > 8192.0f)
-        attack = 8192.0f;
-    if (attack < 0.0f)
-        attack = 0.0f;
-    
-    if (decay > 8192.0f)
-        decay = 8192.0f;
-    if (decay < 0.0f)
-        decay = 0.0f;
-    
-    if (sustain > 1.0f)
-        sustain = 1.0f;
-    if (sustain < 0.0f)
-        sustain = 0.0f;
-    
-    if (release > 8192.0f)
-        release = 8192.0f;
-    if (release < 0.0f)
-        release = 0.0f;
-    
-    int16_t attackIndex = ((int16_t)(attack * 8.0f))-1;
-    int16_t decayIndex = ((int16_t)(decay * 8.0f))-1;
-    int16_t releaseIndex = ((int16_t)(release * 8.0f))-1;
-    int16_t rampIndex = ((int16_t)(2.0f * 8.0f))-1;
-    
-    if (attackIndex < 0)
-        attackIndex = 0;
-    if (decayIndex < 0)
-        decayIndex = 0;
-    if (releaseIndex < 0)
-        releaseIndex = 0;
-    if (rampIndex < 0)
-        rampIndex = 0;
-    
-    adsr->inRamp = OFALSE;
-    adsr->inAttack = OFALSE;
-    adsr->inDecay = OFALSE;
-    adsr->inSustain = OFALSE;
-    adsr->inRelease = OFALSE;
-    
-    adsr->sustain = sustain;
-    
-    adsr->attackInc = adsr->inc_buff[attackIndex];
-    adsr->decayInc = adsr->inc_buff[decayIndex];
-    adsr->releaseInc = adsr->inc_buff[releaseIndex];
-    adsr->rampInc = adsr->inc_buff[rampIndex];
-}
-
-void tADSR_free(tADSR* const adsrenv)
-{
-    _tADSR* adsr = *adsrenv;
-    
-    leaf_free(adsr);
-}
-
-void    tADSR_initToPool    (tADSR* const adsrenv, float attack, float decay, float sustain, float release, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tADSR* adsr = *adsrenv = (_tADSR*) mpool_alloc(sizeof(_tADSR), &m->pool);
-    
-    adsr->exp_buff = exp_decay;
-    adsr->inc_buff = attack_decay_inc;
-    adsr->buff_size = sizeof(exp_decay);
-    
-    if (attack > 8192.0f)
-        attack = 8192.0f;
-    if (attack < 0.0f)
-        attack = 0.0f;
-    
-    if (decay > 8192.0f)
-        decay = 8192.0f;
-    if (decay < 0.0f)
-        decay = 0.0f;
-    
-    if (sustain > 1.0f)
-        sustain = 1.0f;
-    if (sustain < 0.0f)
-        sustain = 0.0f;
-    
-    if (release > 8192.0f)
-        release = 8192.0f;
-    if (release < 0.0f)
-        release = 0.0f;
-    
-    int16_t attackIndex = ((int16_t)(attack * 8.0f))-1;
-    int16_t decayIndex = ((int16_t)(decay * 8.0f))-1;
-    int16_t releaseIndex = ((int16_t)(release * 8.0f))-1;
-    int16_t rampIndex = ((int16_t)(2.0f * 8.0f))-1;
-    
-    if (attackIndex < 0)
-        attackIndex = 0;
-    if (decayIndex < 0)
-        decayIndex = 0;
-    if (releaseIndex < 0)
-        releaseIndex = 0;
-    if (rampIndex < 0)
-        rampIndex = 0;
-    
-    adsr->inRamp = OFALSE;
-    adsr->inAttack = OFALSE;
-    adsr->inDecay = OFALSE;
-    adsr->inSustain = OFALSE;
-    adsr->inRelease = OFALSE;
-    
-    adsr->sustain = sustain;
-    
-    adsr->attackInc = adsr->inc_buff[attackIndex];
-    adsr->decayInc = adsr->inc_buff[decayIndex];
-    adsr->releaseInc = adsr->inc_buff[releaseIndex];
-    adsr->rampInc = adsr->inc_buff[rampIndex];
-}
-
-void    tADSR_freeFromPool  (tADSR* const adsrenv, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tADSR* adsr = *adsrenv;
-    
-    mpool_free(adsr, &m->pool);
-}
-
-void     tADSR_setAttack(tADSR* const adsrenv, float attack)
-{
-    _tADSR* adsr = *adsrenv;
-    
-    int32_t attackIndex;
-    
-    if (attack < 0.0f) {
-        attackIndex = 0.0f;
-    } else if (attack < 8192.0f) {
-        attackIndex = ((int32_t)(attack * 8.0f))-1;
-    } else {
-        attackIndex = ((int32_t)(8192.0f * 8.0f))-1;
-    }
-    
-    adsr->attackInc = adsr->inc_buff[attackIndex];
-}
-
-void     tADSR_setDecay(tADSR* const adsrenv, float decay)
-{
-    _tADSR* adsr = *adsrenv;
-    
-    int32_t decayIndex;
-    
-    if (decay < 0.0f) {
-        decayIndex = 0.0f;
-    } else if (decay < 8192.0f) {
-        decayIndex = ((int32_t)(decay * 8.0f)) - 1;
-    } else {
-        decayIndex = ((int32_t)(8192.0f * 8.0f)) - 1;
-    }
-    
-    adsr->decayInc = adsr->inc_buff[decayIndex];
-}
-
-void     tADSR_setSustain(tADSR* const adsrenv, float sustain)
-{
-    _tADSR* adsr = *adsrenv;
-    
-    if (sustain > 1.0f)      adsr->sustain = 1.0f;
-    else if (sustain < 0.0f) adsr->sustain = 0.0f;
-    else                     adsr->sustain = sustain;
-}
-
-void     tADSR_setRelease(tADSR* const adsrenv, float release)
-{
-    _tADSR* adsr = *adsrenv;
-    
-    int32_t releaseIndex;
-    
-    if (release < 0.0f) {
-        releaseIndex = 0.0f;
-    } else if (release < 8192.0f) {
-        releaseIndex = ((int32_t)(release * 8.0f)) - 1;
-    } else {
-        releaseIndex = ((int32_t)(8192.0f * 8.0f)) - 1;
-    }
-    
-    adsr->releaseInc = adsr->inc_buff[releaseIndex];
-}
-
-void tADSR_on(tADSR* const adsrenv, float velocity)
-{
-    _tADSR* adsr = *adsrenv;
-    
-    if ((adsr->inAttack || adsr->inDecay) || (adsr->inSustain || adsr->inRelease)) // In case ADSR retriggered while it is still happening.
-    {
-        adsr->rampPhase = 0;
-        adsr->inRamp = OTRUE;
-        adsr->rampPeak = adsr->next;
-    }
-    else // Normal start.
-    {
-        adsr->inAttack = OTRUE;
-    }
-    
-    adsr->attackPhase = 0;
-    adsr->decayPhase = 0;
-    adsr->releasePhase = 0;
-    adsr->inDecay = OFALSE;
-    adsr->inSustain = OFALSE;
-    adsr->inRelease = OFALSE;
-    adsr->gain = velocity;
-}
-
-void tADSR_off(tADSR* const adsrenv)
-{
-    _tADSR* adsr = *adsrenv;
-    
-    if (adsr->inRelease) return;
-    
-    adsr->inAttack = OFALSE;
-    adsr->inDecay = OFALSE;
-    adsr->inSustain = OFALSE;
-    adsr->inRelease = OTRUE;
-    
-    adsr->releasePeak = adsr->next;
-}
-
-float   tADSR_tick(tADSR* const adsrenv)
-{
-    _tADSR* adsr = *adsrenv;
-    
-    if (adsr->inRamp)
-    {
-        if (adsr->rampPhase > UINT16_MAX)
-        {
-            adsr->inRamp = OFALSE;
-            adsr->inAttack = OTRUE;
-            adsr->next = 0.0f;
-        }
-        else
-        {
-            adsr->next = adsr->rampPeak * adsr->exp_buff[(uint32_t)adsr->rampPhase];
-        }
-        
-        adsr->rampPhase += adsr->rampInc;
-    }
-    
-    if (adsr->inAttack)
-    {
-        
-        // If attack done, time to turn around.
-        if (adsr->attackPhase > UINT16_MAX)
-        {
-            adsr->inDecay = OTRUE;
-            adsr->inAttack = OFALSE;
-            adsr->next = adsr->gain * 1.0f;
-        }
-        else
-        {
-            // do interpolation !
-            adsr->next = adsr->gain * adsr->exp_buff[UINT16_MAX - (uint32_t)adsr->attackPhase]; // inverted and backwards to get proper rising exponential shape/perception
-        }
-        
-        // Increment ADSR attack.
-        adsr->attackPhase += adsr->attackInc;
-        
-    }
-    
-    if (adsr->inDecay)
-    {
-        
-        // If decay done, sustain.
-        if (adsr->decayPhase >= UINT16_MAX)
-        {
-            adsr->inDecay = OFALSE;
-            adsr->inSustain = OTRUE;
-            adsr->next = adsr->gain * adsr->sustain;
-        }
-        
-        else
-        {
-            adsr->next = adsr->gain * (adsr->sustain + ((adsr->exp_buff[(uint32_t)adsr->decayPhase]) * (1 - adsr->sustain))); // do interpolation !
-        }
-        
-        // Increment ADSR decay.
-        adsr->decayPhase += adsr->decayInc;
-    }
-
-    if (adsr->inRelease)
-    {
-        // If release done, finish.
-        if (adsr->releasePhase >= UINT16_MAX)
-        {
-            adsr->inRelease = OFALSE;
-            adsr->next = 0.0f;
-        }
-        else {
-            
-            adsr->next = adsr->releasePeak * (adsr->exp_buff[(uint32_t)adsr->releasePhase]); // do interpolation !
-        }
-        
-        // Increment envelope release;
-        adsr->releasePhase += adsr->releaseInc;
-    }
-
-    return adsr->next;
-}
-
-/* Ramp */
-void    tRamp_init(tRamp* const r, float time, int samples_per_tick)
-{
-    _tRamp* ramp = *r = (_tRamp*) leaf_alloc(sizeof(_tRamp));
-    
-    ramp->inv_sr_ms = 1.0f/(leaf.sampleRate*0.001f);
-	ramp->minimum_time = ramp->inv_sr_ms * samples_per_tick;
-    ramp->curr = 0.0f;
-    ramp->dest = 0.0f;
-    
-    if (time < ramp->minimum_time)
-    {
-        ramp->time = ramp->minimum_time;
-    }
-    else
-    {
-        ramp->time = time;
-    }
-    
-    ramp->samples_per_tick = samples_per_tick;
-    ramp->inc = ((ramp->dest - ramp->curr) / ramp->time * ramp->inv_sr_ms) * (float)ramp->samples_per_tick;
-}
-
-void tRamp_free(tRamp* const r)
-{
-    _tRamp* ramp = *r;
-    
-    leaf_free(ramp);
-}
-
-void    tRamp_initToPool    (tRamp* const r, float time, int samples_per_tick, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tRamp* ramp = *r = (_tRamp*) mpool_alloc(sizeof(_tRamp), &m->pool);
-    
-    ramp->inv_sr_ms = 1.0f/(leaf.sampleRate*0.001f);
-    ramp->minimum_time = ramp->inv_sr_ms * samples_per_tick;
-    ramp->curr = 0.0f;
-    ramp->dest = 0.0f;
-    
-    if (time < ramp->minimum_time)
-    {
-        ramp->time = ramp->minimum_time;
-    }
-    else
-    {
-        ramp->time = time;
-    }
-    
-    ramp->samples_per_tick = samples_per_tick;
-    ramp->inc = ((ramp->dest - ramp->curr) / ramp->time * ramp->inv_sr_ms) * (float)ramp->samples_per_tick;
-}
-
-void    tRamp_freeFromPool  (tRamp* const r, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tRamp* ramp = *r;
-    
-    mpool_free(ramp, &m->pool);
-}
-
-void     tRamp_setTime(tRamp* const ramp, float time)
-{
-    _tRamp* r = *ramp;
-    
-	if (time < r->minimum_time)
-	{
-		r->time = r->minimum_time;
-	}
-	else
-	{
-		r->time = time;
-	}
-    r->inc = ((r->dest-r->curr)/r->time * r->inv_sr_ms) * ((float)r->samples_per_tick);
-}
-
-void     tRamp_setDest(tRamp* const ramp, float dest)
-{
-    _tRamp* r = *ramp;
-    r->dest = dest;
-    r->inc = ((r->dest-r->curr)/r->time * r->inv_sr_ms) * ((float)r->samples_per_tick);
-}
-
-void     tRamp_setVal(tRamp* const ramp, float val)
-{
-    _tRamp* r = *ramp;
-    r->curr = val;
-    r->inc = ((r->dest-r->curr)/r->time * r->inv_sr_ms) * ((float)r->samples_per_tick);
-}
-
-float   tRamp_tick(tRamp* const ramp)
-{
-    _tRamp* r = *ramp;
-    
-    r->curr += r->inc;
-    
-    if (((r->curr >= r->dest) && (r->inc >= 0.0f)) || ((r->curr <= r->dest) && (r->inc < 0.0f)))
-	{
-		r->inc = 0.0f;
-		r->curr=r->dest;
-	}
-    
-    return r->curr;
-}
-
-float   tRamp_sample(tRamp* const ramp)
-{
-    _tRamp* r = *ramp;
-    return r->curr;
-}
-
-void    tRampSampleRateChanged(tRamp* const ramp)
-{
-    _tRamp* r = *ramp;
-    r->inv_sr_ms = 1.0f / (leaf.sampleRate * 0.001f);
-    r->inc = ((r->dest-r->curr)/r->time * r->inv_sr_ms)*((float)r->samples_per_tick);
-}
-
-
-/* Exponential Smoother */
-void    tExpSmooth_init(tExpSmooth* const expsmooth, float val, float factor)
-{	// factor is usually a value between 0 and 0.1. Lower value is slower. 0.01 for example gives you a smoothing time of about 10ms
-    _tExpSmooth* smooth = *expsmooth = (_tExpSmooth*) leaf_alloc(sizeof(_tExpSmooth));
-    
-	smooth->curr=val;
-	smooth->dest=val;
-	if (factor<0) factor=0;
-	if (factor>1) factor=1;
-	smooth->factor=factor;
-	smooth->oneminusfactor=1.0f-factor;
-}
-
-void tExpSmooth_free(tExpSmooth* const expsmooth)
-{
-    _tExpSmooth* smooth = *expsmooth;
-    
-    leaf_free(smooth);
-}
-
-void    tExpSmooth_initToPool   (tExpSmooth* const expsmooth, float val, float factor, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tExpSmooth* smooth = *expsmooth = (_tExpSmooth*) mpool_alloc(sizeof(_tExpSmooth), &m->pool);
-    
-    smooth->curr=val;
-    smooth->dest=val;
-    if (factor<0) factor=0;
-    if (factor>1) factor=1;
-    smooth->factor=factor;
-    smooth->oneminusfactor=1.0f-factor;
-}
-
-void    tExpSmooth_freeFromPool (tExpSmooth* const expsmooth, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tExpSmooth* smooth = *expsmooth;
-    
-    mpool_free(smooth, &m->pool);
-}
-
-void     tExpSmooth_setFactor(tExpSmooth* const expsmooth, float factor)
-{	// factor is usually a value between 0 and 0.1. Lower value is slower. 0.01 for example gives you a smoothing time of about 10ms
-    _tExpSmooth* smooth = *expsmooth;
-    
-	if (factor<0)
-		factor=0;
-	else
-		if (factor>1) factor=1;
-	smooth->factor=factor;
-	smooth->oneminusfactor=1.0f-factor;
-}
-
-void     tExpSmooth_setDest(tExpSmooth* const expsmooth, float dest)
-{
-    _tExpSmooth* smooth = *expsmooth;
-	smooth->dest=dest;
-}
-
-void     tExpSmooth_setVal(tExpSmooth* const expsmooth, float val)
-{
-    _tExpSmooth* smooth = *expsmooth;
-	smooth->curr=val;
-}
-
-float   tExpSmooth_tick(tExpSmooth* const expsmooth)
-{
-    _tExpSmooth* smooth = *expsmooth;
-    smooth->curr = smooth->factor*smooth->dest+smooth->oneminusfactor*smooth->curr;
-    return smooth->curr;
-}
-
-float   tExpSmooth_sample(tExpSmooth* const expsmooth)
-{
-    _tExpSmooth* smooth = *expsmooth;
-    return smooth->curr;
-}
-
--- a/LEAF/Src/leaf-filters.c
+++ /dev/null
@@ -1,1243 +1,0 @@
-/*==============================================================================
-
-    leaf-filter.c
-    Created: 20 Jan 2017 12:01:10pm
-    Author:  Michael R Mulshine
-
-==============================================================================*/
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-filters.h"
-#include "..\Inc\leaf-tables.h"
-#include "..\leaf.h"
-
-#else
-
-#include "../Inc/leaf-filters.h"
-#include "../Inc/leaf-tables.h"
-#include "../leaf.h"
-
-#endif
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ OnePole Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void    tAllpass_init(tAllpass* const ft, float initDelay, uint32_t maxDelay)
-{
-    _tAllpass* f = *ft = (_tAllpass*) leaf_alloc(sizeof(_tAllpass));
-    
-    f->gain = 0.7f;
-    
-    f->lastOut = 0.0f;
-    
-    tLinearDelay_init(&f->delay, initDelay, maxDelay);
-}
-
-void tAllpass_free(tAllpass* const ft)
-{
-    _tAllpass* f = *ft;
-    
-    tLinearDelay_free(&f->delay);
-    leaf_free(f);
-}
-
-void    tAllpass_initToPool     (tAllpass* const ft, float initDelay, uint32_t maxDelay, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tAllpass* f = *ft = (_tAllpass*) mpool_alloc(sizeof(_tAllpass), &m->pool);
-    
-    f->gain = 0.7f;
-    
-    f->lastOut = 0.0f;
-    
-    tLinearDelay_initToPool(&f->delay, initDelay, maxDelay, mp);
-}
-
-void    tAllpass_freeFromPool   (tAllpass* const ft, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tAllpass* f = *ft;
-    
-    tLinearDelay_freeFromPool(&f->delay, mp);
-    mpool_free(f, &m->pool);
-}
-
-void    tAllpass_setDelay(tAllpass* const ft, float delay)
-{
-    _tAllpass* f = *ft;
-    
-    tLinearDelay_setDelay(&f->delay, delay);
-}
-
-void    tAllpass_setGain(tAllpass* const ft, float gain)
-{
-    _tAllpass* f = *ft;
-    
-    f->gain = gain;
-}
-
-float   tAllpass_tick(tAllpass* const ft, float input)
-{
-    _tAllpass* f = *ft;
-    
-    float s1 = (-f->gain) * f->lastOut + input;
-    
-    float s2 = tLinearDelay_tick(&f->delay, s1) + (f->gain) * input;
-    
-    f->lastOut = s2;
-    
-    return f->lastOut;
-}
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ OnePole Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void    tOnePole_init(tOnePole* const ft, float freq)
-{
-    _tOnePole* f = *ft = (_tOnePole*) leaf_alloc(sizeof(_tOnePole));
-    
-    f->gain = 1.0f;
-    f->a0 = 1.0;
-    
-    tOnePole_setFreq(ft, freq);
-    
-    f->lastIn = 0.0f;
-    f->lastOut = 0.0f;
-}
-
-void    tOnePole_free(tOnePole* const ft)
-{
-    _tOnePole* f = *ft;
-    
-    leaf_free(f);
-}
-
-void    tOnePole_initToPool     (tOnePole* const ft, float freq, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tOnePole* f = *ft = (_tOnePole*) mpool_alloc(sizeof(_tOnePole), &m->pool);
-    
-    f->gain = 1.0f;
-    f->a0 = 1.0;
-    
-    tOnePole_setFreq(ft, freq);
-    
-    f->lastIn = 0.0f;
-    f->lastOut = 0.0f;
-}
-
-void    tOnePole_freeFromPool   (tOnePole* const ft, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tOnePole* f = *ft;
-    
-    mpool_free(f, &m->pool);
-}
-
-void    tOnePole_setB0(tOnePole* const ft, float b0)
-{
-    _tOnePole* f = *ft;
-    f->b0 = b0;
-}
-
-void    tOnePole_setA1(tOnePole* const ft, float a1)
-{
-    _tOnePole* f = *ft;
-    if (a1 >= 1.0f)     a1 = 0.999999f;
-    f->a1 = a1;
-}
-
-void    tOnePole_setPole(tOnePole* const ft, float thePole)
-{
-    _tOnePole* f = *ft;
-    
-    if (thePole >= 1.0f)    thePole = 0.999999f;
-    
-    // Normalize coefficients for peak unity gain.
-    if (thePole > 0.0f)     f->b0 = (1.0f - thePole);
-    else                    f->b0 = (1.0f + thePole);
-    
-    f->a1 = -thePole;
-}
-
-void        tOnePole_setFreq        (tOnePole* const ft, float freq)
-{
-    _tOnePole* f = *ft;
-    f->b0 = freq * leaf.twoPiTimesInvSampleRate;
-    f->b0 = LEAF_clip(0.0f, f->b0, 1.0f);
-    f->a1 = 1.0f - f->b0;
-}
-
-void    tOnePole_setCoefficients(tOnePole* const ft, float b0, float a1)
-{
-    _tOnePole* f = *ft;
-    if (a1 >= 1.0f)     a1 = 0.999999f;
-    f->b0 = b0;
-    f->a1 = a1;
-}
-
-void    tOnePole_setGain(tOnePole* const ft, float gain)
-{
-    _tOnePole* f = *ft;
-    f->gain = gain;
-}
-
-float   tOnePole_tick(tOnePole* const ft, float input)
-{
-    _tOnePole* f = *ft;
-    
-    float in = input * f->gain;
-    float out = (f->b0 * in) + (f->a1 * f->lastOut);
-    
-    f->lastIn = in;
-    f->lastOut = out;
-    
-    return out;
-}
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ TwoPole Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void    tTwoPole_init(tTwoPole* const ft)
-{
-    _tTwoPole* f = *ft = (_tTwoPole*) leaf_alloc(sizeof(_tTwoPole));
-    
-    f->gain = 1.0f;
-    f->a0 = 1.0;
-    f->b0 = 1.0;
-    
-    f->lastOut[0] = 0.0f;
-    f->lastOut[1] = 0.0f;
-}
-
-void    tTwoPole_free(tTwoPole* const ft)
-{
-    _tTwoPole* f = *ft;
-    
-    leaf_free(f);
-}
-
-void    tTwoPole_initToPool     (tTwoPole* const ft, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tTwoPole* f = *ft = (_tTwoPole*) mpool_alloc(sizeof(_tTwoPole), &m->pool);
-    
-    f->gain = 1.0f;
-    f->a0 = 1.0;
-    f->b0 = 1.0;
-    
-    f->lastOut[0] = 0.0f;
-    f->lastOut[1] = 0.0f;
-}
-
-void    tTwoPole_freeFromPool   (tTwoPole* const ft, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tTwoPole* f = *ft;
-    
-    mpool_free(f, &m->pool);
-}
-
-float   tTwoPole_tick(tTwoPole* const ft, float input)
-{
-    _tTwoPole* f = *ft;
-    
-    float in = input * f->gain;
-    float out = (f->b0 * in) - (f->a1 * f->lastOut[0]) - (f->a2 * f->lastOut[1]);
-    
-    f->lastOut[1] = f->lastOut[0];
-    f->lastOut[0] = out;
-    
-    return out;
-}
-
-void    tTwoPole_setB0(tTwoPole* const ft, float b0)
-{
-    _tTwoPole* f = *ft;
-    f->b0 = b0;
-}
-
-void    tTwoPole_setA1(tTwoPole* const ft, float a1)
-{
-    _tTwoPole* f = *ft;
-    f->a1 = a1;
-}
-
-void    tTwoPole_setA2(tTwoPole* const ft, float a2)
-{
-    _tTwoPole* f = *ft;
-    f->a2 = a2;
-}
-
-
-void    tTwoPole_setResonance(tTwoPole* const ft, float frequency, float radius, oBool normalize)
-{
-    _tTwoPole* f = *ft;
-    
-    if (frequency < 0.0f)   frequency = 0.0f;
-    if (frequency > (leaf.sampleRate * 0.49f))   frequency = leaf.sampleRate * 0.49f;
-    if (radius < 0.0f)      radius = 0.0f;
-    if (radius >= 1.0f)     radius = 0.999999f;
-    
-    f->radius = radius;
-    f->frequency = frequency;
-    f->normalize = normalize;
-    
-    f->a2 = radius * radius;
-    f->a1 =  -2.0f * radius * cosf(frequency * leaf.twoPiTimesInvSampleRate);
-    
-    if ( normalize )
-    {
-        // Normalize the filter gain ... not terribly efficient.
-        float real = 1 - radius + (f->a2 - radius) * cosf(2 * frequency * leaf.twoPiTimesInvSampleRate);
-        float imag = (f->a2 - radius) * sinf(2 * frequency * leaf.twoPiTimesInvSampleRate);
-        f->b0 = sqrtf( powf(real, 2) + powf(imag, 2) );
-    }
-}
-
-void    tTwoPole_setCoefficients(tTwoPole* const ft, float b0, float a1, float a2)
-{
-    _tTwoPole* f = *ft;
-    f->b0 = b0;
-    f->a1 = a1;
-    f->a2 = a2;
-}
-
-void    tTwoPole_setGain(tTwoPole* const ft, float gain)
-{
-    _tTwoPole* f = *ft;
-    f->gain = gain;
-}
-
-void     tTwoPoleSampleRateChanged (tTwoPole* const ft)
-{
-    _tTwoPole* f = *ft;
-    
-    f->a2 = f->radius * f->radius;
-    f->a1 =  -2.0f * f->radius * cosf(f->frequency * leaf.twoPiTimesInvSampleRate);
-    
-    if ( f->normalize )
-    {
-        // Normalize the filter gain ... not terribly efficient.
-        float real = 1 - f->radius + (f->a2 - f->radius) * cosf(2 * f->frequency * leaf.twoPiTimesInvSampleRate);
-        float imag = (f->a2 - f->radius) * sinf(2 * f->frequency * leaf.twoPiTimesInvSampleRate);
-        f->b0 = sqrtf( powf(real, 2) + powf(imag, 2) );
-    }
-}
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ OneZero Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void    tOneZero_init(tOneZero* const ft, float theZero)
-{
-    _tOneZero* f = *ft = (_tOneZero*) leaf_alloc(sizeof(_tOneZero));
-    
-    f->gain = 1.0f;
-    f->lastIn = 0.0f;
-    f->lastOut = 0.0f;
-    tOneZero_setZero(ft, theZero);
-}
-
-void    tOneZero_free(tOneZero* const ft)
-{
-    _tOneZero* f = *ft;
-    
-    leaf_free(f);
-}
-
-void    tOneZero_initToPool     (tOneZero* const ft, float theZero, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tOneZero* f = *ft = (_tOneZero*) mpool_alloc(sizeof(_tOneZero), &m->pool);
-    
-    f->gain = 1.0f;
-    f->lastIn = 0.0f;
-    f->lastOut = 0.0f;
-    tOneZero_setZero(ft, theZero);
-}
-
-void    tOneZero_freeFromPool   (tOneZero* const ft, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tOneZero* f = *ft;
-    
-    mpool_free(f, &m->pool);
-}
-
-float   tOneZero_tick(tOneZero* const ft, float input)
-{
-    _tOneZero* f = *ft;
-    
-    float in = input * f->gain;
-    float out = f->b1 * f->lastIn + f->b0 * in;
-    
-    f->lastIn = in;
-    
-    return out;
-}
-
-void    tOneZero_setZero(tOneZero* const ft, float theZero)
-{
-    _tOneZero* f = *ft;
-    
-    if (theZero > 0.0f) f->b0 = 1.0f / (1.0f + theZero);
-    else                f->b0 = 1.0f / (1.0f - theZero);
-    
-    f->b1 = -theZero * f->b0;
-    
-}
-
-void    tOneZero_setB0(tOneZero* const ft, float b0)
-{
-    _tOneZero* f = *ft;
-    
-    f->b0 = b0;
-}
-
-void    tOneZero_setB1(tOneZero* const ft, float b1)
-{
-    _tOneZero* f = *ft;
-    f->b1 = b1;
-}
-
-void    tOneZero_setCoefficients(tOneZero* const ft, float b0, float b1)
-{
-    _tOneZero* f = *ft;
-    f->b0 = b0;
-    f->b1 = b1;
-}
-
-void    tOneZero_setGain(tOneZero *ft, float gain)
-{
-    _tOneZero* f = *ft;
-    f->gain = gain;
-}
-
-float   tOneZero_getPhaseDelay(tOneZero* const ft, float frequency )
-{
-    _tOneZero* f = *ft;
-    
-    if ( frequency <= 0.0f) frequency = 0.05f;
-    
-    f->frequency = frequency;
-    
-    float omegaT = 2 * PI * frequency * leaf.invSampleRate;
-    float real = 0.0, imag = 0.0;
-    
-    real += f->b0;
-    
-    real += f->b1 * cosf(omegaT);
-    imag -= f->b1 * sinf(omegaT);
-    
-    real *= f->gain;
-    imag *= f->gain;
-    
-    float phase = atan2f( imag, real );
-    
-    real = 0.0; imag = 0.0;
-    
-    phase -= atan2f( imag, real );
-    
-    phase = fmodf( -phase, 2 * PI );
-    
-    return phase / omegaT;
-}
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ TwoZero Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void    tTwoZero_init(tTwoZero* const ft)
-{
-    _tTwoZero* f = *ft = (_tTwoZero*) leaf_alloc(sizeof(_tTwoZero));
-    
-    f->gain = 1.0f;
-    f->lastIn[0] = 0.0f;
-    f->lastIn[1] = 0.0f;
-}
-
-void    tTwoZero_free(tTwoZero* const ft)
-{
-    _tTwoZero* f = *ft;
-    
-    leaf_free(f);
-}
-
-void    tTwoZero_initToPool     (tTwoZero* const ft, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tTwoZero* f = *ft = (_tTwoZero*) mpool_alloc(sizeof(_tTwoZero), &m->pool);
-    
-    f->gain = 1.0f;
-    f->lastIn[0] = 0.0f;
-    f->lastIn[1] = 0.0f;
-}
-
-void    tTwoZero_freeFromPool   (tTwoZero* const ft, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tTwoZero* f = *ft;
-    
-    mpool_free(f, &m->pool);
-}
-
-float   tTwoZero_tick(tTwoZero* const ft, float input)
-{
-    _tTwoZero* f = *ft;
-    
-    float in = input * f->gain;
-    float out = f->b2 * f->lastIn[1] + f->b1 * f->lastIn[0] + f->b0 * in;
-    
-    f->lastIn[1] = f->lastIn[0];
-    f->lastIn[0] = in;
-    
-    return out;
-}
-
-void    tTwoZero_setNotch(tTwoZero* const ft, float freq, float radius)
-{
-    _tTwoZero* f = *ft;
-    
-    // Should also deal with frequency being > half sample rate / nyquist. See STK
-    if (freq < 0.0f)    freq = 0.0f;
-    if (radius < 0.0f)  radius = 0.0f;
-    
-    f->frequency = freq;
-    f->radius = radius;
-    
-    f->b2 = radius * radius;
-    f->b1 = -2.0f * radius * cosf(freq * leaf.twoPiTimesInvSampleRate); // OPTIMIZE with LOOKUP or APPROXIMATION
-    
-    // Normalize the filter gain. From STK.
-    if ( f->b1 > 0.0f ) // Maximum at z = 0.
-        f->b0 = 1.0f / ( 1.0f + f->b1 + f->b2 );
-    else            // Maximum at z = -1.
-        f->b0 = 1.0f / ( 1.0f - f->b1 + f->b2 );
-    f->b1 *= f->b0;
-    f->b2 *= f->b0;
-    
-}
-
-void    tTwoZero_setB0(tTwoZero* const ft, float b0)
-{
-    _tTwoZero* f = *ft;
-    f->b0 = b0;
-}
-
-void    tTwoZero_setB1(tTwoZero* const ft, float b1)
-{
-    _tTwoZero* f = *ft;
-    f->b1 = b1;
-}
-
-void    tTwoZero_setCoefficients(tTwoZero* const ft, float b0, float b1, float b2)
-{
-    _tTwoZero* f = *ft;
-    f->b0 = b0;
-    f->b1 = b1;
-    f->b2 = b2;
-}
-
-void    tTwoZero_setGain(tTwoZero* const ft, float gain)
-{
-    _tTwoZero* f = *ft;
-    f->gain = gain;
-}
-
-void tTwoZeroSampleRateChanged(tTwoZero* const ft)
-{
-    _tTwoZero* f = *ft;
-    
-    tTwoZero_setNotch(ft, f->frequency, f->radius);
-}
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ PoleZero Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void   tPoleZero_init(tPoleZero* const pzf)
-{
-    _tPoleZero* f = *pzf = (_tPoleZero*) leaf_alloc(sizeof(_tPoleZero));
-    
-    f->gain = 1.0f;
-    f->b0 = 1.0;
-    f->a0 = 1.0;
-    
-    f->lastIn = 0.0f;
-    f->lastOut = 0.0f;
-}
-
-void   tPoleZero_free(tPoleZero* const pzf)
-{
-    _tPoleZero* f = *pzf;
-    
-    leaf_free(f);
-}
-
-void    tPoleZero_initToPool        (tPoleZero* const pzf, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPoleZero* f = *pzf = (_tPoleZero*) mpool_alloc(sizeof(_tPoleZero), &m->pool);
-    
-    f->gain = 1.0f;
-    f->b0 = 1.0;
-    f->a0 = 1.0;
-    
-    f->lastIn = 0.0f;
-    f->lastOut = 0.0f;
-}
-
-void    tPoleZero_freeFromPool      (tPoleZero* const pzf, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPoleZero* f = *pzf;
-    
-    mpool_free(f, &m->pool);
-}
-
-void    tPoleZero_setB0(tPoleZero* const pzf, float b0)
-{
-    _tPoleZero* f = *pzf;
-    f->b0 = b0;
-}
-
-void    tPoleZero_setB1(tPoleZero* const pzf, float b1)
-{
-    _tPoleZero* f = *pzf;
-    f->b1 = b1;
-}
-
-void    tPoleZero_setA1(tPoleZero* const pzf, float a1)
-{
-    _tPoleZero* f = *pzf;
-    
-    if (a1 >= 1.0f) // a1 should be less than 1.0
-    {
-        a1 = 0.999999f;
-    }
-    
-    f->a1 = a1;
-}
-
-void    tPoleZero_setCoefficients(tPoleZero* const pzf, float b0, float b1, float a1)
-{
-    _tPoleZero* f = *pzf;
-    
-    if (a1 >= 1.0f) // a1 should be less than 1.0
-    {
-        a1 = 0.999999f;
-    }
-    
-    f->b0 = b0;
-    f->b1 = b1;
-    f->a1 = a1;
-}
-
-void    tPoleZero_setAllpass(tPoleZero* const pzf, float coeff)
-{
-    _tPoleZero* f = *pzf;
-    
-    if (coeff >= 1.0f) // allpass coefficient >= 1.0 makes filter unstable
-    {
-        coeff = 0.999999f;
-    }
-    
-    f->b0 = coeff;
-    f->b1 = 1.0f;
-    f->a0 = 1.0f;
-    f->a1 = coeff;
-}
-
-void    tPoleZero_setBlockZero(tPoleZero* const pzf, float thePole)
-{
-    _tPoleZero* f = *pzf;
-    
-    if (thePole >= 1.0f) // allpass coefficient >= 1.0 makes filter unstable
-    {
-        thePole = 0.999999f;
-    }
-    
-    f->b0 = 1.0f;
-    f->b1 = -1.0f;
-    f->a0 = 1.0f;
-    f->a1 = -thePole;
-}
-
-void    tPoleZero_setGain(tPoleZero* const pzf, float gain)
-{
-    _tPoleZero* f = *pzf;
-    f->gain = gain;
-}
-
-float   tPoleZero_tick(tPoleZero* const pzf, float input)
-{
-    _tPoleZero* f = *pzf;
-    
-    float in = input * f->gain;
-    float out = (f->b0 * in) + (f->b1 * f->lastIn) - (f->a1 * f->lastOut);
-    
-    f->lastIn = in;
-    f->lastOut = out;
-    
-    return out;
-}
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ BiQuad Filter ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void    tBiQuad_init(tBiQuad* const ft)
-{
-    _tBiQuad* f = *ft = (_tBiQuad*) leaf_alloc(sizeof(_tBiQuad));
-    
-    f->gain = 1.0f;
-    
-    f->b0 = 0.0f;
-    f->a0 = 0.0f;
-    
-    f->lastIn[0] = 0.0f;
-    f->lastIn[1] = 0.0f;
-    f->lastOut[0] = 0.0f;
-    f->lastOut[1] = 0.0f;
-}
-
-void    tBiQuad_free(tBiQuad* const ft)
-{
-    _tBiQuad* f = *ft;
-    
-    leaf_free(f);
-}
-
-void    tBiQuad_initToPool     (tBiQuad* const ft, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tBiQuad* f = *ft = (_tBiQuad*) mpool_alloc(sizeof(_tBiQuad), &m->pool);
-    
-    f->gain = 1.0f;
-    
-    f->b0 = 0.0f;
-    f->a0 = 0.0f;
-    
-    f->lastIn[0] = 0.0f;
-    f->lastIn[1] = 0.0f;
-    f->lastOut[0] = 0.0f;
-    f->lastOut[1] = 0.0f;
-}
-
-void    tBiQuad_freeFromPool   (tBiQuad* const ft, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tBiQuad* f = *ft;
-    
-    mpool_free(f, &m->pool);
-}
-
-float   tBiQuad_tick(tBiQuad* const ft, float input)
-{
-    _tBiQuad* f = *ft;
-    
-    float in = input * f->gain;
-    float out = f->b0 * in + f->b1 * f->lastIn[0] + f->b2 * f->lastIn[1];
-    out -= f->a2 * f->lastOut[1] + f->a1 * f->lastOut[0];
-    
-    f->lastIn[1] = f->lastIn[0];
-    f->lastIn[0] = in;
-    
-    f->lastOut[1] = f->lastOut[0];
-    f->lastOut[0] = out;
-    
-    return out;
-}
-
-void    tBiQuad_setResonance(tBiQuad* const ft, float freq, float radius, oBool normalize)
-{
-    _tBiQuad* f = *ft;
-    
-    if (freq < 0.0f)    freq = 0.0f;
-    if (freq > (leaf.sampleRate * 0.49f))   freq = leaf.sampleRate * 0.49f;
-    if (radius < 0.0f)  radius = 0.0f;
-    if (radius >= 1.0f)  radius = 1.0f;
-    
-    f->frequency = freq;
-    f->radius = radius;
-    f->normalize = normalize;
-    
-    f->a2 = radius * radius;
-    f->a1 = -2.0f * radius * cosf(freq * leaf.twoPiTimesInvSampleRate);
-    
-    if (normalize)
-    {
-        f->b0 = 0.5f - 0.5f * f->a2;
-        f->b1 = 0.0f;
-        f->b2 = -f->b0;
-    }
-}
-
-void    tBiQuad_setNotch(tBiQuad* const ft, float freq, float radius)
-{
-    _tBiQuad* f = *ft;
-    
-    if (freq < 0.0f)    freq = 0.0f;
-    if (freq > (leaf.sampleRate * 0.49f))   freq = leaf.sampleRate * 0.49f;
-    if (radius < 0.0f)  radius = 0.0f;
-    
-    f->b2 = radius * radius;
-    f->b1 = -2.0f * radius * cosf(freq * leaf.twoPiTimesInvSampleRate); // OPTIMIZE with LOOKUP or APPROXIMATION
-    
-    // Does not attempt to normalize filter gain.
-}
-
-void tBiQuad_setEqualGainZeros(tBiQuad* const ft)
-{
-    _tBiQuad* f = *ft;
-    f->b0 = 1.0f;
-    f->b1 = 0.0f;
-    f->b2 = -1.0f;
-}
-
-void    tBiQuad_setB0(tBiQuad* const ft, float b0)
-{
-    _tBiQuad* f = *ft;
-    f->b0 = b0;
-}
-
-void    tBiQuad_setB1(tBiQuad* const ft, float b1)
-{
-    _tBiQuad* f = *ft;
-    f->b1 = b1;
-}
-
-void    tBiQuad_setB2(tBiQuad* const ft, float b2)
-{
-    _tBiQuad* f = *ft;
-    f->b2 = b2;
-}
-
-void    tBiQuad_setA1(tBiQuad* const ft, float a1)
-{
-    _tBiQuad* f = *ft;
-    f->a1 = a1;
-}
-
-void    tBiQuad_setA2(tBiQuad* const ft, float a2)
-{
-    _tBiQuad* f = *ft;
-    f->a2 = a2;
-}
-
-void    tBiQuad_setCoefficients(tBiQuad* const ft, float b0, float b1, float b2, float a1, float a2)
-{
-    _tBiQuad* f = *ft;
-    f->b0 = b0;
-    f->b1 = b1;
-    f->b2 = b2;
-    f->a1 = a1;
-    f->a2 = a2;
-}
-
-void    tBiQuad_setGain(tBiQuad* const ft, float gain)
-{
-    _tBiQuad* f = *ft;
-    f->gain = gain;
-}
-
-void    tBiQuadSampleRateChanged(tBiQuad* const ft)
-{
-    _tBiQuad* f = *ft;
-    f->a2 = f->radius * f->radius;
-    f->a1 = -2.0f * f->radius * cosf(f->frequency * leaf.twoPiTimesInvSampleRate);
-    
-    if (f->normalize)
-    {
-        f->b0 = 0.5f - 0.5f * f->a2;
-        f->b1 = 0.0f;
-        f->b2 = -f->b0;
-    }
-}
-
-// Less efficient, more accurate version of SVF, in which cutoff frequency is taken as floating point Hz value and tanf
-// is calculated when frequency changes.
-void tSVF_init(tSVF* const svff, SVFType type, float freq, float Q)
-{
-    _tSVF* svf = *svff = (_tSVF*) leaf_alloc(sizeof(_tSVF));
-    
-    svf->type = type;
-    
-    svf->ic1eq = 0;
-    svf->ic2eq = 0;
-    
-    svf->g = tanf(PI * freq * leaf.invSampleRate);
-    svf->k = 1.0f/Q;
-    svf->a1 = 1.0f/(1.0f + svf->g * (svf->g + svf->k));
-    svf->a2 = svf->g*svf->a1;
-    svf->a3 = svf->g*svf->a2;
-}
-
-void tSVF_free(tSVF* const svff)
-{
-    _tSVF* svf = *svff;
-    
-    leaf_free(svf);
-}
-
-void    tSVF_initToPool     (tSVF* const svff, SVFType type, float freq, float Q, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSVF* svf = *svff = (_tSVF*) mpool_alloc(sizeof(_tSVF), &m->pool);
-    
-    svf->type = type;
-    
-    svf->ic1eq = 0;
-    svf->ic2eq = 0;
-    
-    svf->g = tanf(PI * freq * leaf.invSampleRate);
-    svf->k = 1.0f/Q;
-    svf->a1 = 1.0f/(1.0f + svf->g * (svf->g + svf->k));
-    svf->a2 = svf->g*svf->a1;
-    svf->a3 = svf->g*svf->a2;
-}
-
-void    tSVF_freeFromPool   (tSVF* const svff, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSVF* svf = *svff;
-    
-    mpool_free(svf, &m->pool);
-}
-
-float   tSVF_tick(tSVF* const svff, float v0)
-{
-    _tSVF* svf = *svff;
-    
-    float v1,v2,v3;
-    v3 = v0 - svf->ic2eq;
-    v1 = (svf->a1 * svf->ic1eq) + (svf->a2 * v3);
-    v2 = svf->ic2eq + (svf->a2 * svf->ic1eq) + (svf->a3 * v3);
-    svf->ic1eq = (2.0f * v1) - svf->ic1eq;
-    svf->ic2eq = (2.0f * v2) - svf->ic2eq;
-    
-    if (svf->type == SVFTypeLowpass)        return v2;
-    else if (svf->type == SVFTypeBandpass)  return v1;
-    else if (svf->type == SVFTypeHighpass)  return v0 - (svf->k * v1) - v2;
-    else if (svf->type == SVFTypeNotch)     return v0 - (svf->k * v1);
-    else if (svf->type == SVFTypePeak)      return v0 - (svf->k * v1) - (2.0f * v2);
-    else                                    return 0.0f;
-    
-}
-
-void     tSVF_setFreq(tSVF* const svff, float freq)
-{
-    _tSVF* svf = *svff;
-    
-    svf->g = tanf(PI * freq * leaf.invSampleRate);
-    svf->a1 = 1.0f/(1.0f + svf->g * (svf->g + svf->k));
-    svf->a2 = svf->g * svf->a1;
-    svf->a3 = svf->g * svf->a2;
-}
-
-void     tSVF_setQ(tSVF* const svff, float Q)
-{
-    _tSVF* svf = *svff;
-    
-    svf->k = 1.0f/Q;
-    svf->a1 = 1.0f/(1.0f + svf->g * (svf->g + svf->k));
-    svf->a2 = svf->g * svf->a1;
-    svf->a3 = svf->g * svf->a2;
-}
-
-// Efficient version of tSVF where frequency is set based on 12-bit integer input for lookup in tanh wavetable.
-void   tEfficientSVF_init(tEfficientSVF* const svff, SVFType type, uint16_t input, float Q)
-{
-    _tEfficientSVF* svf = *svff = (_tEfficientSVF*) leaf_alloc(sizeof(_tEfficientSVF));
-    
-    svf->type = type;
-    
-    svf->ic1eq = 0;
-    svf->ic2eq = 0;
-    
-    svf->g = filtertan[input];
-    svf->k = 1.0f/Q;
-    svf->a1 = 1.0f/(1.0f+svf->g*(svf->g+svf->k));
-    svf->a2 = svf->g*svf->a1;
-    svf->a3 = svf->g*svf->a2;
-}
-
-void tEfficientSVF_free(tEfficientSVF* const svff)
-{
-    _tEfficientSVF* svf = *svff;
-    
-    leaf_free(svf);
-}
-
-void    tEfficientSVF_initToPool    (tEfficientSVF* const svff, SVFType type, uint16_t input, float Q, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tEfficientSVF* svf = *svff = (_tEfficientSVF*) mpool_alloc(sizeof(_tEfficientSVF), &m->pool);
-    
-    svf->type = type;
-    
-    svf->ic1eq = 0;
-    svf->ic2eq = 0;
-    
-    svf->g = filtertan[input];
-    svf->k = 1.0f/Q;
-    svf->a1 = 1.0f/(1.0f+svf->g*(svf->g+svf->k));
-    svf->a2 = svf->g*svf->a1;
-    svf->a3 = svf->g*svf->a2;
-}
-
-void    tEfficientSVF_freeFromPool  (tEfficientSVF* const svff, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tEfficientSVF* svf = *svff;
-    
-    mpool_free(svf, &m->pool);
-}
-
-float   tEfficientSVF_tick(tEfficientSVF* const svff, float v0)
-{
-    _tEfficientSVF* svf = *svff;
-    
-    float v1,v2,v3;
-    v3 = v0 - svf->ic2eq;
-    v1 = (svf->a1 * svf->ic1eq) + (svf->a2 * v3);
-    v2 = svf->ic2eq + (svf->a2 * svf->ic1eq) + (svf->a3 * v3);
-    svf->ic1eq = (2.0f * v1) - svf->ic1eq;
-    svf->ic2eq = (2.0f * v2) - svf->ic2eq;
-    
-    if (svf->type == SVFTypeLowpass)        return v2;
-    else if (svf->type == SVFTypeBandpass)  return v1;
-    else if (svf->type == SVFTypeHighpass)  return v0 - (svf->k * v1) - v2;
-    else if (svf->type == SVFTypeNotch)     return v0 - (svf->k * v1);
-    else if (svf->type == SVFTypePeak)      return v0 - (svf->k * v1) - (2.0f * v2);
-    else                                    return 0.0f;
-    
-}
-
-void     tEfficientSVF_setFreq(tEfficientSVF* const svff, uint16_t input)
-{
-    _tEfficientSVF* svf = *svff;
-    
-    svf->g = filtertan[input];
-    svf->a1 = 1.0f/(1.0f + svf->g * (svf->g + svf->k));
-    svf->a2 = svf->g * svf->a1;
-    svf->a3 = svf->g * svf->a2;
-}
-
-void     tEfficientSVF_setQ(tEfficientSVF* const svff, float Q)
-{
-    _tEfficientSVF* svf = *svff;
-    
-    svf->k = 1.0f/Q;
-    svf->a1 = 1.0f/(1.0f + svf->g * (svf->g + svf->k));
-    svf->a2 = svf->g * svf->a1;
-    svf->a3 = svf->g * svf->a2;
-}
-
-/* Highpass */
-void    tHighpass_init(tHighpass* const ft, float freq)
-{
-    _tHighpass* f = *ft = (_tHighpass*) leaf_alloc(sizeof(_tHighpass));
-    
-    f->R = (1.0f - (freq * leaf.twoPiTimesInvSampleRate));
-    f->ys = 0.0f;
-    f->xs = 0.0f;
-    
-    f->frequency = freq;
-}
-
-void    tHighpass_free(tHighpass* const ft)
-{
-    _tHighpass* f = *ft;
-    
-    leaf_free(f);
-}
-
-void    tHighpass_initToPool    (tHighpass* const ft, float freq, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tHighpass* f = *ft = (_tHighpass*) mpool_calloc(sizeof(_tHighpass), &m->pool);
-    
-    f->R = (1.0f - (freq * leaf.twoPiTimesInvSampleRate));
-    f->ys = 0.0f;
-    f->xs = 0.0f;
-    
-    f->frequency = freq;
-}
-
-void    tHighpass_freeFromPool  (tHighpass* const ft, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tHighpass* f = *ft;
-    
-    mpool_free(f, &m->pool);
-}
-
-void     tHighpass_setFreq(tHighpass* const ft, float freq)
-{
-    _tHighpass* f = *ft;
-    f->frequency = freq;
-    f->R = (1.0f - (freq * leaf.twoPiTimesInvSampleRate));
-    
-}
-
-float     tHighpass_getFreq(tHighpass* const ft)
-{
-    _tHighpass* f = *ft;
-    return f->frequency;
-}
-
-// From JOS DC Blocker
-float   tHighpass_tick(tHighpass* const ft, float x)
-{
-    _tHighpass* f = *ft;
-    f->ys = x - f->xs + f->R * f->ys;
-    f->xs = x;
-    return f->ys;
-}
-
-void tHighpassSampleRateChanged(tHighpass* const ft)
-{
-    _tHighpass* f = *ft;
-    f->R = (1.0f-((f->frequency * 2.0f * 3.14f) * leaf.invSampleRate));
-}
-
-void tButterworth_init(tButterworth* const ft, int N, float f1, float f2)
-{
-    _tButterworth* f = *ft = (_tButterworth*) leaf_alloc(sizeof(_tButterworth));
-    
-    f->f1 = f1;
-    f->f2 = f2;
-    f->gain = 1.0f;
-    
-    f->N = N;
-    
-    if (f->N > NUM_SVF_BW) f->N = NUM_SVF_BW;
-    
-    for(int i = 0; i < N/2; ++i)
-    {
-        tSVF_init(&f->low[i], SVFTypeHighpass, f1, 0.5f/cosf((1.0f+2.0f*i)*PI/(2*N)));
-        tSVF_init(&f->high[i], SVFTypeLowpass, f2, 0.5f/cosf((1.0f+2.0f*i)*PI/(2*N)));
-    }
-}
-
-void tButterworth_free(tButterworth* const ft)
-{
-    _tButterworth* f = *ft;
-    
-    for(int i = 0; i < f->N/2; ++i)
-    {
-        tSVF_free(&f->low[i]);
-        tSVF_free(&f->high[i]);
-    }
-    
-    leaf_free(f);
-}
-
-void    tButterworth_initToPool     (tButterworth* const ft, int N, float f1, float f2, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tButterworth* f = *ft = (_tButterworth*) mpool_alloc(sizeof(_tButterworth), &m->pool);
-    
-    f->f1 = f1;
-    f->f2 = f2;
-    f->gain = 1.0f;
-    
-    f->N = N;
-    
-    if (f->N > NUM_SVF_BW) f->N = NUM_SVF_BW;
-    
-    for(int i = 0; i < N/2; ++i)
-    {
-        tSVF_initToPool(&f->low[i], SVFTypeHighpass, f1, 0.5f/cosf((1.0f+2.0f*i)*PI/(2*N)), mp);
-        tSVF_initToPool(&f->high[i], SVFTypeLowpass, f2, 0.5f/cosf((1.0f+2.0f*i)*PI/(2*N)), mp);
-    }
-}
-
-void    tButterworth_freeFromPool   (tButterworth* const ft, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tButterworth* f = *ft;
-    
-    for(int i = 0; i < f->N/2; ++i)
-    {
-        tSVF_freeFromPool(&f->low[i], mp);
-        tSVF_freeFromPool(&f->high[i], mp);
-    }
-    
-    mpool_free(f, &m->pool);
-}
-
-float tButterworth_tick(tButterworth* const ft, float samp)
-{
-    _tButterworth* f = *ft;
-    
-    for(int i = 0; i < ((f->N)/2); ++i)
-    {
-        samp = tSVF_tick(&f->low[i],samp);
-        samp = tSVF_tick(&f->high[i],samp);
-    }
-    return samp;
-}
-
-void tButterworth_setF1(tButterworth* const ft, float f1)
-{
-    _tButterworth* f = *ft;
-    
-    f->f1 = f1;
-    for(int i = 0; i < ((f->N)/2); ++i)        tSVF_setFreq(&f->low[i], f1);
-}
-
-void tButterworth_setF2(tButterworth* const ft, float f2)
-{
-    _tButterworth* f = *ft;
-    
-    f->f2 = f2;
-    for(int i = 0; i < ((f->N)/2); ++i)        tSVF_setFreq(&f->high[i], f2);
-}
-
-void tButterworth_setFreqs(tButterworth* const ft, float f1, float f2)
-{
-    _tButterworth* f = *ft;
-    
-    f->f1 = f1;
-    f->f2 = f2;
-    for(int i = 0; i < ((f->N)/2); ++i)
-    {
-        tSVF_setFreq(&f->low[i], f1);
-        tSVF_setFreq(&f->high[i], f2);
-    }
-}
-
-void	tFIR_init(tFIR* const firf, float* coeffs, int numTaps)
-{
-    _tFIR* fir = *firf = (_tFIR*) leaf_alloc(sizeof(_tFIR));
-    
-    fir->numTaps = numTaps;
-    fir->coeff = coeffs;
-    fir->past = (float*)leaf_alloc(sizeof(float) * fir->numTaps);
-    for (int i = 0; i < fir->numTaps; ++i) fir->past[i] = 0.0f;
-}
-
-void    tFIR_free(tFIR* const firf)
-{
-    _tFIR* fir = *firf;
-    
-    leaf_free(fir->past);
-    leaf_free(fir);
-}
-
-void    tFIR_initToPool     (tFIR* const firf, float* coeffs, int numTaps, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tFIR* fir = *firf = (_tFIR*) mpool_alloc(sizeof(_tFIR), &m->pool);
-    
-    fir->numTaps = numTaps;
-    fir->coeff = coeffs;
-    fir->past = (float*) mpool_alloc(sizeof(float) * fir->numTaps, &m->pool);
-    for (int i = 0; i < fir->numTaps; ++i) fir->past[i] = 0.0f;
-}
-
-void    tFIR_freeFromPool   (tFIR* const firf, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tFIR* fir = *firf;
-    
-    mpool_free(fir->past, &m->pool);
-    mpool_free(fir, &m->pool);
-}
-
-float	tFIR_tick(tFIR* const firf, float input)
-{
-    _tFIR* fir = *firf;
-    
-	fir->past[0] = input;
-	float y = 0.0f;
-	for (int i = 0; i < fir->numTaps; ++i) y += fir->past[i]*fir->coeff[i];
-	for (int i = fir->numTaps-1; i > 0; --i) fir->past[i] = fir->past[i-1];
-	return y;
-}
--- a/LEAF/Src/leaf-instruments.c
+++ /dev/null
@@ -1,706 +1,0 @@
-/*==============================================================================
-
-    leaf-instruments.c
-    Created: 30 Nov 2018 10:24:21am
-    Author:  airship
-
-==============================================================================*/
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-instruments.h"
-
-#else
-
-#include "../Inc/leaf-instruments.h"
-
-#endif
-
-// ----------------- COWBELL ----------------------------//
-
-void t808Cowbell_init(t808Cowbell* const cowbellInst, int useStick)
-{
-    _t808Cowbell* cowbell = *cowbellInst = (_t808Cowbell*) leaf_alloc(sizeof(_t808Cowbell));
-    
-    tSquare_init(&cowbell->p[0]);
-    tSquare_setFreq(&cowbell->p[0], 540.0f);
-    
-    tSquare_init(&cowbell->p[1]);
-    tSquare_setFreq(&cowbell->p[1], 1.48148f * 540.0f);
-    
-    cowbell->oscMix = 0.5f;
-    
-    tSVF_init(&cowbell->bandpassOsc, SVFTypeBandpass, 2500, 1.0f);
-    
-    tSVF_init(&cowbell->bandpassStick, SVFTypeBandpass, 1800, 1.0f);
-    
-    tEnvelope_init(&cowbell->envGain, 5.0f, 100.0f, OFALSE);
-    
-    tEnvelope_init(&cowbell->envFilter, 5.0, 100.0f, OFALSE);
-    
-    tHighpass_init(&cowbell->highpass, 1000.0f);
-    
-    tNoise_init(&cowbell->stick, WhiteNoise);
-    
-    tEnvelope_init(&cowbell->envStick, 5.0f, 5.0f, 0);
-    
-    cowbell->useStick = useStick;
-}
-
-void t808Cowebell_free(t808Cowbell* const cowbellInst)
-{
-    _t808Cowbell* cowbell = *cowbellInst;
-    
-    tSquare_free(&cowbell->p[0]);
-    tSquare_free(&cowbell->p[1]);
-    tSVF_free(&cowbell->bandpassOsc);
-    tSVF_free(&cowbell->bandpassStick);
-    tEnvelope_free(&cowbell->envGain);
-    tEnvelope_free(&cowbell->envFilter);
-    tHighpass_free(&cowbell->highpass);
-    tNoise_free(&cowbell->stick);
-    tEnvelope_free(&cowbell->envStick);
-    leaf_free(cowbell);
-}
-
-void        t808Cowbell_initToPool      (t808Cowbell* const cowbellInst, int useStick, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _t808Cowbell* cowbell = *cowbellInst = (_t808Cowbell*) mpool_alloc(sizeof(_t808Cowbell), &m->pool);
-    
-    tSquare_initToPool(&cowbell->p[0], mp);
-    tSquare_setFreq(&cowbell->p[0], 540.0f);
-    
-    tSquare_initToPool(&cowbell->p[1], mp);
-    tSquare_setFreq(&cowbell->p[1], 1.48148f * 540.0f);
-    
-    cowbell->oscMix = 0.5f;
-    
-    tSVF_initToPool(&cowbell->bandpassOsc, SVFTypeBandpass, 2500, 1.0f, mp);
-    
-    tSVF_initToPool(&cowbell->bandpassStick, SVFTypeBandpass, 1800, 1.0f, mp);
-    
-    tEnvelope_initToPool(&cowbell->envGain, 5.0f, 100.0f, OFALSE, mp);
-    
-    tEnvelope_initToPool(&cowbell->envFilter, 5.0, 100.0f, OFALSE, mp);
-    
-    tHighpass_initToPool(&cowbell->highpass, 1000.0f, mp);
-    
-    tNoise_initToPool(&cowbell->stick, WhiteNoise, mp);
-    
-    tEnvelope_initToPool(&cowbell->envStick, 5.0f, 5.0f, 0, mp);
-    
-    cowbell->useStick = useStick;
-}
-
-void        t808Cowbell_freeFromPool    (t808Cowbell* const cowbellInst, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _t808Cowbell* cowbell = *cowbellInst;
-    
-    tSquare_freeFromPool(&cowbell->p[0], mp);
-    tSquare_freeFromPool(&cowbell->p[1], mp);
-    tSVF_freeFromPool(&cowbell->bandpassOsc, mp);
-    tSVF_freeFromPool(&cowbell->bandpassStick, mp);
-    tEnvelope_freeFromPool(&cowbell->envGain, mp);
-    tEnvelope_freeFromPool(&cowbell->envFilter, mp);
-    tHighpass_freeFromPool(&cowbell->highpass, mp);
-    tNoise_freeFromPool(&cowbell->stick, mp);
-    tEnvelope_freeFromPool(&cowbell->envStick, mp);
-    mpool_free(cowbell, &m->pool);
-}
-
-void t808Cowbell_on(t808Cowbell* const cowbellInst, float vel)
-{
-    _t808Cowbell* cowbell = *cowbellInst;
-    
-    tEnvelope_on(&cowbell->envGain, vel);
-    
-    if (cowbell->useStick)
-        tEnvelope_on(&cowbell->envStick,vel);
-}
-
-float t808Cowbell_tick(t808Cowbell* const cowbellInst)
-{
-    _t808Cowbell* cowbell = *cowbellInst;
-    
-    float sample = 0.0f;
-    
-    // Mix oscillators.
-    sample = (cowbell->oscMix * tSquare_tick(&cowbell->p[0])) + ((1.0f-cowbell->oscMix) * tSquare_tick(&cowbell->p[1]));
-    
-    // Filter dive and filter.
-    tSVF_setFreq(&cowbell->bandpassOsc, cowbell->filterCutoff + 1000.0f * tEnvelope_tick(&cowbell->envFilter));
-    sample = tSVF_tick(&cowbell->bandpassOsc,sample);
-    
-    sample *= (0.9f * tEnvelope_tick(&cowbell->envGain));
-    
-    if (cowbell->useStick)
-        sample += (0.1f * tEnvelope_tick(&cowbell->envStick) * tSVF_tick(&cowbell->bandpassStick, tNoise_tick(&cowbell->stick)));
-
-    
-    sample = tHighpass_tick(&cowbell->highpass, sample);
-    
-    return sample;
-}
-
-void t808Cowbell_setDecay(t808Cowbell* const cowbellInst, float decay)
-{
-    _t808Cowbell* cowbell = *cowbellInst;
-    tEnvelope_setDecay(&cowbell->envGain,decay);
-}
-
-void t808Cowbell_setHighpassFreq(t808Cowbell *cowbellInst, float freq)
-{
-    _t808Cowbell* cowbell = *cowbellInst;
-    tHighpass_setFreq(&cowbell->highpass,freq);
-}
-
-void t808Cowbell_setBandpassFreq(t808Cowbell* const cowbellInst, float freq)
-{
-    _t808Cowbell* cowbell = *cowbellInst;
-    cowbell->filterCutoff = freq;
-}
-
-void t808Cowbell_setFreq(t808Cowbell* const cowbellInst, float freq)
-{
-    _t808Cowbell* cowbell = *cowbellInst;
-    tSquare_setFreq(&cowbell->p[0],freq);
-    tSquare_setFreq(&cowbell->p[1],1.48148f*freq);
-}
-
-void t808Cowbell_setOscMix(t808Cowbell* const cowbellInst, float oscMix)
-{
-    _t808Cowbell* cowbell = *cowbellInst;
-    cowbell->oscMix = oscMix;
-}
-
-void t808Cowbell_setStick(t808Cowbell* const cowbellInst, int useStick)
-{
-    _t808Cowbell* cowbell = *cowbellInst;
-    cowbell->useStick = useStick;
-}
-
-// ----------------- HIHAT ----------------------------//
-
-void t808Hihat_init(t808Hihat* const hihatInst)
-{
-    _t808Hihat* hihat = *hihatInst = (_t808Hihat*) leaf_alloc(sizeof(_t808Hihat));
-    
-    for (int i = 0; i < 6; i++)
-    {
-        tSquare_init(&hihat->p[i]);
-    }
-    
-    tNoise_init(&hihat->stick, PinkNoise);
-    tNoise_init(&hihat->n, WhiteNoise);
-    
-    // need to fix SVF to be generic
-    tSVF_init(&hihat->bandpassStick, SVFTypeBandpass,2500.0f,1.2f);
-    tSVF_init(&hihat->bandpassOsc, SVFTypeBandpass,3500.0f,0.3f);
-    
-    tEnvelope_init(&hihat->envGain, 0.0f, 50.0f, OFALSE);
-    tEnvelope_init(&hihat->envStick, 0.0f, 7.0f, OFALSE);
-    
-    
-    tHighpass_init(&hihat->highpass, 7000.0f);
-    
-    hihat->freq = 40.0f;
-    hihat->stretch = 0.0f;
-    
-    tSquare_setFreq(&hihat->p[0], 2.0f * hihat->freq);
-    tSquare_setFreq(&hihat->p[1], 3.00f * hihat->freq);
-    tSquare_setFreq(&hihat->p[2], 4.16f * hihat->freq);
-    tSquare_setFreq(&hihat->p[3], 5.43f * hihat->freq);
-    tSquare_setFreq(&hihat->p[4], 6.79f * hihat->freq);
-    tSquare_setFreq(&hihat->p[5], 8.21f * hihat->freq);
-}
-
-void t808Hihat_free(t808Hihat* const hihatInst)
-{
-    _t808Hihat* hihat = *hihatInst;
-    
-    for (int i = 0; i < 6; i++)
-    {
-        tSquare_free(&hihat->p[i]);
-    }
-    
-    tNoise_free(&hihat->stick);
-    tNoise_free(&hihat->n);
-    
-    // need to fix SVF to be generic
-    tSVF_free(&hihat->bandpassStick);
-    tSVF_free(&hihat->bandpassOsc);
-    tEnvelope_free(&hihat->envGain);
-    tEnvelope_free(&hihat->envStick);
-    
-    tHighpass_free(&hihat->highpass);
-    
-    leaf_free(hihat);
-}
-
-void    t808Hihat_initToPool  (t808Hihat* const hihatInst, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _t808Hihat* hihat = *hihatInst = (_t808Hihat*) mpool_alloc(sizeof(_t808Hihat), &m->pool);
-    
-    for (int i = 0; i < 6; i++)
-    {
-        tSquare_initToPool(&hihat->p[i], mp);
-    }
-    
-    tNoise_initToPool(&hihat->stick, PinkNoise, mp);
-    tNoise_initToPool(&hihat->n, WhiteNoise, mp);
-    
-    // need to fix SVF to be generic
-    tSVF_initToPool(&hihat->bandpassStick, SVFTypeBandpass,2500.0f,1.2f, mp);
-    tSVF_initToPool(&hihat->bandpassOsc, SVFTypeBandpass,3500.0f,0.3f, mp);
-    
-    tEnvelope_initToPool(&hihat->envGain, 0.0f, 50.0f, OFALSE, mp);
-    tEnvelope_initToPool(&hihat->envStick, 0.0f, 7.0f, OFALSE, mp);
-    
-    
-    tHighpass_initToPool(&hihat->highpass, 7000.0f, mp);
-    
-    hihat->freq = 40.0f;
-    hihat->stretch = 0.0f;
-    
-    tSquare_setFreq(&hihat->p[0], 2.0f * hihat->freq);
-    tSquare_setFreq(&hihat->p[1], 3.00f * hihat->freq);
-    tSquare_setFreq(&hihat->p[2], 4.16f * hihat->freq);
-    tSquare_setFreq(&hihat->p[3], 5.43f * hihat->freq);
-    tSquare_setFreq(&hihat->p[4], 6.79f * hihat->freq);
-    tSquare_setFreq(&hihat->p[5], 8.21f * hihat->freq);
-}
-
-void    t808Hihat_freeFromPool  (t808Hihat* const hihatInst, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _t808Hihat* hihat = *hihatInst;
-    
-    for (int i = 0; i < 6; i++)
-    {
-        tSquare_freeFromPool(&hihat->p[i], mp);
-    }
-    
-    tNoise_freeFromPool(&hihat->stick, mp);
-    tNoise_freeFromPool(&hihat->n, mp);
-    
-    // need to fix SVF to be generic
-    tSVF_freeFromPool(&hihat->bandpassStick, mp);
-    tSVF_freeFromPool(&hihat->bandpassOsc, mp);
-    tEnvelope_freeFromPool(&hihat->envGain, mp);
-    tEnvelope_freeFromPool(&hihat->envStick, mp);
-    
-    tHighpass_freeFromPool(&hihat->highpass, mp);
-    
-    mpool_free(hihat, &m->pool);
-}
-
-void t808Hihat_on(t808Hihat* const hihatInst, float vel)
-{
-    _t808Hihat* hihat = *hihatInst;
-    tEnvelope_on(&hihat->envGain, vel);
-    tEnvelope_on(&hihat->envStick, vel);
-}
-
-void t808Hihat_setOscNoiseMix(t808Hihat* const hihatInst, float oscNoiseMix)
-{
-    _t808Hihat* hihat = *hihatInst;
-    hihat->oscNoiseMix = oscNoiseMix;
-}
-
-float t808Hihat_tick(t808Hihat* const hihatInst)
-{
-    _t808Hihat* hihat = *hihatInst;
-    
-    float sample = 0.0f;
-    float gainScale = 0.1666f;
-
-    float myNoise = tNoise_tick(&hihat->n);
-
-	tSquare_setFreq(&hihat->p[0], ((2.0f + hihat->stretch) * hihat->freq));
-	tSquare_setFreq(&hihat->p[1], ((3.00f + hihat->stretch) * hihat->freq));
-	tSquare_setFreq(&hihat->p[2], ((4.16f + hihat->stretch) * hihat->freq));
-	tSquare_setFreq(&hihat->p[3], ((5.43f + hihat->stretch) * hihat->freq));
-	tSquare_setFreq(&hihat->p[4], ((6.79f + hihat->stretch) * hihat->freq));
-	tSquare_setFreq(&hihat->p[5], ((8.21f + hihat->stretch) * hihat->freq));
-
-    for (int i = 0; i < 6; i++)
-    {
-        sample += tSquare_tick(&hihat->p[i]);
-    }
-    
-    sample *= gainScale;
-    
-    sample = (hihat->oscNoiseMix * sample) + ((1.0f-hihat->oscNoiseMix) * myNoise);
-    
-    sample = tSVF_tick(&hihat->bandpassOsc, sample);
-    
-    float myGain = tEnvelope_tick(&hihat->envGain);
-    sample *= (myGain*myGain);//square the output gain envelope
-    sample = tHighpass_tick(&hihat->highpass, sample);
-    sample += ((0.5f * tEnvelope_tick(&hihat->envStick)) * tSVF_tick(&hihat->bandpassStick, tNoise_tick(&hihat->stick)));
-    sample = tanhf(sample * 2.0f);
-
-    return sample;
-}
-
-void t808Hihat_setDecay(t808Hihat* const hihatInst, float decay)
-{
-    _t808Hihat* hihat = *hihatInst;
-    tEnvelope_setDecay(&hihat->envGain,decay);
-}
-
-void t808Hihat_setHighpassFreq(t808Hihat* const hihatInst, float freq)
-{
-    _t808Hihat* hihat = *hihatInst;
-    tHighpass_setFreq(&hihat->highpass,freq);
-}
-
-void t808Hihat_setStretch(t808Hihat* const hihatInst, float stretch)
-{
-    _t808Hihat* hihat = *hihatInst;
-    hihat->stretch = stretch;
-}
-
-void t808Hihat_setFM(t808Hihat* const hihatInst, float FM_amount)
-{
-    _t808Hihat* hihat = *hihatInst;
-    hihat->FM_amount = FM_amount;
-}
-
-void t808Hihat_setOscBandpassFreq(t808Hihat* const hihatInst, float freq)
-{
-    _t808Hihat* hihat = *hihatInst;
-    tSVF_setFreq(&hihat->bandpassOsc,freq);
-}
-
-void t808Hihat_setOscBandpassQ(t808Hihat* const hihatInst, float Q)
-{
-    _t808Hihat* hihat = *hihatInst;
-    tSVF_setQ(&hihat->bandpassOsc,Q);
-}
-
-void t808Hihat_setStickBandPassFreq(t808Hihat* const hihatInst, float freq)
-{
-    _t808Hihat* hihat = *hihatInst;
-    tSVF_setFreq(&hihat->bandpassStick,freq);
-}
-
-void t808Hihat_setStickBandPassQ(t808Hihat* const hihatInst, float Q)
-{
-    _t808Hihat* hihat = *hihatInst;
-    tSVF_setQ(&hihat->bandpassStick,Q);
-}
-
-void t808Hihat_setOscFreq(t808Hihat* const hihatInst, float freq)
-{
-    _t808Hihat* hihat = *hihatInst;
-    hihat->freq = freq;
-}
-
-// ----------------- SNARE ----------------------------//
-
-void t808Snare_init(t808Snare* const snareInst)
-{
-    _t808Snare* snare = *snareInst = (_t808Snare*) leaf_alloc(sizeof(_t808Snare));
-    
-    float ratio[2] = {1.0, 1.5};
-    for (int i = 0; i < 2; i++)
-    {
-        tTriangle_init(&snare->tone[i]);
-        
-        tTriangle_setFreq(&snare->tone[i], ratio[i] * 400.0f);
-        tSVF_init(&snare->toneLowpass[i], SVFTypeLowpass, 4000, 1.0f);
-        tEnvelope_init(&snare->toneEnvOsc[i], 0.0f, 50.0f, OFALSE);
-        tEnvelope_init(&snare->toneEnvGain[i], 1.0f, 150.0f, OFALSE);
-        tEnvelope_init(&snare->toneEnvFilter[i], 1.0f, 2000.0f, OFALSE);
-        
-        snare->toneGain[i] = 0.5f;
-    }
-    
-    snare->tone1Freq = ratio[0] * 100.0f;
-    snare->tone2Freq = ratio[1] * 100.0f;
-    snare->noiseFilterFreq = 3000.0f;
-    tNoise_init(&snare->noiseOsc, WhiteNoise);
-    tSVF_init(&snare->noiseLowpass, SVFTypeLowpass, 12000.0f, 0.8f);
-    tEnvelope_init(&snare->noiseEnvGain, 0.0f, 100.0f, OFALSE);
-    tEnvelope_init(&snare->noiseEnvFilter, 0.0f, 1000.0f, OFALSE);
-    snare->noiseGain = 1.0f;
-}
-
-void        t808Snare_free                  (t808Snare* const snareInst)
-{
-    _t808Snare* snare = *snareInst;
-    
-    for (int i = 0; i < 2; i++)
-    {
-        tTriangle_free(&snare->tone[i]);
-        tSVF_free(&snare->toneLowpass[i]);
-        tEnvelope_free(&snare->toneEnvOsc[i]);
-        tEnvelope_free(&snare->toneEnvGain[i]);
-        tEnvelope_free(&snare->toneEnvFilter[i]);
-    }
-    
-    tNoise_free(&snare->noiseOsc);
-    tSVF_free(&snare->noiseLowpass);
-    tEnvelope_free(&snare->noiseEnvGain);
-    tEnvelope_free(&snare->noiseEnvFilter);
-    
-    leaf_free(snare);
-}
-
-void    t808Snare_initToPool    (t808Snare* const snareInst, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _t808Snare* snare = *snareInst = (_t808Snare*) mpool_alloc(sizeof(_t808Snare), &m->pool);
-    
-    float ratio[2] = {1.0, 1.5};
-    for (int i = 0; i < 2; i++)
-    {
-        tTriangle_initToPool(&snare->tone[i], mp);
-        
-        tTriangle_setFreq(&snare->tone[i], ratio[i] * 400.0f);
-        tSVF_initToPool(&snare->toneLowpass[i], SVFTypeLowpass, 4000, 1.0f, mp);
-        tEnvelope_initToPool(&snare->toneEnvOsc[i], 0.0f, 50.0f, OFALSE, mp);
-        tEnvelope_initToPool(&snare->toneEnvGain[i], 1.0f, 150.0f, OFALSE, mp);
-        tEnvelope_initToPool(&snare->toneEnvFilter[i], 1.0f, 2000.0f, OFALSE, mp);
-        
-        snare->toneGain[i] = 0.5f;
-    }
-    
-    snare->tone1Freq = ratio[0] * 100.0f;
-    snare->tone2Freq = ratio[1] * 100.0f;
-    snare->noiseFilterFreq = 3000.0f;
-    tNoise_initToPool(&snare->noiseOsc, WhiteNoise, mp);
-    tSVF_initToPool(&snare->noiseLowpass, SVFTypeLowpass, 12000.0f, 0.8f, mp);
-    tEnvelope_initToPool(&snare->noiseEnvGain, 0.0f, 100.0f, OFALSE, mp);
-    tEnvelope_initToPool(&snare->noiseEnvFilter, 0.0f, 1000.0f, OFALSE, mp);
-    snare->noiseGain = 1.0f;
-}
-
-void    t808Snare_freeFromPool  (t808Snare* const snareInst, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _t808Snare* snare = *snareInst;
-    
-    for (int i = 0; i < 2; i++)
-    {
-        tTriangle_freeFromPool(&snare->tone[i], mp);
-        tSVF_freeFromPool(&snare->toneLowpass[i], mp);
-        tEnvelope_freeFromPool(&snare->toneEnvOsc[i], mp);
-        tEnvelope_freeFromPool(&snare->toneEnvGain[i], mp);
-        tEnvelope_freeFromPool(&snare->toneEnvFilter[i], mp);
-    }
-    
-    tNoise_freeFromPool(&snare->noiseOsc, mp);
-    tSVF_freeFromPool(&snare->noiseLowpass, mp);
-    tEnvelope_freeFromPool(&snare->noiseEnvGain, mp);
-    tEnvelope_freeFromPool(&snare->noiseEnvFilter, mp);
-    
-    mpool_free(snare, &m->pool);
-}
-
-void t808Snare_on(t808Snare* const snareInst, float vel)
-{
-    _t808Snare* snare = *snareInst;
-    
-    for (int i = 0; i < 2; i++)
-    {
-        tEnvelope_on(&snare->toneEnvOsc[i], vel);
-        tEnvelope_on(&snare->toneEnvGain[i], vel);
-        tEnvelope_on(&snare->toneEnvFilter[i], vel);
-    }
-    
-    tEnvelope_on(&snare->noiseEnvGain, vel);
-    tEnvelope_on(&snare->noiseEnvFilter, vel);
-}
-
-void t808Snare_setTone1Freq(t808Snare* const snareInst, float freq)
-{
-    _t808Snare* snare = *snareInst;
-    snare->tone1Freq = freq;
-    tTriangle_setFreq(&snare->tone[0], freq);
-}
-
-void t808Snare_setTone2Freq(t808Snare* const snareInst, float freq)
-{
-    _t808Snare* snare = *snareInst;
-    snare->tone2Freq = freq;
-    tTriangle_setFreq(&snare->tone[1],freq);
-}
-
-void t808Snare_setTone1Decay(t808Snare* const snareInst, float decay)
-{
-    _t808Snare* snare = *snareInst;
-    tEnvelope_setDecay(&snare->toneEnvGain[0],decay);
-}
-
-void t808Snare_setTone2Decay(t808Snare* const snareInst, float decay)
-{
-    _t808Snare* snare = *snareInst;
-    tEnvelope_setDecay(&snare->toneEnvGain[1],decay);
-}
-
-void t808Snare_setNoiseDecay(t808Snare* const snareInst, float decay)
-{
-    _t808Snare* snare = *snareInst;
-    tEnvelope_setDecay(&snare->noiseEnvGain,decay);
-}
-
-void t808Snare_setToneNoiseMix(t808Snare* const snareInst, float toneNoiseMix)
-{
-    _t808Snare* snare = *snareInst;
-    snare->toneNoiseMix = toneNoiseMix;
-}
-
-void t808Snare_setNoiseFilterFreq(t808Snare* const snareInst, float noiseFilterFreq)
-{
-    _t808Snare* snare = *snareInst;
-    snare->noiseFilterFreq = noiseFilterFreq;
-}
-
-void t808Snare_setNoiseFilterQ(t808Snare* const snareInst, float noiseFilterQ)
-{
-    _t808Snare* snare = *snareInst;
-    tSVF_setQ(&snare->noiseLowpass, noiseFilterQ);
-}
-
-static float tone[2];
-
-float t808Snare_tick(t808Snare* const snareInst)
-{
-    _t808Snare* snare = *snareInst;
-    
-    for (int i = 0; i < 2; i++)
-    {
-        tTriangle_setFreq(&snare->tone[i], snare->tone1Freq + (20.0f * tEnvelope_tick(&snare->toneEnvOsc[i])));
-        tone[i] = tTriangle_tick(&snare->tone[i]);
-        
-        tSVF_setFreq(&snare->toneLowpass[i], 2000.0f + (500.0f * tEnvelope_tick(&snare->toneEnvFilter[i])));
-        tone[i] = tSVF_tick(&snare->toneLowpass[i], tone[i]) * tEnvelope_tick(&snare->toneEnvGain[i]);
-    }
-    
-    float noise = tNoise_tick(&snare->noiseOsc);
-    tSVF_setFreq(&snare->noiseLowpass, snare->noiseFilterFreq + (1000.0f * tEnvelope_tick(&snare->noiseEnvFilter)));
-    noise = tSVF_tick(&snare->noiseLowpass, noise) * tEnvelope_tick(&snare->noiseEnvGain);
-    
-    float sample = (snare->toneNoiseMix)*(tone[0] * snare->toneGain[0] + tone[1] * snare->toneGain[1]) + (1.0f-snare->toneNoiseMix) * (noise * snare->noiseGain);
-    sample = tanhf(sample * 2.0f);
-    return sample;
-}
-
-// ----------------- KICK ----------------------------//
-
-void        t808Kick_init        			(t808Kick* const kickInst)
-{
-    _t808Kick* kick = *kickInst = (_t808Kick*) leaf_alloc(sizeof(_t808Kick));
-    
-	tCycle_init(&kick->tone);
-	kick->toneInitialFreq = 40.0f;
-	kick->sighAmountInHz = 7.0f;
-	kick->chirpRatioMinusOne = 3.3f;
-	tCycle_setFreq(&kick->tone, 50.0f);
-	tSVF_init(&kick->toneLowpass, SVFTypeLowpass, 2000.0f, 0.5f);
-	tEnvelope_init(&kick->toneEnvOscChirp, 0.0f, 20.0f, OFALSE);
-	tEnvelope_init(&kick->toneEnvOscSigh, 0.0f, 2500.0f, OFALSE);
-	tEnvelope_init(&kick->toneEnvGain, 0.0f, 800.0f, OFALSE);
-	tNoise_init(&kick->noiseOsc, PinkNoise);
-	tEnvelope_init(&kick->noiseEnvGain, 0.0f, 1.0f, OFALSE);
-	kick->noiseGain = 0.3f;
-}
-
-void        t808Kick_free                  (t808Kick* const kickInst)
-{
-    _t808Kick* kick = *kickInst;
-    
-	tCycle_free(&kick->tone);
-	tSVF_free(&kick->toneLowpass);
-	tEnvelope_free(&kick->toneEnvOscChirp);
-	tEnvelope_free(&kick->toneEnvOscSigh);
-	tEnvelope_free(&kick->toneEnvGain);
-	tNoise_free(&kick->noiseOsc);
-	tEnvelope_free(&kick->noiseEnvGain);
-    
-    leaf_free(kick);
-}
-
-void    t808Kick_initToPool (t808Kick* const kickInst, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _t808Kick* kick = *kickInst = (_t808Kick*) mpool_alloc(sizeof(_t808Kick), &m->pool);
-    
-    tCycle_initToPool(&kick->tone, mp);
-    kick->toneInitialFreq = 40.0f;
-    kick->sighAmountInHz = 7.0f;
-    kick->chirpRatioMinusOne = 3.3f;
-    tCycle_setFreq(&kick->tone, 50.0f);
-    tSVF_initToPool(&kick->toneLowpass, SVFTypeLowpass, 2000.0f, 0.5f, mp);
-    tEnvelope_initToPool(&kick->toneEnvOscChirp, 0.0f, 20.0f, OFALSE, mp);
-    tEnvelope_initToPool(&kick->toneEnvOscSigh, 0.0f, 2500.0f, OFALSE, mp);
-    tEnvelope_initToPool(&kick->toneEnvGain, 0.0f, 800.0f, OFALSE, mp);
-    tNoise_initToPool(&kick->noiseOsc, PinkNoise, mp);
-    tEnvelope_initToPool(&kick->noiseEnvGain, 0.0f, 1.0f, OFALSE, mp);
-    kick->noiseGain = 0.3f;
-}
-
-void    t808Kick_freeFromPool   (t808Kick* const kickInst, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _t808Kick* kick = *kickInst;
-    
-    tCycle_freeFromPool(&kick->tone, mp);
-    tSVF_freeFromPool(&kick->toneLowpass, mp);
-    tEnvelope_freeFromPool(&kick->toneEnvOscChirp, mp);
-    tEnvelope_freeFromPool(&kick->toneEnvOscSigh, mp);
-    tEnvelope_freeFromPool(&kick->toneEnvGain, mp);
-    tNoise_freeFromPool(&kick->noiseOsc, mp);
-    tEnvelope_freeFromPool(&kick->noiseEnvGain, mp);
-    
-    mpool_free(kick, &m->pool);
-}
-
-float       t808Kick_tick                  (t808Kick* const kickInst)
-{
-    _t808Kick* kick = *kickInst;
-    
-	tCycle_setFreq(&kick->tone, (kick->toneInitialFreq * (1.0f + (kick->chirpRatioMinusOne * tEnvelope_tick(&kick->toneEnvOscChirp)))) + (kick->sighAmountInHz * tEnvelope_tick(&kick->toneEnvOscSigh)));
-	float sample = tCycle_tick(&kick->tone) * tEnvelope_tick(&kick->toneEnvGain);
-	sample+= tNoise_tick(&kick->noiseOsc) * tEnvelope_tick(&kick->noiseEnvGain);
-	//add distortion here
-	sample = tSVF_tick(&kick->toneLowpass, sample);
-	return sample;
-}
-
-void        t808Kick_on                    (t808Kick* const kickInst, float vel)
-{
-    _t808Kick* kick = *kickInst;
-	tEnvelope_on(&kick->toneEnvOscChirp, vel);
-	tEnvelope_on(&kick->toneEnvOscSigh, vel);
-	tEnvelope_on(&kick->toneEnvGain, vel);
-	tEnvelope_on(&kick->noiseEnvGain, vel);
-
-}
-void        t808Kick_setToneFreq          (t808Kick* const kickInst, float freq)
-{
-    _t808Kick* kick = *kickInst;
-	kick->toneInitialFreq = freq;
-
-}
-
-void        t808Kick_setToneDecay         (t808Kick* const kickInst, float decay)
-{
-    _t808Kick* kick = *kickInst;
-	tEnvelope_setDecay(&kick->toneEnvGain,decay);
-	tEnvelope_setDecay(&kick->toneEnvGain,decay * 3.0f);
-}
-
-void        t808Kick_setNoiseDecay         (t808Kick* const kickInst, float decay);
-void        t808Kick_setSighAmount         (t808Kick* const kickInst, float sigh);
-void        t808Kick_setChirpAmount         (t808Kick* const kickInst, float chirp);
-void        t808Kick_setToneNoiseMix       (t808Kick* const kickInst, float toneNoiseMix);
-void        t808Kick_setNoiseFilterFreq    (t808Kick* const kickInst, float noiseFilterFreq);
-void        t808Kick_setNoiseFilterQ       (t808Kick* const kickInst, float noiseFilterQ);
-
-
--- a/LEAF/Src/leaf-math.c
+++ /dev/null
@@ -1,485 +1,0 @@
-/*==============================================================================
-
-    leaf-math.c
-    Created: 22 Jan 2017 7:02:56pm
-    Author:  Michael R Mulshine
-
-==============================================================================*/
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-math.h"
-#include "..\Inc\leaf-tables.h"
-
-#else
-
-#include "../Inc/leaf-math.h"
-#include "../Inc/leaf-tables.h"
-
-#endif
-
-// The C-embedded Audio Library.
-#define TWO_TO_16 65536.f
-
-#define EXPONENTIAL_TABLE_SIZE 65536
-
-float interpolate3max(float *buf, const int peakindex)
-{
-    float a = buf[peakindex-1];
-    float b = buf[peakindex];
-    float c = buf[peakindex+1];
-    float realpeak;
-    
-    realpeak = b + (float)0.125 * (c - a) * (c - a) / ((float)2. * b - a - c);
-    
-    return(realpeak);
-}
-
-float interpolate3phase(float *buf, const int peakindex)
-{
-    float a = buf[peakindex-1];
-    float b = buf[peakindex];
-    float c = buf[peakindex+1];
-    float fraction;
-    
-    fraction = ((float)0.5 * (c - a)) / ((float)2. * b - a - c);
-    
-    return(fraction);
-}
-
-// alternative implementation for abs()
-// REQUIRES: 32 bit integers
-int fastabs_int(int in){
-    unsigned int r;
-    int const mask = in >> 31;
-    
-    r = (in ^ mask) - mask;
-    
-    return (r);
-}
-
-// alternative implementation for abs()
-// REQUIRES: 32 bit floats
-float fastabsf(float f)
-{
-    union
-    {
-        float f;
-        unsigned int ui;
-    }alias;
-    
-    alias.f = f;
-    alias.ui &= 0x7fffffff;
-    return alias.f;
-}
-
-
-float fastexpf(float x) {
-  x = 1.0f + (x * 0.0009765625f);
-  x *= x; x *= x; x *= x; x *= x;
-  x *= x; x *= x; x *= x; x *= x;
-  x *= x; x *= x;
-  return x;
-}
-
-float fasterexpf(float x) {
-  x = 1.0 + (x * 0.00390625f);
-  x *= x; x *= x; x *= x; x *= x;
-  x *= x; x *= x; x *= x; x *= x;
-  return x;
-}
-
-// fast floating-point exp2 function taken from Robert Bristow Johnson's
-// post in the music-dsp list on Date: Tue, 02 Sep 2014 16:50:11 -0400
-float fastexp2f(float x)
-{
-    if (x >= -127.0)
-    {
-        register float accumulator, xPower;
-        register union {float f; int32_t i;} xBits;
-        
-        xBits.i = (int32_t)(x + 4096.0f) - 4096L;               /* integer part */
-        x -= (float)(xBits.i);                                             /* fractional part */
-        
-        accumulator = 1.0f + 0.69303212081966f*x;
-        xPower = x*x;
-        accumulator += 0.24137976293709f*xPower;
-        xPower *= x;
-        accumulator += 0.05203236900844f*xPower;
-        xPower *= x;
-        accumulator += 0.01355574723481f*xPower;
-        
-        xBits.i += 127;                                                    /* bias integer part */
-        xBits.i<<= 23;                                                     /* move biased int part into exponent bits */
-        
-        return accumulator * xBits.f;
-    }
-    else
-    {
-        return 0.0f;
-    }
-}
-
-
-/*
-you pass in a float array to get back two indexes representing the volumes of the left (index 0) and right (index 1) channels
-when t is -1, volumes[0] = 0, volumes[1] = 1
-when t = 0, volumes[0] = 0.707, volumes[1] = 0.707 (equal-power cross fade)
-when t = 1, volumes[0] = 1, volumes[1] = 0
-*/
-
-void LEAF_crossfade(float fade, float* volumes) {
-  volumes[0] = sqrtf(0.5f * (1.0f + fade));
-  volumes[1] = sqrtf(0.5f * (1.0f - fade));
-}
-
-// dope af
-float LEAF_chebyshevT(float in, int n){
-	if (n == 0) return 1;
-	else if (n == 1) return in;
-	else return 2.0f * in * LEAF_chebyshevT(in, n-1) - LEAF_chebyshevT(in, n-2);
-}
-
-#if !(_WIN32 || _WIN64)
-float LEAF_CompoundChebyshevT(float in, int n, float* amps){
-	float T[n+1];
-	T[0] = 1.0f;
-	T[1] = in;
-	for (int i = 2; i <= n; ++i)
-		T[i] = 2*in*T[i-1] - T[i-2];
-	float out = 0;
-	float amp = 0;
-	for (int i = 0; i < n; ++i){
-		out += amps[i]*T[i+1];
-		amp += amps[i];
-	}
-	return out / amp ;
-}
-#endif
-
-float LEAF_frequencyToMidi(float f)
-{
-	return (69.0f + 12.0f * log2(f * INV_440));
-}
-
-// Jones shaper
-float LEAF_shaper(float input, float m_drive) 
-{
-    float fx = input * 2.0f;    // prescale
-    float w, c, xc, xc2, xc4;
-
-    xc = LEAF_clip(-SQRT8, fx, SQRT8);
-    xc2 = xc*xc;
-    c = 0.5f*fx*(3.0f - (xc2));
-    xc4 = xc2 * xc2;
-    w = (1.0f - xc2*0.25f + xc4*0.015625f) * WSCALE;
-    float shaperOut = w*(c+ 0.05f*xc2)*(m_drive + 0.75f);
-    shaperOut *= 0.5f;    // post_scale
-    return shaperOut;
-}
-
-// round input to nearest rnd
-float LEAF_round (float input, float rnd)
-{
-    rnd = fabsf(rnd);
-    
-    if (rnd <= 0.0000001f) return input;
-    
-    float scale = 1.f / rnd;
-    
-    return roundf(input * scale) / scale;
-}
-
-union unholy_t unholy;
-
-float LEAF_bitwise_xor(float input, uint32_t op)
-{
-    unholy.f = input;
-    unholy.i = (unholy.i ^ op);
-    
-    return unholy.f;
-}
-
-float LEAF_reedTable(float input, float offset, float slope) 
-{
-    float output = offset + (slope * input);
-    if ( output > 1.0f) output = 1.0f;
-    if ( output < -1.0f) output = -1.0f;
-    return output;
-}
-
-float   LEAF_softClip(float val, float thresh) 
-{
-	float x;
-	
-	if(val > thresh)
-	{
-			x = thresh / val;
-			return (1.0f - x) * (1.0f - thresh) + thresh;
-	}
-	else if(val < -thresh)
-	{
-			x = -thresh / val;
-			return -((1.0f - x) * (1.0f - thresh) + thresh);
-	}
-	else
-	{
-		return val;
-	}
-}
-
-float   LEAF_clip(float min, float val, float max) 
-	{
-    
-    if (val < min) {
-        return min;
-    } else if (val > max) {
-        return max;
-    } else {
-        return val;
-    }
-}
-
-int   LEAF_clipInt(int min, int val, int max)
-{
-    if (val < min) {
-        return min;
-    } else if (val > max) {
-        return max;
-    } else {
-        return val;
-    }
-}
-
-oBool     LEAF_isPrime(uint64_t number )
-{
-    if ( number == 2 ) return OTRUE;
-    if ( number & 1 ) {
-        for ( int i=3; i<(int)sqrt((double)number)+1; i+=2 )
-            if ( (number % i) == 0 ) return OFALSE;
-        return OTRUE; // prime
-    }
-    else return OFALSE; // even
-}
-
-// Adapted from MusicDSP: http://www.musicdsp.org/showone.php?id=238
-float LEAF_tanh(float x)
-{
-    
-    if( x < -3.0f )
-        return -1.0f;
-    else if( x > 3.0f )
-        return 1.0f;
-    else
-        return x * ( 27.0f + x * x ) / ( 27.0f + 9.0f * x * x );
-}
-
-
-void LEAF_generate_sine(float* buffer, int size)
-{
-    float phase;
-    for (int i = 0; i < size; i++)
-    {
-        phase = (float) i / (float) size;
-        buffer[i] = sinf(phase * TWO_PI);
-    }
-}
-
-void LEAF_generate_sawtooth(float* buffer, float basefreq, int size)
-{
-    int harmonic = 1;
-    float phase = 0.0f;
-    float freq = harmonic * basefreq;
-    float amp;
-    
-    while (freq < (leaf.sampleRate * 0.5))
-    {
-        amp = 1.0f / harmonic;
-        for (int i = 0; i < size; i++)
-        {
-            phase = (float) i / (float) size;
-            buffer[i] += (amp * sinf(harmonic * phase * TWO_PI));
-        }
-        
-        harmonic++;
-        freq = harmonic * basefreq;
-    }
-}
-
-
-void LEAF_generate_triangle(float* buffer, float basefreq, int size)
-{
-    int harmonic = 1;
-    float phase = 0.0f;
-    float freq = harmonic * basefreq;
-    float amp = 1.0f;
-    
-    int count = 0;
-    float mult = 1.0f;
-    
-    while (freq < (leaf.sampleRate * 0.5))
-    {
-        amp = 1.0f / (float)(harmonic * harmonic);
-        
-        if (count % 2)  mult = -1.0f;
-        else            mult =  1.0f;
-        
-        for (int i = 0; i < size; i++)
-        {
-            phase = (float) i / (float) size;
-            buffer[i] += (mult * amp * sinf(harmonic * phase * TWO_PI));
-        }
-        
-        count++;
-        harmonic += 2;
-        freq = harmonic * basefreq;
-    }
-}
-
-void LEAF_generate_square(float* buffer, float basefreq, int size)
-{
-    int harmonic = 1;
-    float phase = 0.0f;
-    float freq = harmonic * basefreq;
-    float amp = 1.0f;
-    
-    while (freq < (leaf.sampleRate * 0.5))
-    {
-        amp = 1.0f / (float)(harmonic);
-        
-        for (int i = 0; i < size; i++)
-        {
-            phase = (float) i / (float) size;
-            buffer[i] += (amp * sinf(harmonic * phase * TWO_PI));
-        }
-        
-        harmonic += 2;
-        freq = harmonic * basefreq;
-    }
-}
-
-
-//-----------------------------------------------------------------------------
-// name: mtof()
-// desc: midi to freq, from PD source
-//-----------------------------------------------------------------------------
-float LEAF_midiToFrequency(float f)
-{
-    if( f <= -1500.0f ) return (0);
-    else if( f > 1499.0f ) return (LEAF_midiToFrequency(1499.0f));
-    else return ( powf(2.0f, (f - 69.0f) * 0.083333333333333f) * 440.0f );
-}
-
-
-// alpha, [0.0, 1.0]
-float LEAF_interpolate_hermite (float A, float B, float C, float D, float alpha)
-{
-    alpha = LEAF_clip(0.0f, alpha, 1.0f);
-
-    float a = -A*0.5f + (3.0f*B)*0.5f - (3.0f*C)*0.5f + D*0.5f;
-    float b = A - (5.0f*B)*0.5f + 2.0f*C - D * 0.5f;
-    float c = -A*0.5f + C*0.5f;
-    float d = B;
-
-    return a*alpha*alpha*alpha + b*alpha*alpha + c*alpha + d;
-}
-
-
-// from http://www.musicdsp.org/archive.php?classid=5#93
-//xx is alpha (fractional part of sample value)
-//grabbed this from Tom Erbe's Delay pd code
-float LEAF_interpolate_hermite_x(float yy0, float yy1, float yy2, float yy3, float xx)
-{
-        // 4-point, 3rd-order Hermite (x-form)
-        float c0 = yy1;
-        float c1 = 0.5f * (yy2 - yy0);
-        float y0my1 = yy0 - yy1;
-        float c3 = (yy1 - yy2) + 0.5f * (yy3 - y0my1 - yy2);
-        float c2 = y0my1 + c1 - c3;
-
-        return ((c3 * xx + c2) * xx + c1) * xx + c0;
-}
-
-// alpha, [0.0, 1.0]
-float LEAF_interpolation_linear (float A, float B, float alpha)
-{
-    alpha = LEAF_clip(0.0f, alpha, 1.0f);
-
-    float omAlpha = 1.0f - alpha;
-
-    // First 1/2 of interpolation
-    float out = A * omAlpha;
-
-    out += B * alpha;
-
-    return out;
-}
-
-#define LOGTEN 2.302585092994
-
-float mtof(float f)
-{
-    if (f <= -1500.0f) return(0);
-    else if (f > 1499.0f) return(mtof(1499.0f));
-    else return (8.17579891564f * expf(0.0577622650f * f));
-}
-
-float fast_mtof(float f)
-{
-    return (8.17579891564f * fastexpf(0.0577622650f * f));
-}
-
-float faster_mtof(float f)
-{
-    return (8.17579891564f * fastexpf(0.0577622650f * f));
-}
-
-float ftom(float f)
-{
-    return (f > 0 ? 17.3123405046f * logf(.12231220585f * f) : -1500.0f);
-}
-
-float powtodb(float f)
-{
-    if (f <= 0) return (0);
-    else
-    {
-        float val = 100 + 10.f/LOGTEN * logf(f);
-        return (val < 0 ? 0 : val);
-    }
-}
-
-float rmstodb(float f)
-{
-    if (f <= 0) return (0);
-    else
-    {
-        float val = 100 + 20.f/LOGTEN * log(f);
-        return (val < 0 ? 0 : val);
-    }
-}
-
-float dbtopow(float f)
-{
-    if (f <= 0)
-        return(0);
-    else
-    {
-        if (f > 870.0f)
-            f = 870.0f;
-        return (expf((LOGTEN * 0.1f) * (f-100.0f)));
-    }
-}
-
-float dbtorms(float f)
-{
-    if (f <= 0)
-        return(0);
-    else
-    {
-        if (f > 485.0f)
-            f = 485.0f;
-    }
-    return (expf((LOGTEN * 0.05f) * (f-100.0f)));
-}
-
--- a/LEAF/Src/leaf-mempool.c
+++ /dev/null
@@ -1,397 +1,0 @@
-
-/** mpool source significantly modified by Mike Mulshine, Jeff Snyder, et al., Princeton University Music Department **/
-
-/**
- In short, mpool is distributed under so called "BSD license",
- 
- Copyright (c) 2009-2010 Tatsuhiko Kubo <cubicdaiya@gmail.com>
- All rights reserved.
- 
- Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
- 
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- 
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- 
- * Neither the name of the authors nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
- 
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* written with C99 style */
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-mempool.h"
-#include "..\leaf.h"
-
-#else
-
-#include "../Inc/leaf-mempool.h"
-#include "../leaf.h"
-
-#endif
-
-_tMempool leaf_pool;
-tMempool leaf_mempool;
-size_t header_size;
-
-
-/**
- * private function
- */
-static inline size_t mpool_align(size_t size);
-static inline mpool_node_t* create_node(void* block_location, mpool_node_t* next, mpool_node_t* prev, size_t size);
-static inline void delink_node(mpool_node_t* node);
-
-/**
- * create memory pool
- */
-void mpool_create (char* memory, size_t size, mpool_t* pool)
-{
-    header_size = mpool_align(sizeof(mpool_node_t));
-    
-    pool->mpool = (void*)memory;
-    pool->usize  = 0;
-    pool->msize  = size;
-    
-    pool->head = create_node(pool->mpool, NULL, NULL, pool->msize-header_size);
-    
-    for (int i = 0; i < pool->head->size; i++)
-    {
-        memory[i+header_size]=0;
-    }
-}
-
-void leaf_pool_init(char* memory, size_t size)
-{
-    mpool_create(memory, size, &leaf_pool.pool);
-    
-    leaf_mempool = &leaf_pool;
-}
-
-/**
- * allocate memory from memory pool
- */
-void* mpool_alloc(size_t asize, mpool_t* pool)
-{
-    // If the head is NULL, the mempool is full
-    if (pool->head == NULL) return NULL;
-    
-    // Should we alloc the first block large enough or check all blocks and pick the one closest in size?
-    size_t size_to_alloc = mpool_align(asize);
-    mpool_node_t* node_to_alloc = pool->head;
-    
-    // Traverse the free list for a large enough block
-    while (node_to_alloc->size < size_to_alloc)
-    {
-        node_to_alloc = node_to_alloc->next;
-        
-        // If we reach the end of the free list, there
-        // are no blocks large enough, return NULL
-        if (node_to_alloc == NULL) return NULL;
-    }
-    
-    // Create a new node after the node to be allocated if there is enough space
-    mpool_node_t* new_node;
-    size_t leftover = node_to_alloc->size - size_to_alloc;
-    node_to_alloc->size = size_to_alloc;
-    if (leftover > header_size)
-    {
-        long offset = (char*) node_to_alloc - (char*) pool->mpool;
-        offset += header_size + node_to_alloc->size;
-        new_node = create_node(&pool->mpool[offset],
-                               node_to_alloc->next,
-                               node_to_alloc->prev,
-                               leftover - header_size);
-    }
-    else
-    {
-        // Add any leftover space to the allocated node to avoid fragmentation
-        node_to_alloc->size += leftover;
-        
-        new_node = node_to_alloc->next;
-    }
-    
-    // Update the head if we are allocating the first node of the free list
-    // The head will be NULL if there is no space left
-    if (pool->head == node_to_alloc)
-    {
-        pool->head = new_node;
-    }
-    
-    // Remove the allocated node from the free list
-    delink_node(node_to_alloc);
-    
-    pool->usize += header_size + node_to_alloc->size;
-    
-    if (leaf.clearOnAllocation > 0)
-    {
-        char* new_pool = (char*)node_to_alloc->pool;
-        for (int i = 0; i < node_to_alloc->size; i++) new_pool[i] = 0;
-    }
-    
-    // Return the pool of the allocated node;
-    return node_to_alloc->pool;
-}
-
-
-/**
- * allocate memory from memory pool and also clear that memory to be blank
- */
-void* mpool_calloc(size_t asize, mpool_t* pool)
-{
-    // If the head is NULL, the mempool is full
-    if (pool->head == NULL) return NULL;
-    
-    // Should we alloc the first block large enough or check all blocks and pick the one closest in size?
-    size_t size_to_alloc = mpool_align(asize);
-    mpool_node_t* node_to_alloc = pool->head;
-    
-    // Traverse the free list for a large enough block
-    while (node_to_alloc->size < size_to_alloc)
-    {
-        node_to_alloc = node_to_alloc->next;
-        
-        // If we reach the end of the free list, there
-        // are no blocks large enough, return NULL
-        if (node_to_alloc == NULL) return NULL;
-    }
-    
-    // Create a new node after the node to be allocated if there is enough space
-    mpool_node_t* new_node;
-    size_t leftover = node_to_alloc->size - size_to_alloc;
-    node_to_alloc->size = size_to_alloc;
-    if (leftover > header_size)
-    {
-        long offset = (char*) node_to_alloc - (char*) pool->mpool;
-        offset += header_size + node_to_alloc->size;
-        new_node = create_node(&pool->mpool[offset],
-                               node_to_alloc->next,
-                               node_to_alloc->prev,
-                               leftover - header_size);
-    }
-    else
-    {
-        // Add any leftover space to the allocated node to avoid fragmentation
-        node_to_alloc->size += leftover;
-        
-        new_node = node_to_alloc->next;
-    }
-    
-    // Update the head if we are allocating the first node of the free list
-    // The head will be NULL if there is no space left
-    if (pool->head == node_to_alloc)
-    {
-        pool->head = new_node;
-    }
-    
-    // Remove the allocated node from the free list
-    delink_node(node_to_alloc);
-    
-    pool->usize += header_size + node_to_alloc->size;
-    // Format the new pool
-    char* new_pool = (char*)node_to_alloc->pool;
-    for (int i = 0; i < node_to_alloc->size; i++) new_pool[i] = 0;
-    // Return the pool of the allocated node;
-    return node_to_alloc->pool;
-}
-
-void* leaf_alloc(size_t size)
-{
-    //printf("alloc %i\n", size);
-    void* block = mpool_alloc(size, &leaf_pool.pool);
-    
-    if (block == NULL) leaf_mempool_overrun();
-    
-    return block;
-}
-
-void* leaf_calloc(size_t size)
-{
-    //printf("alloc %i\n", size);
-    void* block = mpool_calloc(size, &leaf_pool.pool);
-    
-    if (block == NULL) leaf_mempool_overrun();
-    
-    
-    return block;
-}
-
-void mpool_free(void* ptr, mpool_t* pool)
-{
-    //if (ptr < pool->mpool || ptr >= pool->mpool + pool->msize)
-    // Get the node at the freed space
-    mpool_node_t* freed_node = (mpool_node_t*) (ptr - header_size);
-    
-    pool->usize -= header_size + freed_node->size;
-    
-    // Check each node in the list against the newly freed one to see if it's adjacent in memory
-    mpool_node_t* other_node = pool->head;
-    mpool_node_t* next_node;
-    while (other_node != NULL)
-    {
-        next_node = other_node->next;
-        // Check if a node is directly after the freed node
-        if ((long) freed_node + (header_size + freed_node->size) == (long) other_node)
-        {
-            // Increase freed node's size
-            freed_node->size += header_size + other_node->size;
-            // If we are merging with the head, move the head forward
-            if (other_node == pool->head) pool->head = pool->head->next;
-            // Delink the merged node
-            delink_node(other_node);
-        }
-        
-        // Check if a node is directly before the freed node
-        else if ((long) other_node + (header_size + other_node->size) == (long) freed_node)
-        {
-            // Increase the merging node's size
-            other_node->size += header_size + freed_node->size;
-            
-            if (other_node != pool->head)
-            {
-                // Delink the merging node
-                delink_node(other_node);
-                // Attach the merging node to the head
-                other_node->next = pool->head;
-                // Merge
-                freed_node = other_node;
-            }
-            else
-            {
-                // If we are merging with the head, move the head forward
-                pool->head = pool->head->next;
-                // Merge
-                freed_node = other_node;
-            }
-        }
-        
-        other_node = next_node;
-    }
-    
-    // Ensure the freed node is attached to the head
-    freed_node->next = pool->head;
-    if (pool->head != NULL) pool->head->prev = freed_node;
-    pool->head = freed_node;
-    
-    // Format the freed pool
-    //    char* freed_pool = (char*)freed_node->pool;
-    //    for (int i = 0; i < freed_node->size; i++) freed_pool[i] = 0;
-}
-
-void leaf_free(void* ptr)
-{
-    mpool_free(ptr, &leaf_pool.pool);
-}
-
-size_t mpool_get_size(mpool_t* pool)
-{
-    return pool->msize;
-}
-
-size_t mpool_get_used(mpool_t* pool)
-{
-    return pool->usize;
-}
-
-size_t leaf_pool_get_size(void)
-{
-    return mpool_get_size(&leaf_pool.pool);
-}
-
-size_t leaf_pool_get_used(void)
-{
-    return mpool_get_used(&leaf_pool.pool);
-}
-
-void* leaf_pool_get_pool(void)
-{
-    float* buff = (float*)leaf_pool.pool.mpool;
-    
-    return buff;
-}
-
-/**
- * align byte boundary
- */
-static inline size_t mpool_align(size_t size) {
-    return (size + (MPOOL_ALIGN_SIZE - 1)) & ~(MPOOL_ALIGN_SIZE - 1);
-}
-
-static inline mpool_node_t* create_node(void* block_location, mpool_node_t* next, mpool_node_t* prev, size_t size)
-{
-    mpool_node_t* node = (mpool_node_t*)block_location;
-    node->pool = block_location + header_size;
-    node->next = next;
-    node->prev = prev;
-    node->size = size;
-    
-    return node;
-}
-
-static inline void delink_node(mpool_node_t* node)
-{
-    // If there is a node after the node to remove
-    if (node->next != NULL)
-    {
-        // Close the link
-        node->next->prev = node->prev;
-    }
-    // If there is a node before the node to remove
-    if (node->prev != NULL)
-    {
-        // Close the link
-        node->prev->next = node->next;
-    }
-    
-    node->next = NULL;
-    node->prev = NULL;
-}
-
-void leaf_mempool_overrun(void)
-{
-    //TODO: we should set up some kind of leaf_error method that reaches user space to notify library users of things that failed.
-}
-
-void tMempool_init(tMempool* const mp, char* memory, size_t size)
-{
-    tMempool_initToPool(mp, memory, size, &leaf_mempool);
-}
-
-void tMempool_free(tMempool* const mp)
-{
-    tMempool_freeFromPool(mp, &leaf_mempool);
-}
-
-void    tMempool_initToPool     (tMempool* const mp, char* memory, size_t size, tMempool* const mem)
-{
-    _tMempool* mm = *mem;
-    _tMempool* m = *mp = (_tMempool*) mpool_alloc(sizeof(_tMempool), &mm->pool);
-    
-    mpool_create (memory, size, &m->pool);
-}
-
-void    tMempool_freeFromPool   (tMempool* const mp, tMempool* const mem)
-{
-    _tMempool* mm = *mem;
-    _tMempool* m = *mp;
-    
-    mpool_free(m, &mm->pool);
-}
--- a/LEAF/Src/leaf-midi.c
+++ /dev/null
@@ -1,681 +1,0 @@
-/*==============================================================================
-
-    leaf-midi.c
-    Created: 30 Nov 2018 11:29:16am
-    Author:  airship
-
-==============================================================================*/
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-midi.h"
-
-#else
-
-#include "../Inc/leaf-midi.h"
-
-#endif
-
-//====================================================================================
-/* Stack */
-//====================================================================================
-
-void tStack_init(tStack* const stack)
-{
-    _tStack* ns = *stack = (_tStack*) leaf_alloc(sizeof(_tStack));
-    
-    ns->ordered = OFALSE;
-    ns->size = 0;
-    ns->pos = 0;
-    ns->capacity = STACK_SIZE;
-    
-    for (int i = 0; i < STACK_SIZE; i++) ns->data[i] = -1;
-}
-
-void tStack_free(tStack* const stack)
-{
-    _tStack* ns = *stack;
-    
-    leaf_free(ns);
-}
-
-void    tStack_initToPool           (tStack* const stack, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tStack* ns = *stack = (_tStack*) mpool_alloc(sizeof(_tStack), &m->pool);
-    
-    ns->ordered = OFALSE;
-    ns->size = 0;
-    ns->pos = 0;
-    ns->capacity = STACK_SIZE;
-    
-    for (int i = 0; i < STACK_SIZE; i++) ns->data[i] = -1;
-}
-
-void    tStack_freeFromPool         (tStack* const stack, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tStack* ns = *stack;
-    
-    mpool_free(ns, &m->pool);
-}
-
-// If stack contains note, returns index. Else returns -1;
-int tStack_contains(tStack* const stack, uint16_t noteVal)
-{
-    _tStack* ns = *stack;
-    for (int i = 0; i < ns->size; i++)
-    {
-        if (ns->data[i] == noteVal)    return i;
-    }
-    return -1;
-}
-
-void tStack_add(tStack* const stack, uint16_t noteVal)
-{
-    _tStack* ns = *stack;
-    
-    uint8_t j;
-    
-    int whereToInsert = 0;
-    if (ns->ordered)
-    {
-        for (j = 0; j < ns->size; j++)
-        {
-            if (noteVal > ns->data[j])
-            {
-                if ((noteVal < ns->data[j+1]) || (ns->data[j+1] == -1))
-                {
-                    whereToInsert = j+1;
-                    break;
-                }
-            }
-        }
-    }
-    
-    //first move notes that are already in the stack one position to the right
-    for (j = ns->size; j > whereToInsert; j--)
-    {
-        ns->data[j] = ns->data[(j - 1)];
-    }
-    
-    //then, insert the new note into the front of the stack
-    ns->data[whereToInsert] = noteVal;
-    
-    ns->size++;
-}
-
-int tStack_addIfNotAlreadyThere(tStack* const stack, uint16_t noteVal)
-{
-    _tStack* ns = *stack;
-    
-    uint8_t j;
-    
-    int added = 0;
-    
-    if (tStack_contains(stack, noteVal) == -1)
-    {
-        int whereToInsert = 0;
-        if (ns->ordered)
-        {
-            for (j = 0; j < ns->size; j++)
-            {
-                if (noteVal > ns->data[j])
-                {
-                    if ((noteVal < ns->data[j+1]) || (ns->data[j+1] == -1))
-                    {
-                        whereToInsert = j+1;
-                        break;
-                    }
-                }
-            }
-        }
-        
-        //first move notes that are already in the stack one position to the right
-        for (j = ns->size; j > whereToInsert; j--)
-        {
-            ns->data[j] = ns->data[(j - 1)];
-        }
-        
-        //then, insert the new note into the front of the stack
-        ns->data[whereToInsert] = noteVal;
-        
-        ns->size++;
-        
-        added = 1;
-    }
-    
-    return added;
-}
-
-// Remove noteVal. return 1 if removed, 0 if not
-int tStack_remove(tStack* const stack, uint16_t noteVal)
-{
-    _tStack* ns = *stack;
-    
-    uint8_t k;
-    int foundIndex = tStack_contains(stack, noteVal);
-    int removed = 0;
-    
-    if (foundIndex >= 0)
-    {
-        for (k = 0; k < (ns->size - foundIndex); k++)
-        {
-            if ((k+foundIndex) >= (ns->capacity - 1))
-            {
-                ns->data[k + foundIndex] = -1;
-            }
-            else
-            {
-                ns->data[k + foundIndex] = ns->data[k + foundIndex + 1];
-                if ((k + foundIndex) == (ns->size - 1))
-                {
-                    ns->data[k + foundIndex + 1] = -1;
-                }
-            }
-            
-        }
-        // in case it got put on the stack multiple times
-        foundIndex--;
-        ns->size--;
-        removed = 1;
-    }
-    
-    return removed;
-}
-
-// Doesn't change size of data types
-void tStack_setCapacity(tStack* const stack, uint16_t cap)
-{
-    _tStack* ns = *stack;
-    
-    if (cap <= 0)
-        ns->capacity = 1;
-    else if (cap <= STACK_SIZE)
-        ns->capacity = cap;
-    else
-        ns->capacity = STACK_SIZE;
-    
-    for (int i = cap; i < STACK_SIZE; i++)
-    {
-        if ((int)ns->data[i] != -1)
-        {
-            ns->data[i] = -1;
-            ns->size -= 1;
-        }
-    }
-    
-    if (ns->pos >= cap)
-    {
-        ns->pos = 0;
-    }
-}
-
-int tStack_getSize(tStack* const stack)
-{
-    _tStack* ns = *stack;
-    
-    return ns->size;
-}
-
-void tStack_clear(tStack* const stack)
-{
-    _tStack* ns = *stack;
-    
-    for (int i = 0; i < STACK_SIZE; i++)
-    {
-        ns->data[i] = -1;
-    }
-    ns->pos = 0;
-    ns->size = 0;
-}
-
-// Next item in order of addition to stack. Return 0-31 if there is a next item to move to. Returns -1 otherwise.
-int tStack_next(tStack* const stack)
-{
-    _tStack* ns = *stack;
-    
-    int step = 0;
-    if (ns->size != 0) // if there is at least one note in the stack
-    {
-        if (ns->pos > 0) // if you're not at the most recent note (first one), then go backward in the array (moving from earliest to latest)
-        {
-            ns->pos--;
-        }
-        else
-        {
-            ns->pos = (ns->size - 1); // if you are the most recent note, go back to the earliest note in the array
-        }
-        
-        step = ns->data[ns->pos];
-        return step;
-    }
-    else
-    {
-        return -1;
-    }
-}
-
-int tStack_get(tStack* const stack, int which)
-{
-    _tStack* ns = *stack;
-    return ns->data[which];
-}
-
-int tStack_first(tStack* const stack)
-{
-    _tStack* ns = *stack;
-    return ns->data[0];
-}
-
-
-// POLY
-void tPoly_init(tPoly* const polyh, int maxNumVoices)
-{
-    _tPoly* poly = *polyh = (_tPoly*) leaf_alloc(sizeof(_tPoly));
-    
-    poly->numVoices = maxNumVoices;
-    poly->maxNumVoices = maxNumVoices;
-    poly->lastVoiceToChange = 0;
-    
-    // Arp mode stuff
-    poly->currentVoice = 0;
-    poly->maxLength = 128;
-    poly->currentNote = -1;
-    
-    //default learned CCs and notes are just the CCs 1-128 - notes are skipped
-    for (int i = 0; i < 128; i++)
-    {
-        poly->notes[i][0] = 0;
-        poly->notes[i][1] = -1;
-    }
-    
-    poly->glideTime = 5.0f;
-    
-    poly->ramps = (tRamp*) leaf_alloc(sizeof(tRamp) * poly->maxNumVoices);
-    poly->rampVals = (float*) leaf_alloc(sizeof(float) * poly->maxNumVoices);
-    poly->firstReceived = (oBool*) leaf_alloc(sizeof(oBool) * poly->maxNumVoices);
-    poly->voices = (int**) leaf_alloc(sizeof(int*) * poly->maxNumVoices);
-    
-    for (int i = 0; i < poly->maxNumVoices; ++i)
-    {
-        poly->voices[i] = (int*) leaf_alloc(sizeof(int) * 2);
-        poly->voices[i][0] = -1;
-        poly->firstReceived[i] = OFALSE;
-        
-        tRamp_init(&poly->ramps[i], poly->glideTime, 1);
-    }
-    
-    poly->pitchBend = 0.0f;
-    
-    tRamp_init(&poly->pitchBendRamp, 1.0f, 1);
-    tStack_init(&poly->stack);
-    tStack_init(&poly->orderStack);
-    
-    poly->pitchGlideIsActive = OFALSE;
-}
-
-void tPoly_free(tPoly* const polyh)
-{
-    _tPoly* poly = *polyh;
-    
-    for (int i = 0; i < poly->maxNumVoices; i++)
-    {
-        tRamp_free(&poly->ramps[i]);
-        leaf_free(poly->voices[i]);
-    }
-    tRamp_free(&poly->pitchBendRamp);
-    tStack_free(&poly->stack);
-    tStack_free(&poly->orderStack);
-    
-    leaf_free(poly->voices);
-    leaf_free(poly->ramps);
-    leaf_free(poly->rampVals);
-    leaf_free(poly->firstReceived);
-    
-    leaf_free(poly);
-}
-
-void    tPoly_initToPool            (tPoly* const polyh, int maxNumVoices, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPoly* poly = *polyh = (_tPoly*) mpool_alloc(sizeof(_tPoly), &m->pool);
-    
-    poly->numVoices = maxNumVoices;
-    poly->maxNumVoices = maxNumVoices;
-    poly->lastVoiceToChange = 0;
-    
-    // Arp mode stuff
-    poly->currentVoice = 0;
-    poly->maxLength = 128;
-    poly->currentNote = -1;
-    
-    //default learned CCs and notes are just the CCs 1-128 - notes are skipped
-    for (int i = 0; i < 128; i++)
-    {
-        poly->notes[i][0] = 0;
-        poly->notes[i][1] = -1;
-    }
-    
-    poly->glideTime = 5.0f;
-    
-    poly->ramps = (tRamp*) mpool_alloc(sizeof(tRamp) * poly->maxNumVoices, &m->pool);
-    poly->rampVals = (float*) mpool_alloc(sizeof(float) * poly->maxNumVoices, &m->pool);
-    poly->firstReceived = (oBool*) mpool_alloc(sizeof(oBool) * poly->maxNumVoices, &m->pool);
-    poly->voices = (int**) mpool_alloc(sizeof(int*) * poly->maxNumVoices, &m->pool);
-    
-    for (int i = 0; i < poly->maxNumVoices; ++i)
-    {
-        poly->voices[i] = (int*) mpool_alloc(sizeof(int) * 2, &m->pool);
-        poly->voices[i][0] = -1;
-        poly->firstReceived[i] = OFALSE;
-        
-        tRamp_initToPool(&poly->ramps[i], poly->glideTime, 1, mp);
-    }
-    
-    poly->pitchBend = 0.0f;
-    
-    tRamp_initToPool(&poly->pitchBendRamp, 1.0f, 1, mp);
-    tStack_initToPool(&poly->stack, mp);
-    tStack_initToPool(&poly->orderStack, mp);
-    
-    poly->pitchGlideIsActive = OFALSE;
-}
-
-void    tPoly_freeFromPool  (tPoly* const polyh, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPoly* poly = *polyh;
-    
-    for (int i = 0; i < poly->maxNumVoices; i++)
-    {
-        tRamp_freeFromPool(&poly->ramps[i], mp);
-        mpool_free(poly->voices[i], &m->pool);
-    }
-    tRamp_freeFromPool(&poly->pitchBendRamp, mp);
-    tStack_freeFromPool(&poly->stack, mp);
-    tStack_freeFromPool(&poly->orderStack, mp);
-    
-    mpool_free(poly->voices, &m->pool);
-    mpool_free(poly->ramps, &m->pool);
-    mpool_free(poly->rampVals, &m->pool);
-    mpool_free(poly->firstReceived, &m->pool);
-    
-    mpool_free(poly, &m->pool);
-}
-
-void tPoly_tickPitch(tPoly* polyh)
-{
-    tPoly_tickPitchGlide(polyh);
-    tPoly_tickPitchBend(polyh);
-}
-
-void tPoly_tickPitchGlide(tPoly* polyh)
-{
-    _tPoly* poly = *polyh;
-    for (int i = 0; i < poly->maxNumVoices; ++i)
-    {
-        tRamp_tick(&poly->ramps[i]);
-    }
-}
-
-void tPoly_tickPitchBend(tPoly* polyh)
-{
-    _tPoly* poly = *polyh;
-    tRamp_tick(&poly->pitchBendRamp);
-}
-
-void tPoly_setPitchBend(tPoly* const polyh, float pitchBend)
-{
-    _tPoly* poly = *polyh;
-    poly->pitchBend = pitchBend;
-    tRamp_setDest(&poly->pitchBendRamp, poly->pitchBend);
-}
-
-int tPoly_noteOn(tPoly* const polyh, int note, uint8_t vel)
-{
-    _tPoly* poly = *polyh;
-    
-    // if not in keymap or already on stack, dont do anything. else, add that note.
-    if (tStack_contains(&poly->stack, note) >= 0) return -1;
-    else
-    {
-        tPoly_orderedAddToStack(polyh, note);
-        tStack_add(&poly->stack, note);
-        
-        int alteredVoice = -1;
-        oBool found = OFALSE;
-        for (int i = 0; i < poly->numVoices; i++)
-        {
-            if (poly->voices[i][0] < 0)    // if inactive voice, give this note to voice
-            {
-                if (!poly->firstReceived[i] || !poly->pitchGlideIsActive)
-                {
-                    tRamp_setVal(&poly->ramps[i], note);
-                    poly->firstReceived[i] = OTRUE;
-                }
-                
-                found = OTRUE;
-                
-                poly->voices[i][0] = note;
-                poly->voices[i][1] = vel;
-                poly->lastVoiceToChange = i;
-                poly->notes[note][0] = vel;
-                poly->notes[note][1] = i;
-                
-                tRamp_setDest(&poly->ramps[i], poly->voices[i][0]);
-                
-                alteredVoice = i;
-                break;
-            }
-        }
-        
-        if (!found) //steal
-        {
-            int whichVoice, whichNote;
-            for (int j = tStack_getSize(&poly->stack) - 1; j >= 0; j--)
-            {
-                whichNote = tStack_get(&poly->stack, j);
-                whichVoice = poly->notes[whichNote][1];
-                if (whichVoice >= 0)
-                {
-                    poly->lastVoiceToChange = whichVoice;
-                    int oldNote = poly->voices[whichVoice][0];
-                    poly->voices[whichVoice][0] = note;
-                    poly->voices[whichVoice][1] = vel;
-                    poly->notes[oldNote][1] = -1; //mark the stolen voice as inactive (in the second dimension of the notes array)
-                    poly->notes[note][0] = vel;
-                    poly->notes[note][1] = whichVoice;
-                    
-                    if (poly->pitchGlideIsActive)
-                    {
-                    	tRamp_setTime(&poly->ramps[whichVoice], poly->glideTime);
-                    }
-                    else
-                    {
-                    	tRamp_setVal(&poly->ramps[whichVoice], note);
-                    }
-                    tRamp_setDest(&poly->ramps[whichVoice], poly->voices[whichVoice][0]);
-                    
-                    alteredVoice = whichVoice;
-                    
-                    break;
-                }
-            }
-        }
-        return alteredVoice;
-    }
-}
-
-
-int16_t noteToTest = -1;
-
-int tPoly_noteOff(tPoly* const polyh, uint8_t note)
-{
-    _tPoly* poly = *polyh;
-    
-    tStack_remove(&poly->stack, note);
-    tStack_remove(&poly->orderStack, note);
-    poly->notes[note][0] = 0;
-    poly->notes[note][1] = -1;
-    
-    int deactivatedVoice = -1;
-    for (int i = 0; i < poly->maxNumVoices; i++)
-    {
-        if (poly->voices[i][0] == note)
-        {
-            poly->voices[i][0] = -1;
-            poly->voices[i][1] = 0;
-            poly->lastVoiceToChange = i;
-            deactivatedVoice = i;
-            break;
-        }
-    }
-    /*
-     //monophonic handling
-     if ((poly->numVoices == 1) && (tStack_getSize(poly->stack) > 0))
-     {
-     int oldNote = tStack_first(poly->stack);
-     poly->voices[0][0] = oldNote;
-     poly->voices[0][1] = poly->notes[oldNote][0];
-     poly->lastVoiceToChange = 0;
-     }
-     */
-    
-    //grab old notes off the stack if there are notes waiting to replace the free voice
-    if (deactivatedVoice >= 0)
-    {
-        for (int j = 0; j < tStack_getSize(&poly->stack); ++j)
-        {
-            noteToTest = tStack_get(&poly->stack, j);
-            
-            if (poly->notes[noteToTest][1] < 0) //if there is a stolen note waiting (marked inactive but on the stack)
-            {
-                poly->voices[deactivatedVoice][0] = noteToTest; //set the newly free voice to use the old stolen note
-                if (poly->pitchGlideIsActive)
-                {
-                	tRamp_setTime(&poly->ramps[deactivatedVoice], poly->glideTime);
-                }
-                else
-                {
-                	tRamp_setVal(&poly->ramps[deactivatedVoice], noteToTest);
-                }
-                tRamp_setDest(&poly->ramps[deactivatedVoice], poly->voices[deactivatedVoice][0]);
-                poly->voices[deactivatedVoice][1] = poly->notes[noteToTest][0]; // set the velocity of the voice to be the velocity of that note
-                poly->notes[noteToTest][1] = deactivatedVoice; //mark that it is no longer stolen and is now active
-                return -1;
-            }
-        }
-    }
-    return deactivatedVoice;
-}
-
-void tPoly_orderedAddToStack(tPoly* const polyh, uint8_t noteVal)
-{
-    _tPoly* poly = *polyh;
-    
-    uint8_t j;
-    int myPitch, thisPitch, nextPitch;
-    
-    tStack ns = poly->orderStack;
-    
-    int whereToInsert = 0;
-    
-    for (j = 0; j < ns->size; j++)
-    {
-        myPitch = noteVal;
-        thisPitch = ns->data[j];
-        nextPitch = ns->data[j+1];
-        
-        if (myPitch > thisPitch)
-        {
-            if ((myPitch < nextPitch) || (nextPitch == -1))
-            {
-                whereToInsert = j+1;
-                break;
-            }
-        }
-    }
-    
-    //first move notes that are already in the stack one position to the right
-    for (j = ns->size; j > whereToInsert; j--)
-    {
-        ns->data[j] = ns->data[(j - 1)];
-    }
-    
-    //then, insert the new note into the front of the stack
-    ns->data[whereToInsert] =  noteVal;
-    
-    ns->size++;
-    
-}
-
-void tPoly_setNumVoices(tPoly* const polyh, uint8_t numVoices)
-{
-    _tPoly* poly = *polyh;
-    poly->numVoices = (numVoices > poly->maxNumVoices) ? poly->maxNumVoices : numVoices;
-}
-
-void tPoly_setPitchGlideActive(tPoly* const polyh, oBool isActive)
-{
-    _tPoly* poly = *polyh;
-    poly->pitchGlideIsActive = isActive;
-}
-
-void tPoly_setPitchGlideTime(tPoly* const polyh, float t)
-{
-    _tPoly* poly = *polyh;
-    poly->glideTime = t;
-    for (int i = 0; i < poly->maxNumVoices; ++i)
-    {
-        tRamp_setTime(&poly->ramps[i], poly->glideTime);
-    }
-}
-
-void tPoly_setBendGlideTime(tPoly* const polyh, float t)
-{
-    _tPoly* poly = *polyh;
-    tRamp_setTime(&poly->pitchBendRamp, t);
-}
-
-void tPoly_setBendSamplesPerTick(tPoly* const polyh, float t)
-{
-	 _tPoly* poly = *polyh;
-	 poly->pitchBendRamp->samples_per_tick =  t;
-}
-
-int tPoly_getNumVoices(tPoly* const polyh)
-{
-    _tPoly* poly = *polyh;
-    return poly->numVoices;
-}
-
-int tPoly_getNumActiveVoices(tPoly* const polyh)
-{
-    _tPoly* poly = *polyh;
-    return tStack_getSize(&poly->stack);
-}
-
-float tPoly_getPitch(tPoly* const polyh, uint8_t voice)
-{
-    _tPoly* poly = *polyh;
-    return tRamp_sample(&poly->ramps[voice]) + tRamp_sample(&poly->pitchBendRamp);
-}
-
-int tPoly_getKey(tPoly* const polyh, uint8_t voice)
-{
-    _tPoly* poly = *polyh;
-    return poly->voices[voice][0];
-}
-
-int tPoly_getVelocity(tPoly* const polyh, uint8_t voice)
-{
-    _tPoly* poly = *polyh;
-    return poly->voices[voice][1];
-}
-
-int tPoly_isOn(tPoly* const polyh, uint8_t voice)
-{
-    _tPoly* poly = *polyh;
-    return (poly->voices[voice][0] > 0) ? 1 : 0;
-}
--- a/LEAF/Src/leaf-oscillators.c
+++ /dev/null
@@ -1,863 +1,0 @@
-/*==============================================================================
- leaf-oscillators.c
- Created: 20 Jan 2017 12:00:58pm
- Author:  Michael R Mulshine
- ==============================================================================*/
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-tables.h"
-#include "..\Inc\leaf-oscillators.h"
-#include "..\leaf.h"
-
-#else
-
-#include "../Inc/leaf-tables.h"
-#include "../Inc/leaf-oscillators.h"
-#include "../leaf.h"
-
-#endif
-
-// Cycle
-void    tCycle_init(tCycle* const cy)
-{
-    _tCycle* c = *cy = (_tCycle*) leaf_alloc(sizeof(_tCycle));
-    
-    c->inc      =  0.0f;
-    c->phase    =  0.0f;
-
-}
-
-void    tCycle_free(tCycle* const cy)
-{
-    _tCycle* c = *cy;
-    
-    leaf_free(c);
-}
-
-void    tCycle_initToPool   (tCycle* const cy, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tCycle* c = *cy = (_tCycle*) mpool_alloc(sizeof(_tCycle), &m->pool);
-    
-    c->inc      =  0.0f;
-    c->phase    =  0.0f;
-
-}
-
-void    tCycle_freeFromPool (tCycle* const cy, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tCycle* c = *cy;
-    
-    mpool_free(c, &m->pool);
-}
-
-int     tCycle_setFreq(tCycle* const cy, float freq)
-{
-    _tCycle* c = *cy;
-    
-    c->freq = freq;
-    c->inc = freq * leaf.invSampleRate;
-    
-    return 0;
-}
-
-//need to check bounds and wrap table properly to allow through-zero FM
-float   tCycle_tick(tCycle* const cy)
-{
-    _tCycle* c = *cy;
-    float temp;;
-    int intPart;;
-    float fracPart;
-    float samp0;
-    float samp1;
-    
-    // Phasor increment
-    c->phase += c->inc;
-    while (c->phase >= 1.0f) c->phase -= 1.0f;
-    while (c->phase <= 0.0f) c->phase += 1.0f;
-
-    // Wavetable synthesis
-
-	temp = SINE_TABLE_SIZE * c->phase;
-	intPart = (int)temp;
-	fracPart = temp - (float)intPart;
-	samp0 = sinewave[intPart];
-	if (++intPart >= SINE_TABLE_SIZE) intPart = 0;
-	samp1 = sinewave[intPart];
-
-    return (samp0 + (samp1 - samp0) * fracPart);
-
-}
-
-void     tCycleSampleRateChanged (tCycle* const cy)
-{
-    _tCycle* c = *cy;
-    
-    c->inc = c->freq * leaf.invSampleRate;
-}
-
-//========================================================================
-/* Triangle */
-void   tTriangle_init(tTriangle* const cy)
-{
-    _tTriangle* c = *cy = (_tTriangle*) leaf_alloc(sizeof(_tTriangle));
-    
-    c->inc      =  0.0f;
-    c->phase    =  0.0f;
-}
-
-void   tTriangle_free(tTriangle* const cy)
-{
-    _tTriangle* c = *cy;
-    
-    leaf_free(c);
-}
-
-void    tTriangle_initToPool    (tTriangle* const cy, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tTriangle* c = *cy = (_tTriangle*) mpool_alloc(sizeof(_tTriangle), &m->pool);
-    
-    c->inc      =  0.0f;
-    c->phase    =  0.0f;
-}
-
-void    tTriangle_freeFromPool  (tTriangle* const cy, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tTriangle* c = *cy;
-    
-    mpool_free(c, &m->pool);
-}
-
-int tTriangle_setFreq(tTriangle* const cy, float freq)
-{
-    _tTriangle* c = *cy;
-    
-    if (freq < 0.0f) freq = 0.0f;
-    
-    c->freq = freq;
-    c->inc = freq * leaf.invSampleRate;
-    
-    return 0;
-}
-
-
-float   tTriangle_tick(tTriangle* const cy)
-{
-    _tTriangle* c = *cy;
-    
-    // Phasor increment
-    c->phase += c->inc;
-    while (c->phase >= 1.0f) c->phase -= 1.0f;
-    
-    float out = 0.0f;
-    float w;
-    
-    int idx = (int)(c->phase * TRI_TABLE_SIZE);
-    
-    // Wavetable synthesis
-    
-    if (c->freq <= 20.0f)
-    {
-        out = triangle[T20][idx];
-    }
-    else if (c->freq <= 40.0f)
-    {
-        w = ((40.0f - c->freq) * INV_20);
-        out = (triangle[T20][idx] * w) + (triangle[T40][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 80.0f)
-    {
-        w = ((80.0f - c->freq) * INV_40);
-        out = (triangle[T40][idx] * w) + (triangle[T80][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 160.0f)
-    {
-        w = ((160.0f - c->freq) * INV_80);
-        out = (triangle[T80][idx] * w) + (triangle[T160][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 320.0f)
-    {
-        w = ((320.0f - c->freq) * INV_160);
-        out = (triangle[T160][idx] * w) + (triangle[T320][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 640.0f)
-    {
-        w = ((640.0f - c->freq) * INV_320);
-        out = (triangle[T320][idx] * w) + (triangle[T640][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 1280.0f)
-    {
-        w = ((1280.0f - c->freq) * INV_640);
-        out = (triangle[T640][idx] * w) + (triangle[T1280][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 2560.0f)
-    {
-        w = ((2560.0f - c->freq) * INV_1280);
-        out = (triangle[T1280][idx] * w) + (triangle[T2560][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 5120.0f)
-    {
-        w = ((5120.0f - c->freq) * INV_2560);
-        out = (triangle[T2560][idx] * w) + (triangle[T5120][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 10240.0f)
-    {
-        w = ((10240.0f - c->freq) * INV_5120);
-        out = (triangle[T5120][idx] * w) + (triangle[T10240][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 20480.0f)
-    {
-        w = ((20480.0f - c->freq) * INV_10240);
-        out = (triangle[T10240][idx] * w) + (triangle[T20480][idx] * (1.0f - w));
-    }
-    else
-    {
-        out = triangle[T20480][idx];
-    }
-    
-    return out;
-}
-
-void     tTriangleSampleRateChanged (tTriangle* const cy)
-{
-    _tTriangle* c = *cy;
-    
-    c->inc = c->freq * leaf.invSampleRate;
-}
-
-//========================================================================
-/* Square */
-void   tSquare_init(tSquare* const cy)
-{
-    _tSquare* c = *cy = (_tSquare*) leaf_alloc(sizeof(_tSquare));
-    
-    c->inc      =  0.0f;
-    c->phase    =  0.0f;
-}
-
-void   tSquare_free(tSquare* const cy)
-{
-    _tSquare* c = *cy;
-    
-    leaf_free(c);
-}
-
-void    tSquare_initToPool  (tSquare* const cy, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSquare* c = *cy = (_tSquare*) mpool_alloc(sizeof(_tSquare), &m->pool);
-    
-    c->inc      =  0.0f;
-    c->phase    =  0.0f;
-}
-
-void    tSquare_freeFromPool(tSquare* const cy, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSquare* c = *cy;
-    
-    mpool_free(c, &m->pool);
-}
-
-int     tSquare_setFreq(tSquare* const cy, float freq)
-{
-    _tSquare* c = *cy;
-    
-    if (freq < 0.0f) freq = 0.0f;
-    
-    c->freq = freq;
-    c->inc = freq * leaf.invSampleRate;
-    
-    return 0;
-}
-
-float   tSquare_tick(tSquare* const cy)
-{
-    _tSquare* c = *cy;
-    
-    // Phasor increment
-    c->phase += c->inc;
-    while (c->phase >= 1.0f) c->phase -= 1.0f;
-    
-    float out = 0.0f;
-    float w = 0.0f;
-    int idx = (int)(c->phase * TRI_TABLE_SIZE);
-    
-    // Wavetable synthesis
-    
-    if (c->freq <= 20.0f)
-    {
-        out = squarewave[T20][idx];
-    }
-    else if (c->freq <= 40.0f)
-    {
-        w = ((40.0f - c->freq) * INV_20);
-        out = (squarewave[T20][idx] * w) + (squarewave[T40][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 80.0f)
-    {
-        w = ((80.0f - c->freq) * INV_40);
-        out = (squarewave[T40][idx] * w) + (squarewave[T80][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 160.0f)
-    {
-        w = ((160.0f - c->freq) * INV_80);
-        out = (squarewave[T80][idx] * w) + (squarewave[T160][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 320.0f)
-    {
-        w = ((320.0f - c->freq) * INV_160);
-        out = (squarewave[T160][idx] * w) + (squarewave[T320][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 640.0f)
-    {
-        w = ((640.0f - c->freq) * INV_320);
-        out = (squarewave[T320][idx] * w) + (squarewave[T640][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 1280.0f)
-    {
-        w = ((1280.0f - c->freq) * INV_640);
-        out = (squarewave[T640][idx] * w) + (squarewave[T1280][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 2560.0f)
-    {
-        w = ((2560.0f - c->freq) * INV_1280);
-        out = (squarewave[T1280][idx] * w) + (squarewave[T2560][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 5120.0f)
-    {
-        w = ((5120.0f - c->freq) * INV_2560);
-        out = (squarewave[T2560][idx] * w) + (squarewave[T5120][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 10240.0f)
-    {
-        w = ((10240.0f - c->freq) * INV_5120);
-        out = (squarewave[T5120][idx] * w) + (squarewave[T10240][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 20480.0f)
-    {
-        w = ((20480.0f - c->freq) * INV_10240);
-        out = (squarewave[T10240][idx] * w) + (squarewave[T20480][idx] * (1.0f - w));
-    }
-    else
-    {
-        out = squarewave[T20480][idx];
-    }
-    
-    return out;
-}
-
-void     tSquareSampleRateChanged (tSquare* const cy)
-{
-    _tSquare* c = *cy;
-    
-    c->inc = c->freq * leaf.invSampleRate;
-}
-
-//=====================================================================
-// Sawtooth
-void    tSawtooth_init(tSawtooth* const cy)
-{
-    _tSawtooth* c = *cy = (_tSawtooth*) leaf_alloc(sizeof(_tSawtooth));
-    
-    c->inc      = 0.0f;
-    c->phase    = 0.0f;
-}
-
-void    tSawtooth_free(tSawtooth* const cy)
-{
-    _tSawtooth* c = *cy;
-    
-    leaf_free(c);
-}
-
-void    tSawtooth_initToPool    (tSawtooth* const cy, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSawtooth* c = *cy = (_tSawtooth*) mpool_alloc(sizeof(_tSawtooth), &m->pool);
-    
-    c->inc      = 0.0f;
-    c->phase    = 0.0f;
-}
-
-void    tSawtooth_freeFromPool  (tSawtooth* const cy, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSawtooth* c = *cy;
-    
-    mpool_free(c, &m->pool);
-}
-
-int     tSawtooth_setFreq(tSawtooth* const cy, float freq)
-{
-    _tSawtooth* c = *cy;
-    
-    if (freq < 0.0f) freq = 0.0f;
-    
-    c->freq = freq;
-    c->inc = freq * leaf.invSampleRate;
-    
-    return 0;
-}
-
-float   tSawtooth_tick(tSawtooth* const cy)
-{
-    _tSawtooth* c = *cy;
-    
-    // Phasor increment
-    c->phase += c->inc;
-    while (c->phase >= 1.0f) c->phase -= 1.0f;
-    
-    float out = 0.0f;
-    float w;
-    
-    int idx = (int)(c->phase * TRI_TABLE_SIZE);
-    
-    // Wavetable synthesis
-    
-    if (c->freq <= 20.0f)
-    {
-        out = sawtooth[T20][idx];
-    }
-    else if (c->freq <= 40.0f)
-    {
-        w = ((40.0f - c->freq) * INV_20);
-        out = (sawtooth[T20][idx] * w) + (sawtooth[T40][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 80.0f)
-    {
-        w = ((80.0f - c->freq) * INV_40);
-        out = (sawtooth[T40][idx] * w) + (sawtooth[T80][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 160.0f)
-    {
-        w = ((160.0f - c->freq) * INV_80);
-        out = (sawtooth[T80][idx] * w) + (sawtooth[T160][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 320.0f)
-    {
-        w = ((320.0f - c->freq) * INV_160);
-        out = (sawtooth[T160][idx] * w) + (sawtooth[T320][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 640.0f)
-    {
-        w = ((640.0f - c->freq) * INV_320);
-        out = (sawtooth[T320][idx] * w) + (sawtooth[T640][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 1280.0f)
-    {
-        w = ((1280.0f - c->freq) * INV_640);
-        out = (sawtooth[T640][idx] * w) + (sawtooth[T1280][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 2560.0f)
-    {
-        w = ((2560.0f - c->freq) * INV_1280);
-        out = (sawtooth[T1280][idx] * w) + (sawtooth[T2560][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 5120.0f)
-    {
-        w = ((5120.0f - c->freq) * INV_2560);
-        out = (sawtooth[T2560][idx] * w) + (sawtooth[T5120][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 10240.0f)
-    {
-        w = ((10240.0f - c->freq) * INV_5120);
-        out = (sawtooth[T5120][idx] * w) + (sawtooth[T10240][idx] * (1.0f - w));
-    }
-    else if (c->freq <= 20480.0f)
-    {
-        w = ((20480.0f - c->freq) * INV_10240);
-        out = (sawtooth[T10240][idx] * w) + (sawtooth[T20480][idx] * (1.0f - w));
-    }
-    else
-    {
-        out = sawtooth[T20480][idx];
-    }
-    
-    return out;
-}
-
-void     tSawtoothSampleRateChanged (tSawtooth* const cy)
-{
-    _tSawtooth* c = *cy;
-    
-    c->inc = c->freq * leaf.invSampleRate;
-}
-
-//========================================================================
-/* Phasor */
-void     tPhasorSampleRateChanged (tPhasor* const ph)
-{
-    _tPhasor* p = *ph;
-    
-    p->inc = p->freq * leaf.invSampleRate;
-};
-
-void    tPhasor_init(tPhasor* const ph)
-{
-    _tPhasor* p = *ph = (_tPhasor*) leaf_alloc(sizeof(_tPhasor));
-    
-    p->phase = 0.0f;
-    p->inc = 0.0f;
-}
-
-void    tPhasor_free(tPhasor* const ph)
-{
-    _tPhasor* p = *ph;
-    
-    leaf_free(p);
-}
-
-void    tPhasor_initToPool  (tPhasor* const ph, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPhasor* p = *ph = (_tPhasor*) mpool_alloc(sizeof(_tPhasor), &m->pool);
-    
-    p->phase = 0.0f;
-    p->inc = 0.0f;
-}
-
-void    tPhasor_freeFromPool(tPhasor* const ph, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPhasor* p = *ph;
-    
-    mpool_free(p, &m->pool);
-}
-
-int     tPhasor_setFreq(tPhasor* const ph, float freq)
-{
-    _tPhasor* p = *ph;
-    
-    if (freq < 0.0f) freq = 0.0f;
-    
-    p->freq = freq;
-    p->inc = freq * leaf.invSampleRate;
-    
-    return 0;
-}
-
-float   tPhasor_tick(tPhasor* const ph)
-{
-    _tPhasor* p = *ph;
-    
-    p->phase += p->inc;
-    
-    if (p->phase >= 1.0f) p->phase -= 1.0f;
-    
-    return p->phase;
-}
-
-/* Noise */
-void    tNoise_init(tNoise* const ns, NoiseType type)
-{
-    _tNoise* n = *ns = (_tNoise*) leaf_alloc(sizeof(_tNoise));
-    
-    n->type = type;
-    n->rand = leaf.random;
-}
-
-void    tNoise_free(tNoise* const ns)
-{
-    _tNoise* n = *ns;
-    
-    leaf_free(n);
-}
-
-void    tNoise_initToPool   (tNoise* const ns, NoiseType type, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tNoise* n = *ns = (_tNoise*) mpool_alloc(sizeof(_tNoise), &m->pool);
-    
-    n->type = type;
-    n->rand = leaf.random;
-}
-
-void    tNoise_freeFromPool (tNoise* const ns, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tNoise* n = *ns;
-    
-    mpool_free(n, &m->pool);
-}
-
-float   tNoise_tick(tNoise* const ns)
-{
-    _tNoise* n = *ns;
-    
-    float rand = (n->rand() * 2.0f) - 1.0f;
-    
-    if (n->type == PinkNoise)
-    {
-        float tmp;
-        n->pinkb0 = 0.99765f * n->pinkb0 + rand * 0.0990460f;
-        n->pinkb1 = 0.96300f * n->pinkb1 + rand * 0.2965164f;
-        n->pinkb2 = 0.57000f * n->pinkb2 + rand * 1.0526913f;
-        tmp = n->pinkb0 + n->pinkb1 + n->pinkb2 + rand * 0.1848f;
-        return (tmp * 0.05f);
-    }
-    else // WhiteNoise
-    {
-        return rand;
-    }
-}
-
-//=================================================================================
-/* Neuron */
-
-void     tNeuronSampleRateChanged(tNeuron* nr)
-{
-    
-}
-
-void    tNeuron_init(tNeuron* const nr)
-{
-    _tNeuron* n = *nr = (_tNeuron*) leaf_alloc(sizeof(_tNeuron));
-    
-    tPoleZero_init(&n->f);
-    
-    tPoleZero_setBlockZero(&n->f, 0.99f);
-    
-    n->timeStep = 1.0f / 50.0f;
-    
-    n->current = 0.0f; // 100.0f for sound
-    n->voltage = 0.0f;
-    
-    n->mode = NeuronNormal;
-    
-    n->P[0] = 0.0f;
-    n->P[1] = 0.0f;
-    n->P[2] = 1.0f;
-    
-    n->V[0] = -12.0f;
-    n->V[1] = 115.0f;
-    n->V[2] = 10.613f;
-    
-    n->gK = 36.0f;
-    n->gN = 120.0f;
-    n->gL = 0.3f;
-    n->C = 1.0f;
-    
-    n->rate[2] = n->gL/n->C;
-}
-
-void    tNeuron_free(tNeuron* const nr)
-{
-    _tNeuron* n = *nr;
-    
-    tPoleZero_free(&n->f);
-    leaf_free(n);
-}
-
-void    tNeuron_initToPool  (tNeuron* const nr, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tNeuron* n = *nr = (_tNeuron*) mpool_alloc(sizeof(_tNeuron), &m->pool);
-    
-    tPoleZero_initToPool(&n->f, mp);
-    
-    tPoleZero_setBlockZero(&n->f, 0.99f);
-    
-    n->timeStep = 1.0f / 50.0f;
-    
-    n->current = 0.0f; // 100.0f for sound
-    n->voltage = 0.0f;
-    
-    n->mode = NeuronNormal;
-    
-    n->P[0] = 0.0f;
-    n->P[1] = 0.0f;
-    n->P[2] = 1.0f;
-    
-    n->V[0] = -12.0f;
-    n->V[1] = 115.0f;
-    n->V[2] = 10.613f;
-    
-    n->gK = 36.0f;
-    n->gN = 120.0f;
-    n->gL = 0.3f;
-    n->C = 1.0f;
-    
-    n->rate[2] = n->gL/n->C;
-}
-
-void    tNeuron_freeFromPool(tNeuron* const nr, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tNeuron* n = *nr;
-    
-    tPoleZero_free(&n->f);
-    mpool_free(n, &m->pool);
-}
-
-void   tNeuron_reset(tNeuron* const nr)
-{
-    _tNeuron* n = *nr;
-    
-    tPoleZero_setBlockZero(&n->f, 0.99f);
-    
-    n->timeStep = 1.0f / 50.0f;
-    
-    n->current = 0.0f; // 100.0f for sound
-    n->voltage = 0.0f;
-    
-    n->mode = NeuronNormal;
-    
-    n->P[0] = 0.0f;
-    n->P[1] = 0.0f;
-    n->P[2] = 1.0f;
-    
-    n->V[0] = -12.0f;
-    n->V[1] = 115.0f;
-    n->V[2] = 10.613f;
-    
-    n->gK = 36.0f;
-    n->gN = 120.0f;
-    n->gL = 0.3f;
-    n->C = 1.0f;
-    
-    n->rate[2] = n->gL/n->C;
-}
-
-void        tNeuron_setV1(tNeuron* const nr, float V1)
-{
-    _tNeuron* n = *nr;
-    n->V[0] = V1;
-}
-
-
-void        tNeuron_setV2(tNeuron* const nr, float V2)
-{
-    _tNeuron* n = *nr;
-    n->V[1] = V2;
-}
-
-void        tNeuron_setV3(tNeuron* const nr, float V3)
-{
-    _tNeuron* n = *nr;
-    n->V[2] = V3;
-}
-
-void        tNeuron_setTimeStep(tNeuron* const nr, float timeStep)
-{
-    _tNeuron* n = *nr;
-    n->timeStep = timeStep;
-}
-
-void        tNeuron_setK(tNeuron* const nr, float K)
-{
-    _tNeuron* n = *nr;
-    n->gK = K;
-}
-
-void        tNeuron_setL(tNeuron* const nr, float L)
-{
-    _tNeuron* n = *nr;
-    n->gL = L;
-    n->rate[2] = n->gL/n->C;
-}
-
-void        tNeuron_setN(tNeuron* const nr, float N)
-{
-    _tNeuron* n = *nr;
-    n->gN = N;
-}
-
-void        tNeuron_setC(tNeuron* const nr, float C)
-{
-    _tNeuron* n = *nr;
-    n->C = C;
-    n->rate[2] = n->gL/n->C;
-}
-
-float   tNeuron_tick(tNeuron* const nr)
-{
-    _tNeuron* n = *nr;
-    
-    float output = 0.0f;
-    float voltage = n->voltage;
-    
-    n->alpha[0] = (0.01f * (10.0f - voltage)) / (expf((10.0f - voltage)/10.0f) - 1.0f);
-    n->alpha[1] = (0.1f * (25.0f-voltage)) / (expf((25.0f-voltage)/10.0f) - 1.0f);
-    n->alpha[2] = (0.07f * expf((-1.0f * voltage)/20.0f));
-    
-    n->beta[0] = (0.125f * expf((-1.0f* voltage)/80.0f));
-    n->beta[1] = (4.0f * expf((-1.0f * voltage)/18.0f));
-    n->beta[2] = (1.0f / (expf((30.0f-voltage)/10.0f) + 1.0f));
-    
-    for (int i = 0; i < 3; i++)
-    {
-        n->P[i] = (n->alpha[i] * n->timeStep) + ((1.0f - ((n->alpha[i] + n->beta[i]) * n->timeStep)) * n->P[i]);
-        
-        if (n->P[i] > 1.0f)         n->P[i] = 0.0f;
-        else if (n->P[i] < -1.0f)   n->P[i] = 0.0f;
-    }
-    // rate[0]= k ; rate[1] = Na ; rate[2] = l
-    n->rate[0] = ((n->gK * powf(n->P[0], 4.0f)) / n->C);
-    n->rate[1] = ((n->gN * powf(n->P[1], 3.0f) * n->P[2]) / n->C);
-    
-    //calculate the final membrane voltage based on the computed variables
-    n->voltage = voltage +
-    (n->timeStep * n->current / n->C) -
-    (n->timeStep * ( n->rate[0] * (voltage - n->V[0]) + n->rate[1] * (voltage - n->V[1]) + n->rate[2] * (voltage - n->V[2])));
-    
-    if (n->mode == NeuronTanh)
-    {
-        n->voltage = 100.0f * tanhf(0.01f * n->voltage);
-    }
-    else if (n->mode == NeuronAaltoShaper)
-    {
-        float shapeVoltage = 0.01f * n->voltage;
-        
-        float w, c, xc, xc2, xc4;
-        
-        float sqrt8 = 2.82842712475f;
-        
-        float wscale = 1.30612244898f;
-        float m_drive = 1.0f;
-        
-        xc = LEAF_clip(-sqrt8, shapeVoltage, sqrt8);
-        
-        xc2 = xc*xc;
-        
-        c = 0.5f * shapeVoltage * (3.0f - (xc2));
-        
-        xc4 = xc2 * xc2;
-        
-        w = (1.0f - xc2 * 0.25f + xc4 * 0.015625f) * wscale;
-        
-        shapeVoltage = w * (c + 0.05f * xc2) * (m_drive + 0.75f);
-        
-        n->voltage = 100.0f * shapeVoltage;
-    }
-    
-    
-    if (n->voltage > 100.0f)  n->voltage = 100.0f;
-    else if (n->voltage < -100.) n->voltage = -100.0f;
-    
-    //(inputCurrent + (voltage - ((voltage * timeStep) / timeConstant)) + P[0] + P[1] + P[2]) => voltage;
-    // now we should have a result
-    //set the output voltage to the "step" ugen, which controls the DAC.
-    output = n->voltage * 0.01f; // volts
-    
-    output = tPoleZero_tick(&n->f, output);
-    
-    return output;
-    
-}
-
-void        tNeuron_setMode  (tNeuron* const nr, NeuronMode mode)
-{
-    _tNeuron* n = *nr;
-    n->mode = mode;
-}
-
-void        tNeuron_setCurrent  (tNeuron* const nr, float current)
-{
-    _tNeuron* n = *nr;
-    n->current = current;
-}
--- a/LEAF/Src/leaf-physical.c
+++ /dev/null
@@ -1,747 +1,0 @@
-/*==============================================================================
-
-    leaf-string.c
-    Created: 30 Nov 2018 10:41:42am
-    Author:  airship
-
-==============================================================================*/
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-physical.h"
-
-#else
-
-#include "../Inc/leaf-physical.h"
-
-#endif
-
-/* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ tPluck ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ */
-void    tPluck_init         (tPluck* const pl, float lowestFrequency)
-{
-    tPluck_initToPool(pl, lowestFrequency, &leaf_mempool);
-}
-
-void tPluck_free (tPluck* const pl)
-{
-    tPluck_freeFromPool(pl, &leaf_mempool);
-}
-
-void    tPluck_initToPool    (tPluck* const pl, float lowestFrequency, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPluck* p = *pl = (_tPluck*) mpool_alloc(sizeof(_tPluck), &m->pool);
-    
-    if ( lowestFrequency <= 0.0f )  lowestFrequency = 10.0f;
-    
-    tNoise_initToPool(&p->noise, WhiteNoise, mp);
-    
-    tOnePole_initToPool(&p->pickFilter, 0.0f, mp);
-    
-    tOneZero_initToPool(&p->loopFilter, 0.0f, mp);
-    
-    tAllpassDelay_initToPool(&p->delayLine, 0.0f, leaf.sampleRate * 2, mp);
-    tAllpassDelay_clear(&p->delayLine);
-    
-    tPluck_setFrequency(pl, 220.0f);
-}
-
-void    tPluck_freeFromPool  (tPluck* const pl, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPluck* p = *pl;
-    
-    tNoise_freeFromPool(&p->noise, mp);
-    tOnePole_freeFromPool(&p->pickFilter, mp);
-    tOneZero_freeFromPool(&p->loopFilter, mp);
-    tAllpassDelay_freeFromPool(&p->delayLine, mp);
-    
-    mpool_free(p, &m->pool);
-}
-
-float   tPluck_getLastOut    (tPluck* const pl)
-{
-    _tPluck* p = *pl;
-    return p->lastOut;
-}
-
-float   tPluck_tick          (tPluck* const pl)
-{
-    _tPluck* p = *pl;
-    return (p->lastOut = 3.0f * tAllpassDelay_tick(&p->delayLine, tOneZero_tick(&p->loopFilter, tAllpassDelay_getLastOut(&p->delayLine) * p->loopGain ) ));
-}
-
-void    tPluck_pluck         (tPluck* const pl, float amplitude)
-{
-    _tPluck* p = *pl;
-    
-    if ( amplitude < 0.0f)      amplitude = 0.0f;
-    else if (amplitude > 1.0f)  amplitude = 1.0f;
-    
-    tOnePole_setPole(&p->pickFilter, 0.999f - (amplitude * 0.15f));
-    tOnePole_setGain(&p->pickFilter, amplitude * 0.5f );
-    
-    // Fill delay with noise additively with current contents.
-    for ( uint32_t i = 0; i < (uint32_t)tAllpassDelay_getDelay(&p->delayLine); i++ )
-        tAllpassDelay_tick(&p->delayLine, 0.6f * tAllpassDelay_getLastOut(&p->delayLine) + tOnePole_tick(&p->pickFilter, tNoise_tick(&p->noise) ) );
-}
-
-// Start a note with the given frequency and amplitude.;
-void    tPluck_noteOn        (tPluck* const pl, float frequency, float amplitude )
-{
-    _tPluck* p = *pl;
-    p->lastFreq = frequency;
-    tPluck_setFrequency( pl, frequency );
-    tPluck_pluck( pl, amplitude );
-}
-
-// Stop a note with the given amplitude (speed of decay).
-void    tPluck_noteOff       (tPluck* const pl, float amplitude )
-{
-    _tPluck* p = *pl;
-    
-    if ( amplitude < 0.0f)      amplitude = 0.0f;
-    else if (amplitude > 1.0f)  amplitude = 1.0f;
-    
-    p->loopGain = 1.0f - amplitude;
-}
-
-// Set instrument parameters for a particular frequency.
-void    tPluck_setFrequency  (tPluck* const pl, float frequency )
-{
-    _tPluck* p = *pl;
-    
-    if ( frequency <= 0.0f )   frequency = 0.001f;
-    
-    // Delay = length - filter delay.
-    float delay = ( leaf.sampleRate / frequency ) - tOneZero_getPhaseDelay(&p->loopFilter, frequency );
-    
-    tAllpassDelay_setDelay(&p->delayLine, delay );
-    
-    p->loopGain = 0.99f + (frequency * 0.000005f);
-    
-    if ( p->loopGain >= 0.999f ) p->loopGain = 0.999f;
-    
-}
-
-// Perform the control change specified by \e number and \e value (0.0 - 128.0).
-void    tPluck_controlChange (tPluck* const pl, int number, float value)
-{
-    return;
-}
-
-void tPluckSampleRateChanged(tPluck* const pl)
-{
-    _tPluck* p = *pl;
-    tPluck_setFrequency(pl, p->lastFreq);
-}
-
-/* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ tKarplusStrong ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ */
-void    tKarplusStrong_init (tKarplusStrong* const pl, float lowestFrequency)
-{
-    tKarplusStrong_initToPool(pl, lowestFrequency, &leaf_mempool);
-}
-
-void tKarplusStrong_free (tKarplusStrong* const pl)
-{
-    tKarplusStrong_freeFromPool(pl, &leaf_mempool);
-}
-
-void    tKarplusStrong_initToPool   (tKarplusStrong* const pl, float lowestFrequency, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tKarplusStrong* p = *pl = (_tKarplusStrong*) mpool_alloc(sizeof(_tKarplusStrong), &m->pool);
-    
-    if ( lowestFrequency <= 0.0f )  lowestFrequency = 8.0f;
-    
-    tAllpassDelay_initToPool(&p->delayLine, 0.0f, leaf.sampleRate * 2, mp);
-    tAllpassDelay_clear(&p->delayLine);
-    
-    tLinearDelay_initToPool(&p->combDelay, 0.0f, leaf.sampleRate * 2, mp);
-    tLinearDelay_clear(&p->combDelay);
-    
-    tOneZero_initToPool(&p->filter, 0.0f, mp);
-    
-    tNoise_initToPool(&p->noise, WhiteNoise, mp);
-    
-    for (int i = 0; i < 4; i++)
-    {
-        tBiQuad_initToPool(&p->biquad[i], mp);
-    }
-    
-    p->pluckAmplitude = 0.3f;
-    p->pickupPosition = 0.4f;
-    
-    p->stretching = 0.9999f;
-    p->baseLoopGain = 0.995f;
-    p->loopGain = 0.999f;
-    
-    tKarplusStrong_setFrequency( pl, 220.0f );
-}
-
-void    tKarplusStrong_freeFromPool (tKarplusStrong* const pl, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tKarplusStrong* p = *pl;
-    
-    tAllpassDelay_freeFromPool(&p->delayLine, mp);
-    tLinearDelay_freeFromPool(&p->combDelay, mp);
-    tOneZero_freeFromPool(&p->filter, mp);
-    tNoise_freeFromPool(&p->noise, mp);
-    
-    for (int i = 0; i < 4; i++)
-    {
-        tBiQuad_freeFromPool(&p->biquad[i], mp);
-    }
-    
-    mpool_free(p, &m->pool);
-}
-
-float   tKarplusStrong_getLastOut    (tKarplusStrong* const pl)
-{
-    _tKarplusStrong* p = *pl;
-    return p->lastOut;
-}
-
-float   tKarplusStrong_tick          (tKarplusStrong* const pl)
-{
-    _tKarplusStrong* p = *pl;
-    
-    float temp = tAllpassDelay_getLastOut(&p->delayLine) * p->loopGain;
-    
-    // Calculate allpass stretching.
-    for (int i=0; i<4; i++)     temp = tBiQuad_tick(&p->biquad[i],temp);
-    
-    // Moving average filter.
-    temp = tOneZero_tick(&p->filter, temp);
-    
-    float out = tAllpassDelay_tick(&p->delayLine, temp);
-    out = out - tLinearDelay_tick(&p->combDelay, out);
-    p->lastOut = out;
-    
-    return p->lastOut;
-}
-
-void    tKarplusStrong_pluck         (tKarplusStrong* const pl, float amplitude)
-{
-    _tKarplusStrong* p = *pl;
-    
-    if ( amplitude < 0.0f)      amplitude = 0.0f;
-    else if (amplitude > 1.0f)  amplitude = 1.0f;
-    
-    p->pluckAmplitude = amplitude;
-    
-    for ( uint32_t i=0; i < (uint32_t)tAllpassDelay_getDelay(&p->delayLine); i++ )
-    {
-        // Fill delay with noise additively with current contents.
-        tAllpassDelay_tick(&p->delayLine, (tAllpassDelay_getLastOut(&p->delayLine) * 0.6f) + 0.4f * tNoise_tick(&p->noise) * p->pluckAmplitude );
-        //delayLine_.tick( combDelay_.tick((delayLine_.lastOut() * 0.6) + 0.4 * noise->tick() * pluckAmplitude_) );
-    }
-}
-
-// Start a note with the given frequency and amplitude.;
-void    tKarplusStrong_noteOn        (tKarplusStrong* const pl, float frequency, float amplitude )
-{
-    tKarplusStrong_setFrequency( pl, frequency );
-    tKarplusStrong_pluck( pl, amplitude );
-}
-
-// Stop a note with the given amplitude (speed of decay).
-void    tKarplusStrong_noteOff       (tKarplusStrong* const pl, float amplitude )
-{
-    _tKarplusStrong* p = *pl;
-    
-    if ( amplitude < 0.0f)      amplitude = 0.0f;
-    else if (amplitude > 1.0f)  amplitude = 1.0f;
-    
-    p->loopGain = 1.0f - amplitude;
-}
-
-// Set instrument parameters for a particular frequency.
-void    tKarplusStrong_setFrequency  (tKarplusStrong* const pl, float frequency )
-{
-    _tKarplusStrong* p = *pl;
-    
-    if ( frequency <= 0.0f )   frequency = 0.001f;
-    
-    p->lastFrequency = frequency;
-    p->lastLength = leaf.sampleRate / p->lastFrequency;
-    float delay = p->lastLength - 0.5f;
-    tAllpassDelay_setDelay(&p->delayLine, delay);
-    
-    // MAYBE MODIFY LOOP GAINS
-    p->loopGain = p->baseLoopGain + (frequency * 0.000005f);
-    if (p->loopGain >= 1.0f) p->loopGain = 0.99999f;
-    
-    tKarplusStrong_setStretch(pl, p->stretching);
-    
-    tLinearDelay_setDelay(&p->combDelay, 0.5f * p->pickupPosition * p->lastLength );
-    
-}
-
-// Set the stretch "factor" of the string (0.0 - 1.0).
-void    tKarplusStrong_setStretch         (tKarplusStrong* const pl, float stretch )
-{
-    _tKarplusStrong* p = *pl;
-    
-    p->stretching = stretch;
-    float coefficient;
-    float freq = p->lastFrequency * 2.0f;
-    float dFreq = ( (0.5f * leaf.sampleRate) - freq ) * 0.25f;
-    float temp = 0.5f + (stretch * 0.5f);
-    if ( temp > 0.9999f ) temp = 0.9999f;
-    
-    for ( int i=0; i<4; i++ )
-    {
-        coefficient = temp * temp;
-        tBiQuad_setA2(&p->biquad[i], coefficient);
-        tBiQuad_setB0(&p->biquad[i], coefficient);
-        tBiQuad_setB2(&p->biquad[i], 1.0f);
-        
-        coefficient = -2.0f * temp * cos(TWO_PI * freq / leaf.sampleRate);
-        tBiQuad_setA1(&p->biquad[i], coefficient);
-        tBiQuad_setB1(&p->biquad[i], coefficient);
-        
-        freq += dFreq;
-    }
-}
-
-// Set the pluck or "excitation" position along the string (0.0 - 1.0).
-void    tKarplusStrong_setPickupPosition  (tKarplusStrong* const pl, float position )
-{
-    _tKarplusStrong* p = *pl;
-    
-    if (position < 0.0f)        p->pickupPosition = 0.0f;
-    else if (position <= 1.0f)  p->pickupPosition = position;
-    else                        p->pickupPosition = 1.0f;
-    
-    tLinearDelay_setDelay(&p->combDelay, 0.5f * p->pickupPosition * p->lastLength);
-}
-
-// Set the base loop gain.
-void    tKarplusStrong_setBaseLoopGain    (tKarplusStrong* const pl, float aGain )
-{
-    _tKarplusStrong* p = *pl;
-    
-    p->baseLoopGain = aGain;
-    p->loopGain = p->baseLoopGain + (p->lastFrequency * 0.000005f);
-    if ( p->loopGain > 0.99999f ) p->loopGain = 0.99999f;
-}
-
-// Perform the control change specified by \e number and \e value (0.0 - 128.0).
-void    tKarplusStrong_controlChange (tKarplusStrong* const pl, SKControlType type, float value)
-{
-    if ( value < 0.0f )         value = 0.0f;
-    else if (value > 128.0f)   value = 128.0f;
-    
-    float normalizedValue = value * INV_128;
-    
-    if (type == SKPickPosition) // 4
-        tKarplusStrong_setPickupPosition( pl, normalizedValue );
-    else if (type == SKStringDamping) // 11
-        tKarplusStrong_setBaseLoopGain( pl, 0.97f + (normalizedValue * 0.03f) );
-    else if (type == SKDetune) // 1
-        tKarplusStrong_setStretch( pl, 0.91f + (0.09f * (1.0f - normalizedValue)) );
-}
-
-void    tKarplusStrongSampleRateChanged (tKarplusStrong* const pl)
-{
-    _tKarplusStrong* p = *pl;
-    
-    tKarplusStrong_setFrequency(pl, p->lastFrequency);
-    tKarplusStrong_setStretch(pl, p->stretching);
-}
-
-/* Simple Living String*/
-
-void    tSimpleLivingString_init(tSimpleLivingString* const pl, float freq, float dampFreq,
-                                 float decay, float targetLev, float levSmoothFactor,
-                                 float levStrength, int levMode)
-{
-    tSimpleLivingString_initToPool(pl, freq, dampFreq, decay, targetLev, levSmoothFactor, levStrength, levMode, &leaf_mempool);
-}
-
-void tSimpleLivingString_free(tSimpleLivingString* const pl)
-{
-    tSimpleLivingString_freeFromPool(pl, &leaf_mempool);
-}
-
-void    tSimpleLivingString_initToPool  (tSimpleLivingString* const pl, float freq, float dampFreq,
-                                         float decay, float targetLev, float levSmoothFactor,
-                                         float levStrength, int levMode, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSimpleLivingString* p = *pl = (_tSimpleLivingString*) mpool_alloc(sizeof(_tSimpleLivingString), &m->pool);
-    
-    p->curr=0.0f;
-    tExpSmooth_initToPool(&p->wlSmooth, leaf.sampleRate/freq, 0.01, mp); // smoother for string wavelength (not freq, to avoid expensive divisions)
-    tSimpleLivingString_setFreq(pl, freq);
-    tLinearDelay_initToPool(&p->delayLine,p->waveLengthInSamples, 2400, mp);
-    tLinearDelay_clear(&p->delayLine);
-    tOnePole_initToPool(&p->bridgeFilter, dampFreq, mp);
-    tHighpass_initToPool(&p->DCblocker,13, mp);
-    p->decay=decay;
-    tFeedbackLeveler_initToPool(&p->fbLev, targetLev, levSmoothFactor, levStrength, levMode, mp);
-    p->levMode=levMode;
-}
-
-void    tSimpleLivingString_freeFromPool    (tSimpleLivingString* const pl, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSimpleLivingString* p = *pl;
-    
-    tExpSmooth_freeFromPool(&p->wlSmooth, mp);
-    tLinearDelay_freeFromPool(&p->delayLine, mp);
-    tOnePole_freeFromPool(&p->bridgeFilter, mp);
-    tHighpass_freeFromPool(&p->DCblocker, mp);
-    tFeedbackLeveler_freeFromPool(&p->fbLev, mp);
-    
-    mpool_free(p, &m->pool);
-}
-
-void     tSimpleLivingString_setFreq(tSimpleLivingString* const pl, float freq)
-{
-    _tSimpleLivingString* p = *pl;
-    
-    if (freq<20) freq=20;
-    else if (freq>10000) freq=10000;
-    p->waveLengthInSamples = leaf.sampleRate/freq;
-    tExpSmooth_setDest(&p->wlSmooth, p->waveLengthInSamples);
-}
-
-void     tSimpleLivingString_setWaveLength(tSimpleLivingString* const pl, float waveLength)
-{
-    _tSimpleLivingString* p = *pl;
-    
-    if (waveLength<4.8) waveLength=4.8;
-    else if (waveLength>2400) waveLength=2400;
-    p->waveLengthInSamples = waveLength;
-    tExpSmooth_setDest(&p->wlSmooth, p->waveLengthInSamples);
-}
-
-void     tSimpleLivingString_setDampFreq(tSimpleLivingString* const pl, float dampFreq)
-{
-    _tSimpleLivingString* p = *pl;
-    tOnePole_setFreq(&p->bridgeFilter, dampFreq);
-}
-
-void     tSimpleLivingString_setDecay(tSimpleLivingString* const pl, float decay)
-{
-    _tSimpleLivingString* p = *pl;
-    p->decay=decay;
-}
-
-void     tSimpleLivingString_setTargetLev(tSimpleLivingString* const pl, float targetLev)
-{
-    _tSimpleLivingString* p = *pl;
-    tFeedbackLeveler_setTargetLevel(&p->fbLev, targetLev);
-}
-
-void     tSimpleLivingString_setLevSmoothFactor(tSimpleLivingString* const pl, float levSmoothFactor)
-{
-    _tSimpleLivingString* p = *pl;
-    tFeedbackLeveler_setFactor(&p->fbLev, levSmoothFactor);
-}
-
-void     tSimpleLivingString_setLevStrength(tSimpleLivingString* const pl, float levStrength)
-{
-    _tSimpleLivingString* p = *pl;
-    tFeedbackLeveler_setStrength(&p->fbLev, levStrength);
-}
-
-void     tSimpleLivingString_setLevMode(tSimpleLivingString* const pl, int levMode)
-{
-    _tSimpleLivingString* p = *pl;
-    tFeedbackLeveler_setMode(&p->fbLev, levMode);
-    p->levMode=levMode;
-}
-
-float   tSimpleLivingString_tick(tSimpleLivingString* const pl, float input)
-{
-    _tSimpleLivingString* p = *pl;
-    
-    float stringOut=tOnePole_tick(&p->bridgeFilter,tLinearDelay_tickOut(&p->delayLine));
-    float stringInput=tHighpass_tick(&p->DCblocker, tFeedbackLeveler_tick(&p->fbLev, (p->levMode==0?p->decay*stringOut:stringOut)+input));
-    tLinearDelay_tickIn(&p->delayLine, stringInput);
-    tLinearDelay_setDelay(&p->delayLine, tExpSmooth_tick(&p->wlSmooth));
-    p->curr = stringOut;
-    return p->curr;
-}
-
-float   tSimpleLivingString_sample(tSimpleLivingString* const pl)
-{
-    _tSimpleLivingString* p = *pl;
-    return p->curr;
-}
-
-/* Living String*/
-
-void    tLivingString_init(tLivingString* const pl, float freq, float pickPos, float prepIndex,
-                           float dampFreq, float decay, float targetLev, float levSmoothFactor,
-                           float levStrength, int levMode)
-{
-    tLivingString_initToPool(pl, freq, pickPos, prepIndex, dampFreq, decay, targetLev, levSmoothFactor, levStrength, levMode, &leaf_mempool);
-}
-
-void tLivingString_free(tLivingString* const pl)
-{
-    tLivingString_freeFromPool(pl, &leaf_mempool);
-}
-
-void    tLivingString_initToPool    (tLivingString* const pl, float freq, float pickPos, float prepIndex,
-                                     float dampFreq, float decay, float targetLev, float levSmoothFactor,
-                                     float levStrength, int levMode, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tLivingString* p = *pl = (_tLivingString*) mpool_alloc(sizeof(_tLivingString), &m->pool);
-    
-    p->curr=0.0f;
-    tExpSmooth_initToPool(&p->wlSmooth, leaf.sampleRate/freq, 0.01, mp); // smoother for string wavelength (not freq, to avoid expensive divisions)
-    tLivingString_setFreq(pl, freq);
-    p->freq = freq;
-    tExpSmooth_initToPool(&p->ppSmooth, pickPos, 0.01, mp); // smoother for pick position
-    tLivingString_setPickPos(pl, pickPos);
-    p->prepIndex=prepIndex;
-    tLinearDelay_initToPool(&p->delLF,p->waveLengthInSamples, 2400, mp);
-    tLinearDelay_initToPool(&p->delUF,p->waveLengthInSamples, 2400, mp);
-    tLinearDelay_initToPool(&p->delUB,p->waveLengthInSamples, 2400, mp);
-    tLinearDelay_initToPool(&p->delLB,p->waveLengthInSamples, 2400, mp);
-    tLinearDelay_clear(&p->delLF);
-    tLinearDelay_clear(&p->delUF);
-    tLinearDelay_clear(&p->delUB);
-    tLinearDelay_clear(&p->delLB);
-    p->dampFreq = dampFreq;
-    tOnePole_initToPool(&p->bridgeFilter, dampFreq, mp);
-    tOnePole_initToPool(&p->nutFilter, dampFreq, mp);
-    tOnePole_initToPool(&p->prepFilterU, dampFreq, mp);
-    tOnePole_initToPool(&p->prepFilterL, dampFreq, mp);
-    tHighpass_initToPool(&p->DCblockerU,13, mp);
-    tHighpass_initToPool(&p->DCblockerL,13, mp);
-    p->decay=decay;
-    p->prepIndex = prepIndex;
-    tFeedbackLeveler_initToPool(&p->fbLevU, targetLev, levSmoothFactor, levStrength, levMode, mp);
-    tFeedbackLeveler_initToPool(&p->fbLevL, targetLev, levSmoothFactor, levStrength, levMode, mp);
-    p->levMode=levMode;
-}
-
-void    tLivingString_freeFromPool  (tLivingString* const pl, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tLivingString* p = *pl;
-    
-    tExpSmooth_freeFromPool(&p->wlSmooth, mp);
-    tExpSmooth_freeFromPool(&p->ppSmooth, mp);
-    tLinearDelay_freeFromPool(&p->delLF, mp);
-    tLinearDelay_freeFromPool(&p->delUF, mp);
-    tLinearDelay_freeFromPool(&p->delUB, mp);
-    tLinearDelay_freeFromPool(&p->delLB, mp);
-    tOnePole_freeFromPool(&p->bridgeFilter, mp);
-    tOnePole_freeFromPool(&p->nutFilter, mp);
-    tOnePole_freeFromPool(&p->prepFilterU, mp);
-    tOnePole_freeFromPool(&p->prepFilterL, mp);
-    tHighpass_freeFromPool(&p->DCblockerU, mp);
-    tHighpass_freeFromPool(&p->DCblockerL, mp);
-    tFeedbackLeveler_freeFromPool(&p->fbLevU, mp);
-    tFeedbackLeveler_freeFromPool(&p->fbLevL, mp);
-    
-    mpool_free(p, &m->pool);
-}
-
-void     tLivingString_setFreq(tLivingString* const pl, float freq)
-{    // NOTE: It is faster to set wavelength in samples directly
-    _tLivingString* p = *pl;
-    if (freq<20) freq=20;
-    else if (freq>10000) freq=10000;
-    p->waveLengthInSamples = leaf.sampleRate/freq;
-    tExpSmooth_setDest(&p->wlSmooth, p->waveLengthInSamples);
-}
-
-void     tLivingString_setWaveLength(tLivingString* const pl, float waveLength)
-{
-    _tLivingString* p = *pl;
-    if (waveLength<4.8) waveLength=4.8;
-    else if (waveLength>2400) waveLength=2400;
-    p->waveLengthInSamples = waveLength;
-    tExpSmooth_setDest(&p->wlSmooth, p->waveLengthInSamples);
-}
-
-void     tLivingString_setPickPos(tLivingString* const pl, float pickPos)
-{    // between 0 and 1
-    _tLivingString* p = *pl;
-    if (pickPos<0.f) pickPos=0.f;
-    else if (pickPos>1.f) pickPos=1.f;
-    p->pickPos = pickPos;
-    tExpSmooth_setDest(&p->ppSmooth, p->pickPos);
-}
-
-void     tLivingString_setPrepIndex(tLivingString* const pl, float prepIndex)
-{    // between 0 and 1
-    _tLivingString* p = *pl;
-    if (prepIndex<0.f) prepIndex=0.f;
-    else if (prepIndex>1.f) prepIndex=1.f;
-    p->prepIndex = prepIndex;
-}
-
-void     tLivingString_setDampFreq(tLivingString* const pl, float dampFreq)
-{
-    _tLivingString* p = *pl;
-    tOnePole_setFreq(&p->bridgeFilter, dampFreq);
-    tOnePole_setFreq(&p->nutFilter, dampFreq);
-    tOnePole_setFreq(&p->prepFilterU, dampFreq);
-    tOnePole_setFreq(&p->prepFilterL, dampFreq);
-}
-
-void     tLivingString_setDecay(tLivingString* const pl, float decay)
-{
-    _tLivingString* p = *pl;
-    p->decay=decay;
-}
-
-void     tLivingString_setTargetLev(tLivingString* const pl, float targetLev)
-{
-    _tLivingString* p = *pl;
-    tFeedbackLeveler_setTargetLevel(&p->fbLevU, targetLev);
-    tFeedbackLeveler_setTargetLevel(&p->fbLevL, targetLev);
-}
-
-void     tLivingString_setLevSmoothFactor(tLivingString* const pl, float levSmoothFactor)
-{
-    _tLivingString* p = *pl;
-    tFeedbackLeveler_setFactor(&p->fbLevU, levSmoothFactor);
-    tFeedbackLeveler_setFactor(&p->fbLevL, levSmoothFactor);
-}
-
-void     tLivingString_setLevStrength(tLivingString* const pl, float levStrength)
-{
-    _tLivingString* p = *pl;
-    tFeedbackLeveler_setStrength(&p->fbLevU, levStrength);
-    tFeedbackLeveler_setStrength(&p->fbLevL, levStrength);
-}
-
-void     tLivingString_setLevMode(tLivingString* const pl, int levMode)
-{
-    _tLivingString* p = *pl;
-    tFeedbackLeveler_setMode(&p->fbLevU, levMode);
-    tFeedbackLeveler_setMode(&p->fbLevL, levMode);
-    p->levMode=levMode;
-}
-
-float   tLivingString_tick(tLivingString* const pl, float input)
-{
-    _tLivingString* p = *pl;
-    
-    // from pickPos upwards=forwards
-    float fromLF=tLinearDelay_tickOut(&p->delLF);
-    float fromUF=tLinearDelay_tickOut(&p->delUF);
-    float fromUB=tLinearDelay_tickOut(&p->delUB);
-    float fromLB=tLinearDelay_tickOut(&p->delLB);
-    // into upper half of string, from nut, going backwards
-    float fromNut=-tFeedbackLeveler_tick(&p->fbLevU, (p->levMode==0?p->decay:1)*tHighpass_tick(&p->DCblockerU, tOnePole_tick(&p->nutFilter, fromUF)));
-    tLinearDelay_tickIn(&p->delUB, fromNut);
-    // into lower half of string, from pickpoint, going backwards
-    float fromLowerPrep=-tOnePole_tick(&p->prepFilterL, fromLF);
-    float intoLower=p->prepIndex*fromLowerPrep+(1.0f - p->prepIndex)*fromUB+input;
-    tLinearDelay_tickIn(&p->delLB, intoLower);
-    // into lower half of string, from bridge
-    float fromBridge=-tFeedbackLeveler_tick(&p->fbLevL, (p->levMode==0?p->decay:1.0f)*tHighpass_tick(&p->DCblockerL, tOnePole_tick(&p->bridgeFilter, fromLB)));
-    tLinearDelay_tickIn(&p->delLF, fromBridge);
-    // into upper half of string, from pickpoint, going forwards/upwards
-    float fromUpperPrep=-tOnePole_tick(&p->prepFilterU, fromUB);
-    float intoUpper=p->prepIndex*fromUpperPrep+(1.0f - p->prepIndex)*fromLF+input;
-    tLinearDelay_tickIn(&p->delUF, intoUpper);
-    // update all delay lengths
-    float pickP=tExpSmooth_tick(&p->ppSmooth);
-    float wLen=tExpSmooth_tick(&p->wlSmooth);
-    float lowLen=pickP*wLen;
-    float upLen=(1.0f-pickP)*wLen;
-    tLinearDelay_setDelay(&p->delLF, lowLen);
-    tLinearDelay_setDelay(&p->delLB, lowLen);
-    tLinearDelay_setDelay(&p->delUF, upLen);
-    tLinearDelay_setDelay(&p->delUB, upLen);
-    p->curr = fromBridge;
-    return p->curr;
-}
-
-float   tLivingString_sample(tLivingString* const pl)
-{
-    _tLivingString* p = *pl;
-    return p->curr;
-}
-
-///Reed Table model
-//default values from STK are 0.6 offset and -0.8 slope
-
-void    tReedTable_init      (tReedTable* const pm, float offset, float slope)
-{
-    _tReedTable* p = *pm = (_tReedTable*) leaf_alloc(sizeof(_tReedTable));
-    
-    p->offset = offset;
-    p->slope = slope;
-}
-
-void    tReedTable_free      (tReedTable* const pm)
-{
-    _tReedTable* p = *pm;
-    
-    leaf_free(p);
-}
-
-void    tReedTable_initToPool   (tReedTable* const pm, float offset, float slope, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tReedTable* p = *pm = (_tReedTable*) mpool_alloc(sizeof(_tReedTable), &m->pool);
-    
-    p->offset = offset;
-    p->slope = slope;
-}
-
-void    tReedTable_freeFromPool (tReedTable* const pm, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tReedTable* p = *pm;
-    
-    mpool_free(p, &m->pool);
-}
-
-float   tReedTable_tick      (tReedTable* const pm, float input)
-{
-    _tReedTable* p = *pm;
-    
-    // The input is differential pressure across the reed.
-    float output = p->offset + (p->slope * input);
-    
-    // If output is > 1, the reed has slammed shut and the
-    // reflection function value saturates at 1.0.
-    if ( output > 1.0f) output = 1.0f;
-    
-    // This is nearly impossible in a physical system, but
-    // a reflection function value of -1.0 corresponds to
-    // an open end (and no discontinuity in bore profile).
-    if ( output < -1.0f) output = -1.0f;
-    
-    return output;
-}
-
-float   tReedTable_tanh_tick     (tReedTable* const pm, float input)
-{
-    _tReedTable* p = *pm;
-    
-    // The input is differential pressure across the reed.
-    float output = p->offset + (p->slope * input);
-    
-    // If output is > 1, the reed has slammed shut and the
-    // reflection function value saturates at 1.0.
-    return tanhf(output);
-}
-
-void     tReedTable_setOffset   (tReedTable* const pm, float offset)
-{
-    _tReedTable* p = *pm;
-    p->offset = offset;
-}
-
-void     tReedTable_setSlope   (tReedTable* const pm, float slope)
-{
-    _tReedTable* p = *pm;
-    p->slope = slope;
-}
--- a/LEAF/Src/leaf-reverb.c
+++ /dev/null
@@ -1,925 +1,0 @@
-/*==============================================================================
-
-    leaf-reverb.c
-    Created: 20 Jan 2017 12:02:04pm
-    Author:  Michael R Mulshine
-
-==============================================================================*/
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-reverb.h"
-#include "..\leaf.h"
-
-#else
-
-#include "../Inc/leaf-reverb.h"
-#include "../leaf.h"
-
-#endif
-
-// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ PRCReverb ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ //
-void    tPRCReverb_init(tPRCReverb* const rev, float t60)
-{
-    _tPRCReverb* r = *rev = (_tPRCReverb*) leaf_alloc(sizeof(_tPRCReverb));
-    
-    if (t60 <= 0.0f) t60 = 0.001f;
-    
-    r->inv_441 = 1.0f/44100.0f;
-    
-    int lengths[4] = { 341, 613, 1557, 2137 }; // Delay lengths for 44100 Hz sample rate.
-    double scaler = leaf.sampleRate * r->inv_441;
-    
-    int delay, i;
-    if (scaler != 1.0f)
-    {
-        for (i=0; i<4; i++)
-        {
-            delay = (int) scaler * lengths[i];
-            
-            if ( (delay & 1) == 0)          delay++;
-            
-            while ( !LEAF_isPrime(delay) )  delay += 2;
-            
-            lengths[i] = delay;
-        }
-    }
-    
-    tDelay_init(&r->allpassDelays[0], lengths[0], lengths[0] * 2);
-    tDelay_init(&r->allpassDelays[1], lengths[1], lengths[1] * 2);
-    tDelay_init(&r->combDelay, lengths[2], lengths[2] * 2);
-    
-    tPRCReverb_setT60(rev, t60);
-    
-    r->allpassCoeff = 0.7f;
-    r->mix = 0.5f;
-}
-
-void tPRCReverb_free(tPRCReverb* const rev)
-{
-    _tPRCReverb* r = *rev;
-    
-    tDelay_free(&r->allpassDelays[0]);
-    tDelay_free(&r->allpassDelays[1]);
-    tDelay_free(&r->combDelay);
-    leaf_free(r);
-}
-
-void    tPRCReverb_initToPool   (tPRCReverb* const rev, float t60, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPRCReverb* r = *rev = (_tPRCReverb*) mpool_alloc(sizeof(_tPRCReverb), &m->pool);
-    
-    if (t60 <= 0.0f) t60 = 0.001f;
-    
-    r->inv_441 = 1.0f/44100.0f;
-    
-    int lengths[4] = { 341, 613, 1557, 2137 }; // Delay lengths for 44100 Hz sample rate.
-    double scaler = leaf.sampleRate * r->inv_441;
-    
-    int delay, i;
-    if (scaler != 1.0f)
-    {
-        for (i=0; i<4; i++)
-        {
-            delay = (int) scaler * lengths[i];
-            
-            if ( (delay & 1) == 0)          delay++;
-            
-            while ( !LEAF_isPrime(delay) )  delay += 2;
-            
-            lengths[i] = delay;
-        }
-    }
-    
-    tDelay_initToPool(&r->allpassDelays[0], lengths[0], lengths[0] * 2, mp);
-    tDelay_initToPool(&r->allpassDelays[1], lengths[1], lengths[1] * 2, mp);
-    tDelay_initToPool(&r->combDelay, lengths[2], lengths[2] * 2, mp);
-    
-    tPRCReverb_setT60(rev, t60);
-    
-    r->allpassCoeff = 0.7f;
-    r->mix = 0.5f;
-}
-
-void    tPRCReverb_freeFromPool (tPRCReverb* const rev, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tPRCReverb* r = *rev;
-    
-    tDelay_freeFromPool(&r->allpassDelays[0], mp);
-    tDelay_freeFromPool(&r->allpassDelays[1], mp);
-    tDelay_freeFromPool(&r->combDelay, mp);
-    mpool_free(r, &m->pool);
-}
-
-void    tPRCRevert_clear(tPRCReverb* const rev)
-{
-    _tPRCReverb* r = *rev;
-    
-    tDelay_clear(&r->allpassDelays[0]);
-    tDelay_clear(&r->allpassDelays[1]);
-    tDelay_clear(&r->combDelay);
-}
-
-void    tPRCReverb_setT60(tPRCReverb* const rev, float t60)
-{
-    _tPRCReverb* r = *rev;
-    
-    if ( t60 <= 0.0f ) t60 = 0.001f;
-    
-    r->t60 = t60;
-    
-    r->combCoeff = pow(10.0f, (-3.0f * tDelay_getDelay(&r->combDelay) * leaf.invSampleRate / t60 ));
-    
-}
-
-void    tPRCReverb_setMix(tPRCReverb* const rev, float mix)
-{
-    _tPRCReverb* r = *rev;
-    r->mix = mix;
-}
-
-float   tPRCReverb_tick(tPRCReverb* const rev, float input)
-{
-    _tPRCReverb* r = *rev;
-    
-    float temp, temp0, temp1, temp2;
-    float out;
-    
-    r->lastIn = input;
-    
-    temp = tDelay_getLastOut(&r->allpassDelays[0]);
-    temp0 = r->allpassCoeff * temp;
-    temp0 += input;
-    tDelay_tick(&r->allpassDelays[0], temp0);
-    temp0 = -( r->allpassCoeff * temp0) + temp;
-    
-    temp = tDelay_getLastOut(&r->allpassDelays[1]);
-    temp1 = r->allpassCoeff * temp;
-    temp1 += temp0;
-    tDelay_tick(&r->allpassDelays[1], temp1);
-    temp1 = -(r->allpassCoeff * temp1) + temp;
-    
-    temp2 = temp1 + ( r->combCoeff * tDelay_getLastOut(&r->combDelay));
-    
-    out = r->mix * tDelay_tick(&r->combDelay, temp2);
-    
-    temp = (1.0f - r->mix) * input;
-    
-    out += temp;
-    
-    r->lastOut = out;
-    
-    return out;
-}
-
-void     tPRCReverbSampleRateChanged (tPRCReverb* const rev)
-{
-    _tPRCReverb* r = *rev;
-    r->combCoeff = pow(10.0f, (-3.0f * tDelay_getDelay(&r->combDelay) * leaf.invSampleRate / r->t60 ));
-}
-
-/* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ NReverb ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ */
-void    tNReverb_init(tNReverb* const rev, float t60)
-{
-    _tNReverb* r = *rev = (_tNReverb*) leaf_alloc(sizeof(_tNReverb));
-    
-    if (t60 <= 0.0f) t60 = 0.001f;
-    
-    r->inv_441 = 1.0f/44100.0f;
-    
-    int lengths[15] = {1433, 1601, 1867, 2053, 2251, 2399, 347, 113, 37, 59, 53, 43, 37, 29, 19}; // Delay lengths for 44100 Hz sample rate.
-    double scaler = leaf.sampleRate / 25641.0f;
-    
-    int delay, i;
-    
-    for (i=0; i < 15; i++)
-    {
-        delay = (int) scaler * lengths[i];
-        if ( (delay & 1) == 0)
-            delay++;
-        while ( !LEAF_isPrime(delay) )
-            delay += 2;
-        lengths[i] = delay;
-    }
-    
-    for ( i=0; i<6; i++ )
-    {
-    	tLinearDelay_init(&r->combDelays[i], lengths[i], lengths[i] * 2.0f);
-    	tLinearDelay_clear(&r->combDelays[i]);
-        r->combCoeffs[i] = pow(10.0, (-3 * lengths[i] * leaf.invSampleRate / t60));
-    }
-    
-    for ( i=0; i<8; i++ )
-    {
-    	tLinearDelay_init(&r->allpassDelays[i], lengths[i+6], lengths[i+6] * 2.0f);
-    	tLinearDelay_clear(&r->allpassDelays[i]);
-    }
-
-    
-    tNReverb_setT60(rev, t60);
-    r->allpassCoeff = 0.7f;
-    r->mix = 0.3f;
-}
-
-void    tNReverb_free(tNReverb* const rev)
-{
-    _tNReverb* r = *rev;
-    
-    for (int i = 0; i < 6; i++)
-    {
-    	tLinearDelay_free(&r->combDelays[i]);
-    }
-    
-    for (int i = 0; i < 8; i++)
-    {
-    	tLinearDelay_free(&r->allpassDelays[i]);
-    }
-    
-    leaf_free(r);
-}
-
-void    tNReverb_initToPool     (tNReverb* const rev, float t60, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tNReverb* r = *rev = (_tNReverb*) mpool_alloc(sizeof(_tNReverb), &m->pool);
-    
-    if (t60 <= 0.0f) t60 = 0.001f;
-    
-    r->inv_441 = 1.0f/44100.0f;
-    
-    int lengths[15] = {1433, 1601, 1867, 2053, 2251, 2399, 347, 113, 37, 59, 53, 43, 37, 29, 19}; // Delay lengths for 44100 Hz sample rate.
-    double scaler = leaf.sampleRate / 25641.0f;
-    
-    int delay, i;
-    
-    for (i=0; i < 15; i++)
-    {
-        delay = (int) scaler * lengths[i];
-        if ( (delay & 1) == 0)
-            delay++;
-        while ( !LEAF_isPrime(delay) )
-            delay += 2;
-        lengths[i] = delay;
-    }
-    
-    for ( i=0; i<6; i++ )
-    {
-        tLinearDelay_initToPool(&r->combDelays[i], lengths[i], lengths[i] * 2.0f, mp);
-        r->combCoeffs[i] = pow(10.0, (-3 * lengths[i] * leaf.invSampleRate / t60));
-    }
-    
-    for ( i=0; i<8; i++ )
-    {
-        tLinearDelay_initToPool(&r->allpassDelays[i], lengths[i+6], lengths[i+6] * 2.0f, mp);
-    }
-    
-    
-    tNReverb_setT60(rev, t60);
-    r->allpassCoeff = 0.7f;
-    r->mix = 0.3f;
-}
-
-void    tNReverb_freeFromPool   (tNReverb* const rev, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tNReverb* r = *rev;
-    
-    for (int i = 0; i < 6; i++)
-    {
-        tLinearDelay_freeFromPool(&r->combDelays[i], mp);
-    }
-    
-    for (int i = 0; i < 8; i++)
-    {
-        tLinearDelay_freeFromPool(&r->allpassDelays[i], mp);
-    }
-    
-    mpool_free(r, &m->pool);
-}
-
-void    tNReverb_setT60(tNReverb* const rev, float t60)
-{
-    _tNReverb* r = *rev;
-    
-    if (t60 <= 0.0f)           t60 = 0.001f;
-    
-    r->t60 = t60;
-    
-    for (int i=0; i<6; i++)   r->combCoeffs[i] = pow(10.0, (-3.0 * tLinearDelay_getDelay(&r->combDelays[i]) * leaf.invSampleRate / t60 ));
-    
-}
-
-void    tNReverb_setMix(tNReverb* const rev, float mix)
-{
-    _tNReverb* r = *rev;
-    r->mix = mix;
-}
-
-void    tNReverb_clear             (tNReverb* const rev)
-{
-    _tNReverb* r = *rev;
-    
-    for (int i = 0; i < 6; i++)
-    {
-        tLinearDelay_clear(&r->combDelays[i]);
-    }
-    
-    for (int i = 0; i < 8; i++)
-    {
-        tLinearDelay_clear(&r->allpassDelays[i]);
-    }
-}
-
-float   tNReverb_tick(tNReverb* const rev, float input)
-{
-    _tNReverb* r = *rev;
-    r->lastIn = input;
-    
-    float temp, temp0, temp1, temp2, out;
-    int i;
-    
-    temp0 = 0.0;
-    for ( i=0; i<6; i++ )
-    {
-        temp = input + (r->combCoeffs[i] * tLinearDelay_getLastOut(&r->combDelays[i]));
-        temp0 += tLinearDelay_tick(&r->combDelays[i],temp);
-    }
-    
-    for ( i=0; i<3; i++ )
-    {
-        temp = tLinearDelay_getLastOut(&r->allpassDelays[i]);
-        temp1 = r->allpassCoeff * temp;
-        temp1 += temp0;
-        tLinearDelay_tick(&r->allpassDelays[i], temp1);
-        temp0 = -(r->allpassCoeff * temp1) + temp;
-    }
-    
-    // One-pole lowpass filter.
-    r->lowpassState = 0.7f * r->lowpassState + 0.3f * temp0;
-
-    temp = tLinearDelay_getLastOut(&r->allpassDelays[3]);
-    temp1 = r->allpassCoeff * temp;
-    temp1 += r->lowpassState;
-    tLinearDelay_tick(&r->allpassDelays[3], temp1 );
-    temp1 = -(r->allpassCoeff * temp1) + temp;
-    
-    temp = tLinearDelay_getLastOut(&r->allpassDelays[4]);
-    temp2 = r->allpassCoeff * temp;
-    temp2 += temp1;
-    tLinearDelay_tick(&r->allpassDelays[4], temp2 );
-    out = -( r->allpassCoeff * temp2 ) + temp ;
-    
-    //the other channel in stereo version below
-/*
-     temp = tLinearDelay_getLastOut(&r->allpassDelays[5]);
-     temp3 = r->allpassCoeff * temp;
-     temp3 += temp1;
-     tLinearDelay_tick(&r->allpassDelays[5], temp3 );
-     out = r->mix *( - ( r->allpassCoeff * temp3 ) + temp );
-*/
-
-    temp = ( 1.0f - r->mix ) * input;
-
-    out += temp;
-
-    r->lastOut = out;
-
-    return out;
-}
-
-void   tNReverb_tickStereo(tNReverb* const rev, float input, float* output)
-{
-    _tNReverb* r = *rev;
-    r->lastIn = input;
-
-    float temp, temp0, temp1, temp2, temp3, out;
-    int i;
-
-    temp0 = 0.0;
-    for ( i=0; i<6; i++ )
-    {
-        temp = input + (r->combCoeffs[i] * tLinearDelay_getLastOut(&r->combDelays[i]));
-        temp0 += tLinearDelay_tick(&r->combDelays[i],temp);
-    }
-
-    for ( i=0; i<3; i++ )
-    {
-        temp = tLinearDelay_getLastOut(&r->allpassDelays[i]);
-        temp1 = r->allpassCoeff * temp;
-        temp1 += temp0;
-        tLinearDelay_tick(&r->allpassDelays[i], temp1);
-        temp0 = -(r->allpassCoeff * temp1) + temp;
-    }
-
-    // One-pole lowpass filter.
-    r->lowpassState = 0.7f * r->lowpassState + 0.3f * temp0;
-
-    temp = tLinearDelay_getLastOut(&r->allpassDelays[3]);
-    temp1 = r->allpassCoeff * temp;
-    temp1 += r->lowpassState;
-    tLinearDelay_tick(&r->allpassDelays[3], temp1 );
-    temp1 = -(r->allpassCoeff * temp1) + temp;
-
-    float drymix = ( 1.0f - r->mix ) * input;
-
-    temp = tLinearDelay_getLastOut(&r->allpassDelays[4]);
-    temp2 = r->allpassCoeff * temp;
-    temp2 += temp1;
-    tLinearDelay_tick(&r->allpassDelays[4], temp2 );
-    output[0] = -( r->allpassCoeff * temp2 ) + temp + drymix;
-    out = output[0];
-
-
-    temp = tLinearDelay_getLastOut(&r->allpassDelays[5]);
-    temp3 = r->allpassCoeff * temp;
-    temp3 += temp1;
-    tLinearDelay_tick(&r->allpassDelays[5], temp3 );
-    output[1] = r->mix *( - ( r->allpassCoeff * temp3 ) + temp + drymix);
-
-    r->lastOut = out;
-}
-
-void     tNReverbSampleRateChanged (tNReverb* const rev)
-{
-    _tNReverb* r = *rev;
-    for (int i=0; i<6; i++)   r->combCoeffs[i] = pow(10.0, (-3.0 * tLinearDelay_getDelay(&r->combDelays[i]) * leaf.invSampleRate / r->t60 ));
-}
-
-// ======================================DATTORRO=========================================
-
-#define SAMP(in) (in*r->t)
-
-float       in_allpass_delays[4] = { 4.771f, 3.595f, 12.73f, 9.307f };
-float       in_allpass_gains[4] = { 0.75f, 0.75f, 0.625f, 0.625f };
-
-
-void    tDattorroReverb_init              (tDattorroReverb* const rev)
-{
-    tDattorroReverb_initToPool(rev, &leaf_mempool);
-}
-
-void    tDattorroReverb_free              (tDattorroReverb* const rev)
-{
-    tDattorroReverb_freeFromPool(rev, &leaf_mempool);
-}
-
-void    tDattorroReverb_initToPool        (tDattorroReverb* const rev, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tDattorroReverb* r = *rev = (_tDattorroReverb*) mpool_alloc(sizeof(_tDattorroReverb), &m->pool);
-    
-    r->size_max = 2.0f;
-    r->size = 1.f;
-    r->t = r->size * leaf.sampleRate * 0.001f;
-    r->frozen = 0;
-    // INPUT
-    tTapeDelay_initToPool(&r->in_delay, 0.f, SAMP(200.f), mp);
-    tOnePole_initToPool(&r->in_filter, 1.f, mp);
-    
-    for (int i = 0; i < 4; i++)
-    {
-        tAllpass_initToPool(&r->in_allpass[i], SAMP(in_allpass_delays[i]), SAMP(20.f), mp); // * r->size_max
-        tAllpass_setGain(&r->in_allpass[i], in_allpass_gains[i]);
-    }
-    
-    // FEEDBACK 1
-    tAllpass_initToPool(&r->f1_allpass, SAMP(30.51f), SAMP(100.f), mp); // * r->size_max
-    tAllpass_setGain(&r->f1_allpass, 0.7f);
-    
-    tTapeDelay_initToPool(&r->f1_delay_1, SAMP(141.69f), SAMP(200.0f) * r->size_max + 1, mp);
-    tTapeDelay_initToPool(&r->f1_delay_2, SAMP(89.24f), SAMP(100.0f) * r->size_max + 1, mp);
-    tTapeDelay_initToPool(&r->f1_delay_3, SAMP(125.f), SAMP(200.0f) * r->size_max + 1, mp);
-    
-    tOnePole_initToPool(&r->f1_filter, 1.f, mp);
-    
-    tHighpass_initToPool(&r->f1_hp, 20.f, mp);
-    
-    tCycle_initToPool(&r->f1_lfo, mp);
-    tCycle_setFreq(&r->f1_lfo, 0.1f);
-    
-    // FEEDBACK 2
-    tAllpass_initToPool(&r->f2_allpass, SAMP(22.58f), SAMP(100.f), mp); // * r->size_max
-    tAllpass_setGain(&r->f2_allpass, 0.7f);
-    
-    tTapeDelay_initToPool(&r->f2_delay_1, SAMP(149.62f), SAMP(200.f) * r->size_max + 1, mp);
-    tTapeDelay_initToPool(&r->f2_delay_2, SAMP(60.48f), SAMP(100.f) * r->size_max + 1, mp);
-    tTapeDelay_initToPool(&r->f2_delay_3, SAMP(106.28f), SAMP(200.f) * r->size_max + 1, mp);
-    
-    tOnePole_initToPool(&r->f2_filter, 1.f, mp);
-    
-    tHighpass_initToPool(&r->f2_hp, 20.f, mp);
-    
-    tCycle_initToPool(&r->f2_lfo, mp);
-    tCycle_setFreq(&r->f2_lfo, 0.07f);
-    
-    
-    // PARAMETERS
-    tDattorroReverb_setMix(rev, 0.5f);
-    
-    tDattorroReverb_setInputDelay(rev,  0.f);
-    
-    tDattorroReverb_setInputFilter(rev, 10000.f);
-    
-    tDattorroReverb_setFeedbackFilter(rev, 5000.f);
-    
-    tDattorroReverb_setFeedbackGain(rev, 0.4f);
-}
-
-void    tDattorroReverb_freeFromPool      (tDattorroReverb* const rev, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tDattorroReverb* r = *rev;
-    
-    // INPUT
-    tTapeDelay_freeFromPool(&r->in_delay, mp);
-    tOnePole_freeFromPool(&r->in_filter, mp);
-    
-    for (int i = 0; i < 4; i++)
-    {
-        tAllpass_freeFromPool(&r->in_allpass[i], mp);
-    }
-    
-    // FEEDBACK 1
-    tAllpass_freeFromPool(&r->f1_allpass, mp);
-    
-    tTapeDelay_freeFromPool(&r->f1_delay_1, mp);
-    tTapeDelay_freeFromPool(&r->f1_delay_2, mp);
-    tTapeDelay_freeFromPool(&r->f1_delay_3, mp);
-    
-    tOnePole_freeFromPool(&r->f1_filter, mp);
-    
-    tHighpass_freeFromPool(&r->f1_hp, mp);
-    
-    tCycle_freeFromPool(&r->f1_lfo, mp);
-    
-    // FEEDBACK 2
-    tAllpass_freeFromPool(&r->f2_allpass, mp);
-    
-    tTapeDelay_freeFromPool(&r->f2_delay_1, mp);
-    tTapeDelay_freeFromPool(&r->f2_delay_2, mp);
-    tTapeDelay_freeFromPool(&r->f2_delay_3, mp);
-    
-    tOnePole_freeFromPool(&r->f2_filter, mp);
-    
-    tHighpass_freeFromPool(&r->f2_hp, mp);
-    
-    tCycle_freeFromPool(&r->f2_lfo, mp);
-    
-    mpool_free(r, &m->pool);
-}
-
-void    tDattorroReverb_clear             (tDattorroReverb* const rev)
-{
-    _tDattorroReverb* r = *rev;
-    
-    tTapeDelay_clear(&r->in_delay);
-    tTapeDelay_clear(&r->f1_delay_1);
-    tTapeDelay_clear(&r->f1_delay_2);
-    tTapeDelay_clear(&r->f1_delay_3);
-    tTapeDelay_clear(&r->f2_delay_1);
-    tTapeDelay_clear(&r->f2_delay_2);
-    tTapeDelay_clear(&r->f2_delay_3);
-}
-
-float   tDattorroReverb_tick              (tDattorroReverb* const rev, float input)
-{
-    _tDattorroReverb* r = *rev;
-    
-
-    float in_sample, f1_sample,f1_delay_2_sample,  f2_sample, f2_delay_2_sample;
-
-    if (r->frozen)
-    {
-    	input = 0.0f;
-    	//r->f1_last = 0.0f;
-    	//r->f2_last = 0.0f;
-	}
-	// INPUT
-	in_sample = tTapeDelay_tick(&r->in_delay, input);
-
-	in_sample = tOnePole_tick(&r->in_filter, in_sample);
-
-	for (int i = 0; i < 4; i++)
-	{
-		in_sample = tAllpass_tick(&r->in_allpass[i], in_sample);
-	}
-
-	// FEEDBACK 1
-	f1_sample = in_sample + r->f2_last; // + f2_last_out;
-
-	tAllpass_setDelay(&r->f1_allpass, SAMP(30.51f) + tCycle_tick(&r->f1_lfo) * SAMP(4.0f));
-
-	f1_sample = tAllpass_tick(&r->f1_allpass, f1_sample);
-
-	f1_sample = tTapeDelay_tick(&r->f1_delay_1, f1_sample);
-
-	f1_sample = tOnePole_tick(&r->f1_filter, f1_sample);
-
-	f1_sample = f1_sample + r->f1_delay_2_last * 0.5f;
-
-	f1_delay_2_sample = tTapeDelay_tick(&r->f1_delay_2, f1_sample * 0.5f);
-
-	r->f1_delay_2_last = f1_delay_2_sample;
-
-	f1_sample = r->f1_delay_2_last + f1_sample;
-
-	f1_sample = tHighpass_tick(&r->f1_hp, f1_sample);
-
-	f1_sample *= r->feedback_gain;
-
-	r->f1_last = tTapeDelay_tick(&r->f1_delay_3, f1_sample);
-
-	// FEEDBACK 2
-	f2_sample = in_sample + r->f1_last;
-
-	tAllpass_setDelay(&r->f2_allpass, SAMP(22.58f) + tCycle_tick(&r->f2_lfo) * SAMP(4.0f));
-
-	f2_sample = tAllpass_tick(&r->f2_allpass, f2_sample);
-
-	f2_sample = tTapeDelay_tick(&r->f2_delay_1, f2_sample);
-
-	f2_sample = tOnePole_tick(&r->f2_filter, f2_sample);
-
-	f2_sample = f2_sample + r->f2_delay_2_last * 0.5f;
-
-	f2_delay_2_sample = tTapeDelay_tick(&r->f2_delay_2, f2_sample * 0.5f);
-
-	r->f2_delay_2_last = f2_delay_2_sample;
-
-	f2_sample = r->f2_delay_2_last + f2_sample;
-
-	f2_sample = tHighpass_tick(&r->f2_hp, f2_sample);
-
-	f2_sample *= r->feedback_gain;
-
-	r->f2_last = tTapeDelay_tick(&r->f2_delay_3, f2_sample);
-    
-    // TAP OUT 1
-    f1_sample =     tTapeDelay_tapOut(&r->f1_delay_1, SAMP(8.9f)) +
-    tTapeDelay_tapOut(&r->f1_delay_1, SAMP(99.8f));
-    
-    f1_sample -=    tTapeDelay_tapOut(&r->f1_delay_2, SAMP(64.2f));
-    
-    f1_sample +=    tTapeDelay_tapOut(&r->f1_delay_3, SAMP(67.f));
-    
-    f1_sample -=    tTapeDelay_tapOut(&r->f2_delay_1, SAMP(66.8f));
-    
-    f1_sample -=    tTapeDelay_tapOut(&r->f2_delay_2, SAMP(6.3f));
-    
-    f1_sample -=    tTapeDelay_tapOut(&r->f2_delay_3, SAMP(35.8f));
-    
-    f1_sample *=    0.14f;
-    
-    // TAP OUT 2
-    f2_sample =     tTapeDelay_tapOut(&r->f2_delay_1, SAMP(11.8f)) +
-    tTapeDelay_tapOut(&r->f2_delay_1, SAMP(121.7f));
-    
-    f2_sample -=    tTapeDelay_tapOut(&r->f2_delay_2, SAMP(6.3f));
-    
-    f2_sample +=    tTapeDelay_tapOut(&r->f2_delay_3, SAMP(89.7f));
-    
-    f2_sample -=    tTapeDelay_tapOut(&r->f1_delay_1, SAMP(70.8f));
-    
-    f2_sample -=    tTapeDelay_tapOut(&r->f1_delay_2, SAMP(11.2f));
-    
-    f2_sample -=    tTapeDelay_tapOut(&r->f1_delay_3, SAMP(4.1f));
-    
-    f2_sample *=    0.14f;
-    
-    float sample = (f1_sample + f2_sample) * 0.5f;
-    
-    return (input * (1.0f - r->mix) + sample * r->mix);
-}
-
-void   tDattorroReverb_tickStereo              (tDattorroReverb* const rev, float input, float* output)
-{
-    _tDattorroReverb* r = *rev;
-    float in_sample, f1_sample,f1_delay_2_sample,  f2_sample, f2_delay_2_sample;
-
-    if (r->frozen)
-    {
-    	input = 0.0f;
-    	//r->f1_last = 0.0f;
-    	//r->f2_last = 0.0f;
-    }
-	// INPUT
-	in_sample = tTapeDelay_tick(&r->in_delay, input);
-
-	in_sample = tOnePole_tick(&r->in_filter, in_sample);
-
-	for (int i = 0; i < 4; i++)
-	{
-		in_sample = tAllpass_tick(&r->in_allpass[i], in_sample);
-	}
-
-
-		// FEEDBACK 1
-		f1_sample = in_sample + r->f2_last; // + f2_last_out;
-
-		tAllpass_setDelay(&r->f1_allpass, SAMP(30.51f) + tCycle_tick(&r->f1_lfo) * SAMP(4.0f));
-
-		f1_sample = tAllpass_tick(&r->f1_allpass, f1_sample);
-
-		f1_sample = tTapeDelay_tick(&r->f1_delay_1, f1_sample);
-
-		f1_sample = tOnePole_tick(&r->f1_filter, f1_sample);
-
-		f1_sample = f1_sample + r->f1_delay_2_last * 0.5f;
-
-		f1_delay_2_sample = tTapeDelay_tick(&r->f1_delay_2, f1_sample * 0.5f);
-
-		r->f1_delay_2_last = f1_delay_2_sample;
-
-		f1_sample = r->f1_delay_2_last + f1_sample;
-
-		f1_sample = tHighpass_tick(&r->f1_hp, f1_sample);
-
-		f1_sample *= r->feedback_gain;
-
-		if (r->frozen)
-		{
-			f1_sample = 0.0f;
-		}
-
-		r->f1_last = tTapeDelay_tick(&r->f1_delay_3, f1_sample);
-
-		// FEEDBACK 2
-		f2_sample = in_sample + r->f1_last;
-
-		tAllpass_setDelay(&r->f2_allpass, SAMP(22.58f) + tCycle_tick(&r->f2_lfo) * SAMP(4.0f));
-
-		f2_sample = tAllpass_tick(&r->f2_allpass, f2_sample);
-
-		f2_sample = tTapeDelay_tick(&r->f2_delay_1, f2_sample);
-
-		f2_sample = tOnePole_tick(&r->f2_filter, f2_sample);
-
-		f2_sample = f2_sample + r->f2_delay_2_last * 0.5f;
-
-		f2_delay_2_sample = tTapeDelay_tick(&r->f2_delay_2, f2_sample * 0.5f);
-
-		r->f2_delay_2_last = f2_delay_2_sample;
-
-		f2_sample = r->f2_delay_2_last + f2_sample;
-
-		f2_sample = tHighpass_tick(&r->f2_hp, f2_sample);
-
-		f2_sample *= r->feedback_gain;
-
-		if (r->frozen)
-		{
-			f2_sample = 0.0f;
-		}
-		r->f2_last = tTapeDelay_tick(&r->f2_delay_3, f2_sample);
-
-
-
-    // TAP OUT 1
-    f1_sample =     tTapeDelay_tapOut(&r->f1_delay_1, SAMP(8.9f)) +
-    tTapeDelay_tapOut(&r->f1_delay_1, SAMP(99.8f));
-
-    f1_sample -=    tTapeDelay_tapOut(&r->f1_delay_2, SAMP(64.2f));
-
-    f1_sample +=    tTapeDelay_tapOut(&r->f1_delay_3, SAMP(67.f));
-
-    f1_sample -=    tTapeDelay_tapOut(&r->f2_delay_1, SAMP(66.8f));
-
-    f1_sample -=    tTapeDelay_tapOut(&r->f2_delay_2, SAMP(6.3f));
-
-    f1_sample -=    tTapeDelay_tapOut(&r->f2_delay_3, SAMP(35.8f));
-
-    f1_sample *=    0.14f;
-
-    // TAP OUT 2
-    f2_sample =     tTapeDelay_tapOut(&r->f2_delay_1, SAMP(11.8f)) +
-    tTapeDelay_tapOut(&r->f2_delay_1, SAMP(121.7f));
-
-    f2_sample -=    tTapeDelay_tapOut(&r->f2_delay_2, SAMP(6.3f));
-
-    f2_sample +=    tTapeDelay_tapOut(&r->f2_delay_3, SAMP(89.7f));
-
-    f2_sample -=    tTapeDelay_tapOut(&r->f1_delay_1, SAMP(70.8f));
-
-    f2_sample -=    tTapeDelay_tapOut(&r->f1_delay_2, SAMP(11.2f));
-
-    f2_sample -=    tTapeDelay_tapOut(&r->f1_delay_3, SAMP(4.1f));
-
-    f2_sample *=    0.14f;
-
-    output[0] = input * (1.0f - r->mix) + f1_sample  * r->mix;
-    output[1] = input * (1.0f - r->mix) + f2_sample * r->mix;
-
-}
-
-void    tDattorroReverb_setMix            (tDattorroReverb* const rev, float mix)
-{
-    _tDattorroReverb* r = *rev;
-    r->mix = LEAF_clip(0.0f, mix, 1.0f);
-}
-
-void    tDattorroReverb_setFreeze            (tDattorroReverb* const rev, uint32_t freeze)
-{
-    _tDattorroReverb* r = *rev;
-    r->frozen = freeze;
-    if (freeze)
-    {
-    	tAllpass_setGain(&r->f2_allpass, 1.0f);
-    	tAllpass_setGain(&r->f1_allpass, 1.0f);
-		for (int i = 0; i < 4; i++)
-		{
-
-			//tAllpass_setGain(&r->in_allpass[i], 1.0f);
-		}
-    	tCycle_setFreq(&r->f1_lfo, 0.0f);
-    	tCycle_setFreq(&r->f2_lfo, 0.0f);
-    }
-    else
-    {
-    	tAllpass_setGain(&r->f2_allpass, 0.7f);
-    	tAllpass_setGain(&r->f1_allpass, 0.7f);
-    	for (int i = 0; i < 4; i++)
-		{
-    		 //tAllpass_setGain(&r->in_allpass[i], in_allpass_gains[i]);
-		}
-    	tCycle_setFreq(&r->f1_lfo, 0.1f);
-    	tCycle_setFreq(&r->f2_lfo, 0.07f);
-    }
-}
-
-
-void    tDattorroReverb_setHP           (tDattorroReverb* const rev, float freq)
-{
-    _tDattorroReverb* r = *rev;
-    float newFreq = LEAF_clip(20.0f, freq, 20000.0f);
-    tHighpass_setFreq(&r->f1_hp, newFreq);
-    tHighpass_setFreq(&r->f2_hp, newFreq);
-}
-
-
-void    tDattorroReverb_setSize           (tDattorroReverb* const rev, float size)
-{
-    _tDattorroReverb* r = *rev;
-    
-    r->size = LEAF_clip(0.01f, size*r->size_max, r->size_max);
-    r->t = r->size * leaf.sampleRate * 0.001f;
-    
-    /*
-     for (int i = 0; i < 4; i++)
-     {
-     tAllpass_setDelay(&r->in_allpass[i], SAMP(in_allpass_delays[i]));
-     }
-     */
-    
-    // FEEDBACK 1
-    //tAllpass_setDelay(&r->f1_allpass, SAMP(30.51f));
-    
-    tTapeDelay_setDelay(&r->f1_delay_1, SAMP(141.69f));
-    tTapeDelay_setDelay(&r->f1_delay_2, SAMP(89.24f));
-    tTapeDelay_setDelay(&r->f1_delay_3, SAMP(125.f));
-    
-    // maybe change rate of SINE LFO's when size changes?
-    //tCycle_setFreq(&r->f2_lfo, 0.07f * size * r->size_max);
-    
-    // FEEDBACK 2
-    //tAllpass_setDelay(&r->f2_allpass, SAMP(22.58f));
-    
-    tTapeDelay_setDelay(&r->f2_delay_1, SAMP(149.62f));
-    tTapeDelay_setDelay(&r->f2_delay_2, SAMP(60.48f));
-    tTapeDelay_setDelay(&r->f2_delay_3, SAMP(106.28f));
-}
-
-void    tDattorroReverb_setInputDelay     (tDattorroReverb* const rev, float preDelay)
-{
-    _tDattorroReverb* r = *rev;
-    
-    r->predelay = LEAF_clip(0.0f, preDelay, 200.0f);
-    
-    tTapeDelay_setDelay(&r->in_delay, SAMP(r->predelay));
-}
-
-void    tDattorroReverb_setInputFilter    (tDattorroReverb* const rev, float freq)
-{
-    _tDattorroReverb* r = *rev;
-    
-    r->input_filter = LEAF_clip(0.0f, freq, 20000.0f);
-    
-    tOnePole_setFreq(&r->in_filter, r->input_filter);
-}
-
-void    tDattorroReverb_setFeedbackFilter (tDattorroReverb* const rev, float freq)
-{
-    _tDattorroReverb* r = *rev;
-    
-    r->feedback_filter = LEAF_clip(0.0f, freq, 20000.0f);
-    
-    tOnePole_setFreq(&r->f1_filter, r->feedback_filter);
-    tOnePole_setFreq(&r->f2_filter, r->feedback_filter);
-}
-
-void    tDattorroReverb_setFeedbackGain   (tDattorroReverb* const rev, float gain)
-{
-    _tDattorroReverb* r = *rev;
-    r->feedback_gain = gain;
-}
--- a/LEAF/Src/leaf-sampling.c
+++ /dev/null
@@ -1,834 +1,0 @@
-/*
- ==============================================================================
- 
- leaf-sampling.c
- Created: 20 Jan 2017 12:02:17pm
- Author:  Michael R Mulshine
- 
- ==============================================================================
- */
-
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-sampling.h"
-#include "..\leaf.h"
-
-#else
-
-#include "../Inc/leaf-sampling.h"
-#include "../leaf.h"
-
-
-#endif
-
-//==============================================================================
-
-void  tBuffer_init (tBuffer* const sb, uint32_t length)
-{
-    tBuffer_initToPool(sb, length, &leaf_mempool);
-}
-
-void  tBuffer_free (tBuffer* const sb)
-{
-    tBuffer_freeFromPool(sb, &leaf_mempool);
-}
-
-void  tBuffer_initToPool (tBuffer* const sb, uint32_t length, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tBuffer* s = *sb = (_tBuffer*) mpool_alloc(sizeof(_tBuffer), &m->pool);
-    
-    s->buff = (float*) mpool_alloc( sizeof(float) * length, &m->pool);
-    
-    s->bufferLength = length;
-    s->recordedLength = 0;
-    s->active = 0;
-    s->idx = 0;
-    s->mode = RecordOneShot;
-}
-
-void  tBuffer_freeFromPool (tBuffer* const sb, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tBuffer* s = *sb;
-
-    mpool_free(s->buff, &m->pool);
-    mpool_free(s, &m->pool);
-}
-
-void tBuffer_tick (tBuffer* const sb, float sample)
-{
-    _tBuffer* s = *sb;
-    
-    if (s->active == 1)
-    {
-        s->buff[s->idx] = sample;
-        
-        s->idx += 1;
-        
-        if (s->idx >= s->bufferLength)
-        {
-            if (s->mode == RecordOneShot)
-            {
-                tBuffer_stop(sb);
-            }
-            else if (s->mode == RecordLoop)
-            {
-                s->idx = 0;
-            }
-        }
-    }
-}
-
-void  tBuffer_read(tBuffer* const sb, float* buff, uint32_t len)
-{
-    _tBuffer* s = *sb;
-    for (int i = 0; i < s->bufferLength; i++)
-    {
-        if (i < len)    s->buff[i] = buff[i];
-        else            s->buff[i] = 0.f;
-    }
-    s->recordedLength = len;
-}
-
-float tBuffer_get (tBuffer* const sb, int idx)
-{
-    _tBuffer* s = *sb;
-    if ((idx < 0) || (idx >= s->bufferLength)) return 0.f;
-    return s->buff[idx];
-}
-
-void  tBuffer_record(tBuffer* const sb)
-{
-    _tBuffer* s = *sb;
-    s->active = 1;
-    s->idx = 0;
-}
-
-void  tBuffer_stop(tBuffer* const sb)
-{
-    _tBuffer* s = *sb;
-    s->active = 0;
-    s->recordedLength = s->idx;
-}
-
-int   tBuffer_getRecordPosition(tBuffer* const sb)
-{
-    _tBuffer* s = *sb;
-    return s->idx;
-}
-
-void  tBuffer_setRecordMode (tBuffer* const sb, RecordMode mode)
-{
-    _tBuffer* s = *sb;
-    s->mode = mode;
-}
-
-void  tBuffer_clear (tBuffer* const sb)
-{
-    _tBuffer* s = *sb;
-    for (int i = 0; i < s->bufferLength; i++)
-    {
-        s->buff[i] = 0.f;
-    }
-}
-
-uint32_t tBuffer_getBufferLength(tBuffer* const sb)
-{
-    _tBuffer* s = *sb;
-    return s->bufferLength;
-}
-
-uint32_t tBuffer_getRecordedLength(tBuffer* const sb)
-{
-    _tBuffer* s = *sb;
-    return s->recordedLength;
-}
-
-//================================tSampler=====================================
-
-static void handleStartEndChange(tSampler* const sp);
-
-static void attemptStartEndChange(tSampler* const sp);
-
-void tSampler_init(tSampler* const sp, tBuffer* const b)
-{
-    tSampler_initToPool(sp, b, &leaf_mempool);
-}
-
-void tSampler_free         (tSampler* const sp)
-{
-    tSampler_freeFromPool(sp, &leaf_mempool);
-}
-
-void tSampler_initToPool(tSampler* const sp, tBuffer* const b, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSampler* p = *sp = (_tSampler*) mpool_alloc(sizeof(_tSampler), &m->pool);
-    _tBuffer* s = *b;
-    
-    p->samp = s;
-    
-    p->active = 0;
-    
-    p->start = 0;
-    p->end = p->samp->bufferLength - 1;
-    
-    p->len = p->end - p->start;
-    
-    p->idx = 0.f;
-    p->inc = 1.f;
-    p->iinc = 1.f;
-    
-    p->dir = 1;
-    p->flip = 1;
-    p->bnf = 1;
-    
-    p->mode = PlayNormal;
-    
-    p->cfxlen = 500; // default 300 sample crossfade
-    
-    tRamp_initToPool(&p->gain, 7.0f, 1, mp);
-    tRamp_setVal(&p->gain, 0.f);
-    
-    p->targetstart = -1;
-    p->targetend = -1;
-}
-
-void tSampler_freeFromPool         (tSampler* const sp, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tSampler* p = *sp;
-    tRamp_freeFromPool(&p->gain, mp);
-    
-    mpool_free(p, &m->pool);
-}
-
-void tSampler_setSample (tSampler* const sp, tBuffer* const b)
-{
-    _tSampler* p = *sp;
-    _tBuffer* s = *b;
-    
-    p->samp = s;
-
-    p->start = 0;
-    p->end = p->samp->bufferLength - 1;
-
-    p->len = p->end - p->start;
-
-    p->idx = 0.f;
-}
-
-volatile uint32_t errorState = 0;
-
-float tSampler_tick        (tSampler* const sp)
-{
-    _tSampler* p = *sp;
-    
-    if (p->active == 0)         return 0.f;
-
-    if ((p->inc == 0.0f) || (p->len == 0))
-    {
-        return p->last;
-    }
-
-    attemptStartEndChange(sp);
-
-    float sample = 0.f;
-    float cfxsample = 0.f;
-    float numticks;
-    float g1 = 1.f, g2 = 0.f;
-
-    float* buff = p->samp->buff;
-
-    
-
-    int idx, revidx;
-    float alpha, revalpha;
-
-    int32_t start = p->start;
-    int32_t end = p->end;
-    if (p->flip < 0)
-    {
-        start = p->end;
-        end = p->start;
-    }
-
-
-
-    int dir = p->bnf * p->dir * p->flip;
-    idx = (int) p->idx;
-    alpha = p->idx - idx;
-    
-    revidx = idx + 1;// we think this is because flooring on int works different when reading backwards
-    revalpha = 1.f - alpha;
-    
-    
-
-
-    
-    uint32_t cfxlen = p->cfxlen;
-    if (p->len < cfxlen) cfxlen = p->len * 0.25f;//p->len;
-    
-    int length = p->samp->recordedLength;
-    
-    if (dir > 0)
-    {			// num samples (hopping the increment size) to end of loop
-		numticks = (end-idx) * p->iinc;
-    }
-    else
-    {
-		numticks = (revidx-start) * p->iinc;
-    }
-
-	// Check dir (direction) to interpolate properly
-	if (dir > 0)
-	{
-		// FORWARD NORMAL SAMPLE
-		int i1 = ((idx-1) < 0) ? 0 : idx-1;
-		int i3 = ((idx+1) >= length) ? (idx) : (idx+1);
-		int i4 = ((idx+2) >= length) ? (length-1) : (idx+2);
-
-		sample =     LEAF_interpolate_hermite_x (buff[i1],
-											   buff[idx],
-											   buff[i3],
-											   buff[i4],
-											   alpha);
-
-		if (cfxlen > 0)// necessary to avoid divide by zero, also a waste of computation otherwise
-		{
-
-			if (p->mode == PlayLoop)
-			{
-
-
-
-				if (numticks <= (float) cfxlen)
-				{
-					// CROSSFADE SAMPLE
-					int cdx = start - (numticks * p->inc);
-					if (cdx < 1)
-					{
-						cdx = -cdx;
-
-						i1 = ((cdx+1) >= length) ? (length-1) : cdx+1;
-						i3 = ((cdx-1) < 0) ? cdx : (cdx-1);
-						i4 = ((cdx-2) < 0) ? 0 : (cdx-2);
-
-						cfxsample =     LEAF_interpolate_hermite_x (buff[i1],
-																  buff[cdx],
-																  buff[i3],
-																  buff[i4],
-																  revalpha);
-					}
-					else
-					{
-						i1 = ((cdx-1) < 0) ? 0 : cdx-1;
-						i3 = ((cdx+1) >= length) ? (cdx) : (cdx+1);
-						i4 = ((cdx+2) >= length) ? (length-1) : (cdx+2);
-
-						cfxsample =     LEAF_interpolate_hermite_x (buff[i1],
-																  buff[cdx],
-																  buff[i3],
-																  buff[i4],
-																  alpha);
-					}
-
-					g2 = (float) (cfxlen - numticks) / (float) cfxlen;
-
-				}
-
-			}
-		}
-	    else
-	    {
-	    	g2 = 0.0f;
-	    }
-
-	}
-	else
-	{
-		// REVERSE
-		int i1 = ((revidx+1) >= length) ? (length-1) : revidx+1;
-		int i3 = ((revidx-1) < 0) ? revidx : (revidx-1);
-		int i4 = ((revidx-2) < 0) ? 0 : (revidx-2);
-
-		sample =     LEAF_interpolate_hermite_x (buff[i1],
-											   buff[revidx],
-											   buff[i3],
-											   buff[i4],
-											   revalpha);
-
-
-
-		if (cfxlen > 0)// necessary to avoid divide by zero, also a waste of computation otherwise
-		{
-
-			if (p->mode == PlayLoop)
-			{
-				if (numticks <= (float) cfxlen)
-				{
-					// CROSSFADE SAMPLE
-					int cdx = end + (numticks * p->inc);
-					if (cdx > length - 2)
-					{
-
-						//the problem with the click is here --- at some point it crosses this threshold and jumps from a point near the boundary to a point far away from the boundary - that's not correct
-						///// ooooops
-
-						cdx = end - (numticks * p->inc);
-
-						i1 = ((cdx-1) < 0) ? 0 : cdx-1;
-						i3 = ((cdx+1) >= length) ? (cdx) : (cdx+1);
-						i4 = ((cdx+2) >= length) ? (length-1) : (cdx+2);
-
-						cfxsample =     LEAF_interpolate_hermite_x (buff[i1],
-																  buff[cdx],
-																  buff[i3],
-																  buff[i4],
-																  revalpha);
-					}
-					else
-					{
-						i1 = ((cdx+1) >= length) ? (length-1) : cdx+1;
-						i3 = ((cdx-1) < 0) ? cdx : (cdx-1);
-						i4 = ((cdx-2) < 0) ? 0 : (cdx-2);
-
-						cfxsample =     LEAF_interpolate_hermite_x (buff[i1],
-																  buff[cdx],
-																  buff[i3],
-																  buff[i4],
-																  alpha);
-					}
-					g2 = (float) (cfxlen - numticks) / (float) cfxlen;
-				}
-
-			}
-		}
-	    else
-	    {
-	    	g2 = 0.0f;
-	    }
-
-	}
-
-
-    
-    float inc = fmod(p->inc, p->len);
-    p->idx += (dir * inc);
-
-    //handle start and end cases for looping and back and forth modes
-    if (p->mode == PlayLoop)
-    {
-
-        while((int)p->idx < start)
-        {
-            p->idx += (float)(p->len);
-        }
-        while((int)p->idx > end)
-        {
-
-            p->idx -= (float)(p->len);
-        }
-    }
-    else // == PlayBackAndForth
-    {
-        if (p->idx < start)
-        {
-            p->bnf = -p->bnf;
-            p->idx = start + 1;
-        }
-        else if (p->idx > end)
-        {
-            p->bnf = -p->bnf;
-            p->idx = end - 1;
-        }
-    }
-
-
-    //handle very short fade out for end of one-shot normal playback
-    if (p->mode == PlayNormal)
-    {
-        if (numticks < (0.007f * leaf.sampleRate))
-        {
-            tRamp_setDest(&p->gain, 0.f);
-            p->active = -1;
-        }
-    }
-
-    g1 = 1.f - g2;
-    
-    sample = sample * g1 + cfxsample * g2;
-    
-    sample = sample * tRamp_tick(&p->gain);
-    
-    if (p->active < 0)
-    {
-        if (tRamp_sample(&p->gain) <= 0.00001f)
-        {
-            if (p->retrigger == 1)
-            {
-                p->active = 1;
-                p->retrigger = 0;
-                tRamp_setDest(&p->gain, 1.f);
-                
-                if (p->dir > 0)
-                {
-                    if (p->flip > 0)    p->idx = p->start;
-                    else                p->idx = p->end;
-                }
-                else
-                {
-                    if (p->flip > 0)    p->idx = p->end;
-                    else                p->idx = p->start;
-                }
-            }
-            else
-            {
-                p->active = 0;
-            }
-            
-        }
-    }
-
-    if (fabsf(sample-p->last) > 0.1f)
-    {
-    	errorState = 1;
-    }
-
-    p->last = sample;
-    
-
-    return p->last;
-}
-
-void tSampler_setMode      (tSampler* const sp, PlayMode mode)
-{
-    _tSampler* p = *sp;
-    p->mode = mode;
-}
-
-void tSampler_setCrossfadeLength  (tSampler* const sp, uint32_t length)
-{
-    _tSampler* p = *sp;
-    
-    uint32_t cfxlen = LEAF_clip(0, length, 1000);
-    
-    if (cfxlen > (p->len * 0.25f))  cfxlen = p->len * 0.25f;
-    
-    p->cfxlen = cfxlen;
-}
-
-void tSampler_play         (tSampler* const sp)
-{
-    _tSampler* p = *sp;
-    
-    if (p->active != 0)
-    {
-        p->active = -1;
-        p->retrigger = 1;
-        
-        tRamp_setDest(&p->gain, 0.f);
-    }
-    else
-    {
-        p->active = 1;
-        p->retrigger = 0;
-        
-        tRamp_setDest(&p->gain, 1.f);
-        
-        if (p->dir > 0)
-        {
-            if (p->flip > 0)    p->idx = p->start;
-            else                p->idx = p->end;
-        }
-        else
-        {
-            if (p->flip > 0)    p->idx = p->end;
-            else                p->idx = p->start;
-        }
-        handleStartEndChange(&p);
-    }
-}
-
-void tSampler_stop         (tSampler* const sp)
-{
-    _tSampler* p = *sp;
-    
-    p->active = -1;
-    
-    tRamp_setDest(&p->gain, 0.f);
-}
-
-static void handleStartEndChange(tSampler* const sp)
-{
-    _tSampler* p = *sp;
-
-    p->len = abs(p->end - p->start);
-
-    if (p->len < (p->cfxlen * 0.25f)) p->cfxlen = p->len * 0.25f;
-
-    if (p->start > p->end)
-    {
-        p->flip = -1;
-    }
-    else
-    {
-        p->flip = 1;
-    }
-}
-
-static void attemptStartEndChange(tSampler* const sp)
-{
-    _tSampler* p = *sp;
-    
-    // Try to update start/end if needed
-    if (p->targetstart >= 0)
-    {
-        tSampler_setStart(sp, p->targetstart);
-    }
-    if (p->targetend >= 0)
-    {
-        tSampler_setEnd(sp, p->targetend);
-    }
-}
-
-void tSampler_setStart     (tSampler* const sp, int32_t start)
-{
-    _tSampler* p = *sp;
-
-    int tempflip;
-    if (start == p->end)
-    {
-    	return;
-    }
-   // if (p->active)
-    {
-
-        if (start > p->end)
-        {
-            tempflip = -1;
-        }
-        else
-        {
-            tempflip = 1;
-        }
-
-    	int dir = p->bnf * p->dir * tempflip;
-        uint32_t cfxlen = (p->len < p->cfxlen) ? 0 : p->cfxlen;
-        if ((tempflip > 0) && (dir > 0)) // start is start and we're playing forward
-        {
-            if (((start > p->idx) || (p->end-p->idx <= cfxlen)) && (start > p->end))// start given is after current index or we're in a crossfade
-            {
-                p->targetstart = start;
-                return;
-            }
-        }
-        else if ((tempflip < 0) && (dir < 0)) // start is end and we're playing in reverse
-        {
-            if (((start < p->idx) || (p->idx-p->end <= cfxlen)) && (start < p->end))// start given is before current index or we're in a crossfade
-            {
-                p->targetstart = start;
-                return;
-            }
-        }
-    }
-
-	p->start = LEAF_clipInt(0, start, p->samp->recordedLength - 1);
-	handleStartEndChange(sp);
-	p->targetstart = -1;
-
-}
-
-void tSampler_setEnd       (tSampler* const sp, int32_t end)
-{
-    _tSampler* p = *sp;
-
-    int tempflip;
-
-    if (end == p->start)
-    {
-    	return;
-    }
-    //if (p->active)
-    {
-
-
-        if (p->start > end)
-        {
-            tempflip = -1;
-        }
-        else
-        {
-        	tempflip = 1;
-        }
-    	int dir = p->bnf * p->dir * tempflip;
-        uint32_t cfxlen = (p->len < p->cfxlen) ? 0 : p->cfxlen;
-        if (tempflip > 0 && dir < 0) // end is end and we're playing in reverse
-        {
-            if (((end < p->idx) || (p->idx-p->start <= cfxlen)) && (end < p->start)) // end given is before current index or we're in a crossfade
-            {
-                p->targetend = end;
-                return;
-            }
-        }
-        else if (tempflip < 0 && dir > 0) // end is start and we're playing forward
-        {
-            if (((end > p->idx) || (p->start-p->idx <= cfxlen)) && (end > p->start)) // end given is after current index or we're in a crossfade
-            {
-                p->targetend = end;
-                return;
-            }
-        }
-    }
-    p->end = LEAF_clipInt(0, end, (p->samp->recordedLength - 1));
-    handleStartEndChange(sp);
-    p->targetend = -1;
-}
-
-void tSampler_setRate      (tSampler* const sp, float rate)
-{
-    _tSampler* p = *sp;
-    
-    if (rate < 0.f)
-    {
-        rate = -rate;
-        p->dir = -1;
-    }
-    else
-    {
-        p->dir = 1;
-    }
-
-    p->inc = rate;
-    p->iinc = 1.f / p->inc;
-}
-
-//==============================================================================
-
-void    tAutoSampler_init   (tAutoSampler* const as, tBuffer* const b)
-{
-    tAutoSampler_initToPool(as, b, &leaf_mempool);
-}
-
-void    tAutoSampler_free   (tAutoSampler* const as)
-{
-    tAutoSampler_freeFromPool(as, &leaf_mempool);
-}
-
-void    tAutoSampler_initToPool (tAutoSampler* const as, tBuffer* const b, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tAutoSampler* a = *as = (_tAutoSampler*) mpool_alloc(sizeof(_tAutoSampler), &m->pool);
-    
-    tBuffer_setRecordMode(b, RecordOneShot);
-    tSampler_initToPool(&a->sampler, b, mp);
-    tSampler_setMode(&a->sampler, PlayLoop);
-    tEnvelopeFollower_initToPool(&a->ef, 0.05f, 0.9999f, mp);
-}
-
-void    tAutoSampler_freeFromPool       (tAutoSampler* const as, tMempool* const mp)
-{
-    _tMempool* m = *mp;
-    _tAutoSampler* a = *as;
-    
-    tEnvelopeFollower_freeFromPool(&a->ef, mp);
-    tSampler_freeFromPool(&a->sampler, mp);
-    
-    mpool_free(a, &m->pool);
-}
-
-float   tAutoSampler_tick               (tAutoSampler* const as, float input)
-{
-    _tAutoSampler* a = *as;
-    float currentPower = tEnvelopeFollower_tick(&a->ef, input);
-    
-    if ((currentPower > (a->threshold)) &&
-        (currentPower > a->previousPower + 0.001f) &&
-        (a->sampleTriggered == 0) &&
-        (a->sampleCounter == 0))
-    {
-        a->sampleTriggered = 1;
-        tBuffer_record(&a->sampler->samp);
-        a->sampler->samp->recordedLength = a->sampler->samp->bufferLength;
-        a->sampleCounter = a->windowSize + 24;//arbitrary extra time to avoid resampling while playing previous sample - better solution would be alternating buffers and crossfading
-        a->powerCounter = 1000;
-    }
-    
-    if (a->sampleCounter > 0)
-    {
-        a->sampleCounter--;
-    }
-    
-    
-    tSampler_setEnd(&a->sampler, a->windowSize);
-    tBuffer_tick(&a->sampler->samp, input);
-    //on it's way down
-    if (currentPower <= a->previousPower)
-    {
-        if (a->powerCounter > 0)
-        {
-            a->powerCounter--;
-        }
-        else if (a->sampleTriggered == 1)
-        {
-            a->sampleTriggered = 0;
-        }
-    }
-    
-    a->previousPower = currentPower;
-    
-    return tSampler_tick(&a->sampler);
-}
-
-void    tAutoSampler_setBuffer         (tAutoSampler* const as, tBuffer* const b)
-{
-    _tAutoSampler* a = *as;
-    tBuffer_setRecordMode(b, RecordOneShot);
-    if (a->windowSize > tBuffer_getBufferLength(b))
-        a->windowSize = tBuffer_getBufferLength(b);
-    tSampler_setSample(&a->sampler, b);
-}
-
-void    tAutoSampler_setMode            (tAutoSampler* const as, PlayMode mode)
-{
-    _tAutoSampler* a = *as;
-    tSampler_setMode(&a->sampler, mode);
-}
-
-void    tAutoSampler_play               (tAutoSampler* const as)
-{
-    _tAutoSampler* a = *as;
-    tSampler_play(&a->sampler);
-}
-void    tAutoSampler_stop               (tAutoSampler* const as)
-{
-    _tAutoSampler* a = *as;
-    tSampler_stop(&a->sampler);
-}
-
-void    tAutoSampler_setThreshold       (tAutoSampler* const as, float thresh)
-{
-    _tAutoSampler* a = *as;
-    a->threshold = thresh;
-}
-
-void    tAutoSampler_setWindowSize      (tAutoSampler* const as, uint32_t size)
-{
-    _tAutoSampler* a = *as;
-    if (size > tBuffer_getBufferLength(&a->sampler->samp))
-        a->windowSize = tBuffer_getBufferLength(&a->sampler->samp);
-    else a->windowSize = size;
-}
-
-void    tAutoSampler_setCrossfadeLength (tAutoSampler* const as, uint32_t length)
-{
-    _tAutoSampler* a = *as;
-    tSampler_setCrossfadeLength(&a->sampler, length);
-}
-
-void    tAutoSampler_setRate    (tAutoSampler* const as, float rate)
-{
-    ;
-}
--- a/LEAF/Src/leaf-tables.c
+++ /dev/null
@@ -1,14042 +1,0 @@
-/* sine wave table ripped from http://aquaticus.info/pwm-sine-wave */
-
-#if _WIN32 || _WIN64
-
-#include "..\Inc\leaf-tables.h"
-#include "..\Inc\leaf-global.h"
-#else
-
-#include "../Inc/leaf-tables.h"
-#include "../Inc/leaf-global.h"
-
-#endif
-
-
-#include "stdlib.h"
-
-const float fir2XLow[32] = { 0.001067048115027622,    -0.004557728776555209,    -0.016711590887520535,    -0.021065500881657994,    -0.003828695019946828,    0.01865935152799254,    0.012036365576553658,    -0.02064070362810112,    -0.02682399333687091,    0.017862623081258543,    0.0492716766870816,    -0.004310232755957251,    -0.08571879958189704,    -0.03828300159135686,    0.18420501161808442,    0.4054061613074031,    0.4054061613074031,    0.18420501161808442,    -0.03828300159135686,    -0.08571879958189704,    -0.004310232755957251,    0.0492716766870816,    0.017862623081258543,    -0.02682399333687091,    -0.02064070362810112,    0.012036365576553658,    0.01865935152799254,    -0.003828695019946828,    -0.021065500881657994,    -0.016711590887520535,    -0.004557728776555209,    0.001067048115027622
-    
-};
-const float fir4XLow[64] = { 0.0006952369848543607,    -0.0021602595656775407,    -0.005046940892783684,    -0.009045400833780066,    -0.01291169046367334,    -0.015115999752735221,    -0.014305643164290147,    -0.009951858009311934,    -0.0028258377448417927,    0.004999374847547033,    0.010750729432710248,    0.012011264580991868,    0.007846433846826574,    -0.0005004296670167205,    -0.009772888585453377,    -0.015810363406761653,    -0.01525350231205246,    -0.007226084282741553,    0.005835838890105145,    0.018676910759237414,    0.025091142837250335,    0.02056199072613674,    0.004658087892329196,    -0.017877850338462058,    -0.03800800914197999,    -0.04518029996599868,    -0.031146769751981856,    0.006553281738260734,    0.06282284508297871,    0.1257919544316159,    0.18007204974638935,    0.21145499612282317,    0.21145499612282317,    0.18007204974638935,    0.1257919544316159,    0.06282284508297871,    0.006553281738260734,    -0.031146769751981856,    -0.04518029996599868,    -0.03800800914197999,    -0.017877850338462058,    0.004658087892329196,    0.02056199072613674,    0.025091142837250335,    0.018676910759237414,    0.005835838890105145,    -0.007226084282741553,    -0.01525350231205246,    -0.015810363406761653,    -0.009772888585453377,    -0.0005004296670167205,    0.007846433846826574,    0.012011264580991868,    0.010750729432710248,    0.004999374847547033,    -0.0028258377448417927,    -0.009951858009311934,    -0.014305643164290147,    -0.015115999752735221,    -0.01291169046367334,    -0.009045400833780066,    -0.005046940892783684,    -0.0021602595656775407,    0.0006952369848543607
-};
-const float fir8XLow[64] = { 0.0006754949160790157,    0.0002779478357299437,    0.00016529299248029802,    -0.00013134896547707938,    -0.0006717131404275674,    -0.0015110701381990592,    -0.002691718323402088,    -0.004233151560515273,    -0.006122759810873029,    -0.008309678451155357,    -0.010700324896169348,    -0.013154262594364387,    -0.015486775440587882,    -0.01748014690133886,    -0.018887653514132675,    -0.019456772349369558,    -0.01894272181784527,    -0.017131243827335194,    -0.013858969256894846,    -0.009032963777720983,    -0.0026459262830678125,    0.00521276165394513,    0.01435273458276724,    0.024486845310977834,    0.03524172116254876,    0.04617574968276393,    0.05680505888194891,    0.06663123541320262,    0.07517390607705798,    0.08200222626654773,    0.0867639105153248,    0.08920930675382921,    0.08920930675382921,    0.0867639105153248,    0.08200222626654773,    0.07517390607705798,    0.06663123541320262,    0.05680505888194891,    0.04617574968276393,    0.03524172116254876,    0.024486845310977834,    0.01435273458276724,    0.00521276165394513,    -0.0026459262830678125,    -0.009032963777720983,    -0.013858969256894846,    -0.017131243827335194,    -0.01894272181784527,    -0.019456772349369558,    -0.018887653514132675,    -0.01748014690133886,    -0.015486775440587882,    -0.013154262594364387,    -0.010700324896169348,    -0.008309678451155357,    -0.006122759810873029,    -0.004233151560515273,    -0.002691718323402088,    -0.0015110701381990592,    -0.0006717131404275674,    -0.00013134896547707938,    0.00016529299248029802,    0.0002779478357299437,    0.0006754949160790157
-};
-const float fir16XLow[128] = {    0.0046126349429950276,    0.002418251320043122,    0.002998396982119693,    0.0036278090719021024,    0.0042975430005925104,    0.004996222179947315,    0.005711926725799716,    0.00643079625328543,    0.007135468516004265,    0.007808520869830334,    0.008432568881455365,    0.008987453845736109,    0.00945525638237626,    0.009815890031354925,    0.01005214318250272,    0.0101471696783731,    0.010086582032584102,    0.009858344528406827,    0.009453351108896472,    0.00886647074448095,    0.008096771309653635,    0.00714751717242796,    0.006026566967445846,    0.004745997071949807,    0.0033222377606249025,    0.0017766711441555428,    0.00013504407845816216,    -0.0015717347700967995,    -0.0033094088955885038,    -0.005040712758495562,    -0.0067262136355625045,    -0.00832548062138737,    -0.009796853749250854,    -0.011097728611024173,    -0.012187337326564303,    -0.013023698103098556,    -0.013573509920266506,    -0.013801755448129987,    -0.013685636499932173,    -0.0132011750541409,    -0.012328290422335804,    -0.011059565013468301,    -0.009397775060844537,    -0.007349071952063118,    -0.004920665178899413,    -0.002134336426912994,    0.0009664872092121234,    0.00436478920287496,    0.008003553325930378,    0.011839210717492617,    0.015814297525442545,    0.01987142580304551,    0.023948983229671674,    0.0279823843957138,    0.03190689232743185,    0.03565816745288488,    0.03917373689862927,    0.042395392373465575,    0.04526788671987817,    0.0477424527036618,    0.04977580760639264,    0.051332653704811104,    0.05238580079738586,    0.05291690409987073,    0.05291690409987073,    0.05238580079738586,    0.051332653704811104,    0.04977580760639264,    0.0477424527036618,    0.04526788671987817,    0.042395392373465575,    0.03917373689862927,    0.03565816745288488,    0.03190689232743185,    0.0279823843957138,    0.023948983229671674,    0.01987142580304551,    0.015814297525442545,    0.011839210717492617,    0.008003553325930378,    0.00436478920287496,    0.0009664872092121234,    -0.002134336426912994,    -0.004920665178899413,    -0.007349071952063118,    -0.009397775060844537,    -0.011059565013468301,    -0.012328290422335804,    -0.0132011750541409,    -0.013685636499932173,    -0.013801755448129987,    -0.013573509920266506,    -0.013023698103098556,    -0.012187337326564303,    -0.011097728611024173,    -0.009796853749250854,    -0.00832548062138737,    -0.0067262136355625045,    -0.005040712758495562,    -0.0033094088955885038,    -0.0015717347700967995,    0.00013504407845816216,    0.0017766711441555428,    0.0033222377606249025,    0.004745997071949807,    0.006026566967445846,    0.00714751717242796,    0.008096771309653635,    0.00886647074448095,    0.009453351108896472,    0.009858344528406827,    0.010086582032584102,    0.0101471696783731,    0.01005214318250272,    0.009815890031354925,    0.00945525638237626,    0.008987453845736109,    0.008432568881455365,    0.007808520869830334,    0.007135468516004265,    0.00643079625328543,    0.005711926725799716,    0.004996222179947315,    0.0042975430005925104,    0.0036278090719021024,    0.002998396982119693,    0.002418251320043122,    0.0046126349429950276
-};
-
-const float fir32XLow[256] = {    0.003135815035675548,    0.0008156232239328851,    0.000917068197598276,    0.0010233321389754753,    0.001134110218761504,    0.0012491667970169805,    0.0013680375075057851,    0.001490070275243389,    0.0016147643011084855,    0.0017417157238882276,    0.0018700914504121836,    0.0019991579415749683,    0.002128471863076254,    0.0022567566738769186,    0.002383672659264704,    0.002508166194956474,    0.002629506399721181,    0.0027467683378931368,    0.0028590361951993043,    0.0029653540222406116,    0.0030647286416823558,    0.00315623470697179,    0.003238837936508139,    0.0033114996375323753,    0.003373275427426179,    0.003423120728613286,    0.0034602078573979502,    0.00348370126489233,    0.0034928589363555137,    0.003487024926580723,    0.00346544617544127,    0.0034275901596743786,    0.003372744288160786,    0.003300374368830668,    0.0032100011629779615,    0.0031011259873207366,    0.0029734835473811155,    0.002826966057696581,    0.002661647372342504,    0.002477856491791658,    0.0022758592957851788,    0.002056324802981239,    0.0018188203182857804,    0.0015643564184398945,    0.0012926118931092972,    0.0010045690459120843,    0.0007018867678747181,    0.0003860391202902529,    0.00005849980158161824,    -0.0002799696936324717,    -0.0006296005356373679,    -0.0009895247437558183,    -0.0013546785675169304,    -0.0017195561866995873,    -0.0020963876502479964,    -0.002468260301862593,    -0.0028417218921490055,    -0.0032120394918615683,    -0.0035773608021516137,    -0.003935505336691309,    -0.004284369920502227,    -0.004621670593236145,    -0.004945031807804129,    -0.005252279037886353,    -0.005541035510098375,    -0.0058089264241534076,    -0.006054095814242929,    -0.006274068947767563,    -0.00646696244866887,    -0.0066305675756926155,    -0.006762900683506128,    -0.0068620368760529005,    -0.006926182735003765,    -0.0069537046122919695,    -0.006943019919480639,    -0.006892771889917669,    -0.006801741377343995,    -0.006668838708546407,    -0.006493264006045824,    -0.006274267867821416,    -0.006011320357808483,    -0.0057040303527059145,    -0.0053521596030233955,    -0.004955865565614219,    -0.0045153171035821945,    -0.004031251472901679,    -0.0035043462024212605,    -0.002935495552851842,    -0.0023258420785969196,    -0.0016765768456949962,    -0.0009892344368254917,    -0.0002656979807816483,    0.0004919846584003508,    0.0012815018066687268,    0.0021009777555761797,    0.002947120990883713,    0.003818897132096946,    0.004711821532573362,    0.005623441877750917,    0.0065507318610126455,    0.00749007256295643,    0.008438601047417412,    0.009393231377415961,    0.010349728929990198,    0.011304034683748016,    0.012253787036798792,    0.0131957325172224,    0.014123534046112132,    0.015037407721547907,    0.015930638333497147,    0.016801083762848282,    0.017644931748342123,    0.018458926379618365,    0.019239740862760844,    0.0199842074278331,    0.02068926196032209,    0.021351902836904902,    0.021969538576994418,    0.022539688024890127,    0.02305979792910538,    0.023527892067270753,    0.023941757493848588,    0.02429975740762361,    0.024600378168866704,    0.02484241441905009,    0.025024893038415853,    0.025146995906550493,    0.025208214258904054,    0.025208214258904054,    0.025146995906550493,    0.025024893038415853,    0.02484241441905009,    0.024600378168866704,    0.02429975740762361,    0.023941757493848588,    0.023527892067270753,    0.02305979792910538,    0.022539688024890127,    0.021969538576994418,    0.021351902836904902,    0.02068926196032209,    0.0199842074278331,    0.019239740862760844,    0.018458926379618365,    0.017644931748342123,    0.016801083762848282,    0.015930638333497147,    0.015037407721547907,    0.014123534046112132,    0.0131957325172224,    0.012253787036798792,    0.011304034683748016,    0.010349728929990198,    0.009393231377415961,    0.008438601047417412,    0.00749007256295643,    0.0065507318610126455,    0.005623441877750917,    0.004711821532573362,    0.00381889
\ No newline at end of file
-};
-const float fir64XLow[256] = {    -0.007573012406345277,    0.00024079274850113426,    0.00024263723882202515,    0.0002481761013286244,    0.0002570861260137623,    0.0002699368701027846,    0.0002857208679875607,    0.00030498547559247845,    0.0003276748319944884,    0.0003537347795633787,    0.0003828493219762104,    0.00041517688767673063,    0.00045068714217736007,    0.0004893648798719514,    0.0005311398297784606,    0.0005760959724897604,    0.0006241866818625697,    0.00067534060229161,    0.0007295120216703175,    0.0007867375202056556,    0.00084702149975344,    0.0009103261049980538,    0.000976697360607544,    0.001046184181770156,    0.0011188000414977899,    0.0011944092399743605,    0.0012730564419046215,    0.0013547197757430203,    0.0014394035452673572,    0.0015269066196715306,    0.0016175658016292192,    0.0017113538530254156,    0.0018082288964809644,    0.0019074086707092258,    0.0020102102191501834,    0.002115750178775707,    0.0022249923434846707,    0.002324224442263978,    0.0024546715656463027,    0.0025707750602413674,    0.0026886907797787993,    0.0028092893752555753,    0.0029332425986383416,    0.003059760096689252,    0.0031892620828723227,    0.0033216131163189126,    0.00345667963318062,    0.003594116005810746,    0.00373401564369845,    0.003876285696289593,    0.004020837780560375,    0.004167535061341574,    0.004316384032044447,    0.004467271202856345,    0.004620059305184111,    0.00477464934326076,    0.004931017978539705,    0.005089107569792517,    0.005248795189805357,    0.005410043882397958,    0.00557279812512997,    0.005736960631925176,    0.005902264421456515,    0.006068673112862706,    0.006236075536115428,    0.006404404103216645,    0.006573347381526989,    0.006743241263261084,    0.006913918086775748,    0.007085185727911214,    0.007255841416075524,    0.007427788300814843,    0.007599440425756014,    0.007771491831017079,    0.007940210385740073,    0.008115982431613405,    0.008286230477311076,    0.008455728261315427,    0.008624828065636171,    0.0087938382520137,    0.008961934603559608,    0.009129309914478244,    0.009295705048569773,    0.009460895719293651,    0.009624512383898252,    0.009786590519239425,    0.009946995212091796,    0.010105592312872629,    0.010262212502414601,    0.010416818688520148,    0.010569268906811192,    0.010719396502249774,    0.010867082742078902,    0.011012274230511132,    0.011154883295408143,    0.01129473907939671,    0.011431766458575066,    0.011565861880187342,    0.011696890630696698,    0.011824548066976817,    0.011948823922340134,    0.012069629781346847,    0.012186937947306629,    0.012300432892104241,    0.01241055721228422,    0.012517086983512674,    0.012619772868365714,    0.01271694508250919,    0.012811738843612799,    0.012901614577029171,    0.012987520090940792,    0.013067705672196494,    0.013146659639966262,    0.013218602399208508,    0.013285987093409357,    0.013349032229359648,    0.013407929990549725,    0.013461999810303231,    0.013511437444384976,    0.013556082697096088,    0.013595835757053917,    0.013630499982440026,    0.01366023670087255,    0.013685042776887582,    0.013704903172994373,    0.013719772986706352,    0.013729721512429531,    0.01373472352074017,    0.01373472352074017,    0.013729721512429531,    0.013719772986706352,    0.013704903172994373,    0.013685042776887582,    0.01366023670087255,    0.013630499982440026,    0.013595835757053917,    0.013556082697096088,    0.013511437444384976,    0.013461999810303231,    0.013407929990549725,    0.013349032229359648,    0.013285987093409357,    0.013218602399208508,    0.013146659639966262,    0.013067705672196494,    0.012987520090940792,    0.012901614577029171,    0.012811738843612799,    0.01271694508250919,    0.012619772868365714,    0.012517086983512674,    0.01241055721228422,    0.012300432892104241,    0.012186937947306629,    0.012069629781346847,    0.011948823922340134,    0.011824548066976817,    0.011696890630696698,    0.011565861880187342,    0.011431766458575066,    0.01129473907939671,    0.01115488
\ No newline at end of file
-};
-
-const float fir2XHigh[128] = { -2.84059575423864e-7,    -0.00000136947295895967,    -0.00000213110629785921,    5.807441351521463e-7,    0.000005239591854415941,    0.0000017841093721093506,    -0.000011653029986124283,    -0.000012481751035611902,    0.000014692437654954816,    0.00003091988960026406,    -0.000011636477685383897,    -0.00006163665493961978,    -0.00001118322316939516,    0.0000961395818492714,    0.00006083206665324362,    -0.00012648324239817438,    -0.0001504708418330321,    0.00012753607518766694,    0.00027753923597010266,    -0.00007473591299809917,    -0.0004344444061086839,    -0.00006832501012358436,    0.0005862297350582802,    0.00032465365599127654,    -0.0006850628390191059,    -0.0007096577214822187,    0.0006552234666252462,    0.0012010034203710784,    -0.00041922406056782083,    -0.0017446179378994388,    -0.00010392099105524336,    0.002230631291161319,    0.0009594567093737222,    -0.0025128059157130817,    -0.002149706133662562,    0.0024038381899768617,    0.0035931253272614688,    -0.0017176062590590708,    -0.005125004981810711,    0.0002868765073834209,    0.006475023818177746,    0.001977797493927114,    -0.007294746305130189,    -0.005063375113227534,    0.007166496494812792,    0.008801581540883702,    -0.005659099397006974,    -0.012862366201787455,    0.00235384598511852,    0.016726921191779598,    0.0031052434033518096,    -0.01970178000552065,    -0.011028401875416302,    0.020882193937533836,    0.021743369519245558,    -0.019061942568474207,    -0.03589474387520175,    0.012292311428695956,    0.05536768370150782,    0.0038607600693388554,    -0.08741418160721261,    -0.046877671142694095,    0.18124004024261609,    0.41210996873316647,    0.41210996873316647,    0.18124004024261609,    -0.046877671142694095,    -0.08741418160721261,    0.0038607600693388554,    0.05536768370150782,    0.012292311428695956,    -0.03589474387520175,    -0.019061942568474207,    0.021743369519245558,    0.020882193937533836,    -0.011028401875416302,    -0.01970178000552065,    0.0031052434033518096,    0.016726921191779598,    0.00235384598511852,    -0.012862366201787455,    -0.005659099397006974,    0.008801581540883702,    0.007166496494812792,    -0.005063375113227534,    -0.007294746305130189,    0.001977797493927114,    0.006475023818177746,    0.0002868765073834209,    -0.005125004981810711,    -0.0017176062590590708,    0.0035931253272614688,    0.0024038381899768617,    -0.002149706133662562,    -0.0025128059157130817,    0.0009594567093737222,    0.002230631291161319,    -0.00010392099105524336,    -0.0017446179378994388,    -0.00041922406056782083,    0.0012010034203710784,    0.0006552234666252462,    -0.0007096577214822187,    -0.0006850628390191059,    0.00032465365599127654,    0.0005862297350582802,    -0.00006832501012358436,    -0.0004344444061086839,    -0.00007473591299809917,    0.00027753923597010266,    0.00012753607518766694,    -0.0001504708418330321,    -0.00012648324239817438,    0.00006083206665324362,    0.0000961395818492714,    -0.00001118322316939516,    -0.00006163665493961978,    -0.000011636477685383897,    0.00003091988960026406,    0.000014692437654954816,    -0.000012481751035611902,    -0.000011653029986124283,    0.0000017841093721093506,    0.000005239591854415941,    5.807441351521463e-7,    -0.00000213110629785921,    -0.00000136947295895967,    -2.84059575423864e-7
-};
-const float fir4XHigh[256] = {    -0.000005005316694254475,    -0.000010486216859223391,    -0.000020341389435584184,    -0.000028297461945285203,    -0.00003403970018224806,    -0.00003356141383522181,    -0.000028580071407296435,    -0.000021726870316473222,    -0.000018929805847104457,    -0.000024937785475375726,    -0.00004148092321827023,    -0.00006494904958257674,    -0.00008704299086494871,    -0.00009817726370665003,    -0.00009207287115371104,    -0.000070350790919461,    -0.000043204247279965386,    -0.000026338754429996997,    -0.00003337527183661095,    -0.00006864404983689099,    -0.00012208654155480072,    -0.00017229784061896603,    -0.00019443471041769651,    -0.0001738448733058993,    -0.00011458014625437172,    -0.00004241909459592675,    0.000005858218684625342,    -0.000001824861163195929,    -0.00007376494795165521,    -0.0001870435534541462,    -0.00029242213522170924,    -0.00033660459070401045,    -0.00028781004597914193,    -0.00015737268974254042,    2.4069038430437714e-7,    0.00010675981100488967,    0.00009819903503597289,    -0.000041503003504151876,    -0.00026298229853436046,    -0.0004679330143401381,    -0.000550680089032831,    -0.00045235278384860993,    -0.0001968527747134386,    0.00010787721721971545,    0.00031390651451180623,    0.0003015617300329922,    0.00004577001768172358,    -0.0003593242009009715,    -0.0007303801286775824,    -0.0008768456304295432,    -0.0006955854650565154,    -0.00023554905807185743,    0.00030790928383371996,    0.0006717577010285365,    0.0006504775398685704,    0.00020580176646200433,    -0.0004919858457618222,    -0.0011250441730682327,    -0.001368894036877941,    -0.0010555177901930952,    -0.00027554321698262794,    0.0006358082850902164,    0.0012391753523202087,    0.0011981314765901019,    0.0004602570434921762,    -0.0006853292543951153,    -0.0017133793271509106,    -0.0020995520812018714,    -0.0015812527530506791,    -0.00031822317984990035,    0.0011425257824338887,    0.0020968295391595774,    0.0020180799074488486,    0.000837174097496827,    -0.0009743823002432432,    -0.0025836938014065975,    -0.00317200799245191,    -0.0023436048910665127,    -0.0003642960983689493,    0.0019025392919524162,    0.0033649169125380706,    0.003219398725098763,    0.0013786588356217962,    -0.001415068708295585,    -0.003874469283244301,    -0.004750945120551563,    -0.0034548726172607498,    -0.0004124431830693066,    0.003046185830666762,    0.005254266475282044,    0.004999101428335298,    0.002164099554982996,    -0.0021053850268023615,    -0.005843180111542266,    -0.0071497618238720055,    -0.0051353491910507984,    -0.0004583930086451031,    0.004842595616255233,    0.008213402548972962,    0.00778770755309392,    0.003376641721920036,    -0.003263596560752136,    -0.00908888688929085,    -0.011124936147882954,    -0.007935453568187856,    -0.0004986705357686102,    0.007998600315936934,    0.013466881500422878,    0.012810645017913123,    0.0055655403444453775,    -0.00554207852540761,    -0.015510462180576574,    -0.019193722858760427,    -0.013786276388279539,    -0.0005292356782833587,    0.01526523041211863,    0.026109899142542758,    0.02555053211054643,    0.011414259133477645,    -0.01233979307221452,    -0.036160130412882435,    -0.04790631293501779,    -0.03735668670551693,    -0.0005458966005379449,    0.0578178869957579,    0.12496957303698586,    0.18372600900451644,    0.21795911568314993,    0.21795911568314993,    0.18372600900451644,    0.12496957303698586,    0.0578178869957579,    -0.0005458966005379449,    -0.03735668670551693,    -0.04790631293501779,    -0.036160130412882435,    -0.01233979307221452,    0.011414259133477645,    0.02555053211054643,    0.026109899142542758,    0.01526523041211863,    -0.0005292356782833587,    -0.013786276388279539,    -0.019193722858760427,    -0.015510462180576574,    -0.00554207852540761,    0.0055655403444453775,    0.012810645017913123,    0.013466881500422878,    0.007998600315936934,    -0.0004986705357686102,    -0.007935453568187856,    -0.011124936147882954,    -0.0090888868892
\ No newline at end of file
-};
-const float fir8XHigh[256] = {  0.00003151783634577697,    0.00009875809063575779,    0.00011952623149469952,    0.00019849261073490482,    0.0002696485066015727,    0.0003584099608999308,    0.00044625388761023913,    0.0005319258847527823,    0.0006044238440905041,    0.0006561179367621888,    0.0006780841482803052,    0.0006636425833116022,    0.0006082918945412483,    0.0005111129662557197,    0.00037520607336543075,    0.00020804636935322743,    0.000021269501878054377,    -0.00017002451555728345,    -0.00034851615605358005,    -0.0004962768841556523,    -0.0005966792410792791,    -0.0006363992327126103,    -0.0006072812580573203,    -0.0005078006712943802,    -0.00034391453642163835,    -0.0001291740152058233,    0.00011608199926386939,    0.0003663883172395964,    0.0005935643814352129,    0.0007697197860148682,    0.0008705060394986916,    0.0008782421413312541,    0.0007845404678866458,    0.0005921472961030223,    0.0003155390021514345,    -0.00001975662025403667,    -0.0003792242746719516,    -0.0007226903878816747,    -0.0010085916592065419,    -0.0011987843551975912,    -0.0012633390417589486,    -0.0011847927602402282,    -0.0009612078105002279,    -0.000607656728473499,    -0.00015580100244720835,    0.0003485912201162041,    0.0008499567444557006,    0.0012888238057625968,    0.0016085750487669262,    0.0017624573232133487,    0.0017198572703654494,    0.0014712649629561752,    0.0010309092850789008,    0.0004369297346610886,    -0.0002514846038907312,    -0.0009595058667715721,    -0.0016045955886596882,    -0.002105611566700304,    -0.002392827139552557,    -0.0024168530933362325,    -0.00215621955374809,    -0.0016217376891380843,    -0.0008577023023227786,    0.00006118480472750677,    0.0010364584424907685,    0.001956049351551786,    0.002706696800527712,    0.00318733017834542,    0.003322096376141488,    0.0030709922507173265,    0.0024373280210738995,    0.0014701293295941087,    0.0002616176696267551,    -0.0010608870493178752,    -0.002347699681593795,    -0.0034429894732297774,    -0.004203029219555798,    -0.00451398893736866,    -0.004307677839041472,    -0.0035726927213363046,    -0.0023597776381211666,    -0.0007800969761600126,    0.00100380173046076,    0.0027935634872831047,    0.0043761562977185555,    0.005547954061740437,    0.006139532362567163,    0.006038187372164252,    0.005205193104614497,    0.003685832364921369,    0.001610065959141185,    -0.000816509624547802,    -0.003331179568244694,    -0.005640769473740277,    -0.007453565321222198,    -0.008513609412918493,    -0.008633348531283494,    -0.0077207439401804495,    -0.005797651634024999,    -0.003006470630061831,    0.00039645931697321107,    0.004060688288708085,    0.007573881722373314,    0.010503477916637444,    0.012443852783009171,    0.013064660267980682,    0.012154652149365373,    0.009656403107118496,    0.005687627159122434,    0.000545686660735971,    -0.0053060804504155646,    -0.011269885881064536,    -0.016661104177372186,    -0.02076782817847515,    -0.022917127850131423,    -0.022542073972735464,    -0.01924294503235089,    -0.012836088871532723,    -0.0033855865368634104,    0.008786222880026725,    0.023111259021133423,    0.038810833745067747,    0.05495087979175688,    0.0705128544598909,    0.08447430461530625,    0.0958915908436123,    0.10397774191970133,    0.10816816138474043,    0.10816816138474043,    0.10397774191970133,    0.0958915908436123,    0.08447430461530625,    0.0705128544598909,    0.05495087979175688,    0.038810833745067747,    0.023111259021133423,    0.008786222880026725,    -0.0033855865368634104,    -0.012836088871532723,    -0.01924294503235089,    -0.022542073972735464,    -0.022917127850131423,    -0.02076782817847515,    -0.016661104177372186,    -0.011269885881064536,    -0.0053060804504155646,    0.000545686660735971,    0.005687627159122434,    0.009656403107118496,    0.012154652149365373,    0.013064660267980682,    0.012443852783009171,    0.010503477916637444,    0.007573881722373314,    0.004060688288708085,    0.00039645931697321107,    -0.003006470630061831,    
\ No newline at end of file
-};
-const float fir16XHigh[512] = {    -0.00004017374344384353,    -0.00003227078919691645,    -0.000044582740239682106,    -0.000059425359817699515,    -0.00007697752128893082,    -0.00009737601811785888,    -0.0001207053885646365,    -0.0001469875004658367,    -0.00017617089070723918,    -0.00020812277783425573,    -0.00024262055862920822,    -0.0002793450290387454,    -0.00031787504789909166,    -0.0003576848687093178,    -0.00039814402944626006,    -0.0004385193477821247,    -0.0004779801054675081,    -0.0005156064224889276,    -0.0005503998661674507,    -0.0005812986840141297,    -0.0006071960902571958,    -0.0006269579055230081,    -0.0006394482697590037,    -0.0006435494696099878,    -0.0006381976745823161,    -0.0006223990810339609,    -0.0005952724709135361,    -0.0005560644539084499,    -0.0005041884015231086,    -0.00043924670962451254,    -0.0003610522906867853,    -0.00026965679983683306,    -0.0001653614058088566,    -0.00004873297752271577,    0.00007938716594862651,    0.0002178851248768366,    0.0003653745221459382,    0.0005202048736767491,    0.0006804822788501571,    0.000844091795557933,    0.0010087245432410705,    0.001171916285444633,    0.0013310914106543618,    0.0014836070887652329,    0.0016268044135357975,    0.0017580661564216042,    0.0018748692581644735,    0.0019748436871571654,    0.002055827323171664,    0.0021159244704237914,    0.002153555697975211,    0.002167506085967786,    0.0021569688626138744,    0.0021215783384772617,    0.002061435847387089,    0.0019771222276341416,    0.0018697088674027409,    0.0017407508215061904,    0.0015922694449783334,    0.0014267282165683897,    0.0012469961488860717,    0.001056296589672521,    0.0008581466323761644,    0.0006562897137528959,    0.0004546180492460159,    0.00025709020784146465,    0.00006764748603812152,    -0.00010987539810307727,    -0.00027183788464963423,    -0.0004148795460643277,    -0.0005360117384990369,    -0.0006326924816840852,    -0.0007028976477190042,    -0.0007451789241688792,    -0.0007587025992854616,    -0.00074329154026803,    -0.00069943732077003,    -0.0006283153390612298,    -0.0005317674541381928,    -0.0004122736350806254,    -0.0002728965175373041,    -0.00011721898154916056,    0.000050727732077616854,    0.00022654511040849531,    0.0004055654685261572,    0.0005829725151929097,    0.0007539299891718014,    0.0009136968081628693,    0.001057727366040496,    0.0011817838315511687,    0.0012820768752281682,    0.0013553936088779655,    0.0013991567634035874,    0.0014114626691980761,    0.0013911994521601603,    0.001338158623469115,    0.0012529312652788224,    0.0011368782078168052,    0.0009924227419316402,    0.0008225367782712132,    0.0006311126153653432,    0.000422596130820185,    0.00020202566973633374,    -0.000025140126274052846,    -0.00025314012889659734,    -0.00047605825978268214,    -0.0006879757889763613,    -0.0008831265836660278,    -0.001056052961049124,    -0.0012017570118505278,    -0.0013158443800074546,    -0.0013946550179738235,    -0.00143537714856422,    -0.0014361430413177665,    -0.0013961025273104373,    -0.0013154698934900741,    -0.0011955448624625515,    -0.001038705445344848,    -0.000848370211905452,    -0.0006289357238567322,    -0.00038567726087640876,    -0.00012464084542349136,    0.00014751424024790855,    0.00042365555592108265,    0.000696381707633601,    0.0009581911739190034,    0.0012016945125591883,    0.0014198129038021875,    0.0016059677163340854,    0.0017542822302381216,    0.0018597489437935104,    0.0019183843680031518,    0.001927370582069373,    0.0018851569558006424,    0.0017915316423764106,    0.0016476681649469273,    0.001456129721890939,    0.0012208322294896099,    0.0009469770920907817,    0.0006409478559993642,    0.0003101659717946291,    -0.00003708137047780295,    -0.0003918367361265021,    -0.0007446984520565823,    -0.0010860619549777095,    -0.0014063764577860907,    -0.001696397687712767,    -0.0019474488265779002,    -0.002151669227747982,    -0.002302249012563522,    -0.0023936395957784356,    -0.0024217386080201218,    -0.0023840464641522
\ No newline at end of file
-};
-
-const float fir32XHigh[512] = {    0.00001695726883388158,    0.000007675466747345142,    0.000009369969074343828,    0.000011279085806814155,    0.000013415806582636418,    0.00001579269222570207,    0.000018421887123570193,    0.00002131472780344219,    0.000024481596821410856,    0.000027931521966672674,    0.00003167253546774698,    0.00003571156802204514,    0.00004005385180859527,    0.00004470260388316558,    0.00004965901316017587,    0.00005492204008152043,    0.00006048845305842843,    0.00006635289665744708,    0.00007250665288501187,    0.0000789384885513108,    0.00008563367774264342,    0.00009257537368625661,    0.00009974252621593992,    0.00010711124658254552,    0.00011465337570751053,    0.00012233800287448705,    0.0001301305708291957,    0.00013799197926318244,    0.00014587929227876596,    0.00015374657372226684,    0.000161543746522965,    0.0001692168951984779,    0.00017670780599526637,    0.0001839550739841348,    0.00019089427588832468,    0.00019745677767765902,    0.00020357062514912954,    0.00020916210971675997,    0.0002141545274069432,    0.00021846768000518762,    0.00022202071352577454,    0.00022473075934779818,    0.00022651220405928228,    0.00022728022159501112,    0.0002269491553453425,    0.00022543136577234978,    0.00022264296187547415,    0.0002184968451898252,    0.00021291103136150344,    0.00020580302601570826,    0.00019709428929377538,    0.00018670887176183611,    0.00017457550213741742,    0.00016062706678436397,    0.0001448013951907719,    0.0001270421247034733,    0.00010729940118257597,    0.00008553038364340326,    0.00006169965119086659,    0.00003577991793585758,    0.000007752990690551504,    -0.000022389783957090243,    -0.00005464753929697829,    -0.00008900834335751579,    -0.0001254499161703673,    -0.00016393632811230729,    -0.0002044234554405178,    -0.00024684930385593585,    -0.000291146274450184,    -0.0003372278537321366,    -0.00038499799259658716,    -0.00043434821843157495,    -0.0004851539797413716,    -0.000537279458928773,    -0.0005905762825387684,    -0.0006448805823763886,    -0.0007000164290861944,    -0.0007557967574505448,    -0.0008120214850938284,    -0.0008684784362018723,    -0.000924945795118327,    -0.0009811922513964621,    -0.0010369764412132298,    -0.0010920476659586364,    -0.0011461469777671403,    -0.0011990092591572569,    -0.0012503626824092186,    -0.001299930348337511,    -0.0013474327014007098,    -0.0013925895075579725,    -0.0014351200205514354,    -0.0014747442974922531,    -0.0015111829899403478,    -0.0015441601544571469,    -0.0015734040663474662,    -0.0015986504297413274,    -0.0016196438588602622,    -0.0016361410571864347,    -0.0016479110521030553,    -0.0016547353303458935,    -0.0016564077630374632,    -0.0016527363435263026,    -0.0016435483225404998,    -0.0016286956518505767,    -0.0016080553748913375,    -0.0015815237521207347,    -0.0015490117157615478,    -0.0015104528831698094,    -0.001465823165002548,    -0.0014151394219170251,    -0.001358416974565312,    -0.0012956736049528927,    -0.0012270686956067616,    -0.001152656073186285,    -0.0010726190880063075,    -0.0009871267066080157,    -0.0008963952696138223,    -0.0008006703533508123,    -0.0007002299686741377,    -0.0005953836139186328,    -0.0004864723381871633,    -0.0003738679720682553,    -0.00025797228061734796,    -0.00013921599931306062,    -0.000018057446410729332,    0.00010501885598494471,    0.00022950336047164354,    0.00035486342787289485,    0.00048054572124056215,    0.0006059774135387564,    0.0007305691337782367,    0.0008537161333655127,    0.0009748030963864794,    0.0010932046990955392,    0.0012082904750566619,    0.0013194249851955161,    0.0014259733376771368,    0.001527303743896754,    0.0016227897956312704,    0.001711814456379326,    0.0017937737205012431,    0.0018680795987737412,    0.0019341641568400244,    0.0019914815935822066,    0.002039512595508008,    0.0020777684004774366,    0.002105792845115274,    0.002123165845077641,    0.0021295078285898787,    0.002124481676328226,    0.0021077949476114846,    0.0020792
\ No newline at end of file
-};
-const float fir64XHigh[1024] = {    0.000022913289467138396,    0.0000053659189590266235,    0.0000059874129268137184,    0.000006651966903409214,    0.000007360859185648702,    0.000008116254962232182,    0.000008919034969234169,    0.000009771649771624484,    0.00001067513223630924,    0.000011631201209261511,    0.000012641797347255405,    0.00001370786337628007,    0.000014831347439124435,    0.00001601386713533323,    0.00001725659281802051,    0.000018561209740219567,    0.00001992924403854817,    0.00002136207377464052,    0.000022860960742170415,    0.00002442737159197627,    0.000026062787460182665,    0.00002776823090942686,    0.00002954497152514943,    0.000031394387750225555,    0.0000333174817796639,    0.00003531515315607694,    0.000037388352711032095,    0.00003953809180607858,    0.000041765124869157065,    0.00004406996003435772,    0.00004645314118637872,    0.00004891512239763599,    0.000051456283434024254,    0.000054076836400090634,    0.00005677675565218903,    0.00005955600371707976,    0.00006241451652786996,    0.0000653520878490535,    0.00006836828400903681,    0.00007146257248874113,    0.00007463447593939765,    0.00007788334878376474,    0.00008120828768996651,    0.00008460822180317937,    0.00008808197111592392,    0.00009162826246394013,    0.00009524561718379787,    0.0000989323217880672,    0.00010268641529207459,    0.00010650572670297642,    0.00011038797758602729,    0.00011433071893118852,    0.00011833127277888537,    0.0001223867211507117,    0.0001264939791526471,    0.0001306498943438022,    0.00013485120459499745,    0.0001390945080465441,    0.0001433761787732808,    0.0001476923508970611,    0.0001520390228045441,    0.00015641203030453322,    0.0001608069510673283,    0.00016521898552431528,    0.0001696430686231646,    0.0001740740165774301,    0.00017850636200629103,    0.0001829343448175031,    0.00018735205242694257,    0.000191753562437378,    0.00019613295450734188,    0.00020048414321002534,    0.00020480094575553342,    0.00020907706346541747,    0.00021330607883745088,    0.00021748145118260308,    0.00022159611743123445,    0.0002256425365807074,    0.0002296129456080256,    0.00023349938436811445,    0.00023729369397980805,    0.00024098757818162363,    0.0002445732198467269,    0.00024804316088030066,    0.00025138980120093706,    0.00025460575109546185,    0.00025768336513093236,    0.000260614166491108,    0.00026338871874574443,    0.000265996883919168,    0.00026842872851524756,    0.0002706745796903796,    0.00027272653793114146,    0.0002745790007011535,    0.0002762259706331217,    0.0002776600678298683,    0.0002788693645809233,    0.0002798371088712506,    0.0002805501390130166,    0.0002810071637276198,    0.0002812218387032567,    0.0002811853995116189,    0.0002808065268305555,    0.000280197444464886,    0.00027926833477321045,    0.0002780409500002217,    0.0002765020258372484,    0.00027464338678576605,    0.00027245845620400524,    0.0002699387312629035,    0.0002670776879725044,    0.0002638682356241208,    0.00026030295633048156,    0.0002563760351381784,    0.00025208079324849864,    0.00024741089077219824,    0.00024236092911432053,    0.00023692535214431433,    0.00023109887243694582,    0.0002248766203312044,    0.00021825436568685826,    0.0002112279751888258,    0.00020379342129965214,    0.00019594765441000844,    0.00018768793613519225,    0.00017901156693343162,    0.0001699163889323255,    0.00016040086314937234,    0.00015046397564821766,    0.00014010492118016657,    0.00012932331202118152,    0.00011811939311034222,    0.00010649390448787931,    0.00009444816369190979,    0.00008198390428241564,    0.00006910334679829026,    0.00005580947004681174,    0.000042105866991998394,    0.000027996578416041823,    0.000013486064917873263,    -0.0000014205550195404417,    -0.000016717431552354825,    -0.00003239824489309241,    -0.00004845619470295486,    -0.00006488392097284113,    -0.00008167344072768395,    -0.00009881608266779326,    -0.00011630254584578235,    -0.000134122927443183,    -0.0001522667855569792,    -0.00017072306915224
\ No newline at end of file
-};
-
-const float* firCoeffs[COEFFS_SIZE] = { fir2XLow, fir4XLow, fir8XLow, fir16XLow, fir32XLow, fir64XLow, fir2XHigh, fir4XHigh, fir8XHigh, fir16XHigh, fir32XHigh, fir64XHigh
-};
-
-const float firNumTaps[COEFFS_SIZE] = { 32, 32, 64, 128, 256, 256, 128, 256, 256, 512, 512, 1024 };
-
-const float shaper1[SHAPER1_TABLE_SIZE] = {0.333061f, 0.333022f, 0.332983f, 0.332944f, 0.332905f, 0.332866f, 0.332827f, 0.332788f, 0.332749f, 0.33271f, 0.332671f, 0.332632f, 0.332593f, 0.332554f, 0.332515f, 0.332475f, 0.332436f, 0.332397f, 0.332358f, 0.332319f,
-0.33228f, 0.33224f, 0.332201f, 0.332162f, 0.332123f, 0.332083f, 0.332044f, 0.332005f, 0.331966f, 0.331926f, 0.331887f, 0.331848f, 0.331808f, 0.331769f, 0.33173f, 0.33169f, 0.331651f, 0.331611f, 0.331572f, 0.331533f,
-0.331493f, 0.331454f, 0.331414f, 0.331375f, 0.331335f, 0.331296f, 0.331256f, 0.331217f, 0.331177f, 0.331138f, 0.331098f, 0.331059f, 0.331019f, 0.330979f, 0.33094f, 0.3309f, 0.330861f, 0.330821f, 0.330781f, 0.330742f,
-0.330702f, 0.330662f, 0.330623f, 0.330583f, 0.330543f, 0.330504f, 0.330464f, 0.330424f, 0.330384f, 0.330344f, 0.330305f, 0.330265f, 0.330225f, 0.330185f, 0.330145f, 0.330106f, 0.330066f, 0.330026f, 0.329986f, 0.329946f,
-0.329906f, 0.329866f, 0.329826f, 0.329786f, 0.329746f, 0.329706f, 0.329667f, 0.329627f, 0.329587f, 0.329547f, 0.329506f, 0.329466f, 0.329426f, 0.329386f, 0.329346f, 0.329306f, 0.329266f, 0.329226f, 0.329186f, 0.329146f,
-0.329106f, 0.329065f, 0.329025f, 0.328985f, 0.328945f, 0.328905f, 0.328864f, 0.328824f, 0.328784f, 0.328744f, 0.328704f, 0.328663f, 0.328623f, 0.328583f, 0.328542f, 0.328502f, 0.328462f, 0.328421f, 0.328381f, 0.328341f,
-0.3283f, 0.32826f, 0.328219f, 0.328179f, 0.328139f, 0.328098f, 0.328058f, 0.328017f, 0.327977f, 0.327936f, 0.327896f, 0.327855f, 0.327815f, 0.327774f, 0.327734f, 0.327693f, 0.327653f, 0.327612f, 0.327571f, 0.327531f,
-0.32749f, 0.32745f, 0.327409f, 0.327368f, 0.327328f, 0.327287f, 0.327246f, 0.327206f, 0.327165f, 0.327124f, 0.327084f, 0.327043f, 0.327002f, 0.326961f, 0.32692f, 0.32688f, 0.326839f, 0.326798f, 0.326757f, 0.326716f,
-0.326676f, 0.326635f, 0.326594f, 0.326553f, 0.326512f, 0.326471f, 0.32643f, 0.326389f, 0.326348f, 0.326307f, 0.326266f, 0.326225f, 0.326184f, 0.326143f, 0.326102f, 0.326061f, 0.32602f, 0.325979f, 0.325938f, 0.325897f,
-0.325856f, 0.325815f, 0.325774f, 0.325733f, 0.325692f, 0.325651f, 0.325609f, 0.325568f, 0.325527f, 0.325486f, 0.325445f, 0.325403f, 0.325362f, 0.325321f, 0.32528f, 0.325239f, 0.325197f, 0.325156f, 0.325115f, 0.325073f,
-0.325032f, 0.324991f, 0.324949f, 0.324908f, 0.324867f, 0.324825f, 0.324784f, 0.324743f, 0.324701f, 0.32466f, 0.324618f, 0.324577f, 0.324535f, 0.324494f, 0.324452f, 0.324411f, 0.324369f, 0.324328f, 0.324286f, 0.324245f,
-0.324203f, 0.324162f, 0.32412f, 0.324079f, 0.324037f, 0.323995f, 0.323954f, 0.323912f, 0.323871f, 0.323829f, 0.323787f, 0.323746f, 0.323704f, 0.323662f, 0.32362f, 0.323579f, 0.323537f, 0.323495f, 0.323453f, 0.323412f,
-0.32337f, 0.323328f, 0.323286f, 0.323244f, 0.323203f, 0.323161f, 0.323119f, 0.323077f, 0.323035f, 0.322993f, 0.322951f, 0.32291f, 0.322868f, 0.322826f, 0.322784f, 0.322742f, 0.3227f, 0.322658f, 0.322616f, 0.322574f,
-0.322532f, 0.32249f, 0.322448f, 0.322406f, 0.322364f, 0.322322f, 0.322279f, 0.322237f, 0.322195f, 0.322153f, 0.322111f, 0.322069f, 0.322027f, 0.321985f, 0.321942f, 0.3219f, 0.321858f, 0.321816f, 0.321774f, 0.321731f,
-0.321689f, 0.321647f, 0.321605f, 0.321562f, 0.32152f, 0.321478f, 0.321435f, 0.321393f, 0.321351f, 0.321308f, 0.321266f, 0.321224f, 0.321181f, 0.321139f, 0.321096f, 0.321054f, 0.321012f, 0.320969f, 0.320927f, 0.320884f,
-0.320842f, 0.320799f, 0.320757f, 0.320714f, 0.320672f, 0.320629f, 0.320587f, 0.320544f, 0.320501f, 0.320459f, 0.320416f, 0.320374f, 0.320331f, 0.320288f, 0.320246f, 0.320203f, 0.32016f, 0.320118f, 0.320075f, 0.320032f,
-0.31999f, 0.319947f, 0.319904f, 0.319862f, 0.319819f, 0.319776f, 0.319733f, 0.31969f, 0.319648f, 0.319605f, 0.319562f, 0.319519f, 0.319476f, 0.319433f, 0.319391f, 0.319348f, 0.319305f, 0.319262f, 0.319219f, 0.319176f,
-0.319133f, 0.31909f, 0.319047f, 0.319004f, 0.318961f, 0.318918f, 0.318875f, 0.318832f, 0.318789f, 0.318746f, 0.318703f, 0.31866f, 0.318617f, 0.318574f, 0.318531f, 0.318488f, 0.318444f, 0.318401f, 0.318358f, 0.318315f,
-0.318272f, 0.318229f, 0.318185f, 0.318142f, 0.318099f, 0.318056f, 0.318013f, 0.317969f, 0.317926f, 0.317883f, 0.317839f, 0.317796f, 0.317753f, 0.31771f, 0.317666f, 0.317623f, 0.31758f, 0.317536f, 0.317493f, 0.317449f,
-0.317406f, 0.317363f, 0.317319f, 0.317276f, 0.317232f, 0.317189f, 0.317145f, 0.317102f, 0.317058f, 0.317015f, 0.316971f, 0.316928f, 0.316884f, 0.316841f, 0.316797f, 0.316754f, 0.31671f, 0.316666f, 0.316623f, 0.316579f,
-0.316536f, 0.316492f, 0.316448f, 0.316405f, 0.316361f, 0.316317f, 0.316274f, 0.31623f, 0.316186f, 0.316142f, 0.316099f, 0.316055f, 0.316011f, 0.315967f, 0.315924f, 0.31588f, 0.315836f, 0.315792f, 0.315748f, 0.315704f,
-0.315661f, 0.315617f, 0.315573f, 0.315529f, 0.315485f, 0.315441f, 0.315397f, 0.315353f, 0.315309f, 0.315265f, 0.315221f, 0.315177f, 0.315133f, 0.315089f, 0.315045f, 0.315001f, 0.314957f, 0.314913f, 0.314869f, 0.314825f,
-0.314781f, 0.314737f, 0.314693f, 0.314649f, 0.314604f, 0.31456f, 0.314516f, 0.314472f, 0.314428f, 0.314384f, 0.314339f, 0.314295f, 0.314251f, 0.314207f, 0.314162f, 0.314118f, 0.314074f, 0.31403f, 0.313985f, 0.313941f,
-0.313897f, 0.313852f, 0.313808f, 0.313764f, 0.313719f, 0.313675f, 0.313631f, 0.313586f, 0.313542f, 0.313497f, 0.313453f, 0.313409f, 0.313364f, 0.31332f, 0.313275f, 0.313231f, 0.313186f, 0.313142f, 0.313097f, 0.313053f,
-0.313008f, 0.312963f, 0.312919f, 0.312874f, 0.31283f, 0.312785f, 0.312741f, 0.312696f, 0.312651f, 0.312607f, 0.312562f, 0.312517f, 0.312473f, 0.312428f, 0.312383f, 0.312338f, 0.312294f, 0.312249f, 0.312204f, 0.31216f,
-0.312115f, 0.31207f, 0.312025f, 0.31198f, 0.311936f, 0.311891f, 0.311846f, 0.311801f, 0.311756f, 0.311711f, 0.311666f, 0.311621f, 0.311577f, 0.311532f, 0.311487f, 0.311442f, 0.311397f, 0.311352f, 0.311307f, 0.311262f,
-0.311217f, 0.311172f, 0.311127f, 0.311082f, 0.311037f, 0.310992f, 0.310947f, 0.310902f, 0.310857f, 0.310811f, 0.310766f, 0.310721f, 0.310676f, 0.310631f, 0.310586f, 0.310541f, 0.310495f, 0.31045f, 0.310405f, 0.31036f,
-0.310315f, 0.310269f, 0.310224f, 0.310179f, 0.310134f, 0.310088f, 0.310043f, 0.309998f, 0.309952f, 0.309907f, 0.309862f, 0.309816f, 0.309771f, 0.309726f, 0.30968f, 0.309635f, 0.309589f, 0.309544f, 0.309499f, 0.309453f,
-0.309408f, 0.309362f, 0.309317f, 0.309271f, 0.309226f, 0.30918f, 0.309135f, 0.309089f, 0.309044f, 0.308998f, 0.308953f, 0.308907f, 0.308861f, 0.308816f, 0.30877f, 0.308725f, 0.308679f, 0.308633f, 0.308588f, 0.308542f,
-0.308496f, 0.308451f, 0.308405f, 0.308359f, 0.308313f, 0.308268f, 0.308222f, 0.308176f, 0.30813f, 0.308085f, 0.308039f, 0.307993f, 0.307947f, 0.307901f, 0.307856f, 0.30781f, 0.307764f, 0.307718f, 0.307672f, 0.307626f,
-0.30758f, 0.307534f, 0.307489f, 0.307443f, 0.307397f, 0.307351f, 0.307305f, 0.307259f, 0.307213f, 0.307167f, 0.307121f, 0.307075f, 0.307029f, 0.306983f, 0.306937f, 0.30689f, 0.306844f, 0.306798f, 0.306752f, 0.306706f,
-0.30666f, 0.306614f, 0.306568f, 0.306522f, 0.306475f, 0.306429f, 0.306383f, 0.306337f, 0.306291f, 0.306244f, 0.306198f, 0.306152f, 0.306106f, 0.306059f, 0.306013f, 0.305967f, 0.30592f, 0.305874f, 0.305828f, 0.305781f,
-0.305735f, 0.305689f, 0.305642f, 0.305596f, 0.30555f, 0.305503f, 0.305457f, 0.30541f, 0.305364f, 0.305317f, 0.305271f, 0.305224f, 0.305178f, 0.305131f, 0.305085f, 0.305038f, 0.304992f, 0.304945f, 0.304899f, 0.304852f,
-0.304806f, 0.304759f, 0.304713f, 0.304666f, 0.304619f, 0.304573f, 0.304526f, 0.304479f, 0.304433f, 0.304386f, 0.304339f, 0.304293f, 0.304246f, 0.304199f, 0.304152f, 0.304106f, 0.304059f, 0.304012f, 0.303965f, 0.303919f,
-0.303872f, 0.303825f, 0.303778f, 0.303731f, 0.303685f, 0.303638f, 0.303591f, 0.303544f, 0.303497f, 0.30345f, 0.303403f, 0.303356f, 0.303309f, 0.303262f, 0.303216f, 0.303169f, 0.303122f, 0.303075f, 0.303028f, 0.302981f,
-0.302934f, 0.302887f, 0.302839f, 0.302792f, 0.302745f, 0.302698f, 0.302651f, 0.302604f, 0.302557f, 0.30251f, 0.302463f, 0.302416f, 0.302368f, 0.302321f, 0.302274f, 0.302227f, 0.30218f, 0.302133f, 0.302085f, 0.302038f,
-0.301991f, 0.301944f, 0.301896f, 0.301849f, 0.301802f, 0.301754f, 0.301707f, 0.30166f, 0.301612f, 0.301565f, 0.301518f, 0.30147f, 0.301423f, 0.301376f, 0.301328f, 0.301281f, 0.301233f, 0.301186f, 0.301139f, 0.301091f,
-0.301044f, 0.300996f, 0.300949f, 0.300901f, 0.300854f, 0.300806f, 0.300759f, 0.300711f, 0.300664f, 0.300616f, 0.300568f, 0.300521f, 0.300473f, 0.300426f, 0.300378f, 0.30033f, 0.300283f, 0.300235f, 0.300187f, 0.30014f,
-0.300092f, 0.300044f, 0.299997f, 0.299949f, 0.299901f, 0.299853f, 0.299806f, 0.299758f, 0.29971f, 0.299662f, 0.299615f, 0.299567f, 0.299519f, 0.299471f, 0.299423f, 0.299375f, 0.299328f, 0.29928f, 0.299232f, 0.299184f,
-0.299136f, 0.299088f, 0.29904f, 0.298992f, 0.298944f, 0.298896f, 0.298848f, 0.2988f, 0.298752f, 0.298704f, 0.298656f, 0.298608f, 0.29856f, 0.298512f, 0.298464f, 0.298416f, 0.298368f, 0.29832f, 0.298272f, 0.298224f,
-0.298176f, 0.298127f, 0.298079f, 0.298031f, 0.297983f, 0.297935f, 0.297887f, 0.297838f, 0.29779f, 0.297742f, 0.297694f, 0.297645f, 0.297597f, 0.297549f, 0.297501f, 0.297452f, 0.297404f, 0.297356f, 0.297307f, 0.297259f,
-0.297211f, 0.297162f, 0.297114f, 0.297066f, 0.297017f, 0.296969f, 0.29692f, 0.296872f, 0.296823f, 0.296775f, 0.296727f, 0.296678f, 0.29663f, 0.296581f, 0.296533f, 0.296484f, 0.296436f, 0.296387f, 0.296339f, 0.29629f,
-0.296241f, 0.296193f, 0.296144f, 0.296096f, 0.296047f, 0.295998f, 0.29595f, 0.295901f, 0.295852f, 0.295804f, 0.295755f, 0.295706f, 0.295658f, 0.295609f, 0.29556f, 0.295512f, 0.295463f, 0.295414f, 0.295365f, 0.295317f,
-0.295268f, 0.295219f, 0.29517f, 0.295121f, 0.295073f, 0.295024f, 0.294975f, 0.294926f, 0.294877f, 0.294828f, 0.294779f, 0.29473f, 0.294682f, 0.294633f, 0.294584f, 0.294535f, 0.294486f, 0.294437f, 0.294388f, 0.294339f,
-0.29429f, 0.294241f, 0.294192f, 0.294143f, 0.294094f, 0.294045f, 0.293996f, 0.293946f, 0.293897f, 0.293848f, 0.293799f, 0.29375f, 0.293701f, 0.293652f, 0.293603f, 0.293553f, 0.293504f, 0.293455f, 0.293406f, 0.293357f,
-0.293307f, 0.293258f, 0.293209f, 0.29316f, 0.29311f, 0.293061f, 0.293012f, 0.292963f, 0.292913f, 0.292864f, 0.292815f, 0.292765f, 0.292716f, 0.292667f, 0.292617f, 0.292568f, 0.292518f, 0.292469f, 0.29242f, 0.29237f,
-0.292321f, 0.292271f, 0.292222f, 0.292172f, 0.292123f, 0.292073f, 0.292024f, 0.291974f, 0.291925f, 0.291875f, 0.291826f, 0.291776f, 0.291727f, 0.291677f, 0.291627f, 0.291578f, 0.291528f, 0.291479f, 0.291429f, 0.291379f,
-0.29133f, 0.29128f, 0.29123f, 0.291181f, 0.291131f, 0.291081f, 0.291031f, 0.290982f, 0.290932f, 0.290882f, 0.290832f, 0.290783f, 0.290733f, 0.290683f, 0.290633f, 0.290583f, 0.290534f, 0.290484f, 0.290434f, 0.290384f,
-0.290334f, 0.290284f, 0.290234f, 0.290185f, 0.290135f, 0.290085f, 0.290035f, 0.289985f, 0.289935f, 0.289885f, 0.289835f, 0.289785f, 0.289735f, 0.289685f, 0.289635f, 0.289585f, 0.289535f, 0.289485f, 0.289435f, 0.289385f,
-0.289335f, 0.289284f, 0.289234f, 0.289184f, 0.289134f, 0.289084f, 0.289034f, 0.288984f, 0.288933f, 0.288883f, 0.288833f, 0.288783f, 0.288733f, 0.288682f, 0.288632f, 0.288582f, 0.288532f, 0.288481f, 0.288431f, 0.288381f,
-0.28833f, 0.28828f, 0.28823f, 0.288179f, 0.288129f, 0.288079f, 0.288028f, 0.287978f, 0.287928f, 0.287877f, 0.287827f, 0.287776f, 0.287726f, 0.287676f, 0.287625f, 0.287575f, 0.287524f, 0.287474f, 0.287423f, 0.287373f,
-0.287322f, 0.287272f, 0.287221f, 0.287171f, 0.28712f, 0.287069f, 0.287019f, 0.286968f, 0.286918f, 0.286867f, 0.286816f, 0.286766f, 0.286715f, 0.286664f, 0.286614f, 0.286563f, 0.286512f, 0.286462f, 0.286411f, 0.28636f,
-0.286309f, 0.286259f, 0.286208f, 0.286157f, 0.286106f, 0.286056f, 0.286005f, 0.285954f, 0.285903f, 0.285852f, 0.285802f, 0.285751f, 0.2857f, 0.285649f, 0.285598f, 0.285547f, 0.285496f, 0.285445f, 0.285394f, 0.285344f,
-0.285293f, 0.285242f, 0.285191f, 0.28514f, 0.285089f, 0.285038f, 0.284987f, 0.284936f, 0.284885f, 0.284834f, 0.284783f, 0.284731f, 0.28468f, 0.284629f, 0.284578f, 0.284527f, 0.284476f, 0.284425f, 0.284374f, 0.284323f,
-0.284271f, 0.28422f, 0.284169f, 0.284118f, 0.284067f, 0.284015f, 0.283964f, 0.283913f, 0.283862f, 0.28381f, 0.283759f, 0.283708f, 0.283657f, 0.283605f, 0.283554f, 0.283503f, 0.283451f, 0.2834f, 0.283349f, 0.283297f,
-0.283246f, 0.283195f, 0.283143f, 0.283092f, 0.28304f, 0.282989f, 0.282937f, 0.282886f, 0.282835f, 0.282783f, 0.282732f, 0.28268f, 0.282629f, 0.282577f, 0.282526f, 0.282474f, 0.282422f, 0.282371f, 0.282319f, 0.282268f,
-0.282216f, 0.282165f, 0.282113f, 0.282061f, 0.28201f, 0.281958f, 0.281906f, 0.281855f, 0.281803f, 0.281751f, 0.2817f, 0.281648f, 0.281596f, 0.281545f, 0.281493f, 0.281441f, 0.281389f, 0.281338f, 0.281286f, 0.281234f,
-0.281182f, 0.28113f, 0.281079f, 0.281027f, 0.280975f, 0.280923f, 0.280871f, 0.280819f, 0.280767f, 0.280716f, 0.280664f, 0.280612f, 0.28056f, 0.280508f, 0.280456f, 0.280404f, 0.280352f, 0.2803f, 0.280248f, 0.280196f,
-0.280144f, 0.280092f, 0.28004f, 0.279988f, 0.279936f, 0.279884f, 0.279832f, 0.27978f, 0.279728f, 0.279675f, 0.279623f, 0.279571f, 0.279519f, 0.279467f, 0.279415f, 0.279363f, 0.27931f, 0.279258f, 0.279206f, 0.279154f,
-0.279102f, 0.279049f, 0.278997f, 0.278945f, 0.278893f, 0.27884f, 0.278788f, 0.278736f, 0.278684f, 0.278631f, 0.278579f, 0.278527f, 0.278474f, 0.278422f, 0.278369f, 0.278317f, 0.278265f, 0.278212f, 0.27816f, 0.278107f,
-0.278055f, 0.278003f, 0.27795f, 0.277898f, 0.277845f, 0.277793f, 0.27774f, 0.277688f, 0.277635f, 0.277583f, 0.27753f, 0.277478f, 0.277425f, 0.277372f, 0.27732f, 0.277267f, 0.277215f, 0.277162f, 0.277109f, 0.277057f,
-0.277004f, 0.276952f, 0.276899f, 0.276846f, 0.276794f, 0.276741f, 0.276688f, 0.276635f, 0.276583f, 0.27653f, 0.276477f, 0.276424f, 0.276372f, 0.276319f, 0.276266f, 0.276213f, 0.276161f, 0.276108f, 0.276055f, 0.276002f,
-0.275949f, 0.275896f, 0.275843f, 0.275791f, 0.275738f, 0.275685f, 0.275632f, 0.275579f, 0.275526f, 0.275473f, 0.27542f, 0.275367f, 0.275314f, 0.275261f, 0.275208f, 0.275155f, 0.275102f, 0.275049f, 0.274996f, 0.274943f,
-0.27489f, 0.274837f, 0.274784f, 0.274731f, 0.274678f, 0.274625f, 0.274571f, 0.274518f, 0.274465f, 0.274412f, 0.274359f, 0.274306f, 0.274252f, 0.274199f, 0.274146f, 0.274093f, 0.27404f, 0.273986f, 0.273933f, 0.27388f,
-0.273827f, 0.273773f, 0.27372f, 0.273667f, 0.273613f, 0.27356f, 0.273507f, 0.273453f, 0.2734f, 0.273347f, 0.273293f, 0.27324f, 0.273187f, 0.273133f, 0.27308f, 0.273026f, 0.272973f, 0.272919f, 0.272866f, 0.272813f,
-0.272759f, 0.272706f, 0.272652f, 0.272599f, 0.272545f, 0.272492f, 0.272438f, 0.272384f, 0.272331f, 0.272277f, 0.272224f, 0.27217f, 0.272117f, 0.272063f, 0.272009f, 0.271956f, 0.271902f, 0.271848f, 0.271795f, 0.271741f,
-0.271687f, 0.271634f, 0.27158f, 0.271526f, 0.271473f, 0.271419f, 0.271365f, 0.271311f, 0.271258f, 0.271204f, 0.27115f, 0.271096f, 0.271042f, 0.270989f, 0.270935f, 0.270881f, 0.270827f, 0.270773f, 0.270719f, 0.270665f,
-0.270612f, 0.270558f, 0.270504f, 0.27045f, 0.270396f, 0.270342f, 0.270288f, 0.270234f, 0.27018f, 0.270126f, 0.270072f, 0.270018f, 0.269964f, 0.26991f, 0.269856f, 0.269802f, 0.269748f, 0.269694f, 0.26964f, 0.269586f,
-0.269532f, 0.269477f, 0.269423f, 0.269369f, 0.269315f, 0.269261f, 0.269207f, 0.269153f, 0.269098f, 0.269044f, 0.26899f, 0.268936f, 0.268882f, 0.268827f, 0.268773f, 0.268719f, 0.268665f, 0.26861f, 0.268556f, 0.268502f,
-0.268448f, 0.268393f, 0.268339f, 0.268285f, 0.26823f, 0.268176f, 0.268121f, 0.268067f, 0.268013f, 0.267958f, 0.267904f, 0.26785f, 0.267795f, 0.267741f, 0.267686f, 0.267632f, 0.267577f, 0.267523f, 0.267468f, 0.267414f,
-0.267359f, 0.267305f, 0.26725f, 0.267196f, 0.267141f, 0.267087f, 0.267032f, 0.266978f, 0.266923f, 0.266868f, 0.266814f, 0.266759f, 0.266704f, 0.26665f, 0.266595f, 0.266541f, 0.266486f, 0.266431f, 0.266376f, 0.266322f,
-0.266267f, 0.266212f, 0.266158f, 0.266103f, 0.266048f, 0.265993f, 0.265939f, 0.265884f, 0.265829f, 0.265774f, 0.265719f, 0.265665f, 0.26561f, 0.265555f, 0.2655f, 0.265445f, 0.26539f, 0.265335f, 0.265281f, 0.265226f,
-0.265171f, 0.265116f, 0.265061f, 0.265006f, 0.264951f, 0.264896f, 0.264841f, 0.264786f, 0.264731f, 0.264676f, 0.264621f, 0.264566f, 0.264511f, 0.264456f, 0.264401f, 0.264346f, 0.264291f, 0.264236f, 0.26418f, 0.264125f,
-0.26407f, 0.264015f, 0.26396f, 0.263905f, 0.26385f, 0.263794f, 0.263739f, 0.263684f, 0.263629f, 0.263574f, 0.263518f, 0.263463f, 0.263408f, 0.263353f, 0.263298f, 0.263242f, 0.263187f, 0.263132f, 0.263076f, 0.263021f,
-0.262966f, 0.26291f, 0.262855f, 0.2628f, 0.262744f, 0.262689f, 0.262634f, 0.262578f, 0.262523f, 0.262467f, 0.262412f, 0.262357f, 0.262301f, 0.262246f, 0.26219f, 0.262135f, 0.262079f, 0.262024f, 0.261968f, 0.261913f,
-0.261857f, 0.261802f, 0.261746f, 0.261691f, 0.261635f, 0.261579f, 0.261524f, 0.261468f, 0.261413f, 0.261357f, 0.261301f, 0.261246f, 0.26119f, 0.261134f, 0.261079f, 0.261023f, 0.260967f, 0.260912f, 0.260856f, 0.2608f,
-0.260745f, 0.260689f, 0.260633f, 0.260577f, 0.260522f, 0.260466f, 0.26041f, 0.260354f, 0.260298f, 0.260243f, 0.260187f, 0.260131f, 0.260075f, 0.260019f, 0.259963f, 0.259907f, 0.259852f, 0.259796f, 0.25974f, 0.259684f,
-0.259628f, 0.259572f, 0.259516f, 0.25946f, 0.259404f, 0.259348f, 0.259292f, 0.259236f, 0.25918f, 0.259124f, 0.259068f, 0.259012f, 0.258956f, 0.2589f, 0.258844f, 0.258788f, 0.258732f, 0.258676f, 0.258619f, 0.258563f,
-0.258507f, 0.258451f, 0.258395f, 0.258339f, 0.258283f, 0.258226f, 0.25817f, 0.258114f, 0.258058f, 0.258002f, 0.257945f, 0.257889f, 0.257833f, 0.257777f, 0.25772f, 0.257664f, 0.257608f, 0.257552f, 0.257495f, 0.257439f,
-0.257383f, 0.257326f, 0.25727f, 0.257214f, 0.257157f, 0.257101f, 0.257044f, 0.256988f, 0.256932f, 0.256875f, 0.256819f, 0.256762f, 0.256706f, 0.256649f, 0.256593f, 0.256536f, 0.25648f, 0.256423f, 0.256367f, 0.25631f,
-0.256254f, 0.256197f, 0.256141f, 0.256084f, 0.256028f, 0.255971f, 0.255915f, 0.255858f, 0.255801f, 0.255745f, 0.255688f, 0.255631f, 0.255575f, 0.255518f, 0.255461f, 0.255405f, 0.255348f, 0.255291f, 0.255235f, 0.255178f,
-0.255121f, 0.255064f, 0.255008f, 0.254951f, 0.254894f, 0.254837f, 0.254781f, 0.254724f, 0.254667f, 0.25461f, 0.254553f, 0.254497f, 0.25444f, 0.254383f, 0.254326f, 0.254269f, 0.254212f, 0.254155f, 0.254098f, 0.254041f,
-0.253985f, 0.253928f, 0.253871f, 0.253814f, 0.253757f, 0.2537f, 0.253643f, 0.253586f, 0.253529f, 0.253472f, 0.253415f, 0.253358f, 0.253301f, 0.253244f, 0.253187f, 0.253129f, 0.253072f, 0.253015f, 0.252958f, 0.252901f,
-0.252844f, 0.252787f, 0.25273f, 0.252673f, 0.252615f, 0.252558f, 0.252501f, 0.252444f, 0.252387f, 0.252329f, 0.252272f, 0.252215f, 0.252158f, 0.2521f, 0.252043f, 0.251986f, 0.251929f, 0.251871f, 0.251814f, 0.251757f,
-0.251699f, 0.251642f, 0.251585f, 0.251527f, 0.25147f, 0.251413f, 0.251355f, 0.251298f, 0.25124f, 0.251183f, 0.251126f, 0.251068f, 0.251011f, 0.250953f, 0.250896f, 0.250838f, 0.250781f, 0.250723f, 0.250666f, 0.250608f,
-0.250551f, 0.250493f, 0.250436f, 0.250378f, 0.250321f, 0.250263f, 0.250206f, 0.250148f, 0.25009f, 0.250033f, 0.249975f, 0.249918f, 0.24986f, 0.249802f, 0.249745f, 0.249687f, 0.249629f, 0.249572f, 0.249514f, 0.249456f,
-0.249398f, 0.249341f, 0.249283f, 0.249225f, 0.249167f, 0.24911f, 0.249052f, 0.248994f, 0.248936f, 0.248879f, 0.248821f, 0.248763f, 0.248705f, 0.248647f, 0.248589f, 0.248531f, 0.248474f, 0.248416f, 0.248358f, 0.2483f,
-0.248242f, 0.248184f, 0.248126f, 0.248068f, 0.24801f, 0.247952f, 0.247894f, 0.247836f, 0.247778f, 0.24772f, 0.247662f, 0.247604f, 0.247546f, 0.247488f, 0.24743f, 0.247372f, 0.247314f, 0.247256f, 0.247198f, 0.24714f,
-0.247082f, 0.247024f, 0.246965f, 0.246907f, 0.246849f, 0.246791f, 0.246733f, 0.246675f, 0.246617f, 0.246558f, 0.2465f, 0.246442f, 0.246384f, 0.246325f, 0.246267f, 0.246209f, 0.246151f, 0.246092f, 0.246034f, 0.245976f,
-0.245918f, 0.245859f, 0.245801f, 0.245743f, 0.245684f, 0.245626f, 0.245568f, 0.245509f, 0.245451f, 0.245392f, 0.245334f, 0.245276f, 0.245217f, 0.245159f, 0.2451f, 0.245042f, 0.244983f, 0.244925f, 0.244866f, 0.244808f,
-0.244749f, 0.244691f, 0.244632f, 0.244574f, 0.244515f, 0.244457f, 0.244398f, 0.24434f, 0.244281f, 0.244223f, 0.244164f, 0.244105f, 0.244047f, 0.243988f, 0.24393f, 0.243871f, 0.243812f, 0.243754f, 0.243695f, 0.243636f,
-0.243578f, 0.243519f, 0.24346f, 0.243401f, 0.243343f, 0.243284f, 0.243225f, 0.243166f, 0.243108f, 0.243049f, 0.24299f, 0.242931f, 0.242872f, 0.242814f, 0.242755f, 0.242696f, 0.242637f, 0.242578f, 0.242519f, 0.242461f,
-0.242402f, 0.242343f, 0.242284f, 0.242225f, 0.242166f, 0.242107f, 0.242048f, 0.241989f, 0.24193f, 0.241871f, 0.241812f, 0.241753f, 0.241694f, 0.241635f, 0.241576f, 0.241517f, 0.241458f, 0.241399f, 0.24134f, 0.241281f,
-0.241222f, 0.241163f, 0.241104f, 0.241045f, 0.240986f, 0.240926f, 0.240867f, 0.240808f, 0.240749f, 0.24069f, 0.240631f, 0.240572f, 0.240512f, 0.240453f, 0.240394f, 0.240335f, 0.240275f, 0.240216f, 0.240157f, 0.240098f,
-0.240038f, 0.239979f, 0.23992f, 0.239861f, 0.239801f, 0.239742f, 0.239683f, 0.239623f, 0.239564f, 0.239505f, 0.239445f, 0.239386f, 0.239327f, 0.239267f, 0.239208f, 0.239148f, 0.239089f, 0.239029f, 0.23897f, 0.238911f,
-0.238851f, 0.238792f, 0.238732f, 0.238673f, 0.238613f, 0.238554f, 0.238494f, 0.238435f, 0.238375f, 0.238316f, 0.238256f, 0.238196f, 0.238137f, 0.238077f, 0.238018f, 0.237958f, 0.237898f, 0.237839f, 0.237779f, 0.23772f,
-0.23766f, 0.2376f, 0.237541f, 0.237481f, 0.237421f, 0.237362f, 0.237302f, 0.237242f, 0.237182f, 0.237123f, 0.237063f, 0.237003f, 0.236943f, 0.236884f, 0.236824f, 0.236764f, 0.236704f, 0.236644f, 0.236585f, 0.236525f,
-0.236465f, 0.236405f, 0.236345f, 0.236285f, 0.236225f, 0.236166f, 0.236106f, 0.236046f, 0.235986f, 0.235926f, 0.235866f, 0.235806f, 0.235746f, 0.235686f, 0.235626f, 0.235566f, 0.235506f, 0.235446f, 0.235386f, 0.235326f,
-0.235266f, 0.235206f, 0.235146f, 0.235086f, 0.235026f, 0.234966f, 0.234906f, 0.234846f, 0.234786f, 0.234725f, 0.234665f, 0.234605f, 0.234545f, 0.234485f, 0.234425f, 0.234365f, 0.234304f, 0.234244f, 0.234184f, 0.234124f,
-0.234064f, 0.234003f, 0.233943f, 0.233883f, 0.233823f, 0.233762f, 0.233702f, 0.233642f, 0.233581f, 0.233521f, 0.233461f, 0.233401f, 0.23334f, 0.23328f, 0.233219f, 0.233159f, 0.233099f, 0.233038f, 0.232978f, 0.232918f,
-0.232857f, 0.232797f, 0.232736f, 0.232676f, 0.232615f, 0.232555f, 0.232495f, 0.232434f, 0.232374f, 0.232313f, 0.232253f, 0.232192f, 0.232132f, 0.232071f, 0.23201f, 0.23195f, 0.231889f, 0.231829f, 0.231768f, 0.231708f,
-0.231647f, 0.231586f, 0.231526f, 0.231465f, 0.231405f, 0.231344f, 0.231283f, 0.231223f, 0.231162f, 0.231101f, 0.231041f, 0.23098f, 0.230919f, 0.230858f, 0.230798f, 0.230737f, 0.230676f, 0.230615f, 0.230555f, 0.230494f,
-0.230433f, 0.230372f, 0.230312f, 0.230251f, 0.23019f, 0.230129f, 0.230068f, 0.230007f, 0.229947f, 0.229886f, 0.229825f, 0.229764f, 0.229703f, 0.229642f, 0.229581f, 0.22952f, 0.229459f, 0.229398f, 0.229337f, 0.229277f,
-0.229216f, 0.229155f, 0.229094f, 0.229033f, 0.228972f, 0.228911f, 0.22885f, 0.228788f, 0.228727f, 0.228666f, 0.228605f, 0.228544f, 0.228483f, 0.228422f, 0.228361f, 0.2283f, 0.228239f, 0.228178f, 0.228116f, 0.228055f,
-0.227994f, 0.227933f, 0.227872f, 0.227811f, 0.227749f, 0.227688f, 0.227627f, 0.227566f, 0.227505f, 0.227443f, 0.227382f, 0.227321f, 0.22726f, 0.227198f, 0.227137f, 0.227076f, 0.227014f, 0.226953f, 0.226892f, 0.22683f,
-0.226769f, 0.226708f, 0.226646f, 0.226585f, 0.226524f, 0.226462f, 0.226401f, 0.226339f, 0.226278f, 0.226217f, 0.226155f, 0.226094f, 0.226032f, 0.225971f, 0.225909f, 0.225848f, 0.225786f, 0.225725f, 0.225663f, 0.225602f,
-0.22554f, 0.225479f, 0.225417f, 0.225356f, 0.225294f, 0.225233f, 0.225171f, 0.225109f, 0.225048f, 0.224986f, 0.224925f, 0.224863f, 0.224801f, 0.22474f, 0.224678f, 0.224616f, 0.224555f, 0.224493f, 0.224431f, 0.22437f,
-0.224308f, 0.224246f, 0.224184f, 0.224123f, 0.224061f, 0.223999f, 0.223937f, 0.223876f, 0.223814f, 0.223752f, 0.22369f, 0.223628f, 0.223567f, 0.223505f, 0.223443f, 0.223381f, 0.223319f, 0.223257f, 0.223195f, 0.223134f,
-0.223072f, 0.22301f, 0.222948f, 0.222886f, 0.222824f, 0.222762f, 0.2227f, 0.222638f, 0.222576f, 0.222514f, 0.222452f, 0.22239f, 0.222328f, 0.222266f, 0.222204f, 0.222142f, 0.22208f, 0.222018f, 0.221956f, 0.221894f,
-0.221832f, 0.22177f, 0.221708f, 0.221646f, 0.221583f, 0.221521f, 0.221459f, 0.221397f, 0.221335f, 0.221273f, 0.221211f, 0.221148f, 0.221086f, 0.221024f, 0.220962f, 0.2209f, 0.220837f, 0.220775f, 0.220713f, 0.220651f,
-0.220588f, 0.220526f, 0.220464f, 0.220402f, 0.220339f, 0.220277f, 0.220215f, 0.220152f, 0.22009f, 0.220028f, 0.219965f, 0.219903f, 0.219841f, 0.219778f, 0.219716f, 0.219653f, 0.219591f, 0.219529f, 0.219466f, 0.219404f,
-0.219341f, 0.219279f, 0.219216f, 0.219154f, 0.219091f, 0.219029f, 0.218966f, 0.218904f, 0.218841f, 0.218779f, 0.218716f, 0.218654f, 0.218591f, 0.218529f, 0.218466f, 0.218403f, 0.218341f, 0.218278f, 0.218216f, 0.218153f,
-0.21809f, 0.218028f, 0.217965f, 0.217903f, 0.21784f, 0.217777f, 0.217714f, 0.217652f, 0.217589f, 0.217526f, 0.217464f, 0.217401f, 0.217338f, 0.217275f, 0.217213f, 0.21715f, 0.217087f, 0.217024f, 0.216962f, 0.216899f,
-0.216836f, 0.216773f, 0.21671f, 0.216648f, 0.216585f, 0.216522f, 0.216459f, 0.216396f, 0.216333f, 0.21627f, 0.216207f, 0.216145f, 0.216082f, 0.216019f, 0.215956f, 0.215893f, 0.21583f, 0.215767f, 0.215704f, 0.215641f,
-0.215578f, 0.215515f, 0.215452f, 0.215389f, 0.215326f, 0.215263f, 0.2152f, 0.215137f, 0.215074f, 0.215011f, 0.214948f, 0.214885f, 0.214821f, 0.214758f, 0.214695f, 0.214632f, 0.214569f, 0.214506f, 0.214443f, 0.21438f,
-0.214316f, 0.214253f, 0.21419f, 0.214127f, 0.214064f, 0.214f, 0.213937f, 0.213874f, 0.213811f, 0.213747f, 0.213684f, 0.213621f, 0.213558f, 0.213494f, 0.213431f, 0.213368f, 0.213305f, 0.213241f, 0.213178f, 0.213115f,
-0.213051f, 0.212988f, 0.212924f, 0.212861f, 0.212798f, 0.212734f, 0.212671f, 0.212608f, 0.212544f, 0.212481f, 0.212417f, 0.212354f, 0.21229f, 0.212227f, 0.212163f, 0.2121f, 0.212036f, 0.211973f, 0.211909f, 0.211846f,
-0.211782f, 0.211719f, 0.211655f, 0.211592f, 0.211528f, 0.211465f, 0.211401f, 0.211337f, 0.211274f, 0.21121f, 0.211147f, 0.211083f, 0.211019f, 0.210956f, 0.210892f, 0.210828f, 0.210765f, 0.210701f, 0.210637f, 0.210574f,
-0.21051f, 0.210446f, 0.210383f, 0.210319f, 0.210255f, 0.210191f, 0.210128f, 0.210064f, 0.21f, 0.209936f, 0.209873f, 0.209809f, 0.209745f, 0.209681f, 0.209617f, 0.209553f, 0.20949f, 0.209426f, 0.209362f, 0.209298f,
-0.209234f, 0.20917f, 0.209106f, 0.209042f, 0.208979f, 0.208915f, 0.208851f, 0.208787f, 0.208723f, 0.208659f, 0.208595f, 0.208531f, 0.208467f, 0.208403f, 0.208339f, 0.208275f, 0.208211f, 0.208147f, 0.208083f, 0.208019f,
-0.207955f, 0.207891f, 0.207827f, 0.207762f, 0.207698f, 0.207634f, 0.20757f, 0.207506f, 0.207442f, 0.207378f, 0.207314f, 0.207249f, 0.207185f, 0.207121f, 0.207057f, 0.206993f, 0.206929f, 0.206864f, 0.2068f, 0.206736f,
-0.206672f, 0.206607f, 0.206543f, 0.206479f, 0.206415f, 0.20635f, 0.206286f, 0.206222f, 0.206158f, 0.206093f, 0.206029f, 0.205965f, 0.2059f, 0.205836f, 0.205772f, 0.205707f, 0.205643f, 0.205578f, 0.205514f, 0.20545f,
-0.205385f, 0.205321f, 0.205256f, 0.205192f, 0.205127f, 0.205063f, 0.204999f, 0.204934f, 0.20487f, 0.204805f, 0.204741f, 0.204676f, 0.204612f, 0.204547f, 0.204483f, 0.204418f, 0.204353f, 0.204289f, 0.204224f, 0.20416f,
-0.204095f, 0.204031f, 0.203966f, 0.203901f, 0.203837f, 0.203772f, 0.203707f, 0.203643f, 0.203578f, 0.203514f, 0.203449f, 0.203384f, 0.203319f, 0.203255f, 0.20319f, 0.203125f, 0.203061f, 0.202996f, 0.202931f, 0.202866f,
-0.202802f, 0.202737f, 0.202672f, 0.202607f, 0.202543f, 0.202478f, 0.202413f, 0.202348f, 0.202283f, 0.202218f, 0.202154f, 0.202089f, 0.202024f, 0.201959f, 0.201894f, 0.201829f, 0.201764f, 0.201699f, 0.201635f, 0.20157f,
-0.201505f, 0.20144f, 0.201375f, 0.20131f, 0.201245f, 0.20118f, 0.201115f, 0.20105f, 0.200985f, 0.20092f, 0.200855f, 0.20079f, 0.200725f, 0.20066f, 0.200595f, 0.20053f, 0.200465f, 0.2004f, 0.200334f, 0.200269f,
-0.200204f, 0.200139f, 0.200074f, 0.200009f, 0.199944f, 0.199879f, 0.199813f, 0.199748f, 0.199683f, 0.199618f, 0.199553f, 0.199488f, 0.199422f, 0.199357f, 0.199292f, 0.199227f, 0.199161f, 0.199096f, 0.199031f, 0.198966f,
-0.1989f, 0.198835f, 0.19877f, 0.198704f, 0.198639f, 0.198574f, 0.198508f, 0.198443f, 0.198378f, 0.198312f, 0.198247f, 0.198182f, 0.198116f, 0.198051f, 0.197986f, 0.19792f, 0.197855f, 0.197789f, 0.197724f, 0.197658f,
-0.197593f, 0.197528f, 0.197462f, 0.197397f, 0.197331f, 0.197266f, 0.1972f, 0.197135f, 0.197069f, 0.197004f, 0.196938f, 0.196872f, 0.196807f, 0.196741f, 0.196676f, 0.19661f, 0.196545f, 0.196479f, 0.196413f, 0.196348f,
-0.196282f, 0.196217f, 0.196151f, 0.196085f, 0.19602f, 0.195954f, 0.195888f, 0.195823f, 0.195757f, 0.195691f, 0.195626f, 0.19556f, 0.195494f, 0.195428f, 0.195363f, 0.195297f, 0.195231f, 0.195165f, 0.1951f, 0.195034f,
-0.194968f, 0.194902f, 0.194836f, 0.194771f, 0.194705f, 0.194639f, 0.194573f, 0.194507f, 0.194441f, 0.194375f, 0.19431f, 0.194244f, 0.194178f, 0.194112f, 0.194046f, 0.19398f, 0.193914f, 0.193848f, 0.193782f, 0.193716f,
-0.19365f, 0.193584f, 0.193518f, 0.193452f, 0.193386f, 0.19332f, 0.193254f, 0.193188f, 0.193122f, 0.193056f, 0.19299f, 0.192924f, 0.192858f, 0.192792f, 0.192726f, 0.19266f, 0.192594f, 0.192528f, 0.192462f, 0.192395f,
-0.192329f, 0.192263f, 0.192197f, 0.192131f, 0.192065f, 0.191999f, 0.191932f, 0.191866f, 0.1918f, 0.191734f, 0.191668f, 0.191601f, 0.191535f, 0.191469f, 0.191403f, 0.191336f, 0.19127f, 0.191204f, 0.191138f, 0.191071f,
-0.191005f, 0.190939f, 0.190872f, 0.190806f, 0.19074f, 0.190673f, 0.190607f, 0.190541f, 0.190474f, 0.190408f, 0.190341f, 0.190275f, 0.190209f, 0.190142f, 0.190076f, 0.190009f, 0.189943f, 0.189877f, 0.18981f, 0.189744f,
-0.189677f, 0.189611f, 0.189544f, 0.189478f, 0.189411f, 0.189345f, 0.189278f, 0.189212f, 0.189145f, 0.189079f, 0.189012f, 0.188945f, 0.188879f, 0.188812f, 0.188746f, 0.188679f, 0.188613f, 0.188546f, 0.188479f, 0.188413f,
-0.188346f, 0.188279f, 0.188213f, 0.188146f, 0.188079f, 0.188013f, 0.187946f, 0.187879f, 0.187813f, 0.187746f, 0.187679f, 0.187612f, 0.187546f, 0.187479f, 0.187412f, 0.187345f, 0.187279f, 0.187212f, 0.187145f, 0.187078f,
-0.187012f, 0.186945f, 0.186878f, 0.186811f, 0.186744f, 0.186677f, 0.186611f, 0.186544f, 0.186477f, 0.18641f, 0.186343f, 0.186276f, 0.186209f, 0.186142f, 0.186075f, 0.186009f, 0.185942f, 0.185875f, 0.185808f, 0.185741f,
-0.185674f, 0.185607f, 0.18554f, 0.185473f, 0.185406f, 0.185339f, 0.185272f, 0.185205f, 0.185138f, 0.185071f, 0.185004f, 0.184937f, 0.184869f, 0.184802f, 0.184735f, 0.184668f, 0.184601f, 0.184534f, 0.184467f, 0.1844f,
-0.184333f, 0.184265f, 0.184198f, 0.184131f, 0.184064f, 0.183997f, 0.18393f, 0.183862f, 0.183795f, 0.183728f, 0.183661f, 0.183594f, 0.183526f, 0.183459f, 0.183392f, 0.183325f, 0.183257f, 0.18319f, 0.183123f, 0.183055f,
-0.182988f, 0.182921f, 0.182854f, 0.182786f, 0.182719f, 0.182652f, 0.182584f, 0.182517f, 0.182449f, 0.182382f, 0.182315f, 0.182247f, 0.18218f, 0.182112f, 0.182045f, 0.181978f, 0.18191f, 0.181843f, 0.181775f, 0.181708f,
-0.18164f, 0.181573f, 0.181505f, 0.181438f, 0.18137f, 0.181303f, 0.181235f, 0.181168f, 0.1811f, 0.181033f, 0.180965f, 0.180898f, 0.18083f, 0.180763f, 0.180695f, 0.180627f, 0.18056f, 0.180492f, 0.180425f, 0.180357f,
-0.180289f, 0.180222f, 0.180154f, 0.180086f, 0.180019f, 0.179951f, 0.179883f, 0.179816f, 0.179748f, 0.17968f, 0.179613f, 0.179545f, 0.179477f, 0.179409f, 0.179342f, 0.179274f, 0.179206f, 0.179138f, 0.179071f, 0.179003f,
-0.178935f, 0.178867f, 0.178799f, 0.178732f, 0.178664f, 0.178596f, 0.178528f, 0.17846f, 0.178392f, 0.178325f, 0.178257f, 0.178189f, 0.178121f, 0.178053f, 0.177985f, 0.177917f, 0.177849f, 0.177781f, 0.177713f, 0.177645f,
-0.177578f, 0.17751f, 0.177442f, 0.177374f, 0.177306f, 0.177238f, 0.17717f, 0.177102f, 0.177034f, 0.176966f, 0.176898f, 0.176829f, 0.176761f, 0.176693f, 0.176625f, 0.176557f, 0.176489f, 0.176421f, 0.176353f, 0.176285f,
-0.176217f, 0.176149f, 0.17608f, 0.176012f, 0.175944f, 0.175876f, 0.175808f, 0.17574f, 0.175671f, 0.175603f, 0.175535f, 0.175467f, 0.175399f, 0.17533f, 0.175262f, 0.175194f, 0.175126f, 0.175057f, 0.174989f, 0.174921f,
-0.174853f, 0.174784f, 0.174716f, 0.174648f, 0.174579f, 0.174511f, 0.174443f, 0.174374f, 0.174306f, 0.174238f, 0.174169f, 0.174101f, 0.174033f, 0.173964f, 0.173896f, 0.173827f, 0.173759f, 0.173691f, 0.173622f, 0.173554f,
-0.173485f, 0.173417f, 0.173348f, 0.17328f, 0.173212f, 0.173143f, 0.173075f, 0.173006f, 0.172938f, 0.172869f, 0.172801f, 0.172732f, 0.172663f, 0.172595f, 0.172526f, 0.172458f, 0.172389f, 0.172321f, 0.172252f, 0.172183f,
-0.172115f, 0.172046f, 0.171978f, 0.171909f, 0.17184f, 0.171772f, 0.171703f, 0.171634f, 0.171566f, 0.171497f, 0.171428f, 0.17136f, 0.171291f, 0.171222f, 0.171154f, 0.171085f, 0.171016f, 0.170947f, 0.170879f, 0.17081f,
-0.170741f, 0.170672f, 0.170604f, 0.170535f, 0.170466f, 0.170397f, 0.170328f, 0.17026f, 0.170191f, 0.170122f, 0.170053f, 0.169984f, 0.169915f, 0.169847f, 0.169778f, 0.169709f, 0.16964f, 0.169571f, 0.169502f, 0.169433f,
-0.169364f, 0.169295f, 0.169226f, 0.169158f, 0.169089f, 0.16902f, 0.168951f, 0.168882f, 0.168813f, 0.168744f, 0.168675f, 0.168606f, 0.168537f, 0.168468f, 0.168399f, 0.16833f, 0.168261f, 0.168191f, 0.168122f, 0.168053f,
-0.167984f, 0.167915f, 0.167846f, 0.167777f, 0.167708f, 0.167639f, 0.16757f, 0.167501f, 0.167431f, 0.167362f, 0.167293f, 0.167224f, 0.167155f, 0.167086f, 0.167016f, 0.166947f, 0.166878f, 0.166809f, 0.16674f, 0.16667f,
-0.166601f, 0.166532f, 0.166463f, 0.166393f, 0.166324f, 0.166255f, 0.166186f, 0.166116f, 0.166047f, 0.165978f, 0.165908f, 0.165839f, 0.16577f, 0.1657f, 0.165631f, 0.165562f, 0.165492f, 0.165423f, 0.165354f, 0.165284f,
-0.165215f, 0.165145f, 0.165076f, 0.165007f, 0.164937f, 0.164868f, 0.164798f, 0.164729f, 0.164659f, 0.16459f, 0.16452f, 0.164451f, 0.164381f, 0.164312f, 0.164242f, 0.164173f, 0.164103f, 0.164034f, 0.163964f, 0.163895f,
-0.163825f, 0.163756f, 0.163686f, 0.163617f, 0.163547f, 0.163477f, 0.163408f, 0.163338f, 0.163269f, 0.163199f, 0.163129f, 0.16306f, 0.16299f, 0.16292f, 0.162851f, 0.162781f, 0.162711f, 0.162642f, 0.162572f, 0.162502f,
-0.162433f, 0.162363f, 0.162293f, 0.162223f, 0.162154f, 0.162084f, 0.162014f, 0.161945f, 0.161875f, 0.161805f, 0.161735f, 0.161665f, 0.161596f, 0.161526f, 0.161456f, 0.161386f, 0.161316f, 0.161246f, 0.161177f, 0.161107f,
-0.161037f, 0.160967f, 0.160897f, 0.160827f, 0.160757f, 0.160688f, 0.160618f, 0.160548f, 0.160478f, 0.160408f, 0.160338f, 0.160268f, 0.160198f, 0.160128f, 0.160058f, 0.159988f, 0.159918f, 0.159848f, 0.159778f, 0.159708f,
-0.159638f, 0.159568f, 0.159498f, 0.159428f, 0.159358f, 0.159288f, 0.159218f, 0.159148f, 0.159078f, 0.159008f, 0.158938f, 0.158867f, 0.158797f, 0.158727f, 0.158657f, 0.158587f, 0.158517f, 0.158447f, 0.158377f, 0.158306f,
-0.158236f, 0.158166f, 0.158096f, 0.158026f, 0.157955f, 0.157885f, 0.157815f, 0.157745f, 0.157675f, 0.157604f, 0.157534f, 0.157464f, 0.157394f, 0.157323f, 0.157253f, 0.157183f, 0.157112f, 0.157042f, 0.156972f, 0.156902f,
-0.156831f, 0.156761f, 0.156691f, 0.15662f, 0.15655f, 0.15648f, 0.156409f, 0.156339f, 0.156268f, 0.156198f, 0.156128f, 0.156057f, 0.155987f, 0.155916f, 0.155846f, 0.155776f, 0.155705f, 0.155635f, 0.155564f, 0.155494f,
-0.155423f, 0.155353f, 0.155282f, 0.155212f, 0.155141f, 0.155071f, 0.155f, 0.15493f, 0.154859f, 0.154789f, 0.154718f, 0.154648f, 0.154577f, 0.154506f, 0.154436f, 0.154365f, 0.154295f, 0.154224f, 0.154153f, 0.154083f,
-0.154012f, 0.153942f, 0.153871f, 0.1538f, 0.15373f, 0.153659f, 0.153588f, 0.153518f, 0.153447f, 0.153376f, 0.153305f, 0.153235f, 0.153164f, 0.153093f, 0.153023f, 0.152952f, 0.152881f, 0.15281f, 0.15274f, 0.152669f,
-0.152598f, 0.152527f, 0.152456f, 0.152386f, 0.152315f, 0.152244f, 0.152173f, 0.152102f, 0.152032f, 0.151961f, 0.15189f, 0.151819f, 0.151748f, 0.151677f, 0.151606f, 0.151535f, 0.151465f, 0.151394f, 0.151323f, 0.151252f,
-0.151181f, 0.15111f, 0.151039f, 0.150968f, 0.150897f, 0.150826f, 0.150755f, 0.150684f, 0.150613f, 0.150542f, 0.150471f, 0.1504f, 0.150329f, 0.150258f, 0.150187f, 0.150116f, 0.150045f, 0.149974f, 0.149903f, 0.149832f,
-0.149761f, 0.14969f, 0.149619f, 0.149548f, 0.149476f, 0.149405f, 0.149334f, 0.149263f, 0.149192f, 0.149121f, 0.14905f, 0.148978f, 0.148907f, 0.148836f, 0.148765f, 0.148694f, 0.148623f, 0.148551f, 0.14848f, 0.148409f,
-0.148338f, 0.148266f, 0.148195f, 0.148124f, 0.148053f, 0.147981f, 0.14791f, 0.147839f, 0.147768f, 0.147696f, 0.147625f, 0.147554f, 0.147482f, 0.147411f, 0.14734f, 0.147268f, 0.147197f, 0.147126f, 0.147054f, 0.146983f,
-0.146912f, 0.14684f, 0.146769f, 0.146697f, 0.146626f, 0.146555f, 0.146483f, 0.146412f, 0.14634f, 0.146269f, 0.146197f, 0.146126f, 0.146054f, 0.145983f, 0.145912f, 0.14584f, 0.145769f, 0.145697f, 0.145626f, 0.145554f,
-0.145482f, 0.145411f, 0.145339f, 0.145268f, 0.145196f, 0.145125f, 0.145053f, 0.144982f, 0.14491f, 0.144838f, 0.144767f, 0.144695f, 0.144624f, 0.144552f, 0.14448f, 0.144409f, 0.144337f, 0.144265f, 0.144194f, 0.144122f,
-0.14405f, 0.143979f, 0.143907f, 0.143835f, 0.143764f, 0.143692f, 0.14362f, 0.143549f, 0.143477f, 0.143405f, 0.143333f, 0.143262f, 0.14319f, 0.143118f, 0.143046f, 0.142974f, 0.142903f, 0.142831f, 0.142759f, 0.142687f,
-0.142615f, 0.142544f, 0.142472f, 0.1424f, 0.142328f, 0.142256f, 0.142184f, 0.142113f, 0.142041f, 0.141969f, 0.141897f, 0.141825f, 0.141753f, 0.141681f, 0.141609f, 0.141537f, 0.141465f, 0.141393f, 0.141321f, 0.14125f,
-0.141178f, 0.141106f, 0.141034f, 0.140962f, 0.14089f, 0.140818f, 0.140746f, 0.140674f, 0.140602f, 0.14053f, 0.140457f, 0.140385f, 0.140313f, 0.140241f, 0.140169f, 0.140097f, 0.140025f, 0.139953f, 0.139881f, 0.139809f,
-0.139737f, 0.139665f, 0.139592f, 0.13952f, 0.139448f, 0.139376f, 0.139304f, 0.139232f, 0.13916f, 0.139087f, 0.139015f, 0.138943f, 0.138871f, 0.138799f, 0.138726f, 0.138654f, 0.138582f, 0.13851f, 0.138437f, 0.138365f,
-0.138293f, 0.138221f, 0.138148f, 0.138076f, 0.138004f, 0.137932f, 0.137859f, 0.137787f, 0.137715f, 0.137642f, 0.13757f, 0.137498f, 0.137425f, 0.137353f, 0.137281f, 0.137208f, 0.137136f, 0.137064f, 0.136991f, 0.136919f,
-0.136846f, 0.136774f, 0.136702f, 0.136629f, 0.136557f, 0.136484f, 0.136412f, 0.136339f, 0.136267f, 0.136194f, 0.136122f, 0.13605f, 0.135977f, 0.135905f, 0.135832f, 0.13576f, 0.135687f, 0.135614f, 0.135542f, 0.135469f,
-0.135397f, 0.135324f, 0.135252f, 0.135179f, 0.135107f, 0.135034f, 0.134961f, 0.134889f, 0.134816f, 0.134744f, 0.134671f, 0.134598f, 0.134526f, 0.134453f, 0.134381f, 0.134308f, 0.134235f, 0.134163f, 0.13409f, 0.134017f,
-0.133945f, 0.133872f, 0.133799f, 0.133726f, 0.133654f, 0.133581f, 0.133508f, 0.133436f, 0.133363f, 0.13329f, 0.133217f, 0.133144f, 0.133072f, 0.132999f, 0.132926f, 0.132853f, 0.132781f, 0.132708f, 0.132635f, 0.132562f,
-0.132489f, 0.132416f, 0.132344f, 0.132271f, 0.132198f, 0.132125f, 0.132052f, 0.131979f, 0.131906f, 0.131834f, 0.131761f, 0.131688f, 0.131615f, 0.131542f, 0.131469f, 0.131396f, 0.131323f, 0.13125f, 0.131177f, 0.131104f,
-0.131031f, 0.130958f, 0.130885f, 0.130812f, 0.130739f, 0.130666f, 0.130593f, 0.13052f, 0.130447f, 0.130374f, 0.130301f, 0.130228f, 0.130155f, 0.130082f, 0.130009f, 0.129936f, 0.129863f, 0.12979f, 0.129717f, 0.129643f,
-0.12957f, 0.129497f, 0.129424f, 0.129351f, 0.129278f, 0.129205f, 0.129132f, 0.129058f, 0.128985f, 0.128912f, 0.128839f, 0.128766f, 0.128692f, 0.128619f, 0.128546f, 0.128473f, 0.1284f, 0.128326f, 0.128253f, 0.12818f,
-0.128107f, 0.128033f, 0.12796f, 0.127887f, 0.127814f, 0.12774f, 0.127667f, 0.127594f, 0.12752f, 0.127447f, 0.127374f, 0.1273f, 0.127227f, 0.127154f, 0.12708f, 0.127007f, 0.126934f, 0.12686f, 0.126787f, 0.126714f,
-0.12664f, 0.126567f, 0.126493f, 0.12642f, 0.126347f, 0.126273f, 0.1262f, 0.126126f, 0.126053f, 0.125979f, 0.125906f, 0.125832f, 0.125759f, 0.125685f, 0.125612f, 0.125538f, 0.125465f, 0.125391f, 0.125318f, 0.125244f,
-0.125171f, 0.125097f, 0.125024f, 0.12495f, 0.124877f, 0.124803f, 0.12473f, 0.124656f, 0.124582f, 0.124509f, 0.124435f, 0.124362f, 0.124288f, 0.124214f, 0.124141f, 0.124067f, 0.123993f, 0.12392f, 0.123846f, 0.123773f,
-0.123699f, 0.123625f, 0.123551f, 0.123478f, 0.123404f, 0.12333f, 0.123257f, 0.123183f, 0.123109f, 0.123036f, 0.122962f, 0.122888f, 0.122814f, 0.122741f, 0.122667f, 0.122593f, 0.122519f, 0.122445f, 0.122372f, 0.122298f,
-0.122224f, 0.12215f, 0.122076f, 0.122003f, 0.121929f, 0.121855f, 0.121781f, 0.121707f, 0.121633f, 0.121559f, 0.121486f, 0.121412f, 0.121338f, 0.121264f, 0.12119f, 0.121116f, 0.121042f, 0.120968f, 0.120894f, 0.12082f,
-0.120746f, 0.120673f, 0.120599f, 0.120525f, 0.120451f, 0.120377f, 0.120303f, 0.120229f, 0.120155f, 0.120081f, 0.120007f, 0.119933f, 0.119859f, 0.119785f, 0.119711f, 0.119636f, 0.119562f, 0.119488f, 0.119414f, 0.11934f,
-0.119266f, 0.119192f, 0.119118f, 0.119044f, 0.11897f, 0.118896f, 0.118822f, 0.118747f, 0.118673f, 0.118599f, 0.118525f, 0.118451f, 0.118377f, 0.118303f, 0.118228f, 0.118154f, 0.11808f, 0.118006f, 0.117932f, 0.117857f,
-0.117783f, 0.117709f, 0.117635f, 0.11756f, 0.117486f, 0.117412f, 0.117338f, 0.117263f, 0.117189f, 0.117115f, 0.117041f, 0.116966f, 0.116892f, 0.116818f, 0.116743f, 0.116669f, 0.116595f, 0.11652f, 0.116446f, 0.116372f,
-0.116297f, 0.116223f, 0.116149f, 0.116074f, 0.116f, 0.115926f, 0.115851f, 0.115777f, 0.115702f, 0.115628f, 0.115554f, 0.115479f, 0.115405f, 0.11533f, 0.115256f, 0.115181f, 0.115107f, 0.115032f, 0.114958f, 0.114883f,
-0.114809f, 0.114735f, 0.11466f, 0.114586f, 0.114511f, 0.114436f, 0.114362f, 0.114287f, 0.114213f, 0.114138f, 0.114064f, 0.113989f, 0.113915f, 0.11384f, 0.113766f, 0.113691f, 0.113616f, 0.113542f, 0.113467f, 0.113393f,
-0.113318f, 0.113243f, 0.113169f, 0.113094f, 0.113019f, 0.112945f, 0.11287f, 0.112795f, 0.112721f, 0.112646f, 0.112571f, 0.112497f, 0.112422f, 0.112347f, 0.112273f, 0.112198f, 0.112123f, 0.112048f, 0.111974f, 0.111899f,
-0.111824f, 0.111749f, 0.111675f, 0.1116f, 0.111525f, 0.11145f, 0.111375f, 0.111301f, 0.111226f, 0.111151f, 0.111076f, 0.111001f, 0.110927f, 0.110852f, 0.110777f, 0.110702f, 0.110627f, 0.110552f, 0.110477f, 0.110403f,
-0.110328f, 0.110253f, 0.110178f, 0.110103f, 0.110028f, 0.109953f, 0.109878f, 0.109803f, 0.109728f, 0.109653f, 0.109579f, 0.109504f, 0.109429f, 0.109354f, 0.109279f, 0.109204f, 0.109129f, 0.109054f, 0.108979f, 0.108904f,
-0.108829f, 0.108754f, 0.108679f, 0.108604f, 0.108529f, 0.108453f, 0.108378f, 0.108303f, 0.108228f, 0.108153f, 0.108078f, 0.108003f, 0.107928f, 0.107853f, 0.107778f, 0.107703f, 0.107628f, 0.107552f, 0.107477f, 0.107402f,
-0.107327f, 0.107252f, 0.107177f, 0.107101f, 0.107026f, 0.106951f, 0.106876f, 0.106801f, 0.106726f, 0.10665f, 0.106575f, 0.1065f, 0.106425f, 0.106349f, 0.106274f, 0.106199f, 0.106124f, 0.106048f, 0.105973f, 0.105898f,
-0.105823f, 0.105747f, 0.105672f, 0.105597f, 0.105521f, 0.105446f, 0.105371f, 0.105296f, 0.10522f, 0.105145f, 0.10507f, 0.104994f, 0.104919f, 0.104843f, 0.104768f, 0.104693f, 0.104617f, 0.104542f, 0.104467f, 0.104391f,
-0.104316f, 0.10424f, 0.104165f, 0.104089f, 0.104014f, 0.103939f, 0.103863f, 0.103788f, 0.103712f, 0.103637f, 0.103561f, 0.103486f, 0.10341f, 0.103335f, 0.103259f, 0.103184f, 0.103108f, 0.103033f, 0.102957f, 0.102882f,
-0.102806f, 0.102731f, 0.102655f, 0.10258f, 0.102504f, 0.102428f, 0.102353f, 0.102277f, 0.102202f, 0.102126f, 0.102051f, 0.101975f, 0.101899f, 0.101824f, 0.101748f, 0.101672f, 0.101597f, 0.101521f, 0.101446f, 0.10137f,
-0.101294f, 0.101219f, 0.101143f, 0.101067f, 0.100991f, 0.100916f, 0.10084f, 0.100764f, 0.100689f, 0.100613f, 0.100537f, 0.100461f, 0.100386f, 0.10031f, 0.100234f, 0.100158f, 0.100083f, 0.100007f, 0.099931f, 0.099855f,
-0.09978f, 0.099704f, 0.099628f, 0.099552f, 0.099476f, 0.0994f, 0.099325f, 0.099249f, 0.099173f, 0.099097f, 0.099021f, 0.098945f, 0.09887f, 0.098794f, 0.098718f, 0.098642f, 0.098566f, 0.09849f, 0.098414f, 0.098338f,
-0.098262f, 0.098186f, 0.098111f, 0.098035f, 0.097959f, 0.097883f, 0.097807f, 0.097731f, 0.097655f, 0.097579f, 0.097503f, 0.097427f, 0.097351f, 0.097275f, 0.097199f, 0.097123f, 0.097047f, 0.096971f, 0.096895f, 0.096819f,
-0.096743f, 0.096667f, 0.096591f, 0.096514f, 0.096438f, 0.096362f, 0.096286f, 0.09621f, 0.096134f, 0.096058f, 0.095982f, 0.095906f, 0.09583f, 0.095753f, 0.095677f, 0.095601f, 0.095525f, 0.095449f, 0.095373f, 0.095297f,
-0.09522f, 0.095144f, 0.095068f, 0.094992f, 0.094916f, 0.094839f, 0.094763f, 0.094687f, 0.094611f, 0.094535f, 0.094458f, 0.094382f, 0.094306f, 0.09423f, 0.094153f, 0.094077f, 0.094001f, 0.093925f, 0.093848f, 0.093772f,
-0.093696f, 0.093619f, 0.093543f, 0.093467f, 0.09339f, 0.093314f, 0.093238f, 0.093161f, 0.093085f, 0.093009f, 0.092932f, 0.092856f, 0.09278f, 0.092703f, 0.092627f, 0.09255f, 0.092474f, 0.092398f, 0.092321f, 0.092245f,
-0.092168f, 0.092092f, 0.092016f, 0.091939f, 0.091863f, 0.091786f, 0.09171f, 0.091633f, 0.091557f, 0.09148f, 0.091404f, 0.091327f, 0.091251f, 0.091174f, 0.091098f, 0.091021f, 0.090945f, 0.090868f, 0.090792f, 0.090715f,
-0.090639f, 0.090562f, 0.090486f, 0.090409f, 0.090332f, 0.090256f, 0.090179f, 0.090103f, 0.090026f, 0.08995f, 0.089873f, 0.089796f, 0.08972f, 0.089643f, 0.089566f, 0.08949f, 0.089413f, 0.089336f, 0.08926f, 0.089183f,
-0.089107f, 0.08903f, 0.088953f, 0.088876f, 0.0888f, 0.088723f, 0.088646f, 0.08857f, 0.088493f, 0.088416f, 0.088339f, 0.088263f, 0.088186f, 0.088109f, 0.088033f, 0.087956f, 0.087879f, 0.087802f, 0.087725f, 0.087649f,
-0.087572f, 0.087495f, 0.087418f, 0.087341f, 0.087265f, 0.087188f, 0.087111f, 0.087034f, 0.086957f, 0.08688f, 0.086804f, 0.086727f, 0.08665f, 0.086573f, 0.086496f, 0.086419f, 0.086342f, 0.086265f, 0.086189f, 0.086112f,
-0.086035f, 0.085958f, 0.085881f, 0.085804f, 0.085727f, 0.08565f, 0.085573f, 0.085496f, 0.085419f, 0.085342f, 0.085265f, 0.085188f, 0.085111f, 0.085034f, 0.084957f, 0.08488f, 0.084803f, 0.084726f, 0.084649f, 0.084572f,
-0.084495f, 0.084418f, 0.084341f, 0.084264f, 0.084187f, 0.08411f, 0.084033f, 0.083956f, 0.083879f, 0.083802f, 0.083725f, 0.083647f, 0.08357f, 0.083493f, 0.083416f, 0.083339f, 0.083262f, 0.083185f, 0.083108f, 0.08303f,
-0.082953f, 0.082876f, 0.082799f, 0.082722f, 0.082645f, 0.082567f, 0.08249f, 0.082413f, 0.082336f, 0.082259f, 0.082181f, 0.082104f, 0.082027f, 0.08195f, 0.081873f, 0.081795f, 0.081718f, 0.081641f, 0.081564f, 0.081486f,
-0.081409f, 0.081332f, 0.081254f, 0.081177f, 0.0811f, 0.081023f, 0.080945f, 0.080868f, 0.080791f, 0.080713f, 0.080636f, 0.080559f, 0.080481f, 0.080404f, 0.080327f, 0.080249f, 0.080172f, 0.080094f, 0.080017f, 0.07994f,
-0.079862f, 0.079785f, 0.079707f, 0.07963f, 0.079553f, 0.079475f, 0.079398f, 0.07932f, 0.079243f, 0.079165f, 0.079088f, 0.079011f, 0.078933f, 0.078856f, 0.078778f, 0.078701f, 0.078623f, 0.078546f, 0.078468f, 0.078391f,
-0.078313f, 0.078236f, 0.078158f, 0.078081f, 0.078003f, 0.077926f, 0.077848f, 0.07777f, 0.077693f, 0.077615f, 0.077538f, 0.07746f, 0.077383f, 0.077305f, 0.077227f, 0.07715f, 0.077072f, 0.076995f, 0.076917f, 0.076839f,
-0.076762f, 0.076684f, 0.076606f, 0.076529f, 0.076451f, 0.076374f, 0.076296f, 0.076218f, 0.076141f, 0.076063f, 0.075985f, 0.075907f, 0.07583f, 0.075752f, 0.075674f, 0.075597f, 0.075519f, 0.075441f, 0.075363f, 0.075286f,
-0.075208f, 0.07513f, 0.075052f, 0.074975f, 0.074897f, 0.074819f, 0.074741f, 0.074664f, 0.074586f, 0.074508f, 0.07443f, 0.074352f, 0.074275f, 0.074197f, 0.074119f, 0.074041f, 0.073963f, 0.073885f, 0.073808f, 0.07373f,
-0.073652f, 0.073574f, 0.073496f, 0.073418f, 0.07334f, 0.073262f, 0.073185f, 0.073107f, 0.073029f, 0.072951f, 0.072873f, 0.072795f, 0.072717f, 0.072639f, 0.072561f, 0.072483f, 0.072405f, 0.072327f, 0.072249f, 0.072171f,
-0.072093f, 0.072015f, 0.071937f, 0.071859f, 0.071781f, 0.071703f, 0.071625f, 0.071547f, 0.071469f, 0.071391f, 0.071313f, 0.071235f, 0.071157f, 0.071079f, 0.071001f, 0.070923f, 0.070845f, 0.070767f, 0.070689f, 0.070611f,
-0.070533f, 0.070455f, 0.070376f, 0.070298f, 0.07022f, 0.070142f, 0.070064f, 0.069986f, 0.069908f, 0.06983f, 0.069751f, 0.069673f, 0.069595f, 0.069517f, 0.069439f, 0.069361f, 0.069282f, 0.069204f, 0.069126f, 0.069048f,
-0.06897f, 0.068891f, 0.068813f, 0.068735f, 0.068657f, 0.068578f, 0.0685f, 0.068422f, 0.068344f, 0.068265f, 0.068187f, 0.068109f, 0.068031f, 0.067952f, 0.067874f, 0.067796f, 0.067717f, 0.067639f, 0.067561f, 0.067483f,
-0.067404f, 0.067326f, 0.067248f, 0.067169f, 0.067091f, 0.067013f, 0.066934f, 0.066856f, 0.066777f, 0.066699f, 0.066621f, 0.066542f, 0.066464f, 0.066386f, 0.066307f, 0.066229f, 0.06615f, 0.066072f, 0.065994f, 0.065915f,
-0.065837f, 0.065758f, 0.06568f, 0.065601f, 0.065523f, 0.065444f, 0.065366f, 0.065287f, 0.065209f, 0.06513f, 0.065052f, 0.064974f, 0.064895f, 0.064817f, 0.064738f, 0.064659f, 0.064581f, 0.064502f, 0.064424f, 0.064345f,
-0.064267f, 0.064188f, 0.06411f, 0.064031f, 0.063953f, 0.063874f, 0.063795f, 0.063717f, 0.063638f, 0.06356f, 0.063481f, 0.063402f, 0.063324f, 0.063245f, 0.063167f, 0.063088f, 0.063009f, 0.062931f, 0.062852f, 0.062773f,
-0.062695f, 0.062616f, 0.062537f, 0.062459f, 0.06238f, 0.062301f, 0.062223f, 0.062144f, 0.062065f, 0.061987f, 0.061908f, 0.061829f, 0.06175f, 0.061672f, 0.061593f, 0.061514f, 0.061435f, 0.061357f, 0.061278f, 0.061199f,
-0.06112f, 0.061042f, 0.060963f, 0.060884f, 0.060805f, 0.060726f, 0.060648f, 0.060569f, 0.06049f, 0.060411f, 0.060332f, 0.060254f, 0.060175f, 0.060096f, 0.060017f, 0.059938f, 0.059859f, 0.059781f, 0.059702f, 0.059623f,
-0.059544f, 0.059465f, 0.059386f, 0.059307f, 0.059228f, 0.059149f, 0.059071f, 0.058992f, 0.058913f, 0.058834f, 0.058755f, 0.058676f, 0.058597f, 0.058518f, 0.058439f, 0.05836f, 0.058281f, 0.058202f, 0.058123f, 0.058044f,
-0.057965f, 0.057886f, 0.057807f, 0.057728f, 0.057649f, 0.05757f, 0.057491f, 0.057412f, 0.057333f, 0.057254f, 0.057175f, 0.057096f, 0.057017f, 0.056938f, 0.056859f, 0.05678f, 0.056701f, 0.056622f, 0.056542f, 0.056463f,
-0.056384f, 0.056305f, 0.056226f, 0.056147f, 0.056068f, 0.055989f, 0.05591f, 0.05583f, 0.055751f, 0.055672f, 0.055593f, 0.055514f, 0.055435f, 0.055356f, 0.055276f, 0.055197f, 0.055118f, 0.055039f, 0.05496f, 0.05488f,
-0.054801f, 0.054722f, 0.054643f, 0.054564f, 0.054484f, 0.054405f, 0.054326f, 0.054247f, 0.054167f, 0.054088f, 0.054009f, 0.05393f, 0.05385f, 0.053771f, 0.053692f, 0.053613f, 0.053533f, 0.053454f, 0.053375f, 0.053295f,
-0.053216f, 0.053137f, 0.053057f, 0.052978f, 0.052899f, 0.052819f, 0.05274f, 0.052661f, 0.052581f, 0.052502f, 0.052423f, 0.052343f, 0.052264f, 0.052184f, 0.052105f, 0.052026f, 0.051946f, 0.051867f, 0.051787f, 0.051708f,
-0.051629f, 0.051549f, 0.05147f, 0.05139f, 0.051311f, 0.051231f, 0.051152f, 0.051073f, 0.050993f, 0.050914f, 0.050834f, 0.050755f, 0.050675f, 0.050596f, 0.050516f, 0.050437f, 0.050357f, 0.050278f, 0.050198f, 0.050119f,
-0.050039f, 0.04996f, 0.04988f, 0.049801f, 0.049721f, 0.049641f, 0.049562f, 0.049482f, 0.049403f, 0.049323f, 0.049244f, 0.049164f, 0.049084f, 0.049005f, 0.048925f, 0.048846f, 0.048766f, 0.048686f, 0.048607f, 0.048527f,
-0.048448f, 0.048368f, 0.048288f, 0.048209f, 0.048129f, 0.048049f, 0.04797f, 0.04789f, 0.04781f, 0.047731f, 0.047651f, 0.047571f, 0.047492f, 0.047412f, 0.047332f, 0.047252f, 0.047173f, 0.047093f, 0.047013f, 0.046934f,
-0.046854f, 0.046774f, 0.046694f, 0.046615f, 0.046535f, 0.046455f, 0.046375f, 0.046296f, 0.046216f, 0.046136f, 0.046056f, 0.045976f, 0.045897f, 0.045817f, 0.045737f, 0.045657f, 0.045577f, 0.045498f, 0.045418f, 0.045338f,
-0.045258f, 0.045178f, 0.045098f, 0.045018f, 0.044939f, 0.044859f, 0.044779f, 0.044699f, 0.044619f, 0.044539f, 0.044459f, 0.044379f, 0.0443f, 0.04422f, 0.04414f, 0.04406f, 0.04398f, 0.0439f, 0.04382f, 0.04374f,
-0.04366f, 0.04358f, 0.0435f, 0.04342f, 0.04334f, 0.04326f, 0.04318f, 0.0431f, 0.04302f, 0.04294f, 0.04286f, 0.04278f, 0.0427f, 0.04262f, 0.04254f, 0.04246f, 0.04238f, 0.0423f, 0.04222f, 0.04214f,
-0.04206f, 0.04198f, 0.0419f, 0.04182f, 0.04174f, 0.04166f, 0.04158f, 0.0415f, 0.04142f, 0.04134f, 0.041259f, 0.041179f, 0.041099f, 0.041019f, 0.040939f, 0.040859f, 0.040779f, 0.040699f, 0.040619f, 0.040538f,
-0.040458f, 0.040378f, 0.040298f, 0.040218f, 0.040138f, 0.040057f, 0.039977f, 0.039897f, 0.039817f, 0.039737f, 0.039656f, 0.039576f, 0.039496f, 0.039416f, 0.039336f, 0.039255f, 0.039175f, 0.039095f, 0.039015f, 0.038934f,
-0.038854f, 0.038774f, 0.038694f, 0.038613f, 0.038533f, 0.038453f, 0.038373f, 0.038292f, 0.038212f, 0.038132f, 0.038051f, 0.037971f, 0.037891f, 0.037811f, 0.03773f, 0.03765f, 0.03757f, 0.037489f, 0.037409f, 0.037329f,
-0.037248f, 0.037168f, 0.037087f, 0.037007f, 0.036927f, 0.036846f, 0.036766f, 0.036686f, 0.036605f, 0.036525f, 0.036444f, 0.036364f, 0.036284f, 0.036203f, 0.036123f, 0.036042f, 0.035962f, 0.035881f, 0.035801f, 0.035721f,
-0.03564f, 0.03556f, 0.035479f, 0.035399f, 0.035318f, 0.035238f, 0.035157f, 0.035077f, 0.034996f, 0.034916f, 0.034835f, 0.034755f, 0.034674f, 0.034594f, 0.034513f, 0.034433f, 0.034352f, 0.034272f, 0.034191f, 0.034111f,
-0.03403f, 0.03395f, 0.033869f, 0.033788f, 0.033708f, 0.033627f, 0.033547f, 0.033466f, 0.033386f, 0.033305f, 0.033224f, 0.033144f, 0.033063f, 0.032983f, 0.032902f, 0.032821f, 0.032741f, 0.03266f, 0.032579f, 0.032499f,
-0.032418f, 0.032337f, 0.032257f, 0.032176f, 0.032095f, 0.032015f, 0.031934f, 0.031853f, 0.031773f, 0.031692f, 0.031611f, 0.031531f, 0.03145f, 0.031369f, 0.031289f, 0.031208f, 0.031127f, 0.031046f, 0.030966f, 0.030885f,
-0.030804f, 0.030723f, 0.030643f, 0.030562f, 0.030481f, 0.0304f, 0.03032f, 0.030239f, 0.030158f, 0.030077f, 0.029996f, 0.029916f, 0.029835f, 0.029754f, 0.029673f, 0.029592f, 0.029512f, 0.029431f, 0.02935f, 0.029269f,
-0.029188f, 0.029107f, 0.029027f, 0.028946f, 0.028865f, 0.028784f, 0.028703f, 0.028622f, 0.028541f, 0.02846f, 0.02838f, 0.028299f, 0.028218f, 0.028137f, 0.028056f, 0.027975f, 0.027894f, 0.027813f, 0.027732f, 0.027651f,
-0.02757f, 0.027489f, 0.027408f, 0.027328f, 0.027247f, 0.027166f, 0.027085f, 0.027004f, 0.026923f, 0.026842f, 0.026761f, 0.02668f, 0.026599f, 0.026518f, 0.026437f, 0.026356f, 0.026275f, 0.026194f, 0.026113f, 0.026032f,
-0.025951f, 0.02587f, 0.025788f, 0.025707f, 0.025626f, 0.025545f, 0.025464f, 0.025383f, 0.025302f, 0.025221f, 0.02514f, 0.025059f, 0.024978f, 0.024897f, 0.024816f, 0.024734f, 0.024653f, 0.024572f, 0.024491f, 0.02441f,
-0.024329f, 0.024248f, 0.024167f, 0.024085f, 0.024004f, 0.023923f, 0.023842f, 0.023761f, 0.02368f, 0.023598f, 0.023517f, 0.023436f, 0.023355f, 0.023274f, 0.023193f, 0.023111f, 0.02303f, 0.022949f, 0.022868f, 0.022787f,
-0.022705f, 0.022624f, 0.022543f, 0.022462f, 0.02238f, 0.022299f, 0.022218f, 0.022137f, 0.022055f, 0.021974f, 0.021893f, 0.021812f, 0.02173f, 0.021649f, 0.021568f, 0.021486f, 0.021405f, 0.021324f, 0.021242f, 0.021161f,
-0.02108f, 0.020999f, 0.020917f, 0.020836f, 0.020755f, 0.020673f, 0.020592f, 0.02051f, 0.020429f, 0.020348f, 0.020266f, 0.020185f, 0.020104f, 0.020022f, 0.019941f, 0.019859f, 0.019778f, 0.019697f, 0.019615f, 0.019534f,
-0.019452f, 0.019371f, 0.01929f, 0.019208f, 0.019127f, 0.019045f, 0.018964f, 0.018882f, 0.018801f, 0.01872f, 0.018638f, 0.018557f, 0.018475f, 0.018394f, 0.018312f, 0.018231f, 0.018149f, 0.018068f, 0.017986f, 0.017905f,
-0.017823f, 0.017742f, 0.01766f, 0.017579f, 0.017497f, 0.017416f, 0.017334f, 0.017253f, 0.017171f, 0.01709f, 0.017008f, 0.016926f, 0.016845f, 0.016763f, 0.016682f, 0.0166f, 0.016519f, 0.016437f, 0.016355f, 0.016274f,
-0.016192f, 0.016111f, 0.016029f, 0.015947f, 0.015866f, 0.015784f, 0.015703f, 0.015621f, 0.015539f, 0.015458f, 0.015376f, 0.015294f, 0.015213f, 0.015131f, 0.015049f, 0.014968f, 0.014886f, 0.014804f, 0.014723f, 0.014641f,
-0.014559f, 0.014478f, 0.014396f, 0.014314f, 0.014233f, 0.014151f, 0.014069f, 0.013987f, 0.013906f, 0.013824f, 0.013742f, 0.013661f, 0.013579f, 0.013497f, 0.013415f, 0.013334f, 0.013252f, 0.01317f, 0.013088f, 0.013007f,
-0.012925f, 0.012843f, 0.012761f, 0.012679f, 0.012598f, 0.012516f, 0.012434f, 0.012352f, 0.01227f, 0.012189f, 0.012107f, 0.012025f, 0.011943f, 0.011861f, 0.011779f, 0.011698f, 0.011616f, 0.011534f, 0.011452f, 0.01137f,
-0.011288f, 0.011206f, 0.011125f, 0.011043f, 0.010961f, 0.010879f, 0.010797f, 0.010715f, 0.010633f, 0.010551f, 0.010469f, 0.010387f, 0.010306f, 0.010224f, 0.010142f, 0.01006f, 0.009978f, 0.009896f, 0.009814f, 0.009732f,
-0.00965f, 0.009568f, 0.009486f, 0.009404f, 0.009322f, 0.00924f, 0.009158f, 0.009076f, 0.008994f, 0.008912f, 0.00883f, 0.008748f, 0.008666f, 0.008584f, 0.008502f, 0.00842f, 0.008338f, 0.008256f, 0.008174f, 0.008092f,
-0.00801f, 0.007928f, 0.007846f, 0.007764f, 0.007682f, 0.0076f, 0.007518f, 0.007436f, 0.007354f, 0.007271f, 0.007189f, 0.007107f, 0.007025f, 0.006943f, 0.006861f, 0.006779f, 0.006697f, 0.006615f, 0.006532f, 0.00645f,
-0.006368f, 0.006286f, 0.006204f, 0.006122f, 0.00604f, 0.005958f, 0.005875f, 0.005793f, 0.005711f, 0.005629f, 0.005547f, 0.005465f, 0.005382f, 0.0053f, 0.005218f, 0.005136f, 0.005054f, 0.004971f, 0.004889f, 0.004807f,
-0.004725f, 0.004642f, 0.00456f, 0.004478f, 0.004396f, 0.004314f, 0.004231f, 0.004149f, 0.004067f, 0.003985f, 0.003902f, 0.00382f, 0.003738f, 0.003655f, 0.003573f, 0.003491f, 0.003409f, 0.003326f, 0.003244f, 0.003162f,
-0.003079f, 0.002997f, 0.002915f, 0.002833f, 0.00275f, 0.002668f, 0.002586f, 0.002503f, 0.002421f, 0.002339f, 0.002256f, 0.002174f, 0.002091f, 0.002009f, 0.001927f, 0.001844f, 0.001762f, 0.00168f, 0.001597f, 0.001515f,
-0.001432f, 0.00135f, 0.001268f, 0.001185f, 0.001103f, 0.00102f, 0.000938f, 0.000856f, 0.000773f, 0.000691f, 0.000608f, 0.000526f, 0.000443f, 0.000361f, 0.000279f, 0.000196f, 0.000114f, 3.1e-05f, -5.1e-05f, -0.000134f,
--0.000216f, -0.000299f, -0.000381f, -0.000464f, -0.000546f, -0.000629f, -0.000711f, -0.000794f, -0.000876f, -0.000959f, -0.001041f, -0.001124f, -0.001206f, -0.001289f, -0.001371f, -0.001454f, -0.001536f, -0.001619f, -0.001701f, -0.001784f,
--0.001867f, -0.001949f, -0.002032f, -0.002114f, -0.002197f, -0.002279f, -0.002362f, -0.002445f, -0.002527f, -0.00261f, -0.002692f, -0.002775f, -0.002858f, -0.00294f, -0.003023f, -0.003105f, -0.003188f, -0.003271f, -0.003353f, -0.003436f,
--0.003519f, -0.003601f, -0.003684f, -0.003767f, -0.003849f, -0.003932f, -0.004015f, -0.004097f, -0.00418f, -0.004263f, -0.004345f, -0.004428f, -0.004511f, -0.004593f, -0.004676f, -0.004759f, -0.004841f, -0.004924f, -0.005007f, -0.00509f,
--0.005172f, -0.005255f, -0.005338f, -0.00542f, -0.005503f, -0.005586f, -0.005669f, -0.005751f, -0.005834f, -0.005917f, -0.006f, -0.006082f, -0.006165f, -0.006248f, -0.006331f, -0.006414f, -0.006496f, -0.006579f, -0.006662f, -0.006745f,
--0.006828f, -0.00691f, -0.006993f, -0.007076f, -0.007159f, -0.007242f, -0.007325f, -0.007407f, -0.00749f, -0.007573f, -0.007656f, -0.007739f, -0.007822f, -0.007904f, -0.007987f, -0.00807f, -0.008153f, -0.008236f, -0.008319f, -0.008402f,
--0.008485f, -0.008567f, -0.00865f, -0.008733f, -0.008816f, -0.008899f, -0.008982f, -0.009065f, -0.009148f, -0.009231f, -0.009314f, -0.009397f, -0.00948f, -0.009562f, -0.009645f, -0.009728f, -0.009811f, -0.009894f, -0.009977f, -0.01006f,
--0.010143f, -0.010226f, -0.010309f, -0.010392f, -0.010475f, -0.010558f, -0.010641f, -0.010724f, -0.010807f, -0.01089f, -0.010973f, -0.011056f, -0.011139f, -0.011222f, -0.011305f, -0.011388f, -0.011471f, -0.011554f, -0.011637f, -0.01172f,
--0.011803f, -0.011886f, -0.011969f, -0.012053f, -0.012136f, -0.012219f, -0.012302f, -0.012385f, -0.012468f, -0.012551f, -0.012634f, -0.012717f, -0.0128f, -0.012883f, -0.012966f, -0.01305f, -0.013133f, -0.013216f, -0.013299f, -0.013382f,
--0.013465f, -0.013548f, -0.013631f, -0.013715f, -0.013798f, -0.013881f, -0.013964f, -0.014047f, -0.01413f, -0.014213f, -0.014297f, -0.01438f, -0.014463f, -0.014546f, -0.014629f, -0.014712f, -0.014796f, -0.014879f, -0.014962f, -0.015045f,
--0.015128f, -0.015212f, -0.015295f, -0.015378f, -0.015461f, -0.015545f, -0.015628f, -0.015711f, -0.015794f, -0.015878f, -0.015961f, -0.016044f, -0.016127f, -0.016211f, -0.016294f, -0.016377f, -0.01646f, -0.016544f, -0.016627f, -0.01671f,
--0.016793f, -0.016877f, -0.01696f, -0.017043f, -0.017127f, -0.01721f, -0.017293f, -0.017376f, -0.01746f, -0.017543f, -0.017626f, -0.01771f, -0.017793f, -0.017876f, -0.01796f, -0.018043f, -0.018126f, -0.01821f, -0.018293f, -0.018377f,
--0.01846f, -0.018543f, -0.018627f, -0.01871f, -0.018793f, -0.018877f, -0.01896f, -0.019044f, -0.019127f, -0.01921f, -0.019294f, -0.019377f, -0.01946f, -0.019544f, -0.019627f, -0.019711f, -0.019794f, -0.019878f, -0.019961f, -0.020044f,
--0.020128f, -0.020211f, -0.020295f, -0.020378f, -0.020462f, -0.020545f, -0.020629f, -0.020712f, -0.020796f, -0.020879f, -0.020962f, -0.021046f, -0.021129f, -0.021213f, -0.021296f, -0.02138f, -0.021463f, -0.021547f, -0.02163f, -0.021714f,
--0.021797f, -0.021881f, -0.021964f, -0.022048f, -0.022131f, -0.022215f, -0.022299f, -0.022382f, -0.022466f, -0.022549f, -0.022633f, -0.022716f, -0.0228f, -0.022883f, -0.022967f, -0.023051f, -0.023134f, -0.023218f, -0.023301f, -0.023385f,
--0.023468f, -0.023552f, -0.023636f, -0.023719f, -0.023803f, -0.023886f, -0.02397f, -0.024054f, -0.024137f, -0.024221f, -0.024305f, -0.024388f, -0.024472f, -0.024555f, -0.024639f, -0.024723f, -0.024806f, -0.02489f, -0.024974f, -0.025057f,
--0.025141f, -0.025225f, -0.025308f, -0.025392f, -0.025476f, -0.025559f, -0.025643f, -0.025727f, -0.02581f, -0.025894f, -0.025978f, -0.026061f, -0.026145f, -0.026229f, -0.026313f, -0.026396f, -0.02648f, -0.026564f, -0.026647f, -0.026731f,
--0.026815f, -0.026899f, -0.026982f, -0.027066f, -0.02715f, -0.027234f, -0.027317f, -0.027401f, -0.027485f, -0.027569f, -0.027653f, -0.027736f, -0.02782f, -0.027904f, -0.027988f, -0.028071f, -0.028155f, -0.028239f, -0.028323f, -0.028407f,
--0.02849f, -0.028574f, -0.028658f, -0.028742f, -0.028826f, -0.02891f, -0.028993f, -0.029077f, -0.029161f, -0.029245f, -0.029329f, -0.029413f, -0.029496f, -0.02958f, -0.029664f, -0.029748f, -0.029832f, -0.029916f, -0.03f, -0.030083f,
--0.030167f, -0.030251f, -0.030335f, -0.030419f, -0.030503f, -0.030587f, -0.030671f, -0.030755f, -0.030839f, -0.030922f, -0.031006f, -0.03109f, -0.031174f, -0.031258f, -0.031342f, -0.031426f, -0.03151f, -0.031594f, -0.031678f, -0.031762f,
--0.031846f, -0.03193f, -0.032014f, -0.032098f, -0.032182f, -0.032266f, -0.032349f, -0.032433f, -0.032517f, -0.032601f, -0.032685f, -0.032769f, -0.032853f, -0.032937f, -0.033021f, -0.033105f, -0.033189f, -0.033273f, -0.033357f, -0.033441f,
--0.033525f, -0.03361f, -0.033694f, -0.033778f, -0.033862f, -0.033946f, -0.03403f, -0.034114f, -0.034198f, -0.034282f, -0.034366f, -0.03445f, -0.034534f, -0.034618f, -0.034702f, -0.034786f, -0.03487f, -0.034954f, -0.035038f, -0.035123f,
--0.035207f, -0.035291f, -0.035375f, -0.035459f, -0.035543f, -0.035627f, -0.035711f, -0.035795f, -0.03588f, -0.035964f, -0.036048f, -0.036132f, -0.036216f, -0.0363f, -0.036384f, -0.036468f, -0.036553f, -0.036637f, -0.036721f, -0.036805f,
--0.036889f, -0.036973f, -0.037058f, -0.037142f, -0.037226f, -0.03731f, -0.037394f, -0.037478f, -0.037563f, -0.037647f, -0.037731f, -0.037815f, -0.037899f, -0.037984f, -0.038068f, -0.038152f, -0.038236f, -0.038321f, -0.038405f, -0.038489f,
--0.038573f, -0.038657f, -0.038742f, -0.038826f, -0.03891f, -0.038994f, -0.039079f, -0.039163f, -0.039247f, -0.039331f, -0.039416f, -0.0395f, -0.039584f, -0.039669f, -0.039753f, -0.039837f, -0.039921f, -0.040006f, -0.04009f, -0.040174f,
--0.040259f, -0.040343f, -0.040427f, -0.040511f, -0.040596f, -0.04068f, -0.040764f, -0.040849f, -0.040933f, -0.041017f, -0.041102f, -0.041186f, -0.04127f, -0.041355f, -0.041439f, -0.041523f, -0.041608f, -0.041692f, -0.041777f, -0.041861f,
--0.041945f, -0.04203f, -0.042114f, -0.042198f, -0.042283f, -0.042367f, -0.042452f, -0.042536f, -0.04262f, -0.042705f, -0.042789f, -0.042873f, -0.042958f, -0.043042f, -0.043127f, -0.043211f, -0.043296f, -0.04338f, -0.043464f, -0.043549f,
--0.043633f, -0.043718f, -0.043802f, -0.043887f, -0.043971f, -0.044055f, -0.04414f, -0.044224f, -0.044309f, -0.044393f, -0.044478f, -0.044562f, -0.044647f, -0.044731f, -0.044816f, -0.0449f, -0.044985f, -0.045069f, -0.045154f, -0.045238f,
--0.045323f, -0.045407f, -0.045492f, -0.045576f, -0.045661f, -0.045745f, -0.04583f, -0.045914f, -0.045999f, -0.046083f, -0.046168f, -0.046252f, -0.046337f, -0.046421f, -0.046506f, -0.046591f, -0.046675f, -0.04676f, -0.046844f, -0.046929f,
--0.047013f, -0.047098f, -0.047182f, -0.047267f, -0.047352f, -0.047436f, -0.047521f, -0.047605f, -0.04769f, -0.047775f, -0.047859f, -0.047944f, -0.048028f, -0.048113f, -0.048198f, -0.048282f, -0.048367f, -0.048451f, -0.048536f, -0.048621f,
--0.048705f, -0.04879f, -0.048875f, -0.048959f, -0.049044f, -0.049128f, -0.049213f, -0.049298f, -0.049382f, -0.049467f, -0.049552f, -0.049636f, -0.049721f, -0.049806f, -0.04989f, -0.049975f, -0.05006f, -0.050144f, -0.050229f, -0.050314f,
--0.050399f, -0.050483f, -0.050568f, -0.050653f, -0.050737f, -0.050822f, -0.050907f, -0.050991f, -0.051076f, -0.051161f, -0.051246f, -0.05133f, -0.051415f, -0.0515f, -0.051585f, -0.051669f, -0.051754f, -0.051839f, -0.051924f, -0.052008f,
--0.052093f, -0.052178f, -0.052263f, -0.052347f, -0.052432f, -0.052517f, -0.052602f, -0.052686f, -0.052771f, -0.052856f, -0.052941f, -0.053026f, -0.05311f, -0.053195f, -0.05328f, -0.053365f, -0.05345f, -0.053534f, -0.053619f, -0.053704f,
--0.053789f, -0.053874f, -0.053958f, -0.054043f, -0.054128f, -0.054213f, -0.054298f, -0.054383f, -0.054467f, -0.054552f, -0.054637f, -0.054722f, -0.054807f, -0.054892f, -0.054977f, -0.055061f, -0.055146f, -0.055231f, -0.055316f, -0.055401f,
--0.055486f, -0.055571f, -0.055656f, -0.05574f, -0.055825f, -0.05591f, -0.055995f, -0.05608f, -0.056165f, -0.05625f, -0.056335f, -0.05642f, -0.056505f, -0.05659f, -0.056674f, -0.056759f, -0.056844f, -0.056929f, -0.057014f, -0.057099f,
--0.057184f, -0.057269f, -0.057354f, -0.057439f, -0.057524f, -0.057609f, -0.057694f, -0.057779f, -0.057864f, -0.057949f, -0.058034f, -0.058119f, -0.058204f, -0.058289f, -0.058374f, -0.058459f, -0.058544f, -0.058629f, -0.058713f, -0.058798f,
--0.058883f, -0.058969f, -0.059054f, -0.059139f, -0.059224f, -0.059309f, -0.059394f, -0.059479f, -0.059564f, -0.059649f, -0.059734f, -0.059819f, -0.059904f, -0.059989f, -0.060074f, -0.060159f, -0.060244f, -0.060329f, -0.060414f, -0.060499f,
--0.060584f, -0.060669f, -0.060754f, -0.060839f, -0.060924f, -0.06101f, -0.061095f, -0.06118f, -0.061265f, -0.06135f, -0.061435f, -0.06152f, -0.061605f, -0.06169f, -0.061775f, -0.06186f, -0.061946f, -0.062031f, -0.062116f, -0.062201f,
--0.062286f, -0.062371f, -0.062456f, -0.062541f, -0.062627f, -0.062712f, -0.062797f, -0.062882f, -0.062967f, -0.063052f, -0.063137f, -0.063223f, -0.063308f, -0.063393f, -0.063478f, -0.063563f, -0.063648f, -0.063733f, -0.063819f, -0.063904f,
--0.063989f, -0.064074f, -0.064159f, -0.064245f, -0.06433f, -0.064415f, -0.0645f, -0.064585f, -0.064671f, -0.064756f, -0.064841f, -0.064926f, -0.065011f, -0.065097f, -0.065182f, -0.065267f, -0.065352f, -0.065437f, -0.065523f, -0.065608f,
--0.065693f, -0.065778f, -0.065864f, -0.065949f, -0.066034f, -0.066119f, -0.066205f, -0.06629f, -0.066375f, -0.06646f, -0.066546f, -0.066631f, -0.066716f, -0.066802f, -0.066887f, -0.066972f, -0.067057f, -0.067143f, -0.067228f, -0.067313f,
--0.067398f, -0.067484f, -0.067569f, -0.067654f, -0.06774f, -0.067825f, -0.06791f, -0.067996f, -0.068081f, -0.068166f, -0.068252f, -0.068337f, -0.068422f, -0.068508f, -0.068593f, -0.068678f, -0.068764f, -0.068849f, -0.068934f, -0.06902f,
--0.069105f, -0.06919f, -0.069276f, -0.069361f, -0.069446f, -0.069532f, -0.069617f, -0.069702f, -0.069788f, -0.069873f, -0.069959f, -0.070044f, -0.070129f, -0.070215f, -0.0703f, -0.070386f, -0.070471f, -0.070556f, -0.070642f, -0.070727f,
--0.070812f, -0.070898f, -0.070983f, -0.071069f, -0.071154f, -0.07124f, -0.071325f, -0.07141f, -0.071496f, -0.071581f, -0.071667f, -0.071752f, -0.071838f, -0.071923f, -0.072008f, -0.072094f, -0.072179f, -0.072265f, -0.07235f, -0.072436f,
--0.072521f, -0.072607f, -0.072692f, -0.072778f, -0.072863f, -0.072948f, -0.073034f, -0.073119f, -0.073205f, -0.07329f, -0.073376f, -0.073461f, -0.073547f, -0.073632f, -0.073718f, -0.073803f, -0.073889f, -0.073974f, -0.07406f, -0.074145f,
--0.074231f, -0.074316f, -0.074402f, -0.074487f, -0.074573f, -0.074659f, -0.074744f, -0.07483f, -0.074915f, -0.075001f, -0.075086f, -0.075172f, -0.075257f, -0.075343f, -0.075428f, -0.075514f, -0.075599f, -0.075685f, -0.075771f, -0.075856f,
--0.075942f, -0.076027f, -0.076113f, -0.076198f, -0.076284f, -0.07637f, -0.076455f, -0.076541f, -0.076626f, -0.076712f, -0.076798f, -0.076883f, -0.076969f, -0.077054f, -0.07714f, -0.077226f, -0.077311f, -0.077397f, -0.077482f, -0.077568f,
--0.077654f, -0.077739f, -0.077825f, -0.077911f, -0.077996f, -0.078082f, -0.078167f, -0.078253f, -0.078339f, -0.078424f, -0.07851f, -0.078596f, -0.078681f, -0.078767f, -0.078853f, -0.078938f, -0.079024f, -0.07911f, -0.079195f, -0.079281f,
--0.079367f, -0.079452f, -0.079538f, -0.079624f, -0.079709f, -0.079795f, -0.079881f, -0.079966f, -0.080052f, -0.080138f, -0.080223f, -0.080309f, -0.080395f, -0.080481f, -0.080566f, -0.080652f, -0.080738f, -0.080823f, -0.080909f, -0.080995f,
--0.081081f, -0.081166f, -0.081252f, -0.081338f, -0.081423f, -0.081509f, -0.081595f, -0.081681f, -0.081766f, -0.081852f, -0.081938f, -0.082024f, -0.082109f, -0.082195f, -0.082281f, -0.082367f, -0.082452f, -0.082538f, -0.082624f, -0.08271f,
--0.082796f, -0.082881f, -0.082967f, -0.083053f, -0.083139f, -0.083224f, -0.08331f, -0.083396f, -0.083482f, -0.083568f, -0.083653f, -0.083739f, -0.083825f, -0.083911f, -0.083997f, -0.084082f, -0.084168f, -0.084254f, -0.08434f, -0.084426f,
--0.084511f, -0.084597f, -0.084683f, -0.084769f, -0.084855f, -0.084941f, -0.085026f, -0.085112f, -0.085198f, -0.085284f, -0.08537f, -0.085456f, -0.085542f, -0.085627f, -0.085713f, -0.085799f, -0.085885f, -0.085971f, -0.086057f, -0.086143f,
--0.086228f, -0.086314f, -0.0864f, -0.086486f, -0.086572f, -0.086658f, -0.086744f, -0.08683f, -0.086916f, -0.087001f, -0.087087f, -0.087173f, -0.087259f, -0.087345f, -0.087431f, -0.087517f, -0.087603f, -0.087689f, -0.087775f, -0.087861f,
--0.087946f, -0.088032f, -0.088118f, -0.088204f, -0.08829f, -0.088376f, -0.088462f, -0.088548f, -0.088634f, -0.08872f, -0.088806f, -0.088892f, -0.088978f, -0.089064f, -0.08915f, -0.089236f, -0.089321f, -0.089407f, -0.089493f, -0.089579f,
--0.089665f, -0.089751f, -0.089837f, -0.089923f, -0.090009f, -0.090095f, -0.090181f, -0.090267f, -0.090353f, -0.090439f, -0.090525f, -0.090611f, -0.090697f, -0.090783f, -0.090869f, -0.090955f, -0.091041f, -0.091127f, -0.091213f, -0.091299f,
--0.091385f, -0.091471f, -0.091557f, -0.091643f, -0.091729f, -0.091815f, -0.091901f, -0.091987f, -0.092073f, -0.092159f, -0.092246f, -0.092332f, -0.092418f, -0.092504f, -0.09259f, -0.092676f, -0.092762f, -0.092848f, -0.092934f, -0.09302f,
--0.093106f, -0.093192f, -0.093278f, -0.093364f, -0.09345f, -0.093536f, -0.093622f, -0.093709f, -0.093795f, -0.093881f, -0.093967f, -0.094053f, -0.094139f, -0.094225f, -0.094311f, -0.094397f, -0.094483f, -0.094569f, -0.094656f, -0.094742f,
--0.094828f, -0.094914f, -0.095f, -0.095086f, -0.095172f, -0.095258f, -0.095344f, -0.095431f, -0.095517f, -0.095603f, -0.095689f, -0.095775f, -0.095861f, -0.095947f, -0.096033f, -0.09612f, -0.096206f, -0.096292f, -0.096378f, -0.096464f,
--0.09655f, -0.096637f, -0.096723f, -0.096809f, -0.096895f, -0.096981f, -0.097067f, -0.097154f, -0.09724f, -0.097326f, -0.097412f, -0.097498f, -0.097584f, -0.097671f, -0.097757f, -0.097843f, -0.097929f, -0.098015f, -0.098102f, -0.098188f,
--0.098274f, -0.09836f, -0.098446f, -0.098532f, -0.098619f, -0.098705f, -0.098791f, -0.098877f, -0.098964f, -0.09905f, -0.099136f, -0.099222f, -0.099308f, -0.099395f, -0.099481f, -0.099567f, -0.099653f, -0.09974f, -0.099826f, -0.099912f,
--0.099998f, -0.100085f, -0.100171f, -0.100257f, -0.100343f, -0.10043f, -0.100516f, -0.100602f, -0.100688f, -0.100775f, -0.100861f, -0.100947f, -0.101033f, -0.10112f, -0.101206f, -0.101292f, -0.101378f, -0.101465f, -0.101551f, -0.101637f,
--0.101724f, -0.10181f, -0.101896f, -0.101982f, -0.102069f, -0.102155f, -0.102241f, -0.102328f, -0.102414f, -0.1025f, -0.102587f, -0.102673f, -0.102759f, -0.102845f, -0.102932f, -0.103018f, -0.103104f, -0.103191f, -0.103277f, -0.103363f,
--0.10345f, -0.103536f, -0.103622f, -0.103709f, -0.103795f, -0.103881f, -0.103968f, -0.104054f, -0.10414f, -0.104227f, -0.104313f, -0.104399f, -0.104486f, -0.104572f, -0.104658f, -0.104745f, -0.104831f, -0.104918f, -0.105004f, -0.10509f,
--0.105177f, -0.105263f, -0.105349f, -0.105436f, -0.105522f, -0.105608f, -0.105695f, -0.105781f, -0.105868f, -0.105954f, -0.10604f, -0.106127f, -0.106213f, -0.1063f, -0.106386f, -0.106472f, -0.106559f, -0.106645f, -0.106732f, -0.106818f,
--0.106904f, -0.106991f, -0.107077f, -0.107164f, -0.10725f, -0.107336f, -0.107423f, -0.107509f, -0.107596f, -0.107682f, -0.107769f, -0.107855f, -0.107941f, -0.108028f, -0.108114f, -0.108201f, -0.108287f, -0.108374f, -0.10846f, -0.108547f,
--0.108633f, -0.108719f, -0.108806f, -0.108892f, -0.108979f, -0.109065f, -0.109152f, -0.109238f, -0.109325f, -0.109411f, -0.109498f, -0.109584f, -0.109671f, -0.109757f, -0.109843f, -0.10993f, -0.110016f, -0.110103f, -0.110189f, -0.110276f,
--0.110362f, -0.110449f, -0.110535f, -0.110622f, -0.110708f, -0.110795f, -0.110881f, -0.110968f, -0.111054f, -0.111141f, -0.111227f, -0.111314f, -0.1114f, -0.111487f, -0.111573f, -0.11166f, -0.111746f, -0.111833f, -0.111919f, -0.112006f,
--0.112093f, -0.112179f, -0.112266f, -0.112352f, -0.112439f, -0.112525f, -0.112612f, -0.112698f, -0.112785f, -0.112871f, -0.112958f, -0.113044f, -0.113131f, -0.113218f, -0.113304f, -0.113391f, -0.113477f, -0.113564f, -0.11365f, -0.113737f,
--0.113823f, -0.11391f, -0.113997f, -0.114083f, -0.11417f, -0.114256f, -0.114343f, -0.114429f, -0.114516f, -0.114603f, -0.114689f, -0.114776f, -0.114862f, -0.114949f, -0.115036f, -0.115122f, -0.115209f, -0.115295f, -0.115382f, -0.115469f,
--0.115555f, -0.115642f, -0.115728f, -0.115815f, -0.115902f, -0.115988f, -0.116075f, -0.116161f, -0.116248f, -0.116335f, -0.116421f, -0.116508f, -0.116595f, -0.116681f, -0.116768f, -0.116854f, -0.116941f, -0.117028f, -0.117114f, -0.117201f,
--0.117288f, -0.117374f, -0.117461f, -0.117548f, -0.117634f, -0.117721f, -0.117807f, -0.117894f, -0.117981f, -0.118067f, -0.118154f, -0.118241f, -0.118327f, -0.118414f, -0.118501f, -0.118587f, -0.118674f, -0.118761f, -0.118847f, -0.118934f,
--0.119021f, -0.119107f, -0.119194f, -0.119281f, -0.119367f, -0.119454f, -0.119541f, -0.119627f, -0.119714f, -0.119801f, -0.119888f, -0.119974f, -0.120061f, -0.120148f, -0.120234f, -0.120321f, -0.120408f, -0.120494f, -0.120581f, -0.120668f,
--0.120755f, -0.120841f, -0.120928f, -0.121015f, -0.121101f, -0.121188f, -0.121275f, -0.121362f, -0.121448f, -0.121535f, -0.121622f, -0.121709f, -0.121795f, -0.121882f, -0.121969f, -0.122055f, -0.122142f, -0.122229f, -0.122316f, -0.122402f,
--0.122489f, -0.122576f, -0.122663f, -0.122749f, -0.122836f, -0.122923f, -0.12301f, -0.123096f, -0.123183f, -0.12327f, -0.123357f, -0.123443f, -0.12353f, -0.123617f, -0.123704f, -0.123791f, -0.123877f, -0.123964f, -0.124051f, -0.124138f,
--0.124224f, -0.124311f, -0.124398f, -0.124485f, -0.124572f, -0.124658f, -0.124745f, -0.124832f, -0.124919f, -0.125005f, -0.125092f, -0.125179f, -0.125266f, -0.125353f, -0.125439f, -0.125526f, -0.125613f, -0.1257f, -0.125787f, -0.125873f,
--0.12596f, -0.126047f, -0.126134f, -0.126221f, -0.126308f, -0.126394f, -0.126481f, -0.126568f, -0.126655f, -0.126742f, -0.126829f, -0.126915f, -0.127002f, -0.127089f, -0.127176f, -0.127263f, -0.12735f, -0.127436f, -0.127523f, -0.12761f,
--0.127697f, -0.127784f, -0.127871f, -0.127957f, -0.128044f, -0.128131f, -0.128218f, -0.128305f, -0.128392f, -0.128479f, -0.128565f, -0.128652f, -0.128739f, -0.128826f, -0.128913f, -0.129f, -0.129087f, -0.129173f, -0.12926f, -0.129347f,
--0.129434f, -0.129521f, -0.129608f, -0.129695f, -0.129782f, -0.129868f, -0.129955f, -0.130042f, -0.130129f, -0.130216f, -0.130303f, -0.13039f, -0.130477f, -0.130564f, -0.13065f, -0.130737f, -0.130824f, -0.130911f, -0.130998f, -0.131085f,
--0.131172f, -0.131259f, -0.131346f, -0.131433f, -0.13152f, -0.131606f, -0.131693f, -0.13178f, -0.131867f, -0.131954f, -0.132041f, -0.132128f, -0.132215f, -0.132302f, -0.132389f, -0.132476f, -0.132563f, -0.13265f, -0.132736f, -0.132823f,
--0.13291f, -0.132997f, -0.133084f, -0.133171f, -0.133258f, -0.133345f, -0.133432f, -0.133519f, -0.133606f, -0.133693f, -0.13378f, -0.133867f, -0.133954f, -0.134041f, -0.134128f, -0.134215f, -0.134302f, -0.134389f, -0.134475f, -0.134562f,
--0.134649f, -0.134736f, -0.134823f, -0.13491f, -0.134997f, -0.135084f, -0.135171f, -0.135258f, -0.135345f, -0.135432f, -0.135519f, -0.135606f, -0.135693f, -0.13578f, -0.135867f, -0.135954f, -0.136041f, -0.136128f, -0.136215f, -0.136302f,
--0.136389f, -0.136476f, -0.136563f, -0.13665f, -0.136737f, -0.136824f, -0.136911f, -0.136998f, -0.137085f, -0.137172f, -0.137259f, -0.137346f, -0.137433f, -0.13752f, -0.137607f, -0.137694f, -0.137781f, -0.137868f, -0.137955f, -0.138042f,
--0.138129f, -0.138216f, -0.138303f, -0.13839f, -0.138477f, -0.138564f, -0.138651f, -0.138738f, -0.138826f, -0.138913f, -0.139f, -0.139087f, -0.139174f, -0.139261f, -0.139348f, -0.139435f, -0.139522f, -0.139609f, -0.139696f, -0.139783f,
--0.13987f, -0.139957f, -0.140044f, -0.140131f, -0.140218f, -0.140305f, -0.140392f, -0.140479f, -0.140567f, -0.140654f, -0.140741f, -0.140828f, -0.140915f, -0.141002f, -0.141089f, -0.141176f, -0.141263f, -0.14135f, -0.141437f, -0.141524f,
--0.141611f, -0.141698f, -0.141786f, -0.141873f, -0.14196f, -0.142047f, -0.142134f, -0.142221f, -0.142308f, -0.142395f, -0.142482f, -0.142569f, -0.142656f, -0.142744f, -0.142831f, -0.142918f, -0.143005f, -0.143092f, -0.143179f, -0.143266f,
--0.143353f, -0.14344f, -0.143527f, -0.143615f, -0.143702f, -0.143789f, -0.143876f, -0.143963f, -0.14405f, -0.144137f, -0.144224f, -0.144311f, -0.144399f, -0.144486f, -0.144573f, -0.14466f, -0.144747f, -0.144834f, -0.144921f, -0.145008f,
--0.145096f, -0.145183f, -0.14527f, -0.145357f, -0.145444f, -0.145531f, -0.145618f, -0.145706f, -0.145793f, -0.14588f, -0.145967f, -0.146054f, -0.146141f, -0.146228f, -0.146316f, -0.146403f, -0.14649f, -0.146577f, -0.146664f, -0.146751f,
--0.146838f, -0.146926f, -0.147013f, -0.1471f, -0.147187f, -0.147274f, -0.147361f, -0.147449f, -0.147536f, -0.147623f, -0.14771f, -0.147797f, -0.147884f, -0.147972f, -0.148059f, -0.148146f, -0.148233f, -0.14832f, -0.148407f, -0.148495f,
--0.148582f, -0.148669f, -0.148756f, -0.148843f, -0.148931f, -0.149018f, -0.149105f, -0.149192f, -0.149279f, -0.149366f, -0.149454f, -0.149541f, -0.149628f, -0.149715f, -0.149802f, -0.14989f, -0.149977f, -0.150064f, -0.150151f, -0.150238f,
--0.150326f, -0.150413f, -0.1505f, -0.150587f, -0.150674f, -0.150762f, -0.150849f, -0.150936f, -0.151023f, -0.151111f, -0.151198f, -0.151285f, -0.151372f, -0.151459f, -0.151547f, -0.151634f, -0.151721f, -0.151808f, -0.151895f, -0.151983f,
--0.15207f, -0.152157f, -0.152244f, -0.152332f, -0.152419f, -0.152506f, -0.152593f, -0.152681f, -0.152768f, -0.152855f, -0.152942f, -0.153029f, -0.153117f, -0.153204f, -0.153291f, -0.153378f, -0.153466f, -0.153553f, -0.15364f, -0.153727f,
--0.153815f, -0.153902f, -0.153989f, -0.154076f, -0.154164f, -0.154251f, -0.154338f, -0.154425f, -0.154513f, -0.1546f, -0.154687f, -0.154774f, -0.154862f, -0.154949f, -0.155036f, -0.155124f, -0.155211f, -0.155298f, -0.155385f, -0.155473f,
--0.15556f, -0.155647f, -0.155734f, -0.155822f, -0.155909f, -0.155996f, -0.156083f, -0.156171f, -0.156258f, -0.156345f, -0.156433f, -0.15652f, -0.156607f, -0.156694f, -0.156782f, -0.156869f, -0.156956f, -0.157044f, -0.157131f, -0.157218f,
--0.157305f, -0.157393f, -0.15748f, -0.157567f, -0.157655f, -0.157742f, -0.157829f, -0.157917f, -0.158004f, -0.158091f, -0.158178f, -0.158266f, -0.158353f, -0.15844f, -0.158528f, -0.158615f, -0.158702f, -0.15879f, -0.158877f, -0.158964f,
--0.159051f, -0.159139f, -0.159226f, -0.159313f, -0.159401f, -0.159488f, -0.159575f, -0.159663f, -0.15975f, -0.159837f, -0.159925f, -0.160012f, -0.160099f, -0.160187f, -0.160274f, -0.160361f, -0.160449f, -0.160536f, -0.160623f, -0.160711f,
--0.160798f, -0.160885f, -0.160973f, -0.16106f, -0.161147f, -0.161235f, -0.161322f, -0.161409f, -0.161497f, -0.161584f, -0.161671f, -0.161759f, -0.161846f, -0.161933f, -0.162021f, -0.162108f, -0.162195f, -0.162283f, -0.16237f, -0.162457f,
--0.162545f, -0.162632f, -0.162719f, -0.162807f, -0.162894f, -0.162981f, -0.163069f, -0.163156f, -0.163243f, -0.163331f, -0.163418f, -0.163506f, -0.163593f, -0.16368f, -0.163768f, -0.163855f, -0.163942f, -0.16403f, -0.164117f, -0.164204f,
--0.164292f, -0.164379f, -0.164467f, -0.164554f, -0.164641f, -0.164729f, -0.164816f, -0.164903f, -0.164991f, -0.165078f, -0.165165f, -0.165253f, -0.16534f, -0.165428f, -0.165515f, -0.165602f, -0.16569f, -0.165777f, -0.165865f, -0.165952f,
--0.166039f, -0.166127f, -0.166214f, -0.166301f, -0.166389f, -0.166476f, -0.166564f, -0.166651f, -0.166738f, -0.166826f, -0.166913f, -0.167001f, -0.167088f, -0.167175f, -0.167263f, -0.16735f, -0.167438f, -0.167525f, -0.167612f, -0.1677f,
--0.167787f, -0.167874f, -0.167962f, -0.168049f, -0.168137f, -0.168224f, -0.168312f, -0.168399f, -0.168486f, -0.168574f, -0.168661f, -0.168749f, -0.168836f, -0.168923f, -0.169011f, -0.169098f, -0.169186f, -0.169273f, -0.16936f, -0.169448f,
--0.169535f, -0.169623f, -0.16971f, -0.169798f, -0.169885f, -0.169972f, -0.17006f, -0.170147f, -0.170235f, -0.170322f, -0.170409f, -0.170497f, -0.170584f, -0.170672f, -0.170759f, -0.170847f, -0.170934f, -0.171021f, -0.171109f, -0.171196f,
--0.171284f, -0.171371f, -0.171459f, -0.171546f, -0.171633f, -0.171721f, -0.171808f, -0.171896f, -0.171983f, -0.172071f, -0.172158f, -0.172245f, -0.172333f, -0.17242f, -0.172508f, -0.172595f, -0.172683f, -0.17277f, -0.172858f, -0.172945f,
--0.173032f, -0.17312f, -0.173207f, -0.173295f, -0.173382f, -0.17347f, -0.173557f, -0.173645f, -0.173732f, -0.17382f, -0.173907f, -0.173994f, -0.174082f, -0.174169f, -0.174257f, -0.174344f, -0.174432f, -0.174519f, -0.174607f, -0.174694f,
--0.174782f, -0.174869f, -0.174956f, -0.175044f, -0.175131f, -0.175219f, -0.175306f, -0.175394f, -0.175481f, -0.175569f, -0.175656f, -0.175744f, -0.175831f, -0.175919f, -0.176006f, -0.176093f, -0.176181f, -0.176268f, -0.176356f, -0.176443f,
--0.176531f, -0.176618f, -0.176706f, -0.176793f, -0.176881f, -0.176968f, -0.177056f, -0.177143f, -0.177231f, -0.177318f, -0.177406f, -0.177493f, -0.177581f, -0.177668f, -0.177755f, -0.177843f, -0.17793f, -0.178018f, -0.178105f, -0.178193f,
--0.17828f, -0.178368f, -0.178455f, -0.178543f, -0.17863f, -0.178718f, -0.178805f, -0.178893f, -0.17898f, -0.179068f, -0.179155f, -0.179243f, -0.17933f, -0.179418f, -0.179505f, -0.179593f, -0.17968f, -0.179768f, -0.179855f, -0.179943f,
--0.18003f, -0.180118f, -0.180205f, -0.180293f, -0.18038f, -0.180468f, -0.180555f, -0.180643f, -0.18073f, -0.180818f, -0.180905f, -0.180993f, -0.18108f, -0.181168f, -0.181255f, -0.181343f, -0.18143f, -0.181518f, -0.181605f, -0.181693f,
--0.18178f, -0.181868f, -0.181955f, -0.182043f, -0.18213f, -0.182218f, -0.182305f, -0.182393f, -0.18248f, -0.182568f, -0.182655f, -0.182743f, -0.18283f, -0.182918f, -0.183005f, -0.183093f, -0.18318f, -0.183268f, -0.183355f, -0.183443f,
--0.18353f, -0.183618f, -0.183706f, -0.183793f, -0.183881f, -0.183968f, -0.184056f, -0.184143f, -0.184231f, -0.184318f, -0.184406f, -0.184493f, -0.184581f, -0.184668f, -0.184756f, -0.184843f, -0.184931f, -0.185018f, -0.185106f, -0.185193f,
--0.185281f, -0.185368f, -0.185456f, -0.185544f, -0.185631f, -0.185719f, -0.185806f, -0.185894f, -0.185981f, -0.186069f, -0.186156f, -0.186244f, -0.186331f, -0.186419f, -0.186506f, -0.186594f, -0.186681f, -0.186769f, -0.186856f, -0.186944f,
--0.187032f, -0.187119f, -0.187207f, -0.187294f, -0.187382f, -0.187469f, -0.187557f, -0.187644f, -0.187732f, -0.187819f, -0.187907f, -0.187994f, -0.188082f, -0.18817f, -0.188257f, -0.188345f, -0.188432f, -0.18852f, -0.188607f, -0.188695f,
--0.188782f, -0.18887f, -0.188957f, -0.189045f, -0.189133f, -0.18922f, -0.189308f, -0.189395f, -0.189483f, -0.18957f, -0.189658f, -0.189745f, -0.189833f, -0.18992f, -0.190008f, -0.190096f, -0.190183f, -0.190271f, -0.190358f, -0.190446f,
--0.190533f, -0.190621f, -0.190708f, -0.190796f, -0.190884f, -0.190971f, -0.191059f, -0.191146f, -0.191234f, -0.191321f, -0.191409f, -0.191496f, -0.191584f, -0.191672f, -0.191759f, -0.191847f, -0.191934f, -0.192022f, -0.192109f, -0.192197f,
--0.192284f, -0.192372f, -0.19246f, -0.192547f, -0.192635f, -0.192722f, -0.19281f, -0.192897f, -0.192985f, -0.193072f, -0.19316f, -0.193248f, -0.193335f, -0.193423f, -0.19351f, -0.193598f, -0.193685f, -0.193773f, -0.193861f, -0.193948f,
--0.194036f, -0.194123f, -0.194211f, -0.194298f, -0.194386f, -0.194474f, -0.194561f, -0.194649f, -0.194736f, -0.194824f, -0.194911f, -0.194999f, -0.195086f, -0.195174f, -0.195262f, -0.195349f, -0.195437f, -0.195524f, -0.195612f, -0.195699f,
--0.195787f, -0.195875f, -0.195962f, -0.19605f, -0.196137f, -0.196225f, -0.196312f, -0.1964f, -0.196488f, -0.196575f, -0.196663f, -0.19675f, -0.196838f, -0.196925f, -0.197013f, -0.197101f, -0.197188f, -0.197276f, -0.197363f, -0.197451f,
--0.197539f, -0.197626f, -0.197714f, -0.197801f, -0.197889f, -0.197976f, -0.198064f, -0.198152f, -0.198239f, -0.198327f, -0.198414f, -0.198502f, -0.198589f, -0.198677f, -0.198765f, -0.198852f, -0.19894f, -0.199027f, -0.199115f, -0.199202f,
--0.19929f, -0.199378f, -0.199465f, -0.199553f, -0.19964f, -0.199728f, -0.199816f, -0.199903f, -0.199991f, -0.200078f, -0.200166f, -0.200253f, -0.200341f, -0.200429f, -0.200516f, -0.200604f, -0.200691f, -0.200779f, -0.200867f, -0.200954f,
--0.201042f, -0.201129f, -0.201217f, -0.201304f, -0.201392f, -0.20148f, -0.201567f, -0.201655f, -0.201742f, -0.20183f, -0.201918f, -0.202005f, -0.202093f, -0.20218f, -0.202268f, -0.202355f, -0.202443f, -0.202531f, -0.202618f, -0.202706f,
--0.202793f, -0.202881f, -0.202969f, -0.203056f, -0.203144f, -0.203231f, -0.203319f, -0.203406f, -0.203494f, -0.203582f, -0.203669f, -0.203757f, -0.203844f, -0.203932f, -0.20402f, -0.204107f, -0.204195f, -0.204282f, -0.20437f, -0.204458f,
--0.204545f, -0.204633f, -0.20472f, -0.204808f, -0.204895f, -0.204983f, -0.205071f, -0.205158f, -0.205246f, -0.205333f, -0.205421f, -0.205509f, -0.205596f, -0.205684f, -0.205771f, -0.205859f, -0.205947f, -0.206034f, -0.206122f, -0.206209f,
--0.206297f, -0.206384f, -0.206472f, -0.20656f, -0.206647f, -0.206735f, -0.206822f, -0.20691f, -0.206998f, -0.207085f, -0.207173f, -0.20726f, -0.207348f, -0.207436f, -0.207523f, -0.207611f, -0.207698f, -0.207786f, -0.207874f, -0.207961f,
--0.208049f, -0.208136f, -0.208224f, -0.208311f, -0.208399f, -0.208487f, -0.208574f, -0.208662f, -0.208749f, -0.208837f, -0.208925f, -0.209012f, -0.2091f, -0.209187f, -0.209275f, -0.209363f, -0.20945f, -0.209538f, -0.209625f, -0.209713f,
--0.209801f, -0.209888f, -0.209976f, -0.210063f, -0.210151f, -0.210238f, -0.210326f, -0.210414f, -0.210501f, -0.210589f, -0.210676f, -0.210764f, -0.210852f, -0.210939f, -0.211027f, -0.211114f, -0.211202f, -0.21129f, -0.211377f, -0.211465f,
--0.211552f, -0.21164f, -0.211727f, -0.211815f, -0.211903f, -0.21199f, -0.212078f, -0.212165f, -0.212253f, -0.212341f, -0.212428f, -0.212516f, -0.212603f, -0.212691f, -0.212779f, -0.212866f, -0.212954f, -0.213041f, -0.213129f, -0.213217f,
--0.213304f, -0.213392f, -0.213479f, -0.213567f, -0.213654f, -0.213742f, -0.21383f, -0.213917f, -0.214005f, -0.214092f, -0.21418f, -0.214268f, -0.214355f, -0.214443f, -0.21453f, -0.214618f, -0.214705f, -0.214793f, -0.214881f, -0.214968f,
--0.215056f, -0.215143f, -0.215231f, -0.215319f, -0.215406f, -0.215494f, -0.215581f, -0.215669f, -0.215757f, -0.215844f, -0.215932f, -0.216019f, -0.216107f, -0.216194f, -0.216282f, -0.21637f, -0.216457f, -0.216545f, -0.216632f, -0.21672f,
--0.216808f, -0.216895f, -0.216983f, -0.21707f, -0.217158f, -0.217245f, -0.217333f, -0.217421f, -0.217508f, -0.217596f, -0.217683f, -0.217771f, -0.217859f, -0.217946f, -0.218034f, -0.218121f, -0.218209f, -0.218296f, -0.218384f, -0.218472f,
--0.218559f, -0.218647f, -0.218734f, -0.218822f, -0.21891f, -0.218997f, -0.219085f, -0.219172f, -0.21926f, -0.219347f, -0.219435f, -0.219523f, -0.21961f, -0.219698f, -0.219785f, -0.219873f, -0.21996f, -0.220048f, -0.220136f, -0.220223f,
--0.220311f, -0.220398f, -0.220486f, -0.220573f, -0.220661f, -0.220749f, -0.220836f, -0.220924f, -0.221011f, -0.221099f, -0.221187f, -0.221274f, -0.221362f, -0.221449f, -0.221537f, -0.221624f, -0.221712f, -0.2218f, -0.221887f, -0.221975f,
--0.222062f, -0.22215f, -0.222237f, -0.222325f, -0.222413f, -0.2225f, -0.222588f, -0.222675f, -0.222763f, -0.22285f, -0.222938f, -0.223026f, -0.223113f, -0.223201f, -0.223288f, -0.223376f, -0.223463f, -0.223551f, -0.223638f, -0.223726f,
--0.223814f, -0.223901f, -0.223989f, -0.224076f, -0.224164f, -0.224251f, -0.224339f, -0.224427f, -0.224514f, -0.224602f, -0.224689f, -0.224777f, -0.224864f, -0.224952f, -0.22504f, -0.225127f, -0.225215f, -0.225302f, -0.22539f, -0.225477f,
--0.225565f, -0.225652f, -0.22574f, -0.225828f, -0.225915f, -0.226003f, -0.22609f, -0.226178f, -0.226265f, -0.226353f, -0.22644f, -0.226528f, -0.226616f, -0.226703f, -0.226791f, -0.226878f, -0.226966f, -0.227053f, -0.227141f, -0.227228f,
--0.227316f, -0.227404f, -0.227491f, -0.227579f, -0.227666f, -0.227754f, -0.227841f, -0.227929f, -0.228016f, -0.228104f, -0.228192f, -0.228279f, -0.228367f, -0.228454f, -0.228542f, -0.228629f, -0.228717f, -0.228804f, -0.228892f, -0.228979f,
--0.229067f, -0.229155f, -0.229242f, -0.22933f, -0.229417f, -0.229505f, -0.229592f, -0.22968f, -0.229767f, -0.229855f, -0.229942f, -0.23003f, -0.230118f, -0.230205f, -0.230293f, -0.23038f, -0.230468f, -0.230555f, -0.230643f, -0.23073f,
--0.230818f, -0.230905f, -0.230993f, -0.231081f, -0.231168f, -0.231256f, -0.231343f, -0.231431f, -0.231518f, -0.231606f, -0.231693f, -0.231781f, -0.231868f, -0.231956f, -0.232043f, -0.232131f, -0.232218f, -0.232306f, -0.232394f, -0.232481f,
--0.232569f, -0.232656f, -0.232744f, -0.232831f, -0.232919f, -0.233006f, -0.233094f, -0.233181f, -0.233269f, -0.233356f, -0.233444f, -0.233531f, -0.233619f, -0.233706f, -0.233794f, -0.233881f, -0.233969f, -0.234057f, -0.234144f, -0.234232f,
--0.234319f, -0.234407f, -0.234494f, -0.234582f, -0.234669f, -0.234757f, -0.234844f, -0.234932f, -0.235019f, -0.235107f, -0.235194f, -0.235282f, -0.235369f, -0.235457f, -0.235544f, -0.235632f, -0.235719f, -0.235807f, -0.235894f, -0.235982f,
--0.236069f, -0.236157f, -0.236244f, -0.236332f, -0.236419f, -0.236507f, -0.236594f, -0.236682f, -0.236769f, -0.236857f, -0.236944f, -0.237032f, -0.237119f, -0.237207f, -0.237294f, -0.237382f, -0.237469f, -0.237557f, -0.237644f, -0.237732f,
--0.237819f, -0.237907f, -0.237994f, -0.238082f, -0.238169f, -0.238257f, -0.238344f, -0.238432f, -0.238519f, -0.238607f, -0.238694f, -0.238782f, -0.238869f, -0.238957f, -0.239044f, -0.239132f, -0.239219f, -0.239307f, -0.239394f, -0.239482f,
--0.239569f, -0.239657f, -0.239744f, -0.239832f, -0.239919f, -0.240007f, -0.240094f, -0.240182f, -0.240269f, -0.240357f, -0.240444f, -0.240532f, -0.240619f, -0.240707f, -0.240794f, -0.240882f, -0.240969f, -0.241057f, -0.241144f, -0.241231f,
--0.241319f, -0.241406f, -0.241494f, -0.241581f, -0.241669f, -0.241756f, -0.241844f, -0.241931f, -0.242019f, -0.242106f, -0.242194f, -0.242281f, -0.242369f, -0.242456f, -0.242544f, -0.242631f, -0.242718f, -0.242806f, -0.242893f, -0.242981f,
--0.243068f, -0.243156f, -0.243243f, -0.243331f, -0.243418f, -0.243506f, -0.243593f, -0.243681f, -0.243768f, -0.243855f, -0.243943f, -0.24403f, -0.244118f, -0.244205f, -0.244293f, -0.24438f, -0.244468f, -0.244555f, -0.244643f, -0.24473f,
--0.244817f, -0.244905f, -0.244992f, -0.24508f, -0.245167f, -0.245255f, -0.245342f, -0.24543f, -0.245517f, -0.245604f, -0.245692f, -0.245779f, -0.245867f, -0.245954f, -0.246042f, -0.246129f, -0.246217f, -0.246304f, -0.246391f, -0.246479f,
--0.246566f, -0.246654f, -0.246741f, -0.246829f, -0.246916f, -0.247003f, -0.247091f, -0.247178f, -0.247266f, -0.247353f, -0.247441f, -0.247528f, -0.247615f, -0.247703f, -0.24779f, -0.247878f, -0.247965f, -0.248053f, -0.24814f, -0.248227f,
--0.248315f, -0.248402f, -0.24849f, -0.248577f, -0.248665f, -0.248752f, -0.248839f, -0.248927f, -0.249014f, -0.249102f, -0.249189f, -0.249276f, -0.249364f, -0.249451f, -0.249539f, -0.249626f, -0.249714f, -0.249801f, -0.249888f, -0.249976f,
--0.250063f, -0.250151f, -0.250238f, -0.250325f, -0.250413f, -0.2505f, -0.250588f, -0.250675f, -0.250762f, -0.25085f, -0.250937f, -0.251025f, -0.251112f, -0.251199f, -0.251287f, -0.251374f, -0.251462f, -0.251549f, -0.251636f, -0.251724f,
--0.251811f, -0.251898f, -0.251986f, -0.252073f, -0.252161f, -0.252248f, -0.252335f, -0.252423f, -0.25251f, -0.252598f, -0.252685f, -0.252772f, -0.25286f, -0.252947f, -0.253034f, -0.253122f, -0.253209f, -0.253297f, -0.253384f, -0.253471f,
--0.253559f, -0.253646f, -0.253733f, -0.253821f, -0.253908f, -0.253996f, -0.254083f, -0.25417f, -0.254258f, -0.254345f, -0.254432f, -0.25452f, -0.254607f, -0.254694f, -0.254782f, -0.254869f, -0.254957f, -0.255044f, -0.255131f, -0.255219f,
--0.255306f, -0.255393f, -0.255481f, -0.255568f, -0.255655f, -0.255743f, -0.25583f, -0.255917f, -0.256005f, -0.256092f, -0.256179f, -0.256267f, -0.256354f, -0.256441f, -0.256529f, -0.256616f, -0.256704f, -0.256791f, -0.256878f, -0.256966f,
--0.257053f, -0.25714f, -0.257228f, -0.257315f, -0.257402f, -0.25749f, -0.257577f, -0.257664f, -0.257752f, -0.257839f, -0.257926f, -0.258014f, -0.258101f, -0.258188f, -0.258275f, -0.258363f, -0.25845f, -0.258537f, -0.258625f, -0.258712f,
--0.258799f, -0.258887f, -0.258974f, -0.259061f, -0.259149f, -0.259236f, -0.259323f, -0.259411f, -0.259498f, -0.259585f, -0.259673f, -0.25976f, -0.259847f, -0.259934f, -0.260022f, -0.260109f, -0.260196f, -0.260284f, -0.260371f, -0.260458f,
--0.260546f, -0.260633f, -0.26072f, -0.260807f, -0.260895f, -0.260982f, -0.261069f, -0.261157f, -0.261244f, -0.261331f, -0.261418f, -0.261506f, -0.261593f, -0.26168f, -0.261768f, -0.261855f, -0.261942f, -0.262029f, -0.262117f, -0.262204f,
--0.262291f, -0.262379f, -0.262466f, -0.262553f, -0.26264f, -0.262728f, -0.262815f, -0.262902f, -0.26299f, -0.263077f, -0.263164f, -0.263251f, -0.263339f, -0.263426f, -0.263513f, -0.2636f, -0.263688f, -0.263775f, -0.263862f, -0.263949f,
--0.264037f, -0.264124f, -0.264211f, -0.264298f, -0.264386f, -0.264473f, -0.26456f, -0.264647f, -0.264735f, -0.264822f, -0.264909f, -0.264996f, -0.265084f, -0.265171f, -0.265258f, -0.265345f, -0.265433f, -0.26552f, -0.265607f, -0.265694f,
--0.265782f, -0.265869f, -0.265956f, -0.266043f, -0.266131f, -0.266218f, -0.266305f, -0.266392f, -0.266479f, -0.266567f, -0.266654f, -0.266741f, -0.266828f, -0.266916f, -0.267003f, -0.26709f, -0.267177f, -0.267264f, -0.267352f, -0.267439f,
--0.267526f, -0.267613f, -0.267701f, -0.267788f, -0.267875f, -0.267962f, -0.268049f, -0.268137f, -0.268224f, -0.268311f, -0.268398f, -0.268485f, -0.268573f, -0.26866f, -0.268747f, -0.268834f, -0.268921f, -0.269009f, -0.269096f, -0.269183f,
--0.26927f, -0.269357f, -0.269445f, -0.269532f, -0.269619f, -0.269706f, -0.269793f, -0.26988f, -0.269968f, -0.270055f, -0.270142f, -0.270229f, -0.270316f, -0.270404f, -0.270491f, -0.270578f, -0.270665f, -0.270752f, -0.270839f, -0.270927f,
--0.271014f, -0.271101f, -0.271188f, -0.271275f, -0.271362f, -0.27145f, -0.271537f, -0.271624f, -0.271711f, -0.271798f, -0.271885f, -0.271972f, -0.27206f, -0.272147f, -0.272234f, -0.272321f, -0.272408f, -0.272495f, -0.272583f, -0.27267f,
--0.272757f, -0.272844f, -0.272931f, -0.273018f, -0.273105f, -0.273193f, -0.27328f, -0.273367f, -0.273454f, -0.273541f, -0.273628f, -0.273715f, -0.273802f, -0.27389f, -0.273977f, -0.274064f, -0.274151f, -0.274238f, -0.274325f, -0.274412f,
--0.274499f, -0.274587f, -0.274674f, -0.274761f, -0.274848f, -0.274935f, -0.275022f, -0.275109f, -0.275196f, -0.275283f, -0.275371f, -0.275458f, -0.275545f, -0.275632f, -0.275719f, -0.275806f, -0.275893f, -0.27598f, -0.276067f, -0.276154f,
--0.276242f, -0.276329f, -0.276416f, -0.276503f, -0.27659f, -0.276677f, -0.276764f, -0.276851f, -0.276938f, -0.277025f, -0.277112f, -0.277199f, -0.277287f, -0.277374f, -0.277461f, -0.277548f, -0.277635f, -0.277722f, -0.277809f, -0.277896f,
--0.277983f, -0.27807f, -0.278157f, -0.278244f, -0.278331f, -0.278418f, -0.278506f, -0.278593f, -0.27868f, -0.278767f, -0.278854f, -0.278941f, -0.279028f, -0.279115f, -0.279202f, -0.279289f, -0.279376f, -0.279463f, -0.27955f, -0.279637f,
--0.279724f, -0.279811f, -0.279898f, -0.279985f, -0.280072f, -0.280159f, -0.280246f, -0.280333f, -0.28042f, -0.280508f, -0.280595f, -0.280682f, -0.280769f, -0.280856f, -0.280943f, -0.28103f, -0.281117f, -0.281204f, -0.281291f, -0.281378f,
--0.281465f, -0.281552f, -0.281639f, -0.281726f, -0.281813f, -0.2819f, -0.281987f, -0.282074f, -0.282161f, -0.282248f, -0.282335f, -0.282422f, -0.282509f, -0.282596f, -0.282683f, -0.28277f, -0.282857f, -0.282944f, -0.283031f, -0.283118f,
--0.283205f, -0.283292f, -0.283379f, -0.283466f, -0.283553f, -0.28364f, -0.283727f, -0.283814f, -0.283901f, -0.283987f, -0.284074f, -0.284161f, -0.284248f, -0.284335f, -0.284422f, -0.284509f, -0.284596f, -0.284683f, -0.28477f, -0.284857f,
--0.284944f, -0.285031f, -0.285118f, -0.285205f, -0.285292f, -0.285379f, -0.285466f, -0.285553f, -0.28564f, -0.285727f, -0.285814f, -0.285901f, -0.285987f, -0.286074f, -0.286161f, -0.286248f, -0.286335f, -0.286422f, -0.286509f, -0.286596f,
--0.286683f, -0.28677f, -0.286857f, -0.286944f, -0.287031f, -0.287118f, -0.287204f, -0.287291f, -0.287378f, -0.287465f, -0.287552f, -0.287639f, -0.287726f, -0.287813f, -0.2879f, -0.287987f, -0.288074f, -0.28816f, -0.288247f, -0.288334f,
--0.288421f, -0.288508f, -0.288595f, -0.288682f, -0.288769f, -0.288856f, -0.288942f, -0.289029f, -0.289116f, -0.289203f, -0.28929f, -0.289377f, -0.289464f, -0.289551f, -0.289638f, -0.289724f, -0.289811f, -0.289898f, -0.289985f, -0.290072f,
--0.290159f, -0.290246f, -0.290332f, -0.290419f, -0.290506f, -0.290593f, -0.29068f, -0.290767f, -0.290854f, -0.29094f, -0.291027f, -0.291114f, -0.291201f, -0.291288f, -0.291375f, -0.291462f, -0.291548f, -0.291635f, -0.291722f, -0.291809f,
--0.291896f, -0.291983f, -0.292069f, -0.292156f, -0.292243f, -0.29233f, -0.292417f, -0.292504f, -0.29259f, -0.292677f, -0.292764f, -0.292851f, -0.292938f, -0.293024f, -0.293111f, -0.293198f, -0.293285f, -0.293372f, -0.293458f, -0.293545f,
--0.293632f, -0.293719f, -0.293806f, -0.293892f, -0.293979f, -0.294066f, -0.294153f, -0.29424f, -0.294326f, -0.294413f, -0.2945f, -0.294587f, -0.294674f, -0.29476f, -0.294847f, -0.294934f, -0.295021f, -0.295107f, -0.295194f, -0.295281f,
--0.295368f, -0.295455f, -0.295541f, -0.295628f, -0.295715f, -0.295802f, -0.295888f, -0.295975f, -0.296062f, -0.296149f, -0.296235f, -0.296322f, -0.296409f, -0.296496f, -0.296582f, -0.296669f, -0.296756f, -0.296843f, -0.296929f, -0.297016f,
--0.297103f, -0.29719f, -0.297276f, -0.297363f, -0.29745f, -0.297536f, -0.297623f, -0.29771f, -0.297797f, -0.297883f, -0.29797f, -0.298057f, -0.298144f, -0.29823f, -0.298317f, -0.298404f, -0.29849f, -0.298577f, -0.298664f, -0.29875f,
--0.298837f, -0.298924f, -0.299011f, -0.299097f, -0.299184f, -0.299271f, -0.299357f, -0.299444f, -0.299531f, -0.299617f, -0.299704f, -0.299791f, -0.299877f, -0.299964f, -0.300051f, -0.300138f, -0.300224f, -0.300311f, -0.300398f, -0.300484f,
--0.300571f, -0.300658f, -0.300744f, -0.300831f, -0.300918f, -0.301004f, -0.301091f, -0.301177f, -0.301264f, -0.301351f, -0.301437f, -0.301524f, -0.301611f, -0.301697f, -0.301784f, -0.301871f, -0.301957f, -0.302044f, -0.302131f, -0.302217f,
--0.302304f, -0.30239f, -0.302477f, -0.302564f, -0.30265f, -0.302737f, -0.302824f, -0.30291f, -0.302997f, -0.303083f, -0.30317f, -0.303257f, -0.303343f, -0.30343f, -0.303517f, -0.303603f, -0.30369f, -0.303776f, -0.303863f, -0.30395f,
--0.304036f, -0.304123f, -0.304209f, -0.304296f, -0.304382f, -0.304469f, -0.304556f, -0.304642f, -0.304729f, -0.304815f, -0.304902f, -0.304989f, -0.305075f, -0.305162f, -0.305248f, -0.305335f, -0.305421f, -0.305508f, -0.305595f, -0.305681f,
--0.305768f, -0.305854f, -0.305941f, -0.306027f, -0.306114f, -0.3062f, -0.306287f, -0.306374f, -0.30646f, -0.306547f, -0.306633f, -0.30672f, -0.306806f, -0.306893f, -0.306979f, -0.307066f, -0.307152f, -0.307239f, -0.307325f, -0.307412f,
--0.307498f, -0.307585f, -0.307671f, -0.307758f, -0.307845f, -0.307931f, -0.308018f, -0.308104f, -0.308191f, -0.308277f, -0.308364f, -0.30845f, -0.308537f, -0.308623f, -0.30871f, -0.308796f, -0.308883f, -0.308969f, -0.309056f, -0.309142f,
--0.309229f, -0.309315f, -0.309401f, -0.309488f, -0.309574f, -0.309661f, -0.309747f, -0.309834f, -0.30992f, -0.310007f, -0.310093f, -0.31018f, -0.310266f, -0.310353f, -0.310439f, -0.310526f, -0.310612f, -0.310698f, -0.310785f, -0.310871f,
--0.310958f, -0.311044f, -0.311131f, -0.311217f, -0.311304f, -0.31139f, -0.311476f, -0.311563f, -0.311649f, -0.311736f, -0.311822f, -0.311909f, -0.311995f, -0.312081f, -0.312168f, -0.312254f, -0.312341f, -0.312427f, -0.312513f, -0.3126f,
--0.312686f, -0.312773f, -0.312859f, -0.312945f, -0.313032f, -0.313118f, -0.313205f, -0.313291f, -0.313377f, -0.313464f, -0.31355f, -0.313637f, -0.313723f, -0.313809f, -0.313896f, -0.313982f, -0.314069f, -0.314155f, -0.314241f, -0.314328f,
--0.314414f, -0.3145f, -0.314587f, -0.314673f, -0.314759f, -0.314846f, -0.314932f, -0.315019f, -0.315105f, -0.315191f, -0.315278f, -0.315364f, -0.31545f, -0.315537f, -0.315623f, -0.315709f, -0.315796f, -0.315882f, -0.315968f, -0.316055f,
--0.316141f, -0.316227f, -0.316314f, -0.3164f, -0.316486f, -0.316573f, -0.316659f, -0.316745f, -0.316831f, -0.316918f, -0.317004f, -0.31709f, -0.317177f, -0.317263f, -0.317349f, -0.317436f, -0.317522f, -0.317608f, -0.317694f, -0.317781f,
--0.317867f, -0.317953f, -0.31804f, -0.318126f, -0.318212f, -0.318298f, -0.318385f, -0.318471f, -0.318557f, -0.318643f, -0.31873f, -0.318816f, -0.318902f, -0.318989f, -0.319075f, -0.319161f, -0.319247f, -0.319334f, -0.31942f, -0.319506f,
--0.319592f, -0.319678f, -0.319765f, -0.319851f, -0.319937f, -0.320023f, -0.32011f, -0.320196f, -0.320282f, -0.320368f, -0.320455f, -0.320541f, -0.320627f, -0.320713f, -0.320799f, -0.320886f, -0.320972f, -0.321058f, -0.321144f, -0.32123f,
--0.321317f, -0.321403f, -0.321489f, -0.321575f, -0.321661f, -0.321748f, -0.321834f, -0.32192f, -0.322006f, -0.322092f, -0.322179f, -0.322265f, -0.322351f, -0.322437f, -0.322523f, -0.322609f, -0.322696f, -0.322782f, -0.322868f, -0.322954f,
--0.32304f, -0.323126f, -0.323213f, -0.323299f, -0.323385f, -0.323471f, -0.323557f, -0.323643f, -0.323729f, -0.323816f, -0.323902f, -0.323988f, -0.324074f, -0.32416f, -0.324246f, -0.324332f, -0.324418f, -0.324505f, -0.324591f, -0.324677f,
--0.324763f, -0.324849f, -0.324935f, -0.325021f, -0.325107f, -0.325193f, -0.32528f, -0.325366f, -0.325452f, -0.325538f, -0.325624f, -0.32571f, -0.325796f, -0.325882f, -0.325968f, -0.326054f, -0.32614f, -0.326227f, -0.326313f, -0.326399f,
--0.326485f, -0.326571f, -0.326657f, -0.326743f, -0.326829f, -0.326915f, -0.327001f, -0.327087f, -0.327173f, -0.327259f, -0.327345f, -0.327431f, -0.327517f, -0.327603f, -0.327689f, -0.327775f, -0.327862f, -0.327948f, -0.328034f, -0.32812f,
--0.328206f, -0.328292f, -0.328378f, -0.328464f, -0.32855f, -0.328636f, -0.328722f, -0.328808f, -0.328894f, -0.32898f, -0.329066f, -0.329152f, -0.329238f, -0.329324f, -0.32941f, -0.329496f, -0.329582f, -0.329668f, -0.329754f, -0.32984f,
--0.329926f, -0.330012f, -0.330098f, -0.330184f, -0.33027f, -0.330355f, -0.330441f, -0.330527f, -0.330613f, -0.330699f, -0.330785f, -0.330871f, -0.330957f, -0.331043f, -0.331129f, -0.331215f, -0.331301f, -0.331387f, -0.331473f, -0.331559f,
--0.331645f, -0.331731f, -0.331817f, -0.331902f, -0.331988f, -0.332074f, -0.33216f, -0.332246f, -0.332332f, -0.332418f, -0.332504f, -0.33259f, -0.332676f, -0.332762f, -0.332848f, -0.332933f, -0.333019f, -0.333105f, -0.333191f, -0.333277f,
--0.333363f, -0.333449f, -0.333535f, -0.333621f, -0.333706f, -0.333792f, -0.333878f, -0.333964f, -0.33405f, -0.334136f, -0.334222f, -0.334307f, -0.334393f, -0.334479f, -0.334565f, -0.334651f, -0.334737f, -0.334823f, -0.334908f, -0.334994f,
--0.33508f, -0.335166f, -0.335252f, -0.335338f, -0.335423f, -0.335509f, -0.335595f, -0.335681f, -0.335767f, -0.335852f, -0.335938f, -0.336024f, -0.33611f, -0.336196f, -0.336282f, -0.336367f, -0.336453f, -0.336539f, -0.336625f, -0.336711f,
--0.336796f, -0.336882f, -0.336968f, -0.337054f, -0.337139f, -0.337225f, -0.337311f, -0.337397f, -0.337483f, -0.337568f, -0.337654f, -0.33774f, -0.337826f, -0.337911f, -0.337997f, -0.338083f, -0.338169f, -0.338254f, -0.33834f, -0.338426f,
--0.338512f, -0.338597f, -0.338683f, -0.338769f, -0.338855f, -0.33894f, -0.339026f, -0.339112f, -0.339197f, -0.339283f, -0.339369f, -0.339455f, -0.33954f, -0.339626f, -0.339712f, -0.339797f, -0.339883f, -0.339969f, -0.340054f, -0.34014f,
--0.340226f, -0.340312f, -0.340397f, -0.340483f, -0.340569f, -0.340654f, -0.34074f, -0.340826f, -0.340911f, -0.340997f, -0.341083f, -0.341168f, -0.341254f, -0.34134f, -0.341425f, -0.341511f, -0.341597f, -0.341682f, -0.341768f, -0.341853f,
--0.341939f, -0.342025f, -0.34211f, -0.342196f, -0.342282f, -0.342367f, -0.342453f, -0.342539f, -0.342624f, -0.34271f, -0.342795f, -0.342881f, -0.342967f, -0.343052f, -0.343138f, -0.343223f, -0.343309f, -0.343395f, -0.34348f, -0.343566f,
--0.343651f, -0.343737f, -0.343823f, -0.343908f, -0.343994f, -0.344079f, -0.344165f, -0.34425f, -0.344336f, -0.344422f, -0.344507f, -0.344593f, -0.344678f, -0.344764f, -0.344849f, -0.344935f, -0.34502f, -0.345106f, -0.345192f, -0.345277f,
--0.345363f, -0.345448f, -0.345534f, -0.345619f, -0.345705f, -0.34579f, -0.345876f, -0.345961f, -0.346047f, -0.346132f, -0.346218f, -0.346303f, -0.346389f, -0.346474f, -0.34656f, -0.346645f, -0.346731f, -0.346816f, -0.346902f, -0.346987f,
--0.347073f, -0.347158f, -0.347244f, -0.347329f, -0.347415f, -0.3475f, -0.347586f, -0.347671f, -0.347757f, -0.347842f, -0.347928f, -0.348013f, -0.348098f, -0.348184f, -0.348269f, -0.348355f, -0.34844f, -0.348526f, -0.348611f, -0.348697f,
--0.348782f, -0.348867f, -0.348953f, -0.349038f, -0.349124f, -0.349209f, -0.349295f, -0.34938f, -0.349465f, -0.349551f, -0.349636f, -0.349722f, -0.349807f, -0.349892f, -0.349978f, -0.350063f, -0.350149f, -0.350234f, -0.350319f, -0.350405f,
--0.35049f, -0.350576f, -0.350661f, -0.350746f, -0.350832f, -0.350917f, -0.351002f, -0.351088f, -0.351173f, -0.351258f, -0.351344f, -0.351429f, -0.351514f, -0.3516f, -0.351685f, -0.351771f, -0.351856f, -0.351941f, -0.352027f, -0.352112f,
--0.352197f, -0.352282f, -0.352368f, -0.352453f, -0.352538f, -0.352624f, -0.352709f, -0.352794f, -0.35288f, -0.352965f, -0.35305f, -0.353136f, -0.353221f, -0.353306f, -0.353391f, -0.353477f, -0.353562f, -0.353647f, -0.353733f, -0.353818f,
--0.353903f, -0.353988f, -0.354074f, -0.354159f, -0.354244f, -0.354329f, -0.354415f, -0.3545f, -0.354585f, -0.35467f, -0.354756f, -0.354841f, -0.354926f, -0.355011f, -0.355097f, -0.355182f, -0.355267f, -0.355352f, -0.355438f, -0.355523f,
--0.355608f, -0.355693f, -0.355778f, -0.355864f, -0.355949f, -0.356034f, -0.356119f, -0.356204f, -0.35629f, -0.356375f, -0.35646f, -0.356545f, -0.35663f, -0.356716f, -0.356801f, -0.356886f, -0.356971f, -0.357056f, -0.357141f, -0.357227f,
--0.357312f, -0.357397f, -0.357482f, -0.357567f, -0.357652f, -0.357737f, -0.357823f, -0.357908f, -0.357993f, -0.358078f, -0.358163f, -0.358248f, -0.358333f, -0.358419f, -0.358504f, -0.358589f, -0.358674f, -0.358759f, -0.358844f, -0.358929f,
--0.359014f, -0.359099f, -0.359184f, -0.35927f, -0.359355f, -0.35944f, -0.359525f, -0.35961f, -0.359695f, -0.35978f, -0.359865f, -0.35995f, -0.360035f, -0.36012f, -0.360205f, -0.36029f, -0.360376f, -0.360461f, -0.360546f, -0.360631f,
--0.360716f, -0.360801f, -0.360886f, -0.360971f, -0.361056f, -0.361141f, -0.361226f, -0.361311f, -0.361396f, -0.361481f, -0.361566f, -0.361651f, -0.361736f, -0.361821f, -0.361906f, -0.361991f, -0.362076f, -0.362161f, -0.362246f, -0.362331f,
--0.362416f, -0.362501f, -0.362586f, -0.362671f, -0.362756f, -0.362841f, -0.362926f, -0.363011f, -0.363096f, -0.363181f, -0.363266f, -0.363351f, -0.363436f, -0.363521f, -0.363606f, -0.363691f, -0.363775f, -0.36386f, -0.363945f, -0.36403f,
--0.364115f, -0.3642f, -0.364285f, -0.36437f, -0.364455f, -0.36454f, -0.364625f, -0.36471f, -0.364795f, -0.364879f, -0.364964f, -0.365049f, -0.365134f, -0.365219f, -0.365304f, -0.365389f, -0.365474f, -0.365559f, -0.365643f, -0.365728f,
--0.365813f, -0.365898f, -0.365983f, -0.366068f, -0.366153f, -0.366238f, -0.366322f, -0.366407f, -0.366492f, -0.366577f, -0.366662f, -0.366747f, -0.366831f, -0.366916f, -0.367001f, -0.367086f, -0.367171f, -0.367256f, -0.36734f, -0.367425f,
--0.36751f, -0.367595f, -0.36768f, -0.367764f, -0.367849f, -0.367934f, -0.368019f, -0.368104f, -0.368188f, -0.368273f, -0.368358f, -0.368443f, -0.368527f, -0.368612f, -0.368697f, -0.368782f, -0.368867f, -0.368951f, -0.369036f, -0.369121f,
--0.369206f, -0.36929f, -0.369375f, -0.36946f, -0.369545f, -0.369629f, -0.369714f, -0.369799f, -0.369883f, -0.369968f, -0.370053f, -0.370138f, -0.370222f, -0.370307f, -0.370392f, -0.370476f, -0.370561f, -0.370646f, -0.370731f, -0.370815f,
--0.3709f, -0.370985f, -0.371069f, -0.371154f, -0.371239f, -0.371323f, -0.371408f, -0.371493f, -0.371577f, -0.371662f, -0.371747f, -0.371831f, -0.371916f, -0.372001f, -0.372085f, -0.37217f, -0.372255f, -0.372339f, -0.372424f, -0.372508f,
--0.372593f, -0.372678f, -0.372762f, -0.372847f, -0.372932f, -0.373016f, -0.373101f, -0.373185f, -0.37327f, -0.373355f, -0.373439f, -0.373524f, -0.373608f, -0.373693f, -0.373778f, -0.373862f, -0.373947f, -0.374031f, -0.374116f, -0.3742f,
--0.374285f, -0.37437f, -0.374454f, -0.374539f, -0.374623f, -0.374708f, -0.374792f, -0.374877f, -0.374961f, -0.375046f, -0.37513f, -0.375215f, -0.3753f, -0.375384f, -0.375469f, -0.375553f, -0.375638f, -0.375722f, -0.375807f, -0.375891f,
--0.375976f, -0.37606f, -0.376145f, -0.376229f, -0.376314f, -0.376398f, -0.376483f, -0.376567f, -0.376652f, -0.376736f, -0.376821f, -0.376905f, -0.376989f, -0.377074f, -0.377158f, -0.377243f, -0.377327f, -0.377412f, -0.377496f, -0.377581f,
--0.377665f, -0.377749f, -0.377834f, -0.377918f, -0.378003f, -0.378087f, -0.378172f, -0.378256f, -0.37834f, -0.378425f, -0.378509f, -0.378594f, -0.378678f, -0.378762f, -0.378847f, -0.378931f, -0.379016f, -0.3791f, -0.379184f, -0.379269f,
--0.379353f, -0.379438f, -0.379522f, -0.379606f, -0.379691f, -0.379775f, -0.379859f, -0.379944f, -0.380028f, -0.380112f, -0.380197f, -0.380281f, -0.380365f, -0.38045f, -0.380534f, -0.380618f, -0.380703f, -0.380787f, -0.380871f, -0.380956f,
--0.38104f, -0.381124f, -0.381209f, -0.381293f, -0.381377f, -0.381462f, -0.381546f, -0.38163f, -0.381714f, -0.381799f, -0.381883f, -0.381967f, -0.382051f, -0.382136f, -0.38222f, -0.382304f, -0.382389f, -0.382473f, -0.382557f, -0.382641f,
--0.382726f, -0.38281f, -0.382894f, -0.382978f, -0.383062f, -0.383147f, -0.383231f, -0.383315f, -0.383399f, -0.383484f, -0.383568f, -0.383652f, -0.383736f, -0.38382f, -0.383905f, -0.383989f, -0.384073f, -0.384157f, -0.384241f, -0.384326f,
--0.38441f, -0.384494f, -0.384578f, -0.384662f, -0.384746f, -0.384831f, -0.384915f, -0.384999f, -0.385083f, -0.385167f, -0.385251f, -0.385336f, -0.38542f, -0.385504f, -0.385588f, -0.385672f, -0.385756f, -0.38584f, -0.385924f, -0.386009f,
--0.386093f, -0.386177f, -0.386261f, -0.386345f, -0.386429f, -0.386513f, -0.386597f, -0.386681f, -0.386765f, -0.38685f, -0.386934f, -0.387018f, -0.387102f, -0.387186f, -0.38727f, -0.387354f, -0.387438f, -0.387522f, -0.387606f, -0.38769f,
--0.387774f, -0.387858f, -0.387942f, -0.388026f, -0.38811f, -0.388194f, -0.388278f, -0.388362f, -0.388446f, -0.38853f, -0.388614f, -0.388698f, -0.388783f, -0.388867f, -0.388951f, -0.389034f, -0.389118f, -0.389202f, -0.389286f, -0.38937f,
--0.389454f, -0.389538f, -0.389622f, -0.389706f, -0.38979f, -0.389874f, -0.389958f, -0.390042f, -0.390126f, -0.39021f, -0.390294f, -0.390378f, -0.390462f, -0.390546f, -0.39063f, -0.390714f, -0.390798f, -0.390882f, -0.390965f, -0.391049f,
--0.391133f, -0.391217f, -0.391301f, -0.391385f, -0.391469f, -0.391553f, -0.391637f, -0.391721f, -0.391804f, -0.391888f, -0.391972f, -0.392056f, -0.39214f, -0.392224f, -0.392308f, -0.392391f, -0.392475f, -0.392559f, -0.392643f, -0.392727f,
--0.392811f, -0.392895f, -0.392978f, -0.393062f, -0.393146f, -0.39323f, -0.393314f, -0.393398f, -0.393481f, -0.393565f, -0.393649f, -0.393733f, -0.393817f, -0.3939f, -0.393984f, -0.394068f, -0.394152f, -0.394235f, -0.394319f, -0.394403f,
--0.394487f, -0.394571f, -0.394654f, -0.394738f, -0.394822f, -0.394906f, -0.394989f, -0.395073f, -0.395157f, -0.395241f, -0.395324f, -0.395408f, -0.395492f, -0.395576f, -0.395659f, -0.395743f, -0.395827f, -0.39591f, -0.395994f, -0.396078f,
--0.396162f, -0.396245f, -0.396329f, -0.396413f, -0.396496f, -0.39658f, -0.396664f, -0.396747f, -0.396831f, -0.396915f, -0.396998f, -0.397082f, -0.397166f, -0.397249f, -0.397333f, -0.397417f, -0.3975f, -0.397584f, -0.397668f, -0.397751f,
--0.397835f, -0.397918f, -0.398002f, -0.398086f, -0.398169f, -0.398253f, -0.398336f, -0.39842f, -0.398504f, -0.398587f, -0.398671f, -0.398754f, -0.398838f, -0.398922f, -0.399005f, -0.399089f, -0.399172f, -0.399256f, -0.399339f, -0.399423f,
--0.399507f, -0.39959f, -0.399674f, -0.399757f, -0.399841f, -0.399924f, -0.400008f, -0.400091f, -0.400175f, -0.400258f, -0.400342f, -0.400426f, -0.400509f, -0.400593f, -0.400676f, -0.40076f, -0.400843f, -0.400927f, -0.40101f, -0.401094f,
--0.401177f, -0.401261f, -0.401344f, -0.401427f, -0.401511f, -0.401594f, -0.401678f, -0.401761f, -0.401845f, -0.401928f, -0.402012f, -0.402095f, -0.402179f, -0.402262f, -0.402345f, -0.402429f, -0.402512f, -0.402596f, -0.402679f, -0.402763f,
--0.402846f, -0.402929f, -0.403013f, -0.403096f, -0.40318f, -0.403263f, -0.403346f, -0.40343f, -0.403513f, -0.403597f, -0.40368f, -0.403763f, -0.403847f, -0.40393f, -0.404013f, -0.404097f, -0.40418f, -0.404263f, -0.404347f, -0.40443f,
--0.404513f, -0.404597f, -0.40468f, -0.404763f, -0.404847f, -0.40493f, -0.405013f, -0.405097f, -0.40518f, -0.405263f, -0.405347f, -0.40543f, -0.405513f, -0.405597f, -0.40568f, -0.405763f, -0.405846f, -0.40593f, -0.406013f, -0.406096f,
--0.40618f, -0.406263f, -0.406346f, -0.406429f, -0.406513f, -0.406596f, -0.406679f, -0.406762f, -0.406846f, -0.406929f, -0.407012f, -0.407095f, -0.407178f, -0.407262f, -0.407345f, -0.407428f, -0.407511f, -0.407594f, -0.407678f, -0.407761f,
--0.407844f, -0.407927f, -0.40801f, -0.408094f, -0.408177f, -0.40826f, -0.408343f, -0.408426f, -0.408509f, -0.408593f, -0.408676f, -0.408759f, -0.408842f, -0.408925f, -0.409008f, -0.409091f, -0.409175f, -0.409258f, -0.409341f, -0.409424f,
--0.409507f, -0.40959f, -0.409673f, -0.409756f, -0.40984f, -0.409923f, -0.410006f, -0.410089f, -0.410172f, -0.410255f, -0.410338f, -0.410421f, -0.410504f, -0.410587f, -0.41067f, -0.410753f, -0.410836f, -0.41092f, -0.411003f, -0.411086f,
--0.411169f, -0.411252f, -0.411335f, -0.411418f, -0.411501f, -0.411584f, -0.411667f, -0.41175f, -0.411833f, -0.411916f, -0.411999f, -0.412082f, -0.412165f, -0.412248f, -0.412331f, -0.412414f, -0.412497f, -0.41258f, -0.412663f, -0.412746f,
--0.412829f, -0.412912f, -0.412995f, -0.413078f, -0.41316f, -0.413243f, -0.413326f, -0.413409f, -0.413492f, -0.413575f, -0.413658f, -0.413741f, -0.413824f, -0.413907f, -0.41399f, -0.414073f, -0.414156f, -0.414238f, -0.414321f, -0.414404f,
--0.414487f, -0.41457f, -0.414653f, -0.414736f, -0.414819f, -0.414902f, -0.414984f, -0.415067f, -0.41515f, -0.415233f, -0.415316f, -0.415399f, -0.415481f, -0.415564f, -0.415647f, -0.41573f, -0.415813f, -0.415896f, -0.415978f, -0.416061f,
--0.416144f, -0.416227f, -0.41631f, -0.416392f, -0.416475f, -0.416558f, -0.416641f, -0.416724f, -0.416806f, -0.416889f, -0.416972f, -0.417055f, -0.417137f, -0.41722f, -0.417303f, -0.417386f, -0.417469f, -0.417551f, -0.417634f, -0.417717f,
--0.417799f, -0.417882f, -0.417965f, -0.418048f, -0.41813f, -0.418213f, -0.418296f, -0.418378f, -0.418461f, -0.418544f, -0.418627f, -0.418709f, -0.418792f, -0.418875f, -0.418957f, -0.41904f, -0.419123f, -0.419205f, -0.419288f, -0.419371f,
--0.419453f, -0.419536f, -0.419619f, -0.419701f, -0.419784f, -0.419866f, -0.419949f, -0.420032f, -0.420114f, -0.420197f, -0.42028f, -0.420362f, -0.420445f, -0.420527f, -0.42061f, -0.420693f, -0.420775f, -0.420858f, -0.42094f, -0.421023f,
--0.421105f, -0.421188f, -0.421271f, -0.421353f, -0.421436f, -0.421518f, -0.421601f, -0.421683f, -0.421766f, -0.421848f, -0.421931f, -0.422014f, -0.422096f, -0.422179f, -0.422261f, -0.422344f, -0.422426f, -0.422509f, -0.422591f, -0.422674f,
--0.422756f, -0.422839f, -0.422921f, -0.423004f, -0.423086f, -0.423169f, -0.423251f, -0.423333f, -0.423416f, -0.423498f, -0.423581f, -0.423663f, -0.423746f, -0.423828f, -0.423911f, -0.423993f, -0.424075f, -0.424158f, -0.42424f, -0.424323f,
--0.424405f, -0.424488f, -0.42457f, -0.424652f, -0.424735f, -0.424817f, -0.4249f, -0.424982f, -0.425064f, -0.425147f, -0.425229f, -0.425311f, -0.425394f, -0.425476f, -0.425559f, -0.425641f, -0.425723f, -0.425806f, -0.425888f, -0.42597f,
--0.426053f, -0.426135f, -0.426217f, -0.4263f, -0.426382f, -0.426464f, -0.426546f, -0.426629f, -0.426711f, -0.426793f, -0.426876f, -0.426958f, -0.42704f, -0.427123f, -0.427205f, -0.427287f, -0.427369f, -0.427452f, -0.427534f, -0.427616f,
--0.427698f, -0.427781f, -0.427863f, -0.427945f, -0.428027f, -0.42811f, -0.428192f, -0.428274f, -0.428356f, -0.428438f, -0.428521f, -0.428603f, -0.428685f, -0.428767f, -0.428849f, -0.428932f, -0.429014f, -0.429096f, -0.429178f, -0.42926f,
--0.429342f, -0.429425f, -0.429507f, -0.429589f, -0.429671f, -0.429753f, -0.429835f, -0.429918f, -0.43f, -0.430082f, -0.430164f, -0.430246f, -0.430328f, -0.43041f, -0.430492f, -0.430574f, -0.430657f, -0.430739f, -0.430821f, -0.430903f,
--0.430985f, -0.431067f, -0.431149f, -0.431231f, -0.431313f, -0.431395f, -0.431477f, -0.431559f, -0.431641f, -0.431724f, -0.431806f, -0.431888f, -0.43197f, -0.432052f, -0.432134f, -0.432216f, -0.432298f, -0.43238f, -0.432462f, -0.432544f,
--0.432626f, -0.432708f, -0.43279f, -0.432872f, -0.432954f, -0.433036f, -0.433118f, -0.4332f, -0.433282f, -0.433364f, -0.433446f, -0.433528f, -0.433609f, -0.433691f, -0.433773f, -0.433855f, -0.433937f, -0.434019f, -0.434101f, -0.434183f,
--0.434265f, -0.434347f, -0.434429f, -0.434511f, -0.434593f, -0.434674f, -0.434756f, -0.434838f, -0.43492f, -0.435002f, -0.435084f, -0.435166f, -0.435248f, -0.435329f, -0.435411f, -0.435493f, -0.435575f, -0.435657f, -0.435739f, -0.435821f,
--0.435902f, -0.435984f, -0.436066f, -0.436148f, -0.43623f, -0.436311f, -0.436393f, -0.436475f, -0.436557f, -0.436639f, -0.43672f, -0.436802f, -0.436884f, -0.436966f, -0.437048f, -0.437129f, -0.437211f, -0.437293f, -0.437375f, -0.437456f,
--0.437538f, -0.43762f, -0.437702f, -0.437783f, -0.437865f, -0.437947f, -0.438028f, -0.43811f, -0.438192f, -0.438274f, -0.438355f, -0.438437f, -0.438519f, -0.4386f, -0.438682f, -0.438764f, -0.438845f, -0.438927f, -0.439009f, -0.43909f,
--0.439172f, -0.439254f, -0.439335f, -0.439417f, -0.439499f, -0.43958f, -0.439662f, -0.439744f, -0.439825f, -0.439907f, -0.439989f, -0.44007f, -0.440152f, -0.440233f, -0.440315f, -0.440397f, -0.440478f, -0.44056f, -0.440641f, -0.440723f,
--0.440804f, -0.440886f, -0.440968f, -0.441049f, -0.441131f, -0.441212f, -0.441294f, -0.441375f, -0.441457f, -0.441538f, -0.44162f, -0.441701f, -0.441783f, -0.441865f, -0.441946f, -0.442028f, -0.442109f, -0.442191f, -0.442272f, -0.442354f,
--0.442435f, -0.442517f, -0.442598f, -0.442679f, -0.442761f, -0.442842f, -0.442924f, -0.443005f, -0.443087f, -0.443168f, -0.44325f, -0.443331f, -0.443413f, -0.443494f, -0.443575f, -0.443657f, -0.443738f, -0.44382f, -0.443901f, -0.443982f,
--0.444064f, -0.444145f, -0.444227f, -0.444308f, -0.444389f, -0.444471f, -0.444552f, -0.444634f, -0.444715f, -0.444796f, -0.444878f, -0.444959f, -0.44504f, -0.445122f, -0.445203f, -0.445284f, -0.445366f, -0.445447f, -0.445528f, -0.44561f,
--0.445691f, -0.445772f, -0.445854f, -0.445935f, -0.446016f, -0.446097f, -0.446179f, -0.44626f, -0.446341f, -0.446423f, -0.446504f, -0.446585f, -0.446666f, -0.446748f, -0.446829f, -0.44691f, -0.446991f, -0.447073f, -0.447154f, -0.447235f,
--0.447316f, -0.447397f, -0.447479f, -0.44756f, -0.447641f, -0.447722f, -0.447803f, -0.447885f, -0.447966f, -0.448047f, -0.448128f, -0.448209f, -0.448291f, -0.448372f, -0.448453f, -0.448534f, -0.448615f, -0.448696f, -0.448777f, -0.448859f,
--0.44894f, -0.449021f, -0.449102f, -0.449183f, -0.449264f, -0.449345f, -0.449426f, -0.449508f, -0.449589f, -0.44967f, -0.449751f, -0.449832f, -0.449913f, -0.449994f, -0.450075f, -0.450156f, -0.450237f, -0.450318f, -0.450399f, -0.45048f,
--0.450561f, -0.450642f, -0.450723f, -0.450805f, -0.450886f, -0.450967f, -0.451048f, -0.451129f, -0.45121f, -0.451291f, -0.451372f, -0.451453f, -0.451534f, -0.451615f, -0.451696f, -0.451777f, -0.451857f, -0.451938f, -0.452019f, -0.4521f,
--0.452181f, -0.452262f, -0.452343f, -0.452424f, -0.452505f, -0.452586f, -0.452667f, -0.452748f, -0.452829f, -0.45291f, -0.452991f, -0.453071f, -0.453152f, -0.453233f, -0.453314f, -0.453395f, -0.453476f, -0.453557f, -0.453638f, -0.453719f,
--0.453799f, -0.45388f, -0.453961f, -0.454042f, -0.454123f, -0.454204f, -0.454284f, -0.454365f, -0.454446f, -0.454527f, -0.454608f, -0.454689f, -0.454769f, -0.45485f, -0.454931f, -0.455012f, -0.455093f, -0.455173f, -0.455254f, -0.455335f,
--0.455416f, -0.455496f, -0.455577f, -0.455658f, -0.455739f, -0.455819f, -0.4559f, -0.455981f, -0.456062f, -0.456142f, -0.456223f, -0.456304f, -0.456385f, -0.456465f, -0.456546f, -0.456627f, -0.456707f, -0.456788f, -0.456869f, -0.456949f,
--0.45703f, -0.457111f, -0.457191f, -0.457272f, -0.457353f, -0.457433f, -0.457514f, -0.457595f, -0.457675f, -0.457756f, -0.457837f, -0.457917f, -0.457998f, -0.458078f, -0.458159f, -0.45824f, -0.45832f, -0.458401f, -0.458481f, -0.458562f,
--0.458643f, -0.458723f, -0.458804f, -0.458884f, -0.458965f, -0.459045f, -0.459126f, -0.459207f, -0.459287f, -0.459368f, -0.459448f, -0.459529f, -0.459609f, -0.45969f, -0.45977f, -0.459851f, -0.459931f, -0.460012f, -0.460092f, -0.460173f,
--0.460253f, -0.460334f, -0.460414f, -0.460495f, -0.460575f, -0.460656f, -0.460736f, -0.460817f, -0.460897f, -0.460978f, -0.461058f, -0.461138f, -0.461219f, -0.461299f, -0.46138f, -0.46146f, -0.461541f, -0.461621f, -0.461701f, -0.461782f,
--0.461862f, -0.461943f, -0.462023f, -0.462103f, -0.462184f, -0.462264f, -0.462344f, -0.462425f, -0.462505f, -0.462585f, -0.462666f, -0.462746f, -0.462827f, -0.462907f, -0.462987f, -0.463068f, -0.463148f, -0.463228f, -0.463308f, -0.463389f,
--0.463469f, -0.463549f, -0.46363f, -0.46371f, -0.46379f, -0.46387f, -0.463951f, -0.464031f, -0.464111f, -0.464192f, -0.464272f, -0.464352f, -0.464432f, -0.464513f, -0.464593f, -0.464673f, -0.464753f, -0.464833f, -0.464914f, -0.464994f,
--0.465074f, -0.465154f, -0.465234f, -0.465315f, -0.465395f, -0.465475f, -0.465555f, -0.465635f, -0.465716f, -0.465796f, -0.465876f, -0.465956f, -0.466036f, -0.466116f, -0.466196f, -0.466277f, -0.466357f, -0.466437f, -0.466517f, -0.466597f,
--0.466677f, -0.466757f, -0.466837f, -0.466917f, -0.466998f, -0.467078f, -0.467158f, -0.467238f, -0.467318f, -0.467398f, -0.467478f, -0.467558f, -0.467638f, -0.467718f, -0.467798f, -0.467878f, -0.467958f, -0.468038f, -0.468118f, -0.468198f,
--0.468278f, -0.468358f, -0.468438f, -0.468518f, -0.468598f, -0.468678f, -0.468758f, -0.468838f, -0.468918f, -0.468998f, -0.469078f, -0.469158f, -0.469238f, -0.469318f, -0.469398f, -0.469478f, -0.469558f, -0.469638f, -0.469718f, -0.469798f,
--0.469878f, -0.469958f, -0.470037f, -0.470117f, -0.470197f, -0.470277f, -0.470357f, -0.470437f, -0.470517f, -0.470597f, -0.470677f, -0.470756f, -0.470836f, -0.470916f, -0.470996f, -0.471076f, -0.471156f, -0.471235f, -0.471315f, -0.471395f,
--0.471475f, -0.471555f, -0.471635f, -0.471714f, -0.471794f, -0.471874f, -0.471954f, -0.472034f, -0.472113f, -0.472193f, -0.472273f, -0.472353f, -0.472432f, -0.472512f, -0.472592f, -0.472672f, -0.472751f, -0.472831f, -0.472911f, -0.472991f,
--0.47307f, -0.47315f, -0.47323f, -0.473309f, -0.473389f, -0.473469f, -0.473549f, -0.473628f, -0.473708f, -0.473788f, -0.473867f, -0.473947f, -0.474027f, -0.474106f, -0.474186f, -0.474266f, -0.474345f, -0.474425f, -0.474504f, -0.474584f,
--0.474664f, -0.474743f, -0.474823f, -0.474903f, -0.474982f, -0.475062f, -0.475141f, -0.475221f, -0.4753f, -0.47538f, -0.47546f, -0.475539f, -0.475619f, -0.475698f, -0.475778f, -0.475857f, -0.475937f, -0.476016f, -0.476096f, -0.476176f,
--0.476255f, -0.476335f, -0.476414f, -0.476494f, -0.476573f, -0.476653f, -0.476732f, -0.476812f, -0.476891f, -0.476971f, -0.47705f, -0.477129f, -0.477209f, -0.477288f, -0.477368f, -0.477447f, -0.477527f, -0.477606f, -0.477686f, -0.477765f,
--0.477844f, -0.477924f, -0.478003f, -0.478083f, -0.478162f, -0.478242f, -0.478321f, -0.4784f, -0.47848f, -0.478559f, -0.478638f, -0.478718f, -0.478797f, -0.478877f, -0.478956f, -0.479035f, -0.479115f, -0.479194f, -0.479273f, -0.479353f,
--0.479432f, -0.479511f, -0.479591f, -0.47967f, -0.479749f, -0.479828f, -0.479908f, -0.479987f, -0.480066f, -0.480146f, -0.480225f, -0.480304f, -0.480383f, -0.480463f, -0.480542f, -0.480621f, -0.4807f, -0.48078f, -0.480859f, -0.480938f,
--0.481017f, -0.481096f, -0.481176f, -0.481255f, -0.481334f, -0.481413f, -0.481492f, -0.481572f, -0.481651f, -0.48173f, -0.481809f, -0.481888f, -0.481968f, -0.482047f, -0.482126f, -0.482205f, -0.482284f, -0.482363f, -0.482442f, -0.482522f,
--0.482601f, -0.48268f, -0.482759f, -0.482838f, -0.482917f, -0.482996f, -0.483075f, -0.483154f, -0.483233f, -0.483312f, -0.483392f, -0.483471f, -0.48355f, -0.483629f, -0.483708f, -0.483787f, -0.483866f, -0.483945f, -0.484024f, -0.484103f,
--0.484182f, -0.484261f, -0.48434f, -0.484419f, -0.484498f, -0.484577f, -0.484656f, -0.484735f, -0.484814f, -0.484893f, -0.484972f, -0.485051f, -0.48513f, -0.485209f, -0.485288f, -0.485367f, -0.485446f, -0.485524f, -0.485603f, -0.485682f,
--0.485761f, -0.48584f, -0.485919f, -0.485998f, -0.486077f, -0.486156f, -0.486235f, -0.486313f, -0.486392f, -0.486471f, -0.48655f, -0.486629f, -0.486708f, -0.486787f, -0.486865f, -0.486944f, -0.487023f, -0.487102f, -0.487181f, -0.48726f,
--0.487338f, -0.487417f, -0.487496f, -0.487575f, -0.487654f, -0.487732f, -0.487811f, -0.48789f, -0.487969f, -0.488048f, -0.488126f, -0.488205f, -0.488284f, -0.488363f, -0.488441f, -0.48852f, -0.488599f, -0.488677f, -0.488756f, -0.488835f,
--0.488914f, -0.488992f, -0.489071f, -0.48915f, -0.489228f, -0.489307f, -0.489386f, -0.489464f, -0.489543f, -0.489622f, -0.4897f, -0.489779f, -0.489858f, -0.489936f, -0.490015f, -0.490094f, -0.490172f, -0.490251f, -0.490329f, -0.490408f,
--0.490487f, -0.490565f, -0.490644f, -0.490722f, -0.490801f, -0.49088f, -0.490958f, -0.491037f, -0.491115f, -0.491194f, -0.491272f, -0.491351f, -0.491429f, -0.491508f, -0.491587f, -0.491665f, -0.491744f, -0.491822f, -0.491901f, -0.491979f,
--0.492058f, -0.492136f, -0.492215f, -0.492293f, -0.492372f, -0.49245f, -0.492528f, -0.492607f, -0.492685f, -0.492764f, -0.492842f, -0.492921f, -0.492999f, -0.493078f, -0.493156f, -0.493234f, -0.493313f, -0.493391f, -0.49347f, -0.493548f,
--0.493626f, -0.493705f, -0.493783f, -0.493862f, -0.49394f, -0.494018f, -0.494097f, -0.494175f, -0.494253f, -0.494332f, -0.49441f, -0.494488f, -0.494567f, -0.494645f, -0.494723f, -0.494802f, -0.49488f, -0.494958f, -0.495037f, -0.495115f,
--0.495193f, -0.495271f, -0.49535f, -0.495428f, -0.495506f, -0.495585f, -0.495663f, -0.495741f, -0.495819f, -0.495898f, -0.495976f, -0.496054f, -0.496132f, -0.49621f, -0.496289f, -0.496367f, -0.496445f, -0.496523f, -0.496601f, -0.49668f,
--0.496758f, -0.496836f, -0.496914f, -0.496992f, -0.49707f, -0.497149f, -0.497227f, -0.497305f, -0.497383f, -0.497461f, -0.497539f, -0.497617f, -0.497696f, -0.497774f, -0.497852f, -0.49793f, -0.498008f, -0.498086f, -0.498164f, -0.498242f,
--0.49832f, -0.498398f, -0.498476f, -0.498554f, -0.498633f, -0.498711f, -0.498789f, -0.498867f, -0.498945f, -0.499023f, -0.499101f, -0.499179f, -0.499257f, -0.499335f, -0.499413f, -0.499491f, -0.499569f, -0.499647f, -0.499725f, -0.499803f,
--0.499881f, -0.499959f, -0.500037f, -0.500114f, -0.500192f, -0.50027f, -0.500348f, -0.500426f, -0.500504f, -0.500582f, -0.50066f, -0.500738f, -0.500816f, -0.500894f, -0.500972f, -0.501049f, -0.501127f, -0.501205f, -0.501283f, -0.501361f,
--0.501439f, -0.501517f, -0.501594f, -0.501672f, -0.50175f, -0.501828f, -0.501906f, -0.501984f, -0.502061f, -0.502139f, -0.502217f, -0.502295f, -0.502373f, -0.50245f, -0.502528f, -0.502606f, -0.502684f, -0.502762f, -0.502839f, -0.502917f,
--0.502995f, -0.503073f, -0.50315f, -0.503228f, -0.503306f, -0.503383f, -0.503461f, -0.503539f, -0.503617f, -0.503694f, -0.503772f, -0.50385f, -0.503927f, -0.504005f, -0.504083f, -0.50416f, -0.504238f, -0.504316f, -0.504393f, -0.504471f,
--0.504549f, -0.504626f, -0.504704f, -0.504781f, -0.504859f, -0.504937f, -0.505014f, -0.505092f, -0.505169f, -0.505247f, -0.505325f, -0.505402f, -0.50548f, -0.505557f, -0.505635f, -0.505712f, -0.50579f, -0.505868f, -0.505945f, -0.506023f,
--0.5061f, -0.506178f, -0.506255f, -0.506333f, -0.50641f, -0.506488f, -0.506565f, -0.506643f, -0.50672f, -0.506798f, -0.506875f, -0.506953f, -0.50703f, -0.507108f, -0.507185f, -0.507262f, -0.50734f, -0.507417f, -0.507495f, -0.507572f,
--0.50765f, -0.507727f, -0.507804f, -0.507882f, -0.507959f, -0.508037f, -0.508114f, -0.508191f, -0.508269f, -0.508346f, -0.508423f, -0.508501f, -0.508578f, -0.508656f, -0.508733f, -0.50881f, -0.508888f, -0.508965f, -0.509042f, -0.509119f,
--0.509197f, -0.509274f, -0.509351f, -0.509429f, -0.509506f, -0.509583f, -0.509661f, -0.509738f, -0.509815f, -0.509892f, -0.50997f, -0.510047f, -0.510124f, -0.510201f, -0.510279f, -0.510356f, -0.510433f, -0.51051f, -0.510587f, -0.510665f,
--0.510742f, -0.510819f, -0.510896f, -0.510973f, -0.51105f, -0.511128f, -0.511205f, -0.511282f, -0.511359f, -0.511436f, -0.511513f, -0.511591f, -0.511668f, -0.511745f, -0.511822f, -0.511899f, -0.511976f, -0.512053f, -0.51213f, -0.512207f,
--0.512284f, -0.512362f, -0.512439f, -0.512516f, -0.512593f, -0.51267f, -0.512747f, -0.512824f, -0.512901f, -0.512978f, -0.513055f, -0.513132f, -0.513209f, -0.513286f, -0.513363f, -0.51344f, -0.513517f, -0.513594f, -0.513671f, -0.513748f,
--0.513825f, -0.513902f, -0.513979f, -0.514056f, -0.514133f, -0.51421f, -0.514287f, -0.514364f, -0.514441f, -0.514517f, -0.514594f, -0.514671f, -0.514748f, -0.514825f, -0.514902f, -0.514979f, -0.515056f, -0.515133f, -0.515209f, -0.515286f,
--0.515363f, -0.51544f, -0.515517f, -0.515594f, -0.515671f, -0.515747f, -0.515824f, -0.515901f, -0.515978f, -0.516055f, -0.516131f, -0.516208f, -0.516285f, -0.516362f, -0.516439f, -0.516515f, -0.516592f, -0.516669f, -0.516746f, -0.516822f,
--0.516899f, -0.516976f, -0.517053f, -0.517129f, -0.517206f, -0.517283f, -0.517359f, -0.517436f, -0.517513f, -0.51759f, -0.517666f, -0.517743f, -0.51782f, -0.517896f, -0.517973f, -0.51805f, -0.518126f, -0.518203f, -0.51828f, -0.518356f,
--0.518433f, -0.518509f, -0.518586f, -0.518663f, -0.518739f, -0.518816f, -0.518892f, -0.518969f, -0.519046f, -0.519122f, -0.519199f, -0.519275f, -0.519352f, -0.519428f, -0.519505f, -0.519582f, -0.519658f, -0.519735f, -0.519811f, -0.519888f,
--0.519964f, -0.520041f, -0.520117f, -0.520194f, -0.52027f, -0.520347f, -0.520423f, -0.5205f, -0.520576f, -0.520653f, -0.520729f, -0.520805f, -0.520882f, -0.520958f, -0.521035f, -0.521111f, -0.521188f, -0.521264f, -0.52134f, -0.521417f,
--0.521493f, -0.52157f, -0.521646f, -0.521722f, -0.521799f, -0.521875f, -0.521951f, -0.522028f, -0.522104f, -0.522181f, -0.522257f, -0.522333f, -0.52241f, -0.522486f, -0.522562f, -0.522639f, -0.522715f, -0.522791f, -0.522867f, -0.522944f,
--0.52302f, -0.523096f, -0.523173f, -0.523249f, -0.523325f, -0.523401f, -0.523478f, -0.523554f, -0.52363f, -0.523706f, -0.523782f, -0.523859f, -0.523935f, -0.524011f, -0.524087f, -0.524164f, -0.52424f, -0.524316f, -0.524392f, -0.524468f,
--0.524544f, -0.524621f, -0.524697f, -0.524773f, -0.524849f, -0.524925f, -0.525001f, -0.525077f, -0.525154f, -0.52523f, -0.525306f, -0.525382f, -0.525458f, -0.525534f, -0.52561f, -0.525686f, -0.525762f, -0.525838f, -0.525914f, -0.52599f,
--0.526067f, -0.526143f, -0.526219f, -0.526295f, -0.526371f, -0.526447f, -0.526523f, -0.526599f, -0.526675f, -0.526751f, -0.526827f, -0.526903f, -0.526979f, -0.527055f, -0.527131f, -0.527207f, -0.527282f, -0.527358f, -0.527434f, -0.52751f,
--0.527586f, -0.527662f, -0.527738f, -0.527814f, -0.52789f, -0.527966f, -0.528042f, -0.528118f, -0.528193f, -0.528269f, -0.528345f, -0.528421f, -0.528497f, -0.528573f, -0.528649f, -0.528725f, -0.5288f, -0.528876f, -0.528952f, -0.529028f,
--0.529104f, -0.529179f, -0.529255f, -0.529331f, -0.529407f, -0.529483f, -0.529558f, -0.529634f, -0.52971f, -0.529786f, -0.529861f, -0.529937f, -0.530013f, -0.530089f, -0.530164f, -0.53024f, -0.530316f, -0.530392f, -0.530467f, -0.530543f,
--0.530619f, -0.530694f, -0.53077f, -0.530846f, -0.530921f, -0.530997f, -0.531073f, -0.531148f, -0.531224f, -0.5313f, -0.531375f, -0.531451f, -0.531527f, -0.531602f, -0.531678f, -0.531753f, -0.531829f, -0.531905f, -0.53198f, -0.532056f,
--0.532131f, -0.532207f, -0.532282f, -0.532358f, -0.532434f, -0.532509f, -0.532585f, -0.53266f, -0.532736f, -0.532811f, -0.532887f, -0.532962f, -0.533038f, -0.533113f, -0.533189f, -0.533264f, -0.53334f, -0.533415f, -0.533491f, -0.533566f,
--0.533642f, -0.533717f, -0.533792f, -0.533868f, -0.533943f, -0.534019f, -0.534094f, -0.53417f, -0.534245f, -0.53432f, -0.534396f, -0.534471f, -0.534547f, -0.534622f, -0.534697f, -0.534773f, -0.534848f, -0.534923f, -0.534999f, -0.535074f,
--0.535149f, -0.535225f, -0.5353f, -0.535375f, -0.535451f, -0.535526f, -0.535601f, -0.535677f, -0.535752f, -0.535827f, -0.535902f, -0.535978f, -0.536053f, -0.536128f, -0.536203f, -0.536279f, -0.536354f, -0.536429f, -0.536504f, -0.53658f,
--0.536655f, -0.53673f, -0.536805f, -0.53688f, -0.536956f, -0.537031f, -0.537106f, -0.537181f, -0.537256f, -0.537331f, -0.537407f, -0.537482f, -0.537557f, -0.537632f, -0.537707f, -0.537782f, -0.537857f, -0.537933f, -0.538008f, -0.538083f,
--0.538158f, -0.538233f, -0.538308f, -0.538383f, -0.538458f, -0.538533f, -0.538608f, -0.538683f, -0.538758f, -0.538833f, -0.538908f, -0.538983f, -0.539058f, -0.539133f, -0.539209f, -0.539284f, -0.539359f, -0.539433f, -0.539508f, -0.539583f,
--0.539658f, -0.539733f, -0.539808f, -0.539883f, -0.539958f, -0.540033f, -0.540108f, -0.540183f, -0.540258f, -0.540333f, -0.540408f, -0.540483f, -0.540558f, -0.540632f, -0.540707f, -0.540782f, -0.540857f, -0.540932f, -0.541007f, -0.541082f,
--0.541157f, -0.541231f, -0.541306f, -0.541381f, -0.541456f, -0.541531f, -0.541606f, -0.54168f, -0.541755f, -0.54183f, -0.541905f, -0.541979f, -0.542054f, -0.542129f, -0.542204f, -0.542279f, -0.542353f, -0.542428f, -0.542503f, -0.542578f,
--0.542652f, -0.542727f, -0.542802f, -0.542876f, -0.542951f, -0.543026f, -0.5431f, -0.543175f, -0.54325f, -0.543325f, -0.543399f, -0.543474f, -0.543548f, -0.543623f, -0.543698f, -0.543772f, -0.543847f, -0.543922f, -0.543996f, -0.544071f,
--0.544145f, -0.54422f, -0.544295f, -0.544369f, -0.544444f, -0.544518f, -0.544593f, -0.544668f, -0.544742f, -0.544817f, -0.544891f, -0.544966f, -0.54504f, -0.545115f, -0.545189f, -0.545264f, -0.545338f, -0.545413f, -0.545487f, -0.545562f,
--0.545636f, -0.545711f, -0.545785f, -0.54586f, -0.545934f, -0.546009f, -0.546083f, -0.546157f, -0.546232f, -0.546306f, -0.546381f, -0.546455f, -0.546529f, -0.546604f, -0.546678f, -0.546753f, -0.546827f, -0.546901f, -0.546976f, -0.54705f,
--0.547124f, -0.547199f, -0.547273f, -0.547348f, -0.547422f, -0.547496f, -0.54757f, -0.547645f, -0.547719f, -0.547793f, -0.547868f, -0.547942f, -0.548016f, -0.548091f, -0.548165f, -0.548239f, -0.548313f, -0.548388f, -0.548462f, -0.548536f,
--0.54861f, -0.548684f, -0.548759f, -0.548833f, -0.548907f, -0.548981f, -0.549055f, -0.54913f, -0.549204f, -0.549278f, -0.549352f, -0.549426f, -0.549501f, -0.549575f, -0.549649f, -0.549723f, -0.549797f, -0.549871f, -0.549945f, -0.550019f,
--0.550094f, -0.550168f, -0.550242f, -0.550316f, -0.55039f, -0.550464f, -0.550538f, -0.550612f, -0.550686f, -0.55076f, -0.550834f, -0.550908f, -0.550982f, -0.551056f, -0.55113f, -0.551204f, -0.551278f, -0.551352f, -0.551426f, -0.5515f,
--0.551574f, -0.551648f, -0.551722f, -0.551796f, -0.55187f, -0.551944f, -0.552018f, -0.552092f, -0.552166f, -0.55224f, -0.552314f, -0.552388f, -0.552461f, -0.552535f, -0.552609f, -0.552683f, -0.552757f, -0.552831f, -0.552905f, -0.552979f,
--0.553052f, -0.553126f, -0.5532f, -0.553274f, -0.553348f, -0.553422f, -0.553495f, -0.553569f, -0.553643f, -0.553717f, -0.553791f, -0.553864f, -0.553938f, -0.554012f, -0.554086f, -0.554159f, -0.554233f, -0.554307f, -0.554381f, -0.554454f,
--0.554528f, -0.554602f, -0.554676f, -0.554749f, -0.554823f, -0.554897f, -0.55497f, -0.555044f, -0.555118f, -0.555191f, -0.555265f, -0.555339f, -0.555412f, -0.555486f, -0.55556f, -0.555633f, -0.555707f, -0.55578f, -0.555854f, -0.555928f,
--0.556001f, -0.556075f, -0.556148f, -0.556222f, -0.556296f, -0.556369f, -0.556443f, -0.556516f, -0.55659f, -0.556663f, -0.556737f, -0.55681f, -0.556884f, -0.556957f, -0.557031f, -0.557104f, -0.557178f, -0.557251f, -0.557325f, -0.557398f,
--0.557472f, -0.557545f, -0.557619f, -0.557692f, -0.557766f, -0.557839f, -0.557913f, -0.557986f, -0.558059f, -0.558133f, -0.558206f, -0.55828f, -0.558353f, -0.558426f, -0.5585f, -0.558573f, -0.558646f, -0.55872f, -0.558793f, -0.558867f,
--0.55894f, -0.559013f, -0.559087f, -0.55916f, -0.559233f, -0.559306f, -0.55938f, -0.559453f, -0.559526f, -0.5596f, -0.559673f, -0.559746f, -0.559819f, -0.559893f, -0.559966f, -0.560039f, -0.560112f, -0.560186f, -0.560259f, -0.560332f,
--0.560405f, -0.560479f, -0.560552f, -0.560625f, -0.560698f, -0.560771f, -0.560844f, -0.560918f, -0.560991f, -0.561064f, -0.561137f, -0.56121f, -0.561283f, -0.561356f, -0.56143f, -0.561503f, -0.561576f, -0.561649f, -0.561722f, -0.561795f,
--0.561868f, -0.561941f, -0.562014f, -0.562087f, -0.56216f, -0.562233f, -0.562307f, -0.56238f, -0.562453f, -0.562526f, -0.562599f, -0.562672f, -0.562745f, -0.562818f, -0.562891f, -0.562964f, -0.563037f, -0.56311f, -0.563182f, -0.563255f,
--0.563328f, -0.563401f, -0.563474f, -0.563547f, -0.56362f, -0.563693f, -0.563766f, -0.563839f, -0.563912f, -0.563985f, -0.564058f, -0.56413f, -0.564203f, -0.564276f, -0.564349f, -0.564422f, -0.564495f, -0.564568f, -0.56464f, -0.564713f,
--0.564786f, -0.564859f, -0.564932f, -0.565004f, -0.565077f, -0.56515f, -0.565223f, -0.565296f, -0.565368f, -0.565441f, -0.565514f, -0.565587f, -0.565659f, -0.565732f, -0.565805f, -0.565878f, -0.56595f, -0.566023f, -0.566096f, -0.566168f,
--0.566241f, -0.566314f, -0.566386f, -0.566459f, -0.566532f, -0.566604f, -0.566677f, -0.56675f, -0.566822f, -0.566895f, -0.566968f, -0.56704f, -0.567113f, -0.567185f, -0.567258f, -0.567331f, -0.567403f, -0.567476f, -0.567548f, -0.567621f,
--0.567693f, -0.567766f, -0.567839f, -0.567911f, -0.567984f, -0.568056f, -0.568129f, -0.568201f, -0.568274f, -0.568346f, -0.568419f, -0.568491f, -0.568564f, -0.568636f, -0.568709f, -0.568781f, -0.568853f, -0.568926f, -0.568998f, -0.569071f,
--0.569143f, -0.569216f, -0.569288f, -0.56936f, -0.569433f, -0.569505f, -0.569578f, -0.56965f, -0.569722f, -0.569795f, -0.569867f, -0.569939f, -0.570012f, -0.570084f, -0.570156f, -0.570229f, -0.570301f, -0.570373f, -0.570446f, -0.570518f,
--0.57059f, -0.570663f, -0.570735f, -0.570807f, -0.570879f, -0.570952f, -0.571024f, -0.571096f, -0.571168f, -0.571241f, -0.571313f, -0.571385f, -0.571457f, -0.571529f, -0.571602f, -0.571674f, -0.571746f, -0.571818f, -0.57189f, -0.571963f,
--0.572035f, -0.572107f, -0.572179f, -0.572251f, -0.572323f, -0.572395f, -0.572468f, -0.57254f, -0.572612f, -0.572684f, -0.572756f, -0.572828f, -0.5729f, -0.572972f, -0.573044f, -0.573116f, -0.573188f, -0.57326f, -0.573332f, -0.573404f,
--0.573476f, -0.573548f, -0.573621f, -0.573693f, -0.573765f, -0.573836f, -0.573908f, -0.57398f, -0.574052f, -0.574124f, -0.574196f, -0.574268f, -0.57434f, -0.574412f, -0.574484f, -0.574556f, -0.574628f, -0.5747f, -0.574772f, -0.574844f,
--0.574916f, -0.574987f, -0.575059f, -0.575131f, -0.575203f, -0.575275f, -0.575347f, -0.575419f, -0.57549f, -0.575562f, -0.575634f, -0.575706f, -0.575778f, -0.57585f, -0.575921f, -0.575993f, -0.576065f, -0.576137f, -0.576208f, -0.57628f,
--0.576352f, -0.576424f, -0.576495f, -0.576567f, -0.576639f, -0.576711f, -0.576782f, -0.576854f, -0.576926f, -0.576997f, -0.577069f, -0.577141f, -0.577212f, -0.577284f, -0.577356f, -0.577427f, -0.577499f, -0.577571f, -0.577642f, -0.577714f,
--0.577786f, -0.577857f, -0.577929f, -0.578f, -0.578072f, -0.578144f, -0.578215f, -0.578287f, -0.578358f, -0.57843f, -0.578501f, -0.578573f, -0.578645f, -0.578716f, -0.578788f, -0.578859f, -0.578931f, -0.579002f, -0.579074f, -0.579145f,
--0.579217f, -0.579288f, -0.57936f, -0.579431f, -0.579503f, -0.579574f, -0.579645f, -0.579717f, -0.579788f, -0.57986f, -0.579931f, -0.580003f, -0.580074f, -0.580145f, -0.580217f, -0.580288f, -0.580359f, -0.580431f, -0.580502f, -0.580574f,
--0.580645f, -0.580716f, -0.580788f, -0.580859f, -0.58093f, -0.581002f, -0.581073f, -0.581144f, -0.581215f, -0.581287f, -0.581358f, -0.581429f, -0.581501f, -0.581572f, -0.581643f, -0.581714f, -0.581786f, -0.581857f, -0.581928f, -0.581999f,
--0.58207f, -0.582142f, -0.582213f, -0.582284f, -0.582355f, -0.582426f, -0.582498f, -0.582569f, -0.58264f, -0.582711f, -0.582782f, -0.582853f, -0.582924f, -0.582996f, -0.583067f, -0.583138f, -0.583209f, -0.58328f, -0.583351f, -0.583422f,
--0.583493f, -0.583564f, -0.583635f, -0.583706f, -0.583777f, -0.583848f, -0.58392f, -0.583991f, -0.584062f, -0.584133f, -0.584204f, -0.584275f, -0.584346f, -0.584417f, -0.584488f, -0.584559f, -0.584629f, -0.5847f, -0.584771f, -0.584842f,
--0.584913f, -0.584984f, -0.585055f, -0.585126f, -0.585197f, -0.585268f, -0.585339f, -0.58541f, -0.585481f, -0.585551f, -0.585622f, -0.585693f, -0.585764f, -0.585835f, -0.585906f, -0.585976f, -0.586047f, -0.586118f, -0.586189f, -0.58626f,
--0.586331f, -0.586401f, -0.586472f, -0.586543f, -0.586614f, -0.586684f, -0.586755f, -0.586826f, -0.586897f, -0.586967f, -0.587038f, -0.587109f, -0.58718f, -0.58725f, -0.587321f, -0.587392f, -0.587462f, -0.587533f, -0.587604f, -0.587674f,
--0.587745f, -0.587816f, -0.587886f, -0.587957f, -0.588028f, -0.588098f, -0.588169f, -0.588239f, -0.58831f, -0.588381f, -0.588451f, -0.588522f, -0.588592f, -0.588663f, -0.588734f, -0.588804f, -0.588875f, -0.588945f, -0.589016f, -0.589086f,
--0.589157f, -0.589227f, -0.589298f, -0.589368f, -0.589439f, -0.589509f, -0.58958f, -0.58965f, -0.589721f, -0.589791f, -0.589862f, -0.589932f, -0.590003f, -0.590073f, -0.590143f, -0.590214f, -0.590284f, -0.590355f, -0.590425f, -0.590495f,
--0.590566f, -0.590636f, -0.590706f, -0.590777f, -0.590847f, -0.590918f, -0.590988f, -0.591058f, -0.591129f, -0.591199f, -0.591269f, -0.591339f, -0.59141f, -0.59148f, -0.59155f, -0.591621f, -0.591691f, -0.591761f, -0.591831f, -0.591902f,
--0.591972f, -0.592042f, -0.592112f, -0.592183f, -0.592253f, -0.592323f, -0.592393f, -0.592463f, -0.592534f, -0.592604f, -0.592674f, -0.592744f, -0.592814f, -0.592884f, -0.592955f, -0.593025f, -0.593095f, -0.593165f, -0.593235f, -0.593305f,
--0.593375f, -0.593445f, -0.593515f, -0.593585f, -0.593656f, -0.593726f, -0.593796f, -0.593866f, -0.593936f, -0.594006f, -0.594076f, -0.594146f, -0.594216f, -0.594286f, -0.594356f, -0.594426f, -0.594496f, -0.594566f, -0.594636f, -0.594706f,
--0.594776f, -0.594846f, -0.594916f, -0.594986f, -0.595056f, -0.595125f, -0.595195f, -0.595265f, -0.595335f, -0.595405f, -0.595475f, -0.595545f, -0.595615f, -0.595685f, -0.595754f, -0.595824f, -0.595894f, -0.595964f, -0.596034f, -0.596104f,
--0.596173f, -0.596243f, -0.596313f, -0.596383f, -0.596453f, -0.596522f, -0.596592f, -0.596662f, -0.596732f, -0.596801f, -0.596871f, -0.596941f, -0.597011f, -0.59708f, -0.59715f, -0.59722f, -0.59729f, -0.597359f, -0.597429f, -0.597499f,
--0.597568f, -0.597638f, -0.597708f, -0.597777f, -0.597847f, -0.597917f, -0.597986f, -0.598056f, -0.598125f, -0.598195f, -0.598265f, -0.598334f, -0.598404f, -0.598473f, -0.598543f, -0.598613f, -0.598682f, -0.598752f, -0.598821f, -0.598891f,
--0.59896f, -0.59903f, -0.599099f, -0.599169f, -0.599238f, -0.599308f, -0.599377f, -0.599447f, -0.599516f, -0.599586f, -0.599655f, -0.599725f, -0.599794f, -0.599864f, -0.599933f, -0.600002f, -0.600072f, -0.600141f, -0.600211f, -0.60028f,
--0.600349f, -0.600419f, -0.600488f, -0.600558f, -0.600627f, -0.600696f, -0.600766f, -0.600835f, -0.600904f, -0.600974f, -0.601043f, -0.601112f, -0.601182f, -0.601251f, -0.60132f, -0.601389f, -0.601459f, -0.601528f, -0.601597f, -0.601666f,
--0.601736f, -0.601805f, -0.601874f, -0.601943f, -0.602013f, -0.602082f, -0.602151f, -0.60222f, -0.602289f, -0.602359f, -0.602428f, -0.602497f, -0.602566f, -0.602635f, -0.602704f, -0.602774f, -0.602843f, -0.602912f, -0.602981f, -0.60305f,
--0.603119f, -0.603188f, -0.603257f, -0.603326f, -0.603395f, -0.603465f, -0.603534f, -0.603603f, -0.603672f, -0.603741f, -0.60381f, -0.603879f, -0.603948f, -0.604017f, -0.604086f, -0.604155f, -0.604224f, -0.604293f, -0.604362f, -0.604431f,
--0.6045f, -0.604569f, -0.604638f, -0.604706f, -0.604775f, -0.604844f, -0.604913f, -0.604982f, -0.605051f, -0.60512f, -0.605189f, -0.605258f, -0.605327f, -0.605395f, -0.605464f, -0.605533f, -0.605602f, -0.605671f, -0.60574f, -0.605808f,
--0.605877f, -0.605946f, -0.606015f, -0.606084f, -0.606152f, -0.606221f, -0.60629f, -0.606359f, -0.606428f, -0.606496f, -0.606565f, -0.606634f, -0.606702f, -0.606771f, -0.60684f, -0.606909f, -0.606977f, -0.607046f, -0.607115f, -0.607183f,
--0.607252f, -0.607321f, -0.607389f, -0.607458f, -0.607527f, -0.607595f, -0.607664f, -0.607732f, -0.607801f, -0.60787f, -0.607938f, -0.608007f, -0.608075f, -0.608144f, -0.608213f, -0.608281f, -0.60835f, -0.608418f, -0.608487f, -0.608555f,
--0.608624f, -0.608692f, -0.608761f, -0.608829f, -0.608898f, -0.608966f, -0.609035f, -0.609103f, -0.609172f, -0.60924f, -0.609309f, -0.609377f, -0.609445f, -0.609514f, -0.609582f, -0.609651f, -0.609719f, -0.609788f, -0.609856f, -0.609924f,
--0.609993f, -0.610061f, -0.610129f, -0.610198f, -0.610266f, -0.610334f, -0.610403f, -0.610471f, -0.610539f, -0.610608f, -0.610676f, -0.610744f, -0.610813f, -0.610881f, -0.610949f, -0.611017f, -0.611086f, -0.611154f, -0.611222f, -0.61129f,
--0.611359f, -0.611427f, -0.611495f, -0.611563f, -0.611631f, -0.6117f, -0.611768f, -0.611836f, -0.611904f, -0.611972f, -0.61204f, -0.612109f, -0.612177f, -0.612245f, -0.612313f, -0.612381f, -0.612449f, -0.612517f, -0.612585f, -0.612654f,
--0.612722f, -0.61279f, -0.612858f, -0.612926f, -0.612994f, -0.613062f, -0.61313f, -0.613198f, -0.613266f, -0.613334f, -0.613402f, -0.61347f, -0.613538f, -0.613606f, -0.613674f, -0.613742f, -0.61381f, -0.613878f, -0.613946f, -0.614014f,
--0.614082f, -0.61415f, -0.614218f, -0.614285f, -0.614353f, -0.614421f, -0.614489f, -0.614557f, -0.614625f, -0.614693f, -0.614761f, -0.614828f, -0.614896f, -0.614964f, -0.615032f, -0.6151f, -0.615168f, -0.615235f, -0.615303f, -0.615371f,
--0.615439f, -0.615507f, -0.615574f, -0.615642f, -0.61571f, -0.615778f, -0.615845f, -0.615913f, -0.615981f, -0.616048f, -0.616116f, -0.616184f, -0.616252f, -0.616319f, -0.616387f, -0.616455f, -0.616522f, -0.61659f, -0.616658f, -0.616725f,
--0.616793f, -0.61686f, -0.616928f, -0.616996f, -0.617063f, -0.617131f, -0.617199f, -0.617266f, -0.617334f, -0.617401f, -0.617469f, -0.617536f, -0.617604f, -0.617671f, -0.617739f, -0.617806f, -0.617874f, -0.617942f, -0.618009f, -0.618077f,
--0.618144f, -0.618211f, -0.618279f, -0.618346f, -0.618414f, -0.618481f, -0.618549f, -0.618616f, -0.618684f, -0.618751f, -0.618818f, -0.618886f, -0.618953f, -0.619021f, -0.619088f, -0.619155f, -0.619223f, -0.61929f, -0.619357f, -0.619425f,
--0.619492f, -0.619559f, -0.619627f, -0.619694f, -0.619761f, -0.619829f, -0.619896f, -0.619963f, -0.620031f, -0.620098f, -0.620165f, -0.620232f, -0.6203f, -0.620367f, -0.620434f, -0.620501f, -0.620568f, -0.620636f, -0.620703f, -0.62077f,
--0.620837f, -0.620904f, -0.620972f, -0.621039f, -0.621106f, -0.621173f, -0.62124f, -0.621307f, -0.621374f, -0.621442f, -0.621509f, -0.621576f, -0.621643f, -0.62171f, -0.621777f, -0.621844f, -0.621911f, -0.621978f, -0.622045f, -0.622112f,
--0.622179f, -0.622246f, -0.622313f, -0.62238f, -0.622447f, -0.622514f, -0.622581f, -0.622648f, -0.622715f, -0.622782f, -0.622849f, -0.622916f, -0.622983f, -0.62305f, -0.623117f, -0.623184f, -0.623251f, -0.623318f, -0.623385f, -0.623452f,
--0.623519f, -0.623585f, -0.623652f, -0.623719f, -0.623786f, -0.623853f, -0.62392f, -0.623987f, -0.624053f, -0.62412f, -0.624187f, -0.624254f, -0.624321f, -0.624387f, -0.624454f, -0.624521f, -0.624588f, -0.624654f, -0.624721f, -0.624788f,
--0.624855f, -0.624921f, -0.624988f, -0.625055f, -0.625121f, -0.625188f, -0.625255f, -0.625322f, -0.625388f, -0.625455f, -0.625522f, -0.625588f, -0.625655f, -0.625721f, -0.625788f, -0.625855f, -0.625921f, -0.625988f, -0.626054f, -0.626121f,
--0.626188f, -0.626254f, -0.626321f, -0.626387f, -0.626454f, -0.62652f, -0.626587f, -0.626654f, -0.62672f, -0.626787f, -0.626853f, -0.62692f, -0.626986f, -0.627053f, -0.627119f, -0.627185f, -0.627252f, -0.627318f, -0.627385f, -0.627451f,
--0.627518f, -0.627584f, -0.627651f, -0.627717f, -0.627783f, -0.62785f, -0.627916f, -0.627982f, -0.628049f, -0.628115f, -0.628182f, -0.628248f, -0.628314f, -0.628381f, -0.628447f, -0.628513f, -0.628579f, -0.628646f, -0.628712f, -0.628778f,
--0.628845f, -0.628911f, -0.628977f, -0.629043f, -0.62911f, -0.629176f, -0.629242f, -0.629308f, -0.629375f, -0.629441f, -0.629507f, -0.629573f, -0.629639f, -0.629705f, -0.629772f, -0.629838f, -0.629904f, -0.62997f, -0.630036f, -0.630102f,
--0.630169f, -0.630235f, -0.630301f, -0.630367f, -0.630433f, -0.630499f, -0.630565f, -0.630631f, -0.630697f, -0.630763f, -0.630829f, -0.630895f, -0.630961f, -0.631027f, -0.631093f, -0.631159f, -0.631225f, -0.631291f, -0.631357f, -0.631423f,
--0.631489f, -0.631555f, -0.631621f, -0.631687f, -0.631753f, -0.631819f, -0.631885f, -0.631951f, -0.632017f, -0.632083f, -0.632149f, -0.632214f, -0.63228f, -0.632346f, -0.632412f, -0.632478f, -0.632544f, -0.63261f, -0.632675f, -0.632741f,
--0.632807f, -0.632873f, -0.632939f, -0.633004f, -0.63307f, -0.633136f, -0.633202f, -0.633268f, -0.633333f, -0.633399f, -0.633465f, -0.63353f, -0.633596f, -0.633662f, -0.633728f, -0.633793f, -0.633859f, -0.633925f, -0.63399f, -0.634056f,
--0.634122f, -0.634187f, -0.634253f, -0.634319f, -0.634384f, -0.63445f, -0.634515f, -0.634581f, -0.634647f, -0.634712f, -0.634778f, -0.634843f, -0.634909f, -0.634975f, -0.63504f, -0.635106f, -0.635171f, -0.635237f, -0.635302f, -0.635368f,
--0.635433f, -0.635499f, -0.635564f, -0.63563f, -0.635695f, -0.635761f, -0.635826f, -0.635892f, -0.635957f, -0.636022f, -0.636088f, -0.636153f, -0.636219f, -0.636284f, -0.636349f, -0.636415f, -0.63648f, -0.636546f, -0.636611f, -0.636676f,
--0.636742f, -0.636807f, -0.636872f, -0.636938f, -0.637003f, -0.637068f, -0.637134f, -0.637199f, -0.637264f, -0.637329f, -0.637395f, -0.63746f, -0.637525f, -0.63759f, -0.637656f, -0.637721f, -0.637786f, -0.637851f, -0.637917f, -0.637982f,
--0.638047f, -0.638112f, -0.638177f, -0.638243f, -0.638308f, -0.638373f, -0.638438f, -0.638503f, -0.638568f, -0.638633f, -0.638698f, -0.638764f, -0.638829f, -0.638894f, -0.638959f, -0.639024f, -0.639089f, -0.639154f, -0.639219f, -0.639284f,
--0.639349f, -0.639414f, -0.639479f, -0.639544f, -0.639609f, -0.639674f, -0.639739f, -0.639804f, -0.639869f, -0.639934f, -0.639999f, -0.640064f, -0.640129f, -0.640194f, -0.640259f, -0.640324f, -0.640389f, -0.640454f, -0.640518f, -0.640583f,
--0.640648f, -0.640713f, -0.640778f, -0.640843f, -0.640908f, -0.640972f, -0.641037f, -0.641102f, -0.641167f, -0.641232f, -0.641297f, -0.641361f, -0.641426f, -0.641491f, -0.641556f, -0.64162f, -0.641685f, -0.64175f, -0.641815f, -0.641879f,
--0.641944f, -0.642009f, -0.642074f, -0.642138f, -0.642203f, -0.642268f, -0.642332f, -0.642397f, -0.642462f, -0.642526f, -0.642591f, -0.642656f, -0.64272f, -0.642785f, -0.642849f, -0.642914f, -0.642979f, -0.643043f, -0.643108f, -0.643172f,
--0.643237f, -0.643301f, -0.643366f, -0.643431f, -0.643495f, -0.64356f, -0.643624f, -0.643689f, -0.643753f, -0.643818f, -0.643882f, -0.643947f, -0.644011f, -0.644075f, -0.64414f, -0.644204f, -0.644269f, -0.644333f, -0.644398f, -0.644462f,
--0.644526f, -0.644591f, -0.644655f, -0.64472f, -0.644784f, -0.644848f, -0.644913f, -0.644977f, -0.645041f, -0.645106f, -0.64517f, -0.645234f, -0.645299f, -0.645363f, -0.645427f, -0.645492f, -0.645556f, -0.64562f, -0.645684f, -0.645749f,
--0.645813f, -0.645877f, -0.645941f, -0.646006f, -0.64607f, -0.646134f, -0.646198f, -0.646262f, -0.646327f, -0.646391f, -0.646455f, -0.646519f, -0.646583f, -0.646647f, -0.646711f, -0.646776f, -0.64684f, -0.646904f, -0.646968f, -0.647032f,
--0.647096f, -0.64716f, -0.647224f, -0.647288f, -0.647352f, -0.647416f, -0.64748f, -0.647544f, -0.647609f, -0.647673f, -0.647737f, -0.647801f, -0.647865f, -0.647928f, -0.647992f, -0.648056f, -0.64812f, -0.648184f, -0.648248f, -0.648312f,
--0.648376f, -0.64844f, -0.648504f, -0.648568f, -0.648632f, -0.648696f, -0.64876f, -0.648823f, -0.648887f, -0.648951f, -0.649015f, -0.649079f, -0.649143f, -0.649206f, -0.64927f, -0.649334f, -0.649398f, -0.649462f, -0.649525f, -0.649589f,
--0.649653f, -0.649717f, -0.649781f, -0.649844f, -0.649908f, -0.649972f, -0.650035f, -0.650099f, -0.650163f, -0.650227f, -0.65029f, -0.650354f, -0.650418f, -0.650481f, -0.650545f, -0.650609f, -0.650672f, -0.650736f, -0.650799f, -0.650863f,
--0.650927f, -0.65099f, -0.651054f, -0.651117f, -0.651181f, -0.651245f, -0.651308f, -0.651372f, -0.651435f, -0.651499f, -0.651562f, -0.651626f, -0.651689f, -0.651753f, -0.651816f, -0.65188f, -0.651943f, -0.652007f, -0.65207f, -0.652134f,
--0.652197f, -0.65226f, -0.652324f, -0.652387f, -0.652451f, -0.652514f, -0.652578f, -0.652641f, -0.652704f, -0.652768f, -0.652831f, -0.652894f, -0.652958f, -0.653021f, -0.653084f, -0.653148f, -0.653211f, -0.653274f, -0.653338f, -0.653401f,
--0.653464f, -0.653528f, -0.653591f, -0.653654f, -0.653717f, -0.653781f, -0.653844f, -0.653907f, -0.65397f, -0.654033f, -0.654097f, -0.65416f, -0.654223f, -0.654286f, -0.654349f, -0.654413f, -0.654476f, -0.654539f, -0.654602f, -0.654665f,
--0.654728f, -0.654791f, -0.654854f, -0.654918f, -0.654981f, -0.655044f, -0.655107f, -0.65517f, -0.655233f, -0.655296f, -0.655359f, -0.655422f, -0.655485f, -0.655548f, -0.655611f, -0.655674f, -0.655737f, -0.6558f, -0.655863f, -0.655926f,
--0.655989f, -0.656052f, -0.656115f, -0.656178f, -0.656241f, -0.656304f, -0.656367f, -0.656429f, -0.656492f, -0.656555f, -0.656618f, -0.656681f, -0.656744f, -0.656807f, -0.65687f, -0.656932f, -0.656995f, -0.657058f, -0.657121f, -0.657184f,
--0.657246f, -0.657309f, -0.657372f, -0.657435f, -0.657498f, -0.65756f, -0.657623f, -0.657686f, -0.657748f, -0.657811f, -0.657874f, -0.657937f, -0.657999f, -0.658062f, -0.658125f, -0.658187f, -0.65825f, -0.658313f, -0.658375f, -0.658438f,
--0.658501f, -0.658563f, -0.658626f, -0.658688f, -0.658751f, -0.658814f, -0.658876f, -0.658939f, -0.659001f, -0.659064f, -0.659127f, -0.659189f, -0.659252f, -0.659314f, -0.659377f, -0.659439f, -0.659502f, -0.659564f, -0.659627f, -0.659689f,
--0.659752f, -0.659814f, -0.659876f, -0.659939f, -0.660001f, -0.660064f, -0.660126f, -0.660189f, -0.660251f, -0.660313f, -0.660376f, -0.660438f, -0.660501f, -0.660563f, -0.660625f, -0.660688f, -0.66075f, -0.660812f, -0.660875f, -0.660937f,
--0.660999f, -0.661062f, -0.661124f, -0.661186f, -0.661248f, -0.661311f, -0.661373f, -0.661435f, -0.661497f, -0.66156f, -0.661622f, -0.661684f, -0.661746f, -0.661808f, -0.661871f, -0.661933f, -0.661995f, -0.662057f, -0.662119f, -0.662182f,
--0.662244f, -0.662306f, -0.662368f, -0.66243f, -0.662492f, -0.662554f, -0.662616f, -0.662678f, -0.66274f, -0.662803f, -0.662865f, -0.662927f, -0.662989f, -0.663051f, -0.663113f, -0.663175f, -0.663237f, -0.663299f, -0.663361f, -0.663423f,
--0.663485f, -0.663547f, -0.663609f, -0.663671f, -0.663733f, -0.663794f, -0.663856f, -0.663918f, -0.66398f, -0.664042f, -0.664104f, -0.664166f, -0.664228f, -0.66429f, -0.664352f, -0.664413f, -0.664475f, -0.664537f, -0.664599f, -0.664661f,
--0.664723f, -0.664784f, -0.664846f, -0.664908f, -0.66497f, -0.665031f, -0.665093f, -0.665155f, -0.665217f, -0.665278f, -0.66534f, -0.665402f, -0.665464f, -0.665525f, -0.665587f, -0.665649f, -0.66571f, -0.665772f, -0.665834f, -0.665895f,
--0.665957f, -0.666019f, -0.66608f, -0.666142f, -0.666204f, -0.666265f, -0.666327f, -0.666388f, -0.66645f, -0.666511f, -0.666573f, -0.666635f, -0.666696f, -0.666758f, -0.666819f, -0.666881f, -0.666942f, -0.667004f, -0.667065f, -0.667127f,
--0.667188f, -0.66725f, -0.667311f, -0.667373f, -0.667434f, -0.667495f, -0.667557f, -0.667618f, -0.66768f, -0.667741f, -0.667803f, -0.667864f, -0.667925f, -0.667987f, -0.668048f, -0.668109f, -0.668171f, -0.668232f, -0.668293f, -0.668355f,
--0.668416f, -0.668477f, -0.668539f, -0.6686f, -0.668661f, -0.668722f, -0.668784f, -0.668845f, -0.668906f, -0.668967f, -0.669029f, -0.66909f, -0.669151f, -0.669212f, -0.669274f, -0.669335f, -0.669396f, -0.669457f, -0.669518f, -0.669579f,
--0.669641f, -0.669702f, -0.669763f, -0.669824f, -0.669885f, -0.669946f, -0.670007f, -0.670068f, -0.670129f, -0.67019f, -0.670252f, -0.670313f, -0.670374f, -0.670435f, -0.670496f, -0.670557f, -0.670618f, -0.670679f, -0.67074f, -0.670801f,
--0.670862f, -0.670923f, -0.670984f, -0.671045f, -0.671106f, -0.671166f, -0.671227f, -0.671288f, -0.671349f, -0.67141f, -0.671471f, -0.671532f, -0.671593f, -0.671654f, -0.671714f, -0.671775f, -0.671836f, -0.671897f, -0.671958f, -0.672019f,
--0.672079f, -0.67214f, -0.672201f, -0.672262f, -0.672323f, -0.672383f, -0.672444f, -0.672505f, -0.672566f, -0.672626f, -0.672687f, -0.672748f, -0.672809f, -0.672869f, -0.67293f, -0.672991f, -0.673051f, -0.673112f, -0.673173f, -0.673233f,
--0.673294f, -0.673355f, -0.673415f, -0.673476f, -0.673536f, -0.673597f, -0.673658f, -0.673718f, -0.673779f, -0.673839f, -0.6739f, -0.67396f, -0.674021f, -0.674082f, -0.674142f, -0.674203f, -0.674263f, -0.674324f, -0.674384f, -0.674445f,
--0.674505f, -0.674565f, -0.674626f, -0.674686f, -0.674747f, -0.674807f, -0.674868f, -0.674928f, -0.674988f, -0.675049f, -0.675109f, -0.67517f, -0.67523f, -0.67529f, -0.675351f, -0.675411f, -0.675471f, -0.675532f, -0.675592f, -0.675652f,
--0.675713f, -0.675773f, -0.675833f, -0.675894f, -0.675954f, -0.676014f, -0.676074f, -0.676135f, -0.676195f, -0.676255f, -0.676315f, -0.676375f, -0.676436f, -0.676496f, -0.676556f, -0.676616f, -0.676676f, -0.676737f, -0.676797f, -0.676857f,
--0.676917f, -0.676977f, -0.677037f, -0.677097f, -0.677157f, -0.677218f, -0.677278f, -0.677338f, -0.677398f, -0.677458f, -0.677518f, -0.677578f, -0.677638f, -0.677698f, -0.677758f, -0.677818f, -0.677878f, -0.677938f, -0.677998f, -0.678058f,
--0.678118f, -0.678178f, -0.678238f, -0.678298f, -0.678358f, -0.678418f, -0.678478f, -0.678537f, -0.678597f, -0.678657f, -0.678717f, -0.678777f, -0.678837f, -0.678897f, -0.678957f, -0.679016f, -0.679076f, -0.679136f, -0.679196f, -0.679256f,
--0.679315f, -0.679375f, -0.679435f, -0.679495f, -0.679555f, -0.679614f, -0.679674f, -0.679734f, -0.679794f, -0.679853f, -0.679913f, -0.679973f, -0.680032f, -0.680092f, -0.680152f, -0.680211f, -0.680271f, -0.680331f, -0.68039f, -0.68045f,
--0.68051f, -0.680569f, -0.680629f, -0.680688f, -0.680748f, -0.680808f, -0.680867f, -0.680927f, -0.680986f, -0.681046f, -0.681105f, -0.681165f, -0.681224f, -0.681284f, -0.681343f, -0.681403f, -0.681462f, -0.681522f, -0.681581f, -0.681641f,
--0.6817f, -0.68176f, -0.681819f, -0.681879f, -0.681938f, -0.681997f, -0.682057f, -0.682116f, -0.682176f, -0.682235f, -0.682294f, -0.682354f, -0.682413f, -0.682472f, -0.682532f, -0.682591f, -0.68265f, -0.68271f, -0.682769f, -0.682828f,
--0.682888f, -0.682947f, -0.683006f, -0.683065f, -0.683125f, -0.683184f, -0.683243f, -0.683302f, -0.683361f, -0.683421f, -0.68348f, -0.683539f, -0.683598f, -0.683657f, -0.683717f, -0.683776f, -0.683835f, -0.683894f, -0.683953f, -0.684012f,
--0.684071f, -0.68413f, -0.68419f, -0.684249f, -0.684308f, -0.684367f, -0.684426f, -0.684485f, -0.684544f, -0.684603f, -0.684662f, -0.684721f, -0.68478f, -0.684839f, -0.684898f, -0.684957f, -0.685016f, -0.685075f, -0.685134f, -0.685193f,
--0.685252f, -0.685311f, -0.68537f, -0.685429f, -0.685487f, -0.685546f, -0.685605f, -0.685664f, -0.685723f, -0.685782f, -0.685841f, -0.6859f, -0.685958f, -0.686017f, -0.686076f, -0.686135f, -0.686194f, -0.686252f, -0.686311f, -0.68637f,
--0.686429f, -0.686487f, -0.686546f, -0.686605f, -0.686664f, -0.686722f, -0.686781f, -0.68684f, -0.686899f, -0.686957f, -0.687016f, -0.687075f, -0.687133f, -0.687192f, -0.687251f, -0.687309f, -0.687368f, -0.687426f, -0.687485f, -0.687544f,
--0.687602f, -0.687661f, -0.687719f, -0.687778f, -0.687836f, -0.687895f, -0.687954f, -0.688012f, -0.688071f, -0.688129f, -0.688188f, -0.688246f, -0.688305f, -0.688363f, -0.688422f, -0.68848f, -0.688538f, -0.688597f, -0.688655f, -0.688714f,
--0.688772f, -0.688831f, -0.688889f, -0.688947f, -0.689006f, -0.689064f, -0.689123f, -0.689181f, -0.689239f, -0.689298f, -0.689356f, -0.689414f, -0.689473f, -0.689531f, -0.689589f, -0.689647f, -0.689706f, -0.689764f, -0.689822f, -0.689881f,
--0.689939f, -0.689997f, -0.690055f, -0.690113f, -0.690172f, -0.69023f, -0.690288f, -0.690346f, -0.690404f, -0.690463f, -0.690521f, -0.690579f, -0.690637f, -0.690695f, -0.690753f, -0.690811f, -0.690869f, -0.690928f, -0.690986f, -0.691044f,
--0.691102f, -0.69116f, -0.691218f, -0.691276f, -0.691334f, -0.691392f, -0.69145f, -0.691508f, -0.691566f, -0.691624f, -0.691682f, -0.69174f, -0.691798f, -0.691856f, -0.691914f, -0.691972f, -0.69203f, -0.692088f, -0.692146f, -0.692204f,
--0.692261f, -0.692319f, -0.692377f, -0.692435f, -0.692493f, -0.692551f, -0.692609f, -0.692666f, -0.692724f, -0.692782f, -0.69284f, -0.692898f, -0.692955f, -0.693013f, -0.693071f, -0.693129f, -0.693187f, -0.693244f, -0.693302f, -0.69336f,
--0.693417f, -0.693475f, -0.693533f, -0.693591f, -0.693648f, -0.693706f, -0.693764f, -0.693821f, -0.693879f, -0.693937f, -0.693994f, -0.694052f, -0.694109f, -0.694167f, -0.694225f, -0.694282f, -0.69434f, -0.694397f, -0.694455f, -0.694513f,
--0.69457f, -0.694628f, -0.694685f, -0.694743f, -0.6948f, -0.694858f, -0.694915f, -0.694973f, -0.69503f, -0.695088f, -0.695145f, -0.695202f, -0.69526f, -0.695317f, -0.695375f, -0.695432f, -0.69549f, -0.695547f, -0.695604f, -0.695662f,
--0.695719f, -0.695776f, -0.695834f, -0.695891f, -0.695949f, -0.696006f, -0.696063f, -0.69612f, -0.696178f, -0.696235f, -0.696292f, -0.69635f, -0.696407f, -0.696464f, -0.696521f, -0.696579f, -0.696636f, -0.696693f, -0.69675f, -0.696807f,
--0.696865f, -0.696922f, -0.696979f, -0.697036f, -0.697093f, -0.69715f, -0.697208f, -0.697265f, -0.697322f, -0.697379f, -0.697436f, -0.697493f, -0.69755f, -0.697607f, -0.697664f, -0.697721f, -0.697779f, -0.697836f, -0.697893f, -0.69795f,
--0.698007f, -0.698064f, -0.698121f, -0.698178f, -0.698235f, -0.698292f, -0.698349f, -0.698406f, -0.698462f, -0.698519f, -0.698576f, -0.698633f, -0.69869f, -0.698747f, -0.698804f, -0.698861f, -0.698918f, -0.698975f, -0.699031f, -0.699088f,
--0.699145f, -0.699202f, -0.699259f, -0.699316f, -0.699372f, -0.699429f, -0.699486f, -0.699543f, -0.6996f, -0.699656f, -0.699713f, -0.69977f, -0.699827f, -0.699883f, -0.69994f, -0.699997f, -0.700053f, -0.70011f, -0.700167f, -0.700223f,
--0.70028f, -0.700337f, -0.700393f, -0.70045f, -0.700507f, -0.700563f, -0.70062f, -0.700676f, -0.700733f, -0.70079f, -0.700846f, -0.700903f, -0.700959f, -0.701016f, -0.701072f, -0.701129f, -0.701185f, -0.701242f, -0.701298f, -0.701355f,
--0.701411f, -0.701468f, -0.701524f, -0.701581f, -0.701637f, -0.701694f, -0.70175f, -0.701807f, -0.701863f, -0.701919f, -0.701976f, -0.702032f, -0.702089f, -0.702145f, -0.702201f, -0.702258f, -0.702314f, -0.70237f, -0.702427f, -0.702483f,
--0.702539f, -0.702596f, -0.702652f, -0.702708f, -0.702764f, -0.702821f, -0.702877f, -0.702933f, -0.702989f, -0.703046f, -0.703102f, -0.703158f, -0.703214f, -0.70327f, -0.703327f, -0.703383f, -0.703439f, -0.703495f, -0.703551f, -0.703607f,
--0.703664f, -0.70372f, -0.703776f, -0.703832f, -0.703888f, -0.703944f, -0.704f, -0.704056f, -0.704112f, -0.704168f, -0.704224f, -0.70428f, -0.704336f, -0.704392f, -0.704448f, -0.704504f, -0.70456f, -0.704616f, -0.704672f, -0.704728f,
--0.704784f, -0.70484f, -0.704896f, -0.704952f, -0.705008f, -0.705064f, -0.70512f, -0.705176f, -0.705231f, -0.705287f, -0.705343f, -0.705399f, -0.705455f, -0.705511f, -0.705567f, -0.705622f, -0.705678f, -0.705734f, -0.70579f, -0.705846f,
--0.705901f, -0.705957f, -0.706013f, -0.706069f, -0.706124f, -0.70618f, -0.706236f, -0.706291f, -0.706347f, -0.706403f, -0.706458f, -0.706514f, -0.70657f, -0.706625f, -0.706681f, -0.706737f, -0.706792f, -0.706848f, -0.706904f, -0.706959f,
--0.707015f, -0.70707f, -0.707126f, -0.707181f, -0.707237f, -0.707293f, -0.707348f, -0.707404f, -0.707459f, -0.707515f, -0.70757f, -0.707626f, -0.707681f, -0.707737f, -0.707792f, -0.707848f, -0.707903f, -0.707958f, -0.708014f, -0.708069f,
--0.708125f, -0.70818f, -0.708235f, -0.708291f, -0.708346f, -0.708402f, -0.708457f, -0.708512f, -0.708568f, -0.708623f, -0.708678f, -0.708734f, -0.708789f, -0.708844f, -0.708899f, -0.708955f, -0.70901f, -0.709065f, -0.709121f, -0.709176f,
--0.709231f, -0.709286f, -0.709341f, -0.709397f, -0.709452f, -0.709507f, -0.709562f, -0.709617f, -0.709672f, -0.709728f, -0.709783f, -0.709838f, -0.709893f, -0.709948f, -0.710003f, -0.710058f, -0.710113f, -0.710168f, -0.710224f, -0.710279f,
--0.710334f, -0.710389f, -0.710444f, -0.710499f, -0.710554f, -0.710609f, -0.710664f, -0.710719f, -0.710774f, -0.710829f, -0.710884f, -0.710939f, -0.710994f, -0.711048f, -0.711103f, -0.711158f, -0.711213f, -0.711268f, -0.711323f, -0.711378f,
--0.711433f, -0.711488f, -0.711542f, -0.711597f, -0.711652f, -0.711707f, -0.711762f, -0.711817f, -0.711871f, -0.711926f, -0.711981f, -0.712036f, -0.71209f, -0.712145f, -0.7122f, -0.712255f, -0.712309f, -0.712364f, -0.712419f, -0.712473f,
--0.712528f, -0.712583f, -0.712638f, -0.712692f, -0.712747f, -0.712801f, -0.712856f, -0.712911f, -0.712965f, -0.71302f, -0.713075f, -0.713129f, -0.713184f, -0.713238f, -0.713293f, -0.713347f, -0.713402f, -0.713456f, -0.713511f, -0.713565f,
--0.71362f, -0.713674f, -0.713729f, -0.713783f, -0.713838f, -0.713892f, -0.713947f, -0.714001f, -0.714056f, -0.71411f, -0.714165f, -0.714219f, -0.714273f, -0.714328f, -0.714382f, -0.714436f, -0.714491f, -0.714545f, -0.714599f, -0.714654f,
--0.714708f, -0.714762f, -0.714817f, -0.714871f, -0.714925f, -0.71498f, -0.715034f, -0.715088f, -0.715142f, -0.715197f, -0.715251f, -0.715305f, -0.715359f, -0.715413f, -0.715468f, -0.715522f, -0.715576f, -0.71563f, -0.715684f, -0.715739f,
--0.715793f, -0.715847f, -0.715901f, -0.715955f, -0.716009f, -0.716063f, -0.716117f, -0.716171f, -0.716225f, -0.716279f, -0.716334f, -0.716388f, -0.716442f, -0.716496f, -0.71655f, -0.716604f, -0.716658f, -0.716712f, -0.716766f, -0.71682f,
--0.716874f, -0.716927f, -0.716981f, -0.717035f, -0.717089f, -0.717143f, -0.717197f, -0.717251f, -0.717305f, -0.717359f, -0.717413f, -0.717466f, -0.71752f, -0.717574f, -0.717628f, -0.717682f, -0.717736f, -0.717789f, -0.717843f, -0.717897f,
--0.717951f, -0.718004f, -0.718058f, -0.718112f, -0.718166f, -0.718219f, -0.718273f, -0.718327f, -0.718381f, -0.718434f, -0.718488f, -0.718542f, -0.718595f, -0.718649f, -0.718703f, -0.718756f, -0.71881f, -0.718863f, -0.718917f, -0.718971f,
--0.719024f, -0.719078f, -0.719131f, -0.719185f, -0.719238f, -0.719292f, -0.719346f, -0.719399f, -0.719453f, -0.719506f, -0.71956f, -0.719613f, -0.719667f, -0.71972f, -0.719774f, -0.719827f, -0.71988f, -0.719934f, -0.719987f, -0.720041f,
--0.720094f, -0.720147f, -0.720201f, -0.720254f, -0.720308f, -0.720361f, -0.720414f, -0.720468f, -0.720521f, -0.720574f, -0.720628f, -0.720681f, -0.720734f, -0.720787f, -0.720841f, -0.720894f, -0.720947f, -0.721001f, -0.721054f, -0.721107f,
--0.72116f, -0.721213f, -0.721267f, -0.72132f, -0.721373f, -0.721426f, -0.721479f, -0.721533f, -0.721586f, -0.721639f, -0.721692f, -0.721745f, -0.721798f, -0.721851f, -0.721904f, -0.721957f, -0.722011f, -0.722064f, -0.722117f, -0.72217f,
--0.722223f, -0.722276f, -0.722329f, -0.722382f, -0.722435f, -0.722488f, -0.722541f, -0.722594f, -0.722647f, -0.7227f, -0.722753f, -0.722805f, -0.722858f, -0.722911f, -0.722964f, -0.723017f, -0.72307f, -0.723123f, -0.723176f, -0.723229f,
--0.723281f, -0.723334f, -0.723387f, -0.72344f, -0.723493f, -0.723546f, -0.723598f, -0.723651f, -0.723704f, -0.723757f, -0.723809f, -0.723862f, -0.723915f, -0.723968f, -0.72402f, -0.724073f, -0.724126f, -0.724178f, -0.724231f, -0.724284f,
--0.724337f, -0.724389f, -0.724442f, -0.724494f, -0.724547f, -0.7246f, -0.724652f, -0.724705f, -0.724758f, -0.72481f, -0.724863f, -0.724915f, -0.724968f, -0.72502f, -0.725073f, -0.725125f, -0.725178f, -0.72523f, -0.725283f, -0.725335f,
--0.725388f, -0.72544f, -0.725493f, -0.725545f, -0.725598f, -0.72565f, -0.725703f, -0.725755f, -0.725807f, -0.72586f, -0.725912f, -0.725965f, -0.726017f, -0.726069f, -0.726122f, -0.726174f, -0.726226f, -0.726279f, -0.726331f, -0.726383f,
--0.726435f, -0.726488f, -0.72654f, -0.726592f, -0.726645f, -0.726697f, -0.726749f, -0.726801f, -0.726853f, -0.726906f, -0.726958f, -0.72701f, -0.727062f, -0.727114f, -0.727167f, -0.727219f, -0.727271f, -0.727323f, -0.727375f, -0.727427f,
--0.727479f, -0.727531f, -0.727584f, -0.727636f, -0.727688f, -0.72774f, -0.727792f, -0.727844f, -0.727896f, -0.727948f, -0.728f, -0.728052f, -0.728104f, -0.728156f, -0.728208f, -0.72826f, -0.728312f, -0.728364f, -0.728416f, -0.728468f,
--0.72852f, -0.728571f, -0.728623f, -0.728675f, -0.728727f, -0.728779f, -0.728831f, -0.728883f, -0.728935f, -0.728986f, -0.729038f, -0.72909f, -0.729142f, -0.729194f, -0.729245f, -0.729297f, -0.729349f, -0.729401f, -0.729452f, -0.729504f,
--0.729556f, -0.729608f, -0.729659f, -0.729711f, -0.729763f, -0.729814f, -0.729866f, -0.729918f, -0.729969f, -0.730021f, -0.730073f, -0.730124f, -0.730176f, -0.730228f, -0.730279f, -0.730331f, -0.730382f, -0.730434f, -0.730486f, -0.730537f,
--0.730589f, -0.73064f, -0.730692f, -0.730743f, -0.730795f, -0.730846f, -0.730898f, -0.730949f, -0.731001f, -0.731052f, -0.731104f, -0.731155f, -0.731206f, -0.731258f, -0.731309f, -0.731361f, -0.731412f, -0.731463f, -0.731515f, -0.731566f,
--0.731618f, -0.731669f, -0.73172f, -0.731772f, -0.731823f, -0.731874f, -0.731925f, -0.731977f, -0.732028f, -0.732079f, -0.732131f, -0.732182f, -0.732233f, -0.732284f, -0.732336f, -0.732387f, -0.732438f, -0.732489f, -0.73254f, -0.732591f,
--0.732643f, -0.732694f, -0.732745f, -0.732796f, -0.732847f, -0.732898f, -0.732949f, -0.733001f, -0.733052f, -0.733103f, -0.733154f, -0.733205f, -0.733256f, -0.733307f, -0.733358f, -0.733409f, -0.73346f, -0.733511f, -0.733562f, -0.733613f,
--0.733664f, -0.733715f, -0.733766f, -0.733817f, -0.733868f, -0.733919f, -0.73397f, -0.734021f, -0.734072f, -0.734122f, -0.734173f, -0.734224f, -0.734275f, -0.734326f, -0.734377f, -0.734428f, -0.734478f, -0.734529f, -0.73458f, -0.734631f,
--0.734682f, -0.734732f, -0.734783f, -0.734834f, -0.734885f, -0.734935f, -0.734986f, -0.735037f, -0.735088f, -0.735138f, -0.735189f, -0.73524f, -0.73529f, -0.735341f, -0.735392f, -0.735442f, -0.735493f, -0.735544f, -0.735594f, -0.735645f,
--0.735695f, -0.735746f, -0.735797f, -0.735847f, -0.735898f, -0.735948f, -0.735999f, -0.736049f, -0.7361f, -0.73615f, -0.736201f, -0.736251f, -0.736302f, -0.736352f, -0.736403f, -0.736453f, -0.736504f, -0.736554f, -0.736605f, -0.736655f,
--0.736705f, -0.736756f, -0.736806f, -0.736857f, -0.736907f, -0.736957f, -0.737008f, -0.737058f, -0.737108f, -0.737159f, -0.737209f, -0.737259f, -0.73731f, -0.73736f, -0.73741f, -0.73746f, -0.737511f, -0.737561f, -0.737611f, -0.737661f,
--0.737712f, -0.737762f, -0.737812f, -0.737862f, -0.737912f, -0.737963f, -0.738013f, -0.738063f, -0.738113f, -0.738163f, -0.738213f, -0.738263f, -0.738314f, -0.738364f, -0.738414f, -0.738464f, -0.738514f, -0.738564f, -0.738614f, -0.738664f,
--0.738714f, -0.738764f, -0.738814f, -0.738864f, -0.738914f, -0.738964f, -0.739014f, -0.739064f, -0.739114f, -0.739164f, -0.739214f, -0.739264f, -0.739314f, -0.739364f, -0.739414f, -0.739463f, -0.739513f, -0.739563f, -0.739613f, -0.739663f,
--0.739713f, -0.739763f, -0.739812f, -0.739862f, -0.739912f, -0.739962f, -0.740012f, -0.740061f, -0.740111f, -0.740161f, -0.740211f, -0.74026f, -0.74031f, -0.74036f, -0.740409f, -0.740459f, -0.740509f, -0.740559f, -0.740608f, -0.740658f,
--0.740708f, -0.740757f, -0.740807f, -0.740856f, -0.740906f, -0.740956f, -0.741005f, -0.741055f, -0.741104f, -0.741154f, -0.741203f, -0.741253f, -0.741303f, -0.741352f, -0.741402f, -0.741451f, -0.741501f, -0.74155f, -0.7416f, -0.741649f,
--0.741698f, -0.741748f, -0.741797f, -0.741847f, -0.741896f, -0.741946f, -0.741995f, -0.742044f, -0.742094f, -0.742143f, -0.742193f, -0.742242f, -0.742291f, -0.742341f, -0.74239f, -0.742439f, -0.742488f, -0.742538f, -0.742587f, -0.742636f,
--0.742686f, -0.742735f, -0.742784f, -0.742833f, -0.742883f, -0.742932f, -0.742981f, -0.74303f, -0.743079f, -0.743129f, -0.743178f, -0.743227f, -0.743276f, -0.743325f, -0.743374f, -0.743423f, -0.743473f, -0.743522f, -0.743571f, -0.74362f,
--0.743669f, -0.743718f, -0.743767f, -0.743816f, -0.743865f, -0.743914f, -0.743963f, -0.744012f, -0.744061f, -0.74411f, -0.744159f, -0.744208f, -0.744257f, -0.744306f, -0.744355f, -0.744404f, -0.744453f, -0.744502f, -0.744551f, -0.744599f,
--0.744648f, -0.744697f, -0.744746f, -0.744795f, -0.744844f, -0.744893f, -0.744941f, -0.74499f, -0.745039f, -0.745088f, -0.745137f, -0.745185f, -0.745234f, -0.745283f, -0.745332f, -0.74538f, -0.745429f, -0.745478f, -0.745527f, -0.745575f,
--0.745624f, -0.745673f, -0.745721f, -0.74577f, -0.745819f, -0.745867f, -0.745916f, -0.745965f, -0.746013f, -0.746062f, -0.74611f, -0.746159f, -0.746207f, -0.746256f, -0.746305f, -0.746353f, -0.746402f, -0.74645f, -0.746499f, -0.746547f,
--0.746596f, -0.746644f, -0.746693f, -0.746741f, -0.74679f, -0.746838f, -0.746886f, -0.746935f, -0.746983f, -0.747032f, -0.74708f, -0.747129f, -0.747177f, -0.747225f, -0.747274f, -0.747322f, -0.74737f, -0.747419f, -0.747467f, -0.747515f,
--0.747564f, -0.747612f, -0.74766f, -0.747708f, -0.747757f, -0.747805f, -0.747853f, -0.747901f, -0.74795f, -0.747998f, -0.748046f, -0.748094f, -0.748142f, -0.748191f, -0.748239f, -0.748287f, -0.748335f, -0.748383f, -0.748431f, -0.748479f,
--0.748528f, -0.748576f, -0.748624f, -0.748672f, -0.74872f, -0.748768f, -0.748816f, -0.748864f, -0.748912f, -0.74896f, -0.749008f, -0.749056f, -0.749104f, -0.749152f, -0.7492f, -0.749248f, -0.749296f, -0.749344f, -0.749392f, -0.74944f,
--0.749488f, -0.749536f, -0.749584f, -0.749631f, -0.749679f, -0.749727f, -0.749775f, -0.749823f, -0.749871f, -0.749918f, -0.749966f, -0.750014f, -0.750062f, -0.75011f, -0.750157f, -0.750205f, -0.750253f, -0.750301f, -0.750349f, -0.750396f,
--0.750444f, -0.750492f, -0.750539f, -0.750587f, -0.750635f, -0.750682f, -0.75073f, -0.750778f, -0.750825f, -0.750873f, -0.750921f, -0.750968f, -0.751016f, -0.751063f, -0.751111f, -0.751159f, -0.751206f, -0.751254f, -0.751301f, -0.751349f,
--0.751396f, -0.751444f, -0.751491f, -0.751539f, -0.751586f, -0.751634f, -0.751681f, -0.751729f, -0.751776f, -0.751824f, -0.751871f, -0.751918f, -0.751966f, -0.752013f, -0.752061f, -0.752108f, -0.752155f, -0.752203f, -0.75225f, -0.752297f,
--0.752345f, -0.752392f, -0.752439f, -0.752487f, -0.752534f, -0.752581f, -0.752629f, -0.752676f, -0.752723f, -0.75277f, -0.752818f, -0.752865f, -0.752912f, -0.752959f, -0.753006f, -0.753054f, -0.753101f, -0.753148f, -0.753195f, -0.753242f,
--0.753289f, -0.753336f, -0.753384f, -0.753431f, -0.753478f, -0.753525f, -0.753572f, -0.753619f, -0.753666f, -0.753713f, -0.75376f, -0.753807f, -0.753854f, -0.753901f, -0.753948f, -0.753995f, -0.754042f, -0.754089f, -0.754136f, -0.754183f,
--0.75423f, -0.754277f, -0.754324f, -0.754371f, -0.754418f, -0.754465f, -0.754511f, -0.754558f, -0.754605f, -0.754652f, -0.754699f, -0.754746f, -0.754792f, -0.754839f, -0.754886f, -0.754933f, -0.75498f, -0.755026f, -0.755073f, -0.75512f,
--0.755167f, -0.755213f, -0.75526f, -0.755307f, -0.755354f, -0.7554f, -0.755447f, -0.755494f, -0.75554f, -0.755587f, -0.755634f, -0.75568f, -0.755727f, -0.755773f, -0.75582f, -0.755867f, -0.755913f, -0.75596f, -0.756006f, -0.756053f,
--0.7561f, -0.756146f, -0.756193f, -0.756239f, -0.756286f, -0.756332f, -0.756379f, -0.756425f, -0.756472f, -0.756518f, -0.756564f, -0.756611f, -0.756657f, -0.756704f, -0.75675f, -0.756797f, -0.756843f, -0.756889f, -0.756936f, -0.756982f,
--0.757028f, -0.757075f, -0.757121f, -0.757167f, -0.757214f, -0.75726f, -0.757306f, -0.757353f, -0.757399f, -0.757445f, -0.757491f, -0.757538f, -0.757584f, -0.75763f, -0.757676f, -0.757722f, -0.757769f, -0.757815f, -0.757861f, -0.757907f,
--0.757953f, -0.757999f, -0.758046f, -0.758092f, -0.758138f, -0.758184f, -0.75823f, -0.758276f, -0.758322f, -0.758368f, -0.758414f, -0.75846f, -0.758506f, -0.758552f, -0.758598f, -0.758644f, -0.75869f, -0.758736f, -0.758782f, -0.758828f,
--0.758874f, -0.75892f, -0.758966f, -0.759012f, -0.759058f, -0.759104f, -0.75915f, -0.759196f, -0.759242f, -0.759288f, -0.759333f, -0.759379f, -0.759425f, -0.759471f, -0.759517f, -0.759563f, -0.759608f, -0.759654f, -0.7597f, -0.759746f,
--0.759791f, -0.759837f, -0.759883f, -0.759929f, -0.759974f, -0.76002f, -0.760066f, -0.760111f, -0.760157f, -0.760203f, -0.760248f, -0.760294f, -0.76034f, -0.760385f, -0.760431f, -0.760477f, -0.760522f, -0.760568f, -0.760613f, -0.760659f,
--0.760705f, -0.76075f, -0.760796f, -0.760841f, -0.760887f, -0.760932f, -0.760978f, -0.761023f, -0.761069f, -0.761114f, -0.76116f, -0.761205f, -0.76125f, -0.761296f, -0.761341f, -0.761387f, -0.761432f, -0.761478f, -0.761523f, -0.761568f,
--0.761614f, -0.761659f, -0.761704f, -0.76175f, -0.761795f, -0.76184f, -0.761886f, -0.761931f, -0.761976f, -0.762021f, -0.762067f, -0.762112f, -0.762157f, -0.762202f, -0.762248f, -0.762293f, -0.762338f, -0.762383f, -0.762429f, -0.762474f,
--0.762519f, -0.762564f, -0.762609f, -0.762654f, -0.762699f, -0.762745f, -0.76279f, -0.762835f, -0.76288f, -0.762925f, -0.76297f, -0.763015f, -0.76306f, -0.763105f, -0.76315f, -0.763195f, -0.76324f, -0.763285f, -0.76333f, -0.763375f,
--0.76342f, -0.763465f, -0.76351f, -0.763555f, -0.7636f, -0.763645f, -0.76369f, -0.763735f, -0.763779f, -0.763824f, -0.763869f, -0.763914f, -0.763959f, -0.764004f, -0.764049f, -0.764093f, -0.764138f, -0.764183f, -0.764228f, -0.764273f,
--0.764317f, -0.764362f, -0.764407f, -0.764452f, -0.764496f, -0.764541f, -0.764586f, -0.76463f, -0.764675f, -0.76472f, -0.764764f, -0.764809f, -0.764854f, -0.764898f, -0.764943f, -0.764988f, -0.765032f, -0.765077f, -0.765121f, -0.765166f,
--0.765211f, -0.765255f, -0.7653f, -0.765344f, -0.765389f, -0.765433f, -0.765478f, -0.765522f, -0.765567f, -0.765611f, -0.765656f, -0.7657f, -0.765745f, -0.765789f, -0.765833f, -0.765878f, -0.765922f, -0.765967f, -0.766011f, -0.766055f,
--0.7661f, -0.766144f, -0.766189f, -0.766233f, -0.766277f, -0.766321f, -0.766366f, -0.76641f, -0.766454f, -0.766499f, -0.766543f, -0.766587f, -0.766631f, -0.766676f, -0.76672f, -0.766764f, -0.766808f, -0.766853f, -0.766897f, -0.766941f,
--0.766985f, -0.767029f, -0.767073f, -0.767118f, -0.767162f, -0.767206f, -0.76725f, -0.767294f, -0.767338f, -0.767382f, -0.767426f, -0.76747f, -0.767514f, -0.767558f, -0.767602f, -0.767646f, -0.76769f, -0.767734f, -0.767778f, -0.767822f,
--0.767866f, -0.76791f, -0.767954f, -0.767998f, -0.768042f, -0.768086f, -0.76813f, -0.768174f, -0.768218f, -0.768262f, -0.768305f, -0.768349f, -0.768393f, -0.768437f, -0.768481f, -0.768525f, -0.768568f, -0.768612f, -0.768656f, -0.7687f,
--0.768744f, -0.768787f, -0.768831f, -0.768875f, -0.768919f, -0.768962f, -0.769006f, -0.76905f, -0.769093f, -0.769137f, -0.769181f, -0.769224f, -0.769268f, -0.769312f, -0.769355f, -0.769399f, -0.769443f, -0.769486f, -0.76953f, -0.769573f,
--0.769617f, -0.76966f, -0.769704f, -0.769747f, -0.769791f, -0.769835f, -0.769878f, -0.769922f, -0.769965f, -0.770008f, -0.770052f, -0.770095f, -0.770139f, -0.770182f, -0.770226f, -0.770269f, -0.770313f, -0.770356f, -0.770399f, -0.770443f,
--0.770486f, -0.770529f, -0.770573f, -0.770616f, -0.770659f, -0.770703f, -0.770746f, -0.770789f, -0.770833f, -0.770876f, -0.770919f, -0.770962f, -0.771006f, -0.771049f, -0.771092f, -0.771135f, -0.771179f, -0.771222f, -0.771265f, -0.771308f,
--0.771351f, -0.771394f, -0.771438f, -0.771481f, -0.771524f, -0.771567f, -0.77161f, -0.771653f, -0.771696f, -0.771739f, -0.771782f, -0.771825f, -0.771868f, -0.771911f, -0.771955f, -0.771998f, -0.772041f, -0.772084f, -0.772126f, -0.772169f,
--0.772212f, -0.772255f, -0.772298f, -0.772341f, -0.772384f, -0.772427f, -0.77247f, -0.772513f, -0.772556f, -0.772599f, -0.772642f, -0.772684f, -0.772727f, -0.77277f, -0.772813f, -0.772856f, -0.772898f, -0.772941f, -0.772984f, -0.773027f,
--0.77307f, -0.773112f, -0.773155f, -0.773198f, -0.773241f, -0.773283f, -0.773326f, -0.773369f, -0.773411f, -0.773454f, -0.773497f, -0.773539f, -0.773582f, -0.773625f, -0.773667f, -0.77371f, -0.773752f, -0.773795f, -0.773838f, -0.77388f,
--0.773923f, -0.773965f, -0.774008f, -0.77405f, -0.774093f, -0.774135f, -0.774178f, -0.77422f, -0.774263f, -0.774305f, -0.774348f, -0.77439f, -0.774433f, -0.774475f, -0.774517f, -0.77456f, -0.774602f, -0.774645f, -0.774687f, -0.774729f,
--0.774772f, -0.774814f, -0.774856f, -0.774899f, -0.774941f, -0.774983f, -0.775026f, -0.775068f, -0.77511f, -0.775152f, -0.775195f, -0.775237f, -0.775279f, -0.775321f, -0.775364f, -0.775406f, -0.775448f, -0.77549f, -0.775532f, -0.775575f,
--0.775617f, -0.775659f, -0.775701f, -0.775743f, -0.775785f, -0.775827f, -0.775869f, -0.775911f, -0.775954f, -0.775996f, -0.776038f, -0.77608f, -0.776122f, -0.776164f, -0.776206f, -0.776248f, -0.77629f, -0.776332f, -0.776374f, -0.776416f,
--0.776458f, -0.7765f, -0.776542f, -0.776583f, -0.776625f, -0.776667f, -0.776709f, -0.776751f, -0.776793f, -0.776835f, -0.776877f, -0.776918f, -0.77696f, -0.777002f, -0.777044f, -0.777086f, -0.777127f, -0.777169f, -0.777211f, -0.777253f,
--0.777294f, -0.777336f, -0.777378f, -0.77742f, -0.777461f, -0.777503f, -0.777545f, -0.777586f, -0.777628f, -0.77767f, -0.777711f, -0.777753f, -0.777795f, -0.777836f, -0.777878f, -0.777919f, -0.777961f, -0.778003f, -0.778044f, -0.778086f,
--0.778127f, -0.778169f, -0.77821f, -0.778252f, -0.778293f, -0.778335f, -0.778376f, -0.778418f, -0.778459f, -0.778501f, -0.778542f, -0.778584f, -0.778625f, -0.778666f, -0.778708f, -0.778749f, -0.778791f, -0.778832f, -0.778873f, -0.778915f,
--0.778956f, -0.778997f, -0.779039f, -0.77908f, -0.779121f, -0.779163f, -0.779204f, -0.779245f, -0.779286f, -0.779328f, -0.779369f, -0.77941f, -0.779451f, -0.779493f, -0.779534f, -0.779575f, -0.779616f, -0.779657f, -0.779698f, -0.77974f,
--0.779781f, -0.779822f, -0.779863f, -0.779904f, -0.779945f, -0.779986f, -0.780027f, -0.780068f, -0.780109f, -0.78015f, -0.780191f, -0.780232f, -0.780273f, -0.780314f, -0.780355f, -0.780396f, -0.780437f, -0.780478f, -0.780519f, -0.78056f,
--0.780601f, -0.780642f, -0.780683f, -0.780724f, -0.780765f, -0.780806f, -0.780847f, -0.780887f, -0.780928f, -0.780969f, -0.78101f, -0.781051f, -0.781092f, -0.781132f, -0.781173f, -0.781214f, -0.781255f, -0.781295f, -0.781336f, -0.781377f,
--0.781418f, -0.781458f, -0.781499f, -0.78154f, -0.78158f, -0.781621f, -0.781662f, -0.781702f, -0.781743f, -0.781784f, -0.781824f, -0.781865f, -0.781906f, -0.781946f, -0.781987f, -0.782027f, -0.782068f, -0.782108f, -0.782149f, -0.78219f,
--0.78223f, -0.782271f, -0.782311f, -0.782352f, -0.782392f, -0.782432f, -0.782473f, -0.782513f, -0.782554f, -0.782594f, -0.782635f, -0.782675f, -0.782715f, -0.782756f, -0.782796f, -0.782837f, -0.782877f, -0.782917f, -0.782958f, -0.782998f,
--0.783038f, -0.783079f, -0.783119f, -0.783159f, -0.783199f, -0.78324f, -0.78328f, -0.78332f, -0.78336f, -0.783401f, -0.783441f, -0.783481f, -0.783521f, -0.783561f, -0.783602f, -0.783642f, -0.783682f, -0.783722f, -0.783762f, -0.783802f,
--0.783842f, -0.783883f, -0.783923f, -0.783963f, -0.784003f, -0.784043f, -0.784083f, -0.784123f, -0.784163f, -0.784203f, -0.784243f, -0.784283f, -0.784323f, -0.784363f, -0.784403f, -0.784443f, -0.784483f, -0.784523f, -0.784563f, -0.784603f,
--0.784642f, -0.784682f, -0.784722f, -0.784762f, -0.784802f, -0.784842f, -0.784882f, -0.784922f, -0.784961f, -0.785001f, -0.785041f, -0.785081f, -0.785121f, -0.78516f, -0.7852f, -0.78524f, -0.78528f, -0.785319f, -0.785359f, -0.785399f,
--0.785438f, -0.785478f, -0.785518f, -0.785557f, -0.785597f, -0.785637f, -0.785676f, -0.785716f, -0.785756f, -0.785795f, -0.785835f, -0.785874f, -0.785914f, -0.785954f, -0.785993f, -0.786033f, -0.786072f, -0.786112f, -0.786151f, -0.786191f,
--0.78623f, -0.78627f, -0.786309f, -0.786349f, -0.786388f, -0.786427f, -0.786467f, -0.786506f, -0.786546f, -0.786585f, -0.786625f, -0.786664f, -0.786703f, -0.786743f, -0.786782f, -0.786821f, -0.786861f, -0.7869f, -0.786939f, -0.786979f,
--0.787018f, -0.787057f, -0.787096f, -0.787136f, -0.787175f, -0.787214f, -0.787253f, -0.787293f, -0.787332f, -0.787371f, -0.78741f, -0.787449f, -0.787488f, -0.787528f, -0.787567f, -0.787606f, -0.787645f, -0.787684f, -0.787723f, -0.787762f,
--0.787801f, -0.78784f, -0.78788f, -0.787919f, -0.787958f, -0.787997f, -0.788036f, -0.788075f, -0.788114f, -0.788153f, -0.788192f, -0.788231f, -0.78827f, -0.788308f, -0.788347f, -0.788386f, -0.788425f, -0.788464f, -0.788503f, -0.788542f,
--0.788581f, -0.78862f, -0.788658f, -0.788697f, -0.788736f, -0.788775f, -0.788814f, -0.788853f, -0.788891f, -0.78893f, -0.788969f, -0.789008f, -0.789046f, -0.789085f, -0.789124f, -0.789163f, -0.789201f, -0.78924f, -0.789279f, -0.789317f,
--0.789356f, -0.789395f, -0.789433f, -0.789472f, -0.789511f, -0.789549f, -0.789588f, -0.789626f, -0.789665f, -0.789704f, -0.789742f, -0.789781f, -0.789819f, -0.789858f, -0.789896f, -0.789935f, -0.789973f, -0.790012f, -0.79005f, -0.790089f,
--0.790127f, -0.790166f, -0.790204f, -0.790242f, -0.790281f, -0.790319f, -0.790358f, -0.790396f, -0.790434f, -0.790473f, -0.790511f, -0.790549f, -0.790588f, -0.790626f, -0.790664f, -0.790703f, -0.790741f, -0.790779f, -0.790818f, -0.790856f,
--0.790894f, -0.790932f, -0.79097f, -0.791009f, -0.791047f, -0.791085f, -0.791123f, -0.791161f, -0.7912f, -0.791238f, -0.791276f, -0.791314f, -0.791352f, -0.79139f, -0.791428f, -0.791466f, -0.791505f, -0.791543f, -0.791581f, -0.791619f,
--0.791657f, -0.791695f, -0.791733f, -0.791771f, -0.791809f, -0.791847f, -0.791885f, -0.791923f, -0.791961f, -0.791999f, -0.792037f, -0.792075f, -0.792112f, -0.79215f, -0.792188f, -0.792226f, -0.792264f, -0.792302f, -0.79234f, -0.792378f,
--0.792415f, -0.792453f, -0.792491f, -0.792529f, -0.792567f, -0.792604f, -0.792642f, -0.79268f, -0.792718f, -0.792755f, -0.792793f, -0.792831f, -0.792869f, -0.792906f, -0.792944f, -0.792982f, -0.793019f, -0.793057f, -0.793095f, -0.793132f,
--0.79317f, -0.793207f, -0.793245f, -0.793283f, -0.79332f, -0.793358f, -0.793395f, -0.793433f, -0.79347f, -0.793508f, -0.793545f, -0.793583f, -0.79362f, -0.793658f, -0.793695f, -0.793733f, -0.79377f, -0.793808f, -0.793845f, -0.793883f,
--0.79392f, -0.793957f, -0.793995f, -0.794032f, -0.79407f, -0.794107f, -0.794144f, -0.794182f, -0.794219f, -0.794256f, -0.794294f, -0.794331f, -0.794368f, -0.794406f, -0.794443f, -0.79448f, -0.794517f, -0.794555f, -0.794592f, -0.794629f,
--0.794666f, -0.794703f, -0.794741f, -0.794778f, -0.794815f, -0.794852f, -0.794889f, -0.794926f, -0.794963f, -0.795001f, -0.795038f, -0.795075f, -0.795112f, -0.795149f, -0.795186f, -0.795223f, -0.79526f, -0.795297f, -0.795334f, -0.795371f,
--0.795408f, -0.795445f, -0.795482f, -0.795519f, -0.795556f, -0.795593f, -0.79563f, -0.795667f, -0.795704f, -0.795741f, -0.795777f, -0.795814f, -0.795851f, -0.795888f, -0.795925f, -0.795962f, -0.795999f, -0.796035f, -0.796072f, -0.796109f,
--0.796146f, -0.796183f, -0.796219f, -0.796256f, -0.796293f, -0.79633f, -0.796366f, -0.796403f, -0.79644f, -0.796476f, -0.796513f, -0.79655f, -0.796586f, -0.796623f, -0.79666f, -0.796696f, -0.796733f, -0.796769f, -0.796806f, -0.796843f,
--0.796879f, -0.796916f, -0.796952f, -0.796989f, -0.797025f, -0.797062f, -0.797098f, -0.797135f, -0.797171f, -0.797208f, -0.797244f, -0.797281f, -0.797317f, -0.797354f, -0.79739f, -0.797427f, -0.797463f, -0.797499f, -0.797536f, -0.797572f,
--0.797609f, -0.797645f, -0.797681f, -0.797718f, -0.797754f, -0.79779f, -0.797827f, -0.797863f, -0.797899f, -0.797935f, -0.797972f, -0.798008f, -0.798044f, -0.79808f, -0.798117f, -0.798153f, -0.798189f, -0.798225f, -0.798261f, -0.798297f,
--0.798334f, -0.79837f, -0.798406f, -0.798442f, -0.798478f, -0.798514f, -0.79855f, -0.798586f, -0.798622f, -0.798659f, -0.798695f, -0.798731f, -0.798767f, -0.798803f, -0.798839f, -0.798875f, -0.798911f, -0.798947f, -0.798983f, -0.799019f,
--0.799055f, -0.79909f, -0.799126f, -0.799162f, -0.799198f, -0.799234f, -0.79927f, -0.799306f, -0.799342f, -0.799378f, -0.799413f, -0.799449f, -0.799485f, -0.799521f, -0.799557f, -0.799592f, -0.799628f, -0.799664f, -0.7997f, -0.799735f,
--0.799771f, -0.799807f, -0.799843f, -0.799878f, -0.799914f, -0.79995f, -0.799985f, -0.800021f, -0.800057f, -0.800092f, -0.800128f, -0.800164f, -0.800199f, -0.800235f, -0.80027f, -0.800306f, -0.800341f, -0.800377f, -0.800413f, -0.800448f,
--0.800484f, -0.800519f, -0.800555f, -0.80059f, -0.800626f, -0.800661f, -0.800697f, -0.800732f, -0.800767f, -0.800803f, -0.800838f, -0.800874f, -0.800909f, -0.800944f, -0.80098f, -0.801015f, -0.801051f, -0.801086f, -0.801121f, -0.801157f,
--0.801192f, -0.801227f, -0.801262f, -0.801298f, -0.801333f, -0.801368f, -0.801403f, -0.801439f, -0.801474f, -0.801509f, -0.801544f, -0.80158f, -0.801615f, -0.80165f, -0.801685f, -0.80172f, -0.801755f, -0.801791f, -0.801826f, -0.801861f,
--0.801896f, -0.801931f, -0.801966f, -0.802001f, -0.802036f, -0.802071f, -0.802106f, -0.802141f, -0.802176f, -0.802211f, -0.802246f, -0.802281f, -0.802316f, -0.802351f, -0.802386f, -0.802421f, -0.802456f, -0.802491f, -0.802526f, -0.802561f,
--0.802596f, -0.80263f, -0.802665f, -0.8027f, -0.802735f, -0.80277f, -0.802805f, -0.802839f, -0.802874f, -0.802909f, -0.802944f, -0.802979f, -0.803013f, -0.803048f, -0.803083f, -0.803118f, -0.803152f, -0.803187f, -0.803222f, -0.803256f,
--0.803291f, -0.803326f, -0.80336f, -0.803395f, -0.80343f, -0.803464f, -0.803499f, -0.803534f, -0.803568f, -0.803603f, -0.803637f, -0.803672f, -0.803706f, -0.803741f, -0.803775f, -0.80381f, -0.803844f, -0.803879f, -0.803913f, -0.803948f,
--0.803982f, -0.804017f, -0.804051f, -0.804086f, -0.80412f, -0.804155f, -0.804189f, -0.804223f, -0.804258f, -0.804292f, -0.804326f, -0.804361f, -0.804395f, -0.804429f, -0.804464f, -0.804498f, -0.804532f, -0.804567f, -0.804601f, -0.804635f,
--0.804669f, -0.804704f, -0.804738f, -0.804772f, -0.804806f, -0.80484f, -0.804875f, -0.804909f, -0.804943f, -0.804977f, -0.805011f, -0.805045f, -0.80508f, -0.805114f, -0.805148f, -0.805182f, -0.805216f, -0.80525f, -0.805284f, -0.805318f,
--0.805352f, -0.805386f, -0.80542f, -0.805454f, -0.805488f, -0.805522f, -0.805556f, -0.80559f, -0.805624f, -0.805658f, -0.805692f, -0.805726f, -0.80576f, -0.805794f, -0.805828f, -0.805861f, -0.805895f, -0.805929f, -0.805963f, -0.805997f,
--0.806031f, -0.806064f, -0.806098f, -0.806132f, -0.806166f, -0.8062f, -0.806233f, -0.806267f, -0.806301f, -0.806335f, -0.806368f, -0.806402f, -0.806436f, -0.806469f, -0.806503f, -0.806537f, -0.80657f, -0.806604f, -0.806638f, -0.806671f,
--0.806705f, -0.806738f, -0.806772f, -0.806806f, -0.806839f, -0.806873f, -0.806906f, -0.80694f, -0.806973f, -0.807007f, -0.80704f, -0.807074f, -0.807107f, -0.807141f, -0.807174f, -0.807208f, -0.807241f, -0.807275f, -0.807308f, -0.807341f,
--0.807375f, -0.807408f, -0.807442f, -0.807475f, -0.807508f, -0.807542f, -0.807575f, -0.807608f, -0.807642f, -0.807675f, -0.807708f, -0.807742f, -0.807775f, -0.807808f, -0.807841f, -0.807875f, -0.807908f, -0.807941f, -0.807974f, -0.808007f,
--0.808041f, -0.808074f, -0.808107f, -0.80814f, -0.808173f, -0.808206f, -0.808239f, -0.808273f, -0.808306f, -0.808339f, -0.808372f, -0.808405f, -0.808438f, -0.808471f, -0.808504f, -0.808537f, -0.80857f, -0.808603f, -0.808636f, -0.808669f,
--0.808702f, -0.808735f, -0.808768f, -0.808801f, -0.808834f, -0.808867f, -0.8089f, -0.808932f, -0.808965f, -0.808998f, -0.809031f, -0.809064f, -0.809097f, -0.80913f, -0.809162f, -0.809195f, -0.809228f, -0.809261f, -0.809294f, -0.809326f,
--0.809359f, -0.809392f, -0.809425f, -0.809457f, -0.80949f, -0.809523f, -0.809555f, -0.809588f, -0.809621f, -0.809653f, -0.809686f, -0.809719f, -0.809751f, -0.809784f, -0.809817f, -0.809849f, -0.809882f, -0.809914f, -0.809947f, -0.809979f,
--0.810012f, -0.810045f, -0.810077f, -0.81011f, -0.810142f, -0.810175f, -0.810207f, -0.810239f, -0.810272f, -0.810304f, -0.810337f, -0.810369f, -0.810402f, -0.810434f, -0.810466f, -0.810499f, -0.810531f, -0.810564f, -0.810596f, -0.810628f,
--0.810661f, -0.810693f, -0.810725f, -0.810757f, -0.81079f, -0.810822f, -0.810854f, -0.810887f, -0.810919f, -0.810951f, -0.810983f, -0.811015f, -0.811048f, -0.81108f, -0.811112f, -0.811144f, -0.811176f, -0.811208f, -0.811241f, -0.811273f,
--0.811305f, -0.811337f, -0.811369f, -0.811401f, -0.811433f, -0.811465f, -0.811497f, -0.811529f, -0.811561f, -0.811593f, -0.811625f, -0.811657f, -0.811689f, -0.811721f, -0.811753f, -0.811785f, -0.811817f, -0.811849f, -0.811881f, -0.811913f,
--0.811945f, -0.811977f, -0.812009f, -0.81204f, -0.812072f, -0.812104f, -0.812136f, -0.812168f, -0.8122f, -0.812231f, -0.812263f, -0.812295f, -0.812327f, -0.812358f, -0.81239f, -0.812422f, -0.812454f, -0.812485f, -0.812517f, -0.812549f,
--0.81258f, -0.812612f, -0.812644f, -0.812675f, -0.812707f, -0.812739f, -0.81277f, -0.812802f, -0.812834f, -0.812865f, -0.812897f, -0.812928f, -0.81296f, -0.812991f, -0.813023f, -0.813054f, -0.813086f, -0.813117f, -0.813149f, -0.81318f,
--0.813212f, -0.813243f, -0.813275f, -0.813306f, -0.813338f, -0.813369f, -0.8134f, -0.813432f, -0.813463f, -0.813495f, -0.813526f, -0.813557f, -0.813589f, -0.81362f, -0.813651f, -0.813683f, -0.813714f, -0.813745f, -0.813776f, -0.813808f,
--0.813839f, -0.81387f, -0.813901f, -0.813933f, -0.813964f, -0.813995f, -0.814026f, -0.814057f, -0.814089f, -0.81412f, -0.814151f, -0.814182f, -0.814213f, -0.814244f, -0.814275f, -0.814306f, -0.814337f, -0.814368f, -0.8144f, -0.814431f,
--0.814462f, -0.814493f, -0.814524f, -0.814555f, -0.814586f, -0.814617f, -0.814648f, -0.814679f, -0.81471f, -0.81474f, -0.814771f, -0.814802f, -0.814833f, -0.814864f, -0.814895f, -0.814926f, -0.814957f, -0.814988f, -0.815018f, -0.815049f,
--0.81508f, -0.815111f, -0.815142f, -0.815172f, -0.815203f, -0.815234f, -0.815265f, -0.815295f, -0.815326f, -0.815357f, -0.815388f, -0.815418f, -0.815449f, -0.81548f, -0.81551f, -0.815541f, -0.815572f, -0.815602f, -0.815633f, -0.815664f,
--0.815694f, -0.815725f, -0.815755f, -0.815786f, -0.815816f, -0.815847f, -0.815878f, -0.815908f, -0.815939f, -0.815969f, -0.816f, -0.81603f, -0.816061f, -0.816091f, -0.816121f, -0.816152f, -0.816182f, -0.816213f, -0.816243f, -0.816274f,
--0.816304f, -0.816334f, -0.816365f, -0.816395f, -0.816425f, -0.816456f, -0.816486f, -0.816516f, -0.816547f, -0.816577f, -0.816607f, -0.816637f, -0.816668f, -0.816698f, -0.816728f, -0.816758f, -0.816789f, -0.816819f, -0.816849f, -0.816879f,
--0.816909f, -0.81694f, -0.81697f, -0.817f, -0.81703f, -0.81706f, -0.81709f, -0.81712f, -0.81715f, -0.81718f, -0.81721f, -0.81724f, -0.817271f, -0.817301f, -0.817331f, -0.817361f, -0.817391f, -0.817421f, -0.817451f, -0.81748f,
--0.81751f, -0.81754f, -0.81757f, -0.8176f, -0.81763f, -0.81766f, -0.81769f, -0.81772f, -0.81775f, -0.81778f, -0.817809f, -0.817839f, -0.817869f, -0.817899f, -0.817929f, -0.817958f, -0.817988f, -0.818018f, -0.818048f, -0.818077f,
--0.818107f, -0.818137f, -0.818167f, -0.818196f, -0.818226f, -0.818256f, -0.818285f, -0.818315f, -0.818345f, -0.818374f, -0.818404f, -0.818434f, -0.818463f, -0.818493f, -0.818522f, -0.818552f, -0.818581f, -0.818611f, -0.818641f, -0.81867f,
--0.8187f, -0.818729f, -0.818759f, -0.818788f, -0.818818f, -0.818847f, -0.818876f, -0.818906f, -0.818935f, -0.818965f, -0.818994f, -0.819024f, -0.819053f, -0.819082f, -0.819112f, -0.819141f, -0.81917f, -0.8192f, -0.819229f, -0.819258f,
--0.819288f, -0.819317f, -0.819346f, -0.819376f, -0.819405f, -0.819434f, -0.819463f, -0.819492f, -0.819522f, -0.819551f, -0.81958f, -0.819609f, -0.819638f, -0.819668f, -0.819697f, -0.819726f, -0.819755f, -0.819784f, -0.819813f, -0.819842f,
--0.819871f, -0.8199f, -0.81993f, -0.819959f, -0.819988f, -0.820017f, -0.820046f, -0.820075f, -0.820104f, -0.820133f, -0.820162f, -0.820191f, -0.82022f, -0.820248f, -0.820277f, -0.820306f, -0.820335f, -0.820364f, -0.820393f, -0.820422f,
--0.820451f, -0.82048f, -0.820508f, -0.820537f, -0.820566f, -0.820595f, -0.820624f, -0.820652f, -0.820681f, -0.82071f, -0.820739f, -0.820768f, -0.820796f, -0.820825f, -0.820854f, -0.820882f, -0.820911f, -0.82094f, -0.820968f, -0.820997f,
--0.821026f, -0.821054f, -0.821083f, -0.821112f, -0.82114f, -0.821169f, -0.821197f, -0.821226f, -0.821255f, -0.821283f, -0.821312f, -0.82134f, -0.821369f, -0.821397f, -0.821426f, -0.821454f, -0.821483f, -0.821511f, -0.82154f, -0.821568f,
--0.821596f, -0.821625f, -0.821653f, -0.821682f, -0.82171f, -0.821738f, -0.821767f, -0.821795f, -0.821823f, -0.821852f, -0.82188f, -0.821908f, -0.821937f, -0.821965f, -0.821993f, -0.822021f, -0.82205f, -0.822078f, -0.822106f, -0.822134f,
--0.822163f, -0.822191f, -0.822219f, -0.822247f, -0.822275f, -0.822304f, -0.822332f, -0.82236f, -0.822388f, -0.822416f, -0.822444f, -0.822472f, -0.8225f, -0.822528f, -0.822556f, -0.822584f, -0.822613f, -0.822641f, -0.822669f, -0.822697f,
--0.822725f, -0.822753f, -0.82278f, -0.822808f, -0.822836f, -0.822864f, -0.822892f, -0.82292f, -0.822948f, -0.822976f, -0.823004f, -0.823032f, -0.82306f, -0.823087f, -0.823115f, -0.823143f, -0.823171f, -0.823199f, -0.823226f, -0.823254f,
--0.823282f, -0.82331f, -0.823338f, -0.823365f, -0.823393f, -0.823421f, -0.823448f, -0.823476f, -0.823504f, -0.823531f, -0.823559f, -0.823587f, -0.823614f, -0.823642f, -0.82367f, -0.823697f, -0.823725f, -0.823752f, -0.82378f, -0.823808f,
--0.823835f, -0.823863f, -0.82389f, -0.823918f, -0.823945f, -0.823973f, -0.824f, -0.824028f, -0.824055f, -0.824083f, -0.82411f, -0.824138f, -0.824165f, -0.824192f, -0.82422f, -0.824247f, -0.824275f, -0.824302f, -0.824329f, -0.824357f,
--0.824384f, -0.824411f, -0.824439f, -0.824466f, -0.824493f, -0.82452f, -0.824548f, -0.824575f, -0.824602f, -0.824629f, -0.824657f, -0.824684f, -0.824711f, -0.824738f, -0.824765f, -0.824793f, -0.82482f, -0.824847f, -0.824874f, -0.824901f,
--0.824928f, -0.824955f, -0.824982f, -0.82501f, -0.825037f, -0.825064f, -0.825091f, -0.825118f, -0.825145f, -0.825172f, -0.825199f, -0.825226f, -0.825253f, -0.82528f, -0.825307f, -0.825334f, -0.825361f, -0.825388f, -0.825414f, -0.825441f,
--0.825468f, -0.825495f, -0.825522f, -0.825549f, -0.825576f, -0.825603f, -0.825629f, -0.825656f, -0.825683f, -0.82571f, -0.825737f, -0.825763f, -0.82579f, -0.825817f, -0.825844f, -0.82587f, -0.825897f, -0.825924f, -0.82595f, -0.825977f,
--0.826004f, -0.826031f, -0.826057f, -0.826084f, -0.82611f, -0.826137f, -0.826164f, -0.82619f, -0.826217f, -0.826243f, -0.82627f, -0.826297f, -0.826323f, -0.82635f, -0.826376f, -0.826403f, -0.826429f, -0.826456f, -0.826482f, -0.826509f,
--0.826535f, -0.826561f, -0.826588f, -0.826614f, -0.826641f, -0.826667f, -0.826694f, -0.82672f, -0.826746f, -0.826773f, -0.826799f, -0.826825f, -0.826852f, -0.826878f, -0.826904f, -0.826931f, -0.826957f, -0.826983f, -0.827009f, -0.827036f,
--0.827062f, -0.827088f, -0.827114f, -0.82714f, -0.827167f, -0.827193f, -0.827219f, -0.827245f, -0.827271f, -0.827297f, -0.827324f, -0.82735f, -0.827376f, -0.827402f, -0.827428f, -0.827454f, -0.82748f, -0.827506f, -0.827532f, -0.827558f,
--0.827584f, -0.82761f, -0.827636f, -0.827662f, -0.827688f, -0.827714f, -0.82774f, -0.827766f, -0.827792f, -0.827818f, -0.827844f, -0.82787f, -0.827896f, -0.827921f, -0.827947f, -0.827973f, -0.827999f, -0.828025f, -0.828051f, -0.828076f,
--0.828102f, -0.828128f, -0.828154f, -0.828179f, -0.828205f, -0.828231f, -0.828257f, -0.828282f, -0.828308f, -0.828334f, -0.828359f, -0.828385f, -0.828411f, -0.828436f, -0.828462f, -0.828488f, -0.828513f, -0.828539f, -0.828565f, -0.82859f,
--0.828616f, -0.828641f, -0.828667f, -0.828692f, -0.828718f, -0.828743f, -0.828769f, -0.828794f, -0.82882f, -0.828845f, -0.828871f, -0.828896f, -0.828922f, -0.828947f, -0.828973f, -0.828998f, -0.829023f, -0.829049f, -0.829074f, -0.8291f,
--0.829125f, -0.82915f, -0.829176f, -0.829201f, -0.829226f, -0.829251f, -0.829277f, -0.829302f, -0.829327f, -0.829353f, -0.829378f, -0.829403f, -0.829428f, -0.829453f, -0.829479f, -0.829504f, -0.829529f, -0.829554f, -0.829579f, -0.829604f,
--0.82963f, -0.829655f, -0.82968f, -0.829705f, -0.82973f, -0.829755f, -0.82978f, -0.829805f, -0.82983f, -0.829855f, -0.82988f, -0.829905f, -0.82993f, -0.829955f, -0.82998f, -0.830005f, -0.83003f, -0.830055f, -0.83008f, -0.830105f,
--0.83013f, -0.830155f, -0.83018f, -0.830205f, -0.830229f, -0.830254f, -0.830279f, -0.830304f, -0.830329f, -0.830354f, -0.830378f, -0.830403f, -0.830428f, -0.830453f, -0.830477f, -0.830502f, -0.830527f, -0.830552f, -0.830576f, -0.830601f,
--0.830626f, -0.83065f, -0.830675f, -0.8307f, -0.830724f, -0.830749f, -0.830774f, -0.830798f, -0.830823f, -0.830847f, -0.830872f, -0.830897f, -0.830921f, -0.830946f, -0.83097f, -0.830995f, -0.831019f, -0.831044f, -0.831068f, -0.831093f,
--0.831117f, -0.831142f, -0.831166f, -0.831191f, -0.831215f, -0.831239f, -0.831264f, -0.831288f, -0.831313f, -0.831337f, -0.831361f, -0.831386f, -0.83141f, -0.831434f, -0.831459f, -0.831483f, -0.831507f, -0.831531f, -0.831556f, -0.83158f,
--0.831604f, -0.831628f, -0.831653f, -0.831677f, -0.831701f, -0.831725f, -0.831749f, -0.831774f, -0.831798f, -0.831822f, -0.831846f, -0.83187f, -0.831894f, -0.831918f, -0.831942f, -0.831967f, -0.831991f, -0.832015f, -0.832039f, -0.832063f,
--0.832087f, -0.832111f, -0.832135f, -0.832159f, -0.832183f, -0.832207f, -0.832231f, -0.832255f, -0.832279f, -0.832302f, -0.832326f, -0.83235f, -0.832374f, -0.832398f, -0.832422f, -0.832446f, -0.83247f, -0.832493f, -0.832517f, -0.832541f,
--0.832565f, -0.832589f, -0.832612f, -0.832636f, -0.83266f, -0.832684f, -0.832707f, -0.832731f, -0.832755f, -0.832779f, -0.832802f, -0.832826f, -0.83285f, -0.832873f, -0.832897f, -0.832921f, -0.832944f, -0.832968f, -0.832991f, -0.833015f,
--0.833039f, -0.833062f, -0.833086f, -0.833109f, -0.833133f, -0.833156f, -0.83318f, -0.833203f, -0.833227f, -0.83325f, -0.833274f, -0.833297f, -0.833321f, -0.833344f, -0.833368f, -0.833391f, -0.833414f, -0.833438f, -0.833461f, -0.833484f,
--0.833508f, -0.833531f, -0.833555f, -0.833578f, -0.833601f, -0.833624f, -0.833648f, -0.833671f, -0.833694f, -0.833718f, -0.833741f, -0.833764f, -0.833787f, -0.83381f, -0.833834f, -0.833857f, -0.83388f, -0.833903f, -0.833926f, -0.833949f,
--0.833973f, -0.833996f, -0.834019f, -0.834042f, -0.834065f, -0.834088f, -0.834111f, -0.834134f, -0.834157f, -0.83418f, -0.834203f, -0.834226f, -0.834249f, -0.834272f, -0.834295f, -0.834318f, -0.834341f, -0.834364f, -0.834387f, -0.83441f,
--0.834433f, -0.834456f, -0.834479f, -0.834502f, -0.834525f, -0.834547f, -0.83457f, -0.834593f, -0.834616f, -0.834639f, -0.834661f, -0.834684f, -0.834707f, -0.83473f, -0.834753f, -0.834775f, -0.834798f, -0.834821f, -0.834843f, -0.834866f,
--0.834889f, -0.834912f, -0.834934f, -0.834957f, -0.834979f, -0.835002f, -0.835025f, -0.835047f, -0.83507f, -0.835093f, -0.835115f, -0.835138f, -0.83516f, -0.835183f, -0.835205f, -0.835228f, -0.83525f, -0.835273f, -0.835295f, -0.835318f,
--0.83534f, -0.835363f, -0.835385f, -0.835408f, -0.83543f, -0.835452f, -0.835475f, -0.835497f, -0.83552f, -0.835542f, -0.835564f, -0.835587f, -0.835609f, -0.835631f, -0.835654f, -0.835676f, -0.835698f, -0.83572f, -0.835743f, -0.835765f,
--0.835787f, -0.835809f, -0.835832f, -0.835854f, -0.835876f, -0.835898f, -0.83592f, -0.835943f, -0.835965f, -0.835987f, -0.836009f, -0.836031f, -0.836053f, -0.836075f, -0.836097f, -0.83612f, -0.836142f, -0.836164f, -0.836186f, -0.836208f,
--0.83623f, -0.836252f, -0.836274f, -0.836296f, -0.836318f, -0.83634f, -0.836362f, -0.836384f, -0.836405f, -0.836427f, -0.836449f, -0.836471f, -0.836493f, -0.836515f, -0.836537f, -0.836559f, -0.836581f, -0.836602f, -0.836624f, -0.836646f,
--0.836668f, -0.83669f, -0.836711f, -0.836733f, -0.836755f, -0.836777f, -0.836798f, -0.83682f, -0.836842f, -0.836863f, -0.836885f, -0.836907f, -0.836928f, -0.83695f, -0.836972f, -0.836993f, -0.837015f, -0.837037f, -0.837058f, -0.83708f,
--0.837101f, -0.837123f, -0.837144f, -0.837166f, -0.837188f, -0.837209f, -0.837231f, -0.837252f, -0.837274f, -0.837295f, -0.837316f, -0.837338f, -0.837359f, -0.837381f, -0.837402f, -0.837424f, -0.837445f, -0.837466f, -0.837488f, -0.837509f,
--0.83753f, -0.837552f, -0.837573f, -0.837594f, -0.837616f, -0.837637f, -0.837658f, -0.83768f, -0.837701f, -0.837722f, -0.837743f, -0.837765f, -0.837786f, -0.837807f, -0.837828f, -0.837849f, -0.83787f, -0.837892f, -0.837913f, -0.837934f,
--0.837955f, -0.837976f, -0.837997f, -0.838018f, -0.838039f, -0.83806f, -0.838082f, -0.838103f, -0.838124f, -0.838145f, -0.838166f, -0.838187f, -0.838208f, -0.838229f, -0.83825f, -0.838271f, -0.838292f, -0.838312f, -0.838333f, -0.838354f,
--0.838375f, -0.838396f, -0.838417f, -0.838438f, -0.838459f, -0.83848f, -0.8385f, -0.838521f, -0.838542f, -0.838563f, -0.838584f, -0.838604f, -0.838625f, -0.838646f, -0.838667f, -0.838687f, -0.838708f, -0.838729f, -0.838749f, -0.83877f,
--0.838791f, -0.838811f, -0.838832f, -0.838853f, -0.838873f, -0.838894f, -0.838915f, -0.838935f, -0.838956f, -0.838976f, -0.838997f, -0.839018f, -0.839038f, -0.839059f, -0.839079f, -0.8391f, -0.83912f, -0.839141f, -0.839161f, -0.839182f,
--0.839202f, -0.839222f, -0.839243f, -0.839263f, -0.839284f, -0.839304f, -0.839324f, -0.839345f, -0.839365f, -0.839386f, -0.839406f, -0.839426f, -0.839447f, -0.839467f, -0.839487f, -0.839507f, -0.839528f, -0.839548f, -0.839568f, -0.839588f,
--0.839609f, -0.839629f, -0.839649f, -0.839669f, -0.839689f, -0.83971f, -0.83973f, -0.83975f, -0.83977f, -0.83979f, -0.83981f, -0.83983f, -0.839851f, -0.839871f, -0.839891f, -0.839911f, -0.839931f, -0.839951f, -0.839971f, -0.839991f,
--0.840011f, -0.840031f, -0.840051f, -0.840071f, -0.840091f, -0.840111f, -0.840131f, -0.840151f, -0.84017f, -0.84019f, -0.84021f, -0.84023f, -0.84025f, -0.84027f, -0.84029f, -0.84031f, -0.840329f, -0.840349f, -0.840369f, -0.840389f,
--0.840409f, -0.840428f, -0.840448f, -0.840468f, -0.840488f, -0.840507f, -0.840527f, -0.840547f, -0.840566f, -0.840586f, -0.840606f, -0.840625f, -0.840645f, -0.840665f, -0.840684f, -0.840704f, -0.840723f, -0.840743f, -0.840763f, -0.840782f,
--0.840802f, -0.840821f, -0.840841f, -0.84086f, -0.84088f, -0.840899f, -0.840919f, -0.840938f, -0.840958f, -0.840977f, -0.840997f, -0.841016f, -0.841035f, -0.841055f, -0.841074f, -0.841094f, -0.841113f, -0.841132f, -0.841152f, -0.841171f,
--0.84119f, -0.84121f, -0.841229f, -0.841248f, -0.841268f, -0.841287f, -0.841306f, -0.841325f, -0.841345f, -0.841364f, -0.841383f, -0.841402f, -0.841421f, -0.841441f, -0.84146f, -0.841479f, -0.841498f, -0.841517f, -0.841536f, -0.841555f,
--0.841575f, -0.841594f, -0.841613f, -0.841632f, -0.841651f, -0.84167f, -0.841689f, -0.841708f, -0.841727f, -0.841746f, -0.841765f, -0.841784f, -0.841803f, -0.841822f, -0.841841f, -0.84186f, -0.841879f, -0.841898f, -0.841917f, -0.841935f,
--0.841954f, -0.841973f, -0.841992f, -0.842011f, -0.84203f, -0.842048f, -0.842067f, -0.842086f, -0.842105f, -0.842124f, -0.842142f, -0.842161f, -0.84218f, -0.842199f, -0.842217f, -0.842236f, -0.842255f, -0.842273f, -0.842292f, -0.842311f,
--0.842329f, -0.842348f, -0.842367f, -0.842385f, -0.842404f, -0.842423f, -0.842441f, -0.84246f, -0.842478f, -0.842497f, -0.842515f, -0.842534f, -0.842552f, -0.842571f, -0.842589f, -0.842608f, -0.842626f, -0.842645f, -0.842663f, -0.842682f,
--0.8427f, -0.842719f, -0.842737f, -0.842755f, -0.842774f, -0.842792f, -0.84281f, -0.842829f, -0.842847f, -0.842865f, -0.842884f, -0.842902f, -0.84292f, -0.842939f, -0.842957f, -0.842975f, -0.842993f, -0.843012f, -0.84303f, -0.843048f,
--0.843066f, -0.843084f, -0.843103f, -0.843121f, -0.843139f, -0.843157f, -0.843175f, -0.843193f, -0.843211f, -0.84323f, -0.843248f, -0.843266f, -0.843284f, -0.843302f, -0.84332f, -0.843338f, -0.843356f, -0.843374f, -0.843392f, -0.84341f,
--0.843428f, -0.843446f, -0.843464f, -0.843482f, -0.8435f, -0.843518f, -0.843536f, -0.843553f, -0.843571f, -0.843589f, -0.843607f, -0.843625f, -0.843643f, -0.843661f, -0.843678f, -0.843696f, -0.843714f, -0.843732f, -0.84375f, -0.843767f,
--0.843785f, -0.843803f, -0.84382f, -0.843838f, -0.843856f, -0.843874f, -0.843891f, -0.843909f, -0.843927f, -0.843944f, -0.843962f, -0.84398f, -0.843997f, -0.844015f, -0.844032f, -0.84405f, -0.844067f, -0.844085f, -0.844103f, -0.84412f,
--0.844138f, -0.844155f, -0.844173f, -0.84419f, -0.844208f, -0.844225f, -0.844243f, -0.84426f, -0.844277f, -0.844295f, -0.844312f, -0.84433f, -0.844347f, -0.844364f, -0.844382f, -0.844399f, -0.844416f, -0.844434f, -0.844451f, -0.844468f,
--0.844486f, -0.844503f, -0.84452f, -0.844538f, -0.844555f, -0.844572f, -0.844589f, -0.844606f, -0.844624f, -0.844641f, -0.844658f, -0.844675f, -0.844692f, -0.84471f, -0.844727f, -0.844744f, -0.844761f, -0.844778f, -0.844795f, -0.844812f,
--0.844829f, -0.844846f, -0.844863f, -0.84488f, -0.844897f, -0.844914f, -0.844931f, -0.844948f, -0.844965f, -0.844982f, -0.844999f, -0.845016f, -0.845033f, -0.84505f, -0.845067f, -0.845084f, -0.845101f, -0.845118f, -0.845135f, -0.845151f,
--0.845168f, -0.845185f, -0.845202f, -0.845219f, -0.845236f, -0.845252f, -0.845269f, -0.845286f, -0.845303f, -0.845319f, -0.845336f, -0.845353f, -0.845369f, -0.845386f, -0.845403f, -0.84542f, -0.845436f, -0.845453f, -0.845469f, -0.845486f,
--0.845503f, -0.845519f, -0.845536f, -0.845553f, -0.845569f, -0.845586f, -0.845602f, -0.845619f, -0.845635f, -0.845652f, -0.845668f, -0.845685f, -0.845701f, -0.845718f, -0.845734f, -0.845751f, -0.845767f, -0.845783f, -0.8458f, -0.845816f,
--0.845833f, -0.845849f, -0.845865f, -0.845882f, -0.845898f, -0.845914f, -0.845931f, -0.845947f, -0.845963f, -0.84598f, -0.845996f, -0.846012f, -0.846028f, -0.846045f, -0.846061f, -0.846077f, -0.846093f, -0.84611f, -0.846126f, -0.846142f,
--0.846158f, -0.846174f, -0.84619f, -0.846207f, -0.846223f, -0.846239f, -0.846255f, -0.846271f, -0.846287f, -0.846303f, -0.846319f, -0.846335f, -0.846351f, -0.846367f, -0.846383f, -0.846399f, -0.846415f, -0.846431f, -0.846447f, -0.846463f,
--0.846479f, -0.846495f, -0.846511f, -0.846527f, -0.846543f, -0.846559f, -0.846574f, -0.84659f, -0.846606f, -0.846622f, -0.846638f, -0.846654f, -0.846669f, -0.846685f, -0.846701f, -0.846717f, -0.846732f, -0.846748f, -0.846764f, -0.84678f,
--0.846795f, -0.846811f, -0.846827f, -0.846842f, -0.846858f, -0.846874f, -0.846889f, -0.846905f, -0.846921f, -0.846936f, -0.846952f, -0.846967f, -0.846983f, -0.846999f, -0.847014f, -0.84703f, -0.847045f, -0.847061f, -0.847076f, -0.847092f,
--0.847107f, -0.847123f, -0.847138f, -0.847154f, -0.847169f, -0.847184f, -0.8472f, -0.847215f, -0.847231f, -0.847246f, -0.847261f, -0.847277f, -0.847292f, -0.847307f, -0.847323f, -0.847338f, -0.847353f, -0.847369f, -0.847384f, -0.847399f,
--0.847414f, -0.84743f, -0.847445f, -0.84746f, -0.847475f, -0.847491f, -0.847506f, -0.847521f, -0.847536f, -0.847551f, -0.847566f, -0.847581f, -0.847597f, -0.847612f, -0.847627f, -0.847642f, -0.847657f, -0.847672f, -0.847687f, -0.847702f,
--0.847717f, -0.847732f, -0.847747f, -0.847762f, -0.847777f, -0.847792f, -0.847807f, -0.847822f, -0.847837f, -0.847852f, -0.847867f, -0.847882f, -0.847897f, -0.847911f, -0.847926f, -0.847941f, -0.847956f, -0.847971f, -0.847986f, -0.848f,
--0.848015f, -0.84803f, -0.848045f, -0.84806f, -0.848074f, -0.848089f, -0.848104f, -0.848119f, -0.848133f, -0.848148f, -0.848163f, -0.848177f, -0.848192f, -0.848207f, -0.848221f, -0.848236f, -0.848251f, -0.848265f, -0.84828f, -0.848294f,
--0.848309f, -0.848323f, -0.848338f, -0.848353f, -0.848367f, -0.848382f, -0.848396f, -0.848411f, -0.848425f, -0.84844f, -0.848454f, -0.848468f, -0.848483f, -0.848497f, -0.848512f, -0.848526f, -0.84854f, -0.848555f, -0.848569f, -0.848584f,
--0.848598f, -0.848612f, -0.848627f, -0.848641f, -0.848655f, -0.848669f, -0.848684f, -0.848698f, -0.848712f, -0.848727f, -0.848741f, -0.848755f, -0.848769f, -0.848783f, -0.848798f, -0.848812f, -0.848826f, -0.84884f, -0.848854f, -0.848868f,
--0.848882f, -0.848897f, -0.848911f, -0.848925f, -0.848939f, -0.848953f, -0.848967f, -0.848981f, -0.848995f, -0.849009f, -0.849023f, -0.849037f, -0.849051f, -0.849065f, -0.849079f, -0.849093f, -0.849107f, -0.849121f, -0.849135f, -0.849148f,
--0.849162f, -0.849176f, -0.84919f, -0.849204f, -0.849218f, -0.849232f, -0.849245f, -0.849259f, -0.849273f, -0.849287f, -0.849301f, -0.849314f, -0.849328f, -0.849342f, -0.849356f, -0.849369f, -0.849383f, -0.849397f, -0.84941f, -0.849424f,
--0.849438f, -0.849451f, -0.849465f, -0.849479f, -0.849492f, -0.849506f, -0.849519f, -0.849533f, -0.849547f, -0.84956f, -0.849574f, -0.849587f, -0.849601f, -0.849614f, -0.849628f, -0.849641f, -0.849655f, -0.849668f, -0.849682f, -0.849695f,
--0.849709f, -0.849722f, -0.849735f, -0.849749f, -0.849762f, -0.849776f, -0.849789f, -0.849802f, -0.849816f, -0.849829f, -0.849842f, -0.849856f, -0.849869f, -0.849882f, -0.849895f, -0.849909f, -0.849922f, -0.849935f, -0.849948f, -0.849962f,
--0.849975f, -0.849988f, -0.850001f, -0.850014f, -0.850028f, -0.850041f, -0.850054f, -0.850067f, -0.85008f, -0.850093f, -0.850106f, -0.850119f, -0.850132f, -0.850145f, -0.850159f, -0.850172f, -0.850185f, -0.850198f, -0.850211f, -0.850224f,
--0.850237f, -0.85025f, -0.850262f, -0.850275f, -0.850288f, -0.850301f, -0.850314f, -0.850327f, -0.85034f, -0.850353f, -0.850366f, -0.850379f, -0.850391f, -0.850404f, -0.850417f, -0.85043f, -0.850443f, -0.850455f, -0.850468f, -0.850481f,
--0.850494f, -0.850506f, -0.850519f, -0.850532f, -0.850545f, -0.850557f, -0.85057f, -0.850583f, -0.850595f, -0.850608f, -0.850621f, -0.850633f, -0.850646f, -0.850658f, -0.850671f, -0.850684f, -0.850696f, -0.850709f, -0.850721f, -0.850734f,
--0.850746f, -0.850759f, -0.850771f, -0.850784f, -0.850796f, -0.850809f, -0.850821f, -0.850834f, -0.850846f, -0.850858f, -0.850871f, -0.850883f, -0.850896f, -0.850908f, -0.85092f, -0.850933f, -0.850945f, -0.850957f, -0.85097f, -0.850982f,
--0.850994f, -0.851006f, -0.851019f, -0.851031f, -0.851043f, -0.851055f, -0.851068f, -0.85108f, -0.851092f, -0.851104f, -0.851116f, -0.851129f, -0.851141f, -0.851153f, -0.851165f, -0.851177f, -0.851189f, -0.851201f, -0.851213f, -0.851226f,
--0.851238f, -0.85125f, -0.851262f, -0.851274f, -0.851286f, -0.851298f, -0.85131f, -0.851322f, -0.851334f, -0.851346f, -0.851358f, -0.85137f, -0.851381f, -0.851393f, -0.851405f, -0.851417f, -0.851429f, -0.851441f, -0.851453f, -0.851465f,
--0.851476f, -0.851488f, -0.8515f, -0.851512f, -0.851524f, -0.851535f, -0.851547f, -0.851559f, -0.851571f, -0.851582f, -0.851594f, -0.851606f, -0.851618f, -0.851629f, -0.851641f, -0.851653f, -0.851664f, -0.851676f, -0.851688f, -0.851699f,
--0.851711f, -0.851722f, -0.851734f, -0.851745f, -0.851757f, -0.851769f, -0.85178f, -0.851792f, -0.851803f, -0.851815f, -0.851826f, -0.851838f, -0.851849f, -0.851861f, -0.851872f, -0.851883f, -0.851895f, -0.851906f, -0.851918f, -0.851929f,
--0.85194f, -0.851952f, -0.851963f, -0.851974f, -0.851986f, -0.851997f, -0.852008f, -0.85202f, -0.852031f, -0.852042f, -0.852054f, -0.852065f, -0.852076f, -0.852087f, -0.852098f, -0.85211f, -0.852121f, -0.852132f, -0.852143f, -0.852154f,
--0.852166f, -0.852177f, -0.852188f, -0.852199f, -0.85221f, -0.852221f, -0.852232f, -0.852243f, -0.852254f, -0.852265f, -0.852276f, -0.852287f, -0.852298f, -0.852309f, -0.85232f, -0.852331f, -0.852342f, -0.852353f, -0.852364f, -0.852375f,
--0.852386f, -0.852397f, -0.852408f, -0.852419f, -0.85243f, -0.85244f, -0.852451f, -0.852462f, -0.852473f, -0.852484f, -0.852495f, -0.852505f, -0.852516f, -0.852527f, -0.852538f, -0.852548f, -0.852559f, -0.85257f, -0.852581f, -0.852591f,
--0.852602f, -0.852613f, -0.852623f, -0.852634f, -0.852645f, -0.852655f, -0.852666f, -0.852676f, -0.852687f, -0.852698f, -0.852708f, -0.852719f, -0.852729f, -0.85274f, -0.85275f, -0.852761f, -0.852771f, -0.852782f, -0.852792f, -0.852803f,
--0.852813f, -0.852824f, -0.852834f, -0.852845f, -0.852855f, -0.852865f, -0.852876f, -0.852886f, -0.852897f, -0.852907f, -0.852917f, -0.852928f, -0.852938f, -0.852948f, -0.852959f, -0.852969f, -0.852979f, -0.852989f, -0.853f, -0.85301f,
--0.85302f, -0.85303f, -0.853041f, -0.853051f, -0.853061f, -0.853071f, -0.853081f, -0.853091f, -0.853102f, -0.853112f, -0.853122f, -0.853132f, -0.853142f, -0.853152f, -0.853162f, -0.853172f, -0.853182f, -0.853192f, -0.853202f, -0.853212f,
--0.853222f, -0.853232f, -0.853242f, -0.853252f, -0.853262f, -0.853272f, -0.853282f, -0.853292f, -0.853302f, -0.853312f, -0.853322f, -0.853332f, -0.853341f, -0.853351f, -0.853361f, -0.853371f, -0.853381f, -0.853391f, -0.8534f, -0.85341f,
--0.85342f, -0.85343f, -0.853439f, -0.853449f, -0.853459f, -0.853469f, -0.853478f, -0.853488f, -0.853498f, -0.853507f, -0.853517f, -0.853527f, -0.853536f, -0.853546f, -0.853555f, -0.853565f, -0.853575f, -0.853584f, -0.853594f, -0.853603f,
--0.853613f, -0.853622f, -0.853632f, -0.853641f, -0.853651f, -0.85366f, -0.85367f, -0.853679f, -0.853689f, -0.853698f, -0.853708f, -0.853717f, -0.853726f, -0.853736f, -0.853745f, -0.853755f, -0.853764f, -0.853773f, -0.853783f, -0.853792f,
--0.853801f, -0.853811f, -0.85382f, -0.853829f, -0.853838f, -0.853848f, -0.853857f, -0.853866f, -0.853875f, -0.853885f, -0.853894f, -0.853903f, -0.853912f, -0.853921f, -0.85393f, -0.85394f, -0.853949f, -0.853958f, -0.853967f, -0.853976f,
--0.853985f, -0.853994f, -0.854003f, -0.854012f, -0.854021f, -0.85403f, -0.854039f, -0.854048f, -0.854057f, -0.854066f, -0.854075f, -0.854084f, -0.854093f, -0.854102f, -0.854111f, -0.85412f, -0.854129f, -0.854138f, -0.854147f, -0.854155f,
--0.854164f, -0.854173f, -0.854182f, -0.854191f, -0.8542f, -0.854208f, -0.854217f, -0.854226f, -0.854235f, -0.854243f, -0.854252f, -0.854261f, -0.85427f, -0.854278f, -0.854287f, -0.854296f, -0.854304f, -0.854313f, -0.854322f, -0.85433f,
--0.854339f, -0.854348f, -0.854356f, -0.854365f, -0.854373f, -0.854382f, -0.85439f, -0.854399f, -0.854407f, -0.854416f, -0.854424f, -0.854433f, -0.854441f, -0.85445f, -0.854458f, -0.854467f, -0.854475f, -0.854484f, -0.854492f, -0.854501f,
--0.854509f, -0.854517f, -0.854526f, -0.854534f, -0.854542f, -0.854551f, -0.854559f, -0.854567f, -0.854576f, -0.854584f, -0.854592f, -0.8546f, -0.854609f, -0.854617f, -0.854625f, -0.854633f, -0.854642f, -0.85465f, -0.854658f, -0.854666f,
--0.854674f, -0.854682f, -0.854691f, -0.854699f, -0.854707f, -0.854715f, -0.854723f, -0.854731f, -0.854739f, -0.854747f, -0.854755f, -0.854763f, -0.854771f, -0.854779f, -0.854787f, -0.854795f, -0.854803f, -0.854811f, -0.854819f, -0.854827f,
--0.854835f, -0.854843f, -0.854851f, -0.854859f, -0.854867f, -0.854875f, -0.854882f, -0.85489f, -0.854898f, -0.854906f, -0.854914f, -0.854922f, -0.854929f, -0.854937f, -0.854945f, -0.854953f, -0.85496f, -0.854968f, -0.854976f, -0.854984f,
--0.854991f, -0.854999f, -0.855007f, -0.855014f, -0.855022f, -0.85503f, -0.855037f, -0.855045f, -0.855053f, -0.85506f, -0.855068f, -0.855075f, -0.855083f, -0.85509f, -0.855098f, -0.855105f, -0.855113f, -0.855121f, -0.855128f, -0.855135f,
--0.855143f, -0.85515f, -0.855158f, -0.855165f, -0.855173f, -0.85518f, -0.855188f, -0.855195f, -0.855202f, -0.85521f, -0.855217f, -0.855224f, -0.855232f, -0.855239f, -0.855246f, -0.855254f, -0.855261f, -0.855268f, -0.855275f, -0.855283f,
--0.85529f, -0.855297f, -0.855304f, -0.855312f, -0.855319f, -0.855326f, -0.855333f, -0.85534f, -0.855347f, -0.855355f, -0.855362f, -0.855369f, -0.855376f, -0.855383f, -0.85539f, -0.855397f, -0.855404f, -0.855411f, -0.855418f, -0.855425f,
--0.855432f, -0.855439f, -0.855446f, -0.855453f, -0.85546f, -0.855467f, -0.855474f, -0.855481f, -0.855488f, -0.855495f, -0.855502f, -0.855509f, -0.855516f, -0.855522f, -0.855529f, -0.855536f, -0.855543f, -0.85555f, -0.855557f, -0.855563f,
--0.85557f, -0.855577f, -0.855584f, -0.85559f, -0.855597f, -0.855604f, -0.855611f, -0.855617f, -0.855624f, -0.855631f, -0.855637f, -0.855644f, -0.855651f, -0.855657f, -0.855664f, -0.85567f, -0.855677f, -0.855684f, -0.85569f, -0.855697f,
--0.855703f, -0.85571f, -0.855716f, -0.855723f, -0.855729f, -0.855736f, -0.855742f, -0.855749f, -0.855755f, -0.855762f, -0.855768f, -0.855775f, -0.855781f, -0.855787f, -0.855794f, -0.8558f, -0.855807f, -0.855813f, -0.855819f, -0.855826f,
--0.855832f, -0.855838f, -0.855845f, -0.855851f, -0.855857f, -0.855863f, -0.85587f, -0.855876f, -0.855882f, -0.855888f, -0.855894f, -0.855901f, -0.855907f, -0.855913f, -0.855919f, -0.855925f, -0.855931f, -0.855938f, -0.855944f, -0.85595f,
--0.855956f, -0.855962f, -0.855968f, -0.855974f, -0.85598f, -0.855986f, -0.855992f, -0.855998f, -0.856004f, -0.85601f, -0.856016f, -0.856022f, -0.856028f, -0.856034f, -0.85604f, -0.856046f, -0.856052f, -0.856058f, -0.856063f, -0.856069f,
--0.856075f, -0.856081f, -0.856087f, -0.856093f, -0.856099f, -0.856104f, -0.85611f, -0.856116f, -0.856122f, -0.856127f, -0.856133f, -0.856139f, -0.856145f, -0.85615f, -0.856156f, -0.856162f, -0.856167f, -0.856173f, -0.856179f, -0.856184f,
--0.85619f, -0.856196f, -0.856201f, -0.856207f, -0.856212f, -0.856218f, -0.856223f, -0.856229f, -0.856235f, -0.85624f, -0.856246f, -0.856251f, -0.856257f, -0.856262f, -0.856267f, -0.856273f, -0.856278f, -0.856284f, -0.856289f, -0.856295f,
--0.8563f, -0.856305f, -0.856311f, -0.856316f, -0.856322f, -0.856327f, -0.856332f, -0.856337f, -0.856343f, -0.856348f, -0.856353f, -0.856359f, -0.856364f, -0.856369f, -0.856374f, -0.85638f, -0.856385f, -0.85639f, -0.856395f, -0.8564f,
--0.856406f, -0.856411f, -0.856416f, -0.856421f, -0.856426f, -0.856431f, -0.856436f, -0.856441f, -0.856446f, -0.856452f, -0.856457f, -0.856462f, -0.856467f, -0.856472f, -0.856477f, -0.856482f, -0.856487f, -0.856492f, -0.856497f, -0.856501f,
--0.856506f, -0.856511f, -0.856516f, -0.856521f, -0.856526f, -0.856531f, -0.856536f, -0.856541f, -0.856545f, -0.85655f, -0.856555f, -0.85656f, -0.856565f, -0.85657f, -0.856574f, -0.856579f, -0.856584f, -0.856589f, -0.856593f, -0.856598f,
--0.856603f, -0.856607f, -0.856612f, -0.856617f, -0.856621f, -0.856626f, -0.856631f, -0.856635f, -0.85664f, -0.856645f, -0.856649f, -0.856654f, -0.856658f, -0.856663f, -0.856667f, -0.856672f, -0.856676f, -0.856681f, -0.856685f, -0.85669f,
--0.856694f, -0.856699f, -0.856703f, -0.856708f, -0.856712f, -0.856717f, -0.856721f, -0.856725f, -0.85673f, -0.856734f, -0.856738f, -0.856743f, -0.856747f, -0.856751f, -0.856756f, -0.85676f, -0.856764f, -0.856769f, -0.856773f, -0.856777f,
--0.856781f, -0.856786f, -0.85679f, -0.856794f, -0.856798f, -0.856802f, -0.856807f, -0.856811f, -0.856815f, -0.856819f, -0.856823f, -0.856827f, -0.856831f, -0.856835f, -0.85684f, -0.856844f, -0.856848f, -0.856852f, -0.856856f, -0.85686f,
--0.856864f, -0.856868f, -0.856872f, -0.856876f, -0.85688f, -0.856884f, -0.856888f, -0.856892f, -0.856895f, -0.856899f, -0.856903f, -0.856907f, -0.856911f, -0.856915f, -0.856919f, -0.856923f, -0.856926f, -0.85693f, -0.856934f, -0.856938f,
--0.856942f, -0.856945f, -0.856949f, -0.856953f, -0.856957f, -0.85696f, -0.856964f, -0.856968f, -0.856971f, -0.856975f, -0.856979f, -0.856982f, -0.856986f, -0.85699f, -0.856993f, -0.856997f, -0.857f, -0.857004f, -0.857008f, -0.857011f,
--0.857015f, -0.857018f, -0.857022f, -0.857025f, -0.857029f, -0.857032f, -0.857036f, -0.857039f, -0.857043f, -0.857046f, -0.85705f, -0.857053f, -0.857056f, -0.85706f, -0.857063f, -0.857067f, -0.85707f, -0.857073f, -0.857077f, -0.85708f,
--0.857083f, -0.857087f, -0.85709f, -0.857093f, -0.857096f, -0.8571f, -0.857103f, -0.857106f, -0.857109f, -0.857113f, -0.857116f, -0.857119f, -0.857122f, -0.857125f, -0.857128f, -0.857132f, -0.857135f, -0.857138f, -0.857141f, -0.857144f,
--0.857147f, -0.85715f, -0.857153f, -0.857156f, -0.857159f, -0.857162f, -0.857165f, -0.857168f, -0.857171f, -0.857174f, -0.857177f, -0.85718f, -0.857183f, -0.857186f, -0.857189f, -0.857192f, -0.857195f, -0.857198f, -0.857201f, -0.857204f,
--0.857206f, -0.857209f, -0.857212f, -0.857215f, -0.857218f, -0.857221f, -0.857223f, -0.857226f, -0.857229f, -0.857232f, -0.857234f, -0.857237f, -0.85724f, -0.857243f, -0.857245f, -0.857248f, -0.857251f, -0.857253f, -0.857256f, -0.857259f,
--0.857261f, -0.857264f, -0.857266f, -0.857269f, -0.857272f, -0.857274f, -0.857277f, -0.857279f, -0.857282f, -0.857284f, -0.857287f, -0.857289f, -0.857292f, -0.857294f, -0.857297f, -0.857299f, -0.857302f, -0.857304f, -0.857306f, -0.857309f,
--0.857311f, -0.857314f, -0.857316f, -0.857318f, -0.857321f, -0.857323f, -0.857325f, -0.857328f, -0.85733f, -0.857332f, -0.857334f, -0.857337f, -0.857339f, -0.857341f, -0.857343f, -0.857346f, -0.857348f, -0.85735f, -0.857352f, -0.857354f,
--0.857357f, -0.857359f, -0.857361f, -0.857363f, -0.857365f, -0.857367f, -0.857369f, -0.857371f, -0.857373f, -0.857376f, -0.857378f, -0.85738f, -0.857382f, -0.857384f, -0.857386f, -0.857388f, -0.85739f, -0.857392f, -0.857394f, -0.857395f,
--0.857397f, -0.857399f, -0.857401f, -0.857403f, -0.857405f, -0.857407f, -0.857409f, -0.857411f, -0.857412f, -0.857414f, -0.857416f, -0.857418f, -0.85742f, -0.857421f, -0.857423f, -0.857425f, -0.857427f, -0.857428f, -0.85743f, -0.857432f,
--0.857434f, -0.857435f, -0.857437f, -0.857439f, -0.85744f, -0.857442f, -0.857443f, -0.857445f, -0.857447f, -0.857448f, -0.85745f, -0.857451f, -0.857453f, -0.857455f, -0.857456f, -0.857458f, -0.857459f, -0.857461f, -0.857462f, -0.857464f,
--0.857465f, -0.857467f, -0.857468f, -0.857469f, -0.857471f, -0.857472f, -0.857474f, -0.857475f, -0.857476f, -0.857478f, -0.857479f, -0.85748f, -0.857482f, -0.857483f, -0.857484f, -0.857486f, -0.857487f, -0.857488f, -0.85749f, -0.857491f,
--0.857492f, -0.857493f, -0.857494f, -0.857496f, -0.857497f, -0.857498f, -0.857499f, -0.8575f, -0.857501f, -0.857503f, -0.857504f, -0.857505f, -0.857506f, -0.857507f, -0.857508f, -0.857509f, -0.85751f, -0.857511f, -0.857512f, -0.857513f,
--0.857514f, -0.857515f, -0.857516f, -0.857517f, -0.857518f, -0.857519f, -0.85752f, -0.857521f, -0.857522f, -0.857523f, -0.857524f, -0.857525f, -0.857525f, -0.857526f, -0.857527f, -0.857528f, -0.857529f, -0.85753f, -0.85753f, -0.857531f,
--0.857532f, -0.857533f, -0.857533f, -0.857534f, -0.857535f, -0.857536f, -0.857536f, -0.857537f, -0.857538f, -0.857538f, -0.857539f, -0.85754f, -0.85754f, -0.857541f, -0.857541f, -0.857542f, -0.857543f, -0.857543f, -0.857544f, -0.857544f,
--0.857545f, -0.857545f, -0.857546f, -0.857546f, -0.857547f, -0.857547f, -0.857548f, -0.857548f, -0.857549f, -0.857549f, -0.85755f, -0.85755f, -0.857551f, -0.857551f, -0.857551f, -0.857552f, -0.857552f, -0.857552f, -0.857553f, -0.857553f,
--0.857553f, -0.857554f, -0.857554f, -0.857554f, -0.857554f, -0.857555f, -0.857555f, -0.857555f, -0.857555f, -0.857556f, -0.857556f, -0.857556f, -0.857556f, -0.857556f, -0.857556f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f,
--0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857557f, -0.857556f, -0.857556f,
--0.857556f, -0.857556f, -0.857556f, -0.857556f, -0.857555f, -0.857555f, -0.857555f, -0.857555f, -0.857555f, -0.857554f, -0.857554f, -0.857554f, -0.857553f, -0.857553f, -0.857553f, -0.857552f, -0.857552f, -0.857552f, -0.857551f, -0.857551f,
--0.857551f, -0.85755f, -0.85755f, -0.857549f, -0.857549f, -0.857549f, -0.857548f, -0.857548f, -0.857547f, -0.857547f, -0.857546f, -0.857546f, -0.857545f, -0.857545f, -0.857544f, -0.857543f, -0.857543f, -0.857542f, -0.857542f, -0.857541f,
--0.857541f, -0.85754f, -0.857539f, -0.857539f, -0.857538f, -0.857537f, -0.857537f, -0.857536f, -0.857535f, -0.857534f, -0.857534f, -0.857533f, -0.857532f, -0.857531f, -0.857531f, -0.85753f, -0.857529f, -0.857528f, -0.857527f, -0.857527f,
--0.857526f, -0.857525f, -0.857524f, -0.857523f, -0.857522f, -0.857521f, -0.85752f, -0.857519f, -0.857519f, -0.857518f, -0.857517f, -0.857516f, -0.857515f, -0.857514f, -0.857513f, -0.857512f, -0.857511f, -0.85751f, -0.857508f, -0.857507f,
--0.857506f, -0.857505f, -0.857504f, -0.857503f, -0.857502f, -0.857501f, -0.8575f, -0.857498f, -0.857497f, -0.857496f, -0.857495f, -0.857494f, -0.857492f, -0.857491f, -0.85749f, -0.857489f, -0.857487f, -0.857486f, -0.857485f, -0.857484f,
--0.857482f, -0.857481f, -0.85748f, -0.857478f, -0.857477f, -0.857476f, -0.857474f, -0.857473f, -0.857471f, -0.85747f, -0.857469f, -0.857467f, -0.857466f, -0.857464f, -0.857463f, -0.857461f, -0.85746f, -0.857458f, -0.857457f, -0.857455f,
--0.857454f, -0.857452f, -0.85745f, -0.857449f, -0.857447f, -0.857446f, -0.857444f, -0.857442f, -0.857441f, -0.857439f, -0.857438f, -0.857436f, -0.857434f, -0.857432f, -0.857431f, -0.857429f, -0.857427f, -0.857426f, -0.857424f, -0.857422f,
--0.85742f, -0.857419f, -0.857417f, -0.857415f, -0.857413f, -0.857411f, -0.857409f, -0.857408f, -0.857406f, -0.857404f, -0.857402f, -0.8574f, -0.857398f, -0.857396f, -0.857394f, -0.857392f, -0.85739f, -0.857388f, -0.857386f, -0.857384f,
--0.857382f, -0.85738f, -0.857378f, -0.857376f, -0.857374f, -0.857372f, -0.85737f, -0.857368f, -0.857366f, -0.857364f, -0.857362f, -0.85736f, -0.857357f, -0.857355f, -0.857353f, -0.857351f, -0.857349f, -0.857346f, -0.857344f, -0.857342f,
--0.85734f, -0.857338f, -0.857335f, -0.857333f, -0.857331f, -0.857328f, -0.857326f, -0.857324f, -0.857321f, -0.857319f, -0.857317f, -0.857314f, -0.857312f, -0.85731f, -0.857307f, -0.857305f, -0.857302f, -0.8573f, -0.857297f, -0.857295f,
--0.857293f, -0.85729f, -0.857288f, -0.857285f, -0.857283f, -0.85728f, -0.857278f, -0.857275f, -0.857272f, -0.85727f, -0.857267f, -0.857265f, -0.857262f, -0.857259f, -0.857257f, -0.857254f, -0.857251f, -0.857249f, -0.857246f, -0.857243f,
--0.857241f, -0.857238f, -0.857235f, -0.857233f, -0.85723f, -0.857227f, -0.857224f, -0.857221f, -0.857219f, -0.857216f, -0.857213f, -0.85721f, -0.857207f, -0.857205f, -0.857202f, -0.857199f, -0.857196f, -0.857193f, -0.85719f, -0.857187f,
--0.857184f, -0.857181f, -0.857178f, -0.857175f, -0.857172f, -0.857169f, -0.857166f, -0.857163f, -0.85716f, -0.857157f, -0.857154f, -0.857151f, -0.857148f, -0.857145f, -0.857142f, -0.857139f, -0.857136f, -0.857133f, -0.857129f, -0.857126f,
--0.857123f, -0.85712f, -0.857117f, -0.857114f, -0.85711f, -0.857107f, -0.857104f, -0.857101f, -0.857097f, -0.857094f, -0.857091f, -0.857088f, -0.857084f, -0.857081f, -0.857078f, -0.857074f, -0.857071f, -0.857068f, -0.857064f, -0.857061f,
--0.857057f, -0.857054f, -0.857051f, -0.857047f, -0.857044f, -0.85704f, -0.857037f, -0.857033f, -0.85703f, -0.857026f, -0.857023f, -0.857019f, -0.857016f, -0.857012f, -0.857009f, -0.857005f, -0.857001f, -0.856998f, -0.856994f, -0.856991f,
--0.856987f, -0.856983f, -0.85698f, -0.856976f, -0.856972f, -0.856969f, -0.856965f, -0.856961f, -0.856958f, -0.856954f, -0.85695f, -0.856946f, -0.856943f, -0.856939f, -0.856935f, -0.856931f, -0.856927f, -0.856924f, -0.85692f, -0.856916f,
--0.856912f, -0.856908f, -0.856904f, -0.8569f, -0.856896f, -0.856893f, -0.856889f, -0.856885f, -0.856881f, -0.856877f, -0.856873f, -0.856869f, -0.856865f, -0.856861f, -0.856857f, -0.856853f, -0.856849f, -0.856845f, -0.856841f, -0.856836f,
--0.856832f, -0.856828f, -0.856824f, -0.85682f, -0.856816f, -0.856812f, -0.856808f, -0.856803f, -0.856799f, -0.856795f, -0.856791f, -0.856787f, -0.856782f, -0.856778f, -0.856774f, -0.85677f, -0.856765f, -0.856761f, -0.856757f, -0.856752f,
--0.856748f, -0.856744f, -0.856739f, -0.856735f, -0.856731f, -0.856726f, -0.856722f, -0.856717f, -0.856713f, -0.856709f, -0.856704f, -0.8567f, -0.856695f, -0.856691f, -0.856686f, -0.856682f, -0.856677f, -0.856673f, -0.856668f, -0.856664f,
--0.856659f, -0.856655f, -0.85665f, -0.856645f, -0.856641f, -0.856636f, -0.856632f, -0.856627f, -0.856622f, -0.856618f, -0.856613f, -0.856608f, -0.856604f, -0.856599f, -0.856594f, -0.856589f, -0.856585f, -0.85658f, -0.856575f, -0.85657f,
--0.856566f, -0.856561f, -0.856556f, -0.856551f, -0.856546f, -0.856541f, -0.856537f, -0.856532f, -0.856527f, -0.856522f, -0.856517f, -0.856512f, -0.856507f, -0.856502f, -0.856497f, -0.856492f, -0.856487f, -0.856482f, -0.856477f, -0.856472f,
--0.856467f, -0.856462f, -0.856457f, -0.856452f, -0.856447f, -0.856442f, -0.856437f, -0.856432f, -0.856427f, -0.856422f, -0.856417f, -0.856411f, -0.856406f, -0.856401f, -0.856396f, -0.856391f, -0.856386f, -0.85638f, -0.856375f, -0.85637f,
--0.856365f, -0.856359f, -0.856354f, -0.856349f, -0.856343f, -0.856338f, -0.856333f, -0.856327f, -0.856322f, -0.856317f, -0.856311f, -0.856306f, -0.856301f, -0.856295f, -0.85629f, -0.856284f, -0.856279f, -0.856274f, -0.856268f, -0.856263f,
--0.856257f, -0.856252f, -0.856246f, -0.856241f, -0.856235f, -0.85623f, -0.856224f, -0.856218f, -0.856213f, -0.856207f, -0.856202f, -0.856196f, -0.85619f, -0.856185f, -0.856179f, -0.856173f, -0.856168f, -0.856162f, -0.856156f, -0.856151f,
--0.856145f, -0.856139f, -0.856134f, -0.856128f, -0.856122f, -0.856116f, -0.856111f, -0.856105f, -0.856099f, -0.856093f, -0.856087f, -0.856081f, -0.856076f, -0.85607f, -0.856064f, -0.856058f, -0.856052f, -0.856046f, -0.85604f, -0.856034f,
--0.856028f, -0.856022f, -0.856016f, -0.85601f, -0.856004f, -0.855998f, -0.855992f, -0.855986f, -0.85598f, -0.855974f, -0.855968f, -0.855962f, -0.855956f, -0.85595f, -0.855944f, -0.855938f, -0.855932f, -0.855925f, -0.855919f, -0.855913f,
--0.855907f, -0.855901f, -0.855895f, -0.855888f, -0.855882f, -0.855876f, -0.85587f, -0.855863f, -0.855857f, -0.855851f, -0.855845f, -0.855838f, -0.855832f, -0.855826f, -0.855819f, -0.855813f, -0.855807f, -0.8558f, -0.855794f, -0.855787f,
--0.855781f, -0.855775f, -0.855768f, -0.855762f, -0.855755f, -0.855749f, -0.855742f, -0.855736f, -0.855729f, -0.855723f, -0.855716f, -0.85571f, -0.855703f, -0.855697f, -0.85569f, -0.855683f, -0.855677f, -0.85567f, -0.855664f, -0.855657f,
--0.85565f, -0.855644f, -0.855637f, -0.85563f, -0.855624f, -0.855617f, -0.85561f, -0.855604f, -0.855597f, -0.85559f, -0.855583f, -0.855577f, -0.85557f, -0.855563f, -0.855556f, -0.855549f, -0.855543f, -0.855536f, -0.855529f, -0.855522f,
--0.855515f, -0.855508f, -0.855501f, -0.855494f, -0.855488f, -0.855481f, -0.855474f, -0.855467f, -0.85546f, -0.855453f, -0.855446f, -0.855439f, -0.855432f, -0.855425f, -0.855418f, -0.855411f, -0.855404f, -0.855397f, -0.855389f, -0.855382f,
--0.855375f, -0.855368f, -0.855361f, -0.855354f, -0.855347f, -0.85534f, -0.855332f, -0.855325f, -0.855318f, -0.855311f, -0.855304f, -0.855296f, -0.855289f, -0.855282f, -0.855275f, -0.855267f, -0.85526f, -0.855253f, -0.855245f, -0.855238f,
--0.855231f, -0.855223f, -0.855216f, -0.855209f, -0.855201f, -0.855194f, -0.855187f, -0.855179f, -0.855172f, -0.855164f, -0.855157f, -0.855149f, -0.855142f, -0.855134f, -0.855127f, -0.855119f, -0.855112f, -0.855104f, -0.855097f, -0.855089f,
--0.855082f, -0.855074f, -0.855066f, -0.855059f, -0.855051f, -0.855044f, -0.855036f, -0.855028f, -0.855021f, -0.855013f, -0.855005f, -0.854998f, -0.85499f, -0.854982f, -0.854974f, -0.854967f, -0.854959f, -0.854951f, -0.854943f, -0.854936f,
--0.854928f, -0.85492f, -0.854912f, -0.854904f, -0.854897f, -0.854889f, -0.854881f, -0.854873f, -0.854865f, -0.854857f, -0.854849f, -0.854841f, -0.854833f, -0.854825f, -0.854817f, -0.85481f, -0.854802f, -0.854794f, -0.854786f, -0.854778f,
--0.854769f, -0.854761f, -0.854753f, -0.854745f, -0.854737f, -0.854729f, -0.854721f, -0.854713f, -0.854705f, -0.854697f, -0.854689f, -0.85468f, -0.854672f, -0.854664f, -0.854656f, -0.854648f, -0.854639f, -0.854631f, -0.854623f, -0.854615f,
--0.854606f, -0.854598f, -0.85459f, -0.854582f, -0.854573f, -0.854565f, -0.854557f, -0.854548f, -0.85454f, -0.854532f, -0.854523f, -0.854515f, -0.854506f, -0.854498f, -0.85449f, -0.854481f, -0.854473f, -0.854464f, -0.854456f, -0.854447f,
--0.854439f, -0.85443f, -0.854422f, -0.854413f, -0.854405f, -0.854396f, -0.854388f, -0.854379f, -0.85437f, -0.854362f, -0.854353f, -0.854345f, -0.854336f, -0.854327f, -0.854319f, -0.85431f, -0.854301f, -0.854293f, -0.854284f, -0.854275f,
--0.854267f, -0.854258f, -0.854249f, -0.85424f, -0.854232f, -0.854223f, -0.854214f, -0.854205f, -0.854196f, -0.854188f, -0.854179f, -0.85417f, -0.854161f, -0.854152f, -0.854143f, -0.854134f, -0.854125f, -0.854116f, -0.854108f, -0.854099f,
--0.85409f, -0.854081f, -0.854072f, -0.854063f, -0.854054f, -0.854045f, -0.854036f, -0.854027f, -0.854018f, -0.854009f, -0.853999f, -0.85399f, -0.853981f, -0.853972f, -0.853963f, -0.853954f, -0.853945f, -0.853936f, -0.853926f, -0.853917f,
--0.853908f, -0.853899f, -0.85389f, -0.85388f, -0.853871f, -0.853862f, -0.853853f, -0.853843f, -0.853834f, -0.853825f, -0.853816f, -0.853806f, -0.853797f, -0.853788f, -0.853778f, -0.853769f, -0.85376f, -0.85375f, -0.853741f, -0.853731f,
--0.853722f, -0.853713f, -0.853703f, -0.853694f, -0.853684f, -0.853675f, -0.853665f, -0.853656f, -0.853646f, -0.853637f, -0.853627f, -0.853618f, -0.853608f, -0.853598f, -0.853589f, -0.853579f, -0.85357f, -0.85356f, -0.85355f, -0.853541f,
--0.853531f, -0.853522f, -0.853512f, -0.853502f, -0.853492f, -0.853483f, -0.853473f, -0.853463f, -0.853454f, -0.853444f, -0.853434f, -0.853424f, -0.853414f, -0.853405f, -0.853395f, -0.853385f, -0.853375f, -0.853365f, -0.853356f, -0.853346f,
--0.853336f, -0.853326f, -0.853316f, -0.853306f, -0.853296f, -0.853286f, -0.853276f, -0.853266f, -0.853256f, -0.853246f, -0.853236f, -0.853226f, -0.853216f, -0.853206f, -0.853196f, -0.853186f, -0.853176f, -0.853166f, -0.853156f, -0.853146f,
--0.853136f, -0.853126f, -0.853116f, -0.853105f, -0.853095f, -0.853085f, -0.853075f, -0.853065f, -0.853054f, -0.853044f, -0.853034f, -0.853024f, -0.853014f, -0.853003f, -0.852993f, -0.852983f, -0.852972f, -0.852962f, -0.852952f, -0.852941f,
--0.852931f, -0.852921f, -0.85291f, -0.8529f, -0.85289f, -0.852879f, -0.852869f, -0.852858f, -0.852848f, -0.852838f, -0.852827f, -0.852817f, -0.852806f, -0.852796f, -0.852785f, -0.852775f, -0.852764f, -0.852754f, -0.852743f, -0.852732f,
--0.852722f, -0.852711f, -0.852701f, -0.85269f, -0.852679f, -0.852669f, -0.852658f, -0.852648f, -0.852637f, -0.852626f, -0.852615f, -0.852605f, -0.852594f, -0.852583f, -0.852573f, -0.852562f, -0.852551f, -0.85254f, -0.85253f, -0.852519f,
--0.852508f, -0.852497f, -0.852486f, -0.852475f, -0.852465f, -0.852454f, -0.852443f, -0.852432f, -0.852421f, -0.85241f, -0.852399f, -0.852388f, -0.852377f, -0.852366f, -0.852356f, -0.852345f, -0.852334f, -0.852323f, -0.852312f, -0.852301f,
--0.852289f, -0.852278f, -0.852267f, -0.852256f, -0.852245f, -0.852234f, -0.852223f, -0.852212f, -0.852201f, -0.85219f, -0.852178f, -0.852167f, -0.852156f, -0.852145f, -0.852134f, -0.852123f, -0.852111f, -0.8521f, -0.852089f, -0.852078f,
--0.852066f, -0.852055f, -0.852044f, -0.852032f, -0.852021f, -0.85201f, -0.851999f, -0.851987f, -0.851976f, -0.851964f, -0.851953f, -0.851942f, -0.85193f, -0.851919f, -0.851907f, -0.851896f, -0.851885f, -0.851873f, -0.851862f, -0.85185f,
--0.851839f, -0.851827f, -0.851816f, -0.851804f, -0.851793f, -0.851781f, -0.851769f, -0.851758f, -0.851746f, -0.851735f, -0.851723f, -0.851711f, -0.8517f, -0.851688f, -0.851676f, -0.851665f, -0.851653f, -0.851641f, -0.85163f, -0.851618f,
--0.851606f, -0.851595f, -0.851583f, -0.851571f, -0.851559f, -0.851547f, -0.851536f, -0.851524f, -0.851512f, -0.8515f, -0.851488f, -0.851476f, -0.851465f, -0.851453f, -0.851441f, -0.851429f, -0.851417f, -0.851405f, -0.851393f, -0.851381f,
--0.851369f, -0.851357f, -0.851345f, -0.851333f, -0.851321f, -0.851309f, -0.851297f, -0.851285f, -0.851273f, -0.851261f, -0.851249f, -0.851237f, -0.851225f, -0.851213f, -0.851201f, -0.851189f, -0.851176f, -0.851164f, -0.851152f, -0.85114f,
--0.851128f, -0.851115f, -0.851103f, -0.851091f, -0.851079f, -0.851067f, -0.851054f, -0.851042f, -0.85103f, -0.851017f, -0.851005f, -0.850993f, -0.850981f, -0.850968f, -0.850956f, -0.850943f, -0.850931f, -0.850919f, -0.850906f, -0.850894f,
--0.850881f, -0.850869f, -0.850857f, -0.850844f, -0.850832f, -0.850819f, -0.850807f, -0.850794f, -0.850782f, -0.850769f, -0.850757f, -0.850744f, -0.850732f, -0.850719f, -0.850706f, -0.850694f, -0.850681f, -0.850669f, -0.850656f, -0.850643f,
--0.850631f, -0.850618f, -0.850605f, -0.850593f, -0.85058f, -0.850567f, -0.850555f, -0.850542f, -0.850529f, -0.850516f, -0.850504f, -0.850491f, -0.850478f, -0.850465f, -0.850452f, -0.85044f, -0.850427f, -0.850414f, -0.850401f, -0.850388f,
--0.850375f, -0.850362f, -0.850349f, -0.850337f, -0.850324f, -0.850311f, -0.850298f, -0.850285f, -0.850272f, -0.850259f, -0.850246f, -0.850233f, -0.85022f, -0.850207f, -0.850194f, -0.850181f, -0.850168f, -0.850155f, -0.850141f, -0.850128f,
--0.850115f, -0.850102f, -0.850089f, -0.850076f, -0.850063f, -0.850049f, -0.850036f, -0.850023f, -0.85001f, -0.849997f, -0.849983f, -0.84997f, -0.849957f, -0.849944f, -0.84993f, -0.849917f, -0.849904f, -0.849891f, -0.849877f, -0.849864f,
--0.849851f, -0.849837f, -0.849824f, -0.84981f, -0.849797f, -0.849784f, -0.84977f, -0.849757f, -0.849743f, -0.84973f, -0.849717f, -0.849703f, -0.84969f, -0.849676f, -0.849663f, -0.849649f, -0.849636f, -0.849622f, -0.849608f, -0.849595f,
--0.849581f, -0.849568f, -0.849554f, -0.849541f, -0.849527f, -0.849513f, -0.8495f, -0.849486f, -0.849472f, -0.849459f, -0.849445f, -0.849431f, -0.849418f, -0.849404f, -0.84939f, -0.849376f, -0.849363f, -0.849349f, -0.849335f, -0.849321f,
--0.849307f, -0.849294f, -0.84928f, -0.849266f, -0.849252f, -0.849238f, -0.849224f, -0.849211f, -0.849197f, -0.849183f, -0.849169f, -0.849155f, -0.849141f, -0.849127f, -0.849113f, -0.849099f, -0.849085f, -0.849071f, -0.849057f, -0.849043f,
--0.849029f, -0.849015f, -0.849001f, -0.848987f, -0.848973f, -0.848959f, -0.848945f, -0.84893f, -0.848916f, -0.848902f, -0.848888f, -0.848874f, -0.84886f, -0.848846f, -0.848831f, -0.848817f, -0.848803f, -0.848789f, -0.848774f, -0.84876f,
--0.848746f, -0.848732f, -0.848717f, -0.848703f, -0.848689f, -0.848674f, -0.84866f, -0.848646f, -0.848631f, -0.848617f, -0.848603f, -0.848588f, -0.848574f, -0.848559f, -0.848545f, -0.848531f, -0.848516f, -0.848502f, -0.848487f, -0.848473f,
--0.848458f, -0.848444f, -0.848429f, -0.848415f, -0.8484f, -0.848386f, -0.848371f, -0.848357f, -0.848342f, -0.848327f, -0.848313f, -0.848298f, -0.848283f, -0.848269f, -0.848254f, -0.84824f, -0.848225f, -0.84821f, -0.848195f, -0.848181f,
--0.848166f, -0.848151f, -0.848137f, -0.848122f, -0.848107f, -0.848092f, -0.848077f, -0.848063f, -0.848048f, -0.848033f, -0.848018f, -0.848003f, -0.847988f, -0.847974f, -0.847959f, -0.847944f, -0.847929f, -0.847914f, -0.847899f, -0.847884f,
--0.847869f, -0.847854f, -0.847839f, -0.847824f, -0.847809f, -0.847794f, -0.847779f, -0.847764f, -0.847749f, -0.847734f, -0.847719f, -0.847704f, -0.847689f, -0.847674f, -0.847659f, -0.847643f, -0.847628f, -0.847613f, -0.847598f, -0.847583f,
--0.847568f, -0.847552f, -0.847537f, -0.847522f, -0.847507f, -0.847492f, -0.847476f, -0.847461f, -0.847446f, -0.847431f, -0.847415f, -0.8474f, -0.847385f, -0.847369f, -0.847354f, -0.847339f, -0.847323f, -0.847308f, -0.847292f, -0.847277f,
--0.847262f, -0.847246f, -0.847231f, -0.847215f, -0.8472f, -0.847184f, -0.847169f, -0.847153f, -0.847138f, -0.847122f, -0.847107f, -0.847091f, -0.847076f, -0.84706f, -0.847045f, -0.847029f, -0.847013f, -0.846998f, -0.846982f, -0.846967f,
--0.846951f, -0.846935f, -0.84692f, -0.846904f, -0.846888f, -0.846873f, -0.846857f, -0.846841f, -0.846825f, -0.84681f, -0.846794f, -0.846778f, -0.846762f, -0.846747f, -0.846731f, -0.846715f, -0.846699f, -0.846683f, -0.846667f, -0.846652f,
--0.846636f, -0.84662f, -0.846604f, -0.846588f, -0.846572f, -0.846556f, -0.84654f, -0.846524f, -0.846508f, -0.846492f, -0.846476f, -0.84646f, -0.846444f, -0.846428f, -0.846412f, -0.846396f, -0.84638f, -0.846364f, -0.846348f, -0.846332f,
--0.846316f, -0.8463f, -0.846284f, -0.846267f, -0.846251f, -0.846235f, -0.846219f, -0.846203f, -0.846187f, -0.84617f, -0.846154f, -0.846138f, -0.846122f, -0.846105f, -0.846089f, -0.846073f, -0.846057f, -0.84604f, -0.846024f, -0.846008f,
--0.845991f, -0.845975f, -0.845959f, -0.845942f, -0.845926f, -0.84591f, -0.845893f, -0.845877f, -0.84586f, -0.845844f, -0.845827f, -0.845811f, -0.845795f, -0.845778f, -0.845762f, -0.845745f, -0.845729f, -0.845712f, -0.845695f, -0.845679f,
--0.845662f, -0.845646f, -0.845629f, -0.845613f, -0.845596f, -0.845579f, -0.845563f, -0.845546f, -0.845529f, -0.845513f, -0.845496f, -0.845479f, -0.845463f, -0.845446f, -0.845429f, -0.845413f, -0.845396f, -0.845379f, -0.845362f, -0.845346f,
--0.845329f, -0.845312f, -0.845295f, -0.845278f, -0.845261f, -0.845245f, -0.845228f, -0.845211f, -0.845194f, -0.845177f, -0.84516f, -0.845143f, -0.845126f, -0.845109f, -0.845092f, -0.845075f, -0.845059f, -0.845042f, -0.845025f, -0.845008f,
--0.844991f, -0.844973f, -0.844956f, -0.844939f, -0.844922f, -0.844905f, -0.844888f, -0.844871f, -0.844854f, -0.844837f, -0.84482f, -0.844803f, -0.844785f, -0.844768f, -0.844751f, -0.844734f, -0.844717f, -0.844699f, -0.844682f, -0.844665f,
--0.844648f, -0.84463f, -0.844613f, -0.844596f, -0.844579f, -0.844561f, -0.844544f, -0.844527f, -0.844509f, -0.844492f, -0.844475f, -0.844457f, -0.84444f, -0.844422f, -0.844405f, -0.844388f, -0.84437f, -0.844353f, -0.844335f, -0.844318f,
--0.8443f, -0.844283f, -0.844265f, -0.844248f, -0.84423f, -0.844213f, -0.844195f, -0.844178f, -0.84416f, -0.844143f, -0.844125f, -0.844107f, -0.84409f, -0.844072f, -0.844054f, -0.844037f, -0.844019f, -0.844001f, -0.843984f, -0.843966f,
--0.843948f, -0.843931f, -0.843913f, -0.843895f, -0.843877f, -0.84386f, -0.843842f, -0.843824f, -0.843806f, -0.843789f, -0.843771f, -0.843753f, -0.843735f, -0.843717f, -0.843699f, -0.843681f, -0.843664f, -0.843646f, -0.843628f, -0.84361f,
--0.843592f, -0.843574f, -0.843556f, -0.843538f, -0.84352f, -0.843502f, -0.843484f, -0.843466f, -0.843448f, -0.84343f, -0.843412f, -0.843394f, -0.843376f, -0.843358f, -0.84334f, -0.843321f, -0.843303f, -0.843285f, -0.843267f, -0.843249f,
--0.843231f, -0.843213f, -0.843194f, -0.843176f, -0.843158f, -0.84314f, -0.843121f, -0.843103f, -0.843085f, -0.843067f, -0.843048f, -0.84303f, -0.843012f, -0.842994f, -0.842975f, -0.842957f, -0.842939f, -0.84292f, -0.842902f, -0.842883f,
--0.842865f, -0.842847f, -0.842828f, -0.84281f, -0.842791f, -0.842773f, -0.842754f, -0.842736f, -0.842717f, -0.842699f, -0.84268f, -0.842662f, -0.842643f, -0.842625f, -0.842606f, -0.842588f, -0.842569f, -0.842551f, -0.842532f, -0.842513f,
--0.842495f, -0.842476f, -0.842457f, -0.842439f, -0.84242f, -0.842401f, -0.842383f, -0.842364f, -0.842345f, -0.842327f, -0.842308f, -0.842289f, -0.84227f, -0.842252f, -0.842233f, -0.842214f, -0.842195f, -0.842176f, -0.842158f, -0.842139f,
--0.84212f, -0.842101f, -0.842082f, -0.842063f, -0.842044f, -0.842025f, -0.842007f, -0.841988f, -0.841969f, -0.84195f, -0.841931f, -0.841912f, -0.841893f, -0.841874f, -0.841855f, -0.841836f, -0.841817f, -0.841798f, -0.841779f, -0.84176f,
--0.84174f, -0.841721f, -0.841702f, -0.841683f, -0.841664f, -0.841645f, -0.841626f, -0.841607f, -0.841587f, -0.841568f, -0.841549f, -0.84153f, -0.841511f, -0.841491f, -0.841472f, -0.841453f, -0.841434f, -0.841414f, -0.841395f, -0.841376f,
--0.841356f, -0.841337f, -0.841318f, -0.841299f, -0.841279f, -0.84126f, -0.84124f, -0.841221f, -0.841202f, -0.841182f, -0.841163f, -0.841143f, -0.841124f, -0.841104f, -0.841085f, -0.841066f, -0.841046f, -0.841027f, -0.841007f, -0.840987f,
--0.840968f, -0.840948f, -0.840929f, -0.840909f, -0.84089f, -0.84087f, -0.84085f, -0.840831f, -0.840811f, -0.840792f, -0.840772f, -0.840752f, -0.840733f, -0.840713f, -0.840693f, -0.840674f, -0.840654f, -0.840634f, -0.840614f, -0.840595f,
--0.840575f, -0.840555f, -0.840535f, -0.840515f, -0.840496f, -0.840476f, -0.840456f, -0.840436f, -0.840416f, -0.840396f, -0.840377f, -0.840357f, -0.840337f, -0.840317f, -0.840297f, -0.840277f, -0.840257f, -0.840237f, -0.840217f, -0.840197f,
--0.840177f, -0.840157f, -0.840137f, -0.840117f, -0.840097f, -0.840077f, -0.840057f, -0.840037f, -0.840017f, -0.839997f, -0.839977f, -0.839956f, -0.839936f, -0.839916f, -0.839896f, -0.839876f, -0.839856f, -0.839836f, -0.839815f, -0.839795f,
--0.839775f, -0.839755f, -0.839734f, -0.839714f, -0.839694f, -0.839674f, -0.839653f, -0.839633f, -0.839613f, -0.839592f, -0.839572f, -0.839552f, -0.839531f, -0.839511f, -0.839491f, -0.83947f, -0.83945f, -0.839429f, -0.839409f, -0.839389f,
--0.839368f, -0.839348f, -0.839327f, -0.839307f, -0.839286f, -0.839266f, -0.839245f, -0.839225f, -0.839204f, -0.839184f, -0.839163f, -0.839142f, -0.839122f, -0.839101f, -0.839081f, -0.83906f, -0.839039f, -0.839019f, -0.838998f, -0.838977f,
--0.838957f, -0.838936f, -0.838915f, -0.838895f, -0.838874f, -0.838853f, -0.838832f, -0.838812f, -0.838791f, -0.83877f, -0.838749f, -0.838729f, -0.838708f, -0.838687f, -0.838666f, -0.838645f, -0.838624f, -0.838603f, -0.838583f, -0.838562f,
--0.838541f, -0.83852f, -0.838499f, -0.838478f, -0.838457f, -0.838436f, -0.838415f, -0.838394f, -0.838373f, -0.838352f, -0.838331f, -0.83831f, -0.838289f, -0.838268f, -0.838247f, -0.838226f, -0.838205f, -0.838184f, -0.838163f, -0.838141f,
--0.83812f, -0.838099f, -0.838078f, -0.838057f, -0.838036f, -0.838014f, -0.837993f, -0.837972f, -0.837951f, -0.83793f, -0.837908f, -0.837887f, -0.837866f, -0.837845f, -0.837823f, -0.837802f, -0.837781f, -0.837759f, -0.837738f, -0.837717f,
--0.837695f, -0.837674f, -0.837653f, -0.837631f, -0.83761f, -0.837588f, -0.837567f, -0.837545f, -0.837524f, -0.837503f, -0.837481f, -0.83746f, -0.837438f, -0.837417f, -0.837395f, -0.837374f, -0.837352f, -0.83733f, -0.837309f, -0.837287f,
--0.837266f, -0.837244f, -0.837222f, -0.837201f, -0.837179f, -0.837158f, -0.837136f, -0.837114f, -0.837093f, -0.837071f, -0.837049f, -0.837027f, -0.837006f, -0.836984f, -0.836962f, -0.836941f, -0.836919f, -0.836897f, -0.836875f, -0.836853f,
--0.836832f, -0.83681f, -0.836788f, -0.836766f, -0.836744f, -0.836722f, -0.8367f, -0.836679f, -0.836657f, -0.836635f, -0.836613f, -0.836591f, -0.836569f, -0.836547f, -0.836525f, -0.836503f, -0.836481f, -0.836459f, -0.836437f, -0.836415f,
--0.836393f, -0.836371f, -0.836349f, -0.836327f, -0.836305f, -0.836282f, -0.83626f, -0.836238f, -0.836216f, -0.836194f, -0.836172f, -0.83615f, -0.836127f, -0.836105f, -0.836083f, -0.836061f, -0.836039f, -0.836016f, -0.835994f, -0.835972f,
--0.83595f, -0.835927f, -0.835905f, -0.835883f, -0.83586f, -0.835838f, -0.835816f, -0.835793f, -0.835771f, -0.835749f, -0.835726f, -0.835704f, -0.835682f, -0.835659f, -0.835637f, -0.835614f, -0.835592f, -0.835569f, -0.835547f, -0.835524f,
--0.835502f, -0.835479f, -0.835457f, -0.835434f, -0.835412f, -0.835389f, -0.835367f, -0.835344f, -0.835322f, -0.835299f, -0.835276f, -0.835254f, -0.835231f, -0.835208f, -0.835186f, -0.835163f, -0.83514f, -0.835118f, -0.835095f, -0.835072f,
--0.83505f, -0.835027f, -0.835004f, -0.834981f, -0.834959f, -0.834936f, -0.834913f, -0.83489f, -0.834867f, -0.834845f, -0.834822f, -0.834799f, -0.834776f, -0.834753f, -0.83473f, -0.834707f, -0.834684f, -0.834662f, -0.834639f, -0.834616f,
--0.834593f, -0.83457f, -0.834547f, -0.834524f, -0.834501f, -0.834478f, -0.834455f, -0.834432f, -0.834409f, -0.834386f, -0.834363f, -0.83434f, -0.834316f, -0.834293f, -0.83427f, -0.834247f, -0.834224f, -0.834201f, -0.834178f, -0.834155f,
--0.834131f, -0.834108f, -0.834085f, -0.834062f, -0.834039f, -0.834015f, -0.833992f, -0.833969f, -0.833946f, -0.833922f, -0.833899f, -0.833876f, -0.833852f, -0.833829f, -0.833806f, -0.833782f, -0.833759f, -0.833736f, -0.833712f, -0.833689f,
--0.833665f, -0.833642f, -0.833619f, -0.833595f, -0.833572f, -0.833548f, -0.833525f, -0.833501f, -0.833478f, -0.833454f, -0.833431f, -0.833407f, -0.833384f, -0.83336f, -0.833337f, -0.833313f, -0.833289f, -0.833266f, -0.833242f, -0.833219f,
--0.833195f, -0.833171f, -0.833148f, -0.833124f, -0.8331f, -0.833077f, -0.833053f, -0.833029f, -0.833006f, -0.832982f, -0.832958f, -0.832934f, -0.832911f, -0.832887f, -0.832863f, -0.832839f, -0.832815f, -0.832792f, -0.832768f, -0.832744f,
--0.83272f, -0.832696f, -0.832672f, -0.832648f, -0.832625f, -0.832601f, -0.832577f, -0.832553f, -0.832529f, -0.832505f, -0.832481f, -0.832457f, -0.832433f, -0.832409f, -0.832385f, -0.832361f, -0.832337f, -0.832313f, -0.832289f, -0.832265f,
--0.832241f, -0.832216f, -0.832192f, -0.832168f, -0.832144f, -0.83212f, -0.832096f, -0.832072f, -0.832048f, -0.832023f, -0.831999f, -0.831975f, -0.831951f, -0.831926f, -0.831902f, -0.831878f, -0.831854f, -0.831829f, -0.831805f, -0.831781f,
--0.831757f, -0.831732f, -0.831708f, -0.831684f, -0.831659f, -0.831635f, -0.83161f, -0.831586f, -0.831562f, -0.831537f, -0.831513f, -0.831488f, -0.831464f, -0.83144f, -0.831415f, -0.831391f, -0.831366f, -0.831342f, -0.831317f, -0.831293f,
--0.831268f, -0.831243f, -0.831219f, -0.831194f, -0.83117f, -0.831145f, -0.831121f, -0.831096f, -0.831071f, -0.831047f, -0.831022f, -0.830997f, -0.830973f, -0.830948f, -0.830923f, -0.830899f, -0.830874f, -0.830849f, -0.830824f, -0.8308f,
--0.830775f, -0.83075f, -0.830725f, -0.830701f, -0.830676f, -0.830651f, -0.830626f, -0.830601f, -0.830576f, -0.830552f, -0.830527f, -0.830502f, -0.830477f, -0.830452f, -0.830427f, -0.830402f, -0.830377f, -0.830352f, -0.830327f, -0.830302f,
--0.830277f, -0.830252f, -0.830227f, -0.830202f, -0.830177f, -0.830152f, -0.830127f, -0.830102f, -0.830077f, -0.830052f, -0.830027f, -0.830002f, -0.829977f, -0.829952f, -0.829926f, -0.829901f, -0.829876f, -0.829851f, -0.829826f, -0.829801f,
--0.829775f, -0.82975f, -0.829725f, -0.8297f, -0.829674f, -0.829649f, -0.829624f, -0.829599f, -0.829573f, -0.829548f, -0.829523f, -0.829497f, -0.829472f, -0.829447f, -0.829421f, -0.829396f, -0.82937f, -0.829345f, -0.82932f, -0.829294f,
--0.829269f, -0.829243f, -0.829218f, -0.829192f, -0.829167f, -0.829141f, -0.829116f, -0.82909f, -0.829065f, -0.829039f, -0.829014f, -0.828988f, -0.828963f, -0.828937f, -0.828911f, -0.828886f, -0.82886f, -0.828835f, -0.828809f, -0.828783f,
--0.828758f, -0.828732f, -0.828706f, -0.828681f, -0.828655f, -0.828629f, -0.828603f, -0.828578f, -0.828552f, -0.828526f, -0.8285f, -0.828475f, -0.828449f, -0.828423f, -0.828397f, -0.828371f, -0.828345f, -0.82832f, -0.828294f, -0.828268f,
--0.828242f, -0.828216f, -0.82819f, -0.828164f, -0.828138f, -0.828112f, -0.828086f, -0.82806f, -0.828035f, -0.828009f, -0.827983f, -0.827957f, -0.82793f, -0.827904f, -0.827878f, -0.827852f, -0.827826f, -0.8278f, -0.827774f, -0.827748f,
--0.827722f, -0.827696f, -0.82767f, -0.827644f, -0.827617f, -0.827591f, -0.827565f, -0.827539f, -0.827513f, -0.827486f, -0.82746f, -0.827434f, -0.827408f, -0.827381f, -0.827355f, -0.827329f, -0.827303f, -0.827276f, -0.82725f, -0.827224f,
--0.827197f, -0.827171f, -0.827145f, -0.827118f, -0.827092f, -0.827065f, -0.827039f, -0.827013f, -0.826986f, -0.82696f, -0.826933f, -0.826907f, -0.82688f, -0.826854f, -0.826827f, -0.826801f, -0.826774f, -0.826748f, -0.826721f, -0.826695f,
--0.826668f, -0.826642f, -0.826615f, -0.826588f, -0.826562f, -0.826535f, -0.826509f, -0.826482f, -0.826455f, -0.826429f, -0.826402f, -0.826375f, -0.826349f, -0.826322f, -0.826295f, -0.826268f, -0.826242f, -0.826215f, -0.826188f, -0.826161f,
--0.826135f, -0.826108f, -0.826081f, -0.826054f, -0.826027f, -0.826f, -0.825974f, -0.825947f, -0.82592f, -0.825893f, -0.825866f, -0.825839f, -0.825812f, -0.825785f, -0.825758f, -0.825731f, -0.825704f, -0.825677f, -0.82565f, -0.825623f,
--0.825596f, -0.825569f, -0.825542f, -0.825515f, -0.825488f, -0.825461f, -0.825434f, -0.825407f, -0.82538f, -0.825353f, -0.825326f, -0.825299f, -0.825271f, -0.825244f, -0.825217f, -0.82519f, -0.825163f, -0.825136f, -0.825108f, -0.825081f,
--0.825054f, -0.825027f, -0.824999f, -0.824972f, -0.824945f, -0.824918f, -0.82489f, -0.824863f, -0.824836f, -0.824808f, -0.824781f, -0.824754f, -0.824726f, -0.824699f, -0.824671f, -0.824644f, -0.824617f, -0.824589f, -0.824562f, -0.824534f,
--0.824507f, -0.824479f, -0.824452f, -0.824424f, -0.824397f, -0.824369f, -0.824342f, -0.824314f, -0.824287f, -0.824259f, -0.824232f, -0.824204f, -0.824176f, -0.824149f, -0.824121f, -0.824094f, -0.824066f, -0.824038f, -0.824011f, -0.823983f,
--0.823955f, -0.823928f, -0.8239f, -0.823872f, -0.823844f, -0.823817f, -0.823789f, -0.823761f, -0.823733f, -0.823706f, -0.823678f, -0.82365f, -0.823622f, -0.823594f, -0.823567f, -0.823539f, -0.823511f, -0.823483f, -0.823455f, -0.823427f,
--0.823399f, -0.823371f, -0.823343f, -0.823315f, -0.823287f, -0.82326f, -0.823232f, -0.823204f, -0.823176f, -0.823148f, -0.82312f, -0.823091f, -0.823063f, -0.823035f, -0.823007f, -0.822979f, -0.822951f, -0.822923f, -0.822895f, -0.822867f,
--0.822839f, -0.822811f, -0.822782f, -0.822754f, -0.822726f, -0.822698f, -0.82267f, -0.822641f, -0.822613f, -0.822585f, -0.822557f, -0.822529f, -0.8225f, -0.822472f, -0.822444f, -0.822415f, -0.822387f, -0.822359f, -0.82233f, -0.822302f,
--0.822274f, -0.822245f, -0.822217f, -0.822189f, -0.82216f, -0.822132f, -0.822103f, -0.822075f, -0.822046f, -0.822018f, -0.82199f, -0.821961f, -0.821933f, -0.821904f, -0.821876f, -0.821847f, -0.821818f, -0.82179f, -0.821761f, -0.821733f,
--0.821704f, -0.821676f, -0.821647f, -0.821618f, -0.82159f, -0.821561f, -0.821533f, -0.821504f, -0.821475f, -0.821447f, -0.821418f, -0.821389f, -0.82136f, -0.821332f, -0.821303f, -0.821274f, -0.821245f, -0.821217f, -0.821188f, -0.821159f,
--0.82113f, -0.821101f, -0.821073f, -0.821044f, -0.821015f, -0.820986f, -0.820957f, -0.820928f, -0.820899f, -0.820871f, -0.820842f, -0.820813f, -0.820784f, -0.820755f, -0.820726f, -0.820697f, -0.820668f, -0.820639f, -0.82061f, -0.820581f,
--0.820552f, -0.820523f, -0.820494f, -0.820465f, -0.820436f, -0.820407f, -0.820378f, -0.820348f, -0.820319f, -0.82029f, -0.820261f, -0.820232f, -0.820203f, -0.820174f, -0.820144f, -0.820115f, -0.820086f, -0.820057f, -0.820028f, -0.819998f,
--0.819969f, -0.81994f, -0.81991f, -0.819881f, -0.819852f, -0.819823f, -0.819793f, -0.819764f, -0.819735f, -0.819705f, -0.819676f, -0.819647f, -0.819617f, -0.819588f, -0.819558f, -0.819529f, -0.8195f, -0.81947f, -0.819441f, -0.819411f,
--0.819382f, -0.819352f, -0.819323f, -0.819293f, -0.819264f, -0.819234f, -0.819205f, -0.819175f, -0.819146f, -0.819116f, -0.819086f, -0.819057f, -0.819027f, -0.818998f, -0.818968f, -0.818938f, -0.818909f, -0.818879f, -0.818849f, -0.81882f,
--0.81879f, -0.81876f, -0.81873f, -0.818701f, -0.818671f, -0.818641f, -0.818612f, -0.818582f, -0.818552f, -0.818522f, -0.818492f, -0.818463f, -0.818433f, -0.818403f, -0.818373f, -0.818343f, -0.818313f, -0.818283f, -0.818253f, -0.818224f,
--0.818194f, -0.818164f, -0.818134f, -0.818104f, -0.818074f, -0.818044f, -0.818014f, -0.817984f, -0.817954f, -0.817924f, -0.817894f, -0.817864f, -0.817834f, -0.817804f, -0.817774f, -0.817744f, -0.817713f, -0.817683f, -0.817653f, -0.817623f,
--0.817593f, -0.817563f, -0.817533f, -0.817502f, -0.817472f, -0.817442f, -0.817412f, -0.817382f, -0.817351f, -0.817321f, -0.817291f, -0.817261f, -0.81723f, -0.8172f, -0.81717f, -0.81714f, -0.817109f, -0.817079f, -0.817049f, -0.817018f,
--0.816988f, -0.816957f, -0.816927f, -0.816897f, -0.816866f, -0.816836f, -0.816805f, -0.816775f, -0.816745f, -0.816714f, -0.816684f, -0.816653f, -0.816623f, -0.816592f, -0.816562f, -0.816531f, -0.816501f, -0.81647f, -0.816439f, -0.816409f,
--0.816378f, -0.816348f, -0.816317f, -0.816286f, -0.816256f, -0.816225f, -0.816194f, -0.816164f, -0.816133f, -0.816102f, -0.816072f, -0.816041f, -0.81601f, -0.81598f, -0.815949f, -0.815918f, -0.815887f, -0.815857f, -0.815826f, -0.815795f,
--0.815764f, -0.815733f, -0.815703f, -0.815672f, -0.815641f, -0.81561f, -0.815579f, -0.815548f, -0.815517f, -0.815486f, -0.815456f, -0.815425f, -0.815394f, -0.815363f, -0.815332f, -0.815301f, -0.81527f, -0.815239f, -0.815208f, -0.815177f,
--0.815146f, -0.815115f, -0.815084f, -0.815053f, -0.815021f, -0.81499f, -0.814959f, -0.814928f, -0.814897f, -0.814866f, -0.814835f, -0.814804f, -0.814773f, -0.814741f, -0.81471f, -0.814679f, -0.814648f, -0.814617f, -0.814585f, -0.814554f,
--0.814523f, -0.814492f, -0.81446f, -0.814429f, -0.814398f, -0.814366f, -0.814335f, -0.814304f, -0.814272f, -0.814241f, -0.81421f, -0.814178f, -0.814147f, -0.814116f, -0.814084f, -0.814053f, -0.814021f, -0.81399f, -0.813958f, -0.813927f,
--0.813895f, -0.813864f, -0.813832f, -0.813801f, -0.813769f, -0.813738f, -0.813706f, -0.813675f, -0.813643f, -0.813612f, -0.81358f, -0.813549f, -0.813517f, -0.813485f, -0.813454f, -0.813422f, -0.81339f, -0.813359f, -0.813327f, -0.813295f,
--0.813264f, -0.813232f, -0.8132f, -0.813169f, -0.813137f, -0.813105f, -0.813073f, -0.813042f, -0.81301f, -0.812978f, -0.812946f, -0.812914f, -0.812882f, -0.812851f, -0.812819f, -0.812787f, -0.812755f, -0.812723f, -0.812691f, -0.812659f,
--0.812627f, -0.812596f, -0.812564f, -0.812532f, -0.8125f, -0.812468f, -0.812436f, -0.812404f, -0.812372f, -0.81234f, -0.812308f, -0.812276f, -0.812244f, -0.812212f, -0.81218f, -0.812147f, -0.812115f, -0.812083f, -0.812051f, -0.812019f,
--0.811987f, -0.811955f, -0.811923f, -0.81189f, -0.811858f, -0.811826f, -0.811794f, -0.811762f, -0.811729f, -0.811697f, -0.811665f, -0.811633f, -0.8116f, -0.811568f, -0.811536f, -0.811503f, -0.811471f, -0.811439f, -0.811407f, -0.811374f,
--0.811342f, -0.811309f, -0.811277f, -0.811245f, -0.811212f, -0.81118f, -0.811147f, -0.811115f, -0.811083f, -0.81105f, -0.811018f, -0.810985f, -0.810953f, -0.81092f, -0.810888f, -0.810855f, -0.810823f, -0.81079f, -0.810757f, -0.810725f,
--0.810692f, -0.81066f, -0.810627f, -0.810595f, -0.810562f, -0.810529f, -0.810497f, -0.810464f, -0.810431f, -0.810399f, -0.810366f, -0.810333f, -0.810301f, -0.810268f, -0.810235f, -0.810202f, -0.81017f, -0.810137f, -0.810104f, -0.810071f,
--0.810038f, -0.810006f, -0.809973f, -0.80994f, -0.809907f, -0.809874f, -0.809841f, -0.809809f, -0.809776f, -0.809743f, -0.80971f, -0.809677f, -0.809644f, -0.809611f, -0.809578f, -0.809545f, -0.809512f, -0.809479f, -0.809446f, -0.809413f,
--0.80938f, -0.809347f, -0.809314f, -0.809281f, -0.809248f, -0.809215f, -0.809182f, -0.809149f, -0.809116f, -0.809083f, -0.809049f, -0.809016f, -0.808983f, -0.80895f, -0.808917f, -0.808884f, -0.80885f, -0.808817f, -0.808784f, -0.808751f,
--0.808717f, -0.808684f, -0.808651f, -0.808618f, -0.808584f, -0.808551f, -0.808518f, -0.808485f, -0.808451f, -0.808418f, -0.808384f, -0.808351f, -0.808318f, -0.808284f, -0.808251f, -0.808218f, -0.808184f, -0.808151f, -0.808117f, -0.808084f,
--0.80805f, -0.808017f, -0.807983f, -0.80795f, -0.807916f, -0.807883f, -0.807849f, -0.807816f, -0.807782f, -0.807749f, -0.807715f, -0.807682f, -0.807648f, -0.807614f, -0.807581f, -0.807547f, -0.807514f, -0.80748f, -0.807446f, -0.807413f,
--0.807379f, -0.807345f, -0.807312f, -0.807278f, -0.807244f, -0.80721f, -0.807177f, -0.807143f, -0.807109f, -0.807075f, -0.807042f, -0.807008f, -0.806974f, -0.80694f, -0.806906f, -0.806872f, -0.806839f, -0.806805f, -0.806771f, -0.806737f,
--0.806703f, -0.806669f, -0.806635f, -0.806601f, -0.806567f, -0.806533f, -0.806499f, -0.806465f, -0.806431f, -0.806397f, -0.806363f, -0.806329f, -0.806295f, -0.806261f, -0.806227f, -0.806193f, -0.806159f, -0.806125f, -0.806091f, -0.806057f,
--0.806023f, -0.805989f, -0.805954f, -0.80592f, -0.805886f, -0.805852f, -0.805818f, -0.805784f, -0.805749f, -0.805715f, -0.805681f, -0.805647f, -0.805612f, -0.805578f, -0.805544f, -0.80551f, -0.805475f, -0.805441f, -0.805407f, -0.805372f,
--0.805338f, -0.805304f, -0.805269f, -0.805235f, -0.805201f, -0.805166f, -0.805132f, -0.805097f, -0.805063f, -0.805029f, -0.804994f, -0.80496f, -0.804925f, -0.804891f, -0.804856f, -0.804822f, -0.804787f, -0.804753f, -0.804718f, -0.804684f,
--0.804649f, -0.804614f, -0.80458f, -0.804545f, -0.804511f, -0.804476f, -0.804441f, -0.804407f, -0.804372f, -0.804337f, -0.804303f, -0.804268f, -0.804233f, -0.804199f, -0.804164f, -0.804129f, -0.804095f, -0.80406f, -0.804025f, -0.80399f,
--0.803956f, -0.803921f, -0.803886f, -0.803851f, -0.803816f, -0.803781f, -0.803747f, -0.803712f, -0.803677f, -0.803642f, -0.803607f, -0.803572f, -0.803537f, -0.803502f, -0.803468f, -0.803433f, -0.803398f, -0.803363f, -0.803328f, -0.803293f,
--0.803258f, -0.803223f, -0.803188f, -0.803153f, -0.803118f, -0.803083f, -0.803048f, -0.803012f, -0.802977f, -0.802942f, -0.802907f, -0.802872f, -0.802837f, -0.802802f, -0.802767f, -0.802731f, -0.802696f, -0.802661f, -0.802626f, -0.802591f,
--0.802556f, -0.80252f, -0.802485f, -0.80245f, -0.802415f, -0.802379f, -0.802344f, -0.802309f, -0.802273f, -0.802238f, -0.802203f, -0.802167f, -0.802132f, -0.802097f, -0.802061f, -0.802026f, -0.801991f, -0.801955f, -0.80192f, -0.801884f,
--0.801849f, -0.801813f, -0.801778f, -0.801743f, -0.801707f, -0.801672f, -0.801636f, -0.801601f, -0.801565f, -0.80153f, -0.801494f, -0.801458f, -0.801423f, -0.801387f, -0.801352f, -0.801316f, -0.801281f, -0.801245f, -0.801209f, -0.801174f,
--0.801138f, -0.801102f, -0.801067f, -0.801031f, -0.800995f, -0.80096f, -0.800924f, -0.800888f, -0.800852f, -0.800817f, -0.800781f, -0.800745f, -0.800709f, -0.800674f, -0.800638f, -0.800602f, -0.800566f, -0.80053f, -0.800494f, -0.800459f,
--0.800423f, -0.800387f, -0.800351f, -0.800315f, -0.800279f, -0.800243f, -0.800207f, -0.800171f, -0.800135f, -0.800099f, -0.800063f, -0.800027f, -0.799991f, -0.799955f, -0.799919f, -0.799883f, -0.799847f, -0.799811f, -0.799775f, -0.799739f,
--0.799703f, -0.799667f, -0.799631f, -0.799595f, -0.799559f, -0.799522f, -0.799486f, -0.79945f, -0.799414f, -0.799378f, -0.799342f, -0.799305f, -0.799269f, -0.799233f, -0.799197f, -0.79916f, -0.799124f, -0.799088f, -0.799052f, -0.799015f,
--0.798979f, -0.798943f, -0.798906f, -0.79887f, -0.798834f, -0.798797f, -0.798761f, -0.798725f, -0.798688f, -0.798652f, -0.798615f, -0.798579f, -0.798542f, -0.798506f, -0.79847f, -0.798433f, -0.798397f, -0.79836f, -0.798324f, -0.798287f,
--0.798251f, -0.798214f, -0.798178f, -0.798141f, -0.798104f, -0.798068f, -0.798031f, -0.797995f, -0.797958f, -0.797921f, -0.797885f, -0.797848f, -0.797812f, -0.797775f, -0.797738f, -0.797701f, -0.797665f, -0.797628f, -0.797591f, -0.797555f,
--0.797518f, -0.797481f, -0.797444f, -0.797408f, -0.797371f, -0.797334f, -0.797297f, -0.79726f, -0.797224f, -0.797187f, -0.79715f, -0.797113f, -0.797076f, -0.797039f, -0.797002f, -0.796966f, -0.796929f, -0.796892f, -0.796855f, -0.796818f,
--0.796781f, -0.796744f, -0.796707f, -0.79667f, -0.796633f, -0.796596f, -0.796559f, -0.796522f, -0.796485f, -0.796448f, -0.796411f, -0.796374f, -0.796337f, -0.796299f, -0.796262f, -0.796225f, -0.796188f, -0.796151f, -0.796114f, -0.796077f,
--0.796039f, -0.796002f, -0.795965f, -0.795928f, -0.795891f, -0.795853f, -0.795816f, -0.795779f, -0.795742f, -0.795704f, -0.795667f, -0.79563f, -0.795592f, -0.795555f, -0.795518f, -0.795481f, -0.795443f, -0.795406f, -0.795368f, -0.795331f,
--0.795294f, -0.795256f, -0.795219f, -0.795181f, -0.795144f, -0.795107f, -0.795069f, -0.795032f, -0.794994f, -0.794957f, -0.794919f, -0.794882f, -0.794844f, -0.794807f, -0.794769f, -0.794732f, -0.794694f, -0.794656f, -0.794619f, -0.794581f,
--0.794544f, -0.794506f, -0.794468f, -0.794431f, -0.794393f, -0.794355f, -0.794318f, -0.79428f, -0.794242f, -0.794205f, -0.794167f, -0.794129f, -0.794091f, -0.794054f, -0.794016f, -0.793978f, -0.79394f, -0.793903f, -0.793865f, -0.793827f,
--0.793789f, -0.793751f, -0.793713f, -0.793676f, -0.793638f, -0.7936f, -0.793562f, -0.793524f, -0.793486f, -0.793448f, -0.79341f, -0.793372f, -0.793334f, -0.793296f, -0.793259f, -0.793221f, -0.793183f, -0.793145f, -0.793106f, -0.793068f,
--0.79303f, -0.792992f, -0.792954f, -0.792916f, -0.792878f, -0.79284f, -0.792802f, -0.792764f, -0.792726f, -0.792688f, -0.792649f, -0.792611f, -0.792573f, -0.792535f, -0.792497f, -0.792459f, -0.79242f, -0.792382f, -0.792344f, -0.792306f,
--0.792267f, -0.792229f, -0.792191f, -0.792153f, -0.792114f, -0.792076f, -0.792038f, -0.791999f, -0.791961f, -0.791923f, -0.791884f, -0.791846f, -0.791807f, -0.791769f, -0.791731f, -0.791692f, -0.791654f, -0.791615f, -0.791577f, -0.791538f,
--0.7915f, -0.791462f, -0.791423f, -0.791385f, -0.791346f, -0.791307f, -0.791269f, -0.79123f, -0.791192f, -0.791153f, -0.791115f, -0.791076f, -0.791037f, -0.790999f, -0.79096f, -0.790922f, -0.790883f, -0.790844f, -0.790806f, -0.790767f,
--0.790728f, -0.79069f, -0.790651f, -0.790612f, -0.790573f, -0.790535f, -0.790496f, -0.790457f, -0.790418f, -0.79038f, -0.790341f, -0.790302f, -0.790263f, -0.790224f, -0.790186f, -0.790147f, -0.790108f, -0.790069f, -0.79003f, -0.789991f,
--0.789952f, -0.789913f, -0.789874f, -0.789836f, -0.789797f, -0.789758f, -0.789719f, -0.78968f, -0.789641f, -0.789602f, -0.789563f, -0.789524f, -0.789485f, -0.789446f, -0.789407f, -0.789367f, -0.789328f, -0.789289f, -0.78925f, -0.789211f,
--0.789172f, -0.789133f, -0.789094f, -0.789055f, -0.789015f, -0.788976f, -0.788937f, -0.788898f, -0.788859f, -0.788819f, -0.78878f, -0.788741f, -0.788702f, -0.788662f, -0.788623f, -0.788584f, -0.788545f, -0.788505f, -0.788466f, -0.788427f,
--0.788387f, -0.788348f, -0.788309f, -0.788269f, -0.78823f, -0.788191f, -0.788151f, -0.788112f, -0.788072f, -0.788033f, -0.787993f, -0.787954f, -0.787915f, -0.787875f, -0.787836f, -0.787796f, -0.787757f, -0.787717f, -0.787678f, -0.787638f,
--0.787598f, -0.787559f, -0.787519f, -0.78748f, -0.78744f, -0.787401f, -0.787361f, -0.787321f, -0.787282f, -0.787242f, -0.787202f, -0.787163f, -0.787123f, -0.787083f, -0.787044f, -0.787004f, -0.786964f, -0.786924f, -0.786885f, -0.786845f,
--0.786805f, -0.786765f, -0.786726f, -0.786686f, -0.786646f, -0.786606f, -0.786566f, -0.786527f, -0.786487f, -0.786447f, -0.786407f, -0.786367f, -0.786327f, -0.786287f, -0.786247f, -0.786208f, -0.786168f, -0.786128f, -0.786088f, -0.786048f,
--0.786008f, -0.785968f, -0.785928f, -0.785888f, -0.785848f, -0.785808f, -0.785768f, -0.785728f, -0.785688f, -0.785647f, -0.785607f, -0.785567f, -0.785527f, -0.785487f, -0.785447f, -0.785407f, -0.785367f, -0.785326f, -0.785286f, -0.785246f,
--0.785206f, -0.785166f, -0.785126f, -0.785085f, -0.785045f, -0.785005f, -0.784965f, -0.784924f, -0.784884f, -0.784844f, -0.784803f, -0.784763f, -0.784723f, -0.784682f, -0.784642f, -0.784602f, -0.784561f, -0.784521f, -0.784481f, -0.78444f,
--0.7844f, -0.784359f, -0.784319f, -0.784279f, -0.784238f, -0.784198f, -0.784157f, -0.784117f, -0.784076f, -0.784036f, -0.783995f, -0.783955f, -0.783914f, -0.783874f, -0.783833f, -0.783793f, -0.783752f, -0.783711f, -0.783671f, -0.78363f,
--0.78359f, -0.783549f, -0.783508f, -0.783468f, -0.783427f, -0.783386f, -0.783346f, -0.783305f, -0.783264f, -0.783223f, -0.783183f, -0.783142f, -0.783101f, -0.783061f, -0.78302f, -0.782979f, -0.782938f, -0.782897f, -0.782857f, -0.782816f,
--0.782775f, -0.782734f, -0.782693f, -0.782652f, -0.782611f, -0.782571f, -0.78253f, -0.782489f, -0.782448f, -0.782407f, -0.782366f, -0.782325f, -0.782284f, -0.782243f, -0.782202f, -0.782161f, -0.78212f, -0.782079f, -0.782038f, -0.781997f,
--0.781956f, -0.781915f, -0.781874f, -0.781833f, -0.781792f, -0.781751f, -0.78171f, -0.781668f, -0.781627f, -0.781586f, -0.781545f, -0.781504f, -0.781463f, -0.781421f, -0.78138f, -0.781339f, -0.781298f, -0.781257f, -0.781215f, -0.781174f,
--0.781133f, -0.781092f, -0.78105f, -0.781009f, -0.780968f, -0.780926f, -0.780885f, -0.780844f, -0.780802f, -0.780761f, -0.78072f, -0.780678f, -0.780637f, -0.780596f, -0.780554f, -0.780513f, -0.780471f, -0.78043f, -0.780388f, -0.780347f,
--0.780305f, -0.780264f, -0.780223f, -0.780181f, -0.780139f, -0.780098f, -0.780056f, -0.780015f, -0.779973f, -0.779932f, -0.77989f, -0.779849f, -0.779807f, -0.779765f, -0.779724f, -0.779682f, -0.77964f, -0.779599f, -0.779557f, -0.779516f,
--0.779474f, -0.779432f, -0.77939f, -0.779349f, -0.779307f, -0.779265f, -0.779223f, -0.779182f, -0.77914f, -0.779098f, -0.779056f, -0.779015f, -0.778973f, -0.778931f, -0.778889f, -0.778847f, -0.778805f, -0.778764f, -0.778722f, -0.77868f,
--0.778638f, -0.778596f, -0.778554f, -0.778512f, -0.77847f, -0.778428f, -0.778386f, -0.778344f, -0.778302f, -0.77826f, -0.778218f, -0.778176f, -0.778134f, -0.778092f, -0.77805f, -0.778008f, -0.777966f, -0.777924f, -0.777882f, -0.77784f,
--0.777798f, -0.777756f, -0.777713f, -0.777671f, -0.777629f, -0.777587f, -0.777545f, -0.777503f, -0.77746f, -0.777418f, -0.777376f, -0.777334f, -0.777292f, -0.777249f, -0.777207f, -0.777165f, -0.777123f, -0.77708f, -0.777038f, -0.776996f,
--0.776953f, -0.776911f, -0.776869f, -0.776826f, -0.776784f, -0.776742f, -0.776699f, -0.776657f, -0.776614f, -0.776572f, -0.77653f, -0.776487f, -0.776445f, -0.776402f, -0.77636f, -0.776317f, -0.776275f, -0.776232f, -0.77619f, -0.776147f,
--0.776105f, -0.776062f, -0.77602f, -0.775977f, -0.775934f, -0.775892f, -0.775849f, -0.775807f, -0.775764f, -0.775721f, -0.775679f, -0.775636f, -0.775593f, -0.775551f, -0.775508f, -0.775465f, -0.775423f, -0.77538f, -0.775337f, -0.775295f,
--0.775252f, -0.775209f, -0.775166f, -0.775124f, -0.775081f, -0.775038f, -0.774995f, -0.774952f, -0.774909f, -0.774867f, -0.774824f, -0.774781f, -0.774738f, -0.774695f, -0.774652f, -0.774609f, -0.774566f, -0.774524f, -0.774481f, -0.774438f,
--0.774395f, -0.774352f, -0.774309f, -0.774266f, -0.774223f, -0.77418f, -0.774137f, -0.774094f, -0.774051f, -0.774008f, -0.773965f, -0.773921f, -0.773878f, -0.773835f, -0.773792f, -0.773749f, -0.773706f, -0.773663f, -0.77362f, -0.773577f,
--0.773533f, -0.77349f, -0.773447f, -0.773404f, -0.773361f, -0.773317f, -0.773274f, -0.773231f, -0.773188f, -0.773144f, -0.773101f, -0.773058f, -0.773015f, -0.772971f, -0.772928f, -0.772885f, -0.772841f, -0.772798f, -0.772755f, -0.772711f,
--0.772668f, -0.772624f, -0.772581f, -0.772538f, -0.772494f, -0.772451f, -0.772407f, -0.772364f, -0.77232f, -0.772277f, -0.772233f, -0.77219f, -0.772146f, -0.772103f, -0.772059f, -0.772016f, -0.771972f, -0.771929f, -0.771885f, -0.771842f,
--0.771798f, -0.771754f, -0.771711f, -0.771667f, -0.771624f, -0.77158f, -0.771536f, -0.771493f, -0.771449f, -0.771405f, -0.771362f, -0.771318f, -0.771274f, -0.77123f, -0.771187f, -0.771143f, -0.771099f, -0.771055f, -0.771012f, -0.770968f,
--0.770924f, -0.77088f, -0.770836f, -0.770793f, -0.770749f, -0.770705f, -0.770661f, -0.770617f, -0.770573f, -0.770529f, -0.770485f, -0.770442f, -0.770398f, -0.770354f, -0.77031f, -0.770266f, -0.770222f, -0.770178f, -0.770134f, -0.77009f,
--0.770046f, -0.770002f, -0.769958f, -0.769914f, -0.76987f, -0.769826f, -0.769782f, -0.769738f, -0.769693f, -0.769649f, -0.769605f, -0.769561f, -0.769517f, -0.769473f, -0.769429f, -0.769384f, -0.76934f, -0.769296f, -0.769252f, -0.769208f,
--0.769163f, -0.769119f, -0.769075f, -0.769031f, -0.768986f, -0.768942f, -0.768898f, -0.768854f, -0.768809f, -0.768765f, -0.768721f, -0.768676f, -0.768632f, -0.768588f, -0.768543f, -0.768499f, -0.768455f, -0.76841f, -0.768366f, -0.768321f,
--0.768277f, -0.768232f, -0.768188f, -0.768144f, -0.768099f, -0.768055f, -0.76801f, -0.767966f, -0.767921f, -0.767877f, -0.767832f, -0.767787f, -0.767743f, -0.767698f, -0.767654f, -0.767609f, -0.767565f, -0.76752f, -0.767475f, -0.767431f,
--0.767386f, -0.767341f, -0.767297f, -0.767252f, -0.767207f, -0.767163f, -0.767118f, -0.767073f, -0.767029f, -0.766984f, -0.766939f, -0.766894f, -0.76685f, -0.766805f, -0.76676f, -0.766715f, -0.76667f, -0.766626f, -0.766581f, -0.766536f,
--0.766491f, -0.766446f, -0.766401f, -0.766357f, -0.766312f, -0.766267f, -0.766222f, -0.766177f, -0.766132f, -0.766087f, -0.766042f, -0.765997f, -0.765952f, -0.765907f, -0.765862f, -0.765817f, -0.765772f, -0.765727f, -0.765682f, -0.765637f,
--0.765592f, -0.765547f, -0.765502f, -0.765457f, -0.765412f, -0.765367f, -0.765321f, -0.765276f, -0.765231f, -0.765186f, -0.765141f, -0.765096f, -0.76505f, -0.765005f, -0.76496f, -0.764915f, -0.76487f, -0.764824f, -0.764779f, -0.764734f,
--0.764689f, -0.764643f, -0.764598f, -0.764553f, -0.764507f, -0.764462f, -0.764417f, -0.764371f, -0.764326f, -0.764281f, -0.764235f, -0.76419f, -0.764145f, -0.764099f, -0.764054f, -0.764008f, -0.763963f, -0.763918f, -0.763872f, -0.763827f,
--0.763781f, -0.763736f, -0.76369f, -0.763645f, -0.763599f, -0.763554f, -0.763508f, -0.763463f, -0.763417f, -0.763371f, -0.763326f, -0.76328f, -0.763235f, -0.763189f, -0.763143f, -0.763098f, -0.763052f, -0.763006f, -0.762961f, -0.762915f,
--0.762869f, -0.762824f, -0.762778f, -0.762732f, -0.762687f, -0.762641f, -0.762595f, -0.762549f, -0.762504f, -0.762458f, -0.762412f, -0.762366f, -0.76232f, -0.762275f, -0.762229f, -0.762183f, -0.762137f, -0.762091f, -0.762045f, -0.761999f,
--0.761954f, -0.761908f, -0.761862f, -0.761816f, -0.76177f, -0.761724f, -0.761678f, -0.761632f, -0.761586f, -0.76154f, -0.761494f, -0.761448f, -0.761402f, -0.761356f, -0.76131f, -0.761264f, -0.761218f, -0.761172f, -0.761126f, -0.76108f,
--0.761034f, -0.760987f, -0.760941f, -0.760895f, -0.760849f, -0.760803f, -0.760757f, -0.760711f, -0.760664f, -0.760618f, -0.760572f, -0.760526f, -0.76048f, -0.760433f, -0.760387f, -0.760341f, -0.760295f, -0.760248f, -0.760202f, -0.760156f,
--0.760109f, -0.760063f, -0.760017f, -0.75997f, -0.759924f, -0.759878f, -0.759831f, -0.759785f, -0.759739f, -0.759692f, -0.759646f, -0.759599f, -0.759553f, -0.759507f, -0.75946f, -0.759414f, -0.759367f, -0.759321f, -0.759274f, -0.759228f,
--0.759181f, -0.759135f, -0.759088f, -0.759042f, -0.758995f, -0.758948f, -0.758902f, -0.758855f, -0.758809f, -0.758762f, -0.758715f, -0.758669f, -0.758622f, -0.758576f, -0.758529f, -0.758482f, -0.758435f, -0.758389f, -0.758342f, -0.758295f,
--0.758249f, -0.758202f, -0.758155f, -0.758108f, -0.758062f, -0.758015f, -0.757968f, -0.757921f, -0.757875f, -0.757828f, -0.757781f, -0.757734f, -0.757687f, -0.75764f, -0.757593f, -0.757547f, -0.7575f, -0.757453f, -0.757406f, -0.757359f,
--0.757312f, -0.757265f, -0.757218f, -0.757171f, -0.757124f, -0.757077f, -0.75703f, -0.756983f, -0.756936f, -0.756889f, -0.756842f, -0.756795f, -0.756748f, -0.756701f, -0.756654f, -0.756607f, -0.75656f, -0.756513f, -0.756466f, -0.756418f,
--0.756371f, -0.756324f, -0.756277f, -0.75623f, -0.756183f, -0.756136f, -0.756088f, -0.756041f, -0.755994f, -0.755947f, -0.755899f, -0.755852f, -0.755805f, -0.755758f, -0.75571f, -0.755663f, -0.755616f, -0.755568f, -0.755521f, -0.755474f,
--0.755426f, -0.755379f, -0.755332f, -0.755284f, -0.755237f, -0.75519f, -0.755142f, -0.755095f, -0.755047f, -0.755f, -0.754953f, -0.754905f, -0.754858f, -0.75481f, -0.754763f, -0.754715f, -0.754668f, -0.75462f, -0.754573f, -0.754525f,
--0.754477f, -0.75443f, -0.754382f, -0.754335f, -0.754287f, -0.75424f, -0.754192f, -0.754144f, -0.754097f, -0.754049f, -0.754001f, -0.753954f, -0.753906f, -0.753858f, -0.753811f, -0.753763f, -0.753715f, -0.753668f, -0.75362f, -0.753572f,
--0.753524f, -0.753477f, -0.753429f, -0.753381f, -0.753333f, -0.753285f, -0.753238f, -0.75319f, -0.753142f, -0.753094f, -0.753046f, -0.752998f, -0.752951f, -0.752903f, -0.752855f, -0.752807f, -0.752759f, -0.752711f, -0.752663f, -0.752615f,
--0.752567f, -0.752519f, -0.752471f, -0.752423f, -0.752375f, -0.752327f, -0.752279f, -0.752231f, -0.752183f, -0.752135f, -0.752087f, -0.752039f, -0.751991f, -0.751943f, -0.751895f, -0.751847f, -0.751798f, -0.75175f, -0.751702f, -0.751654f,
--0.751606f, -0.751558f, -0.751509f, -0.751461f, -0.751413f, -0.751365f, -0.751317f, -0.751268f, -0.75122f, -0.751172f, -0.751124f, -0.751075f, -0.751027f, -0.750979f, -0.75093f, -0.750882f, -0.750834f, -0.750785f, -0.750737f, -0.750689f,
--0.75064f, -0.750592f, -0.750544f, -0.750495f, -0.750447f, -0.750398f, -0.75035f, -0.750302f, -0.750253f, -0.750205f, -0.750156f, -0.750108f, -0.750059f, -0.750011f, -0.749962f, -0.749914f, -0.749865f, -0.749817f, -0.749768f, -0.749719f,
--0.749671f, -0.749622f, -0.749574f, -0.749525f, -0.749476f, -0.749428f, -0.749379f, -0.749331f, -0.749282f, -0.749233f, -0.749185f, -0.749136f, -0.749087f, -0.749038f, -0.74899f, -0.748941f, -0.748892f, -0.748844f, -0.748795f, -0.748746f,
--0.748697f, -0.748648f, -0.7486f, -0.748551f, -0.748502f, -0.748453f, -0.748404f, -0.748355f, -0.748307f, -0.748258f, -0.748209f, -0.74816f, -0.748111f, -0.748062f, -0.748013f, -0.747964f, -0.747915f, -0.747866f, -0.747817f, -0.747768f,
--0.747719f, -0.74767f, -0.747621f, -0.747572f, -0.747523f, -0.747474f, -0.747425f, -0.747376f, -0.747327f, -0.747278f, -0.747229f, -0.74718f, -0.747131f, -0.747082f, -0.747033f, -0.746984f, -0.746934f, -0.746885f, -0.746836f, -0.746787f,
--0.746738f, -0.746688f, -0.746639f, -0.74659f, -0.746541f, -0.746492f, -0.746442f, -0.746393f, -0.746344f, -0.746295f, -0.746245f, -0.746196f, -0.746147f, -0.746097f, -0.746048f, -0.745999f, -0.745949f, -0.7459f, -0.745851f, -0.745801f,
--0.745752f, -0.745702f, -0.745653f, -0.745604f, -0.745554f, -0.745505f, -0.745455f, -0.745406f, -0.745356f, -0.745307f, -0.745257f, -0.745208f, -0.745158f, -0.745109f, -0.745059f, -0.74501f, -0.74496f, -0.744911f, -0.744861f, -0.744811f,
--0.744762f, -0.744712f, -0.744663f, -0.744613f, -0.744563f, -0.744514f, -0.744464f, -0.744414f, -0.744365f, -0.744315f, -0.744265f, -0.744216f, -0.744166f, -0.744116f, -0.744066f, -0.744017f, -0.743967f, -0.743917f, -0.743867f, -0.743818f,
--0.743768f, -0.743718f, -0.743668f, -0.743618f, -0.743568f, -0.743519f, -0.743469f, -0.743419f, -0.743369f, -0.743319f, -0.743269f, -0.743219f, -0.743169f, -0.743119f, -0.74307f, -0.74302f, -0.74297f, -0.74292f, -0.74287f, -0.74282f,
--0.74277f, -0.74272f, -0.74267f, -0.74262f, -0.74257f, -0.74252f, -0.742469f, -0.742419f, -0.742369f, -0.742319f, -0.742269f, -0.742219f, -0.742169f, -0.742119f, -0.742069f, -0.742018f, -0.741968f, -0.741918f, -0.741868f, -0.741818f,
--0.741767f, -0.741717f, -0.741667f, -0.741617f, -0.741567f, -0.741516f, -0.741466f, -0.741416f, -0.741365f, -0.741315f, -0.741265f, -0.741215f, -0.741164f, -0.741114f, -0.741064f, -0.741013f, -0.740963f, -0.740912f, -0.740862f, -0.740812f,
--0.740761f, -0.740711f, -0.74066f, -0.74061f, -0.74056f, -0.740509f, -0.740459f, -0.740408f, -0.740358f, -0.740307f, -0.740257f, -0.740206f, -0.740156f, -0.740105f, -0.740055f, -0.740004f, -0.739953f, -0.739903f, -0.739852f, -0.739802f,
--0.739751f, -0.7397f, -0.73965f, -0.739599f, -0.739548f, -0.739498f, -0.739447f, -0.739396f, -0.739346f, -0.739295f, -0.739244f, -0.739194f, -0.739143f, -0.739092f, -0.739041f, -0.738991f, -0.73894f, -0.738889f, -0.738838f, -0.738788f,
--0.738737f, -0.738686f, -0.738635f, -0.738584f, -0.738533f, -0.738482f, -0.738432f, -0.738381f, -0.73833f, -0.738279f, -0.738228f, -0.738177f, -0.738126f, -0.738075f, -0.738024f, -0.737973f, -0.737922f, -0.737871f, -0.73782f, -0.737769f,
--0.737718f, -0.737667f, -0.737616f, -0.737565f, -0.737514f, -0.737463f, -0.737412f, -0.737361f, -0.73731f, -0.737259f, -0.737208f, -0.737157f, -0.737105f, -0.737054f, -0.737003f, -0.736952f, -0.736901f, -0.73685f, -0.736798f, -0.736747f,
--0.736696f, -0.736645f, -0.736594f, -0.736542f, -0.736491f, -0.73644f, -0.736388f, -0.736337f, -0.736286f, -0.736235f, -0.736183f, -0.736132f, -0.736081f, -0.736029f, -0.735978f, -0.735927f, -0.735875f, -0.735824f, -0.735772f, -0.735721f,
--0.73567f, -0.735618f, -0.735567f, -0.735515f, -0.735464f, -0.735412f, -0.735361f, -0.735309f, -0.735258f, -0.735206f, -0.735155f, -0.735103f, -0.735052f, -0.735f, -0.734949f, -0.734897f, -0.734846f, -0.734794f, -0.734742f, -0.734691f,
--0.734639f, -0.734588f, -0.734536f, -0.734484f, -0.734433f, -0.734381f, -0.734329f, -0.734278f, -0.734226f, -0.734174f, -0.734122f, -0.734071f, -0.734019f, -0.733967f, -0.733915f, -0.733864f, -0.733812f, -0.73376f, -0.733708f, -0.733657f,
--0.733605f, -0.733553f, -0.733501f, -0.733449f, -0.733397f, -0.733345f, -0.733294f, -0.733242f, -0.73319f, -0.733138f, -0.733086f, -0.733034f, -0.732982f, -0.73293f, -0.732878f, -0.732826f, -0.732774f, -0.732722f, -0.73267f, -0.732618f,
--0.732566f, -0.732514f, -0.732462f, -0.73241f, -0.732358f, -0.732306f, -0.732254f, -0.732202f, -0.73215f, -0.732098f, -0.732046f, -0.731993f, -0.731941f, -0.731889f, -0.731837f, -0.731785f, -0.731733f, -0.73168f, -0.731628f, -0.731576f,
--0.731524f, -0.731472f, -0.731419f, -0.731367f, -0.731315f, -0.731263f, -0.73121f, -0.731158f, -0.731106f, -0.731053f, -0.731001f, -0.730949f, -0.730896f, -0.730844f, -0.730792f, -0.730739f, -0.730687f, -0.730635f, -0.730582f, -0.73053f,
--0.730477f, -0.730425f, -0.730372f, -0.73032f, -0.730268f, -0.730215f, -0.730163f, -0.73011f, -0.730058f, -0.730005f, -0.729953f, -0.7299f, -0.729848f, -0.729795f, -0.729742f, -0.72969f, -0.729637f, -0.729585f, -0.729532f, -0.729479f,
--0.729427f, -0.729374f, -0.729322f, -0.729269f, -0.729216f, -0.729164f, -0.729111f, -0.729058f, -0.729006f, -0.728953f, -0.7289f, -0.728847f, -0.728795f, -0.728742f, -0.728689f, -0.728636f, -0.728584f, -0.728531f, -0.728478f, -0.728425f,
--0.728372f, -0.72832f, -0.728267f, -0.728214f, -0.728161f, -0.728108f, -0.728055f, -0.728002f, -0.72795f, -0.727897f, -0.727844f, -0.727791f, -0.727738f, -0.727685f, -0.727632f, -0.727579f, -0.727526f, -0.727473f, -0.72742f, -0.727367f,
--0.727314f, -0.727261f, -0.727208f, -0.727155f, -0.727102f, -0.727049f, -0.726996f, -0.726943f, -0.726889f, -0.726836f, -0.726783f, -0.72673f, -0.726677f, -0.726624f, -0.726571f, -0.726518f, -0.726464f, -0.726411f, -0.726358f, -0.726305f,
--0.726252f, -0.726198f, -0.726145f, -0.726092f, -0.726039f, -0.725985f, -0.725932f, -0.725879f, -0.725825f, -0.725772f, -0.725719f, -0.725666f, -0.725612f, -0.725559f, -0.725506f, -0.725452f, -0.725399f, -0.725345f, -0.725292f, -0.725239f,
--0.725185f, -0.725132f, -0.725078f, -0.725025f, -0.724971f, -0.724918f, -0.724865f, -0.724811f, -0.724758f, -0.724704f, -0.724651f, -0.724597f, -0.724543f, -0.72449f, -0.724436f, -0.724383f, -0.724329f, -0.724276f, -0.724222f, -0.724168f,
--0.724115f, -0.724061f, -0.724008f, -0.723954f, -0.7239f, -0.723847f, -0.723793f, -0.723739f, -0.723686f, -0.723632f, -0.723578f, -0.723524f, -0.723471f, -0.723417f, -0.723363f, -0.723309f, -0.723256f, -0.723202f, -0.723148f, -0.723094f,
--0.723041f, -0.722987f, -0.722933f, -0.722879f, -0.722825f, -0.722771f, -0.722717f, -0.722664f, -0.72261f, -0.722556f, -0.722502f, -0.722448f, -0.722394f, -0.72234f, -0.722286f, -0.722232f, -0.722178f, -0.722124f, -0.72207f, -0.722016f,
--0.721962f, -0.721908f, -0.721854f, -0.7218f, -0.721746f, -0.721692f, -0.721638f, -0.721584f, -0.72153f, -0.721476f, -0.721422f, -0.721368f, -0.721313f, -0.721259f, -0.721205f, -0.721151f, -0.721097f, -0.721043f, -0.720988f, -0.720934f,
--0.72088f, -0.720826f, -0.720772f, -0.720717f, -0.720663f, -0.720609f, -0.720555f, -0.7205f, -0.720446f, -0.720392f, -0.720337f, -0.720283f, -0.720229f, -0.720174f, -0.72012f, -0.720066f, -0.720011f, -0.719957f, -0.719903f, -0.719848f,
--0.719794f, -0.719739f, -0.719685f, -0.719631f, -0.719576f, -0.719522f, -0.719467f, -0.719413f, -0.719358f, -0.719304f, -0.719249f, -0.719195f, -0.71914f, -0.719086f, -0.719031f, -0.718977f, -0.718922f, -0.718868f, -0.718813f, -0.718758f,
--0.718704f, -0.718649f, -0.718595f, -0.71854f, -0.718485f, -0.718431f, -0.718376f, -0.718321f, -0.718267f, -0.718212f, -0.718157f, -0.718103f, -0.718048f, -0.717993f, -0.717938f, -0.717884f, -0.717829f, -0.717774f, -0.717719f, -0.717665f,
--0.71761f, -0.717555f, -0.7175f, -0.717445f, -0.71739f, -0.717336f, -0.717281f, -0.717226f, -0.717171f, -0.717116f, -0.717061f, -0.717006f, -0.716951f, -0.716897f, -0.716842f, -0.716787f, -0.716732f, -0.716677f, -0.716622f, -0.716567f,
--0.716512f, -0.716457f, -0.716402f, -0.716347f, -0.716292f, -0.716237f, -0.716182f, -0.716127f, -0.716072f, -0.716016f, -0.715961f, -0.715906f, -0.715851f, -0.715796f, -0.715741f, -0.715686f, -0.715631f, -0.715575f, -0.71552f, -0.715465f,
--0.71541f, -0.715355f, -0.7153f, -0.715244f, -0.715189f, -0.715134f, -0.715079f, -0.715023f, -0.714968f, -0.714913f, -0.714858f, -0.714802f, -0.714747f, -0.714692f, -0.714636f, -0.714581f, -0.714526f, -0.71447f, -0.714415f, -0.71436f,
--0.714304f, -0.714249f, -0.714193f, -0.714138f, -0.714083f, -0.714027f, -0.713972f, -0.713916f, -0.713861f, -0.713805f, -0.71375f, -0.713694f, -0.713639f, -0.713583f, -0.713528f, -0.713472f, -0.713417f, -0.713361f, -0.713306f, -0.71325f,
--0.713194f, -0.713139f, -0.713083f, -0.713028f, -0.712972f, -0.712916f, -0.712861f, -0.712805f, -0.712749f, -0.712694f, -0.712638f, -0.712582f, -0.712527f, -0.712471f, -0.712415f, -0.71236f, -0.712304f, -0.712248f, -0.712192f, -0.712137f,
--0.712081f, -0.712025f, -0.711969f, -0.711913f, -0.711858f, -0.711802f, -0.711746f, -0.71169f, -0.711634f, -0.711578f, -0.711523f, -0.711467f, -0.711411f, -0.711355f, -0.711299f, -0.711243f, -0.711187f, -0.711131f, -0.711075f, -0.711019f,
--0.710963f, -0.710907f, -0.710851f, -0.710795f, -0.710739f, -0.710683f, -0.710627f, -0.710571f, -0.710515f, -0.710459f, -0.710403f, -0.710347f, -0.710291f, -0.710235f, -0.710179f, -0.710123f, -0.710067f, -0.71001f, -0.709954f, -0.709898f,
--0.709842f, -0.709786f, -0.70973f, -0.709673f, -0.709617f, -0.709561f, -0.709505f, -0.709449f, -0.709392f, -0.709336f, -0.70928f, -0.709223f, -0.709167f, -0.709111f, -0.709055f, -0.708998f, -0.708942f, -0.708886f, -0.708829f, -0.708773f,
--0.708717f, -0.70866f, -0.708604f, -0.708548f, -0.708491f, -0.708435f, -0.708378f, -0.708322f, -0.708265f, -0.708209f, -0.708153f, -0.708096f, -0.70804f, -0.707983f, -0.707927f, -0.70787f, -0.707814f, -0.707757f, -0.707701f, -0.707644f,
--0.707587f, -0.707531f, -0.707474f, -0.707418f, -0.707361f, -0.707305f, -0.707248f, -0.707191f, -0.707135f, -0.707078f, -0.707021f, -0.706965f, -0.706908f, -0.706851f, -0.706795f, -0.706738f, -0.706681f, -0.706625f, -0.706568f, -0.706511f,
--0.706454f, -0.706398f, -0.706341f, -0.706284f, -0.706227f, -0.706171f, -0.706114f, -0.706057f, -0.706f, -0.705943f, -0.705886f, -0.70583f, -0.705773f, -0.705716f, -0.705659f, -0.705602f, -0.705545f, -0.705488f, -0.705431f, -0.705374f,
--0.705318f, -0.705261f, -0.705204f, -0.705147f, -0.70509f, -0.705033f, -0.704976f, -0.704919f, -0.704862f, -0.704805f, -0.704748f, -0.704691f, -0.704634f, -0.704576f, -0.704519f, -0.704462f, -0.704405f, -0.704348f, -0.704291f, -0.704234f,
--0.704177f, -0.70412f, -0.704062f, -0.704005f, -0.703948f, -0.703891f, -0.703834f, -0.703777f, -0.703719f, -0.703662f, -0.703605f, -0.703548f, -0.70349f, -0.703433f, -0.703376f, -0.703319f, -0.703261f, -0.703204f, -0.703147f, -0.703089f,
--0.703032f, -0.702975f, -0.702917f, -0.70286f, -0.702803f, -0.702745f, -0.702688f, -0.702631f, -0.702573f, -0.702516f, -0.702458f, -0.702401f, -0.702344f, -0.702286f, -0.702229f, -0.702171f, -0.702114f, -0.702056f, -0.701999f, -0.701941f,
--0.701884f, -0.701826f, -0.701769f, -0.701711f, -0.701653f, -0.701596f, -0.701538f, -0.701481f, -0.701423f, -0.701366f, -0.701308f, -0.70125f, -0.701193f, -0.701135f, -0.701077f, -0.70102f, -0.700962f, -0.700904f, -0.700847f, -0.700789f,
--0.700731f, -0.700674f, -0.700616f, -0.700558f, -0.7005f, -0.700443f, -0.700385f, -0.700327f, -0.700269f, -0.700212f, -0.700154f, -0.700096f, -0.700038f, -0.69998f, -0.699922f, -0.699865f, -0.699807f, -0.699749f, -0.699691f, -0.699633f,
--0.699575f, -0.699517f, -0.699459f, -0.699401f, -0.699343f, -0.699286f, -0.699228f, -0.69917f, -0.699112f, -0.699054f, -0.698996f, -0.698938f, -0.69888f, -0.698822f, -0.698764f, -0.698706f, -0.698647f, -0.698589f, -0.698531f, -0.698473f,
--0.698415f, -0.698357f, -0.698299f, -0.698241f, -0.698183f, -0.698125f, -0.698066f, -0.698008f, -0.69795f, -0.697892f, -0.697834f, -0.697776f, -0.697717f, -0.697659f, -0.697601f, -0.697543f, -0.697484f, -0.697426f, -0.697368f, -0.69731f,
--0.697251f, -0.697193f, -0.697135f, -0.697076f, -0.697018f, -0.69696f, -0.696901f, -0.696843f, -0.696785f, -0.696726f, -0.696668f, -0.69661f, -0.696551f, -0.696493f, -0.696434f, -0.696376f, -0.696318f, -0.696259f, -0.696201f, -0.696142f,
--0.696084f, -0.696025f, -0.695967f, -0.695908f, -0.69585f, -0.695791f, -0.695733f, -0.695674f, -0.695616f, -0.695557f, -0.695498f, -0.69544f, -0.695381f, -0.695323f, -0.695264f, -0.695206f, -0.695147f, -0.695088f, -0.69503f, -0.694971f,
--0.694912f, -0.694854f, -0.694795f, -0.694736f, -0.694678f, -0.694619f, -0.69456f, -0.694501f, -0.694443f, -0.694384f, -0.694325f, -0.694266f, -0.694208f, -0.694149f, -0.69409f, -0.694031f, -0.693972f, -0.693914f, -0.693855f, -0.693796f,
--0.693737f, -0.693678f, -0.693619f, -0.69356f, -0.693502f, -0.693443f, -0.693384f, -0.693325f, -0.693266f, -0.693207f, -0.693148f, -0.693089f, -0.69303f, -0.692971f, -0.692912f, -0.692853f, -0.692794f, -0.692735f, -0.692676f, -0.692617f,
--0.692558f, -0.692499f, -0.69244f, -0.692381f, -0.692322f, -0.692263f, -0.692204f, -0.692144f, -0.692085f, -0.692026f, -0.691967f, -0.691908f, -0.691849f, -0.69179f, -0.69173f, -0.691671f, -0.691612f, -0.691553f, -0.691494f, -0.691434f,
--0.691375f, -0.691316f, -0.691257f, -0.691197f, -0.691138f, -0.691079f, -0.69102f, -0.69096f, -0.690901f, -0.690842f, -0.690782f, -0.690723f, -0.690664f, -0.690604f, -0.690545f, -0.690485f, -0.690426f, -0.690367f, -0.690307f, -0.690248f,
--0.690188f, -0.690129f, -0.69007f, -0.69001f, -0.689951f, -0.689891f, -0.689832f, -0.689772f, -0.689713f, -0.689653f, -0.689594f, -0.689534f, -0.689475f, -0.689415f, -0.689356f, -0.689296f, -0.689236f, -0.689177f, -0.689117f, -0.689058f,
--0.688998f, -0.688938f, -0.688879f, -0.688819f, -0.68876f, -0.6887f, -0.68864f, -0.688581f, -0.688521f, -0.688461f, -0.688401f, -0.688342f, -0.688282f, -0.688222f, -0.688162f, -0.688103f, -0.688043f, -0.687983f, -0.687923f, -0.687864f,
--0.687804f, -0.687744f, -0.687684f, -0.687624f, -0.687565f, -0.687505f, -0.687445f, -0.687385f, -0.687325f, -0.687265f, -0.687205f, -0.687145f, -0.687086f, -0.687026f, -0.686966f, -0.686906f, -0.686846f, -0.686786f, -0.686726f, -0.686666f,
--0.686606f, -0.686546f, -0.686486f, -0.686426f, -0.686366f, -0.686306f, -0.686246f, -0.686186f, -0.686126f, -0.686066f, -0.686005f, -0.685945f, -0.685885f, -0.685825f, -0.685765f, -0.685705f, -0.685645f, -0.685585f, -0.685524f, -0.685464f,
--0.685404f, -0.685344f, -0.685284f, -0.685224f, -0.685163f, -0.685103f, -0.685043f, -0.684983f, -0.684922f, -0.684862f, -0.684802f, -0.684742f, -0.684681f, -0.684621f, -0.684561f, -0.6845f, -0.68444f, -0.68438f, -0.684319f, -0.684259f,
--0.684199f, -0.684138f, -0.684078f, -0.684017f, -0.683957f, -0.683897f, -0.683836f, -0.683776f, -0.683715f, -0.683655f, -0.683594f, -0.683534f, -0.683474f, -0.683413f, -0.683353f, -0.683292f, -0.683232f, -0.683171f, -0.68311f, -0.68305f,
--0.682989f, -0.682929f, -0.682868f, -0.682808f, -0.682747f, -0.682687f, -0.682626f, -0.682565f, -0.682505f, -0.682444f, -0.682383f, -0.682323f, -0.682262f, -0.682201f, -0.682141f, -0.68208f, -0.682019f, -0.681959f, -0.681898f, -0.681837f,
--0.681776f, -0.681716f, -0.681655f, -0.681594f, -0.681533f, -0.681473f, -0.681412f, -0.681351f, -0.68129f, -0.681229f, -0.681169f, -0.681108f, -0.681047f, -0.680986f, -0.680925f, -0.680864f, -0.680803f, -0.680742f, -0.680682f, -0.680621f,
--0.68056f, -0.680499f, -0.680438f, -0.680377f, -0.680316f, -0.680255f, -0.680194f, -0.680133f, -0.680072f, -0.680011f, -0.67995f, -0.679889f, -0.679828f, -0.679767f, -0.679706f, -0.679645f, -0.679584f, -0.679523f, -0.679461f, -0.6794f,
--0.679339f, -0.679278f, -0.679217f, -0.679156f, -0.679095f, -0.679034f, -0.678972f, -0.678911f, -0.67885f, -0.678789f, -0.678728f, -0.678666f, -0.678605f, -0.678544f, -0.678483f, -0.678421f, -0.67836f, -0.678299f, -0.678238f, -0.678176f,
--0.678115f, -0.678054f, -0.677992f, -0.677931f, -0.67787f, -0.677808f, -0.677747f, -0.677686f, -0.677624f, -0.677563f, -0.677502f, -0.67744f, -0.677379f, -0.677317f, -0.677256f, -0.677194f, -0.677133f, -0.677072f, -0.67701f, -0.676949f,
--0.676887f, -0.676826f, -0.676764f, -0.676703f, -0.676641f, -0.67658f, -0.676518f, -0.676456f, -0.676395f, -0.676333f, -0.676272f, -0.67621f, -0.676149f, -0.676087f, -0.676025f, -0.675964f, -0.675902f, -0.67584f, -0.675779f, -0.675717f,
--0.675656f, -0.675594f, -0.675532f, -0.67547f, -0.675409f, -0.675347f, -0.675285f, -0.675224f, -0.675162f, -0.6751f, -0.675038f, -0.674977f, -0.674915f, -0.674853f, -0.674791f, -0.674729f, -0.674668f, -0.674606f, -0.674544f, -0.674482f,
--0.67442f, -0.674358f, -0.674296f, -0.674235f, -0.674173f, -0.674111f, -0.674049f, -0.673987f, -0.673925f, -0.673863f, -0.673801f, -0.673739f, -0.673677f, -0.673615f, -0.673553f, -0.673491f, -0.673429f, -0.673367f, -0.673305f, -0.673243f,
--0.673181f, -0.673119f, -0.673057f, -0.672995f, -0.672933f, -0.672871f, -0.672809f, -0.672747f, -0.672685f, -0.672622f, -0.67256f, -0.672498f, -0.672436f, -0.672374f, -0.672312f, -0.672249f, -0.672187f, -0.672125f, -0.672063f, -0.672001f,
--0.671938f, -0.671876f, -0.671814f, -0.671752f, -0.671689f, -0.671627f, -0.671565f, -0.671503f, -0.67144f, -0.671378f, -0.671316f, -0.671253f, -0.671191f, -0.671129f, -0.671066f, -0.671004f, -0.670942f, -0.670879f, -0.670817f, -0.670754f,
--0.670692f, -0.67063f, -0.670567f, -0.670505f, -0.670442f, -0.67038f, -0.670317f, -0.670255f, -0.670192f, -0.67013f, -0.670067f, -0.670005f, -0.669942f, -0.66988f, -0.669817f, -0.669755f, -0.669692f, -0.66963f, -0.669567f, -0.669505f,
--0.669442f, -0.669379f, -0.669317f, -0.669254f, -0.669192f, -0.669129f, -0.669066f, -0.669004f, -0.668941f, -0.668878f, -0.668816f, -0.668753f, -0.66869f, -0.668627f, -0.668565f, -0.668502f, -0.668439f, -0.668377f, -0.668314f, -0.668251f,
--0.668188f, -0.668125f, -0.668063f, -0.668f, -0.667937f, -0.667874f, -0.667811f, -0.667749f, -0.667686f, -0.667623f, -0.66756f, -0.667497f, -0.667434f, -0.667371f, -0.667308f, -0.667246f, -0.667183f, -0.66712f, -0.667057f, -0.666994f,
--0.666931f, -0.666868f, -0.666805f, -0.666742f, -0.666679f, -0.666616f, -0.666553f, -0.66649f, -0.666427f, -0.666364f, -0.666301f, -0.666238f, -0.666175f, -0.666112f, -0.666048f, -0.665985f, -0.665922f, -0.665859f, -0.665796f, -0.665733f,
--0.66567f, -0.665607f, -0.665543f, -0.66548f, -0.665417f, -0.665354f, -0.665291f, -0.665227f, -0.665164f, -0.665101f, -0.665038f, -0.664975f, -0.664911f, -0.664848f, -0.664785f, -0.664722f, -0.664658f, -0.664595f, -0.664532f, -0.664468f,
--0.664405f, -0.664342f, -0.664278f, -0.664215f, -0.664152f, -0.664088f, -0.664025f, -0.663961f, -0.663898f, -0.663835f, -0.663771f, -0.663708f, -0.663644f, -0.663581f, -0.663518f, -0.663454f, -0.663391f, -0.663327f, -0.663264f, -0.6632f,
--0.663137f, -0.663073f, -0.66301f, -0.662946f, -0.662882f, -0.662819f, -0.662755f, -0.662692f, -0.662628f, -0.662565f, -0.662501f, -0.662437f, -0.662374f, -0.66231f, -0.662247f, -0.662183f, -0.662119f, -0.662056f, -0.661992f, -0.661928f,
--0.661865f, -0.661801f, -0.661737f, -0.661673f, -0.66161f, -0.661546f, -0.661482f, -0.661419f, -0.661355f, -0.661291f, -0.661227f, -0.661163f, -0.6611f, -0.661036f, -0.660972f, -0.660908f, -0.660844f, -0.660781f, -0.660717f, -0.660653f,
--0.660589f, -0.660525f, -0.660461f, -0.660397f, -0.660333f, -0.660269f, -0.660206f, -0.660142f, -0.660078f, -0.660014f, -0.65995f, -0.659886f, -0.659822f, -0.659758f, -0.659694f, -0.65963f, -0.659566f, -0.659502f, -0.659438f, -0.659374f,
--0.65931f, -0.659246f, -0.659182f, -0.659117f, -0.659053f, -0.658989f, -0.658925f, -0.658861f, -0.658797f, -0.658733f, -0.658669f, -0.658605f, -0.65854f, -0.658476f, -0.658412f, -0.658348f, -0.658284f, -0.658219f, -0.658155f, -0.658091f,
--0.658027f, -0.657963f, -0.657898f, -0.657834f, -0.65777f, -0.657705f, -0.657641f, -0.657577f, -0.657513f, -0.657448f, -0.657384f, -0.65732f, -0.657255f, -0.657191f, -0.657127f, -0.657062f, -0.656998f, -0.656933f, -0.656869f, -0.656805f,
--0.65674f, -0.656676f, -0.656611f, -0.656547f, -0.656482f, -0.656418f, -0.656354f, -0.656289f, -0.656225f, -0.65616f, -0.656096f, -0.656031f, -0.655967f, -0.655902f, -0.655838f, -0.655773f, -0.655708f, -0.655644f, -0.655579f, -0.655515f,
--0.65545f, -0.655386f, -0.655321f, -0.655256f, -0.655192f, -0.655127f, -0.655062f, -0.654998f, -0.654933f, -0.654868f, -0.654804f, -0.654739f, -0.654674f, -0.65461f, -0.654545f, -0.65448f, -0.654415f, -0.654351f, -0.654286f, -0.654221f,
--0.654156f, -0.654092f, -0.654027f, -0.653962f, -0.653897f, -0.653832f, -0.653768f, -0.653703f, -0.653638f, -0.653573f, -0.653508f, -0.653443f, -0.653378f, -0.653314f, -0.653249f, -0.653184f, -0.653119f, -0.653054f, -0.652989f, -0.652924f,
--0.652859f, -0.652794f, -0.652729f, -0.652664f, -0.652599f, -0.652534f, -0.652469f, -0.652404f, -0.652339f, -0.652274f, -0.652209f, -0.652144f, -0.652079f, -0.652014f, -0.651949f, -0.651884f, -0.651819f, -0.651754f, -0.651688f, -0.651623f,
--0.651558f, -0.651493f, -0.651428f, -0.651363f, -0.651298f, -0.651232f, -0.651167f, -0.651102f, -0.651037f, -0.650972f, -0.650906f, -0.650841f, -0.650776f, -0.650711f, -0.650645f, -0.65058f, -0.650515f, -0.65045f, -0.650384f, -0.650319f,
--0.650254f, -0.650188f, -0.650123f, -0.650058f, -0.649992f, -0.649927f, -0.649862f, -0.649796f, -0.649731f, -0.649666f, -0.6496f, -0.649535f, -0.649469f, -0.649404f, -0.649338f, -0.649273f, -0.649208f, -0.649142f, -0.649077f, -0.649011f,
--0.648946f, -0.64888f, -0.648815f, -0.648749f, -0.648684f, -0.648618f, -0.648553f, -0.648487f, -0.648421f, -0.648356f, -0.64829f, -0.648225f, -0.648159f, -0.648094f, -0.648028f, -0.647962f, -0.647897f, -0.647831f, -0.647765f, -0.6477f,
--0.647634f, -0.647568f, -0.647503f, -0.647437f, -0.647371f, -0.647306f, -0.64724f, -0.647174f, -0.647108f, -0.647043f, -0.646977f, -0.646911f, -0.646845f, -0.64678f, -0.646714f, -0.646648f, -0.646582f, -0.646516f, -0.646451f, -0.646385f,
--0.646319f, -0.646253f, -0.646187f, -0.646121f, -0.646055f, -0.64599f, -0.645924f, -0.645858f, -0.645792f, -0.645726f, -0.64566f, -0.645594f, -0.645528f, -0.645462f, -0.645396f, -0.64533f, -0.645264f, -0.645198f, -0.645132f, -0.645066f,
--0.645f, -0.644934f, -0.644868f, -0.644802f, -0.644736f, -0.64467f, -0.644604f, -0.644538f, -0.644472f, -0.644406f, -0.644339f, -0.644273f, -0.644207f, -0.644141f, -0.644075f, -0.644009f, -0.643943f, -0.643876f, -0.64381f, -0.643744f,
--0.643678f, -0.643612f, -0.643545f, -0.643479f, -0.643413f, -0.643347f, -0.64328f, -0.643214f, -0.643148f, -0.643082f, -0.643015f, -0.642949f, -0.642883f, -0.642816f, -0.64275f, -0.642684f, -0.642617f, -0.642551f, -0.642485f, -0.642418f,
--0.642352f, -0.642286f, -0.642219f, -0.642153f, -0.642086f, -0.64202f, -0.641954f, -0.641887f, -0.641821f, -0.641754f, -0.641688f, -0.641621f, -0.641555f, -0.641488f, -0.641422f, -0.641355f, -0.641289f, -0.641222f, -0.641156f, -0.641089f,
--0.641023f, -0.640956f, -0.64089f, -0.640823f, -0.640756f, -0.64069f, -0.640623f, -0.640557f, -0.64049f, -0.640423f, -0.640357f, -0.64029f, -0.640223f, -0.640157f, -0.64009f, -0.640023f, -0.639957f, -0.63989f, -0.639823f, -0.639757f,
--0.63969f, -0.639623f, -0.639556f, -0.63949f, -0.639423f, -0.639356f, -0.639289f, -0.639223f, -0.639156f, -0.639089f, -0.639022f, -0.638955f, -0.638888f, -0.638822f, -0.638755f, -0.638688f, -0.638621f, -0.638554f, -0.638487f, -0.63842f,
--0.638353f, -0.638287f, -0.63822f, -0.638153f, -0.638086f, -0.638019f, -0.637952f, -0.637885f, -0.637818f, -0.637751f, -0.637684f, -0.637617f, -0.63755f, -0.637483f, -0.637416f, -0.637349f, -0.637282f, -0.637215f, -0.637148f, -0.637081f,
--0.637014f, -0.636946f, -0.636879f, -0.636812f, -0.636745f, -0.636678f, -0.636611f, -0.636544f, -0.636477f, -0.636409f, -0.636342f, -0.636275f, -0.636208f, -0.636141f, -0.636074f, -0.636006f, -0.635939f, -0.635872f, -0.635805f, -0.635737f,
--0.63567f, -0.635603f, -0.635536f, -0.635468f, -0.635401f, -0.635334f, -0.635266f, -0.635199f, -0.635132f, -0.635065f, -0.634997f, -0.63493f, -0.634862f, -0.634795f, -0.634728f, -0.63466f, -0.634593f, -0.634526f, -0.634458f, -0.634391f,
--0.634323f, -0.634256f, -0.634188f, -0.634121f, -0.634054f, -0.633986f, -0.633919f, -0.633851f, -0.633784f, -0.633716f, -0.633649f, -0.633581f, -0.633514f, -0.633446f, -0.633378f, -0.633311f, -0.633243f, -0.633176f, -0.633108f, -0.633041f,
--0.632973f, -0.632905f, -0.632838f, -0.63277f, -0.632702f, -0.632635f, -0.632567f, -0.632499f, -0.632432f, -0.632364f, -0.632296f, -0.632229f, -0.632161f, -0.632093f, -0.632026f, -0.631958f, -0.63189f, -0.631822f, -0.631755f, -0.631687f,
--0.631619f, -0.631551f, -0.631484f, -0.631416f, -0.631348f, -0.63128f, -0.631212f, -0.631144f, -0.631077f, -0.631009f, -0.630941f, -0.630873f, -0.630805f, -0.630737f, -0.630669f, -0.630601f, -0.630533f, -0.630466f, -0.630398f, -0.63033f,
--0.630262f, -0.630194f, -0.630126f, -0.630058f, -0.62999f, -0.629922f, -0.629854f, -0.629786f, -0.629718f, -0.62965f, -0.629582f, -0.629514f, -0.629446f, -0.629378f, -0.62931f, -0.629241f, -0.629173f, -0.629105f, -0.629037f, -0.628969f,
--0.628901f, -0.628833f, -0.628765f, -0.628697f, -0.628628f, -0.62856f, -0.628492f, -0.628424f, -0.628356f, -0.628287f, -0.628219f, -0.628151f, -0.628083f, -0.628015f, -0.627946f, -0.627878f, -0.62781f, -0.627742f, -0.627673f, -0.627605f,
--0.627537f, -0.627468f, -0.6274f, -0.627332f, -0.627263f, -0.627195f, -0.627127f, -0.627058f, -0.62699f, -0.626922f, -0.626853f, -0.626785f, -0.626716f, -0.626648f, -0.62658f, -0.626511f, -0.626443f, -0.626374f, -0.626306f, -0.626237f,
--0.626169f, -0.626101f, -0.626032f, -0.625964f, -0.625895f, -0.625827f, -0.625758f, -0.625689f, -0.625621f, -0.625552f, -0.625484f, -0.625415f, -0.625347f, -0.625278f, -0.62521f, -0.625141f, -0.625072f, -0.625004f, -0.624935f, -0.624866f,
--0.624798f, -0.624729f, -0.624661f, -0.624592f, -0.624523f, -0.624455f, -0.624386f, -0.624317f, -0.624248f, -0.62418f, -0.624111f, -0.624042f, -0.623973f, -0.623905f, -0.623836f, -0.623767f, -0.623698f, -0.62363f, -0.623561f, -0.623492f,
--0.623423f, -0.623354f, -0.623286f, -0.623217f, -0.623148f, -0.623079f, -0.62301f, -0.622941f, -0.622872f, -0.622804f, -0.622735f, -0.622666f, -0.622597f, -0.622528f, -0.622459f, -0.62239f, -0.622321f, -0.622252f, -0.622183f, -0.622114f,
--0.622045f, -0.621976f, -0.621907f, -0.621838f, -0.621769f, -0.6217f, -0.621631f, -0.621562f, -0.621493f, -0.621424f, -0.621355f, -0.621286f, -0.621217f, -0.621148f, -0.621079f, -0.621009f, -0.62094f, -0.620871f, -0.620802f, -0.620733f,
--0.620664f, -0.620595f, -0.620525f, -0.620456f, -0.620387f, -0.620318f, -0.620249f, -0.620179f, -0.62011f, -0.620041f, -0.619972f, -0.619903f, -0.619833f, -0.619764f, -0.619695f, -0.619625f, -0.619556f, -0.619487f, -0.619418f, -0.619348f,
--0.619279f, -0.61921f, -0.61914f, -0.619071f, -0.619002f, -0.618932f, -0.618863f, -0.618793f, -0.618724f, -0.618655f, -0.618585f, -0.618516f, -0.618446f, -0.618377f, -0.618307f, -0.618238f, -0.618169f, -0.618099f, -0.61803f, -0.61796f,
--0.617891f, -0.617821f, -0.617752f, -0.617682f, -0.617613f, -0.617543f, -0.617473f, -0.617404f, -0.617334f, -0.617265f, -0.617195f, -0.617126f, -0.617056f, -0.616986f, -0.616917f, -0.616847f, -0.616778f, -0.616708f, -0.616638f, -0.616569f,
--0.616499f, -0.616429f, -0.61636f, -0.61629f, -0.61622f, -0.616151f, -0.616081f, -0.616011f, -0.615941f, -0.615872f, -0.615802f, -0.615732f, -0.615662f, -0.615593f, -0.615523f, -0.615453f, -0.615383f, -0.615313f, -0.615244f, -0.615174f,
--0.615104f, -0.615034f, -0.614964f, -0.614894f, -0.614824f, -0.614755f, -0.614685f, -0.614615f, -0.614545f, -0.614475f, -0.614405f, -0.614335f, -0.614265f, -0.614195f, -0.614125f, -0.614055f, -0.613985f, -0.613915f, -0.613845f, -0.613775f,
--0.613705f, -0.613635f, -0.613565f, -0.613495f, -0.613425f, -0.613355f, -0.613285f, -0.613215f, -0.613145f, -0.613075f, -0.613005f, -0.612935f, -0.612865f, -0.612795f, -0.612725f, -0.612654f, -0.612584f, -0.612514f, -0.612444f, -0.612374f,
--0.612304f, -0.612233f, -0.612163f, -0.612093f, -0.612023f, -0.611953f, -0.611882f, -0.611812f, -0.611742f, -0.611672f, -0.611601f, -0.611531f, -0.611461f, -0.611391f, -0.61132f, -0.61125f, -0.61118f, -0.611109f, -0.611039f, -0.610969f,
--0.610898f, -0.610828f, -0.610758f, -0.610687f, -0.610617f, -0.610547f, -0.610476f, -0.610406f, -0.610335f, -0.610265f, -0.610195f, -0.610124f, -0.610054f, -0.609983f, -0.609913f, -0.609842f, -0.609772f, -0.609701f, -0.609631f, -0.60956f,
--0.60949f, -0.609419f, -0.609349f, -0.609278f, -0.609208f, -0.609137f, -0.609067f, -0.608996f, -0.608925f, -0.608855f, -0.608784f, -0.608714f, -0.608643f, -0.608572f, -0.608502f, -0.608431f, -0.608361f, -0.60829f, -0.608219f, -0.608149f,
--0.608078f, -0.608007f, -0.607937f, -0.607866f, -0.607795f, -0.607724f, -0.607654f, -0.607583f, -0.607512f, -0.607441f, -0.607371f, -0.6073f, -0.607229f, -0.607158f, -0.607088f, -0.607017f, -0.606946f, -0.606875f, -0.606804f, -0.606733f,
--0.606663f, -0.606592f, -0.606521f, -0.60645f, -0.606379f, -0.606308f, -0.606237f, -0.606166f, -0.606096f, -0.606025f, -0.605954f, -0.605883f, -0.605812f, -0.605741f, -0.60567f, -0.605599f, -0.605528f, -0.605457f, -0.605386f, -0.605315f,
--0.605244f, -0.605173f, -0.605102f, -0.605031f, -0.60496f, -0.604889f, -0.604818f, -0.604747f, -0.604676f, -0.604605f, -0.604533f, -0.604462f, -0.604391f, -0.60432f, -0.604249f, -0.604178f, -0.604107f, -0.604036f, -0.603964f, -0.603893f,
--0.603822f, -0.603751f, -0.60368f, -0.603608f, -0.603537f, -0.603466f, -0.603395f, -0.603324f, -0.603252f, -0.603181f, -0.60311f, -0.603039f, -0.602967f, -0.602896f, -0.602825f, -0.602753f, -0.602682f, -0.602611f, -0.602539f, -0.602468f,
--0.602397f, -0.602325f, -0.602254f, -0.602183f, -0.602111f, -0.60204f, -0.601969f, -0.601897f, -0.601826f, -0.601754f, -0.601683f, -0.601611f, -0.60154f, -0.601469f, -0.601397f, -0.601326f, -0.601254f, -0.601183f, -0.601111f, -0.60104f,
--0.600968f, -0.600897f, -0.600825f, -0.600754f, -0.600682f, -0.60061f, -0.600539f, -0.600467f, -0.600396f, -0.600324f, -0.600253f, -0.600181f, -0.600109f, -0.600038f, -0.599966f, -0.599895f, -0.599823f, -0.599751f, -0.59968f, -0.599608f,
--0.599536f, -0.599465f, -0.599393f, -0.599321f, -0.599249f, -0.599178f, -0.599106f, -0.599034f, -0.598963f, -0.598891f, -0.598819f, -0.598747f, -0.598676f, -0.598604f, -0.598532f, -0.59846f, -0.598388f, -0.598317f, -0.598245f, -0.598173f,
--0.598101f, -0.598029f, -0.597957f, -0.597885f, -0.597814f, -0.597742f, -0.59767f, -0.597598f, -0.597526f, -0.597454f, -0.597382f, -0.59731f, -0.597238f, -0.597166f, -0.597094f, -0.597022f, -0.59695f, -0.596878f, -0.596806f, -0.596735f,
--0.596662f, -0.59659f, -0.596518f, -0.596446f, -0.596374f, -0.596302f, -0.59623f, -0.596158f, -0.596086f, -0.596014f, -0.595942f, -0.59587f, -0.595798f, -0.595726f, -0.595654f, -0.595581f, -0.595509f, -0.595437f, -0.595365f, -0.595293f,
--0.595221f, -0.595149f, -0.595076f, -0.595004f, -0.594932f, -0.59486f, -0.594788f, -0.594715f, -0.594643f, -0.594571f, -0.594499f, -0.594426f, -0.594354f, -0.594282f, -0.594209f, -0.594137f, -0.594065f, -0.593993f, -0.59392f, -0.593848f,
--0.593776f, -0.593703f, -0.593631f, -0.593559f, -0.593486f, -0.593414f, -0.593341f, -0.593269f, -0.593197f, -0.593124f, -0.593052f, -0.592979f, -0.592907f, -0.592835f, -0.592762f, -0.59269f, -0.592617f, -0.592545f, -0.592472f, -0.5924f,
--0.592327f, -0.592255f, -0.592182f, -0.59211f, -0.592037f, -0.591965f, -0.591892f, -0.59182f, -0.591747f, -0.591674f, -0.591602f, -0.591529f, -0.591457f, -0.591384f, -0.591311f, -0.591239f, -0.591166f, -0.591094f, -0.591021f, -0.590948f,
--0.590876f, -0.590803f, -0.59073f, -0.590658f, -0.590585f, -0.590512f, -0.590439f, -0.590367f, -0.590294f, -0.590221f, -0.590149f, -0.590076f, -0.590003f, -0.58993f, -0.589858f, -0.589785f, -0.589712f, -0.589639f, -0.589566f, -0.589494f,
--0.589421f, -0.589348f, -0.589275f, -0.589202f, -0.589129f, -0.589056f, -0.588984f, -0.588911f, -0.588838f, -0.588765f, -0.588692f, -0.588619f, -0.588546f, -0.588473f, -0.5884f, -0.588327f, -0.588254f, -0.588181f, -0.588109f, -0.588036f,
--0.587963f, -0.58789f, -0.587817f, -0.587744f, -0.587671f, -0.587598f, -0.587524f, -0.587451f, -0.587378f, -0.587305f, -0.587232f, -0.587159f, -0.587086f, -0.587013f, -0.58694f, -0.586867f, -0.586794f, -0.586721f, -0.586647f, -0.586574f,
--0.586501f, -0.586428f, -0.586355f, -0.586282f, -0.586209f, -0.586135f, -0.586062f, -0.585989f, -0.585916f, -0.585842f, -0.585769f, -0.585696f, -0.585623f, -0.58555f, -0.585476f, -0.585403f, -0.58533f, -0.585256f, -0.585183f, -0.58511f,
--0.585037f, -0.584963f, -0.58489f, -0.584817f, -0.584743f, -0.58467f, -0.584597f, -0.584523f, -0.58445f, -0.584376f, -0.584303f, -0.58423f, -0.584156f, -0.584083f, -0.584009f, -0.583936f, -0.583863f, -0.583789f, -0.583716f, -0.583642f,
--0.583569f, -0.583495f, -0.583422f, -0.583348f, -0.583275f, -0.583201f, -0.583128f, -0.583054f, -0.582981f, -0.582907f, -0.582834f, -0.58276f, -0.582686f, -0.582613f, -0.582539f, -0.582466f, -0.582392f, -0.582318f, -0.582245f, -0.582171f,
--0.582098f, -0.582024f, -0.58195f, -0.581877f, -0.581803f, -0.581729f, -0.581656f, -0.581582f, -0.581508f, -0.581435f, -0.581361f, -0.581287f, -0.581213f, -0.58114f, -0.581066f, -0.580992f, -0.580918f, -0.580845f, -0.580771f, -0.580697f,
--0.580623f, -0.58055f, -0.580476f, -0.580402f, -0.580328f, -0.580254f, -0.58018f, -0.580107f, -0.580033f, -0.579959f, -0.579885f, -0.579811f, -0.579737f, -0.579663f, -0.579589f, -0.579516f, -0.579442f, -0.579368f, -0.579294f, -0.57922f,
--0.579146f, -0.579072f, -0.578998f, -0.578924f, -0.57885f, -0.578776f, -0.578702f, -0.578628f, -0.578554f, -0.57848f, -0.578406f, -0.578332f, -0.578258f, -0.578184f, -0.57811f, -0.578036f, -0.577962f, -0.577887f, -0.577813f, -0.577739f,
--0.577665f, -0.577591f, -0.577517f, -0.577443f, -0.577369f, -0.577294f, -0.57722f, -0.577146f, -0.577072f, -0.576998f, -0.576924f, -0.576849f, -0.576775f, -0.576701f, -0.576627f, -0.576553f, -0.576478f, -0.576404f, -0.57633f, -0.576256f,
--0.576181f, -0.576107f, -0.576033f, -0.575958f, -0.575884f, -0.57581f, -0.575735f, -0.575661f, -0.575587f, -0.575512f, -0.575438f, -0.575364f, -0.575289f, -0.575215f, -0.575141f, -0.575066f, -0.574992f, -0.574917f, -0.574843f, -0.574769f,
--0.574694f, -0.57462f, -0.574545f, -0.574471f, -0.574396f, -0.574322f, -0.574247f, -0.574173f, -0.574098f, -0.574024f, -0.573949f, -0.573875f, -0.5738f, -0.573726f, -0.573651f, -0.573577f, -0.573502f, -0.573428f, -0.573353f, -0.573279f,
--0.573204f, -0.573129f, -0.573055f, -0.57298f, -0.572906f, -0.572831f, -0.572756f, -0.572682f, -0.572607f, -0.572532f, -0.572458f, -0.572383f, -0.572308f, -0.572234f, -0.572159f, -0.572084f, -0.572009f, -0.571935f, -0.57186f, -0.571785f,
--0.571711f, -0.571636f, -0.571561f, -0.571486f, -0.571412f, -0.571337f, -0.571262f, -0.571187f, -0.571112f, -0.571038f, -0.570963f, -0.570888f, -0.570813f, -0.570738f, -0.570663f, -0.570588f, -0.570514f, -0.570439f, -0.570364f, -0.570289f,
--0.570214f, -0.570139f, -0.570064f, -0.569989f, -0.569914f, -0.569839f, -0.569764f, -0.569689f, -0.569614f, -0.56954f, -0.569465f, -0.56939f, -0.569315f, -0.56924f, -0.569165f, -0.56909f, -0.569014f, -0.568939f, -0.568864f, -0.568789f,
--0.568714f, -0.568639f, -0.568564f, -0.568489f, -0.568414f, -0.568339f, -0.568264f, -0.568189f, -0.568114f, -0.568038f, -0.567963f, -0.567888f, -0.567813f, -0.567738f, -0.567663f, -0.567587f, -0.567512f, -0.567437f, -0.567362f, -0.567287f,
--0.567211f, -0.567136f, -0.567061f, -0.566986f, -0.56691f, -0.566835f, -0.56676f, -0.566685f, -0.566609f, -0.566534f, -0.566459f, -0.566384f, -0.566308f, -0.566233f, -0.566158f, -0.566082f, -0.566007f, -0.565932f, -0.565856f, -0.565781f,
--0.565705f, -0.56563f, -0.565555f, -0.565479f, -0.565404f, -0.565328f, -0.565253f, -0.565178f, -0.565102f, -0.565027f, -0.564951f, -0.564876f, -0.5648f, -0.564725f, -0.564649f, -0.564574f, -0.564498f, -0.564423f, -0.564347f, -0.564272f,
--0.564196f, -0.564121f, -0.564045f, -0.56397f, -0.563894f, -0.563819f, -0.563743f, -0.563667f, -0.563592f, -0.563516f, -0.563441f, -0.563365f, -0.563289f, -0.563214f, -0.563138f, -0.563062f, -0.562987f, -0.562911f, -0.562835f, -0.56276f,
--0.562684f, -0.562608f, -0.562533f, -0.562457f, -0.562381f, -0.562306f, -0.56223f, -0.562154f, -0.562078f, -0.562003f, -0.561927f, -0.561851f, -0.561775f, -0.561699f, -0.561624f, -0.561548f, -0.561472f, -0.561396f, -0.56132f, -0.561245f,
--0.561169f, -0.561093f, -0.561017f, -0.560941f, -0.560865f, -0.560789f, -0.560714f, -0.560638f, -0.560562f, -0.560486f, -0.56041f, -0.560334f, -0.560258f, -0.560182f, -0.560106f, -0.56003f, -0.559954f, -0.559878f, -0.559802f, -0.559726f,
--0.55965f, -0.559574f, -0.559498f, -0.559422f, -0.559346f, -0.55927f, -0.559194f, -0.559118f, -0.559042f, -0.558966f, -0.55889f, -0.558814f, -0.558738f, -0.558662f, -0.558586f, -0.558509f, -0.558433f, -0.558357f, -0.558281f, -0.558205f,
--0.558129f, -0.558053f, -0.557976f, -0.5579f, -0.557824f, -0.557748f, -0.557672f, -0.557595f, -0.557519f, -0.557443f, -0.557367f, -0.557291f, -0.557214f, -0.557138f, -0.557062f, -0.556986f, -0.556909f, -0.556833f, -0.556757f, -0.55668f,
--0.556604f, -0.556528f, -0.556451f, -0.556375f, -0.556299f, -0.556222f, -0.556146f, -0.55607f, -0.555993f, -0.555917f, -0.555841f, -0.555764f, -0.555688f, -0.555611f, -0.555535f, -0.555459f, -0.555382f, -0.555306f, -0.555229f, -0.555153f,
--0.555076f, -0.555f, -0.554923f, -0.554847f, -0.554771f, -0.554694f, -0.554617f, -0.554541f, -0.554464f, -0.554388f, -0.554311f, -0.554235f, -0.554158f, -0.554082f, -0.554005f, -0.553929f, -0.553852f, -0.553775f, -0.553699f, -0.553622f,
--0.553546f, -0.553469f, -0.553392f, -0.553316f, -0.553239f, -0.553162f, -0.553086f, -0.553009f, -0.552932f, -0.552856f, -0.552779f, -0.552702f, -0.552626f, -0.552549f, -0.552472f, -0.552396f, -0.552319f, -0.552242f, -0.552165f, -0.552089f,
--0.552012f, -0.551935f, -0.551858f, -0.551781f, -0.551705f, -0.551628f, -0.551551f, -0.551474f, -0.551397f, -0.551321f, -0.551244f, -0.551167f, -0.55109f, -0.551013f, -0.550936f, -0.550859f, -0.550783f, -0.550706f, -0.550629f, -0.550552f,
--0.550475f, -0.550398f, -0.550321f, -0.550244f, -0.550167f, -0.55009f, -0.550013f, -0.549936f, -0.549859f, -0.549782f, -0.549705f, -0.549628f, -0.549551f, -0.549474f, -0.549397f, -0.54932f, -0.549243f, -0.549166f, -0.549089f, -0.549012f,
--0.548935f, -0.548858f, -0.548781f, -0.548704f, -0.548627f, -0.548549f, -0.548472f, -0.548395f, -0.548318f, -0.548241f, -0.548164f, -0.548087f, -0.54801f, -0.547932f, -0.547855f, -0.547778f, -0.547701f, -0.547624f, -0.547546f, -0.547469f,
--0.547392f, -0.547315f, -0.547237f, -0.54716f, -0.547083f, -0.547006f, -0.546928f, -0.546851f, -0.546774f, -0.546697f, -0.546619f, -0.546542f, -0.546465f, -0.546387f, -0.54631f, -0.546233f, -0.546155f, -0.546078f, -0.546001f, -0.545923f,
--0.545846f, -0.545769f, -0.545691f, -0.545614f, -0.545536f, -0.545459f, -0.545382f, -0.545304f, -0.545227f, -0.545149f, -0.545072f, -0.544994f, -0.544917f, -0.544839f, -0.544762f, -0.544684f, -0.544607f, -0.544529f, -0.544452f, -0.544374f,
--0.544297f, -0.544219f, -0.544142f, -0.544064f, -0.543987f, -0.543909f, -0.543832f, -0.543754f, -0.543676f, -0.543599f, -0.543521f, -0.543444f, -0.543366f, -0.543288f, -0.543211f, -0.543133f, -0.543056f, -0.542978f, -0.5429f, -0.542823f,
--0.542745f, -0.542667f, -0.542589f, -0.542512f, -0.542434f, -0.542356f, -0.542279f, -0.542201f, -0.542123f, -0.542045f, -0.541968f, -0.54189f, -0.541812f, -0.541734f, -0.541657f, -0.541579f, -0.541501f, -0.541423f, -0.541345f, -0.541268f,
--0.54119f, -0.541112f, -0.541034f, -0.540956f, -0.540878f, -0.540801f, -0.540723f, -0.540645f, -0.540567f, -0.540489f, -0.540411f, -0.540333f, -0.540255f, -0.540177f, -0.540099f, -0.540022f, -0.539944f, -0.539866f, -0.539788f, -0.53971f,
--0.539632f, -0.539554f, -0.539476f, -0.539398f, -0.53932f, -0.539242f, -0.539164f, -0.539086f, -0.539008f, -0.53893f, -0.538852f, -0.538774f, -0.538695f, -0.538617f, -0.538539f, -0.538461f, -0.538383f, -0.538305f, -0.538227f, -0.538149f,
--0.538071f, -0.537993f, -0.537914f, -0.537836f, -0.537758f, -0.53768f, -0.537602f, -0.537524f, -0.537445f, -0.537367f, -0.537289f, -0.537211f, -0.537133f, -0.537054f, -0.536976f, -0.536898f, -0.53682f, -0.536741f, -0.536663f, -0.536585f,
--0.536507f, -0.536428f, -0.53635f, -0.536272f, -0.536194f, -0.536115f, -0.536037f, -0.535959f, -0.53588f, -0.535802f, -0.535724f, -0.535645f, -0.535567f, -0.535488f, -0.53541f, -0.535332f, -0.535253f, -0.535175f, -0.535096f, -0.535018f,
--0.53494f, -0.534861f, -0.534783f, -0.534704f, -0.534626f, -0.534547f, -0.534469f, -0.534391f, -0.534312f, -0.534234f, -0.534155f, -0.534077f, -0.533998f, -0.53392f, -0.533841f, -0.533762f, -0.533684f, -0.533605f, -0.533527f, -0.533448f,
--0.53337f, -0.533291f, -0.533213f, -0.533134f, -0.533055f, -0.532977f, -0.532898f, -0.53282f, -0.532741f, -0.532662f, -0.532584f, -0.532505f, -0.532426f, -0.532348f, -0.532269f, -0.53219f, -0.532112f, -0.532033f, -0.531954f, -0.531875f,
--0.531797f, -0.531718f, -0.531639f, -0.531561f, -0.531482f, -0.531403f, -0.531324f, -0.531246f, -0.531167f, -0.531088f, -0.531009f, -0.53093f, -0.530852f, -0.530773f, -0.530694f, -0.530615f, -0.530536f, -0.530457f, -0.530379f, -0.5303f,
--0.530221f, -0.530142f, -0.530063f, -0.529984f, -0.529905f, -0.529826f, -0.529748f, -0.529669f, -0.52959f, -0.529511f, -0.529432f, -0.529353f, -0.529274f, -0.529195f, -0.529116f, -0.529037f, -0.528958f, -0.528879f, -0.5288f, -0.528721f,
--0.528642f, -0.528563f, -0.528484f, -0.528405f, -0.528326f, -0.528247f, -0.528168f, -0.528089f, -0.52801f, -0.527931f, -0.527852f, -0.527772f, -0.527693f, -0.527614f, -0.527535f, -0.527456f, -0.527377f, -0.527298f, -0.527219f, -0.52714f,
--0.52706f, -0.526981f, -0.526902f, -0.526823f, -0.526744f, -0.526664f, -0.526585f, -0.526506f, -0.526427f, -0.526348f, -0.526268f, -0.526189f, -0.52611f, -0.526031f, -0.525951f, -0.525872f, -0.525793f, -0.525714f, -0.525634f, -0.525555f,
--0.525476f, -0.525396f, -0.525317f, -0.525238f, -0.525158f, -0.525079f, -0.525f, -0.52492f, -0.524841f, -0.524762f, -0.524682f, -0.524603f, -0.524523f, -0.524444f, -0.524365f, -0.524285f, -0.524206f, -0.524126f, -0.524047f, -0.523968f,
--0.523888f, -0.523809f, -0.523729f, -0.52365f, -0.52357f, -0.523491f, -0.523411f, -0.523332f, -0.523252f, -0.523173f, -0.523093f, -0.523014f, -0.522934f, -0.522855f, -0.522775f, -0.522696f, -0.522616f, -0.522536f, -0.522457f, -0.522377f,
--0.522298f, -0.522218f, -0.522138f, -0.522059f, -0.521979f, -0.5219f, -0.52182f, -0.52174f, -0.521661f, -0.521581f, -0.521501f, -0.521422f, -0.521342f, -0.521262f, -0.521183f, -0.521103f, -0.521023f, -0.520943f, -0.520864f, -0.520784f,
--0.520704f, -0.520624f, -0.520545f, -0.520465f, -0.520385f, -0.520305f, -0.520226f, -0.520146f, -0.520066f, -0.519986f, -0.519906f, -0.519827f, -0.519747f, -0.519667f, -0.519587f, -0.519507f, -0.519427f, -0.519348f, -0.519268f, -0.519188f,
--0.519108f, -0.519028f, -0.518948f, -0.518868f, -0.518788f, -0.518708f, -0.518629f, -0.518549f, -0.518469f, -0.518389f, -0.518309f, -0.518229f, -0.518149f, -0.518069f, -0.517989f, -0.517909f, -0.517829f, -0.517749f, -0.517669f, -0.517589f,
--0.517509f, -0.517429f, -0.517349f, -0.517269f, -0.517189f, -0.517109f, -0.517028f, -0.516948f, -0.516868f, -0.516788f, -0.516708f, -0.516628f, -0.516548f, -0.516468f, -0.516388f, -0.516308f, -0.516227f, -0.516147f, -0.516067f, -0.515987f,
--0.515907f, -0.515827f, -0.515746f, -0.515666f, -0.515586f, -0.515506f, -0.515426f, -0.515345f, -0.515265f, -0.515185f, -0.515105f, -0.515024f, -0.514944f, -0.514864f, -0.514784f, -0.514703f, -0.514623f, -0.514543f, -0.514462f, -0.514382f,
--0.514302f, -0.514222f, -0.514141f, -0.514061f, -0.513981f, -0.5139f, -0.51382f, -0.513739f, -0.513659f, -0.513579f, -0.513498f, -0.513418f, -0.513338f, -0.513257f, -0.513177f, -0.513096f, -0.513016f, -0.512935f, -0.512855f, -0.512775f,
--0.512694f, -0.512614f, -0.512533f, -0.512453f, -0.512372f, -0.512292f, -0.512211f, -0.512131f, -0.51205f, -0.51197f, -0.511889f, -0.511809f, -0.511728f, -0.511648f, -0.511567f, -0.511486f, -0.511406f, -0.511325f, -0.511245f, -0.511164f,
--0.511084f, -0.511003f, -0.510922f, -0.510842f, -0.510761f, -0.51068f, -0.5106f, -0.510519f, -0.510438f, -0.510358f, -0.510277f, -0.510196f, -0.510116f, -0.510035f, -0.509954f, -0.509874f, -0.509793f, -0.509712f, -0.509632f, -0.509551f,
--0.50947f, -0.509389f, -0.509309f, -0.509228f, -0.509147f, -0.509066f, -0.508985f, -0.508905f, -0.508824f, -0.508743f, -0.508662f, -0.508581f, -0.508501f, -0.50842f, -0.508339f, -0.508258f, -0.508177f, -0.508096f, -0.508016f, -0.507935f,
--0.507854f, -0.507773f, -0.507692f, -0.507611f, -0.50753f, -0.507449f, -0.507368f, -0.507287f, -0.507206f, -0.507126f, -0.507045f, -0.506964f, -0.506883f, -0.506802f, -0.506721f, -0.50664f, -0.506559f, -0.506478f, -0.506397f, -0.506316f,
--0.506235f, -0.506154f, -0.506073f, -0.505992f, -0.505911f, -0.505829f, -0.505748f, -0.505667f, -0.505586f, -0.505505f, -0.505424f, -0.505343f, -0.505262f, -0.505181f, -0.5051f, -0.505019f, -0.504937f, -0.504856f, -0.504775f, -0.504694f,
--0.504613f, -0.504532f, -0.50445f, -0.504369f, -0.504288f, -0.504207f, -0.504126f, -0.504044f, -0.503963f, -0.503882f, -0.503801f, -0.50372f, -0.503638f, -0.503557f, -0.503476f, -0.503395f, -0.503313f, -0.503232f, -0.503151f, -0.503069f,
--0.502988f, -0.502907f, -0.502825f, -0.502744f, -0.502663f, -0.502581f, -0.5025f, -0.502419f, -0.502337f, -0.502256f, -0.502175f, -0.502093f, -0.502012f, -0.501931f, -0.501849f, -0.501768f, -0.501686f, -0.501605f, -0.501523f, -0.501442f,
--0.501361f, -0.501279f, -0.501198f, -0.501116f, -0.501035f, -0.500953f, -0.500872f, -0.50079f, -0.500709f, -0.500627f, -0.500546f, -0.500464f, -0.500383f, -0.500301f, -0.50022f, -0.500138f, -0.500057f, -0.499975f, -0.499893f, -0.499812f,
--0.49973f, -0.499649f, -0.499567f, -0.499485f, -0.499404f, -0.499322f, -0.499241f, -0.499159f, -0.499077f, -0.498996f, -0.498914f, -0.498832f, -0.498751f, -0.498669f, -0.498587f, -0.498506f, -0.498424f, -0.498342f, -0.498261f, -0.498179f,
--0.498097f, -0.498015f, -0.497934f, -0.497852f, -0.49777f, -0.497688f, -0.497607f, -0.497525f, -0.497443f, -0.497361f, -0.49728f, -0.497198f, -0.497116f, -0.497034f, -0.496952f, -0.496871f, -0.496789f, -0.496707f, -0.496625f, -0.496543f,
--0.496461f, -0.496379f, -0.496298f, -0.496216f, -0.496134f, -0.496052f, -0.49597f, -0.495888f, -0.495806f, -0.495724f, -0.495642f, -0.49556f, -0.495479f, -0.495397f, -0.495315f, -0.495233f, -0.495151f, -0.495069f, -0.494987f, -0.494905f,
--0.494823f, -0.494741f, -0.494659f, -0.494577f, -0.494495f, -0.494413f, -0.494331f, -0.494249f, -0.494167f, -0.494084f, -0.494002f, -0.49392f, -0.493838f, -0.493756f, -0.493674f, -0.493592f, -0.49351f, -0.493428f, -0.493346f, -0.493263f,
--0.493181f, -0.493099f, -0.493017f, -0.492935f, -0.492853f, -0.492771f, -0.492688f, -0.492606f, -0.492524f, -0.492442f, -0.49236f, -0.492277f, -0.492195f, -0.492113f, -0.492031f, -0.491949f, -0.491866f, -0.491784f, -0.491702f, -0.49162f,
--0.491537f, -0.491455f, -0.491373f, -0.49129f, -0.491208f, -0.491126f, -0.491043f, -0.490961f, -0.490879f, -0.490796f, -0.490714f, -0.490632f, -0.490549f, -0.490467f, -0.490385f, -0.490302f, -0.49022f, -0.490138f, -0.490055f, -0.489973f,
--0.48989f, -0.489808f, -0.489726f, -0.489643f, -0.489561f, -0.489478f, -0.489396f, -0.489313f, -0.489231f, -0.489148f, -0.489066f, -0.488983f, -0.488901f, -0.488818f, -0.488736f, -0.488653f, -0.488571f, -0.488488f, -0.488406f, -0.488323f,
--0.488241f, -0.488158f, -0.488076f, -0.487993f, -0.487911f, -0.487828f, -0.487745f, -0.487663f, -0.48758f, -0.487498f, -0.487415f, -0.487332f, -0.48725f, -0.487167f, -0.487084f, -0.487002f, -0.486919f, -0.486837f, -0.486754f, -0.486671f,
--0.486589f, -0.486506f, -0.486423f, -0.48634f, -0.486258f, -0.486175f, -0.486092f, -0.48601f, -0.485927f, -0.485844f, -0.485761f, -0.485679f, -0.485596f, -0.485513f, -0.48543f, -0.485348f, -0.485265f, -0.485182f, -0.485099f, -0.485016f,
--0.484934f, -0.484851f, -0.484768f, -0.484685f, -0.484602f, -0.484519f, -0.484436f, -0.484354f, -0.484271f, -0.484188f, -0.484105f, -0.484022f, -0.483939f, -0.483856f, -0.483773f, -0.48369f, -0.483608f, -0.483525f, -0.483442f, -0.483359f,
--0.483276f, -0.483193f, -0.48311f, -0.483027f, -0.482944f, -0.482861f, -0.482778f, -0.482695f, -0.482612f, -0.482529f, -0.482446f, -0.482363f, -0.48228f, -0.482197f, -0.482114f, -0.482031f, -0.481948f, -0.481865f, -0.481782f, -0.481698f,
--0.481615f, -0.481532f, -0.481449f, -0.481366f, -0.481283f, -0.4812f, -0.481117f, -0.481034f, -0.48095f, -0.480867f, -0.480784f, -0.480701f, -0.480618f, -0.480535f, -0.480452f, -0.480368f, -0.480285f, -0.480202f, -0.480119f, -0.480036f,
--0.479952f, -0.479869f, -0.479786f, -0.479703f, -0.479619f, -0.479536f, -0.479453f, -0.47937f, -0.479286f, -0.479203f, -0.47912f, -0.479036f, -0.478953f, -0.47887f, -0.478787f, -0.478703f, -0.47862f, -0.478537f, -0.478453f, -0.47837f,
--0.478287f, -0.478203f, -0.47812f, -0.478036f, -0.477953f, -0.47787f, -0.477786f, -0.477703f, -0.477619f, -0.477536f, -0.477453f, -0.477369f, -0.477286f, -0.477202f, -0.477119f, -0.477035f, -0.476952f, -0.476869f, -0.476785f, -0.476702f,
--0.476618f, -0.476535f, -0.476451f, -0.476368f, -0.476284f, -0.476201f, -0.476117f, -0.476034f, -0.47595f, -0.475866f, -0.475783f, -0.475699f, -0.475616f, -0.475532f, -0.475449f, -0.475365f, -0.475281f, -0.475198f, -0.475114f, -0.475031f,
--0.474947f, -0.474863f, -0.47478f, -0.474696f, -0.474612f, -0.474529f, -0.474445f, -0.474362f, -0.474278f, -0.474194f, -0.47411f, -0.474027f, -0.473943f, -0.473859f, -0.473776f, -0.473692f, -0.473608f, -0.473525f, -0.473441f, -0.473357f,
--0.473273f, -0.47319f, -0.473106f, -0.473022f, -0.472938f, -0.472854f, -0.472771f, -0.472687f, -0.472603f, -0.472519f, -0.472435f, -0.472352f, -0.472268f, -0.472184f, -0.4721f, -0.472016f, -0.471932f, -0.471849f, -0.471765f, -0.471681f,
--0.471597f, -0.471513f, -0.471429f, -0.471345f, -0.471261f, -0.471177f, -0.471093f, -0.47101f, -0.470926f, -0.470842f, -0.470758f, -0.470674f, -0.47059f, -0.470506f, -0.470422f, -0.470338f, -0.470254f, -0.47017f, -0.470086f, -0.470002f,
--0.469918f, -0.469834f, -0.46975f, -0.469666f, -0.469582f, -0.469498f, -0.469414f, -0.46933f, -0.469246f, -0.469161f, -0.469077f, -0.468993f, -0.468909f, -0.468825f, -0.468741f, -0.468657f, -0.468573f, -0.468489f, -0.468405f, -0.46832f,
--0.468236f, -0.468152f, -0.468068f, -0.467984f, -0.4679f, -0.467815f, -0.467731f, -0.467647f, -0.467563f, -0.467479f, -0.467394f, -0.46731f, -0.467226f, -0.467142f, -0.467058f, -0.466973f, -0.466889f, -0.466805f, -0.466721f, -0.466636f,
--0.466552f, -0.466468f, -0.466383f, -0.466299f, -0.466215f, -0.466131f, -0.466046f, -0.465962f, -0.465878f, -0.465793f, -0.465709f, -0.465625f, -0.46554f, -0.465456f, -0.465371f, -0.465287f, -0.465203f, -0.465118f, -0.465034f, -0.46495f,
--0.464865f, -0.464781f, -0.464696f, -0.464612f, -0.464527f, -0.464443f, -0.464359f, -0.464274f, -0.46419f, -0.464105f, -0.464021f, -0.463936f, -0.463852f, -0.463767f, -0.463683f, -0.463598f, -0.463514f, -0.463429f, -0.463345f, -0.46326f,
--0.463176f, -0.463091f, -0.463007f, -0.462922f, -0.462837f, -0.462753f, -0.462668f, -0.462584f, -0.462499f, -0.462415f, -0.46233f, -0.462245f, -0.462161f, -0.462076f, -0.461992f, -0.461907f, -0.461822f, -0.461738f, -0.461653f, -0.461568f,
--0.461484f, -0.461399f, -0.461314f, -0.46123f, -0.461145f, -0.46106f, -0.460976f, -0.460891f, -0.460806f, -0.460721f, -0.460637f, -0.460552f, -0.460467f, -0.460382f, -0.460298f, -0.460213f, -0.460128f, -0.460043f, -0.459959f, -0.459874f,
--0.459789f, -0.459704f, -0.459619f, -0.459535f, -0.45945f, -0.459365f, -0.45928f, -0.459195f, -0.45911f, -0.459026f, -0.458941f, -0.458856f, -0.458771f, -0.458686f, -0.458601f, -0.458516f, -0.458431f, -0.458347f, -0.458262f, -0.458177f,
--0.458092f, -0.458007f, -0.457922f, -0.457837f, -0.457752f, -0.457667f, -0.457582f, -0.457497f, -0.457412f, -0.457327f, -0.457242f, -0.457157f, -0.457072f, -0.456987f, -0.456902f, -0.456817f, -0.456732f, -0.456647f, -0.456562f, -0.456477f,
--0.456392f, -0.456307f, -0.456222f, -0.456137f, -0.456052f, -0.455967f, -0.455882f, -0.455797f, -0.455711f, -0.455626f, -0.455541f, -0.455456f, -0.455371f, -0.455286f, -0.455201f, -0.455116f, -0.45503f, -0.454945f, -0.45486f, -0.454775f,
--0.45469f, -0.454605f, -0.454519f, -0.454434f, -0.454349f, -0.454264f, -0.454179f, -0.454093f, -0.454008f, -0.453923f, -0.453838f, -0.453752f, -0.453667f, -0.453582f, -0.453497f, -0.453411f, -0.453326f, -0.453241f, -0.453156f, -0.45307f,
--0.452985f, -0.4529f, -0.452814f, -0.452729f, -0.452644f, -0.452558f, -0.452473f, -0.452388f, -0.452302f, -0.452217f, -0.452132f, -0.452046f, -0.451961f, -0.451875f, -0.45179f, -0.451705f, -0.451619f, -0.451534f, -0.451448f, -0.451363f,
--0.451278f, -0.451192f, -0.451107f, -0.451021f, -0.450936f, -0.45085f, -0.450765f, -0.450679f, -0.450594f, -0.450508f, -0.450423f, -0.450337f, -0.450252f, -0.450166f, -0.450081f, -0.449995f, -0.44991f, -0.449824f, -0.449739f, -0.449653f,
--0.449568f, -0.449482f, -0.449397f, -0.449311f, -0.449225f, -0.44914f, -0.449054f, -0.448969f, -0.448883f, -0.448797f, -0.448712f, -0.448626f, -0.44854f, -0.448455f, -0.448369f, -0.448284f, -0.448198f, -0.448112f, -0.448027f, -0.447941f,
--0.447855f, -0.44777f, -0.447684f, -0.447598f, -0.447512f, -0.447427f, -0.447341f, -0.447255f, -0.44717f, -0.447084f, -0.446998f, -0.446912f, -0.446827f, -0.446741f, -0.446655f, -0.446569f, -0.446483f, -0.446398f, -0.446312f, -0.446226f,
--0.44614f, -0.446054f, -0.445969f, -0.445883f, -0.445797f, -0.445711f, -0.445625f, -0.445539f, -0.445454f, -0.445368f, -0.445282f, -0.445196f, -0.44511f, -0.445024f, -0.444938f, -0.444852f, -0.444767f, -0.444681f, -0.444595f, -0.444509f,
--0.444423f, -0.444337f, -0.444251f, -0.444165f, -0.444079f, -0.443993f, -0.443907f, -0.443821f, -0.443735f, -0.443649f, -0.443563f, -0.443477f, -0.443391f, -0.443305f, -0.443219f, -0.443133f, -0.443047f, -0.442961f, -0.442875f, -0.442789f,
--0.442703f, -0.442617f, -0.442531f, -0.442445f, -0.442359f, -0.442273f, -0.442186f, -0.4421f, -0.442014f, -0.441928f, -0.441842f, -0.441756f, -0.44167f, -0.441584f, -0.441498f, -0.441411f, -0.441325f, -0.441239f, -0.441153f, -0.441067f,
--0.440981f, -0.440894f, -0.440808f, -0.440722f, -0.440636f, -0.44055f, -0.440463f, -0.440377f, -0.440291f, -0.440205f, -0.440118f, -0.440032f, -0.439946f, -0.43986f, -0.439773f, -0.439687f, -0.439601f, -0.439515f, -0.439428f, -0.439342f,
--0.439256f, -0.439169f, -0.439083f, -0.438997f, -0.43891f, -0.438824f, -0.438738f, -0.438651f, -0.438565f, -0.438479f, -0.438392f, -0.438306f, -0.43822f, -0.438133f, -0.438047f, -0.43796f, -0.437874f, -0.437788f, -0.437701f, -0.437615f,
--0.437528f, -0.437442f, -0.437355f, -0.437269f, -0.437183f, -0.437096f, -0.43701f, -0.436923f, -0.436837f, -0.43675f, -0.436664f, -0.436577f, -0.436491f, -0.436404f, -0.436318f, -0.436231f, -0.436145f, -0.436058f, -0.435972f, -0.435885f,
--0.435799f, -0.435712f, -0.435625f, -0.435539f, -0.435452f, -0.435366f, -0.435279f, -0.435193f, -0.435106f, -0.435019f, -0.434933f, -0.434846f, -0.43476f, -0.434673f, -0.434586f, -0.4345f, -0.434413f, -0.434326f, -0.43424f, -0.434153f,
--0.434066f, -0.43398f, -0.433893f, -0.433806f, -0.43372f, -0.433633f, -0.433546f, -0.433459f, -0.433373f, -0.433286f, -0.433199f, -0.433113f, -0.433026f, -0.432939f, -0.432852f, -0.432766f, -0.432679f, -0.432592f, -0.432505f, -0.432418f,
--0.432332f, -0.432245f, -0.432158f, -0.432071f, -0.431984f, -0.431898f, -0.431811f, -0.431724f, -0.431637f, -0.43155f, -0.431463f, -0.431377f, -0.43129f, -0.431203f, -0.431116f, -0.431029f, -0.430942f, -0.430855f, -0.430768f, -0.430681f,
--0.430595f, -0.430508f, -0.430421f, -0.430334f, -0.430247f, -0.43016f, -0.430073f, -0.429986f, -0.429899f, -0.429812f, -0.429725f, -0.429638f, -0.429551f, -0.429464f, -0.429377f, -0.42929f, -0.429203f, -0.429116f, -0.429029f, -0.428942f,
--0.428855f, -0.428768f, -0.428681f, -0.428594f, -0.428507f, -0.42842f, -0.428333f, -0.428246f, -0.428159f, -0.428072f, -0.427984f, -0.427897f, -0.42781f, -0.427723f, -0.427636f, -0.427549f, -0.427462f, -0.427375f, -0.427287f, -0.4272f,
--0.427113f, -0.427026f, -0.426939f, -0.426852f, -0.426764f, -0.426677f, -0.42659f, -0.426503f, -0.426416f, -0.426329f, -0.426241f, -0.426154f, -0.426067f, -0.42598f, -0.425892f, -0.425805f, -0.425718f, -0.425631f, -0.425543f, -0.425456f,
--0.425369f, -0.425282f, -0.425194f, -0.425107f, -0.42502f, -0.424932f, -0.424845f, -0.424758f, -0.42467f, -0.424583f, -0.424496f, -0.424408f, -0.424321f, -0.424234f, -0.424146f, -0.424059f, -0.423972f, -0.423884f, -0.423797f, -0.42371f,
--0.423622f, -0.423535f, -0.423447f, -0.42336f, -0.423273f, -0.423185f, -0.423098f, -0.42301f, -0.422923f, -0.422835f, -0.422748f, -0.42266f, -0.422573f, -0.422486f, -0.422398f, -0.422311f, -0.422223f, -0.422136f, -0.422048f, -0.421961f,
--0.421873f, -0.421786f, -0.421698f, -0.421611f, -0.421523f, -0.421435f, -0.421348f, -0.42126f, -0.421173f, -0.421085f, -0.420998f, -0.42091f, -0.420822f, -0.420735f, -0.420647f, -0.42056f, -0.420472f, -0.420384f, -0.420297f, -0.420209f,
--0.420122f, -0.420034f, -0.419946f, -0.419859f, -0.419771f, -0.419683f, -0.419596f, -0.419508f, -0.41942f, -0.419333f, -0.419245f, -0.419157f, -0.41907f, -0.418982f, -0.418894f, -0.418806f, -0.418719f, -0.418631f, -0.418543f, -0.418456f,
--0.418368f, -0.41828f, -0.418192f, -0.418105f, -0.418017f, -0.417929f, -0.417841f, -0.417753f, -0.417666f, -0.417578f, -0.41749f, -0.417402f, -0.417314f, -0.417227f, -0.417139f, -0.417051f, -0.416963f, -0.416875f, -0.416787f, -0.416699f,
--0.416612f, -0.416524f, -0.416436f, -0.416348f, -0.41626f, -0.416172f, -0.416084f, -0.415996f, -0.415909f, -0.415821f, -0.415733f, -0.415645f, -0.415557f, -0.415469f, -0.415381f, -0.415293f, -0.415205f, -0.415117f, -0.415029f, -0.414941f,
--0.414853f, -0.414765f, -0.414677f, -0.414589f, -0.414501f, -0.414413f, -0.414325f, -0.414237f, -0.414149f, -0.414061f, -0.413973f, -0.413885f, -0.413797f, -0.413709f, -0.413621f, -0.413533f, -0.413445f, -0.413357f, -0.413268f, -0.41318f,
--0.413092f, -0.413004f, -0.412916f, -0.412828f, -0.41274f, -0.412652f, -0.412564f, -0.412475f, -0.412387f, -0.412299f, -0.412211f, -0.412123f, -0.412035f, -0.411946f, -0.411858f, -0.41177f, -0.411682f, -0.411594f, -0.411506f, -0.411417f,
--0.411329f, -0.411241f, -0.411153f, -0.411064f, -0.410976f, -0.410888f, -0.4108f, -0.410711f, -0.410623f, -0.410535f, -0.410447f, -0.410358f, -0.41027f, -0.410182f, -0.410094f, -0.410005f, -0.409917f, -0.409829f, -0.40974f, -0.409652f,
--0.409564f, -0.409475f, -0.409387f, -0.409299f, -0.40921f, -0.409122f, -0.409034f, -0.408945f, -0.408857f, -0.408768f, -0.40868f, -0.408592f, -0.408503f, -0.408415f, -0.408326f, -0.408238f, -0.40815f, -0.408061f, -0.407973f, -0.407884f,
--0.407796f, -0.407707f, -0.407619f, -0.40753f, -0.407442f, -0.407354f, -0.407265f, -0.407177f, -0.407088f, -0.407f, -0.406911f, -0.406823f, -0.406734f, -0.406646f, -0.406557f, -0.406468f, -0.40638f, -0.406291f, -0.406203f, -0.406114f,
--0.406026f, -0.405937f, -0.405849f, -0.40576f, -0.405671f, -0.405583f, -0.405494f, -0.405406f, -0.405317f, -0.405228f, -0.40514f, -0.405051f, -0.404963f, -0.404874f, -0.404785f, -0.404697f, -0.404608f, -0.404519f, -0.404431f, -0.404342f,
--0.404253f, -0.404165f, -0.404076f, -0.403987f, -0.403899f, -0.40381f, -0.403721f, -0.403632f, -0.403544f, -0.403455f, -0.403366f, -0.403278f, -0.403189f, -0.4031f, -0.403011f, -0.402923f, -0.402834f, -0.402745f, -0.402656f, -0.402567f,
--0.402479f, -0.40239f, -0.402301f, -0.402212f, -0.402123f, -0.402035f, -0.401946f, -0.401857f, -0.401768f, -0.401679f, -0.401591f, -0.401502f, -0.401413f, -0.401324f, -0.401235f, -0.401146f, -0.401057f, -0.400968f, -0.40088f, -0.400791f,
--0.400702f, -0.400613f, -0.400524f, -0.400435f, -0.400346f, -0.400257f, -0.400168f, -0.400079f, -0.39999f, -0.399901f, -0.399812f, -0.399724f, -0.399635f, -0.399546f, -0.399457f, -0.399368f, -0.399279f, -0.39919f, -0.399101f, -0.399012f,
--0.398923f, -0.398834f, -0.398745f, -0.398656f, -0.398566f, -0.398477f, -0.398388f, -0.398299f, -0.39821f, -0.398121f, -0.398032f, -0.397943f, -0.397854f, -0.397765f, -0.397676f, -0.397587f, -0.397498f, -0.397409f, -0.397319f, -0.39723f,
--0.397141f, -0.397052f, -0.396963f, -0.396874f, -0.396785f, -0.396695f, -0.396606f, -0.396517f, -0.396428f, -0.396339f, -0.39625f, -0.39616f, -0.396071f, -0.395982f, -0.395893f, -0.395804f, -0.395714f, -0.395625f, -0.395536f, -0.395447f,
--0.395357f, -0.395268f, -0.395179f, -0.39509f, -0.395f, -0.394911f, -0.394822f, -0.394733f, -0.394643f, -0.394554f, -0.394465f, -0.394376f, -0.394286f, -0.394197f, -0.394108f, -0.394018f, -0.393929f, -0.39384f, -0.39375f, -0.393661f,
--0.393572f, -0.393482f, -0.393393f, -0.393303f, -0.393214f, -0.393125f, -0.393035f, -0.392946f, -0.392857f, -0.392767f, -0.392678f, -0.392588f, -0.392499f, -0.39241f, -0.39232f, -0.392231f, -0.392141f, -0.392052f, -0.391962f, -0.391873f,
--0.391783f, -0.391694f, -0.391605f, -0.391515f, -0.391426f, -0.391336f, -0.391247f, -0.391157f, -0.391068f, -0.390978f, -0.390889f, -0.390799f, -0.390709f, -0.39062f, -0.39053f, -0.390441f, -0.390351f, -0.390262f, -0.390172f, -0.390083f,
--0.389993f, -0.389904f, -0.389814f, -0.389724f, -0.389635f, -0.389545f, -0.389456f, -0.389366f, -0.389276f, -0.389187f, -0.389097f, -0.389007f, -0.388918f, -0.388828f, -0.388739f, -0.388649f, -0.388559f, -0.38847f, -0.38838f, -0.38829f,
--0.388201f, -0.388111f, -0.388021f, -0.387931f, -0.387842f, -0.387752f, -0.387662f, -0.387573f, -0.387483f, -0.387393f, -0.387303f, -0.387214f, -0.387124f, -0.387034f, -0.386944f, -0.386855f, -0.386765f, -0.386675f, -0.386585f, -0.386496f,
--0.386406f, -0.386316f, -0.386226f, -0.386136f, -0.386047f, -0.385957f, -0.385867f, -0.385777f, -0.385687f, -0.385597f, -0.385508f, -0.385418f, -0.385328f, -0.385238f, -0.385148f, -0.385058f, -0.384968f, -0.384879f, -0.384789f, -0.384699f,
--0.384609f, -0.384519f, -0.384429f, -0.384339f, -0.384249f, -0.384159f, -0.384069f, -0.383979f, -0.383889f, -0.3838f, -0.38371f, -0.38362f, -0.38353f, -0.38344f, -0.38335f, -0.38326f, -0.38317f, -0.38308f, -0.38299f, -0.3829f,
--0.38281f, -0.38272f, -0.38263f, -0.38254f, -0.38245f, -0.38236f, -0.38227f, -0.38218f, -0.38209f, -0.381999f, -0.381909f, -0.381819f, -0.381729f, -0.381639f, -0.381549f, -0.381459f, -0.381369f, -0.381279f, -0.381189f, -0.381099f,
--0.381008f, -0.380918f, -0.380828f, -0.380738f, -0.380648f, -0.380558f, -0.380468f, -0.380378f, -0.380287f, -0.380197f, -0.380107f, -0.380017f, -0.379927f, -0.379837f, -0.379746f, -0.379656f, -0.379566f, -0.379476f, -0.379386f, -0.379295f,
--0.379205f, -0.379115f, -0.379025f, -0.378934f, -0.378844f, -0.378754f, -0.378664f, -0.378573f, -0.378483f, -0.378393f, -0.378303f, -0.378212f, -0.378122f, -0.378032f, -0.377941f, -0.377851f, -0.377761f, -0.37767f, -0.37758f, -0.37749f,
--0.377399f, -0.377309f, -0.377219f, -0.377128f, -0.377038f, -0.376948f, -0.376857f, -0.376767f, -0.376677f, -0.376586f, -0.376496f, -0.376406f, -0.376315f, -0.376225f, -0.376134f, -0.376044f, -0.375953f, -0.375863f, -0.375773f, -0.375682f,
--0.375592f, -0.375501f, -0.375411f, -0.37532f, -0.37523f, -0.37514f, -0.375049f, -0.374959f, -0.374868f, -0.374778f, -0.374687f, -0.374597f, -0.374506f, -0.374416f, -0.374325f, -0.374235f, -0.374144f, -0.374054f, -0.373963f, -0.373872f,
--0.373782f, -0.373691f, -0.373601f, -0.37351f, -0.37342f, -0.373329f, -0.373239f, -0.373148f, -0.373057f, -0.372967f, -0.372876f, -0.372786f, -0.372695f, -0.372604f, -0.372514f, -0.372423f, -0.372333f, -0.372242f, -0.372151f, -0.372061f,
--0.37197f, -0.371879f, -0.371789f, -0.371698f, -0.371607f, -0.371517f, -0.371426f, -0.371335f, -0.371245f, -0.371154f, -0.371063f, -0.370973f, -0.370882f, -0.370791f, -0.3707f, -0.37061f, -0.370519f, -0.370428f, -0.370337f, -0.370247f,
--0.370156f, -0.370065f, -0.369974f, -0.369884f, -0.369793f, -0.369702f, -0.369611f, -0.36952f, -0.36943f, -0.369339f, -0.369248f, -0.369157f, -0.369066f, -0.368976f, -0.368885f, -0.368794f, -0.368703f, -0.368612f, -0.368521f, -0.368431f,
--0.36834f, -0.368249f, -0.368158f, -0.368067f, -0.367976f, -0.367885f, -0.367794f, -0.367704f, -0.367613f, -0.367522f, -0.367431f, -0.36734f, -0.367249f, -0.367158f, -0.367067f, -0.366976f, -0.366885f, -0.366794f, -0.366703f, -0.366612f,
--0.366521f, -0.366431f, -0.36634f, -0.366249f, -0.366158f, -0.366067f, -0.365976f, -0.365885f, -0.365794f, -0.365703f, -0.365612f, -0.365521f, -0.36543f, -0.365339f, -0.365247f, -0.365156f, -0.365065f, -0.364974f, -0.364883f, -0.364792f,
--0.364701f, -0.36461f, -0.364519f, -0.364428f, -0.364337f, -0.364246f, -0.364155f, -0.364064f, -0.363972f, -0.363881f, -0.36379f, -0.363699f, -0.363608f, -0.363517f, -0.363426f, -0.363335f, -0.363243f, -0.363152f, -0.363061f, -0.36297f,
--0.362879f, -0.362788f, -0.362696f, -0.362605f, -0.362514f, -0.362423f, -0.362332f, -0.36224f, -0.362149f, -0.362058f, -0.361967f, -0.361876f, -0.361784f, -0.361693f, -0.361602f, -0.361511f, -0.361419f, -0.361328f, -0.361237f, -0.361146f,
--0.361054f, -0.360963f, -0.360872f, -0.36078f, -0.360689f, -0.360598f, -0.360507f, -0.360415f, -0.360324f, -0.360233f, -0.360141f, -0.36005f, -0.359959f, -0.359867f, -0.359776f, -0.359685f, -0.359593f, -0.359502f, -0.35941f, -0.359319f,
--0.359228f, -0.359136f, -0.359045f, -0.358954f, -0.358862f, -0.358771f, -0.358679f, -0.358588f, -0.358497f, -0.358405f, -0.358314f, -0.358222f, -0.358131f, -0.358039f, -0.357948f, -0.357857f, -0.357765f, -0.357674f, -0.357582f, -0.357491f,
--0.357399f, -0.357308f, -0.357216f, -0.357125f, -0.357033f, -0.356942f, -0.35685f, -0.356759f, -0.356667f, -0.356576f, -0.356484f, -0.356393f, -0.356301f, -0.35621f, -0.356118f, -0.356026f, -0.355935f, -0.355843f, -0.355752f, -0.35566f,
--0.355569f, -0.355477f, -0.355385f, -0.355294f, -0.355202f, -0.355111f, -0.355019f, -0.354927f, -0.354836f, -0.354744f, -0.354653f, -0.354561f, -0.354469f, -0.354378f, -0.354286f, -0.354194f, -0.354103f, -0.354011f, -0.353919f, -0.353828f,
--0.353736f, -0.353644f, -0.353553f, -0.353461f, -0.353369f, -0.353277f, -0.353186f, -0.353094f, -0.353002f, -0.352911f, -0.352819f, -0.352727f, -0.352635f, -0.352544f, -0.352452f, -0.35236f, -0.352268f, -0.352177f, -0.352085f, -0.351993f,
--0.351901f, -0.35181f, -0.351718f, -0.351626f, -0.351534f, -0.351442f, -0.351351f, -0.351259f, -0.351167f, -0.351075f, -0.350983f, -0.350891f, -0.3508f, -0.350708f, -0.350616f, -0.350524f, -0.350432f, -0.35034f, -0.350248f, -0.350157f,
--0.350065f, -0.349973f, -0.349881f, -0.349789f, -0.349697f, -0.349605f, -0.349513f, -0.349421f, -0.349329f, -0.349238f, -0.349146f, -0.349054f, -0.348962f, -0.34887f, -0.348778f, -0.348686f, -0.348594f, -0.348502f, -0.34841f, -0.348318f,
--0.348226f, -0.348134f, -0.348042f, -0.34795f, -0.347858f, -0.347766f, -0.347674f, -0.347582f, -0.34749f, -0.347398f, -0.347306f, -0.347214f, -0.347122f, -0.34703f, -0.346938f, -0.346846f, -0.346754f, -0.346662f, -0.34657f, -0.346477f,
--0.346385f, -0.346293f, -0.346201f, -0.346109f, -0.346017f, -0.345925f, -0.345833f, -0.345741f, -0.345649f, -0.345556f, -0.345464f, -0.345372f, -0.34528f, -0.345188f, -0.345096f, -0.345004f, -0.344911f, -0.344819f, -0.344727f, -0.344635f,
--0.344543f, -0.344451f, -0.344358f, -0.344266f, -0.344174f, -0.344082f, -0.34399f, -0.343897f, -0.343805f, -0.343713f, -0.343621f, -0.343529f, -0.343436f, -0.343344f, -0.343252f, -0.34316f, -0.343067f, -0.342975f, -0.342883f, -0.342791f,
--0.342698f, -0.342606f, -0.342514f, -0.342421f, -0.342329f, -0.342237f, -0.342145f, -0.342052f, -0.34196f, -0.341868f, -0.341775f, -0.341683f, -0.341591f, -0.341498f, -0.341406f, -0.341314f, -0.341221f, -0.341129f, -0.341036f, -0.340944f,
--0.340852f, -0.340759f, -0.340667f, -0.340575f, -0.340482f, -0.34039f, -0.340297f, -0.340205f, -0.340113f, -0.34002f, -0.339928f, -0.339835f, -0.339743f, -0.33965f, -0.339558f, -0.339466f, -0.339373f, -0.339281f, -0.339188f, -0.339096f,
--0.339003f, -0.338911f, -0.338818f, -0.338726f, -0.338633f, -0.338541f, -0.338448f, -0.338356f, -0.338263f, -0.338171f, -0.338078f, -0.337986f, -0.337893f, -0.337801f, -0.337708f, -0.337616f, -0.337523f, -0.337431f, -0.337338f, -0.337245f,
--0.337153f, -0.33706f, -0.336968f, -0.336875f, -0.336783f, -0.33669f, -0.336597f, -0.336505f, -0.336412f, -0.33632f, -0.336227f, -0.336134f, -0.336042f, -0.335949f, -0.335856f, -0.335764f, -0.335671f, -0.335579f, -0.335486f, -0.335393f,
--0.335301f, -0.335208f, -0.335115f, -0.335023f, -0.33493f, -0.334837f, -0.334744f, -0.334652f, -0.334559f, -0.334466f, -0.334374f, -0.334281f, -0.334188f, -0.334096f, -0.334003f, -0.33391f, -0.333817f, -0.333725f, -0.333632f, -0.333539f,
--0.333446f, -0.333354f, -0.333261f, -0.333168f, -0.333075f, -0.332982f, -0.33289f, -0.332797f, -0.332704f, -0.332611f, -0.332518f, -0.332426f, -0.332333f, -0.33224f, -0.332147f, -0.332054f, -0.331962f, -0.331869f, -0.331776f, -0.331683f,
--0.33159f, -0.331497f, -0.331404f, -0.331312f, -0.331219f, -0.331126f, -0.331033f, -0.33094f, -0.330847f, -0.330754f, -0.330661f, -0.330568f, -0.330476f, -0.330383f, -0.33029f, -0.330197f, -0.330104f, -0.330011f, -0.329918f, -0.329825f,
--0.329732f, -0.329639f, -0.329546f, -0.329453f, -0.32936f, -0.329267f, -0.329174f, -0.329081f, -0.328988f, -0.328895f, -0.328802f, -0.328709f, -0.328616f, -0.328523f, -0.32843f, -0.328337f, -0.328244f, -0.328151f, -0.328058f, -0.327965f,
--0.327872f, -0.327779f, -0.327686f, -0.327593f, -0.3275f, -0.327407f, -0.327314f, -0.327221f, -0.327128f, -0.327035f, -0.326941f, -0.326848f, -0.326755f, -0.326662f, -0.326569f, -0.326476f, -0.326383f, -0.32629f, -0.326197f, -0.326103f,
--0.32601f, -0.325917f, -0.325824f, -0.325731f, -0.325638f, -0.325545f, -0.325451f, -0.325358f, -0.325265f, -0.325172f, -0.325079f, -0.324986f, -0.324892f, -0.324799f, -0.324706f, -0.324613f, -0.32452f, -0.324426f, -0.324333f, -0.32424f,
--0.324147f, -0.324053f, -0.32396f, -0.323867f, -0.323774f, -0.32368f, -0.323587f, -0.323494f, -0.323401f, -0.323307f, -0.323214f, -0.323121f, -0.323028f, -0.322934f, -0.322841f, -0.322748f, -0.322654f, -0.322561f, -0.322468f, -0.322374f,
--0.322281f, -0.322188f, -0.322094f, -0.322001f, -0.321908f, -0.321814f, -0.321721f, -0.321628f, -0.321534f, -0.321441f, -0.321348f, -0.321254f, -0.321161f, -0.321068f, -0.320974f, -0.320881f, -0.320787f, -0.320694f, -0.320601f, -0.320507f,
--0.320414f, -0.32032f, -0.320227f, -0.320133f, -0.32004f, -0.319947f, -0.319853f, -0.31976f, -0.319666f, -0.319573f, -0.319479f, -0.319386f, -0.319292f, -0.319199f, -0.319105f, -0.319012f, -0.318918f, -0.318825f, -0.318731f, -0.318638f,
--0.318544f, -0.318451f, -0.318357f, -0.318264f, -0.31817f, -0.318077f, -0.317983f, -0.31789f, -0.317796f, -0.317703f, -0.317609f, -0.317516f, -0.317422f, -0.317329f, -0.317235f, -0.317141f, -0.317048f, -0.316954f, -0.316861f, -0.316767f,
--0.316673f, -0.31658f, -0.316486f, -0.316393f, -0.316299f, -0.316205f, -0.316112f, -0.316018f, -0.315924f, -0.315831f, -0.315737f, -0.315644f, -0.31555f, -0.315456f, -0.315363f, -0.315269f, -0.315175f, -0.315082f, -0.314988f, -0.314894f,
--0.314801f, -0.314707f, -0.314613f, -0.314519f, -0.314426f, -0.314332f, -0.314238f, -0.314145f, -0.314051f, -0.313957f, -0.313863f, -0.31377f, -0.313676f, -0.313582f, -0.313488f, -0.313395f, -0.313301f, -0.313207f, -0.313113f, -0.31302f,
--0.312926f, -0.312832f, -0.312738f, -0.312644f, -0.312551f, -0.312457f, -0.312363f, -0.312269f, -0.312175f, -0.312082f, -0.311988f, -0.311894f, -0.3118f, -0.311706f, -0.311613f, -0.311519f, -0.311425f, -0.311331f, -0.311237f, -0.311143f,
--0.311049f, -0.310955f, -0.310862f, -0.310768f, -0.310674f, -0.31058f, -0.310486f, -0.310392f, -0.310298f, -0.310204f, -0.31011f, -0.310017f, -0.309923f, -0.309829f, -0.309735f, -0.309641f, -0.309547f, -0.309453f, -0.309359f, -0.309265f,
--0.309171f, -0.309077f, -0.308983f, -0.308889f, -0.308795f, -0.308701f, -0.308607f, -0.308513f, -0.308419f, -0.308325f, -0.308231f, -0.308137f, -0.308043f, -0.307949f, -0.307855f, -0.307761f, -0.307667f, -0.307573f, -0.307479f, -0.307385f,
--0.307291f, -0.307197f, -0.307103f, -0.307009f, -0.306915f, -0.306821f, -0.306727f, -0.306633f, -0.306539f, -0.306444f, -0.30635f, -0.306256f, -0.306162f, -0.306068f, -0.305974f, -0.30588f, -0.305786f, -0.305692f, -0.305597f, -0.305503f,
--0.305409f, -0.305315f, -0.305221f, -0.305127f, -0.305033f, -0.304938f, -0.304844f, -0.30475f, -0.304656f, -0.304562f, -0.304468f, -0.304373f, -0.304279f, -0.304185f, -0.304091f, -0.303997f, -0.303902f, -0.303808f, -0.303714f, -0.30362f,
--0.303526f, -0.303431f, -0.303337f, -0.303243f, -0.303149f, -0.303054f, -0.30296f, -0.302866f, -0.302772f, -0.302677f, -0.302583f, -0.302489f, -0.302395f, -0.3023f, -0.302206f, -0.302112f, -0.302017f, -0.301923f, -0.301829f, -0.301735f,
--0.30164f, -0.301546f, -0.301452f, -0.301357f, -0.301263f, -0.301169f, -0.301074f, -0.30098f, -0.300886f, -0.300791f, -0.300697f, -0.300603f, -0.300508f, -0.300414f, -0.300319f, -0.300225f, -0.300131f, -0.300036f, -0.299942f, -0.299848f,
--0.299753f, -0.299659f, -0.299564f, -0.29947f, -0.299376f, -0.299281f, -0.299187f, -0.299092f, -0.298998f, -0.298903f, -0.298809f, -0.298715f, -0.29862f, -0.298526f, -0.298431f, -0.298337f, -0.298242f, -0.298148f, -0.298053f, -0.297959f,
--0.297864f, -0.29777f, -0.297675f, -0.297581f, -0.297486f, -0.297392f, -0.297297f, -0.297203f, -0.297108f, -0.297014f, -0.296919f, -0.296825f, -0.29673f, -0.296636f, -0.296541f, -0.296447f, -0.296352f, -0.296258f, -0.296163f, -0.296068f,
--0.295974f, -0.295879f, -0.295785f, -0.29569f, -0.295596f, -0.295501f, -0.295406f, -0.295312f, -0.295217f, -0.295123f, -0.295028f, -0.294933f, -0.294839f, -0.294744f, -0.294649f, -0.294555f, -0.29446f, -0.294366f, -0.294271f, -0.294176f,
--0.294082f, -0.293987f, -0.293892f, -0.293798f, -0.293703f, -0.293608f, -0.293514f, -0.293419f, -0.293324f, -0.293229f, -0.293135f, -0.29304f, -0.292945f, -0.292851f, -0.292756f, -0.292661f, -0.292567f, -0.292472f, -0.292377f, -0.292282f,
--0.292188f, -0.292093f, -0.291998f, -0.291903f, -0.291809f, -0.291714f, -0.291619f, -0.291524f, -0.29143f, -0.291335f, -0.29124f, -0.291145f, -0.29105f, -0.290956f, -0.290861f, -0.290766f, -0.290671f, -0.290576f, -0.290482f, -0.290387f,
--0.290292f, -0.290197f, -0.290102f, -0.290007f, -0.289913f, -0.289818f, -0.289723f, -0.289628f, -0.289533f, -0.289438f, -0.289344f, -0.289249f, -0.289154f, -0.289059f, -0.288964f, -0.288869f, -0.288774f, -0.288679f, -0.288584f, -0.28849f,
--0.288395f, -0.2883f, -0.288205f, -0.28811f, -0.288015f, -0.28792f, -0.287825f, -0.28773f, -0.287635f, -0.28754f, -0.287445f, -0.28735f, -0.287255f, -0.28716f, -0.287066f, -0.286971f, -0.286876f, -0.286781f, -0.286686f, -0.286591f,
--0.286496f, -0.286401f, -0.286306f, -0.286211f, -0.286116f, -0.286021f, -0.285926f, -0.285831f, -0.285736f, -0.285641f, -0.285546f, -0.28545f, -0.285355f, -0.28526f, -0.285165f, -0.28507f, -0.284975f, -0.28488f, -0.284785f, -0.28469f,
--0.284595f, -0.2845f, -0.284405f, -0.28431f, -0.284215f, -0.28412f, -0.284024f, -0.283929f, -0.283834f, -0.283739f, -0.283644f, -0.283549f, -0.283454f, -0.283359f, -0.283264f, -0.283168f, -0.283073f, -0.282978f, -0.282883f, -0.282788f,
--0.282693f, -0.282598f, -0.282502f, -0.282407f, -0.282312f, -0.282217f, -0.282122f, -0.282026f, -0.281931f, -0.281836f, -0.281741f, -0.281646f, -0.281551f, -0.281455f, -0.28136f, -0.281265f, -0.28117f, -0.281074f, -0.280979f, -0.280884f,
--0.280789f, -0.280693f, -0.280598f, -0.280503f, -0.280408f, -0.280312f, -0.280217f, -0.280122f, -0.280027f, -0.279931f, -0.279836f, -0.279741f, -0.279646f, -0.27955f, -0.279455f, -0.27936f, -0.279264f, -0.279169f, -0.279074f, -0.278978f,
--0.278883f, -0.278788f, -0.278693f, -0.278597f, -0.278502f, -0.278407f, -0.278311f, -0.278216f, -0.27812f, -0.278025f, -0.27793f, -0.277834f, -0.277739f, -0.277644f, -0.277548f, -0.277453f, -0.277358f, -0.277262f, -0.277167f, -0.277071f,
--0.276976f, -0.276881f, -0.276785f, -0.27669f, -0.276594f, -0.276499f, -0.276403f, -0.276308f, -0.276213f, -0.276117f, -0.276022f, -0.275926f, -0.275831f, -0.275735f, -0.27564f, -0.275544f, -0.275449f, -0.275354f, -0.275258f, -0.275163f,
--0.275067f, -0.274972f, -0.274876f, -0.274781f, -0.274685f, -0.27459f, -0.274494f, -0.274399f, -0.274303f, -0.274208f, -0.274112f, -0.274017f, -0.273921f, -0.273826f, -0.27373f, -0.273634f, -0.273539f, -0.273443f, -0.273348f, -0.273252f,
--0.273157f, -0.273061f, -0.272966f, -0.27287f, -0.272774f, -0.272679f, -0.272583f, -0.272488f, -0.272392f, -0.272297f, -0.272201f, -0.272105f, -0.27201f, -0.271914f, -0.271818f, -0.271723f, -0.271627f, -0.271532f, -0.271436f, -0.27134f,
--0.271245f, -0.271149f, -0.271053f, -0.270958f, -0.270862f, -0.270766f, -0.270671f, -0.270575f, -0.270479f, -0.270384f, -0.270288f, -0.270192f, -0.270097f, -0.270001f, -0.269905f, -0.26981f, -0.269714f, -0.269618f, -0.269523f, -0.269427f,
--0.269331f, -0.269235f, -0.26914f, -0.269044f, -0.268948f, -0.268852f, -0.268757f, -0.268661f, -0.268565f, -0.268469f, -0.268374f, -0.268278f, -0.268182f, -0.268086f, -0.267991f, -0.267895f, -0.267799f, -0.267703f, -0.267608f, -0.267512f,
--0.267416f, -0.26732f, -0.267224f, -0.267129f, -0.267033f, -0.266937f, -0.266841f, -0.266745f, -0.266649f, -0.266554f, -0.266458f, -0.266362f, -0.266266f, -0.26617f, -0.266074f, -0.265979f, -0.265883f, -0.265787f, -0.265691f, -0.265595f,
--0.265499f, -0.265403f, -0.265307f, -0.265212f, -0.265116f, -0.26502f, -0.264924f, -0.264828f, -0.264732f, -0.264636f, -0.26454f, -0.264444f, -0.264348f, -0.264253f, -0.264157f, -0.264061f, -0.263965f, -0.263869f, -0.263773f, -0.263677f,
--0.263581f, -0.263485f, -0.263389f, -0.263293f, -0.263197f, -0.263101f, -0.263005f, -0.262909f, -0.262813f, -0.262717f, -0.262621f, -0.262525f, -0.262429f, -0.262333f, -0.262237f, -0.262141f, -0.262045f, -0.261949f, -0.261853f, -0.261757f,
--0.261661f, -0.261565f, -0.261469f, -0.261373f, -0.261277f, -0.261181f, -0.261085f, -0.260989f, -0.260893f, -0.260797f, -0.260701f, -0.260605f, -0.260509f, -0.260412f, -0.260316f, -0.26022f, -0.260124f, -0.260028f, -0.259932f, -0.259836f,
--0.25974f, -0.259644f, -0.259548f, -0.259451f, -0.259355f, -0.259259f, -0.259163f, -0.259067f, -0.258971f, -0.258875f, -0.258779f, -0.258682f, -0.258586f, -0.25849f, -0.258394f, -0.258298f, -0.258202f, -0.258105f, -0.258009f, -0.257913f,
--0.257817f, -0.257721f, -0.257625f, -0.257528f, -0.257432f, -0.257336f, -0.25724f, -0.257144f, -0.257047f, -0.256951f, -0.256855f, -0.256759f, -0.256662f, -0.256566f, -0.25647f, -0.256374f, -0.256278f, -0.256181f, -0.256085f, -0.255989f,
--0.255893f, -0.255796f, -0.2557f, -0.255604f, -0.255507f, -0.255411f, -0.255315f, -0.255219f, -0.255122f, -0.255026f, -0.25493f, -0.254833f, -0.254737f, -0.254641f, -0.254545f, -0.254448f, -0.254352f, -0.254256f, -0.254159f, -0.254063f,
--0.253967f, -0.25387f, -0.253774f, -0.253678f, -0.253581f, -0.253485f, -0.253389f, -0.253292f, -0.253196f, -0.2531f, -0.253003f, -0.252907f, -0.25281f, -0.252714f, -0.252618f, -0.252521f, -0.252425f, -0.252328f, -0.252232f, -0.252136f,
--0.252039f, -0.251943f, -0.251846f, -0.25175f, -0.251654f, -0.251557f, -0.251461f, -0.251364f, -0.251268f, -0.251171f, -0.251075f, -0.250979f, -0.250882f, -0.250786f, -0.250689f, -0.250593f, -0.250496f, -0.2504f, -0.250303f, -0.250207f,
--0.25011f, -0.250014f, -0.249917f, -0.249821f, -0.249724f, -0.249628f, -0.249531f, -0.249435f, -0.249338f, -0.249242f, -0.249145f, -0.249049f, -0.248952f, -0.248856f, -0.248759f, -0.248663f, -0.248566f, -0.24847f, -0.248373f, -0.248277f,
--0.24818f, -0.248084f, -0.247987f, -0.24789f, -0.247794f, -0.247697f, -0.247601f, -0.247504f, -0.247408f, -0.247311f, -0.247214f, -0.247118f, -0.247021f, -0.246925f, -0.246828f, -0.246731f, -0.246635f, -0.246538f, -0.246442f, -0.246345f,
--0.246248f, -0.246152f, -0.246055f, -0.245958f, -0.245862f, -0.245765f, -0.245668f, -0.245572f, -0.245475f, -0.245379f, -0.245282f, -0.245185f, -0.245089f, -0.244992f, -0.244895f, -0.244798f, -0.244702f, -0.244605f, -0.244508f, -0.244412f,
--0.244315f, -0.244218f, -0.244122f, -0.244025f, -0.243928f, -0.243832f, -0.243735f, -0.243638f, -0.243541f, -0.243445f, -0.243348f, -0.243251f, -0.243154f, -0.243058f, -0.242961f, -0.242864f, -0.242767f, -0.242671f, -0.242574f, -0.242477f,
--0.24238f, -0.242284f, -0.242187f, -0.24209f, -0.241993f, -0.241896f, -0.2418f, -0.241703f, -0.241606f, -0.241509f, -0.241412f, -0.241316f, -0.241219f, -0.241122f, -0.241025f, -0.240928f, -0.240832f, -0.240735f, -0.240638f, -0.240541f,
--0.240444f, -0.240347f, -0.240251f, -0.240154f, -0.240057f, -0.23996f, -0.239863f, -0.239766f, -0.239669f, -0.239573f, -0.239476f, -0.239379f, -0.239282f, -0.239185f, -0.239088f, -0.238991f, -0.238894f, -0.238797f, -0.238701f, -0.238604f,
--0.238507f, -0.23841f, -0.238313f, -0.238216f, -0.238119f, -0.238022f, -0.237925f, -0.237828f, -0.237731f, -0.237634f, -0.237537f, -0.23744f, -0.237344f, -0.237247f, -0.23715f, -0.237053f, -0.236956f, -0.236859f, -0.236762f, -0.236665f,
--0.236568f, -0.236471f, -0.236374f, -0.236277f, -0.23618f, -0.236083f, -0.235986f, -0.235889f, -0.235792f, -0.235695f, -0.235598f, -0.235501f, -0.235404f, -0.235307f, -0.23521f, -0.235113f, -0.235016f, -0.234919f, -0.234822f, -0.234724f,
--0.234627f, -0.23453f, -0.234433f, -0.234336f, -0.234239f, -0.234142f, -0.234045f, -0.233948f, -0.233851f, -0.233754f, -0.233657f, -0.23356f, -0.233463f, -0.233365f, -0.233268f, -0.233171f, -0.233074f, -0.232977f, -0.23288f, -0.232783f,
--0.232686f, -0.232589f, -0.232491f, -0.232394f, -0.232297f, -0.2322f, -0.232103f, -0.232006f, -0.231909f, -0.231811f, -0.231714f, -0.231617f, -0.23152f, -0.231423f, -0.231326f, -0.231228f, -0.231131f, -0.231034f, -0.230937f, -0.23084f,
--0.230743f, -0.230645f, -0.230548f, -0.230451f, -0.230354f, -0.230257f, -0.230159f, -0.230062f, -0.229965f, -0.229868f, -0.22977f, -0.229673f, -0.229576f, -0.229479f, -0.229382f, -0.229284f, -0.229187f, -0.22909f, -0.228993f, -0.228895f,
--0.228798f, -0.228701f, -0.228604f, -0.228506f, -0.228409f, -0.228312f, -0.228214f, -0.228117f, -0.22802f, -0.227923f, -0.227825f, -0.227728f, -0.227631f, -0.227533f, -0.227436f, -0.227339f, -0.227241f, -0.227144f, -0.227047f, -0.22695f,
--0.226852f, -0.226755f, -0.226658f, -0.22656f, -0.226463f, -0.226366f, -0.226268f, -0.226171f, -0.226074f, -0.225976f, -0.225879f, -0.225781f, -0.225684f, -0.225587f, -0.225489f, -0.225392f, -0.225295f, -0.225197f, -0.2251f, -0.225002f,
--0.224905f, -0.224808f, -0.22471f, -0.224613f, -0.224515f, -0.224418f, -0.224321f, -0.224223f, -0.224126f, -0.224028f, -0.223931f, -0.223833f, -0.223736f, -0.223639f, -0.223541f, -0.223444f, -0.223346f, -0.223249f, -0.223151f, -0.223054f,
--0.222956f, -0.222859f, -0.222762f, -0.222664f, -0.222567f, -0.222469f, -0.222372f, -0.222274f, -0.222177f, -0.222079f, -0.221982f, -0.221884f, -0.221787f, -0.221689f, -0.221592f, -0.221494f, -0.221397f, -0.221299f, -0.221202f, -0.221104f,
--0.221007f, -0.220909f, -0.220812f, -0.220714f, -0.220616f, -0.220519f, -0.220421f, -0.220324f, -0.220226f, -0.220129f, -0.220031f, -0.219934f, -0.219836f, -0.219738f, -0.219641f, -0.219543f, -0.219446f, -0.219348f, -0.219251f, -0.219153f,
--0.219055f, -0.218958f, -0.21886f, -0.218763f, -0.218665f, -0.218567f, -0.21847f, -0.218372f, -0.218275f, -0.218177f, -0.218079f, -0.217982f, -0.217884f, -0.217786f, -0.217689f, -0.217591f, -0.217494f, -0.217396f, -0.217298f, -0.217201f,
--0.217103f, -0.217005f, -0.216908f, -0.21681f, -0.216712f, -0.216615f, -0.216517f, -0.216419f, -0.216322f, -0.216224f, -0.216126f, -0.216029f, -0.215931f, -0.215833f, -0.215735f, -0.215638f, -0.21554f, -0.215442f, -0.215345f, -0.215247f,
--0.215149f, -0.215051f, -0.214954f, -0.214856f, -0.214758f, -0.21466f, -0.214563f, -0.214465f, -0.214367f, -0.21427f, -0.214172f, -0.214074f, -0.213976f, -0.213878f, -0.213781f, -0.213683f, -0.213585f, -0.213487f, -0.21339f, -0.213292f,
--0.213194f, -0.213096f, -0.212998f, -0.212901f, -0.212803f, -0.212705f, -0.212607f, -0.212509f, -0.212412f, -0.212314f, -0.212216f, -0.212118f, -0.21202f, -0.211923f, -0.211825f, -0.211727f, -0.211629f, -0.211531f, -0.211433f, -0.211336f,
--0.211238f, -0.21114f, -0.211042f, -0.210944f, -0.210846f, -0.210748f, -0.210651f, -0.210553f, -0.210455f, -0.210357f, -0.210259f, -0.210161f, -0.210063f, -0.209965f, -0.209867f, -0.20977f, -0.209672f, -0.209574f, -0.209476f, -0.209378f,
--0.20928f, -0.209182f, -0.209084f, -0.208986f, -0.208888f, -0.20879f, -0.208693f, -0.208595f, -0.208497f, -0.208399f, -0.208301f, -0.208203f, -0.208105f, -0.208007f, -0.207909f, -0.207811f, -0.207713f, -0.207615f, -0.207517f, -0.207419f,
--0.207321f, -0.207223f, -0.207125f, -0.207027f, -0.206929f, -0.206831f, -0.206733f, -0.206635f, -0.206537f, -0.206439f, -0.206341f, -0.206243f, -0.206145f, -0.206047f, -0.205949f, -0.205851f, -0.205753f, -0.205655f, -0.205557f, -0.205459f,
--0.205361f, -0.205263f, -0.205165f, -0.205067f, -0.204969f, -0.204871f, -0.204773f, -0.204675f, -0.204577f, -0.204479f, -0.204381f, -0.204282f, -0.204184f, -0.204086f, -0.203988f, -0.20389f, -0.203792f, -0.203694f, -0.203596f, -0.203498f,
--0.2034f, -0.203302f, -0.203203f, -0.203105f, -0.203007f, -0.202909f, -0.202811f, -0.202713f, -0.202615f, -0.202517f, -0.202419f, -0.20232f, -0.202222f, -0.202124f, -0.202026f, -0.201928f, -0.20183f, -0.201732f, -0.201633f, -0.201535f,
--0.201437f, -0.201339f, -0.201241f, -0.201143f, -0.201044f, -0.200946f, -0.200848f, -0.20075f, -0.200652f, -0.200554f, -0.200455f, -0.200357f, -0.200259f, -0.200161f, -0.200063f, -0.199964f, -0.199866f, -0.199768f, -0.19967f, -0.199571f,
--0.199473f, -0.199375f, -0.199277f, -0.199179f, -0.19908f, -0.198982f, -0.198884f, -0.198786f, -0.198687f, -0.198589f, -0.198491f, -0.198393f, -0.198294f, -0.198196f, -0.198098f, -0.198f, -0.197901f, -0.197803f, -0.197705f, -0.197607f,
--0.197508f, -0.19741f, -0.197312f, -0.197213f, -0.197115f, -0.197017f, -0.196919f, -0.19682f, -0.196722f, -0.196624f, -0.196525f, -0.196427f, -0.196329f, -0.19623f, -0.196132f, -0.196034f, -0.195935f, -0.195837f, -0.195739f, -0.19564f,
--0.195542f, -0.195444f, -0.195345f, -0.195247f, -0.195149f, -0.19505f, -0.194952f, -0.194854f, -0.194755f, -0.194657f, -0.194558f, -0.19446f, -0.194362f, -0.194263f, -0.194165f, -0.194067f, -0.193968f, -0.19387f, -0.193771f, -0.193673f,
--0.193575f, -0.193476f, -0.193378f, -0.193279f, -0.193181f, -0.193083f, -0.192984f, -0.192886f, -0.192787f, -0.192689f, -0.19259f, -0.192492f, -0.192394f, -0.192295f, -0.192197f, -0.192098f, -0.192f, -0.191901f, -0.191803f, -0.191704f,
--0.191606f, -0.191508f, -0.191409f, -0.191311f, -0.191212f, -0.191114f, -0.191015f, -0.190917f, -0.190818f, -0.19072f, -0.190621f, -0.190523f, -0.190424f, -0.190326f, -0.190227f, -0.190129f, -0.19003f, -0.189932f, -0.189833f, -0.189735f,
--0.189636f, -0.189538f, -0.189439f, -0.189341f, -0.189242f, -0.189144f, -0.189045f, -0.188947f, -0.188848f, -0.18875f, -0.188651f, -0.188552f, -0.188454f, -0.188355f, -0.188257f, -0.188158f, -0.18806f, -0.187961f, -0.187863f, -0.187764f,
--0.187665f, -0.187567f, -0.187468f, -0.18737f, -0.187271f, -0.187172f, -0.187074f, -0.186975f, -0.186877f, -0.186778f, -0.18668f, -0.186581f, -0.186482f, -0.186384f, -0.186285f, -0.186186f, -0.186088f, -0.185989f, -0.185891f, -0.185792f,
--0.185693f, -0.185595f, -0.185496f, -0.185397f, -0.185299f, -0.1852f, -0.185102f, -0.185003f, -0.184904f, -0.184806f, -0.184707f, -0.184608f, -0.18451f, -0.184411f, -0.184312f, -0.184214f, -0.184115f, -0.184016f, -0.183918f, -0.183819f,
--0.18372f, -0.183621f, -0.183523f, -0.183424f, -0.183325f, -0.183227f, -0.183128f, -0.183029f, -0.182931f, -0.182832f, -0.182733f, -0.182634f, -0.182536f, -0.182437f, -0.182338f, -0.18224f, -0.182141f, -0.182042f, -0.181943f, -0.181845f,
--0.181746f, -0.181647f, -0.181548f, -0.18145f, -0.181351f, -0.181252f, -0.181153f, -0.181055f, -0.180956f, -0.180857f, -0.180758f, -0.18066f, -0.180561f, -0.180462f, -0.180363f, -0.180264f, -0.180166f, -0.180067f, -0.179968f, -0.179869f,
--0.17977f, -0.179672f, -0.179573f, -0.179474f, -0.179375f, -0.179276f, -0.179178f, -0.179079f, -0.17898f, -0.178881f, -0.178782f, -0.178683f, -0.178585f, -0.178486f, -0.178387f, -0.178288f, -0.178189f, -0.17809f, -0.177992f, -0.177893f,
--0.177794f, -0.177695f, -0.177596f, -0.177497f, -0.177398f, -0.1773f, -0.177201f, -0.177102f, -0.177003f, -0.176904f, -0.176805f, -0.176706f, -0.176607f, -0.176509f, -0.17641f, -0.176311f, -0.176212f, -0.176113f, -0.176014f, -0.175915f,
--0.175816f, -0.175717f, -0.175618f, -0.17552f, -0.175421f, -0.175322f, -0.175223f, -0.175124f, -0.175025f, -0.174926f, -0.174827f, -0.174728f, -0.174629f, -0.17453f, -0.174431f, -0.174332f, -0.174233f, -0.174134f, -0.174036f, -0.173937f,
--0.173838f, -0.173739f, -0.17364f, -0.173541f, -0.173442f, -0.173343f, -0.173244f, -0.173145f, -0.173046f, -0.172947f, -0.172848f, -0.172749f, -0.17265f, -0.172551f, -0.172452f, -0.172353f, -0.172254f, -0.172155f, -0.172056f, -0.171957f,
--0.171858f, -0.171759f, -0.17166f, -0.171561f, -0.171462f, -0.171363f, -0.171264f, -0.171165f, -0.171066f, -0.170967f, -0.170868f, -0.170768f, -0.170669f, -0.17057f, -0.170471f, -0.170372f, -0.170273f, -0.170174f, -0.170075f, -0.169976f,
--0.169877f, -0.169778f, -0.169679f, -0.16958f, -0.169481f, -0.169382f, -0.169283f, -0.169183f, -0.169084f, -0.168985f, -0.168886f, -0.168787f, -0.168688f, -0.168589f, -0.16849f, -0.168391f, -0.168292f, -0.168192f, -0.168093f, -0.167994f,
--0.167895f, -0.167796f, -0.167697f, -0.167598f, -0.167499f, -0.167399f, -0.1673f, -0.167201f, -0.167102f, -0.167003f, -0.166904f, -0.166805f, -0.166705f, -0.166606f, -0.166507f, -0.166408f, -0.166309f, -0.16621f, -0.166111f, -0.166011f,
--0.165912f, -0.165813f, -0.165714f, -0.165615f, -0.165515f, -0.165416f, -0.165317f, -0.165218f, -0.165119f, -0.16502f, -0.16492f, -0.164821f, -0.164722f, -0.164623f, -0.164524f, -0.164424f, -0.164325f, -0.164226f, -0.164127f, -0.164027f,
--0.163928f, -0.163829f, -0.16373f, -0.163631f, -0.163531f, -0.163432f, -0.163333f, -0.163234f, -0.163134f, -0.163035f, -0.162936f, -0.162837f, -0.162737f, -0.162638f, -0.162539f, -0.16244f, -0.16234f, -0.162241f, -0.162142f, -0.162043f,
--0.161943f, -0.161844f, -0.161745f, -0.161645f, -0.161546f, -0.161447f, -0.161348f, -0.161248f, -0.161149f, -0.16105f, -0.16095f, -0.160851f, -0.160752f, -0.160652f, -0.160553f, -0.160454f, -0.160355f, -0.160255f, -0.160156f, -0.160057f,
--0.159957f, -0.159858f, -0.159759f, -0.159659f, -0.15956f, -0.159461f, -0.159361f, -0.159262f, -0.159163f, -0.159063f, -0.158964f, -0.158865f, -0.158765f, -0.158666f, -0.158566f, -0.158467f, -0.158368f, -0.158268f, -0.158169f, -0.15807f,
--0.15797f, -0.157871f, -0.157771f, -0.157672f, -0.157573f, -0.157473f, -0.157374f, -0.157275f, -0.157175f, -0.157076f, -0.156976f, -0.156877f, -0.156778f, -0.156678f, -0.156579f, -0.156479f, -0.15638f, -0.156281f, -0.156181f, -0.156082f,
--0.155982f, -0.155883f, -0.155783f, -0.155684f, -0.155585f, -0.155485f, -0.155386f, -0.155286f, -0.155187f, -0.155087f, -0.154988f, -0.154888f, -0.154789f, -0.15469f, -0.15459f, -0.154491f, -0.154391f, -0.154292f, -0.154192f, -0.154093f,
--0.153993f, -0.153894f, -0.153794f, -0.153695f, -0.153595f, -0.153496f, -0.153396f, -0.153297f, -0.153197f, -0.153098f, -0.152998f, -0.152899f, -0.152799f, -0.1527f, -0.1526f, -0.152501f, -0.152401f, -0.152302f, -0.152202f, -0.152103f,
--0.152003f, -0.151904f, -0.151804f, -0.151705f, -0.151605f, -0.151506f, -0.151406f, -0.151307f, -0.151207f, -0.151108f, -0.151008f, -0.150908f, -0.150809f, -0.150709f, -0.15061f, -0.15051f, -0.150411f, -0.150311f, -0.150212f, -0.150112f,
--0.150012f, -0.149913f, -0.149813f, -0.149714f, -0.149614f, -0.149515f, -0.149415f, -0.149315f, -0.149216f, -0.149116f, -0.149017f, -0.148917f, -0.148817f, -0.148718f, -0.148618f, -0.148519f, -0.148419f, -0.148319f, -0.14822f, -0.14812f,
--0.148021f, -0.147921f, -0.147821f, -0.147722f, -0.147622f, -0.147523f, -0.147423f, -0.147323f, -0.147224f, -0.147124f, -0.147024f, -0.146925f, -0.146825f, -0.146725f, -0.146626f, -0.146526f, -0.146426f, -0.146327f, -0.146227f, -0.146128f,
--0.146028f, -0.145928f, -0.145829f, -0.145729f, -0.145629f, -0.14553f, -0.14543f, -0.14533f, -0.14523f, -0.145131f, -0.145031f, -0.144931f, -0.144832f, -0.144732f, -0.144632f, -0.144533f, -0.144433f, -0.144333f, -0.144234f, -0.144134f,
--0.144034f, -0.143934f, -0.143835f, -0.143735f, -0.143635f, -0.143536f, -0.143436f, -0.143336f, -0.143236f, -0.143137f, -0.143037f, -0.142937f, -0.142838f, -0.142738f, -0.142638f, -0.142538f, -0.142439f, -0.142339f, -0.142239f, -0.142139f,
--0.14204f, -0.14194f, -0.14184f, -0.14174f, -0.141641f, -0.141541f, -0.141441f, -0.141341f, -0.141241f, -0.141142f, -0.141042f, -0.140942f, -0.140842f, -0.140743f, -0.140643f, -0.140543f, -0.140443f, -0.140343f, -0.140244f, -0.140144f,
--0.140044f, -0.139944f, -0.139844f, -0.139745f, -0.139645f, -0.139545f, -0.139445f, -0.139345f, -0.139246f, -0.139146f, -0.139046f, -0.138946f, -0.138846f, -0.138746f, -0.138647f, -0.138547f, -0.138447f, -0.138347f, -0.138247f, -0.138147f,
--0.138048f, -0.137948f, -0.137848f, -0.137748f, -0.137648f, -0.137548f, -0.137448f, -0.137349f, -0.137249f, -0.137149f, -0.137049f, -0.136949f, -0.136849f, -0.136749f, -0.13665f, -0.13655f, -0.13645f, -0.13635f, -0.13625f, -0.13615f,
--0.13605f, -0.13595f, -0.135851f, -0.135751f, -0.135651f, -0.135551f, -0.135451f, -0.135351f, -0.135251f, -0.135151f, -0.135051f, -0.134951f, -0.134851f, -0.134752f, -0.134652f, -0.134552f, -0.134452f, -0.134352f, -0.134252f, -0.134152f,
--0.134052f, -0.133952f, -0.133852f, -0.133752f, -0.133652f, -0.133552f, -0.133452f, -0.133353f, -0.133253f, -0.133153f, -0.133053f, -0.132953f, -0.132853f, -0.132753f, -0.132653f, -0.132553f, -0.132453f, -0.132353f, -0.132253f, -0.132153f,
--0.132053f, -0.131953f, -0.131853f, -0.131753f, -0.131653f, -0.131553f, -0.131453f, -0.131353f, -0.131253f, -0.131153f, -0.131053f, -0.130953f, -0.130853f, -0.130753f, -0.130653f, -0.130553f, -0.130453f, -0.130353f, -0.130253f, -0.130153f,
--0.130053f, -0.129953f, -0.129853f, -0.129753f, -0.129653f, -0.129553f, -0.129453f, -0.129353f, -0.129253f, -0.129153f, -0.129053f, -0.128953f, -0.128853f, -0.128753f, -0.128653f, -0.128553f, -0.128453f, -0.128353f, -0.128253f, -0.128152f,
--0.128052f, -0.127952f, -0.127852f, -0.127752f, -0.127652f, -0.127552f, -0.127452f, -0.127352f, -0.127252f, -0.127152f, -0.127052f, -0.126952f, -0.126852f, -0.126751f, -0.126651f, -0.126551f, -0.126451f, -0.126351f, -0.126251f, -0.126151f,
--0.126051f, -0.125951f, -0.125851f, -0.125751f, -0.12565f, -0.12555f, -0.12545f, -0.12535f, -0.12525f, -0.12515f, -0.12505f, -0.12495f, -0.124849f, -0.124749f, -0.124649f, -0.124549f, -0.124449f, -0.124349f, -0.124249f, -0.124149f,
--0.124048f, -0.123948f, -0.123848f, -0.123748f, -0.123648f, -0.123548f, -0.123448f, -0.123347f, -0.123247f, -0.123147f, -0.123047f, -0.122947f, -0.122847f, -0.122746f, -0.122646f, -0.122546f, -0.122446f, -0.122346f, -0.122246f, -0.122145f,
--0.122045f, -0.121945f, -0.121845f, -0.121745f, -0.121644f, -0.121544f, -0.121444f, -0.121344f, -0.121244f, -0.121143f, -0.121043f, -0.120943f, -0.120843f, -0.120743f, -0.120642f, -0.120542f, -0.120442f, -0.120342f, -0.120242f, -0.120141f,
--0.120041f, -0.119941f, -0.119841f, -0.119741f, -0.11964f, -0.11954f, -0.11944f, -0.11934f, -0.119239f, -0.119139f, -0.119039f, -0.118939f, -0.118838f, -0.118738f, -0.118638f, -0.118538f, -0.118437f, -0.118337f, -0.118237f, -0.118137f,
--0.118036f, -0.117936f, -0.117836f, -0.117736f, -0.117635f, -0.117535f, -0.117435f, -0.117335f, -0.117234f, -0.117134f, -0.117034f, -0.116933f, -0.116833f, -0.116733f, -0.116633f, -0.116532f, -0.116432f, -0.116332f, -0.116231f, -0.116131f,
--0.116031f, -0.11593f, -0.11583f, -0.11573f, -0.11563f, -0.115529f, -0.115429f, -0.115329f, -0.115228f, -0.115128f, -0.115028f, -0.114927f, -0.114827f, -0.114727f, -0.114626f, -0.114526f, -0.114426f, -0.114325f, -0.114225f, -0.114125f,
--0.114024f, -0.113924f, -0.113824f, -0.113723f, -0.113623f, -0.113523f, -0.113422f, -0.113322f, -0.113222f, -0.113121f, -0.113021f, -0.112921f, -0.11282f, -0.11272f, -0.11262f, -0.112519f, -0.112419f, -0.112318f, -0.112218f, -0.112118f,
--0.112017f, -0.111917f, -0.111817f, -0.111716f, -0.111616f, -0.111515f, -0.111415f, -0.111315f, -0.111214f, -0.111114f, -0.111013f, -0.110913f, -0.110813f, -0.110712f, -0.110612f, -0.110511f, -0.110411f, -0.110311f, -0.11021f, -0.11011f,
--0.110009f, -0.109909f, -0.109809f, -0.109708f, -0.109608f, -0.109507f, -0.109407f, -0.109306f, -0.109206f, -0.109106f, -0.109005f, -0.108905f, -0.108804f, -0.108704f, -0.108603f, -0.108503f, -0.108403f, -0.108302f, -0.108202f, -0.108101f,
--0.108001f, -0.1079f, -0.1078f, -0.107699f, -0.107599f, -0.107499f, -0.107398f, -0.107298f, -0.107197f, -0.107097f, -0.106996f, -0.106896f, -0.106795f, -0.106695f, -0.106594f, -0.106494f, -0.106393f, -0.106293f, -0.106192f, -0.106092f,
--0.105991f, -0.105891f, -0.10579f, -0.10569f, -0.10559f, -0.105489f, -0.105389f, -0.105288f, -0.105188f, -0.105087f, -0.104987f, -0.104886f, -0.104786f, -0.104685f, -0.104584f, -0.104484f, -0.104383f, -0.104283f, -0.104182f, -0.104082f,
--0.103981f, -0.103881f, -0.10378f, -0.10368f, -0.103579f, -0.103479f, -0.103378f, -0.103278f, -0.103177f, -0.103077f, -0.102976f, -0.102876f, -0.102775f, -0.102674f, -0.102574f, -0.102473f, -0.102373f, -0.102272f, -0.102172f, -0.102071f,
--0.101971f, -0.10187f, -0.10177f, -0.101669f, -0.101568f, -0.101468f, -0.101367f, -0.101267f, -0.101166f, -0.101066f, -0.100965f, -0.100864f, -0.100764f, -0.100663f, -0.100563f, -0.100462f, -0.100362f, -0.100261f, -0.10016f, -0.10006f,
--0.099959f, -0.099859f, -0.099758f, -0.099657f, -0.099557f, -0.099456f, -0.099356f, -0.099255f, -0.099154f, -0.099054f, -0.098953f, -0.098853f, -0.098752f, -0.098651f, -0.098551f, -0.09845f, -0.09835f, -0.098249f, -0.098148f, -0.098048f,
--0.097947f, -0.097846f, -0.097746f, -0.097645f, -0.097545f, -0.097444f, -0.097343f, -0.097243f, -0.097142f, -0.097041f, -0.096941f, -0.09684f, -0.096739f, -0.096639f, -0.096538f, -0.096437f, -0.096337f, -0.096236f, -0.096136f, -0.096035f,
--0.095934f, -0.095834f, -0.095733f, -0.095632f, -0.095532f, -0.095431f, -0.09533f, -0.09523f, -0.095129f, -0.095028f, -0.094928f, -0.094827f, -0.094726f, -0.094625f, -0.094525f, -0.094424f, -0.094323f, -0.094223f, -0.094122f, -0.094021f,
--0.093921f, -0.09382f, -0.093719f, -0.093619f, -0.093518f, -0.093417f, -0.093317f, -0.093216f, -0.093115f, -0.093014f, -0.092914f, -0.092813f, -0.092712f, -0.092612f, -0.092511f, -0.09241f, -0.092309f, -0.092209f, -0.092108f, -0.092007f,
--0.091907f, -0.091806f, -0.091705f, -0.091604f, -0.091504f, -0.091403f, -0.091302f, -0.091201f, -0.091101f, -0.091f, -0.090899f, -0.090798f, -0.090698f, -0.090597f, -0.090496f, -0.090396f, -0.090295f, -0.090194f, -0.090093f, -0.089993f,
--0.089892f, -0.089791f, -0.08969f, -0.089589f, -0.089489f, -0.089388f, -0.089287f, -0.089186f, -0.089086f, -0.088985f, -0.088884f, -0.088783f, -0.088683f, -0.088582f, -0.088481f, -0.08838f, -0.088279f, -0.088179f, -0.088078f, -0.087977f,
--0.087876f, -0.087776f, -0.087675f, -0.087574f, -0.087473f, -0.087372f, -0.087272f, -0.087171f, -0.08707f, -0.086969f, -0.086868f, -0.086768f, -0.086667f, -0.086566f, -0.086465f, -0.086364f, -0.086264f, -0.086163f, -0.086062f, -0.085961f,
--0.08586f, -0.085759f, -0.085659f, -0.085558f, -0.085457f, -0.085356f, -0.085255f, -0.085154f, -0.085054f, -0.084953f, -0.084852f, -0.084751f, -0.08465f, -0.084549f, -0.084449f, -0.084348f, -0.084247f, -0.084146f, -0.084045f, -0.083944f,
--0.083844f, -0.083743f, -0.083642f, -0.083541f, -0.08344f, -0.083339f, -0.083238f, -0.083138f, -0.083037f, -0.082936f, -0.082835f, -0.082734f, -0.082633f, -0.082532f, -0.082432f, -0.082331f, -0.08223f, -0.082129f, -0.082028f, -0.081927f,
--0.081826f, -0.081725f, -0.081625f, -0.081524f, -0.081423f, -0.081322f, -0.081221f, -0.08112f, -0.081019f, -0.080918f, -0.080817f, -0.080717f, -0.080616f, -0.080515f, -0.080414f, -0.080313f, -0.080212f, -0.080111f, -0.08001f, -0.079909f,
--0.079808f, -0.079708f, -0.079607f, -0.079506f, -0.079405f, -0.079304f, -0.079203f, -0.079102f, -0.079001f, -0.0789f, -0.078799f, -0.078698f, -0.078597f, -0.078497f, -0.078396f, -0.078295f, -0.078194f, -0.078093f, -0.077992f, -0.077891f,
--0.07779f, -0.077689f, -0.077588f, -0.077487f, -0.077386f, -0.077285f, -0.077184f, -0.077083f, -0.076982f, -0.076882f, -0.076781f, -0.07668f, -0.076579f, -0.076478f, -0.076377f, -0.076276f, -0.076175f, -0.076074f, -0.075973f, -0.075872f,
--0.075771f, -0.07567f, -0.075569f, -0.075468f, -0.075367f, -0.075266f, -0.075165f, -0.075064f, -0.074963f, -0.074862f, -0.074761f, -0.07466f, -0.074559f, -0.074458f, -0.074357f, -0.074256f, -0.074155f, -0.074054f, -0.073953f, -0.073852f,
--0.073751f, -0.07365f, -0.073549f, -0.073448f, -0.073347f, -0.073246f, -0.073145f, -0.073044f, -0.072943f, -0.072842f, -0.072741f, -0.07264f, -0.072539f, -0.072438f, -0.072337f, -0.072236f, -0.072135f, -0.072034f, -0.071933f, -0.071832f,
--0.071731f, -0.07163f, -0.071529f, -0.071428f, -0.071327f, -0.071226f, -0.071125f, -0.071024f, -0.070923f, -0.070822f, -0.070721f, -0.07062f, -0.070519f, -0.070418f, -0.070317f, -0.070216f, -0.070115f, -0.070014f, -0.069913f, -0.069812f,
--0.069711f, -0.06961f, -0.069509f, -0.069407f, -0.069306f, -0.069205f, -0.069104f, -0.069003f, -0.068902f, -0.068801f, -0.0687f, -0.068599f, -0.068498f, -0.068397f, -0.068296f, -0.068195f, -0.068094f, -0.067993f, -0.067892f, -0.067791f,
--0.067689f, -0.067588f, -0.067487f, -0.067386f, -0.067285f, -0.067184f, -0.067083f, -0.066982f, -0.066881f, -0.06678f, -0.066679f, -0.066578f, -0.066476f, -0.066375f, -0.066274f, -0.066173f, -0.066072f, -0.065971f, -0.06587f, -0.065769f,
--0.065668f, -0.065567f, -0.065466f, -0.065364f, -0.065263f, -0.065162f, -0.065061f, -0.06496f, -0.064859f, -0.064758f, -0.064657f, -0.064556f, -0.064454f, -0.064353f, -0.064252f, -0.064151f, -0.06405f, -0.063949f, -0.063848f, -0.063747f,
--0.063646f, -0.063544f, -0.063443f, -0.063342f, -0.063241f, -0.06314f, -0.063039f, -0.062938f, -0.062836f, -0.062735f, -0.062634f, -0.062533f, -0.062432f, -0.062331f, -0.06223f, -0.062129f, -0.062027f, -0.061926f, -0.061825f, -0.061724f,
--0.061623f, -0.061522f, -0.06142f, -0.061319f, -0.061218f, -0.061117f, -0.061016f, -0.060915f, -0.060814f, -0.060712f, -0.060611f, -0.06051f, -0.060409f, -0.060308f, -0.060207f, -0.060105f, -0.060004f, -0.059903f, -0.059802f, -0.059701f,
--0.0596f, -0.059498f, -0.059397f, -0.059296f, -0.059195f, -0.059094f, -0.058993f, -0.058891f, -0.05879f, -0.058689f, -0.058588f, -0.058487f, -0.058385f, -0.058284f, -0.058183f, -0.058082f, -0.057981f, -0.057879f, -0.057778f, -0.057677f,
--0.057576f, -0.057475f, -0.057374f, -0.057272f, -0.057171f, -0.05707f, -0.056969f, -0.056867f, -0.056766f, -0.056665f, -0.056564f, -0.056463f, -0.056361f, -0.05626f, -0.056159f, -0.056058f, -0.055957f, -0.055855f, -0.055754f, -0.055653f,
--0.055552f, -0.055451f, -0.055349f, -0.055248f, -0.055147f, -0.055046f, -0.054944f, -0.054843f, -0.054742f, -0.054641f, -0.05454f, -0.054438f, -0.054337f, -0.054236f, -0.054135f, -0.054033f, -0.053932f, -0.053831f, -0.05373f, -0.053628f,
--0.053527f, -0.053426f, -0.053325f, -0.053223f, -0.053122f, -0.053021f, -0.05292f, -0.052818f, -0.052717f, -0.052616f, -0.052515f, -0.052413f, -0.052312f, -0.052211f, -0.05211f, -0.052008f, -0.051907f, -0.051806f, -0.051705f, -0.051603f,
--0.051502f, -0.051401f, -0.0513f, -0.051198f, -0.051097f, -0.050996f, -0.050894f, -0.050793f, -0.050692f, -0.050591f, -0.050489f, -0.050388f, -0.050287f, -0.050186f, -0.050084f, -0.049983f, -0.049882f, -0.04978f, -0.049679f, -0.049578f,
--0.049477f, -0.049375f, -0.049274f, -0.049173f, -0.049071f, -0.04897f, -0.048869f, -0.048768f, -0.048666f, -0.048565f, -0.048464f, -0.048362f, -0.048261f, -0.04816f, -0.048059f, -0.047957f, -0.047856f, -0.047755f, -0.047653f, -0.047552f,
--0.047451f, -0.047349f, -0.047248f, -0.047147f, -0.047045f, -0.046944f, -0.046843f, -0.046742f, -0.04664f, -0.046539f, -0.046438f, -0.046336f, -0.046235f, -0.046134f, -0.046032f, -0.045931f, -0.04583f, -0.045728f, -0.045627f, -0.045526f,
--0.045424f, -0.045323f, -0.045222f, -0.04512f, -0.045019f, -0.044918f, -0.044816f, -0.044715f, -0.044614f, -0.044512f, -0.044411f, -0.04431f, -0.044208f, -0.044107f, -0.044006f, -0.043904f, -0.043803f, -0.043702f, -0.0436f, -0.043499f,
--0.043398f, -0.043296f, -0.043195f, -0.043094f, -0.042992f, -0.042891f, -0.04279f, -0.042688f, -0.042587f, -0.042486f, -0.042384f, -0.042283f, -0.042181f, -0.04208f, -0.041979f, -0.041877f, -0.041776f, -0.041675f, -0.041573f, -0.041472f,
--0.041371f, -0.041269f, -0.041168f, -0.041066f, -0.040965f, -0.040864f, -0.040762f, -0.040661f, -0.04056f, -0.040458f, -0.040357f, -0.040255f, -0.040154f, -0.040053f, -0.039951f, -0.03985f, -0.039749f, -0.039647f, -0.039546f, -0.039444f,
--0.039343f, -0.039242f, -0.03914f, -0.039039f, -0.038938f, -0.038836f, -0.038735f, -0.038633f, -0.038532f, -0.038431f, -0.038329f, -0.038228f, -0.038126f, -0.038025f, -0.037924f, -0.037822f, -0.037721f, -0.037619f, -0.037518f, -0.037417f,
--0.037315f, -0.037214f, -0.037112f, -0.037011f, -0.03691f, -0.036808f, -0.036707f, -0.036605f, -0.036504f, -0.036403f, -0.036301f, -0.0362f, -0.036098f, -0.035997f, -0.035895f, -0.035794f, -0.035693f, -0.035591f, -0.03549f, -0.035388f,
--0.035287f, -0.035186f, -0.035084f, -0.034983f, -0.034881f, -0.03478f, -0.034678f, -0.034577f, -0.034476f, -0.034374f, -0.034273f, -0.034171f, -0.03407f, -0.033968f, -0.033867f, -0.033766f, -0.033664f, -0.033563f, -0.033461f, -0.03336f,
--0.033258f, -0.033157f, -0.033056f, -0.032954f, -0.032853f, -0.032751f, -0.03265f, -0.032548f, -0.032447f, -0.032345f, -0.032244f, -0.032143f, -0.032041f, -0.03194f, -0.031838f, -0.031737f, -0.031635f, -0.031534f, -0.031432f, -0.031331f,
--0.031229f, -0.031128f, -0.031027f, -0.030925f, -0.030824f, -0.030722f, -0.030621f, -0.030519f, -0.030418f, -0.030316f, -0.030215f, -0.030113f, -0.030012f, -0.029911f, -0.029809f, -0.029708f, -0.029606f, -0.029505f, -0.029403f, -0.029302f,
--0.0292f, -0.029099f, -0.028997f, -0.028896f, -0.028794f, -0.028693f, -0.028591f, -0.02849f, -0.028388f, -0.028287f, -0.028186f, -0.028084f, -0.027983f, -0.027881f, -0.02778f, -0.027678f, -0.027577f, -0.027475f, -0.027374f, -0.027272f,
--0.027171f, -0.027069f, -0.026968f, -0.026866f, -0.026765f, -0.026663f, -0.026562f, -0.02646f, -0.026359f, -0.026257f, -0.026156f, -0.026054f, -0.025953f, -0.025851f, -0.02575f, -0.025648f, -0.025547f, -0.025445f, -0.025344f, -0.025242f,
--0.025141f, -0.025039f, -0.024938f, -0.024836f, -0.024735f, -0.024633f, -0.024532f, -0.02443f, -0.024329f, -0.024227f, -0.024126f, -0.024024f, -0.023923f, -0.023821f, -0.02372f, -0.023618f, -0.023517f, -0.023415f, -0.023314f, -0.023212f,
--0.023111f, -0.023009f, -0.022908f, -0.022806f, -0.022705f, -0.022603f, -0.022502f, -0.0224f, -0.022299f, -0.022197f, -0.022095f, -0.021994f, -0.021892f, -0.021791f, -0.021689f, -0.021588f, -0.021486f, -0.021385f, -0.021283f, -0.021182f,
--0.02108f, -0.020979f, -0.020877f, -0.020776f, -0.020674f, -0.020573f, -0.020471f, -0.020369f, -0.020268f, -0.020166f, -0.020065f, -0.019963f, -0.019862f, -0.01976f, -0.019659f, -0.019557f, -0.019456f, -0.019354f, -0.019253f, -0.019151f,
--0.019049f, -0.018948f, -0.018846f, -0.018745f, -0.018643f, -0.018542f, -0.01844f, -0.018339f, -0.018237f, -0.018136f, -0.018034f, -0.017932f, -0.017831f, -0.017729f, -0.017628f, -0.017526f, -0.017425f, -0.017323f, -0.017222f, -0.01712f,
--0.017018f, -0.016917f, -0.016815f, -0.016714f, -0.016612f, -0.016511f, -0.016409f, -0.016308f, -0.016206f, -0.016104f, -0.016003f, -0.015901f, -0.0158f, -0.015698f, -0.015597f, -0.015495f, -0.015394f, -0.015292f, -0.01519f, -0.015089f,
--0.014987f, -0.014886f, -0.014784f, -0.014683f, -0.014581f, -0.014479f, -0.014378f, -0.014276f, -0.014175f, -0.014073f, -0.013972f, -0.01387f, -0.013768f, -0.013667f, -0.013565f, -0.013464f, -0.013362f, -0.01326f, -0.013159f, -0.013057f,
--0.012956f, -0.012854f, -0.012753f, -0.012651f, -0.012549f, -0.012448f, -0.012346f, -0.012245f, -0.012143f, -0.012042f, -0.01194f, -0.011838f, -0.011737f, -0.011635f, -0.011534f, -0.011432f, -0.01133f, -0.011229f, -0.011127f, -0.011026f,
--0.010924f, -0.010822f, -0.010721f, -0.010619f, -0.010518f, -0.010416f, -0.010314f, -0.010213f, -0.010111f, -0.01001f, -0.009908f, -0.009806f, -0.009705f, -0.009603f, -0.009502f, -0.0094f, -0.009299f, -0.009197f, -0.009095f, -0.008994f,
--0.008892f, -0.00879f, -0.008689f, -0.008587f, -0.008486f, -0.008384f, -0.008282f, -0.008181f, -0.008079f, -0.007978f, -0.007876f, -0.007774f, -0.007673f, -0.007571f, -0.00747f, -0.007368f, -0.007266f, -0.007165f, -0.007063f, -0.006962f,
--0.00686f, -0.006758f, -0.006657f, -0.006555f, -0.006453f, -0.006352f, -0.00625f, -0.006149f, -0.006047f, -0.005945f, -0.005844f, -0.005742f, -0.005641f, -0.005539f, -0.005437f, -0.005336f, -0.005234f, -0.005132f, -0.005031f, -0.004929f,
--0.004828f, -0.004726f, -0.004624f, -0.004523f, -0.004421f, -0.004319f, -0.004218f, -0.004116f, -0.004015f, -0.003913f, -0.003811f, -0.00371f, -0.003608f, -0.003506f, -0.003405f, -0.003303f, -0.003202f, -0.0031f, -0.002998f, -0.002897f,
--0.002795f, -0.002693f, -0.002592f, -0.00249f, -0.002389f, -0.002287f, -0.002185f, -0.002084f, -0.001982f, -0.00188f, -0.001779f, -0.001677f, -0.001575f, -0.001474f, -0.001372f, -0.001271f, -0.001169f, -0.001067f, -0.000966f, -0.000864f,
--0.000762f, -0.000661f, -0.000559f, -0.000457f, -0.000356f, -0.000254f, -0.000152f, -5.1e-05f, 5.1e-05f, 0.000152f, 0.000254f, 0.000356f, 0.000457f, 0.000559f, 0.000661f, 0.000762f, 0.000864f, 0.000966f, 0.001067f, 0.001169f,
-0.001271f, 0.001372f, 0.001474f, 0.001576f, 0.001677f, 0.001779f, 0.00188f, 0.001982f, 0.002084f, 0.002185f, 0.002287f, 0.002389f, 0.00249f, 0.002592f, 0.002694f, 0.002795f, 0.002897f, 0.002999f, 0.0031f, 0.003202f,
-0.003304f, 0.003405f, 0.003507f, 0.003609f, 0.00371f, 0.003812f, 0.003914f, 0.004015f, 0.004117f, 0.004219f, 0.00432f, 0.004422f, 0.004524f, 0.004625f, 0.004727f, 0.004829f, 0.00493f, 0.005032f, 0.005134f, 0.005235f,
-0.005337f, 0.005438f, 0.00554f, 0.005642f, 0.005743f, 0.005845f, 0.005947f, 0.006048f, 0.00615f, 0.006252f, 0.006353f, 0.006455f, 0.006557f, 0.006658f, 0.00676f, 0.006862f, 0.006963f, 0.007065f, 0.007167f, 0.007269f,
-0.00737f, 0.007472f, 0.007574f, 0.007675f, 0.007777f, 0.007879f, 0.00798f, 0.008082f, 0.008184f, 0.008285f, 0.008387f, 0.008489f, 0.00859f, 0.008692f, 0.008794f, 0.008895f, 0.008997f, 0.009099f, 0.0092f, 0.009302f,
-0.009404f, 0.009505f, 0.009607f, 0.009709f, 0.00981f, 0.009912f, 0.010014f, 0.010115f, 0.010217f, 0.010319f, 0.01042f, 0.010522f, 0.010624f, 0.010725f, 0.010827f, 0.010929f, 0.011031f, 0.011132f, 0.011234f, 0.011336f,
-0.011437f, 0.011539f, 0.011641f, 0.011742f, 0.011844f, 0.011946f, 0.012047f, 0.012149f, 0.012251f, 0.012352f, 0.012454f, 0.012556f, 0.012657f, 0.012759f, 0.012861f, 0.012962f, 0.013064f, 0.013166f, 0.013268f, 0.013369f,
-0.013471f, 0.013573f, 0.013674f, 0.013776f, 0.013878f, 0.013979f, 0.014081f, 0.014183f, 0.014284f, 0.014386f, 0.014488f, 0.014589f, 0.014691f, 0.014793f, 0.014895f, 0.014996f, 0.015098f, 0.0152f, 0.015301f, 0.015403f,
-0.015505f, 0.015606f, 0.015708f, 0.01581f, 0.015911f, 0.016013f, 0.016115f, 0.016217f, 0.016318f, 0.01642f, 0.016522f, 0.016623f, 0.016725f, 0.016827f, 0.016928f, 0.01703f, 0.017132f, 0.017233f, 0.017335f, 0.017437f,
-0.017539f, 0.01764f, 0.017742f, 0.017844f, 0.017945f, 0.018047f, 0.018149f, 0.01825f, 0.018352f, 0.018454f, 0.018556f, 0.018657f, 0.018759f, 0.018861f, 0.018962f, 0.019064f, 0.019166f, 0.019267f, 0.019369f, 0.019471f,
-0.019573f, 0.019674f, 0.019776f, 0.019878f, 0.019979f, 0.020081f, 0.020183f, 0.020284f, 0.020386f, 0.020488f, 0.02059f, 0.020691f, 0.020793f, 0.020895f, 0.020996f, 0.021098f, 0.0212f, 0.021301f, 0.021403f, 0.021505f,
-0.021607f, 0.021708f, 0.02181f, 0.021912f, 0.022013f, 0.022115f, 0.022217f, 0.022318f, 0.02242f, 0.022522f, 0.022624f, 0.022725f, 0.022827f, 0.022929f, 0.02303f, 0.023132f, 0.023234f, 0.023335f, 0.023437f, 0.023539f,
-0.023641f, 0.023742f, 0.023844f, 0.023946f, 0.024047f, 0.024149f, 0.024251f, 0.024353f, 0.024454f, 0.024556f, 0.024658f, 0.024759f, 0.024861f, 0.024963f, 0.025064f, 0.025166f, 0.025268f, 0.02537f, 0.025471f, 0.025573f,
-0.025675f, 0.025776f, 0.025878f, 0.02598f, 0.026082f, 0.026183f, 0.026285f, 0.026387f, 0.026488f, 0.02659f, 0.026692f, 0.026793f, 0.026895f, 0.026997f, 0.027099f, 0.0272f, 0.027302f, 0.027404f, 0.027505f, 0.027607f,
-0.027709f, 0.027811f, 0.027912f, 0.028014f, 0.028116f, 0.028217f, 0.028319f, 0.028421f, 0.028522f, 0.028624f, 0.028726f, 0.028828f, 0.028929f, 0.029031f, 0.029133f, 0.029234f, 0.029336f, 0.029438f, 0.02954f, 0.029641f,
-0.029743f, 0.029845f, 0.029946f, 0.030048f, 0.03015f, 0.030252f, 0.030353f, 0.030455f, 0.030557f, 0.030658f, 0.03076f, 0.030862f, 0.030963f, 0.031065f, 0.031167f, 0.031269f, 0.03137f, 0.031472f, 0.031574f, 0.031675f,
-0.031777f, 0.031879f, 0.031981f, 0.032082f, 0.032184f, 0.032286f, 0.032387f, 0.032489f, 0.032591f, 0.032693f, 0.032794f, 0.032896f, 0.032998f, 0.033099f, 0.033201f, 0.033303f, 0.033404f, 0.033506f, 0.033608f, 0.03371f,
-0.033811f, 0.033913f, 0.034015f, 0.034116f, 0.034218f, 0.03432f, 0.034422f, 0.034523f, 0.034625f, 0.034727f, 0.034828f, 0.03493f, 0.035032f, 0.035133f, 0.035235f, 0.035337f, 0.035439f, 0.03554f, 0.035642f, 0.035744f,
-0.035845f, 0.035947f, 0.036049f, 0.036151f, 0.036252f, 0.036354f, 0.036456f, 0.036557f, 0.036659f, 0.036761f, 0.036863f, 0.036964f, 0.037066f, 0.037168f, 0.037269f, 0.037371f, 0.037473f, 0.037574f, 0.037676f, 0.037778f,
-0.03788f, 0.037981f, 0.038083f, 0.038185f, 0.038286f, 0.038388f, 0.03849f, 0.038592f, 0.038693f, 0.038795f, 0.038897f, 0.038998f, 0.0391f, 0.039202f, 0.039303f, 0.039405f, 0.039507f, 0.039609f, 0.03971f, 0.039812f,
-0.039914f, 0.040015f, 0.040117f, 0.040219f, 0.04032f, 0.040422f, 0.040524f, 0.040626f, 0.040727f, 0.040829f, 0.040931f, 0.041032f, 0.041134f, 0.041236f, 0.041338f, 0.041439f, 0.041541f, 0.041643f, 0.041744f, 0.041846f,
-0.041948f, 0.042049f, 0.042151f, 0.042253f, 0.042355f, 0.042456f, 0.042558f, 0.04266f, 0.042761f, 0.042863f, 0.042965f, 0.043066f, 0.043168f, 0.04327f, 0.043372f, 0.043473f, 0.043575f, 0.043677f, 0.043778f, 0.04388f,
-0.043982f, 0.044083f, 0.044185f, 0.044287f, 0.044389f, 0.04449f, 0.044592f, 0.044694f, 0.044795f, 0.044897f, 0.044999f, 0.0451f, 0.045202f, 0.045304f, 0.045406f, 0.045507f, 0.045609f, 0.045711f, 0.045812f, 0.045914f,
-0.046016f, 0.046117f, 0.046219f, 0.046321f, 0.046422f, 0.046524f, 0.046626f, 0.046728f, 0.046829f, 0.046931f, 0.047033f, 0.047134f, 0.047236f, 0.047338f, 0.047439f, 0.047541f, 0.047643f, 0.047744f, 0.047846f, 0.047948f,
-0.04805f, 0.048151f, 0.048253f, 0.048355f, 0.048456f, 0.048558f, 0.04866f, 0.048761f, 0.048863f, 0.048965f, 0.049066f, 0.049168f, 0.04927f, 0.049372f, 0.049473f, 0.049575f, 0.049677f, 0.049778f, 0.04988f, 0.049982f,
-0.050083f, 0.050185f, 0.050287f, 0.050388f, 0.05049f, 0.050592f, 0.050693f, 0.050795f, 0.050897f, 0.050998f, 0.0511f, 0.051202f, 0.051304f, 0.051405f, 0.051507f, 0.051609f, 0.05171f, 0.051812f, 0.051914f, 0.052015f,
-0.052117f, 0.052219f, 0.05232f, 0.052422f, 0.052524f, 0.052625f, 0.052727f, 0.052829f, 0.05293f, 0.053032f, 0.053134f, 0.053235f, 0.053337f, 0.053439f, 0.053541f, 0.053642f, 0.053744f, 0.053846f, 0.053947f, 0.054049f,
-0.054151f, 0.054252f, 0.054354f, 0.054456f, 0.054557f, 0.054659f, 0.054761f, 0.054862f, 0.054964f, 0.055066f, 0.055167f, 0.055269f, 0.055371f, 0.055472f, 0.055574f, 0.055676f, 0.055777f, 0.055879f, 0.055981f, 0.056082f,
-0.056184f, 0.056286f, 0.056387f, 0.056489f, 0.056591f, 0.056692f, 0.056794f, 0.056896f, 0.056997f, 0.057099f, 0.057201f, 0.057302f, 0.057404f, 0.057506f, 0.057607f, 0.057709f, 0.057811f, 0.057912f, 0.058014f, 0.058116f,
-0.058217f, 0.058319f, 0.058421f, 0.058522f, 0.058624f, 0.058726f, 0.058827f, 0.058929f, 0.059031f, 0.059132f, 0.059234f, 0.059336f, 0.059437f, 0.059539f, 0.059641f, 0.059742f, 0.059844f, 0.059946f, 0.060047f, 0.060149f,
-0.060251f, 0.060352f, 0.060454f, 0.060556f, 0.060657f, 0.060759f, 0.060861f, 0.060962f, 0.061064f, 0.061165f, 0.061267f, 0.061369f, 0.06147f, 0.061572f, 0.061674f, 0.061775f, 0.061877f, 0.061979f, 0.06208f, 0.062182f,
-0.062284f, 0.062385f, 0.062487f, 0.062589f, 0.06269f, 0.062792f, 0.062894f, 0.062995f, 0.063097f, 0.063198f, 0.0633f, 0.063402f, 0.063503f, 0.063605f, 0.063707f, 0.063808f, 0.06391f, 0.064012f, 0.064113f, 0.064215f,
-0.064317f, 0.064418f, 0.06452f, 0.064621f, 0.064723f, 0.064825f, 0.064926f, 0.065028f, 0.06513f, 0.065231f, 0.065333f, 0.065435f, 0.065536f, 0.065638f, 0.065739f, 0.065841f, 0.065943f, 0.066044f, 0.066146f, 0.066248f,
-0.066349f, 0.066451f, 0.066552f, 0.066654f, 0.066756f, 0.066857f, 0.066959f, 0.067061f, 0.067162f, 0.067264f, 0.067366f, 0.067467f, 0.067569f, 0.06767f, 0.067772f, 0.067874f, 0.067975f, 0.068077f, 0.068179f, 0.06828f,
-0.068382f, 0.068483f, 0.068585f, 0.068687f, 0.068788f, 0.06889f, 0.068991f, 0.069093f, 0.069195f, 0.069296f, 0.069398f, 0.0695f, 0.069601f, 0.069703f, 0.069804f, 0.069906f, 0.070008f, 0.070109f, 0.070211f, 0.070312f,
-0.070414f, 0.070516f, 0.070617f, 0.070719f, 0.070821f, 0.070922f, 0.071024f, 0.071125f, 0.071227f, 0.071329f, 0.07143f, 0.071532f, 0.071633f, 0.071735f, 0.071837f, 0.071938f, 0.07204f, 0.072141f, 0.072243f, 0.072345f,
-0.072446f, 0.072548f, 0.072649f, 0.072751f, 0.072853f, 0.072954f, 0.073056f, 0.073157f, 0.073259f, 0.073361f, 0.073462f, 0.073564f, 0.073665f, 0.073767f, 0.073869f, 0.07397f, 0.074072f, 0.074173f, 0.074275f, 0.074377f,
-0.074478f, 0.07458f, 0.074681f, 0.074783f, 0.074885f, 0.074986f, 0.075088f, 0.075189f, 0.075291f, 0.075392f, 0.075494f, 0.075596f, 0.075697f, 0.075799f, 0.0759f, 0.076002f, 0.076104f, 0.076205f, 0.076307f, 0.076408f,
-0.07651f, 0.076611f, 0.076713f, 0.076815f, 0.076916f, 0.077018f, 0.077119f, 0.077221f, 0.077323f, 0.077424f, 0.077526f, 0.077627f, 0.077729f, 0.07783f, 0.077932f, 0.078034f, 0.078135f, 0.078237f, 0.078338f, 0.07844f,
-0.078541f, 0.078643f, 0.078744f, 0.078846f, 0.078948f, 0.079049f, 0.079151f, 0.079252f, 0.079354f, 0.079455f, 0.079557f, 0.079659f, 0.07976f, 0.079862f, 0.079963f, 0.080065f, 0.080166f, 0.080268f, 0.080369f, 0.080471f,
-0.080573f, 0.080674f, 0.080776f, 0.080877f, 0.080979f, 0.08108f, 0.081182f, 0.081283f, 0.081385f, 0.081487f, 0.081588f, 0.08169f, 0.081791f, 0.081893f, 0.081994f, 0.082096f, 0.082197f, 0.082299f, 0.0824f, 0.082502f,
-0.082604f, 0.082705f, 0.082807f, 0.082908f, 0.08301f, 0.083111f, 0.083213f, 0.083314f, 0.083416f, 0.083517f, 0.083619f, 0.08372f, 0.083822f, 0.083924f, 0.084025f, 0.084127f, 0.084228f, 0.08433f, 0.084431f, 0.084533f,
-0.084634f, 0.084736f, 0.084837f, 0.084939f, 0.08504f, 0.085142f, 0.085243f, 0.085345f, 0.085446f, 0.085548f, 0.08565f, 0.085751f, 0.085853f, 0.085954f, 0.086056f, 0.086157f, 0.086259f, 0.08636f, 0.086462f, 0.086563f,
-0.086665f, 0.086766f, 0.086868f, 0.086969f, 0.087071f, 0.087172f, 0.087274f, 0.087375f, 0.087477f, 0.087578f, 0.08768f, 0.087781f, 0.087883f, 0.087984f, 0.088086f, 0.088187f, 0.088289f, 0.08839f, 0.088492f, 0.088593f,
-0.088695f, 0.088796f, 0.088898f, 0.088999f, 0.089101f, 0.089202f, 0.089304f, 0.089405f, 0.089507f, 0.089608f, 0.08971f, 0.089811f, 0.089913f, 0.090014f, 0.090116f, 0.090217f, 0.090319f, 0.09042f, 0.090522f, 0.090623f,
-0.090725f, 0.090826f, 0.090928f, 0.091029f, 0.091131f, 0.091232f, 0.091334f, 0.091435f, 0.091537f, 0.091638f, 0.09174f, 0.091841f, 0.091942f, 0.092044f, 0.092145f, 0.092247f, 0.092348f, 0.09245f, 0.092551f, 0.092653f,
-0.092754f, 0.092856f, 0.092957f, 0.093059f, 0.09316f, 0.093262f, 0.093363f, 0.093465f, 0.093566f, 0.093667f, 0.093769f, 0.09387f, 0.093972f, 0.094073f, 0.094175f, 0.094276f, 0.094378f, 0.094479f, 0.094581f, 0.094682f,
-0.094783f, 0.094885f, 0.094986f, 0.095088f, 0.095189f, 0.095291f, 0.095392f, 0.095494f, 0.095595f, 0.095697f, 0.095798f, 0.095899f, 0.096001f, 0.096102f, 0.096204f, 0.096305f, 0.096407f, 0.096508f, 0.09661f, 0.096711f,
-0.096812f, 0.096914f, 0.097015f, 0.097117f, 0.097218f, 0.09732f, 0.097421f, 0.097522f, 0.097624f, 0.097725f, 0.097827f, 0.097928f, 0.09803f, 0.098131f, 0.098232f, 0.098334f, 0.098435f, 0.098537f, 0.098638f, 0.09874f,
-0.098841f, 0.098942f, 0.099044f, 0.099145f, 0.099247f, 0.099348f, 0.099449f, 0.099551f, 0.099652f, 0.099754f, 0.099855f, 0.099956f, 0.100058f, 0.100159f, 0.100261f, 0.100362f, 0.100464f, 0.100565f, 0.100666f, 0.100768f,
-0.100869f, 0.100971f, 0.101072f, 0.101173f, 0.101275f, 0.101376f, 0.101478f, 0.101579f, 0.10168f, 0.101782f, 0.101883f, 0.101985f, 0.102086f, 0.102187f, 0.102289f, 0.10239f, 0.102491f, 0.102593f, 0.102694f, 0.102796f,
-0.102897f, 0.102998f, 0.1031f, 0.103201f, 0.103303f, 0.103404f, 0.103505f, 0.103607f, 0.103708f, 0.103809f, 0.103911f, 0.104012f, 0.104114f, 0.104215f, 0.104316f, 0.104418f, 0.104519f, 0.10462f, 0.104722f, 0.104823f,
-0.104924f, 0.105026f, 0.105127f, 0.105229f, 0.10533f, 0.105431f, 0.105533f, 0.105634f, 0.105735f, 0.105837f, 0.105938f, 0.106039f, 0.106141f, 0.106242f, 0.106343f, 0.106445f, 0.106546f, 0.106648f, 0.106749f, 0.10685f,
-0.106952f, 0.107053f, 0.107154f, 0.107256f, 0.107357f, 0.107458f, 0.10756f, 0.107661f, 0.107762f, 0.107864f, 0.107965f, 0.108066f, 0.108168f, 0.108269f, 0.10837f, 0.108472f, 0.108573f, 0.108674f, 0.108776f, 0.108877f,
-0.108978f, 0.10908f, 0.109181f, 0.109282f, 0.109384f, 0.109485f, 0.109586f, 0.109688f, 0.109789f, 0.10989f, 0.109991f, 0.110093f, 0.110194f, 0.110295f, 0.110397f, 0.110498f, 0.110599f, 0.110701f, 0.110802f, 0.110903f,
-0.111005f, 0.111106f, 0.111207f, 0.111308f, 0.11141f, 0.111511f, 0.111612f, 0.111714f, 0.111815f, 0.111916f, 0.112018f, 0.112119f, 0.11222f, 0.112321f, 0.112423f, 0.112524f, 0.112625f, 0.112727f, 0.112828f, 0.112929f,
-0.11303f, 0.113132f, 0.113233f, 0.113334f, 0.113436f, 0.113537f, 0.113638f, 0.113739f, 0.113841f, 0.113942f, 0.114043f, 0.114145f, 0.114246f, 0.114347f, 0.114448f, 0.11455f, 0.114651f, 0.114752f, 0.114853f, 0.114955f,
-0.115056f, 0.115157f, 0.115258f, 0.11536f, 0.115461f, 0.115562f, 0.115663f, 0.115765f, 0.115866f, 0.115967f, 0.116068f, 0.11617f, 0.116271f, 0.116372f, 0.116473f, 0.116575f, 0.116676f, 0.116777f, 0.116878f, 0.11698f,
-0.117081f, 0.117182f, 0.117283f, 0.117385f, 0.117486f, 0.117587f, 0.117688f, 0.11779f, 0.117891f, 0.117992f, 0.118093f, 0.118195f, 0.118296f, 0.118397f, 0.118498f, 0.118599f, 0.118701f, 0.118802f, 0.118903f, 0.119004f,
-0.119106f, 0.119207f, 0.119308f, 0.119409f, 0.11951f, 0.119612f, 0.119713f, 0.119814f, 0.119915f, 0.120016f, 0.120118f, 0.120219f, 0.12032f, 0.120421f, 0.120522f, 0.120624f, 0.120725f, 0.120826f, 0.120927f, 0.121028f,
-0.12113f, 0.121231f, 0.121332f, 0.121433f, 0.121534f, 0.121636f, 0.121737f, 0.121838f, 0.121939f, 0.12204f, 0.122142f, 0.122243f, 0.122344f, 0.122445f, 0.122546f, 0.122647f, 0.122749f, 0.12285f, 0.122951f, 0.123052f,
-0.123153f, 0.123254f, 0.123356f, 0.123457f, 0.123558f, 0.123659f, 0.12376f, 0.123861f, 0.123963f, 0.124064f, 0.124165f, 0.124266f, 0.124367f, 0.124468f, 0.12457f, 0.124671f, 0.124772f, 0.124873f, 0.124974f, 0.125075f,
-0.125176f, 0.125278f, 0.125379f, 0.12548f, 0.125581f, 0.125682f, 0.125783f, 0.125884f, 0.125986f, 0.126087f, 0.126188f, 0.126289f, 0.12639f, 0.126491f, 0.126592f, 0.126694f, 0.126795f, 0.126896f, 0.126997f, 0.127098f,
-0.127199f, 0.1273f, 0.127401f, 0.127503f, 0.127604f, 0.127705f, 0.127806f, 0.127907f, 0.128008f, 0.128109f, 0.12821f, 0.128311f, 0.128413f, 0.128514f, 0.128615f, 0.128716f, 0.128817f, 0.128918f, 0.129019f, 0.12912f,
-0.129221f, 0.129322f, 0.129424f, 0.129525f, 0.129626f, 0.129727f, 0.129828f, 0.129929f, 0.13003f, 0.130131f, 0.130232f, 0.130333f, 0.130434f, 0.130536f, 0.130637f, 0.130738f, 0.130839f, 0.13094f, 0.131041f, 0.131142f,
-0.131243f, 0.131344f, 0.131445f, 0.131546f, 0.131647f, 0.131748f, 0.131849f, 0.131951f, 0.132052f, 0.132153f, 0.132254f, 0.132355f, 0.132456f, 0.132557f, 0.132658f, 0.132759f, 0.13286f, 0.132961f, 0.133062f, 0.133163f,
-0.133264f, 0.133365f, 0.133466f, 0.133567f, 0.133668f, 0.133769f, 0.13387f, 0.133972f, 0.134073f, 0.134174f, 0.134275f, 0.134376f, 0.134477f, 0.134578f, 0.134679f, 0.13478f, 0.134881f, 0.134982f, 0.135083f, 0.135184f,
-0.135285f, 0.135386f, 0.135487f, 0.135588f, 0.135689f, 0.13579f, 0.135891f, 0.135992f, 0.136093f, 0.136194f, 0.136295f, 0.136396f, 0.136497f, 0.136598f, 0.136699f, 0.1368f, 0.136901f, 0.137002f, 0.137103f, 0.137204f,
-0.137305f, 0.137406f, 0.137507f, 0.137608f, 0.137709f, 0.13781f, 0.137911f, 0.138012f, 0.138113f, 0.138214f, 0.138315f, 0.138416f, 0.138517f, 0.138618f, 0.138719f, 0.13882f, 0.138921f, 0.139022f, 0.139123f, 0.139224f,
-0.139325f, 0.139425f, 0.139526f, 0.139627f, 0.139728f, 0.139829f, 0.13993f, 0.140031f, 0.140132f, 0.140233f, 0.140334f, 0.140435f, 0.140536f, 0.140637f, 0.140738f, 0.140839f, 0.14094f, 0.141041f, 0.141142f, 0.141243f,
-0.141344f, 0.141444f, 0.141545f, 0.141646f, 0.141747f, 0.141848f, 0.141949f, 0.14205f, 0.142151f, 0.142252f, 0.142353f, 0.142454f, 0.142555f, 0.142656f, 0.142756f, 0.142857f, 0.142958f, 0.143059f, 0.14316f, 0.143261f,
-0.143362f, 0.143463f, 0.143564f, 0.143665f, 0.143766f, 0.143866f, 0.143967f, 0.144068f, 0.144169f, 0.14427f, 0.144371f, 0.144472f, 0.144573f, 0.144674f, 0.144774f, 0.144875f, 0.144976f, 0.145077f, 0.145178f, 0.145279f,
-0.14538f, 0.145481f, 0.145582f, 0.145682f, 0.145783f, 0.145884f, 0.145985f, 0.146086f, 0.146187f, 0.146288f, 0.146388f, 0.146489f, 0.14659f, 0.146691f, 0.146792f, 0.146893f, 0.146994f, 0.147094f, 0.147195f, 0.147296f,
-0.147397f, 0.147498f, 0.147599f, 0.1477f, 0.1478f, 0.147901f, 0.148002f, 0.148103f, 0.148204f, 0.148305f, 0.148405f, 0.148506f, 0.148607f, 0.148708f, 0.148809f, 0.14891f, 0.14901f, 0.149111f, 0.149212f, 0.149313f,
-0.149414f, 0.149514f, 0.149615f, 0.149716f, 0.149817f, 0.149918f, 0.150019f, 0.150119f, 0.15022f, 0.150321f, 0.150422f, 0.150523f, 0.150623f, 0.150724f, 0.150825f, 0.150926f, 0.151027f, 0.151127f, 0.151228f, 0.151329f,
-0.15143f, 0.15153f, 0.151631f, 0.151732f, 0.151833f, 0.151934f, 0.152034f, 0.152135f, 0.152236f, 0.152337f, 0.152437f, 0.152538f, 0.152639f, 0.15274f, 0.152841f, 0.152941f, 0.153042f, 0.153143f, 0.153244f, 0.153344f,
-0.153445f, 0.153546f, 0.153647f, 0.153747f, 0.153848f, 0.153949f, 0.15405f, 0.15415f, 0.154251f, 0.154352f, 0.154453f, 0.154553f, 0.154654f, 0.154755f, 0.154855f, 0.154956f, 0.155057f, 0.155158f, 0.155258f, 0.155359f,
-0.15546f, 0.155561f, 0.155661f, 0.155762f, 0.155863f, 0.155963f, 0.156064f, 0.156165f, 0.156266f, 0.156366f, 0.156467f, 0.156568f, 0.156668f, 0.156769f, 0.15687f, 0.156971f, 0.157071f, 0.157172f, 0.157273f, 0.157373f,
-0.157474f, 0.157575f, 0.157675f, 0.157776f, 0.157877f, 0.157977f, 0.158078f, 0.158179f, 0.158279f, 0.15838f, 0.158481f, 0.158581f, 0.158682f, 0.158783f, 0.158883f, 0.158984f, 0.159085f, 0.159185f, 0.159286f, 0.159387f,
-0.159487f, 0.159588f, 0.159689f, 0.159789f, 0.15989f, 0.159991f, 0.160091f, 0.160192f, 0.160293f, 0.160393f, 0.160494f, 0.160595f, 0.160695f, 0.160796f, 0.160896f, 0.160997f, 0.161098f, 0.161198f, 0.161299f, 0.1614f,
-0.1615f, 0.161601f, 0.161701f, 0.161802f, 0.161903f, 0.162003f, 0.162104f, 0.162205f, 0.162305f, 0.162406f, 0.162506f, 0.162607f, 0.162708f, 0.162808f, 0.162909f, 0.163009f, 0.16311f, 0.163211f, 0.163311f, 0.163412f,
-0.163512f, 0.163613f, 0.163714f, 0.163814f, 0.163915f, 0.164015f, 0.164116f, 0.164216f, 0.164317f, 0.164418f, 0.164518f, 0.164619f, 0.164719f, 0.16482f, 0.16492f, 0.165021f, 0.165122f, 0.165222f, 0.165323f, 0.165423f,
-0.165524f, 0.165624f, 0.165725f, 0.165825f, 0.165926f, 0.166027f, 0.166127f, 0.166228f, 0.166328f, 0.166429f, 0.166529f, 0.16663f, 0.16673f, 0.166831f, 0.166931f, 0.167032f, 0.167132f, 0.167233f, 0.167334f, 0.167434f,
-0.167535f, 0.167635f, 0.167736f, 0.167836f, 0.167937f, 0.168037f, 0.168138f, 0.168238f, 0.168339f, 0.168439f, 0.16854f, 0.16864f, 0.168741f, 0.168841f, 0.168942f, 0.169042f, 0.169143f, 0.169243f, 0.169344f, 0.169444f,
-0.169545f, 0.169645f, 0.169746f, 0.169846f, 0.169947f, 0.170047f, 0.170147f, 0.170248f, 0.170348f, 0.170449f, 0.170549f, 0.17065f, 0.17075f, 0.170851f, 0.170951f, 0.171052f, 0.171152f, 0.171253f, 0.171353f, 0.171453f,
-0.171554f, 0.171654f, 0.171755f, 0.171855f, 0.171956f, 0.172056f, 0.172157f, 0.172257f, 0.172357f, 0.172458f, 0.172558f, 0.172659f, 0.172759f, 0.17286f, 0.17296f, 0.17306f, 0.173161f, 0.173261f, 0.173362f, 0.173462f,
-0.173562f, 0.173663f, 0.173763f, 0.173864f, 0.173964f, 0.174065f, 0.174165f, 0.174265f, 0.174366f, 0.174466f, 0.174567f, 0.174667f, 0.174767f, 0.174868f, 0.174968f, 0.175068f, 0.175169f, 0.175269f, 0.17537f, 0.17547f,
-0.17557f, 0.175671f, 0.175771f, 0.175871f, 0.175972f, 0.176072f, 0.176173f, 0.176273f, 0.176373f, 0.176474f, 0.176574f, 0.176674f, 0.176775f, 0.176875f, 0.176975f, 0.177076f, 0.177176f, 0.177276f, 0.177377f, 0.177477f,
-0.177577f, 0.177678f, 0.177778f, 0.177878f, 0.177979f, 0.178079f, 0.178179f, 0.17828f, 0.17838f, 0.17848f, 0.178581f, 0.178681f, 0.178781f, 0.178882f, 0.178982f, 0.179082f, 0.179183f, 0.179283f, 0.179383f, 0.179483f,
-0.179584f, 0.179684f, 0.179784f, 0.179885f, 0.179985f, 0.180085f, 0.180186f, 0.180286f, 0.180386f, 0.180486f, 0.180587f, 0.180687f, 0.180787f, 0.180887f, 0.180988f, 0.181088f, 0.181188f, 0.181289f, 0.181389f, 0.181489f,
-0.181589f, 0.18169f, 0.18179f, 0.18189f, 0.18199f, 0.182091f, 0.182191f, 0.182291f, 0.182391f, 0.182492f, 0.182592f, 0.182692f, 0.182792f, 0.182893f, 0.182993f, 0.183093f, 0.183193f, 0.183293f, 0.183394f, 0.183494f,
-0.183594f, 0.183694f, 0.183795f, 0.183895f, 0.183995f, 0.184095f, 0.184195f, 0.184296f, 0.184396f, 0.184496f, 0.184596f, 0.184696f, 0.184797f, 0.184897f, 0.184997f, 0.185097f, 0.185197f, 0.185298f, 0.185398f, 0.185498f,
-0.185598f, 0.185698f, 0.185798f, 0.185899f, 0.185999f, 0.186099f, 0.186199f, 0.186299f, 0.186399f, 0.1865f, 0.1866f, 0.1867f, 0.1868f, 0.1869f, 0.187f, 0.187101f, 0.187201f, 0.187301f, 0.187401f, 0.187501f,
-0.187601f, 0.187701f, 0.187802f, 0.187902f, 0.188002f, 0.188102f, 0.188202f, 0.188302f, 0.188402f, 0.188502f, 0.188603f, 0.188703f, 0.188803f, 0.188903f, 0.189003f, 0.189103f, 0.189203f, 0.189303f, 0.189403f, 0.189504f,
-0.189604f, 0.189704f, 0.189804f, 0.189904f, 0.190004f, 0.190104f, 0.190204f, 0.190304f, 0.190404f, 0.190504f, 0.190605f, 0.190705f, 0.190805f, 0.190905f, 0.191005f, 0.191105f, 0.191205f, 0.191305f, 0.191405f, 0.191505f,
-0.191605f, 0.191705f, 0.191805f, 0.191905f, 0.192005f, 0.192105f, 0.192206f, 0.192306f, 0.192406f, 0.192506f, 0.192606f, 0.192706f, 0.192806f, 0.192906f, 0.193006f, 0.193106f, 0.193206f, 0.193306f, 0.193406f, 0.193506f,
-0.193606f, 0.193706f, 0.193806f, 0.193906f, 0.194006f, 0.194106f, 0.194206f, 0.194306f, 0.194406f, 0.194506f, 0.194606f, 0.194706f, 0.194806f, 0.194906f, 0.195006f, 0.195106f, 0.195206f, 0.195306f, 0.195406f, 0.195506f,
-0.195606f, 0.195706f, 0.195806f, 0.195906f, 0.196006f, 0.196106f, 0.196206f, 0.196306f, 0.196406f, 0.196505f, 0.196605f, 0.196705f, 0.196805f, 0.196905f, 0.197005f, 0.197105f, 0.197205f, 0.197305f, 0.197405f, 0.197505f,
-0.197605f, 0.197705f, 0.197805f, 0.197905f, 0.198005f, 0.198104f, 0.198204f, 0.198304f, 0.198404f, 0.198504f, 0.198604f, 0.198704f, 0.198804f, 0.198904f, 0.199004f, 0.199104f, 0.199203f, 0.199303f, 0.199403f, 0.199503f,
-0.199603f, 0.199703f, 0.199803f, 0.199903f, 0.200003f, 0.200102f, 0.200202f, 0.200302f, 0.200402f, 0.200502f, 0.200602f, 0.200702f, 0.200801f, 0.200901f, 0.201001f, 0.201101f, 0.201201f, 0.201301f, 0.201401f, 0.2015f,
-0.2016f, 0.2017f, 0.2018f, 0.2019f, 0.202f, 0.202099f, 0.202199f, 0.202299f, 0.202399f, 0.202499f, 0.202599f, 0.202698f, 0.202798f, 0.202898f, 0.202998f, 0.203098f, 0.203197f, 0.203297f, 0.203397f, 0.203497f,
-0.203597f, 0.203696f, 0.203796f, 0.203896f, 0.203996f, 0.204096f, 0.204195f, 0.204295f, 0.204395f, 0.204495f, 0.204595f, 0.204694f, 0.204794f, 0.204894f, 0.204994f, 0.205093f, 0.205193f, 0.205293f, 0.205393f, 0.205492f,
-0.205592f, 0.205692f, 0.205792f, 0.205891f, 0.205991f, 0.206091f, 0.206191f, 0.20629f, 0.20639f, 0.20649f, 0.20659f, 0.206689f, 0.206789f, 0.206889f, 0.206988f, 0.207088f, 0.207188f, 0.207288f, 0.207387f, 0.207487f,
-0.207587f, 0.207686f, 0.207786f, 0.207886f, 0.207986f, 0.208085f, 0.208185f, 0.208285f, 0.208384f, 0.208484f, 0.208584f, 0.208683f, 0.208783f, 0.208883f, 0.208982f, 0.209082f, 0.209182f, 0.209281f, 0.209381f, 0.209481f,
-0.20958f, 0.20968f, 0.20978f, 0.209879f, 0.209979f, 0.210079f, 0.210178f, 0.210278f, 0.210378f, 0.210477f, 0.210577f, 0.210677f, 0.210776f, 0.210876f, 0.210975f, 0.211075f, 0.211175f, 0.211274f, 0.211374f, 0.211474f,
-0.211573f, 0.211673f, 0.211772f, 0.211872f, 0.211972f, 0.212071f, 0.212171f, 0.21227f, 0.21237f, 0.21247f, 0.212569f, 0.212669f, 0.212768f, 0.212868f, 0.212968f, 0.213067f, 0.213167f, 0.213266f, 0.213366f, 0.213465f,
-0.213565f, 0.213665f, 0.213764f, 0.213864f, 0.213963f, 0.214063f, 0.214162f, 0.214262f, 0.214361f, 0.214461f, 0.214561f, 0.21466f, 0.21476f, 0.214859f, 0.214959f, 0.215058f, 0.215158f, 0.215257f, 0.215357f, 0.215456f,
-0.215556f, 0.215655f, 0.215755f, 0.215854f, 0.215954f, 0.216053f, 0.216153f, 0.216252f, 0.216352f, 0.216451f, 0.216551f, 0.21665f, 0.21675f, 0.216849f, 0.216949f, 0.217048f, 0.217148f, 0.217247f, 0.217347f, 0.217446f,
-0.217546f, 0.217645f, 0.217745f, 0.217844f, 0.217944f, 0.218043f, 0.218143f, 0.218242f, 0.218341f, 0.218441f, 0.21854f, 0.21864f, 0.218739f, 0.218839f, 0.218938f, 0.219038f, 0.219137f, 0.219236f, 0.219336f, 0.219435f,
-0.219535f, 0.219634f, 0.219734f, 0.219833f, 0.219932f, 0.220032f, 0.220131f, 0.220231f, 0.22033f, 0.220429f, 0.220529f, 0.220628f, 0.220728f, 0.220827f, 0.220926f, 0.221026f, 0.221125f, 0.221225f, 0.221324f, 0.221423f,
-0.221523f, 0.221622f, 0.221721f, 0.221821f, 0.22192f, 0.222019f, 0.222119f, 0.222218f, 0.222318f, 0.222417f, 0.222516f, 0.222616f, 0.222715f, 0.222814f, 0.222914f, 0.223013f, 0.223112f, 0.223212f, 0.223311f, 0.22341f,
-0.22351f, 0.223609f, 0.223708f, 0.223808f, 0.223907f, 0.224006f, 0.224106f, 0.224205f, 0.224304f, 0.224403f, 0.224503f, 0.224602f, 0.224701f, 0.224801f, 0.2249f, 0.224999f, 0.225098f, 0.225198f, 0.225297f, 0.225396f,
-0.225496f, 0.225595f, 0.225694f, 0.225793f, 0.225893f, 0.225992f, 0.226091f, 0.22619f, 0.22629f, 0.226389f, 0.226488f, 0.226587f, 0.226687f, 0.226786f, 0.226885f, 0.226984f, 0.227084f, 0.227183f, 0.227282f, 0.227381f,
-0.227481f, 0.22758f, 0.227679f, 0.227778f, 0.227877f, 0.227977f, 0.228076f, 0.228175f, 0.228274f, 0.228373f, 0.228473f, 0.228572f, 0.228671f, 0.22877f, 0.228869f, 0.228969f, 0.229068f, 0.229167f, 0.229266f, 0.229365f,
-0.229464f, 0.229564f, 0.229663f, 0.229762f, 0.229861f, 0.22996f, 0.230059f, 0.230159f, 0.230258f, 0.230357f, 0.230456f, 0.230555f, 0.230654f, 0.230753f, 0.230853f, 0.230952f, 0.231051f, 0.23115f, 0.231249f, 0.231348f,
-0.231447f, 0.231546f, 0.231646f, 0.231745f, 0.231844f, 0.231943f, 0.232042f, 0.232141f, 0.23224f, 0.232339f, 0.232438f, 0.232538f, 0.232637f, 0.232736f, 0.232835f, 0.232934f, 0.233033f, 0.233132f, 0.233231f, 0.23333f,
-0.233429f, 0.233528f, 0.233627f, 0.233726f, 0.233825f, 0.233925f, 0.234024f, 0.234123f, 0.234222f, 0.234321f, 0.23442f, 0.234519f, 0.234618f, 0.234717f, 0.234816f, 0.234915f, 0.235014f, 0.235113f, 0.235212f, 0.235311f,
-0.23541f, 0.235509f, 0.235608f, 0.235707f, 0.235806f, 0.235905f, 0.236004f, 0.236103f, 0.236202f, 0.236301f, 0.2364f, 0.236499f, 0.236598f, 0.236697f, 0.236796f, 0.236895f, 0.236994f, 0.237093f, 0.237192f, 0.237291f,
-0.23739f, 0.237489f, 0.237588f, 0.237687f, 0.237786f, 0.237885f, 0.237984f, 0.238082f, 0.238181f, 0.23828f, 0.238379f, 0.238478f, 0.238577f, 0.238676f, 0.238775f, 0.238874f, 0.238973f, 0.239072f, 0.239171f, 0.23927f,
-0.239368f, 0.239467f, 0.239566f, 0.239665f, 0.239764f, 0.239863f, 0.239962f, 0.240061f, 0.24016f, 0.240259f, 0.240357f, 0.240456f, 0.240555f, 0.240654f, 0.240753f, 0.240852f, 0.240951f, 0.241049f, 0.241148f, 0.241247f,
-0.241346f, 0.241445f, 0.241544f, 0.241643f, 0.241741f, 0.24184f, 0.241939f, 0.242038f, 0.242137f, 0.242236f, 0.242334f, 0.242433f, 0.242532f, 0.242631f, 0.24273f, 0.242829f, 0.242927f, 0.243026f, 0.243125f, 0.243224f,
-0.243323f, 0.243421f, 0.24352f, 0.243619f, 0.243718f, 0.243817f, 0.243915f, 0.244014f, 0.244113f, 0.244212f, 0.24431f, 0.244409f, 0.244508f, 0.244607f, 0.244705f, 0.244804f, 0.244903f, 0.245002f, 0.2451f, 0.245199f,
-0.245298f, 0.245397f, 0.245495f, 0.245594f, 0.245693f, 0.245792f, 0.24589f, 0.245989f, 0.246088f, 0.246187f, 0.246285f, 0.246384f, 0.246483f, 0.246581f, 0.24668f, 0.246779f, 0.246877f, 0.246976f, 0.247075f, 0.247174f,
-0.247272f, 0.247371f, 0.24747f, 0.247568f, 0.247667f, 0.247766f, 0.247864f, 0.247963f, 0.248062f, 0.24816f, 0.248259f, 0.248358f, 0.248456f, 0.248555f, 0.248654f, 0.248752f, 0.248851f, 0.24895f, 0.249048f, 0.249147f,
-0.249245f, 0.249344f, 0.249443f, 0.249541f, 0.24964f, 0.249739f, 0.249837f, 0.249936f, 0.250034f, 0.250133f, 0.250232f, 0.25033f, 0.250429f, 0.250527f, 0.250626f, 0.250725f, 0.250823f, 0.250922f, 0.25102f, 0.251119f,
-0.251217f, 0.251316f, 0.251415f, 0.251513f, 0.251612f, 0.25171f, 0.251809f, 0.251907f, 0.252006f, 0.252104f, 0.252203f, 0.252302f, 0.2524f, 0.252499f, 0.252597f, 0.252696f, 0.252794f, 0.252893f, 0.252991f, 0.25309f,
-0.253188f, 0.253287f, 0.253385f, 0.253484f, 0.253582f, 0.253681f, 0.253779f, 0.253878f, 0.253976f, 0.254075f, 0.254173f, 0.254272f, 0.25437f, 0.254469f, 0.254567f, 0.254666f, 0.254764f, 0.254863f, 0.254961f, 0.25506f,
-0.255158f, 0.255257f, 0.255355f, 0.255453f, 0.255552f, 0.25565f, 0.255749f, 0.255847f, 0.255946f, 0.256044f, 0.256142f, 0.256241f, 0.256339f, 0.256438f, 0.256536f, 0.256635f, 0.256733f, 0.256831f, 0.25693f, 0.257028f,
-0.257127f, 0.257225f, 0.257323f, 0.257422f, 0.25752f, 0.257619f, 0.257717f, 0.257815f, 0.257914f, 0.258012f, 0.25811f, 0.258209f, 0.258307f, 0.258406f, 0.258504f, 0.258602f, 0.258701f, 0.258799f, 0.258897f, 0.258996f,
-0.259094f, 0.259192f, 0.259291f, 0.259389f, 0.259487f, 0.259586f, 0.259684f, 0.259782f, 0.259881f, 0.259979f, 0.260077f, 0.260176f, 0.260274f, 0.260372f, 0.26047f, 0.260569f, 0.260667f, 0.260765f, 0.260864f, 0.260962f,
-0.26106f, 0.261158f, 0.261257f, 0.261355f, 0.261453f, 0.261552f, 0.26165f, 0.261748f, 0.261846f, 0.261945f, 0.262043f, 0.262141f, 0.262239f, 0.262338f, 0.262436f, 0.262534f, 0.262632f, 0.262731f, 0.262829f, 0.262927f,
-0.263025f, 0.263123f, 0.263222f, 0.26332f, 0.263418f, 0.263516f, 0.263614f, 0.263713f, 0.263811f, 0.263909f, 0.264007f, 0.264105f, 0.264204f, 0.264302f, 0.2644f, 0.264498f, 0.264596f, 0.264695f, 0.264793f, 0.264891f,
-0.264989f, 0.265087f, 0.265185f, 0.265283f, 0.265382f, 0.26548f, 0.265578f, 0.265676f, 0.265774f, 0.265872f, 0.26597f, 0.266069f, 0.266167f, 0.266265f, 0.266363f, 0.266461f, 0.266559f, 0.266657f, 0.266755f, 0.266853f,
-0.266952f, 0.26705f, 0.267148f, 0.267246f, 0.267344f, 0.267442f, 0.26754f, 0.267638f, 0.267736f, 0.267834f, 0.267932f, 0.26803f, 0.268129f, 0.268227f, 0.268325f, 0.268423f, 0.268521f, 0.268619f, 0.268717f, 0.268815f,
-0.268913f, 0.269011f, 0.269109f, 0.269207f, 0.269305f, 0.269403f, 0.269501f, 0.269599f, 0.269697f, 0.269795f, 0.269893f, 0.269991f, 0.270089f, 0.270187f, 0.270285f, 0.270383f, 0.270481f, 0.270579f, 0.270677f, 0.270775f,
-0.270873f, 0.270971f, 0.271069f, 0.271167f, 0.271265f, 0.271363f, 0.271461f, 0.271559f, 0.271657f, 0.271755f, 0.271853f, 0.271951f, 0.272049f, 0.272146f, 0.272244f, 0.272342f, 0.27244f, 0.272538f, 0.272636f, 0.272734f,
-0.272832f, 0.27293f, 0.273028f, 0.273126f, 0.273224f, 0.273321f, 0.273419f, 0.273517f, 0.273615f, 0.273713f, 0.273811f, 0.273909f, 0.274007f, 0.274105f, 0.274202f, 0.2743f, 0.274398f, 0.274496f, 0.274594f, 0.274692f,
-0.27479f, 0.274887f, 0.274985f, 0.275083f, 0.275181f, 0.275279f, 0.275377f, 0.275474f, 0.275572f, 0.27567f, 0.275768f, 0.275866f, 0.275964f, 0.276061f, 0.276159f, 0.276257f, 0.276355f, 0.276453f, 0.27655f, 0.276648f,
-0.276746f, 0.276844f, 0.276941f, 0.277039f, 0.277137f, 0.277235f, 0.277333f, 0.27743f, 0.277528f, 0.277626f, 0.277724f, 0.277821f, 0.277919f, 0.278017f, 0.278115f, 0.278212f, 0.27831f, 0.278408f, 0.278506f, 0.278603f,
-0.278701f, 0.278799f, 0.278896f, 0.278994f, 0.279092f, 0.27919f, 0.279287f, 0.279385f, 0.279483f, 0.27958f, 0.279678f, 0.279776f, 0.279873f, 0.279971f, 0.280069f, 0.280166f, 0.280264f, 0.280362f, 0.280459f, 0.280557f,
-0.280655f, 0.280752f, 0.28085f, 0.280948f, 0.281045f, 0.281143f, 0.281241f, 0.281338f, 0.281436f, 0.281534f, 0.281631f, 0.281729f, 0.281826f, 0.281924f, 0.282022f, 0.282119f, 0.282217f, 0.282314f, 0.282412f, 0.28251f,
-0.282607f, 0.282705f, 0.282802f, 0.2829f, 0.282998f, 0.283095f, 0.283193f, 0.28329f, 0.283388f, 0.283485f, 0.283583f, 0.283681f, 0.283778f, 0.283876f, 0.283973f, 0.284071f, 0.284168f, 0.284266f, 0.284363f, 0.284461f,
-0.284558f, 0.284656f, 0.284753f, 0.284851f, 0.284949f, 0.285046f, 0.285144f, 0.285241f, 0.285339f, 0.285436f, 0.285534f, 0.285631f, 0.285729f, 0.285826f, 0.285923f, 0.286021f, 0.286118f, 0.286216f, 0.286313f, 0.286411f,
-0.286508f, 0.286606f, 0.286703f, 0.286801f, 0.286898f, 0.286996f, 0.287093f, 0.28719f, 0.287288f, 0.287385f, 0.287483f, 0.28758f, 0.287678f, 0.287775f, 0.287872f, 0.28797f, 0.288067f, 0.288165f, 0.288262f, 0.288359f,
-0.288457f, 0.288554f, 0.288652f, 0.288749f, 0.288846f, 0.288944f, 0.289041f, 0.289138f, 0.289236f, 0.289333f, 0.289431f, 0.289528f, 0.289625f, 0.289723f, 0.28982f, 0.289917f, 0.290015f, 0.290112f, 0.290209f, 0.290307f,
-0.290404f, 0.290501f, 0.290599f, 0.290696f, 0.290793f, 0.290891f, 0.290988f, 0.291085f, 0.291183f, 0.29128f, 0.291377f, 0.291474f, 0.291572f, 0.291669f, 0.291766f, 0.291864f, 0.291961f, 0.292058f, 0.292155f, 0.292253f,
-0.29235f, 0.292447f, 0.292544f, 0.292642f, 0.292739f, 0.292836f, 0.292933f, 0.293031f, 0.293128f, 0.293225f, 0.293322f, 0.29342f, 0.293517f, 0.293614f, 0.293711f, 0.293808f, 0.293906f, 0.294003f, 0.2941f, 0.294197f,
-0.294294f, 0.294392f, 0.294489f, 0.294586f, 0.294683f, 0.29478f, 0.294877f, 0.294975f, 0.295072f, 0.295169f, 0.295266f, 0.295363f, 0.29546f, 0.295558f, 0.295655f, 0.295752f, 0.295849f, 0.295946f, 0.296043f, 0.29614f,
-0.296237f, 0.296335f, 0.296432f, 0.296529f, 0.296626f, 0.296723f, 0.29682f, 0.296917f, 0.297014f, 0.297111f, 0.297209f, 0.297306f, 0.297403f, 0.2975f, 0.297597f, 0.297694f, 0.297791f, 0.297888f, 0.297985f, 0.298082f,
-0.298179f, 0.298276f, 0.298373f, 0.29847f, 0.298567f, 0.298664f, 0.298761f, 0.298858f, 0.298956f, 0.299053f, 0.29915f, 0.299247f, 0.299344f, 0.299441f, 0.299538f, 0.299635f, 0.299732f, 0.299829f, 0.299926f, 0.300023f,
-0.30012f, 0.300217f, 0.300314f, 0.30041f, 0.300507f, 0.300604f, 0.300701f, 0.300798f, 0.300895f, 0.300992f, 0.301089f, 0.301186f, 0.301283f, 0.30138f, 0.301477f, 0.301574f, 0.301671f, 0.301768f, 0.301865f, 0.301962f,
-0.302059f, 0.302155f, 0.302252f, 0.302349f, 0.302446f, 0.302543f, 0.30264f, 0.302737f, 0.302834f, 0.302931f, 0.303027f, 0.303124f, 0.303221f, 0.303318f, 0.303415f, 0.303512f, 0.303609f, 0.303706f, 0.303802f, 0.303899f,
-0.303996f, 0.304093f, 0.30419f, 0.304287f, 0.304383f, 0.30448f, 0.304577f, 0.304674f, 0.304771f, 0.304867f, 0.304964f, 0.305061f, 0.305158f, 0.305255f, 0.305351f, 0.305448f, 0.305545f, 0.305642f, 0.305739f, 0.305835f,
-0.305932f, 0.306029f, 0.306126f, 0.306222f, 0.306319f, 0.306416f, 0.306513f, 0.306609f, 0.306706f, 0.306803f, 0.3069f, 0.306996f, 0.307093f, 0.30719f, 0.307287f, 0.307383f, 0.30748f, 0.307577f, 0.307673f, 0.30777f,
-0.307867f, 0.307964f, 0.30806f, 0.308157f, 0.308254f, 0.30835f, 0.308447f, 0.308544f, 0.30864f, 0.308737f, 0.308834f, 0.30893f, 0.309027f, 0.309124f, 0.30922f, 0.309317f, 0.309414f, 0.30951f, 0.309607f, 0.309703f,
-0.3098f, 0.309897f, 0.309993f, 0.31009f, 0.310187f, 0.310283f, 0.31038f, 0.310476f, 0.310573f, 0.31067f, 0.310766f, 0.310863f, 0.310959f, 0.311056f, 0.311153f, 0.311249f, 0.311346f, 0.311442f, 0.311539f, 0.311635f,
-0.311732f, 0.311828f, 0.311925f, 0.312022f, 0.312118f, 0.312215f, 0.312311f, 0.312408f, 0.312504f, 0.312601f, 0.312697f, 0.312794f, 0.31289f, 0.312987f, 0.313083f, 0.31318f, 0.313276f, 0.313373f, 0.313469f, 0.313566f,
-0.313662f, 0.313759f, 0.313855f, 0.313952f, 0.314048f, 0.314145f, 0.314241f, 0.314338f, 0.314434f, 0.31453f, 0.314627f, 0.314723f, 0.31482f, 0.314916f, 0.315013f, 0.315109f, 0.315205f, 0.315302f, 0.315398f, 0.315495f,
-0.315591f, 0.315688f, 0.315784f, 0.31588f, 0.315977f, 0.316073f, 0.316169f, 0.316266f, 0.316362f, 0.316459f, 0.316555f, 0.316651f, 0.316748f, 0.316844f, 0.31694f, 0.317037f, 0.317133f, 0.317229f, 0.317326f, 0.317422f,
-0.317519f, 0.317615f, 0.317711f, 0.317807f, 0.317904f, 0.318f, 0.318096f, 0.318193f, 0.318289f, 0.318385f, 0.318482f, 0.318578f, 0.318674f, 0.318771f, 0.318867f, 0.318963f, 0.319059f, 0.319156f, 0.319252f, 0.319348f,
-0.319444f, 0.319541f, 0.319637f, 0.319733f, 0.319829f, 0.319926f, 0.320022f, 0.320118f, 0.320214f, 0.320311f, 0.320407f, 0.320503f, 0.320599f, 0.320695f, 0.320792f, 0.320888f, 0.320984f, 0.32108f, 0.321176f, 0.321273f,
-0.321369f, 0.321465f, 0.321561f, 0.321657f, 0.321754f, 0.32185f, 0.321946f, 0.322042f, 0.322138f, 0.322234f, 0.32233f, 0.322427f, 0.322523f, 0.322619f, 0.322715f, 0.322811f, 0.322907f, 0.323003f, 0.323099f, 0.323196f,
-0.323292f, 0.323388f, 0.323484f, 0.32358f, 0.323676f, 0.323772f, 0.323868f, 0.323964f, 0.32406f, 0.324157f, 0.324253f, 0.324349f, 0.324445f, 0.324541f, 0.324637f, 0.324733f, 0.324829f, 0.324925f, 0.325021f, 0.325117f,
-0.325213f, 0.325309f, 0.325405f, 0.325501f, 0.325597f, 0.325693f, 0.325789f, 0.325885f, 0.325981f, 0.326077f, 0.326173f, 0.326269f, 0.326365f, 0.326461f, 0.326557f, 0.326653f, 0.326749f, 0.326845f, 0.326941f, 0.327037f,
-0.327133f, 0.327229f, 0.327325f, 0.327421f, 0.327517f, 0.327613f, 0.327709f, 0.327804f, 0.3279f, 0.327996f, 0.328092f, 0.328188f, 0.328284f, 0.32838f, 0.328476f, 0.328572f, 0.328668f, 0.328764f, 0.328859f, 0.328955f,
-0.329051f, 0.329147f, 0.329243f, 0.329339f, 0.329435f, 0.329531f, 0.329626f, 0.329722f, 0.329818f, 0.329914f, 0.33001f, 0.330106f, 0.330201f, 0.330297f, 0.330393f, 0.330489f, 0.330585f, 0.330681f, 0.330776f, 0.330872f,
-0.330968f, 0.331064f, 0.33116f, 0.331255f, 0.331351f, 0.331447f, 0.331543f, 0.331638f, 0.331734f, 0.33183f, 0.331926f, 0.332022f, 0.332117f, 0.332213f, 0.332309f, 0.332404f, 0.3325f, 0.332596f, 0.332692f, 0.332787f,
-0.332883f, 0.332979f, 0.333075f, 0.33317f, 0.333266f, 0.333362f, 0.333457f, 0.333553f, 0.333649f, 0.333744f, 0.33384f, 0.333936f, 0.334032f, 0.334127f, 0.334223f, 0.334319f, 0.334414f, 0.33451f, 0.334605f, 0.334701f,
-0.334797f, 0.334892f, 0.334988f, 0.335084f, 0.335179f, 0.335275f, 0.335371f, 0.335466f, 0.335562f, 0.335657f, 0.335753f, 0.335849f, 0.335944f, 0.33604f, 0.336135f, 0.336231f, 0.336327f, 0.336422f, 0.336518f, 0.336613f,
-0.336709f, 0.336804f, 0.3369f, 0.336995f, 0.337091f, 0.337187f, 0.337282f, 0.337378f, 0.337473f, 0.337569f, 0.337664f, 0.33776f, 0.337855f, 0.337951f, 0.338046f, 0.338142f, 0.338237f, 0.338333f, 0.338428f, 0.338524f,
-0.338619f, 0.338715f, 0.33881f, 0.338906f, 0.339001f, 0.339097f, 0.339192f, 0.339288f, 0.339383f, 0.339478f, 0.339574f, 0.339669f, 0.339765f, 0.33986f, 0.339956f, 0.340051f, 0.340146f, 0.340242f, 0.340337f, 0.340433f,
-0.340528f, 0.340624f, 0.340719f, 0.340814f, 0.34091f, 0.341005f, 0.3411f, 0.341196f, 0.341291f, 0.341387f, 0.341482f, 0.341577f, 0.341673f, 0.341768f, 0.341863f, 0.341959f, 0.342054f, 0.342149f, 0.342245f, 0.34234f,
-0.342435f, 0.342531f, 0.342626f, 0.342721f, 0.342817f, 0.342912f, 0.343007f, 0.343102f, 0.343198f, 0.343293f, 0.343388f, 0.343484f, 0.343579f, 0.343674f, 0.343769f, 0.343865f, 0.34396f, 0.344055f, 0.34415f, 0.344246f,
-0.344341f, 0.344436f, 0.344531f, 0.344627f, 0.344722f, 0.344817f, 0.344912f, 0.345008f, 0.345103f, 0.345198f, 0.345293f, 0.345388f, 0.345484f, 0.345579f, 0.345674f, 0.345769f, 0.345864f, 0.345959f, 0.346055f, 0.34615f,
-0.346245f, 0.34634f, 0.346435f, 0.34653f, 0.346626f, 0.346721f, 0.346816f, 0.346911f, 0.347006f, 0.347101f, 0.347196f, 0.347291f, 0.347387f, 0.347482f, 0.347577f, 0.347672f, 0.347767f, 0.347862f, 0.347957f, 0.348052f,
-0.348147f, 0.348242f, 0.348337f, 0.348433f, 0.348528f, 0.348623f, 0.348718f, 0.348813f, 0.348908f, 0.349003f, 0.349098f, 0.349193f, 0.349288f, 0.349383f, 0.349478f, 0.349573f, 0.349668f, 0.349763f, 0.349858f, 0.349953f,
-0.350048f, 0.350143f, 0.350238f, 0.350333f, 0.350428f, 0.350523f, 0.350618f, 0.350713f, 0.350808f, 0.350903f, 0.350998f, 0.351093f, 0.351188f, 0.351283f, 0.351377f, 0.351472f, 0.351567f, 0.351662f, 0.351757f, 0.351852f,
-0.351947f, 0.352042f, 0.352137f, 0.352232f, 0.352327f, 0.352422f, 0.352516f, 0.352611f, 0.352706f, 0.352801f, 0.352896f, 0.352991f, 0.353086f, 0.353181f, 0.353275f, 0.35337f, 0.353465f, 0.35356f, 0.353655f, 0.35375f,
-0.353844f, 0.353939f, 0.354034f, 0.354129f, 0.354224f, 0.354318f, 0.354413f, 0.354508f, 0.354603f, 0.354698f, 0.354792f, 0.354887f, 0.354982f, 0.355077f, 0.355172f, 0.355266f, 0.355361f, 0.355456f, 0.355551f, 0.355645f,
-0.35574f, 0.355835f, 0.35593f, 0.356024f, 0.356119f, 0.356214f, 0.356308f, 0.356403f, 0.356498f, 0.356593f, 0.356687f, 0.356782f, 0.356877f, 0.356971f, 0.357066f, 0.357161f, 0.357255f, 0.35735f, 0.357445f, 0.357539f,
-0.357634f, 0.357729f, 0.357823f, 0.357918f, 0.358013f, 0.358107f, 0.358202f, 0.358297f, 0.358391f, 0.358486f, 0.35858f, 0.358675f, 0.35877f, 0.358864f, 0.358959f, 0.359053f, 0.359148f, 0.359243f, 0.359337f, 0.359432f,
-0.359526f, 0.359621f, 0.359716f, 0.35981f, 0.359905f, 0.359999f, 0.360094f, 0.360188f, 0.360283f, 0.360377f, 0.360472f, 0.360566f, 0.360661f, 0.360755f, 0.36085f, 0.360944f, 0.361039f, 0.361133f, 0.361228f, 0.361322f,
-0.361417f, 0.361511f, 0.361606f, 0.3617f, 0.361795f, 0.361889f, 0.361984f, 0.362078f, 0.362173f, 0.362267f, 0.362362f, 0.362456f, 0.362551f, 0.362645f, 0.362739f, 0.362834f, 0.362928f, 0.363023f, 0.363117f, 0.363211f,
-0.363306f, 0.3634f, 0.363495f, 0.363589f, 0.363683f, 0.363778f, 0.363872f, 0.363967f, 0.364061f, 0.364155f, 0.36425f, 0.364344f, 0.364438f, 0.364533f, 0.364627f, 0.364721f, 0.364816f, 0.36491f, 0.365004f, 0.365099f,
-0.365193f, 0.365287f, 0.365382f, 0.365476f, 0.36557f, 0.365665f, 0.365759f, 0.365853f, 0.365947f, 0.366042f, 0.366136f, 0.36623f, 0.366324f, 0.366419f, 0.366513f, 0.366607f, 0.366701f, 0.366796f, 0.36689f, 0.366984f,
-0.367078f, 0.367173f, 0.367267f, 0.367361f, 0.367455f, 0.367549f, 0.367644f, 0.367738f, 0.367832f, 0.367926f, 0.36802f, 0.368115f, 0.368209f, 0.368303f, 0.368397f, 0.368491f, 0.368585f, 0.36868f, 0.368774f, 0.368868f,
-0.368962f, 0.369056f, 0.36915f, 0.369244f, 0.369339f, 0.369433f, 0.369527f, 0.369621f, 0.369715f, 0.369809f, 0.369903f, 0.369997f, 0.370091f, 0.370185f, 0.37028f, 0.370374f, 0.370468f, 0.370562f, 0.370656f, 0.37075f,
-0.370844f, 0.370938f, 0.371032f, 0.371126f, 0.37122f, 0.371314f, 0.371408f, 0.371502f, 0.371596f, 0.37169f, 0.371784f, 0.371878f, 0.371972f, 0.372066f, 0.37216f, 0.372254f, 0.372348f, 0.372442f, 0.372536f, 0.37263f,
-0.372724f, 0.372818f, 0.372912f, 0.373006f, 0.3731f, 0.373194f, 0.373288f, 0.373382f, 0.373476f, 0.37357f, 0.373663f, 0.373757f, 0.373851f, 0.373945f, 0.374039f, 0.374133f, 0.374227f, 0.374321f, 0.374415f, 0.374509f,
-0.374602f, 0.374696f, 0.37479f, 0.374884f, 0.374978f, 0.375072f, 0.375166f, 0.375259f, 0.375353f, 0.375447f, 0.375541f, 0.375635f, 0.375729f, 0.375822f, 0.375916f, 0.37601f, 0.376104f, 0.376198f, 0.376291f, 0.376385f,
-0.376479f, 0.376573f, 0.376667f, 0.37676f, 0.376854f, 0.376948f, 0.377042f, 0.377135f, 0.377229f, 0.377323f, 0.377417f, 0.37751f, 0.377604f, 0.377698f, 0.377792f, 0.377885f, 0.377979f, 0.378073f, 0.378166f, 0.37826f,
-0.378354f, 0.378447f, 0.378541f, 0.378635f, 0.378728f, 0.378822f, 0.378916f, 0.379009f, 0.379103f, 0.379197f, 0.37929f, 0.379384f, 0.379478f, 0.379571f, 0.379665f, 0.379759f, 0.379852f, 0.379946f, 0.380039f, 0.380133f,
-0.380227f, 0.38032f, 0.380414f, 0.380507f, 0.380601f, 0.380695f, 0.380788f, 0.380882f, 0.380975f, 0.381069f, 0.381162f, 0.381256f, 0.38135f, 0.381443f, 0.381537f, 0.38163f, 0.381724f, 0.381817f, 0.381911f, 0.382004f,
-0.382098f, 0.382191f, 0.382285f, 0.382378f, 0.382472f, 0.382565f, 0.382659f, 0.382752f, 0.382846f, 0.382939f, 0.383033f, 0.383126f, 0.38322f, 0.383313f, 0.383407f, 0.3835f, 0.383593f, 0.383687f, 0.38378f, 0.383874f,
-0.383967f, 0.384061f, 0.384154f, 0.384247f, 0.384341f, 0.384434f, 0.384528f, 0.384621f, 0.384714f, 0.384808f, 0.384901f, 0.384994f, 0.385088f, 0.385181f, 0.385275f, 0.385368f, 0.385461f, 0.385555f, 0.385648f, 0.385741f,
-0.385835f, 0.385928f, 0.386021f, 0.386115f, 0.386208f, 0.386301f, 0.386395f, 0.386488f, 0.386581f, 0.386674f, 0.386768f, 0.386861f, 0.386954f, 0.387047f, 0.387141f, 0.387234f, 0.387327f, 0.387421f, 0.387514f, 0.387607f,
-0.3877f, 0.387793f, 0.387887f, 0.38798f, 0.388073f, 0.388166f, 0.38826f, 0.388353f, 0.388446f, 0.388539f, 0.388632f, 0.388726f, 0.388819f, 0.388912f, 0.389005f, 0.389098f, 0.389191f, 0.389285f, 0.389378f, 0.389471f,
-0.389564f, 0.389657f, 0.38975f, 0.389843f, 0.389937f, 0.39003f, 0.390123f, 0.390216f, 0.390309f, 0.390402f, 0.390495f, 0.390588f, 0.390681f, 0.390774f, 0.390868f, 0.390961f, 0.391054f, 0.391147f, 0.39124f, 0.391333f,
-0.391426f, 0.391519f, 0.391612f, 0.391705f, 0.391798f, 0.391891f, 0.391984f, 0.392077f, 0.39217f, 0.392263f, 0.392356f, 0.392449f, 0.392542f, 0.392635f, 0.392728f, 0.392821f, 0.392914f, 0.393007f, 0.3931f, 0.393193f,
-0.393286f, 0.393379f, 0.393472f, 0.393565f, 0.393658f, 0.393751f, 0.393844f, 0.393937f, 0.394029f, 0.394122f, 0.394215f, 0.394308f, 0.394401f, 0.394494f, 0.394587f, 0.39468f, 0.394773f, 0.394866f, 0.394958f, 0.395051f,
-0.395144f, 0.395237f, 0.39533f, 0.395423f, 0.395516f, 0.395608f, 0.395701f, 0.395794f, 0.395887f, 0.39598f, 0.396072f, 0.396165f, 0.396258f, 0.396351f, 0.396444f, 0.396536f, 0.396629f, 0.396722f, 0.396815f, 0.396908f,
-0.397f, 0.397093f, 0.397186f, 0.397279f, 0.397371f, 0.397464f, 0.397557f, 0.39765f, 0.397742f, 0.397835f, 0.397928f, 0.39802f, 0.398113f, 0.398206f, 0.398299f, 0.398391f, 0.398484f, 0.398577f, 0.398669f, 0.398762f,
-0.398855f, 0.398947f, 0.39904f, 0.399133f, 0.399225f, 0.399318f, 0.399411f, 0.399503f, 0.399596f, 0.399689f, 0.399781f, 0.399874f, 0.399966f, 0.400059f, 0.400152f, 0.400244f, 0.400337f, 0.400429f, 0.400522f, 0.400615f,
-0.400707f, 0.4008f, 0.400892f, 0.400985f, 0.401077f, 0.40117f, 0.401262f, 0.401355f, 0.401448f, 0.40154f, 0.401633f, 0.401725f, 0.401818f, 0.40191f, 0.402003f, 0.402095f, 0.402188f, 0.40228f, 0.402373f, 0.402465f,
-0.402558f, 0.40265f, 0.402743f, 0.402835f, 0.402928f, 0.40302f, 0.403112f, 0.403205f, 0.403297f, 0.40339f, 0.403482f, 0.403575f, 0.403667f, 0.403759f, 0.403852f, 0.403944f, 0.404037f, 0.404129f, 0.404221f, 0.404314f,
-0.404406f, 0.404499f, 0.404591f, 0.404683f, 0.404776f, 0.404868f, 0.40496f, 0.405053f, 0.405145f, 0.405237f, 0.40533f, 0.405422f, 0.405514f, 0.405607f, 0.405699f, 0.405791f, 0.405884f, 0.405976f, 0.406068f, 0.406161f,
-0.406253f, 0.406345f, 0.406437f, 0.40653f, 0.406622f, 0.406714f, 0.406806f, 0.406899f, 0.406991f, 0.407083f, 0.407175f, 0.407268f, 0.40736f, 0.407452f, 0.407544f, 0.407637f, 0.407729f, 0.407821f, 0.407913f, 0.408005f,
-0.408098f, 0.40819f, 0.408282f, 0.408374f, 0.408466f, 0.408558f, 0.408651f, 0.408743f, 0.408835f, 0.408927f, 0.409019f, 0.409111f, 0.409203f, 0.409296f, 0.409388f, 0.40948f, 0.409572f, 0.409664f, 0.409756f, 0.409848f,
-0.40994f, 0.410032f, 0.410124f, 0.410216f, 0.410309f, 0.410401f, 0.410493f, 0.410585f, 0.410677f, 0.410769f, 0.410861f, 0.410953f, 0.411045f, 0.411137f, 0.411229f, 0.411321f, 0.411413f, 0.411505f, 0.411597f, 0.411689f,
-0.411781f, 0.411873f, 0.411965f, 0.412057f, 0.412149f, 0.412241f, 0.412333f, 0.412425f, 0.412517f, 0.412609f, 0.412701f, 0.412793f, 0.412884f, 0.412976f, 0.413068f, 0.41316f, 0.413252f, 0.413344f, 0.413436f, 0.413528f,
-0.41362f, 0.413712f, 0.413804f, 0.413895f, 0.413987f, 0.414079f, 0.414171f, 0.414263f, 0.414355f, 0.414447f, 0.414538f, 0.41463f, 0.414722f, 0.414814f, 0.414906f, 0.414998f, 0.415089f, 0.415181f, 0.415273f, 0.415365f,
-0.415457f, 0.415548f, 0.41564f, 0.415732f, 0.415824f, 0.415915f, 0.416007f, 0.416099f, 0.416191f, 0.416282f, 0.416374f, 0.416466f, 0.416558f, 0.416649f, 0.416741f, 0.416833f, 0.416924f, 0.417016f, 0.417108f, 0.4172f,
-0.417291f, 0.417383f, 0.417475f, 0.417566f, 0.417658f, 0.41775f, 0.417841f, 0.417933f, 0.418025f, 0.418116f, 0.418208f, 0.4183f, 0.418391f, 0.418483f, 0.418574f, 0.418666f, 0.418758f, 0.418849f, 0.418941f, 0.419032f,
-0.419124f, 0.419216f, 0.419307f, 0.419399f, 0.41949f, 0.419582f, 0.419673f, 0.419765f, 0.419857f, 0.419948f, 0.42004f, 0.420131f, 0.420223f, 0.420314f, 0.420406f, 0.420497f, 0.420589f, 0.42068f, 0.420772f, 0.420863f,
-0.420955f, 0.421046f, 0.421138f, 0.421229f, 0.421321f, 0.421412f, 0.421504f, 0.421595f, 0.421687f, 0.421778f, 0.421869f, 0.421961f, 0.422052f, 0.422144f, 0.422235f, 0.422327f, 0.422418f, 0.422509f, 0.422601f, 0.422692f,
-0.422783f, 0.422875f, 0.422966f, 0.423058f, 0.423149f, 0.42324f, 0.423332f, 0.423423f, 0.423514f, 0.423606f, 0.423697f, 0.423788f, 0.42388f, 0.423971f, 0.424062f, 0.424154f, 0.424245f, 0.424336f, 0.424428f, 0.424519f,
-0.42461f, 0.424701f, 0.424793f, 0.424884f, 0.424975f, 0.425067f, 0.425158f, 0.425249f, 0.42534f, 0.425431f, 0.425523f, 0.425614f, 0.425705f, 0.425796f, 0.425888f, 0.425979f, 0.42607f, 0.426161f, 0.426252f, 0.426344f,
-0.426435f, 0.426526f, 0.426617f, 0.426708f, 0.426799f, 0.426891f, 0.426982f, 0.427073f, 0.427164f, 0.427255f, 0.427346f, 0.427437f, 0.427529f, 0.42762f, 0.427711f, 0.427802f, 0.427893f, 0.427984f, 0.428075f, 0.428166f,
-0.428257f, 0.428348f, 0.428439f, 0.428531f, 0.428622f, 0.428713f, 0.428804f, 0.428895f, 0.428986f, 0.429077f, 0.429168f, 0.429259f, 0.42935f, 0.429441f, 0.429532f, 0.429623f, 0.429714f, 0.429805f, 0.429896f, 0.429987f,
-0.430078f, 0.430169f, 0.43026f, 0.430351f, 0.430442f, 0.430533f, 0.430624f, 0.430715f, 0.430805f, 0.430896f, 0.430987f, 0.431078f, 0.431169f, 0.43126f, 0.431351f, 0.431442f, 0.431533f, 0.431624f, 0.431714f, 0.431805f,
-0.431896f, 0.431987f, 0.432078f, 0.432169f, 0.43226f, 0.432351f, 0.432441f, 0.432532f, 0.432623f, 0.432714f, 0.432805f, 0.432895f, 0.432986f, 0.433077f, 0.433168f, 0.433259f, 0.433349f, 0.43344f, 0.433531f, 0.433622f,
-0.433713f, 0.433803f, 0.433894f, 0.433985f, 0.434076f, 0.434166f, 0.434257f, 0.434348f, 0.434439f, 0.434529f, 0.43462f, 0.434711f, 0.434801f, 0.434892f, 0.434983f, 0.435073f, 0.435164f, 0.435255f, 0.435345f, 0.435436f,
-0.435527f, 0.435617f, 0.435708f, 0.435799f, 0.435889f, 0.43598f, 0.436071f, 0.436161f, 0.436252f, 0.436343f, 0.436433f, 0.436524f, 0.436614f, 0.436705f, 0.436796f, 0.436886f, 0.436977f, 0.437067f, 0.437158f, 0.437248f,
-0.437339f, 0.437429f, 0.43752f, 0.437611f, 0.437701f, 0.437792f, 0.437882f, 0.437973f, 0.438063f, 0.438154f, 0.438244f, 0.438335f, 0.438425f, 0.438516f, 0.438606f, 0.438697f, 0.438787f, 0.438878f, 0.438968f, 0.439058f,
-0.439149f, 0.439239f, 0.43933f, 0.43942f, 0.439511f, 0.439601f, 0.439692f, 0.439782f, 0.439872f, 0.439963f, 0.440053f, 0.440144f, 0.440234f, 0.440324f, 0.440415f, 0.440505f, 0.440595f, 0.440686f, 0.440776f, 0.440866f,
-0.440957f, 0.441047f, 0.441137f, 0.441228f, 0.441318f, 0.441408f, 0.441499f, 0.441589f, 0.441679f, 0.44177f, 0.44186f, 0.44195f, 0.442041f, 0.442131f, 0.442221f, 0.442311f, 0.442402f, 0.442492f, 0.442582f, 0.442672f,
-0.442763f, 0.442853f, 0.442943f, 0.443033f, 0.443123f, 0.443214f, 0.443304f, 0.443394f, 0.443484f, 0.443574f, 0.443665f, 0.443755f, 0.443845f, 0.443935f, 0.444025f, 0.444115f, 0.444206f, 0.444296f, 0.444386f, 0.444476f,
-0.444566f, 0.444656f, 0.444746f, 0.444837f, 0.444927f, 0.445017f, 0.445107f, 0.445197f, 0.445287f, 0.445377f, 0.445467f, 0.445557f, 0.445647f, 0.445737f, 0.445827f, 0.445917f, 0.446008f, 0.446098f, 0.446188f, 0.446278f,
-0.446368f, 0.446458f, 0.446548f, 0.446638f, 0.446728f, 0.446818f, 0.446908f, 0.446998f, 0.447088f, 0.447178f, 0.447268f, 0.447358f, 0.447447f, 0.447537f, 0.447627f, 0.447717f, 0.447807f, 0.447897f, 0.447987f, 0.448077f,
-0.448167f, 0.448257f, 0.448347f, 0.448437f, 0.448527f, 0.448616f, 0.448706f, 0.448796f, 0.448886f, 0.448976f, 0.449066f, 0.449156f, 0.449245f, 0.449335f, 0.449425f, 0.449515f, 0.449605f, 0.449695f, 0.449784f, 0.449874f,
-0.449964f, 0.450054f, 0.450144f, 0.450233f, 0.450323f, 0.450413f, 0.450503f, 0.450593f, 0.450682f, 0.450772f, 0.450862f, 0.450952f, 0.451041f, 0.451131f, 0.451221f, 0.45131f, 0.4514f, 0.45149f, 0.45158f, 0.451669f,
-0.451759f, 0.451849f, 0.451938f, 0.452028f, 0.452118f, 0.452207f, 0.452297f, 0.452387f, 0.452476f, 0.452566f, 0.452656f, 0.452745f, 0.452835f, 0.452925f, 0.453014f, 0.453104f, 0.453193f, 0.453283f, 0.453373f, 0.453462f,
-0.453552f, 0.453641f, 0.453731f, 0.45382f, 0.45391f, 0.454f, 0.454089f, 0.454179f, 0.454268f, 0.454358f, 0.454447f, 0.454537f, 0.454626f, 0.454716f, 0.454805f, 0.454895f, 0.454984f, 0.455074f, 0.455163f, 0.455253f,
-0.455342f, 0.455432f, 0.455521f, 0.455611f, 0.4557f, 0.45579f, 0.455879f, 0.455968f, 0.456058f, 0.456147f, 0.456237f, 0.456326f, 0.456416f, 0.456505f, 0.456594f, 0.456684f, 0.456773f, 0.456863f, 0.456952f, 0.457041f,
-0.457131f, 0.45722f, 0.457309f, 0.457399f, 0.457488f, 0.457577f, 0.457667f, 0.457756f, 0.457845f, 0.457935f, 0.458024f, 0.458113f, 0.458203f, 0.458292f, 0.458381f, 0.45847f, 0.45856f, 0.458649f, 0.458738f, 0.458827f,
-0.458917f, 0.459006f, 0.459095f, 0.459184f, 0.459274f, 0.459363f, 0.459452f, 0.459541f, 0.459631f, 0.45972f, 0.459809f, 0.459898f, 0.459987f, 0.460077f, 0.460166f, 0.460255f, 0.460344f, 0.460433f, 0.460522f, 0.460611f,
-0.460701f, 0.46079f, 0.460879f, 0.460968f, 0.461057f, 0.461146f, 0.461235f, 0.461324f, 0.461414f, 0.461503f, 0.461592f, 0.461681f, 0.46177f, 0.461859f, 0.461948f, 0.462037f, 0.462126f, 0.462215f, 0.462304f, 0.462393f,
-0.462482f, 0.462571f, 0.46266f, 0.462749f, 0.462838f, 0.462927f, 0.463016f, 0.463105f, 0.463194f, 0.463283f, 0.463372f, 0.463461f, 0.46355f, 0.463639f, 0.463728f, 0.463817f, 0.463906f, 0.463995f, 0.464084f, 0.464173f,
-0.464262f, 0.464351f, 0.46444f, 0.464528f, 0.464617f, 0.464706f, 0.464795f, 0.464884f, 0.464973f, 0.465062f, 0.465151f, 0.465239f, 0.465328f, 0.465417f, 0.465506f, 0.465595f, 0.465684f, 0.465772f, 0.465861f, 0.46595f,
-0.466039f, 0.466128f, 0.466216f, 0.466305f, 0.466394f, 0.466483f, 0.466572f, 0.46666f, 0.466749f, 0.466838f, 0.466927f, 0.467015f, 0.467104f, 0.467193f, 0.467282f, 0.46737f, 0.467459f, 0.467548f, 0.467636f, 0.467725f,
-0.467814f, 0.467902f, 0.467991f, 0.46808f, 0.468168f, 0.468257f, 0.468346f, 0.468434f, 0.468523f, 0.468612f, 0.4687f, 0.468789f, 0.468878f, 0.468966f, 0.469055f, 0.469143f, 0.469232f, 0.469321f, 0.469409f, 0.469498f,
-0.469586f, 0.469675f, 0.469763f, 0.469852f, 0.469941f, 0.470029f, 0.470118f, 0.470206f, 0.470295f, 0.470383f, 0.470472f, 0.47056f, 0.470649f, 0.470737f, 0.470826f, 0.470914f, 0.471003f, 0.471091f, 0.47118f, 0.471268f,
-0.471357f, 0.471445f, 0.471534f, 0.471622f, 0.47171f, 0.471799f, 0.471887f, 0.471976f, 0.472064f, 0.472153f, 0.472241f, 0.472329f, 0.472418f, 0.472506f, 0.472595f, 0.472683f, 0.472771f, 0.47286f, 0.472948f, 0.473036f,
-0.473125f, 0.473213f, 0.473301f, 0.47339f, 0.473478f, 0.473566f, 0.473655f, 0.473743f, 0.473831f, 0.47392f, 0.474008f, 0.474096f, 0.474184f, 0.474273f, 0.474361f, 0.474449f, 0.474538f, 0.474626f, 0.474714f, 0.474802f,
-0.47489f, 0.474979f, 0.475067f, 0.475155f, 0.475243f, 0.475332f, 0.47542f, 0.475508f, 0.475596f, 0.475684f, 0.475772f, 0.475861f, 0.475949f, 0.476037f, 0.476125f, 0.476213f, 0.476301f, 0.47639f, 0.476478f, 0.476566f,
-0.476654f, 0.476742f, 0.47683f, 0.476918f, 0.477006f, 0.477094f, 0.477182f, 0.477271f, 0.477359f, 0.477447f, 0.477535f, 0.477623f, 0.477711f, 0.477799f, 0.477887f, 0.477975f, 0.478063f, 0.478151f, 0.478239f, 0.478327f,
-0.478415f, 0.478503f, 0.478591f, 0.478679f, 0.478767f, 0.478855f, 0.478943f, 0.479031f, 0.479119f, 0.479207f, 0.479295f, 0.479383f, 0.479471f, 0.479558f, 0.479646f, 0.479734f, 0.479822f, 0.47991f, 0.479998f, 0.480086f,
-0.480174f, 0.480262f, 0.48035f, 0.480437f, 0.480525f, 0.480613f, 0.480701f, 0.480789f, 0.480877f, 0.480964f, 0.481052f, 0.48114f, 0.481228f, 0.481316f, 0.481404f, 0.481491f, 0.481579f, 0.481667f, 0.481755f, 0.481842f,
-0.48193f, 0.482018f, 0.482106f, 0.482193f, 0.482281f, 0.482369f, 0.482457f, 0.482544f, 0.482632f, 0.48272f, 0.482808f, 0.482895f, 0.482983f, 0.483071f, 0.483158f, 0.483246f, 0.483334f, 0.483421f, 0.483509f, 0.483597f,
-0.483684f, 0.483772f, 0.48386f, 0.483947f, 0.484035f, 0.484122f, 0.48421f, 0.484298f, 0.484385f, 0.484473f, 0.48456f, 0.484648f, 0.484736f, 0.484823f, 0.484911f, 0.484998f, 0.485086f, 0.485173f, 0.485261f, 0.485348f,
-0.485436f, 0.485524f, 0.485611f, 0.485699f, 0.485786f, 0.485874f, 0.485961f, 0.486049f, 0.486136f, 0.486224f, 0.486311f, 0.486398f, 0.486486f, 0.486573f, 0.486661f, 0.486748f, 0.486836f, 0.486923f, 0.487011f, 0.487098f,
-0.487185f, 0.487273f, 0.48736f, 0.487448f, 0.487535f, 0.487622f, 0.48771f, 0.487797f, 0.487884f, 0.487972f, 0.488059f, 0.488147f, 0.488234f, 0.488321f, 0.488409f, 0.488496f, 0.488583f, 0.48867f, 0.488758f, 0.488845f,
-0.488932f, 0.48902f, 0.489107f, 0.489194f, 0.489281f, 0.489369f, 0.489456f, 0.489543f, 0.48963f, 0.489718f, 0.489805f, 0.489892f, 0.489979f, 0.490067f, 0.490154f, 0.490241f, 0.490328f, 0.490415f, 0.490503f, 0.49059f,
-0.490677f, 0.490764f, 0.490851f, 0.490938f, 0.491026f, 0.491113f, 0.4912f, 0.491287f, 0.491374f, 0.491461f, 0.491548f, 0.491635f, 0.491723f, 0.49181f, 0.491897f, 0.491984f, 0.492071f, 0.492158f, 0.492245f, 0.492332f,
-0.492419f, 0.492506f, 0.492593f, 0.49268f, 0.492767f, 0.492854f, 0.492941f, 0.493028f, 0.493115f, 0.493202f, 0.493289f, 0.493376f, 0.493463f, 0.49355f, 0.493637f, 0.493724f, 0.493811f, 0.493898f, 0.493985f, 0.494072f,
-0.494159f, 0.494246f, 0.494333f, 0.49442f, 0.494507f, 0.494594f, 0.49468f, 0.494767f, 0.494854f, 0.494941f, 0.495028f, 0.495115f, 0.495202f, 0.495289f, 0.495375f, 0.495462f, 0.495549f, 0.495636f, 0.495723f, 0.49581f,
-0.495896f, 0.495983f, 0.49607f, 0.496157f, 0.496244f, 0.49633f, 0.496417f, 0.496504f, 0.496591f, 0.496677f, 0.496764f, 0.496851f, 0.496938f, 0.497024f, 0.497111f, 0.497198f, 0.497285f, 0.497371f, 0.497458f, 0.497545f,
-0.497631f, 0.497718f, 0.497805f, 0.497891f, 0.497978f, 0.498065f, 0.498151f, 0.498238f, 0.498325f, 0.498411f, 0.498498f, 0.498585f, 0.498671f, 0.498758f, 0.498844f, 0.498931f, 0.499018f, 0.499104f, 0.499191f, 0.499277f,
-0.499364f, 0.49945f, 0.499537f, 0.499624f, 0.49971f, 0.499797f, 0.499883f, 0.49997f, 0.500056f, 0.500143f, 0.500229f, 0.500316f, 0.500402f, 0.500489f, 0.500575f, 0.500662f, 0.500748f, 0.500835f, 0.500921f, 0.501008f,
-0.501094f, 0.50118f, 0.501267f, 0.501353f, 0.50144f, 0.501526f, 0.501613f, 0.501699f, 0.501785f, 0.501872f, 0.501958f, 0.502045f, 0.502131f, 0.502217f, 0.502304f, 0.50239f, 0.502476f, 0.502563f, 0.502649f, 0.502735f,
-0.502822f, 0.502908f, 0.502994f, 0.503081f, 0.503167f, 0.503253f, 0.503339f, 0.503426f, 0.503512f, 0.503598f, 0.503685f, 0.503771f, 0.503857f, 0.503943f, 0.50403f, 0.504116f, 0.504202f, 0.504288f, 0.504374f, 0.504461f,
-0.504547f, 0.504633f, 0.504719f, 0.504805f, 0.504892f, 0.504978f, 0.505064f, 0.50515f, 0.505236f, 0.505322f, 0.505409f, 0.505495f, 0.505581f, 0.505667f, 0.505753f, 0.505839f, 0.505925f, 0.506011f, 0.506097f, 0.506184f,
-0.50627f, 0.506356f, 0.506442f, 0.506528f, 0.506614f, 0.5067f, 0.506786f, 0.506872f, 0.506958f, 0.507044f, 0.50713f, 0.507216f, 0.507302f, 0.507388f, 0.507474f, 0.50756f, 0.507646f, 0.507732f, 0.507818f, 0.507904f,
-0.50799f, 0.508076f, 0.508162f, 0.508248f, 0.508334f, 0.50842f, 0.508505f, 0.508591f, 0.508677f, 0.508763f, 0.508849f, 0.508935f, 0.509021f, 0.509107f, 0.509193f, 0.509278f, 0.509364f, 0.50945f, 0.509536f, 0.509622f,
-0.509708f, 0.509793f, 0.509879f, 0.509965f, 0.510051f, 0.510137f, 0.510222f, 0.510308f, 0.510394f, 0.51048f, 0.510566f, 0.510651f, 0.510737f, 0.510823f, 0.510909f, 0.510994f, 0.51108f, 0.511166f, 0.511251f, 0.511337f,
-0.511423f, 0.511509f, 0.511594f, 0.51168f, 0.511766f, 0.511851f, 0.511937f, 0.512023f, 0.512108f, 0.512194f, 0.51228f, 0.512365f, 0.512451f, 0.512536f, 0.512622f, 0.512708f, 0.512793f, 0.512879f, 0.512965f, 0.51305f,
-0.513136f, 0.513221f, 0.513307f, 0.513392f, 0.513478f, 0.513563f, 0.513649f, 0.513735f, 0.51382f, 0.513906f, 0.513991f, 0.514077f, 0.514162f, 0.514248f, 0.514333f, 0.514419f, 0.514504f, 0.51459f, 0.514675f, 0.51476f,
-0.514846f, 0.514931f, 0.515017f, 0.515102f, 0.515188f, 0.515273f, 0.515359f, 0.515444f, 0.515529f, 0.515615f, 0.5157f, 0.515786f, 0.515871f, 0.515956f, 0.516042f, 0.516127f, 0.516212f, 0.516298f, 0.516383f, 0.516468f,
-0.516554f, 0.516639f, 0.516724f, 0.51681f, 0.516895f, 0.51698f, 0.517066f, 0.517151f, 0.517236f, 0.517321f, 0.517407f, 0.517492f, 0.517577f, 0.517662f, 0.517748f, 0.517833f, 0.517918f, 0.518003f, 0.518089f, 0.518174f,
-0.518259f, 0.518344f, 0.518429f, 0.518514f, 0.5186f, 0.518685f, 0.51877f, 0.518855f, 0.51894f, 0.519025f, 0.519111f, 0.519196f, 0.519281f, 0.519366f, 0.519451f, 0.519536f, 0.519621f, 0.519706f, 0.519791f, 0.519877f,
-0.519962f, 0.520047f, 0.520132f, 0.520217f, 0.520302f, 0.520387f, 0.520472f, 0.520557f, 0.520642f, 0.520727f, 0.520812f, 0.520897f, 0.520982f, 0.521067f, 0.521152f, 0.521237f, 0.521322f, 0.521407f, 0.521492f, 0.521577f,
-0.521662f, 0.521747f, 0.521832f, 0.521917f, 0.522001f, 0.522086f, 0.522171f, 0.522256f, 0.522341f, 0.522426f, 0.522511f, 0.522596f, 0.522681f, 0.522765f, 0.52285f, 0.522935f, 0.52302f, 0.523105f, 0.52319f, 0.523274f,
-0.523359f, 0.523444f, 0.523529f, 0.523614f, 0.523699f, 0.523783f, 0.523868f, 0.523953f, 0.524038f, 0.524122f, 0.524207f, 0.524292f, 0.524377f, 0.524461f, 0.524546f, 0.524631f, 0.524716f, 0.5248f, 0.524885f, 0.52497f,
-0.525054f, 0.525139f, 0.525224f, 0.525308f, 0.525393f, 0.525478f, 0.525562f, 0.525647f, 0.525732f, 0.525816f, 0.525901f, 0.525985f, 0.52607f, 0.526155f, 0.526239f, 0.526324f, 0.526408f, 0.526493f, 0.526578f, 0.526662f,
-0.526747f, 0.526831f, 0.526916f, 0.527f, 0.527085f, 0.527169f, 0.527254f, 0.527338f, 0.527423f, 0.527508f, 0.527592f, 0.527676f, 0.527761f, 0.527845f, 0.52793f, 0.528014f, 0.528099f, 0.528183f, 0.528268f, 0.528352f,
-0.528437f, 0.528521f, 0.528605f, 0.52869f, 0.528774f, 0.528859f, 0.528943f, 0.529027f, 0.529112f, 0.529196f, 0.529281f, 0.529365f, 0.529449f, 0.529534f, 0.529618f, 0.529702f, 0.529787f, 0.529871f, 0.529955f, 0.53004f,
-0.530124f, 0.530208f, 0.530292f, 0.530377f, 0.530461f, 0.530545f, 0.53063f, 0.530714f, 0.530798f, 0.530882f, 0.530967f, 0.531051f, 0.531135f, 0.531219f, 0.531303f, 0.531388f, 0.531472f, 0.531556f, 0.53164f, 0.531724f,
-0.531809f, 0.531893f, 0.531977f, 0.532061f, 0.532145f, 0.532229f, 0.532313f, 0.532398f, 0.532482f, 0.532566f, 0.53265f, 0.532734f, 0.532818f, 0.532902f, 0.532986f, 0.53307f, 0.533154f, 0.533238f, 0.533323f, 0.533407f,
-0.533491f, 0.533575f, 0.533659f, 0.533743f, 0.533827f, 0.533911f, 0.533995f, 0.534079f, 0.534163f, 0.534247f, 0.534331f, 0.534415f, 0.534499f, 0.534583f, 0.534666f, 0.53475f, 0.534834f, 0.534918f, 0.535002f, 0.535086f,
-0.53517f, 0.535254f, 0.535338f, 0.535422f, 0.535506f, 0.535589f, 0.535673f, 0.535757f, 0.535841f, 0.535925f, 0.536009f, 0.536093f, 0.536176f, 0.53626f, 0.536344f, 0.536428f, 0.536512f, 0.536596f, 0.536679f, 0.536763f,
-0.536847f, 0.536931f, 0.537014f, 0.537098f, 0.537182f, 0.537266f, 0.537349f, 0.537433f, 0.537517f, 0.537601f, 0.537684f, 0.537768f, 0.537852f, 0.537935f, 0.538019f, 0.538103f, 0.538186f, 0.53827f, 0.538354f, 0.538437f,
-0.538521f, 0.538605f, 0.538688f, 0.538772f, 0.538856f, 0.538939f, 0.539023f, 0.539106f, 0.53919f, 0.539274f, 0.539357f, 0.539441f, 0.539524f, 0.539608f, 0.539691f, 0.539775f, 0.539858f, 0.539942f, 0.540026f, 0.540109f,
-0.540193f, 0.540276f, 0.54036f, 0.540443f, 0.540527f, 0.54061f, 0.540694f, 0.540777f, 0.54086f, 0.540944f, 0.541027f, 0.541111f, 0.541194f, 0.541278f, 0.541361f, 0.541444f, 0.541528f, 0.541611f, 0.541695f, 0.541778f,
-0.541861f, 0.541945f, 0.542028f, 0.542112f, 0.542195f, 0.542278f, 0.542362f, 0.542445f, 0.542528f, 0.542612f, 0.542695f, 0.542778f, 0.542862f, 0.542945f, 0.543028f, 0.543111f, 0.543195f, 0.543278f, 0.543361f, 0.543444f,
-0.543528f, 0.543611f, 0.543694f, 0.543777f, 0.543861f, 0.543944f, 0.544027f, 0.54411f, 0.544193f, 0.544277f, 0.54436f, 0.544443f, 0.544526f, 0.544609f, 0.544692f, 0.544776f, 0.544859f, 0.544942f, 0.545025f, 0.545108f,
-0.545191f, 0.545274f, 0.545357f, 0.545441f, 0.545524f, 0.545607f, 0.54569f, 0.545773f, 0.545856f, 0.545939f, 0.546022f, 0.546105f, 0.546188f, 0.546271f, 0.546354f, 0.546437f, 0.54652f, 0.546603f, 0.546686f, 0.546769f,
-0.546852f, 0.546935f, 0.547018f, 0.547101f, 0.547184f, 0.547267f, 0.54735f, 0.547433f, 0.547516f, 0.547599f, 0.547682f, 0.547764f, 0.547847f, 0.54793f, 0.548013f, 0.548096f, 0.548179f, 0.548262f, 0.548345f, 0.548427f,
-0.54851f, 0.548593f, 0.548676f, 0.548759f, 0.548842f, 0.548924f, 0.549007f, 0.54909f, 0.549173f, 0.549256f, 0.549338f, 0.549421f, 0.549504f, 0.549587f, 0.549669f, 0.549752f, 0.549835f, 0.549918f, 0.55f, 0.550083f,
-0.550166f, 0.550249f, 0.550331f, 0.550414f, 0.550497f, 0.550579f, 0.550662f, 0.550745f, 0.550827f, 0.55091f, 0.550993f, 0.551075f, 0.551158f, 0.55124f, 0.551323f, 0.551406f, 0.551488f, 0.551571f, 0.551653f, 0.551736f,
-0.551819f, 0.551901f, 0.551984f, 0.552066f, 0.552149f, 0.552231f, 0.552314f, 0.552396f, 0.552479f, 0.552561f, 0.552644f, 0.552726f, 0.552809f, 0.552891f, 0.552974f, 0.553056f, 0.553139f, 0.553221f, 0.553304f, 0.553386f,
-0.553469f, 0.553551f, 0.553634f, 0.553716f, 0.553798f, 0.553881f, 0.553963f, 0.554046f, 0.554128f, 0.55421f, 0.554293f, 0.554375f, 0.554457f, 0.55454f, 0.554622f, 0.554704f, 0.554787f, 0.554869f, 0.554951f, 0.555034f,
-0.555116f, 0.555198f, 0.555281f, 0.555363f, 0.555445f, 0.555527f, 0.55561f, 0.555692f, 0.555774f, 0.555856f, 0.555939f, 0.556021f, 0.556103f, 0.556185f, 0.556268f, 0.55635f, 0.556432f, 0.556514f, 0.556596f, 0.556678f,
-0.556761f, 0.556843f, 0.556925f, 0.557007f, 0.557089f, 0.557171f, 0.557253f, 0.557336f, 0.557418f, 0.5575f, 0.557582f, 0.557664f, 0.557746f, 0.557828f, 0.55791f, 0.557992f, 0.558074f, 0.558156f, 0.558238f, 0.55832f,
-0.558403f, 0.558485f, 0.558567f, 0.558649f, 0.558731f, 0.558813f, 0.558895f, 0.558977f, 0.559059f, 0.55914f, 0.559222f, 0.559304f, 0.559386f, 0.559468f, 0.55955f, 0.559632f, 0.559714f, 0.559796f, 0.559878f, 0.55996f,
-0.560042f, 0.560124f, 0.560205f, 0.560287f, 0.560369f, 0.560451f, 0.560533f, 0.560615f, 0.560697f, 0.560778f, 0.56086f, 0.560942f, 0.561024f, 0.561106f, 0.561187f, 0.561269f, 0.561351f, 0.561433f, 0.561515f, 0.561596f,
-0.561678f, 0.56176f, 0.561842f, 0.561923f, 0.562005f, 0.562087f, 0.562168f, 0.56225f, 0.562332f, 0.562414f, 0.562495f, 0.562577f, 0.562659f, 0.56274f, 0.562822f, 0.562904f, 0.562985f, 0.563067f, 0.563148f, 0.56323f,
-0.563312f, 0.563393f, 0.563475f, 0.563556f, 0.563638f, 0.56372f, 0.563801f, 0.563883f, 0.563964f, 0.564046f, 0.564127f, 0.564209f, 0.56429f, 0.564372f, 0.564454f, 0.564535f, 0.564617f, 0.564698f, 0.56478f, 0.564861f,
-0.564942f, 0.565024f, 0.565105f, 0.565187f, 0.565268f, 0.56535f, 0.565431f, 0.565513f, 0.565594f, 0.565675f, 0.565757f, 0.565838f, 0.56592f, 0.566001f, 0.566082f, 0.566164f, 0.566245f, 0.566327f, 0.566408f, 0.566489f,
-0.566571f, 0.566652f, 0.566733f, 0.566815f, 0.566896f, 0.566977f, 0.567058f, 0.56714f, 0.567221f, 0.567302f, 0.567384f, 0.567465f, 0.567546f, 0.567627f, 0.567709f, 0.56779f, 0.567871f, 0.567952f, 0.568033f, 0.568115f,
-0.568196f, 0.568277f, 0.568358f, 0.568439f, 0.568521f, 0.568602f, 0.568683f, 0.568764f, 0.568845f, 0.568926f, 0.569007f, 0.569089f, 0.56917f, 0.569251f, 0.569332f, 0.569413f, 0.569494f, 0.569575f, 0.569656f, 0.569737f,
-0.569818f, 0.569899f, 0.56998f, 0.570061f, 0.570142f, 0.570223f, 0.570304f, 0.570386f, 0.570467f, 0.570547f, 0.570628f, 0.570709f, 0.57079f, 0.570871f, 0.570952f, 0.571033f, 0.571114f, 0.571195f, 0.571276f, 0.571357f,
-0.571438f, 0.571519f, 0.5716f, 0.571681f, 0.571762f, 0.571842f, 0.571923f, 0.572004f, 0.572085f, 0.572166f, 0.572247f, 0.572328f, 0.572408f, 0.572489f, 0.57257f, 0.572651f, 0.572732f, 0.572812f, 0.572893f, 0.572974f,
-0.573055f, 0.573136f, 0.573216f, 0.573297f, 0.573378f, 0.573459f, 0.573539f, 0.57362f, 0.573701f, 0.573781f, 0.573862f, 0.573943f, 0.574024f, 0.574104f, 0.574185f, 0.574266f, 0.574346f, 0.574427f, 0.574508f, 0.574588f,
-0.574669f, 0.574749f, 0.57483f, 0.574911f, 0.574991f, 0.575072f, 0.575152f, 0.575233f, 0.575314f, 0.575394f, 0.575475f, 0.575555f, 0.575636f, 0.575716f, 0.575797f, 0.575878f, 0.575958f, 0.576039f, 0.576119f, 0.5762f,
-0.57628f, 0.576361f, 0.576441f, 0.576521f, 0.576602f, 0.576682f, 0.576763f, 0.576843f, 0.576924f, 0.577004f, 0.577085f, 0.577165f, 0.577245f, 0.577326f, 0.577406f, 0.577487f, 0.577567f, 0.577647f, 0.577728f, 0.577808f,
-0.577888f, 0.577969f, 0.578049f, 0.578129f, 0.57821f, 0.57829f, 0.57837f, 0.578451f, 0.578531f, 0.578611f, 0.578691f, 0.578772f, 0.578852f, 0.578932f, 0.579013f, 0.579093f, 0.579173f, 0.579253f, 0.579333f, 0.579414f,
-0.579494f, 0.579574f, 0.579654f, 0.579734f, 0.579815f, 0.579895f, 0.579975f, 0.580055f, 0.580135f, 0.580215f, 0.580296f, 0.580376f, 0.580456f, 0.580536f, 0.580616f, 0.580696f, 0.580776f, 0.580856f, 0.580936f, 0.581016f,
-0.581097f, 0.581177f, 0.581257f, 0.581337f, 0.581417f, 0.581497f, 0.581577f, 0.581657f, 0.581737f, 0.581817f, 0.581897f, 0.581977f, 0.582057f, 0.582137f, 0.582217f, 0.582297f, 0.582377f, 0.582457f, 0.582536f, 0.582616f,
-0.582696f, 0.582776f, 0.582856f, 0.582936f, 0.583016f, 0.583096f, 0.583176f, 0.583256f, 0.583335f, 0.583415f, 0.583495f, 0.583575f, 0.583655f, 0.583735f, 0.583814f, 0.583894f, 0.583974f, 0.584054f, 0.584134f, 0.584213f,
-0.584293f, 0.584373f, 0.584453f, 0.584533f, 0.584612f, 0.584692f, 0.584772f, 0.584851f, 0.584931f, 0.585011f, 0.585091f, 0.58517f, 0.58525f, 0.58533f, 0.585409f, 0.585489f, 0.585569f, 0.585648f, 0.585728f, 0.585808f,
-0.585887f, 0.585967f, 0.586046f, 0.586126f, 0.586206f, 0.586285f, 0.586365f, 0.586444f, 0.586524f, 0.586604f, 0.586683f, 0.586763f, 0.586842f, 0.586922f, 0.587001f, 0.587081f, 0.58716f, 0.58724f, 0.587319f, 0.587399f,
-0.587478f, 0.587558f, 0.587637f, 0.587717f, 0.587796f, 0.587876f, 0.587955f, 0.588035f, 0.588114f, 0.588193f, 0.588273f, 0.588352f, 0.588432f, 0.588511f, 0.58859f, 0.58867f, 0.588749f, 0.588829f, 0.588908f, 0.588987f,
-0.589067f, 0.589146f, 0.589225f, 0.589305f, 0.589384f, 0.589463f, 0.589543f, 0.589622f, 0.589701f, 0.58978f, 0.58986f, 0.589939f, 0.590018f, 0.590097f, 0.590177f, 0.590256f, 0.590335f, 0.590414f, 0.590494f, 0.590573f,
-0.590652f, 0.590731f, 0.59081f, 0.590889f, 0.590969f, 0.591048f, 0.591127f, 0.591206f, 0.591285f, 0.591364f, 0.591443f, 0.591523f, 0.591602f, 0.591681f, 0.59176f, 0.591839f, 0.591918f, 0.591997f, 0.592076f, 0.592155f,
-0.592234f, 0.592313f, 0.592392f, 0.592471f, 0.59255f, 0.592629f, 0.592708f, 0.592787f, 0.592866f, 0.592945f, 0.593024f, 0.593103f, 0.593182f, 0.593261f, 0.59334f, 0.593419f, 0.593498f, 0.593577f, 0.593656f, 0.593735f,
-0.593814f, 0.593893f, 0.593972f, 0.59405f, 0.594129f, 0.594208f, 0.594287f, 0.594366f, 0.594445f, 0.594524f, 0.594602f, 0.594681f, 0.59476f, 0.594839f, 0.594918f, 0.594997f, 0.595075f, 0.595154f, 0.595233f, 0.595312f,
-0.59539f, 0.595469f, 0.595548f, 0.595627f, 0.595705f, 0.595784f, 0.595863f, 0.595941f, 0.59602f, 0.596099f, 0.596178f, 0.596256f, 0.596335f, 0.596414f, 0.596492f, 0.596571f, 0.596649f, 0.596728f, 0.596807f, 0.596885f,
-0.596964f, 0.597043f, 0.597121f, 0.5972f, 0.597278f, 0.597357f, 0.597435f, 0.597514f, 0.597593f, 0.597671f, 0.59775f, 0.597828f, 0.597907f, 0.597985f, 0.598064f, 0.598142f, 0.598221f, 0.598299f, 0.598378f, 0.598456f,
-0.598535f, 0.598613f, 0.598692f, 0.59877f, 0.598848f, 0.598927f, 0.599005f, 0.599084f, 0.599162f, 0.59924f, 0.599319f, 0.599397f, 0.599476f, 0.599554f, 0.599632f, 0.599711f, 0.599789f, 0.599867f, 0.599946f, 0.600024f,
-0.600102f, 0.600181f, 0.600259f, 0.600337f, 0.600416f, 0.600494f, 0.600572f, 0.60065f, 0.600729f, 0.600807f, 0.600885f, 0.600963f, 0.601042f, 0.60112f, 0.601198f, 0.601276f, 0.601354f, 0.601433f, 0.601511f, 0.601589f,
-0.601667f, 0.601745f, 0.601823f, 0.601902f, 0.60198f, 0.602058f, 0.602136f, 0.602214f, 0.602292f, 0.60237f, 0.602448f, 0.602526f, 0.602605f, 0.602683f, 0.602761f, 0.602839f, 0.602917f, 0.602995f, 0.603073f, 0.603151f,
-0.603229f, 0.603307f, 0.603385f, 0.603463f, 0.603541f, 0.603619f, 0.603697f, 0.603775f, 0.603853f, 0.603931f, 0.604009f, 0.604087f, 0.604164f, 0.604242f, 0.60432f, 0.604398f, 0.604476f, 0.604554f, 0.604632f, 0.60471f,
-0.604788f, 0.604866f, 0.604943f, 0.605021f, 0.605099f, 0.605177f, 0.605255f, 0.605333f, 0.60541f, 0.605488f, 0.605566f, 0.605644f, 0.605721f, 0.605799f, 0.605877f, 0.605955f, 0.606033f, 0.60611f, 0.606188f, 0.606266f,
-0.606343f, 0.606421f, 0.606499f, 0.606577f, 0.606654f, 0.606732f, 0.60681f, 0.606887f, 0.606965f, 0.607043f, 0.60712f, 0.607198f, 0.607275f, 0.607353f, 0.607431f, 0.607508f, 0.607586f, 0.607664f, 0.607741f, 0.607819f,
-0.607896f, 0.607974f, 0.608051f, 0.608129f, 0.608206f, 0.608284f, 0.608361f, 0.608439f, 0.608517f, 0.608594f, 0.608672f, 0.608749f, 0.608826f, 0.608904f, 0.608981f, 0.609059f, 0.609136f, 0.609214f, 0.609291f, 0.609369f,
-0.609446f, 0.609523f, 0.609601f, 0.609678f, 0.609756f, 0.609833f, 0.60991f, 0.609988f, 0.610065f, 0.610142f, 0.61022f, 0.610297f, 0.610374f, 0.610452f, 0.610529f, 0.610606f, 0.610684f, 0.610761f, 0.610838f, 0.610916f,
-0.610993f, 0.61107f, 0.611147f, 0.611225f, 0.611302f, 0.611379f, 0.611456f, 0.611533f, 0.611611f, 0.611688f, 0.611765f, 0.611842f, 0.611919f, 0.611997f, 0.612074f, 0.612151f, 0.612228f, 0.612305f, 0.612382f, 0.612459f,
-0.612537f, 0.612614f, 0.612691f, 0.612768f, 0.612845f, 0.612922f, 0.612999f, 0.613076f, 0.613153f, 0.61323f, 0.613307f, 0.613384f, 0.613461f, 0.613538f, 0.613615f, 0.613692f, 0.613769f, 0.613846f, 0.613923f, 0.614f,
-0.614077f, 0.614154f, 0.614231f, 0.614308f, 0.614385f, 0.614462f, 0.614539f, 0.614616f, 0.614693f, 0.61477f, 0.614847f, 0.614923f, 0.615f, 0.615077f, 0.615154f, 0.615231f, 0.615308f, 0.615385f, 0.615461f, 0.615538f,
-0.615615f, 0.615692f, 0.615769f, 0.615845f, 0.615922f, 0.615999f, 0.616076f, 0.616152f, 0.616229f, 0.616306f, 0.616383f, 0.616459f, 0.616536f, 0.616613f, 0.61669f, 0.616766f, 0.616843f, 0.61692f, 0.616996f, 0.617073f,
-0.61715f, 0.617226f, 0.617303f, 0.61738f, 0.617456f, 0.617533f, 0.617609f, 0.617686f, 0.617763f, 0.617839f, 0.617916f, 0.617992f, 0.618069f, 0.618145f, 0.618222f, 0.618299f, 0.618375f, 0.618452f, 0.618528f, 0.618605f,
-0.618681f, 0.618758f, 0.618834f, 0.618911f, 0.618987f, 0.619064f, 0.61914f, 0.619217f, 0.619293f, 0.619369f, 0.619446f, 0.619522f, 0.619599f, 0.619675f, 0.619751f, 0.619828f, 0.619904f, 0.619981f, 0.620057f, 0.620133f,
-0.62021f, 0.620286f, 0.620362f, 0.620439f, 0.620515f, 0.620591f, 0.620668f, 0.620744f, 0.62082f, 0.620897f, 0.620973f, 0.621049f, 0.621125f, 0.621202f, 0.621278f, 0.621354f, 0.62143f, 0.621507f, 0.621583f, 0.621659f,
-0.621735f, 0.621811f, 0.621888f, 0.621964f, 0.62204f, 0.622116f, 0.622192f, 0.622268f, 0.622344f, 0.622421f, 0.622497f, 0.622573f, 0.622649f, 0.622725f, 0.622801f, 0.622877f, 0.622953f, 0.623029f, 0.623105f, 0.623181f,
-0.623258f, 0.623334f, 0.62341f, 0.623486f, 0.623562f, 0.623638f, 0.623714f, 0.62379f, 0.623866f, 0.623942f, 0.624018f, 0.624094f, 0.624169f, 0.624245f, 0.624321f, 0.624397f, 0.624473f, 0.624549f, 0.624625f, 0.624701f,
-0.624777f, 0.624853f, 0.624929f, 0.625004f, 0.62508f, 0.625156f, 0.625232f, 0.625308f, 0.625384f, 0.62546f, 0.625535f, 0.625611f, 0.625687f, 0.625763f, 0.625838f, 0.625914f, 0.62599f, 0.626066f, 0.626142f, 0.626217f,
-0.626293f, 0.626369f, 0.626444f, 0.62652f, 0.626596f, 0.626672f, 0.626747f, 0.626823f, 0.626899f, 0.626974f, 0.62705f, 0.627126f, 0.627201f, 0.627277f, 0.627353f, 0.627428f, 0.627504f, 0.627579f, 0.627655f, 0.627731f,
-0.627806f, 0.627882f, 0.627957f, 0.628033f, 0.628108f, 0.628184f, 0.628259f, 0.628335f, 0.62841f, 0.628486f, 0.628561f, 0.628637f, 0.628712f, 0.628788f, 0.628863f, 0.628939f, 0.629014f, 0.62909f, 0.629165f, 0.629241f,
-0.629316f, 0.629392f, 0.629467f, 0.629542f, 0.629618f, 0.629693f, 0.629768f, 0.629844f, 0.629919f, 0.629995f, 0.63007f, 0.630145f, 0.630221f, 0.630296f, 0.630371f, 0.630447f, 0.630522f, 0.630597f, 0.630672f, 0.630748f,
-0.630823f, 0.630898f, 0.630973f, 0.631049f, 0.631124f, 0.631199f, 0.631274f, 0.63135f, 0.631425f, 0.6315f, 0.631575f, 0.63165f, 0.631726f, 0.631801f, 0.631876f, 0.631951f, 0.632026f, 0.632101f, 0.632176f, 0.632252f,
-0.632327f, 0.632402f, 0.632477f, 0.632552f, 0.632627f, 0.632702f, 0.632777f, 0.632852f, 0.632927f, 0.633002f, 0.633077f, 0.633152f, 0.633227f, 0.633302f, 0.633377f, 0.633452f, 0.633527f, 0.633602f, 0.633677f, 0.633752f,
-0.633827f, 0.633902f, 0.633977f, 0.634052f, 0.634127f, 0.634202f, 0.634277f, 0.634352f, 0.634427f, 0.634502f, 0.634576f, 0.634651f, 0.634726f, 0.634801f, 0.634876f, 0.634951f, 0.635026f, 0.6351f, 0.635175f, 0.63525f,
-0.635325f, 0.6354f, 0.635474f, 0.635549f, 0.635624f, 0.635699f, 0.635773f, 0.635848f, 0.635923f, 0.635998f, 0.636072f, 0.636147f, 0.636222f, 0.636296f, 0.636371f, 0.636446f, 0.63652f, 0.636595f, 0.63667f, 0.636744f,
-0.636819f, 0.636894f, 0.636968f, 0.637043f, 0.637118f, 0.637192f, 0.637267f, 0.637341f, 0.637416f, 0.63749f, 0.637565f, 0.63764f, 0.637714f, 0.637789f, 0.637863f, 0.637938f, 0.638012f, 0.638087f, 0.638161f, 0.638236f,
-0.63831f, 0.638385f, 0.638459f, 0.638534f, 0.638608f, 0.638683f, 0.638757f, 0.638831f, 0.638906f, 0.63898f, 0.639055f, 0.639129f, 0.639203f, 0.639278f, 0.639352f, 0.639427f, 0.639501f, 0.639575f, 0.63965f, 0.639724f,
-0.639798f, 0.639873f, 0.639947f, 0.640021f, 0.640095f, 0.64017f, 0.640244f, 0.640318f, 0.640393f, 0.640467f, 0.640541f, 0.640615f, 0.64069f, 0.640764f, 0.640838f, 0.640912f, 0.640986f, 0.641061f, 0.641135f, 0.641209f,
-0.641283f, 0.641357f, 0.641431f, 0.641506f, 0.64158f, 0.641654f, 0.641728f, 0.641802f, 0.641876f, 0.64195f, 0.642024f, 0.642098f, 0.642172f, 0.642246f, 0.642321f, 0.642395f, 0.642469f, 0.642543f, 0.642617f, 0.642691f,
-0.642765f, 0.642839f, 0.642913f, 0.642987f, 0.643061f, 0.643135f, 0.643209f, 0.643283f, 0.643356f, 0.64343f, 0.643504f, 0.643578f, 0.643652f, 0.643726f, 0.6438f, 0.643874f, 0.643948f, 0.644022f, 0.644095f, 0.644169f,
-0.644243f, 0.644317f, 0.644391f, 0.644465f, 0.644538f, 0.644612f, 0.644686f, 0.64476f, 0.644834f, 0.644907f, 0.644981f, 0.645055f, 0.645129f, 0.645202f, 0.645276f, 0.64535f, 0.645424f, 0.645497f, 0.645571f, 0.645645f,
-0.645718f, 0.645792f, 0.645866f, 0.645939f, 0.646013f, 0.646087f, 0.64616f, 0.646234f, 0.646308f, 0.646381f, 0.646455f, 0.646528f, 0.646602f, 0.646676f, 0.646749f, 0.646823f, 0.646896f, 0.64697f, 0.647043f, 0.647117f,
-0.64719f, 0.647264f, 0.647337f, 0.647411f, 0.647484f, 0.647558f, 0.647631f, 0.647705f, 0.647778f, 0.647852f, 0.647925f, 0.647999f, 0.648072f, 0.648146f, 0.648219f, 0.648292f, 0.648366f, 0.648439f, 0.648513f, 0.648586f,
-0.648659f, 0.648733f, 0.648806f, 0.648879f, 0.648953f, 0.649026f, 0.649099f, 0.649173f, 0.649246f, 0.649319f, 0.649393f, 0.649466f, 0.649539f, 0.649612f, 0.649686f, 0.649759f, 0.649832f, 0.649905f, 0.649978f, 0.650052f,
-0.650125f, 0.650198f, 0.650271f, 0.650344f, 0.650418f, 0.650491f, 0.650564f, 0.650637f, 0.65071f, 0.650783f, 0.650857f, 0.65093f, 0.651003f, 0.651076f, 0.651149f, 0.651222f, 0.651295f, 0.651368f, 0.651441f, 0.651514f,
-0.651587f, 0.65166f, 0.651733f, 0.651806f, 0.651879f, 0.651952f, 0.652025f, 0.652098f, 0.652171f, 0.652244f, 0.652317f, 0.65239f, 0.652463f, 0.652536f, 0.652609f, 0.652682f, 0.652755f, 0.652828f, 0.652901f, 0.652974f,
-0.653046f, 0.653119f, 0.653192f, 0.653265f, 0.653338f, 0.653411f, 0.653484f, 0.653556f, 0.653629f, 0.653702f, 0.653775f, 0.653848f, 0.65392f, 0.653993f, 0.654066f, 0.654139f, 0.654211f, 0.654284f, 0.654357f, 0.65443f,
-0.654502f, 0.654575f, 0.654648f, 0.65472f, 0.654793f, 0.654866f, 0.654939f, 0.655011f, 0.655084f, 0.655156f, 0.655229f, 0.655302f, 0.655374f, 0.655447f, 0.65552f, 0.655592f, 0.655665f, 0.655737f, 0.65581f, 0.655882f,
-0.655955f, 0.656028f, 0.6561f, 0.656173f, 0.656245f, 0.656318f, 0.65639f, 0.656463f, 0.656535f, 0.656608f, 0.65668f, 0.656753f, 0.656825f, 0.656898f, 0.65697f, 0.657042f, 0.657115f, 0.657187f, 0.65726f, 0.657332f,
-0.657404f, 0.657477f, 0.657549f, 0.657622f, 0.657694f, 0.657766f, 0.657839f, 0.657911f, 0.657983f, 0.658056f, 0.658128f, 0.6582f, 0.658273f, 0.658345f, 0.658417f, 0.658489f, 0.658562f, 0.658634f, 0.658706f, 0.658778f,
-0.658851f, 0.658923f, 0.658995f, 0.659067f, 0.659139f, 0.659212f, 0.659284f, 0.659356f, 0.659428f, 0.6595f, 0.659572f, 0.659645f, 0.659717f, 0.659789f, 0.659861f, 0.659933f, 0.660005f, 0.660077f, 0.660149f, 0.660221f,
-0.660293f, 0.660366f, 0.660438f, 0.66051f, 0.660582f, 0.660654f, 0.660726f, 0.660798f, 0.66087f, 0.660942f, 0.661014f, 0.661086f, 0.661158f, 0.66123f, 0.661302f, 0.661373f, 0.661445f, 0.661517f, 0.661589f, 0.661661f,
-0.661733f, 0.661805f, 0.661877f, 0.661949f, 0.662021f, 0.662092f, 0.662164f, 0.662236f, 0.662308f, 0.66238f, 0.662452f, 0.662523f, 0.662595f, 0.662667f, 0.662739f, 0.662811f, 0.662882f, 0.662954f, 0.663026f, 0.663098f,
-0.663169f, 0.663241f, 0.663313f, 0.663385f, 0.663456f, 0.663528f, 0.6636f, 0.663671f, 0.663743f, 0.663815f, 0.663886f, 0.663958f, 0.66403f, 0.664101f, 0.664173f, 0.664244f, 0.664316f, 0.664388f, 0.664459f, 0.664531f,
-0.664602f, 0.664674f, 0.664746f, 0.664817f, 0.664889f, 0.66496f, 0.665032f, 0.665103f, 0.665175f, 0.665246f, 0.665318f, 0.665389f, 0.665461f, 0.665532f, 0.665604f, 0.665675f, 0.665746f, 0.665818f, 0.665889f, 0.665961f,
-0.666032f, 0.666104f, 0.666175f, 0.666246f, 0.666318f, 0.666389f, 0.66646f, 0.666532f, 0.666603f, 0.666674f, 0.666746f, 0.666817f, 0.666888f, 0.66696f, 0.667031f, 0.667102f, 0.667173f, 0.667245f, 0.667316f, 0.667387f,
-0.667459f, 0.66753f, 0.667601f, 0.667672f, 0.667743f, 0.667815f, 0.667886f, 0.667957f, 0.668028f, 0.668099f, 0.66817f, 0.668242f, 0.668313f, 0.668384f, 0.668455f, 0.668526f, 0.668597f, 0.668668f, 0.668739f, 0.668811f,
-0.668882f, 0.668953f, 0.669024f, 0.669095f, 0.669166f, 0.669237f, 0.669308f, 0.669379f, 0.66945f, 0.669521f, 0.669592f, 0.669663f, 0.669734f, 0.669805f, 0.669876f, 0.669947f, 0.670018f, 0.670089f, 0.67016f, 0.67023f,
-0.670301f, 0.670372f, 0.670443f, 0.670514f, 0.670585f, 0.670656f, 0.670727f, 0.670797f, 0.670868f, 0.670939f, 0.67101f, 0.671081f, 0.671152f, 0.671222f, 0.671293f, 0.671364f, 0.671435f, 0.671506f, 0.671576f, 0.671647f,
-0.671718f, 0.671789f, 0.671859f, 0.67193f, 0.672001f, 0.672071f, 0.672142f, 0.672213f, 0.672283f, 0.672354f, 0.672425f, 0.672495f, 0.672566f, 0.672637f, 0.672707f, 0.672778f, 0.672849f, 0.672919f, 0.67299f, 0.67306f,
-0.673131f, 0.673201f, 0.673272f, 0.673343f, 0.673413f, 0.673484f, 0.673554f, 0.673625f, 0.673695f, 0.673766f, 0.673836f, 0.673907f, 0.673977f, 0.674048f, 0.674118f, 0.674188f, 0.674259f, 0.674329f, 0.6744f, 0.67447f,
-0.674541f, 0.674611f, 0.674681f, 0.674752f, 0.674822f, 0.674893f, 0.674963f, 0.675033f, 0.675104f, 0.675174f, 0.675244f, 0.675315f, 0.675385f, 0.675455f, 0.675525f, 0.675596f, 0.675666f, 0.675736f, 0.675807f, 0.675877f,
-0.675947f, 0.676017f, 0.676087f, 0.676158f, 0.676228f, 0.676298f, 0.676368f, 0.676438f, 0.676509f, 0.676579f, 0.676649f, 0.676719f, 0.676789f, 0.676859f, 0.676929f, 0.677f, 0.67707f, 0.67714f, 0.67721f, 0.67728f,
-0.67735f, 0.67742f, 0.67749f, 0.67756f, 0.67763f, 0.6777f, 0.67777f, 0.67784f, 0.67791f, 0.67798f, 0.67805f, 0.67812f, 0.67819f, 0.67826f, 0.67833f, 0.6784f, 0.67847f, 0.67854f, 0.67861f, 0.67868f,
-0.67875f, 0.67882f, 0.678889f, 0.678959f, 0.679029f, 0.679099f, 0.679169f, 0.679239f, 0.679309f, 0.679378f, 0.679448f, 0.679518f, 0.679588f, 0.679658f, 0.679727f, 0.679797f, 0.679867f, 0.679937f, 0.680006f, 0.680076f,
-0.680146f, 0.680216f, 0.680285f, 0.680355f, 0.680425f, 0.680495f, 0.680564f, 0.680634f, 0.680704f, 0.680773f, 0.680843f, 0.680912f, 0.680982f, 0.681052f, 0.681121f, 0.681191f, 0.681261f, 0.68133f, 0.6814f, 0.681469f,
-0.681539f, 0.681608f, 0.681678f, 0.681748f, 0.681817f, 0.681887f, 0.681956f, 0.682026f, 0.682095f, 0.682165f, 0.682234f, 0.682304f, 0.682373f, 0.682442f, 0.682512f, 0.682581f, 0.682651f, 0.68272f, 0.68279f, 0.682859f,
-0.682928f, 0.682998f, 0.683067f, 0.683137f, 0.683206f, 0.683275f, 0.683345f, 0.683414f, 0.683483f, 0.683553f, 0.683622f, 0.683691f, 0.68376f, 0.68383f, 0.683899f, 0.683968f, 0.684038f, 0.684107f, 0.684176f, 0.684245f,
-0.684314f, 0.684384f, 0.684453f, 0.684522f, 0.684591f, 0.68466f, 0.68473f, 0.684799f, 0.684868f, 0.684937f, 0.685006f, 0.685075f, 0.685145f, 0.685214f, 0.685283f, 0.685352f, 0.685421f, 0.68549f, 0.685559f, 0.685628f,
-0.685697f, 0.685766f, 0.685835f, 0.685904f, 0.685973f, 0.686042f, 0.686111f, 0.68618f, 0.686249f, 0.686318f, 0.686387f, 0.686456f, 0.686525f, 0.686594f, 0.686663f, 0.686732f, 0.686801f, 0.68687f, 0.686939f, 0.687008f,
-0.687076f, 0.687145f, 0.687214f, 0.687283f, 0.687352f, 0.687421f, 0.68749f, 0.687558f, 0.687627f, 0.687696f, 0.687765f, 0.687834f, 0.687902f, 0.687971f, 0.68804f, 0.688109f, 0.688177f, 0.688246f, 0.688315f, 0.688384f,
-0.688452f, 0.688521f, 0.68859f, 0.688658f, 0.688727f, 0.688796f, 0.688864f, 0.688933f, 0.689002f, 0.68907f, 0.689139f, 0.689208f, 0.689276f, 0.689345f, 0.689413f, 0.689482f, 0.689551f, 0.689619f, 0.689688f, 0.689756f,
-0.689825f, 0.689893f, 0.689962f, 0.69003f, 0.690099f, 0.690167f, 0.690236f, 0.690304f, 0.690373f, 0.690441f, 0.69051f, 0.690578f, 0.690647f, 0.690715f, 0.690783f, 0.690852f, 0.69092f, 0.690989f, 0.691057f, 0.691125f,
-0.691194f, 0.691262f, 0.691331f, 0.691399f, 0.691467f, 0.691536f, 0.691604f, 0.691672f, 0.69174f, 0.691809f, 0.691877f, 0.691945f, 0.692014f, 0.692082f, 0.69215f, 0.692218f, 0.692287f, 0.692355f, 0.692423f, 0.692491f,
-0.692559f, 0.692628f, 0.692696f, 0.692764f, 0.692832f, 0.6929f, 0.692968f, 0.693037f, 0.693105f, 0.693173f, 0.693241f, 0.693309f, 0.693377f, 0.693445f, 0.693513f, 0.693581f, 0.693649f, 0.693717f, 0.693785f, 0.693853f,
-0.693922f, 0.69399f, 0.694058f, 0.694126f, 0.694194f, 0.694261f, 0.694329f, 0.694397f, 0.694465f, 0.694533f, 0.694601f, 0.694669f, 0.694737f, 0.694805f, 0.694873f, 0.694941f, 0.695009f, 0.695077f, 0.695144f, 0.695212f,
-0.69528f, 0.695348f, 0.695416f, 0.695484f, 0.695551f, 0.695619f, 0.695687f, 0.695755f, 0.695823f, 0.69589f, 0.695958f, 0.696026f, 0.696094f, 0.696161f, 0.696229f, 0.696297f, 0.696365f, 0.696432f, 0.6965f, 0.696568f,
-0.696635f, 0.696703f, 0.696771f, 0.696838f, 0.696906f, 0.696974f, 0.697041f, 0.697109f, 0.697176f, 0.697244f, 0.697312f, 0.697379f, 0.697447f, 0.697514f, 0.697582f, 0.69765f, 0.697717f, 0.697785f, 0.697852f, 0.69792f,
-0.697987f, 0.698055f, 0.698122f, 0.69819f, 0.698257f, 0.698325f, 0.698392f, 0.698459f, 0.698527f, 0.698594f, 0.698662f, 0.698729f, 0.698796f, 0.698864f, 0.698931f, 0.698999f, 0.699066f, 0.699133f, 0.699201f, 0.699268f,
-0.699335f, 0.699403f, 0.69947f, 0.699537f, 0.699605f, 0.699672f, 0.699739f, 0.699806f, 0.699874f, 0.699941f, 0.700008f, 0.700075f, 0.700143f, 0.70021f, 0.700277f, 0.700344f, 0.700411f, 0.700479f, 0.700546f, 0.700613f,
-0.70068f, 0.700747f, 0.700814f, 0.700882f, 0.700949f, 0.701016f, 0.701083f, 0.70115f, 0.701217f, 0.701284f, 0.701351f, 0.701418f, 0.701485f, 0.701552f, 0.701619f, 0.701686f, 0.701753f, 0.70182f, 0.701887f, 0.701954f,
-0.702021f, 0.702088f, 0.702155f, 0.702222f, 0.702289f, 0.702356f, 0.702423f, 0.70249f, 0.702557f, 0.702624f, 0.702691f, 0.702758f, 0.702825f, 0.702891f, 0.702958f, 0.703025f, 0.703092f, 0.703159f, 0.703226f, 0.703292f,
-0.703359f, 0.703426f, 0.703493f, 0.70356f, 0.703626f, 0.703693f, 0.70376f, 0.703827f, 0.703893f, 0.70396f, 0.704027f, 0.704094f, 0.70416f, 0.704227f, 0.704294f, 0.70436f, 0.704427f, 0.704494f, 0.70456f, 0.704627f,
-0.704694f, 0.70476f, 0.704827f, 0.704893f, 0.70496f, 0.705027f, 0.705093f, 0.70516f, 0.705226f, 0.705293f, 0.705359f, 0.705426f, 0.705492f, 0.705559f, 0.705625f, 0.705692f, 0.705758f, 0.705825f, 0.705891f, 0.705958f,
-0.706024f, 0.706091f, 0.706157f, 0.706224f, 0.70629f, 0.706356f, 0.706423f, 0.706489f, 0.706556f, 0.706622f, 0.706688f, 0.706755f, 0.706821f, 0.706887f, 0.706954f, 0.70702f, 0.707086f, 0.707153f, 0.707219f, 0.707285f,
-0.707352f, 0.707418f, 0.707484f, 0.70755f, 0.707617f, 0.707683f, 0.707749f, 0.707815f, 0.707881f, 0.707948f, 0.708014f, 0.70808f, 0.708146f, 0.708212f, 0.708279f, 0.708345f, 0.708411f, 0.708477f, 0.708543f, 0.708609f,
-0.708675f, 0.708741f, 0.708807f, 0.708874f, 0.70894f, 0.709006f, 0.709072f, 0.709138f, 0.709204f, 0.70927f, 0.709336f, 0.709402f, 0.709468f, 0.709534f, 0.7096f, 0.709666f, 0.709732f, 0.709798f, 0.709864f, 0.70993f,
-0.709995f, 0.710061f, 0.710127f, 0.710193f, 0.710259f, 0.710325f, 0.710391f, 0.710457f, 0.710523f, 0.710588f, 0.710654f, 0.71072f, 0.710786f, 0.710852f, 0.710917f, 0.710983f, 0.711049f, 0.711115f, 0.711181f, 0.711246f,
-0.711312f, 0.711378f, 0.711444f, 0.711509f, 0.711575f, 0.711641f, 0.711706f, 0.711772f, 0.711838f, 0.711903f, 0.711969f, 0.712035f, 0.7121f, 0.712166f, 0.712232f, 0.712297f, 0.712363f, 0.712428f, 0.712494f, 0.71256f,
-0.712625f, 0.712691f, 0.712756f, 0.712822f, 0.712887f, 0.712953f, 0.713018f, 0.713084f, 0.713149f, 0.713215f, 0.71328f, 0.713346f, 0.713411f, 0.713477f, 0.713542f, 0.713608f, 0.713673f, 0.713739f, 0.713804f, 0.713869f,
-0.713935f, 0.714f, 0.714066f, 0.714131f, 0.714196f, 0.714262f, 0.714327f, 0.714392f, 0.714458f, 0.714523f, 0.714588f, 0.714654f, 0.714719f, 0.714784f, 0.714849f, 0.714915f, 0.71498f, 0.715045f, 0.71511f, 0.715176f,
-0.715241f, 0.715306f, 0.715371f, 0.715436f, 0.715502f, 0.715567f, 0.715632f, 0.715697f, 0.715762f, 0.715827f, 0.715892f, 0.715958f, 0.716023f, 0.716088f, 0.716153f, 0.716218f, 0.716283f, 0.716348f, 0.716413f, 0.716478f,
-0.716543f, 0.716608f, 0.716673f, 0.716738f, 0.716803f, 0.716868f, 0.716933f, 0.716998f, 0.717063f, 0.717128f, 0.717193f, 0.717258f, 0.717323f, 0.717388f, 0.717453f, 0.717518f, 0.717583f, 0.717647f, 0.717712f, 0.717777f,
-0.717842f, 0.717907f, 0.717972f, 0.718037f, 0.718101f, 0.718166f, 0.718231f, 0.718296f, 0.718361f, 0.718425f, 0.71849f, 0.718555f, 0.71862f, 0.718684f, 0.718749f, 0.718814f, 0.718879f, 0.718943f, 0.719008f, 0.719073f,
-0.719137f, 0.719202f, 0.719267f, 0.719331f, 0.719396f, 0.719461f, 0.719525f, 0.71959f, 0.719654f, 0.719719f, 0.719784f, 0.719848f, 0.719913f, 0.719977f, 0.720042f, 0.720106f, 0.720171f, 0.720236f, 0.7203f, 0.720365f,
-0.720429f, 0.720494f, 0.720558f, 0.720622f, 0.720687f, 0.720751f, 0.720816f, 0.72088f, 0.720945f, 0.721009f, 0.721074f, 0.721138f, 0.721202f, 0.721267f, 0.721331f, 0.721395f, 0.72146f, 0.721524f, 0.721588f, 0.721653f,
-0.721717f, 0.721781f, 0.721846f, 0.72191f, 0.721974f, 0.722039f, 0.722103f, 0.722167f, 0.722231f, 0.722296f, 0.72236f, 0.722424f, 0.722488f, 0.722552f, 0.722617f, 0.722681f, 0.722745f, 0.722809f, 0.722873f, 0.722937f,
-0.723002f, 0.723066f, 0.72313f, 0.723194f, 0.723258f, 0.723322f, 0.723386f, 0.72345f, 0.723514f, 0.723578f, 0.723643f, 0.723707f, 0.723771f, 0.723835f, 0.723899f, 0.723963f, 0.724027f, 0.724091f, 0.724155f, 0.724219f,
-0.724283f, 0.724346f, 0.72441f, 0.724474f, 0.724538f, 0.724602f, 0.724666f, 0.72473f, 0.724794f, 0.724858f, 0.724922f, 0.724985f, 0.725049f, 0.725113f, 0.725177f, 0.725241f, 0.725305f, 0.725368f, 0.725432f, 0.725496f,
-0.72556f, 0.725624f, 0.725687f, 0.725751f, 0.725815f, 0.725879f, 0.725942f, 0.726006f, 0.72607f, 0.726133f, 0.726197f, 0.726261f, 0.726324f, 0.726388f, 0.726452f, 0.726515f, 0.726579f, 0.726643f, 0.726706f, 0.72677f,
-0.726833f, 0.726897f, 0.726961f, 0.727024f, 0.727088f, 0.727151f, 0.727215f, 0.727278f, 0.727342f, 0.727405f, 0.727469f, 0.727532f, 0.727596f, 0.727659f, 0.727723f, 0.727786f, 0.72785f, 0.727913f, 0.727977f, 0.72804f,
-0.728103f, 0.728167f, 0.72823f, 0.728294f, 0.728357f, 0.72842f, 0.728484f, 0.728547f, 0.72861f, 0.728674f, 0.728737f, 0.7288f, 0.728864f, 0.728927f, 0.72899f, 0.729054f, 0.729117f, 0.72918f, 0.729243f, 0.729307f,
-0.72937f, 0.729433f, 0.729496f, 0.72956f, 0.729623f, 0.729686f, 0.729749f, 0.729812f, 0.729875f, 0.729939f, 0.730002f, 0.730065f, 0.730128f, 0.730191f, 0.730254f, 0.730317f, 0.73038f, 0.730443f, 0.730507f, 0.73057f,
-0.730633f, 0.730696f, 0.730759f, 0.730822f, 0.730885f, 0.730948f, 0.731011f, 0.731074f, 0.731137f, 0.7312f, 0.731263f, 0.731326f, 0.731389f, 0.731451f, 0.731514f, 0.731577f, 0.73164f, 0.731703f, 0.731766f, 0.731829f,
-0.731892f, 0.731955f, 0.732017f, 0.73208f, 0.732143f, 0.732206f, 0.732269f, 0.732332f, 0.732394f, 0.732457f, 0.73252f, 0.732583f, 0.732645f, 0.732708f, 0.732771f, 0.732834f, 0.732896f, 0.732959f, 0.733022f, 0.733085f,
-0.733147f, 0.73321f, 0.733273f, 0.733335f, 0.733398f, 0.73346f, 0.733523f, 0.733586f, 0.733648f, 0.733711f, 0.733774f, 0.733836f, 0.733899f, 0.733961f, 0.734024f, 0.734086f, 0.734149f, 0.734211f, 0.734274f, 0.734336f,
-0.734399f, 0.734461f, 0.734524f, 0.734586f, 0.734649f, 0.734711f, 0.734774f, 0.734836f, 0.734899f, 0.734961f, 0.735024f, 0.735086f, 0.735148f, 0.735211f, 0.735273f, 0.735335f, 0.735398f, 0.73546f, 0.735522f, 0.735585f,
-0.735647f, 0.735709f, 0.735772f, 0.735834f, 0.735896f, 0.735959f, 0.736021f, 0.736083f, 0.736145f, 0.736208f, 0.73627f, 0.736332f, 0.736394f, 0.736456f, 0.736519f, 0.736581f, 0.736643f, 0.736705f, 0.736767f, 0.736829f,
-0.736892f, 0.736954f, 0.737016f, 0.737078f, 0.73714f, 0.737202f, 0.737264f, 0.737326f, 0.737388f, 0.73745f, 0.737512f, 0.737574f, 0.737636f, 0.737699f, 0.737761f, 0.737823f, 0.737884f, 0.737946f, 0.738008f, 0.73807f,
-0.738132f, 0.738194f, 0.738256f, 0.738318f, 0.73838f, 0.738442f, 0.738504f, 0.738566f, 0.738628f, 0.73869f, 0.738751f, 0.738813f, 0.738875f, 0.738937f, 0.738999f, 0.739061f, 0.739122f, 0.739184f, 0.739246f, 0.739308f,
-0.739369f, 0.739431f, 0.739493f, 0.739555f, 0.739616f, 0.739678f, 0.73974f, 0.739802f, 0.739863f, 0.739925f, 0.739987f, 0.740048f, 0.74011f, 0.740172f, 0.740233f, 0.740295f, 0.740356f, 0.740418f, 0.74048f, 0.740541f,
-0.740603f, 0.740664f, 0.740726f, 0.740788f, 0.740849f, 0.740911f, 0.740972f, 0.741034f, 0.741095f, 0.741157f, 0.741218f, 0.74128f, 0.741341f, 0.741403f, 0.741464f, 0.741525f, 0.741587f, 0.741648f, 0.74171f, 0.741771f,
-0.741833f, 0.741894f, 0.741955f, 0.742017f, 0.742078f, 0.742139f, 0.742201f, 0.742262f, 0.742323f, 0.742385f, 0.742446f, 0.742507f, 0.742569f, 0.74263f, 0.742691f, 0.742752f, 0.742814f, 0.742875f, 0.742936f, 0.742997f,
-0.743059f, 0.74312f, 0.743181f, 0.743242f, 0.743303f, 0.743364f, 0.743426f, 0.743487f, 0.743548f, 0.743609f, 0.74367f, 0.743731f, 0.743792f, 0.743853f, 0.743915f, 0.743976f, 0.744037f, 0.744098f, 0.744159f, 0.74422f,
-0.744281f, 0.744342f, 0.744403f, 0.744464f, 0.744525f, 0.744586f, 0.744647f, 0.744708f, 0.744769f, 0.74483f, 0.744891f, 0.744951f, 0.745012f, 0.745073f, 0.745134f, 0.745195f, 0.745256f, 0.745317f, 0.745378f, 0.745439f,
-0.745499f, 0.74556f, 0.745621f, 0.745682f, 0.745743f, 0.745803f, 0.745864f, 0.745925f, 0.745986f, 0.746047f, 0.746107f, 0.746168f, 0.746229f, 0.746289f, 0.74635f, 0.746411f, 0.746472f, 0.746532f, 0.746593f, 0.746654f,
-0.746714f, 0.746775f, 0.746836f, 0.746896f, 0.746957f, 0.747017f, 0.747078f, 0.747139f, 0.747199f, 0.74726f, 0.74732f, 0.747381f, 0.747441f, 0.747502f, 0.747562f, 0.747623f, 0.747683f, 0.747744f, 0.747804f, 0.747865f,
-0.747925f, 0.747986f, 0.748046f, 0.748107f, 0.748167f, 0.748228f, 0.748288f, 0.748348f, 0.748409f, 0.748469f, 0.748529f, 0.74859f, 0.74865f, 0.748711f, 0.748771f, 0.748831f, 0.748892f, 0.748952f, 0.749012f, 0.749072f,
-0.749133f, 0.749193f, 0.749253f, 0.749314f, 0.749374f, 0.749434f, 0.749494f, 0.749554f, 0.749615f, 0.749675f, 0.749735f, 0.749795f, 0.749855f, 0.749916f, 0.749976f, 0.750036f, 0.750096f, 0.750156f, 0.750216f, 0.750276f,
-0.750336f, 0.750396f, 0.750457f, 0.750517f, 0.750577f, 0.750637f, 0.750697f, 0.750757f, 0.750817f, 0.750877f, 0.750937f, 0.750997f, 0.751057f, 0.751117f, 0.751177f, 0.751237f, 0.751297f, 0.751356f, 0.751416f, 0.751476f,
-0.751536f, 0.751596f, 0.751656f, 0.751716f, 0.751776f, 0.751836f, 0.751895f, 0.751955f, 0.752015f, 0.752075f, 0.752135f, 0.752195f, 0.752254f, 0.752314f, 0.752374f, 0.752434f, 0.752493f, 0.752553f, 0.752613f, 0.752673f,
-0.752732f, 0.752792f, 0.752852f, 0.752911f, 0.752971f, 0.753031f, 0.75309f, 0.75315f, 0.75321f, 0.753269f, 0.753329f, 0.753389f, 0.753448f, 0.753508f, 0.753567f, 0.753627f, 0.753687f, 0.753746f, 0.753806f, 0.753865f,
-0.753925f, 0.753984f, 0.754044f, 0.754103f, 0.754163f, 0.754222f, 0.754282f, 0.754341f, 0.754401f, 0.75446f, 0.754519f, 0.754579f, 0.754638f, 0.754698f, 0.754757f, 0.754817f, 0.754876f, 0.754935f, 0.754995f, 0.755054f,
-0.755113f, 0.755173f, 0.755232f, 0.755291f, 0.755351f, 0.75541f, 0.755469f, 0.755528f, 0.755588f, 0.755647f, 0.755706f, 0.755765f, 0.755825f, 0.755884f, 0.755943f, 0.756002f, 0.756061f, 0.756121f, 0.75618f, 0.756239f,
-0.756298f, 0.756357f, 0.756416f, 0.756476f, 0.756535f, 0.756594f, 0.756653f, 0.756712f, 0.756771f, 0.75683f, 0.756889f, 0.756948f, 0.757007f, 0.757066f, 0.757125f, 0.757184f, 0.757243f, 0.757302f, 0.757361f, 0.75742f,
-0.757479f, 0.757538f, 0.757597f, 0.757656f, 0.757715f, 0.757774f, 0.757833f, 0.757892f, 0.757951f, 0.758009f, 0.758068f, 0.758127f, 0.758186f, 0.758245f, 0.758304f, 0.758362f, 0.758421f, 0.75848f, 0.758539f, 0.758598f,
-0.758656f, 0.758715f, 0.758774f, 0.758833f, 0.758891f, 0.75895f, 0.759009f, 0.759068f, 0.759126f, 0.759185f, 0.759244f, 0.759302f, 0.759361f, 0.75942f, 0.759478f, 0.759537f, 0.759596f, 0.759654f, 0.759713f, 0.759771f,
-0.75983f, 0.759888f, 0.759947f, 0.760006f, 0.760064f, 0.760123f, 0.760181f, 0.76024f, 0.760298f, 0.760357f, 0.760415f, 0.760474f, 0.760532f, 0.760591f, 0.760649f, 0.760708f, 0.760766f, 0.760824f, 0.760883f, 0.760941f,
-0.761f, 0.761058f, 0.761116f, 0.761175f, 0.761233f, 0.761291f, 0.76135f, 0.761408f, 0.761466f, 0.761525f, 0.761583f, 0.761641f, 0.7617f, 0.761758f, 0.761816f, 0.761874f, 0.761933f, 0.761991f, 0.762049f, 0.762107f,
-0.762165f, 0.762224f, 0.762282f, 0.76234f, 0.762398f, 0.762456f, 0.762514f, 0.762573f, 0.762631f, 0.762689f, 0.762747f, 0.762805f, 0.762863f, 0.762921f, 0.762979f, 0.763037f, 0.763095f, 0.763153f, 0.763211f, 0.763269f,
-0.763327f, 0.763385f, 0.763443f, 0.763501f, 0.763559f, 0.763617f, 0.763675f, 0.763733f, 0.763791f, 0.763849f, 0.763907f, 0.763965f, 0.764023f, 0.764081f, 0.764139f, 0.764196f, 0.764254f, 0.764312f, 0.76437f, 0.764428f,
-0.764486f, 0.764544f, 0.764601f, 0.764659f, 0.764717f, 0.764775f, 0.764832f, 0.76489f, 0.764948f, 0.765006f, 0.765063f, 0.765121f, 0.765179f, 0.765236f, 0.765294f, 0.765352f, 0.76541f, 0.765467f, 0.765525f, 0.765582f,
-0.76564f, 0.765698f, 0.765755f, 0.765813f, 0.765871f, 0.765928f, 0.765986f, 0.766043f, 0.766101f, 0.766158f, 0.766216f, 0.766273f, 0.766331f, 0.766388f, 0.766446f, 0.766503f, 0.766561f, 0.766618f, 0.766676f, 0.766733f,
-0.766791f, 0.766848f, 0.766906f, 0.766963f, 0.76702f, 0.767078f, 0.767135f, 0.767192f, 0.76725f, 0.767307f, 0.767365f, 0.767422f, 0.767479f, 0.767537f, 0.767594f, 0.767651f, 0.767708f, 0.767766f, 0.767823f, 0.76788f,
-0.767937f, 0.767995f, 0.768052f, 0.768109f, 0.768166f, 0.768224f, 0.768281f, 0.768338f, 0.768395f, 0.768452f, 0.768509f, 0.768567f, 0.768624f, 0.768681f, 0.768738f, 0.768795f, 0.768852f, 0.768909f, 0.768966f, 0.769023f,
-0.76908f, 0.769137f, 0.769194f, 0.769251f, 0.769308f, 0.769365f, 0.769422f, 0.769479f, 0.769536f, 0.769593f, 0.76965f, 0.769707f, 0.769764f, 0.769821f, 0.769878f, 0.769935f, 0.769992f, 0.770049f, 0.770106f, 0.770163f,
-0.770219f, 0.770276f, 0.770333f, 0.77039f, 0.770447f, 0.770504f, 0.77056f, 0.770617f, 0.770674f, 0.770731f, 0.770787f, 0.770844f, 0.770901f, 0.770958f, 0.771014f, 0.771071f, 0.771128f, 0.771185f, 0.771241f, 0.771298f,
-0.771355f, 0.771411f, 0.771468f, 0.771525f, 0.771581f, 0.771638f, 0.771694f, 0.771751f, 0.771808f, 0.771864f, 0.771921f, 0.771977f, 0.772034f, 0.77209f, 0.772147f, 0.772203f, 0.77226f, 0.772316f, 0.772373f, 0.772429f,
-0.772486f, 0.772542f, 0.772599f, 0.772655f, 0.772712f, 0.772768f, 0.772825f, 0.772881f, 0.772937f, 0.772994f, 0.77305f, 0.773107f, 0.773163f, 0.773219f, 0.773276f, 0.773332f, 0.773388f, 0.773445f, 0.773501f, 0.773557f,
-0.773613f, 0.77367f, 0.773726f, 0.773782f, 0.773838f, 0.773895f, 0.773951f, 0.774007f, 0.774063f, 0.77412f, 0.774176f, 0.774232f, 0.774288f, 0.774344f, 0.7744f, 0.774456f, 0.774513f, 0.774569f, 0.774625f, 0.774681f,
-0.774737f, 0.774793f, 0.774849f, 0.774905f, 0.774961f, 0.775017f, 0.775073f, 0.775129f, 0.775185f, 0.775241f, 0.775297f, 0.775353f, 0.775409f, 0.775465f, 0.775521f, 0.775577f, 0.775633f, 0.775689f, 0.775745f, 0.775801f,
-0.775857f, 0.775913f, 0.775969f, 0.776024f, 0.77608f, 0.776136f, 0.776192f, 0.776248f, 0.776304f, 0.776359f, 0.776415f, 0.776471f, 0.776527f, 0.776582f, 0.776638f, 0.776694f, 0.77675f, 0.776805f, 0.776861f, 0.776917f,
-0.776973f, 0.777028f, 0.777084f, 0.77714f, 0.777195f, 0.777251f, 0.777307f, 0.777362f, 0.777418f, 0.777473f, 0.777529f, 0.777585f, 0.77764f, 0.777696f, 0.777751f, 0.777807f, 0.777862f, 0.777918f, 0.777974f, 0.778029f,
-0.778085f, 0.77814f, 0.778196f, 0.778251f, 0.778306f, 0.778362f, 0.778417f, 0.778473f, 0.778528f, 0.778584f, 0.778639f, 0.778694f, 0.77875f, 0.778805f, 0.778861f, 0.778916f, 0.778971f, 0.779027f, 0.779082f, 0.779137f,
-0.779193f, 0.779248f, 0.779303f, 0.779359f, 0.779414f, 0.779469f, 0.779524f, 0.77958f, 0.779635f, 0.77969f, 0.779745f, 0.7798f, 0.779856f, 0.779911f, 0.779966f, 0.780021f, 0.780076f, 0.780131f, 0.780187f, 0.780242f,
-0.780297f, 0.780352f, 0.780407f, 0.780462f, 0.780517f, 0.780572f, 0.780627f, 0.780682f, 0.780737f, 0.780792f, 0.780847f, 0.780902f, 0.780957f, 0.781012f, 0.781067f, 0.781122f, 0.781177f, 0.781232f, 0.781287f, 0.781342f,
-0.781397f, 0.781452f, 0.781507f, 0.781562f, 0.781617f, 0.781672f, 0.781726f, 0.781781f, 0.781836f, 0.781891f, 0.781946f, 0.782001f, 0.782055f, 0.78211f, 0.782165f, 0.78222f, 0.782274f, 0.782329f, 0.782384f, 0.782439f,
-0.782493f, 0.782548f, 0.782603f, 0.782658f, 0.782712f, 0.782767f, 0.782822f, 0.782876f, 0.782931f, 0.782986f, 0.78304f, 0.783095f, 0.783149f, 0.783204f, 0.783259f, 0.783313f, 0.783368f, 0.783422f, 0.783477f, 0.783531f,
-0.783586f, 0.78364f, 0.783695f, 0.783749f, 0.783804f, 0.783858f, 0.783913f, 0.783967f, 0.784022f, 0.784076f, 0.784131f, 0.784185f, 0.784239f, 0.784294f, 0.784348f, 0.784403f, 0.784457f, 0.784511f, 0.784566f, 0.78462f,
-0.784674f, 0.784729f, 0.784783f, 0.784837f, 0.784892f, 0.784946f, 0.785f, 0.785054f, 0.785109f, 0.785163f, 0.785217f, 0.785271f, 0.785326f, 0.78538f, 0.785434f, 0.785488f, 0.785542f, 0.785597f, 0.785651f, 0.785705f,
-0.785759f, 0.785813f, 0.785867f, 0.785921f, 0.785975f, 0.786029f, 0.786084f, 0.786138f, 0.786192f, 0.786246f, 0.7863f, 0.786354f, 0.786408f, 0.786462f, 0.786516f, 0.78657f, 0.786624f, 0.786678f, 0.786732f, 0.786786f,
-0.78684f, 0.786894f, 0.786947f, 0.787001f, 0.787055f, 0.787109f, 0.787163f, 0.787217f, 0.787271f, 0.787325f, 0.787378f, 0.787432f, 0.787486f, 0.78754f, 0.787594f, 0.787648f, 0.787701f, 0.787755f, 0.787809f, 0.787863f,
-0.787916f, 0.78797f, 0.788024f, 0.788077f, 0.788131f, 0.788185f, 0.788239f, 0.788292f, 0.788346f, 0.7884f, 0.788453f, 0.788507f, 0.78856f, 0.788614f, 0.788668f, 0.788721f, 0.788775f, 0.788828f, 0.788882f, 0.788936f,
-0.788989f, 0.789043f, 0.789096f, 0.78915f, 0.789203f, 0.789257f, 0.78931f, 0.789364f, 0.789417f, 0.789471f, 0.789524f, 0.789577f, 0.789631f, 0.789684f, 0.789738f, 0.789791f, 0.789844f, 0.789898f, 0.789951f, 0.790005f,
-0.790058f, 0.790111f, 0.790165f, 0.790218f, 0.790271f, 0.790325f, 0.790378f, 0.790431f, 0.790484f, 0.790538f, 0.790591f, 0.790644f, 0.790697f, 0.790751f, 0.790804f, 0.790857f, 0.79091f, 0.790963f, 0.791016f, 0.79107f,
-0.791123f, 0.791176f, 0.791229f, 0.791282f, 0.791335f, 0.791388f, 0.791441f, 0.791495f, 0.791548f, 0.791601f, 0.791654f, 0.791707f, 0.79176f, 0.791813f, 0.791866f, 0.791919f, 0.791972f, 0.792025f, 0.792078f, 0.792131f,
-0.792184f, 0.792237f, 0.79229f, 0.792342f, 0.792395f, 0.792448f, 0.792501f, 0.792554f, 0.792607f, 0.79266f, 0.792713f, 0.792765f, 0.792818f, 0.792871f, 0.792924f, 0.792977f, 0.79303f, 0.793082f, 0.793135f, 0.793188f,
-0.793241f, 0.793293f, 0.793346f, 0.793399f, 0.793452f, 0.793504f, 0.793557f, 0.79361f, 0.793662f, 0.793715f, 0.793768f, 0.79382f, 0.793873f, 0.793925f, 0.793978f, 0.794031f, 0.794083f, 0.794136f, 0.794188f, 0.794241f,
-0.794294f, 0.794346f, 0.794399f, 0.794451f, 0.794504f, 0.794556f, 0.794609f, 0.794661f, 0.794714f, 0.794766f, 0.794819f, 0.794871f, 0.794923f, 0.794976f, 0.795028f, 0.795081f, 0.795133f, 0.795185f, 0.795238f, 0.79529f,
-0.795343f, 0.795395f, 0.795447f, 0.7955f, 0.795552f, 0.795604f, 0.795656f, 0.795709f, 0.795761f, 0.795813f, 0.795866f, 0.795918f, 0.79597f, 0.796022f, 0.796074f, 0.796127f, 0.796179f, 0.796231f, 0.796283f, 0.796335f,
-0.796388f, 0.79644f, 0.796492f, 0.796544f, 0.796596f, 0.796648f, 0.7967f, 0.796752f, 0.796804f, 0.796857f, 0.796909f, 0.796961f, 0.797013f, 0.797065f, 0.797117f, 0.797169f, 0.797221f, 0.797273f, 0.797325f, 0.797377f,
-0.797429f, 0.797481f, 0.797532f, 0.797584f, 0.797636f, 0.797688f, 0.79774f, 0.797792f, 0.797844f, 0.797896f, 0.797948f, 0.797999f, 0.798051f, 0.798103f, 0.798155f, 0.798207f, 0.798259f, 0.79831f, 0.798362f, 0.798414f,
-0.798466f, 0.798517f, 0.798569f, 0.798621f, 0.798673f, 0.798724f, 0.798776f, 0.798828f, 0.798879f, 0.798931f, 0.798983f, 0.799034f, 0.799086f, 0.799138f, 0.799189f, 0.799241f, 0.799292f, 0.799344f, 0.799395f, 0.799447f,
-0.799499f, 0.79955f, 0.799602f, 0.799653f, 0.799705f, 0.799756f, 0.799808f, 0.799859f, 0.799911f, 0.799962f, 0.800014f, 0.800065f, 0.800117f, 0.800168f, 0.800219f, 0.800271f, 0.800322f, 0.800374f, 0.800425f, 0.800476f,
-0.800528f, 0.800579f, 0.80063f, 0.800682f, 0.800733f, 0.800784f, 0.800836f, 0.800887f, 0.800938f, 0.800989f, 0.801041f, 0.801092f, 0.801143f, 0.801194f, 0.801246f, 0.801297f, 0.801348f, 0.801399f, 0.80145f, 0.801501f,
-0.801553f, 0.801604f, 0.801655f, 0.801706f, 0.801757f, 0.801808f, 0.801859f, 0.80191f, 0.801962f, 0.802013f, 0.802064f, 0.802115f, 0.802166f, 0.802217f, 0.802268f, 0.802319f, 0.80237f, 0.802421f, 0.802472f, 0.802523f,
-0.802574f, 0.802625f, 0.802675f, 0.802726f, 0.802777f, 0.802828f, 0.802879f, 0.80293f, 0.802981f, 0.803032f, 0.803083f, 0.803133f, 0.803184f, 0.803235f, 0.803286f, 0.803337f, 0.803388f, 0.803438f, 0.803489f, 0.80354f,
-0.803591f, 0.803641f, 0.803692f, 0.803743f, 0.803793f, 0.803844f, 0.803895f, 0.803946f, 0.803996f, 0.804047f, 0.804098f, 0.804148f, 0.804199f, 0.804249f, 0.8043f, 0.804351f, 0.804401f, 0.804452f, 0.804502f, 0.804553f,
-0.804604f, 0.804654f, 0.804705f, 0.804755f, 0.804806f, 0.804856f, 0.804907f, 0.804957f, 0.805008f, 0.805058f, 0.805108f, 0.805159f, 0.805209f, 0.80526f, 0.80531f, 0.805361f, 0.805411f, 0.805461f, 0.805512f, 0.805562f,
-0.805612f, 0.805663f, 0.805713f, 0.805763f, 0.805814f, 0.805864f, 0.805914f, 0.805965f, 0.806015f, 0.806065f, 0.806115f, 0.806166f, 0.806216f, 0.806266f, 0.806316f, 0.806366f, 0.806417f, 0.806467f, 0.806517f, 0.806567f,
-0.806617f, 0.806667f, 0.806718f, 0.806768f, 0.806818f, 0.806868f, 0.806918f, 0.806968f, 0.807018f, 0.807068f, 0.807118f, 0.807168f, 0.807218f, 0.807268f, 0.807318f, 0.807368f, 0.807418f, 0.807468f, 0.807518f, 0.807568f,
-0.807618f, 0.807668f, 0.807718f, 0.807768f, 0.807818f, 0.807868f, 0.807918f, 0.807967f, 0.808017f, 0.808067f, 0.808117f, 0.808167f, 0.808217f, 0.808267f, 0.808316f, 0.808366f, 0.808416f, 0.808466f, 0.808515f, 0.808565f,
-0.808615f, 0.808665f, 0.808714f, 0.808764f, 0.808814f, 0.808863f, 0.808913f, 0.808963f, 0.809013f, 0.809062f, 0.809112f, 0.809161f, 0.809211f, 0.809261f, 0.80931f, 0.80936f, 0.809409f, 0.809459f, 0.809509f, 0.809558f,
-0.809608f, 0.809657f, 0.809707f, 0.809756f, 0.809806f, 0.809855f, 0.809905f, 0.809954f, 0.810004f, 0.810053f, 0.810103f, 0.810152f, 0.810201f, 0.810251f, 0.8103f, 0.81035f, 0.810399f, 0.810448f, 0.810498f, 0.810547f,
-0.810596f, 0.810646f, 0.810695f, 0.810744f, 0.810794f, 0.810843f, 0.810892f, 0.810941f, 0.810991f, 0.81104f, 0.811089f, 0.811138f, 0.811188f, 0.811237f, 0.811286f, 0.811335f, 0.811384f, 0.811434f, 0.811483f, 0.811532f,
-0.811581f, 0.81163f, 0.811679f, 0.811728f, 0.811777f, 0.811826f, 0.811876f, 0.811925f, 0.811974f, 0.812023f, 0.812072f, 0.812121f, 0.81217f, 0.812219f, 0.812268f, 0.812317f, 0.812366f, 0.812415f, 0.812464f, 0.812513f,
-0.812562f, 0.81261f, 0.812659f, 0.812708f, 0.812757f, 0.812806f, 0.812855f, 0.812904f, 0.812953f, 0.813001f, 0.81305f, 0.813099f, 0.813148f, 0.813197f, 0.813245f, 0.813294f, 0.813343f, 0.813392f, 0.813441f, 0.813489f,
-0.813538f, 0.813587f, 0.813635f, 0.813684f, 0.813733f, 0.813781f, 0.81383f, 0.813879f, 0.813927f, 0.813976f, 0.814025f, 0.814073f, 0.814122f, 0.814171f, 0.814219f, 0.814268f, 0.814316f, 0.814365f, 0.814413f, 0.814462f,
-0.81451f, 0.814559f, 0.814607f, 0.814656f, 0.814704f, 0.814753f, 0.814801f, 0.81485f, 0.814898f, 0.814947f, 0.814995f, 0.815043f, 0.815092f, 0.81514f, 0.815189f, 0.815237f, 0.815285f, 0.815334f, 0.815382f, 0.81543f,
-0.815479f, 0.815527f, 0.815575f, 0.815624f, 0.815672f, 0.81572f, 0.815768f, 0.815817f, 0.815865f, 0.815913f, 0.815961f, 0.81601f, 0.816058f, 0.816106f, 0.816154f, 0.816202f, 0.81625f, 0.816299f, 0.816347f, 0.816395f,
-0.816443f, 0.816491f, 0.816539f, 0.816587f, 0.816635f, 0.816683f, 0.816731f, 0.816779f, 0.816827f, 0.816875f, 0.816924f, 0.816972f, 0.817019f, 0.817067f, 0.817115f, 0.817163f, 0.817211f, 0.817259f, 0.817307f, 0.817355f,
-0.817403f, 0.817451f, 0.817499f, 0.817547f, 0.817595f, 0.817642f, 0.81769f, 0.817738f, 0.817786f, 0.817834f, 0.817882f, 0.817929f, 0.817977f, 0.818025f, 0.818073f, 0.81812f, 0.818168f, 0.818216f, 0.818264f, 0.818311f,
-0.818359f, 0.818407f, 0.818454f, 0.818502f, 0.81855f, 0.818597f, 0.818645f, 0.818693f, 0.81874f, 0.818788f, 0.818836f, 0.818883f, 0.818931f, 0.818978f, 0.819026f, 0.819073f, 0.819121f, 0.819169f, 0.819216f, 0.819264f,
-0.819311f, 0.819359f, 0.819406f, 0.819453f, 0.819501f, 0.819548f, 0.819596f, 0.819643f, 0.819691f, 0.819738f, 0.819785f, 0.819833f, 0.81988f, 0.819928f, 0.819975f, 0.820022f, 0.82007f, 0.820117f, 0.820164f, 0.820212f,
-0.820259f, 0.820306f, 0.820353f, 0.820401f, 0.820448f, 0.820495f, 0.820542f, 0.82059f, 0.820637f, 0.820684f, 0.820731f, 0.820778f, 0.820826f, 0.820873f, 0.82092f, 0.820967f, 0.821014f, 0.821061f, 0.821108f, 0.821155f,
-0.821203f, 0.82125f, 0.821297f, 0.821344f, 0.821391f, 0.821438f, 0.821485f, 0.821532f, 0.821579f, 0.821626f, 0.821673f, 0.82172f, 0.821767f, 0.821814f, 0.821861f, 0.821908f, 0.821955f, 0.822002f, 0.822048f, 0.822095f,
-0.822142f, 0.822189f, 0.822236f, 0.822283f, 0.82233f, 0.822376f, 0.822423f, 0.82247f, 0.822517f, 0.822564f, 0.82261f, 0.822657f, 0.822704f, 0.822751f, 0.822797f, 0.822844f, 0.822891f, 0.822938f, 0.822984f, 0.823031f,
-0.823078f, 0.823124f, 0.823171f, 0.823218f, 0.823264f, 0.823311f, 0.823358f, 0.823404f, 0.823451f, 0.823497f, 0.823544f, 0.82359f, 0.823637f, 0.823684f, 0.82373f, 0.823777f, 0.823823f, 0.82387f, 0.823916f, 0.823963f,
-0.824009f, 0.824055f, 0.824102f, 0.824148f, 0.824195f, 0.824241f, 0.824288f, 0.824334f, 0.82438f, 0.824427f, 0.824473f, 0.824519f, 0.824566f, 0.824612f, 0.824659f, 0.824705f, 0.824751f, 0.824797f, 0.824844f, 0.82489f,
-0.824936f, 0.824982f, 0.825029f, 0.825075f, 0.825121f, 0.825167f, 0.825214f, 0.82526f, 0.825306f, 0.825352f, 0.825398f, 0.825444f, 0.825491f, 0.825537f, 0.825583f, 0.825629f, 0.825675f, 0.825721f, 0.825767f, 0.825813f,
-0.825859f, 0.825905f, 0.825951f, 0.825997f, 0.826043f, 0.826089f, 0.826135f, 0.826181f, 0.826227f, 0.826273f, 0.826319f, 0.826365f, 0.826411f, 0.826457f, 0.826503f, 0.826549f, 0.826595f, 0.826641f, 0.826687f, 0.826732f,
-0.826778f, 0.826824f, 0.82687f, 0.826916f, 0.826962f, 0.827007f, 0.827053f, 0.827099f, 0.827145f, 0.82719f, 0.827236f, 0.827282f, 0.827328f, 0.827373f, 0.827419f, 0.827465f, 0.82751f, 0.827556f, 0.827602f, 0.827647f,
-0.827693f, 0.827739f, 0.827784f, 0.82783f, 0.827876f, 0.827921f, 0.827967f, 0.828012f, 0.828058f, 0.828103f, 0.828149f, 0.828194f, 0.82824f, 0.828285f, 0.828331f, 0.828376f, 0.828422f, 0.828467f, 0.828513f, 0.828558f,
-0.828604f, 0.828649f, 0.828695f, 0.82874f, 0.828785f, 0.828831f, 0.828876f, 0.828921f, 0.828967f, 0.829012f, 0.829057f, 0.829103f, 0.829148f, 0.829193f, 0.829239f, 0.829284f, 0.829329f, 0.829374f, 0.82942f, 0.829465f,
-0.82951f, 0.829555f, 0.829601f, 0.829646f, 0.829691f, 0.829736f, 0.829781f, 0.829826f, 0.829872f, 0.829917f, 0.829962f, 0.830007f, 0.830052f, 0.830097f, 0.830142f, 0.830187f, 0.830232f, 0.830277f, 0.830322f, 0.830368f,
-0.830413f, 0.830458f, 0.830503f, 0.830548f, 0.830592f, 0.830637f, 0.830682f, 0.830727f, 0.830772f, 0.830817f, 0.830862f, 0.830907f, 0.830952f, 0.830997f, 0.831042f, 0.831087f, 0.831131f, 0.831176f, 0.831221f, 0.831266f,
-0.831311f, 0.831355f, 0.8314f, 0.831445f, 0.83149f, 0.831535f, 0.831579f, 0.831624f, 0.831669f, 0.831714f, 0.831758f, 0.831803f, 0.831848f, 0.831892f, 0.831937f, 0.831982f, 0.832026f, 0.832071f, 0.832115f, 0.83216f,
-0.832205f, 0.832249f, 0.832294f, 0.832338f, 0.832383f, 0.832428f, 0.832472f, 0.832517f, 0.832561f, 0.832606f, 0.83265f, 0.832695f, 0.832739f, 0.832784f, 0.832828f, 0.832872f, 0.832917f, 0.832961f, 0.833006f, 0.83305f,
-0.833095f, 0.833139f, 0.833183f, 0.833228f, 0.833272f, 0.833316f, 0.833361f, 0.833405f, 0.833449f, 0.833494f, 0.833538f, 0.833582f, 0.833626f, 0.833671f, 0.833715f, 0.833759f, 0.833803f, 0.833848f, 0.833892f, 0.833936f,
-0.83398f, 0.834024f, 0.834069f, 0.834113f, 0.834157f, 0.834201f, 0.834245f, 0.834289f, 0.834333f, 0.834377f, 0.834421f, 0.834465f, 0.83451f, 0.834554f, 0.834598f, 0.834642f, 0.834686f, 0.83473f, 0.834774f, 0.834818f,
-0.834862f, 0.834906f, 0.83495f, 0.834993f, 0.835037f, 0.835081f, 0.835125f, 0.835169f, 0.835213f, 0.835257f, 0.835301f, 0.835345f, 0.835389f, 0.835432f, 0.835476f, 0.83552f, 0.835564f, 0.835608f, 0.835651f, 0.835695f,
-0.835739f, 0.835783f, 0.835826f, 0.83587f, 0.835914f, 0.835958f, 0.836001f, 0.836045f, 0.836089f, 0.836132f, 0.836176f, 0.83622f, 0.836263f, 0.836307f, 0.836351f, 0.836394f, 0.836438f, 0.836481f, 0.836525f, 0.836568f,
-0.836612f, 0.836656f, 0.836699f, 0.836743f, 0.836786f, 0.83683f, 0.836873f, 0.836917f, 0.83696f, 0.837004f, 0.837047f, 0.83709f, 0.837134f, 0.837177f, 0.837221f, 0.837264f, 0.837307f, 0.837351f, 0.837394f, 0.837438f,
-0.837481f, 0.837524f, 0.837568f, 0.837611f, 0.837654f, 0.837697f, 0.837741f, 0.837784f, 0.837827f, 0.837871f, 0.837914f, 0.837957f, 0.838f, 0.838043f, 0.838087f, 0.83813f, 0.838173f, 0.838216f, 0.838259f, 0.838302f,
-0.838346f, 0.838389f, 0.838432f, 0.838475f, 0.838518f, 0.838561f, 0.838604f, 0.838647f, 0.83869f, 0.838733f, 0.838776f, 0.838819f, 0.838862f, 0.838905f, 0.838948f, 0.838991f, 0.839034f, 0.839077f, 0.83912f, 0.839163f,
-0.839206f, 0.839249f, 0.839292f, 0.839335f, 0.839378f, 0.839421f, 0.839463f, 0.839506f, 0.839549f, 0.839592f, 0.839635f, 0.839678f, 0.83972f, 0.839763f, 0.839806f, 0.839849f, 0.839891f, 0.839934f, 0.839977f, 0.84002f,
-0.840062f, 0.840105f, 0.840148f, 0.84019f, 0.840233f, 0.840276f, 0.840318f, 0.840361f, 0.840404f, 0.840446f, 0.840489f, 0.840531f, 0.840574f, 0.840617f, 0.840659f, 0.840702f, 0.840744f, 0.840787f, 0.840829f, 0.840872f,
-0.840914f, 0.840957f, 0.840999f, 0.841042f, 0.841084f, 0.841127f, 0.841169f, 0.841212f, 0.841254f, 0.841296f, 0.841339f, 0.841381f, 0.841424f, 0.841466f, 0.841508f, 0.841551f, 0.841593f, 0.841635f, 0.841678f, 0.84172f,
-0.841762f, 0.841805f, 0.841847f, 0.841889f, 0.841931f, 0.841974f, 0.842016f, 0.842058f, 0.8421f, 0.842142f, 0.842185f, 0.842227f, 0.842269f, 0.842311f, 0.842353f, 0.842395f, 0.842437f, 0.84248f, 0.842522f, 0.842564f,
-0.842606f, 0.842648f, 0.84269f, 0.842732f, 0.842774f, 0.842816f, 0.842858f, 0.8429f, 0.842942f, 0.842984f, 0.843026f, 0.843068f, 0.84311f, 0.843152f, 0.843194f, 0.843236f, 0.843278f, 0.84332f, 0.843362f, 0.843403f,
-0.843445f, 0.843487f, 0.843529f, 0.843571f, 0.843613f, 0.843654f, 0.843696f, 0.843738f, 0.84378f, 0.843822f, 0.843863f, 0.843905f, 0.843947f, 0.843989f, 0.84403f, 0.844072f, 0.844114f, 0.844155f, 0.844197f, 0.844239f,
-0.84428f, 0.844322f, 0.844364f, 0.844405f, 0.844447f, 0.844489f, 0.84453f, 0.844572f, 0.844613f, 0.844655f, 0.844696f, 0.844738f, 0.844779f, 0.844821f, 0.844863f, 0.844904f, 0.844945f, 0.844987f, 0.845028f, 0.84507f,
-0.845111f, 0.845153f, 0.845194f, 0.845236f, 0.845277f, 0.845318f, 0.84536f, 0.845401f, 0.845443f, 0.845484f, 0.845525f, 0.845567f, 0.845608f, 0.845649f, 0.84569f, 0.845732f, 0.845773f, 0.845814f, 0.845856f, 0.845897f,
-0.845938f, 0.845979f, 0.84602f, 0.846062f, 0.846103f, 0.846144f, 0.846185f, 0.846226f, 0.846268f, 0.846309f, 0.84635f, 0.846391f, 0.846432f, 0.846473f, 0.846514f, 0.846555f, 0.846596f, 0.846637f, 0.846678f, 0.846719f,
-0.84676f, 0.846801f, 0.846842f, 0.846883f, 0.846924f, 0.846965f, 0.847006f, 0.847047f, 0.847088f, 0.847129f, 0.84717f, 0.847211f, 0.847252f, 0.847293f, 0.847334f, 0.847375f, 0.847415f, 0.847456f, 0.847497f, 0.847538f,
-0.847579f, 0.847619f, 0.84766f, 0.847701f, 0.847742f, 0.847783f, 0.847823f, 0.847864f, 0.847905f, 0.847945f, 0.847986f, 0.848027f, 0.848068f, 0.848108f, 0.848149f, 0.84819f, 0.84823f, 0.848271f, 0.848311f, 0.848352f,
-0.848393f, 0.848433f, 0.848474f, 0.848514f, 0.848555f, 0.848595f, 0.848636f, 0.848676f, 0.848717f, 0.848757f, 0.848798f, 0.848838f, 0.848879f, 0.848919f, 0.84896f, 0.849f, 0.849041f, 0.849081f, 0.849122f, 0.849162f,
-0.849202f, 0.849243f, 0.849283f, 0.849323f, 0.849364f, 0.849404f, 0.849444f, 0.849485f, 0.849525f, 0.849565f, 0.849606f, 0.849646f, 0.849686f, 0.849726f, 0.849767f, 0.849807f, 0.849847f, 0.849887f, 0.849927f, 0.849968f,
-0.850008f, 0.850048f, 0.850088f, 0.850128f, 0.850168f, 0.850208f, 0.850249f, 0.850289f, 0.850329f, 0.850369f, 0.850409f, 0.850449f, 0.850489f, 0.850529f, 0.850569f, 0.850609f, 0.850649f, 0.850689f, 0.850729f, 0.850769f,
-0.850809f, 0.850849f, 0.850889f, 0.850929f, 0.850969f, 0.851008f, 0.851048f, 0.851088f, 0.851128f, 0.851168f, 0.851208f, 0.851248f, 0.851288f, 0.851327f, 0.851367f, 0.851407f, 0.851447f, 0.851487f, 0.851526f, 0.851566f,
-0.851606f, 0.851645f, 0.851685f, 0.851725f, 0.851765f, 0.851804f, 0.851844f, 0.851884f, 0.851923f, 0.851963f, 0.852003f, 0.852042f, 0.852082f, 0.852121f, 0.852161f, 0.852201f, 0.85224f, 0.85228f, 0.852319f, 0.852359f,
-0.852398f, 0.852438f, 0.852477f, 0.852517f, 0.852556f, 0.852596f, 0.852635f, 0.852675f, 0.852714f, 0.852754f, 0.852793f, 0.852832f, 0.852872f, 0.852911f, 0.852951f, 0.85299f, 0.853029f, 0.853069f, 0.853108f, 0.853147f,
-0.853187f, 0.853226f, 0.853265f, 0.853305f, 0.853344f, 0.853383f, 0.853422f, 0.853462f, 0.853501f, 0.85354f, 0.853579f, 0.853618f, 0.853658f, 0.853697f, 0.853736f, 0.853775f, 0.853814f, 0.853853f, 0.853893f, 0.853932f,
-0.853971f, 0.85401f, 0.854049f, 0.854088f, 0.854127f, 0.854166f, 0.854205f, 0.854244f, 0.854283f, 0.854322f, 0.854361f, 0.8544f, 0.854439f, 0.854478f, 0.854517f, 0.854556f, 0.854595f, 0.854634f, 0.854673f, 0.854712f,
-0.854751f, 0.854789f, 0.854828f, 0.854867f, 0.854906f, 0.854945f, 0.854984f, 0.855022f, 0.855061f, 0.8551f, 0.855139f, 0.855178f, 0.855216f, 0.855255f, 0.855294f, 0.855333f, 0.855371f, 0.85541f, 0.855449f, 0.855487f,
-0.855526f, 0.855565f, 0.855603f, 0.855642f, 0.855681f, 0.855719f, 0.855758f, 0.855796f, 0.855835f, 0.855874f, 0.855912f, 0.855951f, 0.855989f, 0.856028f, 0.856066f, 0.856105f, 0.856143f, 0.856182f, 0.85622f, 0.856259f,
-0.856297f, 0.856336f, 0.856374f, 0.856413f, 0.856451f, 0.856489f, 0.856528f, 0.856566f, 0.856605f, 0.856643f, 0.856681f, 0.85672f, 0.856758f, 0.856796f, 0.856835f, 0.856873f, 0.856911f, 0.856949f, 0.856988f, 0.857026f,
-0.857064f, 0.857102f, 0.857141f, 0.857179f, 0.857217f, 0.857255f, 0.857293f, 0.857332f, 0.85737f, 0.857408f, 0.857446f, 0.857484f, 0.857522f, 0.85756f, 0.857598f, 0.857636f, 0.857675f, 0.857713f, 0.857751f, 0.857789f,
-0.857827f, 0.857865f, 0.857903f, 0.857941f, 0.857979f, 0.858017f, 0.858055f, 0.858093f, 0.858131f, 0.858168f, 0.858206f, 0.858244f, 0.858282f, 0.85832f, 0.858358f, 0.858396f, 0.858434f, 0.858472f, 0.858509f, 0.858547f,
-0.858585f, 0.858623f, 0.858661f, 0.858698f, 0.858736f, 0.858774f, 0.858812f, 0.858849f, 0.858887f, 0.858925f, 0.858963f, 0.859f, 0.859038f, 0.859076f, 0.859113f, 0.859151f, 0.859189f, 0.859226f, 0.859264f, 0.859301f,
-0.859339f, 0.859377f, 0.859414f, 0.859452f, 0.859489f, 0.859527f, 0.859564f, 0.859602f, 0.859639f, 0.859677f, 0.859714f, 0.859752f, 0.859789f, 0.859827f, 0.859864f, 0.859902f, 0.859939f, 0.859977f, 0.860014f, 0.860051f,
-0.860089f, 0.860126f, 0.860163f, 0.860201f, 0.860238f, 0.860275f, 0.860313f, 0.86035f, 0.860387f, 0.860425f, 0.860462f, 0.860499f, 0.860536f, 0.860574f, 0.860611f, 0.860648f, 0.860685f, 0.860723f, 0.86076f, 0.860797f,
-0.860834f, 0.860871f, 0.860908f, 0.860945f, 0.860983f, 0.86102f, 0.861057f, 0.861094f, 0.861131f, 0.861168f, 0.861205f, 0.861242f, 0.861279f, 0.861316f, 0.861353f, 0.86139f, 0.861427f, 0.861464f, 0.861501f, 0.861538f,
-0.861575f, 0.861612f, 0.861649f, 0.861686f, 0.861723f, 0.86176f, 0.861797f, 0.861833f, 0.86187f, 0.861907f, 0.861944f, 0.861981f, 0.862018f, 0.862054f, 0.862091f, 0.862128f, 0.862165f, 0.862202f, 0.862238f, 0.862275f,
-0.862312f, 0.862349f, 0.862385f, 0.862422f, 0.862459f, 0.862495f, 0.862532f, 0.862569f, 0.862605f, 0.862642f, 0.862679f, 0.862715f, 0.862752f, 0.862788f, 0.862825f, 0.862861f, 0.862898f, 0.862935f, 0.862971f, 0.863008f,
-0.863044f, 0.863081f, 0.863117f, 0.863154f, 0.86319f, 0.863227f, 0.863263f, 0.863299f, 0.863336f, 0.863372f, 0.863409f, 0.863445f, 0.863482f, 0.863518f, 0.863554f, 0.863591f, 0.863627f, 0.863663f, 0.8637f, 0.863736f,
-0.863772f, 0.863809f, 0.863845f, 0.863881f, 0.863917f, 0.863954f, 0.86399f, 0.864026f, 0.864062f, 0.864098f, 0.864135f, 0.864171f, 0.864207f, 0.864243f, 0.864279f, 0.864315f, 0.864352f, 0.864388f, 0.864424f, 0.86446f,
-0.864496f, 0.864532f, 0.864568f, 0.864604f, 0.86464f, 0.864676f, 0.864712f, 0.864748f, 0.864784f, 0.86482f, 0.864856f, 0.864892f, 0.864928f, 0.864964f, 0.865f, 0.865036f, 0.865072f, 0.865108f, 0.865144f, 0.865179f,
-0.865215f, 0.865251f, 0.865287f, 0.865323f, 0.865359f, 0.865394f, 0.86543f, 0.865466f, 0.865502f, 0.865538f, 0.865573f, 0.865609f, 0.865645f, 0.865681f, 0.865716f, 0.865752f, 0.865788f, 0.865823f, 0.865859f, 0.865895f,
-0.86593f, 0.865966f, 0.866002f, 0.866037f, 0.866073f, 0.866108f, 0.866144f, 0.86618f, 0.866215f, 0.866251f, 0.866286f, 0.866322f, 0.866357f, 0.866393f, 0.866428f, 0.866464f, 0.866499f, 0.866535f, 0.86657f, 0.866606f,
-0.866641f, 0.866676f, 0.866712f, 0.866747f, 0.866783f, 0.866818f, 0.866853f, 0.866889f, 0.866924f, 0.866959f, 0.866995f, 0.86703f, 0.867065f, 0.867101f, 0.867136f, 0.867171f, 0.867206f, 0.867242f, 0.867277f, 0.867312f,
-0.867347f, 0.867383f, 0.867418f, 0.867453f, 0.867488f, 0.867523f, 0.867558f, 0.867594f, 0.867629f, 0.867664f, 0.867699f, 0.867734f, 0.867769f, 0.867804f, 0.867839f, 0.867874f, 0.867909f, 0.867944f, 0.867979f, 0.868014f,
-0.868049f, 0.868084f, 0.868119f, 0.868154f, 0.868189f, 0.868224f, 0.868259f, 0.868294f, 0.868329f, 0.868364f, 0.868399f, 0.868434f, 0.868468f, 0.868503f, 0.868538f, 0.868573f, 0.868608f, 0.868643f, 0.868677f, 0.868712f,
-0.868747f, 0.868782f, 0.868817f, 0.868851f, 0.868886f, 0.868921f, 0.868955f, 0.86899f, 0.869025f, 0.86906f, 0.869094f, 0.869129f, 0.869164f, 0.869198f, 0.869233f, 0.869267f, 0.869302f, 0.869337f, 0.869371f, 0.869406f,
-0.86944f, 0.869475f, 0.869509f, 0.869544f, 0.869578f, 0.869613f, 0.869647f, 0.869682f, 0.869716f, 0.869751f, 0.869785f, 0.86982f, 0.869854f, 0.869889f, 0.869923f, 0.869957f, 0.869992f, 0.870026f, 0.870061f, 0.870095f,
-0.870129f, 0.870164f, 0.870198f, 0.870232f, 0.870266f, 0.870301f, 0.870335f, 0.870369f, 0.870404f, 0.870438f, 0.870472f, 0.870506f, 0.87054f, 0.870575f, 0.870609f, 0.870643f, 0.870677f, 0.870711f, 0.870745f, 0.87078f,
-0.870814f, 0.870848f, 0.870882f, 0.870916f, 0.87095f, 0.870984f, 0.871018f, 0.871052f, 0.871086f, 0.87112f, 0.871154f, 0.871188f, 0.871222f, 0.871256f, 0.87129f, 0.871324f, 0.871358f, 0.871392f, 0.871426f, 0.87146f,
-0.871494f, 0.871528f, 0.871562f, 0.871596f, 0.871629f, 0.871663f, 0.871697f, 0.871731f, 0.871765f, 0.871799f, 0.871832f, 0.871866f, 0.8719f, 0.871934f, 0.871967f, 0.872001f, 0.872035f, 0.872069f, 0.872102f, 0.872136f,
-0.87217f, 0.872203f, 0.872237f, 0.872271f, 0.872304f, 0.872338f, 0.872372f, 0.872405f, 0.872439f, 0.872472f, 0.872506f, 0.87254f, 0.872573f, 0.872607f, 0.87264f, 0.872674f, 0.872707f, 0.872741f, 0.872774f, 0.872808f,
-0.872841f, 0.872875f, 0.872908f, 0.872941f, 0.872975f, 0.873008f, 0.873042f, 0.873075f, 0.873108f, 0.873142f, 0.873175f, 0.873209f, 0.873242f, 0.873275f, 0.873309f, 0.873342f, 0.873375f, 0.873408f, 0.873442f, 0.873475f,
-0.873508f, 0.873541f, 0.873575f, 0.873608f, 0.873641f, 0.873674f, 0.873707f, 0.873741f, 0.873774f, 0.873807f, 0.87384f, 0.873873f, 0.873906f, 0.873939f, 0.873973f, 0.874006f, 0.874039f, 0.874072f, 0.874105f, 0.874138f,
-0.874171f, 0.874204f, 0.874237f, 0.87427f, 0.874303f, 0.874336f, 0.874369f, 0.874402f, 0.874435f, 0.874468f, 0.874501f, 0.874533f, 0.874566f, 0.874599f, 0.874632f, 0.874665f, 0.874698f, 0.874731f, 0.874763f, 0.874796f,
-0.874829f, 0.874862f, 0.874895f, 0.874927f, 0.87496f, 0.874993f, 0.875026f, 0.875058f, 0.875091f, 0.875124f, 0.875157f, 0.875189f, 0.875222f, 0.875255f, 0.875287f, 0.87532f, 0.875353f, 0.875385f, 0.875418f, 0.87545f,
-0.875483f, 0.875516f, 0.875548f, 0.875581f, 0.875613f, 0.875646f, 0.875678f, 0.875711f, 0.875743f, 0.875776f, 0.875808f, 0.875841f, 0.875873f, 0.875906f, 0.875938f, 0.875971f, 0.876003f, 0.876035f, 0.876068f, 0.8761f,
-0.876132f, 0.876165f, 0.876197f, 0.87623f, 0.876262f, 0.876294f, 0.876326f, 0.876359f, 0.876391f, 0.876423f, 0.876456f, 0.876488f, 0.87652f, 0.876552f, 0.876585f, 0.876617f, 0.876649f, 0.876681f, 0.876713f, 0.876745f,
-0.876778f, 0.87681f, 0.876842f, 0.876874f, 0.876906f, 0.876938f, 0.87697f, 0.877002f, 0.877034f, 0.877066f, 0.877098f, 0.877131f, 0.877163f, 0.877195f, 0.877227f, 0.877259f, 0.87729f, 0.877322f, 0.877354f, 0.877386f,
-0.877418f, 0.87745f, 0.877482f, 0.877514f, 0.877546f, 0.877578f, 0.87761f, 0.877641f, 0.877673f, 0.877705f, 0.877737f, 0.877769f, 0.877801f, 0.877832f, 0.877864f, 0.877896f, 0.877928f, 0.877959f, 0.877991f, 0.878023f,
-0.878055f, 0.878086f, 0.878118f, 0.87815f, 0.878181f, 0.878213f, 0.878245f, 0.878276f, 0.878308f, 0.878339f, 0.878371f, 0.878403f, 0.878434f, 0.878466f, 0.878497f, 0.878529f, 0.87856f, 0.878592f, 0.878623f, 0.878655f,
-0.878686f, 0.878718f, 0.878749f, 0.878781f, 0.878812f, 0.878844f, 0.878875f, 0.878907f, 0.878938f, 0.878969f, 0.879001f, 0.879032f, 0.879063f, 0.879095f, 0.879126f, 0.879157f, 0.879189f, 0.87922f, 0.879251f, 0.879283f,
-0.879314f, 0.879345f, 0.879376f, 0.879408f, 0.879439f, 0.87947f, 0.879501f, 0.879533f, 0.879564f, 0.879595f, 0.879626f, 0.879657f, 0.879688f, 0.879719f, 0.879751f, 0.879782f, 0.879813f, 0.879844f, 0.879875f, 0.879906f,
-0.879937f, 0.879968f, 0.879999f, 0.88003f, 0.880061f, 0.880092f, 0.880123f, 0.880154f, 0.880185f, 0.880216f, 0.880247f, 0.880278f, 0.880309f, 0.88034f, 0.880371f, 0.880401f, 0.880432f, 0.880463f, 0.880494f, 0.880525f,
-0.880556f, 0.880586f, 0.880617f, 0.880648f, 0.880679f, 0.88071f, 0.88074f, 0.880771f, 0.880802f, 0.880833f, 0.880863f, 0.880894f, 0.880925f, 0.880955f, 0.880986f, 0.881017f, 0.881047f, 0.881078f, 0.881109f, 0.881139f,
-0.88117f, 0.8812f, 0.881231f, 0.881262f, 0.881292f, 0.881323f, 0.881353f, 0.881384f, 0.881414f, 0.881445f, 0.881475f, 0.881506f, 0.881536f, 0.881567f, 0.881597f, 0.881628f, 0.881658f, 0.881688f, 0.881719f, 0.881749f,
-0.88178f, 0.88181f, 0.88184f, 0.881871f, 0.881901f, 0.881931f, 0.881962f, 0.881992f, 0.882022f, 0.882053f, 0.882083f, 0.882113f, 0.882143f, 0.882174f, 0.882204f, 0.882234f, 0.882264f, 0.882295f, 0.882325f, 0.882355f,
-0.882385f, 0.882415f, 0.882445f, 0.882475f, 0.882506f, 0.882536f, 0.882566f, 0.882596f, 0.882626f, 0.882656f, 0.882686f, 0.882716f, 0.882746f, 0.882776f, 0.882806f, 0.882836f, 0.882866f, 0.882896f, 0.882926f, 0.882956f,
-0.882986f, 0.883016f, 0.883046f, 0.883076f, 0.883106f, 0.883136f, 0.883165f, 0.883195f, 0.883225f, 0.883255f, 0.883285f, 0.883315f, 0.883344f, 0.883374f, 0.883404f, 0.883434f, 0.883464f, 0.883493f, 0.883523f, 0.883553f,
-0.883583f, 0.883612f, 0.883642f, 0.883672f, 0.883701f, 0.883731f, 0.883761f, 0.88379f, 0.88382f, 0.883849f, 0.883879f, 0.883909f, 0.883938f, 0.883968f, 0.883997f, 0.884027f, 0.884057f, 0.884086f, 0.884116f, 0.884145f,
-0.884175f, 0.884204f, 0.884234f, 0.884263f, 0.884292f, 0.884322f, 0.884351f, 0.884381f, 0.88441f, 0.88444f, 0.884469f, 0.884498f, 0.884528f, 0.884557f, 0.884586f, 0.884616f, 0.884645f, 0.884674f, 0.884704f, 0.884733f,
-0.884762f, 0.884792f, 0.884821f, 0.88485f, 0.884879f, 0.884908f, 0.884938f, 0.884967f, 0.884996f, 0.885025f, 0.885054f, 0.885084f, 0.885113f, 0.885142f, 0.885171f, 0.8852f, 0.885229f, 0.885258f, 0.885287f, 0.885316f,
-0.885345f, 0.885374f, 0.885404f, 0.885433f, 0.885462f, 0.885491f, 0.88552f, 0.885549f, 0.885577f, 0.885606f, 0.885635f, 0.885664f, 0.885693f, 0.885722f, 0.885751f, 0.88578f, 0.885809f, 0.885838f, 0.885867f, 0.885895f,
-0.885924f, 0.885953f, 0.885982f, 0.886011f, 0.886039f, 0.886068f, 0.886097f, 0.886126f, 0.886154f, 0.886183f, 0.886212f, 0.886241f, 0.886269f, 0.886298f, 0.886327f, 0.886355f, 0.886384f, 0.886413f, 0.886441f, 0.88647f,
-0.886499f, 0.886527f, 0.886556f, 0.886584f, 0.886613f, 0.886641f, 0.88667f, 0.886699f, 0.886727f, 0.886756f, 0.886784f, 0.886813f, 0.886841f, 0.886869f, 0.886898f, 0.886926f, 0.886955f, 0.886983f, 0.887012f, 0.88704f,
-0.887068f, 0.887097f, 0.887125f, 0.887154f, 0.887182f, 0.88721f, 0.887239f, 0.887267f, 0.887295f, 0.887323f, 0.887352f, 0.88738f, 0.887408f, 0.887436f, 0.887465f, 0.887493f, 0.887521f, 0.887549f, 0.887577f, 0.887606f,
-0.887634f, 0.887662f, 0.88769f, 0.887718f, 0.887746f, 0.887774f, 0.887803f, 0.887831f, 0.887859f, 0.887887f, 0.887915f, 0.887943f, 0.887971f, 0.887999f, 0.888027f, 0.888055f, 0.888083f, 0.888111f, 0.888139f, 0.888167f,
-0.888195f, 0.888223f, 0.888251f, 0.888279f, 0.888306f, 0.888334f, 0.888362f, 0.88839f, 0.888418f, 0.888446f, 0.888474f, 0.888501f, 0.888529f, 0.888557f, 0.888585f, 0.888613f, 0.88864f, 0.888668f, 0.888696f, 0.888724f,
-0.888751f, 0.888779f, 0.888807f, 0.888834f, 0.888862f, 0.88889f, 0.888917f, 0.888945f, 0.888973f, 0.889f, 0.889028f, 0.889055f, 0.889083f, 0.889111f, 0.889138f, 0.889166f, 0.889193f, 0.889221f, 0.889248f, 0.889276f,
-0.889303f, 0.889331f, 0.889358f, 0.889386f, 0.889413f, 0.889441f, 0.889468f, 0.889496f, 0.889523f, 0.88955f, 0.889578f, 0.889605f, 0.889632f, 0.88966f, 0.889687f, 0.889714f, 0.889742f, 0.889769f, 0.889796f, 0.889824f,
-0.889851f, 0.889878f, 0.889905f, 0.889933f, 0.88996f, 0.889987f, 0.890014f, 0.890042f, 0.890069f, 0.890096f, 0.890123f, 0.89015f, 0.890177f, 0.890204f, 0.890232f, 0.890259f, 0.890286f, 0.890313f, 0.89034f, 0.890367f,
-0.890394f, 0.890421f, 0.890448f, 0.890475f, 0.890502f, 0.890529f, 0.890556f, 0.890583f, 0.89061f, 0.890637f, 0.890664f, 0.890691f, 0.890718f, 0.890745f, 0.890772f, 0.890798f, 0.890825f, 0.890852f, 0.890879f, 0.890906f,
-0.890933f, 0.89096f, 0.890986f, 0.891013f, 0.89104f, 0.891067f, 0.891093f, 0.89112f, 0.891147f, 0.891174f, 0.8912f, 0.891227f, 0.891254f, 0.89128f, 0.891307f, 0.891334f, 0.89136f, 0.891387f, 0.891414f, 0.89144f,
-0.891467f, 0.891494f, 0.89152f, 0.891547f, 0.891573f, 0.8916f, 0.891626f, 0.891653f, 0.891679f, 0.891706f, 0.891732f, 0.891759f, 0.891785f, 0.891812f, 0.891838f, 0.891865f, 0.891891f, 0.891917f, 0.891944f, 0.89197f,
-0.891997f, 0.892023f, 0.892049f, 0.892076f, 0.892102f, 0.892128f, 0.892155f, 0.892181f, 0.892207f, 0.892234f, 0.89226f, 0.892286f, 0.892312f, 0.892339f, 0.892365f, 0.892391f, 0.892417f, 0.892443f, 0.89247f, 0.892496f,
-0.892522f, 0.892548f, 0.892574f, 0.8926f, 0.892626f, 0.892652f, 0.892679f, 0.892705f, 0.892731f, 0.892757f, 0.892783f, 0.892809f, 0.892835f, 0.892861f, 0.892887f, 0.892913f, 0.892939f, 0.892965f, 0.892991f, 0.893017f,
-0.893043f, 0.893069f, 0.893094f, 0.89312f, 0.893146f, 0.893172f, 0.893198f, 0.893224f, 0.89325f, 0.893276f, 0.893301f, 0.893327f, 0.893353f, 0.893379f, 0.893405f, 0.89343f, 0.893456f, 0.893482f, 0.893508f, 0.893533f,
-0.893559f, 0.893585f, 0.89361f, 0.893636f, 0.893662f, 0.893687f, 0.893713f, 0.893739f, 0.893764f, 0.89379f, 0.893815f, 0.893841f, 0.893867f, 0.893892f, 0.893918f, 0.893943f, 0.893969f, 0.893994f, 0.89402f, 0.894045f,
-0.894071f, 0.894096f, 0.894122f, 0.894147f, 0.894173f, 0.894198f, 0.894223f, 0.894249f, 0.894274f, 0.8943f, 0.894325f, 0.89435f, 0.894376f, 0.894401f, 0.894426f, 0.894452f, 0.894477f, 0.894502f, 0.894528f, 0.894553f,
-0.894578f, 0.894603f, 0.894629f, 0.894654f, 0.894679f, 0.894704f, 0.894729f, 0.894755f, 0.89478f, 0.894805f, 0.89483f, 0.894855f, 0.89488f, 0.894905f, 0.89493f, 0.894956f, 0.894981f, 0.895006f, 0.895031f, 0.895056f,
-0.895081f, 0.895106f, 0.895131f, 0.895156f, 0.895181f, 0.895206f, 0.895231f, 0.895256f, 0.895281f, 0.895306f, 0.895331f, 0.895356f, 0.89538f, 0.895405f, 0.89543f, 0.895455f, 0.89548f, 0.895505f, 0.89553f, 0.895554f,
-0.895579f, 0.895604f, 0.895629f, 0.895654f, 0.895678f, 0.895703f, 0.895728f, 0.895753f, 0.895777f, 0.895802f, 0.895827f, 0.895851f, 0.895876f, 0.895901f, 0.895925f, 0.89595f, 0.895975f, 0.895999f, 0.896024f, 0.896048f,
-0.896073f, 0.896098f, 0.896122f, 0.896147f, 0.896171f, 0.896196f, 0.89622f, 0.896245f, 0.896269f, 0.896294f, 0.896318f, 0.896343f, 0.896367f, 0.896392f, 0.896416f, 0.89644f, 0.896465f, 0.896489f, 0.896514f, 0.896538f,
-0.896562f, 0.896587f, 0.896611f, 0.896635f, 0.89666f, 0.896684f, 0.896708f, 0.896733f, 0.896757f, 0.896781f, 0.896805f, 0.89683f, 0.896854f, 0.896878f, 0.896902f, 0.896926f, 0.896951f, 0.896975f, 0.896999f, 0.897023f,
-0.897047f, 0.897071f, 0.897095f, 0.89712f, 0.897144f, 0.897168f, 0.897192f, 0.897216f, 0.89724f, 0.897264f, 0.897288f, 0.897312f, 0.897336f, 0.89736f, 0.897384f, 0.897408f, 0.897432f, 0.897456f, 0.89748f, 0.897504f,
-0.897528f, 0.897552f, 0.897575f, 0.897599f, 0.897623f, 0.897647f, 0.897671f, 0.897695f, 0.897718f, 0.897742f, 0.897766f, 0.89779f, 0.897814f, 0.897837f, 0.897861f, 0.897885f, 0.897909f, 0.897932f, 0.897956f, 0.89798f,
-0.898003f, 0.898027f, 0.898051f, 0.898074f, 0.898098f, 0.898122f, 0.898145f, 0.898169f, 0.898193f, 0.898216f, 0.89824f, 0.898263f, 0.898287f, 0.89831f, 0.898334f, 0.898357f, 0.898381f, 0.898404f, 0.898428f, 0.898451f,
-0.898475f, 0.898498f, 0.898522f, 0.898545f, 0.898569f, 0.898592f, 0.898615f, 0.898639f, 0.898662f, 0.898685f, 0.898709f, 0.898732f, 0.898755f, 0.898779f, 0.898802f, 0.898825f, 0.898849f, 0.898872f, 0.898895f, 0.898918f,
-0.898942f, 0.898965f, 0.898988f, 0.899011f, 0.899034f, 0.899058f, 0.899081f, 0.899104f, 0.899127f, 0.89915f, 0.899173f, 0.899196f, 0.89922f, 0.899243f, 0.899266f, 0.899289f, 0.899312f, 0.899335f, 0.899358f, 0.899381f,
-0.899404f, 0.899427f, 0.89945f, 0.899473f, 0.899496f, 0.899519f, 0.899542f, 0.899565f, 0.899588f, 0.899611f, 0.899633f, 0.899656f, 0.899679f, 0.899702f, 0.899725f, 0.899748f, 0.899771f, 0.899793f, 0.899816f, 0.899839f,
-0.899862f, 0.899885f, 0.899907f, 0.89993f, 0.899953f, 0.899976f, 0.899998f, 0.900021f, 0.900044f, 0.900066f, 0.900089f, 0.900112f, 0.900134f, 0.900157f, 0.90018f, 0.900202f, 0.900225f, 0.900247f, 0.90027f, 0.900293f,
-0.900315f, 0.900338f, 0.90036f, 0.900383f, 0.900405f, 0.900428f, 0.90045f, 0.900473f, 0.900495f, 0.900518f, 0.90054f, 0.900563f, 0.900585f, 0.900607f, 0.90063f, 0.900652f, 0.900675f, 0.900697f, 0.900719f, 0.900742f,
-0.900764f, 0.900786f, 0.900809f, 0.900831f, 0.900853f, 0.900875f, 0.900898f, 0.90092f, 0.900942f, 0.900964f, 0.900987f, 0.901009f, 0.901031f, 0.901053f, 0.901075f, 0.901098f, 0.90112f, 0.901142f, 0.901164f, 0.901186f,
-0.901208f, 0.90123f, 0.901252f, 0.901274f, 0.901296f, 0.901319f, 0.901341f, 0.901363f, 0.901385f, 0.901407f, 0.901429f, 0.901451f, 0.901473f, 0.901495f, 0.901516f, 0.901538f, 0.90156f, 0.901582f, 0.901604f, 0.901626f,
-0.901648f, 0.90167f, 0.901692f, 0.901714f, 0.901735f, 0.901757f, 0.901779f, 0.901801f, 0.901823f, 0.901844f, 0.901866f, 0.901888f, 0.90191f, 0.901931f, 0.901953f, 0.901975f, 0.901996f, 0.902018f, 0.90204f, 0.902062f,
-0.902083f, 0.902105f, 0.902126f, 0.902148f, 0.90217f, 0.902191f, 0.902213f, 0.902234f, 0.902256f, 0.902278f, 0.902299f, 0.902321f, 0.902342f, 0.902364f, 0.902385f, 0.902407f, 0.902428f, 0.90245f, 0.902471f, 0.902492f,
-0.902514f, 0.902535f, 0.902557f, 0.902578f, 0.902599f, 0.902621f, 0.902642f, 0.902664f, 0.902685f, 0.902706f, 0.902728f, 0.902749f, 0.90277f, 0.902791f, 0.902813f, 0.902834f, 0.902855f, 0.902876f, 0.902898f, 0.902919f,
-0.90294f, 0.902961f, 0.902982f, 0.903004f, 0.903025f, 0.903046f, 0.903067f, 0.903088f, 0.903109f, 0.90313f, 0.903151f, 0.903173f, 0.903194f, 0.903215f, 0.903236f, 0.903257f, 0.903278f, 0.903299f, 0.90332f, 0.903341f,
-0.903362f, 0.903383f, 0.903404f, 0.903425f, 0.903446f, 0.903466f, 0.903487f, 0.903508f, 0.903529f, 0.90355f, 0.903571f, 0.903592f, 0.903613f, 0.903633f, 0.903654f, 0.903675f, 0.903696f, 0.903717f, 0.903737f, 0.903758f,
-0.903779f, 0.9038f, 0.90382f, 0.903841f, 0.903862f, 0.903882f, 0.903903f, 0.903924f, 0.903944f, 0.903965f, 0.903986f, 0.904006f, 0.904027f, 0.904048f, 0.904068f, 0.904089f, 0.904109f, 0.90413f, 0.90415f, 0.904171f,
-0.904191f, 0.904212f, 0.904232f, 0.904253f, 0.904273f, 0.904294f, 0.904314f, 0.904335f, 0.904355f, 0.904376f, 0.904396f, 0.904416f, 0.904437f, 0.904457f, 0.904478f, 0.904498f, 0.904518f, 0.904539f, 0.904559f, 0.904579f,
-0.9046f, 0.90462f, 0.90464f, 0.90466f, 0.904681f, 0.904701f, 0.904721f, 0.904741f, 0.904761f, 0.904782f, 0.904802f, 0.904822f, 0.904842f, 0.904862f, 0.904882f, 0.904903f, 0.904923f, 0.904943f, 0.904963f, 0.904983f,
-0.905003f, 0.905023f, 0.905043f, 0.905063f, 0.905083f, 0.905103f, 0.905123f, 0.905143f, 0.905163f, 0.905183f, 0.905203f, 0.905223f, 0.905243f, 0.905263f, 0.905283f, 0.905303f, 0.905323f, 0.905342f, 0.905362f, 0.905382f,
-0.905402f, 0.905422f, 0.905442f, 0.905461f, 0.905481f, 0.905501f, 0.905521f, 0.905541f, 0.90556f, 0.90558f, 0.9056f, 0.90562f, 0.905639f, 0.905659f, 0.905679f, 0.905698f, 0.905718f, 0.905738f, 0.905757f, 0.905777f,
-0.905796f, 0.905816f, 0.905836f, 0.905855f, 0.905875f, 0.905894f, 0.905914f, 0.905933f, 0.905953f, 0.905973f, 0.905992f, 0.906012f, 0.906031f, 0.90605f, 0.90607f, 0.906089f, 0.906109f, 0.906128f, 0.906148f, 0.906167f,
-0.906186f, 0.906206f, 0.906225f, 0.906244f, 0.906264f, 0.906283f, 0.906302f, 0.906322f, 0.906341f, 0.90636f, 0.90638f, 0.906399f, 0.906418f, 0.906437f, 0.906457f, 0.906476f, 0.906495f, 0.906514f, 0.906533f, 0.906553f,
-0.906572f, 0.906591f, 0.90661f, 0.906629f, 0.906648f, 0.906667f, 0.906686f, 0.906706f, 0.906725f, 0.906744f, 0.906763f, 0.906782f, 0.906801f, 0.90682f, 0.906839f, 0.906858f, 0.906877f, 0.906896f, 0.906915f, 0.906934f,
-0.906953f, 0.906972f, 0.90699f, 0.907009f, 0.907028f, 0.907047f, 0.907066f, 0.907085f, 0.907104f, 0.907122f, 0.907141f, 0.90716f, 0.907179f, 0.907198f, 0.907216f, 0.907235f, 0.907254f, 0.907273f, 0.907291f, 0.90731f,
-0.907329f, 0.907348f, 0.907366f, 0.907385f, 0.907404f, 0.907422f, 0.907441f, 0.90746f, 0.907478f, 0.907497f, 0.907515f, 0.907534f, 0.907552f, 0.907571f, 0.90759f, 0.907608f, 0.907627f, 0.907645f, 0.907664f, 0.907682f,
-0.907701f, 0.907719f, 0.907738f, 0.907756f, 0.907774f, 0.907793f, 0.907811f, 0.90783f, 0.907848f, 0.907866f, 0.907885f, 0.907903f, 0.907921f, 0.90794f, 0.907958f, 0.907976f, 0.907995f, 0.908013f, 0.908031f, 0.90805f,
-0.908068f, 0.908086f, 0.908104f, 0.908122f, 0.908141f, 0.908159f, 0.908177f, 0.908195f, 0.908213f, 0.908232f, 0.90825f, 0.908268f, 0.908286f, 0.908304f, 0.908322f, 0.90834f, 0.908358f, 0.908376f, 0.908394f, 0.908412f,
-0.90843f, 0.908448f, 0.908466f, 0.908484f, 0.908502f, 0.90852f, 0.908538f, 0.908556f, 0.908574f, 0.908592f, 0.90861f, 0.908628f, 0.908646f, 0.908664f, 0.908682f, 0.908699f, 0.908717f, 0.908735f, 0.908753f, 0.908771f,
-0.908789f, 0.908806f, 0.908824f, 0.908842f, 0.90886f, 0.908877f, 0.908895f, 0.908913f, 0.90893f, 0.908948f, 0.908966f, 0.908984f, 0.909001f, 0.909019f, 0.909036f, 0.909054f, 0.909072f, 0.909089f, 0.909107f, 0.909124f,
-0.909142f, 0.90916f, 0.909177f, 0.909195f, 0.909212f, 0.90923f, 0.909247f, 0.909265f, 0.909282f, 0.9093f, 0.909317f, 0.909335f, 0.909352f, 0.909369f, 0.909387f, 0.909404f, 0.909422f, 0.909439f, 0.909456f, 0.909474f,
-0.909491f, 0.909508f, 0.909526f, 0.909543f, 0.90956f, 0.909578f, 0.909595f, 0.909612f, 0.909629f, 0.909647f, 0.909664f, 0.909681f, 0.909698f, 0.909715f, 0.909733f, 0.90975f, 0.909767f, 0.909784f, 0.909801f, 0.909818f,
-0.909835f, 0.909853f, 0.90987f, 0.909887f, 0.909904f, 0.909921f, 0.909938f, 0.909955f, 0.909972f, 0.909989f, 0.910006f, 0.910023f, 0.91004f, 0.910057f, 0.910074f, 0.910091f, 0.910108f, 0.910125f, 0.910141f, 0.910158f,
-0.910175f, 0.910192f, 0.910209f, 0.910226f, 0.910243f, 0.91026f, 0.910276f, 0.910293f, 0.91031f, 0.910327f, 0.910343f, 0.91036f, 0.910377f, 0.910394f, 0.91041f, 0.910427f, 0.910444f, 0.910461f, 0.910477f, 0.910494f,
-0.910511f, 0.910527f, 0.910544f, 0.91056f, 0.910577f, 0.910594f, 0.91061f, 0.910627f, 0.910643f, 0.91066f, 0.910676f, 0.910693f, 0.91071f, 0.910726f, 0.910743f, 0.910759f, 0.910776f, 0.910792f, 0.910808f, 0.910825f,
-0.910841f, 0.910858f, 0.910874f, 0.910891f, 0.910907f, 0.910923f, 0.91094f, 0.910956f, 0.910972f, 0.910989f, 0.911005f, 0.911021f, 0.911038f, 0.911054f, 0.91107f, 0.911086f, 0.911103f, 0.911119f, 0.911135f, 0.911151f,
-0.911167f, 0.911184f, 0.9112f, 0.911216f, 0.911232f, 0.911248f, 0.911264f, 0.911281f, 0.911297f, 0.911313f, 0.911329f, 0.911345f, 0.911361f, 0.911377f, 0.911393f, 0.911409f, 0.911425f, 0.911441f, 0.911457f, 0.911473f,
-0.911489f, 0.911505f, 0.911521f, 0.911537f, 0.911553f, 0.911569f, 0.911585f, 0.911601f, 0.911616f, 0.911632f, 0.911648f, 0.911664f, 0.91168f, 0.911696f, 0.911711f, 0.911727f, 0.911743f, 0.911759f, 0.911775f, 0.91179f,
-0.911806f, 0.911822f, 0.911838f, 0.911853f, 0.911869f, 0.911885f, 0.9119f, 0.911916f, 0.911932f, 0.911947f, 0.911963f, 0.911979f, 0.911994f, 0.91201f, 0.912025f, 0.912041f, 0.912056f, 0.912072f, 0.912088f, 0.912103f,
-0.912119f, 0.912134f, 0.91215f, 0.912165f, 0.912181f, 0.912196f, 0.912211f, 0.912227f, 0.912242f, 0.912258f, 0.912273f, 0.912288f, 0.912304f, 0.912319f, 0.912335f, 0.91235f, 0.912365f, 0.912381f, 0.912396f, 0.912411f,
-0.912426f, 0.912442f, 0.912457f, 0.912472f, 0.912488f, 0.912503f, 0.912518f, 0.912533f, 0.912548f, 0.912564f, 0.912579f, 0.912594f, 0.912609f, 0.912624f, 0.912639f, 0.912654f, 0.91267f, 0.912685f, 0.9127f, 0.912715f,
-0.91273f, 0.912745f, 0.91276f, 0.912775f, 0.91279f, 0.912805f, 0.91282f, 0.912835f, 0.91285f, 0.912865f, 0.91288f, 0.912895f, 0.91291f, 0.912925f, 0.912939f, 0.912954f, 0.912969f, 0.912984f, 0.912999f, 0.913014f,
-0.913029f, 0.913043f, 0.913058f, 0.913073f, 0.913088f, 0.913103f, 0.913117f, 0.913132f, 0.913147f, 0.913162f, 0.913176f, 0.913191f, 0.913206f, 0.91322f, 0.913235f, 0.91325f, 0.913264f, 0.913279f, 0.913294f, 0.913308f,
-0.913323f, 0.913337f, 0.913352f, 0.913366f, 0.913381f, 0.913396f, 0.91341f, 0.913425f, 0.913439f, 0.913454f, 0.913468f, 0.913483f, 0.913497f, 0.913512f, 0.913526f, 0.91354f, 0.913555f, 0.913569f, 0.913584f, 0.913598f,
-0.913612f, 0.913627f, 0.913641f, 0.913655f, 0.91367f, 0.913684f, 0.913698f, 0.913713f, 0.913727f, 0.913741f, 0.913755f, 0.91377f, 0.913784f, 0.913798f, 0.913812f, 0.913827f, 0.913841f, 0.913855f, 0.913869f, 0.913883f,
-0.913897f, 0.913912f, 0.913926f, 0.91394f, 0.913954f, 0.913968f, 0.913982f, 0.913996f, 0.91401f, 0.914024f, 0.914038f, 0.914052f, 0.914066f, 0.91408f, 0.914094f, 0.914108f, 0.914122f, 0.914136f, 0.91415f, 0.914164f,
-0.914178f, 0.914192f, 0.914206f, 0.91422f, 0.914233f, 0.914247f, 0.914261f, 0.914275f, 0.914289f, 0.914303f, 0.914316f, 0.91433f, 0.914344f, 0.914358f, 0.914371f, 0.914385f, 0.914399f, 0.914413f, 0.914426f, 0.91444f,
-0.914454f, 0.914467f, 0.914481f, 0.914495f, 0.914508f, 0.914522f, 0.914536f, 0.914549f, 0.914563f, 0.914576f, 0.91459f, 0.914604f, 0.914617f, 0.914631f, 0.914644f, 0.914658f, 0.914671f, 0.914685f, 0.914698f, 0.914712f,
-0.914725f, 0.914738f, 0.914752f, 0.914765f, 0.914779f, 0.914792f, 0.914806f, 0.914819f, 0.914832f, 0.914846f, 0.914859f, 0.914872f, 0.914886f, 0.914899f, 0.914912f, 0.914926f, 0.914939f, 0.914952f, 0.914965f, 0.914979f,
-0.914992f, 0.915005f, 0.915018f, 0.915031f, 0.915045f, 0.915058f, 0.915071f, 0.915084f, 0.915097f, 0.91511f, 0.915123f, 0.915137f, 0.91515f, 0.915163f, 0.915176f, 0.915189f, 0.915202f, 0.915215f, 0.915228f, 0.915241f,
-0.915254f, 0.915267f, 0.91528f, 0.915293f, 0.915306f, 0.915319f, 0.915332f, 0.915345f, 0.915357f, 0.91537f, 0.915383f, 0.915396f, 0.915409f, 0.915422f, 0.915435f, 0.915448f, 0.91546f, 0.915473f, 0.915486f, 0.915499f,
-0.915511f, 0.915524f, 0.915537f, 0.91555f, 0.915562f, 0.915575f, 0.915588f, 0.915601f, 0.915613f, 0.915626f, 0.915639f, 0.915651f, 0.915664f, 0.915676f, 0.915689f, 0.915702f, 0.915714f, 0.915727f, 0.915739f, 0.915752f,
-0.915764f, 0.915777f, 0.91579f, 0.915802f, 0.915815f, 0.915827f, 0.915839f, 0.915852f, 0.915864f, 0.915877f, 0.915889f, 0.915902f, 0.915914f, 0.915926f, 0.915939f, 0.915951f, 0.915964f, 0.915976f, 0.915988f, 0.916001f,
-0.916013f, 0.916025f, 0.916037f, 0.91605f, 0.916062f, 0.916074f, 0.916086f, 0.916099f, 0.916111f, 0.916123f, 0.916135f, 0.916148f, 0.91616f, 0.916172f, 0.916184f, 0.916196f, 0.916208f, 0.91622f, 0.916232f, 0.916245f,
-0.916257f, 0.916269f, 0.916281f, 0.916293f, 0.916305f, 0.916317f, 0.916329f, 0.916341f, 0.916353f, 0.916365f, 0.916377f, 0.916389f, 0.916401f, 0.916413f, 0.916425f, 0.916437f, 0.916448f, 0.91646f, 0.916472f, 0.916484f,
-0.916496f, 0.916508f, 0.91652f, 0.916531f, 0.916543f, 0.916555f, 0.916567f, 0.916579f, 0.91659f, 0.916602f, 0.916614f, 0.916626f, 0.916637f, 0.916649f, 0.916661f, 0.916672f, 0.916684f, 0.916696f, 0.916707f, 0.916719f,
-0.916731f, 0.916742f, 0.916754f, 0.916765f, 0.916777f, 0.916788f, 0.9168f, 0.916812f, 0.916823f, 0.916835f, 0.916846f, 0.916858f, 0.916869f, 0.916881f, 0.916892f, 0.916903f, 0.916915f, 0.916926f, 0.916938f, 0.916949f,
-0.916961f, 0.916972f, 0.916983f, 0.916995f, 0.917006f, 0.917017f, 0.917029f, 0.91704f, 0.917051f, 0.917063f, 0.917074f, 0.917085f, 0.917096f, 0.917108f, 0.917119f, 0.91713f, 0.917141f, 0.917153f, 0.917164f, 0.917175f,
-0.917186f, 0.917197f, 0.917208f, 0.917219f, 0.917231f, 0.917242f, 0.917253f, 0.917264f, 0.917275f, 0.917286f, 0.917297f, 0.917308f, 0.917319f, 0.91733f, 0.917341f, 0.917352f, 0.917363f, 0.917374f, 0.917385f, 0.917396f,
-0.917407f, 0.917418f, 0.917429f, 0.91744f, 0.917451f, 0.917461f, 0.917472f, 0.917483f, 0.917494f, 0.917505f, 0.917516f, 0.917526f, 0.917537f, 0.917548f, 0.917559f, 0.91757f, 0.91758f, 0.917591f, 0.917602f, 0.917612f,
-0.917623f, 0.917634f, 0.917645f, 0.917655f, 0.917666f, 0.917677f, 0.917687f, 0.917698f, 0.917708f, 0.917719f, 0.91773f, 0.91774f, 0.917751f, 0.917761f, 0.917772f, 0.917782f, 0.917793f, 0.917803f, 0.917814f, 0.917824f,
-0.917835f, 0.917845f, 0.917856f, 0.917866f, 0.917877f, 0.917887f, 0.917897f, 0.917908f, 0.917918f, 0.917929f, 0.917939f, 0.917949f, 0.91796f, 0.91797f, 0.91798f, 0.917991f, 0.918001f, 0.918011f, 0.918021f, 0.918032f,
-0.918042f, 0.918052f, 0.918062f, 0.918073f, 0.918083f, 0.918093f, 0.918103f, 0.918113f, 0.918124f, 0.918134f, 0.918144f, 0.918154f, 0.918164f, 0.918174f, 0.918184f, 0.918194f, 0.918204f, 0.918214f, 0.918224f, 0.918234f,
-0.918244f, 0.918254f, 0.918264f, 0.918274f, 0.918284f, 0.918294f, 0.918304f, 0.918314f, 0.918324f, 0.918334f, 0.918344f, 0.918354f, 0.918364f, 0.918374f, 0.918384f, 0.918393f, 0.918403f, 0.918413f, 0.918423f, 0.918433f,
-0.918442f, 0.918452f, 0.918462f, 0.918472f, 0.918481f, 0.918491f, 0.918501f, 0.918511f, 0.91852f, 0.91853f, 0.91854f, 0.918549f, 0.918559f, 0.918569f, 0.918578f, 0.918588f, 0.918597f, 0.918607f, 0.918617f, 0.918626f,
-0.918636f, 0.918645f, 0.918655f, 0.918664f, 0.918674f, 0.918683f, 0.918693f, 0.918702f, 0.918712f, 0.918721f, 0.918731f, 0.91874f, 0.91875f, 0.918759f, 0.918768f, 0.918778f, 0.918787f, 0.918796f, 0.918806f, 0.918815f,
-0.918824f, 0.918834f, 0.918843f, 0.918852f, 0.918862f, 0.918871f, 0.91888f, 0.918889f, 0.918899f, 0.918908f, 0.918917f, 0.918926f, 0.918935f, 0.918945f, 0.918954f, 0.918963f, 0.918972f, 0.918981f, 0.91899f, 0.918999f,
-0.919009f, 0.919018f, 0.919027f, 0.919036f, 0.919045f, 0.919054f, 0.919063f, 0.919072f, 0.919081f, 0.91909f, 0.919099f, 0.919108f, 0.919117f, 0.919126f, 0.919135f, 0.919144f, 0.919153f, 0.919161f, 0.91917f, 0.919179f,
-0.919188f, 0.919197f, 0.919206f, 0.919215f, 0.919223f, 0.919232f, 0.919241f, 0.91925f, 0.919259f, 0.919267f, 0.919276f, 0.919285f, 0.919294f, 0.919302f, 0.919311f, 0.91932f, 0.919328f, 0.919337f, 0.919346f, 0.919354f,
-0.919363f, 0.919372f, 0.91938f, 0.919389f, 0.919397f, 0.919406f, 0.919415f, 0.919423f, 0.919432f, 0.91944f, 0.919449f, 0.919457f, 0.919466f, 0.919474f, 0.919483f, 0.919491f, 0.9195f, 0.919508f, 0.919517f, 0.919525f,
-0.919533f, 0.919542f, 0.91955f, 0.919559f, 0.919567f, 0.919575f, 0.919584f, 0.919592f, 0.9196f, 0.919609f, 0.919617f, 0.919625f, 0.919633f, 0.919642f, 0.91965f, 0.919658f, 0.919666f, 0.919675f, 0.919683f, 0.919691f,
-0.919699f, 0.919707f, 0.919715f, 0.919724f, 0.919732f, 0.91974f, 0.919748f, 0.919756f, 0.919764f, 0.919772f, 0.91978f, 0.919788f, 0.919796f, 0.919804f, 0.919812f, 0.91982f, 0.919828f, 0.919836f, 0.919844f, 0.919852f,
-0.91986f, 0.919868f, 0.919876f, 0.919884f, 0.919892f, 0.9199f, 0.919908f, 0.919916f, 0.919923f, 0.919931f, 0.919939f, 0.919947f, 0.919955f, 0.919963f, 0.91997f, 0.919978f, 0.919986f, 0.919994f, 0.920001f, 0.920009f,
-0.920017f, 0.920025f, 0.920032f, 0.92004f, 0.920048f, 0.920055f, 0.920063f, 0.920071f, 0.920078f, 0.920086f, 0.920093f, 0.920101f, 0.920109f, 0.920116f, 0.920124f, 0.920131f, 0.920139f, 0.920146f, 0.920154f, 0.920161f,
-0.920169f, 0.920176f, 0.920184f, 0.920191f, 0.920199f, 0.920206f, 0.920213f, 0.920221f, 0.920228f, 0.920236f, 0.920243f, 0.92025f, 0.920258f, 0.920265f, 0.920272f, 0.92028f, 0.920287f, 0.920294f, 0.920302f, 0.920309f,
-0.920316f, 0.920323f, 0.920331f, 0.920338f, 0.920345f, 0.920352f, 0.920359f, 0.920367f, 0.920374f, 0.920381f, 0.920388f, 0.920395f, 0.920402f, 0.920409f, 0.920417f, 0.920424f, 0.920431f, 0.920438f, 0.920445f, 0.920452f,
-0.920459f, 0.920466f, 0.920473f, 0.92048f, 0.920487f, 0.920494f, 0.920501f, 0.920508f, 0.920515f, 0.920522f, 0.920529f, 0.920535f, 0.920542f, 0.920549f, 0.920556f, 0.920563f, 0.92057f, 0.920577f, 0.920583f, 0.92059f,
-0.920597f, 0.920604f, 0.920611f, 0.920617f, 0.920624f, 0.920631f, 0.920638f, 0.920644f, 0.920651f, 0.920658f, 0.920664f, 0.920671f, 0.920678f, 0.920684f, 0.920691f, 0.920698f, 0.920704f, 0.920711f, 0.920717f, 0.920724f,
-0.920731f, 0.920737f, 0.920744f, 0.92075f, 0.920757f, 0.920763f, 0.92077f, 0.920776f, 0.920783f, 0.920789f, 0.920796f, 0.920802f, 0.920809f, 0.920815f, 0.920821f, 0.920828f, 0.920834f, 0.92084f, 0.920847f, 0.920853f,
-0.92086f, 0.920866f, 0.920872f, 0.920878f, 0.920885f, 0.920891f, 0.920897f, 0.920904f, 0.92091f, 0.920916f, 0.920922f, 0.920928f, 0.920935f, 0.920941f, 0.920947f, 0.920953f, 0.920959f, 0.920966f, 0.920972f, 0.920978f,
-0.920984f, 0.92099f, 0.920996f, 0.921002f, 0.921008f, 0.921014f, 0.92102f, 0.921026f, 0.921032f, 0.921038f, 0.921044f, 0.92105f, 0.921056f, 0.921062f, 0.921068f, 0.921074f, 0.92108f, 0.921086f, 0.921092f, 0.921098f,
-0.921104f, 0.921109f, 0.921115f, 0.921121f, 0.921127f, 0.921133f, 0.921139f, 0.921144f, 0.92115f, 0.921156f, 0.921162f, 0.921168f, 0.921173f, 0.921179f, 0.921185f, 0.92119f, 0.921196f, 0.921202f, 0.921207f, 0.921213f,
-0.921219f, 0.921224f, 0.92123f, 0.921236f, 0.921241f, 0.921247f, 0.921252f, 0.921258f, 0.921264f, 0.921269f, 0.921275f, 0.92128f, 0.921286f, 0.921291f, 0.921297f, 0.921302f, 0.921308f, 0.921313f, 0.921318f, 0.921324f,
-0.921329f, 0.921335f, 0.92134f, 0.921346f, 0.921351f, 0.921356f, 0.921362f, 0.921367f, 0.921372f, 0.921378f, 0.921383f, 0.921388f, 0.921393f, 0.921399f, 0.921404f, 0.921409f, 0.921414f, 0.92142f, 0.921425f, 0.92143f,
-0.921435f, 0.92144f, 0.921446f, 0.921451f, 0.921456f, 0.921461f, 0.921466f, 0.921471f, 0.921476f, 0.921481f, 0.921487f, 0.921492f, 0.921497f, 0.921502f, 0.921507f, 0.921512f, 0.921517f, 0.921522f, 0.921527f, 0.921532f,
-0.921537f, 0.921542f, 0.921546f, 0.921551f, 0.921556f, 0.921561f, 0.921566f, 0.921571f, 0.921576f, 0.921581f, 0.921586f, 0.92159f, 0.921595f, 0.9216f, 0.921605f, 0.92161f, 0.921614f, 0.921619f, 0.921624f, 0.921629f,
-0.921633f, 0.921638f, 0.921643f, 0.921647f, 0.921652f, 0.921657f, 0.921661f, 0.921666f, 0.921671f, 0.921675f, 0.92168f, 0.921685f, 0.921689f, 0.921694f, 0.921698f, 0.921703f, 0.921707f, 0.921712f, 0.921716f, 0.921721f,
-0.921725f, 0.92173f, 0.921734f, 0.921739f, 0.921743f, 0.921748f, 0.921752f, 0.921757f, 0.921761f, 0.921765f, 0.92177f, 0.921774f, 0.921779f, 0.921783f, 0.921787f, 0.921792f, 0.921796f, 0.9218f, 0.921804f, 0.921809f,
-0.921813f, 0.921817f, 0.921822f, 0.921826f, 0.92183f, 0.921834f, 0.921838f, 0.921843f, 0.921847f, 0.921851f, 0.921855f, 0.921859f, 0.921863f, 0.921867f, 0.921872f, 0.921876f, 0.92188f, 0.921884f, 0.921888f, 0.921892f,
-0.921896f, 0.9219f, 0.921904f, 0.921908f, 0.921912f, 0.921916f, 0.92192f, 0.921924f, 0.921928f, 0.921932f, 0.921936f, 0.92194f, 0.921944f, 0.921947f, 0.921951f, 0.921955f, 0.921959f, 0.921963f, 0.921967f, 0.92197f,
-0.921974f, 0.921978f, 0.921982f, 0.921986f, 0.921989f, 0.921993f, 0.921997f, 0.922001f, 0.922004f, 0.922008f, 0.922012f, 0.922015f, 0.922019f, 0.922023f, 0.922026f, 0.92203f, 0.922034f, 0.922037f, 0.922041f, 0.922044f,
-0.922048f, 0.922052f, 0.922055f, 0.922059f, 0.922062f, 0.922066f, 0.922069f, 0.922073f, 0.922076f, 0.92208f, 0.922083f, 0.922087f, 0.92209f, 0.922093f, 0.922097f, 0.9221f, 0.922104f, 0.922107f, 0.92211f, 0.922114f,
-0.922117f, 0.92212f, 0.922124f, 0.922127f, 0.92213f, 0.922134f, 0.922137f, 0.92214f, 0.922143f, 0.922147f, 0.92215f, 0.922153f, 0.922156f, 0.92216f, 0.922163f, 0.922166f, 0.922169f, 0.922172f, 0.922175f, 0.922179f,
-0.922182f, 0.922185f, 0.922188f, 0.922191f, 0.922194f, 0.922197f, 0.9222f, 0.922203f, 0.922206f, 0.922209f, 0.922212f, 0.922215f, 0.922218f, 0.922221f, 0.922224f, 0.922227f, 0.92223f, 0.922233f, 0.922236f, 0.922239f,
-0.922242f, 0.922244f, 0.922247f, 0.92225f, 0.922253f, 0.922256f, 0.922259f, 0.922261f, 0.922264f, 0.922267f, 0.92227f, 0.922273f, 0.922275f, 0.922278f, 0.922281f, 0.922284f, 0.922286f, 0.922289f, 0.922292f, 0.922294f,
-0.922297f, 0.9223f, 0.922302f, 0.922305f, 0.922307f, 0.92231f, 0.922313f, 0.922315f, 0.922318f, 0.92232f, 0.922323f, 0.922325f, 0.922328f, 0.92233f, 0.922333f, 0.922335f, 0.922338f, 0.92234f, 0.922343f, 0.922345f,
-0.922348f, 0.92235f, 0.922352f, 0.922355f, 0.922357f, 0.92236f, 0.922362f, 0.922364f, 0.922367f, 0.922369f, 0.922371f, 0.922374f, 0.922376f, 0.922378f, 0.92238f, 0.922383f, 0.922385f, 0.922387f, 0.922389f, 0.922392f,
-0.922394f, 0.922396f, 0.922398f, 0.9224f, 0.922402f, 0.922405f, 0.922407f, 0.922409f, 0.922411f, 0.922413f, 0.922415f, 0.922417f, 0.922419f, 0.922421f, 0.922423f, 0.922425f, 0.922427f, 0.922429f, 0.922431f, 0.922433f,
-0.922435f, 0.922437f, 0.922439f, 0.922441f, 0.922443f, 0.922445f, 0.922447f, 0.922449f, 0.922451f, 0.922452f, 0.922454f, 0.922456f, 0.922458f, 0.92246f, 0.922462f, 0.922463f, 0.922465f, 0.922467f, 0.922469f, 0.92247f,
-0.922472f, 0.922474f, 0.922476f, 0.922477f, 0.922479f, 0.922481f, 0.922482f, 0.922484f, 0.922486f, 0.922487f, 0.922489f, 0.922491f, 0.922492f, 0.922494f, 0.922495f, 0.922497f, 0.922498f, 0.9225f, 0.922501f, 0.922503f,
-0.922504f, 0.922506f, 0.922507f, 0.922509f, 0.92251f, 0.922512f, 0.922513f, 0.922515f, 0.922516f, 0.922518f, 0.922519f, 0.92252f, 0.922522f, 0.922523f, 0.922524f, 0.922526f, 0.922527f, 0.922528f, 0.92253f, 0.922531f,
-0.922532f, 0.922533f, 0.922535f, 0.922536f, 0.922537f, 0.922538f, 0.92254f, 0.922541f, 0.922542f, 0.922543f, 0.922544f, 0.922545f, 0.922547f, 0.922548f, 0.922549f, 0.92255f, 0.922551f, 0.922552f, 0.922553f, 0.922554f,
-0.922555f, 0.922556f, 0.922557f, 0.922558f, 0.922559f, 0.92256f, 0.922561f, 0.922562f, 0.922563f, 0.922564f, 0.922565f, 0.922566f, 0.922567f, 0.922568f, 0.922569f, 0.92257f, 0.92257f, 0.922571f, 0.922572f, 0.922573f,
-0.922574f, 0.922575f, 0.922575f, 0.922576f, 0.922577f, 0.922578f, 0.922578f, 0.922579f, 0.92258f, 0.922581f, 0.922581f, 0.922582f, 0.922583f, 0.922583f, 0.922584f, 0.922585f, 0.922585f, 0.922586f, 0.922587f, 0.922587f,
-0.922588f, 0.922588f, 0.922589f, 0.922589f, 0.92259f, 0.92259f, 0.922591f, 0.922592f, 0.922592f, 0.922592f, 0.922593f, 0.922593f, 0.922594f, 0.922594f, 0.922595f, 0.922595f, 0.922596f, 0.922596f, 0.922596f, 0.922597f,
-0.922597f, 0.922597f, 0.922598f, 0.922598f, 0.922598f, 0.922599f, 0.922599f, 0.922599f, 0.922599f, 0.9226f, 0.9226f, 0.9226f, 0.9226f, 0.922601f, 0.922601f, 0.922601f, 0.922601f, 0.922601f, 0.922602f, 0.922602f,
-0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922602f,
-0.922602f, 0.922602f, 0.922602f, 0.922602f, 0.922601f, 0.922601f, 0.922601f, 0.922601f, 0.922601f, 0.9226f, 0.9226f, 0.9226f, 0.9226f, 0.922599f, 0.922599f, 0.922599f, 0.922599f, 0.922598f, 0.922598f, 0.922598f,
-0.922597f, 0.922597f, 0.922597f, 0.922596f, 0.922596f, 0.922596f, 0.922595f, 0.922595f, 0.922594f, 0.922594f, 0.922593f, 0.922593f, 0.922593f, 0.922592f, 0.922592f, 0.922591f, 0.922591f, 0.92259f, 0.922589f, 0.922589f,
-0.922588f, 0.922588f, 0.922587f, 0.922587f, 0.922586f, 0.922585f, 0.922585f, 0.922584f, 0.922583f, 0.922583f, 0.922582f, 0.922581f, 0.922581f, 0.92258f, 0.922579f, 0.922579f, 0.922578f, 0.922577f, 0.922576f, 0.922575f,
-0.922575f, 0.922574f, 0.922573f, 0.922572f, 0.922571f, 0.922571f, 0.92257f, 0.922569f, 0.922568f, 0.922567f, 0.922566f, 0.922565f, 0.922564f, 0.922563f, 0.922562f, 0.922561f, 0.92256f, 0.922559f, 0.922558f, 0.922557f,
-0.922556f, 0.922555f, 0.922554f, 0.922553f, 0.922552f, 0.922551f, 0.92255f, 0.922549f, 0.922548f, 0.922547f, 0.922546f, 0.922544f, 0.922543f, 0.922542f, 0.922541f, 0.92254f, 0.922538f, 0.922537f, 0.922536f, 0.922535f,
-0.922534f, 0.922532f, 0.922531f, 0.92253f, 0.922528f, 0.922527f, 0.922526f, 0.922524f, 0.922523f, 0.922522f, 0.92252f, 0.922519f, 0.922518f, 0.922516f, 0.922515f, 0.922513f, 0.922512f, 0.92251f, 0.922509f, 0.922508f,
-0.922506f, 0.922505f, 0.922503f, 0.922502f, 0.9225f, 0.922498f, 0.922497f, 0.922495f, 0.922494f, 0.922492f, 0.922491f, 0.922489f, 0.922487f, 0.922486f, 0.922484f, 0.922482f, 0.922481f, 0.922479f, 0.922477f, 0.922476f,
-0.922474f, 0.922472f, 0.922471f, 0.922469f, 0.922467f, 0.922465f, 0.922463f, 0.922462f, 0.92246f, 0.922458f, 0.922456f, 0.922454f, 0.922453f, 0.922451f, 0.922449f, 0.922447f, 0.922445f, 0.922443f, 0.922441f, 0.922439f,
-0.922437f, 0.922435f, 0.922433f, 0.922431f, 0.922429f, 0.922427f, 0.922425f, 0.922423f, 0.922421f, 0.922419f, 0.922417f, 0.922415f, 0.922413f, 0.922411f, 0.922409f, 0.922407f, 0.922405f, 0.922403f, 0.9224f, 0.922398f,
-0.922396f, 0.922394f, 0.922392f, 0.92239f, 0.922387f, 0.922385f, 0.922383f, 0.922381f, 0.922378f, 0.922376f, 0.922374f, 0.922371f, 0.922369f, 0.922367f, 0.922365f, 0.922362f, 0.92236f, 0.922357f, 0.922355f, 0.922353f,
-0.92235f, 0.922348f, 0.922345f, 0.922343f, 0.922341f, 0.922338f, 0.922336f, 0.922333f, 0.922331f, 0.922328f, 0.922326f, 0.922323f, 0.922321f, 0.922318f, 0.922315f, 0.922313f, 0.92231f, 0.922308f, 0.922305f, 0.922302f,
-0.9223f, 0.922297f, 0.922295f, 0.922292f, 0.922289f, 0.922287f, 0.922284f, 0.922281f, 0.922278f, 0.922276f, 0.922273f, 0.92227f, 0.922267f, 0.922265f, 0.922262f, 0.922259f, 0.922256f, 0.922253f, 0.922251f, 0.922248f,
-0.922245f, 0.922242f, 0.922239f, 0.922236f, 0.922233f, 0.92223f, 0.922227f, 0.922224f, 0.922222f, 0.922219f, 0.922216f, 0.922213f, 0.92221f, 0.922207f, 0.922204f, 0.922201f, 0.922198f, 0.922194f, 0.922191f, 0.922188f,
-0.922185f, 0.922182f, 0.922179f, 0.922176f, 0.922173f, 0.92217f, 0.922166f, 0.922163f, 0.92216f, 0.922157f, 0.922154f, 0.92215f, 0.922147f, 0.922144f, 0.922141f, 0.922138f, 0.922134f, 0.922131f, 0.922128f, 0.922124f,
-0.922121f, 0.922118f, 0.922114f, 0.922111f, 0.922108f, 0.922104f, 0.922101f, 0.922097f, 0.922094f, 0.922091f, 0.922087f, 0.922084f, 0.92208f, 0.922077f, 0.922073f, 0.92207f, 0.922066f, 0.922063f, 0.922059f, 0.922056f,
-0.922052f, 0.922049f, 0.922045f, 0.922042f, 0.922038f, 0.922034f, 0.922031f, 0.922027f, 0.922023f, 0.92202f, 0.922016f, 0.922012f, 0.922009f, 0.922005f, 0.922001f, 0.921998f, 0.921994f, 0.92199f, 0.921986f, 0.921983f,
-0.921979f, 0.921975f, 0.921971f, 0.921967f, 0.921964f, 0.92196f, 0.921956f, 0.921952f, 0.921948f, 0.921944f, 0.92194f, 0.921937f, 0.921933f, 0.921929f, 0.921925f, 0.921921f, 0.921917f, 0.921913f, 0.921909f, 0.921905f,
-0.921901f, 0.921897f, 0.921893f, 0.921889f, 0.921885f, 0.921881f, 0.921877f, 0.921873f, 0.921868f, 0.921864f, 0.92186f, 0.921856f, 0.921852f, 0.921848f, 0.921844f, 0.921839f, 0.921835f, 0.921831f, 0.921827f, 0.921823f,
-0.921818f, 0.921814f, 0.92181f, 0.921806f, 0.921801f, 0.921797f, 0.921793f, 0.921788f, 0.921784f, 0.92178f, 0.921775f, 0.921771f, 0.921767f, 0.921762f, 0.921758f, 0.921753f, 0.921749f, 0.921745f, 0.92174f, 0.921736f,
-0.921731f, 0.921727f, 0.921722f, 0.921718f, 0.921713f, 0.921709f, 0.921704f, 0.9217f, 0.921695f, 0.921691f, 0.921686f, 0.921681f, 0.921677f, 0.921672f, 0.921668f, 0.921663f, 0.921658f, 0.921654f, 0.921649f, 0.921644f,
-0.92164f, 0.921635f, 0.92163f, 0.921625f, 0.921621f, 0.921616f, 0.921611f, 0.921606f, 0.921602f, 0.921597f, 0.921592f, 0.921587f, 0.921582f, 0.921577f, 0.921573f, 0.921568f, 0.921563f, 0.921558f, 0.921553f, 0.921548f,
-0.921543f, 0.921538f, 0.921533f, 0.921528f, 0.921523f, 0.921518f, 0.921513f, 0.921508f, 0.921503f, 0.921498f, 0.921493f, 0.921488f, 0.921483f, 0.921478f, 0.921473f, 0.921468f, 0.921463f, 0.921458f, 0.921453f, 0.921448f,
-0.921442f, 0.921437f, 0.921432f, 0.921427f, 0.921422f, 0.921416f, 0.921411f, 0.921406f, 0.921401f, 0.921395f, 0.92139f, 0.921385f, 0.92138f, 0.921374f, 0.921369f, 0.921364f, 0.921358f, 0.921353f, 0.921348f, 0.921342f,
-0.921337f, 0.921332f, 0.921326f, 0.921321f, 0.921315f, 0.92131f, 0.921304f, 0.921299f, 0.921293f, 0.921288f, 0.921282f, 0.921277f, 0.921271f, 0.921266f, 0.92126f, 0.921255f, 0.921249f, 0.921244f, 0.921238f, 0.921232f,
-0.921227f, 0.921221f, 0.921216f, 0.92121f, 0.921204f,