Merge branch 'audioreactive-prototype' of https://github.com/blazoncek/WLED into merge-audio
This commit is contained in:
commit
cf0f0d77be
@ -275,12 +275,12 @@ class PWMFanUsermod : public Usermod {
|
|||||||
enabled = usermod[FPSTR(_enabled)].as<bool>();
|
enabled = usermod[FPSTR(_enabled)].as<bool>();
|
||||||
if (!enabled) updateFanSpeed(0);
|
if (!enabled) updateFanSpeed(0);
|
||||||
}
|
}
|
||||||
if (!usermod[FPSTR(_speed)].isNull() && usermod[FPSTR(_speed)].is<int>()) {
|
if (enabled && !usermod[FPSTR(_speed)].isNull() && usermod[FPSTR(_speed)].is<int>()) {
|
||||||
pwmValuePct = usermod[FPSTR(_speed)].as<int>();
|
pwmValuePct = usermod[FPSTR(_speed)].as<int>();
|
||||||
updateFanSpeed((MAX(0,MIN(100,pwmValuePct)) * 255) / 100);
|
updateFanSpeed((constrain(pwmValuePct,0,100) * 255) / 100);
|
||||||
if (pwmValuePct) lockFan = true;
|
if (pwmValuePct) lockFan = true;
|
||||||
}
|
}
|
||||||
if (!usermod[FPSTR(_lock)].isNull() && usermod[FPSTR(_lock)].is<bool>()) {
|
if (enabled && !usermod[FPSTR(_lock)].isNull() && usermod[FPSTR(_lock)].is<bool>()) {
|
||||||
lockFan = usermod[FPSTR(_lock)].as<bool>();
|
lockFan = usermod[FPSTR(_lock)].as<bool>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,11 +23,9 @@
|
|||||||
// Comment/Uncomment to toggle usb serial debugging
|
// Comment/Uncomment to toggle usb serial debugging
|
||||||
// #define MIC_LOGGER // MIC sampling & sound input debugging (serial plotter)
|
// #define MIC_LOGGER // MIC sampling & sound input debugging (serial plotter)
|
||||||
// #define FFT_SAMPLING_LOG // FFT result debugging
|
// #define FFT_SAMPLING_LOG // FFT result debugging
|
||||||
// #define SR_DEBUG // generic SR DEBUG messages (including MIC_LOGGER)
|
// #define SR_DEBUG // generic SR DEBUG messages
|
||||||
// #define NO_MIC_LOGGER // exclude MIC_LOGGER from SR_DEBUG
|
// #define NO_MIC_LOGGER // exclude MIC_LOGGER from SR_DEBUG
|
||||||
|
|
||||||
// hackers corner
|
|
||||||
|
|
||||||
#ifdef SR_DEBUG
|
#ifdef SR_DEBUG
|
||||||
#define DEBUGSR_PRINT(x) Serial.print(x)
|
#define DEBUGSR_PRINT(x) Serial.print(x)
|
||||||
#define DEBUGSR_PRINTLN(x) Serial.println(x)
|
#define DEBUGSR_PRINTLN(x) Serial.println(x)
|
||||||
@ -37,21 +35,19 @@
|
|||||||
#define DEBUGSR_PRINTLN(x)
|
#define DEBUGSR_PRINTLN(x)
|
||||||
#define DEBUGSR_PRINTF(x...)
|
#define DEBUGSR_PRINTF(x...)
|
||||||
#endif
|
#endif
|
||||||
// legacy support
|
|
||||||
// #if defined(SR_DEBUG) && !defined(MIC_LOGGER) && !defined(NO_MIC_LOGGER)
|
|
||||||
// #define MIC_LOGGER
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
|
|
||||||
#include "audio_source.h"
|
#include "audio_source.h"
|
||||||
|
|
||||||
constexpr i2s_port_t I2S_PORT = I2S_NUM_0;
|
constexpr i2s_port_t I2S_PORT = I2S_NUM_0;
|
||||||
constexpr int BLOCK_SIZE = 128;
|
constexpr int BLOCK_SIZE = 128;
|
||||||
//constexpr int SAMPLE_RATE = 22050; // Base sample rate in Hz - 22Khz is a standard rate. Physical sample time -> 23ms
|
constexpr int SAMPLE_RATE = 22050; // Base sample rate in Hz - 22Khz is a standard rate. Physical sample time -> 23ms
|
||||||
constexpr int SAMPLE_RATE = 20480; // Base sample rate in Hz - 20Khz is experimental. Physical sample time -> 25ms
|
//constexpr int SAMPLE_RATE = 20480; // Base sample rate in Hz - 20Khz is experimental. Physical sample time -> 25ms
|
||||||
//constexpr int SAMPLE_RATE = 10240; // Base sample rate in Hz - standard. Physical sample time -> 50ms
|
//constexpr int SAMPLE_RATE = 10240; // Base sample rate in Hz - previous default. Physical sample time -> 50ms
|
||||||
|
|
||||||
#define FFT_MIN_CYCLE 22 // minimum time before FFT task is repeated. Must be less than time needed to read 512 samples at SAMPLE_RATE -> not the same as I2S time!!
|
#define FFT_MIN_CYCLE 18 // minimum time before FFT task is repeated. Use with 22Khz sampling
|
||||||
|
//#define FFT_MIN_CYCLE 22 // minimum time before FFT task is repeated. Use with 20Khz sampling
|
||||||
|
//#define FFT_MIN_CYCLE 44 // minimum time before FFT task is repeated. Use with 10Khz sampling
|
||||||
|
|
||||||
// globals
|
// globals
|
||||||
static uint8_t inputLevel = 128; // UI slider value
|
static uint8_t inputLevel = 128; // UI slider value
|
||||||
@ -64,6 +60,8 @@ static uint8_t audioSyncEnabled = 0; // bit field: bit 0 - send, bit 1
|
|||||||
static bool limiterOn = true; // bool: enable / disable dynamics limiter
|
static bool limiterOn = true; // bool: enable / disable dynamics limiter
|
||||||
static uint16_t attackTime = 80; // int: attack time in milliseconds. Default 0.08sec
|
static uint16_t attackTime = 80; // int: attack time in milliseconds. Default 0.08sec
|
||||||
static uint16_t decayTime = 1400; // int: decay time in milliseconds. Default 1.40sec
|
static uint16_t decayTime = 1400; // int: decay time in milliseconds. Default 1.40sec
|
||||||
|
// user settable options for FFTResult scaling
|
||||||
|
static uint8_t FFTScalingMode = 3; // 0 none; 1 optimized logarithmic; 2 optimized linear; 3 optimized sqare root
|
||||||
|
|
||||||
//
|
//
|
||||||
// AGC presets
|
// AGC presets
|
||||||
@ -88,8 +86,14 @@ static AudioSource *audioSource = nullptr;
|
|||||||
static volatile bool disableSoundProcessing = false; // if true, sound processing (FFT, filters, AGC) will be suspended. "volatile" as its shared between tasks.
|
static volatile bool disableSoundProcessing = false; // if true, sound processing (FFT, filters, AGC) will be suspended. "volatile" as its shared between tasks.
|
||||||
|
|
||||||
static float micDataReal = 0.0f; // MicIn data with full 24bit resolution - lowest 8bit after decimal point
|
static float micDataReal = 0.0f; // MicIn data with full 24bit resolution - lowest 8bit after decimal point
|
||||||
|
static float sampleReal = 0.0f; // "sampleRaw" as float, to provide bits that are lost otherwise (before amplification by sampleGain or inputLevel). Needed for AGC.
|
||||||
static float multAgc = 1.0f; // sample * multAgc = sampleAgc. Our AGC multiplier
|
static float multAgc = 1.0f; // sample * multAgc = sampleAgc. Our AGC multiplier
|
||||||
|
|
||||||
|
static int16_t sampleRaw = 0; // Current sample. Must only be updated ONCE!!! (amplified mic value by sampleGain and inputLevel)
|
||||||
|
static int16_t rawSampleAgc = 0; // not smoothed AGC sample
|
||||||
|
static float sampleAvg = 0.0f; // Smoothed Average sampleRaw
|
||||||
|
static float sampleAgc = 0.0f; // Smoothed AGC sample
|
||||||
|
|
||||||
////////////////////
|
////////////////////
|
||||||
// Begin FFT Code //
|
// Begin FFT Code //
|
||||||
////////////////////
|
////////////////////
|
||||||
@ -105,7 +109,7 @@ static float multAgc = 1.0f; // sample * multAgc = sampleAgc.
|
|||||||
constexpr uint16_t samplesFFT = 512; // Samples in an FFT batch - This value MUST ALWAYS be a power of 2
|
constexpr uint16_t samplesFFT = 512; // Samples in an FFT batch - This value MUST ALWAYS be a power of 2
|
||||||
constexpr uint16_t samplesFFT_2 = 256; // meaningfull part of FFT results - only the "lower half" contains useful information.
|
constexpr uint16_t samplesFFT_2 = 256; // meaningfull part of FFT results - only the "lower half" contains useful information.
|
||||||
|
|
||||||
static float FFT_MajorPeak = 0.0f;
|
static float FFT_MajorPeak = 1.0f;
|
||||||
static float FFT_Magnitude = 0.0f;
|
static float FFT_Magnitude = 0.0f;
|
||||||
|
|
||||||
// These are the input and output vectors. Input vectors receive computed results from FFT.
|
// These are the input and output vectors. Input vectors receive computed results from FFT.
|
||||||
@ -113,6 +117,12 @@ static float vReal[samplesFFT] = {0.0f};
|
|||||||
static float vImag[samplesFFT] = {0.0f};
|
static float vImag[samplesFFT] = {0.0f};
|
||||||
static float fftBin[samplesFFT_2] = {0.0f};
|
static float fftBin[samplesFFT_2] = {0.0f};
|
||||||
|
|
||||||
|
// the following are observed values, supported by a bit of "educated guessing"
|
||||||
|
//#define FFT_DOWNSCALE 0.65f // 20kHz - downscaling factor for FFT results - "Flat-Top" window @20Khz, old freq channels
|
||||||
|
|
||||||
|
#define FFT_DOWNSCALE 0.46f // downscaling factor for FFT results - for "Flat-Top" window @22Khz, new freq channels
|
||||||
|
#define LOG_256 5.54517744
|
||||||
|
|
||||||
#ifdef UM_AUDIOREACTIVE_USE_NEW_FFT
|
#ifdef UM_AUDIOREACTIVE_USE_NEW_FFT
|
||||||
static float windowWeighingFactors[samplesFFT] = {0.0f};
|
static float windowWeighingFactors[samplesFFT] = {0.0f};
|
||||||
#endif
|
#endif
|
||||||
@ -131,9 +141,6 @@ static unsigned long fftTime = 0;
|
|||||||
static unsigned long sampleTime = 0;
|
static unsigned long sampleTime = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Table of linearNoise results to be multiplied by soundSquelch in order to reduce squelch across fftResult bins.
|
|
||||||
static uint8_t linearNoise[16] = { 34, 28, 26, 25, 20, 12, 9, 6, 4, 4, 3, 2, 2, 2, 2, 2 };
|
|
||||||
|
|
||||||
// Table of multiplication factors so that we can even out the frequency response.
|
// Table of multiplication factors so that we can even out the frequency response.
|
||||||
static float fftResultPink[16] = { 1.70f, 1.71f, 1.73f, 1.78f, 1.68f, 1.56f, 1.55f, 1.63f, 1.79f, 1.62f, 1.80f, 2.06f, 2.47f, 3.35f, 6.83f, 9.55f };
|
static float fftResultPink[16] = { 1.70f, 1.71f, 1.73f, 1.78f, 1.68f, 1.56f, 1.55f, 1.63f, 1.79f, 1.62f, 1.80f, 2.06f, 2.47f, 3.35f, 6.83f, 9.55f };
|
||||||
|
|
||||||
@ -146,6 +153,11 @@ static arduinoFFT FFT = arduinoFFT(vReal, vImag, samplesFFT, SAMPLE_RATE);
|
|||||||
|
|
||||||
static TaskHandle_t FFT_Task = nullptr;
|
static TaskHandle_t FFT_Task = nullptr;
|
||||||
|
|
||||||
|
// float version of map()
|
||||||
|
static float mapf(float x, float in_min, float in_max, float out_min, float out_max){
|
||||||
|
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
|
||||||
|
}
|
||||||
|
|
||||||
static float fftAddAvg(int from, int to) {
|
static float fftAddAvg(int from, int to) {
|
||||||
float result = 0.0f;
|
float result = 0.0f;
|
||||||
for (int i = from; i <= to; i++) {
|
for (int i = from; i <= to; i++) {
|
||||||
@ -161,27 +173,23 @@ void FFTcode(void * parameter)
|
|||||||
|
|
||||||
// see https://www.freertos.org/vtaskdelayuntil.html
|
// see https://www.freertos.org/vtaskdelayuntil.html
|
||||||
const TickType_t xFrequency = FFT_MIN_CYCLE * portTICK_PERIOD_MS;
|
const TickType_t xFrequency = FFT_MIN_CYCLE * portTICK_PERIOD_MS;
|
||||||
//const TickType_t xFrequency_2 = (FFT_MIN_CYCLE * portTICK_PERIOD_MS) / 2;
|
|
||||||
|
|
||||||
for(;;) {
|
for(;;) {
|
||||||
TickType_t xLastWakeTime = xTaskGetTickCount();
|
TickType_t xLastWakeTime = xTaskGetTickCount();
|
||||||
delay(1); // DO NOT DELETE THIS LINE! It is needed to give the IDLE(0) task enough time and to keep the watchdog happy.
|
delay(1); // DO NOT DELETE THIS LINE! It is needed to give the IDLE(0) task enough time and to keep the watchdog happy.
|
||||||
// taskYIELD(), yield(), vTaskDelay() and esp_task_wdt_feed() didn't seem to work.
|
// taskYIELD(), yield(), vTaskDelay() and esp_task_wdt_feed() didn't seem to work.
|
||||||
|
|
||||||
|
vTaskDelayUntil( &xLastWakeTime, xFrequency); // release CPU, and let I2S fill its buffers
|
||||||
// Only run the FFT computing code if we're not in Receive mode and not in realtime mode
|
// Only run the FFT computing code if we're not in Receive mode and not in realtime mode
|
||||||
if (disableSoundProcessing || (audioSyncEnabled & 0x02)) {
|
if (disableSoundProcessing || (audioSyncEnabled & 0x02)) {
|
||||||
//delay(7); // release CPU - delay is implemeted using vTaskDelay(). cannot use yield() because we are out of arduino loop context
|
|
||||||
vTaskDelayUntil( &xLastWakeTime, xFrequency); // release CPU, by doing nothing for FFT_MIN_CYCLE millis
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
vTaskDelayUntil( &xLastWakeTime, xFrequency); // release CPU, and let I2S fill its buffers
|
|
||||||
//vTaskDelayUntil( &xLastWakeTime, xFrequency_2); // release CPU, and let I2S fill its buffers
|
|
||||||
|
|
||||||
#ifdef WLED_DEBUG
|
#ifdef WLED_DEBUG
|
||||||
uint64_t start = esp_timer_get_time();
|
uint64_t start = esp_timer_get_time();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// get a fresh batch of samples from I2S
|
||||||
if (audioSource) audioSource->getSamples(vReal, samplesFFT);
|
if (audioSource) audioSource->getSamples(vReal, samplesFFT);
|
||||||
|
|
||||||
#ifdef WLED_DEBUG
|
#ifdef WLED_DEBUG
|
||||||
@ -191,29 +199,24 @@ void FFTcode(void * parameter)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const int halfSamplesFFT = samplesFFT / 2; // samplesFFT divided by 2
|
// find highest sample in the batch
|
||||||
float maxSample1 = 0.0f; // max sample from first half of FFT batch
|
float maxSample = 0.0f; // max sample from FFT batch
|
||||||
float maxSample2 = 0.0f; // max sample from second half of FFT batch
|
for (int i=0; i < samplesFFT; i++) {
|
||||||
for (int i=0; i < halfSamplesFFT; i++) {
|
|
||||||
// set imaginary parts to 0
|
// set imaginary parts to 0
|
||||||
vImag[i] = 0;
|
vImag[i] = 0;
|
||||||
// pick our our current mic sample - we take the max value from all samples that go into FFT
|
// pick our our current mic sample - we take the max value from all samples that go into FFT
|
||||||
if ((vReal[i] <= (INT16_MAX - 1024)) && (vReal[i] >= (INT16_MIN + 1024))) //skip extreme values - normally these are artefacts
|
if ((vReal[i] <= (INT16_MAX - 1024)) && (vReal[i] >= (INT16_MIN + 1024))) //skip extreme values - normally these are artefacts
|
||||||
if (fabsf((float)vReal[i]) > maxSample1) maxSample1 = fabsf((float)vReal[i]);
|
if (fabsf((float)vReal[i]) > maxSample) maxSample = fabsf((float)vReal[i]);
|
||||||
}
|
}
|
||||||
for (int i=halfSamplesFFT; i < samplesFFT; i++) {
|
// release highest sample to volume reactive effects early - not strictly necessary here - could also be done at the end of the function
|
||||||
// set imaginary parts to 0
|
// early release allows the filters (getSample() and agcAvg()) to work with fresh values - we will have matching gain and noise gate values when we want to process the FFT results. micDataReal = maxSample;
|
||||||
vImag[i] = 0;
|
micDataReal = maxSample;
|
||||||
// pick our our current mic sample - we take the max value from all samples that go into FFT
|
|
||||||
if ((vReal[i] <= (INT16_MAX - 1024)) && (vReal[i] >= (INT16_MIN + 1024))) //skip extreme values - normally these are artefacts
|
|
||||||
if (fabsf((float)vReal[i]) > maxSample2) maxSample2 = fabsf((float)vReal[i]);
|
|
||||||
}
|
|
||||||
// release first sample to volume reactive effects
|
|
||||||
micDataReal = maxSample1;
|
|
||||||
|
|
||||||
|
// run FFT (takes 3-5ms on ESP32)
|
||||||
#ifdef UM_AUDIOREACTIVE_USE_NEW_FFT
|
#ifdef UM_AUDIOREACTIVE_USE_NEW_FFT
|
||||||
FFT.dcRemoval(); // remove DC offset
|
FFT.dcRemoval(); // remove DC offset
|
||||||
FFT.windowing( FFTWindow::Flat_top, FFTDirection::Forward); // Weigh data
|
FFT.windowing( FFTWindow::Flat_top, FFTDirection::Forward); // Weigh data using "Flat Top" function - better amplitude accuracy
|
||||||
|
//FFT.windowing(FFTWindow::Blackman_Harris, FFTDirection::Forward); // Weigh data using "Blackman- Harris" window - sharp peaks due to excellent sideband rejection
|
||||||
FFT.compute( FFTDirection::Forward ); // Compute FFT
|
FFT.compute( FFTDirection::Forward ); // Compute FFT
|
||||||
FFT.complexToMagnitude(); // Compute magnitudes
|
FFT.complexToMagnitude(); // Compute magnitudes
|
||||||
#else
|
#else
|
||||||
@ -226,71 +229,147 @@ void FFTcode(void * parameter)
|
|||||||
FFT.Compute( FFT_FORWARD ); // Compute FFT
|
FFT.Compute( FFT_FORWARD ); // Compute FFT
|
||||||
FFT.ComplexToMagnitude(); // Compute magnitudes
|
FFT.ComplexToMagnitude(); // Compute magnitudes
|
||||||
#endif
|
#endif
|
||||||
//
|
|
||||||
// vReal[3 .. 255] contain useful data, each a 20Hz interval (60Hz - 5120Hz).
|
|
||||||
// There could be interesting data at bins 0 to 2, but there are too many artifacts.
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifdef UM_AUDIOREACTIVE_USE_NEW_FFT
|
#ifdef UM_AUDIOREACTIVE_USE_NEW_FFT
|
||||||
FFT.majorPeak(FFT_MajorPeak, FFT_Magnitude); // let the effects know which freq was most dominant
|
FFT.majorPeak(FFT_MajorPeak, FFT_Magnitude); // let the effects know which freq was most dominant
|
||||||
#else
|
#else
|
||||||
FFT.MajorPeak(&FFT_MajorPeak, &FFT_Magnitude); // let the effects know which freq was most dominant
|
FFT.MajorPeak(&FFT_MajorPeak, &FFT_Magnitude); // let the effects know which freq was most dominant
|
||||||
#endif
|
#endif
|
||||||
|
FFT_MajorPeak = constrain(FFT_MajorPeak, 1.0f, 11025.0f); // restrict value to range expected by effects
|
||||||
|
|
||||||
for (int i = 0; i < samplesFFT_2; i++) { // Values for bins 0 and 1 are WAY too large. Might as well start at 3.
|
for (int i = 0; i < samplesFFT_2; i++) { // Values for bins 0 and 1 are WAY too large. Might as well start at 3.
|
||||||
float t = fabs(vReal[i]); // just to be sure - values in fft bins should be positive any way
|
float t = fabsf(vReal[i]); // just to be sure - values in fft bins should be positive any way
|
||||||
fftBin[i] = t / 16.0f; // Reduce magnitude. Want end result to be linear and ~4096 max.
|
fftBin[i] = t / 16.0f; // Reduce magnitude. Want end result to be linear and ~4096 max.
|
||||||
} // for()
|
} // for()
|
||||||
|
|
||||||
|
// mapping of FFT result bins to frequency channels
|
||||||
|
if (sampleAvg > 1) { // noise gate open
|
||||||
|
#if 0
|
||||||
|
/* This FFT post processing is a DIY endeavour. What we really need is someone with sound engineering expertise to do a great job here AND most importantly, that the animations look GREAT as a result.
|
||||||
|
*
|
||||||
|
* Andrew's updated mapping of 256 bins down to the 16 result bins with Sample Freq = 10240, samplesFFT = 512 and some overlap.
|
||||||
|
* Based on testing, the lowest/Start frequency is 60 Hz (with bin 3) and a highest/End frequency of 5120 Hz in bin 255.
|
||||||
|
* Now, Take the 60Hz and multiply by 1.320367784 to get the next frequency and so on until the end. Then detetermine the bins.
|
||||||
|
* End frequency = Start frequency * multiplier ^ 16
|
||||||
|
* Multiplier = (End frequency/ Start frequency) ^ 1/16
|
||||||
|
* Multiplier = 1.320367784
|
||||||
|
*/ // Range
|
||||||
|
fftCalc[ 0] = fftAddAvg(2,4); // 60 - 100
|
||||||
|
fftCalc[ 1] = fftAddAvg(4,5); // 80 - 120
|
||||||
|
fftCalc[ 2] = fftAddAvg(5,7); // 100 - 160
|
||||||
|
fftCalc[ 3] = fftAddAvg(7,9); // 140 - 200
|
||||||
|
fftCalc[ 4] = fftAddAvg(9,12); // 180 - 260
|
||||||
|
fftCalc[ 5] = fftAddAvg(12,16); // 240 - 340
|
||||||
|
fftCalc[ 6] = fftAddAvg(16,21); // 320 - 440
|
||||||
|
fftCalc[ 7] = fftAddAvg(21,29); // 420 - 600
|
||||||
|
fftCalc[ 8] = fftAddAvg(29,37); // 580 - 760
|
||||||
|
fftCalc[ 9] = fftAddAvg(37,48); // 740 - 980
|
||||||
|
fftCalc[10] = fftAddAvg(48,64); // 960 - 1300
|
||||||
|
fftCalc[11] = fftAddAvg(64,84); // 1280 - 1700
|
||||||
|
fftCalc[12] = fftAddAvg(84,111); // 1680 - 2240
|
||||||
|
fftCalc[13] = fftAddAvg(111,147); // 2220 - 2960
|
||||||
|
fftCalc[14] = fftAddAvg(147,194); // 2940 - 3900
|
||||||
|
fftCalc[15] = fftAddAvg(194,250); // 3880 - 5000 // avoid the last 5 bins, which are usually inaccurate
|
||||||
|
#else
|
||||||
|
/* new mapping, optimized for 22050 Hz by softhack007 */
|
||||||
|
// bins frequency range
|
||||||
|
fftCalc[ 0] = fftAddAvg(1,2); // 1 43 - 86 sub-bass
|
||||||
|
fftCalc[ 1] = fftAddAvg(2,3); // 1 86 - 129 bass
|
||||||
|
fftCalc[ 2] = fftAddAvg(3,5); // 2 129 - 216 bass
|
||||||
|
fftCalc[ 3] = fftAddAvg(5,7); // 2 216 - 301 bass + midrange
|
||||||
|
fftCalc[ 4] = fftAddAvg(7,10); // 3 301 - 430 midrange
|
||||||
|
fftCalc[ 5] = fftAddAvg(10,13); // 3 430 - 560 midrange
|
||||||
|
fftCalc[ 6] = fftAddAvg(13,19); // 5 560 - 818 midrange
|
||||||
|
fftCalc[ 7] = fftAddAvg(19,26); // 7 818 - 1120 midrange -- 1Khz should always be the center !
|
||||||
|
fftCalc[ 8] = fftAddAvg(26,33); // 7 1120 - 1421 midrange
|
||||||
|
fftCalc[ 9] = fftAddAvg(33,44); // 9 1421 - 1895 midrange
|
||||||
|
fftCalc[10] = fftAddAvg(44,56); // 12 1895 - 2412 midrange + high mid
|
||||||
|
fftCalc[11] = fftAddAvg(56,70); // 14 2412 - 3015 high mid
|
||||||
|
fftCalc[12] = fftAddAvg(70,86); // 16 3015 - 3704 high mid
|
||||||
|
fftCalc[13] = fftAddAvg(86,104); // 18 3704 - 4479 high mid
|
||||||
|
fftCalc[14] = fftAddAvg(104,165) * 0.88f; // 61 4479 - 7106 high mid + high -- with slight damping
|
||||||
|
fftCalc[15] = fftAddAvg(165,215) * 0.70f; // 50 7106 - 9259 high -- with some damping
|
||||||
|
// don't use the last bins from 216 to 255. They are usually contaminated by aliasing (aka noise)
|
||||||
|
#endif
|
||||||
|
} else { // noise gate closed - just decay old values
|
||||||
|
for (int i=0; i < 16; i++) {
|
||||||
|
fftCalc[i] *= 0.85f; // decay to zero
|
||||||
|
if (fftCalc[i] < 4.0f) fftCalc[i] = 0.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* This FFT post processing is a DIY endeavour. What we really need is someone with sound engineering expertise to do a great job here AND most importantly, that the animations look GREAT as a result.
|
// post-processing of frequency channels (pink noise adjustment, AGC, smooting, scaling)
|
||||||
*
|
|
||||||
*
|
|
||||||
* Andrew's updated mapping of 256 bins down to the 16 result bins with Sample Freq = 10240, samplesFFT = 512 and some overlap.
|
|
||||||
* Based on testing, the lowest/Start frequency is 60 Hz (with bin 3) and a highest/End frequency of 5120 Hz in bin 255.
|
|
||||||
* Now, Take the 60Hz and multiply by 1.320367784 to get the next frequency and so on until the end. Then detetermine the bins.
|
|
||||||
* End frequency = Start frequency * multiplier ^ 16
|
|
||||||
* Multiplier = (End frequency/ Start frequency) ^ 1/16
|
|
||||||
* Multiplier = 1.320367784
|
|
||||||
*/
|
|
||||||
// Range
|
|
||||||
fftCalc[ 0] = fftAddAvg(3,4); // 60 - 100
|
|
||||||
fftCalc[ 1] = fftAddAvg(4,5); // 80 - 120
|
|
||||||
fftCalc[ 2] = fftAddAvg(5,7); // 100 - 160
|
|
||||||
fftCalc[ 3] = fftAddAvg(7,9); // 140 - 200
|
|
||||||
fftCalc[ 4] = fftAddAvg(9,12); // 180 - 260
|
|
||||||
fftCalc[ 5] = fftAddAvg(12,16); // 240 - 340
|
|
||||||
fftCalc[ 6] = fftAddAvg(16,21); // 320 - 440
|
|
||||||
fftCalc[ 7] = fftAddAvg(21,29); // 420 - 600
|
|
||||||
fftCalc[ 8] = fftAddAvg(29,37); // 580 - 760
|
|
||||||
fftCalc[ 9] = fftAddAvg(37,48); // 740 - 980
|
|
||||||
fftCalc[10] = fftAddAvg(48,64); // 960 - 1300
|
|
||||||
fftCalc[11] = fftAddAvg(64,84); // 1280 - 1700
|
|
||||||
fftCalc[12] = fftAddAvg(84,111); // 1680 - 2240
|
|
||||||
fftCalc[13] = fftAddAvg(111,147); // 2220 - 2960
|
|
||||||
fftCalc[14] = fftAddAvg(147,194); // 2940 - 3900
|
|
||||||
fftCalc[15] = fftAddAvg(194,255); // 3880 - 5120
|
|
||||||
|
|
||||||
for (int i=0; i < 16; i++) {
|
for (int i=0; i < 16; i++) {
|
||||||
// Noise supression of fftCalc bins using soundSquelch adjustment for different input types.
|
|
||||||
fftCalc[i] = (fftCalc[i] < ((float)soundSquelch * (float)linearNoise[i] / 4.0f)) ? 0 : fftCalc[i];
|
if (sampleAvg > 1) { // noise gate open
|
||||||
// Adjustment for frequency curves.
|
// Adjustment for frequency curves.
|
||||||
fftCalc[i] *= fftResultPink[i];
|
fftCalc[i] *= fftResultPink[i];
|
||||||
// Manual linear adjustment of gain using sampleGain adjustment for different input types.
|
if (FFTScalingMode > 0) fftCalc[i] *= FFT_DOWNSCALE; // adjustment related to FFT windowing function
|
||||||
fftCalc[i] *= soundAgc ? multAgc : ((float)sampleGain/40.0f * (float)inputLevel/128.0f + 1.0f/16.0f); //with inputLevel adjustment
|
// Manual linear adjustment of gain using sampleGain adjustment for different input types.
|
||||||
|
fftCalc[i] *= soundAgc ? multAgc : ((float)sampleGain/40.0f * (float)inputLevel/128.0f + 1.0f/16.0f); //apply gain, with inputLevel adjustment
|
||||||
|
if(fftCalc[i] < 0) fftCalc[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// smooth results - rise fast, fall slower
|
// smooth results - rise fast, fall slower
|
||||||
if(fftCalc[i] > fftAvg[i]) // rise fast
|
if(fftCalc[i] > fftAvg[i]) // rise fast
|
||||||
fftAvg[i] = fftCalc[i] *0.75f + 0.25f*fftAvg[i]; // will need approx 2 cycles (50ms) for converging against fftCalc[i]
|
fftAvg[i] = fftCalc[i] *0.75f + 0.25f*fftAvg[i]; // will need approx 2 cycles (50ms) for converging against fftCalc[i]
|
||||||
else // fall slow
|
else { // fall slow
|
||||||
fftAvg[i] = fftCalc[i]*0.1f + 0.9f*fftAvg[i]; // will need approx 5 cycles (150ms) for converging against fftCalc[i]
|
if (decayTime < 1000) fftAvg[i] = fftCalc[i]*0.22f + 0.78f*fftAvg[i]; // approx 5 cycles (225ms) for falling to zero
|
||||||
//fftAvg[i] = fftCalc[i]*0.05f + 0.95f*fftAvg[i]; // will need approx 10 cycles (250ms) for converging against fftCalc[i]
|
else if (decayTime < 2000) fftAvg[i] = fftCalc[i]*0.17f + 0.83f*fftAvg[i]; // default - approx 9 cycles (225ms) for falling to zero
|
||||||
|
else if (decayTime < 3000) fftAvg[i] = fftCalc[i]*0.14f + 0.86f*fftAvg[i]; // approx 14 cycles (350ms) for falling to zero
|
||||||
|
else fftAvg[i] = fftCalc[i]*0.1f + 0.9f*fftAvg[i]; // approx 20 cycles (500ms) for falling to zero
|
||||||
|
}
|
||||||
|
// constrain internal vars - just to be sure
|
||||||
|
fftCalc[i] = constrain(fftCalc[i], 0.0f, 1023.0f);
|
||||||
|
fftAvg[i] = constrain(fftAvg[i], 0.0f, 1023.0f);
|
||||||
|
|
||||||
|
float currentResult;
|
||||||
|
if(limiterOn == true)
|
||||||
|
currentResult = fftAvg[i];
|
||||||
|
else
|
||||||
|
currentResult = fftCalc[i];
|
||||||
|
|
||||||
|
switch (FFTScalingMode) {
|
||||||
|
case 1:
|
||||||
|
// Logarithmic scaling
|
||||||
|
currentResult *= 0.42; // 42 is the answer ;-)
|
||||||
|
currentResult -= 8.0; // this skips the lowest row, giving some room for peaks
|
||||||
|
if (currentResult > 1.0) currentResult = logf(currentResult); // log to base "e", which is the fastest log() function
|
||||||
|
else currentResult = 0.0; // special handling, because log(1) = 0; log(0) = undefined
|
||||||
|
currentResult *= 0.85f + (float(i)/18.0f); // extra up-scaling for high frequencies
|
||||||
|
currentResult = mapf(currentResult, 0, LOG_256, 0, 255); // map [log(1) ... log(255)] to [0 ... 255]
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
// Linear scaling
|
||||||
|
currentResult *= 0.30f; // needs a bit more damping, get stay below 255
|
||||||
|
currentResult -= 4.0; // giving a bit more room for peaks
|
||||||
|
if (currentResult < 1.0f) currentResult = 0.0f;
|
||||||
|
currentResult *= 0.85f + (float(i)/1.8f); // extra up-scaling for high frequencies
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
// square root scaling
|
||||||
|
currentResult *= 0.38f;
|
||||||
|
currentResult -= 6.0f;
|
||||||
|
if (currentResult > 1.0) currentResult = sqrtf(currentResult);
|
||||||
|
else currentResult = 0.0; // special handling, because sqrt(0) = undefined
|
||||||
|
currentResult *= 0.85f + (float(i)/4.5f); // extra up-scaling for high frequencies
|
||||||
|
currentResult = mapf(currentResult, 0.0, 16.0, 0.0, 255.0); // map [sqrt(1) ... sqrt(256)] to [0 ... 255]
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
// no scaling - leave freq bins as-is
|
||||||
|
currentResult -= 4; // just a bit more room for peaks
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// Now, let's dump it all into fftResult. Need to do this, otherwise other routines might grab fftResult values prematurely.
|
// Now, let's dump it all into fftResult. Need to do this, otherwise other routines might grab fftResult values prematurely.
|
||||||
if(limiterOn == true)
|
if (soundAgc > 0) { // apply extra "GEQ Gain" if set by user
|
||||||
fftResult[i] = constrain((int)fftAvg[i], 0, 254);
|
float post_gain = (float)inputLevel/128.0f;
|
||||||
else
|
if (post_gain < 1.0f) post_gain = ((post_gain -1.0f) * 0.8f) +1.0f;
|
||||||
fftResult[i] = constrain((int)fftCalc[i], 0, 254);
|
currentResult *= post_gain;
|
||||||
|
}
|
||||||
|
fftResult[i] = constrain((int)currentResult, 0, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WLED_DEBUG
|
#ifdef WLED_DEBUG
|
||||||
@ -300,11 +379,6 @@ void FFTcode(void * parameter)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//vTaskDelayUntil( &xLastWakeTime, xFrequency_2); // release CPU, by waiting until FFT_MIN_CYCLE is over
|
|
||||||
// release second sample to volume reactive effects.
|
|
||||||
// Releasing a second sample now effectively doubles the "sample rate"
|
|
||||||
micDataReal = maxSample2;
|
|
||||||
|
|
||||||
} // for(;;)
|
} // for(;;)
|
||||||
} // FFTcode()
|
} // FFTcode()
|
||||||
|
|
||||||
@ -314,7 +388,7 @@ class AudioReactive : public Usermod {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
#ifndef AUDIOPIN
|
#ifndef AUDIOPIN
|
||||||
int8_t audioPin = 36;
|
int8_t audioPin = -1;
|
||||||
#else
|
#else
|
||||||
int8_t audioPin = AUDIOPIN;
|
int8_t audioPin = AUDIOPIN;
|
||||||
#endif
|
#endif
|
||||||
@ -396,12 +470,7 @@ class AudioReactive : public Usermod {
|
|||||||
|
|
||||||
bool udpSamplePeak = 0; // Boolean flag for peak. Set at the same tiem as samplePeak, but reset by transmitAudioData
|
bool udpSamplePeak = 0; // Boolean flag for peak. Set at the same tiem as samplePeak, but reset by transmitAudioData
|
||||||
int16_t micIn = 0; // Current sample starts with negative values and large values, which is why it's 16 bit signed
|
int16_t micIn = 0; // Current sample starts with negative values and large values, which is why it's 16 bit signed
|
||||||
int16_t sampleRaw = 0; // Current sample. Must only be updated ONCE!!! (amplified mic value by sampleGain and inputLevel; smoothed over 16 samples)
|
|
||||||
double sampleMax = 0.0; // Max sample over a few seconds. Needed for AGC controler.
|
double sampleMax = 0.0; // Max sample over a few seconds. Needed for AGC controler.
|
||||||
float sampleReal = 0.0f; // "sampleRaw" as float, to provide bits that are lost otherwise (before amplification by sampleGain or inputLevel). Needed for AGC.
|
|
||||||
float sampleAvg = 0.0f; // Smoothed Average sampleRaw
|
|
||||||
float sampleAgc = 0.0f; // Our AGC sample
|
|
||||||
int16_t rawSampleAgc = 0; // Our AGC sample - raw
|
|
||||||
uint32_t timeOfPeak = 0;
|
uint32_t timeOfPeak = 0;
|
||||||
unsigned long lastTime = 0; // last time of running UDP Microphone Sync
|
unsigned long lastTime = 0; // last time of running UDP Microphone Sync
|
||||||
float micLev = 0.0f; // Used to convert returned value to have '0' as minimum. A leveller
|
float micLev = 0.0f; // Used to convert returned value to have '0' as minimum. A leveller
|
||||||
@ -540,7 +609,6 @@ class AudioReactive : public Usermod {
|
|||||||
|
|
||||||
if((fabs(sampleReal) < 2.0f) || (sampleMax < 1.0f)) {
|
if((fabs(sampleReal) < 2.0f) || (sampleMax < 1.0f)) {
|
||||||
// MIC signal is "squelched" - deliver silence
|
// MIC signal is "squelched" - deliver silence
|
||||||
//multAgcTemp = multAgc; // keep old control value (no change)
|
|
||||||
tmpAgc = 0;
|
tmpAgc = 0;
|
||||||
// we need to "spin down" the intgrated error buffer
|
// we need to "spin down" the intgrated error buffer
|
||||||
if (fabs(control_integrated) < 0.01) control_integrated = 0.0;
|
if (fabs(control_integrated) < 0.01) control_integrated = 0.0;
|
||||||
@ -548,27 +616,26 @@ class AudioReactive : public Usermod {
|
|||||||
} else {
|
} else {
|
||||||
// compute new setpoint
|
// compute new setpoint
|
||||||
if (tmpAgc <= agcTarget0Up[AGC_preset])
|
if (tmpAgc <= agcTarget0Up[AGC_preset])
|
||||||
multAgcTemp = agcTarget0[AGC_preset] / sampleMax; // Make the multiplier so that sampleMax * multiplier = first setpoint
|
multAgcTemp = agcTarget0[AGC_preset] / sampleMax; // Make the multiplier so that sampleMax * multiplier = first setpoint
|
||||||
else
|
else
|
||||||
multAgcTemp = agcTarget1[AGC_preset] / sampleMax; // Make the multiplier so that sampleMax * multiplier = second setpoint
|
multAgcTemp = agcTarget1[AGC_preset] / sampleMax; // Make the multiplier so that sampleMax * multiplier = second setpoint
|
||||||
}
|
}
|
||||||
// limit amplification
|
// limit amplification
|
||||||
//multAgcTemp = constrain(multAgcTemp, 0.015625f, 32.0f); // 1/64 < multAgcTemp < 32
|
|
||||||
if (multAgcTemp > 32.0f) multAgcTemp = 32.0f;
|
if (multAgcTemp > 32.0f) multAgcTemp = 32.0f;
|
||||||
if (multAgcTemp < 1.0f/64.0f) multAgcTemp = 1.0f/64.0f;
|
if (multAgcTemp < 1.0f/64.0f) multAgcTemp = 1.0f/64.0f;
|
||||||
|
|
||||||
// compute error terms
|
// compute error terms
|
||||||
control_error = multAgcTemp - lastMultAgc;
|
control_error = multAgcTemp - lastMultAgc;
|
||||||
|
|
||||||
if (((multAgcTemp > 0.085f) && (multAgcTemp < 6.5f)) //integrator anti-windup by clamping
|
if (((multAgcTemp > 0.085f) && (multAgcTemp < 6.5f)) //integrator anti-windup by clamping
|
||||||
&& (multAgc*sampleMax < agcZoneStop[AGC_preset])) //integrator ceiling (>140% of max)
|
&& (multAgc*sampleMax < agcZoneStop[AGC_preset])) //integrator ceiling (>140% of max)
|
||||||
control_integrated += control_error * 0.002 * 0.25; // 2ms = intgration time; 0.25 for damping
|
control_integrated += control_error * 0.002 * 0.25; // 2ms = intgration time; 0.25 for damping
|
||||||
else
|
else
|
||||||
control_integrated *= 0.9; // spin down that beasty integrator
|
control_integrated *= 0.9; // spin down that beasty integrator
|
||||||
|
|
||||||
// apply PI Control
|
// apply PI Control
|
||||||
tmpAgc = sampleReal * lastMultAgc; // check "zone" of the signal using previous gain
|
tmpAgc = sampleReal * lastMultAgc; // check "zone" of the signal using previous gain
|
||||||
if ((tmpAgc > agcZoneHigh[AGC_preset]) || (tmpAgc < soundSquelch + agcZoneLow[AGC_preset])) { // upper/lower emergy zone
|
if ((tmpAgc > agcZoneHigh[AGC_preset]) || (tmpAgc < soundSquelch + agcZoneLow[AGC_preset])) { // upper/lower emergy zone
|
||||||
multAgcTemp = lastMultAgc + agcFollowFast[AGC_preset] * agcControlKp[AGC_preset] * control_error;
|
multAgcTemp = lastMultAgc + agcFollowFast[AGC_preset] * agcControlKp[AGC_preset] * control_error;
|
||||||
multAgcTemp += agcFollowFast[AGC_preset] * agcControlKi[AGC_preset] * control_integrated;
|
multAgcTemp += agcFollowFast[AGC_preset] * agcControlKi[AGC_preset] * control_integrated;
|
||||||
} else { // "normal zone"
|
} else { // "normal zone"
|
||||||
@ -598,9 +665,6 @@ class AudioReactive : public Usermod {
|
|||||||
else
|
else
|
||||||
sampleAgc += agcSampleSmooth[AGC_preset] * (tmpAgc - sampleAgc); // smooth path
|
sampleAgc += agcSampleSmooth[AGC_preset] * (tmpAgc - sampleAgc); // smooth path
|
||||||
|
|
||||||
//userVar0 = sampleAvg * 4;
|
|
||||||
//if (userVar0 > 255) userVar0 = 255;
|
|
||||||
|
|
||||||
last_soundAgc = soundAgc;
|
last_soundAgc = soundAgc;
|
||||||
} // agcAvg()
|
} // agcAvg()
|
||||||
|
|
||||||
@ -636,7 +700,7 @@ class AudioReactive : public Usermod {
|
|||||||
micLev = ((micLev * 8191.0f) + micDataReal) / 8192.0f; // takes a few seconds to "catch up" with the Mic Input
|
micLev = ((micLev * 8191.0f) + micDataReal) / 8192.0f; // takes a few seconds to "catch up" with the Mic Input
|
||||||
if(micIn < micLev) micLev = ((micLev * 31.0f) + micDataReal) / 32.0f; // align MicLev to lowest input signal
|
if(micIn < micLev) micLev = ((micLev * 31.0f) + micDataReal) / 32.0f; // align MicLev to lowest input signal
|
||||||
|
|
||||||
micIn -= micLev; // Let's center it to 0 now
|
micIn -= micLev; // Let's center it to 0 now
|
||||||
// Using an exponential filter to smooth out the signal. We'll add controls for this in a future release.
|
// Using an exponential filter to smooth out the signal. We'll add controls for this in a future release.
|
||||||
float micInNoDC = fabs(micDataReal - micLev);
|
float micInNoDC = fabs(micDataReal - micLev);
|
||||||
expAdjF = (weighting * micInNoDC + (1.0-weighting) * expAdjF);
|
expAdjF = (weighting * micInNoDC + (1.0-weighting) * expAdjF);
|
||||||
@ -650,12 +714,12 @@ class AudioReactive : public Usermod {
|
|||||||
sampleAdj = tmpSample * sampleGain / 40.0f * inputLevel/128.0f + tmpSample / 16.0f; // Adjust the gain. with inputLevel adjustment
|
sampleAdj = tmpSample * sampleGain / 40.0f * inputLevel/128.0f + tmpSample / 16.0f; // Adjust the gain. with inputLevel adjustment
|
||||||
sampleReal = tmpSample;
|
sampleReal = tmpSample;
|
||||||
|
|
||||||
sampleAdj = fmax(fmin(sampleAdj, 255), 0); // Question: why are we limiting the value to 8 bits ???
|
sampleAdj = fmax(fmin(sampleAdj, 255), 0); // Question: why are we limiting the value to 8 bits ???
|
||||||
sampleRaw = (int16_t)sampleAdj; // ONLY update sample ONCE!!!!
|
sampleRaw = (int16_t)sampleAdj; // ONLY update sample ONCE!!!!
|
||||||
|
|
||||||
// keep "peak" sample, but decay value if current sample is below peak
|
// keep "peak" sample, but decay value if current sample is below peak
|
||||||
if ((sampleMax < sampleReal) && (sampleReal > 0.5f)) {
|
if ((sampleMax < sampleReal) && (sampleReal > 0.5f)) {
|
||||||
sampleMax = sampleMax + 0.5f * (sampleReal - sampleMax); // new peak - with some filtering
|
sampleMax = sampleMax + 0.5f * (sampleReal - sampleMax); // new peak - with some filtering
|
||||||
} else {
|
} else {
|
||||||
if ((multAgc*sampleMax > agcZoneStop[AGC_preset]) && (soundAgc > 0))
|
if ((multAgc*sampleMax > agcZoneStop[AGC_preset]) && (soundAgc > 0))
|
||||||
sampleMax += 0.5f * (sampleReal - sampleMax); // over AGC Zone - get back quickly
|
sampleMax += 0.5f * (sampleReal - sampleMax); // over AGC Zone - get back quickly
|
||||||
@ -676,13 +740,12 @@ class AudioReactive : public Usermod {
|
|||||||
//if (userVar1 == 0) samplePeak = 0;
|
//if (userVar1 == 0) samplePeak = 0;
|
||||||
|
|
||||||
// Poor man's beat detection by seeing if sample > Average + some value.
|
// Poor man's beat detection by seeing if sample > Average + some value.
|
||||||
// if (sample > (sampleAvg + maxVol) && millis() > (timeOfPeak + 200)) {
|
if ((maxVol > 0) && (binNum > 1) && (fftBin[binNum] > maxVol) && (millis() > (timeOfPeak + 100))) {
|
||||||
if ((maxVol > 0) && (binNum > 1) && (fftBin[binNum] > maxVol) && (millis() > (timeOfPeak + 100))) { // This goes through ALL of the 255 bins - but ignores stupid settings
|
// This goes through ALL of the 255 bins - but ignores stupid settings
|
||||||
// Then we got a peak, else we don't. The peak has to time out on its own in order to support UDP sound sync.
|
// Then we got a peak, else we don't. The peak has to time out on its own in order to support UDP sound sync.
|
||||||
samplePeak = true;
|
samplePeak = true;
|
||||||
timeOfPeak = millis();
|
timeOfPeak = millis();
|
||||||
udpSamplePeak = true;
|
udpSamplePeak = true;
|
||||||
//userVar1 = samplePeak;
|
|
||||||
}
|
}
|
||||||
} // getSample()
|
} // getSample()
|
||||||
|
|
||||||
@ -696,7 +759,7 @@ class AudioReactive : public Usermod {
|
|||||||
static unsigned long last_time = 0;
|
static unsigned long last_time = 0;
|
||||||
static float last_volumeSmth = 0.0f;
|
static float last_volumeSmth = 0.0f;
|
||||||
|
|
||||||
if(limiterOn == false) return;
|
if (limiterOn == false) return;
|
||||||
|
|
||||||
long delta_time = millis() - last_time;
|
long delta_time = millis() - last_time;
|
||||||
delta_time = constrain(delta_time , 1, 1000); // below 1ms -> 1ms; above 1sec -> sily lil hick-up
|
delta_time = constrain(delta_time , 1, 1000); // below 1ms -> 1ms; above 1sec -> sily lil hick-up
|
||||||
@ -725,9 +788,6 @@ class AudioReactive : public Usermod {
|
|||||||
|
|
||||||
audioSyncPacket transmitData;
|
audioSyncPacket transmitData;
|
||||||
strncpy_P(transmitData.header, PSTR(UDP_SYNC_HEADER), 6);
|
strncpy_P(transmitData.header, PSTR(UDP_SYNC_HEADER), 6);
|
||||||
|
|
||||||
//transmitData.sampleRaw = volumeRaw;
|
|
||||||
//transmitData.sampleSmth = volumeSmth;
|
|
||||||
// transmit samples that were not modified by limitSampleDynamics()
|
// transmit samples that were not modified by limitSampleDynamics()
|
||||||
transmitData.sampleRaw = (soundAgc) ? rawSampleAgc: sampleRaw;
|
transmitData.sampleRaw = (soundAgc) ? rawSampleAgc: sampleRaw;
|
||||||
transmitData.sampleSmth = (soundAgc) ? sampleAgc : sampleAvg;
|
transmitData.sampleSmth = (soundAgc) ? sampleAgc : sampleAvg;
|
||||||
@ -757,7 +817,6 @@ class AudioReactive : public Usermod {
|
|||||||
bool receiveAudioData() // check & process new data. return TRUE in case that new audio data was received.
|
bool receiveAudioData() // check & process new data. return TRUE in case that new audio data was received.
|
||||||
{
|
{
|
||||||
if (!udpSyncConnected) return false;
|
if (!udpSyncConnected) return false;
|
||||||
//DEBUGSR_PRINTLN("Checking for UDP Microphone Packet");
|
|
||||||
bool haveFreshData = false;
|
bool haveFreshData = false;
|
||||||
size_t packetSize = fftUdp.parsePacket();
|
size_t packetSize = fftUdp.parsePacket();
|
||||||
if (packetSize > 5) {
|
if (packetSize > 5) {
|
||||||
@ -800,7 +859,8 @@ class AudioReactive : public Usermod {
|
|||||||
|
|
||||||
my_magnitude = fmaxf(receivedPacket->FFT_Magnitude, 0.0f);
|
my_magnitude = fmaxf(receivedPacket->FFT_Magnitude, 0.0f);
|
||||||
FFT_Magnitude = my_magnitude;
|
FFT_Magnitude = my_magnitude;
|
||||||
FFT_MajorPeak = fmaxf(receivedPacket->FFT_MajorPeak, 0.0f);
|
FFT_MajorPeak = constrain(receivedPacket->FFT_MajorPeak, 1.0f, 11025.0f); // restrict value to range expected by effects
|
||||||
|
|
||||||
//DEBUGSR_PRINTLN("Finished parsing UDP Sync Packet");
|
//DEBUGSR_PRINTLN("Finished parsing UDP Sync Packet");
|
||||||
haveFreshData = true;
|
haveFreshData = true;
|
||||||
}
|
}
|
||||||
@ -911,7 +971,7 @@ class AudioReactive : public Usermod {
|
|||||||
*/
|
*/
|
||||||
void connected()
|
void connected()
|
||||||
{
|
{
|
||||||
if (audioSyncPort > 0 || (audioSyncEnabled & 0x03)) {
|
if (audioSyncPort > 0 && (audioSyncEnabled & 0x03)) {
|
||||||
#ifndef ESP8266
|
#ifndef ESP8266
|
||||||
udpSyncConnected = fftUdp.beginMulticast(IPAddress(239, 0, 0, 1), audioSyncPort);
|
udpSyncConnected = fftUdp.beginMulticast(IPAddress(239, 0, 0, 1), audioSyncPort);
|
||||||
#else
|
#else
|
||||||
@ -971,7 +1031,7 @@ class AudioReactive : public Usermod {
|
|||||||
|
|
||||||
if (audioSyncEnabled & 0x02) disableSoundProcessing = true; // make sure everything is disabled IF in audio Receive mode
|
if (audioSyncEnabled & 0x02) disableSoundProcessing = true; // make sure everything is disabled IF in audio Receive mode
|
||||||
if (audioSyncEnabled & 0x01) disableSoundProcessing = false; // keep running audio IF we're in audio Transmit mode
|
if (audioSyncEnabled & 0x01) disableSoundProcessing = false; // keep running audio IF we're in audio Transmit mode
|
||||||
if(!audioSource->isInitialized()) disableSoundProcessing = true; // no audio source
|
if (!audioSource->isInitialized()) disableSoundProcessing = true; // no audio source
|
||||||
|
|
||||||
|
|
||||||
// Only run the sampling code IF we're not in Receive mode or realtime mode
|
// Only run the sampling code IF we're not in Receive mode or realtime mode
|
||||||
@ -998,7 +1058,7 @@ class AudioReactive : public Usermod {
|
|||||||
agcAvg(t_now - userloopDelay); // Calculated the PI adjusted value as sampleAvg
|
agcAvg(t_now - userloopDelay); // Calculated the PI adjusted value as sampleAvg
|
||||||
userloopDelay -= 2; // advance "simulated time" by 2ms
|
userloopDelay -= 2; // advance "simulated time" by 2ms
|
||||||
} while (userloopDelay > 0);
|
} while (userloopDelay > 0);
|
||||||
lastUMRun = t_now; // update time keeping
|
lastUMRun = t_now; // update time keeping
|
||||||
|
|
||||||
// update samples for effects (raw, smooth)
|
// update samples for effects (raw, smooth)
|
||||||
volumeSmth = (soundAgc) ? sampleAgc : sampleAvg;
|
volumeSmth = (soundAgc) ? sampleAgc : sampleAvg;
|
||||||
@ -1006,50 +1066,9 @@ class AudioReactive : public Usermod {
|
|||||||
// update FFTMagnitude, taking into account AGC amplification
|
// update FFTMagnitude, taking into account AGC amplification
|
||||||
my_magnitude = FFT_Magnitude; // / 16.0f, 8.0f, 4.0f done in effects
|
my_magnitude = FFT_Magnitude; // / 16.0f, 8.0f, 4.0f done in effects
|
||||||
if (soundAgc) my_magnitude *= multAgc;
|
if (soundAgc) my_magnitude *= multAgc;
|
||||||
if (volumeSmth < 1 ) my_magnitude = 0.001f; // noise gate closed - mute
|
if (volumeSmth < 1 ) my_magnitude = 0.001f; // noise gate closed - mute
|
||||||
|
|
||||||
limitSampleDynamics(); // optional - makes volumeSmth very smooth and fluent
|
limitSampleDynamics(); // optional - makes volumeSmth very smooth and fluent
|
||||||
|
|
||||||
// update WebServer UI
|
|
||||||
uint8_t knownMode = strip.getFirstSelectedSeg().mode; // 1st selected segment is more appropriate than main segment
|
|
||||||
if (lastMode != knownMode) { // only execute if mode changes
|
|
||||||
char lineBuffer[4];
|
|
||||||
extractModeName(knownMode, JSON_mode_names, lineBuffer, 3); // use of JSON_mode_names is deprecated, use nullptr
|
|
||||||
agcEffect = (lineBuffer[1] == 226 && lineBuffer[2] == 153); // && (lineBuffer[3] == 170 || lineBuffer[3] == 171 ) encoding of ♪ or ♫
|
|
||||||
// agcEffect = (lineBuffer[4] == 240 && lineBuffer[5] == 159 && lineBuffer[6] == 142 && lineBuffer[7] == 154 ); //encoding of 🎚 No clue why as not found here https://www.iemoji.com/view/emoji/918/objects/level-slider
|
|
||||||
lastMode = knownMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
// update inputLevel Slider based on current AGC gain
|
|
||||||
if ((soundAgc>0) && agcEffect) {
|
|
||||||
unsigned long now_time = millis();
|
|
||||||
|
|
||||||
// "user kick" feature - if user has moved the slider by at least 32 units, we "kick" AGC gain by 30% (up or down)
|
|
||||||
// only once in 3.5 seconds
|
|
||||||
if ( (lastMode == knownMode)
|
|
||||||
&& (abs(last_user_inputLevel - inputLevel) > 31)
|
|
||||||
&& (now_time - last_kick_time > 3500)) {
|
|
||||||
if (last_user_inputLevel > inputLevel) multAgc *= 0.60; // down -> reduce gain
|
|
||||||
if (last_user_inputLevel < inputLevel) multAgc *= 1.50; // up -> increase gain
|
|
||||||
last_kick_time = now_time;
|
|
||||||
}
|
|
||||||
|
|
||||||
int new_user_inputLevel = 128.0f * multAgc; // scale AGC multiplier so that "1" is at 128
|
|
||||||
if (multAgc > 1.0f) new_user_inputLevel = 128.0f * (((multAgc - 1.0f) / 4.0f) +1.0f); // compress range so we can show values up to 4
|
|
||||||
new_user_inputLevel = MIN(MAX(new_user_inputLevel, 0),255);
|
|
||||||
|
|
||||||
// update user interfaces - restrict frequency to avoid flooding UI's with small changes
|
|
||||||
if (( ((now_time - last_update_time > 3500) && (abs(new_user_inputLevel - inputLevel) > 2)) // small change - every 3.5 sec (max)
|
|
||||||
||((now_time - last_update_time > 2200) && (abs(new_user_inputLevel - inputLevel) > 15)) // medium change
|
|
||||||
||((now_time - last_update_time > 1200) && (abs(new_user_inputLevel - inputLevel) > 31))) // BIG change - every second
|
|
||||||
&& !strip.isUpdating()) // don't interfere while strip is updating
|
|
||||||
{
|
|
||||||
inputLevel = new_user_inputLevel; // change of least 3 units -> update user variable
|
|
||||||
updateInterfaces(CALL_MODE_WS_SEND); // is this the correct way to notify UIs ? Yes says blazoncek
|
|
||||||
last_update_time = now_time;
|
|
||||||
last_user_inputLevel = new_user_inputLevel;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1113,16 +1132,27 @@ class AudioReactive : public Usermod {
|
|||||||
volumeRaw = 0; volumeSmth = 0;
|
volumeRaw = 0; volumeSmth = 0;
|
||||||
sampleAgc = 0; sampleAvg = 0;
|
sampleAgc = 0; sampleAvg = 0;
|
||||||
sampleRaw = 0; rawSampleAgc = 0;
|
sampleRaw = 0; rawSampleAgc = 0;
|
||||||
my_magnitude = 0; FFT_Magnitude = 0; FFT_MajorPeak = 0;
|
my_magnitude = 0; FFT_Magnitude = 0; FFT_MajorPeak = 1;
|
||||||
multAgc = 1;
|
multAgc = 1;
|
||||||
|
// reset FFT data
|
||||||
|
memset(fftCalc, 0, sizeof(fftCalc));
|
||||||
|
memset(fftAvg, 0, sizeof(fftAvg));
|
||||||
|
memset(fftResult, 0, sizeof(fftResult));
|
||||||
|
for(int i=(init?0:1); i<16; i+=2) fftResult[i] = 16; // make a tiny pattern
|
||||||
|
inputLevel = 128; // resset level slider to default
|
||||||
|
|
||||||
if (init && FFT_Task) {
|
if (init && FFT_Task) {
|
||||||
vTaskSuspend(FFT_Task); // update is about to begin, disable task to prevent crash
|
vTaskSuspend(FFT_Task); // update is about to begin, disable task to prevent crash
|
||||||
|
if (udpSyncConnected) { // close UDP sync connection (if open)
|
||||||
|
udpSyncConnected = false;
|
||||||
|
fftUdp.stop();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// update has failed or create task requested
|
// update has failed or create task requested
|
||||||
if (FFT_Task)
|
if (FFT_Task) {
|
||||||
vTaskResume(FFT_Task);
|
vTaskResume(FFT_Task);
|
||||||
else
|
connected(); // resume UDP
|
||||||
|
} else
|
||||||
// xTaskCreatePinnedToCore(
|
// xTaskCreatePinnedToCore(
|
||||||
xTaskCreate( // no need to "pin" this task to core #0
|
xTaskCreate( // no need to "pin" this task to core #0
|
||||||
FFTcode, // Function to implement the task
|
FFTcode, // Function to implement the task
|
||||||
@ -1130,11 +1160,11 @@ class AudioReactive : public Usermod {
|
|||||||
5000, // Stack size in words
|
5000, // Stack size in words
|
||||||
NULL, // Task input parameter
|
NULL, // Task input parameter
|
||||||
1, // Priority of the task
|
1, // Priority of the task
|
||||||
&FFT_Task // Task handle
|
&FFT_Task // Task handle
|
||||||
// , 0 // Core where the task should run
|
// , 0 // Core where the task should run
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
micDataReal = 0.0f; // just to ber sure
|
micDataReal = 0.0f; // just to be sure
|
||||||
if (enabled) disableSoundProcessing = false;
|
if (enabled) disableSoundProcessing = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1182,69 +1212,77 @@ class AudioReactive : public Usermod {
|
|||||||
infoArr.add(uiDomString);
|
infoArr.add(uiDomString);
|
||||||
|
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
infoArr = user.createNestedArray(F("Input level"));
|
// Input Level Slider
|
||||||
uiDomString = F("<div class=\"slider\"><div class=\"sliderwrap il\"><input class=\"noslide\" onchange=\"requestJson({");
|
if (disableSoundProcessing == false) { // only show slider when audio processing is running
|
||||||
uiDomString += FPSTR(_name);
|
if (soundAgc > 0)
|
||||||
uiDomString += F(":{");
|
infoArr = user.createNestedArray(F("GEQ Input Level")); // if AGC is on, this slider only affects fftResult[] frequencies
|
||||||
uiDomString += FPSTR(_inputLvl);
|
else
|
||||||
uiDomString += F(":parseInt(this.value)}});\" oninput=\"updateTrail(this);\" max=255 min=0 type=\"range\" value=");
|
infoArr = user.createNestedArray(F("Audio Input Level"));
|
||||||
uiDomString += inputLevel;
|
uiDomString = F("<div class=\"slider\"><div class=\"sliderwrap il\"><input class=\"noslide\" onchange=\"requestJson({");
|
||||||
uiDomString += F(" /><div class=\"sliderdisplay\"></div></div></div>"); //<output class=\"sliderbubble\"></output>
|
uiDomString += FPSTR(_name);
|
||||||
infoArr.add(uiDomString);
|
uiDomString += F(":{");
|
||||||
|
uiDomString += FPSTR(_inputLvl);
|
||||||
|
uiDomString += F(":parseInt(this.value)}});\" oninput=\"updateTrail(this);\" max=255 min=0 type=\"range\" value=");
|
||||||
|
uiDomString += inputLevel;
|
||||||
|
uiDomString += F(" /><div class=\"sliderdisplay\"></div></div></div>"); //<output class=\"sliderbubble\"></output>
|
||||||
|
infoArr.add(uiDomString);
|
||||||
|
}
|
||||||
|
|
||||||
|
// The following can be used for troubleshooting user errors and is so not enclosed in #ifdef WLED_DEBUG
|
||||||
|
|
||||||
// current Audio input
|
// current Audio input
|
||||||
infoArr = user.createNestedArray(F("Audio Source"));
|
infoArr = user.createNestedArray(F("Audio Source"));
|
||||||
if (audioSyncEnabled & 0x02) {
|
if (audioSyncEnabled & 0x02) {
|
||||||
// UDP sound sync - receive mode
|
// UDP sound sync - receive mode
|
||||||
infoArr.add("UDP sound sync");
|
infoArr.add(F("UDP sound sync"));
|
||||||
if (udpSyncConnected) {
|
if (udpSyncConnected) {
|
||||||
if (millis() - last_UDPTime < 2500)
|
if (millis() - last_UDPTime < 2500)
|
||||||
infoArr.add(" - receiving");
|
infoArr.add(F(" - receiving"));
|
||||||
else
|
else
|
||||||
infoArr.add(" - idle");
|
infoArr.add(F(" - idle"));
|
||||||
} else {
|
} else {
|
||||||
infoArr.add(" - no network");
|
infoArr.add(F(" - no connection"));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Analog or I2S digital input
|
// Analog or I2S digital input
|
||||||
if (audioSource && (audioSource->isInitialized())) {
|
if (audioSource && (audioSource->isInitialized())) {
|
||||||
// audio source sucessfully configured
|
// audio source sucessfully configured
|
||||||
if(audioSource->getType() == AudioSource::Type_I2SAdc) {
|
if (audioSource->getType() == AudioSource::Type_I2SAdc) {
|
||||||
infoArr.add("ADC analog");
|
infoArr.add(F("ADC analog"));
|
||||||
} else {
|
} else {
|
||||||
infoArr.add("I2S digital");
|
infoArr.add(F("I2S digital"));
|
||||||
}
|
}
|
||||||
// input level or "silence"
|
// input level or "silence"
|
||||||
if (maxSample5sec > 1.0) {
|
if (maxSample5sec > 1.0) {
|
||||||
float my_usage = 100.0f * (maxSample5sec / 255.0f);
|
float my_usage = 100.0f * (maxSample5sec / 255.0f);
|
||||||
snprintf(myStringBuffer, 15, " - peak %3d%%", int(my_usage));
|
snprintf_P(myStringBuffer, 15, PSTR(" - peak %3d%%"), int(my_usage));
|
||||||
infoArr.add(myStringBuffer);
|
infoArr.add(myStringBuffer);
|
||||||
} else {
|
} else {
|
||||||
infoArr.add(" - quiet");
|
infoArr.add(F(" - quiet"));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// error during audio source setup
|
// error during audio source setup
|
||||||
infoArr.add("not initialized");
|
infoArr.add(F("not initialized"));
|
||||||
infoArr.add(" - check GPIO config");
|
infoArr.add(F(" - check GPIO config"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sound processing (FFT and input filters)
|
// Sound processing (FFT and input filters)
|
||||||
infoArr = user.createNestedArray(F("Sound Processing"));
|
infoArr = user.createNestedArray(F("Sound Processing"));
|
||||||
if (audioSource && (disableSoundProcessing == false)) {
|
if (audioSource && (disableSoundProcessing == false)) {
|
||||||
infoArr.add("running");
|
infoArr.add(F("running"));
|
||||||
} else {
|
} else {
|
||||||
infoArr.add("suspended");
|
infoArr.add(F("suspended"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// AGC or manual Gain
|
// AGC or manual Gain
|
||||||
if((soundAgc==0) && (disableSoundProcessing == false) && !(audioSyncEnabled & 0x02)) {
|
if ((soundAgc==0) && (disableSoundProcessing == false) && !(audioSyncEnabled & 0x02)) {
|
||||||
infoArr = user.createNestedArray(F("Manual Gain"));
|
infoArr = user.createNestedArray(F("Manual Gain"));
|
||||||
float myGain = ((float)sampleGain/40.0f * (float)inputLevel/128.0f) + 1.0f/16.0f; // non-AGC gain from presets
|
float myGain = ((float)sampleGain/40.0f * (float)inputLevel/128.0f) + 1.0f/16.0f; // non-AGC gain from presets
|
||||||
infoArr.add(roundf(myGain*100.0f) / 100.0f);
|
infoArr.add(roundf(myGain*100.0f) / 100.0f);
|
||||||
infoArr.add("x");
|
infoArr.add("x");
|
||||||
}
|
}
|
||||||
if(soundAgc && (disableSoundProcessing == false) && !(audioSyncEnabled & 0x02)) {
|
if (soundAgc && (disableSoundProcessing == false) && !(audioSyncEnabled & 0x02)) {
|
||||||
infoArr = user.createNestedArray(F("AGC Gain"));
|
infoArr = user.createNestedArray(F("AGC Gain"));
|
||||||
infoArr.add(roundf(multAgc*100.0f) / 100.0f);
|
infoArr.add(roundf(multAgc*100.0f) / 100.0f);
|
||||||
infoArr.add("x");
|
infoArr.add("x");
|
||||||
@ -1253,13 +1291,14 @@ class AudioReactive : public Usermod {
|
|||||||
// UDP Sound Sync status
|
// UDP Sound Sync status
|
||||||
infoArr = user.createNestedArray(F("UDP Sound Sync"));
|
infoArr = user.createNestedArray(F("UDP Sound Sync"));
|
||||||
if (audioSyncEnabled) {
|
if (audioSyncEnabled) {
|
||||||
if (audioSyncEnabled & 0x01) {
|
if (audioSyncEnabled & 0x01) {
|
||||||
infoArr.add("send mode");
|
infoArr.add(F("send mode"));
|
||||||
} else if (audioSyncEnabled & 0x02) {
|
} else if (audioSyncEnabled & 0x02) {
|
||||||
infoArr.add("receive mode");
|
infoArr.add(F("receive mode"));
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
infoArr.add("off");
|
infoArr.add("off");
|
||||||
|
if (audioSyncEnabled && !udpSyncConnected) infoArr.add(" <i>(unconnected)</i>");
|
||||||
|
|
||||||
#ifdef WLED_DEBUG
|
#ifdef WLED_DEBUG
|
||||||
infoArr = user.createNestedArray(F("Sampling time"));
|
infoArr = user.createNestedArray(F("Sampling time"));
|
||||||
@ -1372,6 +1411,9 @@ class AudioReactive : public Usermod {
|
|||||||
dynLim[F("Rise")] = attackTime;
|
dynLim[F("Rise")] = attackTime;
|
||||||
dynLim[F("Fall")] = decayTime;
|
dynLim[F("Fall")] = decayTime;
|
||||||
|
|
||||||
|
JsonObject freqScale = top.createNestedObject("Frequency");
|
||||||
|
freqScale[F("Scale")] = FFTScalingMode;
|
||||||
|
|
||||||
JsonObject sync = top.createNestedObject("sync");
|
JsonObject sync = top.createNestedObject("sync");
|
||||||
sync[F("port")] = audioSyncPort;
|
sync[F("port")] = audioSyncPort;
|
||||||
sync[F("mode")] = audioSyncEnabled;
|
sync[F("mode")] = audioSyncEnabled;
|
||||||
@ -1418,6 +1460,8 @@ class AudioReactive : public Usermod {
|
|||||||
configComplete &= getJsonValue(top["dynamics"][F("Rise")], attackTime);
|
configComplete &= getJsonValue(top["dynamics"][F("Rise")], attackTime);
|
||||||
configComplete &= getJsonValue(top["dynamics"][F("Fall")], decayTime);
|
configComplete &= getJsonValue(top["dynamics"][F("Fall")], decayTime);
|
||||||
|
|
||||||
|
configComplete &= getJsonValue(top["Frequency"][F("Scale")], FFTScalingMode);
|
||||||
|
|
||||||
configComplete &= getJsonValue(top["sync"][F("port")], audioSyncPort);
|
configComplete &= getJsonValue(top["sync"][F("port")], audioSyncPort);
|
||||||
configComplete &= getJsonValue(top["sync"][F("mode")], audioSyncEnabled);
|
configComplete &= getJsonValue(top["sync"][F("mode")], audioSyncEnabled);
|
||||||
|
|
||||||
@ -1443,11 +1487,15 @@ class AudioReactive : public Usermod {
|
|||||||
oappend(SET_F("dd=addDropdown('AudioReactive','dynamics:Limiter');"));
|
oappend(SET_F("dd=addDropdown('AudioReactive','dynamics:Limiter');"));
|
||||||
oappend(SET_F("addOption(dd,'Off',0);"));
|
oappend(SET_F("addOption(dd,'Off',0);"));
|
||||||
oappend(SET_F("addOption(dd,'On',1);"));
|
oappend(SET_F("addOption(dd,'On',1);"));
|
||||||
oappend(SET_F("addInfo('AudioReactive:dynamics:Limiter',0,' Limiter On ');")); // 0 is field type, 1 is actual field
|
oappend(SET_F("addInfo('AudioReactive:dynamics:Limiter',0,' On ');")); // 0 is field type, 1 is actual field
|
||||||
//oappend(SET_F("addInfo('AudioReactive:dynamics:Rise',0,'min. ');"));
|
oappend(SET_F("addInfo('AudioReactive:dynamics:Rise',1,'ms <i>(♪ effects only)</i>');"));
|
||||||
oappend(SET_F("addInfo('AudioReactive:dynamics:Rise',1,' ms <br /><i>(volume reactive FX only)</i>');"));
|
oappend(SET_F("addInfo('AudioReactive:dynamics:Fall',1,'ms <i>(♪ effects only)</i>');"));
|
||||||
//oappend(SET_F("addInfo('AudioReactive:dynamics:Fall',0,'min. ');"));
|
|
||||||
oappend(SET_F("addInfo('AudioReactive:dynamics:Fall',1,' ms <br /><i>(volume reactive FX only)</i>');"));
|
oappend(SET_F("dd=addDropdown('AudioReactive','Frequency:Scale');"));
|
||||||
|
oappend(SET_F("addOption(dd,'None',0);"));
|
||||||
|
oappend(SET_F("addOption(dd,'Linear (Amplitude)',2);"));
|
||||||
|
oappend(SET_F("addOption(dd,'Square Root (Energy)',3);"));
|
||||||
|
oappend(SET_F("addOption(dd,'Logarithmic (Loudness)',1);"));
|
||||||
|
|
||||||
oappend(SET_F("dd=addDropdown('AudioReactive','sync:mode');"));
|
oappend(SET_F("dd=addDropdown('AudioReactive','sync:mode');"));
|
||||||
oappend(SET_F("addOption(dd,'Off',0);"));
|
oappend(SET_F("addOption(dd,'Off',0);"));
|
||||||
|
@ -75,7 +75,7 @@ int8_t tristate_square8(uint8_t x, uint8_t pulsewidth, uint8_t attdec) {
|
|||||||
*/
|
*/
|
||||||
uint16_t mode_static(void) {
|
uint16_t mode_static(void) {
|
||||||
SEGMENT.fill(SEGCOLOR(0));
|
SEGMENT.fill(SEGCOLOR(0));
|
||||||
return /*(SEGMENT.getOption(SEG_OPTION_TRANSITIONAL)) ? FRAMETIME :*/ 350; //update faster if in transition
|
return 350;
|
||||||
}
|
}
|
||||||
static const char _data_FX_MODE_STATIC[] PROGMEM = "Solid";
|
static const char _data_FX_MODE_STATIC[] PROGMEM = "Solid";
|
||||||
|
|
||||||
@ -2842,12 +2842,13 @@ uint16_t mode_bouncing_balls(void) {
|
|||||||
|
|
||||||
for (size_t i = 0; i < numBalls; i++) {
|
for (size_t i = 0; i < numBalls; i++) {
|
||||||
float timeSinceLastBounce = (time - balls[i].lastBounceTime)/((255-SEGMENT.speed)*8/256 +1);
|
float timeSinceLastBounce = (time - balls[i].lastBounceTime)/((255-SEGMENT.speed)*8/256 +1);
|
||||||
balls[i].height = 0.5 * gravity * pow(timeSinceLastBounce/1000 , 2.0) + balls[i].impactVelocity * timeSinceLastBounce/1000;
|
float timeSec = timeSinceLastBounce/1000.0f;
|
||||||
|
balls[i].height = 0.5 * gravity * (timeSec * timeSec) + balls[i].impactVelocity * timeSec; // avoid use pow(x, 2) - its extremely slow !
|
||||||
|
|
||||||
if (balls[i].height < 0) { //start bounce
|
if (balls[i].height < 0) { //start bounce
|
||||||
balls[i].height = 0;
|
balls[i].height = 0;
|
||||||
//damping for better effect using multiple balls
|
//damping for better effect using multiple balls
|
||||||
float dampening = 0.90 - float(i)/pow(numBalls,2);
|
float dampening = 0.90 - float(i)/(float(numBalls) * float(numBalls)); // avoid use pow(x, 2) - its extremely slow !
|
||||||
balls[i].impactVelocity = dampening * balls[i].impactVelocity;
|
balls[i].impactVelocity = dampening * balls[i].impactVelocity;
|
||||||
balls[i].lastBounceTime = time;
|
balls[i].lastBounceTime = time;
|
||||||
|
|
||||||
@ -2863,7 +2864,7 @@ uint16_t mode_bouncing_balls(void) {
|
|||||||
color = SEGCOLOR(i % NUM_COLORS);
|
color = SEGCOLOR(i % NUM_COLORS);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t pos = round(balls[i].height * (SEGLEN - 1));
|
uint16_t pos = roundf(balls[i].height * (SEGLEN - 1));
|
||||||
SEGMENT.setPixelColor(pos, color);
|
SEGMENT.setPixelColor(pos, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3986,7 +3987,7 @@ uint16_t mode_flow(void)
|
|||||||
{
|
{
|
||||||
uint8_t colorIndex = (i * 255 / zoneLen) - counter;
|
uint8_t colorIndex = (i * 255 / zoneLen) - counter;
|
||||||
uint16_t led = (z & 0x01) ? i : (zoneLen -1) -i;
|
uint16_t led = (z & 0x01) ? i : (zoneLen -1) -i;
|
||||||
if (SEGMENT.getOption(SEG_OPTION_REVERSED)) led = (zoneLen -1) -led;
|
if (SEGMENT.reverse) led = (zoneLen -1) -led;
|
||||||
SEGMENT.setPixelColor(pos + led, SEGMENT.color_from_palette(colorIndex, false, true, 255));
|
SEGMENT.setPixelColor(pos + led, SEGMENT.color_from_palette(colorIndex, false, true, 255));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4927,7 +4928,7 @@ uint16_t mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired by https:
|
|||||||
SEGENV.aux1 = SEGENV.aux0;
|
SEGENV.aux1 = SEGENV.aux0;
|
||||||
SEGENV.aux0 = crc;
|
SEGENV.aux0 = crc;
|
||||||
|
|
||||||
return (SEGMENT.getOption(SEG_OPTION_TRANSITIONAL)) ? FRAMETIME : FRAMETIME_FIXED * (128-(SEGMENT.speed>>1)); // update only when appropriate time passes (in 42 FPS slots)
|
return FRAMETIME_FIXED * (128-(SEGMENT.speed>>1)); // update only when appropriate time passes (in 42 FPS slots)
|
||||||
} // mode_2Dgameoflife()
|
} // mode_2Dgameoflife()
|
||||||
static const char _data_FX_MODE_2DGAMEOFLIFE[] PROGMEM = "Game Of Life@!,;!,!;!;2d";
|
static const char _data_FX_MODE_2DGAMEOFLIFE[] PROGMEM = "Game Of Life@!,;!,!;!;2d";
|
||||||
|
|
||||||
@ -5937,7 +5938,7 @@ static const char _data_FX_MODE_2DDRIFTROSE[] PROGMEM = "Drift Rose@Fade,Blur;;;
|
|||||||
|
|
||||||
uint8_t *binNum = (uint8_t*)&SEGENV.aux1, *maxVol = (uint8_t*)(&SEGENV.aux1+1); // just in case assignment
|
uint8_t *binNum = (uint8_t*)&SEGENV.aux1, *maxVol = (uint8_t*)(&SEGENV.aux1+1); // just in case assignment
|
||||||
bool samplePeak = false;
|
bool samplePeak = false;
|
||||||
float FFT_MajorPeak = 0.0;
|
float FFT_MajorPeak = 1.0;
|
||||||
uint8_t *fftResult = nullptr;
|
uint8_t *fftResult = nullptr;
|
||||||
float *fftBin = nullptr;
|
float *fftBin = nullptr;
|
||||||
um_data_t *um_data;
|
um_data_t *um_data;
|
||||||
@ -5958,6 +5959,21 @@ static const char _data_FX_MODE_2DDRIFTROSE[] PROGMEM = "Drift Rose@Fade,Blur;;;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// a few constants needed for AudioReactive effects
|
||||||
|
|
||||||
|
// for 22Khz sampling
|
||||||
|
#define MAX_FREQUENCY 11025 // sample frequency / 2 (as per Nyquist criterion)
|
||||||
|
#define MAX_FREQ_LOG10 4.04238f // log10(MAX_FREQUENCY)
|
||||||
|
|
||||||
|
// for 20Khz sampling
|
||||||
|
//#define MAX_FREQUENCY 10240
|
||||||
|
//#define MAX_FREQ_LOG10 4.0103f
|
||||||
|
|
||||||
|
// for 10Khz sampling
|
||||||
|
//#define MAX_FREQUENCY 5120
|
||||||
|
//#define MAX_FREQ_LOG10 3.71f
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
// * Ripple Peak //
|
// * Ripple Peak //
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
@ -6006,7 +6022,9 @@ uint16_t mode_ripplepeak(void) { // * Ripple peak. By Andrew Tuli
|
|||||||
case 255: // Initialize ripple variables.
|
case 255: // Initialize ripple variables.
|
||||||
ripples[i].pos = random16(SEGLEN);
|
ripples[i].pos = random16(SEGLEN);
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
|
if (FFT_MajorPeak > 1) // log10(0) is "forbidden" (throws exception)
|
||||||
ripples[i].color = (int)(log10f(FFT_MajorPeak)*128);
|
ripples[i].color = (int)(log10f(FFT_MajorPeak)*128);
|
||||||
|
else ripples[i].color = 0;
|
||||||
#else
|
#else
|
||||||
ripples[i].color = random8();
|
ripples[i].color = random8();
|
||||||
#endif
|
#endif
|
||||||
@ -6707,7 +6725,7 @@ static const char _data_FX_MODE_DJLIGHT[] PROGMEM = "DJ Light@Speed;;;mp12=2,ssi
|
|||||||
////////////////////
|
////////////////////
|
||||||
uint16_t mode_freqmap(void) { // Map FFT_MajorPeak to SEGLEN. Would be better if a higher framerate.
|
uint16_t mode_freqmap(void) { // Map FFT_MajorPeak to SEGLEN. Would be better if a higher framerate.
|
||||||
// Start frequency = 60 Hz and log10(60) = 1.78
|
// Start frequency = 60 Hz and log10(60) = 1.78
|
||||||
// End frequency = 5120 Hz and lo10(5120) = 3.71
|
// End frequency = MAX_FREQUENCY in Hz and lo10(MAX_FREQUENCY) = MAX_FREQ_LOG10
|
||||||
|
|
||||||
um_data_t *um_data;
|
um_data_t *um_data;
|
||||||
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
|
if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) {
|
||||||
@ -6716,16 +6734,17 @@ uint16_t mode_freqmap(void) { // Map FFT_MajorPeak to SEGLEN.
|
|||||||
}
|
}
|
||||||
float FFT_MajorPeak = *(float*) um_data->u_data[4];
|
float FFT_MajorPeak = *(float*) um_data->u_data[4];
|
||||||
float my_magnitude = *(float*) um_data->u_data[5] / 4.0f;
|
float my_magnitude = *(float*) um_data->u_data[5] / 4.0f;
|
||||||
|
if (FFT_MajorPeak < 1) FFT_MajorPeak = 1; // log10(0) is "forbidden" (throws exception)
|
||||||
|
|
||||||
SEGMENT.fade_out(SEGMENT.speed);
|
SEGMENT.fade_out(SEGMENT.speed);
|
||||||
|
|
||||||
// int locn = (log10f((float)FFT_MajorPeak) - 1.78f) * (float)SEGLEN/(3.71f-1.78f); // log10 frequency range is from 1.78 to 3.71. Let's scale to SEGLEN.
|
int locn = (log10f((float)FFT_MajorPeak) - 1.78f) * (float)SEGLEN/(MAX_FREQ_LOG10 - 1.78f); // log10 frequency range is from 1.78 to 3.71. Let's scale to SEGLEN.
|
||||||
int locn = (log10f((float)FFT_MajorPeak) - 1.78f) * (float)SEGLEN/(4.0102f-1.78f); // log10 frequency range is from 1.78 to 3.71. Let's scale to SEGLEN.
|
|
||||||
if (locn < 1) locn = 0; // avoid underflow
|
if (locn < 1) locn = 0; // avoid underflow
|
||||||
|
|
||||||
if (locn >=SEGLEN) locn = SEGLEN-1;
|
if (locn >=SEGLEN) locn = SEGLEN-1;
|
||||||
//uint16_t pixCol = (log10f(FFT_MajorPeak) - 1.78f) * 255.0f/(3.71f-1.78f); // Scale log10 of frequency values to the 255 colour index.
|
uint16_t pixCol = (log10f(FFT_MajorPeak) - 1.78f) * 255.0f/(MAX_FREQ_LOG10 - 1.78f); // Scale log10 of frequency values to the 255 colour index.
|
||||||
uint16_t pixCol = (log10f(FFT_MajorPeak) - 1.78f) * 255.0f/(4.0102f-1.78f); // Scale log10 of frequency values to the 255 colour index.
|
if (FFT_MajorPeak < 61.0f) pixCol = 0; // handle underflow
|
||||||
|
|
||||||
uint16_t bright = (int)my_magnitude;
|
uint16_t bright = (int)my_magnitude;
|
||||||
|
|
||||||
SEGMENT.setPixelColor(locn, color_blend(SEGCOLOR(1), SEGMENT.color_from_palette(SEGMENT.intensity+pixCol, false, PALETTE_SOLID_WRAP, 0), bright));
|
SEGMENT.setPixelColor(locn, color_blend(SEGCOLOR(1), SEGMENT.color_from_palette(SEGMENT.intensity+pixCol, false, PALETTE_SOLID_WRAP, 0), bright));
|
||||||
@ -6764,8 +6783,7 @@ uint16_t mode_freqmatrix(void) { // Freqmatrix. By Andreas Plesch
|
|||||||
|
|
||||||
CRGB color = CRGB::Black;
|
CRGB color = CRGB::Black;
|
||||||
|
|
||||||
//if (FFT_MajorPeak > 5120) FFT_MajorPeak = 0;
|
if (FFT_MajorPeak > MAX_FREQUENCY) FFT_MajorPeak = 1;
|
||||||
if (FFT_MajorPeak > 10240) FFT_MajorPeak = 0;
|
|
||||||
// MajorPeak holds the freq. value which is most abundant in the last sample.
|
// MajorPeak holds the freq. value which is most abundant in the last sample.
|
||||||
// With our sampling rate of 10240Hz we have a usable freq range from roughtly 80Hz to 10240/2 Hz
|
// With our sampling rate of 10240Hz we have a usable freq range from roughtly 80Hz to 10240/2 Hz
|
||||||
// we will treat everything with less than 65Hz as 0
|
// we will treat everything with less than 65Hz as 0
|
||||||
@ -6773,9 +6791,9 @@ uint16_t mode_freqmatrix(void) { // Freqmatrix. By Andreas Plesch
|
|||||||
if (FFT_MajorPeak < 80) {
|
if (FFT_MajorPeak < 80) {
|
||||||
color = CRGB::Black;
|
color = CRGB::Black;
|
||||||
} else {
|
} else {
|
||||||
int upperLimit = 20 * SEGMENT.custom2;
|
int upperLimit = 80 + 42 * SEGMENT.custom2;
|
||||||
int lowerLimit = 2 * SEGMENT.custom1;
|
int lowerLimit = 80 + 3 * SEGMENT.custom1;
|
||||||
int i = lowerLimit!=upperLimit ? map(FFT_MajorPeak, lowerLimit, upperLimit, 0, 255) : FFT_MajorPeak;
|
uint8_t i = lowerLimit!=upperLimit ? map(FFT_MajorPeak, lowerLimit, upperLimit, 0, 255) : FFT_MajorPeak; // may under/overflow - so we enforce uint8_t
|
||||||
uint16_t b = 255 * intensity;
|
uint16_t b = 255 * intensity;
|
||||||
if (b > 255) b = 255;
|
if (b > 255) b = 255;
|
||||||
color = CHSV(i, 240, (uint8_t)b); // implicit conversion to RGB supplied by FastLED
|
color = CHSV(i, 240, (uint8_t)b); // implicit conversion to RGB supplied by FastLED
|
||||||
@ -6806,14 +6824,15 @@ uint16_t mode_freqpixels(void) { // Freqpixel. By Andrew Tuline.
|
|||||||
}
|
}
|
||||||
float FFT_MajorPeak = *(float*) um_data->u_data[4];
|
float FFT_MajorPeak = *(float*) um_data->u_data[4];
|
||||||
float my_magnitude = *(float*) um_data->u_data[5] / 16.0f;
|
float my_magnitude = *(float*) um_data->u_data[5] / 16.0f;
|
||||||
|
if (FFT_MajorPeak < 1) FFT_MajorPeak = 1; // log10(0) is "forbidden" (throws exception)
|
||||||
|
|
||||||
uint16_t fadeRate = 2*SEGMENT.speed - SEGMENT.speed*SEGMENT.speed/255; // Get to 255 as quick as you can.
|
uint16_t fadeRate = 2*SEGMENT.speed - SEGMENT.speed*SEGMENT.speed/255; // Get to 255 as quick as you can.
|
||||||
SEGMENT.fade_out(fadeRate);
|
SEGMENT.fade_out(fadeRate);
|
||||||
|
|
||||||
for (int i=0; i < SEGMENT.intensity/32+1; i++) {
|
for (int i=0; i < SEGMENT.intensity/32+1; i++) {
|
||||||
uint16_t locn = random16(0,SEGLEN);
|
uint16_t locn = random16(0,SEGLEN);
|
||||||
//uint8_t pixCol = (log10f(FFT_MajorPeak) - 1.78) * 255.0/(3.71-1.78); // Scale log10 of frequency values to the 255 colour index.
|
uint8_t pixCol = (log10f(FFT_MajorPeak) - 1.78f) * 255.0f/(MAX_FREQ_LOG10 - 1.78f); // Scale log10 of frequency values to the 255 colour index.
|
||||||
uint8_t pixCol = (log10f(FFT_MajorPeak) - 1.78f) * 255.0f/(4.0102f-1.78f); // Scale log10 of frequency values to the 255 colour index.
|
if (FFT_MajorPeak < 61.0f) pixCol = 0; // handle underflow
|
||||||
SEGMENT.setPixelColor(locn, color_blend(SEGCOLOR(1), SEGMENT.color_from_palette(SEGMENT.intensity+pixCol, false, PALETTE_SOLID_WRAP, 0), (int)my_magnitude));
|
SEGMENT.setPixelColor(locn, color_blend(SEGCOLOR(1), SEGMENT.color_from_palette(SEGMENT.intensity+pixCol, false, PALETTE_SOLID_WRAP, 0), (int)my_magnitude));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6863,8 +6882,7 @@ uint16_t mode_freqwave(void) { // Freqwave. By Andreas Pleschun
|
|||||||
|
|
||||||
CRGB color = 0;
|
CRGB color = 0;
|
||||||
|
|
||||||
//if (FFT_MajorPeak > 5120) FFT_MajorPeak = 0.0f;
|
if (FFT_MajorPeak > MAX_FREQUENCY) FFT_MajorPeak = 1.0f;
|
||||||
if (FFT_MajorPeak > 10240) FFT_MajorPeak = 0.0f;
|
|
||||||
// MajorPeak holds the freq. value which is most abundant in the last sample.
|
// MajorPeak holds the freq. value which is most abundant in the last sample.
|
||||||
// With our sampling rate of 10240Hz we have a usable freq range from roughtly 80Hz to 10240/2 Hz
|
// With our sampling rate of 10240Hz we have a usable freq range from roughtly 80Hz to 10240/2 Hz
|
||||||
// we will treat everything with less than 65Hz as 0
|
// we will treat everything with less than 65Hz as 0
|
||||||
@ -6872,9 +6890,9 @@ uint16_t mode_freqwave(void) { // Freqwave. By Andreas Pleschun
|
|||||||
if (FFT_MajorPeak < 80) {
|
if (FFT_MajorPeak < 80) {
|
||||||
color = CRGB::Black;
|
color = CRGB::Black;
|
||||||
} else {
|
} else {
|
||||||
int upperLimit = 20 * SEGMENT.custom2;
|
int upperLimit = 80 + 42 * SEGMENT.custom2;
|
||||||
int lowerLimit = 2 * SEGMENT.custom1;
|
int lowerLimit = 80 + 3 * SEGMENT.custom1;
|
||||||
int i = lowerLimit!=upperLimit ? map(FFT_MajorPeak, lowerLimit, upperLimit, 0, 255) : FFT_MajorPeak;
|
uint8_t i = lowerLimit!=upperLimit ? map(FFT_MajorPeak, lowerLimit, upperLimit, 0, 255) : FFT_MajorPeak; // may under/overflow - so we enforce uint8_t
|
||||||
uint16_t b = 255.0 * intensity;
|
uint16_t b = 255.0 * intensity;
|
||||||
if (b > 255) b=255;
|
if (b > 255) b=255;
|
||||||
color = CHSV(i, 240, (uint8_t)b); // implicit conversion to RGB supplied by FastLED
|
color = CHSV(i, 240, (uint8_t)b); // implicit conversion to RGB supplied by FastLED
|
||||||
@ -6908,8 +6926,9 @@ uint16_t mode_gravfreq(void) { // Gravfreq. By Andrew Tuline.
|
|||||||
}
|
}
|
||||||
float FFT_MajorPeak = *(float*) um_data->u_data[4];
|
float FFT_MajorPeak = *(float*) um_data->u_data[4];
|
||||||
float volumeSmth = *(float*) um_data->u_data[0];
|
float volumeSmth = *(float*) um_data->u_data[0];
|
||||||
|
if (FFT_MajorPeak < 1) FFT_MajorPeak = 1; // log10(0) is "forbidden" (throws exception)
|
||||||
|
|
||||||
SEGMENT.fade_out(240);
|
SEGMENT.fade_out(250);
|
||||||
|
|
||||||
float segmentSampleAvg = volumeSmth * (float)SEGMENT.intensity / 255.0;
|
float segmentSampleAvg = volumeSmth * (float)SEGMENT.intensity / 255.0;
|
||||||
segmentSampleAvg *= 0.125; // divide by 8, to compensate for later "sensitivty" upscaling
|
segmentSampleAvg *= 0.125; // divide by 8, to compensate for later "sensitivty" upscaling
|
||||||
@ -6921,7 +6940,7 @@ uint16_t mode_gravfreq(void) { // Gravfreq. By Andrew Tuline.
|
|||||||
for (int i=0; i<tempsamp; i++) {
|
for (int i=0; i<tempsamp; i++) {
|
||||||
|
|
||||||
//uint8_t index = (log10((int)FFT_MajorPeak) - (3.71-1.78)) * 255; //int? shouldn't it be floor() or similar
|
//uint8_t index = (log10((int)FFT_MajorPeak) - (3.71-1.78)) * 255; //int? shouldn't it be floor() or similar
|
||||||
uint8_t index = (log10f(FFT_MajorPeak) - (4.0102f-1.78f)) * 255; //int? shouldn't it be floor() or similar
|
uint8_t index = (log10f(FFT_MajorPeak) - (MAX_FREQ_LOG10 - 1.78f)) * 255; //int? shouldn't it be floor() or similar
|
||||||
|
|
||||||
SEGMENT.setPixelColor(i+SEGLEN/2, SEGMENT.color_from_palette(index, false, PALETTE_SOLID_WRAP, 0));
|
SEGMENT.setPixelColor(i+SEGLEN/2, SEGMENT.color_from_palette(index, false, PALETTE_SOLID_WRAP, 0));
|
||||||
SEGMENT.setPixelColor(SEGLEN/2-i-1, SEGMENT.color_from_palette(index, false, PALETTE_SOLID_WRAP, 0));
|
SEGMENT.setPixelColor(SEGLEN/2-i-1, SEGMENT.color_from_palette(index, false, PALETTE_SOLID_WRAP, 0));
|
||||||
@ -6997,6 +7016,7 @@ uint16_t mode_rocktaves(void) { // Rocktaves. Same note from eac
|
|||||||
frTemp = fabs(frTemp * 2.1); // Fudge factors to compress octave range starting at 0 and going to 255;
|
frTemp = fabs(frTemp * 2.1); // Fudge factors to compress octave range starting at 0 and going to 255;
|
||||||
|
|
||||||
uint16_t i = map(beatsin8(8+octCount*4, 0, 255, 0, octCount*8), 0, 255, 0, SEGLEN-1);
|
uint16_t i = map(beatsin8(8+octCount*4, 0, 255, 0, octCount*8), 0, 255, 0, SEGLEN-1);
|
||||||
|
i = constrain(i, 0, SEGLEN-1);
|
||||||
SEGMENT.addPixelColor(i, color_blend(SEGCOLOR(1), SEGMENT.color_from_palette((uint8_t)frTemp, false, PALETTE_SOLID_WRAP, 0), volTemp));
|
SEGMENT.addPixelColor(i, color_blend(SEGCOLOR(1), SEGMENT.color_from_palette((uint8_t)frTemp, false, PALETTE_SOLID_WRAP, 0), volTemp));
|
||||||
|
|
||||||
return FRAMETIME;
|
return FRAMETIME;
|
||||||
@ -7022,6 +7042,8 @@ uint16_t mode_waterfall(void) { // Waterfall. By: Andrew Tulin
|
|||||||
uint8_t *binNum = (uint8_t*)um_data->u_data[7];
|
uint8_t *binNum = (uint8_t*)um_data->u_data[7];
|
||||||
float my_magnitude = *(float*) um_data->u_data[5] / 8.0f;
|
float my_magnitude = *(float*) um_data->u_data[5] / 8.0f;
|
||||||
|
|
||||||
|
if (FFT_MajorPeak < 1) FFT_MajorPeak = 1; // log10(0) is "forbidden" (throws exception)
|
||||||
|
|
||||||
if (SEGENV.call == 0) {
|
if (SEGENV.call == 0) {
|
||||||
SEGMENT.setUpLeds();
|
SEGMENT.setUpLeds();
|
||||||
SEGMENT.fill(BLACK);
|
SEGMENT.fill(BLACK);
|
||||||
@ -7037,7 +7059,9 @@ uint16_t mode_waterfall(void) { // Waterfall. By: Andrew Tulin
|
|||||||
if (SEGENV.aux0 != secondHand) { // Triggered millis timing.
|
if (SEGENV.aux0 != secondHand) { // Triggered millis timing.
|
||||||
SEGENV.aux0 = secondHand;
|
SEGENV.aux0 = secondHand;
|
||||||
|
|
||||||
uint8_t pixCol = (log10f((float)FFT_MajorPeak) - 2.26f) * 177; // log10 frequency range is from 2.26 to 3.7. Let's scale accordingly.
|
//uint8_t pixCol = (log10f((float)FFT_MajorPeak) - 2.26f) * 177; // 10Khz sampling - log10 frequency range is from 2.26 (182hz) to 3.7 (5012hz). Let's scale accordingly.
|
||||||
|
uint8_t pixCol = (log10f(FFT_MajorPeak) - 2.26f) * 150; // 22Khz sampling - log10 frequency range is from 2.26 (182hz) to 3.967 (9260hz). Let's scale accordingly.
|
||||||
|
if (FFT_MajorPeak < 182.0f) pixCol = 0; // handle underflow
|
||||||
|
|
||||||
if (samplePeak) {
|
if (samplePeak) {
|
||||||
SEGMENT.setPixelColor(SEGLEN-1, CHSV(92,92,92));
|
SEGMENT.setPixelColor(SEGLEN-1, CHSV(92,92,92));
|
||||||
@ -7085,6 +7109,7 @@ uint16_t mode_2DGEQ(void) { // By Will Tatam. Code reduction by Ewoud Wijma.
|
|||||||
|
|
||||||
for (int x=0; x < cols; x++) {
|
for (int x=0; x < cols; x++) {
|
||||||
uint8_t band = map(x, 0, cols-1, 0, NUM_BANDS - 1);
|
uint8_t band = map(x, 0, cols-1, 0, NUM_BANDS - 1);
|
||||||
|
band = constrain(band, 0, 15);
|
||||||
uint16_t colorIndex = band * 17;
|
uint16_t colorIndex = band * 17;
|
||||||
uint16_t barHeight = map(fftResult[band], 0, 255, 0, rows); // do not subtract -1 from rows here
|
uint16_t barHeight = map(fftResult[band], 0, 255, 0, rows); // do not subtract -1 from rows here
|
||||||
if (barHeight > previousBarHeight[x]) previousBarHeight[x] = barHeight; //drive the peak up
|
if (barHeight > previousBarHeight[x]) previousBarHeight[x] = barHeight; //drive the peak up
|
||||||
@ -7145,8 +7170,8 @@ uint16_t mode_2DFunkyPlank(void) { // Written by ??? Adapted by Wil
|
|||||||
// display values of
|
// display values of
|
||||||
int b = 0;
|
int b = 0;
|
||||||
for (int band = 0; band < NUMB_BANDS; band += bandInc, b++) {
|
for (int band = 0; band < NUMB_BANDS; band += bandInc, b++) {
|
||||||
int hue = fftResult[band];
|
int hue = fftResult[band % 16];
|
||||||
int v = map(fftResult[band], 0, 255, 10, 255);
|
int v = map(fftResult[band % 16], 0, 255, 10, 255);
|
||||||
for (int w = 0; w < barWidth; w++) {
|
for (int w = 0; w < barWidth; w++) {
|
||||||
int xpos = (barWidth * b) + w;
|
int xpos = (barWidth * b) + w;
|
||||||
SEGMENT.setPixelColorXY(xpos, 0, CHSV(hue, 255, v));
|
SEGMENT.setPixelColorXY(xpos, 0, CHSV(hue, 255, v));
|
||||||
@ -7261,6 +7286,7 @@ uint16_t mode_2DAkemi(void) {
|
|||||||
if (um_data && fftResult) {
|
if (um_data && fftResult) {
|
||||||
for (int x=0; x < cols/8; x++) {
|
for (int x=0; x < cols/8; x++) {
|
||||||
uint16_t band = x * cols/8;
|
uint16_t band = x * cols/8;
|
||||||
|
band = constrain(band, 0, 15);
|
||||||
uint16_t barHeight = map(fftResult[band], 0, 255, 0, 17*rows/32);
|
uint16_t barHeight = map(fftResult[band], 0, 255, 0, 17*rows/32);
|
||||||
CRGB color = SEGMENT.color_from_palette((band * 35), false, PALETTE_SOLID_WRAP, 0);
|
CRGB color = SEGMENT.color_from_palette((band * 35), false, PALETTE_SOLID_WRAP, 0);
|
||||||
|
|
||||||
|
@ -19,7 +19,6 @@ struct NodeStruct
|
|||||||
{
|
{
|
||||||
String nodeName;
|
String nodeName;
|
||||||
IPAddress ip;
|
IPAddress ip;
|
||||||
uint8_t unit;
|
|
||||||
uint8_t age;
|
uint8_t age;
|
||||||
uint8_t nodeType;
|
uint8_t nodeType;
|
||||||
uint32_t build;
|
uint32_t build;
|
||||||
|
@ -134,7 +134,12 @@ struct ColorOrderMap {
|
|||||||
//parent class of BusDigital, BusPwm, and BusNetwork
|
//parent class of BusDigital, BusPwm, and BusNetwork
|
||||||
class Bus {
|
class Bus {
|
||||||
public:
|
public:
|
||||||
Bus(uint8_t type, uint16_t start, uint8_t aw) {
|
Bus(uint8_t type, uint16_t start, uint8_t aw)
|
||||||
|
: _bri(255)
|
||||||
|
, _len(1)
|
||||||
|
, _valid(false)
|
||||||
|
, _needsRefresh(false)
|
||||||
|
{
|
||||||
_type = type;
|
_type = type;
|
||||||
_start = start;
|
_start = start;
|
||||||
_autoWhiteMode = Bus::isRgbw(_type) ? aw : RGBW_MODE_MANUAL_ONLY;
|
_autoWhiteMode = Bus::isRgbw(_type) ? aw : RGBW_MODE_MANUAL_ONLY;
|
||||||
@ -142,13 +147,13 @@ class Bus {
|
|||||||
|
|
||||||
virtual ~Bus() {} //throw the bus under the bus
|
virtual ~Bus() {} //throw the bus under the bus
|
||||||
|
|
||||||
virtual void show() {}
|
virtual void show() = 0;
|
||||||
virtual bool canShow() { return true; }
|
virtual bool canShow() { return true; }
|
||||||
virtual void setStatusPixel(uint32_t c) {}
|
virtual void setStatusPixel(uint32_t c) {}
|
||||||
virtual void setPixelColor(uint16_t pix, uint32_t c) {}
|
virtual void setPixelColor(uint16_t pix, uint32_t c) = 0;
|
||||||
virtual uint32_t getPixelColor(uint16_t pix) { return 0; }
|
virtual uint32_t getPixelColor(uint16_t pix) { return 0; }
|
||||||
virtual void setBrightness(uint8_t b) {}
|
virtual void setBrightness(uint8_t b) { _bri = b; };
|
||||||
virtual void cleanup() {}
|
virtual void cleanup() = 0;
|
||||||
virtual uint8_t getPins(uint8_t* pinArray) { return 0; }
|
virtual uint8_t getPins(uint8_t* pinArray) { return 0; }
|
||||||
virtual uint16_t getLength() { return _len; }
|
virtual uint16_t getLength() { return _len; }
|
||||||
virtual void setColorOrder() {}
|
virtual void setColorOrder() {}
|
||||||
@ -195,12 +200,12 @@ class Bus {
|
|||||||
bool reversed = false;
|
bool reversed = false;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
uint8_t _type = TYPE_NONE;
|
uint8_t _type;
|
||||||
uint8_t _bri = 255;
|
uint8_t _bri;
|
||||||
uint16_t _start = 0;
|
uint16_t _start;
|
||||||
uint16_t _len = 1;
|
uint16_t _len;
|
||||||
bool _valid = false;
|
bool _valid;
|
||||||
bool _needsRefresh = false;
|
bool _needsRefresh;
|
||||||
uint8_t _autoWhiteMode;
|
uint8_t _autoWhiteMode;
|
||||||
static uint8_t _gAWM; // definition in FX_fcn.cpp
|
static uint8_t _gAWM; // definition in FX_fcn.cpp
|
||||||
static int16_t _cct; // definition in FX_fcn.cpp
|
static int16_t _cct; // definition in FX_fcn.cpp
|
||||||
@ -262,7 +267,7 @@ class BusDigital : public Bus {
|
|||||||
if (_pins[0] == LED_BUILTIN || _pins[1] == LED_BUILTIN) PolyBus::begin(_busPtr, _iType, _pins);
|
if (_pins[0] == LED_BUILTIN || _pins[1] == LED_BUILTIN) PolyBus::begin(_busPtr, _iType, _pins);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
_bri = b;
|
Bus::setBrightness(b);
|
||||||
PolyBus::setBrightness(_busPtr, _iType, b);
|
PolyBus::setBrightness(_busPtr, _iType, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -448,10 +453,6 @@ class BusPwm : public Bus {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void setBrightness(uint8_t b) {
|
|
||||||
_bri = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t getPins(uint8_t* pinArray) {
|
uint8_t getPins(uint8_t* pinArray) {
|
||||||
if (!_valid) return 0;
|
if (!_valid) return 0;
|
||||||
uint8_t numPins = NUM_PWM_PINS(_type);
|
uint8_t numPins = NUM_PWM_PINS(_type);
|
||||||
@ -531,10 +532,6 @@ class BusOnOff : public Bus {
|
|||||||
digitalWrite(_pin, reversed ? !(bool)_data : (bool)_data);
|
digitalWrite(_pin, reversed ? !(bool)_data : (bool)_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void setBrightness(uint8_t b) {
|
|
||||||
_bri = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t getPins(uint8_t* pinArray) {
|
uint8_t getPins(uint8_t* pinArray) {
|
||||||
if (!_valid) return 0;
|
if (!_valid) return 0;
|
||||||
pinArray[0] = _pin;
|
pinArray[0] = _pin;
|
||||||
@ -623,10 +620,6 @@ class BusNetwork : public Bus {
|
|||||||
return !_broadcastLock;
|
return !_broadcastLock;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void setBrightness(uint8_t b) {
|
|
||||||
_bri = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t getPins(uint8_t* pinArray) {
|
uint8_t getPins(uint8_t* pinArray) {
|
||||||
for (uint8_t i = 0; i < 4; i++) {
|
for (uint8_t i = 0; i < 4; i++) {
|
||||||
pinArray[i] = _client[i];
|
pinArray[i] = _client[i];
|
||||||
@ -655,7 +648,6 @@ class BusNetwork : public Bus {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
IPAddress _client;
|
IPAddress _client;
|
||||||
uint8_t _bri = 255;
|
|
||||||
uint8_t _UDPtype;
|
uint8_t _UDPtype;
|
||||||
uint8_t _UDPchannels;
|
uint8_t _UDPchannels;
|
||||||
bool _rgbw;
|
bool _rgbw;
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
// Autogenerated from wled00/data/style.css, do not edit!!
|
// Autogenerated from wled00/data/style.css, do not edit!!
|
||||||
const uint16_t PAGE_settingsCss_length = 824;
|
const uint16_t PAGE_settingsCss_length = 824;
|
||||||
const uint8_t PAGE_settingsCss[] PROGMEM = {
|
const uint8_t PAGE_settingsCss[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x55, 0x5d, 0x8b, 0x9c, 0x30,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x55, 0x5d, 0x8b, 0x9c, 0x30,
|
||||||
0x14, 0xfd, 0x2b, 0x96, 0x61, 0x61, 0x0b, 0xa3, 0xa8, 0xa3, 0xb3, 0xd3, 0x48, 0xa1, 0xf4, 0xbd,
|
0x14, 0xfd, 0x2b, 0x96, 0x61, 0x61, 0x0b, 0xa3, 0xa8, 0xa3, 0xb3, 0xd3, 0x48, 0xa1, 0xf4, 0xbd,
|
||||||
0x6f, 0xa5, 0x14, 0xca, 0x3e, 0x44, 0x73, 0x1d, 0xc3, 0xe4, 0x43, 0x92, 0xd8, 0x75, 0x2a, 0xfe,
|
0x6f, 0xa5, 0x14, 0xca, 0x3e, 0x44, 0x73, 0x1d, 0xc3, 0xe4, 0x43, 0x92, 0xd8, 0x75, 0x2a, 0xfe,
|
||||||
0xf7, 0x26, 0x7e, 0xac, 0xce, 0xac, 0x6c, 0x5f, 0xca, 0xe0, 0xa0, 0xde, 0x98, 0x7b, 0xee, 0xb9,
|
0xf7, 0x26, 0x7e, 0xac, 0xce, 0xac, 0x6c, 0x5f, 0xca, 0xe0, 0xa0, 0xde, 0x98, 0x7b, 0xee, 0xb9,
|
||||||
@ -66,7 +66,7 @@ const uint8_t PAGE_settingsCss[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings.htm, do not edit!!
|
// Autogenerated from wled00/data/settings.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_length = 985;
|
const uint16_t PAGE_settings_length = 985;
|
||||||
const uint8_t PAGE_settings[] PROGMEM = {
|
const uint8_t PAGE_settings[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x56, 0x6d, 0x6f, 0xdb, 0x36,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x56, 0x6d, 0x6f, 0xdb, 0x36,
|
||||||
0x10, 0xfe, 0xee, 0x5f, 0xc1, 0xb0, 0x58, 0x23, 0xa1, 0xb2, 0xec, 0x38, 0xc3, 0xb0, 0xc9, 0x96,
|
0x10, 0xfe, 0xee, 0x5f, 0xc1, 0xb0, 0x58, 0x23, 0xa1, 0xb2, 0xec, 0x38, 0xc3, 0xb0, 0xc9, 0x96,
|
||||||
0x8b, 0x35, 0x2f, 0x9d, 0x87, 0x04, 0x0d, 0x90, 0xa4, 0xdd, 0x80, 0x7d, 0xa1, 0xc9, 0x93, 0xcc,
|
0x8b, 0x35, 0x2f, 0x9d, 0x87, 0x04, 0x0d, 0x90, 0xa4, 0xdd, 0x80, 0x7d, 0xa1, 0xc9, 0x93, 0xcc,
|
||||||
0x46, 0x22, 0x05, 0xf2, 0xe4, 0xc4, 0x73, 0xf3, 0xdf, 0x77, 0x94, 0x9d, 0xb7, 0x36, 0xd8, 0x8a,
|
0x46, 0x22, 0x05, 0xf2, 0xe4, 0xc4, 0x73, 0xf3, 0xdf, 0x77, 0x94, 0x9d, 0xb7, 0x36, 0xd8, 0x8a,
|
||||||
@ -134,7 +134,7 @@ const uint8_t PAGE_settings[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_wifi.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_wifi.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_wifi_length = 1557;
|
const uint16_t PAGE_settings_wifi_length = 1557;
|
||||||
const uint8_t PAGE_settings_wifi[] PROGMEM = {
|
const uint8_t PAGE_settings_wifi[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x57, 0xff, 0x4f, 0xdb, 0x38,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x57, 0xff, 0x4f, 0xdb, 0x38,
|
||||||
0x14, 0xff, 0x3d, 0x7f, 0x85, 0xf1, 0x49, 0x53, 0xa3, 0x85, 0x94, 0xb6, 0xc7, 0x6e, 0x62, 0x49,
|
0x14, 0xff, 0x3d, 0x7f, 0x85, 0xf1, 0x49, 0x53, 0xa3, 0x85, 0x94, 0xb6, 0xc7, 0x6e, 0x62, 0x49,
|
||||||
0x76, 0x5d, 0xdb, 0x0d, 0xee, 0x18, 0xeb, 0x29, 0x68, 0xe8, 0xa4, 0x93, 0x26, 0x37, 0x79, 0x6d,
|
0x76, 0x5d, 0xdb, 0x0d, 0xee, 0x18, 0xeb, 0x29, 0x68, 0xe8, 0xa4, 0x93, 0x26, 0x37, 0x79, 0x6d,
|
||||||
0x3d, 0x9c, 0x38, 0x17, 0x3b, 0x2d, 0x88, 0xf1, 0xbf, 0xdf, 0xb3, 0x93, 0x96, 0x16, 0xe8, 0x36,
|
0x3d, 0x9c, 0x38, 0x17, 0x3b, 0x2d, 0x88, 0xf1, 0xbf, 0xdf, 0xb3, 0x93, 0x96, 0x16, 0xe8, 0x36,
|
||||||
@ -236,9 +236,9 @@ const uint8_t PAGE_settings_wifi[] PROGMEM = {
|
|||||||
|
|
||||||
|
|
||||||
// Autogenerated from wled00/data/settings_leds.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_leds.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_leds_length = 7355;
|
const uint16_t PAGE_settings_leds_length = 7357;
|
||||||
const uint8_t PAGE_settings_leds[] PROGMEM = {
|
const uint8_t PAGE_settings_leds[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xdd, 0x3c, 0xed, 0x76, 0xe2, 0xc6,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xdd, 0x3c, 0xed, 0x76, 0xe2, 0xc6,
|
||||||
0x92, 0xff, 0x79, 0x8a, 0x76, 0x27, 0x71, 0xa4, 0x8b, 0x0c, 0x12, 0x1f, 0x8e, 0x07, 0x10, 0xac,
|
0x92, 0xff, 0x79, 0x8a, 0x76, 0x27, 0x71, 0xa4, 0x8b, 0x0c, 0x12, 0x1f, 0x8e, 0x07, 0x10, 0xac,
|
||||||
0xb1, 0x3d, 0x13, 0xdf, 0x6b, 0xc7, 0x3e, 0xc6, 0xc9, 0xdc, 0x3d, 0x93, 0x39, 0x19, 0x21, 0x1a,
|
0xb1, 0x3d, 0x13, 0xdf, 0x6b, 0xc7, 0x3e, 0xc6, 0xc9, 0xdc, 0x3d, 0x93, 0x39, 0x19, 0x21, 0x1a,
|
||||||
0xd0, 0x58, 0x48, 0xba, 0x92, 0xb0, 0x87, 0xb5, 0xd9, 0x67, 0xda, 0x67, 0xd8, 0x27, 0xdb, 0xaa,
|
0xd0, 0x58, 0x48, 0xba, 0x92, 0xb0, 0x87, 0xb5, 0xd9, 0x67, 0xda, 0x67, 0xd8, 0x27, 0xdb, 0xaa,
|
||||||
@ -475,236 +475,236 @@ const uint8_t PAGE_settings_leds[] PROGMEM = {
|
|||||||
0x0e, 0x77, 0xea, 0x34, 0x6a, 0x57, 0xc6, 0x18, 0xe4, 0xe9, 0x82, 0xb1, 0xa4, 0xf7, 0x28, 0x19,
|
0x0e, 0x77, 0xea, 0x34, 0x6a, 0x57, 0xc6, 0x18, 0xe4, 0xe9, 0x82, 0xb1, 0xa4, 0xf7, 0x28, 0x19,
|
||||||
0xdc, 0xd0, 0x79, 0xde, 0x53, 0x1f, 0xfb, 0xdf, 0x12, 0x26, 0xcf, 0x7e, 0x4b, 0xa6, 0x53, 0xee,
|
0xdc, 0xd0, 0x79, 0xde, 0x53, 0x1f, 0xfb, 0xdf, 0x12, 0x26, 0xcf, 0x7e, 0x4b, 0xa6, 0x53, 0xee,
|
||||||
0xf1, 0xa2, 0xbd, 0xe4, 0x47, 0x0f, 0x4e, 0x40, 0xa6, 0x4e, 0x08, 0xd5, 0x00, 0xe6, 0x9c, 0x7b,
|
0xf1, 0xa2, 0xbd, 0xe4, 0x47, 0x0f, 0x4e, 0x40, 0xa6, 0x4e, 0x08, 0xd5, 0x00, 0xe6, 0x9c, 0x7b,
|
||||||
0xed, 0x6b, 0x74, 0x55, 0x22, 0x0e, 0xa8, 0x83, 0xe8, 0x86, 0xf5, 0xec, 0x64, 0x65, 0xba, 0x97,
|
0xed, 0x6b, 0x74, 0x55, 0x22, 0x0e, 0xa8, 0x83, 0x68, 0xe6, 0x19, 0x37, 0xec, 0x68, 0x27, 0x53,
|
||||||
0x15, 0xc8, 0x41, 0xc8, 0x1d, 0x9b, 0x86, 0x2c, 0xca, 0xcc, 0x9c, 0xcb, 0x65, 0x2a, 0xc8, 0x96,
|
0xd3, 0xbd, 0x4c, 0x41, 0x36, 0x42, 0xee, 0xd8, 0x34, 0x64, 0x51, 0x66, 0xf0, 0x5c, 0x42, 0x53,
|
||||||
0x4f, 0xff, 0xee, 0xfd, 0xfe, 0xe9, 0x5b, 0x7b, 0x69, 0x9e, 0x2e, 0x63, 0xff, 0x08, 0xaa, 0x7f,
|
0xc1, 0x40, 0xb9, 0x20, 0xee, 0xde, 0xef, 0x17, 0x84, 0xb5, 0x97, 0xe6, 0xe9, 0x32, 0xf6, 0x8f,
|
||||||
0x7b, 0xe9, 0x5a, 0x31, 0x23, 0x4f, 0x98, 0xe1, 0xe0, 0x31, 0x4c, 0xa8, 0x5d, 0x5c, 0x32, 0x0d,
|
0x6c, 0xcb, 0xb5, 0x97, 0xae, 0x15, 0x33, 0xf2, 0x84, 0xb9, 0x0e, 0x1e, 0xc8, 0x84, 0x2a, 0xc6,
|
||||||
0xfd, 0x05, 0xc6, 0xe2, 0x8e, 0x58, 0xa7, 0x7c, 0x68, 0x38, 0xfd, 0x58, 0x16, 0x1a, 0xf4, 0x7d,
|
0x25, 0xd3, 0xd0, 0x5f, 0x60, 0x54, 0xee, 0x88, 0x15, 0xcb, 0x07, 0x89, 0xd3, 0x8f, 0x65, 0x41,
|
||||||
0x81, 0xc1, 0xe8, 0x0f, 0x43, 0x67, 0x36, 0x8f, 0x59, 0xb8, 0x03, 0xa0, 0xd1, 0x3f, 0xb5, 0x6d,
|
0x42, 0xdf, 0x17, 0x22, 0x8c, 0xfe, 0x30, 0x74, 0x66, 0xf3, 0x98, 0x85, 0x3b, 0x00, 0x1a, 0xfd,
|
||||||
0x3c, 0x90, 0xb6, 0x0b, 0x43, 0xb3, 0x7f, 0xbe, 0xb4, 0xdc, 0xed, 0xb8, 0x20, 0x9c, 0x69, 0x2a,
|
0x53, 0xdb, 0xc6, 0xa3, 0x69, 0xbb, 0x30, 0x34, 0xfb, 0xe7, 0x4b, 0xcb, 0xdd, 0x8e, 0x10, 0xc2,
|
||||||
0x00, 0xfe, 0xf7, 0x4b, 0xd7, 0x82, 0x0a, 0x2c, 0x62, 0x61, 0x7c, 0x3a, 0xf9, 0x6a, 0xd9, 0x50,
|
0xad, 0xa6, 0x02, 0xe0, 0x7f, 0xbf, 0x74, 0x2d, 0xa8, 0xc5, 0x22, 0x16, 0xc6, 0xa7, 0x93, 0xaf,
|
||||||
0x33, 0x60, 0x29, 0xa6, 0xd0, 0x31, 0x83, 0xea, 0x8f, 0x31, 0x6f, 0x42, 0x35, 0x5f, 0x5d, 0xcb,
|
0x96, 0x0d, 0xd5, 0x03, 0x16, 0x65, 0x0a, 0x1d, 0x33, 0xa8, 0x03, 0x19, 0xf3, 0x26, 0x54, 0xf3,
|
||||||
0xa2, 0x40, 0x89, 0x3f, 0x1d, 0x1d, 0x39, 0x9f, 0x6b, 0x21, 0x54, 0xe1, 0x8f, 0x4c, 0x51, 0x35,
|
0xd5, 0xb5, 0x2c, 0x0f, 0x94, 0xf8, 0xd3, 0xd1, 0x91, 0xf3, 0xb9, 0x16, 0x42, 0x3d, 0xfe, 0xc8,
|
||||||
0xf8, 0x26, 0xdb, 0x3e, 0xd5, 0xad, 0x62, 0xcd, 0xe9, 0x61, 0x41, 0x71, 0x64, 0x94, 0x37, 0x11,
|
0x14, 0x55, 0x83, 0x6f, 0xb2, 0x01, 0x54, 0xdd, 0x2a, 0xdb, 0x9c, 0x1e, 0x96, 0x16, 0x47, 0x46,
|
||||||
0x8e, 0xb6, 0xe1, 0xfb, 0xdb, 0xfd, 0x06, 0xef, 0xe5, 0x85, 0xef, 0x09, 0x17, 0x6a, 0x9e, 0xb3,
|
0x79, 0x3b, 0xe1, 0x68, 0x1b, 0xbe, 0xbf, 0xdd, 0x79, 0xf0, 0x5e, 0x5e, 0xf8, 0xee, 0x70, 0xa1,
|
||||||
0x9b, 0x6b, 0x05, 0x64, 0x08, 0x45, 0x0f, 0xdf, 0x02, 0x15, 0xa5, 0x88, 0xb3, 0xa7, 0xee, 0xb1,
|
0xfa, 0x39, 0xbb, 0xb9, 0x56, 0x40, 0x86, 0x50, 0xfe, 0xf0, 0xcd, 0x50, 0x51, 0x94, 0x38, 0x7b,
|
||||||
0xfd, 0xc5, 0x1f, 0xf0, 0x30, 0x5c, 0x01, 0xcd, 0x7c, 0xe5, 0x03, 0x35, 0x0f, 0xb6, 0xd8, 0x64,
|
0x2a, 0x20, 0xdb, 0x5f, 0xfc, 0x01, 0x0f, 0xc3, 0x15, 0xd0, 0xcc, 0xd7, 0x40, 0x50, 0xfd, 0x60,
|
||||||
0x91, 0x53, 0x28, 0x65, 0xb2, 0x21, 0x6f, 0x29, 0x68, 0x88, 0x88, 0xa7, 0xfb, 0x6c, 0xe2, 0xef,
|
0xb3, 0x4d, 0x96, 0x3b, 0x85, 0xa2, 0x26, 0x1b, 0xf2, 0x96, 0xd2, 0x86, 0x88, 0xc8, 0xba, 0xcf,
|
||||||
0xb9, 0x40, 0xfa, 0xed, 0x4d, 0x81, 0xf4, 0xb8, 0xdd, 0x6e, 0xb6, 0x73, 0x91, 0x94, 0xad, 0x37,
|
0x3a, 0xfe, 0x9e, 0x0b, 0xa9, 0xdf, 0xde, 0x14, 0x52, 0x8f, 0xdb, 0xed, 0x66, 0x3b, 0x17, 0x53,
|
||||||
0xec, 0x27, 0x17, 0x29, 0x4d, 0x4a, 0xd3, 0x50, 0xf9, 0x86, 0x00, 0xf8, 0xf7, 0xb3, 0x1c, 0x33,
|
0xd9, 0x7a, 0xc3, 0x7e, 0x72, 0x31, 0xd3, 0xa4, 0x34, 0x0d, 0x9a, 0x6f, 0x08, 0x85, 0x7f, 0x3f,
|
||||||
0xf6, 0xde, 0x60, 0xb8, 0xc9, 0x85, 0xb7, 0x2e, 0x50, 0xdd, 0xb4, 0x68, 0x69, 0x57, 0x7f, 0x2a,
|
0xcb, 0x31, 0x63, 0xef, 0x0d, 0x8b, 0x9b, 0x5c, 0x78, 0xeb, 0x02, 0xd5, 0x4d, 0x8b, 0x96, 0x76,
|
||||||
0xb7, 0xe4, 0x5c, 0xc8, 0xa4, 0x54, 0xf2, 0xf7, 0xff, 0x2f, 0xcf, 0x4c, 0xec, 0x8d, 0xbb, 0x08,
|
0xf5, 0xa7, 0xb2, 0x4c, 0xce, 0x85, 0x4c, 0x4f, 0x25, 0x7f, 0xff, 0xff, 0x32, 0xce, 0xc4, 0xde,
|
||||||
0x69, 0x79, 0x72, 0x97, 0x51, 0x68, 0x9a, 0xc3, 0x22, 0xde, 0x0c, 0xd9, 0x6b, 0x8a, 0x96, 0xb4,
|
0xb8, 0x8b, 0x90, 0x96, 0x27, 0xf7, 0x1b, 0x85, 0xa6, 0x39, 0x2c, 0xe2, 0x6d, 0x91, 0xbd, 0xa6,
|
||||||
0xb6, 0x6f, 0x3e, 0xad, 0x3a, 0x49, 0xe7, 0x35, 0xd6, 0xc6, 0xb1, 0x87, 0x46, 0x01, 0xba, 0x28,
|
0x68, 0x49, 0x6b, 0xfb, 0xe6, 0xd3, 0xaa, 0x93, 0xf4, 0x60, 0x63, 0x6d, 0x1c, 0x7b, 0x68, 0x14,
|
||||||
0xcf, 0x50, 0x64, 0xf6, 0x02, 0xa6, 0x8a, 0xaf, 0x76, 0x1c, 0xb6, 0x2c, 0x37, 0x12, 0xb0, 0xac,
|
0xa0, 0x8b, 0xf2, 0x34, 0x45, 0x66, 0x2f, 0x60, 0xaa, 0xf8, 0x6a, 0xc7, 0xb1, 0xcb, 0x72, 0x23,
|
||||||
0xf4, 0x0c, 0x9b, 0x7e, 0x60, 0xe2, 0x96, 0x99, 0xc2, 0x3e, 0x79, 0x47, 0x46, 0xce, 0xf2, 0x25,
|
0x01, 0xcb, 0x4a, 0x4f, 0xb3, 0xe9, 0x07, 0x26, 0x6e, 0x9e, 0x29, 0xec, 0x93, 0x77, 0x64, 0xe4,
|
||||||
0x49, 0x78, 0x28, 0x48, 0xaa, 0x79, 0x92, 0x11, 0x8b, 0xb9, 0x91, 0xaa, 0xcf, 0xe8, 0x34, 0x36,
|
0x2c, 0x5f, 0x92, 0x84, 0x87, 0x82, 0xa4, 0x9a, 0x27, 0x19, 0xb1, 0x98, 0x1b, 0xa9, 0xfa, 0x8c,
|
||||||
0x4e, 0x5c, 0x33, 0xb1, 0x81, 0x80, 0x27, 0x3a, 0x18, 0xf6, 0xf6, 0xde, 0xc4, 0x92, 0xca, 0x52,
|
0x4e, 0x63, 0xe3, 0xec, 0x35, 0x13, 0x5b, 0x09, 0x78, 0xb6, 0x83, 0x61, 0x97, 0xef, 0x4d, 0x2c,
|
||||||
0xd2, 0x5d, 0x49, 0xba, 0x70, 0x12, 0x55, 0x3c, 0x02, 0x82, 0xa9, 0x4c, 0xc1, 0x51, 0x6c, 0x1f,
|
0xa9, 0x2c, 0x25, 0xdd, 0x95, 0xa4, 0x0b, 0x67, 0x52, 0xc5, 0x23, 0x20, 0x98, 0xca, 0x14, 0x1c,
|
||||||
0x49, 0xea, 0x15, 0x79, 0x29, 0x77, 0x4d, 0x38, 0x1a, 0x88, 0x6d, 0x8f, 0xde, 0x76, 0x50, 0x05,
|
0xc5, 0xf6, 0xe1, 0xa4, 0x5e, 0x91, 0x97, 0x72, 0xd7, 0x84, 0xa3, 0x81, 0xd8, 0xf6, 0xe8, 0x6d,
|
||||||
0xbf, 0x34, 0x8c, 0x3d, 0x71, 0x14, 0x36, 0xf1, 0x48, 0x1c, 0x1b, 0xb0, 0x16, 0xe5, 0xbb, 0x5c,
|
0x07, 0x55, 0xf0, 0x4b, 0xc3, 0xd8, 0x13, 0x87, 0x62, 0x13, 0x8f, 0xc4, 0xb1, 0x01, 0x6b, 0x51,
|
||||||
0x9a, 0x65, 0xe2, 0x3e, 0x46, 0x75, 0xc4, 0x37, 0x23, 0x6a, 0x18, 0x3b, 0xce, 0xe6, 0x56, 0x78,
|
0xbe, 0xdf, 0xa5, 0x59, 0x26, 0xee, 0x68, 0x54, 0x47, 0x7c, 0x5b, 0xa2, 0x86, 0xb1, 0xe3, 0x6c,
|
||||||
0xe6, 0x4f, 0x98, 0x82, 0xed, 0x2a, 0x7d, 0xd0, 0x3a, 0xe9, 0xb4, 0xdb, 0x6a, 0x15, 0xe4, 0xe4,
|
0x6e, 0x85, 0x67, 0xfe, 0x84, 0x29, 0xd8, 0xb8, 0xd2, 0x07, 0xad, 0x93, 0x4e, 0xbb, 0xad, 0x56,
|
||||||
0x54, 0xcd, 0x2f, 0xc3, 0x65, 0x1c, 0xfb, 0xfc, 0x54, 0xdc, 0x5a, 0x1c, 0x26, 0x28, 0x37, 0x6c,
|
0x41, 0x4e, 0x4e, 0xd5, 0xfc, 0x32, 0x5c, 0xc6, 0xb1, 0xcf, 0xcf, 0xc7, 0xad, 0xc5, 0xb1, 0x82,
|
||||||
0x6e, 0xb4, 0x47, 0x89, 0xd5, 0x42, 0xb5, 0x2e, 0x4d, 0xe9, 0xfb, 0x67, 0x6b, 0xbd, 0x95, 0x7d,
|
0x72, 0xc3, 0xe6, 0x46, 0x7b, 0x94, 0x58, 0x2d, 0xd4, 0xed, 0xd2, 0x94, 0xbe, 0x7f, 0xb6, 0xd6,
|
||||||
0x24, 0xc6, 0xfe, 0x2d, 0x2a, 0x5a, 0x76, 0xff, 0x8b, 0x86, 0x24, 0x65, 0x9c, 0x28, 0x04, 0xb2,
|
0x5b, 0x79, 0x48, 0x62, 0xec, 0xdf, 0xa2, 0xa2, 0x65, 0xf7, 0xbf, 0x68, 0x48, 0x52, 0xc6, 0x89,
|
||||||
0xef, 0x9f, 0xe9, 0xf0, 0xe2, 0x4d, 0x5c, 0xa7, 0x68, 0xb6, 0x6c, 0x17, 0x26, 0xa1, 0x9b, 0x66,
|
0x42, 0x20, 0xfb, 0xfe, 0x99, 0x0e, 0x2f, 0xde, 0xc4, 0x75, 0x8a, 0x66, 0xcb, 0x76, 0x61, 0x12,
|
||||||
0x3c, 0xa0, 0x49, 0xff, 0x06, 0xcf, 0x45, 0xac, 0xfb, 0xe7, 0x72, 0xab, 0x20, 0x35, 0x9b, 0xd2,
|
0xba, 0x69, 0xc6, 0x03, 0x9a, 0x74, 0x72, 0xf0, 0x84, 0xc4, 0xba, 0x7f, 0x2e, 0x37, 0x0d, 0x52,
|
||||||
0xe1, 0x0d, 0x1c, 0xde, 0x28, 0x19, 0x7e, 0xbb, 0x8c, 0xe6, 0x63, 0x2e, 0xa4, 0xfd, 0x08, 0x9a,
|
0xb3, 0x29, 0x1d, 0xde, 0xc0, 0xe1, 0x8d, 0x92, 0xe1, 0xb7, 0xcb, 0x68, 0x3e, 0xe6, 0x42, 0xda,
|
||||||
0x88, 0xa0, 0xb9, 0x03, 0x01, 0x71, 0xe4, 0xce, 0xee, 0x7e, 0x1c, 0x2d, 0xc4, 0xd1, 0x2a, 0xc1,
|
0x8f, 0xa0, 0x89, 0x08, 0x9a, 0x3b, 0x10, 0x10, 0x47, 0xee, 0xf1, 0xee, 0xc7, 0xd1, 0x42, 0x1c,
|
||||||
0x31, 0xe2, 0x27, 0xc8, 0xf6, 0x0f, 0x6e, 0xe3, 0xe0, 0x76, 0x19, 0x03, 0x97, 0x77, 0x24, 0x62,
|
0xad, 0x12, 0x1c, 0x23, 0x7e, 0x96, 0x6c, 0xff, 0xe0, 0x36, 0x0e, 0x6e, 0x97, 0x31, 0x70, 0x79,
|
||||||
0x5e, 0xe4, 0x87, 0xfb, 0x11, 0x1c, 0x23, 0x82, 0xe3, 0x12, 0x04, 0xf7, 0xfe, 0xf2, 0x35, 0xe2,
|
0x47, 0x22, 0xe6, 0x45, 0x7e, 0xb8, 0x1f, 0xc1, 0x31, 0x22, 0x38, 0x2e, 0x41, 0x70, 0xef, 0x2f,
|
||||||
0x3f, 0xe1, 0xd8, 0x9f, 0x4a, 0xc6, 0x9e, 0x7a, 0x96, 0xeb, 0xcf, 0xf6, 0x0f, 0x3e, 0xc1, 0xc1,
|
0x5f, 0x23, 0xfe, 0x13, 0x8e, 0xfd, 0xa9, 0x64, 0xec, 0xa9, 0x67, 0xb9, 0xfe, 0x6c, 0xff, 0xe0,
|
||||||
0x27, 0x3b, 0x07, 0xef, 0x10, 0x1e, 0x4d, 0x9d, 0x1f, 0x15, 0x48, 0x79, 0x06, 0x2b, 0x43, 0x03,
|
0x13, 0x1c, 0x7c, 0xb2, 0x73, 0xf0, 0x0e, 0xe1, 0xd1, 0xd4, 0xf9, 0x51, 0x81, 0x94, 0xe7, 0xb2,
|
||||||
0x24, 0x30, 0x30, 0xdf, 0x0e, 0x09, 0x7c, 0xc7, 0x83, 0x54, 0xa7, 0xcb, 0x75, 0x94, 0x1f, 0xd9,
|
0x32, 0x34, 0x40, 0x02, 0x03, 0xf3, 0xed, 0x90, 0xc0, 0x77, 0x3c, 0x48, 0x75, 0xba, 0x5c, 0x47,
|
||||||
0xa0, 0x78, 0xaf, 0xe1, 0x47, 0xd4, 0xdb, 0x1f, 0xd5, 0x24, 0xaa, 0x1d, 0x7e, 0xf7, 0xad, 0xf1,
|
0xf9, 0xe1, 0x0d, 0x8a, 0x37, 0x1c, 0x7e, 0x44, 0xbd, 0xfd, 0x51, 0x4d, 0xa2, 0xda, 0xe1, 0x77,
|
||||||
0x93, 0xd1, 0xee, 0x26, 0xa9, 0x38, 0x38, 0x51, 0xb9, 0xb9, 0xb1, 0x69, 0x5e, 0xf9, 0x83, 0xe6,
|
0xdf, 0x1a, 0x3f, 0x19, 0xed, 0x6e, 0x92, 0x94, 0x83, 0x13, 0x95, 0xdb, 0x1c, 0x9b, 0xe6, 0x95,
|
||||||
0xf1, 0xcc, 0x1d, 0x39, 0xe8, 0x14, 0x94, 0xc2, 0x9d, 0x10, 0xa6, 0xbe, 0xbc, 0x28, 0xc5, 0x5b,
|
0x3f, 0x72, 0x1e, 0xcf, 0xdc, 0x91, 0x83, 0x4e, 0x41, 0x29, 0xdc, 0x0e, 0x61, 0xea, 0xcb, 0x8b,
|
||||||
0x21, 0x9b, 0x47, 0xcf, 0xd2, 0x1b, 0x06, 0xcf, 0xe8, 0xaa, 0x84, 0xeb, 0x3c, 0x30, 0x30, 0xe3,
|
0x52, 0xbc, 0x1f, 0xb2, 0x79, 0x08, 0x2d, 0xbd, 0x6b, 0xf0, 0x8c, 0xae, 0x4a, 0xb8, 0xce, 0x03,
|
||||||
0xe8, 0x42, 0x80, 0xdb, 0xdf, 0x60, 0x4d, 0x3c, 0xa7, 0x87, 0xbb, 0xe4, 0xdb, 0x1b, 0x5d, 0xdc,
|
0x03, 0x33, 0x8e, 0x2e, 0x04, 0xb8, 0xfd, 0xad, 0xd6, 0xc4, 0x73, 0x7a, 0xb8, 0x5f, 0xbe, 0xbd,
|
||||||
0x65, 0xaa, 0x7f, 0xa2, 0xbb, 0xec, 0x15, 0x9b, 0xc4, 0x07, 0x25, 0x9b, 0x67, 0x5e, 0x82, 0x0f,
|
0xe5, 0xc5, 0x5d, 0xa6, 0xfa, 0x27, 0xfa, 0xcc, 0x5e, 0xb1, 0x5d, 0x7c, 0x50, 0xb2, 0x8d, 0xe6,
|
||||||
0x1d, 0x35, 0x1e, 0x59, 0xcc, 0xd7, 0xd7, 0xde, 0x67, 0x6c, 0x0e, 0xcb, 0xdd, 0xaf, 0x48, 0xa7,
|
0x25, 0xf8, 0xd0, 0x51, 0xe3, 0xe1, 0xc5, 0x7c, 0xa5, 0xed, 0x7d, 0xc6, 0x36, 0xb1, 0xdc, 0x07,
|
||||||
0x00, 0xa4, 0x6f, 0x23, 0xc1, 0xdd, 0xac, 0xdd, 0x38, 0x74, 0x8e, 0x43, 0x48, 0x3c, 0x72, 0x72,
|
0x8b, 0x74, 0x0a, 0x40, 0xfa, 0x36, 0x12, 0xdc, 0xd7, 0xda, 0x8d, 0x43, 0xe7, 0x38, 0x84, 0xc4,
|
||||||
0x67, 0x1a, 0x99, 0x96, 0x08, 0x39, 0x13, 0xde, 0x32, 0xc0, 0x6b, 0x15, 0xef, 0x1d, 0x17, 0xef,
|
0x23, 0x27, 0x77, 0xba, 0x91, 0x69, 0x89, 0x90, 0x33, 0xe1, 0x2d, 0x03, 0xbc, 0x60, 0xf1, 0xde,
|
||||||
0xa1, 0xc8, 0xd3, 0x6a, 0x1e, 0x7b, 0x22, 0x7f, 0xbf, 0xbe, 0xfa, 0x39, 0x8e, 0x83, 0x3b, 0xc8,
|
0x71, 0xf1, 0x46, 0x8a, 0x3c, 0xb7, 0xe6, 0xb1, 0x27, 0xf2, 0xf7, 0xeb, 0xab, 0x9f, 0xe3, 0x38,
|
||||||
0x1e, 0x58, 0x14, 0x77, 0xbd, 0xdd, 0x77, 0x3d, 0x72, 0xf7, 0x13, 0xb2, 0xdb, 0x13, 0xf1, 0xdc,
|
0xb8, 0x83, 0xec, 0x81, 0x45, 0x71, 0xd7, 0xdb, 0x7d, 0xeb, 0x23, 0x77, 0x53, 0x21, 0xbb, 0x47,
|
||||||
0xc1, 0x53, 0x46, 0x51, 0xe0, 0x43, 0x8c, 0xbc, 0x67, 0xdf, 0x62, 0x8d, 0x3f, 0x01, 0x36, 0xe3,
|
0x11, 0xcf, 0x1d, 0x3c, 0x6f, 0x14, 0x05, 0x3e, 0xc4, 0xc8, 0x7b, 0xf6, 0x2d, 0xd6, 0xf8, 0x13,
|
||||||
0x65, 0x84, 0x87, 0x2a, 0x60, 0x92, 0x2a, 0xc4, 0xae, 0xdd, 0xf7, 0x40, 0x32, 0xbc, 0x2c, 0x8f,
|
0x60, 0x33, 0x5e, 0x46, 0x78, 0xbc, 0x02, 0x26, 0xa9, 0x42, 0xec, 0xda, 0x7d, 0x23, 0x24, 0xc3,
|
||||||
0x18, 0x4f, 0xf6, 0x5a, 0xf6, 0x83, 0x76, 0x90, 0x20, 0x10, 0xd7, 0x74, 0x6e, 0x6f, 0x60, 0x35,
|
0xcb, 0xf2, 0x88, 0xf1, 0x8c, 0xaf, 0x65, 0x3f, 0x68, 0x07, 0x09, 0x02, 0x71, 0x61, 0xe7, 0xf6,
|
||||||
0x35, 0x5a, 0x17, 0xd3, 0x91, 0x3b, 0x27, 0x31, 0x9f, 0xc9, 0x7b, 0x3f, 0x5c, 0xe0, 0x09, 0xb1,
|
0x06, 0x56, 0x53, 0xa3, 0x75, 0x31, 0x1d, 0xb9, 0x87, 0x12, 0xf3, 0x99, 0xbc, 0xf7, 0xc3, 0x05,
|
||||||
0xf4, 0x84, 0xa1, 0xbc, 0xc7, 0xa2, 0x50, 0x3c, 0x57, 0x2c, 0x0f, 0xba, 0xf2, 0x23, 0xc6, 0x78,
|
0x9e, 0x15, 0x4b, 0xcf, 0x1a, 0xca, 0x1b, 0x2d, 0x0a, 0xc5, 0x13, 0xc6, 0xf2, 0xc8, 0x2b, 0x3f,
|
||||||
0xb1, 0x24, 0x02, 0xf1, 0xe1, 0xdd, 0x12, 0xaf, 0x16, 0x21, 0x4c, 0xac, 0x6a, 0x25, 0x47, 0x90,
|
0x6c, 0x8c, 0x57, 0x4c, 0x22, 0x10, 0x1f, 0xde, 0x32, 0xf1, 0x6a, 0x11, 0xc2, 0xc4, 0xaa, 0x56,
|
||||||
0x0f, 0x36, 0x6e, 0xe9, 0x9c, 0x4d, 0x67, 0xa9, 0xf4, 0xb4, 0xb8, 0x4b, 0x93, 0x97, 0x14, 0xac,
|
0x72, 0x18, 0xf9, 0x60, 0xe3, 0xbe, 0xce, 0xd9, 0x74, 0x96, 0x4a, 0x4f, 0x8b, 0xbb, 0x34, 0x79,
|
||||||
0x10, 0x1c, 0x3f, 0xc4, 0x4d, 0x79, 0xa7, 0x08, 0xe5, 0x7c, 0xc7, 0x2c, 0x48, 0xa9, 0x06, 0x30,
|
0x49, 0xc1, 0x0a, 0xc1, 0xf1, 0x43, 0xdc, 0x94, 0xb7, 0x8b, 0x50, 0xce, 0x77, 0xcc, 0x82, 0x94,
|
||||||
0x13, 0x4e, 0x6f, 0xc0, 0x52, 0xba, 0x03, 0x05, 0x63, 0x79, 0xca, 0x85, 0x22, 0xf9, 0x4f, 0xc7,
|
0x6a, 0x00, 0x33, 0xe1, 0xf4, 0x06, 0x2c, 0xa5, 0x3b, 0x50, 0x30, 0x96, 0xa7, 0x5c, 0x28, 0x92,
|
||||||
0xe0, 0x49, 0x29, 0x24, 0x67, 0xe6, 0x45, 0x83, 0xa1, 0x19, 0x87, 0x81, 0x02, 0x80, 0x52, 0xa2,
|
0xff, 0x74, 0x0c, 0x9e, 0x99, 0x42, 0x72, 0x66, 0x5e, 0x34, 0x18, 0x9a, 0x71, 0x18, 0x28, 0x00,
|
||||||
0xcc, 0x97, 0x6e, 0x2c, 0xa7, 0xcf, 0xef, 0x03, 0x70, 0xe5, 0x51, 0x3c, 0xbe, 0x1b, 0x10, 0xd7,
|
0x28, 0x25, 0xca, 0x7c, 0xe9, 0xc6, 0x72, 0xfa, 0xfc, 0x66, 0x00, 0x57, 0x1e, 0xc5, 0xe3, 0xfb,
|
||||||
0xe6, 0x4f, 0x7c, 0xab, 0x05, 0x3f, 0x80, 0xee, 0x4f, 0x32, 0x9b, 0x11, 0xc7, 0x46, 0x0c, 0x9d,
|
0x02, 0x71, 0x6d, 0xfe, 0xc4, 0x37, 0x5d, 0xf0, 0x03, 0xe8, 0xfe, 0x24, 0xb3, 0x19, 0x71, 0x80,
|
||||||
0x1f, 0x18, 0x49, 0x36, 0x2b, 0x40, 0x9b, 0xbb, 0x09, 0x28, 0xa6, 0x3b, 0x35, 0x80, 0xbe, 0xb0,
|
0xc4, 0xd0, 0xf9, 0xd1, 0x91, 0x64, 0xdb, 0x02, 0xb4, 0xb9, 0x9b, 0x80, 0x62, 0xba, 0x53, 0x03,
|
||||||
0xec, 0xb9, 0x22, 0x63, 0xa7, 0xd9, 0x7f, 0x4e, 0x40, 0x0d, 0x91, 0x29, 0x64, 0xa8, 0x58, 0x2d,
|
0xe8, 0x0b, 0xcb, 0x9e, 0x2b, 0x32, 0x76, 0x9a, 0xfd, 0xe7, 0x04, 0xd4, 0x10, 0x99, 0x42, 0x86,
|
||||||
0x70, 0xbc, 0xfc, 0x29, 0x94, 0x32, 0xab, 0xf9, 0xc2, 0xab, 0x4f, 0x8c, 0x67, 0x5f, 0x72, 0xc7,
|
0x8a, 0xd5, 0x02, 0xc7, 0xcb, 0x9f, 0x47, 0x29, 0xb3, 0x9a, 0x2f, 0xbc, 0x0e, 0xc5, 0x78, 0xf6,
|
||||||
0xa3, 0xf8, 0xd0, 0x4f, 0xce, 0xe7, 0xee, 0xce, 0xdd, 0x18, 0xaf, 0x00, 0x8d, 0x42, 0xd6, 0x76,
|
0x25, 0x77, 0x50, 0x8a, 0x0f, 0xfd, 0xe4, 0x7c, 0xee, 0xee, 0xdc, 0x97, 0xf1, 0x0a, 0xd0, 0x28,
|
||||||
0xee, 0x12, 0x15, 0x61, 0xb9, 0xa5, 0x68, 0x6f, 0x39, 0x93, 0x2a, 0xf2, 0xaa, 0x72, 0xd0, 0xb3,
|
0x64, 0x6d, 0xe7, 0x7e, 0x51, 0x11, 0x96, 0x5b, 0x8a, 0xf6, 0x96, 0xd3, 0xa9, 0x22, 0xaf, 0x2a,
|
||||||
0x9b, 0x4d, 0x50, 0x1f, 0x13, 0x65, 0xed, 0x2d, 0x47, 0x56, 0x91, 0x09, 0x28, 0xd0, 0xcb, 0x61,
|
0x07, 0x3d, 0xbb, 0xd9, 0x04, 0xf5, 0x31, 0x51, 0xd6, 0xde, 0x72, 0x78, 0x15, 0x99, 0x80, 0x52,
|
||||||
0xef, 0xde, 0x27, 0xb0, 0xa9, 0xd5, 0xc2, 0x9a, 0x4e, 0x77, 0x70, 0xf1, 0x5b, 0x19, 0xf0, 0xe3,
|
0xbd, 0x1c, 0xf6, 0xee, 0x7d, 0x02, 0x9b, 0x5a, 0x2d, 0xac, 0xe9, 0x74, 0x07, 0x17, 0xbf, 0x95,
|
||||||
0x5a, 0x5d, 0x27, 0x4b, 0x0c, 0xe9, 0x11, 0xb8, 0x88, 0x34, 0xc9, 0xc3, 0xab, 0x47, 0xe2, 0x69,
|
0x01, 0x3f, 0xae, 0xd5, 0x75, 0xb2, 0xc4, 0x90, 0x1e, 0x81, 0x8b, 0x48, 0x93, 0x3c, 0xbc, 0x84,
|
||||||
0xba, 0x92, 0x4c, 0xac, 0x21, 0xcf, 0xc8, 0xa4, 0x70, 0xc4, 0xbc, 0xe5, 0x94, 0xb8, 0x99, 0xf1,
|
0x24, 0x9e, 0xa6, 0x2b, 0xc9, 0xc4, 0x1a, 0xf2, 0x8c, 0x4c, 0x0a, 0x47, 0xcc, 0x5b, 0x4e, 0x89,
|
||||||
0x51, 0xe0, 0xbd, 0x93, 0xf2, 0x2b, 0xf9, 0xde, 0x2d, 0x9e, 0x50, 0xe1, 0xd5, 0xa9, 0x9a, 0x1c,
|
0x9b, 0x19, 0x1f, 0x05, 0xde, 0x3b, 0x29, 0xbf, 0x92, 0xef, 0xdd, 0xe2, 0x59, 0x15, 0x5e, 0x9d,
|
||||||
0x21, 0xdc, 0xf2, 0xf6, 0x14, 0x8f, 0xc7, 0xef, 0x56, 0x23, 0x4c, 0xc9, 0x90, 0x2c, 0xae, 0x3d,
|
0xaa, 0xc9, 0x61, 0xc2, 0x2d, 0x6f, 0x4f, 0xf1, 0xa0, 0xfc, 0x6e, 0x35, 0xc2, 0x94, 0x0c, 0xc9,
|
||||||
0x1a, 0x21, 0x5f, 0x56, 0xbc, 0xc9, 0x54, 0x3a, 0xf7, 0xfb, 0x7b, 0x9a, 0x13, 0xa9, 0x55, 0x8b,
|
0xe2, 0xda, 0xa3, 0x11, 0xf2, 0x65, 0xc5, 0x3b, 0x4d, 0xa5, 0x73, 0xbf, 0xbf, 0xa7, 0x39, 0x91,
|
||||||
0xe3, 0x35, 0xe7, 0xca, 0x09, 0x77, 0x1d, 0xc2, 0xbb, 0xbc, 0xcb, 0x8f, 0x90, 0xc0, 0x48, 0xad,
|
0x5a, 0xb5, 0x38, 0x5e, 0x73, 0xae, 0x9c, 0x70, 0xd7, 0x71, 0xbc, 0xcb, 0xbb, 0xfc, 0x08, 0x09,
|
||||||
0x9c, 0xc0, 0xe5, 0x7d, 0x19, 0x38, 0xe7, 0x49, 0xc8, 0x23, 0x64, 0x90, 0x68, 0xee, 0x22, 0x76,
|
0x8c, 0xd4, 0xca, 0x09, 0x5c, 0xde, 0x97, 0x81, 0x73, 0x9e, 0x84, 0x3c, 0x42, 0x06, 0x89, 0xe6,
|
||||||
0x77, 0xb5, 0x35, 0x9a, 0xc3, 0xef, 0xa6, 0x77, 0x77, 0x4d, 0x0b, 0x4b, 0x99, 0x1b, 0x03, 0x21,
|
0x2e, 0x62, 0x77, 0x57, 0x5b, 0xa3, 0x39, 0xfc, 0x6e, 0x7a, 0x77, 0xd7, 0xb4, 0xb0, 0x94, 0xb9,
|
||||||
0x3b, 0xa9, 0x15, 0x34, 0x34, 0x71, 0x6b, 0x72, 0x1a, 0xa1, 0x53, 0x05, 0xab, 0x56, 0x3b, 0xf2,
|
0x31, 0x10, 0xb2, 0x93, 0x5a, 0x41, 0x43, 0x13, 0xb7, 0x26, 0xa7, 0x11, 0x3a, 0x55, 0xb0, 0x6a,
|
||||||
0x52, 0xcc, 0xad, 0xcb, 0xf0, 0xec, 0xb8, 0xcc, 0x03, 0x2d, 0x82, 0xb6, 0xcf, 0xaf, 0xca, 0x89,
|
0xb5, 0x23, 0xaf, 0xc7, 0xdc, 0xba, 0x0c, 0x4f, 0x91, 0xcb, 0x3c, 0xd0, 0x22, 0x68, 0xfb, 0xfc,
|
||||||
0x46, 0xd0, 0x01, 0x4d, 0x21, 0xef, 0xc1, 0x13, 0x93, 0x71, 0xe8, 0x3f, 0x41, 0xf5, 0x42, 0x26,
|
0xd2, 0x9c, 0x68, 0x09, 0x1d, 0xd0, 0x14, 0xf2, 0x1e, 0x3c, 0x31, 0x19, 0x87, 0xfe, 0x13, 0x54,
|
||||||
0x3e, 0x8b, 0xf0, 0x72, 0x10, 0x6e, 0x42, 0xfb, 0x21, 0x24, 0xaa, 0x73, 0x46, 0xbe, 0x70, 0x17,
|
0x2f, 0x64, 0xe2, 0xb3, 0x08, 0xaf, 0x09, 0xe1, 0x76, 0xb4, 0x1f, 0x42, 0xa2, 0x3a, 0x67, 0xe4,
|
||||||
0xf4, 0x85, 0x04, 0x21, 0x38, 0x57, 0x88, 0x28, 0x98, 0xf8, 0x73, 0x4c, 0x3c, 0x97, 0x8d, 0xf8,
|
0x0b, 0x77, 0x41, 0x5f, 0x48, 0x10, 0x82, 0x73, 0x85, 0x88, 0x82, 0x89, 0x3f, 0xc7, 0xc4, 0x73,
|
||||||
0x05, 0x9b, 0xec, 0xd0, 0x68, 0x86, 0x96, 0x09, 0xa8, 0xd3, 0xdb, 0x4b, 0xe2, 0xe4, 0x91, 0xf2,
|
0xd9, 0x88, 0x5f, 0xb5, 0xc9, 0x8e, 0x8f, 0x66, 0x68, 0x99, 0x80, 0x3a, 0xbd, 0xbd, 0x24, 0x4e,
|
||||||
0x4e, 0x2c, 0x89, 0xf3, 0x64, 0x57, 0xe0, 0xaa, 0xf2, 0x37, 0x29, 0x47, 0x10, 0x3d, 0x28, 0x8e,
|
0x1e, 0x29, 0xef, 0xc9, 0x92, 0x38, 0x4f, 0x76, 0x05, 0xae, 0x2a, 0x7f, 0xa7, 0x72, 0x04, 0xd1,
|
||||||
0xee, 0x80, 0xcf, 0x94, 0xce, 0xd2, 0xf5, 0x6d, 0x7e, 0x77, 0xa3, 0x06, 0x7c, 0xc4, 0xbe, 0xed,
|
0x83, 0xe2, 0xe8, 0x0e, 0xf8, 0x4c, 0xe9, 0x2c, 0x5d, 0xdf, 0xe6, 0xb7, 0x38, 0x6a, 0xc0, 0x47,
|
||||||
0xe3, 0xe9, 0x4a, 0x7e, 0xff, 0x53, 0xd7, 0x14, 0x7e, 0x17, 0xd5, 0x44, 0x08, 0x77, 0x14, 0xfb,
|
0xec, 0xdb, 0x3e, 0x9e, 0xb3, 0xe4, 0x37, 0x41, 0x75, 0x4d, 0xe1, 0xb7, 0x52, 0x4d, 0x84, 0x70,
|
||||||
0xa1, 0x35, 0x63, 0x28, 0xd2, 0xcb, 0x98, 0x2d, 0x30, 0x2e, 0xd9, 0x97, 0x01, 0x54, 0x21, 0x90,
|
0x47, 0xb1, 0x1f, 0x5a, 0x33, 0x86, 0x22, 0xbd, 0x8c, 0xd9, 0x02, 0xe3, 0x92, 0x7d, 0x19, 0x40,
|
||||||
0x38, 0x08, 0x30, 0x18, 0xbf, 0x08, 0x80, 0x43, 0xf4, 0xa4, 0xe4, 0x1a, 0xb2, 0xe0, 0x1a, 0x91,
|
0x15, 0x02, 0x89, 0x83, 0x00, 0x83, 0xf1, 0x8b, 0x00, 0x38, 0x44, 0x4f, 0x4a, 0xae, 0x21, 0x0b,
|
||||||
0xd2, 0x62, 0x98, 0xce, 0x90, 0x8f, 0x78, 0x58, 0xe1, 0xf2, 0x16, 0x44, 0xa4, 0x15, 0x30, 0x46,
|
0xae, 0x11, 0x29, 0x2d, 0x86, 0xe9, 0x0c, 0xf9, 0x88, 0xc7, 0x16, 0x2e, 0x6f, 0x41, 0x44, 0x5a,
|
||||||
0x45, 0x8c, 0x1a, 0xc7, 0xa6, 0xaa, 0x08, 0xc5, 0x6f, 0x66, 0x22, 0xfa, 0x01, 0xbf, 0x71, 0xda,
|
0x01, 0x63, 0x54, 0xc4, 0xa8, 0x71, 0x6c, 0xaa, 0x8a, 0x50, 0xfc, 0x8e, 0x26, 0xa2, 0x1f, 0xf0,
|
||||||
0xa9, 0xd7, 0x69, 0x95, 0xbf, 0xc6, 0x93, 0x0b, 0xd5, 0xec, 0xd6, 0x68, 0x3d, 0xaa, 0x7d, 0x8d,
|
0xbb, 0xa7, 0x9d, 0x7a, 0x9d, 0x56, 0xf9, 0x6b, 0x3c, 0xc3, 0x50, 0xcd, 0xee, 0x8f, 0xd6, 0xa3,
|
||||||
0x06, 0x81, 0xd9, 0xc0, 0xa0, 0xa1, 0xae, 0x2b, 0x90, 0x13, 0x89, 0x1b, 0xb5, 0x3d, 0x9e, 0x5a,
|
0xda, 0xd7, 0x68, 0x10, 0x98, 0x0d, 0x0c, 0x1a, 0xea, 0xba, 0x02, 0x39, 0x91, 0xb8, 0x5b, 0xdb,
|
||||||
0xf5, 0xff, 0xcd, 0x59, 0x70, 0xb1, 0x2f, 0x43, 0x17, 0x82, 0xb5, 0x38, 0x9e, 0x11, 0xe1, 0xce,
|
0xe3, 0xa9, 0x55, 0xff, 0xdf, 0x9c, 0x05, 0x17, 0xfb, 0x32, 0x74, 0x21, 0x58, 0x8b, 0x83, 0x1a,
|
||||||
0x3f, 0x00, 0x72, 0x80, 0x5e, 0x5d, 0x5c, 0x25, 0xc6, 0x0b, 0x98, 0x44, 0xba, 0x7f, 0x3a, 0xe2,
|
0x11, 0x9e, 0x01, 0x00, 0x40, 0x0e, 0xd0, 0xab, 0x8b, 0x4b, 0xc5, 0x78, 0x15, 0x93, 0x48, 0xf7,
|
||||||
0xfd, 0x38, 0x30, 0xa2, 0x45, 0x85, 0x17, 0xe4, 0xf8, 0xe9, 0x8f, 0x28, 0xed, 0xe8, 0x4d, 0xa1,
|
0x4f, 0x47, 0xbc, 0x1f, 0x07, 0x46, 0xb4, 0xa8, 0xf0, 0x82, 0x1c, 0x3f, 0xfd, 0x11, 0xa5, 0xbd,
|
||||||
0xb0, 0x60, 0xf1, 0xdc, 0xc7, 0xbe, 0xa8, 0x1f, 0xe1, 0x0d, 0xdf, 0x5c, 0xb3, 0x24, 0xf6, 0x41,
|
0xbd, 0x29, 0x14, 0x16, 0x2c, 0x9e, 0xfb, 0xd8, 0x21, 0xf5, 0x23, 0xbc, 0xeb, 0x9b, 0x6b, 0x96,
|
||||||
0x1c, 0x4f, 0xc5, 0x67, 0x73, 0xe6, 0x06, 0x43, 0xda, 0xaf, 0xf4, 0x44, 0x6a, 0x2e, 0xab, 0x15,
|
0xc4, 0x3e, 0x88, 0xe3, 0xa9, 0xf8, 0x6c, 0xce, 0xdc, 0x60, 0x48, 0xfb, 0x95, 0x9e, 0x48, 0xcd,
|
||||||
0xf1, 0x25, 0x97, 0xeb, 0xfd, 0x8c, 0x64, 0x07, 0xbd, 0xba, 0x78, 0x91, 0x36, 0xd3, 0xcb, 0xc6,
|
0x65, 0xb5, 0x22, 0xbe, 0xe4, 0x72, 0xbd, 0x9f, 0x91, 0xec, 0xa0, 0x57, 0x17, 0x2f, 0xd2, 0xb6,
|
||||||
0x54, 0xd2, 0x41, 0x43, 0x1c, 0x34, 0x84, 0x90, 0x9d, 0x8d, 0x2b, 0x8c, 0x90, 0x37, 0x0b, 0xfa,
|
0x7a, 0xd9, 0x98, 0x4a, 0x3a, 0x68, 0x88, 0x83, 0x86, 0x10, 0xb2, 0xb3, 0x71, 0x85, 0x11, 0xf2,
|
||||||
0x23, 0xeb, 0x91, 0x65, 0x20, 0xf3, 0xa4, 0xf0, 0xee, 0xcd, 0x1b, 0xfd, 0x0a, 0xae, 0xcf, 0xa1,
|
0x8e, 0x41, 0x7f, 0x64, 0x3d, 0xb2, 0x0c, 0x64, 0x9e, 0x14, 0xde, 0xbd, 0x79, 0xa3, 0x5f, 0xc1,
|
||||||
0xb5, 0x08, 0xba, 0xe4, 0x67, 0x2b, 0xc4, 0xf3, 0x2c, 0xa8, 0xe7, 0xf1, 0x32, 0x00, 0xe1, 0x34,
|
0xf5, 0x39, 0xb4, 0x16, 0x41, 0x97, 0xfc, 0x6c, 0x85, 0x78, 0xb2, 0x05, 0xf5, 0x3c, 0x5e, 0x06,
|
||||||
0x20, 0x9f, 0x8e, 0x2d, 0x37, 0xe9, 0x73, 0xa6, 0x7d, 0x57, 0xd7, 0xe6, 0xac, 0xca, 0x16, 0x7e,
|
0x20, 0x9c, 0x06, 0xe4, 0xd3, 0xb1, 0xe5, 0x26, 0x1d, 0xcf, 0xb4, 0x03, 0xeb, 0xda, 0x9c, 0x55,
|
||||||
0xd6, 0x27, 0xb6, 0x71, 0x9a, 0x59, 0x62, 0xda, 0x73, 0xfa, 0x77, 0x0c, 0xdc, 0x21, 0x58, 0xe2,
|
0xd9, 0xcc, 0xcf, 0x3a, 0xc6, 0x36, 0x4e, 0x33, 0x4b, 0x4c, 0x7b, 0x4e, 0xff, 0x8e, 0x81, 0x3b,
|
||||||
0x04, 0xd4, 0x34, 0xf0, 0x9f, 0x40, 0x1f, 0xe4, 0x81, 0x0c, 0x3c, 0x51, 0x31, 0x16, 0xdd, 0xbd,
|
0x04, 0x4b, 0x9c, 0x80, 0x9a, 0x06, 0xfe, 0x13, 0xe8, 0x83, 0x3c, 0x9a, 0x81, 0x67, 0x2b, 0xc6,
|
||||||
0x28, 0x16, 0x5d, 0xc4, 0x4e, 0xaf, 0xee, 0x88, 0x71, 0x63, 0xd9, 0xe3, 0xad, 0x88, 0xad, 0x9a,
|
0xa2, 0xbb, 0x17, 0xc5, 0xa2, 0x8b, 0xd8, 0xe9, 0xd5, 0x1d, 0x31, 0x6e, 0x2c, 0xbb, 0xbd, 0x15,
|
||||||
0x65, 0x46, 0x0d, 0x4f, 0xb0, 0x14, 0x7b, 0xc0, 0xfc, 0xec, 0x84, 0x6c, 0x26, 0xa4, 0x94, 0x2b,
|
0xb1, 0x69, 0xb3, 0xcc, 0xa8, 0xe1, 0x59, 0x96, 0x62, 0x37, 0x98, 0x9f, 0xa2, 0x90, 0xcd, 0x84,
|
||||||
0x17, 0x1e, 0x16, 0x52, 0xc4, 0x5a, 0x42, 0xb2, 0x0b, 0x7a, 0x6e, 0x4b, 0x5a, 0x1e, 0x8b, 0x22,
|
0x94, 0x72, 0xe5, 0xc2, 0xc3, 0x42, 0x8a, 0x58, 0x4b, 0x48, 0x76, 0x41, 0xcf, 0x6d, 0x49, 0xcb,
|
||||||
0xe2, 0xe2, 0x5d, 0x4d, 0x16, 0xbe, 0xd2, 0x24, 0x3e, 0x1d, 0x32, 0x29, 0x6a, 0x59, 0x2f, 0xca,
|
0x63, 0x51, 0x44, 0x5c, 0xbc, 0xb5, 0xc9, 0xc2, 0x57, 0xda, 0xc5, 0xa7, 0x43, 0x26, 0x45, 0x2d,
|
||||||
0x1b, 0x2b, 0xa2, 0x57, 0xc4, 0x2f, 0xb4, 0x08, 0xaa, 0x49, 0xf7, 0x14, 0x6f, 0x09, 0xf5, 0xaf,
|
0xeb, 0x45, 0x79, 0x77, 0x45, 0xf4, 0x8a, 0xf8, 0xd5, 0x16, 0x41, 0x35, 0xe9, 0x9e, 0xe2, 0x7d,
|
||||||
0xc5, 0x0d, 0x71, 0x72, 0xb6, 0x0c, 0x43, 0xd0, 0xff, 0x94, 0x86, 0xbc, 0x17, 0x7e, 0x7d, 0x4a,
|
0xa1, 0xfe, 0xb5, 0xb8, 0x2b, 0x4e, 0xce, 0x96, 0x61, 0x08, 0xfa, 0x9f, 0xd2, 0x90, 0x37, 0xc4,
|
||||||
0x37, 0xaa, 0xd5, 0x8d, 0x66, 0x53, 0xa3, 0x9d, 0x35, 0xbd, 0x74, 0x5d, 0xdf, 0xec, 0x2a, 0xa5,
|
0xaf, 0x4f, 0xe9, 0x46, 0xb5, 0xba, 0xd1, 0x6c, 0x6a, 0xb4, 0xb3, 0xa6, 0x97, 0xae, 0x6f, 0xf5,
|
||||||
0x0d, 0xa7, 0x7e, 0x85, 0x2c, 0x4e, 0x8b, 0xe4, 0xb3, 0x9b, 0x0f, 0x69, 0x65, 0x81, 0x4d, 0xa6,
|
0x89, 0xd3, 0x86, 0x53, 0xbf, 0x42, 0x16, 0xa7, 0x45, 0xf2, 0xd9, 0x1d, 0x88, 0xb4, 0xb2, 0xc0,
|
||||||
0x8e, 0x38, 0x63, 0xd4, 0x2d, 0x6e, 0xde, 0x55, 0x0e, 0xbf, 0x7b, 0x77, 0x72, 0x72, 0xd2, 0x25,
|
0x26, 0x53, 0x47, 0x9c, 0x36, 0xea, 0x16, 0xb7, 0xf1, 0x2a, 0x87, 0xdf, 0xbd, 0x3b, 0x39, 0x39,
|
||||||
0xff, 0xee, 0x2f, 0xc3, 0xe2, 0xca, 0x80, 0x06, 0x3f, 0x62, 0x4b, 0x80, 0xcc, 0x41, 0x62, 0xc4,
|
0xe9, 0x92, 0x7f, 0xf7, 0x97, 0x61, 0x71, 0x65, 0x40, 0x83, 0x1f, 0xb1, 0x25, 0x40, 0xe6, 0x20,
|
||||||
0x16, 0x13, 0xa9, 0x71, 0xa9, 0xde, 0xfb, 0x04, 0x4c, 0x0a, 0xde, 0x33, 0xee, 0xca, 0x22, 0x6b,
|
0x31, 0x62, 0x8b, 0x89, 0xd4, 0xb8, 0x54, 0xef, 0x7d, 0x02, 0x26, 0x05, 0xef, 0x19, 0x77, 0x65,
|
||||||
0xca, 0x84, 0x03, 0x5b, 0x21, 0x16, 0xae, 0x35, 0x1a, 0x02, 0x06, 0xc2, 0x01, 0x2c, 0x23, 0x84,
|
0x91, 0x35, 0x65, 0xc2, 0x81, 0xad, 0x10, 0x0b, 0xd7, 0x1a, 0x0d, 0x01, 0x03, 0xe1, 0x00, 0x96,
|
||||||
0x03, 0x45, 0x25, 0x36, 0xca, 0x2b, 0xe2, 0xef, 0x2a, 0x0b, 0x48, 0xa1, 0x1c, 0x80, 0x90, 0x54,
|
0x11, 0xc2, 0x81, 0xa2, 0x12, 0x1b, 0xe5, 0x15, 0xf1, 0x77, 0x95, 0x05, 0xa4, 0x50, 0x0e, 0x40,
|
||||||
0x1d, 0xef, 0x2b, 0x93, 0xb7, 0x61, 0xb1, 0x00, 0x8a, 0x88, 0xe5, 0x4d, 0xc0, 0xc3, 0x4e, 0x61,
|
0x48, 0xaa, 0x8e, 0xf7, 0x95, 0xc9, 0x7b, 0xb1, 0x58, 0x00, 0x45, 0xc4, 0xf2, 0x26, 0xe0, 0x61,
|
||||||
0xf0, 0x41, 0xd6, 0x22, 0x02, 0x55, 0xaa, 0x9c, 0x26, 0x8b, 0x69, 0xb9, 0xc0, 0x26, 0x5f, 0xc5,
|
0xa7, 0x30, 0xf8, 0x20, 0x6b, 0x11, 0x81, 0x2a, 0x55, 0x4e, 0x93, 0xc5, 0xb4, 0x5c, 0x60, 0x93,
|
||||||
0x28, 0xbf, 0xae, 0xb1, 0x8f, 0xed, 0xc3, 0x15, 0x88, 0xd4, 0x8f, 0xf8, 0x25, 0x33, 0xe4, 0x91,
|
0xaf, 0x62, 0x94, 0x5f, 0xd7, 0xd8, 0xc7, 0xf6, 0xe1, 0x0a, 0x44, 0xea, 0x47, 0xfc, 0xba, 0x19,
|
||||||
0x83, 0x09, 0xee, 0xff, 0xc6, 0x58, 0x40, 0xac, 0x98, 0x1c, 0x42, 0x0a, 0x67, 0x9c, 0x12, 0x67,
|
0xf2, 0xc8, 0xc1, 0x04, 0xf7, 0x7f, 0x63, 0x2c, 0x20, 0x56, 0x4c, 0x0e, 0x21, 0x85, 0x33, 0x4e,
|
||||||
0x2a, 0x38, 0xc0, 0x63, 0x52, 0xfc, 0x20, 0xd4, 0x04, 0x04, 0x6b, 0xc7, 0xa8, 0x9b, 0xd8, 0xc5,
|
0x89, 0x33, 0x15, 0x1c, 0xe0, 0x81, 0x29, 0x7e, 0x24, 0x6a, 0x02, 0x82, 0xb5, 0x63, 0xd4, 0x4d,
|
||||||
0xc6, 0xc1, 0xd9, 0x49, 0x24, 0xce, 0x4a, 0xe5, 0x92, 0xcf, 0x94, 0x5f, 0x89, 0x4c, 0xef, 0xa6,
|
0xec, 0x62, 0xe3, 0xe0, 0xec, 0x4c, 0x12, 0x67, 0xa5, 0x72, 0xc9, 0x67, 0xca, 0x2f, 0x47, 0xa6,
|
||||||
0x41, 0xa4, 0x60, 0x21, 0x14, 0x7f, 0x05, 0x21, 0x6a, 0xd2, 0xf9, 0x21, 0x87, 0x78, 0x5f, 0xda,
|
0xb7, 0xd4, 0x20, 0x52, 0xb0, 0x10, 0x8a, 0xbf, 0x82, 0x10, 0x35, 0xe9, 0xfc, 0x90, 0x43, 0xbc,
|
||||||
0x9b, 0x09, 0x16, 0x14, 0xa9, 0x17, 0x04, 0x94, 0x1e, 0x6f, 0x27, 0x83, 0x55, 0x2c, 0x23, 0xf0,
|
0x39, 0xed, 0xcd, 0x04, 0x0b, 0x8a, 0xd4, 0x0b, 0x02, 0x4a, 0x8f, 0xf7, 0x94, 0xc1, 0x2a, 0x96,
|
||||||
0x86, 0x89, 0x71, 0x49, 0x6d, 0x08, 0xd0, 0x87, 0x2c, 0xbd, 0x07, 0xcf, 0x7f, 0xf2, 0xa4, 0x56,
|
0x11, 0x78, 0xc3, 0xc4, 0xb8, 0xa4, 0x36, 0x04, 0xe8, 0x43, 0x96, 0xde, 0x83, 0xe7, 0x3f, 0x79,
|
||||||
0xab, 0x99, 0x71, 0x84, 0xc2, 0x66, 0x1f, 0x7d, 0x37, 0xc6, 0x8b, 0xd6, 0xca, 0x35, 0x1e, 0x09,
|
0x52, 0xab, 0xd5, 0xcc, 0x38, 0x42, 0x61, 0xb3, 0x8f, 0xbe, 0x1b, 0xe3, 0x95, 0x6b, 0xe5, 0x1a,
|
||||||
0x93, 0xeb, 0xc4, 0xed, 0xca, 0x22, 0xc8, 0x1c, 0x48, 0x18, 0xc0, 0xd4, 0x92, 0x56, 0x3c, 0x3f,
|
0x0f, 0x87, 0xc9, 0x75, 0xe2, 0x76, 0x65, 0x11, 0x64, 0x0e, 0x24, 0x0c, 0x60, 0x6a, 0x49, 0x2b,
|
||||||
0x7e, 0xb5, 0xa1, 0xdb, 0x78, 0xd9, 0x6c, 0x6b, 0xdf, 0x16, 0x37, 0x2a, 0x92, 0x32, 0xd7, 0xcc,
|
0x9e, 0x1f, 0xc4, 0xda, 0xd0, 0x6d, 0xbc, 0x76, 0xb6, 0xb5, 0x83, 0x8b, 0x5b, 0x16, 0x49, 0x99,
|
||||||
0x0a, 0xde, 0x3e, 0xc8, 0x44, 0xde, 0x93, 0x22, 0x4a, 0xbb, 0xbd, 0x38, 0x55, 0x2b, 0x3b, 0xb7,
|
0x6b, 0x66, 0x05, 0x6f, 0x1f, 0x64, 0x22, 0x6f, 0x4c, 0x11, 0xa5, 0xdd, 0x5e, 0x9c, 0xaa, 0x95,
|
||||||
0x66, 0xdb, 0x1c, 0x9a, 0x4d, 0xa7, 0x8e, 0x8d, 0x87, 0xfb, 0x88, 0xd2, 0x44, 0xf8, 0x9d, 0xe0,
|
0x9d, 0x9b, 0xb4, 0x6d, 0x0e, 0xcd, 0xa6, 0x53, 0xc7, 0xc6, 0x63, 0x7e, 0x44, 0x69, 0x22, 0xfc,
|
||||||
0x3a, 0xa8, 0x26, 0x9e, 0xe4, 0x52, 0x9a, 0xfa, 0x1e, 0x30, 0xdc, 0x41, 0xe9, 0xcb, 0x73, 0x5f,
|
0x4e, 0x70, 0x1d, 0x54, 0x13, 0xcf, 0x74, 0x29, 0x4d, 0x7d, 0x0f, 0x18, 0xee, 0xa5, 0xf4, 0xe5,
|
||||||
0x8a, 0xd1, 0xd8, 0x03, 0x89, 0x27, 0x4c, 0x2a, 0x67, 0xbc, 0xe6, 0x2d, 0xd9, 0x1d, 0x2e, 0x38,
|
0x09, 0x30, 0xc5, 0x68, 0xec, 0x81, 0xc4, 0xb3, 0x26, 0x95, 0x33, 0x5e, 0xf3, 0x96, 0xec, 0x13,
|
||||||
0x12, 0x71, 0xd9, 0xab, 0x7c, 0xaf, 0x5b, 0xa2, 0x10, 0xa7, 0xef, 0x12, 0x51, 0xe3, 0xc1, 0x39,
|
0x17, 0x1c, 0x89, 0xb8, 0xf6, 0x55, 0xbe, 0xeb, 0x2d, 0x51, 0x88, 0x73, 0x78, 0x89, 0xa8, 0xf1,
|
||||||
0x90, 0x70, 0x6a, 0xe3, 0x89, 0x70, 0x69, 0x59, 0x43, 0xaa, 0xb0, 0xf9, 0xc3, 0xfd, 0x9a, 0x6b,
|
0x08, 0x1d, 0x48, 0x38, 0xb5, 0xf1, 0x44, 0xb8, 0xb4, 0xac, 0x21, 0x55, 0xd8, 0x06, 0xe2, 0x7e,
|
||||||
0xed, 0xb6, 0xee, 0xc4, 0xb8, 0x93, 0xfd, 0xb6, 0x4c, 0x79, 0x13, 0xb9, 0x3b, 0x39, 0x55, 0xf4,
|
0xcd, 0xb5, 0x76, 0x5b, 0x77, 0x62, 0xdc, 0xc9, 0xce, 0x5b, 0xa6, 0xbc, 0x89, 0xdc, 0x9d, 0x9c,
|
||||||
0xa2, 0x25, 0xfc, 0xb1, 0xc6, 0x3e, 0x30, 0xc1, 0x2d, 0x11, 0xe9, 0xa3, 0x59, 0xa2, 0x5a, 0xd7,
|
0x2a, 0x7a, 0xd1, 0x12, 0xfe, 0x58, 0x63, 0x1f, 0x98, 0xe0, 0x96, 0x88, 0xf4, 0xd1, 0x2c, 0x51,
|
||||||
0x52, 0xc5, 0x91, 0x2e, 0xbf, 0xd9, 0xaf, 0x6c, 0x39, 0xfa, 0x66, 0xe6, 0x47, 0xf0, 0x70, 0x13,
|
0xad, 0x6b, 0xa9, 0xe2, 0x48, 0x97, 0xdf, 0xec, 0x57, 0xb6, 0x1c, 0x7d, 0x33, 0xf3, 0x23, 0x78,
|
||||||
0xff, 0xb9, 0x0a, 0x71, 0x26, 0x30, 0xea, 0x24, 0xe3, 0xca, 0x3b, 0xff, 0x3b, 0xc2, 0x1a, 0x62,
|
0xcc, 0x89, 0xff, 0x70, 0x85, 0x38, 0x1d, 0x18, 0x75, 0x92, 0x71, 0xe5, 0x9d, 0xff, 0x1d, 0x61,
|
||||||
0xaa, 0xe6, 0xa2, 0x5b, 0x5a, 0xc8, 0x60, 0xa4, 0xa6, 0xfd, 0x6a, 0x1a, 0x8c, 0x48, 0x32, 0xbe,
|
0x0d, 0x31, 0x55, 0x73, 0xd1, 0x2d, 0x2d, 0x64, 0x30, 0x52, 0xd3, 0x7e, 0x35, 0x0d, 0x46, 0x24,
|
||||||
0xb2, 0x8d, 0xe0, 0xa8, 0x04, 0xc1, 0x91, 0xc4, 0x70, 0x94, 0x8b, 0x78, 0x21, 0xe7, 0xf7, 0x9a,
|
0x19, 0x5f, 0xd9, 0x46, 0x70, 0x54, 0x82, 0xe0, 0x48, 0x62, 0x38, 0xca, 0x45, 0xbc, 0x90, 0xf3,
|
||||||
0x1f, 0x88, 0x24, 0xbf, 0x0a, 0x7b, 0xaa, 0x64, 0x0b, 0xbb, 0x00, 0x1d, 0xd0, 0x93, 0x68, 0x55,
|
0x7b, 0xcd, 0x8f, 0x46, 0x92, 0x5f, 0x85, 0x3d, 0x55, 0xb2, 0x85, 0x5d, 0x80, 0x0e, 0xe8, 0x49,
|
||||||
0xcf, 0xc5, 0xab, 0x85, 0x91, 0x0b, 0x63, 0xc3, 0x82, 0x37, 0xe5, 0x87, 0x55, 0x49, 0xa5, 0xb4,
|
0xb4, 0xaa, 0xe7, 0xe2, 0xd5, 0xc2, 0xc8, 0x85, 0xb1, 0x61, 0xc1, 0x9b, 0xf2, 0x63, 0xab, 0xa4,
|
||||||
0x7b, 0x7f, 0x34, 0x86, 0x64, 0xe4, 0xa1, 0x2b, 0xc4, 0x60, 0xe8, 0x20, 0x86, 0xee, 0x9c, 0xa1,
|
0x52, 0xda, 0xbd, 0x3f, 0x1a, 0x43, 0x32, 0xf2, 0xd0, 0x15, 0x62, 0x30, 0x74, 0x10, 0x43, 0x77,
|
||||||
0x17, 0x82, 0x2f, 0xf0, 0x79, 0xcc, 0x33, 0xfb, 0x23, 0x3c, 0xcd, 0xba, 0x8c, 0x3a, 0x0d, 0x2e,
|
0xce, 0xd0, 0x0b, 0xc1, 0x17, 0xf8, 0x3c, 0xe6, 0x99, 0xfd, 0x11, 0x9e, 0x6b, 0x5d, 0x46, 0x9d,
|
||||||
0x25, 0x21, 0xc3, 0x4a, 0x81, 0x44, 0xee, 0xf0, 0xe8, 0x9f, 0x74, 0xd8, 0xa0, 0x51, 0x40, 0x8d,
|
0x06, 0x97, 0x92, 0x90, 0x61, 0xa5, 0x40, 0x22, 0x77, 0x8c, 0xf4, 0x4f, 0x3a, 0x6c, 0xd0, 0x28,
|
||||||
0x84, 0x4b, 0x98, 0x86, 0x27, 0xbc, 0xde, 0xd8, 0x71, 0x1d, 0x74, 0xc5, 0x21, 0x71, 0xad, 0x19,
|
0xa0, 0x46, 0xc2, 0x25, 0x4c, 0xc3, 0x13, 0x5e, 0x6f, 0xec, 0xb8, 0x0e, 0xba, 0xe2, 0x90, 0xb8,
|
||||||
0x24, 0x88, 0xd1, 0x92, 0x45, 0xdc, 0xe5, 0xfc, 0x0a, 0xae, 0xd0, 0xe5, 0xde, 0x11, 0x4c, 0x9d,
|
0xd6, 0x0c, 0x12, 0xc4, 0x68, 0xc9, 0x22, 0xee, 0x72, 0x7e, 0x05, 0x57, 0xe8, 0x72, 0xef, 0x08,
|
||||||
0xe4, 0xc2, 0x6a, 0x72, 0xda, 0xb4, 0x5f, 0x72, 0x10, 0x34, 0x91, 0x09, 0x3a, 0x13, 0xf4, 0x83,
|
0xa6, 0x4e, 0x72, 0x61, 0x35, 0x39, 0x77, 0xda, 0x2f, 0x39, 0x12, 0x9a, 0xc8, 0x04, 0x9d, 0x09,
|
||||||
0x63, 0x8c, 0xd1, 0xec, 0x1b, 0x00, 0x80, 0x0d, 0xdb, 0x05, 0xbf, 0x0c, 0x6a, 0x51, 0x29, 0xd3,
|
0xfa, 0xc1, 0x31, 0xc6, 0x68, 0xf6, 0x0d, 0x00, 0xc0, 0x86, 0xed, 0x82, 0x5f, 0x06, 0xb5, 0xa8,
|
||||||
0x8b, 0x6b, 0xeb, 0x81, 0xa1, 0x23, 0x62, 0xb3, 0x45, 0xe2, 0x96, 0x18, 0x14, 0x25, 0x92, 0xc0,
|
0x94, 0xe9, 0xc5, 0xb5, 0xf5, 0xc0, 0xd0, 0x11, 0xb1, 0xd9, 0x22, 0x71, 0x4b, 0x0c, 0x8a, 0x12,
|
||||||
0xce, 0xd8, 0x9b, 0xc4, 0xc9, 0x91, 0x08, 0xae, 0xd2, 0xec, 0xc6, 0xcb, 0x48, 0xec, 0x0c, 0xc1,
|
0x49, 0x60, 0x67, 0xec, 0x4d, 0xe2, 0xe4, 0x48, 0x04, 0x57, 0x69, 0x76, 0xe3, 0x65, 0x24, 0x76,
|
||||||
0x7c, 0x27, 0x8e, 0xcd, 0xa2, 0xdd, 0xe3, 0x33, 0x9f, 0x26, 0xda, 0x31, 0xbc, 0x33, 0x22, 0xb3,
|
0x86, 0x60, 0xbe, 0x13, 0xc7, 0x66, 0xd1, 0xee, 0xf1, 0x99, 0x4f, 0x13, 0xed, 0x18, 0xde, 0x19,
|
||||||
0x7e, 0x19, 0xbb, 0x23, 0x47, 0x20, 0x47, 0xd1, 0xcc, 0x5c, 0x7f, 0x2c, 0x12, 0x1c, 0x20, 0x32,
|
0x91, 0x59, 0xbf, 0x8c, 0xdd, 0x91, 0x23, 0x90, 0xa3, 0x68, 0x66, 0xae, 0x3f, 0x16, 0x09, 0x0e,
|
||||||
0x9d, 0xe6, 0xb2, 0x82, 0x4a, 0x79, 0x5a, 0x70, 0x75, 0x2e, 0xc3, 0xfe, 0x0e, 0x7b, 0xe0, 0xcb,
|
0x10, 0x99, 0x4e, 0x73, 0x59, 0x41, 0xa5, 0x3c, 0x2d, 0xb8, 0x3a, 0x97, 0x61, 0x7f, 0x87, 0x3d,
|
||||||
0x5b, 0x11, 0xa7, 0x8b, 0x60, 0x31, 0xff, 0xe0, 0xca, 0xf0, 0xc7, 0xc2, 0x0a, 0x02, 0x5c, 0xe8,
|
0xf0, 0xe5, 0xad, 0x88, 0x73, 0x46, 0xb0, 0x98, 0x7f, 0x70, 0x65, 0xf8, 0x63, 0x61, 0x05, 0x01,
|
||||||
0xfc, 0xbe, 0x0f, 0x49, 0x9a, 0xef, 0x9d, 0xdc, 0x81, 0xa4, 0x6c, 0x07, 0xe4, 0x35, 0x01, 0xef,
|
0x2e, 0x74, 0x7e, 0xdf, 0x87, 0x24, 0xcd, 0xf7, 0x4e, 0xee, 0x68, 0x52, 0xb6, 0x03, 0xf2, 0x9a,
|
||||||
0xb6, 0xbb, 0xa4, 0xe7, 0x5f, 0x30, 0x1e, 0x5e, 0xa0, 0x82, 0xe1, 0x55, 0xb6, 0x2d, 0xaf, 0x1c,
|
0x80, 0x77, 0xdb, 0x5d, 0xd2, 0xf3, 0x2f, 0x18, 0x0f, 0x2f, 0x50, 0xc1, 0xf0, 0x2a, 0xdb, 0x96,
|
||||||
0x03, 0xf6, 0xfd, 0x33, 0x0c, 0xc9, 0xe6, 0xc9, 0xa6, 0xe1, 0x55, 0xf6, 0x7b, 0x87, 0x74, 0x66,
|
0x57, 0x8e, 0x01, 0xfb, 0xfe, 0x19, 0x86, 0x64, 0xf3, 0x64, 0xd3, 0xf0, 0x2a, 0xfb, 0xbd, 0x43,
|
||||||
0xbc, 0x5c, 0x95, 0x53, 0xe2, 0x3d, 0x5a, 0xd0, 0x2b, 0xdc, 0xb6, 0xf6, 0xdd, 0xc9, 0xa6, 0xc4,
|
0x3a, 0x33, 0x5e, 0xae, 0xca, 0x29, 0xf1, 0x1e, 0x2d, 0xe8, 0x15, 0x6e, 0x5b, 0xfb, 0xee, 0x64,
|
||||||
0x37, 0x32, 0xa3, 0xcd, 0xcd, 0x40, 0x43, 0x4f, 0x3b, 0xfa, 0x50, 0xa5, 0x66, 0x2e, 0x13, 0xb9,
|
0x53, 0xe2, 0x1b, 0x99, 0xd1, 0xe6, 0x66, 0xa0, 0xa1, 0xa7, 0x1d, 0x7d, 0xa8, 0x52, 0x33, 0x97,
|
||||||
0xb9, 0xbc, 0x2b, 0x6c, 0x0c, 0x54, 0xde, 0xb8, 0x33, 0x00, 0xb5, 0xeb, 0x9e, 0x7d, 0x81, 0x34,
|
0x89, 0xdc, 0x5c, 0xde, 0x15, 0x36, 0x06, 0x2a, 0x6f, 0xdc, 0x19, 0x80, 0xda, 0x75, 0xcf, 0xbe,
|
||||||
0x78, 0x4a, 0xdd, 0x84, 0xd2, 0x75, 0x13, 0xba, 0xe4, 0xbc, 0xd3, 0x1d, 0x78, 0xa3, 0x98, 0x91,
|
0x40, 0x1a, 0x3c, 0xa5, 0x6e, 0x42, 0xe9, 0xba, 0x09, 0x5d, 0x72, 0xf2, 0xe9, 0x0e, 0xbc, 0x51,
|
||||||
0xc9, 0x66, 0x47, 0x3f, 0x81, 0xac, 0x64, 0xfb, 0x74, 0x8d, 0xd6, 0xd1, 0x03, 0x5b, 0x15, 0xce,
|
0xcc, 0xc8, 0x64, 0xb3, 0xa3, 0x9f, 0x40, 0x56, 0xb2, 0x7d, 0xba, 0x46, 0xeb, 0xe8, 0x81, 0xad,
|
||||||
0xf7, 0x6d, 0x6f, 0xd6, 0x49, 0x20, 0x7e, 0x20, 0x3a, 0x77, 0x72, 0x6f, 0x13, 0x5d, 0x13, 0x0f,
|
0x0a, 0x27, 0xfd, 0xb6, 0x37, 0xeb, 0x24, 0x10, 0x3f, 0x1a, 0x9d, 0x3b, 0xc3, 0xb7, 0x89, 0xae,
|
||||||
0x66, 0x72, 0xc8, 0x31, 0xfe, 0xa0, 0xc4, 0x0e, 0x7c, 0x78, 0x7c, 0x73, 0x37, 0xd1, 0x4a, 0xb6,
|
0x89, 0x47, 0x34, 0x39, 0xe4, 0x18, 0x7f, 0x5a, 0x62, 0x07, 0x3e, 0x3c, 0xc8, 0xb9, 0x9b, 0x68,
|
||||||
0x85, 0xd7, 0x30, 0x5e, 0x63, 0xed, 0x98, 0xf6, 0x8f, 0x25, 0x3d, 0x5e, 0x86, 0xec, 0xc0, 0xf5,
|
0x25, 0xdb, 0xc2, 0x6b, 0x18, 0xaf, 0xb1, 0x76, 0x4c, 0xfb, 0xc7, 0x92, 0x1e, 0x2f, 0x43, 0x76,
|
||||||
0x13, 0xed, 0xbf, 0xe3, 0x60, 0x61, 0x89, 0x2c, 0xd2, 0xde, 0x7a, 0x9f, 0xd7, 0xd5, 0x21, 0x17,
|
0xe0, 0xfa, 0x89, 0xf6, 0xdf, 0x71, 0xb0, 0xb0, 0x44, 0x16, 0x69, 0x6f, 0xbd, 0xcf, 0xeb, 0xea,
|
||||||
0x5d, 0x49, 0xb8, 0x46, 0xa7, 0x54, 0xd9, 0x68, 0x9b, 0xcb, 0xae, 0x79, 0xa6, 0xaa, 0x3f, 0x62,
|
0x90, 0x8b, 0xae, 0x24, 0x5c, 0xa3, 0x53, 0xaa, 0x6c, 0xb4, 0xcd, 0x65, 0xd7, 0x3c, 0x53, 0xd5,
|
||||||
0xd3, 0x9c, 0xb7, 0x23, 0x7e, 0xdc, 0xdd, 0x32, 0xaf, 0x9c, 0xf2, 0x54, 0x17, 0xf4, 0x45, 0xac,
|
0x1f, 0xb1, 0x69, 0xce, 0xdb, 0x11, 0x3f, 0xee, 0x6e, 0x99, 0x57, 0x4e, 0x79, 0xaa, 0x0b, 0xfa,
|
||||||
0x23, 0x66, 0x8b, 0x0b, 0xcb, 0xf1, 0x52, 0x7f, 0x85, 0xbf, 0x75, 0xf1, 0x4a, 0x81, 0x70, 0x3d,
|
0x22, 0xd6, 0x11, 0xb3, 0xc5, 0x85, 0xe5, 0x78, 0xa9, 0xbf, 0xc2, 0x5f, 0xbd, 0x78, 0xa5, 0x40,
|
||||||
0xba, 0xc9, 0x2a, 0x00, 0x51, 0x2a, 0xf2, 0xa3, 0xda, 0xe5, 0x19, 0x44, 0xda, 0x31, 0xd8, 0xc0,
|
0xb8, 0x1e, 0xdd, 0x64, 0x15, 0x80, 0x28, 0x15, 0xf9, 0xa1, 0xed, 0xf2, 0x0c, 0x22, 0xed, 0x18,
|
||||||
0xca, 0x7f, 0x6f, 0x47, 0x62, 0xe4, 0x2d, 0x53, 0x52, 0xb1, 0x6c, 0x9b, 0x05, 0x90, 0x13, 0xd4,
|
0x6c, 0x60, 0xe5, 0xbf, 0xbc, 0x23, 0x31, 0xf2, 0x96, 0x29, 0xa9, 0x58, 0xb6, 0xcd, 0x02, 0xc8,
|
||||||
0x38, 0xba, 0x1d, 0x86, 0x9e, 0x58, 0xc7, 0xc2, 0xcd, 0xd5, 0x83, 0x3f, 0xe6, 0x1a, 0xce, 0xb4,
|
0x09, 0x6a, 0x1c, 0xdd, 0x0e, 0x43, 0x4f, 0xac, 0x63, 0xe1, 0xe6, 0xea, 0xc1, 0x1f, 0x73, 0x0d,
|
||||||
0xee, 0x84, 0x02, 0x03, 0x08, 0xe2, 0x57, 0xfe, 0xbc, 0x60, 0xb9, 0xd2, 0x70, 0x2d, 0x52, 0x01,
|
0x67, 0x5a, 0x77, 0x42, 0x81, 0x01, 0x04, 0xf1, 0x2b, 0x7f, 0x5e, 0xb0, 0x5c, 0x69, 0xb8, 0x16,
|
||||||
0x43, 0x9c, 0x9a, 0xa5, 0xbf, 0xed, 0xc4, 0x45, 0x3b, 0xb5, 0xc0, 0xe1, 0xc2, 0xc7, 0x69, 0x08,
|
0xa9, 0x80, 0x21, 0x4e, 0xcd, 0xd2, 0x5f, 0x79, 0xe2, 0xa2, 0x9d, 0x5a, 0xe0, 0x70, 0xe1, 0xe3,
|
||||||
0x19, 0xc3, 0xa4, 0x0e, 0xd9, 0x0d, 0x6f, 0x86, 0x9a, 0xf4, 0x0f, 0x58, 0x72, 0xef, 0x81, 0xa2,
|
0x34, 0x84, 0x8c, 0x61, 0x52, 0x87, 0xec, 0x86, 0x37, 0x43, 0x4d, 0xfa, 0x07, 0x2c, 0xb9, 0xf7,
|
||||||
0xd5, 0xc1, 0x5b, 0xbf, 0x57, 0xb7, 0x84, 0x6c, 0xef, 0xb0, 0xad, 0xf2, 0xf6, 0x1d, 0x3a, 0x3c,
|
0x40, 0xd1, 0xea, 0xe0, 0xad, 0xdf, 0xab, 0x5b, 0x42, 0xb6, 0x77, 0xd8, 0x56, 0x79, 0xfb, 0x0e,
|
||||||
0x1d, 0x24, 0x0f, 0xa6, 0x5c, 0x6d, 0xdb, 0x61, 0x25, 0x67, 0x88, 0x44, 0x5c, 0x3a, 0xdc, 0xbf,
|
0x1d, 0x9e, 0x13, 0x92, 0x07, 0x53, 0xae, 0xb6, 0xed, 0xb0, 0x92, 0x33, 0x44, 0x22, 0xae, 0x1f,
|
||||||
0x2c, 0x77, 0xd7, 0x34, 0xa9, 0x1e, 0xdf, 0xa4, 0x29, 0xd8, 0x4b, 0xda, 0xa3, 0x29, 0xbb, 0xfd,
|
0xee, 0x5f, 0x96, 0xbb, 0x6b, 0x9a, 0x54, 0x8f, 0x6f, 0xd2, 0x14, 0xec, 0x25, 0xed, 0xd1, 0x94,
|
||||||
0x2f, 0x24, 0x4d, 0xf2, 0x47, 0x32, 0x22, 0x9e, 0x41, 0xdd, 0x63, 0xff, 0x9b, 0x07, 0x52, 0xdc,
|
0xdd, 0xfe, 0x17, 0x92, 0x26, 0xf9, 0x73, 0x19, 0x11, 0xcf, 0xa0, 0xee, 0xb1, 0xff, 0xcd, 0x03,
|
||||||
0x04, 0x9d, 0x62, 0xfa, 0x2f, 0x4a, 0x82, 0x65, 0x50, 0xe7, 0x3d, 0xc2, 0xd7, 0x42, 0xcb, 0x50,
|
0x29, 0x6e, 0x82, 0x4e, 0x31, 0xfd, 0x17, 0x25, 0xc1, 0x32, 0xa8, 0xf3, 0x1e, 0xe1, 0x6b, 0xa1,
|
||||||
0xea, 0x93, 0xc4, 0x9a, 0x2b, 0x6d, 0x36, 0x52, 0xcc, 0x33, 0x48, 0x31, 0xcb, 0x9d, 0xe5, 0xa2,
|
0x65, 0x28, 0xf5, 0x49, 0x62, 0xcd, 0x95, 0x36, 0x1b, 0x29, 0xe6, 0x19, 0xa4, 0x98, 0xe5, 0xce,
|
||||||
0x2c, 0xdb, 0xcc, 0xb2, 0x4a, 0x45, 0x3f, 0x82, 0x27, 0x6a, 0x52, 0x46, 0x9c, 0xca, 0x7a, 0x0f,
|
0x72, 0x51, 0x96, 0x6d, 0x66, 0x59, 0xa5, 0xa2, 0x1f, 0xc1, 0x13, 0x35, 0x29, 0x23, 0x4e, 0x65,
|
||||||
0x99, 0x83, 0x84, 0x29, 0x4f, 0x62, 0x78, 0xbb, 0xa3, 0x50, 0xdd, 0xa6, 0xa0, 0x17, 0xaa, 0x52,
|
0xbd, 0x87, 0xcc, 0x41, 0xc2, 0x94, 0x27, 0x31, 0xbc, 0xdd, 0x51, 0xa8, 0x6e, 0x53, 0xd0, 0x0b,
|
||||||
0x48, 0x51, 0xc7, 0xbe, 0x0f, 0x79, 0xbe, 0x8e, 0xe5, 0x5f, 0x94, 0xe4, 0xab, 0x51, 0x4a, 0x14,
|
0x55, 0x29, 0xa4, 0xa8, 0x63, 0xdf, 0x87, 0x3c, 0x5f, 0xc7, 0xf2, 0x2f, 0x4a, 0xf2, 0xd5, 0x28,
|
||||||
0xa3, 0xee, 0x07, 0x6b, 0xb1, 0xb0, 0x88, 0xed, 0x87, 0xa1, 0x2c, 0xfd, 0x30, 0x3d, 0x10, 0xc9,
|
0x25, 0x8a, 0x51, 0xf7, 0x83, 0xb5, 0x58, 0x58, 0xc4, 0xf6, 0xc3, 0x50, 0x96, 0x7e, 0x98, 0x1e,
|
||||||
0xcf, 0x2b, 0x32, 0xfa, 0x00, 0xc9, 0x29, 0x51, 0xa2, 0x38, 0xf4, 0xa1, 0xc0, 0x41, 0x6f, 0x92,
|
0x88, 0xe4, 0xe7, 0x15, 0x19, 0x7d, 0x80, 0xe4, 0x94, 0x28, 0x51, 0x1c, 0xfa, 0x50, 0xe0, 0xa0,
|
||||||
0xb6, 0x17, 0x38, 0x81, 0xca, 0x4e, 0xec, 0x25, 0xc2, 0xdc, 0x41, 0x01, 0x7b, 0x35, 0x44, 0xc1,
|
0x37, 0x49, 0xdb, 0x0b, 0x9c, 0x40, 0x65, 0x27, 0xf6, 0x12, 0x61, 0xee, 0xa0, 0x80, 0xbd, 0x1a,
|
||||||
0x1f, 0xd9, 0xd9, 0xc4, 0x8e, 0xff, 0x86, 0x59, 0xbd, 0x09, 0x86, 0x11, 0xe7, 0x38, 0x96, 0x82,
|
0xa2, 0xe0, 0xcf, 0xed, 0x6c, 0x62, 0xc7, 0x7f, 0xc3, 0xac, 0xde, 0x04, 0xc3, 0x88, 0x73, 0x1c,
|
||||||
0x7b, 0xbf, 0x29, 0xb8, 0xca, 0x86, 0xe4, 0x8c, 0xf2, 0xb5, 0xf9, 0x01, 0x15, 0xea, 0x1e, 0x52,
|
0x4b, 0xc1, 0xbd, 0xdf, 0x14, 0x5c, 0x65, 0x43, 0x72, 0x46, 0xf9, 0xda, 0xfc, 0x80, 0x0a, 0x75,
|
||||||
0xbf, 0xc8, 0x41, 0xa6, 0x85, 0x4e, 0x9d, 0x85, 0x7e, 0x14, 0x4d, 0xad, 0x09, 0x7b, 0x4d, 0x2e,
|
0x0f, 0xa9, 0x5f, 0xe4, 0x20, 0xd3, 0x42, 0xa7, 0xce, 0x42, 0x3f, 0x8a, 0xa6, 0xd6, 0x84, 0xbd,
|
||||||
0xf7, 0xef, 0x85, 0xee, 0x64, 0x08, 0x08, 0xfe, 0xc6, 0xd5, 0x06, 0x73, 0xf7, 0xe7, 0xbb, 0x98,
|
0x26, 0x97, 0xfb, 0xf7, 0x42, 0x77, 0x32, 0x04, 0x04, 0x7f, 0xed, 0x6a, 0x83, 0xb9, 0xfb, 0xf3,
|
||||||
0xfb, 0xe6, 0x6e, 0x9f, 0xb9, 0xc1, 0x1f, 0xc9, 0x23, 0x8b, 0x08, 0xd1, 0xca, 0x76, 0xca, 0xad,
|
0x5d, 0xcc, 0x7d, 0x73, 0xb7, 0xcf, 0xdc, 0xe0, 0xcf, 0xe5, 0x91, 0x45, 0x84, 0x68, 0x65, 0x3b,
|
||||||
0xe5, 0xb2, 0x18, 0xa2, 0x5a, 0x9c, 0xb1, 0xf9, 0x1a, 0x63, 0xb7, 0xef, 0x85, 0xa9, 0x20, 0x37,
|
0xe5, 0xd6, 0x72, 0x59, 0x0c, 0x51, 0x2d, 0xce, 0xd8, 0x7c, 0x8d, 0xb1, 0xdb, 0xf7, 0xc2, 0x54,
|
||||||
0x13, 0xa8, 0xc6, 0x41, 0x78, 0x7c, 0x66, 0x89, 0x92, 0x9f, 0xcb, 0xdf, 0x13, 0xdb, 0xec, 0x94,
|
0x90, 0x9b, 0x09, 0x54, 0xe3, 0x20, 0x3c, 0x3e, 0xb3, 0x44, 0xc9, 0xcf, 0xe5, 0x2f, 0x8b, 0x6d,
|
||||||
0xdc, 0x5f, 0xbd, 0xa2, 0x80, 0x3b, 0xc4, 0x08, 0xef, 0xb8, 0x22, 0x24, 0xf8, 0xef, 0xb9, 0xb3,
|
0x76, 0x4a, 0xee, 0xaf, 0x5e, 0x51, 0xc0, 0x1d, 0x62, 0x84, 0x77, 0x5c, 0x11, 0x12, 0xfc, 0xf7,
|
||||||
0xda, 0x6d, 0x4b, 0xf7, 0xc3, 0xd7, 0x15, 0xbd, 0x52, 0x42, 0x08, 0x89, 0x60, 0xb7, 0x73, 0xf3,
|
0xdc, 0x59, 0xed, 0xb6, 0xa5, 0xfb, 0xe1, 0xeb, 0x8a, 0x5e, 0x29, 0x21, 0x84, 0x44, 0xb0, 0xdb,
|
||||||
0x04, 0xf4, 0xfd, 0xc7, 0xb2, 0x6c, 0xe0, 0xa3, 0xe5, 0xc4, 0xbc, 0xb1, 0x01, 0x96, 0x56, 0xd9,
|
0xb9, 0x79, 0x16, 0xfa, 0xfe, 0x63, 0x59, 0x36, 0xf0, 0xd1, 0x72, 0x62, 0xde, 0xd8, 0x00, 0x4b,
|
||||||
0x73, 0x0c, 0xfa, 0x3d, 0x2c, 0xf5, 0x9e, 0x24, 0x00, 0x5f, 0x13, 0x9e, 0x42, 0xa6, 0x40, 0x95,
|
0xab, 0xec, 0x39, 0x10, 0xfd, 0x1e, 0x96, 0x7a, 0x4f, 0x12, 0x80, 0xaf, 0x09, 0x4f, 0x21, 0x53,
|
||||||
0xed, 0x73, 0x3b, 0xa3, 0xa5, 0x17, 0x3a, 0x51, 0x59, 0x00, 0x05, 0xb9, 0xf3, 0x1b, 0x09, 0xf8,
|
0xa0, 0xca, 0xf6, 0xb9, 0x9d, 0xd1, 0xd2, 0x0b, 0x9d, 0xa8, 0x2c, 0x80, 0x82, 0xdc, 0xf9, 0xdd,
|
||||||
0x93, 0x3c, 0x50, 0x25, 0x61, 0xa4, 0xe3, 0x8b, 0x51, 0x11, 0x4f, 0x87, 0x16, 0x38, 0x74, 0x9b,
|
0x04, 0xfc, 0x71, 0x1e, 0xa8, 0x92, 0x30, 0xd2, 0xf1, 0xc5, 0xa8, 0x88, 0xa7, 0x43, 0x0b, 0x1c,
|
||||||
0xe5, 0x4c, 0xe7, 0xb5, 0x83, 0x94, 0x67, 0xf7, 0xf9, 0x23, 0x99, 0x89, 0x32, 0x3d, 0xd9, 0xb4,
|
0xba, 0xcd, 0x72, 0xa6, 0xf3, 0xda, 0x91, 0xca, 0xb3, 0xfb, 0xfc, 0xe1, 0xcc, 0x44, 0x99, 0x9e,
|
||||||
0xff, 0x41, 0x24, 0xd6, 0xbe, 0xcc, 0x71, 0xb9, 0x0d, 0x96, 0x1d, 0x1d, 0x2c, 0x3d, 0x29, 0x48,
|
0x6c, 0xda, 0xff, 0x20, 0x12, 0x6b, 0x5f, 0xe6, 0xb8, 0xdc, 0x06, 0xcb, 0x8e, 0x0e, 0x96, 0x9e,
|
||||||
0xb7, 0xa6, 0xc5, 0x2b, 0xfe, 0xf3, 0x5d, 0xc9, 0xd4, 0x2b, 0xc7, 0xcc, 0x73, 0xb9, 0xd6, 0x2b,
|
0x14, 0xa4, 0x5b, 0xd3, 0xe2, 0x15, 0xff, 0xf9, 0xae, 0x64, 0xea, 0x95, 0x03, 0xe7, 0xb9, 0x5c,
|
||||||
0x07, 0x0a, 0x51, 0xc8, 0xaf, 0x1c, 0x29, 0x44, 0x09, 0x57, 0xca, 0x4f, 0x15, 0xf2, 0x8a, 0x25,
|
0xeb, 0x95, 0x03, 0x85, 0x28, 0xe4, 0x57, 0x8e, 0x14, 0xa2, 0x84, 0x2b, 0xe5, 0xa7, 0x0a, 0x79,
|
||||||
0x9d, 0x1e, 0x08, 0x27, 0x3b, 0x0f, 0xf9, 0x4a, 0xbd, 0x73, 0x76, 0x27, 0xeb, 0x1d, 0x18, 0x03,
|
0xc5, 0x92, 0x4e, 0x0f, 0x84, 0x93, 0x9d, 0x87, 0x7c, 0xa5, 0xde, 0x39, 0xbb, 0x93, 0xf5, 0x0e,
|
||||||
0xc9, 0x3a, 0x98, 0xd6, 0x23, 0x54, 0x5d, 0x2e, 0xb8, 0x1e, 0xa8, 0x1a, 0x76, 0x44, 0xd1, 0xed,
|
0x8c, 0x81, 0x64, 0x1d, 0x4c, 0xeb, 0x11, 0xaa, 0x2e, 0x17, 0x5c, 0x0f, 0x54, 0x0d, 0x3b, 0xa2,
|
||||||
0xfc, 0xb8, 0xb2, 0x99, 0x20, 0x9f, 0x0d, 0x8b, 0x1e, 0x46, 0x86, 0x35, 0x58, 0xf1, 0xd3, 0xc9,
|
0xe8, 0x76, 0x7e, 0x5c, 0xd9, 0x4c, 0x90, 0xcf, 0x86, 0x45, 0x0f, 0x23, 0xc3, 0x1a, 0xac, 0xf8,
|
||||||
0x23, 0x2e, 0xf5, 0x84, 0x2f, 0x7f, 0x62, 0xd6, 0x39, 0x82, 0x62, 0x46, 0x95, 0xc4, 0x88, 0x87,
|
0xe9, 0xe4, 0x11, 0x97, 0x7a, 0xc2, 0x97, 0x3f, 0x31, 0xeb, 0x1c, 0x41, 0x31, 0xa3, 0x4a, 0x62,
|
||||||
0x65, 0x4a, 0x7d, 0xc5, 0xef, 0x6d, 0x12, 0xe5, 0x29, 0xb4, 0x02, 0xec, 0x47, 0x2c, 0xfc, 0x47,
|
0xc4, 0xc3, 0x32, 0xa5, 0xbe, 0xe2, 0x37, 0x38, 0x89, 0xf2, 0x14, 0x5a, 0x01, 0xf6, 0x23, 0x16,
|
||||||
0x18, 0xac, 0xee, 0x51, 0xef, 0x4a, 0x32, 0xc4, 0x72, 0x9f, 0xac, 0x55, 0x44, 0x70, 0xa4, 0xba,
|
0xfe, 0x23, 0x0c, 0x56, 0xf7, 0xa8, 0x77, 0x25, 0x19, 0x62, 0xb9, 0x4f, 0xd6, 0x2a, 0x22, 0x38,
|
||||||
0x67, 0x29, 0x12, 0x70, 0x0f, 0x8f, 0xf7, 0x6e, 0x40, 0x97, 0x28, 0x3e, 0x2e, 0x7e, 0x89, 0xe7,
|
0x52, 0xdd, 0xb3, 0x14, 0x09, 0xb8, 0x87, 0x07, 0x7d, 0x37, 0xa0, 0x4b, 0x14, 0x1f, 0x17, 0xbf,
|
||||||
0x2e, 0x5d, 0xa7, 0x8a, 0x74, 0x0c, 0xa1, 0x38, 0x3e, 0x8b, 0x5d, 0x3a, 0xf6, 0x36, 0x41, 0x27,
|
0xc4, 0x73, 0x97, 0xae, 0x53, 0x45, 0x3a, 0x86, 0x50, 0x1c, 0x9f, 0xc5, 0x2e, 0x1d, 0x7b, 0x9b,
|
||||||
0x8e, 0xc7, 0x68, 0xa4, 0x72, 0x7e, 0x0f, 0x05, 0x44, 0x25, 0x13, 0xf4, 0xfb, 0xdb, 0xd1, 0xab,
|
0xa0, 0x13, 0xc7, 0x63, 0x34, 0x52, 0x39, 0xbf, 0x87, 0x02, 0xa2, 0x92, 0x09, 0xfa, 0xfd, 0xed,
|
||||||
0x05, 0x91, 0x3d, 0xe5, 0xd5, 0x20, 0xfe, 0xa2, 0x22, 0x89, 0xd9, 0x22, 0x70, 0xf3, 0xf4, 0x2b,
|
0xe8, 0xd5, 0x82, 0xc8, 0x9e, 0xf2, 0x6a, 0x10, 0x7f, 0x5b, 0x91, 0xc4, 0x6c, 0x11, 0xb8, 0x79,
|
||||||
0xe5, 0xb9, 0x61, 0x83, 0x92, 0x7f, 0x3e, 0x37, 0xa4, 0xc9, 0x5e, 0x7a, 0xba, 0xe5, 0xde, 0x80,
|
0xfa, 0x95, 0xf2, 0xdc, 0xb0, 0x41, 0xc9, 0x3f, 0x9f, 0x1b, 0xd2, 0x64, 0x2f, 0x3d, 0xdd, 0x72,
|
||||||
0xc2, 0x85, 0xa7, 0x00, 0x65, 0x79, 0x21, 0xee, 0x11, 0xfc, 0x9f, 0x6c, 0x3e, 0xd4, 0x71, 0x3f,
|
0x6f, 0x40, 0xe1, 0xc2, 0x53, 0x80, 0xb2, 0xbc, 0x10, 0xf7, 0x08, 0xfe, 0x4f, 0x36, 0x1f, 0xea,
|
||||||
0x25, 0x57, 0x26, 0x8b, 0xdf, 0x7d, 0x4c, 0xc8, 0xd6, 0x71, 0x2b, 0x06, 0xf7, 0x65, 0xf0, 0x87,
|
0xb8, 0x9f, 0x92, 0x2b, 0x93, 0xc5, 0x2f, 0x40, 0x26, 0x64, 0xeb, 0xb8, 0x15, 0x83, 0xfb, 0x32,
|
||||||
0x5f, 0xff, 0x07, 0xda, 0x71, 0x61, 0x4f, 0x08, 0x56, 0x00, 0x00
|
0xf8, 0x13, 0xb0, 0xff, 0x03, 0x4b, 0x74, 0xff, 0x24, 0x12, 0x56, 0x00, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Autogenerated from wled00/data/settings_dmx.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_dmx.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_dmx_length = 1612;
|
const uint16_t PAGE_settings_dmx_length = 1612;
|
||||||
const uint8_t PAGE_settings_dmx[] PROGMEM = {
|
const uint8_t PAGE_settings_dmx[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x95, 0x57, 0xdb, 0x72, 0xdb, 0x36,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x95, 0x57, 0xdb, 0x72, 0xdb, 0x36,
|
||||||
0x10, 0x7d, 0xd7, 0x57, 0x20, 0x78, 0x88, 0xc9, 0x31, 0x43, 0x4a, 0x4e, 0x95, 0x36, 0x32, 0x49,
|
0x10, 0x7d, 0xd7, 0x57, 0x20, 0x78, 0x88, 0xc9, 0x31, 0x43, 0x4a, 0x4e, 0x95, 0x36, 0x32, 0x49,
|
||||||
0x37, 0x56, 0x5c, 0xdb, 0x1d, 0xdb, 0xf5, 0x44, 0x49, 0xd3, 0x4e, 0xd3, 0xe9, 0x40, 0xe4, 0x4a,
|
0x37, 0x56, 0x5c, 0xdb, 0x1d, 0xdb, 0xf5, 0x44, 0x49, 0xd3, 0x4e, 0xd3, 0xe9, 0x40, 0xe4, 0x4a,
|
||||||
0x44, 0x4c, 0x02, 0x2c, 0x00, 0x4a, 0x76, 0x2e, 0xff, 0xde, 0x05, 0x48, 0x5d, 0xec, 0xd8, 0x69,
|
0x44, 0x4c, 0x02, 0x2c, 0x00, 0x4a, 0x76, 0x2e, 0xff, 0xde, 0x05, 0x48, 0x5d, 0xec, 0xd8, 0x69,
|
||||||
@ -811,7 +811,7 @@ const uint8_t PAGE_settings_dmx[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_ui.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_ui.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_ui_length = 3090;
|
const uint16_t PAGE_settings_ui_length = 3090;
|
||||||
const uint8_t PAGE_settings_ui[] PROGMEM = {
|
const uint8_t PAGE_settings_ui[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x59, 0x6b, 0x73, 0xda, 0x48,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x59, 0x6b, 0x73, 0xda, 0x48,
|
||||||
0x16, 0xfd, 0xce, 0xaf, 0xe8, 0x74, 0x52, 0x1e, 0x54, 0x56, 0x04, 0x4e, 0x66, 0x6b, 0x13, 0x40,
|
0x16, 0xfd, 0xce, 0xaf, 0xe8, 0x74, 0x52, 0x1e, 0x54, 0x56, 0x04, 0x4e, 0x66, 0x6b, 0x13, 0x40,
|
||||||
0x78, 0x63, 0xc7, 0x93, 0x78, 0xca, 0xd9, 0x64, 0x83, 0xbd, 0x99, 0xad, 0xac, 0xcb, 0x23, 0xa4,
|
0x78, 0x63, 0xc7, 0x93, 0x78, 0xca, 0xd9, 0x64, 0x83, 0xbd, 0x99, 0xad, 0xac, 0xcb, 0x23, 0xa4,
|
||||||
0x06, 0x3a, 0x16, 0x92, 0x46, 0xdd, 0x32, 0x66, 0x09, 0xff, 0x7d, 0xcf, 0xed, 0x96, 0x40, 0x60,
|
0x06, 0x3a, 0x16, 0x92, 0x46, 0xdd, 0x32, 0x66, 0x09, 0xff, 0x7d, 0xcf, 0xed, 0x96, 0x40, 0x60,
|
||||||
@ -1011,7 +1011,7 @@ const uint8_t PAGE_settings_ui[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_sync.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_sync.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_sync_length = 3153;
|
const uint16_t PAGE_settings_sync_length = 3153;
|
||||||
const uint8_t PAGE_settings_sync[] PROGMEM = {
|
const uint8_t PAGE_settings_sync[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x9d, 0x5a, 0x6d, 0x77, 0xda, 0xb8,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x9d, 0x5a, 0x6d, 0x77, 0xda, 0xb8,
|
||||||
0x12, 0xfe, 0xee, 0x5f, 0xa1, 0xf8, 0xc3, 0x2e, 0x6c, 0x08, 0x18, 0x12, 0xd2, 0x94, 0x62, 0xf7,
|
0x12, 0xfe, 0xee, 0x5f, 0xa1, 0xf8, 0xc3, 0x2e, 0x6c, 0x08, 0x18, 0x12, 0xd2, 0x94, 0x62, 0xf7,
|
||||||
0x86, 0x90, 0x26, 0xec, 0x36, 0x0d, 0x85, 0x64, 0x5f, 0xce, 0xb9, 0xe7, 0xec, 0x11, 0xb6, 0x00,
|
0x86, 0x90, 0x26, 0xec, 0x36, 0x0d, 0x85, 0x64, 0x5f, 0xce, 0xb9, 0xe7, 0xec, 0x11, 0xb6, 0x00,
|
||||||
0x25, 0xb6, 0xe5, 0xb5, 0xe5, 0xbc, 0x9c, 0x6e, 0xff, 0xfb, 0x9d, 0x91, 0x6c, 0x03, 0x06, 0x02,
|
0x25, 0xb6, 0xe5, 0xb5, 0xe5, 0xbc, 0x9c, 0x6e, 0xff, 0xfb, 0x9d, 0x91, 0x6c, 0x03, 0x06, 0x02,
|
||||||
@ -1215,7 +1215,7 @@ const uint8_t PAGE_settings_sync[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_time.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_time.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_time_length = 3302;
|
const uint16_t PAGE_settings_time_length = 3302;
|
||||||
const uint8_t PAGE_settings_time[] PROGMEM = {
|
const uint8_t PAGE_settings_time[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xd5, 0x1a, 0x6b, 0x57, 0xdb, 0x3a,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xd5, 0x1a, 0x6b, 0x57, 0xdb, 0x3a,
|
||||||
0xf2, 0x7b, 0x7e, 0x85, 0x50, 0x7b, 0xb8, 0xf1, 0xc5, 0x79, 0x42, 0x5a, 0x48, 0x62, 0x77, 0x43,
|
0xf2, 0x7b, 0x7e, 0x85, 0x50, 0x7b, 0xb8, 0xf1, 0xc5, 0x79, 0x42, 0x5a, 0x48, 0x62, 0x77, 0x43,
|
||||||
0x48, 0x0b, 0x2d, 0x09, 0x9c, 0x26, 0xbd, 0xec, 0xf6, 0x71, 0x6e, 0x15, 0x5b, 0x49, 0x0c, 0x8e,
|
0x48, 0x0b, 0x2d, 0x09, 0x9c, 0x26, 0xbd, 0xec, 0xf6, 0x71, 0x6e, 0x15, 0x5b, 0x49, 0x0c, 0x8e,
|
||||||
0xe4, 0xb5, 0x65, 0x02, 0x4b, 0xf9, 0xef, 0x3b, 0x92, 0x1c, 0xe7, 0x85, 0x81, 0xf6, 0xde, 0xfd,
|
0xe4, 0xb5, 0x65, 0x02, 0x4b, 0xf9, 0xef, 0x3b, 0x92, 0x1c, 0xe7, 0x85, 0x81, 0xf6, 0xde, 0xfd,
|
||||||
@ -1426,166 +1426,166 @@ const uint8_t PAGE_settings_time[] PROGMEM = {
|
|||||||
|
|
||||||
|
|
||||||
// Autogenerated from wled00/data/settings_sec.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_sec.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_sec_length = 2406;
|
const uint16_t PAGE_settings_sec_length = 2405;
|
||||||
const uint8_t PAGE_settings_sec[] PROGMEM = {
|
const uint8_t PAGE_settings_sec[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xa5, 0x58, 0x6d, 0x53, 0xdb, 0x48,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xa5, 0x58, 0x6d, 0x53, 0xdb, 0x48,
|
||||||
0x12, 0xfe, 0xee, 0x5f, 0x31, 0x4c, 0xaa, 0x58, 0xeb, 0x22, 0x2c, 0x43, 0x72, 0x5b, 0x09, 0x20,
|
0x12, 0xfe, 0xee, 0x5f, 0x31, 0x4c, 0xaa, 0x58, 0xeb, 0x22, 0x2c, 0x43, 0x72, 0x5b, 0x09, 0x20,
|
||||||
0xe7, 0x20, 0x90, 0x0d, 0x57, 0x10, 0x28, 0x6c, 0x36, 0x77, 0x95, 0x4b, 0xa5, 0xc6, 0xd2, 0xd8,
|
0xe7, 0x20, 0x90, 0x0d, 0x57, 0x10, 0x28, 0x6c, 0x36, 0x77, 0x95, 0x4b, 0xa5, 0xc6, 0xd2, 0xd8,
|
||||||
0x9a, 0x58, 0xd6, 0x68, 0x67, 0x46, 0x38, 0xbe, 0xec, 0xfe, 0xf7, 0x7b, 0x7a, 0x24, 0xd9, 0x86,
|
0x9a, 0x58, 0xd6, 0x68, 0x67, 0x46, 0x38, 0xbe, 0xec, 0xfe, 0xf7, 0x7b, 0x7a, 0x24, 0xd9, 0x86,
|
||||||
0x40, 0x52, 0xa9, 0xfb, 0x00, 0xb6, 0x46, 0x33, 0xfd, 0xf2, 0x74, 0xf7, 0xd3, 0x3d, 0x3e, 0xdc,
|
0x40, 0x52, 0xa9, 0xfb, 0x00, 0xf6, 0xbc, 0x75, 0x4f, 0x3f, 0xdd, 0xfd, 0x74, 0x8f, 0x0f, 0xb7,
|
||||||
0x3a, 0xb9, 0x7c, 0x3d, 0xfa, 0xf7, 0xd5, 0x29, 0xcb, 0xdc, 0x3c, 0x1f, 0x1c, 0xd2, 0x7f, 0x96,
|
0x4e, 0x2e, 0x5f, 0x8f, 0xfe, 0x7d, 0x75, 0xca, 0x32, 0x37, 0xcf, 0x07, 0x87, 0xf4, 0x9f, 0xe5,
|
||||||
0x8b, 0x62, 0x1a, 0x73, 0x59, 0x70, 0x3c, 0x4b, 0x91, 0x0e, 0x0e, 0xe7, 0xd2, 0x09, 0x56, 0x88,
|
0xa2, 0x98, 0xc6, 0x5c, 0x16, 0x1c, 0x63, 0x29, 0xd2, 0xc1, 0xe1, 0x5c, 0x3a, 0xc1, 0x0a, 0x31,
|
||||||
0xb9, 0x8c, 0xf9, 0xad, 0x92, 0x8b, 0x52, 0x1b, 0xc7, 0x59, 0xa2, 0x0b, 0x27, 0x0b, 0x17, 0xf3,
|
0x97, 0x31, 0xbf, 0x55, 0x72, 0x51, 0x6a, 0xe3, 0x38, 0x4b, 0x74, 0xe1, 0x64, 0xe1, 0x62, 0xbe,
|
||||||
0x85, 0x4a, 0x5d, 0x16, 0xff, 0xbd, 0xdf, 0xe7, 0x83, 0x4e, 0xbd, 0xb5, 0x73, 0xef, 0x5d, 0x2a,
|
0x50, 0xa9, 0xcb, 0xe2, 0xbf, 0xf7, 0xfb, 0x7c, 0xd0, 0xa9, 0xb7, 0x76, 0xee, 0xad, 0xa5, 0xf2,
|
||||||
0x6f, 0x55, 0x22, 0x77, 0xfc, 0x43, 0xa8, 0x0a, 0xe5, 0x94, 0xc8, 0x77, 0x6c, 0x22, 0x72, 0x19,
|
0x56, 0x25, 0x72, 0xc7, 0x0f, 0x42, 0x55, 0x28, 0xa7, 0x44, 0xbe, 0x63, 0x13, 0x91, 0xcb, 0x78,
|
||||||
0xef, 0x86, 0x73, 0xf1, 0x45, 0xcd, 0xab, 0xf9, 0xea, 0xb9, 0xb2, 0xd2, 0xf8, 0x07, 0x31, 0xc6,
|
0x37, 0x9c, 0x8b, 0x2f, 0x6a, 0x5e, 0xcd, 0x57, 0xe3, 0xca, 0x4a, 0xe3, 0x07, 0x62, 0x8c, 0x71,
|
||||||
0x73, 0xa1, 0x39, 0xeb, 0xdc, 0x53, 0xdd, 0x18, 0x94, 0x64, 0xc2, 0x58, 0x09, 0x25, 0x95, 0x9b,
|
0xa1, 0x39, 0xeb, 0xdc, 0x53, 0xdd, 0x5c, 0x28, 0xc9, 0x84, 0xb1, 0x12, 0x4a, 0x2a, 0x37, 0xd9,
|
||||||
0xec, 0xbc, 0xc0, 0xaa, 0x53, 0x2e, 0x97, 0x83, 0x0b, 0x65, 0x13, 0x36, 0x94, 0xce, 0xa9, 0x62,
|
0x79, 0x81, 0x59, 0xa7, 0x5c, 0x2e, 0x07, 0x17, 0xca, 0x26, 0x6c, 0x28, 0x9d, 0x53, 0xc5, 0xd4,
|
||||||
0x6a, 0x0f, 0xa3, 0x7a, 0xf1, 0xd0, 0x26, 0x46, 0x95, 0x6e, 0xd0, 0xb9, 0x15, 0x86, 0xe5, 0x3a,
|
0x1e, 0x46, 0xf5, 0xe4, 0xa1, 0x4d, 0x8c, 0x2a, 0xdd, 0xa0, 0x73, 0x2b, 0x0c, 0xcb, 0x75, 0xa2,
|
||||||
0x51, 0x65, 0xe8, 0xd4, 0x5c, 0xea, 0xca, 0x85, 0x69, 0x9c, 0xea, 0xa4, 0x9a, 0xc3, 0xdc, 0x10,
|
0xca, 0xd0, 0xa9, 0xb9, 0xd4, 0x95, 0x0b, 0xd3, 0x38, 0xd5, 0x49, 0x35, 0xc7, 0x75, 0x43, 0x2c,
|
||||||
0x2f, 0xe2, 0xad, 0xdd, 0x83, 0x49, 0x55, 0x24, 0x4e, 0xe9, 0x82, 0xbd, 0xed, 0x06, 0x5f, 0x17,
|
0xc4, 0x5b, 0xbb, 0x07, 0x93, 0xaa, 0x48, 0x9c, 0xd2, 0x05, 0x7b, 0xdb, 0x0d, 0xbe, 0x2e, 0x54,
|
||||||
0xaa, 0x48, 0xf5, 0xa2, 0xa7, 0x4b, 0x59, 0x74, 0x79, 0xe6, 0x5c, 0x69, 0xf7, 0xa3, 0x68, 0x56,
|
0x91, 0xea, 0x45, 0x4f, 0x97, 0xb2, 0xe8, 0xf2, 0xcc, 0xb9, 0xd2, 0xee, 0x47, 0xd1, 0xac, 0xd0,
|
||||||
0xe8, 0xde, 0x22, 0x97, 0x69, 0x6f, 0x2a, 0xa3, 0x89, 0x14, 0xae, 0x32, 0xd2, 0x46, 0xb6, 0xd1,
|
0xbd, 0x45, 0x2e, 0xd3, 0xde, 0x54, 0x46, 0x13, 0x29, 0x5c, 0x65, 0xa4, 0x8d, 0x6c, 0xa3, 0x33,
|
||||||
0x19, 0x3d, 0xb1, 0x32, 0xa9, 0x8c, 0x72, 0xcb, 0x9d, 0x76, 0x89, 0x07, 0x7f, 0xad, 0x84, 0x1e,
|
0x7a, 0x62, 0x65, 0x52, 0x19, 0xe5, 0x96, 0x3b, 0xed, 0x14, 0x0f, 0xfe, 0x5a, 0x09, 0x3d, 0xbe,
|
||||||
0xdf, 0x17, 0xba, 0x3a, 0xc8, 0x43, 0xfe, 0xc9, 0xca, 0x7c, 0xb2, 0xb9, 0xfb, 0xe6, 0x9b, 0xdd,
|
0x2f, 0x74, 0x75, 0x90, 0x87, 0xfc, 0x93, 0x95, 0xf9, 0x64, 0x73, 0xf7, 0xcd, 0x37, 0xbb, 0xab,
|
||||||
0x55, 0x99, 0x0a, 0x27, 0x1f, 0xda, 0x3b, 0x3d, 0x4b, 0xbb, 0x32, 0xf8, 0x6a, 0x24, 0xec, 0x29,
|
0x32, 0x15, 0x4e, 0x3e, 0xb4, 0x77, 0x7a, 0x96, 0x76, 0x65, 0xf0, 0xd5, 0x48, 0xdc, 0xa7, 0x60,
|
||||||
0x18, 0x19, 0xe7, 0x4e, 0x73, 0x49, 0x9e, 0x1d, 0x2f, 0xfd, 0xab, 0xf5, 0x56, 0x65, 0x2f, 0xc7,
|
0x74, 0x39, 0x77, 0x9a, 0x4b, 0xb2, 0xec, 0x78, 0xe9, 0x97, 0xd6, 0x5b, 0x95, 0xbd, 0x1c, 0x7f,
|
||||||
0x9f, 0x37, 0x36, 0xcb, 0xed, 0x6d, 0xae, 0xc7, 0x9f, 0x65, 0xe2, 0x78, 0x1c, 0xbb, 0x65, 0x29,
|
0xde, 0xd8, 0x2c, 0xb7, 0xb7, 0xb9, 0x1e, 0x7f, 0x96, 0x89, 0xe3, 0x71, 0xec, 0x96, 0xa5, 0xd4,
|
||||||
0xf5, 0x84, 0xd6, 0xb6, 0x8e, 0x8c, 0x11, 0xcb, 0x9e, 0xb2, 0xfe, 0xf3, 0x8e, 0x84, 0x5c, 0x8b,
|
0x13, 0x9a, 0xdb, 0x3a, 0x32, 0x46, 0x2c, 0x7b, 0xca, 0xfa, 0xcf, 0x3b, 0x12, 0x72, 0x2d, 0xd2,
|
||||||
0xf4, 0x9f, 0xc3, 0xae, 0x0c, 0x5d, 0xbc, 0xd5, 0x0f, 0xbe, 0xe6, 0xd2, 0x31, 0x1d, 0xa7, 0xbd,
|
0x7f, 0x0e, 0xbb, 0x32, 0x74, 0xf1, 0x56, 0x3f, 0xf8, 0x9a, 0x4b, 0xc7, 0x74, 0x9c, 0xf6, 0x12,
|
||||||
0xc4, 0x00, 0x0e, 0xd9, 0xa8, 0xed, 0xf2, 0x1a, 0x76, 0x1e, 0x1c, 0xe8, 0x1e, 0xbc, 0x3c, 0x72,
|
0x03, 0x38, 0x64, 0xa3, 0xb6, 0xcb, 0x6b, 0xd8, 0x79, 0x70, 0xa0, 0x7b, 0xb0, 0xf2, 0xc8, 0x39,
|
||||||
0xce, 0xa8, 0x71, 0xe5, 0x24, 0x5e, 0x98, 0x84, 0x87, 0x32, 0x08, 0xef, 0xaf, 0x93, 0x6e, 0xf8,
|
0xa3, 0xc6, 0x95, 0x93, 0x58, 0x30, 0x09, 0x0f, 0x65, 0x10, 0xde, 0x9f, 0x27, 0xdd, 0xb0, 0xcd,
|
||||||
0xe6, 0xe4, 0x17, 0x17, 0x7d, 0x16, 0xb7, 0xa2, 0x15, 0xf0, 0xcd, 0x46, 0x61, 0x97, 0x05, 0x44,
|
0xc9, 0x2f, 0x2e, 0xfa, 0x2c, 0x6e, 0x45, 0x2b, 0xe0, 0x9b, 0x8d, 0xc2, 0x2e, 0x0b, 0x88, 0x70,
|
||||||
0xb8, 0x20, 0x4c, 0x7b, 0x63, 0x9d, 0x2e, 0x7b, 0xa2, 0x04, 0x3e, 0xe9, 0xeb, 0x4c, 0xe5, 0x69,
|
0x41, 0x98, 0xf6, 0xc6, 0x3a, 0x5d, 0xf6, 0x44, 0x09, 0x7c, 0xd2, 0xd7, 0x99, 0xca, 0xd3, 0xae,
|
||||||
0x57, 0xd3, 0x7e, 0x91, 0xa6, 0xa7, 0xb7, 0xb0, 0xe2, 0x5c, 0x59, 0x24, 0xa3, 0x34, 0x5d, 0x4e,
|
0xa6, 0xfd, 0x22, 0x4d, 0x4f, 0x6f, 0x71, 0x8b, 0x73, 0x65, 0x11, 0x8c, 0xd2, 0x74, 0x39, 0xdd,
|
||||||
0x36, 0xf3, 0xb0, 0x1b, 0xc4, 0x83, 0xaf, 0xbf, 0x49, 0xf7, 0x7b, 0x37, 0x08, 0x21, 0xf3, 0x38,
|
0x99, 0x87, 0xdd, 0x20, 0x1e, 0x7c, 0xfd, 0x4d, 0xba, 0xdf, 0xbb, 0x41, 0x08, 0x99, 0xc7, 0xc9,
|
||||||
0x99, 0xbd, 0x51, 0xb9, 0xa4, 0x1c, 0xeb, 0x12, 0x82, 0x7c, 0x9c, 0xcc, 0x92, 0xc9, 0x94, 0x07,
|
0xec, 0x8d, 0xca, 0x25, 0xc5, 0x58, 0x97, 0x10, 0xe4, 0xe3, 0x64, 0x96, 0x4c, 0xa6, 0x3c, 0x78,
|
||||||
0x8f, 0xbe, 0x2d, 0x11, 0x6d, 0xe9, 0x10, 0xd4, 0xe0, 0xaf, 0x87, 0xf5, 0x48, 0x63, 0xb4, 0x81,
|
0x74, 0xb5, 0x84, 0xb7, 0xa5, 0x83, 0x53, 0x83, 0xbf, 0x1e, 0xd6, 0x23, 0x8d, 0xd1, 0x06, 0xe6,
|
||||||
0x7b, 0xd0, 0x83, 0x4a, 0xb0, 0x3a, 0x97, 0xbd, 0x5c, 0x4f, 0xbb, 0xfc, 0x94, 0xd6, 0x59, 0x03,
|
0x41, 0x0f, 0x32, 0xc1, 0xea, 0x5c, 0xf6, 0x72, 0x3d, 0xed, 0xf2, 0x53, 0x9a, 0x67, 0x0d, 0x78,
|
||||||
0x1e, 0x22, 0xce, 0x26, 0x10, 0xed, 0x61, 0x40, 0xea, 0x1b, 0xc0, 0x75, 0xde, 0xac, 0x03, 0x7d,
|
0xf0, 0x38, 0x9b, 0x40, 0xb4, 0x87, 0x01, 0xa1, 0x6f, 0x00, 0xd7, 0x79, 0x33, 0x0f, 0xf4, 0x71,
|
||||||
0x1c, 0x9c, 0xa8, 0x69, 0x65, 0x84, 0x47, 0xbb, 0x86, 0x81, 0x4d, 0x84, 0xa2, 0xac, 0xfb, 0x4f,
|
0x70, 0xa2, 0xa6, 0x95, 0x11, 0x1e, 0xed, 0x1a, 0x06, 0x36, 0x11, 0x8a, 0xa2, 0xee, 0x3f, 0xc5,
|
||||||
0x71, 0x56, 0x24, 0x7a, 0x5e, 0x02, 0x74, 0xc9, 0x4a, 0x31, 0x95, 0x0c, 0x29, 0x21, 0xb6, 0x90,
|
0x59, 0x91, 0xe8, 0x79, 0x09, 0xd0, 0x25, 0x2b, 0xc5, 0x54, 0x32, 0x84, 0x84, 0xd8, 0x42, 0x2c,
|
||||||
0x0b, 0x1b, 0x01, 0xb2, 0x99, 0x5e, 0x8c, 0xb4, 0xb0, 0xae, 0x8e, 0xd1, 0x6e, 0xf0, 0x95, 0x72,
|
0x6c, 0x38, 0xc8, 0x66, 0x7a, 0x31, 0xd2, 0xc2, 0xba, 0xda, 0x47, 0xbb, 0xc1, 0x57, 0x8a, 0x7d,
|
||||||
0x5f, 0xc7, 0xde, 0x0b, 0x47, 0x2f, 0x7c, 0x58, 0x54, 0x01, 0x93, 0xdf, 0x8e, 0x2e, 0xce, 0x63,
|
0x1d, 0x7b, 0x2b, 0x1c, 0x2d, 0x78, 0xb7, 0xa8, 0x02, 0x57, 0x7e, 0x3b, 0xba, 0x38, 0x8f, 0x25,
|
||||||
0x09, 0x5f, 0x92, 0x5c, 0x58, 0x4b, 0x8e, 0x90, 0x57, 0x5d, 0xf7, 0xaa, 0x71, 0x65, 0x9f, 0x93,
|
0x6c, 0x49, 0x72, 0x61, 0x2d, 0x19, 0x42, 0x56, 0x75, 0xdd, 0xab, 0xc6, 0x94, 0x7d, 0x4e, 0xd2,
|
||||||
0x34, 0x44, 0x21, 0xc9, 0xa5, 0x30, 0xa3, 0xba, 0x72, 0xba, 0x4d, 0x05, 0xf9, 0xd8, 0xb8, 0x25,
|
0xe0, 0x85, 0x24, 0x97, 0xc2, 0x8c, 0xea, 0xcc, 0xe9, 0x36, 0x19, 0xe4, 0x7d, 0xe3, 0x96, 0x30,
|
||||||
0x9c, 0x14, 0x85, 0x9a, 0x7b, 0x7b, 0x63, 0x5e, 0xe8, 0x02, 0x9e, 0x35, 0x3b, 0x62, 0xc0, 0xd5,
|
0x52, 0x14, 0x6a, 0xee, 0xef, 0x1b, 0xf3, 0x42, 0x17, 0xb0, 0xac, 0xd9, 0x11, 0x03, 0xae, 0xf6,
|
||||||
0x1e, 0xea, 0xb6, 0x06, 0x22, 0xb1, 0x37, 0xf5, 0x19, 0x39, 0xd7, 0xb7, 0x94, 0x18, 0x5e, 0x11,
|
0x50, 0xb7, 0xbd, 0x20, 0x02, 0x7b, 0x53, 0x9f, 0x91, 0x73, 0x7d, 0x4b, 0x81, 0xe1, 0x15, 0x01,
|
||||||
0x80, 0xdd, 0x7b, 0xd9, 0xef, 0x6f, 0xb8, 0x53, 0x95, 0x04, 0x1a, 0xc5, 0x82, 0xfc, 0x69, 0x9d,
|
0xd8, 0xbd, 0x97, 0xfd, 0xfe, 0x86, 0x39, 0x55, 0x49, 0xa0, 0x91, 0x2f, 0xc8, 0x9e, 0xd6, 0x98,
|
||||||
0x29, 0xe4, 0x82, 0xfd, 0xeb, 0xe2, 0xfc, 0x2d, 0xea, 0xf2, 0x5a, 0xfe, 0x51, 0x49, 0xeb, 0x0e,
|
0x42, 0x2e, 0xd8, 0xbf, 0x2e, 0xce, 0xdf, 0x22, 0x2f, 0xaf, 0xe5, 0x1f, 0x95, 0xb4, 0xee, 0xe0,
|
||||||
0xbe, 0x13, 0xf8, 0x0d, 0xd5, 0x6b, 0x74, 0x5c, 0xa6, 0x2c, 0xb4, 0xdb, 0x12, 0x91, 0x92, 0x23,
|
0x3b, 0x8e, 0xdf, 0x50, 0xbd, 0x46, 0xc7, 0x65, 0xca, 0x42, 0xbb, 0x2d, 0xe1, 0x29, 0x39, 0x42,
|
||||||
0xe4, 0x5d, 0xe8, 0x57, 0xac, 0x43, 0x59, 0xdb, 0x41, 0xfc, 0x9c, 0xac, 0x08, 0xbe, 0x1b, 0xe7,
|
0xdc, 0x85, 0x7e, 0xc6, 0x3a, 0xa4, 0xb5, 0x1d, 0xc4, 0xcf, 0xe9, 0x16, 0xc1, 0x77, 0xfd, 0xbc,
|
||||||
0xb5, 0x5c, 0xb9, 0x29, 0x58, 0x92, 0x8c, 0x64, 0x16, 0x6e, 0xb5, 0x02, 0xea, 0x02, 0xbe, 0xba,
|
0x96, 0x2b, 0x37, 0x05, 0x4b, 0x92, 0x91, 0xcc, 0xc2, 0xad, 0x56, 0x40, 0x9d, 0xc0, 0x57, 0x97,
|
||||||
0x1c, 0x8e, 0x90, 0xe1, 0x51, 0xed, 0x10, 0x62, 0x40, 0x9e, 0x14, 0xde, 0x93, 0x37, 0xda, 0xcc,
|
0xc3, 0x11, 0x22, 0x3c, 0xaa, 0x0d, 0x82, 0x0f, 0xc8, 0x92, 0xc2, 0x5b, 0xf2, 0x46, 0x9b, 0xf9,
|
||||||
0x4f, 0x10, 0xc9, 0x83, 0xa6, 0x2a, 0x8b, 0x26, 0xa9, 0xbb, 0x9c, 0xe2, 0x8b, 0x44, 0xe9, 0x51,
|
0x09, 0x3c, 0x79, 0xd0, 0x64, 0x65, 0xd1, 0x04, 0x75, 0x97, 0x93, 0x7f, 0x11, 0x28, 0x3d, 0x0a,
|
||||||
0xc2, 0xd8, 0x0f, 0xfd, 0x8f, 0x61, 0x8d, 0x3a, 0xbd, 0x2b, 0x02, 0xac, 0xdf, 0x8a, 0xbc, 0x02,
|
0x18, 0xfb, 0xa1, 0xff, 0x31, 0xac, 0x51, 0xa7, 0xb5, 0x22, 0xc0, 0xfc, 0xad, 0xc8, 0x2b, 0x50,
|
||||||
0x45, 0xf2, 0x70, 0x6b, 0x77, 0x0d, 0x59, 0x92, 0xc9, 0x64, 0xf6, 0xae, 0x9a, 0xaf, 0xeb, 0x7c,
|
0x24, 0x0f, 0xb7, 0x76, 0xd7, 0x90, 0x25, 0x99, 0x4c, 0x66, 0xef, 0xaa, 0xf9, 0x3a, 0xcf, 0xb7,
|
||||||
0xab, 0xbb, 0x25, 0xc9, 0x85, 0xde, 0x4c, 0x2e, 0x7b, 0x08, 0x55, 0x92, 0x75, 0xa3, 0x0f, 0xfd,
|
0xba, 0x5b, 0x92, 0x4c, 0xe8, 0xcd, 0xe4, 0xb2, 0x07, 0x57, 0x25, 0x59, 0x37, 0xfa, 0xd0, 0xdf,
|
||||||
0x9d, 0x97, 0x1f, 0xa3, 0x00, 0xc5, 0xfe, 0x81, 0x1f, 0xc3, 0x5e, 0x5b, 0x8a, 0x84, 0x4a, 0x70,
|
0x79, 0xf9, 0x31, 0x0a, 0x90, 0xec, 0x1f, 0xf8, 0x31, 0xee, 0x6b, 0x4b, 0x91, 0x50, 0x0a, 0x8e,
|
||||||
0x24, 0xc6, 0xf8, 0x7f, 0x0a, 0x22, 0x87, 0x8b, 0x7c, 0x98, 0xa9, 0x89, 0xc3, 0xe7, 0x6b, 0x30,
|
0xc4, 0x18, 0xff, 0x4f, 0x41, 0xe4, 0x30, 0x91, 0x0f, 0x33, 0x35, 0x71, 0xf8, 0x7c, 0x0d, 0x66,
|
||||||
0xbb, 0xd1, 0x39, 0xbe, 0x1d, 0xe5, 0xf4, 0x7c, 0x25, 0xc0, 0xd7, 0xb4, 0x2e, 0x4a, 0x7b, 0xae,
|
0x37, 0x3a, 0xc7, 0xb7, 0xa3, 0x9c, 0xc6, 0x57, 0x02, 0x7c, 0x4d, 0xf3, 0xa2, 0xb4, 0xe7, 0x3a,
|
||||||
0x93, 0x19, 0x1d, 0x01, 0x79, 0xfb, 0x22, 0x1e, 0x36, 0x92, 0xae, 0x90, 0xa1, 0x37, 0x65, 0xf3,
|
0x99, 0xd1, 0x11, 0x90, 0xb7, 0x4f, 0xe2, 0x61, 0x23, 0xe9, 0x0a, 0x11, 0x7a, 0x53, 0x36, 0x5f,
|
||||||
0xe5, 0x44, 0x2f, 0x0a, 0x2f, 0x17, 0x01, 0xe1, 0x6f, 0xf5, 0x9c, 0x36, 0x80, 0x5d, 0xf4, 0xe2,
|
0x4e, 0xf4, 0xa2, 0xf0, 0x72, 0xe1, 0x10, 0xfe, 0x56, 0xcf, 0x69, 0x03, 0xd8, 0x45, 0x2f, 0xce,
|
||||||
0x5c, 0x7a, 0x05, 0xfe, 0xbb, 0xdf, 0xed, 0xbf, 0x5d, 0xab, 0x69, 0xb6, 0x5a, 0x6e, 0xce, 0x9e,
|
0xa5, 0x57, 0xe0, 0xbf, 0xfb, 0xdd, 0xfe, 0xdb, 0xb5, 0x9a, 0x66, 0xab, 0xe9, 0xe6, 0xec, 0x19,
|
||||||
0x21, 0x50, 0x86, 0x16, 0x4f, 0x24, 0x55, 0x00, 0xff, 0x88, 0x24, 0x4e, 0xf2, 0x2a, 0x95, 0xb6,
|
0x1c, 0x65, 0x68, 0xf2, 0x44, 0x52, 0x06, 0xf0, 0x8f, 0x08, 0xe2, 0x24, 0xaf, 0x52, 0x69, 0xbb,
|
||||||
0xbb, 0xf2, 0x2e, 0x08, 0xfe, 0xfc, 0xb3, 0x79, 0x42, 0xb9, 0xd2, 0xe7, 0x89, 0x9c, 0x88, 0x2a,
|
0x2b, 0xeb, 0x82, 0xe0, 0xcf, 0x3f, 0x9b, 0x11, 0xd2, 0x95, 0x3e, 0x4f, 0xe4, 0x44, 0x54, 0xb9,
|
||||||
0x77, 0x28, 0x7a, 0xd4, 0xc2, 0x46, 0x99, 0xdc, 0xad, 0x71, 0x40, 0x25, 0xef, 0x31, 0x0d, 0xb8,
|
0x43, 0xd2, 0x23, 0x17, 0x36, 0xd2, 0xe4, 0x6e, 0x8e, 0x03, 0x2a, 0x79, 0x8f, 0x69, 0xc0, 0xbd,
|
||||||
0xb7, 0xa8, 0x13, 0x88, 0x13, 0xe7, 0x7f, 0xe2, 0x4f, 0x25, 0x51, 0xeb, 0x43, 0x3b, 0x82, 0xa7,
|
0x45, 0x1d, 0x40, 0x9c, 0x38, 0xff, 0x13, 0x7f, 0x2a, 0x89, 0x5a, 0x1f, 0xda, 0x11, 0x3c, 0xed,
|
||||||
0x5d, 0xfe, 0xfe, 0xfc, 0xf4, 0x04, 0x24, 0x6a, 0xd3, 0x57, 0x1c, 0x75, 0x83, 0xdd, 0x36, 0x0d,
|
0xf2, 0xf7, 0xe7, 0xa7, 0x27, 0x20, 0x51, 0x9b, 0xbe, 0xe2, 0xc8, 0x1b, 0xec, 0xb6, 0x69, 0xb0,
|
||||||
0x36, 0xf4, 0x0d, 0x91, 0x7c, 0x9c, 0xc2, 0xb8, 0x8f, 0x4d, 0x0d, 0xb3, 0xa3, 0xef, 0xf8, 0xb2,
|
0xa1, 0x6f, 0x88, 0xe0, 0xe3, 0xe4, 0xc6, 0x7d, 0x6c, 0x6a, 0x98, 0x1d, 0x75, 0xc7, 0xa7, 0x0d,
|
||||||
0x81, 0xa9, 0xda, 0xe9, 0x44, 0xe7, 0xdb, 0xdb, 0x5d, 0xdf, 0x8b, 0xfa, 0x61, 0xd7, 0x37, 0xab,
|
0xae, 0xaa, 0x9d, 0x4e, 0x74, 0xbe, 0xbd, 0xdd, 0xf5, 0xb5, 0xa8, 0x1f, 0x76, 0x7d, 0xb1, 0x8a,
|
||||||
0x98, 0x76, 0xe4, 0x43, 0xa7, 0x0d, 0x10, 0x24, 0xe5, 0x67, 0x4e, 0xce, 0x29, 0xad, 0x93, 0xb3,
|
0x69, 0x47, 0x3e, 0x74, 0xda, 0x00, 0x41, 0x52, 0x7e, 0xe6, 0xe4, 0x9c, 0xc2, 0x3a, 0x39, 0x2b,
|
||||||
0x92, 0x7b, 0x57, 0xeb, 0x6d, 0x38, 0x3f, 0x2f, 0xc1, 0x23, 0xe4, 0x0e, 0xbb, 0xd0, 0xa9, 0xec,
|
0xb9, 0x37, 0xb5, 0xde, 0x86, 0xf3, 0xf3, 0x12, 0x3c, 0x42, 0xe6, 0xb0, 0x0b, 0x9d, 0xca, 0x1e,
|
||||||
0xb1, 0x2b, 0x54, 0xac, 0x95, 0x4c, 0x52, 0x1c, 0x19, 0xd9, 0xc6, 0xce, 0xae, 0xc0, 0x14, 0xe1,
|
0xbb, 0x42, 0xc6, 0x5a, 0xc9, 0x24, 0xf9, 0x91, 0xd1, 0xdd, 0xd8, 0xd9, 0x15, 0x98, 0x22, 0xbc,
|
||||||
0x1d, 0x89, 0xf6, 0xae, 0xc4, 0xd0, 0x4b, 0x0b, 0x02, 0xda, 0xe5, 0x59, 0x9e, 0xc4, 0xbf, 0xf2,
|
0x23, 0xd1, 0xde, 0x95, 0x18, 0x7a, 0x69, 0x41, 0x40, 0xbb, 0x3c, 0xcb, 0x93, 0xf8, 0x57, 0xbe,
|
||||||
0xdd, 0x0f, 0xcd, 0x8f, 0x3f, 0xf5, 0xaf, 0xf7, 0x39, 0xdc, 0x5d, 0x37, 0xaf, 0xc8, 0xf6, 0x3e,
|
0xfa, 0xa1, 0xf8, 0xf1, 0xa7, 0x7e, 0x79, 0x9f, 0xc3, 0xdc, 0x75, 0xf1, 0x8a, 0x6c, 0xef, 0xb3,
|
||||||
0xdb, 0x57, 0x65, 0xfc, 0x2b, 0xf7, 0xf8, 0x76, 0x0e, 0xa3, 0xa6, 0xe5, 0x1e, 0x7a, 0x6e, 0x18,
|
0x7d, 0x55, 0xc6, 0xbf, 0x72, 0x8f, 0x6f, 0xe7, 0x30, 0x6a, 0x4a, 0xee, 0xa1, 0xe7, 0x86, 0xc1,
|
||||||
0xfc, 0x43, 0xcd, 0xa9, 0x79, 0xb3, 0xca, 0xe4, 0x28, 0x72, 0x4f, 0x17, 0x89, 0x05, 0x87, 0x1e,
|
0x3f, 0xd4, 0x9c, 0x8a, 0x37, 0xab, 0x4c, 0x8e, 0x24, 0xf7, 0x74, 0x91, 0x58, 0x70, 0xe8, 0x01,
|
||||||
0x60, 0xa3, 0xdf, 0x70, 0x18, 0xd5, 0xc3, 0x06, 0x91, 0x39, 0x38, 0x92, 0x34, 0xc7, 0x1c, 0x68,
|
0x36, 0xfa, 0x0d, 0x87, 0x51, 0xdd, 0x6c, 0x10, 0x99, 0x83, 0x23, 0x49, 0x73, 0xcc, 0x81, 0x16,
|
||||||
0xa1, 0xb1, 0x4f, 0x50, 0x17, 0x1d, 0xa6, 0xf0, 0x4c, 0xdf, 0x3e, 0x59, 0xde, 0x0c, 0x23, 0xc3,
|
0x0a, 0xfb, 0x04, 0x79, 0xd1, 0x61, 0x0a, 0x63, 0xfa, 0xf6, 0xc9, 0xf2, 0xa6, 0x19, 0x19, 0x4e,
|
||||||
0x09, 0x67, 0x18, 0x05, 0x32, 0x8d, 0x37, 0xa5, 0xb6, 0x34, 0x19, 0xa4, 0xea, 0x96, 0x79, 0x52,
|
0x38, 0x43, 0x2b, 0x90, 0x69, 0xac, 0x94, 0xda, 0x52, 0x67, 0x90, 0xaa, 0x5b, 0xe6, 0x49, 0x25,
|
||||||
0x89, 0xc1, 0x71, 0x80, 0x63, 0x71, 0x77, 0x2d, 0x93, 0x79, 0x79, 0x4c, 0x73, 0x0a, 0x02, 0xe7,
|
0x06, 0xc7, 0x01, 0x8e, 0xc5, 0xdd, 0xb9, 0x4c, 0xe6, 0xe5, 0x31, 0xf5, 0x29, 0x70, 0x9c, 0x83,
|
||||||
0x10, 0x0d, 0x6a, 0x37, 0x31, 0xaf, 0x1f, 0x38, 0xb4, 0x26, 0xb9, 0x4a, 0x66, 0x31, 0x7f, 0x4b,
|
0x37, 0xa8, 0xdc, 0xc4, 0xbc, 0x1e, 0x70, 0x68, 0x4d, 0x72, 0x95, 0xcc, 0x62, 0xfe, 0x96, 0xd4,
|
||||||
0x6a, 0x5f, 0x1d, 0x46, 0xf5, 0x0b, 0x98, 0x06, 0x11, 0x83, 0x87, 0xcf, 0x74, 0x56, 0x87, 0x8e,
|
0xbe, 0x3a, 0x8c, 0xea, 0x05, 0x5c, 0x0d, 0x22, 0x06, 0x0f, 0x9f, 0xe9, 0xac, 0x0e, 0x1d, 0xd3,
|
||||||
0xe9, 0x10, 0x55, 0xd0, 0xfa, 0xdc, 0x9d, 0x13, 0xb6, 0x1a, 0xcf, 0x15, 0x6c, 0x1c, 0x8a, 0x5b,
|
0x21, 0xca, 0xa0, 0xf5, 0xb9, 0x3b, 0x27, 0x6c, 0x35, 0x9e, 0x2b, 0xdc, 0x71, 0x28, 0x6e, 0xe5,
|
||||||
0xb9, 0xde, 0x92, 0x99, 0x56, 0x7c, 0xb6, 0x37, 0xe8, 0x0c, 0x9b, 0xc9, 0x81, 0x6d, 0xb3, 0x1b,
|
0x7a, 0x4b, 0x66, 0x5a, 0xf1, 0xd9, 0xde, 0xa0, 0x33, 0x6c, 0x3a, 0x07, 0xb6, 0xcd, 0x6e, 0x7c,
|
||||||
0xdf, 0xe7, 0x29, 0x3f, 0xab, 0x12, 0xd8, 0xec, 0x0d, 0xda, 0x99, 0x86, 0x5d, 0x9d, 0xbd, 0xdb,
|
0x9d, 0xa7, 0xf8, 0xac, 0x4a, 0x60, 0xb3, 0x37, 0x68, 0x7b, 0x1a, 0x76, 0x75, 0xf6, 0x6e, 0x9f,
|
||||||
0x67, 0x87, 0xaa, 0x28, 0x2b, 0xd7, 0x88, 0x2e, 0xe1, 0xdc, 0x42, 0x9b, 0x94, 0x7b, 0x90, 0xf0,
|
0x1d, 0xaa, 0xa2, 0xac, 0x5c, 0x23, 0xba, 0x84, 0x71, 0x0b, 0x6d, 0x52, 0xee, 0x41, 0xc2, 0xfa,
|
||||||
0x7e, 0x35, 0x34, 0xf9, 0xef, 0x56, 0xfd, 0x17, 0x5f, 0x9f, 0x03, 0x2c, 0xf1, 0x05, 0x79, 0x3e,
|
0xaa, 0x69, 0xf2, 0xdf, 0xad, 0xfa, 0x2f, 0xbe, 0x3e, 0x07, 0x58, 0xe2, 0x0b, 0xe2, 0x7c, 0x8a,
|
||||||
0xc5, 0x48, 0xe6, 0x9f, 0x54, 0xb1, 0xf1, 0xa4, 0x0b, 0x94, 0x0d, 0x65, 0x72, 0xcc, 0x57, 0xc4,
|
0x96, 0xcc, 0x8f, 0x54, 0xb1, 0x31, 0xd2, 0x05, 0xd2, 0x86, 0x22, 0x39, 0xe6, 0x2b, 0xe2, 0x20,
|
||||||
0x41, 0x4c, 0x18, 0x40, 0x56, 0x29, 0x1c, 0xd2, 0x07, 0x6f, 0x3c, 0x59, 0xfc, 0x0d, 0x6a, 0x48,
|
0x26, 0x0c, 0x20, 0xab, 0x14, 0x0e, 0xe1, 0x83, 0x15, 0x4f, 0x16, 0x7f, 0x83, 0x1a, 0x52, 0x3e,
|
||||||
0xf9, 0x1c, 0x09, 0x06, 0xa6, 0xc7, 0xec, 0x64, 0x54, 0xc2, 0x99, 0x9f, 0xb4, 0xa0, 0x71, 0x33,
|
0x47, 0x80, 0x81, 0xe9, 0xd1, 0x3b, 0x19, 0x95, 0x70, 0xe6, 0x3b, 0x2d, 0x68, 0xdc, 0x0c, 0x38,
|
||||||
0xe1, 0x04, 0x7b, 0xce, 0x52, 0x35, 0x55, 0x8e, 0x61, 0xdb, 0x18, 0x4c, 0x02, 0x4c, 0x0c, 0xe0,
|
0xc1, 0x9e, 0xb3, 0x54, 0x4d, 0x95, 0x63, 0xd8, 0x36, 0x06, 0x93, 0x00, 0x13, 0x03, 0xf8, 0xc9,
|
||||||
0xa7, 0x90, 0xf8, 0xb0, 0x43, 0x99, 0xce, 0xb5, 0xd9, 0x7f, 0x32, 0x11, 0x34, 0x3f, 0x6e, 0x3f,
|
0x25, 0xde, 0xed, 0x50, 0xa6, 0x73, 0x6d, 0xf6, 0x9f, 0x4c, 0x04, 0xf5, 0x8f, 0xdb, 0x4f, 0x5e,
|
||||||
0x79, 0xf9, 0xe2, 0xc5, 0x8b, 0x03, 0x76, 0x53, 0xc8, 0x22, 0x31, 0xcb, 0xd2, 0xc9, 0x94, 0x39,
|
0xbe, 0x78, 0xf1, 0xe2, 0x80, 0xdd, 0x14, 0xb2, 0x48, 0xcc, 0xb2, 0x74, 0x32, 0x65, 0xce, 0x88,
|
||||||
0x23, 0x0a, 0x3b, 0x57, 0xd6, 0x52, 0x85, 0xb0, 0x63, 0x74, 0x3c, 0x83, 0x5a, 0x2f, 0x1c, 0x5b,
|
0xc2, 0xce, 0x95, 0xb5, 0x94, 0x21, 0xec, 0x18, 0x15, 0xcf, 0x20, 0xd7, 0x0b, 0xc7, 0x16, 0x99,
|
||||||
0x64, 0x92, 0xea, 0x37, 0xc7, 0xd4, 0x42, 0x4d, 0x13, 0xae, 0x86, 0x2c, 0xd5, 0xec, 0xdd, 0xe5,
|
0xa4, 0xfc, 0xcd, 0xd1, 0xb5, 0x50, 0xd1, 0x84, 0xa9, 0x21, 0x4b, 0x35, 0x7b, 0x77, 0x39, 0x62,
|
||||||
0x88, 0x81, 0x94, 0xd8, 0x52, 0x57, 0x86, 0x8d, 0x45, 0x31, 0xc3, 0x4b, 0x7a, 0xa1, 0x4d, 0xc8,
|
0x20, 0x25, 0xb6, 0xd4, 0x95, 0x61, 0x63, 0x51, 0xcc, 0xb0, 0x48, 0x0b, 0xda, 0x84, 0x6c, 0x78,
|
||||||
0x86, 0x67, 0x17, 0x21, 0x93, 0x2e, 0xe9, 0xb1, 0x52, 0x15, 0x5b, 0x9d, 0x36, 0xb0, 0xc6, 0xff,
|
0x76, 0x11, 0x32, 0xe9, 0x92, 0x1e, 0x2b, 0x55, 0xb1, 0xd5, 0x69, 0x1d, 0x6b, 0xfc, 0x1f, 0xf1,
|
||||||
0x11, 0x7f, 0xb1, 0x85, 0x32, 0x90, 0x68, 0x2d, 0xeb, 0x5e, 0x8e, 0x8e, 0x02, 0x66, 0xf5, 0xc4,
|
0x17, 0x5b, 0x28, 0x03, 0x89, 0xd6, 0xb2, 0xee, 0xe5, 0xe8, 0x28, 0x60, 0x56, 0x4f, 0xdc, 0x42,
|
||||||
0x2d, 0x84, 0x91, 0xac, 0x1e, 0xbb, 0xee, 0xe1, 0xee, 0x81, 0x1a, 0xeb, 0x2f, 0x2b, 0xb8, 0xdf,
|
0x18, 0xc9, 0xea, 0xb6, 0xeb, 0x1e, 0xee, 0x1e, 0xa8, 0xb1, 0xfe, 0xb2, 0x82, 0xfb, 0xdd, 0x65,
|
||||||
0x5d, 0xd6, 0x1e, 0x5e, 0x21, 0x20, 0x65, 0x66, 0x00, 0xc4, 0xa3, 0x91, 0xaa, 0x0f, 0x5c, 0x5e,
|
0x6d, 0xe1, 0x15, 0x1c, 0x52, 0x66, 0x06, 0x40, 0x3c, 0xea, 0xa9, 0xfa, 0xc0, 0xe5, 0xd5, 0x1d,
|
||||||
0xdd, 0x89, 0xca, 0xb3, 0xbd, 0x06, 0xa1, 0x91, 0x06, 0x82, 0x34, 0x01, 0x33, 0x98, 0x11, 0x32,
|
0xaf, 0x3c, 0xdb, 0x6b, 0x10, 0x1a, 0x69, 0x20, 0x48, 0x1d, 0x30, 0xc3, 0x35, 0x42, 0x86, 0xb8,
|
||||||
0xe4, 0x3d, 0x6b, 0xa7, 0x4a, 0x86, 0x11, 0xcb, 0xa2, 0x59, 0x91, 0x83, 0xac, 0x90, 0x84, 0x90,
|
0x67, 0x6d, 0x57, 0xc9, 0xd0, 0x62, 0x59, 0x14, 0x2b, 0x32, 0x90, 0x15, 0x92, 0x10, 0xd2, 0x4c,
|
||||||
0x66, 0x22, 0xb7, 0xba, 0xc1, 0xdc, 0x65, 0x12, 0xd3, 0x83, 0x31, 0x80, 0x85, 0xb5, 0xea, 0xe0,
|
0xe4, 0x56, 0x37, 0x98, 0xbb, 0x4c, 0xa2, 0x7b, 0x30, 0x06, 0xb0, 0xb0, 0x56, 0x1d, 0x4c, 0x85,
|
||||||
0x2a, 0xa4, 0x8e, 0x32, 0xb9, 0x5a, 0xa1, 0xf9, 0xa0, 0xca, 0x53, 0x36, 0x96, 0x34, 0x48, 0x17,
|
0xd4, 0x51, 0x26, 0x57, 0x33, 0xd4, 0x1f, 0x54, 0x79, 0xca, 0xc6, 0x92, 0x1a, 0xe9, 0x62, 0x0a,
|
||||||
0x53, 0x88, 0xf1, 0x78, 0x42, 0x1d, 0xa6, 0xc3, 0x46, 0x79, 0xda, 0xab, 0xb1, 0x19, 0x74, 0x4e,
|
0x31, 0x1e, 0x4f, 0xa8, 0x43, 0x77, 0xd8, 0x28, 0x4f, 0x7b, 0x35, 0x36, 0x83, 0xce, 0x89, 0xb2,
|
||||||
0x94, 0x6d, 0xad, 0xa9, 0xf7, 0x15, 0xda, 0x21, 0x0b, 0x08, 0xe8, 0x90, 0x69, 0xa8, 0x34, 0x0b,
|
0xed, 0x6d, 0xea, 0x7d, 0x85, 0x76, 0x88, 0x02, 0x02, 0x3a, 0x64, 0x1a, 0x2a, 0xcd, 0x42, 0x01,
|
||||||
0x05, 0xcc, 0x45, 0xc1, 0x90, 0x2a, 0xa8, 0x01, 0xd8, 0x91, 0xe0, 0xc1, 0xc8, 0x09, 0x0a, 0x2f,
|
0x73, 0x51, 0x30, 0x84, 0x0a, 0x72, 0x00, 0xf7, 0x48, 0x30, 0x30, 0x72, 0x82, 0xc4, 0xcb, 0x58,
|
||||||
0x63, 0xf5, 0x0d, 0x60, 0x85, 0x26, 0x21, 0x3f, 0xae, 0x71, 0x57, 0xeb, 0xbc, 0xa6, 0x4a, 0x41,
|
0xfd, 0x02, 0x58, 0xa1, 0x49, 0xc8, 0x8f, 0x6b, 0xdc, 0xd5, 0x3a, 0xae, 0x29, 0x53, 0x10, 0x70,
|
||||||
0xc2, 0xd5, 0x13, 0x0d, 0x61, 0x0e, 0x16, 0x58, 0xd6, 0xd6, 0x79, 0xdd, 0x6a, 0xe2, 0xd5, 0xe7,
|
0x75, 0x47, 0x43, 0x98, 0x83, 0x05, 0x96, 0xf5, 0xed, 0xbc, 0x6e, 0x35, 0xf1, 0xea, 0x73, 0x72,
|
||||||
0x14, 0x26, 0x6c, 0x4b, 0x6b, 0x93, 0xd2, 0xad, 0xc3, 0x48, 0x0d, 0xbc, 0x7f, 0x27, 0xb2, 0x58,
|
0x13, 0xb6, 0xa5, 0xf5, 0x95, 0xd2, 0xad, 0xc3, 0x48, 0x0d, 0xbc, 0x7d, 0x27, 0xb2, 0x58, 0x32,
|
||||||
0x32, 0x91, 0x24, 0x14, 0x3e, 0x60, 0xf2, 0x5e, 0xbd, 0x51, 0xac, 0xe5, 0x27, 0x3a, 0x4d, 0x27,
|
0x91, 0x24, 0xe4, 0x3e, 0x60, 0xf2, 0x5e, 0xbd, 0x51, 0xac, 0xe5, 0x27, 0x3a, 0x4d, 0x27, 0x65,
|
||||||
0x65, 0xfa, 0x68, 0x0c, 0x9b, 0x88, 0xbc, 0xe7, 0xb5, 0x34, 0xfa, 0x7b, 0x23, 0x12, 0x50, 0x24,
|
0xfa, 0xa8, 0x0f, 0x1b, 0x8f, 0xbc, 0xe7, 0xb5, 0x34, 0xfa, 0x7b, 0x23, 0x12, 0x50, 0x24, 0x41,
|
||||||
0x41, 0x0e, 0x39, 0x3f, 0x38, 0x78, 0x3d, 0x6c, 0x62, 0x77, 0x94, 0xe7, 0x6b, 0xb5, 0xa2, 0x48,
|
0x0e, 0x39, 0x3f, 0x38, 0x78, 0x3d, 0x6c, 0x7c, 0x77, 0x94, 0xe7, 0x6b, 0xb5, 0xa2, 0x48, 0x59,
|
||||||
0x59, 0x33, 0x30, 0x22, 0xb7, 0xf0, 0x06, 0x80, 0x4b, 0x4a, 0x8c, 0x16, 0x5b, 0x33, 0xf8, 0x3f,
|
0xd3, 0x30, 0x22, 0xb6, 0xb0, 0x02, 0xc0, 0x25, 0x05, 0x46, 0x8b, 0xad, 0x19, 0xfc, 0x1f, 0xd9,
|
||||||
0xaa, 0xe1, 0x68, 0x03, 0x6f, 0x0f, 0x1f, 0x30, 0x86, 0x31, 0x48, 0x0b, 0x87, 0x20, 0xcf, 0x7c,
|
0x70, 0xb4, 0x81, 0xb7, 0x87, 0x0f, 0x18, 0xe3, 0x32, 0x08, 0x0b, 0x07, 0x27, 0xcf, 0xbc, 0x0f,
|
||||||
0x0c, 0x14, 0x65, 0x45, 0x22, 0x69, 0x7c, 0x04, 0x7b, 0xd6, 0xa3, 0x62, 0x9b, 0xf9, 0xc4, 0x3e,
|
0x14, 0x45, 0x45, 0x22, 0xa9, 0x7d, 0x04, 0x7b, 0xd6, 0xad, 0x62, 0x1b, 0xf9, 0xc4, 0x3e, 0xd9,
|
||||||
0xd9, 0xb3, 0xc1, 0xb0, 0xcd, 0xf2, 0x9a, 0x74, 0x40, 0x37, 0xcf, 0x06, 0x3f, 0xa0, 0xc8, 0x1b,
|
0xb3, 0xc1, 0xb0, 0x8d, 0xf2, 0x9a, 0x74, 0x40, 0x37, 0xcf, 0x06, 0x3f, 0xa0, 0xc8, 0x1b, 0x62,
|
||||||
0x62, 0xbb, 0xce, 0x85, 0x28, 0x2a, 0x91, 0xfb, 0xb0, 0xb4, 0x47, 0x57, 0xdc, 0x67, 0x06, 0xa7,
|
0xbb, 0xce, 0x85, 0x28, 0x2a, 0x91, 0x7b, 0xb7, 0xb4, 0x47, 0x57, 0xdc, 0x67, 0x06, 0xa7, 0x75,
|
||||||
0x75, 0x06, 0x1f, 0x99, 0xb4, 0x52, 0x85, 0xc6, 0xa6, 0x1f, 0x95, 0xcf, 0x11, 0x95, 0x4f, 0x63,
|
0x04, 0x1f, 0x99, 0xb4, 0x52, 0x85, 0xc6, 0xa6, 0x1f, 0xa5, 0xcf, 0x11, 0xa5, 0x4f, 0x73, 0x27,
|
||||||
0x13, 0x31, 0x69, 0x55, 0x82, 0x08, 0xaf, 0x31, 0xd5, 0x69, 0xd3, 0x18, 0x25, 0x5a, 0x26, 0x1f,
|
0x62, 0xd2, 0xaa, 0x04, 0x11, 0x5e, 0xa3, 0xab, 0xd3, 0xa6, 0xb9, 0x94, 0x68, 0x99, 0x7c, 0xec,
|
||||||
0x3b, 0x8c, 0xd1, 0xc5, 0xac, 0x66, 0xbc, 0x66, 0x64, 0x67, 0x9d, 0x0c, 0x09, 0x17, 0xf3, 0xa8,
|
0xd0, 0x46, 0x17, 0xb3, 0x9a, 0xf1, 0x9a, 0x96, 0x9d, 0x75, 0x32, 0x04, 0x5c, 0xcc, 0xa3, 0x06,
|
||||||
0x01, 0x1c, 0x1d, 0x89, 0x6c, 0x6e, 0xdb, 0x33, 0xaa, 0xaf, 0x99, 0xdc, 0x5b, 0xe1, 0xcd, 0xf3,
|
0x70, 0x54, 0x24, 0xba, 0x73, 0x5b, 0x9e, 0x91, 0x7d, 0x4d, 0xe7, 0xde, 0x0a, 0x6f, 0xc6, 0x87,
|
||||||
0x61, 0x24, 0x56, 0x81, 0x18, 0x74, 0x1a, 0x7d, 0xab, 0x97, 0x3e, 0x4b, 0x37, 0xac, 0xf6, 0x43,
|
0x91, 0x58, 0x39, 0x62, 0xd0, 0x69, 0xf4, 0xad, 0x16, 0x7d, 0x94, 0x6e, 0xdc, 0xda, 0x37, 0xed,
|
||||||
0x7b, 0x13, 0x73, 0x3f, 0x97, 0xf9, 0x94, 0x2b, 0x71, 0x11, 0xad, 0xf5, 0x0d, 0x58, 0x0b, 0x5d,
|
0x8d, 0xcf, 0x7d, 0x5f, 0xe6, 0x43, 0xae, 0xc4, 0x43, 0xb4, 0xd6, 0x37, 0x60, 0x2d, 0x74, 0x9d,
|
||||||
0xe7, 0x61, 0xec, 0x7e, 0xd9, 0x98, 0x65, 0xd3, 0xde, 0x70, 0xd2, 0x23, 0x29, 0xe1, 0x3d, 0xab,
|
0x87, 0xb1, 0xfb, 0x65, 0xa3, 0x97, 0x4d, 0x7b, 0xc3, 0x49, 0x8f, 0xa4, 0x84, 0xf7, 0x6e, 0x1d,
|
||||||
0x83, 0x5f, 0x06, 0x37, 0x7e, 0xdb, 0x0a, 0xd1, 0x3a, 0x29, 0xd7, 0x8c, 0xf5, 0x28, 0x14, 0xad,
|
0xfc, 0x32, 0xb8, 0xf1, 0xdb, 0x56, 0x88, 0xd6, 0x41, 0xb9, 0x66, 0xac, 0x47, 0xa1, 0x68, 0xad,
|
||||||
0x97, 0xac, 0x41, 0x03, 0xd0, 0x34, 0x48, 0x74, 0xd6, 0x50, 0x10, 0x5e, 0x2d, 0x0c, 0x77, 0xee,
|
0x64, 0x0d, 0x1a, 0x80, 0xa6, 0x41, 0xa2, 0xb3, 0x86, 0x82, 0xf0, 0x6a, 0x61, 0xb8, 0xf3, 0xd6,
|
||||||
0x1a, 0x77, 0xc0, 0x68, 0xb1, 0xb8, 0xbb, 0x63, 0x8d, 0x48, 0xe7, 0x61, 0x48, 0xf6, 0x1e, 0xc7,
|
0xb8, 0x03, 0x46, 0x8b, 0xc5, 0xdd, 0x1d, 0x6b, 0x44, 0x3a, 0x0f, 0x43, 0xb2, 0xf7, 0x38, 0x26,
|
||||||
0xe4, 0x91, 0xee, 0xf9, 0x20, 0x26, 0x7b, 0xe1, 0x86, 0xf1, 0xdf, 0x02, 0xb2, 0x81, 0x07, 0x55,
|
0x8f, 0x54, 0xcf, 0x07, 0x31, 0xd9, 0x0b, 0x37, 0x2e, 0xff, 0x2d, 0x20, 0x1b, 0x78, 0x50, 0x06,
|
||||||
0x50, 0xe7, 0x7b, 0x25, 0x54, 0x3b, 0x42, 0x6d, 0xa2, 0x41, 0x27, 0xba, 0x7b, 0xc1, 0xf2, 0xa5,
|
0x75, 0xbe, 0x97, 0x42, 0xb5, 0x21, 0x54, 0x26, 0x1a, 0x74, 0xa2, 0xbb, 0x0f, 0x2c, 0x9f, 0x9a,
|
||||||
0x79, 0xf9, 0xfb, 0xe9, 0xf5, 0xfb, 0xeb, 0xb3, 0xd1, 0x69, 0xdd, 0x3b, 0x40, 0xb7, 0x86, 0xfa,
|
0x97, 0xbf, 0x9f, 0x5e, 0xbf, 0xbf, 0x3e, 0x1b, 0x9d, 0xd6, 0xb5, 0x03, 0x74, 0x6b, 0xa8, 0xce,
|
||||||
0xcc, 0x83, 0x27, 0x7a, 0x3e, 0x1c, 0x1d, 0xba, 0x88, 0xd5, 0x54, 0x7b, 0x57, 0xde, 0x5c, 0x10,
|
0x3c, 0x78, 0xa2, 0xe7, 0xdd, 0xd1, 0xa1, 0x87, 0x58, 0x4d, 0xb5, 0x77, 0xe5, 0xcd, 0x05, 0x91,
|
||||||
0x69, 0xfc, 0x51, 0xa1, 0x9b, 0xa0, 0x09, 0x4e, 0x36, 0x69, 0x84, 0x81, 0xcb, 0x8d, 0xdc, 0xf1,
|
0xc6, 0x1f, 0x15, 0xaa, 0x09, 0x8a, 0xe0, 0x64, 0x93, 0x46, 0x18, 0xb8, 0xdc, 0xc8, 0x1d, 0x4f,
|
||||||
0xc4, 0xd8, 0x5c, 0xf6, 0xbc, 0xba, 0xd3, 0xe1, 0x55, 0xaf, 0xa9, 0xcb, 0x37, 0x0f, 0xd0, 0x7d,
|
0x8c, 0xcd, 0x63, 0xcf, 0xab, 0x3b, 0x1d, 0x5e, 0xf5, 0x9a, 0xbc, 0x7c, 0xf3, 0x00, 0xdd, 0x87,
|
||||||
0xb8, 0xa2, 0x6e, 0xeb, 0xc9, 0x91, 0x08, 0x78, 0x4c, 0x95, 0x9f, 0xa2, 0x37, 0xf5, 0xda, 0xaa,
|
0x2b, 0xea, 0xb6, 0x9e, 0x1c, 0x89, 0x80, 0xc7, 0x94, 0xf9, 0x29, 0x6a, 0x53, 0xaf, 0xcd, 0x9a,
|
||||||
0x39, 0x1a, 0xe3, 0x92, 0xd5, 0x96, 0x4a, 0x53, 0x0e, 0xed, 0xaf, 0x16, 0x68, 0xc3, 0x59, 0x35,
|
0xa3, 0x31, 0x1e, 0x59, 0x6d, 0xaa, 0x34, 0xe9, 0xd0, 0xfe, 0x6a, 0x81, 0x32, 0x9c, 0x55, 0xe3,
|
||||||
0xee, 0xe1, 0xe6, 0x18, 0x1d, 0x29, 0x93, 0x68, 0xad, 0x67, 0x4a, 0x46, 0x34, 0x13, 0x46, 0xe8,
|
0x1e, 0x5e, 0x8e, 0xd1, 0x91, 0x32, 0x89, 0xd6, 0x7a, 0xa6, 0x64, 0x44, 0x3d, 0x61, 0x84, 0xea,
|
||||||
0xde, 0xc2, 0x4c, 0xe9, 0xc7, 0x94, 0x4f, 0xe3, 0x1c, 0x2d, 0x93, 0x0f, 0x68, 0x99, 0x52, 0xa1,
|
0x2d, 0xcc, 0x94, 0x7e, 0x4c, 0xf9, 0x34, 0xce, 0x51, 0x32, 0xf9, 0x80, 0xa6, 0x29, 0x14, 0x3a,
|
||||||
0xc3, 0x6e, 0xa5, 0x21, 0xb2, 0x61, 0xfd, 0xde, 0xee, 0xf3, 0x5e, 0x7f, 0x67, 0x9c, 0xf7, 0x57,
|
0xec, 0x56, 0x1a, 0x22, 0x1b, 0xd6, 0xef, 0xed, 0x3e, 0xef, 0xf5, 0x77, 0xc6, 0xfd, 0x15, 0x6f,
|
||||||
0xc4, 0xf5, 0x33, 0x2a, 0x16, 0x6a, 0xa6, 0x22, 0x7f, 0x7d, 0xa0, 0xa9, 0x59, 0x1b, 0xbb, 0x03,
|
0xfd, 0x8c, 0x86, 0x85, 0x9a, 0xa9, 0xc8, 0xbf, 0x1e, 0xa8, 0x69, 0xd6, 0xc6, 0xee, 0x80, 0x19,
|
||||||
0x6a, 0xdc, 0x49, 0x8c, 0x4c, 0x15, 0xe5, 0x6a, 0xe7, 0xbe, 0x01, 0x9b, 0x5b, 0xd1, 0xbe, 0x25,
|
0x77, 0x12, 0x23, 0x53, 0x45, 0xa1, 0xda, 0xb9, 0xaf, 0x7f, 0x73, 0x2b, 0xaa, 0xb7, 0xa4, 0x77,
|
||||||
0x5d, 0x84, 0x40, 0x83, 0x4a, 0xd6, 0x9c, 0x6a, 0x4b, 0x99, 0x28, 0x50, 0x8f, 0x43, 0x7b, 0x98,
|
0x10, 0x58, 0x50, 0xc9, 0x9a, 0x52, 0x6d, 0x29, 0x13, 0x05, 0xe6, 0x71, 0xa8, 0x0e, 0xb3, 0x55,
|
||||||
0xad, 0x2a, 0xb8, 0x73, 0xc4, 0xb2, 0x0a, 0xdd, 0xc3, 0xaf, 0xfa, 0x06, 0x89, 0x3e, 0x80, 0xf1,
|
0x02, 0x77, 0x8e, 0x58, 0x56, 0xa1, 0x78, 0xf8, 0x59, 0x5f, 0x1f, 0x51, 0x06, 0xd0, 0xfd, 0x9b,
|
||||||
0xdf, 0x2c, 0x71, 0x1f, 0x45, 0xe3, 0xd2, 0x8c, 0x26, 0x40, 0x40, 0x06, 0x8e, 0xac, 0x7f, 0xaa,
|
0x25, 0x9e, 0xa3, 0xa8, 0x5b, 0x9a, 0x51, 0x03, 0x08, 0xc4, 0x40, 0x91, 0xf5, 0x2f, 0x15, 0xbe,
|
||||||
0xf0, 0x33, 0xf1, 0x56, 0xeb, 0x51, 0xa7, 0x9b, 0x04, 0x6c, 0xaf, 0xbf, 0xfb, 0xeb, 0xce, 0x5e,
|
0x25, 0xde, 0x6a, 0x2d, 0xea, 0x74, 0x93, 0x80, 0xed, 0xf5, 0x77, 0x7f, 0xdd, 0xd9, 0xeb, 0xef,
|
||||||
0x7f, 0x6f, 0x8f, 0xbd, 0xce, 0x0c, 0x2e, 0x7b, 0x0a, 0x24, 0x3a, 0x4c, 0xb2, 0x05, 0x5d, 0x95,
|
0xed, 0xb1, 0xd7, 0x99, 0xc1, 0x5b, 0x4f, 0x81, 0x43, 0x87, 0x49, 0xb6, 0xa0, 0x97, 0x72, 0x53,
|
||||||
0x9b, 0x9e, 0x75, 0x8e, 0x6e, 0x86, 0x5b, 0x08, 0xa0, 0x87, 0x51, 0x75, 0xcb, 0xfd, 0x29, 0x30,
|
0xb2, 0xce, 0x51, 0xcc, 0xf0, 0x08, 0x01, 0xf2, 0xb8, 0x54, 0x5d, 0x71, 0x7f, 0x0a, 0x8c, 0x71,
|
||||||
0xc6, 0xb9, 0x1e, 0x47, 0x73, 0xdc, 0x12, 0xa5, 0x89, 0xce, 0xcf, 0x5e, 0x9f, 0xbe, 0x1b, 0x9e,
|
0xae, 0xc7, 0xd1, 0x1c, 0x8f, 0x44, 0x69, 0xa2, 0xf3, 0xb3, 0xd7, 0xa7, 0xef, 0x86, 0xa7, 0xdf,
|
||||||
0x7e, 0x1b, 0x82, 0xce, 0xc5, 0xd9, 0x88, 0xe5, 0xb5, 0x26, 0xef, 0x20, 0xfa, 0x5c, 0x6b, 0xe8,
|
0x7a, 0xa0, 0x73, 0x71, 0x36, 0x62, 0x79, 0xad, 0xc9, 0x1b, 0x88, 0x32, 0xd7, 0x5e, 0x74, 0x28,
|
||||||
0x50, 0x1a, 0x78, 0x05, 0x37, 0xac, 0x45, 0xb7, 0x04, 0xaf, 0xe2, 0xda, 0x56, 0xb4, 0x84, 0x60,
|
0x0d, 0xac, 0x82, 0x19, 0xd6, 0xa2, 0x58, 0x82, 0x56, 0xf1, 0x6a, 0x2b, 0x5a, 0x3e, 0xb0, 0xaa,
|
||||||
0x55, 0xc9, 0xa9, 0x74, 0xfd, 0x95, 0x96, 0xf9, 0x5b, 0x2a, 0x31, 0x3e, 0x6d, 0xa9, 0xe9, 0x95,
|
0xe4, 0x94, 0xb9, 0xfe, 0x45, 0xcb, 0xfc, 0x23, 0x95, 0x08, 0x9f, 0xb6, 0xd4, 0xec, 0x4a, 0xd9,
|
||||||
0xca, 0x85, 0xc8, 0xa2, 0xfe, 0x19, 0xe0, 0xbb, 0xf3, 0xed, 0xb7, 0xe3, 0x6d, 0xe7, 0xa7, 0xe6,
|
0x42, 0x5c, 0x51, 0xff, 0x0a, 0xf0, 0xdd, 0xf6, 0xf6, 0xdb, 0xee, 0xb6, 0xf3, 0x53, 0xed, 0x6d,
|
||||||
0xdb, 0x88, 0x9a, 0x0e, 0x3e, 0x68, 0xac, 0xa7, 0x19, 0x9f, 0x7e, 0x66, 0xfc, 0x1f, 0xe4, 0x1f,
|
0x44, 0x35, 0x07, 0x1f, 0xd4, 0xd5, 0x53, 0x8b, 0x4f, 0xbf, 0x32, 0xfe, 0x0f, 0xf4, 0xde, 0xf4,
|
||||||
0xd8, 0x7d, 0x76, 0x14, 0x00, 0x00
|
0x46, 0x75, 0x14, 0x00, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Autogenerated from wled00/data/settings_um.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_um.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_um_length = 2514;
|
const uint16_t PAGE_settings_um_length = 2514;
|
||||||
const uint8_t PAGE_settings_um[] PROGMEM = {
|
const uint8_t PAGE_settings_um[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xdd, 0x58, 0xdb, 0x72, 0xdb, 0x38,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xdd, 0x58, 0xdb, 0x72, 0xdb, 0x38,
|
||||||
0x12, 0x7d, 0xd7, 0x57, 0xd0, 0x88, 0xcb, 0x26, 0x4b, 0x34, 0x25, 0xc7, 0x3b, 0xb3, 0x89, 0x24,
|
0x12, 0x7d, 0xd7, 0x57, 0xd0, 0x88, 0xcb, 0x26, 0x4b, 0x34, 0x25, 0xc7, 0x3b, 0xb3, 0x89, 0x24,
|
||||||
0xc8, 0x93, 0x38, 0xc9, 0x44, 0x9b, 0x8b, 0x5d, 0xa5, 0xb9, 0xd4, 0x96, 0xd7, 0x35, 0xa6, 0x44,
|
0xc8, 0x93, 0x38, 0xc9, 0x44, 0x9b, 0x8b, 0x5d, 0xa5, 0xb9, 0xd4, 0x96, 0xd7, 0x35, 0xa6, 0x44,
|
||||||
0x48, 0x42, 0x4c, 0x81, 0x5c, 0x00, 0xf4, 0x65, 0x65, 0xfd, 0xfb, 0x9e, 0x06, 0x49, 0x5d, 0x1c,
|
0x48, 0x42, 0x4c, 0x81, 0x5c, 0x00, 0xf4, 0x65, 0x65, 0xfd, 0xfb, 0x9e, 0x06, 0x49, 0x5d, 0x1c,
|
||||||
@ -1749,7 +1749,7 @@ const uint8_t PAGE_settings_um[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_2D.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_2D.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_2D_length = 1754;
|
const uint16_t PAGE_settings_2D_length = 1754;
|
||||||
const uint8_t PAGE_settings_2D[] PROGMEM = {
|
const uint8_t PAGE_settings_2D[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x8d, 0x58, 0x6d, 0x73, 0xdb, 0x36,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x8d, 0x58, 0x6d, 0x73, 0xdb, 0x36,
|
||||||
0x12, 0xfe, 0xce, 0x5f, 0x01, 0x63, 0x3a, 0x2d, 0xd9, 0x50, 0x94, 0xe4, 0xde, 0x75, 0x3a, 0x16,
|
0x12, 0xfe, 0xce, 0x5f, 0x01, 0x63, 0x3a, 0x2d, 0xd9, 0x50, 0x94, 0xe4, 0xde, 0x75, 0x3a, 0x16,
|
||||||
0x49, 0x37, 0x6e, 0xdc, 0xda, 0x1d, 0x7b, 0xe2, 0x89, 0x72, 0xce, 0xdc, 0x5c, 0x3a, 0x29, 0x44,
|
0x49, 0x37, 0x6e, 0xdc, 0xda, 0x1d, 0x7b, 0xe2, 0x89, 0x72, 0xce, 0xdc, 0x5c, 0x3a, 0x29, 0x44,
|
||||||
0xae, 0x44, 0xc4, 0x24, 0xc0, 0x01, 0x20, 0xd9, 0xae, 0xe2, 0xff, 0x7e, 0x0b, 0x90, 0x12, 0x25,
|
0xae, 0x44, 0xc4, 0x24, 0xc0, 0x01, 0x20, 0xd9, 0xae, 0xe2, 0xff, 0x7e, 0x0b, 0x90, 0x12, 0x25,
|
||||||
@ -1865,7 +1865,7 @@ const uint8_t PAGE_settings_2D[] PROGMEM = {
|
|||||||
// Autogenerated from wled00/data/settings_pin.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_pin.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_pin_length = 471;
|
const uint16_t PAGE_settings_pin_length = 471;
|
||||||
const uint8_t PAGE_settings_pin[] PROGMEM = {
|
const uint8_t PAGE_settings_pin[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x5d, 0x52, 0x4d, 0x6f, 0x13, 0x31,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x5d, 0x52, 0x4d, 0x6f, 0x13, 0x31,
|
||||||
0x10, 0xbd, 0xef, 0xaf, 0x30, 0x73, 0x69, 0x82, 0x92, 0x6c, 0xa8, 0xa8, 0x04, 0xaa, 0xbd, 0x42,
|
0x10, 0xbd, 0xef, 0xaf, 0x30, 0x73, 0x69, 0x82, 0x92, 0x6c, 0xa8, 0xa8, 0x04, 0xaa, 0xbd, 0x42,
|
||||||
0x81, 0x1e, 0xb8, 0x94, 0x48, 0xe5, 0x52, 0x55, 0x55, 0xe5, 0xd8, 0xb3, 0x89, 0x55, 0x7f, 0x2c,
|
0x81, 0x1e, 0xb8, 0x94, 0x48, 0xe5, 0x52, 0x55, 0x55, 0xe5, 0xd8, 0xb3, 0x89, 0x55, 0x7f, 0x2c,
|
||||||
0xb6, 0x37, 0x21, 0x54, 0xfc, 0x77, 0xc6, 0xbb, 0xa1, 0xa0, 0x5c, 0xd6, 0x7e, 0x33, 0xe3, 0x37,
|
0xb6, 0x37, 0x21, 0x54, 0xfc, 0x77, 0xc6, 0xbb, 0xa1, 0xa0, 0x5c, 0xd6, 0x7e, 0x33, 0xe3, 0x37,
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
//#define WLED_DISABLE_ALEXA // saves 11kb
|
//#define WLED_DISABLE_ALEXA // saves 11kb
|
||||||
//#define WLED_DISABLE_BLYNK // saves 6kb
|
//#define WLED_DISABLE_BLYNK // saves 6kb
|
||||||
//#define WLED_DISABLE_HUESYNC // saves 4kb
|
//#define WLED_DISABLE_HUESYNC // saves 4kb
|
||||||
//#define WLED_DISABLE_INFRARED // there is no pin left for this on ESP8266-01, saves 12kb
|
//#define WLED_DISABLE_INFRARED // saves 12kb
|
||||||
#ifndef WLED_DISABLE_MQTT
|
#ifndef WLED_DISABLE_MQTT
|
||||||
#define WLED_ENABLE_MQTT // saves 12kb
|
#define WLED_ENABLE_MQTT // saves 12kb
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user