From 693f52d984d5247d5631007a37a507879fd39e04 Mon Sep 17 00:00:00 2001 From: Ewoud Date: Wed, 5 Apr 2023 11:02:21 +0200 Subject: [PATCH 01/70] Merge pull request #5 from netmindz/ES8388 WiP - ES8388 --- usermods/audioreactive/audio_reactive.h | 9 ++ usermods/audioreactive/audio_source.h | 114 ++++++++++++++++++++++++ 2 files changed, 123 insertions(+) diff --git a/usermods/audioreactive/audio_reactive.h b/usermods/audioreactive/audio_reactive.h index 09cc931c9..ff5483fdc 100644 --- a/usermods/audioreactive/audio_reactive.h +++ b/usermods/audioreactive/audio_reactive.h @@ -1159,6 +1159,13 @@ class AudioReactive : public Usermod { if (audioSource) audioSource->initialize(i2swsPin, i2ssdPin); break; #endif + case 6: + DEBUGSR_PRINTLN(F("AR: ES8388 Source")); + audioSource = new ES8388Source(SAMPLE_RATE, BLOCK_SIZE); + delay(100); + if (audioSource) audioSource->initialize(sdaPin, sclPin, i2swsPin, i2ssdPin, i2sckPin, mclkPin); + break; + #if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32S3) // ADC over I2S is only possible on "classic" ESP32 case 0: @@ -1752,6 +1759,8 @@ class AudioReactive : public Usermod { #if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) oappend(SET_F("addOption(dd,'Generic I2S PDM',5);")); #endif + oappend(SET_F("addOption(dd,'ES8388',6);")); + oappend(SET_F("dd=addDropdown('AudioReactive','config:AGC');")); oappend(SET_F("addOption(dd,'Off',0);")); oappend(SET_F("addOption(dd,'Normal',1);")); diff --git a/usermods/audioreactive/audio_source.h b/usermods/audioreactive/audio_source.h index 16bbbb658..bd97f6bc6 100644 --- a/usermods/audioreactive/audio_source.h +++ b/usermods/audioreactive/audio_source.h @@ -462,6 +462,120 @@ public: int8_t pin_ES7243_SCL; }; +/* ES8388 Sound Modude + This is an I2S sound processing unit that requires ininitialization over + I2C before I2S data can be received. +*/ +class ES8388Source : public I2SSource { + private: + // I2C initialization functions for ES8388 + void _es8388I2cBegin() { + bool i2c_initialized = Wire.begin(pin_ES8388_SDA, pin_ES8388_SCL, 100000U); + if (i2c_initialized == false) { + ERRORSR_PRINTLN(F("AR: ES8388 failed to initialize I2C bus driver.")); + } + } + + void _es8388I2cWrite(uint8_t reg, uint8_t val) { +#ifndef ES8388_ADDR + Wire.beginTransmission(0x10); + #define ES8388_ADDR 0x10 // default address +#else + Wire.beginTransmission(ES8388_ADDR); +#endif + Wire.write((uint8_t)reg); + Wire.write((uint8_t)val); + uint8_t i2cErr = Wire.endTransmission(); // i2cErr == 0 means OK + if (i2cErr != 0) { + DEBUGSR_PRINTF("AR: ES8388 I2C write failed with error=%d (addr=0x%X, reg 0x%X, val 0x%X).\n", i2cErr, ES8388_ADDR, reg, val); + } + } + + void _es8388InitAdc() { + // This is by no means 100% figured but it's working for line-in + // with a little too much noise for my liking... + // https://dl.radxa.com/rock2/docs/hw/ds/ES8388%20user%20Guide.pdf Section 10.1 + // https://docs.google.com/spreadsheets/d/1CN3MvhkcPVESuxKyx1xRYqfUit5hOdsG45St9BCUm-g/edit#gid=0 generally + _es8388I2cBegin(); + _es8388I2cWrite(0x08,0x00); // I2S to slave + _es8388I2cWrite(0x02,0xf3); // Power down DEM and STM + _es8388I2cWrite(0x2b,0x80); // Set same LRCK + _es8388I2cWrite(0x00,0x05); // Set chip to Play & Record Mode + _es8388I2cWrite(0x01,0x40); // Power up Analog and lbias ... These 5 (to here) need to be done in order + _es8388I2cWrite(0x03,0x00); // Power up ADC, Analog Input, and Mic Bias + _es8388I2cWrite(0x04,0x3C); // ** In guide, not in working example tho. ** + _es8388I2cWrite(0x0a,0x50); // Use Lin2/Rin2 for ADC input + _es8388I2cWrite(0x09,0x00); // Select Analog Input PGA Gain for ADC to 0dB ** + _es8388I2cWrite(0x0c,0x0c); // I2S format, 24-bit + _es8388I2cWrite(0x0d,0x02); // Set MCLK/LRCK ratio to 256 + _es8388I2cWrite(0x10,0x00); // Set ADC digital volume attenuation to 0dB (left) + _es8388I2cWrite(0x11,0x00); // Set ADC digital volume attenuation to 0dB (right) + _es8388I2cWrite(0x17,0x18); // Set format for DAC (I2S, 24bit) + _es8388I2cWrite(0x18,0x02); // Set DAC MCLK/LRCK ratio to 256 + _es8388I2cWrite(0x1a,0x00); // DAC Volume attenuation 0dB (left) + _es8388I2cWrite(0x1b,0x00); // DAC Volume attenuation 0dB (right) + _es8388I2cWrite(0x2e,0x00); // LOUT1 volume - 00 = -45dB + _es8388I2cWrite(0x2f,0x00); // ROUT1 volume - 00 = -45dB + _es8388I2cWrite(0x0C,0b00000001); // ADC digital format - I2S + Left Justified + _es8388I2cWrite(0x17,0b00000010); // DAC digital format - I2S + Left Justified + _es8388I2cWrite(0x02,0x00); // Power up DEM and STM + // end of guide init ^^^ + _es8388I2cWrite(0x02,0b01000000); // Power. Guide says it's only 6 bits but that 1 means "turn on sometthing for line-out voltage" + _es8388I2cWrite(0x04,0x0c); // LOUT2 an ROUT2 powered + _es8388I2cWrite(0x30,0b00011110); // LOUT2VOL - 0 = -45dB, 0b00011110 = +0dB + _es8388I2cWrite(0x31,0b00011110); // ROUT2VOL - 0 = -45dB, 0b00011110 = +0dB + _es8388I2cWrite(0x26,0x09); // Mixer + _es8388I2cWrite(0x27,0x50); // Mixer + _es8388I2cWrite(0x2a,0x50); // Mixer + _es8388I2cWrite(0x03,0x00); // Power + } + + public: + ES8388Source(SRate_t sampleRate, int blockSize, float sampleScale = 1.0f, bool i2sMaster=true) : + I2SSource(sampleRate, blockSize, sampleScale, i2sMaster) { + _config.channel_format = I2S_CHANNEL_FMT_ONLY_LEFT; + }; + + void initialize(int8_t sdaPin, int8_t sclPin, int8_t i2swsPin, int8_t i2ssdPin, int8_t i2sckPin, int8_t mclkPin) { + + // check that pins are valid + if ((sdaPin < 0) || (sclPin < 0)) { + ERRORSR_PRINTF("\nAR: invalid ES8388 I2C pins: SDA=%d, SCL=%d\n", sdaPin, sclPin); + return; + } + + if ((i2sckPin < 0) || (mclkPin < 0)) { + ERRORSR_PRINTF("\nAR: invalid I2S pin: SCK=%d, MCLK=%d\n", i2sckPin, mclkPin); + return; + } + + // Reserve SDA and SCL pins of the I2C interface + PinManagerPinType es8388Pins[2] = { { sdaPin, true }, { sclPin, true } }; + if (!pinManager.allocateMultiplePins(es8388Pins, 2, PinOwner::HW_I2C)) { + pinManager.deallocateMultiplePins(es8388Pins, 2, PinOwner::HW_I2C); + ERRORSR_PRINTF("\nAR: Failed to allocate ES8388 I2C pins: SDA=%d, SCL=%d\n", sdaPin, sclPin); + return; + } + + pin_ES8388_SDA = sdaPin; + pin_ES8388_SCL = sclPin; + + // First route mclk, then configure ADC over I2C, then configure I2S + _es8388InitAdc(); + I2SSource::initialize(i2swsPin, i2ssdPin, i2sckPin, mclkPin); + } + + void deinitialize() { + // Release SDA and SCL pins of the I2C interface + PinManagerPinType es8388Pins[2] = { { pin_ES8388_SDA, true }, { pin_ES8388_SCL, true } }; + pinManager.deallocateMultiplePins(es8388Pins, 2, PinOwner::HW_I2C); + I2SSource::deinitialize(); + } + + private: + int8_t pin_ES8388_SDA; + int8_t pin_ES8388_SCL; +}; #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 2, 0) #if !defined(SOC_I2S_SUPPORTS_ADC) && !defined(SOC_I2S_SUPPORTS_ADC_DAC) From b88d8c85cb96049f3aba841454d7d844bd2f9860 Mon Sep 17 00:00:00 2001 From: TroyHacks <5659019+troyhacks@users.noreply.github.com> Date: Wed, 5 Apr 2023 11:00:14 -0400 Subject: [PATCH 02/70] ES8388 init optimizations and fixes --- usermods/audioreactive/audio_source.h | 50 ++++++++++----------------- 1 file changed, 18 insertions(+), 32 deletions(-) diff --git a/usermods/audioreactive/audio_source.h b/usermods/audioreactive/audio_source.h index bd97f6bc6..40cb35d53 100644 --- a/usermods/audioreactive/audio_source.h +++ b/usermods/audioreactive/audio_source.h @@ -492,42 +492,28 @@ class ES8388Source : public I2SSource { } void _es8388InitAdc() { - // This is by no means 100% figured but it's working for line-in - // with a little too much noise for my liking... // https://dl.radxa.com/rock2/docs/hw/ds/ES8388%20user%20Guide.pdf Section 10.1 // https://docs.google.com/spreadsheets/d/1CN3MvhkcPVESuxKyx1xRYqfUit5hOdsG45St9BCUm-g/edit#gid=0 generally - _es8388I2cBegin(); - _es8388I2cWrite(0x08,0x00); // I2S to slave - _es8388I2cWrite(0x02,0xf3); // Power down DEM and STM - _es8388I2cWrite(0x2b,0x80); // Set same LRCK - _es8388I2cWrite(0x00,0x05); // Set chip to Play & Record Mode - _es8388I2cWrite(0x01,0x40); // Power up Analog and lbias ... These 5 (to here) need to be done in order - _es8388I2cWrite(0x03,0x00); // Power up ADC, Analog Input, and Mic Bias - _es8388I2cWrite(0x04,0x3C); // ** In guide, not in working example tho. ** - _es8388I2cWrite(0x0a,0x50); // Use Lin2/Rin2 for ADC input - _es8388I2cWrite(0x09,0x00); // Select Analog Input PGA Gain for ADC to 0dB ** - _es8388I2cWrite(0x0c,0x0c); // I2S format, 24-bit - _es8388I2cWrite(0x0d,0x02); // Set MCLK/LRCK ratio to 256 - _es8388I2cWrite(0x10,0x00); // Set ADC digital volume attenuation to 0dB (left) - _es8388I2cWrite(0x11,0x00); // Set ADC digital volume attenuation to 0dB (right) - _es8388I2cWrite(0x17,0x18); // Set format for DAC (I2S, 24bit) - _es8388I2cWrite(0x18,0x02); // Set DAC MCLK/LRCK ratio to 256 - _es8388I2cWrite(0x1a,0x00); // DAC Volume attenuation 0dB (left) - _es8388I2cWrite(0x1b,0x00); // DAC Volume attenuation 0dB (right) - _es8388I2cWrite(0x2e,0x00); // LOUT1 volume - 00 = -45dB - _es8388I2cWrite(0x2f,0x00); // ROUT1 volume - 00 = -45dB - _es8388I2cWrite(0x0C,0b00000001); // ADC digital format - I2S + Left Justified - _es8388I2cWrite(0x17,0b00000010); // DAC digital format - I2S + Left Justified - _es8388I2cWrite(0x02,0x00); // Power up DEM and STM - // end of guide init ^^^ - _es8388I2cWrite(0x02,0b01000000); // Power. Guide says it's only 6 bits but that 1 means "turn on sometthing for line-out voltage" - _es8388I2cWrite(0x04,0x0c); // LOUT2 an ROUT2 powered + // Sets ADC to around what AudioReactive expects, and loops line-in to line-out/headphone for monitoring. + _es8388I2cBegin(); + _es8388I2cWrite(0x08,0x00); // I2S to slave + _es8388I2cWrite(0x02,0xf3); // Power down DEM and STM + _es8388I2cWrite(0x2b,0x80); // Set same LRCK + _es8388I2cWrite(0x00,0x05); // Set chip to Play & Record Mode + _es8388I2cWrite(0x0d,0x02); // Set MCLK/LRCK ratio to 256 + _es8388I2cWrite(0x01,0x40); // Power up analog and lbias + _es8388I2cWrite(0x03,0x00); // Power up ADC, Analog Input, and Mic Bias + _es8388I2cWrite(0x0a,0x50); // Use Lin2/Rin2 for ADC input ("line-in") + _es8388I2cWrite(0x09,0x00); // Select Analog Input PGA Gain for ADC to 0dB (L+R) + _es8388I2cWrite(0x10,0b01000000); // Set ADC digital volume attenuation to -32dB (left) + _es8388I2cWrite(0x11,0b01000000); // Set ADC digital volume attenuation to -32dB (right) + _es8388I2cWrite(0x04,0x0c); // Turn on LOUT2 and ROUT2 power + _es8388I2cWrite(0x02,0b01000000); // Power up DEM and STM and undocumented bit for "turn on line-out amp" + _es8388I2cWrite(0x26,0x09); // Mixer - route LIN2/RIN2 to output + _es8388I2cWrite(0x27,0b01010000); // Mixer - route LIN to left mixer, 0dB gain + _es8388I2cWrite(0x2a,0b01010000); // Mixer - route RIN to right mixer, 0dB gain _es8388I2cWrite(0x30,0b00011110); // LOUT2VOL - 0 = -45dB, 0b00011110 = +0dB _es8388I2cWrite(0x31,0b00011110); // ROUT2VOL - 0 = -45dB, 0b00011110 = +0dB - _es8388I2cWrite(0x26,0x09); // Mixer - _es8388I2cWrite(0x27,0x50); // Mixer - _es8388I2cWrite(0x2a,0x50); // Mixer - _es8388I2cWrite(0x03,0x00); // Power } public: From 2bc8ffefcef48481679b62ec663aea9d5f89d1a2 Mon Sep 17 00:00:00 2001 From: TroyHacks <5659019+troyhacks@users.noreply.github.com> Date: Fri, 21 Apr 2023 13:58:41 -0400 Subject: [PATCH 03/70] Some fixes for LyraT and also better inits/docs --- usermods/audioreactive/audio_source.h | 39 ++++++++++++++------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/usermods/audioreactive/audio_source.h b/usermods/audioreactive/audio_source.h index 40cb35d53..5bf334649 100644 --- a/usermods/audioreactive/audio_source.h +++ b/usermods/audioreactive/audio_source.h @@ -493,27 +493,30 @@ class ES8388Source : public I2SSource { void _es8388InitAdc() { // https://dl.radxa.com/rock2/docs/hw/ds/ES8388%20user%20Guide.pdf Section 10.1 + // http://www.everest-semi.com/pdf/ES8388%20DS.pdf Better spec sheet, more clear. Registries are decimal, settings are binary. // https://docs.google.com/spreadsheets/d/1CN3MvhkcPVESuxKyx1xRYqfUit5hOdsG45St9BCUm-g/edit#gid=0 generally // Sets ADC to around what AudioReactive expects, and loops line-in to line-out/headphone for monitoring. _es8388I2cBegin(); - _es8388I2cWrite(0x08,0x00); // I2S to slave - _es8388I2cWrite(0x02,0xf3); // Power down DEM and STM - _es8388I2cWrite(0x2b,0x80); // Set same LRCK - _es8388I2cWrite(0x00,0x05); // Set chip to Play & Record Mode - _es8388I2cWrite(0x0d,0x02); // Set MCLK/LRCK ratio to 256 - _es8388I2cWrite(0x01,0x40); // Power up analog and lbias - _es8388I2cWrite(0x03,0x00); // Power up ADC, Analog Input, and Mic Bias - _es8388I2cWrite(0x0a,0x50); // Use Lin2/Rin2 for ADC input ("line-in") - _es8388I2cWrite(0x09,0x00); // Select Analog Input PGA Gain for ADC to 0dB (L+R) - _es8388I2cWrite(0x10,0b01000000); // Set ADC digital volume attenuation to -32dB (left) - _es8388I2cWrite(0x11,0b01000000); // Set ADC digital volume attenuation to -32dB (right) - _es8388I2cWrite(0x04,0x0c); // Turn on LOUT2 and ROUT2 power - _es8388I2cWrite(0x02,0b01000000); // Power up DEM and STM and undocumented bit for "turn on line-out amp" - _es8388I2cWrite(0x26,0x09); // Mixer - route LIN2/RIN2 to output - _es8388I2cWrite(0x27,0b01010000); // Mixer - route LIN to left mixer, 0dB gain - _es8388I2cWrite(0x2a,0b01010000); // Mixer - route RIN to right mixer, 0dB gain - _es8388I2cWrite(0x30,0b00011110); // LOUT2VOL - 0 = -45dB, 0b00011110 = +0dB - _es8388I2cWrite(0x31,0b00011110); // ROUT2VOL - 0 = -45dB, 0b00011110 = +0dB + _es8388I2cWrite( 8,0b00000000); // I2S to slave + _es8388I2cWrite( 2,0b11110011); // Power down DEM and STM + _es8388I2cWrite(43,0b10000000); // Set same LRCK + _es8388I2cWrite( 0,0b00000101); // Set chip to Play & Record Mode + _es8388I2cWrite(13,0b00000010); // Set MCLK/LRCK ratio to 256 + _es8388I2cWrite( 1,0b01000000); // Power up analog and lbias + _es8388I2cWrite( 3,0b00000000); // Power up ADC, Analog Input, and Mic Bias + _es8388I2cWrite(10,0b01010000); // Use Lin2/Rin2 for ADC input ("line-in") + _es8388I2cWrite( 9,0b00000000); // Select Analog Input PGA Gain for ADC to 0dB (L+R) + _es8388I2cWrite(16,0b01000000); // Set ADC digital volume attenuation to -32dB (left) + _es8388I2cWrite(17,0b01000000); // Set ADC digital volume attenuation to -32dB (right) + _es8388I2cWrite( 4,0b00111100); // Turn on LOUT1 and ROUT1 and LOUT2 and ROUT2 power + _es8388I2cWrite( 2,0b01000000); // Power up DEM and STM and undocumented bit for "turn on line-out amp" + _es8388I2cWrite(38,0b00001001); // Mixer - route LIN2/RIN2 to output + _es8388I2cWrite(39,0b10010000); // Mixer - route LIN to mixL, 0dB gain was 01.. + _es8388I2cWrite(42,0b10010000); // Mixer - route RIN to mixR, 0dB gain was 01.. + _es8388I2cWrite(46,0b00011110); // LOUT1VOL - 0 = -45dB, 0b00011110 = +0dB + _es8388I2cWrite(47,0b00011110); // ROUT1VOL - 0 = -45dB, 0b00011110 = +0dB + _es8388I2cWrite(48,0b00011110); // LOUT2VOL - 0 = -45dB, 0b00011110 = +0dB + _es8388I2cWrite(49,0b00011110); // ROUT2VOL - 0 = -45dB, 0b00011110 = +0dB } public: From c14a921e5a4b9d39e494f67e7564721539cfb29b Mon Sep 17 00:00:00 2001 From: TroyHacks <5659019+troyhacks@users.noreply.github.com> Date: Tue, 25 Apr 2023 23:45:09 -0300 Subject: [PATCH 04/70] Mic settings for ES8388. Also ALC, pass-thru, etc. --- usermods/audioreactive/audio_source.h | 60 +++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 8 deletions(-) diff --git a/usermods/audioreactive/audio_source.h b/usermods/audioreactive/audio_source.h index 5bf334649..8986180f1 100644 --- a/usermods/audioreactive/audio_source.h +++ b/usermods/audioreactive/audio_source.h @@ -504,19 +504,59 @@ class ES8388Source : public I2SSource { _es8388I2cWrite(13,0b00000010); // Set MCLK/LRCK ratio to 256 _es8388I2cWrite( 1,0b01000000); // Power up analog and lbias _es8388I2cWrite( 3,0b00000000); // Power up ADC, Analog Input, and Mic Bias + _es8388I2cWrite( 4,0b11111100); // Power down DAC, Turn on LOUT1 and ROUT1 and LOUT2 and ROUT2 power + _es8388I2cWrite( 2,0b01000000); // Power up DEM and STM and undocumented bit for "turn on line-out amp" + + // #define use_es8388_mic + + #ifdef use_es8388_mic + // Pick one. If you have to use the mics, use a Lyra-T over an AudioKit. + // + // The mics *and* line-in are BOTH connected to LIN2/RIN2 on the AudioKit + // so there's no way to completely eliminate the mics. It's also hella noisy. + // Line-in works OK on the AudioKit, generally speaking, as the mics really need + // amplification to be noticable. + // + // The Lyra-T does a reasonable job with mic input as configured below. + // + _es8388I2cWrite(10,0b00000000); // Use Lin1/Rin1 for ADC input (mic on Lyra-T) + //_es8388I2cWrite(10,0b01010000); // Use Lin2/Rin2 for ADC input (mic *and* line-in on AudioKit) + + _es8388I2cWrite( 9,0b10001000); // Select Analog Input PGA Gain for ADC to +24dB (L+R) + _es8388I2cWrite(16,0b00000000); // Set ADC digital volume attenuation to 0dB (left) + _es8388I2cWrite(17,0b00000000); // Set ADC digital volume attenuation to 0dB (right) + _es8388I2cWrite(38,0b00011011); // Mixer - route LIN1/RIN1 to output after mic gain + + _es8388I2cWrite(39,0b01000000); // Mixer - route LIN to mixL, +6dB gain + _es8388I2cWrite(42,0b01000000); // Mixer - route RIN to mixR, +6dB gain + _es8388I2cWrite(46,0b00100001); // LOUT1VOL - 0b00100001 = +4.5dB + _es8388I2cWrite(47,0b00100001); // ROUT1VOL - 0b00100001 = +4.5dB + _es8388I2cWrite(48,0b00100001); // LOUT2VOL - 0b00100001 = +4.5dB + _es8388I2cWrite(49,0b00100001); // ROUT2VOL - 0b00100001 = +4.5dB + + // Music ALC - the mics like Auto Level Control + // You can also use this for line-in, but it's not really needed. + // + _es8388I2cWrite(18,0b11111000); // ALC: stereo, max gain +35.5dB, min gain -12dB + _es8388I2cWrite(19,0b00110000); // ALC: target -1.5dB, 0ms hold time + _es8388I2cWrite(20,0b10100110); // ALC: gain ramp up = 420ms/93ms, gain ramp down = check manual for calc + _es8388I2cWrite(21,0b00000110); // ALC: use "ALC" mode, no zero-cross, window 96 samples + _es8388I2cWrite(22,0b01011001); // ALC: noise gate threshold, PGA gain constant, noise gate enabled + #else _es8388I2cWrite(10,0b01010000); // Use Lin2/Rin2 for ADC input ("line-in") _es8388I2cWrite( 9,0b00000000); // Select Analog Input PGA Gain for ADC to 0dB (L+R) _es8388I2cWrite(16,0b01000000); // Set ADC digital volume attenuation to -32dB (left) _es8388I2cWrite(17,0b01000000); // Set ADC digital volume attenuation to -32dB (right) - _es8388I2cWrite( 4,0b00111100); // Turn on LOUT1 and ROUT1 and LOUT2 and ROUT2 power - _es8388I2cWrite( 2,0b01000000); // Power up DEM and STM and undocumented bit for "turn on line-out amp" _es8388I2cWrite(38,0b00001001); // Mixer - route LIN2/RIN2 to output - _es8388I2cWrite(39,0b10010000); // Mixer - route LIN to mixL, 0dB gain was 01.. - _es8388I2cWrite(42,0b10010000); // Mixer - route RIN to mixR, 0dB gain was 01.. - _es8388I2cWrite(46,0b00011110); // LOUT1VOL - 0 = -45dB, 0b00011110 = +0dB - _es8388I2cWrite(47,0b00011110); // ROUT1VOL - 0 = -45dB, 0b00011110 = +0dB - _es8388I2cWrite(48,0b00011110); // LOUT2VOL - 0 = -45dB, 0b00011110 = +0dB - _es8388I2cWrite(49,0b00011110); // ROUT2VOL - 0 = -45dB, 0b00011110 = +0dB + + _es8388I2cWrite(39,0b01010000); // Mixer - route LIN to mixL, 0dB gain + _es8388I2cWrite(42,0b01010000); // Mixer - route RIN to mixR, 0dB gain + _es8388I2cWrite(46,0b00011011); // LOUT1VOL - 0b00011110 = +0dB, 0b00011011 = Lyra-T balance fix + _es8388I2cWrite(47,0b00011110); // ROUT1VOL - 0b00011110 = +0dB + _es8388I2cWrite(48,0b00011110); // LOUT2VOL - 0b00011110 = +0dB + _es8388I2cWrite(49,0b00011110); // ROUT2VOL - 0b00011110 = +0dB + #endif + } public: @@ -527,6 +567,10 @@ class ES8388Source : public I2SSource { void initialize(int8_t sdaPin, int8_t sclPin, int8_t i2swsPin, int8_t i2ssdPin, int8_t i2sckPin, int8_t mclkPin) { + // BUG: "use global I2C pins" are valid as -1, and -1 is seen as invalid here. + // Workaround: Set I2C pins here, which will also set them globally. + // Bug also exists in ES7243. + // check that pins are valid if ((sdaPin < 0) || (sclPin < 0)) { ERRORSR_PRINTF("\nAR: invalid ES8388 I2C pins: SDA=%d, SCL=%d\n", sdaPin, sclPin); From 65f2490e891992fcd247ab59937e799c1c21f764 Mon Sep 17 00:00:00 2001 From: TroyHacks <5659019+troyhacks@users.noreply.github.com> Date: Tue, 25 Apr 2023 23:47:28 -0300 Subject: [PATCH 05/70] It's offically the LyraT, not Lyra-T. --- usermods/audioreactive/audio_source.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/usermods/audioreactive/audio_source.h b/usermods/audioreactive/audio_source.h index 8986180f1..877086d9c 100644 --- a/usermods/audioreactive/audio_source.h +++ b/usermods/audioreactive/audio_source.h @@ -510,16 +510,16 @@ class ES8388Source : public I2SSource { // #define use_es8388_mic #ifdef use_es8388_mic - // Pick one. If you have to use the mics, use a Lyra-T over an AudioKit. + // Pick one. If you have to use the mics, use a LyraT over an AudioKit. // // The mics *and* line-in are BOTH connected to LIN2/RIN2 on the AudioKit // so there's no way to completely eliminate the mics. It's also hella noisy. // Line-in works OK on the AudioKit, generally speaking, as the mics really need // amplification to be noticable. // - // The Lyra-T does a reasonable job with mic input as configured below. + // The LyraT does a reasonable job with mic input as configured below. // - _es8388I2cWrite(10,0b00000000); // Use Lin1/Rin1 for ADC input (mic on Lyra-T) + _es8388I2cWrite(10,0b00000000); // Use Lin1/Rin1 for ADC input (mic on LyraT) //_es8388I2cWrite(10,0b01010000); // Use Lin2/Rin2 for ADC input (mic *and* line-in on AudioKit) _es8388I2cWrite( 9,0b10001000); // Select Analog Input PGA Gain for ADC to +24dB (L+R) @@ -551,7 +551,7 @@ class ES8388Source : public I2SSource { _es8388I2cWrite(39,0b01010000); // Mixer - route LIN to mixL, 0dB gain _es8388I2cWrite(42,0b01010000); // Mixer - route RIN to mixR, 0dB gain - _es8388I2cWrite(46,0b00011011); // LOUT1VOL - 0b00011110 = +0dB, 0b00011011 = Lyra-T balance fix + _es8388I2cWrite(46,0b00011011); // LOUT1VOL - 0b00011110 = +0dB, 0b00011011 = LyraT balance fix _es8388I2cWrite(47,0b00011110); // ROUT1VOL - 0b00011110 = +0dB _es8388I2cWrite(48,0b00011110); // LOUT2VOL - 0b00011110 = +0dB _es8388I2cWrite(49,0b00011110); // ROUT2VOL - 0b00011110 = +0dB From 90e37439e526e2388c62851bbe5517ecbc04be0c Mon Sep 17 00:00:00 2001 From: TroyHacks <5659019+troyhacks@users.noreply.github.com> Date: Mon, 1 May 2023 21:07:33 -0400 Subject: [PATCH 06/70] Better ES8388 init and mic support --- usermods/audioreactive/audio_source.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/usermods/audioreactive/audio_source.h b/usermods/audioreactive/audio_source.h index 877086d9c..1c2d78220 100644 --- a/usermods/audioreactive/audio_source.h +++ b/usermods/audioreactive/audio_source.h @@ -493,9 +493,12 @@ class ES8388Source : public I2SSource { void _es8388InitAdc() { // https://dl.radxa.com/rock2/docs/hw/ds/ES8388%20user%20Guide.pdf Section 10.1 - // http://www.everest-semi.com/pdf/ES8388%20DS.pdf Better spec sheet, more clear. Registries are decimal, settings are binary. + // http://www.everest-semi.com/pdf/ES8388%20DS.pdf Better spec sheet, more clear. // https://docs.google.com/spreadsheets/d/1CN3MvhkcPVESuxKyx1xRYqfUit5hOdsG45St9BCUm-g/edit#gid=0 generally // Sets ADC to around what AudioReactive expects, and loops line-in to line-out/headphone for monitoring. + // Registries are decimal, settings are binary as that's how everything is listed in the docs + // ...which makes it easier to reference the docs. + // _es8388I2cBegin(); _es8388I2cWrite( 8,0b00000000); // I2S to slave _es8388I2cWrite( 2,0b11110011); // Power down DEM and STM From 9831e7bc3b85ba58287593a120102f4ecd67d2fd Mon Sep 17 00:00:00 2001 From: TroyHacks <5659019+troyhacks@users.noreply.github.com> Date: Thu, 4 May 2023 08:55:00 -0400 Subject: [PATCH 07/70] Warnings about AudioKit rubbish --- usermods/audioreactive/audio_source.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/usermods/audioreactive/audio_source.h b/usermods/audioreactive/audio_source.h index 1c2d78220..e7ccf44df 100644 --- a/usermods/audioreactive/audio_source.h +++ b/usermods/audioreactive/audio_source.h @@ -513,15 +513,16 @@ class ES8388Source : public I2SSource { // #define use_es8388_mic #ifdef use_es8388_mic - // Pick one. If you have to use the mics, use a LyraT over an AudioKit. - // // The mics *and* line-in are BOTH connected to LIN2/RIN2 on the AudioKit // so there's no way to completely eliminate the mics. It's also hella noisy. // Line-in works OK on the AudioKit, generally speaking, as the mics really need - // amplification to be noticable. + // amplification to be noticable in a quiet room. If you're in a very loud room, + // the mics on the AudioKit WILL pick up sound even in line-in mode. + // TL;DR: Don't use the AudioKit for anything, use the LyraT. // // The LyraT does a reasonable job with mic input as configured below. - // + + // Pick one of these. If you have to use the mics, use a LyraT over an AudioKit if you can: _es8388I2cWrite(10,0b00000000); // Use Lin1/Rin1 for ADC input (mic on LyraT) //_es8388I2cWrite(10,0b01010000); // Use Lin2/Rin2 for ADC input (mic *and* line-in on AudioKit) From dd1cf0ec561daf762add59be0892c3ae270a14a8 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Mon, 19 Jun 2023 13:27:54 +0100 Subject: [PATCH 08/70] AC lacks ERRORSR_PRINTF --- usermods/audioreactive/audio_source.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/usermods/audioreactive/audio_source.h b/usermods/audioreactive/audio_source.h index e7ccf44df..7ab4faec5 100644 --- a/usermods/audioreactive/audio_source.h +++ b/usermods/audioreactive/audio_source.h @@ -577,12 +577,12 @@ class ES8388Source : public I2SSource { // check that pins are valid if ((sdaPin < 0) || (sclPin < 0)) { - ERRORSR_PRINTF("\nAR: invalid ES8388 I2C pins: SDA=%d, SCL=%d\n", sdaPin, sclPin); + DEBUGSR_PRINTF("\nAR: invalid ES8388 I2C pins: SDA=%d, SCL=%d\n", sdaPin, sclPin); return; } if ((i2sckPin < 0) || (mclkPin < 0)) { - ERRORSR_PRINTF("\nAR: invalid I2S pin: SCK=%d, MCLK=%d\n", i2sckPin, mclkPin); + DEBUGSR_PRINTF("\nAR: invalid I2S pin: SCK=%d, MCLK=%d\n", i2sckPin, mclkPin); return; } @@ -590,7 +590,7 @@ class ES8388Source : public I2SSource { PinManagerPinType es8388Pins[2] = { { sdaPin, true }, { sclPin, true } }; if (!pinManager.allocateMultiplePins(es8388Pins, 2, PinOwner::HW_I2C)) { pinManager.deallocateMultiplePins(es8388Pins, 2, PinOwner::HW_I2C); - ERRORSR_PRINTF("\nAR: Failed to allocate ES8388 I2C pins: SDA=%d, SCL=%d\n", sdaPin, sclPin); + DEBUGSR_PRINTF("\nAR: Failed to allocate ES8388 I2C pins: SDA=%d, SCL=%d\n", sdaPin, sclPin); return; } From b29611509eb0944c445ec1bab4a989161722957a Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Mon, 19 Jun 2023 13:33:16 +0100 Subject: [PATCH 09/70] AC lacks ERRORSR_PRINTLN --- usermods/audioreactive/audio_source.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usermods/audioreactive/audio_source.h b/usermods/audioreactive/audio_source.h index 7ab4faec5..21155c48f 100644 --- a/usermods/audioreactive/audio_source.h +++ b/usermods/audioreactive/audio_source.h @@ -472,7 +472,7 @@ class ES8388Source : public I2SSource { void _es8388I2cBegin() { bool i2c_initialized = Wire.begin(pin_ES8388_SDA, pin_ES8388_SCL, 100000U); if (i2c_initialized == false) { - ERRORSR_PRINTLN(F("AR: ES8388 failed to initialize I2C bus driver.")); + DEBUGSR_PRINTLN(F("AR: ES8388 failed to initialize I2C bus driver.")); } } From 63df85f7f967133038a80f0dc00c67e0088519d1 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Mon, 19 Jun 2023 13:33:46 +0100 Subject: [PATCH 10/70] AC lacks i2sMaster param to I2SSource --- usermods/audioreactive/audio_source.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usermods/audioreactive/audio_source.h b/usermods/audioreactive/audio_source.h index 21155c48f..fdafee1d7 100644 --- a/usermods/audioreactive/audio_source.h +++ b/usermods/audioreactive/audio_source.h @@ -565,7 +565,7 @@ class ES8388Source : public I2SSource { public: ES8388Source(SRate_t sampleRate, int blockSize, float sampleScale = 1.0f, bool i2sMaster=true) : - I2SSource(sampleRate, blockSize, sampleScale, i2sMaster) { + I2SSource(sampleRate, blockSize, sampleScale) { _config.channel_format = I2S_CHANNEL_FMT_ONLY_LEFT; }; From 498dd76730469cf3bde53851a4908c52c569b60b Mon Sep 17 00:00:00 2001 From: Christian Schwinne Date: Mon, 26 Jun 2023 18:16:38 +0200 Subject: [PATCH 11/70] Decouple segment led buffer from global led buffer --- wled00/FX.h | 11 +++++----- wled00/FX_fcn.cpp | 51 ++++++++++++++++++++++------------------------- wled00/cfg.cpp | 4 ++-- wled00/set.cpp | 2 +- wled00/xml.cpp | 2 +- 5 files changed, 34 insertions(+), 36 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index 19b1fc4ac..059bf820c 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -380,7 +380,6 @@ typedef struct Segment { uint16_t aux1; // custom var byte* data; // effect data pointer CRGB* leds; // local leds[] array (may be a pointer to global) - static CRGB *_globalLeds; // global leds[] array static uint16_t maxWidth, maxHeight; // these define matrix width & height (max. segment dimensions) private: @@ -487,7 +486,7 @@ typedef struct Segment { //if (leds) Serial.printf(" [%u]", length()*sizeof(CRGB)); //Serial.println(); //#endif - if (!Segment::_globalLeds && leds) free(leds); + if (leds) free(leds); if (name) delete[] name; if (_t) delete _t; deallocateData(); @@ -497,7 +496,7 @@ typedef struct Segment { Segment& operator= (Segment &&orig) noexcept; // move assignment #ifdef WLED_DEBUG - size_t getSize() const { return sizeof(Segment) + (data?_dataLen:0) + (name?strlen(name):0) + (_t?sizeof(Transition):0) + (!Segment::_globalLeds && leds?sizeof(CRGB)*length():0); } + size_t getSize() const { return sizeof(Segment) + (data?_dataLen:0) + (name?strlen(name):0) + (_t?sizeof(Transition):0) + (leds?sizeof(CRGB)*length():0); } #endif inline bool getOption(uint8_t n) const { return ((options >> n) & 0x01); } @@ -710,7 +709,7 @@ class WS2812FX { // 96 bytes panel.clear(); #endif customPalettes.clear(); - if (useLedsArray && Segment::_globalLeds) free(Segment::_globalLeds); + if (_globalLedBuffer) free(_globalLedBuffer); } static WS2812FX* getInstance(void) { return instance; } @@ -758,7 +757,7 @@ class WS2812FX { // 96 bytes // return true if the strip is being sent pixel updates isUpdating(void), deserializeMap(uint8_t n=0), - useLedsArray = false; + useGlobalLedBuffer = false; inline bool isServicing(void) { return _isServicing; } inline bool hasWhiteChannel(void) {return _hasWhiteChannel;} @@ -905,6 +904,8 @@ class WS2812FX { // 96 bytes uint8_t _segment_index; uint8_t _mainSegment; + static uint32_t *_globalLedBuffer; // global leds[] array + void estimateCurrentAndLimitBri(void); }; diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 50d3f2f40..181819e60 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -74,7 +74,6 @@ // Segment class implementation /////////////////////////////////////////////////////////////////////////////// uint16_t Segment::_usedSegmentData = 0U; // amount of RAM all segments use for their data[] -CRGB *Segment::_globalLeds = nullptr; uint16_t Segment::maxWidth = DEFAULT_LED_COUNT; uint16_t Segment::maxHeight = 1; @@ -86,11 +85,11 @@ Segment::Segment(const Segment &orig) { data = nullptr; _dataLen = 0; _t = nullptr; - if (leds && !Segment::_globalLeds) leds = nullptr; + leds = nullptr; if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); } if (orig.data) { if (allocateData(orig._dataLen)) memcpy(data, orig.data, orig._dataLen); } if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); } - if (orig.leds && !Segment::_globalLeds) { leds = (CRGB*)malloc(sizeof(CRGB)*length()); if (leds) memcpy(leds, orig.leds, sizeof(CRGB)*length()); } + if (orig.leds) { leds = (CRGB*)malloc(sizeof(CRGB)*length()); if (leds) memcpy(leds, orig.leds, sizeof(CRGB)*length()); } } // move constructor @@ -111,7 +110,7 @@ Segment& Segment::operator= (const Segment &orig) { // clean destination if (name) delete[] name; if (_t) delete _t; - if (leds && !Segment::_globalLeds) free(leds); + if (leds) free(leds); deallocateData(); // copy source memcpy((void*)this, (void*)&orig, sizeof(Segment)); @@ -120,12 +119,12 @@ Segment& Segment::operator= (const Segment &orig) { data = nullptr; _dataLen = 0; _t = nullptr; - if (!Segment::_globalLeds) leds = nullptr; + leds = nullptr; // copy source data if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); } if (orig.data) { if (allocateData(orig._dataLen)) memcpy(data, orig.data, orig._dataLen); } if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); } - if (orig.leds && !Segment::_globalLeds) { leds = (CRGB*)malloc(sizeof(CRGB)*length()); if (leds) memcpy(leds, orig.leds, sizeof(CRGB)*length()); } + if (orig.leds) { leds = (CRGB*)malloc(sizeof(CRGB)*length()); if (leds) memcpy(leds, orig.leds, sizeof(CRGB)*length()); } } return *this; } @@ -137,7 +136,7 @@ Segment& Segment::operator= (Segment &&orig) noexcept { if (name) delete[] name; // free old name deallocateData(); // free old runtime data if (_t) delete _t; - if (leds && !Segment::_globalLeds) free(leds); + if (leds) free(leds); memcpy((void*)this, (void*)&orig, sizeof(Segment)); orig.name = nullptr; orig.data = nullptr; @@ -183,7 +182,7 @@ void Segment::deallocateData() { */ void Segment::resetIfRequired() { if (reset) { - if (leds && !Segment::_globalLeds) { free(leds); leds = nullptr; } + if (leds) { free(leds); leds = nullptr; } //if (transitional && _t) { transitional = false; delete _t; _t = nullptr; } deallocateData(); next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0; @@ -193,19 +192,16 @@ void Segment::resetIfRequired() { void Segment::setUpLeds() { // deallocation happens in resetIfRequired() as it is called when segment changes or in destructor - if (Segment::_globalLeds) - #ifndef WLED_DISABLE_2D - leds = &Segment::_globalLeds[start + startY*Segment::maxWidth]; - #else - leds = &Segment::_globalLeds[start]; - #endif - else if (leds == nullptr && length() > 0) { //softhack007 quickfix - avoid malloc(0) which is undefined behaviour (should not happen, but i've seen it) + if (WS2812FX::_globalLedBuffer) return; // TODO optional seg buffer for FX without lossy restore due to opacity + + // no global buffer + if (leds == nullptr && length() > 0) { //softhack007 quickfix - avoid malloc(0) which is undefined behaviour (should not happen, but i've seen it) //#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) //if (psramFound()) // leds = (CRGB*)ps_malloc(sizeof(CRGB)*length()); // softhack007 disabled; putting leds into psram leads to horrible slowdown on WROVER boards //else //#endif - leds = (CRGB*)malloc(sizeof(CRGB)*length()); + leds = (CRGB*)malloc(sizeof(CRGB)*length()); } } @@ -1062,22 +1058,22 @@ void WS2812FX::finalizeInit(void) Segment::maxHeight = 1; } - //initialize leds array. TBD: realloc if nr of leds change - if (Segment::_globalLeds) { - purgeSegments(true); - free(Segment::_globalLeds); - Segment::_globalLeds = nullptr; + // initialize leds array + if (_globalLedBuffer) { + //purgeSegments(true); + free(_globalLedBuffer); + _globalLedBuffer = nullptr; } - if (useLedsArray) { - size_t arrSize = sizeof(CRGB) * getLengthTotal(); + if (useGlobalLedBuffer) { + size_t arrSize = sizeof(uint32_t) * getLengthTotal(); // softhack007 disabled; putting leds into psram leads to horrible slowdown on WROVER boards (see setUpLeds()) //#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) //if (psramFound()) - // Segment::_globalLeds = (CRGB*) ps_malloc(arrSize); + // Segment::_globalLedBuffer = (CRGB*) ps_malloc(arrSize); //else //#endif - Segment::_globalLeds = (CRGB*) malloc(arrSize); - memset(Segment::_globalLeds, 0, arrSize); + _globalLedBuffer = (uint32_t*) malloc(arrSize); + memset(_globalLedBuffer, 0, arrSize); } //segments are created in makeAutoSegments(); @@ -1604,7 +1600,7 @@ void WS2812FX::printSize() { DEBUG_PRINTF("Data: %d*%d=%uB\n", sizeof(const char *), _modeData.size(), (_modeData.capacity()*sizeof(const char *))); DEBUG_PRINTF("Map: %d*%d=%uB\n", sizeof(uint16_t), (int)customMappingSize, customMappingSize*sizeof(uint16_t)); size = getLengthTotal(); - if (useLedsArray) DEBUG_PRINTF("Buffer: %d*%u=%uB\n", sizeof(CRGB), size, size*sizeof(CRGB)); + if (useGlobalLedBuffer) DEBUG_PRINTF("Buffer: %d*%u=%uB\n", sizeof(CRGB), size, size*sizeof(CRGB)); } #endif @@ -1707,6 +1703,7 @@ bool WS2812FX::deserializeMap(uint8_t n) { WS2812FX* WS2812FX::instance = nullptr; +uint32_t* WS2812FX::_globalLedBuffer = nullptr; const char JSON_mode_names[] PROGMEM = R"=====(["FX names moved"])====="; const char JSON_palette_names[] PROGMEM = R"=====([ diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index 15ef0e1f0..5b0fbd5fb 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -90,7 +90,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { CJSON(strip.cctBlending, hw_led[F("cb")]); Bus::setCCTBlend(strip.cctBlending); strip.setTargetFps(hw_led["fps"]); //NOP if 0, default 42 FPS - CJSON(strip.useLedsArray, hw_led[F("ld")]); + CJSON(strip.useGlobalLedBuffer, hw_led[F("ld")]); #ifndef WLED_DISABLE_2D // 2D Matrix Settings @@ -706,7 +706,7 @@ void serializeConfig() { hw_led[F("cb")] = strip.cctBlending; hw_led["fps"] = strip.getTargetFps(); hw_led[F("rgbwm")] = Bus::getGlobalAWMode(); // global auto white mode override - hw_led[F("ld")] = strip.useLedsArray; + hw_led[F("ld")] = strip.useGlobalLedBuffer; #ifndef WLED_DISABLE_2D // 2D Matrix Settings diff --git a/wled00/set.cpp b/wled00/set.cpp index 588ae0cd7..30d499d60 100644 --- a/wled00/set.cpp +++ b/wled00/set.cpp @@ -91,7 +91,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) Bus::setCCTBlend(strip.cctBlending); Bus::setGlobalAWMode(request->arg(F("AW")).toInt()); strip.setTargetFps(request->arg(F("FR")).toInt()); - strip.useLedsArray = request->hasArg(F("LD")); + strip.useGlobalLedBuffer = request->hasArg(F("LD")); bool busesChanged = false; for (uint8_t s = 0; s < WLED_MAX_BUSSES+WLED_MIN_VIRTUAL_BUSSES; s++) { diff --git a/wled00/xml.cpp b/wled00/xml.cpp index e9eb8dd0f..8057aac73 100644 --- a/wled00/xml.cpp +++ b/wled00/xml.cpp @@ -404,7 +404,7 @@ void getSettingsJS(byte subPage, char* dest) sappend('v',SET_F("CB"),strip.cctBlending); sappend('v',SET_F("FR"),strip.getTargetFps()); sappend('v',SET_F("AW"),Bus::getGlobalAWMode()); - sappend('c',SET_F("LD"),strip.useLedsArray); + sappend('c',SET_F("LD"),strip.useGlobalLedBuffer); for (uint8_t s=0; s < busses.getNumBusses(); s++) { Bus* bus = busses.getBus(s); From f6e86bfcf8a174278cd4990b3a68f932b9245f19 Mon Sep 17 00:00:00 2001 From: Christian Schwinne Date: Mon, 26 Jun 2023 22:12:32 +0200 Subject: [PATCH 12/70] First global buffer iteration --- wled00/FX.h | 5 +- wled00/FX_fcn.cpp | 36 +++++++++--- wled00/bus_manager.cpp | 4 +- wled00/bus_manager.h | 12 ++++ wled00/bus_wrapper.h | 130 ++++++++++++++++++++--------------------- 5 files changed, 111 insertions(+), 76 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index 059bf820c..6b312a21a 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -677,6 +677,7 @@ class WS2812FX { // 96 bytes // true private variables _length(DEFAULT_LED_COUNT), _brightness(DEFAULT_BRIGHTNESS), + _renderBrightness(0), _transitionDur(750), _targetFps(WLED_FPS), _frametime(FRAMETIME_FIXED), @@ -875,7 +876,7 @@ class WS2812FX { // 96 bytes private: uint16_t _length; - uint8_t _brightness; + uint8_t _brightness, _renderBrightness; uint16_t _transitionDur; uint8_t _targetFps; @@ -906,7 +907,7 @@ class WS2812FX { // 96 bytes static uint32_t *_globalLedBuffer; // global leds[] array - void + uint8_t estimateCurrentAndLimitBri(void); }; diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 181819e60..90a285546 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1102,8 +1102,12 @@ void WS2812FX::service() { // last condition ensures all solid segments are updated at the same time if(nowUp > seg.next_time || _triggered || (doShow && seg.mode == FX_MODE_STATIC)) { - if (seg.grouping == 0) seg.grouping = 1; //sanity check - doShow = true; + if (seg.grouping == 0) seg.grouping = 1; // sanity check + if (!doShow) { + busses.setBrightness(_brightness); // bus luminance must be set before FX using setPixelColor() + _renderBrightness = _brightness; // save in case brightness gets changed while FX is calculated + doShow = true; + } uint16_t delay = FRAMETIME; if (!seg.freeze) { //only run effect function if not frozen @@ -1142,13 +1146,18 @@ void IRAM_ATTR WS2812FX::setPixelColor(int i, uint32_t col) { if (i < customMappingSize) i = customMappingTable[i]; if (i >= _length) return; - busses.setPixelColor(i, col); + if (_globalLedBuffer) { + _globalLedBuffer[i] = col; + } else { + busses.setPixelColor(i, col); + } } uint32_t WS2812FX::getPixelColor(uint16_t i) { if (i < customMappingSize) i = customMappingTable[i]; if (i >= _length) return 0; + if (_globalLedBuffer) return _globalLedBuffer[i]; return busses.getPixelColor(i); } @@ -1164,7 +1173,7 @@ uint32_t WS2812FX::getPixelColor(uint16_t i) #define MA_FOR_ESP 100 //how much mA does the ESP use (Wemos D1 about 80mA, ESP32 about 120mA) //you can set it to 0 if the ESP is powered by USB and the LEDs by external -void WS2812FX::estimateCurrentAndLimitBri() { +uint8_t WS2812FX::estimateCurrentAndLimitBri() { //power limit calculation //each LED can draw up 195075 "power units" (approx. 53mA) //one PU is the power it takes to have 1 channel 1 step brighter per brightness step @@ -1180,7 +1189,7 @@ void WS2812FX::estimateCurrentAndLimitBri() { if (ablMilliampsMax < 150 || actualMilliampsPerLed == 0) { //0 mA per LED and too low numbers turn off calculation currentMilliamps = 0; busses.setBrightness(_brightness); - return; + return _brightness; } uint16_t pLen = getLengthPhysical(); @@ -1219,13 +1228,14 @@ void WS2812FX::estimateCurrentAndLimitBri() { uint32_t powerSum0 = powerSum; powerSum *= _brightness; + uint8_t newBri = _brightness; if (powerSum > powerBudget) //scale brightness down to stay in current limit { float scale = (float)powerBudget / (float)powerSum; uint16_t scaleI = scale * 255; uint8_t scaleB = (scaleI > 255) ? 255 : scaleI; - uint8_t newBri = scale8(_brightness, scaleB); + newBri = scale8(_brightness, scaleB); busses.setBrightness(newBri); //to keep brightness uniform, sets virtual busses too currentMilliamps = (powerSum0 * newBri) / puPerMilliamp; } else { @@ -1234,6 +1244,7 @@ void WS2812FX::estimateCurrentAndLimitBri() { } currentMilliamps += MA_FOR_ESP; //add power of ESP back to estimate currentMilliamps += pLen; //add standby power back to estimate + return newBri; } void WS2812FX::show(void) { @@ -1242,7 +1253,16 @@ void WS2812FX::show(void) { show_callback callback = _callback; if (callback) callback(); - estimateCurrentAndLimitBri(); + uint8_t busBrightness = estimateCurrentAndLimitBri(); + + if (_globalLedBuffer) { // copy data from buffer to bus + for (uint16_t i = 0; i < _length; i++) busses.setPixelColor(i, _globalLedBuffer[i]); + } else { + // if brightness changed since last show, must set everything again to update to new luminance + if (_renderBrightness != busBrightness) { + for (uint16_t i = 0; i < _length; i++) busses.setPixelColor(i, busses.getPixelColor(i)); // LOSSY and slow! + } + } // some buses send asynchronously and this method will return before // all of the data has been sent. @@ -1254,6 +1274,7 @@ void WS2812FX::show(void) { if (diff > 0) fpsCurr = 1000 / diff; _cumulativeFps = (3 * _cumulativeFps + fpsCurr) >> 2; _lastShow = now; + _renderBrightness = _brightness; } /** @@ -1321,6 +1342,7 @@ void WS2812FX::setBrightness(uint8_t b, bool direct) { if (direct) { // would be dangerous if applied immediately (could exceed ABL), but will not output until the next show() busses.setBrightness(b); + _renderBrightness = b; } else { unsigned long t = millis(); if (_segments[0].next_time > t + 22 && t - _lastShow > MIN_SHOW_DELAY) show(); //apply brightness change immediately if no refresh soon diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index 4b96060ef..729393cb6 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -172,7 +172,7 @@ uint32_t BusDigital::getPixelColor(uint16_t pix) { if (_type == TYPE_WS2812_1CH_X3) { // map to correct IC, each controls 3 LEDs uint16_t pOld = pix; pix = IC_INDEX_WS2812_1CH_3X(pix); - uint32_t c = PolyBus::getPixelColor(_busPtr, _iType, pix, co); + uint32_t c = restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, pix, co)); switch (pOld % 3) { // get only the single channel case 0: c = RGBW32(G(c), G(c), G(c), G(c)); break; case 1: c = RGBW32(R(c), R(c), R(c), R(c)); break; @@ -180,7 +180,7 @@ uint32_t BusDigital::getPixelColor(uint16_t pix) { } return c; } - return PolyBus::getPixelColor(_busPtr, _iType, pix, co); + return restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, pix, co)); } uint8_t BusDigital::getPins(uint8_t* pinArray) { diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index b6d79d077..fd5d8651f 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -223,6 +223,18 @@ class BusDigital : public Bus { uint16_t _frequencykHz = 0U; void * _busPtr = nullptr; const ColorOrderMap &_colorOrderMap; + + inline uint32_t restoreColorLossy(uint32_t c) { + if (_bri == 255) return c; + uint8_t* chan = (uint8_t*) &c; + + for (uint8_t i=0; i<4; i++) + { + uint16_t val = chan[i]; + chan[i] = (val << 8) / (_bri + 1); + } + return c; + } }; diff --git a/wled00/bus_wrapper.h b/wled00/bus_wrapper.h index dce23478d..0314a793e 100644 --- a/wled00/bus_wrapper.h +++ b/wled00/bus_wrapper.h @@ -810,97 +810,97 @@ class PolyBus { switch (busType) { case I_NONE: break; #ifdef ESP8266 - case I_8266_U0_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_NEO_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_U1_NEO_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_DM_NEO_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_BB_NEO_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_U0_NEO_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_U1_NEO_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_DM_NEO_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_BB_NEO_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_U0_400_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_U1_400_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_DM_400_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_BB_400_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_U0_TM1_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_U1_TM1_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_DM_TM1_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_BB_TM1_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_U0_TM2_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_U1_TM2_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_DM_TM2_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_BB_TM2_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_U0_UCS_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_U1_UCS_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_DM_UCS_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_BB_UCS_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_U0_UCS_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_U1_UCS_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_DM_UCS_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_8266_BB_UCS_4: (static_cast(busPtr))->SetLuminance(b); break; #endif #ifdef ARDUINO_ARCH_ESP32 - case I_32_RN_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_NEO_3: (static_cast(busPtr))->SetLuminance(b); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_NEO_3: (static_cast(busPtr))->SetLuminance(b); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_NEO_3: (static_cast(busPtr))->SetLuminance(b); break; #endif -// case I_32_BB_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; +// case I_32_BB_NEO_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_32_RN_NEO_4: (static_cast(busPtr))->SetLuminance(b); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_NEO_4: (static_cast(busPtr))->SetLuminance(b); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_NEO_4: (static_cast(busPtr))->SetLuminance(b); break; #endif -// case I_32_BB_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; +// case I_32_BB_NEO_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_32_RN_400_3: (static_cast(busPtr))->SetLuminance(b); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_400_3: (static_cast(busPtr))->SetLuminance(b); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_400_3: (static_cast(busPtr))->SetLuminance(b); break; #endif -// case I_32_BB_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; +// case I_32_BB_400_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_32_RN_TM1_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_32_RN_TM2_3: (static_cast(busPtr))->SetLuminance(b); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_I0_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_TM1_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_32_I0_TM2_3: (static_cast(busPtr))->SetLuminance(b); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_I1_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_TM1_4: (static_cast(busPtr))->SetLuminance(b); break; + case I_32_I1_TM2_3: (static_cast(busPtr))->SetLuminance(b); break; #endif - case I_32_RN_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_UCS_3: (static_cast(busPtr))->SetLuminance(b); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_UCS_3: (static_cast(busPtr))->SetLuminance(b); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_UCS_3: (static_cast(busPtr))->SetLuminance(b); break; #endif -// case I_32_BB_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; +// case I_32_BB_UCS_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_32_RN_UCS_4: (static_cast(busPtr))->SetLuminance(b); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_UCS_4: (static_cast(busPtr))->SetLuminance(b); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_UCS_4: (static_cast(busPtr))->SetLuminance(b); break; #endif -// case I_32_BB_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; +// case I_32_BB_UCS_4: (static_cast(busPtr))->SetLuminance(b); break; #endif - case I_HS_DOT_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_DOT_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_HS_LPD_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_LPD_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_HS_LPO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_LPO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_HS_WS1_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_WS1_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_HS_P98_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_P98_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_HS_DOT_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_SS_DOT_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_HS_LPD_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_SS_LPD_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_HS_LPO_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_SS_LPO_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_HS_WS1_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_SS_WS1_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_HS_P98_3: (static_cast(busPtr))->SetLuminance(b); break; + case I_SS_P98_3: (static_cast(busPtr))->SetLuminance(b); break; } }; static uint32_t getPixelColor(void* busPtr, uint8_t busType, uint16_t pix, uint8_t co) { @@ -1209,4 +1209,4 @@ class PolyBus { } }; -#endif +#endif \ No newline at end of file From 61ba16b7799c5d674affdc4c7618f40d9abd526f Mon Sep 17 00:00:00 2001 From: Christian Schwinne Date: Tue, 27 Jun 2023 00:38:30 +0200 Subject: [PATCH 13/70] Global buffer and ABL fixes --- wled00/FX_fcn.cpp | 13 +++++++++++-- wled00/bus_manager.cpp | 1 + wled00/bus_manager.h | 4 +++- wled00/cfg.cpp | 9 +++++++-- wled00/data/settings_leds.htm | 2 +- wled00/wled.cpp | 9 +++++++-- 6 files changed, 30 insertions(+), 8 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 90a285546..206e626f2 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1209,7 +1209,13 @@ uint8_t WS2812FX::estimateCurrentAndLimitBri() { uint16_t len = bus->getLength(); uint32_t busPowerSum = 0; for (uint_fast16_t i = 0; i < len; i++) { //sum up the usage of each LED - uint32_t c = bus->getPixelColor(i); + uint32_t c = 0; + if (_globalLedBuffer) + { + c = _globalLedBuffer[bus->getStart() + i]; + } else { + c = bus->getPixelColor(i); + } byte r = R(c), g = G(c), b = B(c), w = W(c); if(useWackyWS2815PowerModel) { //ignore white component on WS2815 power calculation @@ -1253,6 +1259,7 @@ void WS2812FX::show(void) { show_callback callback = _callback; if (callback) callback(); + Bus::setRestoreBri(_renderBrightness); uint8_t busBrightness = estimateCurrentAndLimitBri(); if (_globalLedBuffer) { // copy data from buffer to bus @@ -1260,7 +1267,8 @@ void WS2812FX::show(void) { } else { // if brightness changed since last show, must set everything again to update to new luminance if (_renderBrightness != busBrightness) { - for (uint16_t i = 0; i < _length; i++) busses.setPixelColor(i, busses.getPixelColor(i)); // LOSSY and slow! + for (uint16_t i = 0; i < _length; i++) busses.setPixelColor(i, busses.getPixelColor(i)); // LOSSLESS due to trick (but still slow!) + Bus::setRestoreBri(busBrightness); } } @@ -1343,6 +1351,7 @@ void WS2812FX::setBrightness(uint8_t b, bool direct) { // would be dangerous if applied immediately (could exceed ABL), but will not output until the next show() busses.setBrightness(b); _renderBrightness = b; + Bus::setRestoreBri(b); } else { unsigned long t = millis(); if (_segments[0].next_time > t + 22 && t - _lastShow > MIN_SHOW_DELAY) show(); //apply brightness change immediately if no refresh soon diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index 729393cb6..4b75baad8 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -563,3 +563,4 @@ uint16_t BusManager::getTotalLength() { int16_t Bus::_cct = -1; uint8_t Bus::_cctBlend = 0; uint8_t Bus::_gAWM = 255; +uint8_t Bus::_restaurationBri = 255; diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index fd5d8651f..8740a9a28 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -154,6 +154,7 @@ class Bus { inline uint8_t getAutoWhiteMode() { return _autoWhiteMode; } inline static void setGlobalAWMode(uint8_t m) { if (m < 5) _gAWM = m; else _gAWM = AW_GLOBAL_DISABLED; } inline static uint8_t getGlobalAWMode() { return _gAWM; } + inline static void setRestoreBri(uint8_t b) { _restaurationBri = b; } bool reversed = false; @@ -168,6 +169,7 @@ class Bus { static uint8_t _gAWM; static int16_t _cct; static uint8_t _cctBlend; + static uint8_t _restaurationBri; // previous brightness used as setPixelColor was called. Used for lossy restoration uint32_t autoWhiteCalc(uint32_t c); }; @@ -231,7 +233,7 @@ class BusDigital : public Bus { for (uint8_t i=0; i<4; i++) { uint16_t val = chan[i]; - chan[i] = (val << 8) / (_bri + 1); + chan[i] = ((val << 8) + _restaurationBri) / (_restaurationBri + 1); //adding _bri slighly improves recovery / stops degradation on re-scale } return c; } diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index 5b0fbd5fb..bc63f8118 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -134,7 +134,8 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { if (fromFS || !ins.isNull()) { uint8_t s = 0; // bus iterator if (fromFS) busses.removeAll(); // can't safely manipulate busses directly in network callback - uint32_t mem = 0; + uint32_t mem = 0, globalBufMem = 0; + uint16_t maxlen = 0; bool busesChanged = false; for (JsonObject elm : ins) { if (s >= WLED_MAX_BUSSES+WLED_MIN_VIRTUAL_BUSSES) break; @@ -162,7 +163,11 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { if (fromFS) { BusConfig bc = BusConfig(ledType, pins, start, length, colorOrder, reversed, skipFirst, AWmode, freqkHz); mem += BusManager::memUsage(bc); - if (mem <= MAX_LED_MEMORY) if (busses.add(bc) == -1) break; // finalization will be done in WLED::beginStrip() + if (strip.useGlobalLedBuffer && start + length > maxlen) { + maxlen = start + length; + globalBufMem = maxlen * 4; + } + if (mem + globalBufMem <= MAX_LED_MEMORY) if (busses.add(bc) == -1) break; // finalization will be done in WLED::beginStrip() } else { if (busConfigs[s] != nullptr) delete busConfigs[s]; busConfigs[s] = new BusConfig(ledType, pins, start, length, colorOrder, reversed, skipFirst, AWmode); diff --git a/wled00/data/settings_leds.htm b/wled00/data/settings_leds.htm index 9f822294a..11a344935 100644 --- a/wled00/data/settings_leds.htm +++ b/wled00/data/settings_leds.htm @@ -141,7 +141,7 @@ let len = parseInt(d.getElementsByName("LC"+n)[0].value); len += parseInt(d.getElementsByName("SL"+n)[0].value); // skipped LEDs are allocated too let dbl = 0; - if (d.Sf.LD.checked) dbl = len * 3; // double buffering + if (d.Sf.LD.checked) dbl = len * 4; // double buffering if (t < 32) { if (t==26 || t==29) len *= 2; // 16 bit LEDs if (maxM < 10000 && d.getElementsByName("L0"+n)[0].value == 3) { //8266 DMA uses 5x the mem diff --git a/wled00/wled.cpp b/wled00/wled.cpp index 6866a6922..cd027c061 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -151,11 +151,16 @@ void WLED::loop() DEBUG_PRINTLN(F("Re-init busses.")); bool aligned = strip.checkSegmentAlignment(); //see if old segments match old bus(ses) busses.removeAll(); - uint32_t mem = 0; + uint32_t mem = 0, globalBufMem = 0; + uint16_t maxlen = 0; for (uint8_t i = 0; i < WLED_MAX_BUSSES+WLED_MIN_VIRTUAL_BUSSES; i++) { if (busConfigs[i] == nullptr) break; mem += BusManager::memUsage(*busConfigs[i]); - if (mem <= MAX_LED_MEMORY) { + if (strip.useGlobalLedBuffer && busConfigs[i]->start + busConfigs[i]->count > maxlen) { + maxlen = busConfigs[i]->start + busConfigs[i]->count; + globalBufMem = maxlen * 4; + } + if (mem + globalBufMem <= MAX_LED_MEMORY) { busses.add(*busConfigs[i]); } delete busConfigs[i]; busConfigs[i] = nullptr; From fa9b151c3682b66b2cf650f3030c23cd3f02d5eb Mon Sep 17 00:00:00 2001 From: Christian Schwinne Date: Tue, 27 Jun 2023 01:57:05 +0200 Subject: [PATCH 14/70] Slightly more efficient buffer copy to busses --- wled00/FX.cpp | 1 - wled00/FX_fcn.cpp | 3 ++- wled00/bus_manager.cpp | 11 ++++++++++- wled00/bus_manager.h | 4 +++- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index ff69e4394..5c0aa5468 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -289,7 +289,6 @@ uint16_t mode_dynamic(void) { if (!SEGENV.allocateData(SEGLEN)) return mode_static(); //allocation failed if(SEGENV.call == 0) { - //SEGMENT.setUpLeds(); //lossless getPixelColor() //SEGMENT.fill(BLACK); for (int i = 0; i < SEGLEN; i++) SEGENV.data[i] = random8(); } diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 206e626f2..dbe35a8cc 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1263,7 +1263,8 @@ void WS2812FX::show(void) { uint8_t busBrightness = estimateCurrentAndLimitBri(); if (_globalLedBuffer) { // copy data from buffer to bus - for (uint16_t i = 0; i < _length; i++) busses.setPixelColor(i, _globalLedBuffer[i]); + //for (uint16_t i = 0; i < _length; i++) busses.setPixelColor(i, _globalLedBuffer[i]); + busses.setColorsFromBuffer(_globalLedBuffer); } else { // if brightness changed since last show, must set everything again to update to new luminance if (_renderBrightness != busBrightness) { diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index 4b75baad8..001ac1d48 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -506,7 +506,7 @@ void BusManager::setStatusPixel(uint32_t c) { } } -void IRAM_ATTR BusManager::setPixelColor(uint16_t pix, uint32_t c, int16_t cct) { +void IRAM_ATTR BusManager::setPixelColor(uint16_t pix, uint32_t c) { for (uint8_t i = 0; i < numBusses; i++) { Bus* b = busses[i]; uint16_t bstart = b->getStart(); @@ -515,6 +515,15 @@ void IRAM_ATTR BusManager::setPixelColor(uint16_t pix, uint32_t c, int16_t cct) } } +void BusManager::setColorsFromBuffer(uint32_t* buf) { + for (uint8_t i = 0; i < numBusses; i++) { + Bus* b = busses[i]; + uint16_t bstart = b->getStart(); + for (uint16_t pix = 0; pix < b->getLength(); pix++) + busses[i]->setPixelColor(pix, buf[bstart + pix]); + } +} + void BusManager::setBrightness(uint8_t b) { for (uint8_t i = 0; i < numBusses; i++) { busses[i]->setBrightness(b); diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index 8740a9a28..e550440a0 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -357,7 +357,9 @@ class BusManager { void setStatusPixel(uint32_t c); - void setPixelColor(uint16_t pix, uint32_t c, int16_t cct=-1); + void setPixelColor(uint16_t pix, uint32_t c); + + void setColorsFromBuffer(uint32_t* buf); void setBrightness(uint8_t b); From 272f96b40558bffad51bf87b941828bceb70e3de Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Fri, 30 Jun 2023 21:12:59 +0200 Subject: [PATCH 15/70] Double buffering at bus level. --- wled00/FX.h | 19 ++--- wled00/FX_2Dfcn.cpp | 4 - wled00/FX_fcn.cpp | 106 ++++----------------------- wled00/bus_manager.cpp | 163 +++++++++++++++++++++++++++-------------- wled00/bus_manager.h | 21 ++++-- wled00/bus_wrapper.h | 118 +++++++++++++++++++++++++++-- wled00/cfg.cpp | 6 +- wled00/set.cpp | 2 +- wled00/wled.cpp | 2 +- wled00/wled.h | 15 ++-- wled00/xml.cpp | 2 +- 11 files changed, 266 insertions(+), 192 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index 6b312a21a..f5e7a4e3e 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -379,7 +379,6 @@ typedef struct Segment { uint16_t aux0; // custom var uint16_t aux1; // custom var byte* data; // effect data pointer - CRGB* leds; // local leds[] array (may be a pointer to global) static uint16_t maxWidth, maxHeight; // these define matrix width & height (max. segment dimensions) private: @@ -462,7 +461,6 @@ typedef struct Segment { aux0(0), aux1(0), data(nullptr), - leds(nullptr), _capabilities(0), _dataLen(0), _t(nullptr) @@ -483,10 +481,8 @@ typedef struct Segment { //Serial.print(F("Destroying segment:")); //if (name) Serial.printf(" %s (%p)", name, name); //if (data) Serial.printf(" %d (%p)", (int)_dataLen, data); - //if (leds) Serial.printf(" [%u]", length()*sizeof(CRGB)); //Serial.println(); //#endif - if (leds) free(leds); if (name) delete[] name; if (_t) delete _t; deallocateData(); @@ -496,7 +492,7 @@ typedef struct Segment { Segment& operator= (Segment &&orig) noexcept; // move assignment #ifdef WLED_DEBUG - size_t getSize() const { return sizeof(Segment) + (data?_dataLen:0) + (name?strlen(name):0) + (_t?sizeof(Transition):0) + (leds?sizeof(CRGB)*length():0); } + size_t getSize() const { return sizeof(Segment) + (data?_dataLen:0) + (name?strlen(name):0) + (_t?sizeof(Transition):0); } #endif inline bool getOption(uint8_t n) const { return ((options >> n) & 0x01); } @@ -537,7 +533,7 @@ typedef struct Segment { * Safe to call from interrupts and network requests. */ inline void markForReset(void) { reset = true; } // setOption(SEG_OPTION_RESET, true) - void setUpLeds(void); // set up leds[] array for loseless getPixelColor() + inline void setUpLeds(void) {} // legacy filler (should be removed) // transition functions void startTransition(uint16_t dur); // transition has to start before actual segment values change @@ -578,7 +574,7 @@ typedef struct Segment { uint16_t virtualHeight(void) const; uint16_t nrOfVStrips(void) const; #ifndef WLED_DISABLE_2D - uint16_t XY(uint16_t x, uint16_t y); // support function to get relative index within segment (for leds[]) + uint16_t XY(uint16_t x, uint16_t y); // support function to get relative index within segment void setPixelColorXY(int x, int y, uint32_t c); // set relative pixel within segment with color void setPixelColorXY(int x, int y, byte r, byte g, byte b, byte w = 0) { setPixelColorXY(x, y, RGBW32(r,g,b,w)); } // automatically inline void setPixelColorXY(int x, int y, CRGB c) { setPixelColorXY(x, y, RGBW32(c.r,c.g,c.b,0)); } // automatically inline @@ -677,7 +673,6 @@ class WS2812FX { // 96 bytes // true private variables _length(DEFAULT_LED_COUNT), _brightness(DEFAULT_BRIGHTNESS), - _renderBrightness(0), _transitionDur(750), _targetFps(WLED_FPS), _frametime(FRAMETIME_FIXED), @@ -710,7 +705,6 @@ class WS2812FX { // 96 bytes panel.clear(); #endif customPalettes.clear(); - if (_globalLedBuffer) free(_globalLedBuffer); } static WS2812FX* getInstance(void) { return instance; } @@ -757,8 +751,7 @@ class WS2812FX { // 96 bytes hasCCTBus(void), // return true if the strip is being sent pixel updates isUpdating(void), - deserializeMap(uint8_t n=0), - useGlobalLedBuffer = false; + deserializeMap(uint8_t n=0); inline bool isServicing(void) { return _isServicing; } inline bool hasWhiteChannel(void) {return _hasWhiteChannel;} @@ -876,7 +869,7 @@ class WS2812FX { // 96 bytes private: uint16_t _length; - uint8_t _brightness, _renderBrightness; + uint8_t _brightness; uint16_t _transitionDur; uint8_t _targetFps; @@ -905,8 +898,6 @@ class WS2812FX { // 96 bytes uint8_t _segment_index; uint8_t _mainSegment; - static uint32_t *_globalLedBuffer; // global leds[] array - uint8_t estimateCurrentAndLimitBri(void); }; diff --git a/wled00/FX_2Dfcn.cpp b/wled00/FX_2Dfcn.cpp index f4dac68d7..5a5720b33 100644 --- a/wled00/FX_2Dfcn.cpp +++ b/wled00/FX_2Dfcn.cpp @@ -199,8 +199,6 @@ void /*IRAM_ATTR*/ Segment::setPixelColorXY(int x, int y, uint32_t col) if (Segment::maxHeight==1) return; // not a matrix set-up if (x >= virtualWidth() || y >= virtualHeight() || x<0 || y<0) return; // if pixel would fall out of virtual segment just exit - if (leds) leds[XY(x,y)] = col; - uint8_t _bri_t = currentBri(on ? opacity : 0); if (_bri_t < 255) { byte r = scale8(R(col), _bri_t); @@ -286,8 +284,6 @@ void Segment::setPixelColorXY(float x, float y, uint32_t col, bool aa) // returns RGBW values of pixel uint32_t Segment::getPixelColorXY(uint16_t x, uint16_t y) { - int i = XY(x,y); - if (leds) return RGBW32(leds[i].r, leds[i].g, leds[i].b, 0); if (reverse ) x = virtualWidth() - x - 1; if (reverse_y) y = virtualHeight() - y - 1; if (transpose) { uint16_t t = x; x = y; y = t; } // swap X & Y if segment transposed diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index dbe35a8cc..e0f132cd1 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -85,11 +85,9 @@ Segment::Segment(const Segment &orig) { data = nullptr; _dataLen = 0; _t = nullptr; - leds = nullptr; if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); } if (orig.data) { if (allocateData(orig._dataLen)) memcpy(data, orig.data, orig._dataLen); } if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); } - if (orig.leds) { leds = (CRGB*)malloc(sizeof(CRGB)*length()); if (leds) memcpy(leds, orig.leds, sizeof(CRGB)*length()); } } // move constructor @@ -100,7 +98,6 @@ Segment::Segment(Segment &&orig) noexcept { orig.data = nullptr; orig._dataLen = 0; orig._t = nullptr; - orig.leds = nullptr; } // copy assignment @@ -110,7 +107,6 @@ Segment& Segment::operator= (const Segment &orig) { // clean destination if (name) delete[] name; if (_t) delete _t; - if (leds) free(leds); deallocateData(); // copy source memcpy((void*)this, (void*)&orig, sizeof(Segment)); @@ -119,12 +115,10 @@ Segment& Segment::operator= (const Segment &orig) { data = nullptr; _dataLen = 0; _t = nullptr; - leds = nullptr; // copy source data if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); } if (orig.data) { if (allocateData(orig._dataLen)) memcpy(data, orig.data, orig._dataLen); } if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); } - if (orig.leds) { leds = (CRGB*)malloc(sizeof(CRGB)*length()); if (leds) memcpy(leds, orig.leds, sizeof(CRGB)*length()); } } return *this; } @@ -136,13 +130,11 @@ Segment& Segment::operator= (Segment &&orig) noexcept { if (name) delete[] name; // free old name deallocateData(); // free old runtime data if (_t) delete _t; - if (leds) free(leds); memcpy((void*)this, (void*)&orig, sizeof(Segment)); orig.name = nullptr; orig.data = nullptr; orig._dataLen = 0; orig._t = nullptr; - orig.leds = nullptr; } return *this; } @@ -182,29 +174,12 @@ void Segment::deallocateData() { */ void Segment::resetIfRequired() { if (reset) { - if (leds) { free(leds); leds = nullptr; } - //if (transitional && _t) { transitional = false; delete _t; _t = nullptr; } deallocateData(); next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0; reset = false; // setOption(SEG_OPTION_RESET, false); } } -void Segment::setUpLeds() { - // deallocation happens in resetIfRequired() as it is called when segment changes or in destructor - if (WS2812FX::_globalLedBuffer) return; // TODO optional seg buffer for FX without lossy restore due to opacity - - // no global buffer - if (leds == nullptr && length() > 0) { //softhack007 quickfix - avoid malloc(0) which is undefined behaviour (should not happen, but i've seen it) - //#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) - //if (psramFound()) - // leds = (CRGB*)ps_malloc(sizeof(CRGB)*length()); // softhack007 disabled; putting leds into psram leads to horrible slowdown on WROVER boards - //else - //#endif - leds = (CRGB*)malloc(sizeof(CRGB)*length()); - } -} - CRGBPalette16 &Segment::loadPalette(CRGBPalette16 &targetPalette, uint8_t pal) { static unsigned long _lastPaletteChange = 0; // perhaps it should be per segment static CRGBPalette16 randomPalette = CRGBPalette16(DEFAULT_COLOR); @@ -617,8 +592,6 @@ void IRAM_ATTR Segment::setPixelColor(int i, uint32_t col) } #endif - if (leds) leds[i] = col; - uint16_t len = length(); uint8_t _bri_t = currentBri(on ? opacity : 0); if (_bri_t < 255) { @@ -718,8 +691,6 @@ uint32_t Segment::getPixelColor(int i) } #endif - if (leds) return RGBW32(leds[i].r, leds[i].g, leds[i].b, 0); - if (reverse) i = virtualLength() - i - 1; i *= groupLength(); i += start; @@ -1058,24 +1029,6 @@ void WS2812FX::finalizeInit(void) Segment::maxHeight = 1; } - // initialize leds array - if (_globalLedBuffer) { - //purgeSegments(true); - free(_globalLedBuffer); - _globalLedBuffer = nullptr; - } - if (useGlobalLedBuffer) { - size_t arrSize = sizeof(uint32_t) * getLengthTotal(); - // softhack007 disabled; putting leds into psram leads to horrible slowdown on WROVER boards (see setUpLeds()) - //#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) - //if (psramFound()) - // Segment::_globalLedBuffer = (CRGB*) ps_malloc(arrSize); - //else - //#endif - _globalLedBuffer = (uint32_t*) malloc(arrSize); - memset(_globalLedBuffer, 0, arrSize); - } - //segments are created in makeAutoSegments(); DEBUG_PRINTLN(F("Loading custom palettes")); loadCustomPalettes(); // (re)load all custom palettes @@ -1103,11 +1056,10 @@ void WS2812FX::service() { if(nowUp > seg.next_time || _triggered || (doShow && seg.mode == FX_MODE_STATIC)) { if (seg.grouping == 0) seg.grouping = 1; // sanity check - if (!doShow) { - busses.setBrightness(_brightness); // bus luminance must be set before FX using setPixelColor() - _renderBrightness = _brightness; // save in case brightness gets changed while FX is calculated +// if (!doShow) { +// busses.setBrightness(_brightness); // bus luminance must be set before FX using setPixelColor() doShow = true; - } +// } uint16_t delay = FRAMETIME; if (!seg.freeze) { //only run effect function if not frozen @@ -1146,18 +1098,13 @@ void IRAM_ATTR WS2812FX::setPixelColor(int i, uint32_t col) { if (i < customMappingSize) i = customMappingTable[i]; if (i >= _length) return; - if (_globalLedBuffer) { - _globalLedBuffer[i] = col; - } else { - busses.setPixelColor(i, col); - } + busses.setPixelColor(i, col); } uint32_t WS2812FX::getPixelColor(uint16_t i) { if (i < customMappingSize) i = customMappingTable[i]; if (i >= _length) return 0; - if (_globalLedBuffer) return _globalLedBuffer[i]; return busses.getPixelColor(i); } @@ -1188,7 +1135,6 @@ uint8_t WS2812FX::estimateCurrentAndLimitBri() { if (ablMilliampsMax < 150 || actualMilliampsPerLed == 0) { //0 mA per LED and too low numbers turn off calculation currentMilliamps = 0; - busses.setBrightness(_brightness); return _brightness; } @@ -1209,15 +1155,14 @@ uint8_t WS2812FX::estimateCurrentAndLimitBri() { uint16_t len = bus->getLength(); uint32_t busPowerSum = 0; for (uint_fast16_t i = 0; i < len; i++) { //sum up the usage of each LED - uint32_t c = 0; - if (_globalLedBuffer) - { - c = _globalLedBuffer[bus->getStart() + i]; - } else { - c = bus->getPixelColor(i); - } + uint32_t c = bus->getPixelColor(i); byte r = R(c), g = G(c), b = B(c), w = W(c); - + if (useGlobalLedBuffer) { + r = scale8(r, _brightness); + g = scale8(g, _brightness); + b = scale8(b, _brightness); + w = scale8(w, _brightness); + } if(useWackyWS2815PowerModel) { //ignore white component on WS2815 power calculation busPowerSum += (MAX(MAX(r,g),b)) * 3; } else { @@ -1232,22 +1177,14 @@ uint8_t WS2812FX::estimateCurrentAndLimitBri() { powerSum += busPowerSum; } - uint32_t powerSum0 = powerSum; - powerSum *= _brightness; uint8_t newBri = _brightness; - - if (powerSum > powerBudget) //scale brightness down to stay in current limit - { + if (powerSum > powerBudget) {//scale brightness down to stay in current limit float scale = (float)powerBudget / (float)powerSum; uint16_t scaleI = scale * 255; uint8_t scaleB = (scaleI > 255) ? 255 : scaleI; newBri = scale8(_brightness, scaleB); - busses.setBrightness(newBri); //to keep brightness uniform, sets virtual busses too - currentMilliamps = (powerSum0 * newBri) / puPerMilliamp; - } else { - currentMilliamps = powerSum / puPerMilliamp; - busses.setBrightness(_brightness); } + currentMilliamps = (powerSum * newBri) / puPerMilliamp; currentMilliamps += MA_FOR_ESP; //add power of ESP back to estimate currentMilliamps += pLen; //add standby power back to estimate return newBri; @@ -1259,19 +1196,8 @@ void WS2812FX::show(void) { show_callback callback = _callback; if (callback) callback(); - Bus::setRestoreBri(_renderBrightness); uint8_t busBrightness = estimateCurrentAndLimitBri(); - - if (_globalLedBuffer) { // copy data from buffer to bus - //for (uint16_t i = 0; i < _length; i++) busses.setPixelColor(i, _globalLedBuffer[i]); - busses.setColorsFromBuffer(_globalLedBuffer); - } else { - // if brightness changed since last show, must set everything again to update to new luminance - if (_renderBrightness != busBrightness) { - for (uint16_t i = 0; i < _length; i++) busses.setPixelColor(i, busses.getPixelColor(i)); // LOSSLESS due to trick (but still slow!) - Bus::setRestoreBri(busBrightness); - } - } + busses.setBrightness(busBrightness); // some buses send asynchronously and this method will return before // all of the data has been sent. @@ -1283,7 +1209,6 @@ void WS2812FX::show(void) { if (diff > 0) fpsCurr = 1000 / diff; _cumulativeFps = (3 * _cumulativeFps + fpsCurr) >> 2; _lastShow = now; - _renderBrightness = _brightness; } /** @@ -1351,8 +1276,6 @@ void WS2812FX::setBrightness(uint8_t b, bool direct) { if (direct) { // would be dangerous if applied immediately (could exceed ABL), but will not output until the next show() busses.setBrightness(b); - _renderBrightness = b; - Bus::setRestoreBri(b); } else { unsigned long t = millis(); if (_segments[0].next_time > t + 22 && t - _lastShow > MIN_SHOW_DELAY) show(); //apply brightness change immediately if no refresh soon @@ -1735,7 +1658,6 @@ bool WS2812FX::deserializeMap(uint8_t n) { WS2812FX* WS2812FX::instance = nullptr; -uint32_t* WS2812FX::_globalLedBuffer = nullptr; const char JSON_mode_names[] PROGMEM = R"=====(["FX names moved"])====="; const char JSON_palette_names[] PROGMEM = R"=====([ diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index 001ac1d48..a3807dbe1 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -91,6 +91,11 @@ uint32_t Bus::autoWhiteCalc(uint32_t c) { return RGBW32(r, g, b, w); } +uint8_t *Bus::allocData(size_t size) { + if (_data) free(_data); // should not happen, but for safety + return _data = (uint8_t *)(size>0 ? calloc(size, sizeof(uint8_t)) : nullptr); +} + BusDigital::BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com) : Bus(bc.type, bc.start, bc.autoWhite), _colorOrderMap(com) { if (!IS_DIGITAL(bc.type) || !bc.count) return; @@ -107,22 +112,57 @@ BusDigital::BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com) : Bu reversed = bc.reversed; _needsRefresh = bc.refreshReq || bc.type == TYPE_TM1814; _skip = bc.skipAmount; //sacrificial pixels - _len = bc.count + _skip; + _len = bc.count; + _colorOrder = bc.colorOrder; _iType = PolyBus::getI(bc.type, _pins, nr); if (_iType == I_NONE) return; + if (useGlobalLedBuffer && !allocData(_len * (hasWhite() + 3*hasRGB()))) return; //warning: hardcoded channel count uint16_t lenToCreate = _len; - if (bc.type == TYPE_WS2812_1CH_X3) lenToCreate = NUM_ICS_WS2812_1CH_3X(_len); // only needs a third of "RGB" LEDs for NeoPixelBus - _busPtr = PolyBus::create(_iType, _pins, lenToCreate, nr, _frequencykHz); + if (bc.type == TYPE_WS2812_1CH_X3) lenToCreate = NUM_ICS_WS2812_1CH_3X(_len); // only needs a third of "RGB" LEDs for NeoPixelBus + _busPtr = PolyBus::create(_iType, _pins, lenToCreate + _skip, nr, _frequencykHz); _valid = (_busPtr != nullptr); - _colorOrder = bc.colorOrder; DEBUG_PRINTF("%successfully inited strip %u (len %u) with type %u and pins %u,%u (itype %u)\n", _valid?"S":"Uns", nr, _len, bc.type, _pins[0],_pins[1],_iType); } void BusDigital::show() { - PolyBus::show(_busPtr, _iType); + if (!_valid) return; + PolyBus::setBrightness(_busPtr, _iType, _bri); + if (useGlobalLedBuffer) { + size_t channels = hasWhite() + 3*hasRGB(); + for (size_t i=0; i<_len; i++) { + size_t offset = i*channels; + uint8_t co = _colorOrderMap.getPixelColorOrder(i+_start, _colorOrder); + uint32_t c; + if (_type == TYPE_WS2812_1CH_X3) { // map to correct IC, each controls 3 LEDs (_len is always a multiple of 3) + switch (i%3) { + case 0: c = RGBW32(_data[offset] , _data[offset+1], _data[offset+2], 0); break; + case 1: c = RGBW32(_data[offset-1], _data[offset] , _data[offset+1], 0); break; + case 2: c = RGBW32(_data[offset-2], _data[offset-1], _data[offset] , 0); break; + } + } else { + c = RGBW32(_data[offset],_data[offset+1],_data[offset+2],(hasWhite()?_data[offset+3]:0)); + } + uint16_t pix = i; + if (reversed) pix = _len - pix -1; + else pix += _skip; + PolyBus::setPixelColor(_busPtr, _iType, pix, c, co); + } + PolyBus::show(_busPtr, _iType); + } else { + PolyBus::applyPostAdjustments(_busPtr, _iType); + PolyBus::show(_busPtr, _iType); + // now restore (as close as possible) previous colors + // warning: this may not be the best idea as the buffer may still be in use + for (size_t i=0; i<_len; i++) { + uint8_t co = _colorOrderMap.getPixelColorOrder(i+_start, _colorOrder); + setPixelColor(i, restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, i, co), _bri)); + } + } + PolyBus::setBrightness(_busPtr, _iType, 255); // restore full brightness } bool BusDigital::canShow() { + if (!_valid) return true; return PolyBus::canShow(_busPtr, _iType); } @@ -130,57 +170,81 @@ void BusDigital::setBrightness(uint8_t b) { //Fix for turning off onboard LED breaking bus #ifdef LED_BUILTIN if (_bri == 0 && b > 0) { - if (_pins[0] == LED_BUILTIN || _pins[1] == LED_BUILTIN) PolyBus::begin(_busPtr, _iType, _pins); + if (_pins[0] == LED_BUILTIN || _pins[1] == LED_BUILTIN) reinit(); } #endif Bus::setBrightness(b); - PolyBus::setBrightness(_busPtr, _iType, b); } //If LEDs are skipped, it is possible to use the first as a status LED. //TODO only show if no new show due in the next 50ms void BusDigital::setStatusPixel(uint32_t c) { - if (_skip && canShow()) { + if (_valid && _skip && canShow()) { PolyBus::setPixelColor(_busPtr, _iType, 0, c, _colorOrderMap.getPixelColorOrder(_start, _colorOrder)); PolyBus::show(_busPtr, _iType); } } void IRAM_ATTR BusDigital::setPixelColor(uint16_t pix, uint32_t c) { - if (_type == TYPE_SK6812_RGBW || _type == TYPE_TM1814 || _type == TYPE_WS2812_1CH_X3) c = autoWhiteCalc(c); + if (!_valid) return; + if (hasWhite()) c = autoWhiteCalc(c); if (_cct >= 1900) c = colorBalanceFromKelvin(_cct, c); //color correction from CCT - if (reversed) pix = _len - pix -1; - else pix += _skip; - uint8_t co = _colorOrderMap.getPixelColorOrder(pix+_start, _colorOrder); - if (_type == TYPE_WS2812_1CH_X3) { // map to correct IC, each controls 3 LEDs - uint16_t pOld = pix; - pix = IC_INDEX_WS2812_1CH_3X(pix); - uint32_t cOld = PolyBus::getPixelColor(_busPtr, _iType, pix, co); - switch (pOld % 3) { // change only the single channel (TODO: this can cause loss because of get/set) - case 0: c = RGBW32(R(cOld), W(c) , B(cOld), 0); break; - case 1: c = RGBW32(W(c) , G(cOld), B(cOld), 0); break; - case 2: c = RGBW32(R(cOld), G(cOld), W(c) , 0); break; + if (useGlobalLedBuffer) { + size_t channels = hasWhite() + 3*hasRGB(); + size_t offset = pix*channels; + if (hasRGB()) { + _data[offset++] = R(c); + _data[offset++] = G(c); + _data[offset++] = B(c); } + if (hasWhite()) _data[offset] = W(c); + } else { + if (reversed) pix = _len - pix -1; + else pix += _skip; + uint8_t co = _colorOrderMap.getPixelColorOrder(pix+_start, _colorOrder); + if (_type == TYPE_WS2812_1CH_X3) { // map to correct IC, each controls 3 LEDs + uint16_t pOld = pix; + pix = IC_INDEX_WS2812_1CH_3X(pix); + uint32_t cOld = PolyBus::getPixelColor(_busPtr, _iType, pix, co); + switch (pOld % 3) { // change only the single channel (TODO: this can cause loss because of get/set) + case 0: c = RGBW32(R(cOld), W(c) , B(cOld), 0); break; + case 1: c = RGBW32(W(c) , G(cOld), B(cOld), 0); break; + case 2: c = RGBW32(R(cOld), G(cOld), W(c) , 0); break; + } + } + PolyBus::setPixelColor(_busPtr, _iType, pix, c, co); } - PolyBus::setPixelColor(_busPtr, _iType, pix, c, co); } uint32_t BusDigital::getPixelColor(uint16_t pix) { - if (reversed) pix = _len - pix -1; - else pix += _skip; - uint8_t co = _colorOrderMap.getPixelColorOrder(pix+_start, _colorOrder); - if (_type == TYPE_WS2812_1CH_X3) { // map to correct IC, each controls 3 LEDs - uint16_t pOld = pix; - pix = IC_INDEX_WS2812_1CH_3X(pix); - uint32_t c = restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, pix, co)); - switch (pOld % 3) { // get only the single channel - case 0: c = RGBW32(G(c), G(c), G(c), G(c)); break; - case 1: c = RGBW32(R(c), R(c), R(c), R(c)); break; - case 2: c = RGBW32(B(c), B(c), B(c), B(c)); break; + if (!_valid) return 0; + if (useGlobalLedBuffer) { + size_t channels = hasWhite() + 3*hasRGB(); + size_t offset = pix*channels; + uint32_t c; + if (!hasRGB()) { + c = RGBW32(_data[offset], _data[offset], _data[offset], _data[offset]); + } else { + c = RGBW32(_data[offset], _data[offset+1], _data[offset+2], hasWhite() ? _data[offset+3] : 0); } return c; + } else { + if (reversed) pix = _len - pix -1; + else pix += _skip; + uint8_t co = _colorOrderMap.getPixelColorOrder(pix+_start, _colorOrder); + if (_type == TYPE_WS2812_1CH_X3) { // map to correct IC, each controls 3 LEDs + uint16_t pOld = pix; + pix = IC_INDEX_WS2812_1CH_3X(pix); + uint32_t c = PolyBus::getPixelColor(_busPtr, _iType, pix, co); + switch (pOld % 3) { // get only the single channel + case 0: c = RGBW32(G(c), G(c), G(c), G(c)); break; + case 1: c = RGBW32(R(c), R(c), R(c), R(c)); break; + case 2: c = RGBW32(B(c), B(c), B(c), B(c)); break; + } + return c; + } + return PolyBus::getPixelColor(_busPtr, _iType, pix, co); } - return restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, pix, co)); } uint8_t BusDigital::getPins(uint8_t* pinArray) { @@ -196,6 +260,7 @@ void BusDigital::setColorOrder(uint8_t colorOrder) { } void BusDigital::reinit() { + if (!_valid) return; PolyBus::begin(_busPtr, _iType, _pins); } @@ -205,6 +270,7 @@ void BusDigital::cleanup() { _iType = I_NONE; _valid = false; _busPtr = nullptr; + if (useGlobalLedBuffer) freeData(); pinManager.deallocatePin(_pins[1], PinOwner::BusDigital); pinManager.deallocatePin(_pins[0], PinOwner::BusDigital); } @@ -229,7 +295,7 @@ BusPwm::BusPwm(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWhite) { for (uint8_t i = 0; i < numPins; i++) { uint8_t currentPin = bc.pins[i]; if (!pinManager.allocatePin(currentPin, true, PinOwner::BusPwm)) { - deallocatePins(); return; + deallocatePins(); return; } _pins[i] = currentPin; //store only after allocatePin() succeeds #ifdef ESP8266 @@ -240,6 +306,7 @@ BusPwm::BusPwm(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWhite) { #endif } reversed = bc.reversed; + _data = _pwmdata; // avoid malloc() and use stack _valid = true; } @@ -353,6 +420,7 @@ BusOnOff::BusOnOff(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWhite) { _pin = currentPin; //store only after allocatePin() succeeds pinMode(_pin, OUTPUT); reversed = bc.reversed; + _data = &_onoffdata; // avoid malloc() and use stack _valid = true; } @@ -363,18 +431,17 @@ void BusOnOff::setPixelColor(uint16_t pix, uint32_t c) { uint8_t g = G(c); uint8_t b = B(c); uint8_t w = W(c); - - _data = bool(r|g|b|w) && bool(_bri) ? 0xFF : 0; + _data[0] = bool(r|g|b|w) && bool(_bri) ? 0xFF : 0; } uint32_t BusOnOff::getPixelColor(uint16_t pix) { if (!_valid) return 0; - return RGBW32(_data, _data, _data, _data); + return RGBW32(_data[0], _data[0], _data[0], _data[0]); } void BusOnOff::show() { if (!_valid) return; - digitalWrite(_pin, reversed ? !(bool)_data : (bool)_data); + digitalWrite(_pin, reversed ? !(bool)_data[0] : (bool)_data[0]); } uint8_t BusOnOff::getPins(uint8_t* pinArray) { @@ -401,13 +468,10 @@ BusNetwork::BusNetwork(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWhite) { break; } _UDPchannels = _rgbw ? 4 : 3; - _data = (byte *)malloc(bc.count * _UDPchannels); - if (_data == nullptr) return; - memset(_data, 0, bc.count * _UDPchannels); _len = bc.count; _client = IPAddress(bc.pins[0],bc.pins[1],bc.pins[2],bc.pins[3]); _broadcastLock = false; - _valid = true; + _valid = (allocData(_len * _UDPchannels) != nullptr); } void BusNetwork::setPixelColor(uint16_t pix, uint32_t c) { @@ -424,7 +488,7 @@ void BusNetwork::setPixelColor(uint16_t pix, uint32_t c) { uint32_t BusNetwork::getPixelColor(uint16_t pix) { if (!_valid || pix >= _len) return 0; uint16_t offset = pix * _UDPchannels; - return RGBW32(_data[offset], _data[offset+1], _data[offset+2], _rgbw ? (_data[offset+3] << 24) : 0); + return RGBW32(_data[offset], _data[offset+1], _data[offset+2], (_rgbw ? _data[offset+3] : 0)); } void BusNetwork::show() { @@ -444,8 +508,7 @@ uint8_t BusNetwork::getPins(uint8_t* pinArray) { void BusNetwork::cleanup() { _type = I_NONE; _valid = false; - if (_data != nullptr) free(_data); - _data = nullptr; + freeData(); } @@ -515,15 +578,6 @@ void IRAM_ATTR BusManager::setPixelColor(uint16_t pix, uint32_t c) { } } -void BusManager::setColorsFromBuffer(uint32_t* buf) { - for (uint8_t i = 0; i < numBusses; i++) { - Bus* b = busses[i]; - uint16_t bstart = b->getStart(); - for (uint16_t pix = 0; pix < b->getLength(); pix++) - busses[i]->setPixelColor(pix, buf[bstart + pix]); - } -} - void BusManager::setBrightness(uint8_t b) { for (uint8_t i = 0; i < numBusses; i++) { busses[i]->setBrightness(b); @@ -572,4 +626,3 @@ uint16_t BusManager::getTotalLength() { int16_t Bus::_cct = -1; uint8_t Bus::_cctBlend = 0; uint8_t Bus::_gAWM = 255; -uint8_t Bus::_restaurationBri = 255; diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index e550440a0..8e78310bb 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -18,6 +18,10 @@ #define IC_INDEX_WS2812_2CH_3X(i) ((i)*2/3) #define WS2812_2CH_3X_SPANS_2_ICS(i) ((i)&0x01) // every other LED zone is on two different ICs +// flag for using double buffering in BusDigital +extern bool useGlobalLedBuffer; + + //temporary struct for passing bus configuration to bus struct BusConfig { uint8_t type; @@ -54,6 +58,7 @@ struct BusConfig { } }; + // Defines an LED Strip and its color ordering. struct ColorOrderMapEntry { uint16_t start; @@ -87,12 +92,14 @@ struct ColorOrderMap { ColorOrderMapEntry _mappings[WLED_MAX_COLOR_ORDER_MAPPINGS]; }; + //parent class of BusDigital, BusPwm, and BusNetwork class Bus { public: Bus(uint8_t type, uint16_t start, uint8_t aw) : _bri(255) , _len(1) + , _data(nullptr) // keep data access consistent across all types of buses , _valid(false) , _needsRefresh(false) { @@ -154,7 +161,6 @@ class Bus { inline uint8_t getAutoWhiteMode() { return _autoWhiteMode; } inline static void setGlobalAWMode(uint8_t m) { if (m < 5) _gAWM = m; else _gAWM = AW_GLOBAL_DISABLED; } inline static uint8_t getGlobalAWMode() { return _gAWM; } - inline static void setRestoreBri(uint8_t b) { _restaurationBri = b; } bool reversed = false; @@ -163,15 +169,17 @@ class Bus { uint8_t _bri; uint16_t _start; uint16_t _len; + uint8_t *_data; bool _valid; bool _needsRefresh; uint8_t _autoWhiteMode; static uint8_t _gAWM; static int16_t _cct; static uint8_t _cctBlend; - static uint8_t _restaurationBri; // previous brightness used as setPixelColor was called. Used for lossy restoration uint32_t autoWhiteCalc(uint32_t c); + uint8_t *allocData(size_t size = 1); + void freeData() { if (_data) free(_data); _data = nullptr; } }; @@ -226,7 +234,7 @@ class BusDigital : public Bus { void * _busPtr = nullptr; const ColorOrderMap &_colorOrderMap; - inline uint32_t restoreColorLossy(uint32_t c) { + inline uint32_t restoreColorLossy(uint32_t c, uint8_t _restaurationBri) { if (_bri == 255) return c; uint8_t* chan = (uint8_t*) &c; @@ -265,7 +273,7 @@ class BusPwm : public Bus { private: uint8_t _pins[5] = {255, 255, 255, 255, 255}; - uint8_t _data[5] = {0}; + uint8_t _pwmdata[5] = {0}; #ifdef ARDUINO_ARCH_ESP32 uint8_t _ledcStart = 255; #endif @@ -297,7 +305,7 @@ class BusOnOff : public Bus { private: uint8_t _pin = 255; - uint8_t _data = 0; + uint8_t _onoffdata = 0; }; @@ -337,7 +345,6 @@ class BusNetwork : public Bus { uint8_t _UDPchannels; bool _rgbw; bool _broadcastLock; - byte *_data; }; @@ -359,8 +366,6 @@ class BusManager { void setPixelColor(uint16_t pix, uint32_t c); - void setColorsFromBuffer(uint32_t* buf); - void setBrightness(uint8_t b); void setSegmentCCT(int16_t cct, bool allowWBCorrection = false); diff --git a/wled00/bus_wrapper.h b/wled00/bus_wrapper.h index 0314a793e..9807c54bf 100644 --- a/wled00/bus_wrapper.h +++ b/wled00/bus_wrapper.h @@ -280,6 +280,7 @@ class PolyBus { #endif if (clock_kHz) dotStar_strip->SetMethodSettings(NeoSpiSettings((uint32_t)clock_kHz*1000)); } + // Begin & initialize the PixelSettings for TM1814 strips. template static void beginTM1814(void* busPtr) { @@ -288,6 +289,7 @@ class PolyBus { // Max current for each LED (22.5 mA). tm1814_strip->SetPixelSettings(NeoTm1814Settings(/*R*/225, /*G*/225, /*B*/225, /*W*/225)); } + static void begin(void* busPtr, uint8_t busType, uint8_t* pins, uint16_t clock_kHz = 0U) { switch (busType) { case I_NONE: break; @@ -390,7 +392,8 @@ class PolyBus { case I_SS_WS1_3: (static_cast(busPtr))->Begin(); break; case I_SS_P98_3: (static_cast(busPtr))->Begin(); break; } - }; + } + static void* create(uint8_t busType, uint8_t* pins, uint16_t len, uint8_t channel, uint16_t clock_kHz = 0U) { void* busPtr = nullptr; switch (busType) { @@ -491,7 +494,8 @@ class PolyBus { } begin(busPtr, busType, pins, clock_kHz); return busPtr; - }; + } + static void show(void* busPtr, uint8_t busType) { switch (busType) { case I_NONE: break; @@ -588,7 +592,8 @@ class PolyBus { case I_HS_P98_3: (static_cast(busPtr))->Show(); break; case I_SS_P98_3: (static_cast(busPtr))->Show(); break; } - }; + } + static bool canShow(void* busPtr, uint8_t busType) { switch (busType) { case I_NONE: return true; @@ -685,7 +690,8 @@ class PolyBus { case I_SS_P98_3: return (static_cast(busPtr))->CanShow(); break; } return true; - }; + } + static void setPixelColor(void* busPtr, uint8_t busType, uint16_t pix, uint32_t c, uint8_t co) { uint8_t r = c >> 16; uint8_t g = c >> 8; @@ -805,7 +811,8 @@ class PolyBus { case I_HS_P98_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col)); break; case I_SS_P98_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col)); break; } - }; + } + static void setBrightness(void* busPtr, uint8_t busType, uint8_t b) { switch (busType) { case I_NONE: break; @@ -902,7 +909,106 @@ class PolyBus { case I_HS_P98_3: (static_cast(busPtr))->SetLuminance(b); break; case I_SS_P98_3: (static_cast(busPtr))->SetLuminance(b); break; } - }; + } + + static void applyPostAdjustments(void* busPtr, uint8_t busType) { + switch (busType) { + case I_NONE: break; + #ifdef ESP8266 + case I_8266_U0_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif + #ifdef ARDUINO_ARCH_ESP32 + case I_32_RN_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #ifndef WLED_NO_I2S0_PIXELBUS + case I_32_I0_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif + #ifndef WLED_NO_I2S1_PIXELBUS + case I_32_I1_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif +// case I_32_BB_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #ifndef WLED_NO_I2S0_PIXELBUS + case I_32_I0_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif + #ifndef WLED_NO_I2S1_PIXELBUS + case I_32_I1_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif +// case I_32_BB_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #ifndef WLED_NO_I2S0_PIXELBUS + case I_32_I0_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif + #ifndef WLED_NO_I2S1_PIXELBUS + case I_32_I1_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif +// case I_32_BB_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #ifndef WLED_NO_I2S0_PIXELBUS + case I_32_I0_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif + #ifndef WLED_NO_I2S1_PIXELBUS + case I_32_I1_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif + case I_32_RN_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #ifndef WLED_NO_I2S0_PIXELBUS + case I_32_I0_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif + #ifndef WLED_NO_I2S1_PIXELBUS + case I_32_I1_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif +// case I_32_BB_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #ifndef WLED_NO_I2S0_PIXELBUS + case I_32_I0_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif + #ifndef WLED_NO_I2S1_PIXELBUS + case I_32_I1_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif +// case I_32_BB_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; + #endif + case I_HS_DOT_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_SS_DOT_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_HS_LPD_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_SS_LPD_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_HS_LPO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_SS_LPO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_HS_WS1_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_SS_WS1_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_HS_P98_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_SS_P98_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; + } + } + static uint32_t getPixelColor(void* busPtr, uint8_t busType, uint16_t pix, uint8_t co) { RgbwColor col(0,0,0,0); switch (busType) { diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index bc63f8118..6c2e94229 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -90,7 +90,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { CJSON(strip.cctBlending, hw_led[F("cb")]); Bus::setCCTBlend(strip.cctBlending); strip.setTargetFps(hw_led["fps"]); //NOP if 0, default 42 FPS - CJSON(strip.useGlobalLedBuffer, hw_led[F("ld")]); + CJSON(useGlobalLedBuffer, hw_led[F("ld")]); #ifndef WLED_DISABLE_2D // 2D Matrix Settings @@ -163,7 +163,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { if (fromFS) { BusConfig bc = BusConfig(ledType, pins, start, length, colorOrder, reversed, skipFirst, AWmode, freqkHz); mem += BusManager::memUsage(bc); - if (strip.useGlobalLedBuffer && start + length > maxlen) { + if (useGlobalLedBuffer && start + length > maxlen) { maxlen = start + length; globalBufMem = maxlen * 4; } @@ -711,7 +711,7 @@ void serializeConfig() { hw_led[F("cb")] = strip.cctBlending; hw_led["fps"] = strip.getTargetFps(); hw_led[F("rgbwm")] = Bus::getGlobalAWMode(); // global auto white mode override - hw_led[F("ld")] = strip.useGlobalLedBuffer; + hw_led[F("ld")] = useGlobalLedBuffer; #ifndef WLED_DISABLE_2D // 2D Matrix Settings diff --git a/wled00/set.cpp b/wled00/set.cpp index 30d499d60..3420f22c3 100644 --- a/wled00/set.cpp +++ b/wled00/set.cpp @@ -91,7 +91,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) Bus::setCCTBlend(strip.cctBlending); Bus::setGlobalAWMode(request->arg(F("AW")).toInt()); strip.setTargetFps(request->arg(F("FR")).toInt()); - strip.useGlobalLedBuffer = request->hasArg(F("LD")); + useGlobalLedBuffer = request->hasArg(F("LD")); bool busesChanged = false; for (uint8_t s = 0; s < WLED_MAX_BUSSES+WLED_MIN_VIRTUAL_BUSSES; s++) { diff --git a/wled00/wled.cpp b/wled00/wled.cpp index cd027c061..86d14d6ad 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -156,7 +156,7 @@ void WLED::loop() for (uint8_t i = 0; i < WLED_MAX_BUSSES+WLED_MIN_VIRTUAL_BUSSES; i++) { if (busConfigs[i] == nullptr) break; mem += BusManager::memUsage(*busConfigs[i]); - if (strip.useGlobalLedBuffer && busConfigs[i]->start + busConfigs[i]->count > maxlen) { + if (useGlobalLedBuffer && busConfigs[i]->start + busConfigs[i]->count > maxlen) { maxlen = busConfigs[i]->start + busConfigs[i]->count; globalBufMem = maxlen * 4; } diff --git a/wled00/wled.h b/wled00/wled.h index 6cae6a8a5..7fc3ba864 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2306240 +#define VERSION 23062490 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG @@ -331,12 +331,13 @@ WLED_GLOBAL byte bootPreset _INIT(0); // save preset to load //if true, a segment per bus will be created on boot and LED settings save //if false, only one segment spanning the total LEDs is created, //but not on LED settings save if there is more than one segment currently -WLED_GLOBAL bool autoSegments _INIT(false); -WLED_GLOBAL bool correctWB _INIT(false); // CCT color correction of RGB color -WLED_GLOBAL bool cctFromRgb _INIT(false); // CCT is calculated from RGB instead of using seg.cct -WLED_GLOBAL bool gammaCorrectCol _INIT(true ); // use gamma correction on colors -WLED_GLOBAL bool gammaCorrectBri _INIT(false); // use gamma correction on brightness -WLED_GLOBAL float gammaCorrectVal _INIT(2.8f); // gamma correction value +WLED_GLOBAL bool autoSegments _INIT(false); +WLED_GLOBAL bool useGlobalLedBuffer _INIT(true); +WLED_GLOBAL bool correctWB _INIT(false); // CCT color correction of RGB color +WLED_GLOBAL bool cctFromRgb _INIT(false); // CCT is calculated from RGB instead of using seg.cct +WLED_GLOBAL bool gammaCorrectCol _INIT(true); // use gamma correction on colors +WLED_GLOBAL bool gammaCorrectBri _INIT(false); // use gamma correction on brightness +WLED_GLOBAL float gammaCorrectVal _INIT(2.8f); // gamma correction value WLED_GLOBAL byte col[] _INIT_N(({ 255, 160, 0, 0 })); // current RGB(W) primary color. col[] should be updated if you want to change the color. WLED_GLOBAL byte colSec[] _INIT_N(({ 0, 0, 0, 0 })); // current RGB(W) secondary color diff --git a/wled00/xml.cpp b/wled00/xml.cpp index 8057aac73..12fc97172 100644 --- a/wled00/xml.cpp +++ b/wled00/xml.cpp @@ -404,7 +404,7 @@ void getSettingsJS(byte subPage, char* dest) sappend('v',SET_F("CB"),strip.cctBlending); sappend('v',SET_F("FR"),strip.getTargetFps()); sappend('v',SET_F("AW"),Bus::getGlobalAWMode()); - sappend('c',SET_F("LD"),strip.useGlobalLedBuffer); + sappend('c',SET_F("LD"),useGlobalLedBuffer); for (uint8_t s=0; s < busses.getNumBusses(); s++) { Bus* bus = busses.getBus(s); From 9b87892036a31f63596598bbde6c3c4d40d60d44 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Sat, 1 Jul 2023 20:09:52 +0200 Subject: [PATCH 16/70] optimization for ABL hotfix * adding an optional parameter to setBrightness(). ApplyPostAdjustments() will only be called if `immediate=true`. Only ABL will use immediate=true, to ensure electrical safety of equipment. This allows some optimizations of performance, as ApplyPostAdjustments() is time consuming. * busses.setBrightness(bri) --> applied to all future pixels (fast, lossless) * busses.setBrightness(bri, true) --> applied directly to all previously set pixels (slower, lossy) --- wled00/FX_fcn.cpp | 2 +- wled00/bus_manager.cpp | 10 ++-- wled00/bus_manager.h | 6 +- wled00/bus_wrapper.h | 130 ++++++++++++++++++++--------------------- 4 files changed, 74 insertions(+), 74 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 50d3f2f40..bda17f8f2 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1230,7 +1230,7 @@ void WS2812FX::estimateCurrentAndLimitBri() { uint16_t scaleI = scale * 255; uint8_t scaleB = (scaleI > 255) ? 255 : scaleI; uint8_t newBri = scale8(_brightness, scaleB); - busses.setBrightness(newBri); //to keep brightness uniform, sets virtual busses too + busses.setBrightness(newBri, (scaleB < 255)); //to keep brightness uniform, sets virtual busses too - softhack007: apply reductions immediately currentMilliamps = (powerSum0 * newBri) / puPerMilliamp; } else { currentMilliamps = powerSum / puPerMilliamp; diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index 4b96060ef..d11182aa5 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -126,15 +126,15 @@ bool BusDigital::canShow() { return PolyBus::canShow(_busPtr, _iType); } -void BusDigital::setBrightness(uint8_t b) { +void BusDigital::setBrightness(uint8_t b, bool immediate) { //Fix for turning off onboard LED breaking bus #ifdef LED_BUILTIN if (_bri == 0 && b > 0) { if (_pins[0] == LED_BUILTIN || _pins[1] == LED_BUILTIN) PolyBus::begin(_busPtr, _iType, _pins); } #endif - Bus::setBrightness(b); - PolyBus::setBrightness(_busPtr, _iType, b); + Bus::setBrightness(b, immediate); + PolyBus::setBrightness(_busPtr, _iType, b, immediate); } //If LEDs are skipped, it is possible to use the first as a status LED. @@ -515,9 +515,9 @@ void IRAM_ATTR BusManager::setPixelColor(uint16_t pix, uint32_t c, int16_t cct) } } -void BusManager::setBrightness(uint8_t b) { +void BusManager::setBrightness(uint8_t b, bool immediate) { for (uint8_t i = 0; i < numBusses; i++) { - busses[i]->setBrightness(b); + busses[i]->setBrightness(b, immediate); } } diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index b6d79d077..4a8da6051 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -108,7 +108,7 @@ class Bus { virtual void setStatusPixel(uint32_t c) {} virtual void setPixelColor(uint16_t pix, uint32_t c) = 0; virtual uint32_t getPixelColor(uint16_t pix) { return 0; } - virtual void setBrightness(uint8_t b) { _bri = b; }; + virtual void setBrightness(uint8_t b, bool immediate=false) { _bri = b; }; virtual void cleanup() = 0; virtual uint8_t getPins(uint8_t* pinArray) { return 0; } virtual uint16_t getLength() { return _len; } @@ -181,7 +181,7 @@ class BusDigital : public Bus { bool canShow(); - void setBrightness(uint8_t b); + void setBrightness(uint8_t b, bool immediate); void setStatusPixel(uint32_t c); @@ -345,7 +345,7 @@ class BusManager { void setPixelColor(uint16_t pix, uint32_t c, int16_t cct=-1); - void setBrightness(uint8_t b); + void setBrightness(uint8_t b, bool immediate=false); // immediate=true is for use in ABL, it applies brightness immediately (warning: inefficient) void setSegmentCCT(int16_t cct, bool allowWBCorrection = false); diff --git a/wled00/bus_wrapper.h b/wled00/bus_wrapper.h index dce23478d..b19997ce7 100644 --- a/wled00/bus_wrapper.h +++ b/wled00/bus_wrapper.h @@ -806,101 +806,101 @@ class PolyBus { case I_SS_P98_3: (static_cast(busPtr))->SetPixelColor(pix, RgbColor(col)); break; } }; - static void setBrightness(void* busPtr, uint8_t busType, uint8_t b) { + static void setBrightness(void* busPtr, uint8_t busType, uint8_t b, bool immediate) { // immediate=true is for use in ABL, it applies brightness immediately (warning: inefficient) switch (busType) { case I_NONE: break; #ifdef ESP8266 - case I_8266_U0_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_NEO_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_NEO_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_NEO_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_NEO_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_NEO_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_NEO_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_NEO_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_NEO_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_400_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_400_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_400_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_400_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_TM1_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_TM1_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_TM1_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_TM1_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_TM2_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_TM2_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_TM2_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_TM2_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_UCS_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_UCS_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_UCS_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_UCS_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U0_UCS_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_U1_UCS_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_DM_UCS_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_8266_BB_UCS_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif #ifdef ARDUINO_ARCH_ESP32 - case I_32_RN_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_NEO_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_NEO_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_NEO_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif -// case I_32_BB_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; +// case I_32_BB_NEO_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_NEO_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_NEO_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_NEO_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif -// case I_32_BB_NEO_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; +// case I_32_BB_NEO_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_400_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_400_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_400_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif -// case I_32_BB_400_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; +// case I_32_BB_400_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_TM1_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_TM2_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_I0_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_TM1_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_TM2_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_TM1_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_I1_TM2_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_TM1_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_TM2_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif - case I_32_RN_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_UCS_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_UCS_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_UCS_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif -// case I_32_BB_UCS_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; +// case I_32_BB_UCS_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_RN_UCS_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I0_UCS_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_32_I1_UCS_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif -// case I_32_BB_UCS_4: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; +// case I_32_BB_UCS_4: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; #endif - case I_HS_DOT_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_DOT_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_HS_LPD_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_LPD_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_HS_LPO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_LPO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_HS_WS1_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_WS1_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_HS_P98_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_P98_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_HS_DOT_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_SS_DOT_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_HS_LPD_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_SS_LPD_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_HS_LPO_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_SS_LPO_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_HS_WS1_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_SS_WS1_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_HS_P98_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; + case I_SS_P98_3: (static_cast(busPtr))->SetLuminance(b); if (immediate) (static_cast(busPtr))->ApplyPostAdjustments(); break; } }; static uint32_t getPixelColor(void* busPtr, uint8_t busType, uint16_t pix, uint8_t co) { From 858b57d77a58c1c09585abf650b4e186310e9dd6 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Sat, 1 Jul 2023 21:48:30 +0200 Subject: [PATCH 17/70] Return of local leds[] --- wled00/FX.h | 7 +++++-- wled00/FX_2Dfcn.cpp | 3 +++ wled00/FX_fcn.cpp | 28 ++++++++++++++++++++++++++++ wled00/bus_manager.cpp | 13 +++---------- 4 files changed, 39 insertions(+), 12 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index f5e7a4e3e..f58f25241 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -379,6 +379,7 @@ typedef struct Segment { uint16_t aux0; // custom var uint16_t aux1; // custom var byte* data; // effect data pointer + uint32_t* leds; // local leds[] array (may be a pointer to global) static uint16_t maxWidth, maxHeight; // these define matrix width & height (max. segment dimensions) private: @@ -461,6 +462,7 @@ typedef struct Segment { aux0(0), aux1(0), data(nullptr), + leds(nullptr), _capabilities(0), _dataLen(0), _t(nullptr) @@ -485,6 +487,7 @@ typedef struct Segment { //#endif if (name) delete[] name; if (_t) delete _t; + if (leds) free(leds); deallocateData(); } @@ -492,7 +495,7 @@ typedef struct Segment { Segment& operator= (Segment &&orig) noexcept; // move assignment #ifdef WLED_DEBUG - size_t getSize() const { return sizeof(Segment) + (data?_dataLen:0) + (name?strlen(name):0) + (_t?sizeof(Transition):0); } + size_t getSize() const { return sizeof(Segment) + (data?_dataLen:0) + (name?strlen(name):0) + (_t?sizeof(Transition):0) + (leds?sizeof(CRGB)*length():0); } #endif inline bool getOption(uint8_t n) const { return ((options >> n) & 0x01); } @@ -533,7 +536,7 @@ typedef struct Segment { * Safe to call from interrupts and network requests. */ inline void markForReset(void) { reset = true; } // setOption(SEG_OPTION_RESET, true) - inline void setUpLeds(void) {} // legacy filler (should be removed) + void setUpLeds(void); // local double buffer/lossless getPixelColor() // transition functions void startTransition(uint16_t dur); // transition has to start before actual segment values change diff --git a/wled00/FX_2Dfcn.cpp b/wled00/FX_2Dfcn.cpp index 5a5720b33..452388249 100644 --- a/wled00/FX_2Dfcn.cpp +++ b/wled00/FX_2Dfcn.cpp @@ -199,6 +199,8 @@ void /*IRAM_ATTR*/ Segment::setPixelColorXY(int x, int y, uint32_t col) if (Segment::maxHeight==1) return; // not a matrix set-up if (x >= virtualWidth() || y >= virtualHeight() || x<0 || y<0) return; // if pixel would fall out of virtual segment just exit + if (leds) leds[XY(x,y)] = col; + uint8_t _bri_t = currentBri(on ? opacity : 0); if (_bri_t < 255) { byte r = scale8(R(col), _bri_t); @@ -284,6 +286,7 @@ void Segment::setPixelColorXY(float x, float y, uint32_t col, bool aa) // returns RGBW values of pixel uint32_t Segment::getPixelColorXY(uint16_t x, uint16_t y) { + if (leds) return leds[XY(x,y)]; if (reverse ) x = virtualWidth() - x - 1; if (reverse_y) y = virtualHeight() - y - 1; if (transpose) { uint16_t t = x; x = y; y = t; } // swap X & Y if segment transposed diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index e0f132cd1..7c97c9b67 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -85,9 +85,11 @@ Segment::Segment(const Segment &orig) { data = nullptr; _dataLen = 0; _t = nullptr; + leds = nullptr; if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); } if (orig.data) { if (allocateData(orig._dataLen)) memcpy(data, orig.data, orig._dataLen); } if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); } + if (orig.leds) { leds = (uint32_t*)malloc(sizeof(uint32_t)*length()); if (leds) memcpy(leds, orig.leds, sizeof(uint32_t)*length()); } } // move constructor @@ -98,6 +100,7 @@ Segment::Segment(Segment &&orig) noexcept { orig.data = nullptr; orig._dataLen = 0; orig._t = nullptr; + orig.leds = nullptr; } // copy assignment @@ -107,6 +110,7 @@ Segment& Segment::operator= (const Segment &orig) { // clean destination if (name) delete[] name; if (_t) delete _t; + if (leds) free(leds); deallocateData(); // copy source memcpy((void*)this, (void*)&orig, sizeof(Segment)); @@ -115,10 +119,12 @@ Segment& Segment::operator= (const Segment &orig) { data = nullptr; _dataLen = 0; _t = nullptr; + leds = nullptr; // copy source data if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); } if (orig.data) { if (allocateData(orig._dataLen)) memcpy(data, orig.data, orig._dataLen); } if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); } + if (orig.leds) { leds = (uint32_t*)malloc(sizeof(uint32_t)*length()); if (leds) memcpy(leds, orig.leds, sizeof(uint32_t)*length()); } } return *this; } @@ -128,6 +134,7 @@ Segment& Segment::operator= (Segment &&orig) noexcept { //DEBUG_PRINTLN(F("-- Moving segment --")); if (this != &orig) { if (name) delete[] name; // free old name + if (leds) free(leds); deallocateData(); // free old runtime data if (_t) delete _t; memcpy((void*)this, (void*)&orig, sizeof(Segment)); @@ -135,6 +142,7 @@ Segment& Segment::operator= (Segment &&orig) noexcept { orig.data = nullptr; orig._dataLen = 0; orig._t = nullptr; + orig.leds = nullptr; } return *this; } @@ -174,12 +182,28 @@ void Segment::deallocateData() { */ void Segment::resetIfRequired() { if (reset) { + if (leds) { free(leds); leds = nullptr; } deallocateData(); next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0; reset = false; // setOption(SEG_OPTION_RESET, false); } } +void Segment::setUpLeds() { + // deallocation happens in resetIfRequired() as it is called when segment changes or in destructor + if (useGlobalLedBuffer) return; // TODO optional seg buffer for FX without lossy restore due to opacity + + // no global buffer + if (leds == nullptr && length() > 0) { //softhack007 quickfix - avoid malloc(0) which is undefined behaviour (should not happen, but i've seen it) + //#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) + //if (psramFound()) + // leds = (CRGB*)ps_malloc(sizeof(CRGB)*length()); // softhack007 disabled; putting leds into psram leads to horrible slowdown on WROVER boards + //else + //#endif + leds = (uint32_t *)calloc(length(), sizeof(uint32_t)); + } +} + CRGBPalette16 &Segment::loadPalette(CRGBPalette16 &targetPalette, uint8_t pal) { static unsigned long _lastPaletteChange = 0; // perhaps it should be per segment static CRGBPalette16 randomPalette = CRGBPalette16(DEFAULT_COLOR); @@ -592,6 +616,8 @@ void IRAM_ATTR Segment::setPixelColor(int i, uint32_t col) } #endif + if (leds) leds[i] = col; + uint16_t len = length(); uint8_t _bri_t = currentBri(on ? opacity : 0); if (_bri_t < 255) { @@ -691,6 +717,8 @@ uint32_t Segment::getPixelColor(int i) } #endif + if (leds) return leds[i]; + if (reverse) i = virtualLength() - i - 1; i *= groupLength(); i += start; diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index a3807dbe1..822b527be 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -147,18 +147,11 @@ void BusDigital::show() { else pix += _skip; PolyBus::setPixelColor(_busPtr, _iType, pix, c, co); } - PolyBus::show(_busPtr, _iType); } else { PolyBus::applyPostAdjustments(_busPtr, _iType); - PolyBus::show(_busPtr, _iType); - // now restore (as close as possible) previous colors - // warning: this may not be the best idea as the buffer may still be in use - for (size_t i=0; i<_len; i++) { - uint8_t co = _colorOrderMap.getPixelColorOrder(i+_start, _colorOrder); - setPixelColor(i, restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, i, co), _bri)); - } } - PolyBus::setBrightness(_busPtr, _iType, 255); // restore full brightness + PolyBus::show(_busPtr, _iType); + PolyBus::setBrightness(_busPtr, _iType, 255); // restore full brightness at bus level (setting unscaled pixel color) } bool BusDigital::canShow() { @@ -243,7 +236,7 @@ uint32_t BusDigital::getPixelColor(uint16_t pix) { } return c; } - return PolyBus::getPixelColor(_busPtr, _iType, pix, co); + return restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, pix, co), _bri); } } From c89f38f4f8b89e707381659b73bbd6197618a987 Mon Sep 17 00:00:00 2001 From: Titanium177 <136393763+Titanium177@users.noreply.github.com> Date: Sat, 1 Jul 2023 23:18:02 +0200 Subject: [PATCH 18/70] Edited Metadata for effect 5 & 8 to be availible on just 1 Pixel (PWM) (#3275) --- wled00/FX.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index f5fefd5b4..9baee13cd 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -278,7 +278,7 @@ uint16_t mode_random_color(void) { SEGMENT.fill(color_blend(SEGMENT.color_wheel(SEGENV.aux1), SEGMENT.color_wheel(SEGENV.aux0), fade)); return FRAMETIME; } -static const char _data_FX_MODE_RANDOM_COLOR[] PROGMEM = "Random Colors@!,Fade time;;!"; +static const char _data_FX_MODE_RANDOM_COLOR[] PROGMEM = "Random Colors@!,Fade time;;!;01"; /* @@ -433,7 +433,7 @@ uint16_t mode_rainbow(void) { return FRAMETIME; } -static const char _data_FX_MODE_RAINBOW[] PROGMEM = "Colorloop@!,Saturation;;!"; +static const char _data_FX_MODE_RAINBOW[] PROGMEM = "Colorloop@!,Saturation;;!;01"; /* From c9ef034ab856e3b1d188b61d08d47bd7cc229ca0 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Sun, 2 Jul 2023 13:43:29 +0200 Subject: [PATCH 19/70] Build bump/fix --- wled00/wled.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/wled.h b/wled00/wled.h index 7fc3ba864..2d6d5b542 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 23062490 +#define VERSION 2307020 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From 45ac0d5dc6ec8be19b7e1e5247588170ce5463c1 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Sun, 2 Jul 2023 19:14:32 +0200 Subject: [PATCH 20/70] fix for #3276 due to `if (strip.isUpdating()) return;` reading the encoder did not happen in time if the strip was active - with high number of LEDs, this means "always updating". Similar observation that we had with the audioreactive usermod, and similar solution. --- .../usermod_v2_rotary_encoder_ui_ALT.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/usermods/usermod_v2_rotary_encoder_ui_ALT/usermod_v2_rotary_encoder_ui_ALT.h b/usermods/usermod_v2_rotary_encoder_ui_ALT/usermod_v2_rotary_encoder_ui_ALT.h index 75494dedb..b142f9037 100644 --- a/usermods/usermod_v2_rotary_encoder_ui_ALT/usermod_v2_rotary_encoder_ui_ALT.h +++ b/usermods/usermod_v2_rotary_encoder_ui_ALT/usermod_v2_rotary_encoder_ui_ALT.h @@ -45,6 +45,10 @@ #define ENCODER_SW_PIN 19 #endif +#ifndef ENCODER_MAX_DELAY_MS // max delay between polling encoder pins +#define ENCODER_MAX_DELAY_MS 8 // 8 milliseconds => max 120 change impulses in 1 second, for full turn of a 30/30 encoder (4 changes per segment, 30 segments for one turn) +#endif + #ifndef USERMOD_USE_PCF8574 #undef USE_PCF8574 #define USE_PCF8574 false @@ -539,8 +543,9 @@ void RotaryEncoderUIUsermod::setup() */ void RotaryEncoderUIUsermod::loop() { - if (!enabled || strip.isUpdating()) return; + if (!enabled) return; unsigned long currentTime = millis(); // get the current elapsed time + if (strip.isUpdating() && ((currentTime - loopTime) < ENCODER_MAX_DELAY_MS)) return; // be nice, but not too nice // Initialize effectCurrentIndex and effectPaletteIndex to // current state. We do it here as (at least) effectCurrent From 65e073e6b8807a31eff686e3649fbb6c3475663c Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Mon, 3 Jul 2023 14:01:45 +0200 Subject: [PATCH 21/70] de-optimization first version still cased some flickering. This de-optimization makes LEDs more stable. --- wled00/FX_fcn.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index bda17f8f2..23f860ded 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1230,11 +1230,13 @@ void WS2812FX::estimateCurrentAndLimitBri() { uint16_t scaleI = scale * 255; uint8_t scaleB = (scaleI > 255) ? 255 : scaleI; uint8_t newBri = scale8(_brightness, scaleB); - busses.setBrightness(newBri, (scaleB < 255)); //to keep brightness uniform, sets virtual busses too - softhack007: apply reductions immediately + // to keep brightness uniform, sets virtual busses too - softhack007: apply reductions immediately + //busses.setBrightness(newBri, (scaleB < 255)); // best for performance, but leaves some flickering + busses.setBrightness(newBri, true); // sub-optimal, but prevents flickering currentMilliamps = (powerSum0 * newBri) / puPerMilliamp; } else { currentMilliamps = powerSum / puPerMilliamp; - busses.setBrightness(_brightness); + busses.setBrightness(_brightness, true); // immediate = true is needed to prevent flickering } currentMilliamps += MA_FOR_ESP; //add power of ESP back to estimate currentMilliamps += pLen; //add standby power back to estimate From eabd6f60ef1427999f40fb43fc719f1c0247f033 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Mon, 3 Jul 2023 15:07:14 +0200 Subject: [PATCH 22/70] soudsim bugfix FFT_MajorPeak was just going from 0..255. Now it simulates the full range from 21hz ... 8Khz --- wled00/util.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wled00/util.cpp b/wled00/util.cpp index cf04aa5d5..b8dea2555 100644 --- a/wled00/util.cpp +++ b/wled00/util.cpp @@ -503,8 +503,8 @@ um_data_t* simulateSound(uint8_t simulationId) } samplePeak = random8() > 250; - FFT_MajorPeak = volumeSmth; - maxVol = 10; // this gets feedback fro UI + FFT_MajorPeak = 21 + (volumeSmth*volumeSmth) / 8.0f; // walk thru full range of 21hz...8200hz + maxVol = 31; // this gets feedback fro UI binNum = 8; // this gets feedback fro UI volumeRaw = volumeSmth; my_magnitude = 10000.0 / 8.0f; //no idea if 10000 is a good value for FFT_Magnitude ??? From 406a254523680ce18dfaf0928ec4282fc85ffc4a Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Mon, 3 Jul 2023 15:43:47 +0200 Subject: [PATCH 23/70] inactive segments robustness improvement * Avoid uint16 underflow in width() and height(): stop > start is possible, and means "inactive segment". Without these checks, it was possible that width() and height() produce VERY large values due to underflow. --- wled00/FX.h | 6 +++--- wled00/FX_2Dfcn.cpp | 1 + wled00/FX_fcn.cpp | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index 19b1fc4ac..f0c26cd2d 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -507,9 +507,9 @@ typedef struct Segment { inline bool hasRGB(void) const { return _isRGB; } inline bool hasWhite(void) const { return _hasW; } inline bool isCCT(void) const { return _isCCT; } - inline uint16_t width(void) const { return stop - start; } // segment width in physical pixels (length if 1D) - inline uint16_t height(void) const { return stopY - startY; } // segment height (if 2D) in physical pixels - inline uint16_t length(void) const { return width() * height(); } // segment length (count) in physical pixels + inline uint16_t width(void) const { return (stop > start) ? (stop - start) : 0; } // segment width in physical pixels (length if 1D) + inline uint16_t height(void) const { return (stopY > startY) ? (stopY - startY) : 0; } // segment height (if 2D) in physical pixels // softhack007: make sure its always > 0 + inline uint16_t length(void) const { return width() * height(); } // segment length (count) in physical pixels inline uint16_t groupLength(void) const { return grouping + spacing; } inline uint8_t getLightCapabilities(void) const { return _capabilities; } diff --git a/wled00/FX_2Dfcn.cpp b/wled00/FX_2Dfcn.cpp index f4dac68d7..c9653e109 100644 --- a/wled00/FX_2Dfcn.cpp +++ b/wled00/FX_2Dfcn.cpp @@ -191,6 +191,7 @@ uint32_t WS2812FX::getPixelColorXY(uint16_t x, uint16_t y) { uint16_t /*IRAM_ATTR*/ Segment::XY(uint16_t x, uint16_t y) { uint16_t width = virtualWidth(); // segment width in logical pixels uint16_t height = virtualHeight(); // segment height in logical pixels + if ((width == 0) || (height == 0)) return 0; // softhack007 avoid div/0 return (x%width) + (y%height) * width; } diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 23f860ded..2550853cb 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -729,7 +729,7 @@ uint32_t Segment::getPixelColor(int i) i += start; /* offset/phase */ i += offset; - if (i >= stop) i -= length(); + if ((i >= stop) && (stop>0)) i -= length(); // avoids negative pixel index (stop = 0 is a possible value) return strip.getPixelColor(i); } From 7de7ef8e8c80fa8bf54739d613038a982564c4df Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Mon, 3 Jul 2023 17:00:43 +0200 Subject: [PATCH 24/70] fix some crashes when changing presets This fixes some of the crashes I had when changing presets. still not a full solution ... --- wled00/FX_fcn.cpp | 5 +++-- wled00/json.cpp | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 2550853cb..a3383640b 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -90,7 +90,7 @@ Segment::Segment(const Segment &orig) { if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); } if (orig.data) { if (allocateData(orig._dataLen)) memcpy(data, orig.data, orig._dataLen); } if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); } - if (orig.leds && !Segment::_globalLeds) { leds = (CRGB*)malloc(sizeof(CRGB)*length()); if (leds) memcpy(leds, orig.leds, sizeof(CRGB)*length()); } + if (orig.leds && !Segment::_globalLeds && length() > 0) { leds = (CRGB*)malloc(sizeof(CRGB)*length()); if (leds) memcpy(leds, orig.leds, sizeof(CRGB)*length()); } } // move constructor @@ -125,7 +125,7 @@ Segment& Segment::operator= (const Segment &orig) { if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); } if (orig.data) { if (allocateData(orig._dataLen)) memcpy(data, orig.data, orig._dataLen); } if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); } - if (orig.leds && !Segment::_globalLeds) { leds = (CRGB*)malloc(sizeof(CRGB)*length()); if (leds) memcpy(leds, orig.leds, sizeof(CRGB)*length()); } + if (orig.leds && !Segment::_globalLeds && length() > 0) { leds = (CRGB*)malloc(sizeof(CRGB)*length()); if (leds) memcpy(leds, orig.leds, sizeof(CRGB)*length()); } } return *this; } @@ -547,6 +547,7 @@ uint16_t Segment::virtualLength() const { } #endif uint16_t groupLen = groupLength(); + if (groupLen < 1) groupLen = 1; // prevent division by zero - better safe than sorry ... uint16_t vLength = (length() + groupLen - 1) / groupLen; if (mirror) vLength = (vLength + 1) /2; // divide by 2 if mirror, leave at least a single LED return vLength; diff --git a/wled00/json.cpp b/wled00/json.cpp index ef74267d4..0d9dd7268 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -34,7 +34,7 @@ bool deserializeSegment(JsonObject elem, byte it, byte presetId) uint16_t start = elem["start"] | seg.start; if (stop < 0) { - uint16_t len = elem["len"]; + int len = elem["len"]; stop = (len > 0) ? start + len : seg.stop; } // 2D segments @@ -473,7 +473,7 @@ void serializeSegment(JsonObject& root, Segment& seg, byte id, bool forPreset, b root[F("stopY")] = seg.stopY; } } - if (!forPreset) root["len"] = seg.stop - seg.start; + if (!forPreset) root["len"] = (seg.stop >= seg.start) ? (seg.stop - seg.start) : 0; root["grp"] = seg.grouping; root[F("spc")] = seg.spacing; root[F("of")] = seg.offset; From d48a96599f56fd81235e8a77f4c3b1b9e08e46fd Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Mon, 3 Jul 2023 19:15:50 +0200 Subject: [PATCH 25/70] prevent races on leds buffer (looptask vs. async_tcp) I still see strange crashes in setPixelColor/GetpixelColor, which ssem to come from race conditions between async_tcp (change presets) and looptask (strip.service). To make the situation better, its important that any global pointers are reset to NULL immediately after free(). --- wled00/FX.h | 4 ++-- wled00/FX_fcn.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index f0c26cd2d..4f7bcb880 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -487,7 +487,7 @@ typedef struct Segment { //if (leds) Serial.printf(" [%u]", length()*sizeof(CRGB)); //Serial.println(); //#endif - if (!Segment::_globalLeds && leds) free(leds); + if (!Segment::_globalLeds && leds) { free(leds); leds = nullptr;} // reset to nullptr, to avoid race conditions if (name) delete[] name; if (_t) delete _t; deallocateData(); @@ -710,7 +710,7 @@ class WS2812FX { // 96 bytes panel.clear(); #endif customPalettes.clear(); - if (useLedsArray && Segment::_globalLeds) free(Segment::_globalLeds); + if (useLedsArray && Segment::_globalLeds) {free(Segment::_globalLeds); Segment::_globalLeds = nullptr;} // reset to nullptr, to avoid race conditions } static WS2812FX* getInstance(void) { return instance; } diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index a3383640b..20f1c0b50 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -97,11 +97,11 @@ Segment::Segment(const Segment &orig) { Segment::Segment(Segment &&orig) noexcept { //DEBUG_PRINTLN(F("-- Move segment constructor --")); memcpy((void*)this, (void*)&orig, sizeof(Segment)); + orig.leds = nullptr; orig.name = nullptr; orig.data = nullptr; orig._dataLen = 0; orig._t = nullptr; - orig.leds = nullptr; } // copy assignment @@ -111,7 +111,7 @@ Segment& Segment::operator= (const Segment &orig) { // clean destination if (name) delete[] name; if (_t) delete _t; - if (leds && !Segment::_globalLeds) free(leds); + if (leds && !Segment::_globalLeds) {free(leds); leds=nullptr;} deallocateData(); // copy source memcpy((void*)this, (void*)&orig, sizeof(Segment)); @@ -137,7 +137,7 @@ Segment& Segment::operator= (Segment &&orig) noexcept { if (name) delete[] name; // free old name deallocateData(); // free old runtime data if (_t) delete _t; - if (leds && !Segment::_globalLeds) free(leds); + if (leds && !Segment::_globalLeds) {free(leds); leds=nullptr;} memcpy((void*)this, (void*)&orig, sizeof(Segment)); orig.name = nullptr; orig.data = nullptr; @@ -1078,7 +1078,7 @@ void WS2812FX::finalizeInit(void) //else //#endif Segment::_globalLeds = (CRGB*) malloc(arrSize); - memset(Segment::_globalLeds, 0, arrSize); + if (Segment::_globalLeds && (arrSize > 0)) memset(Segment::_globalLeds, 0, arrSize); } //segments are created in makeAutoSegments(); From fa281a0df0d9b6d1d8bf6f5d4502414d897665e2 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Mon, 3 Jul 2023 19:23:57 +0200 Subject: [PATCH 26/70] ABL optimization this optimization avoids to apply brightness two times . NeoPixelBusLg has already applied global brightness at sPC. Due to internal working of the Lg bus, its sufficient to only post-apply scaling, and set the new (scaled) brightness for the next frame. --- wled00/FX_fcn.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 20f1c0b50..51ef8caf0 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1232,12 +1232,12 @@ void WS2812FX::estimateCurrentAndLimitBri() { uint8_t scaleB = (scaleI > 255) ? 255 : scaleI; uint8_t newBri = scale8(_brightness, scaleB); // to keep brightness uniform, sets virtual busses too - softhack007: apply reductions immediately - //busses.setBrightness(newBri, (scaleB < 255)); // best for performance, but leaves some flickering - busses.setBrightness(newBri, true); // sub-optimal, but prevents flickering + if (scaleB < 255) busses.setBrightness(scaleB, true); // NPB-LG has already applied brightness, so its suffifient to post-apply scaling + busses.setBrightness(newBri, false); // set new brightness for next frame currentMilliamps = (powerSum0 * newBri) / puPerMilliamp; } else { currentMilliamps = powerSum / puPerMilliamp; - busses.setBrightness(_brightness, true); // immediate = true is needed to prevent flickering + busses.setBrightness(_brightness, false); // set new brightness for next frame } currentMilliamps += MA_FOR_ESP; //add power of ESP back to estimate currentMilliamps += pLen; //add standby power back to estimate From 66616e1cab422a06fd4d0baf5b7b447dd94df4bd Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Mon, 3 Jul 2023 21:13:01 +0200 Subject: [PATCH 27/70] Some timings added. --- wled00/FX_fcn.cpp | 11 +++++++++++ wled00/bus_manager.cpp | 35 ++++++++++++++++++++++------------- wled00/bus_manager.h | 14 ++++++++------ 3 files changed, 41 insertions(+), 19 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 7c97c9b67..e32561340 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1219,6 +1219,9 @@ uint8_t WS2812FX::estimateCurrentAndLimitBri() { } void WS2812FX::show(void) { + static unsigned long sumMicros = 0, sumCurrent = 0; + static size_t calls = 0; + unsigned long microsStart = micros(); // avoid race condition, caputre _callback value show_callback callback = _callback; @@ -1226,6 +1229,7 @@ void WS2812FX::show(void) { uint8_t busBrightness = estimateCurrentAndLimitBri(); busses.setBrightness(busBrightness); + sumCurrent += micros() - microsStart; // some buses send asynchronously and this method will return before // all of the data has been sent. @@ -1237,6 +1241,13 @@ void WS2812FX::show(void) { if (diff > 0) fpsCurr = 1000 / diff; _cumulativeFps = (3 * _cumulativeFps + fpsCurr) >> 2; _lastShow = now; + + sumMicros += micros() - microsStart; + if (++calls == 100) { + DEBUG_PRINTF("show calls: %d micros: %lu avg: %lu (current: %lu avg: %lu)\n", calls, sumMicros, sumMicros/calls, sumCurrent, sumCurrent/calls); + sumMicros = sumCurrent = 0; + calls = 0; + } } /** diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index 822b527be..4883fff15 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -116,7 +116,7 @@ BusDigital::BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com) : Bu _colorOrder = bc.colorOrder; _iType = PolyBus::getI(bc.type, _pins, nr); if (_iType == I_NONE) return; - if (useGlobalLedBuffer && !allocData(_len * (hasWhite() + 3*hasRGB()))) return; //warning: hardcoded channel count + if (useGlobalLedBuffer && !allocData(_len * (Bus::hasWhite(_type) + 3*Bus::hasRGB(_type)))) return; //warning: hardcoded channel count uint16_t lenToCreate = _len; if (bc.type == TYPE_WS2812_1CH_X3) lenToCreate = NUM_ICS_WS2812_1CH_3X(_len); // only needs a third of "RGB" LEDs for NeoPixelBus _busPtr = PolyBus::create(_iType, _pins, lenToCreate + _skip, nr, _frequencykHz); @@ -126,9 +126,12 @@ BusDigital::BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com) : Bu void BusDigital::show() { if (!_valid) return; + static unsigned long sumMicros = 0; + static size_t calls = 0; + unsigned long microsStart = micros(); PolyBus::setBrightness(_busPtr, _iType, _bri); if (useGlobalLedBuffer) { - size_t channels = hasWhite() + 3*hasRGB(); + size_t channels = Bus::hasWhite(_type) + 3*Bus::hasRGB(_type); for (size_t i=0; i<_len; i++) { size_t offset = i*channels; uint8_t co = _colorOrderMap.getPixelColorOrder(i+_start, _colorOrder); @@ -140,7 +143,7 @@ void BusDigital::show() { case 2: c = RGBW32(_data[offset-2], _data[offset-1], _data[offset] , 0); break; } } else { - c = RGBW32(_data[offset],_data[offset+1],_data[offset+2],(hasWhite()?_data[offset+3]:0)); + c = RGBW32(_data[offset],_data[offset+1],_data[offset+2],(Bus::hasWhite(_type)?_data[offset+3]:0)); } uint16_t pix = i; if (reversed) pix = _len - pix -1; @@ -152,6 +155,12 @@ void BusDigital::show() { } PolyBus::show(_busPtr, _iType); PolyBus::setBrightness(_busPtr, _iType, 255); // restore full brightness at bus level (setting unscaled pixel color) + sumMicros += micros() - microsStart; + if (++calls == 100) { + DEBUG_PRINTF("Bus calls: %d micros: %lu avg: %lu\n", calls, sumMicros, sumMicros/calls); + sumMicros = 0; + calls = 0; + } } bool BusDigital::canShow() { @@ -172,25 +181,25 @@ void BusDigital::setBrightness(uint8_t b) { //If LEDs are skipped, it is possible to use the first as a status LED. //TODO only show if no new show due in the next 50ms void BusDigital::setStatusPixel(uint32_t c) { - if (_valid && _skip && canShow()) { + if (_valid && _skip) { PolyBus::setPixelColor(_busPtr, _iType, 0, c, _colorOrderMap.getPixelColorOrder(_start, _colorOrder)); - PolyBus::show(_busPtr, _iType); + if (canShow()) PolyBus::show(_busPtr, _iType); } } void IRAM_ATTR BusDigital::setPixelColor(uint16_t pix, uint32_t c) { if (!_valid) return; - if (hasWhite()) c = autoWhiteCalc(c); + if (Bus::hasWhite(_type)) c = autoWhiteCalc(c); if (_cct >= 1900) c = colorBalanceFromKelvin(_cct, c); //color correction from CCT if (useGlobalLedBuffer) { - size_t channels = hasWhite() + 3*hasRGB(); + size_t channels = Bus::hasWhite(_type) + 3*Bus::hasRGB(_type); size_t offset = pix*channels; - if (hasRGB()) { + if (Bus::hasRGB(_type)) { _data[offset++] = R(c); _data[offset++] = G(c); _data[offset++] = B(c); } - if (hasWhite()) _data[offset] = W(c); + if (Bus::hasWhite(_type)) _data[offset] = W(c); } else { if (reversed) pix = _len - pix -1; else pix += _skip; @@ -212,13 +221,13 @@ void IRAM_ATTR BusDigital::setPixelColor(uint16_t pix, uint32_t c) { uint32_t BusDigital::getPixelColor(uint16_t pix) { if (!_valid) return 0; if (useGlobalLedBuffer) { - size_t channels = hasWhite() + 3*hasRGB(); + size_t channels = Bus::hasWhite(_type) + 3*Bus::hasRGB(_type); size_t offset = pix*channels; uint32_t c; - if (!hasRGB()) { + if (!Bus::hasRGB(_type)) { c = RGBW32(_data[offset], _data[offset], _data[offset], _data[offset]); } else { - c = RGBW32(_data[offset], _data[offset+1], _data[offset+2], hasWhite() ? _data[offset+3] : 0); + c = RGBW32(_data[offset], _data[offset+1], _data[offset+2], Bus::hasWhite(_type) ? _data[offset+3] : 0); } return c; } else { @@ -469,7 +478,7 @@ BusNetwork::BusNetwork(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWhite) { void BusNetwork::setPixelColor(uint16_t pix, uint32_t c) { if (!_valid || pix >= _len) return; - if (hasWhite()) c = autoWhiteCalc(c); + if (_rgbw) c = autoWhiteCalc(c); if (_cct >= 1900) c = colorBalanceFromKelvin(_cct, c); //color correction from CCT uint16_t offset = pix * _UDPchannels; _data[offset] = R(c); diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index 8e78310bb..bb5df68e6 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -130,20 +130,22 @@ class Bus { inline bool isOffRefreshRequired() { return _needsRefresh; } bool containsPixel(uint16_t pix) { return pix >= _start && pix < _start+_len; } - virtual bool hasRGB() { - if ((_type >= TYPE_WS2812_1CH && _type <= TYPE_WS2812_WWA) || _type == TYPE_ANALOG_1CH || _type == TYPE_ANALOG_2CH || _type == TYPE_ONOFF) return false; + virtual bool hasRGB(void) { return Bus::hasRGB(_type); } + static bool hasRGB(uint8_t type) { + if ((type >= TYPE_WS2812_1CH && type <= TYPE_WS2812_WWA) || type == TYPE_ANALOG_1CH || type == TYPE_ANALOG_2CH || type == TYPE_ONOFF) return false; return true; } - virtual bool hasWhite() { return Bus::hasWhite(_type); } + virtual bool hasWhite(void) { return Bus::hasWhite(_type); } static bool hasWhite(uint8_t type) { if ((type >= TYPE_WS2812_1CH && type <= TYPE_WS2812_WWA) || type == TYPE_SK6812_RGBW || type == TYPE_TM1814) return true; // digital types with white channel if (type > TYPE_ONOFF && type <= TYPE_ANALOG_5CH && type != TYPE_ANALOG_3CH) return true; // analog types with white channel if (type == TYPE_NET_DDP_RGBW) return true; // network types with white channel return false; } - virtual bool hasCCT() { - if (_type == TYPE_WS2812_2CH_X3 || _type == TYPE_WS2812_WWA || - _type == TYPE_ANALOG_2CH || _type == TYPE_ANALOG_5CH) return true; + virtual bool hasCCT(void) { return Bus::hasCCT(_type); } + static bool hasCCT(uint8_t type) { + if (type == TYPE_WS2812_2CH_X3 || type == TYPE_WS2812_WWA || + type == TYPE_ANALOG_2CH || type == TYPE_ANALOG_5CH) return true; return false; } static void setCCT(uint16_t cct) { From 8831c76fb42c02fed6227cc05fe9cd262b860cec Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Tue, 4 Jul 2023 16:22:19 +0200 Subject: [PATCH 28/70] restoreColorLossy small optimization minor optimizations that give up to 10% speedup in my tests * use "fast" integer types (where possible) * replaced _bri with _restaurationBri (no use of globals) --- wled00/bus_manager.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index bb5df68e6..e9d773d61 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -236,13 +236,13 @@ class BusDigital : public Bus { void * _busPtr = nullptr; const ColorOrderMap &_colorOrderMap; - inline uint32_t restoreColorLossy(uint32_t c, uint8_t _restaurationBri) { - if (_bri == 255) return c; + inline uint32_t restoreColorLossy(uint32_t c, uint_fast8_t _restaurationBri) { + if (_restaurationBri == 255) return c; uint8_t* chan = (uint8_t*) &c; - for (uint8_t i=0; i<4; i++) + for (uint_fast8_t i=0; i<4; i++) { - uint16_t val = chan[i]; + uint_fast16_t val = chan[i]; chan[i] = ((val << 8) + _restaurationBri) / (_restaurationBri + 1); //adding _bri slighly improves recovery / stops degradation on re-scale } return c; From 45a0061660692c25f9231d4e2ba55d0eb894a060 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Wed, 5 Jul 2023 14:26:09 +0200 Subject: [PATCH 29/70] reverting _restaurationBri change see previous discussion --- wled00/bus_manager.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index e9d773d61..fe9690c72 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -237,7 +237,7 @@ class BusDigital : public Bus { const ColorOrderMap &_colorOrderMap; inline uint32_t restoreColorLossy(uint32_t c, uint_fast8_t _restaurationBri) { - if (_restaurationBri == 255) return c; + if (_bri == 255) return c; uint8_t* chan = (uint8_t*) &c; for (uint_fast8_t i=0; i<4; i++) @@ -404,4 +404,4 @@ class BusManager { return j; } }; -#endif \ No newline at end of file +#endif From ad825b80b019577144e774447808b63dc5778f4f Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Wed, 5 Jul 2023 17:16:54 +0200 Subject: [PATCH 30/70] Added a few debug timings. --- wled00/wled.cpp | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/wled00/wled.cpp b/wled00/wled.cpp index 86d14d6ad..8f80b89f9 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -35,12 +35,19 @@ void WLED::reset() void WLED::loop() { #ifdef WLED_DEBUG + static unsigned serviceCount = 0; static unsigned long maxUsermodMillis = 0; - static uint16_t avgUsermodMillis = 0; + static size_t avgUsermodMillis = 0; static unsigned long maxStripMillis = 0; - static uint16_t avgStripMillis = 0; + static size_t avgStripMillis = 0; + static size_t avgHandlingMillis = 0; + static size_t avgHandling2Millis = 0; + static size_t avgHandling3Millis = 0; #endif + #ifdef WLED_DEBUG + unsigned long handlingMillis = millis(); + #endif handleTime(); #ifndef WLED_DISABLE_INFRARED handleIR(); // 2nd call to function needed for ESP32 to return valid results -- should be good for ESP8266, too @@ -53,6 +60,10 @@ void WLED::loop() #ifdef WLED_ENABLE_DMX handleDMX(); #endif + #ifdef WLED_DEBUG + handlingMillis = millis() - handlingMillis; + avgHandlingMillis += handlingMillis; + #endif userLoop(); #ifdef WLED_DEBUG @@ -65,6 +76,9 @@ void WLED::loop() if (usermodMillis > maxUsermodMillis) maxUsermodMillis = usermodMillis; #endif + #ifdef WLED_DEBUG + unsigned long handling2Millis = millis(); + #endif yield(); handleIO(); #ifndef WLED_DISABLE_INFRARED @@ -73,6 +87,10 @@ void WLED::loop() #ifndef WLED_DISABLE_ALEXA handleAlexa(); #endif + #ifdef WLED_DEBUG + handling2Millis = millis() - handling2Millis; + avgHandling2Millis += handling2Millis; + #endif if (doCloseFile) { closeFile(); @@ -146,7 +164,7 @@ void WLED::loop() //LED settings have been saved, re-init busses //This code block causes severe FPS drop on ESP32 with the original "if (busConfigs[0] != nullptr)" conditional. Investigate! - if (doInitBusses) { + if (busConfigs[0] != nullptr) { doInitBusses = false; DEBUG_PRINTLN(F("Re-init busses.")); bool aligned = strip.checkSegmentAlignment(); //see if old segments match old bus(ses) @@ -177,9 +195,16 @@ void WLED::loop() yield(); if (doSerializeConfig) serializeConfig(); + #ifdef WLED_DEBUG + unsigned long handling3Millis = millis(); + #endif yield(); handleWs(); handleStatusLED(); + #ifdef WLED_DEBUG + handling3Millis = millis() - handling3Millis; + avgHandling3Millis += handling3Millis; + #endif // DEBUG serial logging (every 30s) #ifdef WLED_DEBUG @@ -207,6 +232,9 @@ void WLED::loop() DEBUG_PRINT(F("Loops/sec: ")); DEBUG_PRINTLN(loops / 30); DEBUG_PRINT(F("UM time[ms]: ")); DEBUG_PRINT(avgUsermodMillis/loops); DEBUG_PRINT("/");DEBUG_PRINTLN(maxUsermodMillis); DEBUG_PRINT(F("Strip time[ms]: ")); DEBUG_PRINT(avgStripMillis/loops); DEBUG_PRINT("/"); DEBUG_PRINTLN(maxStripMillis); + DEBUG_PRINT(F("Handling 1 time[ms]: ")); DEBUG_PRINTLN(avgHandlingMillis/loops); + DEBUG_PRINT(F("Handling 2 time[ms]: ")); DEBUG_PRINTLN(avgHandling2Millis/loops); + DEBUG_PRINT(F("Handling 3 time[ms]: ")); DEBUG_PRINTLN(avgHandling3Millis/loops); } strip.printSize(); loops = 0; @@ -214,6 +242,9 @@ void WLED::loop() maxStripMillis = 0; avgUsermodMillis = 0; avgStripMillis = 0; + avgHandlingMillis = 0; + avgHandling2Millis = 0; + avgHandling3Millis = 0; debugTime = millis(); } loops++; From 59a144baedf47a9e5ccd8479b92a18f643ce0bd9 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Wed, 5 Jul 2023 23:57:46 +0200 Subject: [PATCH 31/70] Disable global buffer on ESP8266 by default Remove global dependency from Bus class and subclasses Remove timings --- wled00/FX_fcn.cpp | 6 ++++++ wled00/bus_manager.cpp | 15 ++++++++++----- wled00/bus_manager.h | 8 +++++--- wled00/cfg.cpp | 4 ++-- wled00/set.cpp | 2 +- wled00/wled.cpp | 31 ------------------------------- wled00/wled.h | 8 ++++++-- 7 files changed, 30 insertions(+), 44 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index e32561340..3c0095925 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1219,9 +1219,11 @@ uint8_t WS2812FX::estimateCurrentAndLimitBri() { } void WS2812FX::show(void) { + #ifdef WLED_DEBUG static unsigned long sumMicros = 0, sumCurrent = 0; static size_t calls = 0; unsigned long microsStart = micros(); + #endif // avoid race condition, caputre _callback value show_callback callback = _callback; @@ -1229,7 +1231,9 @@ void WS2812FX::show(void) { uint8_t busBrightness = estimateCurrentAndLimitBri(); busses.setBrightness(busBrightness); + #ifdef WLED_DEBUG sumCurrent += micros() - microsStart; + #endif // some buses send asynchronously and this method will return before // all of the data has been sent. @@ -1242,12 +1246,14 @@ void WS2812FX::show(void) { _cumulativeFps = (3 * _cumulativeFps + fpsCurr) >> 2; _lastShow = now; + #ifdef WLED_DEBUG sumMicros += micros() - microsStart; if (++calls == 100) { DEBUG_PRINTF("show calls: %d micros: %lu avg: %lu (current: %lu avg: %lu)\n", calls, sumMicros, sumMicros/calls, sumCurrent, sumCurrent/calls); sumMicros = sumCurrent = 0; calls = 0; } + #endif } /** diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index 4883fff15..24c2ea40a 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -116,7 +116,8 @@ BusDigital::BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com) : Bu _colorOrder = bc.colorOrder; _iType = PolyBus::getI(bc.type, _pins, nr); if (_iType == I_NONE) return; - if (useGlobalLedBuffer && !allocData(_len * (Bus::hasWhite(_type) + 3*Bus::hasRGB(_type)))) return; //warning: hardcoded channel count + if (bc.doubleBuffer && !allocData(_len * (Bus::hasWhite(_type) + 3*Bus::hasRGB(_type)))) return; //warning: hardcoded channel count + buffering = bc.doubleBuffer; uint16_t lenToCreate = _len; if (bc.type == TYPE_WS2812_1CH_X3) lenToCreate = NUM_ICS_WS2812_1CH_3X(_len); // only needs a third of "RGB" LEDs for NeoPixelBus _busPtr = PolyBus::create(_iType, _pins, lenToCreate + _skip, nr, _frequencykHz); @@ -126,11 +127,13 @@ BusDigital::BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com) : Bu void BusDigital::show() { if (!_valid) return; + #ifdef WLED_DEBUG static unsigned long sumMicros = 0; static size_t calls = 0; unsigned long microsStart = micros(); + #endif PolyBus::setBrightness(_busPtr, _iType, _bri); - if (useGlobalLedBuffer) { + if (buffering) { // should be _data != nullptr, but that causes ~20% FPS drop size_t channels = Bus::hasWhite(_type) + 3*Bus::hasRGB(_type); for (size_t i=0; i<_len; i++) { size_t offset = i*channels; @@ -155,12 +158,14 @@ void BusDigital::show() { } PolyBus::show(_busPtr, _iType); PolyBus::setBrightness(_busPtr, _iType, 255); // restore full brightness at bus level (setting unscaled pixel color) + #ifdef WLED_DEBUG sumMicros += micros() - microsStart; if (++calls == 100) { DEBUG_PRINTF("Bus calls: %d micros: %lu avg: %lu\n", calls, sumMicros, sumMicros/calls); sumMicros = 0; calls = 0; } + #endif } bool BusDigital::canShow() { @@ -191,7 +196,7 @@ void IRAM_ATTR BusDigital::setPixelColor(uint16_t pix, uint32_t c) { if (!_valid) return; if (Bus::hasWhite(_type)) c = autoWhiteCalc(c); if (_cct >= 1900) c = colorBalanceFromKelvin(_cct, c); //color correction from CCT - if (useGlobalLedBuffer) { + if (buffering) { // should be _data != nullptr, but that causes ~20% FPS drop size_t channels = Bus::hasWhite(_type) + 3*Bus::hasRGB(_type); size_t offset = pix*channels; if (Bus::hasRGB(_type)) { @@ -220,7 +225,7 @@ void IRAM_ATTR BusDigital::setPixelColor(uint16_t pix, uint32_t c) { uint32_t BusDigital::getPixelColor(uint16_t pix) { if (!_valid) return 0; - if (useGlobalLedBuffer) { + if (buffering) { // should be _data != nullptr, but that causes ~20% FPS drop size_t channels = Bus::hasWhite(_type) + 3*Bus::hasRGB(_type); size_t offset = pix*channels; uint32_t c; @@ -272,7 +277,7 @@ void BusDigital::cleanup() { _iType = I_NONE; _valid = false; _busPtr = nullptr; - if (useGlobalLedBuffer) freeData(); + if (_data != nullptr) freeData(); pinManager.deallocatePin(_pins[1], PinOwner::BusDigital); pinManager.deallocatePin(_pins[0], PinOwner::BusDigital); } diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index fe9690c72..7f138cc05 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -34,10 +34,11 @@ struct BusConfig { uint8_t autoWhite; uint8_t pins[5] = {LEDPIN, 255, 255, 255, 255}; uint16_t frequency; - BusConfig(uint8_t busType, uint8_t* ppins, uint16_t pstart, uint16_t len = 1, uint8_t pcolorOrder = COL_ORDER_GRB, bool rev = false, uint8_t skip = 0, byte aw=RGBW_MODE_MANUAL_ONLY, uint16_t clock_kHz=0U) { + bool doubleBuffer; + BusConfig(uint8_t busType, uint8_t* ppins, uint16_t pstart, uint16_t len = 1, uint8_t pcolorOrder = COL_ORDER_GRB, bool rev = false, uint8_t skip = 0, byte aw=RGBW_MODE_MANUAL_ONLY, uint16_t clock_kHz=0U, bool dblBfr=false) { refreshReq = (bool) GET_BIT(busType,7); type = busType & 0x7F; // bit 7 may be/is hacked to include refresh info (1=refresh in off state, 0=no refresh) - count = len; start = pstart; colorOrder = pcolorOrder; reversed = rev; skipAmount = skip; autoWhite = aw; frequency = clock_kHz; + count = len; start = pstart; colorOrder = pcolorOrder; reversed = rev; skipAmount = skip; autoWhite = aw; frequency = clock_kHz; doubleBuffer = dblBfr; uint8_t nPins = 1; if (type >= TYPE_NET_DDP_RGB && type < 96) nPins = 4; //virtual network bus. 4 "pins" store IP address else if (type > 47) nPins = 2; @@ -181,7 +182,7 @@ class Bus { uint32_t autoWhiteCalc(uint32_t c); uint8_t *allocData(size_t size = 1); - void freeData() { if (_data) free(_data); _data = nullptr; } + void freeData() { if (_data != nullptr) free(_data); _data = nullptr; } }; @@ -235,6 +236,7 @@ class BusDigital : public Bus { uint16_t _frequencykHz = 0U; void * _busPtr = nullptr; const ColorOrderMap &_colorOrderMap; + bool buffering = false; // temporary until we figure out why comparison "_data != nullptr" causes severe FPS drop inline uint32_t restoreColorLossy(uint32_t c, uint_fast8_t _restaurationBri) { if (_bri == 255) return c; diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index 6c2e94229..6730fe5fe 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -161,7 +161,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { ledType |= refresh << 7; // hack bit 7 to indicate strip requires off refresh uint8_t AWmode = elm[F("rgbwm")] | autoWhiteMode; if (fromFS) { - BusConfig bc = BusConfig(ledType, pins, start, length, colorOrder, reversed, skipFirst, AWmode, freqkHz); + BusConfig bc = BusConfig(ledType, pins, start, length, colorOrder, reversed, skipFirst, AWmode, freqkHz, useGlobalLedBuffer); mem += BusManager::memUsage(bc); if (useGlobalLedBuffer && start + length > maxlen) { maxlen = start + length; @@ -170,7 +170,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { if (mem + globalBufMem <= MAX_LED_MEMORY) if (busses.add(bc) == -1) break; // finalization will be done in WLED::beginStrip() } else { if (busConfigs[s] != nullptr) delete busConfigs[s]; - busConfigs[s] = new BusConfig(ledType, pins, start, length, colorOrder, reversed, skipFirst, AWmode); + busConfigs[s] = new BusConfig(ledType, pins, start, length, colorOrder, reversed, skipFirst, AWmode, freqkHz, useGlobalLedBuffer); busesChanged = true; } s++; diff --git a/wled00/set.cpp b/wled00/set.cpp index 3420f22c3..fb3e40c2d 100644 --- a/wled00/set.cpp +++ b/wled00/set.cpp @@ -153,7 +153,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) // actual finalization is done in WLED::loop() (removing old busses and adding new) // this may happen even before this loop is finished so we do "doInitBusses" after the loop if (busConfigs[s] != nullptr) delete busConfigs[s]; - busConfigs[s] = new BusConfig(type, pins, start, length, colorOrder | (channelSwap<<4), request->hasArg(cv), skip, awmode, freqHz); + busConfigs[s] = new BusConfig(type, pins, start, length, colorOrder | (channelSwap<<4), request->hasArg(cv), skip, awmode, freqHz, useGlobalLedBuffer); busesChanged = true; } //doInitBusses = busesChanged; // we will do that below to ensure all input data is processed diff --git a/wled00/wled.cpp b/wled00/wled.cpp index 8f80b89f9..83a79358d 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -35,19 +35,12 @@ void WLED::reset() void WLED::loop() { #ifdef WLED_DEBUG - static unsigned serviceCount = 0; static unsigned long maxUsermodMillis = 0; static size_t avgUsermodMillis = 0; static unsigned long maxStripMillis = 0; static size_t avgStripMillis = 0; - static size_t avgHandlingMillis = 0; - static size_t avgHandling2Millis = 0; - static size_t avgHandling3Millis = 0; #endif - #ifdef WLED_DEBUG - unsigned long handlingMillis = millis(); - #endif handleTime(); #ifndef WLED_DISABLE_INFRARED handleIR(); // 2nd call to function needed for ESP32 to return valid results -- should be good for ESP8266, too @@ -60,10 +53,6 @@ void WLED::loop() #ifdef WLED_ENABLE_DMX handleDMX(); #endif - #ifdef WLED_DEBUG - handlingMillis = millis() - handlingMillis; - avgHandlingMillis += handlingMillis; - #endif userLoop(); #ifdef WLED_DEBUG @@ -76,9 +65,6 @@ void WLED::loop() if (usermodMillis > maxUsermodMillis) maxUsermodMillis = usermodMillis; #endif - #ifdef WLED_DEBUG - unsigned long handling2Millis = millis(); - #endif yield(); handleIO(); #ifndef WLED_DISABLE_INFRARED @@ -87,10 +73,6 @@ void WLED::loop() #ifndef WLED_DISABLE_ALEXA handleAlexa(); #endif - #ifdef WLED_DEBUG - handling2Millis = millis() - handling2Millis; - avgHandling2Millis += handling2Millis; - #endif if (doCloseFile) { closeFile(); @@ -195,16 +177,9 @@ void WLED::loop() yield(); if (doSerializeConfig) serializeConfig(); - #ifdef WLED_DEBUG - unsigned long handling3Millis = millis(); - #endif yield(); handleWs(); handleStatusLED(); - #ifdef WLED_DEBUG - handling3Millis = millis() - handling3Millis; - avgHandling3Millis += handling3Millis; - #endif // DEBUG serial logging (every 30s) #ifdef WLED_DEBUG @@ -232,9 +207,6 @@ void WLED::loop() DEBUG_PRINT(F("Loops/sec: ")); DEBUG_PRINTLN(loops / 30); DEBUG_PRINT(F("UM time[ms]: ")); DEBUG_PRINT(avgUsermodMillis/loops); DEBUG_PRINT("/");DEBUG_PRINTLN(maxUsermodMillis); DEBUG_PRINT(F("Strip time[ms]: ")); DEBUG_PRINT(avgStripMillis/loops); DEBUG_PRINT("/"); DEBUG_PRINTLN(maxStripMillis); - DEBUG_PRINT(F("Handling 1 time[ms]: ")); DEBUG_PRINTLN(avgHandlingMillis/loops); - DEBUG_PRINT(F("Handling 2 time[ms]: ")); DEBUG_PRINTLN(avgHandling2Millis/loops); - DEBUG_PRINT(F("Handling 3 time[ms]: ")); DEBUG_PRINTLN(avgHandling3Millis/loops); } strip.printSize(); loops = 0; @@ -242,9 +214,6 @@ void WLED::loop() maxStripMillis = 0; avgUsermodMillis = 0; avgStripMillis = 0; - avgHandlingMillis = 0; - avgHandling2Millis = 0; - avgHandling3Millis = 0; debugTime = millis(); } loops++; diff --git a/wled00/wled.h b/wled00/wled.h index 2d6d5b542..28b11a060 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2307020 +#define VERSION 2307050 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG @@ -332,7 +332,11 @@ WLED_GLOBAL byte bootPreset _INIT(0); // save preset to load //if false, only one segment spanning the total LEDs is created, //but not on LED settings save if there is more than one segment currently WLED_GLOBAL bool autoSegments _INIT(false); -WLED_GLOBAL bool useGlobalLedBuffer _INIT(true); +#ifdef ESP8266 +WLED_GLOBAL bool useGlobalLedBuffer _INIT(false); // double buffering disabled on ESP8266 +#else +WLED_GLOBAL bool useGlobalLedBuffer _INIT(true); // double buffering enabled on ESP32 +#endif WLED_GLOBAL bool correctWB _INIT(false); // CCT color correction of RGB color WLED_GLOBAL bool cctFromRgb _INIT(false); // CCT is calculated from RGB instead of using seg.cct WLED_GLOBAL bool gammaCorrectCol _INIT(true); // use gamma correction on colors From 196779ffb6eb894e8e6c0be31f172c020caa2052 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 6 Jul 2023 09:54:12 +0200 Subject: [PATCH 32/70] XY: minor bugfix properly handle width=0 OR height=0 --- wled00/FX_2Dfcn.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wled00/FX_2Dfcn.cpp b/wled00/FX_2Dfcn.cpp index c9653e109..0b4c9b26c 100644 --- a/wled00/FX_2Dfcn.cpp +++ b/wled00/FX_2Dfcn.cpp @@ -191,7 +191,8 @@ uint32_t WS2812FX::getPixelColorXY(uint16_t x, uint16_t y) { uint16_t /*IRAM_ATTR*/ Segment::XY(uint16_t x, uint16_t y) { uint16_t width = virtualWidth(); // segment width in logical pixels uint16_t height = virtualHeight(); // segment height in logical pixels - if ((width == 0) || (height == 0)) return 0; // softhack007 avoid div/0 + if (width == 0) return 0; // softhack007 avoid div/0 + if (height == 0) return (x%width); // softhack007 avoid div/0 return (x%width) + (y%height) * width; } From 788a276616bad2c50891bc3b33d896a8814d4452 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 6 Jul 2023 19:06:31 +0200 Subject: [PATCH 33/70] fix power calculation for NeoPixelBusLg power estimation results from estimateCurrentAndLimitBri() were too low (example: estimated 1.3Amp, measured 1.6Amp). This change corrects the power calculation. Due to the changed behavior of getPixelColor, powerSum must be used as-is, not scaled down again by brightness. --- wled00/FX_fcn.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 51ef8caf0..fa3b7e6d9 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1223,7 +1223,8 @@ void WS2812FX::estimateCurrentAndLimitBri() { } uint32_t powerSum0 = powerSum; - powerSum *= _brightness; + //powerSum *= _brightness; // for NPBrightnessBus + powerSum *= 255; // no need to scale down powerSum - NPB-LG getPixelColor returns colors scaled down by brightness if (powerSum > powerBudget) //scale brightness down to stay in current limit { @@ -1232,9 +1233,10 @@ void WS2812FX::estimateCurrentAndLimitBri() { uint8_t scaleB = (scaleI > 255) ? 255 : scaleI; uint8_t newBri = scale8(_brightness, scaleB); // to keep brightness uniform, sets virtual busses too - softhack007: apply reductions immediately - if (scaleB < 255) busses.setBrightness(scaleB, true); // NPB-LG has already applied brightness, so its suffifient to post-apply scaling + if (scaleB < 255) busses.setBrightness(scaleB, true); // NPB-LG has already applied brightness, so its suffifient to post-apply scaling ==> use scaleB instead of newBri busses.setBrightness(newBri, false); // set new brightness for next frame - currentMilliamps = (powerSum0 * newBri) / puPerMilliamp; + //currentMilliamps = (powerSum0 * newBri) / puPerMilliamp; // for NPBrightnessBus + currentMilliamps = (powerSum0 * scaleB) / puPerMilliamp; // for NPBus-LG } else { currentMilliamps = powerSum / puPerMilliamp; busses.setBrightness(_brightness, false); // set new brightness for next frame From fbbf2d5eb3356b4d4f94b9de397d6b5a09627fca Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 6 Jul 2023 19:07:09 +0200 Subject: [PATCH 34/70] 2DPlasmaball - optimize out float --- wled00/FX.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 9baee13cd..8c7bf38d3 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -5274,7 +5274,7 @@ uint16_t mode_2DPlasmaball(void) { // By: Stepko https://edito SEGMENT.fadeToBlackBy(SEGMENT.custom1>>2); - float t = millis() / (33 - SEGMENT.speed/8); + uint_fast32_t t = (millis() * 8) / (256 - SEGMENT.speed); // optimized to avoid float for (int i = 0; i < cols; i++) { uint16_t thisVal = inoise8(i * 30, t, t); uint16_t thisMax = map(thisVal, 0, 255, 0, cols-1); From 42b247756a47097e2d465c3dffd9c858d0864563 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 6 Jul 2023 19:51:37 +0200 Subject: [PATCH 35/70] blur speedup it seems that SEGMENT.blur() is the main bottleneck for many 2D effects. This change optimizes performance of the function: * avoid to re-write unchanged pixels * early exit when blur_amount == 0 (=nothing to do) * use _fast_ types where possible I've seen up to 20% speedup with this change. --- wled00/FX_2Dfcn.cpp | 35 ++++++++++++++++++++--------------- wled00/FX_fcn.cpp | 19 ++++++++++++------- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/wled00/FX_2Dfcn.cpp b/wled00/FX_2Dfcn.cpp index 0b4c9b26c..778a28f9a 100644 --- a/wled00/FX_2Dfcn.cpp +++ b/wled00/FX_2Dfcn.cpp @@ -306,6 +306,7 @@ void Segment::blendPixelColorXY(uint16_t x, uint16_t y, uint32_t color, uint8_t // Adds the specified color with the existing pixel color perserving color balance. void Segment::addPixelColorXY(int x, int y, uint32_t color, bool fast) { + if (x >= virtualWidth() || y >= virtualHeight() || x<0 || y<0) return; // if pixel would fall out of virtual segment just exit uint32_t col = getPixelColorXY(x,y); uint8_t r = R(col); uint8_t g = G(col); @@ -330,50 +331,54 @@ void Segment::fadePixelColorXY(uint16_t x, uint16_t y, uint8_t fade) { // blurRow: perform a blur on a row of a rectangular matrix void Segment::blurRow(uint16_t row, fract8 blur_amount) { - const uint16_t cols = virtualWidth(); - const uint16_t rows = virtualHeight(); + const uint_fast16_t cols = virtualWidth(); + const uint_fast16_t rows = virtualHeight(); if (row >= rows) return; // blur one row uint8_t keep = 255 - blur_amount; uint8_t seep = blur_amount >> 1; CRGB carryover = CRGB::Black; - for (uint16_t x = 0; x < cols; x++) { + for (uint_fast16_t x = 0; x < cols; x++) { CRGB cur = getPixelColorXY(x, row); + uint32_t before = uint32_t(cur); // remember color before blur CRGB part = cur; part.nscale8(seep); cur.nscale8(keep); cur += carryover; - if (x) { + if (x>0) { CRGB prev = CRGB(getPixelColorXY(x-1, row)) + part; setPixelColorXY(x-1, row, prev); } - setPixelColorXY(x, row, cur); + if (before != uint32_t(cur)) // optimization: only set pixel if color has changed + setPixelColorXY(x, row, cur); carryover = part; } } // blurCol: perform a blur on a column of a rectangular matrix void Segment::blurCol(uint16_t col, fract8 blur_amount) { - const uint16_t cols = virtualWidth(); - const uint16_t rows = virtualHeight(); + const uint_fast16_t cols = virtualWidth(); + const uint_fast16_t rows = virtualHeight(); if (col >= cols) return; // blur one column uint8_t keep = 255 - blur_amount; uint8_t seep = blur_amount >> 1; CRGB carryover = CRGB::Black; - for (uint16_t i = 0; i < rows; i++) { - CRGB cur = getPixelColorXY(col, i); + for (uint_fast16_t y = 0; y < rows; y++) { + CRGB cur = getPixelColorXY(col, y); CRGB part = cur; + uint32_t before = uint32_t(cur); // remember color before blur part.nscale8(seep); cur.nscale8(keep); cur += carryover; - if (i) { - CRGB prev = CRGB(getPixelColorXY(col, i-1)) + part; - setPixelColorXY(col, i-1, prev); + if (y>0) { + CRGB prev = CRGB(getPixelColorXY(col, y-1)) + part; + setPixelColorXY(col, y-1, prev); } - setPixelColorXY(col, i, cur); + if (before != uint32_t(cur)) // optimization: only set pixel if color has changed + setPixelColorXY(col, y, cur); carryover = part; } } @@ -392,8 +397,8 @@ void Segment::box_blur(uint16_t i, bool vertical, fract8 blur_amount) { for (uint16_t j = 0; j < dim1; j++) { uint16_t x = vertical ? i : j; uint16_t y = vertical ? j : i; - uint16_t xp = vertical ? x : x-1; - uint16_t yp = vertical ? y-1 : y; + int16_t xp = vertical ? x : x-1; // "signed" to prevent underflow + int16_t yp = vertical ? y-1 : y; // "signed" to prevent underflow uint16_t xn = vertical ? x : x+1; uint16_t yn = vertical ? y+1 : y; CRGB curr = getPixelColorXY(x,y); diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index fa3b7e6d9..4224f2545 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -887,6 +887,7 @@ void Segment::fade_out(uint8_t rate) { // fades all pixels to black using nscale8() void Segment::fadeToBlackBy(uint8_t fadeBy) { + if (fadeBy == 0) return; // optimization - no scaling to apply const uint16_t cols = is2D() ? virtualWidth() : virtualLength(); const uint16_t rows = virtualHeight(); // will be 1 for 1D @@ -901,23 +902,26 @@ void Segment::fadeToBlackBy(uint8_t fadeBy) { */ void Segment::blur(uint8_t blur_amount) { + if (blur_amount == 0) return; // optimization: 0 means "don't blur" #ifndef WLED_DISABLE_2D if (is2D()) { // compatibility with 2D - const uint16_t cols = virtualWidth(); - const uint16_t rows = virtualHeight(); - for (uint16_t i = 0; i < rows; i++) blurRow(i, blur_amount); // blur all rows - for (uint16_t k = 0; k < cols; k++) blurCol(k, blur_amount); // blur all columns + const uint_fast16_t cols = virtualWidth(); + const uint_fast16_t rows = virtualHeight(); + for (uint_fast16_t i = 0; i < rows; i++) blurRow(i, blur_amount); // blur all rows + for (uint_fast16_t k = 0; k < cols; k++) blurCol(k, blur_amount); // blur all columns return; } #endif uint8_t keep = 255 - blur_amount; uint8_t seep = blur_amount >> 1; CRGB carryover = CRGB::Black; - for(uint16_t i = 0; i < virtualLength(); i++) + uint_fast16_t vlength = virtualLength(); + for(uint_fast16_t i = 0; i < vlength; i++) { CRGB cur = CRGB(getPixelColor(i)); CRGB part = cur; + uint32_t before = uint32_t(cur); // remember color before blur part.nscale8(seep); cur.nscale8(keep); cur += carryover; @@ -926,9 +930,10 @@ void Segment::blur(uint8_t blur_amount) uint8_t r = R(c); uint8_t g = G(c); uint8_t b = B(c); - setPixelColor(i-1, qadd8(r, part.red), qadd8(g, part.green), qadd8(b, part.blue)); + setPixelColor((uint16_t)(i-1), qadd8(r, part.red), qadd8(g, part.green), qadd8(b, part.blue)); } - setPixelColor(i,cur.red, cur.green, cur.blue); + if (before != uint32_t(cur)) // optimization: only set pixel if color has changed + setPixelColor((uint16_t)i,cur.red, cur.green, cur.blue); carryover = part; } } From f437fd6cd699302567d3fca93e98d8496d2b9cba Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Thu, 6 Jul 2023 21:16:29 +0200 Subject: [PATCH 36/70] Code readability. Fix for peek. Loop timing. --- wled00/FX_fcn.cpp | 5 +- wled00/bus_manager.cpp | 60 +++++------ wled00/bus_manager.h | 228 +++++++++++++++-------------------------- wled00/cfg.cpp | 4 +- wled00/json.cpp | 10 +- wled00/led.cpp | 4 +- wled00/wled.cpp | 7 +- wled00/wled.h | 2 +- wled00/ws.cpp | 14 ++- wled00/xml.cpp | 2 +- 10 files changed, 142 insertions(+), 194 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 3c0095925..91ac99805 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1084,10 +1084,7 @@ void WS2812FX::service() { if(nowUp > seg.next_time || _triggered || (doShow && seg.mode == FX_MODE_STATIC)) { if (seg.grouping == 0) seg.grouping = 1; // sanity check -// if (!doShow) { -// busses.setBrightness(_brightness); // bus luminance must be set before FX using setPixelColor() - doShow = true; -// } + doShow = true; uint16_t delay = FRAMETIME; if (!seg.freeze) { //only run effect function if not frozen diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index 24c2ea40a..05197cd17 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -97,32 +97,33 @@ uint8_t *Bus::allocData(size_t size) { } -BusDigital::BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com) : Bus(bc.type, bc.start, bc.autoWhite), _colorOrderMap(com) { +BusDigital::BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com) +: Bus(bc.type, bc.start, bc.autoWhite, bc.count, bc.reversed, (bc.refreshReq || bc.type == TYPE_TM1814)) +, _skip(bc.skipAmount) //sacrificial pixels +, _colorOrder(bc.colorOrder) +, _colorOrderMap(com) +{ if (!IS_DIGITAL(bc.type) || !bc.count) return; if (!pinManager.allocatePin(bc.pins[0], true, PinOwner::BusDigital)) return; _frequencykHz = 0U; _pins[0] = bc.pins[0]; if (IS_2PIN(bc.type)) { if (!pinManager.allocatePin(bc.pins[1], true, PinOwner::BusDigital)) { - cleanup(); return; + cleanup(); + return; } _pins[1] = bc.pins[1]; _frequencykHz = bc.frequency ? bc.frequency : 2000U; // 2MHz clock if undefined } - reversed = bc.reversed; - _needsRefresh = bc.refreshReq || bc.type == TYPE_TM1814; - _skip = bc.skipAmount; //sacrificial pixels - _len = bc.count; - _colorOrder = bc.colorOrder; _iType = PolyBus::getI(bc.type, _pins, nr); if (_iType == I_NONE) return; - if (bc.doubleBuffer && !allocData(_len * (Bus::hasWhite(_type) + 3*Bus::hasRGB(_type)))) return; //warning: hardcoded channel count + if (bc.doubleBuffer && !allocData(bc.count * (Bus::hasWhite(_type) + 3*Bus::hasRGB(_type)))) return; //warning: hardcoded channel count buffering = bc.doubleBuffer; - uint16_t lenToCreate = _len; - if (bc.type == TYPE_WS2812_1CH_X3) lenToCreate = NUM_ICS_WS2812_1CH_3X(_len); // only needs a third of "RGB" LEDs for NeoPixelBus + uint16_t lenToCreate = bc.count; + if (bc.type == TYPE_WS2812_1CH_X3) lenToCreate = NUM_ICS_WS2812_1CH_3X(bc.count); // only needs a third of "RGB" LEDs for NeoPixelBus _busPtr = PolyBus::create(_iType, _pins, lenToCreate + _skip, nr, _frequencykHz); _valid = (_busPtr != nullptr); - DEBUG_PRINTF("%successfully inited strip %u (len %u) with type %u and pins %u,%u (itype %u)\n", _valid?"S":"Uns", nr, _len, bc.type, _pins[0],_pins[1],_iType); + DEBUG_PRINTF("%successfully inited strip %u (len %u) with type %u and pins %u,%u (itype %u)\n", _valid?"S":"Uns", nr, bc.count, bc.type, _pins[0], _pins[1], _iType); } void BusDigital::show() { @@ -149,8 +150,8 @@ void BusDigital::show() { c = RGBW32(_data[offset],_data[offset+1],_data[offset+2],(Bus::hasWhite(_type)?_data[offset+3]:0)); } uint16_t pix = i; - if (reversed) pix = _len - pix -1; - else pix += _skip; + if (_reversed) pix = _len - pix -1; + else pix += _skip; PolyBus::setPixelColor(_busPtr, _iType, pix, c, co); } } else { @@ -206,8 +207,8 @@ void IRAM_ATTR BusDigital::setPixelColor(uint16_t pix, uint32_t c) { } if (Bus::hasWhite(_type)) _data[offset] = W(c); } else { - if (reversed) pix = _len - pix -1; - else pix += _skip; + if (_reversed) pix = _len - pix -1; + else pix += _skip; uint8_t co = _colorOrderMap.getPixelColorOrder(pix+_start, _colorOrder); if (_type == TYPE_WS2812_1CH_X3) { // map to correct IC, each controls 3 LEDs uint16_t pOld = pix; @@ -236,8 +237,8 @@ uint32_t BusDigital::getPixelColor(uint16_t pix) { } return c; } else { - if (reversed) pix = _len - pix -1; - else pix += _skip; + if (_reversed) pix = _len - pix -1; + else pix += _skip; uint8_t co = _colorOrderMap.getPixelColorOrder(pix+_start, _colorOrder); if (_type == TYPE_WS2812_1CH_X3) { // map to correct IC, each controls 3 LEDs uint16_t pOld = pix; @@ -283,8 +284,9 @@ void BusDigital::cleanup() { } -BusPwm::BusPwm(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWhite) { - _valid = false; +BusPwm::BusPwm(BusConfig &bc) +: Bus(bc.type, bc.start, bc.autoWhite, 1, bc.reversed) +{ if (!IS_PWM(bc.type)) return; uint8_t numPins = NUM_PWM_PINS(bc.type); _frequency = bc.frequency ? bc.frequency : WLED_PWM_FREQ; @@ -312,7 +314,6 @@ BusPwm::BusPwm(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWhite) { ledcAttachPin(_pins[i], _ledcStart + i); #endif } - reversed = bc.reversed; _data = _pwmdata; // avoid malloc() and use stack _valid = true; } @@ -381,7 +382,7 @@ void BusPwm::show() { uint8_t numPins = NUM_PWM_PINS(_type); for (uint8_t i = 0; i < numPins; i++) { uint8_t scaled = (_data[i] * _bri) / 255; - if (reversed) scaled = 255 - scaled; + if (_reversed) scaled = 255 - scaled; #ifdef ESP8266 analogWrite(_pins[i], scaled); #else @@ -416,8 +417,10 @@ void BusPwm::deallocatePins() { } -BusOnOff::BusOnOff(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWhite) { - _valid = false; +BusOnOff::BusOnOff(BusConfig &bc) +: Bus(bc.type, bc.start, bc.autoWhite, 1, bc.reversed) +, _onoffdata(0) +{ if (bc.type != TYPE_ONOFF) return; uint8_t currentPin = bc.pins[0]; @@ -426,7 +429,6 @@ BusOnOff::BusOnOff(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWhite) { } _pin = currentPin; //store only after allocatePin() succeeds pinMode(_pin, OUTPUT); - reversed = bc.reversed; _data = &_onoffdata; // avoid malloc() and use stack _valid = true; } @@ -448,7 +450,7 @@ uint32_t BusOnOff::getPixelColor(uint16_t pix) { void BusOnOff::show() { if (!_valid) return; - digitalWrite(_pin, reversed ? !(bool)_data[0] : (bool)_data[0]); + digitalWrite(_pin, _reversed ? !(bool)_data[0] : (bool)_data[0]); } uint8_t BusOnOff::getPins(uint8_t* pinArray) { @@ -458,8 +460,10 @@ uint8_t BusOnOff::getPins(uint8_t* pinArray) { } -BusNetwork::BusNetwork(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWhite) { - _valid = false; +BusNetwork::BusNetwork(BusConfig &bc) +: Bus(bc.type, bc.start, bc.autoWhite, bc.count) +, _broadcastLock(false) +{ switch (bc.type) { case TYPE_NET_ARTNET_RGB: _rgbw = false; @@ -475,9 +479,7 @@ BusNetwork::BusNetwork(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWhite) { break; } _UDPchannels = _rgbw ? 4 : 3; - _len = bc.count; _client = IPAddress(bc.pins[0],bc.pins[1],bc.pins[2],bc.pins[3]); - _broadcastLock = false; _valid = (allocData(_len * _UDPchannels) != nullptr); } diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index 7f138cc05..8ca1bcc29 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -35,15 +35,24 @@ struct BusConfig { uint8_t pins[5] = {LEDPIN, 255, 255, 255, 255}; uint16_t frequency; bool doubleBuffer; - BusConfig(uint8_t busType, uint8_t* ppins, uint16_t pstart, uint16_t len = 1, uint8_t pcolorOrder = COL_ORDER_GRB, bool rev = false, uint8_t skip = 0, byte aw=RGBW_MODE_MANUAL_ONLY, uint16_t clock_kHz=0U, bool dblBfr=false) { + + BusConfig(uint8_t busType, uint8_t* ppins, uint16_t pstart, uint16_t len = 1, uint8_t pcolorOrder = COL_ORDER_GRB, bool rev = false, uint8_t skip = 0, byte aw=RGBW_MODE_MANUAL_ONLY, uint16_t clock_kHz=0U, bool dblBfr=false) + : count(len) + , start(pstart) + , colorOrder(pcolorOrder) + , reversed(rev) + , skipAmount(skip) + , autoWhite(aw) + , frequency(clock_kHz) + , doubleBuffer(dblBfr) + { refreshReq = (bool) GET_BIT(busType,7); type = busType & 0x7F; // bit 7 may be/is hacked to include refresh info (1=refresh in off state, 0=no refresh) - count = len; start = pstart; colorOrder = pcolorOrder; reversed = rev; skipAmount = skip; autoWhite = aw; frequency = clock_kHz; doubleBuffer = dblBfr; - uint8_t nPins = 1; + size_t nPins = 1; if (type >= TYPE_NET_DDP_RGB && type < 96) nPins = 4; //virtual network bus. 4 "pins" store IP address else if (type > 47) nPins = 2; else if (type > 40 && type < 46) nPins = NUM_PWM_PINS(type); - for (uint8_t i = 0; i < nPins; i++) pins[i] = ppins[i]; + for (size_t i = 0; i < nPins; i++) pins[i] = ppins[i]; } //validates start and length and extends total if needed @@ -70,9 +79,7 @@ struct ColorOrderMapEntry { struct ColorOrderMap { void add(uint16_t start, uint16_t len, uint8_t colorOrder); - uint8_t count() const { - return _count; - } + uint8_t count() const { return _count; } void reset() { _count = 0; @@ -97,38 +104,41 @@ struct ColorOrderMap { //parent class of BusDigital, BusPwm, and BusNetwork class Bus { public: - Bus(uint8_t type, uint16_t start, uint8_t aw) - : _bri(255) - , _len(1) - , _data(nullptr) // keep data access consistent across all types of buses + Bus(uint8_t type, uint16_t start, uint8_t aw, uint16_t len = 1, bool reversed = false, bool refresh = false) + : _type(type) + , _bri(255) + , _start(start) + , _len(len) + , _reversed(reversed) , _valid(false) - , _needsRefresh(false) + , _needsRefresh(refresh) + , _data(nullptr) // keep data access consistent across all types of buses { - _type = type; - _start = start; _autoWhiteMode = Bus::hasWhite(_type) ? aw : RGBW_MODE_MANUAL_ONLY; }; virtual ~Bus() {} //throw the bus under the bus virtual void show() = 0; - virtual bool canShow() { return true; } - virtual void setStatusPixel(uint32_t c) {} + virtual bool canShow() { return true; } + virtual void setStatusPixel(uint32_t c) {} virtual void setPixelColor(uint16_t pix, uint32_t c) = 0; virtual uint32_t getPixelColor(uint16_t pix) { return 0; } - virtual void setBrightness(uint8_t b) { _bri = b; }; + virtual void setBrightness(uint8_t b) { _bri = b; }; virtual void cleanup() = 0; - virtual uint8_t getPins(uint8_t* pinArray) { return 0; } - virtual uint16_t getLength() { return _len; } - virtual void setColorOrder() {} - virtual uint8_t getColorOrder() { return COL_ORDER_RGB; } - virtual uint8_t skippedLeds() { return 0; } - virtual uint16_t getFrequency() { return 0U; } - inline uint16_t getStart() { return _start; } - inline void setStart(uint16_t start) { _start = start; } - inline uint8_t getType() { return _type; } - inline bool isOk() { return _valid; } - inline bool isOffRefreshRequired() { return _needsRefresh; } + virtual uint8_t getPins(uint8_t* pinArray) { return 0; } + virtual uint16_t getLength() { return _len; } + virtual void setColorOrder() {} + virtual uint8_t getColorOrder() { return COL_ORDER_RGB; } + virtual uint8_t skippedLeds() { return 0; } + virtual uint16_t getFrequency() { return 0U; } + inline void setReversed(bool reversed) { _reversed = reversed; } + inline uint16_t getStart() { return _start; } + inline void setStart(uint16_t start) { _start = start; } + inline uint8_t getType() { return _type; } + inline bool isOk() { return _valid; } + inline bool isReversed() { return _reversed; } + inline bool isOffRefreshRequired() { return _needsRefresh; } bool containsPixel(uint16_t pix) { return pix >= _start && pix < _start+_len; } virtual bool hasRGB(void) { return Bus::hasRGB(_type); } @@ -165,17 +175,16 @@ class Bus { inline static void setGlobalAWMode(uint8_t m) { if (m < 5) _gAWM = m; else _gAWM = AW_GLOBAL_DISABLED; } inline static uint8_t getGlobalAWMode() { return _gAWM; } - bool reversed = false; - protected: uint8_t _type; uint8_t _bri; uint16_t _start; uint16_t _len; - uint8_t *_data; + bool _reversed; bool _valid; bool _needsRefresh; uint8_t _autoWhiteMode; + uint8_t *_data; static uint8_t _gAWM; static int16_t _cct; static uint8_t _cctBlend; @@ -189,54 +198,31 @@ class Bus { class BusDigital : public Bus { public: BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com); + ~BusDigital() { cleanup(); } - inline void show(); - + void show(); bool canShow(); - void setBrightness(uint8_t b); - void setStatusPixel(uint32_t c); - void setPixelColor(uint16_t pix, uint32_t c); - - uint32_t getPixelColor(uint16_t pix); - - uint8_t getColorOrder() { - return _colorOrder; - } - - uint16_t getLength() { - return _len - _skip; - } - - uint8_t getPins(uint8_t* pinArray); - void setColorOrder(uint8_t colorOrder); - - uint8_t skippedLeds() { - return _skip; - } - - uint16_t getFrequency() { return _frequencykHz; } - + uint32_t getPixelColor(uint16_t pix); + uint8_t getColorOrder() { return _colorOrder; } + uint8_t getPins(uint8_t* pinArray); + uint8_t skippedLeds() { return _skip; } + uint16_t getFrequency() { return _frequencykHz; } void reinit(); - void cleanup(); - ~BusDigital() { - cleanup(); - } - private: - uint8_t _colorOrder = COL_ORDER_GRB; - uint8_t _pins[2] = {255, 255}; - uint8_t _iType = 0; //I_NONE; - uint8_t _skip = 0; - uint16_t _frequencykHz = 0U; - void * _busPtr = nullptr; + uint8_t _skip; + uint8_t _colorOrder; + uint8_t _pins[2]; + uint8_t _iType; + uint16_t _frequencykHz; + void * _busPtr; const ColorOrderMap &_colorOrderMap; - bool buffering = false; // temporary until we figure out why comparison "_data != nullptr" causes severe FPS drop + bool buffering; // temporary until we figure out why comparison "_data != nullptr" causes severe FPS drop inline uint32_t restoreColorLossy(uint32_t c, uint_fast8_t _restaurationBri) { if (_bri == 255) return c; @@ -255,33 +241,22 @@ class BusDigital : public Bus { class BusPwm : public Bus { public: BusPwm(BusConfig &bc); + ~BusPwm() { cleanup(); } void setPixelColor(uint16_t pix, uint32_t c); - - //does no index check - uint32_t getPixelColor(uint16_t pix); - - void show(); - - uint8_t getPins(uint8_t* pinArray); - + uint32_t getPixelColor(uint16_t pix); //does no index check + uint8_t getPins(uint8_t* pinArray); uint16_t getFrequency() { return _frequency; } - - void cleanup() { - deallocatePins(); - } - - ~BusPwm() { - cleanup(); - } + void show(); + void cleanup() { deallocatePins(); } private: - uint8_t _pins[5] = {255, 255, 255, 255, 255}; - uint8_t _pwmdata[5] = {0}; + uint8_t _pins[5]; + uint8_t _pwmdata[5]; #ifdef ARDUINO_ARCH_ESP32 - uint8_t _ledcStart = 255; + uint8_t _ledcStart; #endif - uint16_t _frequency = 0U; + uint16_t _frequency; void deallocatePins(); }; @@ -290,59 +265,34 @@ class BusPwm : public Bus { class BusOnOff : public Bus { public: BusOnOff(BusConfig &bc); + ~BusOnOff() { cleanup(); } void setPixelColor(uint16_t pix, uint32_t c); - uint32_t getPixelColor(uint16_t pix); - + uint8_t getPins(uint8_t* pinArray); void show(); - - uint8_t getPins(uint8_t* pinArray); - - void cleanup() { - pinManager.deallocatePin(_pin, PinOwner::BusOnOff); - } - - ~BusOnOff() { - cleanup(); - } + void cleanup() { pinManager.deallocatePin(_pin, PinOwner::BusOnOff); } private: - uint8_t _pin = 255; - uint8_t _onoffdata = 0; + uint8_t _pin; + uint8_t _onoffdata; }; class BusNetwork : public Bus { public: BusNetwork(BusConfig &bc); + ~BusNetwork() { cleanup(); } - bool hasRGB() { return true; } + bool hasRGB() { return true; } bool hasWhite() { return _rgbw; } - + bool canShow() { return !_broadcastLock; } // this should be a return value from UDP routine if it is still sending data out void setPixelColor(uint16_t pix, uint32_t c); - uint32_t getPixelColor(uint16_t pix); - + uint8_t getPins(uint8_t* pinArray); void show(); - - bool canShow() { - // this should be a return value from UDP routine if it is still sending data out - return !_broadcastLock; - } - - uint8_t getPins(uint8_t* pinArray); - - uint16_t getLength() { - return _len; - } - void cleanup(); - ~BusNetwork() { - cleanup(); - } - private: IPAddress _client; uint8_t _UDPtype; @@ -354,7 +304,7 @@ class BusNetwork : public Bus { class BusManager { public: - BusManager() {}; + BusManager() : numBusses(0) {}; //utility to get the approx. memory usage of a given BusConfig static uint32_t memUsage(BusConfig &bc); @@ -365,38 +315,24 @@ class BusManager { void removeAll(); void show(); - - void setStatusPixel(uint32_t c); - - void setPixelColor(uint16_t pix, uint32_t c); - - void setBrightness(uint8_t b); - - void setSegmentCCT(int16_t cct, bool allowWBCorrection = false); - - uint32_t getPixelColor(uint16_t pix); - bool canAllShow(); + void setStatusPixel(uint32_t c); + void setPixelColor(uint16_t pix, uint32_t c); + void setBrightness(uint8_t b); + void setSegmentCCT(int16_t cct, bool allowWBCorrection = false); + uint32_t getPixelColor(uint16_t pix); Bus* getBus(uint8_t busNr); //semi-duplicate of strip.getLengthTotal() (though that just returns strip._length, calculated in finalizeInit()) uint16_t getTotalLength(); + inline uint8_t getNumBusses() const { return numBusses; } - inline void updateColorOrderMap(const ColorOrderMap &com) { - memcpy(&colorOrderMap, &com, sizeof(ColorOrderMap)); - } - - inline const ColorOrderMap& getColorOrderMap() const { - return colorOrderMap; - } - - inline uint8_t getNumBusses() { - return numBusses; - } + inline void updateColorOrderMap(const ColorOrderMap &com) { memcpy(&colorOrderMap, &com, sizeof(ColorOrderMap)); } + inline const ColorOrderMap& getColorOrderMap() const { return colorOrderMap; } private: - uint8_t numBusses = 0; + uint8_t numBusses; Bus* busses[WLED_MAX_BUSSES+WLED_MIN_VIRTUAL_BUSSES]; ColorOrderMap colorOrderMap; diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index 6730fe5fe..2f2ebc024 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -178,7 +178,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { doInitBusses = busesChanged; // finalization done in beginStrip() } - if (hw_led["rev"]) busses.getBus(0)->reversed = true; //set 0.11 global reversed setting for first bus + if (hw_led["rev"]) busses.getBus(0)->setReversed(true); //set 0.11 global reversed setting for first bus // read color order map configuration JsonArray hw_com = hw[F("com")]; @@ -746,7 +746,7 @@ void serializeConfig() { uint8_t nPins = bus->getPins(pins); for (uint8_t i = 0; i < nPins; i++) ins_pin.add(pins[i]); ins[F("order")] = bus->getColorOrder(); - ins["rev"] = bus->reversed; + ins["rev"] = bus->isReversed(); ins[F("skip")] = bus->skippedLeds(); ins["type"] = bus->getType() & 0x7F; ins["ref"] = bus->isOffRefreshRequired(); diff --git a/wled00/json.cpp b/wled00/json.cpp index 06444cc33..a18fcbdbf 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -1089,9 +1089,13 @@ bool serveLiveLeds(AsyncWebServerRequest* request, uint32_t wsClient) for (size_t i= 0; i < used; i += n) { uint32_t c = strip.getPixelColor(i); - uint8_t r = qadd8(W(c), R(c)); //add white channel to RGB channels as a simple RGBW -> RGB map - uint8_t g = qadd8(W(c), G(c)); - uint8_t b = qadd8(W(c), B(c)); + uint8_t r = useGlobalLedBuffer ? scale8(R(c), strip.getBrightness()) : R(c); + uint8_t g = useGlobalLedBuffer ? scale8(G(c), strip.getBrightness()) : G(c); + uint8_t b = useGlobalLedBuffer ? scale8(B(c), strip.getBrightness()) : B(c); + uint8_t w = useGlobalLedBuffer ? scale8(W(c), strip.getBrightness()) : W(c); + r = qadd8(w, r); //R, add white channel to RGB channels as a simple RGBW -> RGB map + g = qadd8(w, g); //G + b = qadd8(w, b); //B olen += sprintf(obuf + olen, "\"%06X\",", RGBW32(r,g,b,0)); } olen -= 1; diff --git a/wled00/led.cpp b/wled00/led.cpp index 4c5af70d6..7901995f0 100644 --- a/wled00/led.cpp +++ b/wled00/led.cpp @@ -194,7 +194,7 @@ void handleTransitions() applyFinalBri(); return; } - if (tper - tperLast < 0.004) return; + if (tper - tperLast < 0.004f) return; tperLast = tper; briT = briOld + ((bri - briOld) * tper); @@ -204,7 +204,7 @@ void handleTransitions() // legacy method, applies values from col, effectCurrent, ... to selected segments -void colorUpdated(byte callMode){ +void colorUpdated(byte callMode) { applyValuesToSelectedSegs(); stateUpdated(callMode); } diff --git a/wled00/wled.cpp b/wled00/wled.cpp index 83a79358d..7da92937d 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -35,6 +35,10 @@ void WLED::reset() void WLED::loop() { #ifdef WLED_DEBUG + static unsigned long lastRun = 0; + size_t loopDelay = (millis() - lastRun); + if (lastRun == 0) loopDelay=0; // startup - don't have valid data from last run. + if (loopDelay > 2) DEBUG_PRINTF("Loop delayed more than %dms.\n", loopDelay); static unsigned long maxUsermodMillis = 0; static size_t avgUsermodMillis = 0; static unsigned long maxStripMillis = 0; @@ -146,7 +150,7 @@ void WLED::loop() //LED settings have been saved, re-init busses //This code block causes severe FPS drop on ESP32 with the original "if (busConfigs[0] != nullptr)" conditional. Investigate! - if (busConfigs[0] != nullptr) { + if (doInitBusses) { doInitBusses = false; DEBUG_PRINTLN(F("Re-init busses.")); bool aligned = strip.checkSegmentAlignment(); //see if old segments match old bus(ses) @@ -217,6 +221,7 @@ void WLED::loop() debugTime = millis(); } loops++; + lastRun = millis(); #endif // WLED_DEBUG toki.resetTick(); diff --git a/wled00/wled.h b/wled00/wled.h index 28b11a060..1ef50ad93 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2307050 +#define VERSION 2307060 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG diff --git a/wled00/ws.cpp b/wled00/ws.cpp index 2a4d0b96b..e295fe8e0 100644 --- a/wled00/ws.cpp +++ b/wled00/ws.cpp @@ -178,11 +178,11 @@ bool sendLiveLedsWs(uint32_t wsClient) buffer[1] = 2; //version buffer[2] = Segment::maxWidth; buffer[3] = Segment::maxHeight; - if (Segment::maxWidth * Segment::maxHeight > MAX_LIVE_LEDS_WS*4) { + if (used > MAX_LIVE_LEDS_WS*4) { buffer[2] = Segment::maxWidth/4; buffer[3] = Segment::maxHeight/4; skipLines = 3; - } else if (Segment::maxWidth * Segment::maxHeight > MAX_LIVE_LEDS_WS) { + } else if (used > MAX_LIVE_LEDS_WS) { buffer[2] = Segment::maxWidth/2; buffer[3] = Segment::maxHeight/2; skipLines = 1; @@ -198,9 +198,13 @@ bool sendLiveLedsWs(uint32_t wsClient) } #endif uint32_t c = strip.getPixelColor(i); - buffer[pos++] = qadd8(W(c), R(c)); //R, add white channel to RGB channels as a simple RGBW -> RGB map - buffer[pos++] = qadd8(W(c), G(c)); //G - buffer[pos++] = qadd8(W(c), B(c)); //B + uint8_t r = useGlobalLedBuffer ? scale8(R(c), strip.getBrightness()) : R(c); + uint8_t g = useGlobalLedBuffer ? scale8(G(c), strip.getBrightness()) : G(c); + uint8_t b = useGlobalLedBuffer ? scale8(B(c), strip.getBrightness()) : B(c); + uint8_t w = useGlobalLedBuffer ? scale8(W(c), strip.getBrightness()) : W(c); + buffer[pos++] = qadd8(w, r); //R, add white channel to RGB channels as a simple RGBW -> RGB map + buffer[pos++] = qadd8(w, g); //G + buffer[pos++] = qadd8(w, b); //B } wsc->binary(wsBuf); diff --git a/wled00/xml.cpp b/wled00/xml.cpp index 12fc97172..fff581439 100644 --- a/wled00/xml.cpp +++ b/wled00/xml.cpp @@ -431,7 +431,7 @@ void getSettingsJS(byte subPage, char* dest) sappend('v',lt,bus->getType()); sappend('v',co,bus->getColorOrder() & 0x0F); sappend('v',ls,bus->getStart()); - sappend('c',cv,bus->reversed); + sappend('c',cv,bus->isReversed()); sappend('v',sl,bus->skippedLeds()); sappend('c',rf,bus->isOffRefreshRequired()); sappend('v',aw,bus->getAutoWhiteMode()); From 2ad3ab7f0da145bc076b2a4053cb0c3b6ef0563f Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Thu, 6 Jul 2023 22:48:13 +0200 Subject: [PATCH 37/70] Correct scaling for peek. --- wled00/json.cpp | 14 +++++++------- wled00/ws.cpp | 17 +++++++++-------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/wled00/json.cpp b/wled00/json.cpp index a18fcbdbf..d48a54a2a 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -1089,13 +1089,13 @@ bool serveLiveLeds(AsyncWebServerRequest* request, uint32_t wsClient) for (size_t i= 0; i < used; i += n) { uint32_t c = strip.getPixelColor(i); - uint8_t r = useGlobalLedBuffer ? scale8(R(c), strip.getBrightness()) : R(c); - uint8_t g = useGlobalLedBuffer ? scale8(G(c), strip.getBrightness()) : G(c); - uint8_t b = useGlobalLedBuffer ? scale8(B(c), strip.getBrightness()) : B(c); - uint8_t w = useGlobalLedBuffer ? scale8(W(c), strip.getBrightness()) : W(c); - r = qadd8(w, r); //R, add white channel to RGB channels as a simple RGBW -> RGB map - g = qadd8(w, g); //G - b = qadd8(w, b); //B + uint8_t r = R(c); + uint8_t g = G(c); + uint8_t b = B(c); + uint8_t w = W(c); + r = scale8(qadd8(w, r), strip.getBrightness()); //R, add white channel to RGB channels as a simple RGBW -> RGB map + g = scale8(qadd8(w, g), strip.getBrightness()); //G + b = scale8(qadd8(w, b), strip.getBrightness()); //B olen += sprintf(obuf + olen, "\"%06X\",", RGBW32(r,g,b,0)); } olen -= 1; diff --git a/wled00/ws.cpp b/wled00/ws.cpp index e295fe8e0..49780d026 100644 --- a/wled00/ws.cpp +++ b/wled00/ws.cpp @@ -166,14 +166,15 @@ bool sendLiveLedsWs(uint32_t wsClient) size_t n = ((used -1)/MAX_LIVE_LEDS_WS) +1; //only serve every n'th LED if count over MAX_LIVE_LEDS_WS size_t pos = (strip.isMatrix ? 4 : 2); // start of data size_t bufSize = pos + (used/n)*3; - size_t skipLines = 0; AsyncWebSocketMessageBuffer * wsBuf = ws.makeBuffer(bufSize); if (!wsBuf) return false; //out of memory uint8_t* buffer = wsBuf->get(); buffer[0] = 'L'; buffer[1] = 1; //version + #ifndef WLED_DISABLE_2D + size_t skipLines = 0; if (strip.isMatrix) { buffer[1] = 2; //version buffer[2] = Segment::maxWidth; @@ -198,13 +199,13 @@ bool sendLiveLedsWs(uint32_t wsClient) } #endif uint32_t c = strip.getPixelColor(i); - uint8_t r = useGlobalLedBuffer ? scale8(R(c), strip.getBrightness()) : R(c); - uint8_t g = useGlobalLedBuffer ? scale8(G(c), strip.getBrightness()) : G(c); - uint8_t b = useGlobalLedBuffer ? scale8(B(c), strip.getBrightness()) : B(c); - uint8_t w = useGlobalLedBuffer ? scale8(W(c), strip.getBrightness()) : W(c); - buffer[pos++] = qadd8(w, r); //R, add white channel to RGB channels as a simple RGBW -> RGB map - buffer[pos++] = qadd8(w, g); //G - buffer[pos++] = qadd8(w, b); //B + uint8_t r = R(c); + uint8_t g = G(c); + uint8_t b = B(c); + uint8_t w = W(c); + buffer[pos++] = scale8(qadd8(w, r), strip.getBrightness()); //R, add white channel to RGB channels as a simple RGBW -> RGB map + buffer[pos++] = scale8(qadd8(w, g), strip.getBrightness()); //G + buffer[pos++] = scale8(qadd8(w, b), strip.getBrightness()); //B } wsc->binary(wsBuf); From 6267d11e513620cd165913ec3d96782bd85f849b Mon Sep 17 00:00:00 2001 From: cschwinne Date: Sun, 9 Jul 2023 12:32:28 +0200 Subject: [PATCH 38/70] Fix compilation and ABL scaling --- wled00/FX_fcn.cpp | 16 +++++++--------- wled00/bus_manager.cpp | 7 ++++--- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 6759d91c2..b76844231 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1178,7 +1178,7 @@ uint8_t WS2812FX::estimateCurrentAndLimitBri() { powerBudget = 0; } - uint32_t powerSum = 0; + uint32_t powerSum = 0; // could overflow if more than 22K LEDs (uint32_t MAX / 195075 PU per LED) for (uint_fast8_t bNum = 0; bNum < busses.getNumBusses(); bNum++) { Bus *bus = busses.getBus(bNum); @@ -1186,14 +1186,9 @@ uint8_t WS2812FX::estimateCurrentAndLimitBri() { uint16_t len = bus->getLength(); uint32_t busPowerSum = 0; for (uint_fast16_t i = 0; i < len; i++) { //sum up the usage of each LED - uint32_t c = bus->getPixelColor(i); + uint32_t c = bus->getPixelColor(i); // always returns original or restored color without brightness scaling byte r = R(c), g = G(c), b = B(c), w = W(c); - if (useGlobalLedBuffer) { // TODO this should only apply for digital bus typpes - r = scale8(r, _brightness); - g = scale8(g, _brightness); - b = scale8(b, _brightness); - w = scale8(w, _brightness); - } + if(useWackyWS2815PowerModel) { //ignore white component on WS2815 power calculation busPowerSum += (MAX(MAX(r,g),b)) * 3; } else { @@ -1209,13 +1204,16 @@ uint8_t WS2812FX::estimateCurrentAndLimitBri() { } uint8_t newBri = _brightness; + uint32_t powerSumUnscaled = powerSum; + powerSum *= _brightness; + if (powerSum > powerBudget) { //scale brightness down to stay in current limit float scale = (float)powerBudget / (float)powerSum; uint16_t scaleI = scale * 255; uint8_t scaleB = (scaleI > 255) ? 255 : scaleI; newBri = scale8(_brightness, scaleB); } - currentMilliamps = (powerSum * newBri) / puPerMilliamp; + currentMilliamps = (powerSumUnscaled * newBri) / puPerMilliamp; currentMilliamps += MA_FOR_ESP; //add power of ESP back to estimate currentMilliamps += pLen; //add standby power back to estimate return newBri; diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index 5bd8fec6e..ed1816eaf 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -174,7 +174,7 @@ bool BusDigital::canShow() { return PolyBus::canShow(_busPtr, _iType); } -void BusDigital::setBrightness(uint8_t b, bool immediate) { +void BusDigital::setBrightness(uint8_t b) { //Fix for turning off onboard LED breaking bus #ifdef LED_BUILTIN if (_bri == 0 && b > 0) { @@ -224,6 +224,7 @@ void IRAM_ATTR BusDigital::setPixelColor(uint16_t pix, uint32_t c) { } } +// returns original color if global buffering is enabled, else returns lossly restored color from bus uint32_t BusDigital::getPixelColor(uint16_t pix) { if (!_valid) return 0; if (buffering) { // should be _data != nullptr, but that causes ~20% FPS drop @@ -587,9 +588,9 @@ void IRAM_ATTR BusManager::setPixelColor(uint16_t pix, uint32_t c) { } } -void BusManager::setBrightness(uint8_t b, bool immediate) { +void BusManager::setBrightness(uint8_t b) { for (uint8_t i = 0; i < numBusses; i++) { - busses[i]->setBrightness(b, immediate); + busses[i]->setBrightness(b); } } From fa6070c6804d9988abb689b67dc9c8cdf74976db Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Wed, 12 Jul 2023 20:52:34 +0200 Subject: [PATCH 39/70] Multiple updates: - additional debug timings - removed local leds[] buffer - async segment bounds change (crashes seen otherwise) - added isActive() check to Segment drawing methods - ABL simplification - palette option for Black hole (FX) - (possible) crash mitigation is Segment handling (rapid preset changes) --- wled00/FX.cpp | 51 ++-------- wled00/FX.h | 36 +++---- wled00/FX_2Dfcn.cpp | 30 ++++-- wled00/FX_fcn.cpp | 217 ++++++++++++++++++++++------------------- wled00/bus_manager.cpp | 13 --- wled00/json.cpp | 11 ++- wled00/wled.cpp | 66 ++++++++----- wled00/wled.h | 4 +- 8 files changed, 210 insertions(+), 218 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index c0b39c18e..7bcd93958 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -606,7 +606,6 @@ static const char _data_FX_MODE_TWINKLE[] PROGMEM = "Twinkle@!,!;!,!;!;;m12=0"; uint16_t dissolve(uint32_t color) { //bool wa = (SEGCOLOR(1) != 0 && strip.getBrightness() < 255); //workaround, can't compare getPixel to color if not full brightness if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); //lossless getPixelColor() SEGMENT.fill(SEGCOLOR(1)); } @@ -1205,7 +1204,6 @@ uint16_t mode_fireworks() { const uint16_t height = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); //lossless getPixelColor() SEGMENT.fill(SEGCOLOR(1)); SEGENV.aux0 = UINT16_MAX; SEGENV.aux1 = UINT16_MAX; @@ -1904,7 +1902,6 @@ static const char _data_FX_MODE_PRIDE_2015[] PROGMEM = "Pride 2015@!;;"; uint16_t mode_juggle(void) { if (SEGLEN == 1) return mode_static(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); //lossless getPixelColor() SEGMENT.fill(BLACK); } @@ -4585,7 +4582,6 @@ uint16_t mode_2DBlackHole(void) { // By: Stepko https://editor.soulma // initialize on first call if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -4595,22 +4591,22 @@ uint16_t mode_2DBlackHole(void) { // By: Stepko https://editor.soulma for (size_t i = 0; i < 8; i++) { x = beatsin8(SEGMENT.custom1>>3, 0, cols - 1, 0, ((i % 2) ? 128 : 0) + t * i); y = beatsin8(SEGMENT.intensity>>3, 0, rows - 1, 0, ((i % 2) ? 192 : 64) + t * i); - SEGMENT.addPixelColorXY(x, y, CHSV(i*32, 255, 255)); + SEGMENT.addPixelColorXY(x, y, SEGMENT.color_from_palette(i*32, false, PALETTE_SOLID_WRAP, SEGMENT.check1?0:255)); } // inner stars for (size_t i = 0; i < 4; i++) { x = beatsin8(SEGMENT.custom2>>3, cols/4, cols - 1 - cols/4, 0, ((i % 2) ? 128 : 0) + t * i); y = beatsin8(SEGMENT.custom3 , rows/4, rows - 1 - rows/4, 0, ((i % 2) ? 192 : 64) + t * i); - SEGMENT.addPixelColorXY(x, y, CHSV(i*32, 255, 255)); + SEGMENT.addPixelColorXY(x, y, SEGMENT.color_from_palette(255-i*64, false, PALETTE_SOLID_WRAP, SEGMENT.check1?0:255)); } // central white dot - SEGMENT.setPixelColorXY(cols/2, rows/2, CHSV(0, 0, 255)); + SEGMENT.setPixelColorXY(cols/2, rows/2, WHITE); // blur everything a bit SEGMENT.blur(16); return FRAMETIME; } // mode_2DBlackHole() -static const char _data_FX_MODE_2DBLACKHOLE[] PROGMEM = "Black Hole@Fade rate,Outer Y freq.,Outer X freq.,Inner X freq.,Inner Y freq.;;;2"; +static const char _data_FX_MODE_2DBLACKHOLE[] PROGMEM = "Black Hole@Fade rate,Outer Y freq.,Outer X freq.,Inner X freq.,Inner Y freq.,Solid;!;!;2;pal=11"; //////////////////////////// @@ -4623,7 +4619,6 @@ uint16_t mode_2DColoredBursts() { // By: ldirko https://editor.so const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); SEGENV.aux0 = 0; // start with red hue } @@ -4677,7 +4672,6 @@ uint16_t mode_2Ddna(void) { // dna originally by by ldirko at https://pa const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -4704,7 +4698,6 @@ uint16_t mode_2DDNASpiral() { // By: ldirko https://editor.soulma const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -4750,7 +4743,6 @@ uint16_t mode_2DDrift() { // By: Stepko https://editor.soulmateli const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -4781,7 +4773,6 @@ uint16_t mode_2Dfirenoise(void) { // firenoise2d. By Andrew Tuline const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -4816,7 +4807,6 @@ uint16_t mode_2DFrizzles(void) { // By: Stepko https://editor.so const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -4855,8 +4845,6 @@ uint16_t mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired by https: CRGB backgroundColor = SEGCOLOR(1); - if (SEGENV.call == 0) SEGMENT.setUpLeds(); - if (SEGENV.call == 0 || strip.now - SEGMENT.step > 3000) { SEGENV.step = strip.now; SEGENV.aux0 = 0; @@ -5122,7 +5110,6 @@ uint16_t mode_2Dmatrix(void) { // Matrix2D. By Jeremy Williams. const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -5267,7 +5254,6 @@ uint16_t mode_2DPlasmaball(void) { // By: Stepko https://edito const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -5315,7 +5301,6 @@ uint16_t mode_2DPolarLights(void) { // By: Kostyantyn Matviyevskyy https CRGBPalette16 auroraPalette = {0x000000, 0x003300, 0x006600, 0x009900, 0x00cc00, 0x00ff00, 0x33ff00, 0x66ff00, 0x99ff00, 0xccff00, 0xffff00, 0xffcc00, 0xff9900, 0xff6600, 0xff3300, 0xff0000}; if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); SEGENV.step = 0; } @@ -5365,7 +5350,6 @@ uint16_t mode_2DPulser(void) { // By: ldirko https://edi const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -5393,7 +5377,6 @@ uint16_t mode_2DSindots(void) { // By: ldirko http const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -5425,7 +5408,6 @@ uint16_t mode_2Dsquaredswirl(void) { // By: Mark Kriegsman. https://g const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -5468,7 +5450,6 @@ uint16_t mode_2DSunradiation(void) { // By: ldirko https://edi byte *bump = reinterpret_cast(SEGENV.data); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -5516,7 +5497,6 @@ uint16_t mode_2Dtartan(void) { // By: Elliott Kember https://editor.so const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -5556,7 +5536,6 @@ uint16_t mode_2Dspaceships(void) { //// Space ships by stepko (c)05.02.21 [ht const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -5625,7 +5604,6 @@ uint16_t mode_2Dcrazybees(void) { bee_t *bee = reinterpret_cast(SEGENV.data); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); for (size_t i = 0; i < n; i++) { bee[i].posX = random8(0, cols); @@ -5695,7 +5673,6 @@ uint16_t mode_2Dghostrider(void) { const size_t maxLighters = min(cols + rows, LIGHTERS_AM); - if (SEGENV.call == 0) SEGMENT.setUpLeds(); if (SEGENV.aux0 != cols || SEGENV.aux1 != rows) { SEGENV.aux0 = cols; SEGENV.aux1 = rows; @@ -5780,7 +5757,6 @@ uint16_t mode_2Dfloatingblobs(void) { if (!SEGENV.allocateData(sizeof(blob_t))) return mode_static(); //allocation failed blob_t *blob = reinterpret_cast(SEGENV.data); - if (SEGENV.call == 0) SEGMENT.setUpLeds(); if (SEGENV.aux0 != cols || SEGENV.aux1 != rows) { SEGENV.aux0 = cols; // re-initialise if virtual size changes SEGENV.aux1 = rows; @@ -5946,7 +5922,6 @@ uint16_t mode_2Ddriftrose(void) { const float L = min(cols, rows) / 2.f; if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -6101,7 +6076,6 @@ uint16_t mode_2DSwirl(void) { const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -6148,7 +6122,6 @@ uint16_t mode_2DWaverly(void) { const uint16_t rows = SEGMENT.virtualHeight(); if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -6377,7 +6350,6 @@ uint16_t mode_matripix(void) { // Matripix. By Andrew Tuline. int16_t volumeRaw = *(int16_t*)um_data->u_data[1]; if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -6505,7 +6477,6 @@ uint16_t mode_pixelwave(void) { // Pixelwave. By Andrew Tuline. // even with 1D effect we have to take logic for 2D segments for allocation as fill_solid() fills whole segment if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -6731,7 +6702,6 @@ uint16_t mode_DJLight(void) { // Written by ??? Adapted by Wil uint8_t *fftResult = (uint8_t*)um_data->u_data[2]; if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -6800,7 +6770,6 @@ uint16_t mode_freqmatrix(void) { // Freqmatrix. By Andreas Plesch float volumeSmth = *(float*)um_data->u_data[0]; if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -6902,7 +6871,6 @@ uint16_t mode_freqwave(void) { // Freqwave. By Andreas Pleschun float volumeSmth = *(float*)um_data->u_data[0]; if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -7087,7 +7055,6 @@ uint16_t mode_waterfall(void) { // Waterfall. By: Andrew Tulin if (FFT_MajorPeak < 1) FFT_MajorPeak = 1; // log10(0) is "forbidden" (throws exception) if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); SEGENV.aux0 = 255; SEGMENT.custom1 = *binNum; @@ -7204,7 +7171,6 @@ uint16_t mode_2DFunkyPlank(void) { // Written by ??? Adapted by Wil uint8_t *fftResult = (uint8_t*)um_data->u_data[2]; if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); SEGMENT.fill(BLACK); } @@ -7417,7 +7383,6 @@ uint16_t mode_2Dsoap() { // init if (SEGENV.call == 0) { - SEGMENT.setUpLeds(); *noise32_x = random16(); *noise32_y = random16(); *noise32_z = random16(); @@ -7535,12 +7500,12 @@ uint16_t mode_2Doctopus() { SEGENV.aux1 = rows; *offsX = SEGMENT.custom1; *offsY = SEGMENT.custom2; - const uint8_t C_X = cols / 2 + (SEGMENT.custom1 - 128)*cols/255; - const uint8_t C_Y = rows / 2 + (SEGMENT.custom2 - 128)*rows/255; + const int C_X = (cols / 2) + ((SEGMENT.custom1 - 128)*cols)/255; + const int C_Y = (rows / 2) + ((SEGMENT.custom2 - 128)*rows)/255; for (int x = 0; x < cols; x++) { for (int y = 0; y < rows; y++) { - rMap[XY(x, y)].angle = 40.7436f * atan2f(y - C_Y, x - C_X); // avoid 128*atan2()/PI - rMap[XY(x, y)].radius = hypotf(x - C_X, y - C_Y) * mapp; //thanks Sutaburosu + rMap[XY(x, y)].angle = 40.7436f * atan2f((y - C_Y), (x - C_X)); // avoid 128*atan2()/PI + rMap[XY(x, y)].radius = hypotf((x - C_X), (y - C_Y)) * mapp; //thanks Sutaburosu } } } diff --git a/wled00/FX.h b/wled00/FX.h index 34b6f7854..21f9d08c9 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -329,7 +329,7 @@ typedef enum mapping1D2D { M12_pCorner = 3 } mapping1D2D_t; -// segment, 72 bytes +// segment, 80 bytes typedef struct Segment { public: uint16_t start; // start index / start X coordinate 2D (left) @@ -370,7 +370,7 @@ typedef struct Segment { }; uint8_t startY; // start Y coodrinate 2D (top); there should be no more than 255 rows uint8_t stopY; // stop Y coordinate 2D (bottom); there should be no more than 255 rows - char *name; + char *name; // runtime data unsigned long next_time; // millis() of next update @@ -378,8 +378,7 @@ typedef struct Segment { uint32_t call; // call counter uint16_t aux0; // custom var uint16_t aux1; // custom var - byte* data; // effect data pointer - uint32_t* leds; // local leds[] array (may be a pointer to global) + byte *data; // effect data pointer static uint16_t maxWidth, maxHeight; // these define matrix width & height (max. segment dimensions) private: @@ -393,10 +392,13 @@ typedef struct Segment { uint8_t _reserved : 4; }; }; - uint16_t _dataLen; + uint16_t _dataLen; static uint16_t _usedSegmentData; - // transition data, valid only if transitional==true, holds values during transition + uint16_t _qStart, _qStop, _qStartY, _qStopY; + bool _queuedChanges; + + // transition data, valid only if transitional==true, holds values during transition (72 bytes) struct Transition { uint32_t _colorT[NUM_COLORS]; uint8_t _briT; // temporary brightness @@ -407,7 +409,7 @@ typedef struct Segment { //uint16_t _aux0, _aux1; // previous mode/effect runtime data //uint32_t _step, _call; // previous mode/effect runtime data //byte *_data; // previous mode/effect runtime data - uint32_t _start; + unsigned long _start; // must accommodate millis() uint16_t _dur; Transition(uint16_t dur=750) : _briT(255) @@ -462,9 +464,9 @@ typedef struct Segment { aux0(0), aux1(0), data(nullptr), - leds(nullptr), _capabilities(0), _dataLen(0), + _queuedChanges(false), _t(nullptr) { //refreshLightCapabilities(); @@ -485,9 +487,8 @@ typedef struct Segment { //if (data) Serial.printf(" %d (%p)", (int)_dataLen, data); //Serial.println(); //#endif - if (name) delete[] name; - if (_t) delete _t; - if (leds) free(leds); + if (name) { delete[] name; name = nullptr; } + if (_t) { transitional = false; delete _t; _t = nullptr; } deallocateData(); } @@ -495,7 +496,7 @@ typedef struct Segment { Segment& operator= (Segment &&orig) noexcept; // move assignment #ifdef WLED_DEBUG - size_t getSize() const { return sizeof(Segment) + (data?_dataLen:0) + (name?strlen(name):0) + (_t?sizeof(Transition):0) + (leds?sizeof(CRGB)*length():0); } + size_t getSize() const { return sizeof(Segment) + (data?_dataLen:0) + (name?strlen(name):0) + (_t?sizeof(Transition):0); } #endif inline bool getOption(uint8_t n) const { return ((options >> n) & 0x01); } @@ -505,16 +506,16 @@ typedef struct Segment { inline bool hasRGB(void) const { return _isRGB; } inline bool hasWhite(void) const { return _hasW; } inline bool isCCT(void) const { return _isCCT; } - inline uint16_t width(void) const { return (stop > start) ? (stop - start) : 0; } // segment width in physical pixels (length if 1D) - inline uint16_t height(void) const { return (stopY > startY) ? (stopY - startY) : 0; } // segment height (if 2D) in physical pixels // softhack007: make sure its always > 0 - inline uint16_t length(void) const { return width() * height(); } // segment length (count) in physical pixels + inline uint16_t width(void) const { return isActive() ? (stop - start) : 0; } // segment width in physical pixels (length if 1D) + inline uint16_t height(void) const { return stopY - startY; } // segment height (if 2D) in physical pixels (it *is* always >=1) + inline uint16_t length(void) const { return width() * height(); } // segment length (count) in physical pixels inline uint16_t groupLength(void) const { return grouping + spacing; } inline uint8_t getLightCapabilities(void) const { return _capabilities; } static uint16_t getUsedSegmentData(void) { return _usedSegmentData; } static void addUsedSegmentData(int len) { _usedSegmentData += len; } - void setUp(uint16_t i1, uint16_t i2, uint8_t grp=1, uint8_t spc=0, uint16_t ofs=UINT16_MAX, uint16_t i1Y=0, uint16_t i2Y=1); + void setUp(uint16_t i1, uint16_t i2, uint8_t grp=1, uint8_t spc=0, uint16_t ofs=UINT16_MAX, uint16_t i1Y=0, uint16_t i2Y=1, bool immediate=false); bool setColor(uint8_t slot, uint32_t c); //returns true if changed void setCCT(uint16_t k); void setOpacity(uint8_t o); @@ -536,7 +537,6 @@ typedef struct Segment { * Safe to call from interrupts and network requests. */ inline void markForReset(void) { reset = true; } // setOption(SEG_OPTION_RESET, true) - void setUpLeds(void); // local double buffer/lossless getPixelColor() // transition functions void startTransition(uint16_t dur); // transition has to start before actual segment values change @@ -896,7 +896,7 @@ class WS2812FX { // 96 bytes uint16_t* customMappingTable; uint16_t customMappingSize; - uint32_t _lastShow; + unsigned long _lastShow; uint8_t _segment_index; uint8_t _mainSegment; diff --git a/wled00/FX_2Dfcn.cpp b/wled00/FX_2Dfcn.cpp index 45107fe58..417d04844 100644 --- a/wled00/FX_2Dfcn.cpp +++ b/wled00/FX_2Dfcn.cpp @@ -189,20 +189,16 @@ uint32_t WS2812FX::getPixelColorXY(uint16_t x, uint16_t y) { // XY(x,y) - gets pixel index within current segment (often used to reference leds[] array element) uint16_t /*IRAM_ATTR*/ Segment::XY(uint16_t x, uint16_t y) { - uint16_t width = virtualWidth(); // segment width in logical pixels - uint16_t height = virtualHeight(); // segment height in logical pixels - if (width == 0) return 0; // softhack007 avoid div/0 - if (height == 0) return (x%width); // softhack007 avoid div/0 - return (x%width) + (y%height) * width; + uint16_t width = virtualWidth(); // segment width in logical pixels (can be 0 if segment is inactive) + uint16_t height = virtualHeight(); // segment height in logical pixels (is always >= 1) + return isActive() ? (x%width) + (y%height) * width : 0; } void /*IRAM_ATTR*/ Segment::setPixelColorXY(int x, int y, uint32_t col) { - if (Segment::maxHeight==1) return; // not a matrix set-up + if (!isActive()) return; // not active if (x >= virtualWidth() || y >= virtualHeight() || x<0 || y<0) return; // if pixel would fall out of virtual segment just exit - if (leds) leds[XY(x,y)] = col; - uint8_t _bri_t = currentBri(on ? opacity : 0); if (_bri_t < 255) { byte r = scale8(R(col), _bri_t); @@ -245,7 +241,7 @@ void /*IRAM_ATTR*/ Segment::setPixelColorXY(int x, int y, uint32_t col) // anti-aliased version of setPixelColorXY() void Segment::setPixelColorXY(float x, float y, uint32_t col, bool aa) { - if (Segment::maxHeight==1) return; // not a matrix set-up + if (!isActive()) return; // not active if (x<0.0f || x>1.0f || y<0.0f || y>1.0f) return; // not normalized const uint16_t cols = virtualWidth(); @@ -288,7 +284,8 @@ void Segment::setPixelColorXY(float x, float y, uint32_t col, bool aa) // returns RGBW values of pixel uint32_t Segment::getPixelColorXY(uint16_t x, uint16_t y) { - if (leds) return leds[XY(x,y)]; + if (!isActive()) return 0; // not active + if (x >= virtualWidth() || y >= virtualHeight() || x<0 || y<0) return 0; // if pixel would fall out of virtual segment just exit if (reverse ) x = virtualWidth() - x - 1; if (reverse_y) y = virtualHeight() - y - 1; if (transpose) { uint16_t t = x; x = y; y = t; } // swap X & Y if segment transposed @@ -305,6 +302,7 @@ void Segment::blendPixelColorXY(uint16_t x, uint16_t y, uint32_t color, uint8_t // Adds the specified color with the existing pixel color perserving color balance. void Segment::addPixelColorXY(int x, int y, uint32_t color, bool fast) { + if (!isActive()) return; // not active if (x >= virtualWidth() || y >= virtualHeight() || x<0 || y<0) return; // if pixel would fall out of virtual segment just exit uint32_t col = getPixelColorXY(x,y); uint8_t r = R(col); @@ -324,12 +322,14 @@ void Segment::addPixelColorXY(int x, int y, uint32_t color, bool fast) { } void Segment::fadePixelColorXY(uint16_t x, uint16_t y, uint8_t fade) { + if (!isActive()) return; // not active CRGB pix = CRGB(getPixelColorXY(x,y)).nscale8_video(fade); setPixelColorXY(x, y, pix); } // blurRow: perform a blur on a row of a rectangular matrix void Segment::blurRow(uint16_t row, fract8 blur_amount) { + if (!isActive()) return; // not active const uint_fast16_t cols = virtualWidth(); const uint_fast16_t rows = virtualHeight(); @@ -357,6 +357,7 @@ void Segment::blurRow(uint16_t row, fract8 blur_amount) { // blurCol: perform a blur on a column of a rectangular matrix void Segment::blurCol(uint16_t col, fract8 blur_amount) { + if (!isActive()) return; // not active const uint_fast16_t cols = virtualWidth(); const uint_fast16_t rows = virtualHeight(); @@ -384,6 +385,7 @@ void Segment::blurCol(uint16_t col, fract8 blur_amount) { // 1D Box blur (with added weight - blur_amount: [0=no blur, 255=max blur]) void Segment::box_blur(uint16_t i, bool vertical, fract8 blur_amount) { + if (!isActive()) return; // not active const uint16_t cols = virtualWidth(); const uint16_t rows = virtualHeight(); const uint16_t dim1 = vertical ? rows : cols; @@ -436,6 +438,7 @@ void Segment::blur1d(fract8 blur_amount) { } void Segment::moveX(int8_t delta, bool wrap) { + if (!isActive()) return; // not active const uint16_t cols = virtualWidth(); const uint16_t rows = virtualHeight(); if (!delta || abs(delta) >= cols) return; @@ -453,6 +456,7 @@ void Segment::moveX(int8_t delta, bool wrap) { } void Segment::moveY(int8_t delta, bool wrap) { + if (!isActive()) return; // not active const uint16_t cols = virtualWidth(); const uint16_t rows = virtualHeight(); if (!delta || abs(delta) >= rows) return; @@ -488,6 +492,7 @@ void Segment::move(uint8_t dir, uint8_t delta, bool wrap) { } void Segment::draw_circle(uint16_t cx, uint16_t cy, uint8_t radius, CRGB col) { + if (!isActive()) return; // not active // Bresenham’s Algorithm int d = 3 - (2*radius); int y = radius, x = 0; @@ -512,6 +517,7 @@ void Segment::draw_circle(uint16_t cx, uint16_t cy, uint8_t radius, CRGB col) { // by stepko, taken from https://editor.soulmatelights.com/gallery/573-blobs void Segment::fill_circle(uint16_t cx, uint16_t cy, uint8_t radius, CRGB col) { + if (!isActive()) return; // not active const uint16_t cols = virtualWidth(); const uint16_t rows = virtualHeight(); for (int16_t y = -radius; y <= radius; y++) { @@ -525,6 +531,7 @@ void Segment::fill_circle(uint16_t cx, uint16_t cy, uint8_t radius, CRGB col) { } void Segment::nscale8(uint8_t scale) { + if (!isActive()) return; // not active const uint16_t cols = virtualWidth(); const uint16_t rows = virtualHeight(); for(uint16_t y = 0; y < rows; y++) for (uint16_t x = 0; x < cols; x++) { @@ -534,6 +541,7 @@ void Segment::nscale8(uint8_t scale) { //line function void Segment::drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint32_t c) { + if (!isActive()) return; // not active const uint16_t cols = virtualWidth(); const uint16_t rows = virtualHeight(); if (x0 >= cols || x1 >= cols || y0 >= rows || y1 >= rows) return; @@ -558,6 +566,7 @@ void Segment::drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint3 // draws a raster font character on canvas // only supports: 4x6=24, 5x8=40, 5x12=60, 6x8=48 and 7x9=63 fonts ATM void Segment::drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, uint32_t color, uint32_t col2) { + if (!isActive()) return; // not active if (chr < 32 || chr > 126) return; // only ASCII 32-126 supported chr -= 32; // align with font table entries const uint16_t cols = virtualWidth(); @@ -593,6 +602,7 @@ void Segment::drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) void Segment::wu_pixel(uint32_t x, uint32_t y, CRGB c) { //awesome wu_pixel procedure by reddit u/sutaburosu + if (!isActive()) return; // not active // extract the fractional parts and derive their inverses uint8_t xx = x & 0xff, yy = y & 0xff, ix = 255 - xx, iy = 255 - yy; // calculate the intensities for each affected pixel diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index b76844231..bf26dbfc3 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -81,22 +81,21 @@ uint16_t Segment::maxHeight = 1; Segment::Segment(const Segment &orig) { //DEBUG_PRINTLN(F("-- Copy segment constructor --")); memcpy((void*)this, (void*)&orig, sizeof(Segment)); + transitional = false; // copied segment cannot be in transition name = nullptr; data = nullptr; _dataLen = 0; _t = nullptr; - leds = nullptr; if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); } if (orig.data) { if (allocateData(orig._dataLen)) memcpy(data, orig.data, orig._dataLen); } - if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); } - if (orig.leds) { leds = (uint32_t*)malloc(sizeof(uint32_t)*length()); if (leds) memcpy(leds, orig.leds, sizeof(uint32_t)*length()); } + //if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); } } // move constructor Segment::Segment(Segment &&orig) noexcept { //DEBUG_PRINTLN(F("-- Move segment constructor --")); memcpy((void*)this, (void*)&orig, sizeof(Segment)); - orig.leds = nullptr; + orig.transitional = false; // old segment cannot be in transition any more orig.name = nullptr; orig.data = nullptr; orig._dataLen = 0; @@ -108,23 +107,22 @@ Segment& Segment::operator= (const Segment &orig) { //DEBUG_PRINTLN(F("-- Copying segment --")); if (this != &orig) { // clean destination + transitional = false; // copied segment cannot be in transition if (name) delete[] name; if (_t) delete _t; - if (leds) free(leds); deallocateData(); // copy source memcpy((void*)this, (void*)&orig, sizeof(Segment)); + transitional = false; // erase pointers to allocated data name = nullptr; data = nullptr; _dataLen = 0; _t = nullptr; - leds = nullptr; // copy source data if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); } if (orig.data) { if (allocateData(orig._dataLen)) memcpy(data, orig.data, orig._dataLen); } - if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); } - if (orig.leds) { leds = (uint32_t*)malloc(sizeof(uint32_t)*length()); if (leds) memcpy(leds, orig.leds, sizeof(uint32_t)*length()); } + //if (orig._t) { _t = new Transition(orig._t->_dur, orig._t->_briT, orig._t->_cctT, orig._t->_colorT); } } return *this; } @@ -133,16 +131,16 @@ Segment& Segment::operator= (const Segment &orig) { Segment& Segment::operator= (Segment &&orig) noexcept { //DEBUG_PRINTLN(F("-- Moving segment --")); if (this != &orig) { - if (name) delete[] name; // free old name - if (leds) free(leds); + transitional = false; // just temporary + if (name) { delete[] name; name = nullptr; } // free old name deallocateData(); // free old runtime data - if (_t) delete _t; + if (_t) { delete _t; _t = nullptr; } memcpy((void*)this, (void*)&orig, sizeof(Segment)); + orig.transitional = false; // old segment cannot be in transition orig.name = nullptr; orig.data = nullptr; orig._dataLen = 0; orig._t = nullptr; - orig.leds = nullptr; } return *this; } @@ -152,12 +150,7 @@ bool Segment::allocateData(size_t len) { deallocateData(); if (Segment::getUsedSegmentData() + len > MAX_SEGMENT_DATA) return false; //not enough memory // do not use SPI RAM on ESP32 since it is slow - //#if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) && defined(WLED_USE_PSRAM) - //if (psramFound()) - // data = (byte*) ps_malloc(len); - //else - //#endif - data = (byte*) malloc(len); + data = (byte*) malloc(len); if (!data) return false; //allocation failed Segment::addUsedSegmentData(len); _dataLen = len; @@ -182,28 +175,13 @@ void Segment::deallocateData() { */ void Segment::resetIfRequired() { if (reset) { - if (leds) { free(leds); leds = nullptr; } deallocateData(); next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0; + if (_queuedChanges) setUp(_qStart, _qStop, grouping, spacing, offset, _qStartY, _qStopY, true); reset = false; // setOption(SEG_OPTION_RESET, false); } } -void Segment::setUpLeds() { - // deallocation happens in resetIfRequired() as it is called when segment changes or in destructor - if (useGlobalLedBuffer) return; // TODO optional seg buffer for FX without lossy restore due to opacity - - // no global buffer - if (leds == nullptr && length() > 0) { //softhack007 quickfix - avoid malloc(0) which is undefined behaviour (should not happen, but i've seen it) - //#if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_PSRAM) - //if (psramFound()) - // leds = (CRGB*)ps_malloc(sizeof(CRGB)*length()); // softhack007 disabled; putting leds into psram leads to horrible slowdown on WROVER boards - //else - //#endif - leds = (uint32_t *)calloc(length(), sizeof(uint32_t)); - } -} - CRGBPalette16 &Segment::loadPalette(CRGBPalette16 &targetPalette, uint8_t pal) { static unsigned long _lastPaletteChange = 0; // perhaps it should be per segment static CRGBPalette16 randomPalette = CRGBPalette16(DEFAULT_COLOR); @@ -326,7 +304,7 @@ void Segment::startTransition(uint16_t dur) { // transition progression between 0-65535 uint16_t Segment::progress() { if (!transitional || !_t) return 0xFFFFU; - uint32_t timeNow = millis(); + unsigned long timeNow = millis(); if (timeNow - _t->_start > _t->_dur || _t->_dur == 0) return 0xFFFFU; return (timeNow - _t->_start) * 0xFFFFU / _t->_dur; } @@ -355,7 +333,7 @@ CRGBPalette16 &Segment::currentPalette(CRGBPalette16 &targetPalette, uint8_t pal // blend palettes // there are about 255 blend passes of 48 "blends" to completely blend two palettes (in _dur time) // minimum blend time is 100ms maximum is 65535ms - uint32_t timeMS = millis() - _t->_start; + unsigned long timeMS = millis() - _t->_start; uint16_t noOfBlends = (255U * timeMS / _t->_dur) - _t->_prevPaletteBlends; for (int i=0; i_prevPaletteBlends++) nblendPaletteTowardPalette(_t->_palT, targetPalette, 48); targetPalette = _t->_palT; // copy transitioning/temporary palette @@ -376,8 +354,9 @@ void Segment::handleTransition() { } } -void Segment::setUp(uint16_t i1, uint16_t i2, uint8_t grp, uint8_t spc, uint16_t ofs, uint16_t i1Y, uint16_t i2Y) { - //return if neither bounds nor grouping have changed +void Segment::setUp(uint16_t i1, uint16_t i2, uint8_t grp, uint8_t spc, uint16_t ofs, uint16_t i1Y, uint16_t i2Y, bool immediate) { + _queuedChanges = false; // cancel anything queued + // return if neither bounds nor grouping have changed bool boundsUnchanged = (start == i1 && stop == i2); #ifndef WLED_DISABLE_2D if (Segment::maxHeight>1) boundsUnchanged &= (startY == i1Y && stopY == i2Y); // 2D @@ -386,29 +365,47 @@ void Segment::setUp(uint16_t i1, uint16_t i2, uint8_t grp, uint8_t spc, uint16_t && (!grp || (grouping == grp && spacing == spc)) && (ofs == UINT16_MAX || ofs == offset)) return; - if (stop) fill(BLACK); //turn old segment range off - if (i2 <= i1) { //disable segment - stop = 0; - markForReset(); - return; - } - if (i1 < Segment::maxWidth || (i1 >= Segment::maxWidth*Segment::maxHeight && i1 < strip.getLengthTotal())) start = i1; // Segment::maxWidth equals strip.getLengthTotal() for 1D - stop = i2 > Segment::maxWidth*Segment::maxHeight ? MIN(i2,strip.getLengthTotal()) : (i2 > Segment::maxWidth ? Segment::maxWidth : MAX(1,i2)); - startY = 0; - stopY = 1; - #ifndef WLED_DISABLE_2D - if (Segment::maxHeight>1) { // 2D - if (i1Y < Segment::maxHeight) startY = i1Y; - stopY = i2Y > Segment::maxHeight ? Segment::maxHeight : MAX(1,i2Y); - } - #endif - if (grp) { + if (stop) fill(BLACK); // turn old segment range off (clears pixels if changing spacing) + if (grp) { // prevent assignment of 0 grouping = grp; spacing = spc; + } else { + grouping = 1; + spacing = 0; } if (ofs < UINT16_MAX) offset = ofs; + markForReset(); - if (!boundsUnchanged) refreshLightCapabilities(); + if (!boundsUnchanged) { + if (immediate) { + if (i2 <= i1) { //disable segment + stop = 0; + return; + } + if (i1 < Segment::maxWidth || (i1 >= Segment::maxWidth*Segment::maxHeight && i1 < strip.getLengthTotal())) start = i1; // Segment::maxWidth equals strip.getLengthTotal() for 1D + stop = i2 > Segment::maxWidth*Segment::maxHeight ? MIN(i2,strip.getLengthTotal()) : (i2 > Segment::maxWidth ? Segment::maxWidth : MAX(1,i2)); + startY = 0; + stopY = 1; + #ifndef WLED_DISABLE_2D + if (Segment::maxHeight>1) { // 2D + if (i1Y < Segment::maxHeight) startY = i1Y; + stopY = i2Y > Segment::maxHeight ? Segment::maxHeight : MAX(1,i2Y); + } + #endif + // safety check + if (start >= stop || startY >= stopY) { + stop = 0; + return; + } + if (!boundsUnchanged) refreshLightCapabilities(); + } else { + _qStart = i1; + _qStop = i2; + _qStartY = i1Y; + _qStopY = i2Y; + _queuedChanges = true; + } + } } @@ -455,8 +452,7 @@ void Segment::setMode(uint8_t fx, bool loadDefaults) { // if we have a valid mode & is not reserved if (fx < strip.getModeCount() && strncmp_P("RSVD", strip.getModeData(fx), 4)) { if (fx != mode) { - startTransition(strip.getTransition()); // set effect transitions - //markForReset(); // transition will handle this + if (fadeTransition) startTransition(strip.getTransition()); // set effect transitions mode = fx; // load default values from effect string @@ -541,8 +537,7 @@ uint16_t Segment::virtualLength() const { return vLen; } #endif - uint16_t groupLen = groupLength(); - if (groupLen < 1) groupLen = 1; // prevent division by zero - better safe than sorry ... + uint16_t groupLen = groupLength(); // is always >= 1 uint16_t vLength = (length() + groupLen - 1) / groupLen; if (mirror) vLength = (vLength + 1) /2; // divide by 2 if mirror, leave at least a single LED return vLength; @@ -550,6 +545,7 @@ uint16_t Segment::virtualLength() const { void IRAM_ATTR Segment::setPixelColor(int i, uint32_t col) { + if (!isActive()) return; // not active #ifndef WLED_DISABLE_2D int vStrip = i>>16; // hack to allow running on virtual strips (2D segment columns/rows) #endif @@ -617,8 +613,6 @@ void IRAM_ATTR Segment::setPixelColor(int i, uint32_t col) } #endif - if (leds) leds[i] = col; - uint16_t len = length(); uint8_t _bri_t = currentBri(on ? opacity : 0); if (_bri_t < 255) { @@ -660,6 +654,7 @@ void IRAM_ATTR Segment::setPixelColor(int i, uint32_t col) // anti-aliased normalized version of setPixelColor() void Segment::setPixelColor(float i, uint32_t col, bool aa) { + if (!isActive()) return; // not active int vStrip = int(i/10.0f); // hack to allow running on virtual strips (2D segment columns/rows) i -= int(i); @@ -691,6 +686,7 @@ void Segment::setPixelColor(float i, uint32_t col, bool aa) uint32_t Segment::getPixelColor(int i) { + if (!isActive()) return 0; // not active #ifndef WLED_DISABLE_2D int vStrip = i>>16; #endif @@ -718,8 +714,6 @@ uint32_t Segment::getPixelColor(int i) } #endif - if (leds) return leds[i]; - if (reverse) i = virtualLength() - i - 1; i *= groupLength(); i += start; @@ -760,6 +754,11 @@ void Segment::refreshLightCapabilities() { uint16_t segStartIdx = 0xFFFFU; uint16_t segStopIdx = 0; + if (!isActive()) { + _capabilities = 0; + return; + } + if (start < Segment::maxWidth * Segment::maxHeight) { // we are withing 2D matrix (includes 1D segments) for (int y = startY; y < stopY; y++) for (int x = start; x < stop; x++) { @@ -804,6 +803,7 @@ void Segment::refreshLightCapabilities() { * Fills segment with color */ void Segment::fill(uint32_t c) { + if (!isActive()) return; // not active const uint16_t cols = is2D() ? virtualWidth() : virtualLength(); const uint16_t rows = virtualHeight(); // will be 1 for 1D for(uint16_t y = 0; y < rows; y++) for (uint16_t x = 0; x < cols; x++) { @@ -819,6 +819,7 @@ void Segment::blendPixelColor(int n, uint32_t color, uint8_t blend) { // Adds the specified color with the existing pixel color perserving color balance. void Segment::addPixelColor(int n, uint32_t color, bool fast) { + if (!isActive()) return; // not active uint32_t col = getPixelColor(n); uint8_t r = R(col); uint8_t g = G(col); @@ -837,6 +838,7 @@ void Segment::addPixelColor(int n, uint32_t color, bool fast) { } void Segment::fadePixelColor(uint16_t n, uint8_t fade) { + if (!isActive()) return; // not active CRGB pix = CRGB(getPixelColor(n)).nscale8_video(fade); setPixelColor(n, pix); } @@ -845,6 +847,7 @@ void Segment::fadePixelColor(uint16_t n, uint8_t fade) { * fade out function, higher rate = quicker fade */ void Segment::fade_out(uint8_t rate) { + if (!isActive()) return; // not active const uint16_t cols = is2D() ? virtualWidth() : virtualLength(); const uint16_t rows = virtualHeight(); // will be 1 for 1D @@ -882,7 +885,7 @@ void Segment::fade_out(uint8_t rate) { // fades all pixels to black using nscale8() void Segment::fadeToBlackBy(uint8_t fadeBy) { - if (fadeBy == 0) return; // optimization - no scaling to apply + if (!isActive() || fadeBy == 0) return; // optimization - no scaling to apply const uint16_t cols = is2D() ? virtualWidth() : virtualLength(); const uint16_t rows = virtualHeight(); // will be 1 for 1D @@ -897,7 +900,7 @@ void Segment::fadeToBlackBy(uint8_t fadeBy) { */ void Segment::blur(uint8_t blur_amount) { - if (blur_amount == 0) return; // optimization: 0 means "don't blur" + if (!isActive() || blur_amount == 0) return; // optimization: 0 means "don't blur" #ifndef WLED_DISABLE_2D if (is2D()) { // compatibility with 2D @@ -1071,7 +1074,7 @@ void WS2812FX::finalizeInit(void) } void WS2812FX::service() { - uint32_t nowUp = millis(); // Be aware, millis() rolls over every 49 days + unsigned long nowUp = millis(); // Be aware, millis() rolls over every 49 days now = nowUp + timebase; if (nowUp - _lastShow < MIN_SHOW_DELAY) return; bool doShow = false; @@ -1089,7 +1092,6 @@ void WS2812FX::service() { // last condition ensures all solid segments are updated at the same time if(nowUp > seg.next_time || _triggered || (doShow && seg.mode == FX_MODE_STATIC)) { - if (seg.grouping == 0) seg.grouping = 1; // sanity check doShow = true; uint16_t delay = FRAMETIME; @@ -1117,12 +1119,19 @@ void WS2812FX::service() { } _virtualSegmentLength = 0; busses.setSegmentCCT(-1); - if(doShow) { + _isServicing = false; + _triggered = false; + + #ifdef WLED_DEBUG + if (millis() - nowUp > _frametime) DEBUG_PRINTLN(F("Slow effects.")); + #endif + if (doShow) { yield(); show(); } - _triggered = false; - _isServicing = false; + #ifdef WLED_DEBUG + if (millis() - nowUp > _frametime) DEBUG_PRINTLN(F("Slow strip.")); + #endif } void IRAM_ATTR WS2812FX::setPixelColor(int i, uint32_t col) @@ -1159,31 +1168,25 @@ uint8_t WS2812FX::estimateCurrentAndLimitBri() { bool useWackyWS2815PowerModel = false; byte actualMilliampsPerLed = milliampsPerLed; - if(milliampsPerLed == 255) { - useWackyWS2815PowerModel = true; - actualMilliampsPerLed = 12; // from testing an actual strip - } - if (ablMilliampsMax < 150 || actualMilliampsPerLed == 0) { //0 mA per LED and too low numbers turn off calculation currentMilliamps = 0; return _brightness; } - uint16_t pLen = getLengthPhysical(); - uint32_t puPerMilliamp = 195075 / actualMilliampsPerLed; - uint32_t powerBudget = (ablMilliampsMax - MA_FOR_ESP) * puPerMilliamp; //100mA for ESP power - if (powerBudget > puPerMilliamp * pLen) { //each LED uses about 1mA in standby, exclude that from power budget - powerBudget -= puPerMilliamp * pLen; - } else { - powerBudget = 0; + if (milliampsPerLed == 255) { + useWackyWS2815PowerModel = true; + actualMilliampsPerLed = 12; // from testing an actual strip } - uint32_t powerSum = 0; // could overflow if more than 22K LEDs (uint32_t MAX / 195075 PU per LED) + size_t powerBudget = (ablMilliampsMax - MA_FOR_ESP); //100mA for ESP power + size_t pLen = 0; //getLengthPhysical(); + size_t powerSum = 0; for (uint_fast8_t bNum = 0; bNum < busses.getNumBusses(); bNum++) { Bus *bus = busses.getBus(bNum); - if (bus->getType() >= TYPE_NET_DDP_RGB) continue; //exclude non-physical network busses + if (!IS_DIGITAL(bus->getType())) continue; //exclude non-digital network busses uint16_t len = bus->getLength(); + pLen += len; uint32_t busPowerSum = 0; for (uint_fast16_t i = 0; i < len; i++) { //sum up the usage of each LED uint32_t c = bus->getPixelColor(i); // always returns original or restored color without brightness scaling @@ -1198,38 +1201,44 @@ uint8_t WS2812FX::estimateCurrentAndLimitBri() { if (bus->hasWhite()) { //RGBW led total output with white LEDs enabled is still 50mA, so each channel uses less busPowerSum *= 3; - busPowerSum = busPowerSum >> 2; //same as /= 4 + busPowerSum >>= 2; //same as /= 4 } powerSum += busPowerSum; } - uint8_t newBri = _brightness; - uint32_t powerSumUnscaled = powerSum; - powerSum *= _brightness; + if (powerBudget > pLen) { //each LED uses about 1mA in standby, exclude that from power budget + powerBudget -= pLen; + } else { + powerBudget = 0; + } - if (powerSum > powerBudget) { //scale brightness down to stay in current limit + // powerSum has all the values of channels summed (max would be pLen*765 as white is excluded) so convert to milliAmps + powerSum = (powerSum * actualMilliampsPerLed) / 765; + + uint8_t newBri = _brightness; + if (powerSum * _brightness / 255 > powerBudget) { //scale brightness down to stay in current limit float scale = (float)powerBudget / (float)powerSum; uint16_t scaleI = scale * 255; uint8_t scaleB = (scaleI > 255) ? 255 : scaleI; newBri = scale8(_brightness, scaleB); } - currentMilliamps = (powerSumUnscaled * newBri) / puPerMilliamp; + currentMilliamps = (powerSum * newBri) / 255; currentMilliamps += MA_FOR_ESP; //add power of ESP back to estimate - currentMilliamps += pLen; //add standby power back to estimate + currentMilliamps += pLen; //add standby power (1mA/LED) back to estimate return newBri; } void WS2812FX::show(void) { + // avoid race condition, caputre _callback value + show_callback callback = _callback; + if (callback) callback(); + #ifdef WLED_DEBUG static unsigned long sumMicros = 0, sumCurrent = 0; static size_t calls = 0; unsigned long microsStart = micros(); #endif - // avoid race condition, caputre _callback value - show_callback callback = _callback; - if (callback) callback(); - uint8_t busBrightness = estimateCurrentAndLimitBri(); busses.setBrightness(busBrightness); #ifdef WLED_DEBUG @@ -1240,21 +1249,22 @@ void WS2812FX::show(void) { // all of the data has been sent. // See https://github.com/Makuna/NeoPixelBus/wiki/ESP32-NeoMethods#neoesp32rmt-methods busses.show(); - unsigned long now = millis(); - unsigned long diff = now - _lastShow; - uint16_t fpsCurr = 200; - if (diff > 0) fpsCurr = 1000 / diff; - _cumulativeFps = (3 * _cumulativeFps + fpsCurr) >> 2; - _lastShow = now; #ifdef WLED_DEBUG sumMicros += micros() - microsStart; if (++calls == 100) { - DEBUG_PRINTF("show calls: %d micros: %lu avg: %lu (current: %lu avg: %lu)\n", calls, sumMicros, sumMicros/calls, sumCurrent, sumCurrent/calls); + DEBUG_PRINTF("%d show calls: %lu[us] avg: %lu[us] (current: %lu[us] avg: %lu[us])\n", calls, sumMicros, sumMicros/calls, sumCurrent, sumCurrent/calls); sumMicros = sumCurrent = 0; calls = 0; } #endif + + unsigned long now = millis(); + size_t diff = now - _lastShow; + size_t fpsCurr = 200; + if (diff > 0) fpsCurr = 1000 / diff; + _cumulativeFps = (3 * _cumulativeFps + fpsCurr) >> 2; + _lastShow = now; } /** @@ -1431,6 +1441,7 @@ Segment& WS2812FX::getSegment(uint8_t id) { return _segments[id >= _segments.size() ? getMainSegmentId() : id]; // vectors } +// compatibility method (deprecated) void WS2812FX::setSegment(uint8_t n, uint16_t i1, uint16_t i2, uint8_t grouping, uint8_t spacing, uint16_t offset, uint16_t startY, uint16_t stopY) { if (n >= _segments.size()) return; _segments[n].setUp(i1, i2, grouping, spacing, offset, startY, stopY); diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index ed1816eaf..c0d4e7e2e 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -128,11 +128,6 @@ BusDigital::BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com) void BusDigital::show() { if (!_valid) return; - #ifdef WLED_DEBUG - static unsigned long sumMicros = 0; - static size_t calls = 0; - unsigned long microsStart = micros(); - #endif PolyBus::setBrightness(_busPtr, _iType, _bri); if (buffering) { // should be _data != nullptr, but that causes ~20% FPS drop size_t channels = Bus::hasWhite(_type) + 3*Bus::hasRGB(_type); @@ -159,14 +154,6 @@ void BusDigital::show() { } PolyBus::show(_busPtr, _iType); PolyBus::setBrightness(_busPtr, _iType, 255); // restore full brightness at bus level (setting unscaled pixel color) - #ifdef WLED_DEBUG - sumMicros += micros() - microsStart; - if (++calls == 100) { - DEBUG_PRINTF("Bus calls: %d micros: %lu avg: %lu\n", calls, sumMicros, sumMicros/calls); - sumMicros = 0; - calls = 0; - } - #endif } bool BusDigital::canShow() { diff --git a/wled00/json.cpp b/wled00/json.cpp index bff9f3624..8858e9c90 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -22,7 +22,7 @@ bool deserializeSegment(JsonObject elem, byte it, byte presetId) int stop = elem["stop"] | -1; - // if using vectors use this code to append segment + // append segment if (id >= strip.getSegmentsNum()) { if (stop <= 0) return false; // ignore empty/inactive segments strip.appendSegment(Segment(0, strip.getLengthTotal())); @@ -110,7 +110,10 @@ bool deserializeSegment(JsonObject elem, byte it, byte presetId) of = offsetAbs; } if (stop > start && of > len -1) of = len -1; - seg.setUp(start, stop, grp, spc, of, startY, stopY); + + // update segment (delete if necessary) + // we must not change segment dimensions during drawing of effects as that may produce undesired behaviour (crash) + seg.setUp(start, stop, grp, spc, of, startY, stopY, !strip.isServicing()); if (seg.reset && seg.stop == 0) return true; // segment was deleted & is marked for reset, no need to change anything else @@ -468,12 +471,14 @@ void serializeSegment(JsonObject& root, Segment& seg, byte id, bool forPreset, b if (segmentBounds) { root["start"] = seg.start; root["stop"] = seg.stop; + #ifndef WLED_DISABLE_2D if (strip.isMatrix) { root[F("startY")] = seg.startY; root[F("stopY")] = seg.stopY; } + #endif } - if (!forPreset) root["len"] = (seg.stop >= seg.start) ? (seg.stop - seg.start) : 0; + if (!forPreset) root["len"] = seg.stop - seg.start; root["grp"] = seg.grouping; root[F("spc")] = seg.spacing; root[F("of")] = seg.offset; diff --git a/wled00/wled.cpp b/wled00/wled.cpp index a732bba3c..e51fc37bb 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -23,7 +23,7 @@ void WLED::reset() #ifdef WLED_ENABLE_WEBSOCKETS ws.closeAll(1012); #endif - long dly = millis(); + unsigned long dly = millis(); while (millis() - dly < 450) { yield(); // enough time to send response to client } @@ -36,13 +36,17 @@ void WLED::loop() { #ifdef WLED_DEBUG static unsigned long lastRun = 0; - size_t loopDelay = (millis() - lastRun); + unsigned long loopMillis = millis(); + size_t loopDelay = loopMillis - lastRun; if (lastRun == 0) loopDelay=0; // startup - don't have valid data from last run. - if (loopDelay > 2) DEBUG_PRINTF("Loop delayed more than %dms.\n", loopDelay); + if (loopDelay > 2) DEBUG_PRINTF("Loop delayed more than %ums.\n", loopDelay); + static unsigned long maxLoopMillis = 0; + static size_t avgLoopMillis = 0; static unsigned long maxUsermodMillis = 0; static size_t avgUsermodMillis = 0; static unsigned long maxStripMillis = 0; static size_t avgStripMillis = 0; + unsigned long stripMillis; #endif handleTime(); @@ -84,6 +88,9 @@ void WLED::loop() yield(); } + #ifdef WLED_DEBUG + stripMillis = millis(); + #endif if (!realtimeMode || realtimeOverride || (realtimeMode && useMainSegmentOnly)) // block stuff if WARLS/Adalight is enabled { if (apActive) dnsServer.processNextRequest(); @@ -102,22 +109,18 @@ void WLED::loop() handlePresets(); yield(); - #ifdef WLED_DEBUG - unsigned long stripMillis = millis(); - #endif if (!offMode || strip.isOffRefreshRequired()) strip.service(); #ifdef ESP8266 else if (!noWifiSleep) delay(1); //required to make sure ESP enters modem sleep (see #1184) #endif - #ifdef WLED_DEBUG - stripMillis = millis() - stripMillis; - if (stripMillis > 50) DEBUG_PRINTLN("Slow strip."); - avgStripMillis += stripMillis; - if (stripMillis > maxStripMillis) maxStripMillis = stripMillis; - #endif } + #ifdef WLED_DEBUG + stripMillis = millis() - stripMillis; + avgStripMillis += stripMillis; + if (stripMillis > maxStripMillis) maxStripMillis = stripMillis; + #endif yield(); #ifdef ESP8266 @@ -186,8 +189,31 @@ void WLED::loop() handleWs(); handleStatusLED(); + toki.resetTick(); + +#if WLED_WATCHDOG_TIMEOUT > 0 + // we finished our mainloop, reset the watchdog timer + if (!strip.isUpdating()) + #ifdef ARDUINO_ARCH_ESP32 + esp_task_wdt_reset(); + #else + ESP.wdtFeed(); + #endif +#endif + + if (doReboot && (!doInitBusses || !doSerializeConfig)) // if busses have to be inited & saved, wait until next iteration + reset(); + // DEBUG serial logging (every 30s) #ifdef WLED_DEBUG + loopMillis = millis() - loopMillis; + if (loopMillis > 30) { + DEBUG_PRINTF("Loop took %lums.\n", loopMillis); + DEBUG_PRINTF("Usermods took %lums.\n", usermodMillis); + DEBUG_PRINTF("Strip took %lums.\n", stripMillis); + } + avgLoopMillis += loopMillis; + if (loopMillis > maxLoopMillis) maxLoopMillis = loopMillis; if (millis() - debugTime > 29999) { DEBUG_PRINTLN(F("---DEBUG INFO---")); DEBUG_PRINT(F("Runtime: ")); DEBUG_PRINTLN(millis()); @@ -210,11 +236,13 @@ void WLED::loop() DEBUG_PRINT(F("Client IP: ")); DEBUG_PRINTLN(Network.localIP()); if (loops > 0) { // avoid division by zero DEBUG_PRINT(F("Loops/sec: ")); DEBUG_PRINTLN(loops / 30); + DEBUG_PRINT(F("Loop time[ms]: ")); DEBUG_PRINT(avgLoopMillis/loops); DEBUG_PRINT("/");DEBUG_PRINTLN(maxLoopMillis); DEBUG_PRINT(F("UM time[ms]: ")); DEBUG_PRINT(avgUsermodMillis/loops); DEBUG_PRINT("/");DEBUG_PRINTLN(maxUsermodMillis); DEBUG_PRINT(F("Strip time[ms]: ")); DEBUG_PRINT(avgStripMillis/loops); DEBUG_PRINT("/"); DEBUG_PRINTLN(maxStripMillis); } strip.printSize(); loops = 0; + maxLoopMillis = 0; maxUsermodMillis = 0; maxStripMillis = 0; avgUsermodMillis = 0; @@ -224,20 +252,6 @@ void WLED::loop() loops++; lastRun = millis(); #endif // WLED_DEBUG - toki.resetTick(); - -#if WLED_WATCHDOG_TIMEOUT > 0 - // we finished our mainloop, reset the watchdog timer - if (!strip.isUpdating()) - #ifdef ARDUINO_ARCH_ESP32 - esp_task_wdt_reset(); - #else - ESP.wdtFeed(); - #endif -#endif - - if (doReboot && (!doInitBusses || !doSerializeConfig)) // if busses have to be inited & saved, wait until next iteration - reset(); } void WLED::enableWatchdog() { diff --git a/wled00/wled.h b/wled00/wled.h index 71b481387..c94877898 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2307090 +#define VERSION 2307120 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG @@ -513,7 +513,7 @@ WLED_GLOBAL uint16_t userVar0 _INIT(0), userVar1 _INIT(0); //available for use i // wifi WLED_GLOBAL bool apActive _INIT(false); WLED_GLOBAL bool forceReconnect _INIT(false); -WLED_GLOBAL uint32_t lastReconnectAttempt _INIT(0); +WLED_GLOBAL unsigned long lastReconnectAttempt _INIT(0); WLED_GLOBAL bool interfacesInited _INIT(false); WLED_GLOBAL bool wasConnected _INIT(false); From 4766666913eb6e1eb4e4c34e3729bf5e5a951808 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Thu, 13 Jul 2023 03:09:42 +0200 Subject: [PATCH 40/70] Static queued segment bounds (saves 180 bytes of RAM) Fixed segment index not increasing on inactive segments --- wled00/FX.h | 7 ++-- wled00/FX_fcn.cpp | 86 +++++++++++++++++++++++++++-------------------- wled00/json.cpp | 9 +++-- 3 files changed, 58 insertions(+), 44 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index 21f9d08c9..75a5a4c9e 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -395,8 +395,8 @@ typedef struct Segment { uint16_t _dataLen; static uint16_t _usedSegmentData; - uint16_t _qStart, _qStop, _qStartY, _qStopY; - bool _queuedChanges; + static uint16_t _qStart, _qStop, _qStartY, _qStopY; + static uint8_t _queuedChangesSegId; // transition data, valid only if transitional==true, holds values during transition (72 bytes) struct Transition { @@ -466,7 +466,6 @@ typedef struct Segment { data(nullptr), _capabilities(0), _dataLen(0), - _queuedChanges(false), _t(nullptr) { //refreshLightCapabilities(); @@ -515,7 +514,7 @@ typedef struct Segment { static uint16_t getUsedSegmentData(void) { return _usedSegmentData; } static void addUsedSegmentData(int len) { _usedSegmentData += len; } - void setUp(uint16_t i1, uint16_t i2, uint8_t grp=1, uint8_t spc=0, uint16_t ofs=UINT16_MAX, uint16_t i1Y=0, uint16_t i2Y=1, bool immediate=false); + void setUp(uint16_t i1, uint16_t i2, uint8_t grp=1, uint8_t spc=0, uint16_t ofs=UINT16_MAX, uint16_t i1Y=0, uint16_t i2Y=1, uint8_t segId = 255); bool setColor(uint8_t slot, uint32_t c); //returns true if changed void setCCT(uint16_t k); void setOpacity(uint8_t o); diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index bf26dbfc3..6160ef567 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -76,6 +76,9 @@ uint16_t Segment::_usedSegmentData = 0U; // amount of RAM all segments use for their data[] uint16_t Segment::maxWidth = DEFAULT_LED_COUNT; uint16_t Segment::maxHeight = 1; +uint8_t Segment::_queuedChangesSegId = 255U; +uint16_t Segment::_qStart = 0, Segment::_qStop = 0; +uint16_t Segment::_qStartY = 0, Segment::_qStopY = 0; // copy constructor Segment::Segment(const Segment &orig) { @@ -174,12 +177,15 @@ void Segment::deallocateData() { * may free that data buffer. */ void Segment::resetIfRequired() { - if (reset) { - deallocateData(); - next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0; - if (_queuedChanges) setUp(_qStart, _qStop, grouping, spacing, offset, _qStartY, _qStopY, true); - reset = false; // setOption(SEG_OPTION_RESET, false); + if (!reset) return; + + deallocateData(); + next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0; + if (_queuedChangesSegId == strip.getCurrSegmentId()) { // apply queued changes + setUp(_qStart, _qStop, grouping, spacing, offset, _qStartY, _qStopY); + _queuedChangesSegId = 255; } + reset = false; } CRGBPalette16 &Segment::loadPalette(CRGBPalette16 &targetPalette, uint8_t pal) { @@ -354,8 +360,10 @@ void Segment::handleTransition() { } } -void Segment::setUp(uint16_t i1, uint16_t i2, uint8_t grp, uint8_t spc, uint16_t ofs, uint16_t i1Y, uint16_t i2Y, bool immediate) { - _queuedChanges = false; // cancel anything queued +// segId is given when called from network callback, changes are queued if that segment is currently in its effect function +void Segment::setUp(uint16_t i1, uint16_t i2, uint8_t grp, uint8_t spc, uint16_t ofs, uint16_t i1Y, uint16_t i2Y, uint8_t segId) { + if (_queuedChangesSegId == segId) _queuedChangesSegId = 255; // cancel queued change if already queued for this segment + // return if neither bounds nor grouping have changed bool boundsUnchanged = (start == i1 && stop == i2); #ifndef WLED_DISABLE_2D @@ -376,36 +384,39 @@ void Segment::setUp(uint16_t i1, uint16_t i2, uint8_t grp, uint8_t spc, uint16_t if (ofs < UINT16_MAX) offset = ofs; markForReset(); - if (!boundsUnchanged) { - if (immediate) { - if (i2 <= i1) { //disable segment - stop = 0; - return; - } - if (i1 < Segment::maxWidth || (i1 >= Segment::maxWidth*Segment::maxHeight && i1 < strip.getLengthTotal())) start = i1; // Segment::maxWidth equals strip.getLengthTotal() for 1D - stop = i2 > Segment::maxWidth*Segment::maxHeight ? MIN(i2,strip.getLengthTotal()) : (i2 > Segment::maxWidth ? Segment::maxWidth : MAX(1,i2)); - startY = 0; - stopY = 1; - #ifndef WLED_DISABLE_2D - if (Segment::maxHeight>1) { // 2D - if (i1Y < Segment::maxHeight) startY = i1Y; - stopY = i2Y > Segment::maxHeight ? Segment::maxHeight : MAX(1,i2Y); - } - #endif - // safety check - if (start >= stop || startY >= stopY) { - stop = 0; - return; - } - if (!boundsUnchanged) refreshLightCapabilities(); - } else { - _qStart = i1; - _qStop = i2; - _qStartY = i1Y; - _qStopY = i2Y; - _queuedChanges = true; - } + if (boundsUnchanged) return; // TODO test if it is save to change grp/spc/ofs without queueing + // queuing a change for a second segment will lead to the loss of the first change if not yet applied + // however this is not a problem as the queued change is applied immediately after the effect function in that segment returns + if (segId < MAX_NUM_SEGMENTS && segId == strip.getCurrSegmentId() && strip.isServicing()) { // queue change to prevent concurrent access + _qStart = i1; + _qStop = i2; + _qStartY = i1Y; + _qStopY = i2Y; + _queuedChangesSegId = segId; + return; // queued changes are applied immediately after effect function returns } + + // apply change immediately + if (i2 <= i1) { //disable segment + stop = 0; + return; + } + if (i1 < Segment::maxWidth || (i1 >= Segment::maxWidth*Segment::maxHeight && i1 < strip.getLengthTotal())) start = i1; // Segment::maxWidth equals strip.getLengthTotal() for 1D + stop = i2 > Segment::maxWidth*Segment::maxHeight ? MIN(i2,strip.getLengthTotal()) : (i2 > Segment::maxWidth ? Segment::maxWidth : MAX(1,i2)); + startY = 0; + stopY = 1; + #ifndef WLED_DISABLE_2D + if (Segment::maxHeight>1) { // 2D + if (i1Y < Segment::maxHeight) startY = i1Y; + stopY = i2Y > Segment::maxHeight ? Segment::maxHeight : MAX(1,i2Y); + } + #endif + // safety check + if (start >= stop || startY >= stopY) { + stop = 0; + return; + } + refreshLightCapabilities(); } @@ -1087,7 +1098,7 @@ void WS2812FX::service() { // reset the segment runtime data if needed seg.resetIfRequired(); - if (!seg.isActive()) continue; + if (!seg.isActive()) { _segment_index++; continue; } // last condition ensures all solid segments are updated at the same time if(nowUp > seg.next_time || _triggered || (doShow && seg.mode == FX_MODE_STATIC)) @@ -1115,6 +1126,7 @@ void WS2812FX::service() { seg.next_time = nowUp + delay; } + seg.resetIfRequired(); // another reset chance, mainly to apply new segment bounds if queued _segment_index++; } _virtualSegmentLength = 0; diff --git a/wled00/json.cpp b/wled00/json.cpp index 8858e9c90..cbf1407c2 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -112,8 +112,8 @@ bool deserializeSegment(JsonObject elem, byte it, byte presetId) if (stop > start && of > len -1) of = len -1; // update segment (delete if necessary) - // we must not change segment dimensions during drawing of effects as that may produce undesired behaviour (crash) - seg.setUp(start, stop, grp, spc, of, startY, stopY, !strip.isServicing()); + // we must not change segment dimensions during drawing of effects in that segment as concurrent access may cause a crash + seg.setUp(start, stop, grp, spc, of, startY, stopY, id); if (seg.reset && seg.stop == 0) return true; // segment was deleted & is marked for reset, no need to change anything else @@ -1065,7 +1065,10 @@ void serveJson(AsyncWebServerRequest* request) DEBUG_PRINTF("JSON buffer size: %u for request: %d\n", lDoc.memoryUsage(), subJson); - size_t len = response->setLength(); + #ifdef WLED_DEBUG + size_t len = + #endif + response->setLength(); DEBUG_PRINT(F("JSON content length: ")); DEBUG_PRINTLN(len); request->send(response); From 72a72dbc88ed73794e3148b1c519b98e71c12f5d Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 13 Jul 2023 12:49:19 +0200 Subject: [PATCH 41/70] proper rounding of FPS --- wled00/FX_fcn.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 6160ef567..c0949ae3b 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1275,7 +1275,7 @@ void WS2812FX::show(void) { size_t diff = now - _lastShow; size_t fpsCurr = 200; if (diff > 0) fpsCurr = 1000 / diff; - _cumulativeFps = (3 * _cumulativeFps + fpsCurr) >> 2; + _cumulativeFps = (3 * _cumulativeFps + fpsCurr +2) >> 2; // "+2" for proper rounding (2/4 = 0.5) _lastShow = now; } From 5e20abd7f18f745f6f4ef1369513f9ace411b4f8 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Thu, 13 Jul 2023 13:08:36 +0200 Subject: [PATCH 42/70] Move segment bounds queuing to WS2812FX --- wled00/FX.h | 22 +++++++++++++----- wled00/FX_fcn.cpp | 57 ++++++++++++++++++++++++----------------------- wled00/json.cpp | 5 +++-- wled00/set.cpp | 2 +- 4 files changed, 50 insertions(+), 36 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index 75a5a4c9e..d94266249 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -395,9 +395,6 @@ typedef struct Segment { uint16_t _dataLen; static uint16_t _usedSegmentData; - static uint16_t _qStart, _qStop, _qStartY, _qStopY; - static uint8_t _queuedChangesSegId; - // transition data, valid only if transitional==true, holds values during transition (72 bytes) struct Transition { uint32_t _colorT[NUM_COLORS]; @@ -689,7 +686,15 @@ class WS2812FX { // 96 bytes customMappingSize(0), _lastShow(0), _segment_index(0), - _mainSegment(0) + _mainSegment(0), + _queuedChangesSegId(255), + _qStart(0), + _qStop(0), + _qStartY(0), + _qStopY(0), + _qGrouping(0), + _qSpacing(0), + _qOffset(0) { WS2812FX::instance = this; _mode.reserve(_modeCount); // allocate memory to prevent initial fragmentation (does not increase size()) @@ -745,7 +750,7 @@ class WS2812FX { // 96 bytes inline void trigger(void) { _triggered = true; } // Forces the next frame to be computed on all active segments. inline void setShowCallback(show_callback cb) { _callback = cb; } inline void setTransition(uint16_t t) { _transitionDur = t; } - inline void appendSegment(const Segment &seg = Segment()) { _segments.push_back(seg); } + inline void appendSegment(const Segment &seg = Segment()) { if (_segments.size() < getMaxSegments()) _segments.push_back(seg); } bool checkSegmentAlignment(void), @@ -899,9 +904,16 @@ class WS2812FX { // 96 bytes uint8_t _segment_index; uint8_t _mainSegment; + uint8_t _queuedChangesSegId; + uint16_t _qStart, _qStop, _qStartY, _qStopY; + uint8_t _qGrouping, _qSpacing; + uint16_t _qOffset; uint8_t estimateCurrentAndLimitBri(void); + + void + setUpSegmentFromQueuedChanges(void); }; extern const char JSON_mode_names[]; diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index c0949ae3b..3518e223b 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -76,9 +76,6 @@ uint16_t Segment::_usedSegmentData = 0U; // amount of RAM all segments use for their data[] uint16_t Segment::maxWidth = DEFAULT_LED_COUNT; uint16_t Segment::maxHeight = 1; -uint8_t Segment::_queuedChangesSegId = 255U; -uint16_t Segment::_qStart = 0, Segment::_qStop = 0; -uint16_t Segment::_qStartY = 0, Segment::_qStopY = 0; // copy constructor Segment::Segment(const Segment &orig) { @@ -181,10 +178,6 @@ void Segment::resetIfRequired() { deallocateData(); next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0; - if (_queuedChangesSegId == strip.getCurrSegmentId()) { // apply queued changes - setUp(_qStart, _qStop, grouping, spacing, offset, _qStartY, _qStopY); - _queuedChangesSegId = 255; - } reset = false; } @@ -362,8 +355,6 @@ void Segment::handleTransition() { // segId is given when called from network callback, changes are queued if that segment is currently in its effect function void Segment::setUp(uint16_t i1, uint16_t i2, uint8_t grp, uint8_t spc, uint16_t ofs, uint16_t i1Y, uint16_t i2Y, uint8_t segId) { - if (_queuedChangesSegId == segId) _queuedChangesSegId = 255; // cancel queued change if already queued for this segment - // return if neither bounds nor grouping have changed bool boundsUnchanged = (start == i1 && stop == i2); #ifndef WLED_DISABLE_2D @@ -384,17 +375,7 @@ void Segment::setUp(uint16_t i1, uint16_t i2, uint8_t grp, uint8_t spc, uint16_t if (ofs < UINT16_MAX) offset = ofs; markForReset(); - if (boundsUnchanged) return; // TODO test if it is save to change grp/spc/ofs without queueing - // queuing a change for a second segment will lead to the loss of the first change if not yet applied - // however this is not a problem as the queued change is applied immediately after the effect function in that segment returns - if (segId < MAX_NUM_SEGMENTS && segId == strip.getCurrSegmentId() && strip.isServicing()) { // queue change to prevent concurrent access - _qStart = i1; - _qStop = i2; - _qStartY = i1Y; - _qStopY = i2Y; - _queuedChangesSegId = segId; - return; // queued changes are applied immediately after effect function returns - } + if (boundsUnchanged) return; // apply change immediately if (i2 <= i1) { //disable segment @@ -1098,10 +1079,8 @@ void WS2812FX::service() { // reset the segment runtime data if needed seg.resetIfRequired(); - if (!seg.isActive()) { _segment_index++; continue; } - // last condition ensures all solid segments are updated at the same time - if(nowUp > seg.next_time || _triggered || (doShow && seg.mode == FX_MODE_STATIC)) + if (seg.isActive() && (nowUp > seg.next_time || _triggered || (doShow && seg.mode == FX_MODE_STATIC))) { doShow = true; uint16_t delay = FRAMETIME; @@ -1126,7 +1105,7 @@ void WS2812FX::service() { seg.next_time = nowUp + delay; } - seg.resetIfRequired(); // another reset chance, mainly to apply new segment bounds if queued + if (_segment_index == _queuedChangesSegId) setUpSegmentFromQueuedChanges(); _segment_index++; } _virtualSegmentLength = 0; @@ -1453,10 +1432,32 @@ Segment& WS2812FX::getSegment(uint8_t id) { return _segments[id >= _segments.size() ? getMainSegmentId() : id]; // vectors } -// compatibility method (deprecated) -void WS2812FX::setSegment(uint8_t n, uint16_t i1, uint16_t i2, uint8_t grouping, uint8_t spacing, uint16_t offset, uint16_t startY, uint16_t stopY) { - if (n >= _segments.size()) return; - _segments[n].setUp(i1, i2, grouping, spacing, offset, startY, stopY); +// sets new segment bounds, queues if that segment is currently running +void WS2812FX::setSegment(uint8_t segId, uint16_t i1, uint16_t i2, uint8_t grouping, uint8_t spacing, uint16_t offset, uint16_t startY, uint16_t stopY) { + if (segId >= getSegmentsNum()) { + if (i2 <= i1) return; // do not append empty/inactive segments + appendSegment(Segment(0, strip.getLengthTotal())); + segId = getSegmentsNum()-1; // segments are added at the end of list + } + + if (_queuedChangesSegId == segId) _queuedChangesSegId = 255; // cancel queued change if already queued for this segment + + if (segId < getMaxSegments() && segId == getCurrSegmentId() && isServicing()) { // queue change to prevent concurrent access + // queuing a change for a second segment will lead to the loss of the first change if not yet applied + // however this is not a problem as the queued change is applied immediately after the effect function in that segment returns + _qStart = i1; _qStop = i2; _qStartY = startY; _qStopY = stopY; + _qGrouping = grouping; _qSpacing = spacing; _qOffset = offset; + _queuedChangesSegId = segId; + return; // queued changes are applied immediately after effect function returns + } + + _segments[segId].setUp(i1, i2, grouping, spacing, offset, startY, stopY); +} + +void WS2812FX::setUpSegmentFromQueuedChanges() { + if (_queuedChangesSegId >= getSegmentsNum()) return; + getSegment(_queuedChangesSegId).setUp(_qStart, _qStop, _qGrouping, _qSpacing, _qOffset, _qStartY, _qStopY); + _queuedChangesSegId = 255; } void WS2812FX::restartRuntime() { diff --git a/wled00/json.cpp b/wled00/json.cpp index cbf1407c2..c0c729890 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -112,8 +112,9 @@ bool deserializeSegment(JsonObject elem, byte it, byte presetId) if (stop > start && of > len -1) of = len -1; // update segment (delete if necessary) - // we must not change segment dimensions during drawing of effects in that segment as concurrent access may cause a crash - seg.setUp(start, stop, grp, spc, of, startY, stopY, id); + // do not call seg.setUp() here, as it may cause a crash due to concurrent access if the segment is currently drawing effects + // WS2812FX handles queueing of the change + strip.setSegment(id, start, stop, grp, spc, of, startY, stopY); if (seg.reset && seg.stop == 0) return true; // segment was deleted & is marked for reset, no need to change anything else diff --git a/wled00/set.cpp b/wled00/set.cpp index fb3e40c2d..71db6c067 100644 --- a/wled00/set.cpp +++ b/wled00/set.cpp @@ -797,7 +797,7 @@ bool handleSet(AsyncWebServerRequest *request, const String& req, bool apply) if (pos > 0) { spcI = getNumVal(&req, pos); } - selseg.setUp(startI, stopI, grpI, spcI, UINT16_MAX, startY, stopY); + strip.setSegment(selectedSeg, startI, stopI, grpI, spcI, UINT16_MAX, startY, stopY); pos = req.indexOf(F("RV=")); //Segment reverse if (pos > 0) selseg.reverse = req.charAt(pos+3) != '0'; From 630205618298cae6d437e86550e58492ae6fd4c3 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Thu, 13 Jul 2023 22:21:15 +0200 Subject: [PATCH 43/70] Add ability to toggle devices from nodes view. --- wled00/NodeStruct.h | 14 +- wled00/data/index.css | 7 +- wled00/data/index.js | 28 +- wled00/html_ui.h | 3987 +++++++++++++++++++++-------------------- wled00/udp.cpp | 1 + wled00/wled.h | 2 +- 6 files changed, 2042 insertions(+), 1997 deletions(-) diff --git a/wled00/NodeStruct.h b/wled00/NodeStruct.h index 916c5a9a3..2d4d3609b 100644 --- a/wled00/NodeStruct.h +++ b/wled00/NodeStruct.h @@ -9,9 +9,9 @@ #include #define NODE_TYPE_ID_UNDEFINED 0 -#define NODE_TYPE_ID_ESP8266 82 -#define NODE_TYPE_ID_ESP32 32 -#define NODE_TYPE_ID_ESP32S2 33 +#define NODE_TYPE_ID_ESP8266 82 // should be 1 +#define NODE_TYPE_ID_ESP32 32 // should be 2 +#define NODE_TYPE_ID_ESP32S2 33 // etc #define NODE_TYPE_ID_ESP32S3 34 #define NODE_TYPE_ID_ESP32C3 35 @@ -23,7 +23,13 @@ struct NodeStruct String nodeName; IPAddress ip; uint8_t age; - uint8_t nodeType; + union { + uint8_t nodeType; // a waste of space as we only have 5 types + struct { + uint8_t type : 7; // still a waste of space (4 bits would be enough and future-proof) + bool on : 1; + }; + }; uint32_t build; NodeStruct() : age(0), nodeType(0), build(0) diff --git a/wled00/data/index.css b/wled00/data/index.css index 5be49819f..049e6f03e 100644 --- a/wled00/data/index.css +++ b/wled00/data/index.css @@ -134,7 +134,7 @@ button { .off { color: var(--c-6) !important; - cursor: default !important; + /* cursor: default !important; */ } .top .icons, .bot .icons { @@ -1010,7 +1010,7 @@ textarea { width: 50px !important; } -.segname, .pname { +.segname, .pname, .bname { white-space: nowrap; text-align: center; overflow: hidden; @@ -1020,6 +1020,9 @@ textarea { max-width: 170px; position: relative; } +.bname { + padding: 0 24px; +} .segname .flr, .pname .flr { transform: rotate(0deg); diff --git a/wled00/data/index.js b/wled00/data/index.js index 62484631a..9aa7a4b70 100644 --- a/wled00/data/index.js +++ b/wled00/data/index.js @@ -1004,10 +1004,15 @@ function generateListItemHtml(listName, id, name, clickAction, extraHtml = '', e function btype(b) { switch (b) { + case 2: case 32: return "ESP32"; + case 3: case 33: return "ESP32-S2"; + case 4: case 34: return "ESP32-S3"; + case 5: case 35: return "ESP32-C3"; + case 1: case 82: return "ESP8266"; } return "?"; @@ -1028,8 +1033,9 @@ function populateNodes(i,n) n.nodes.sort((a,b) => (a.name).localeCompare(b.name)); for (var o of n.nodes) { if (o.name) { - var url = ``; - urows += inforow(url,`${btype(o.type)}
${o.vid==0?"N/A":o.vid}`); + let onoff = ``; + var url = ``; + urows += inforow(url,`${btype(o.type&0x7F)}
${o.vid==0?"N/A":o.vid}`); nnodes++; } } @@ -2571,6 +2577,24 @@ function setBalance(b) requestJson(obj); } +function rmtTgl(ip,i) { + event.preventDefault(); + event.stopPropagation(); + fetch(`http://${ip}/win&T=2`, {method: 'get'}) + .then((r)=>{ + return r.text(); + }) + .then((t)=>{ + let c = (new window.DOMParser()).parseFromString(t, "text/xml"); + // perhaps just i.classList.toggle("off"); would be enough + if (c.getElementsByTagName('ac')[0].textContent === "0") { + i.classList.add("off"); + } else { + i.classList.remove("off"); + } + }); +} + var hc = 0; setInterval(()=>{ if (!isInfo) return; diff --git a/wled00/html_ui.h b/wled00/html_ui.h index 066d7bfdc..5952efee3 100644 --- a/wled00/html_ui.h +++ b/wled00/html_ui.h @@ -7,1994 +7,2005 @@ */ // Autogenerated from wled00/data/index.htm, do not edit!! -const uint16_t PAGE_index_L = 31804; +const uint16_t PAGE_index_L = 31981; const uint8_t PAGE_index[] PROGMEM = { 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xcc, 0xbd, 0xe9, 0x76, 0xe2, 0xca, - 0xb2, 0x30, 0xf8, 0xdf, 0x4f, 0xa1, 0x52, 0xed, 0x53, 0x05, 0x1b, 0x19, 0xc4, 0x68, 0x86, 0xc2, - 0xfe, 0x30, 0x9e, 0x67, 0x1b, 0xcf, 0x75, 0x6b, 0xdd, 0x12, 0x90, 0x80, 0x6c, 0x21, 0xc9, 0x92, - 0x18, 0x6c, 0x8a, 0xfb, 0x18, 0xdf, 0x5a, 0xfd, 0x02, 0xfd, 0xa3, 0xfb, 0xad, 0xfa, 0x49, 0x3a, - 0x22, 0x53, 0x43, 0x4a, 0x08, 0xec, 0xaa, 0xb3, 0xef, 0x5d, 0xdf, 0x3e, 0xa7, 0x8c, 0x94, 0x63, - 0x64, 0x64, 0x64, 0x64, 0x44, 0x64, 0x64, 0xe8, 0xdb, 0xa7, 0x9d, 0xf3, 0xe6, 0xf5, 0xc3, 0xc5, - 0xae, 0x30, 0x70, 0x86, 0xda, 0xa6, 0xf0, 0x0d, 0x7f, 0x04, 0x4d, 0xd1, 0xfb, 0x75, 0x91, 0xe8, - 0x22, 0x26, 0x10, 0xa5, 0x0b, 0x3f, 0x43, 0xe2, 0x28, 0x82, 0xae, 0x0c, 0x49, 0x5d, 0x1c, 0xab, - 0x64, 0x62, 0x1a, 0x96, 0x23, 0x0a, 0x6b, 0x1d, 0x43, 0x77, 0x88, 0xee, 0xd4, 0xc5, 0x89, 0xda, - 0x75, 0x06, 0xf5, 0x2e, 0x19, 0xab, 0x1d, 0xb2, 0x4e, 0x5f, 0x24, 0x55, 0x57, 0x1d, 0x55, 0xd1, - 0xd6, 0xed, 0x8e, 0xa2, 0x91, 0x7a, 0x56, 0x1a, 0x42, 0xc2, 0x70, 0x34, 0xf4, 0xde, 0x45, 0xaf, - 0xd1, 0xb5, 0xce, 0x40, 0xb1, 0x6c, 0x02, 0x8d, 0x8c, 0x9c, 0xde, 0x7a, 0x59, 0x0c, 0x77, 0xe6, - 0x0c, 0xc8, 0x90, 0xac, 0x77, 0x0c, 0xcd, 0xb0, 0x44, 0xc1, 0xef, 0xee, 0x73, 0x8e, 0xfe, 0xc7, - 0xb5, 0xe1, 0xe5, 0xbc, 0x12, 0x5b, 0x74, 0xab, 0x2a, 0xa6, 0xa9, 0x91, 0xf5, 0xa1, 0xd1, 0x56, - 0xe1, 0x67, 0x42, 0xda, 0xeb, 0x90, 0xb0, 0xde, 0x51, 0x4c, 0xa5, 0xad, 0x11, 0xac, 0xa9, 0xa9, - 0xfa, 0xb3, 0x60, 0x11, 0xad, 0x2e, 0xda, 0x03, 0x18, 0x4e, 0x67, 0xe4, 0x08, 0x2a, 0xb4, 0x03, - 0xc3, 0x1a, 0x58, 0xa4, 0x57, 0x17, 0xbb, 0x8a, 0xa3, 0x54, 0xd5, 0xa1, 0xd2, 0x27, 0x99, 0xe9, - 0x3a, 0xe6, 0xd4, 0xda, 0x8a, 0x4d, 0x4a, 0x05, 0xa9, 0xd1, 0x68, 0x6c, 0x37, 0x1a, 0xbb, 0x8d, - 0x5d, 0xf8, 0x8b, 0xbf, 0xfb, 0x8d, 0xe6, 0x3e, 0x3e, 0xed, 0xf5, 0xe1, 0xcf, 0xa1, 0x76, 0x79, - 0xfd, 0xdc, 0x39, 0x6b, 0x0e, 0x8c, 0x63, 0x4c, 0xdb, 0xb9, 0xd1, 0x0e, 0xaf, 0xf6, 0x0e, 0xf1, - 0xf1, 0x92, 0x95, 0xee, 0xd3, 0xb2, 0x07, 0x99, 0x8b, 0xcc, 0x03, 0xa6, 0xec, 0x66, 0x8f, 0xae, - 0x76, 0xf7, 0x6e, 0xce, 0x0f, 0xb3, 0x4f, 0x90, 0x94, 0xb9, 0x98, 0x9c, 0x4f, 0xfb, 0x67, 0xfb, - 0xa4, 0x71, 0x73, 0x3a, 0xdd, 0xad, 0xec, 0x97, 0x3a, 0x97, 0xcd, 0xe3, 0x9d, 0xbb, 0xc6, 0xc0, - 0x6c, 0xec, 0x3c, 0xe6, 0x7a, 0xe5, 0x8b, 0xd3, 0xa7, 0xed, 0x56, 0xfe, 0xf2, 0x4e, 0x2e, 0x5f, - 0x1e, 0xe7, 0xe4, 0x63, 0xe5, 0xb1, 0x99, 0xeb, 0xf7, 0x9a, 0x95, 0x41, 0x53, 0x7f, 0x31, 0x46, - 0xc6, 0x59, 0xbf, 0x71, 0xd5, 0x7f, 0xd8, 0x78, 0x3b, 0x9d, 0x36, 0x5e, 0xcf, 0xb4, 0x9b, 0xee, - 0xe5, 0x81, 0x76, 0xaf, 0x36, 0xb4, 0xf3, 0xdc, 0xe9, 0x4e, 0x63, 0xa7, 0x94, 0xdf, 0xbd, 0x7d, - 0x39, 0x3b, 0x68, 0x10, 0xb9, 0x41, 0x01, 0xd1, 0xf6, 0xae, 0x9f, 0x5b, 0xa3, 0xcb, 0x61, 0xb3, - 0x29, 0x6e, 0xae, 0x09, 0xdf, 0x1c, 0xd5, 0xd1, 0xc8, 0xe6, 0xdd, 0xc9, 0xee, 0xce, 0xb7, 0x0c, - 0x7b, 0x16, 0xbe, 0xd9, 0x1d, 0x4b, 0x35, 0x9d, 0xcd, 0xb5, 0xde, 0x48, 0xef, 0x38, 0xaa, 0xa1, - 0x0b, 0x3d, 0x42, 0xba, 0x6d, 0xa5, 0xf3, 0x9c, 0x48, 0xce, 0xe6, 0x63, 0xc5, 0x12, 0x60, 0xca, - 0x8d, 0xce, 0x68, 0x08, 0x98, 0x4f, 0xf7, 0x89, 0xb3, 0xab, 0x11, 0x7c, 0xb4, 0xb7, 0x5f, 0xaf, - 0x95, 0xfe, 0x19, 0xcc, 0x41, 0x42, 0x44, 0xea, 0x11, 0x93, 0xdf, 0xe5, 0x1f, 0x92, 0x16, 0x14, - 0xed, 0x58, 0x44, 0x71, 0x88, 0x5b, 0x3a, 0x21, 0xb2, 0x5e, 0xc4, 0x64, 0x4d, 0x4b, 0x3b, 0xaf, - 0xa6, 0x3b, 0x71, 0x6a, 0x47, 0xc1, 0x1e, 0x33, 0x4f, 0xca, 0x58, 0x71, 0x0b, 0x48, 0x5a, 0xda, - 0xb6, 0x3a, 0x75, 0x51, 0xb5, 0x8c, 0xf4, 0x93, 0x8d, 0xaf, 0x4a, 0xb7, 0xbb, 0x3b, 0x86, 0x36, - 0x4e, 0x54, 0x1b, 0x66, 0x9f, 0x58, 0x09, 0x51, 0x33, 0xa0, 0x3f, 0x89, 0xd4, 0x37, 0x67, 0x1d, - 0x53, 0xed, 0x3c, 0xd7, 0x75, 0x32, 0x11, 0xb0, 0x7c, 0x13, 0x09, 0xe8, 0x02, 0x52, 0xb0, 0xd0, - 0x67, 0x93, 0x3e, 0x88, 0xd2, 0x8c, 0x52, 0x6a, 0x35, 0x57, 0x92, 0xa5, 0xc9, 0x80, 0x10, 0xed, - 0x44, 0xed, 0x0f, 0x1c, 0x9d, 0xd8, 0x76, 0xf5, 0x53, 0x96, 0xa5, 0x34, 0xf4, 0xbe, 0x46, 0xaa, - 0xb9, 0x0d, 0xb7, 0xc0, 0x8e, 0x6a, 0x11, 0x8a, 0x89, 0xaa, 0xd8, 0xd1, 0x8c, 0xce, 0xf3, 0x44, - 0xb5, 0x09, 0x00, 0xa2, 0xbc, 0x1a, 0x23, 0xa7, 0xfa, 0x7d, 0xd6, 0x31, 0x86, 0xa6, 0xa1, 0x03, - 0x40, 0x55, 0xec, 0x73, 0xa4, 0xa6, 0xef, 0xb0, 0x92, 0x64, 0x98, 0x58, 0xc5, 0xae, 0xce, 0xe6, - 0xf3, 0x1f, 0xf3, 0xa4, 0x44, 0x21, 0x4b, 0x1b, 0x7a, 0x42, 0x54, 0x75, 0x13, 0xea, 0x11, 0x1d, - 0x40, 0x4e, 0x24, 0x01, 0x66, 0x58, 0x05, 0x14, 0xd0, 0x44, 0x36, 0x19, 0x2a, 0x47, 0xc9, 0xbf, - 0x0a, 0xeb, 0x44, 0xef, 0x13, 0xb7, 0xe8, 0xc8, 0x04, 0xf2, 0x24, 0x17, 0x2d, 0x4d, 0xed, 0x12, - 0xcb, 0x4e, 0x40, 0xf9, 0x1a, 0x4e, 0x88, 0xf3, 0x3e, 0x96, 0x9d, 0x77, 0xb0, 0xec, 0x30, 0x2c, - 0x5b, 0xd8, 0x99, 0x63, 0x8c, 0x3a, 0x03, 0x8a, 0x6c, 0x67, 0x25, 0xb2, 0x69, 0x61, 0xbb, 0x7e, - 0x85, 0x3f, 0xd7, 0xb4, 0x0e, 0x0c, 0x65, 0x64, 0x26, 0xbe, 0xd2, 0x11, 0x7e, 0x67, 0x1d, 0xd2, - 0x42, 0xe2, 0x8f, 0xaf, 0xd2, 0x0c, 0x80, 0xd5, 0x88, 0x03, 0xc0, 0x42, 0xa9, 0x43, 0x58, 0xb8, - 0xd6, 0x58, 0xd1, 0x12, 0x74, 0x58, 0x22, 0xa2, 0x10, 0xf2, 0x88, 0x58, 0xaf, 0x07, 0x43, 0x81, - 0x91, 0x74, 0x5f, 0x5b, 0x0e, 0x0c, 0xe7, 0xcb, 0x97, 0x44, 0x47, 0x23, 0x8a, 0xe5, 0xd7, 0x72, - 0x92, 0x92, 0xa1, 0x9f, 0x00, 0x20, 0x89, 0x64, 0x72, 0x2e, 0x65, 0x65, 0x19, 0x31, 0x07, 0xcd, - 0x5e, 0xab, 0x43, 0x02, 0x93, 0xc2, 0x5a, 0x1d, 0xa4, 0x61, 0xb0, 0x80, 0xe6, 0xe6, 0x40, 0xd5, - 0xba, 0x50, 0xe5, 0x83, 0x05, 0x35, 0xb7, 0xe0, 0xda, 0xb7, 0x8c, 0xbb, 0x12, 0x60, 0x49, 0x38, - 0xaf, 0xb0, 0x34, 0xd6, 0xfe, 0x57, 0x0f, 0x18, 0xce, 0x7a, 0x4f, 0xe9, 0x90, 0x99, 0xfb, 0x34, - 0x54, 0xb5, 0xd7, 0xea, 0xdd, 0x21, 0xb0, 0x09, 0xbb, 0x06, 0x08, 0xac, 0x8e, 0x2c, 0x2d, 0x41, - 0x39, 0x08, 0xe6, 0x67, 0x26, 0x46, 0xaf, 0x97, 0xab, 0x79, 0x9c, 0x8e, 0x32, 0x3a, 0x8f, 0x9b, - 0x74, 0xe5, 0xca, 0xfe, 0x69, 0xbf, 0x41, 0x79, 0x49, 0xa3, 0xa1, 0xdf, 0x34, 0x1a, 0x36, 0x5b, - 0xa0, 0x59, 0xfc, 0x3b, 0xdc, 0x6b, 0x34, 0xf6, 0x1f, 0x87, 0xfd, 0xc6, 0xd2, 0xff, 0xb6, 0x87, - 0x8d, 0x46, 0xff, 0x7e, 0x72, 0xd5, 0x6c, 0xbc, 0x74, 0x1e, 0x8e, 0x1e, 0x0f, 0x1b, 0xd7, 0x0f, - 0xcd, 0xa3, 0xc6, 0xd9, 0xa4, 0xf9, 0x66, 0x34, 0xb6, 0x9b, 0xc0, 0x94, 0x26, 0x0f, 0x07, 0x87, - 0xdb, 0xf6, 0xc6, 0x4e, 0x59, 0x3d, 0x9f, 0xbc, 0xf5, 0x87, 0xf9, 0xd3, 0xfb, 0x53, 0xfd, 0xed, - 0xb1, 0xf9, 0xec, 0xe8, 0x4f, 0x9d, 0xf6, 0x59, 0xea, 0x52, 0x3b, 0x3a, 0x51, 0x8e, 0xf2, 0x23, - 0xed, 0xe6, 0xc4, 0xd4, 0xcc, 0xbb, 0xd2, 0xcd, 0xcb, 0x9d, 0x6a, 0x90, 0x56, 0x25, 0x7b, 0xf4, - 0x4a, 0xe4, 0xa7, 0x1b, 0xed, 0x68, 0xf2, 0x68, 0x15, 0xf5, 0xeb, 0xee, 0x6e, 0xfe, 0x44, 0x77, - 0xba, 0x17, 0xe3, 0x46, 0x3f, 0xd5, 0x73, 0x32, 0xbd, 0xb6, 0x7d, 0x62, 0xef, 0x6b, 0x67, 0x27, - 0xa3, 0x81, 0x36, 0xbc, 0x7c, 0x3a, 0x56, 0x37, 0xce, 0x2e, 0x76, 0x76, 0x0f, 0xfb, 0x93, 0xeb, - 0x21, 0x70, 0x31, 0xa5, 0x34, 0xec, 0x6a, 0xa9, 0xd6, 0xc1, 0xcd, 0xf6, 0x60, 0xf7, 0xb0, 0x7b, - 0xb0, 0x37, 0x55, 0x9e, 0x37, 0xec, 0xc2, 0x6e, 0xe6, 0xf5, 0x6d, 0x70, 0xd4, 0x7a, 0x6a, 0x6e, - 0x6c, 0x5f, 0x5e, 0x9e, 0xf4, 0x76, 0x26, 0x86, 0xb9, 0x97, 0x51, 0x4b, 0xca, 0x4b, 0x6b, 0x57, - 0xdb, 0xdd, 0xdb, 0xb9, 0x9f, 0x96, 0x1f, 0x6f, 0xef, 0x9e, 0x5e, 0xf3, 0xd6, 0xeb, 0xb0, 0x70, - 0x56, 0xda, 0xd3, 0x1e, 0x2f, 0x0b, 0x83, 0x51, 0x4a, 0xbf, 0xb7, 0xf7, 0x0f, 0x77, 0x4e, 0x2f, - 0xf7, 0xf2, 0xfd, 0xc6, 0x54, 0xc9, 0x16, 0x1a, 0xfd, 0x86, 0xe5, 0xdc, 0x9e, 0x0e, 0x7a, 0xcf, - 0xfd, 0xa7, 0xde, 0x6e, 0xa3, 0xad, 0x36, 0x07, 0x93, 0x51, 0xeb, 0x70, 0xb2, 0x7b, 0xd3, 0x1c, - 0x8e, 0xba, 0x17, 0x03, 0xf5, 0xb2, 0x7b, 0x5d, 0xb2, 0xc6, 0x87, 0x4f, 0x27, 0xad, 0xab, 0xc7, - 0xdd, 0xc9, 0xce, 0x60, 0xaf, 0xb2, 0x7d, 0x68, 0x1b, 0xc6, 0x61, 0x31, 0x7f, 0x7d, 0x78, 0x75, - 0x68, 0x1c, 0xde, 0xec, 0x94, 0x9f, 0x5f, 0xcf, 0x1e, 0x0f, 0x37, 0x6e, 0x9e, 0x1a, 0xaf, 0xa7, - 0xd6, 0x55, 0x46, 0x39, 0xcd, 0xec, 0x4c, 0x94, 0x73, 0xd3, 0x78, 0x53, 0x06, 0x95, 0x93, 0xfd, - 0xa6, 0xfd, 0x90, 0x7b, 0x3b, 0xcb, 0x3d, 0x9c, 0xbf, 0xd9, 0xb9, 0x93, 0xfc, 0xf4, 0x85, 0x9c, - 0x99, 0x85, 0xb7, 0xfb, 0xa7, 0x97, 0x72, 0xfb, 0xfe, 0x3a, 0x33, 0x38, 0xdd, 0x3e, 0x79, 0xca, - 0x14, 0xf3, 0x0f, 0x3b, 0x8d, 0xc3, 0x56, 0x6a, 0x63, 0x54, 0x2a, 0x95, 0xf5, 0xfc, 0x41, 0xea, - 0xe0, 0xea, 0xa2, 0xfb, 0xd8, 0xcd, 0x8e, 0xf2, 0xd7, 0x6f, 0xdd, 0xab, 0xc7, 0xee, 0xed, 0xe9, - 0x75, 0xef, 0x50, 0x2b, 0x1e, 0xf4, 0x8e, 0xfb, 0xdd, 0x6c, 0x7b, 0xa3, 0x35, 0x7e, 0xe9, 0x56, - 0xee, 0x2a, 0x23, 0xd3, 0xea, 0x5e, 0x94, 0x2f, 0xaf, 0xcf, 0x87, 0x44, 0x79, 0x2b, 0x5e, 0x5f, - 0x9c, 0x5f, 0x1d, 0x69, 0x3b, 0x3b, 0x4f, 0x07, 0xb7, 0x4f, 0xfb, 0x72, 0xe3, 0xec, 0xf4, 0xf2, - 0xc1, 0x1e, 0x5e, 0x59, 0xc7, 0xda, 0xd0, 0x7c, 0x7d, 0xb9, 0xdd, 0x78, 0x1e, 0xb5, 0x0f, 0x2f, - 0x9b, 0xb9, 0xfd, 0xd6, 0xe1, 0xf3, 0x5e, 0x2b, 0x75, 0xaa, 0x93, 0xe6, 0x51, 0xa1, 0x7c, 0x74, - 0xb4, 0x77, 0xdb, 0x1c, 0x5c, 0xf6, 0x46, 0x93, 0xe3, 0x53, 0x33, 0xf7, 0x7a, 0x53, 0x31, 0x87, - 0x2f, 0xd9, 0xdb, 0xe3, 0x9b, 0xab, 0x92, 0x45, 0x1c, 0x79, 0xdf, 0x94, 0x5b, 0x4f, 0xb7, 0x0f, - 0x57, 0x57, 0x7b, 0xa9, 0xfb, 0xa7, 0x8d, 0xd4, 0xb9, 0x7a, 0xd3, 0x7a, 0xce, 0xec, 0x1f, 0xbe, - 0x8d, 0xb2, 0x43, 0xf5, 0xe0, 0xf1, 0x6e, 0x9a, 0xea, 0x97, 0x1f, 0xb2, 0x57, 0x37, 0xcf, 0xce, - 0xc5, 0xf0, 0xe5, 0x50, 0x75, 0xae, 0xae, 0xef, 0x6f, 0xcf, 0xde, 0xde, 0x9a, 0xce, 0x68, 0xef, - 0xe2, 0xb8, 0x73, 0x20, 0xbf, 0x5d, 0x6d, 0xef, 0xa7, 0x1e, 0x2a, 0x99, 0xa6, 0x3e, 0xd8, 0x56, - 0x72, 0xf2, 0xb8, 0x68, 0x1c, 0xf4, 0xec, 0xdd, 0x9b, 0xd3, 0xfe, 0xfd, 0xe9, 0xc5, 0x6e, 0xef, - 0xbc, 0xf8, 0xd8, 0x39, 0x9a, 0xca, 0x7b, 0x87, 0x17, 0xea, 0xed, 0xeb, 0xa4, 0xff, 0xd4, 0x2e, - 0x9d, 0x1e, 0x8e, 0x6e, 0x53, 0xc6, 0x63, 0x61, 0x9c, 0x7b, 0x7e, 0x2e, 0x65, 0xde, 0xf4, 0xc3, - 0xe9, 0xce, 0xb1, 0xd5, 0x1f, 0x9d, 0xe6, 0x72, 0xaf, 0xa9, 0xf6, 0x5d, 0x79, 0x72, 0xb3, 0xff, - 0xa2, 0x6e, 0x28, 0x27, 0xe5, 0xde, 0xe5, 0xd1, 0xdb, 0x44, 0x6f, 0x3e, 0x95, 0x9d, 0x43, 0xd3, - 0xec, 0x1e, 0x56, 0xda, 0x0f, 0x3b, 0xad, 0xdb, 0xa3, 0xdb, 0xe6, 0xe5, 0xa1, 0xae, 0x9a, 0x77, - 0xf2, 0x41, 0xdb, 0xe9, 0x68, 0x9d, 0xeb, 0x8d, 0x71, 0xf3, 0xf5, 0x64, 0x78, 0xaf, 0xb4, 0x6e, - 0xad, 0xcb, 0xd6, 0xd9, 0xe9, 0x6b, 0x5b, 0x39, 0x3a, 0xda, 0x1e, 0xe4, 0x2e, 0xd4, 0x7b, 0xeb, - 0xbe, 0xdd, 0xef, 0x96, 0x1a, 0xed, 0x17, 0xd2, 0xe9, 0xee, 0x5c, 0x9f, 0x57, 0x76, 0x2f, 0x77, - 0x0f, 0xc9, 0x9d, 0x7c, 0x7b, 0x71, 0x77, 0xd9, 0xe9, 0x5e, 0x96, 0x35, 0xe7, 0xe2, 0x7c, 0x77, - 0x94, 0xda, 0x28, 0xbd, 0xe4, 0x0e, 0xa7, 0x37, 0xd7, 0xc6, 0x11, 0xb9, 0x33, 0x7b, 0x4f, 0x97, - 0xea, 0xc1, 0xc1, 0x41, 0x11, 0x96, 0xd2, 0xce, 0xc9, 0x53, 0xb6, 0x7d, 0xd0, 0xbf, 0x9c, 0xde, - 0xdb, 0x37, 0x30, 0xa0, 0xe3, 0x87, 0x76, 0x3f, 0xd5, 0x9c, 0xc2, 0xff, 0x4a, 0x15, 0x72, 0xd0, - 0x39, 0x1f, 0x03, 0x8b, 0x3e, 0xca, 0x6a, 0xa5, 0xb6, 0xac, 0xef, 0x6c, 0x3c, 0xed, 0xa7, 0xda, - 0xad, 0x46, 0xb6, 0xdb, 0x7c, 0xbc, 0x9d, 0x0e, 0x27, 0xe5, 0xc7, 0xa3, 0xcc, 0xe1, 0x83, 0x33, - 0xbd, 0x70, 0xda, 0x47, 0x53, 0xcd, 0xbc, 0xcc, 0x9c, 0xec, 0x3f, 0xb5, 0x5e, 0x64, 0xf9, 0x7a, - 0xd8, 0x3d, 0x3b, 0x7c, 0x9c, 0x5a, 0xfb, 0x44, 0x4b, 0xbd, 0xa6, 0xac, 0xc7, 0x23, 0xcb, 0x48, - 0xe9, 0x37, 0x83, 0xfc, 0x85, 0x75, 0x76, 0xb8, 0x3f, 0x39, 0x2e, 0xdd, 0x59, 0xf7, 0x67, 0xa7, - 0xb7, 0xb9, 0xe9, 0x35, 0xb9, 0xba, 0x3b, 0x68, 0x3d, 0xb5, 0x3a, 0xcf, 0xce, 0xc9, 0x51, 0x8f, - 0x64, 0xad, 0xce, 0x86, 0x6d, 0xbe, 0x8e, 0x9f, 0xf3, 0xed, 0xd2, 0x6d, 0xe1, 0xb9, 0x50, 0x6e, - 0x59, 0xf9, 0xc6, 0x30, 0x7b, 0x31, 0xce, 0x5c, 0xaa, 0xbd, 0x81, 0x7d, 0x98, 0x1b, 0x9d, 0x8e, - 0x3b, 0xe5, 0x52, 0xfe, 0x5c, 0xbd, 0xbc, 0xbc, 0x3a, 0x33, 0x48, 0xd7, 0xbc, 0xe8, 0x1d, 0xe8, - 0xad, 0x49, 0x07, 0xb8, 0x61, 0x4a, 0xd9, 0xd9, 0xdd, 0x2d, 0x6d, 0x74, 0x8e, 0xdf, 0xae, 0xfb, - 0xdb, 0xda, 0x65, 0xff, 0xc9, 0x7c, 0xea, 0x5f, 0xef, 0xe8, 0x47, 0xce, 0xbe, 0x7e, 0x9f, 0x7b, - 0x69, 0x0f, 0xef, 0x8f, 0x4a, 0x7b, 0xe7, 0xdb, 0x27, 0x8f, 0x1b, 0x13, 0xdb, 0x4a, 0x1d, 0x3d, - 0xbe, 0x3d, 0xe8, 0xed, 0xa7, 0x6e, 0xfb, 0xb9, 0x39, 0xda, 0xed, 0xdd, 0xc8, 0x07, 0x63, 0x6d, - 0xf2, 0xd2, 0x76, 0x6e, 0xfa, 0x47, 0x1b, 0x6f, 0x57, 0xf7, 0x7b, 0x67, 0x47, 0xf6, 0xb8, 0x35, - 0xd5, 0x26, 0x6f, 0xb9, 0xbb, 0x07, 0x47, 0x29, 0x4c, 0x9f, 0x2c, 0x35, 0xd3, 0xb3, 0x47, 0x9a, - 0xae, 0xef, 0xdd, 0x5e, 0xbc, 0x1a, 0xba, 0x79, 0x21, 0x5f, 0x9d, 0x14, 0x8d, 0xdb, 0xb3, 0xe3, - 0xe7, 0xe7, 0xde, 0xae, 0xb6, 0x5f, 0xe8, 0xd8, 0xd7, 0x3b, 0x67, 0x0d, 0xbb, 0xff, 0xd6, 0xcc, - 0x97, 0xf7, 0x37, 0xfa, 0xad, 0xe3, 0xdb, 0x7e, 0xeb, 0x71, 0x63, 0x98, 0xe9, 0xec, 0x8e, 0x8f, - 0x1b, 0x27, 0xc3, 0xe9, 0xf1, 0x5b, 0x26, 0x33, 0xda, 0x18, 0x94, 0x48, 0xff, 0x60, 0x6f, 0xe3, - 0xd4, 0x3a, 0x28, 0x3c, 0x1d, 0x99, 0x99, 0xc7, 0x69, 0xe1, 0x25, 0x9f, 0x53, 0xca, 0xd7, 0x1b, - 0xd9, 0xa9, 0x7e, 0x70, 0x7b, 0xd5, 0xdc, 0xd7, 0x7a, 0x7b, 0x8f, 0x67, 0x8e, 0xd3, 0xcd, 0xed, - 0x75, 0x6e, 0x14, 0xe5, 0xb5, 0x44, 0x2a, 0x17, 0xcf, 0x83, 0x51, 0xe7, 0xf5, 0x4a, 0x36, 0x2e, - 0x46, 0xd9, 0xb7, 0xec, 0x5b, 0x66, 0x67, 0x3b, 0x55, 0x9e, 0xa8, 0xd3, 0xc6, 0x5e, 0xf7, 0xf4, - 0x26, 0xdb, 0xd7, 0x87, 0xdb, 0x85, 0x69, 0x63, 0x52, 0x2a, 0x9b, 0x93, 0x83, 0xce, 0xdd, 0x93, - 0xb6, 0x67, 0x6d, 0xeb, 0xf7, 0xd3, 0x93, 0xa7, 0xa7, 0x52, 0xfe, 0x66, 0xbf, 0x3f, 0x3e, 0xdb, - 0xbf, 0xdd, 0x6f, 0x1c, 0xed, 0xbd, 0x4d, 0xf7, 0x26, 0xa9, 0x3b, 0x63, 0xa8, 0x6f, 0x9c, 0x36, - 0xd4, 0xf6, 0x6d, 0x7b, 0x54, 0xd2, 0xc8, 0xc1, 0xd5, 0x76, 0xd1, 0xee, 0x64, 0xe5, 0xde, 0x89, - 0xd3, 0xb6, 0xba, 0x56, 0xe6, 0xe8, 0xe5, 0xb6, 0xf4, 0x60, 0xa5, 0x8c, 0xf1, 0x64, 0xcf, 0xb9, - 0x3a, 0xd8, 0xdd, 0x38, 0x2d, 0xbc, 0xed, 0x57, 0xe4, 0x97, 0xb3, 0xed, 0xd2, 0xc3, 0xd5, 0xae, - 0x61, 0x14, 0xb3, 0xcf, 0x7b, 0x47, 0x4a, 0xfb, 0x25, 0x7f, 0x46, 0x0e, 0x6e, 0x8f, 0xbb, 0xa4, - 0x97, 0x19, 0xd8, 0xa7, 0x7b, 0x7b, 0x2d, 0xd3, 0x29, 0x0e, 0xcb, 0xf7, 0xc3, 0xa3, 0x97, 0x9d, - 0x9d, 0x86, 0x7e, 0x25, 0x77, 0x0a, 0xd9, 0xf2, 0x70, 0x3a, 0x9c, 0x5a, 0x97, 0x6f, 0x97, 0xa3, - 0xd7, 0x0b, 0xdd, 0x36, 0xaf, 0x26, 0xbd, 0xc6, 0xc3, 0xb3, 0xe9, 0x0c, 0xde, 0x2c, 0x40, 0xcb, - 0x75, 0x76, 0x7a, 0xd6, 0xea, 0x15, 0xee, 0x9c, 0xed, 0xd3, 0xd3, 0xca, 0xce, 0xe5, 0x75, 0xb6, - 0x32, 0x3a, 0x49, 0xf5, 0xdb, 0x85, 0x8d, 0xfe, 0xde, 0xc9, 0x45, 0xbe, 0x73, 0x2d, 0x97, 0xf7, - 0xca, 0x87, 0x85, 0xee, 0xe3, 0xf4, 0x48, 0x2b, 0x64, 0xf7, 0xed, 0x69, 0xe5, 0xee, 0xe0, 0xed, - 0x64, 0xfb, 0xfc, 0xe0, 0xed, 0xee, 0xe9, 0xaa, 0x55, 0x39, 0x3b, 0x69, 0x9e, 0xdf, 0x6c, 0x37, - 0xf7, 0x2e, 0x53, 0xa3, 0xfd, 0xc1, 0x76, 0xe6, 0x76, 0xe3, 0xf1, 0xed, 0x66, 0x72, 0xbc, 0xdb, - 0xba, 0x1e, 0xee, 0x58, 0xea, 0x51, 0xea, 0x06, 0x69, 0x3f, 0xd3, 0xde, 0xbb, 0xdf, 0x3b, 0x3d, - 0x39, 0xb1, 0x9f, 0xfa, 0x6a, 0xc3, 0x29, 0x98, 0xe6, 0xc6, 0x48, 0x33, 0xa7, 0xed, 0x9c, 0xf3, - 0xb6, 0x5b, 0x3e, 0x2c, 0x4f, 0x07, 0xaf, 0x07, 0xe7, 0x3b, 0xdb, 0xc7, 0xf9, 0xd6, 0x7e, 0xbf, - 0x74, 0x79, 0x91, 0xcd, 0x6d, 0xab, 0x17, 0xf9, 0x87, 0xd3, 0x49, 0xce, 0xda, 0xd9, 0x73, 0xee, - 0x6e, 0x76, 0xee, 0x4f, 0x52, 0xc4, 0xd6, 0xc7, 0xf9, 0x83, 0xca, 0xe5, 0xf4, 0xa5, 0x37, 0x6c, - 0xef, 0xe8, 0xed, 0xd3, 0x93, 0xa7, 0xfd, 0x9b, 0x3d, 0xf3, 0xe5, 0xe5, 0xb1, 0xad, 0xdf, 0xb5, - 0xfa, 0xb2, 0x36, 0xb8, 0x1b, 0x57, 0x26, 0x37, 0xf9, 0xe2, 0xcb, 0xf5, 0xc1, 0xcb, 0x45, 0xe5, - 0xed, 0xe5, 0xc6, 0x3a, 0xd9, 0x78, 0x7e, 0x39, 0x7e, 0x2a, 0x3f, 0x3c, 0x3d, 0xbe, 0xf5, 0xe5, - 0xac, 0xd9, 0xae, 0xa4, 0x5e, 0x2f, 0xcb, 0xf6, 0xfd, 0xa3, 0xf9, 0x30, 0x3d, 0xde, 0x57, 0xf7, - 0x8e, 0xae, 0xcf, 0xec, 0xc3, 0xc9, 0xc4, 0x7c, 0xbd, 0x2a, 0x14, 0xfa, 0xbb, 0xe7, 0xfa, 0x6d, - 0x26, 0x45, 0x80, 0x90, 0xba, 0x07, 0x3b, 0x99, 0x9c, 0x76, 0x99, 0x1f, 0xb5, 0x8a, 0xaf, 0xd9, - 0x97, 0xb7, 0xc3, 0x37, 0xe7, 0xfe, 0xe6, 0xec, 0x62, 0xb7, 0x64, 0x74, 0x1f, 0x8e, 0xe4, 0x8b, - 0x97, 0x1b, 0xf5, 0xee, 0xc8, 0xe9, 0x1f, 0xef, 0x1f, 0x9f, 0x1e, 0x9e, 0x3c, 0x94, 0xe4, 0xee, - 0x94, 0x3c, 0xbc, 0xea, 0xed, 0x76, 0xca, 0xde, 0x3b, 0x3e, 0x7e, 0x39, 0xd3, 0xe5, 0xbb, 0xb7, - 0x9c, 0x75, 0xe2, 0x9c, 0xb6, 0xb7, 0x2f, 0xef, 0x2e, 0xf4, 0x07, 0x67, 0x78, 0xa4, 0x14, 0xee, - 0x5e, 0xf6, 0xae, 0x8c, 0x76, 0xa6, 0x32, 0x1c, 0x8e, 0x5e, 0x3b, 0x97, 0xb7, 0xe3, 0x0d, 0xb5, - 0xd7, 0x3c, 0x1b, 0xdf, 0x5b, 0xda, 0xe0, 0xad, 0xbf, 0x73, 0xb2, 0x33, 0x06, 0x21, 0x3c, 0x55, - 0x3e, 0x28, 0x4e, 0x9f, 0x8e, 0x2b, 0x85, 0x72, 0x67, 0x87, 0x38, 0xa9, 0x3d, 0xe5, 0xbe, 0xd7, - 0x4a, 0x9d, 0x3c, 0x1b, 0x99, 0x3b, 0x27, 0x35, 0x6e, 0x75, 0x5e, 0x14, 0xeb, 0xa5, 0xf4, 0xfc, - 0x78, 0xdd, 0x7e, 0x2e, 0x9c, 0x29, 0xc7, 0x2f, 0xe6, 0x79, 0xfb, 0x79, 0x77, 0xd7, 0xb4, 0x95, - 0x4e, 0xe5, 0x24, 0x6b, 0x5d, 0x9d, 0xdd, 0x1f, 0xf5, 0x2f, 0xda, 0xd6, 0xdd, 0xeb, 0x4e, 0xf7, - 0xe1, 0x89, 0x94, 0x9c, 0xed, 0xcb, 0xc6, 0x9b, 0xf3, 0xdc, 0x7e, 0x68, 0xca, 0x93, 0x1d, 0x52, - 0xb8, 0xd1, 0xcf, 0x54, 0x73, 0xa8, 0x3f, 0x82, 0xb4, 0x32, 0xca, 0x8c, 0x9e, 0x7a, 0xa5, 0xe3, - 0xde, 0xc6, 0x98, 0x64, 0xb3, 0xb9, 0x83, 0x51, 0xaf, 0x92, 0xdb, 0x1d, 0x67, 0x36, 0x88, 0xbe, - 0x9d, 0x49, 0xe9, 0x17, 0x1b, 0x66, 0x1b, 0xc4, 0xcc, 0xcb, 0xa3, 0xc7, 0xb6, 0x2a, 0x3f, 0x35, - 0x5b, 0xa6, 0x71, 0x56, 0x81, 0x81, 0x5f, 0x3f, 0x3f, 0x6d, 0x1c, 0x9d, 0x4e, 0xcc, 0xf6, 0x5d, - 0xdf, 0x30, 0x1b, 0xed, 0x81, 0xd3, 0x3e, 0xbf, 0x7b, 0x7e, 0x75, 0x1a, 0x7b, 0xf9, 0xe3, 0x54, - 0xe6, 0xc5, 0x90, 0x5b, 0x8d, 0xd6, 0xd9, 0x5d, 0x6e, 0x3f, 0xd7, 0x3e, 0xe9, 0xe9, 0xf6, 0xc0, - 0xdc, 0x2e, 0x28, 0x95, 0xee, 0xf0, 0x6d, 0x23, 0x73, 0x30, 0xcd, 0x64, 0xba, 0x9d, 0xfc, 0xf9, - 0xfd, 0xd9, 0x63, 0x01, 0x68, 0xf5, 0xf5, 0xfe, 0xe6, 0x36, 0xd7, 0x7d, 0xb8, 0xb2, 0x77, 0x2a, - 0x1b, 0x2f, 0xc7, 0x27, 0x1b, 0x95, 0x17, 0xe5, 0x6d, 0x04, 0x43, 0x3b, 0xcc, 0x8e, 0x2f, 0xee, - 0xaf, 0x37, 0xf2, 0x1b, 0xc5, 0xf6, 0x5d, 0x6b, 0xdf, 0xe8, 0x6c, 0x1b, 0xbd, 0x9d, 0x1c, 0x39, - 0xbc, 0x7a, 0x3b, 0x92, 0x3b, 0xa7, 0x4d, 0x19, 0xa4, 0xb5, 0xc9, 0xa5, 0xdc, 0xef, 0x8d, 0x47, - 0xad, 0xee, 0xb8, 0x9b, 0x2d, 0xf4, 0xb2, 0x23, 0xa0, 0xfa, 0x93, 0x8b, 0xdd, 0xfc, 0xd1, 0xd1, - 0xc1, 0x49, 0x69, 0xd4, 0xec, 0x66, 0xf4, 0xa2, 0x5e, 0xee, 0xe6, 0x8b, 0x37, 0xe7, 0xc7, 0x17, - 0x7a, 0x49, 0x1f, 0x58, 0xb0, 0x41, 0x5a, 0xb7, 0x79, 0xa5, 0x9b, 0xd7, 0xdf, 0x72, 0xea, 0xb5, - 0x7a, 0x76, 0x52, 0xc8, 0x16, 0x76, 0x75, 0xd2, 0x3b, 0xc9, 0x1c, 0xed, 0x9f, 0x68, 0x77, 0x8f, - 0xce, 0xe3, 0x9d, 0xf2, 0x62, 0xec, 0x0e, 0x0a, 0xd3, 0xd6, 0xd3, 0xd8, 0xde, 0x6f, 0x67, 0x4a, - 0xc3, 0x8a, 0xa5, 0xec, 0x69, 0xf6, 0xc9, 0xb0, 0x30, 0x3a, 0x78, 0xbe, 0xbc, 0xd3, 0xc6, 0x1b, - 0xd7, 0x99, 0x09, 0x79, 0x7c, 0x7b, 0x3a, 0x38, 0x20, 0x1b, 0xd3, 0x47, 0xf5, 0xe6, 0xcd, 0x3c, - 0x2a, 0xde, 0x35, 0xee, 0xb6, 0x4f, 0x76, 0xce, 0x26, 0x57, 0xc7, 0xd3, 0xc9, 0xd5, 0x83, 0xbe, - 0x67, 0xdc, 0xef, 0x4f, 0x3b, 0xca, 0xf1, 0xf4, 0xac, 0xb4, 0x73, 0x55, 0xde, 0x3e, 0xd3, 0x73, - 0x46, 0xe5, 0xec, 0x05, 0x66, 0xd8, 0x19, 0x5b, 0x4a, 0xf1, 0x5a, 0x3f, 0x7c, 0xba, 0x3f, 0xdd, - 0xd6, 0x86, 0x87, 0x7b, 0x8f, 0xf9, 0xd7, 0x8b, 0x87, 0xfb, 0xfc, 0xa9, 0x53, 0x19, 0x17, 0x87, - 0xc3, 0x83, 0xd1, 0xe4, 0x61, 0x3c, 0x9e, 0x5e, 0x8c, 0x89, 0x75, 0x52, 0x21, 0xad, 0xb1, 0xfd, - 0x76, 0x7f, 0xf6, 0x74, 0x73, 0x6f, 0x3d, 0xb7, 0x5f, 0x3a, 0xfb, 0xe7, 0xb7, 0x77, 0xb9, 0xf6, - 0x6e, 0x7b, 0x67, 0xff, 0x58, 0xcd, 0x9f, 0x9e, 0xdc, 0x5e, 0xdf, 0xbd, 0xbd, 0xdd, 0x1d, 0xec, - 0x15, 0x0b, 0xdb, 0xa3, 0x4c, 0xce, 0x6a, 0x64, 0x5f, 0x9e, 0x8d, 0x92, 0x56, 0xe9, 0xed, 0xf5, - 0x6f, 0xdb, 0xdb, 0x23, 0xab, 0x77, 0xbb, 0x7d, 0xb7, 0xb7, 0xa7, 0xdd, 0xde, 0x65, 0x47, 0xfd, - 0xe9, 0xf9, 0xa4, 0x63, 0xa7, 0xca, 0x77, 0x99, 0x0c, 0xf0, 0xa7, 0xc7, 0x23, 0x95, 0x9c, 0x68, - 0x95, 0xbb, 0xfb, 0x46, 0x99, 0xec, 0x9f, 0x14, 0x3b, 0xd6, 0xf6, 0x46, 0x6f, 0x70, 0x7e, 0xfa, - 0x3a, 0xd5, 0xca, 0xed, 0xa7, 0xcb, 0xbb, 0xfd, 0xa7, 0xed, 0x6c, 0xfb, 0x2e, 0x63, 0x3c, 0x97, - 0x6e, 0x3a, 0x2f, 0x44, 0xb7, 0xad, 0x8d, 0xbd, 0xf2, 0xc1, 0xc6, 0xc8, 0xb1, 0x87, 0xdd, 0x17, - 0xe3, 0x60, 0xf8, 0x56, 0xa9, 0x58, 0xe3, 0x57, 0xb2, 0x9b, 0xb9, 0x78, 0x03, 0x01, 0xa1, 0x30, - 0x1c, 0xdf, 0xde, 0x9f, 0x3c, 0xbd, 0x3e, 0x94, 0xc7, 0xe5, 0xa7, 0xe2, 0xfd, 0xe0, 0x91, 0x1c, - 0xe4, 0x95, 0x8b, 0xfb, 0x8d, 0x62, 0xd7, 0x54, 0xcf, 0x8b, 0xe4, 0x2c, 0x73, 0xfe, 0x36, 0xe9, - 0xec, 0x6f, 0xbc, 0x3d, 0xf7, 0x34, 0x27, 0x63, 0x77, 0x8b, 0x64, 0xe3, 0xa1, 0xf3, 0xd2, 0x3e, - 0x37, 0x26, 0xbd, 0xab, 0x7e, 0x2e, 0x77, 0x55, 0x2c, 0x96, 0x8b, 0x8a, 0x93, 0x1b, 0xdf, 0xdf, - 0x97, 0x37, 0xee, 0xb2, 0x0f, 0x72, 0xff, 0x52, 0xde, 0xa8, 0x14, 0x2a, 0x1b, 0xe4, 0xe1, 0x3a, - 0xbb, 0xfb, 0xfc, 0x6a, 0xec, 0xbe, 0x9c, 0x3e, 0x80, 0x0c, 0x78, 0xd0, 0x2d, 0x5f, 0x8e, 0x8f, - 0xf7, 0xad, 0xab, 0xfd, 0x52, 0xfb, 0xe8, 0xe1, 0x7a, 0xa7, 0xd9, 0x7c, 0x7c, 0xd8, 0xdf, 0xbd, - 0xeb, 0x0c, 0x8b, 0xfb, 0x59, 0x40, 0x63, 0x4e, 0x2d, 0x16, 0x1e, 0x2a, 0x77, 0x8e, 0xba, 0x3d, - 0x7a, 0xd6, 0x2e, 0x8a, 0x1b, 0x0f, 0xce, 0xf6, 0xe3, 0x69, 0xe3, 0x4e, 0x1b, 0xe5, 0x7a, 0x0f, - 0x6f, 0x3b, 0xa7, 0x1b, 0x97, 0xa9, 0xe2, 0x1e, 0x70, 0xf2, 0x56, 0xfe, 0xfc, 0xad, 0xf8, 0x04, - 0x7b, 0xd8, 0xa1, 0xd2, 0x71, 0xda, 0x77, 0x17, 0xc6, 0x64, 0x74, 0xd9, 0x3f, 0x7b, 0x3d, 0xd0, - 0x46, 0xc7, 0x9a, 0x32, 0xa9, 0x4c, 0xf4, 0xf6, 0xf9, 0xd0, 0x19, 0x29, 0x4f, 0x46, 0xe6, 0xb6, - 0x35, 0xa9, 0x00, 0x47, 0x6e, 0x5d, 0x4d, 0x4e, 0x3b, 0x23, 0x20, 0xcb, 0xc7, 0xc9, 0xde, 0x60, - 0x50, 0xb2, 0x37, 0x06, 0xf6, 0x8b, 0xa5, 0xde, 0x35, 0xed, 0x7e, 0x23, 0x67, 0xe7, 0xf5, 0x3d, - 0x10, 0x9b, 0x0b, 0x87, 0x1b, 0xe7, 0x29, 0xc5, 0x9e, 0x4e, 0xa6, 0x8f, 0x6d, 0xe7, 0xe4, 0x44, - 0xce, 0xef, 0x56, 0xda, 0x83, 0xce, 0x55, 0xe9, 0xe1, 0xad, 0x32, 0x3c, 0x6c, 0xef, 0xc9, 0x37, - 0x95, 0xd2, 0xb1, 0x3c, 0xdd, 0x6f, 0x6c, 0xb4, 0xa7, 0x95, 0xd7, 0x94, 0x96, 0xcb, 0x64, 0x36, - 0xf2, 0x4f, 0xa9, 0x83, 0x9c, 0x2a, 0xef, 0xee, 0x77, 0x73, 0x1b, 0xa3, 0xc6, 0xed, 0xd9, 0x61, - 0xe6, 0x6e, 0xd0, 0x7c, 0x18, 0xdd, 0xbd, 0x1c, 0xee, 0x28, 0x0f, 0x53, 0xa5, 0x6b, 0xcb, 0x5a, - 0xe7, 0x76, 0xef, 0x36, 0xd5, 0x3d, 0xd7, 0x0e, 0x86, 0xdb, 0xd3, 0xcc, 0xcb, 0xf9, 0x46, 0xa7, - 0x94, 0x19, 0x3d, 0xde, 0xcb, 0xce, 0x15, 0xb9, 0x71, 0x8e, 0x2e, 0xc7, 0xa5, 0xc2, 0x2b, 0x90, - 0x6f, 0x63, 0x7c, 0x5f, 0x9a, 0xee, 0x90, 0xb7, 0xc6, 0x7d, 0xa6, 0x7c, 0x37, 0x2c, 0x37, 0xfb, - 0x83, 0x4c, 0xa5, 0x78, 0x5e, 0x39, 0x9f, 0xda, 0x67, 0xcd, 0x07, 0xdd, 0xbe, 0xbf, 0xbb, 0x4c, - 0x6d, 0x98, 0xcd, 0xb7, 0x72, 0xe6, 0xec, 0xf4, 0xb1, 0xb8, 0xf1, 0xd8, 0x38, 0xdc, 0xdf, 0xed, - 0x5e, 0x4f, 0x52, 0x8a, 0x59, 0xbe, 0x4d, 0x1d, 0xe6, 0xcf, 0x6e, 0x6e, 0x09, 0xac, 0xa9, 0x89, - 0x3a, 0x4e, 0x69, 0x9d, 0xce, 0xcb, 0x53, 0x76, 0x23, 0x77, 0xbf, 0xf1, 0x30, 0x29, 0xf6, 0x8f, - 0x1a, 0x37, 0x97, 0xfb, 0x0f, 0x17, 0x97, 0xa5, 0xcb, 0xd7, 0xe9, 0x55, 0xaf, 0x4f, 0x9a, 0xa9, - 0xcb, 0x4e, 0xf1, 0x4e, 0x6f, 0x9c, 0x36, 0x1b, 0x07, 0x7b, 0xe3, 0xd2, 0xf5, 0x91, 0x43, 0x9c, - 0xbc, 0xa9, 0x67, 0xca, 0xf9, 0x76, 0xe1, 0xa1, 0xd9, 0x38, 0xdc, 0x1e, 0xe7, 0x8b, 0x46, 0xcf, - 0xbc, 0xbe, 0x7a, 0x75, 0x8a, 0x17, 0x4f, 0x20, 0x93, 0x5e, 0x97, 0x8f, 0x1f, 0x1a, 0xbb, 0x97, - 0xc7, 0x65, 0x7d, 0xaf, 0xbf, 0xdd, 0x01, 0xb1, 0xf8, 0x66, 0x02, 0xb4, 0xff, 0x72, 0xd0, 0xda, - 0x3e, 0x36, 0x76, 0xf7, 0x37, 0x8e, 0x1f, 0x2f, 0x4f, 0x4e, 0xcd, 0x27, 0xa3, 0x38, 0x1a, 0x28, - 0x99, 0x8b, 0xc3, 0xdc, 0xeb, 0x68, 0xfb, 0xee, 0xbc, 0x79, 0xdd, 0xda, 0x79, 0x54, 0x9e, 0xcc, - 0x97, 0xcb, 0x52, 0x39, 0xf5, 0xa8, 0x64, 0xcb, 0x4f, 0xfd, 0xfd, 0xfe, 0xc3, 0xe9, 0x75, 0x59, - 0xdf, 0x1e, 0x3c, 0x1d, 0x77, 0xf6, 0xac, 0xe3, 0xe6, 0xc3, 0x5e, 0xe9, 0xf5, 0xb8, 0xf5, 0x78, - 0x75, 0xb2, 0x57, 0x74, 0xae, 0x8a, 0x0f, 0xc7, 0x83, 0x9b, 0xb7, 0xb7, 0xb3, 0xbb, 0xd3, 0x62, - 0x6e, 0xb8, 0x3d, 0x1e, 0x5d, 0x9c, 0xaa, 0x27, 0x1b, 0xd3, 0x8b, 0x69, 0xe1, 0x46, 0xb9, 0xea, - 0xef, 0xa9, 0x47, 0x8f, 0x8d, 0xdb, 0x3d, 0xbb, 0xf3, 0x98, 0x3b, 0xb8, 0x39, 0x1c, 0xdc, 0x5c, - 0x74, 0x76, 0x95, 0x83, 0xe2, 0xdd, 0xdd, 0xce, 0x78, 0x3c, 0x1c, 0x77, 0x2f, 0x7a, 0x5a, 0xf1, - 0x58, 0x69, 0x8e, 0xcf, 0xcb, 0x46, 0x36, 0xd5, 0xdb, 0x6b, 0x6e, 0xb7, 0x4b, 0x83, 0xf1, 0xe8, - 0xe4, 0xad, 0xac, 0x9d, 0x5e, 0x9d, 0x4f, 0x7a, 0x4f, 0x17, 0x67, 0x65, 0x55, 0xb1, 0x2a, 0xf2, - 0x55, 0xb3, 0xa9, 0x5e, 0x35, 0x8f, 0xac, 0xfc, 0xa8, 0xff, 0x72, 0xd0, 0x2b, 0x9d, 0xbc, 0xf4, - 0x6f, 0x1e, 0x1e, 0xec, 0xe2, 0xe0, 0x6d, 0x3c, 0xaa, 0x38, 0xa7, 0x87, 0xe7, 0x37, 0x56, 0x66, - 0x6a, 0x8e, 0xaf, 0xec, 0xb3, 0xdb, 0x71, 0xf7, 0x31, 0x63, 0xa6, 0x86, 0xdb, 0x65, 0x7d, 0xe3, - 0x36, 0x07, 0x5c, 0x51, 0xbe, 0x4e, 0x29, 0x57, 0x83, 0x0b, 0xf3, 0x6c, 0x60, 0x9f, 0xed, 0x9d, - 0xbf, 0x4c, 0x8d, 0xdd, 0xdc, 0x48, 0xb6, 0x47, 0x2f, 0xd7, 0xaa, 0xd9, 0x9f, 0x16, 0xcb, 0x87, - 0x47, 0x0d, 0x6a, 0xa4, 0xa8, 0x27, 0x85, 0x9e, 0x61, 0x0d, 0x15, 0x27, 0xf1, 0x15, 0x15, 0xa8, - 0xaf, 0xc9, 0x79, 0xd5, 0x32, 0x0c, 0x67, 0xb6, 0xbe, 0xde, 0x59, 0xcf, 0x56, 0x3f, 0x67, 0xb3, - 0xd9, 0x1a, 0x3e, 0xf6, 0xaa, 0x9f, 0x7b, 0xbd, 0x1e, 0x7d, 0xcc, 0x55, 0xd1, 0x34, 0x44, 0x1f, - 0xf3, 0xd5, 0xcf, 0xf9, 0x7c, 0x9e, 0x3e, 0x16, 0xaa, 0x9f, 0x0b, 0x85, 0x02, 0x7d, 0x2c, 0x56, - 0x3f, 0x17, 0x8b, 0x45, 0xfa, 0x58, 0xaa, 0x7e, 0x2e, 0x95, 0x4a, 0xf4, 0xb1, 0x5c, 0xfd, 0x5c, - 0x2e, 0x97, 0xe9, 0x63, 0xbb, 0xfa, 0xb9, 0xdd, 0x6e, 0xd3, 0xc7, 0x4e, 0xf5, 0x73, 0xa7, 0xd3, - 0xa1, 0x8f, 0xa4, 0xfa, 0x99, 0x10, 0x42, 0x1f, 0xbb, 0xd5, 0xcf, 0xdd, 0x6e, 0x97, 0x3e, 0x5a, - 0x50, 0x20, 0xcf, 0x7a, 0xeb, 0x43, 0xc7, 0x1d, 0x06, 0x8e, 0x06, 0xbd, 0x95, 0x15, 0xfa, 0xf8, - 0x5a, 0xfd, 0xac, 0x54, 0x64, 0x78, 0x74, 0xa0, 0x5d, 0x39, 0xcd, 0xfa, 0x35, 0xaa, 0x56, 0xbf, - 0xad, 0x24, 0xf2, 0x05, 0x49, 0xf0, 0xfe, 0xc9, 0xe9, 0x4a, 0x92, 0xe6, 0x39, 0xed, 0xc5, 0x4c, - 0xd0, 0xeb, 0x13, 0xb4, 0x85, 0xa4, 0x57, 0x46, 0x61, 0x85, 0xb2, 0x72, 0x4e, 0x12, 0x82, 0x3f, - 0x8b, 0xe5, 0x06, 0xac, 0x5c, 0x31, 0x2b, 0x09, 0xde, 0xbf, 0x70, 0x21, 0x67, 0x50, 0xdd, 0x90, - 0xcd, 0x29, 0x3e, 0x99, 0xde, 0x13, 0xd4, 0x2a, 0xe5, 0x59, 0x5a, 0xdb, 0xac, 0x66, 0x0b, 0xe6, - 0x54, 0x60, 0x7f, 0x64, 0xf7, 0x09, 0xcb, 0x40, 0x4e, 0x05, 0x5e, 0x65, 0x61, 0x03, 0xff, 0xd2, - 0x5a, 0xdd, 0xaa, 0x6e, 0xe8, 0x88, 0x22, 0xbb, 0x6f, 0x56, 0xc5, 0x36, 0x9a, 0x47, 0x44, 0xcc, - 0x18, 0x3a, 0x55, 0xa8, 0x39, 0x47, 0xc3, 0xe2, 0x8c, 0xda, 0x13, 0xd6, 0x15, 0x66, 0x42, 0x19, - 0x2a, 0x20, 0xff, 0x8f, 0x34, 0x6a, 0x81, 0x98, 0xb7, 0x8d, 0xee, 0xeb, 0x6c, 0xa8, 0x58, 0x7d, - 0x55, 0xaf, 0xca, 0x35, 0xb4, 0x31, 0xf5, 0x2d, 0x63, 0xa4, 0x77, 0x99, 0xe9, 0xaf, 0xca, 0xc0, - 0x86, 0x59, 0x4f, 0xd6, 0x78, 0x7d, 0xfb, 0x80, 0x68, 0x63, 0xe2, 0xa8, 0x1d, 0x45, 0xba, 0x25, - 0x56, 0x57, 0xd1, 0x15, 0xc9, 0x56, 0x74, 0x7b, 0xdd, 0x26, 0x96, 0xda, 0x63, 0x05, 0x6d, 0xf5, - 0x8d, 0x54, 0xb3, 0x00, 0x65, 0x2d, 0xdc, 0x50, 0x2f, 0x59, 0x73, 0xc8, 0xd4, 0x59, 0x57, 0x34, - 0xb5, 0xaf, 0x57, 0x3b, 0x04, 0xed, 0x09, 0x35, 0xb4, 0x12, 0x3e, 0xab, 0xce, 0x3a, 0x03, 0xb3, - 0xa3, 0x68, 0x1a, 0xda, 0x75, 0xd8, 0xb0, 0xdc, 0xac, 0x11, 0xb4, 0x0d, 0xed, 0x6b, 0xa4, 0xe3, - 0x65, 0x0c, 0x8d, 0xb7, 0xb8, 0x54, 0x7b, 0x31, 0x71, 0xb1, 0x94, 0xd7, 0x9f, 0x62, 0xae, 0x0f, - 0xd4, 0xfe, 0x40, 0x43, 0xfb, 0x93, 0x3b, 0x62, 0xc7, 0x82, 0x91, 0x98, 0x8a, 0x05, 0x90, 0xd5, - 0xec, 0x8e, 0x65, 0x68, 0x5a, 0x5b, 0xb1, 0x98, 0x69, 0xb5, 0x5a, 0x82, 0xe1, 0x04, 0x69, 0xe1, - 0x81, 0xd9, 0xed, 0xa4, 0xc0, 0xd5, 0xa5, 0x88, 0x95, 0x28, 0xf2, 0x07, 0x04, 0x9b, 0xaf, 0x66, - 0x65, 0xf9, 0x5f, 0x35, 0xd6, 0x0e, 0x7d, 0x34, 0x0d, 0x5b, 0xa5, 0xf3, 0xd1, 0x53, 0xa7, 0xa4, - 0x5b, 0x33, 0x60, 0x5b, 0x65, 0x6d, 0xaf, 0xb7, 0xc9, 0x40, 0x19, 0xab, 0xd0, 0x36, 0x02, 0x3b, - 0xff, 0xdc, 0xee, 0x73, 0x4d, 0x8c, 0x07, 0x41, 0x1b, 0xe3, 0x49, 0xb4, 0x91, 0xb7, 0x75, 0x55, - 0xef, 0x92, 0x69, 0x75, 0x3d, 0x1b, 0x9a, 0x4b, 0xbf, 0x94, 0x8b, 0x6f, 0x2e, 0xcb, 0x22, 0x26, - 0x51, 0x10, 0x2d, 0xee, 0x13, 0x9f, 0x47, 0xe7, 0xb0, 0x83, 0x80, 0xd5, 0x0c, 0x53, 0xe9, 0xa8, - 0xce, 0x2b, 0x90, 0x08, 0x1d, 0x23, 0x6b, 0xcd, 0x4d, 0x14, 0x72, 0xf6, 0xdc, 0xf4, 0x68, 0x88, - 0x52, 0xab, 0x2c, 0xe4, 0xf0, 0xef, 0x5c, 0x91, 0x94, 0xea, 0x58, 0x85, 0xd2, 0xa4, 0x2b, 0x99, - 0xb3, 0x30, 0xbe, 0xba, 0x49, 0x3e, 0x7b, 0x46, 0x89, 0xa2, 0x4b, 0x3a, 0x86, 0x45, 0xe9, 0x92, - 0x0d, 0xbd, 0x3d, 0x72, 0x1c, 0x43, 0x9f, 0x01, 0x31, 0x68, 0xaa, 0x4e, 0xa0, 0xf3, 0xce, 0xc8, - 0xb2, 0xa1, 0x0d, 0xd3, 0x50, 0x71, 0x1c, 0xf3, 0xb4, 0xa6, 0xb4, 0x89, 0x66, 0x07, 0xf4, 0x6b, - 0x2a, 0xdd, 0xae, 0xaa, 0xf7, 0xab, 0x65, 0x0e, 0x88, 0xcf, 0x68, 0x95, 0xa6, 0x05, 0x67, 0x11, - 0x6c, 0xb5, 0x0d, 0x68, 0x7e, 0x58, 0x05, 0x7a, 0xeb, 0x24, 0x18, 0x58, 0xed, 0x41, 0x52, 0x48, - 0x09, 0x30, 0xcd, 0xc9, 0x9a, 0x45, 0x31, 0x5e, 0x5a, 0x20, 0xe0, 0x72, 0x32, 0x02, 0x45, 0x6d, - 0x62, 0x41, 0xa3, 0x7a, 0x1f, 0x08, 0xb2, 0x4b, 0xaa, 0x80, 0x2c, 0x5c, 0x17, 0xda, 0xba, 0xa5, - 0xcd, 0xd3, 0x6d, 0x4b, 0x9d, 0x79, 0x20, 0xc1, 0x02, 0x9e, 0xa7, 0x27, 0x16, 0xda, 0xb9, 0xac, - 0x28, 0x20, 0x8e, 0x61, 0x02, 0xf0, 0x1a, 0xe9, 0xc1, 0x92, 0x75, 0x3b, 0xe6, 0xe7, 0xcf, 0xef, - 0xdb, 0x69, 0x27, 0xfd, 0x29, 0xce, 0xce, 0xd3, 0x68, 0x1b, 0xb7, 0xe3, 0xec, 0x60, 0x6c, 0x05, - 0xa2, 0xc5, 0x0c, 0xf0, 0x08, 0x7c, 0x5c, 0xe3, 0xd6, 0x64, 0x0e, 0x00, 0xf9, 0xa4, 0x0e, 0xf1, - 0x20, 0x41, 0x01, 0x12, 0x47, 0xc4, 0xae, 0x7b, 0xe4, 0xc5, 0xa5, 0x77, 0x55, 0xdb, 0xd4, 0x94, - 0xd7, 0xaa, 0xaa, 0xd3, 0x12, 0x94, 0xad, 0xcc, 0xd3, 0x30, 0x19, 0x61, 0x6c, 0xf4, 0x93, 0x41, - 0x1d, 0xc8, 0xee, 0xf5, 0x22, 0xf9, 0x25, 0x2e, 0xdf, 0xc3, 0x1b, 0x68, 0x7a, 0xca, 0x48, 0x73, - 0xf8, 0x8a, 0x30, 0x13, 0x02, 0x1b, 0x8e, 0x94, 0x06, 0x64, 0xb8, 0xcf, 0xde, 0xbc, 0xae, 0xd3, - 0x89, 0x14, 0x0a, 0x74, 0x3a, 0xd3, 0x83, 0x51, 0xdf, 0x35, 0xfe, 0xd1, 0xf1, 0x14, 0x72, 0x88, - 0x58, 0x53, 0x03, 0xca, 0xb6, 0x5e, 0x85, 0xeb, 0xc6, 0xf6, 0xc9, 0xae, 0x94, 0xb6, 0x49, 0xdf, - 0x99, 0x39, 0x78, 0xe0, 0xb0, 0xee, 0x1a, 0x89, 0x19, 0xa2, 0x83, 0xe5, 0x37, 0xa7, 0x65, 0x84, - 0xeb, 0x1d, 0x7f, 0x82, 0x68, 0x27, 0x1c, 0xb4, 0x0b, 0x6c, 0x8a, 0xeb, 0x65, 0x47, 0xf2, 0xab, - 0x73, 0xdc, 0x0e, 0xb9, 0xb7, 0xd7, 0x9a, 0x5c, 0xf3, 0x29, 0x81, 0xb5, 0x31, 0x54, 0xbb, 0x5d, - 0x8d, 0xcc, 0xd3, 0xcf, 0xe4, 0xd5, 0x71, 0xc9, 0x9d, 0x65, 0xe0, 0xb4, 0xcf, 0xd3, 0x63, 0x45, - 0x0b, 0x27, 0x53, 0x32, 0x70, 0xd3, 0x05, 0x95, 0xeb, 0xc6, 0x86, 0xf9, 0x04, 0xda, 0xb2, 0xa9, - 0x05, 0x9a, 0x9e, 0x8f, 0x04, 0xe4, 0xa4, 0xb4, 0x6d, 0x43, 0x1b, 0x39, 0x84, 0xd1, 0x12, 0xac, - 0x02, 0x8f, 0xc6, 0x8b, 0x88, 0x24, 0x60, 0x81, 0xac, 0x3c, 0x5d, 0xc3, 0xb8, 0xc3, 0x33, 0x6e, - 0x07, 0x5b, 0x01, 0xb9, 0x4f, 0x00, 0xf4, 0xc9, 0x79, 0x9a, 0xd0, 0x12, 0x52, 0xba, 0xef, 0xfe, - 0x7a, 0x75, 0xa4, 0x50, 0x87, 0x91, 0x15, 0xb0, 0xb0, 0xb2, 0xdd, 0xea, 0xb3, 0x45, 0x42, 0x5c, - 0x04, 0x15, 0x89, 0x1f, 0x21, 0x65, 0x74, 0x5f, 0xa6, 0xb3, 0x69, 0x98, 0x31, 0x63, 0x8a, 0x23, - 0x49, 0x77, 0xe9, 0xb8, 0x6b, 0x86, 0xd6, 0x5c, 0xef, 0xc4, 0xd4, 0x5d, 0xba, 0xb1, 0xe5, 0x92, - 0x80, 0x22, 0x0b, 0x06, 0x56, 0xcd, 0xc2, 0xfc, 0x43, 0x69, 0xb5, 0x2b, 0x70, 0x4b, 0x9d, 0xe5, - 0xad, 0x5b, 0x4a, 0x57, 0x1d, 0xd9, 0xd5, 0x1c, 0xee, 0xd4, 0xfe, 0x02, 0xa4, 0x7d, 0xe7, 0x7d, - 0xc8, 0xf3, 0x45, 0x6e, 0xfa, 0x21, 0x59, 0x40, 0x26, 0x04, 0x8d, 0x46, 0xd6, 0x5e, 0x68, 0xc5, - 0xe5, 0x0a, 0xee, 0x70, 0xd7, 0x3b, 0x02, 0x6c, 0x1c, 0x7a, 0x88, 0x18, 0x4b, 0x6c, 0xce, 0x14, - 0x0b, 0xf6, 0xc4, 0x25, 0xd3, 0xec, 0xe1, 0x8e, 0x4e, 0x77, 0x16, 0x2a, 0xb9, 0x14, 0x4e, 0x3b, - 0x0a, 0xf5, 0x41, 0xad, 0xf7, 0xef, 0x35, 0xc3, 0x06, 0x52, 0x41, 0x9e, 0x17, 0x61, 0xb4, 0x3d, - 0xcd, 0x9a, 0x2d, 0x6e, 0xe4, 0x3e, 0x19, 0x59, 0x06, 0x1e, 0x12, 0x24, 0xe4, 0x24, 0xbf, 0x3d, - 0xf8, 0xd9, 0x42, 0x3a, 0x6f, 0x2f, 0x99, 0xf8, 0x80, 0xdd, 0x71, 0xac, 0x1b, 0xa8, 0x70, 0x6a, - 0x4a, 0xf8, 0x47, 0x01, 0x4c, 0x77, 0x05, 0xda, 0xfb, 0x42, 0x67, 0xd9, 0xb2, 0xdc, 0x25, 0x7d, - 0xa0, 0x35, 0x55, 0x9b, 0xc5, 0x92, 0x46, 0xfc, 0x02, 0xfc, 0xac, 0xa9, 0x63, 0x82, 0x47, 0xa9, - 0xde, 0xa6, 0x5a, 0xf0, 0xb1, 0x46, 0xb7, 0x65, 0x97, 0x1a, 0xe4, 0xa0, 0x60, 0x6e, 0xc7, 0x2b, - 0x5a, 0xf1, 0x77, 0xf0, 0x0a, 0x57, 0x72, 0xc9, 0xd0, 0x8a, 0x50, 0x84, 0xce, 0x0b, 0x3e, 0xc4, - 0xac, 0xb8, 0xc4, 0x3a, 0x64, 0x48, 0xf8, 0x07, 0xc6, 0x00, 0xbc, 0x6a, 0xb6, 0x40, 0xa3, 0xbc, - 0x28, 0xb2, 0xb8, 0xc4, 0x60, 0x65, 0x2f, 0xd9, 0xd0, 0xfc, 0xad, 0x84, 0x1f, 0xd6, 0xb2, 0x05, - 0x00, 0x7b, 0x0a, 0xed, 0x5e, 0x70, 0x37, 0xdb, 0x95, 0x50, 0xf4, 0x34, 0x03, 0x84, 0x05, 0x6c, - 0xdd, 0x1b, 0x3d, 0x95, 0xa7, 0xb8, 0x49, 0xa7, 0x75, 0x70, 0xc2, 0xa5, 0x68, 0x43, 0x94, 0x0a, - 0x56, 0xca, 0x86, 0x9d, 0x64, 0x6d, 0xa8, 0xea, 0xae, 0xac, 0x55, 0xa0, 0x64, 0x8b, 0x9b, 0x81, - 0x0b, 0x98, 0x47, 0x20, 0xae, 0x24, 0xdd, 0x36, 0xa1, 0xb4, 0xbb, 0xef, 0xb3, 0x0d, 0x24, 0xb6, - 0x5c, 0x1b, 0xcb, 0xb9, 0x8b, 0xa2, 0xf8, 0x2f, 0xae, 0x46, 0x30, 0xe4, 0xea, 0x00, 0x45, 0x9c, - 0xd9, 0x0a, 0x0c, 0x0d, 0x92, 0x11, 0x48, 0x49, 0x08, 0x67, 0x69, 0x14, 0xac, 0xc7, 0x64, 0x55, - 0x0b, 0x4a, 0x68, 0x1f, 0x8c, 0x2c, 0xa4, 0xf9, 0xbb, 0x0d, 0x94, 0x56, 0x57, 0xc7, 0x53, 0x78, - 0x05, 0x08, 0xdf, 0x02, 0x0d, 0x0d, 0x44, 0x30, 0x7e, 0xde, 0xd9, 0x23, 0x27, 0xe2, 0xe8, 0xc9, - 0xbf, 0x31, 0x23, 0xe9, 0xb1, 0x07, 0x9a, 0x85, 0x29, 0xc2, 0xba, 0xa7, 0xa4, 0x98, 0x49, 0xff, - 0x19, 0x86, 0xee, 0xa1, 0x79, 0x1d, 0x89, 0xda, 0x2f, 0x11, 0x4b, 0xd1, 0x5c, 0x37, 0xaa, 0x24, - 0x27, 0x33, 0x82, 0xdf, 0xe5, 0x3a, 0xed, 0x33, 0xb9, 0x5c, 0xca, 0x45, 0x74, 0xba, 0xce, 0x04, - 0x33, 0x8e, 0xca, 0x7c, 0x02, 0xb7, 0x08, 0x2a, 0x2c, 0x63, 0xb2, 0x64, 0x6c, 0xf8, 0x9e, 0xf1, - 0x7a, 0x43, 0xb6, 0x3d, 0x45, 0x2a, 0x43, 0x32, 0x70, 0x39, 0x38, 0xa4, 0x04, 0x0b, 0x16, 0xa1, - 0x80, 0x4e, 0x26, 0x55, 0x65, 0xe4, 0x18, 0x35, 0x5e, 0x3e, 0x5f, 0x06, 0x5f, 0xb0, 0xaf, 0x0b, - 0x54, 0x13, 0x73, 0x15, 0x08, 0xaf, 0xa1, 0x75, 0x56, 0x07, 0x0b, 0x50, 0x1d, 0x66, 0xfe, 0xb9, - 0x37, 0x95, 0x3e, 0x9b, 0x8a, 0x36, 0x81, 0xbf, 0x38, 0x2c, 0xf8, 0x79, 0xd1, 0xe0, 0xcf, 0xc8, - 0x51, 0xe1, 0x07, 0x64, 0x07, 0x96, 0x08, 0x0f, 0x7e, 0x0a, 0x3e, 0xe4, 0xa4, 0x74, 0x4f, 0xef, - 0x82, 0xdc, 0x33, 0x75, 0x57, 0x41, 0xae, 0x2c, 0x87, 0x76, 0x90, 0x2c, 0x30, 0xe7, 0x39, 0xd7, - 0x4c, 0xb8, 0xf6, 0x0c, 0x97, 0x8f, 0xc7, 0xd6, 0x70, 0x37, 0xf0, 0x84, 0x72, 0xdc, 0x8e, 0x70, - 0xac, 0x28, 0x0e, 0xbb, 0x85, 0x05, 0x94, 0x60, 0x54, 0x7f, 0xb9, 0xd0, 0xd9, 0xc5, 0x1d, 0x84, - 0x81, 0x3e, 0x20, 0x53, 0x00, 0x5d, 0x23, 0xdd, 0xa1, 0x62, 0xd2, 0x81, 0x68, 0xc1, 0x40, 0xe8, - 0x21, 0xbe, 0x3b, 0xa0, 0x97, 0x8e, 0xbd, 0x3e, 0xe1, 0x07, 0xc4, 0xce, 0xc5, 0x61, 0x18, 0xaa, - 0x06, 0x1b, 0x07, 0x1d, 0x8e, 0x94, 0x66, 0x07, 0xf1, 0x52, 0xda, 0x44, 0x51, 0x9c, 0x8a, 0x4e, - 0xee, 0x03, 0x2d, 0xed, 0x8b, 0xef, 0x14, 0x44, 0x77, 0x74, 0xfe, 0x32, 0x2e, 0x52, 0xd9, 0x0f, - 0x16, 0xac, 0x3d, 0x34, 0x0c, 0x67, 0x30, 0x8b, 0xdd, 0x60, 0x38, 0xc2, 0xeb, 0x49, 0xd9, 0xe4, - 0xdf, 0xe9, 0xa2, 0x9d, 0x14, 0x88, 0x62, 0x93, 0x75, 0x90, 0xfd, 0x28, 0x6d, 0xad, 0x33, 0x0d, - 0xc0, 0xef, 0x4a, 0x16, 0xd6, 0x69, 0xcb, 0xde, 0xc4, 0xae, 0xbb, 0xbc, 0x13, 0x67, 0xd7, 0xdb, - 0x4d, 0xbc, 0x25, 0x80, 0xdc, 0x16, 0x67, 0x1a, 0xd2, 0xa2, 0x1c, 0x77, 0x89, 0x6e, 0x17, 0x12, - 0xe8, 0x97, 0xae, 0xea, 0x7c, 0x32, 0x2a, 0x1b, 0x78, 0x3d, 0xf7, 0x34, 0x32, 0xad, 0xd1, 0x6d, - 0x6b, 0x1d, 0xb4, 0xa3, 0xa1, 0xed, 0x29, 0x6e, 0x4f, 0x23, 0xdb, 0x51, 0x7b, 0xaf, 0xeb, 0xee, - 0x4a, 0xf1, 0x92, 0x7d, 0x91, 0x24, 0xeb, 0x2b, 0x6a, 0xe9, 0x4a, 0x91, 0x67, 0xcb, 0xe9, 0x0d, - 0xdc, 0x81, 0xe9, 0x66, 0xbe, 0x4e, 0xd0, 0x9b, 0xc0, 0x76, 0x97, 0x9d, 0xed, 0x28, 0xaf, 0x30, - 0x74, 0x89, 0x3e, 0x00, 0xd8, 0xfe, 0x56, 0xca, 0xf6, 0x50, 0x7f, 0xb8, 0x1e, 0xc5, 0x43, 0xff, - 0x9d, 0xe7, 0xd7, 0x20, 0x9d, 0xbd, 0xf3, 0x62, 0x33, 0x1d, 0xba, 0x07, 0x51, 0xae, 0x16, 0x9a, - 0x5c, 0x36, 0xc3, 0x5e, 0xa7, 0x33, 0x4e, 0x38, 0xf5, 0x28, 0x67, 0xf6, 0xc1, 0x1e, 0x83, 0xbd, - 0x2e, 0x58, 0x2c, 0x79, 0x59, 0xe6, 0x5a, 0x12, 0x3c, 0xed, 0x90, 0xa7, 0xf0, 0x7c, 0x68, 0x35, - 0x85, 0x44, 0xe9, 0x59, 0x44, 0xd6, 0xc3, 0xf9, 0x58, 0x64, 0x3f, 0x11, 0x72, 0xa1, 0xca, 0x07, - 0xab, 0x8f, 0xba, 0x9d, 0x27, 0x28, 0xe4, 0xe5, 0x40, 0x14, 0xa3, 0xcf, 0xdc, 0x8a, 0xa6, 0xef, - 0x8b, 0x0d, 0x7b, 0x18, 0x93, 0xb9, 0x01, 0xb8, 0x80, 0x79, 0x7d, 0xba, 0x2a, 0x29, 0x6e, 0x8c, - 0x9f, 0x55, 0xbd, 0x67, 0x78, 0x05, 0xa4, 0x85, 0x1a, 0x2b, 0xc4, 0xdd, 0x85, 0xe6, 0x11, 0x6e, - 0x98, 0xfe, 0x76, 0x28, 0x61, 0x46, 0x69, 0x37, 0x4f, 0x87, 0xe7, 0x2d, 0x65, 0xb6, 0x8a, 0x97, - 0xb7, 0x5d, 0x58, 0x10, 0x97, 0x4b, 0x9c, 0x14, 0x5a, 0x0a, 0x61, 0x81, 0x4e, 0x55, 0x8d, 0xd3, - 0x8d, 0x51, 0x59, 0x8f, 0xc1, 0x8a, 0x47, 0xce, 0xd9, 0x38, 0xbb, 0x03, 0xac, 0x72, 0x01, 0xe5, - 0x3d, 0xc5, 0x92, 0x58, 0x2f, 0x98, 0x22, 0x71, 0x62, 0x67, 0xd1, 0xf6, 0xa0, 0x9f, 0x05, 0x52, - 0xbb, 0xcf, 0xfc, 0x07, 0x20, 0x10, 0x12, 0x7d, 0xee, 0x8e, 0x4b, 0x00, 0x59, 0xc3, 0xd0, 0x1c, - 0xd5, 0x44, 0x1d, 0xcc, 0x63, 0x4d, 0xa1, 0xc4, 0x19, 0xda, 0x2a, 0xda, 0xaa, 0x86, 0xf0, 0xb0, - 0xba, 0xcb, 0x97, 0x76, 0xd1, 0xdd, 0x83, 0x06, 0x4a, 0x17, 0x7a, 0xc2, 0xf1, 0xf9, 0xa6, 0x3c, - 0x7c, 0xe0, 0xcc, 0x6a, 0x1f, 0x30, 0x8f, 0xf1, 0x68, 0x62, 0x3a, 0x1d, 0x8f, 0xe5, 0x52, 0x20, - 0xbf, 0x96, 0x42, 0xa4, 0xe5, 0x4b, 0xa3, 0xc1, 0xd8, 0x5d, 0xaa, 0x2d, 0xf3, 0xa2, 0xa9, 0xbb, - 0xbb, 0xd3, 0xf7, 0xf5, 0x0a, 0x9b, 0x86, 0x05, 0x46, 0xb1, 0xda, 0x00, 0x94, 0xde, 0x40, 0x4c, - 0xc7, 0xe0, 0xd1, 0x5b, 0xe1, 0xd9, 0x1c, 0x6a, 0xdc, 0x31, 0x05, 0xaa, 0x55, 0xa5, 0x47, 0x89, - 0x2b, 0x06, 0xdf, 0x6e, 0xde, 0xcc, 0x63, 0x76, 0xa2, 0xb8, 0x44, 0xd2, 0xa6, 0x2c, 0x37, 0x7e, - 0x3c, 0xc5, 0x00, 0x5d, 0x0c, 0x47, 0x5c, 0x02, 0xd3, 0x4b, 0xa9, 0xca, 0xe7, 0x25, 0x45, 0x27, - 0x91, 0xb7, 0xe8, 0x2d, 0x7b, 0x0e, 0xc6, 0xd5, 0x19, 0x90, 0xce, 0x33, 0x93, 0x26, 0x63, 0xa9, - 0x29, 0x26, 0x8b, 0xa7, 0x29, 0xfa, 0xa8, 0x71, 0x34, 0x0f, 0xc4, 0xab, 0x74, 0x49, 0x0c, 0xd9, - 0x45, 0x26, 0x83, 0x4a, 0x61, 0xd4, 0xbd, 0xf3, 0x01, 0x55, 0x30, 0x77, 0xc5, 0x05, 0x2a, 0x95, - 0x8c, 0xab, 0xc0, 0xb2, 0x9d, 0x19, 0x27, 0xc8, 0x65, 0x29, 0xab, 0x74, 0x0c, 0x05, 0x92, 0x83, - 0xe6, 0x56, 0xd3, 0xf3, 0x12, 0x35, 0x39, 0x97, 0xe4, 0x16, 0x36, 0x2a, 0x46, 0x1f, 0x20, 0xe9, - 0x30, 0x09, 0xf3, 0x9a, 0x73, 0x2e, 0xc4, 0x08, 0xc2, 0x66, 0xcd, 0xe2, 0x4a, 0x85, 0xea, 0x9e, - 0x6a, 0x54, 0xc9, 0xa5, 0x66, 0x3d, 0x6c, 0x39, 0x19, 0xd5, 0x40, 0xe2, 0x36, 0x45, 0x86, 0x96, - 0xb4, 0x3d, 0x30, 0x26, 0xb3, 0x80, 0x01, 0x29, 0xba, 0x3a, 0x64, 0xb6, 0x49, 0x9c, 0x15, 0x55, - 0xa7, 0xcc, 0x26, 0x78, 0x14, 0x72, 0xf8, 0xc7, 0x22, 0x28, 0x40, 0xfa, 0x4d, 0x10, 0xcb, 0x32, - 0x2c, 0xae, 0x8d, 0x05, 0xfc, 0x7e, 0x6e, 0xe7, 0xe2, 0x5b, 0x9e, 0xa7, 0x87, 0x46, 0x57, 0x59, - 0x30, 0x59, 0x7a, 0x22, 0x85, 0xb7, 0xf9, 0x79, 0xda, 0x33, 0x4e, 0x29, 0x37, 0x60, 0x67, 0x80, - 0x22, 0x7c, 0x16, 0xc7, 0xbb, 0x74, 0x4a, 0x8d, 0x58, 0x19, 0xfe, 0x21, 0xc1, 0xb4, 0x83, 0x78, - 0x3d, 0xbe, 0x60, 0xf3, 0x7a, 0x3a, 0x2f, 0xbd, 0x20, 0xe7, 0x09, 0x89, 0xd5, 0x68, 0x72, 0x30, - 0x6c, 0xf2, 0xe1, 0xfd, 0x9c, 0xc9, 0x0d, 0x4c, 0xf4, 0x67, 0xb6, 0x2f, 0xba, 0xc7, 0x49, 0x9f, - 0x75, 0xa3, 0x4b, 0x6c, 0x9f, 0x7f, 0x17, 0xe6, 0x9f, 0x2d, 0xaa, 0xae, 0x79, 0x09, 0xf9, 0xf9, - 0x67, 0xbd, 0xab, 0x39, 0xbe, 0xfd, 0xd9, 0x35, 0xfa, 0xd2, 0x42, 0x20, 0x67, 0xc4, 0xda, 0x5a, - 0x23, 0x98, 0x4a, 0x09, 0x45, 0xc4, 0x14, 0x33, 0xa2, 0x2c, 0x1a, 0x3f, 0x3e, 0x03, 0x03, 0xd2, - 0xa1, 0xb3, 0x8f, 0x9a, 0x8f, 0x83, 0xc6, 0x0a, 0x1c, 0x5d, 0x17, 0x17, 0x18, 0x37, 0x4d, 0x59, - 0x20, 0x08, 0x3c, 0xb7, 0xf2, 0xcd, 0xf8, 0xb9, 0xf0, 0x46, 0xcf, 0x2b, 0x06, 0x74, 0x03, 0x0d, - 0xd4, 0xe5, 0x6c, 0x01, 0x9b, 0xe3, 0xd0, 0x17, 0xa8, 0xba, 0xa1, 0x26, 0xe8, 0xe6, 0xce, 0x35, - 0xe1, 0xe6, 0x52, 0x5b, 0xa9, 0x8b, 0x6b, 0xf6, 0xf2, 0x8e, 0xf9, 0xd4, 0xad, 0xd6, 0xf5, 0xeb, - 0x74, 0x67, 0x11, 0xd1, 0xa8, 0x1c, 0x88, 0x29, 0x6d, 0x47, 0xf7, 0xe6, 0xa7, 0x18, 0xee, 0x92, - 0xe6, 0x85, 0xfa, 0x0d, 0x95, 0xf6, 0x80, 0xef, 0xaa, 0x63, 0xaf, 0x10, 0x3c, 0x72, 0x68, 0x28, - 0x54, 0xe4, 0x40, 0xcd, 0xf1, 0x14, 0x08, 0x5a, 0xe5, 0xb3, 0x3a, 0xec, 0x4f, 0xbc, 0x76, 0xca, - 0xae, 0xfe, 0x33, 0xff, 0xac, 0xf1, 0xb5, 0x4b, 0x14, 0x89, 0xb1, 0xa6, 0x6e, 0xd0, 0x80, 0x14, - 0xcb, 0x99, 0x2d, 0x5a, 0x36, 0x2a, 0x21, 0x23, 0x46, 0x70, 0x3e, 0x60, 0x91, 0xee, 0x1c, 0xba, - 0xe4, 0x5a, 0xa7, 0xdb, 0x12, 0xbe, 0x72, 0x4a, 0xc2, 0x3c, 0x3d, 0x51, 0x67, 0xd4, 0xb7, 0x7d, - 0x1d, 0xf6, 0x0e, 0x98, 0x0f, 0x24, 0x0d, 0x13, 0x90, 0x8b, 0x6b, 0xaf, 0x5b, 0x8b, 0xe6, 0x74, - 0x2c, 0x80, 0x6d, 0x9d, 0x74, 0xfb, 0xc4, 0xf6, 0xc4, 0x49, 0xca, 0xb8, 0xff, 0xd7, 0x33, 0x79, - 0xed, 0x59, 0xa0, 0x43, 0xd9, 0x02, 0x63, 0x19, 0xb3, 0x9e, 0x65, 0x0c, 0x67, 0x3e, 0x5b, 0xf0, - 0x39, 0xfa, 0xdc, 0x31, 0x66, 0xab, 0xf9, 0x61, 0xb0, 0xdb, 0x78, 0x82, 0xac, 0x8b, 0x0f, 0x7f, - 0xdf, 0xfd, 0xfa, 0x75, 0xd9, 0xbe, 0x9b, 0xf3, 0x4c, 0x8f, 0x21, 0xfb, 0xad, 0xb7, 0x01, 0x85, - 0xe9, 0x7b, 0xb9, 0x98, 0x48, 0x91, 0x18, 0x27, 0x73, 0x04, 0xa7, 0x59, 0x78, 0x9e, 0xd9, 0xe7, - 0x4d, 0x1e, 0x9f, 0x29, 0x21, 0x0b, 0x11, 0x88, 0x69, 0x29, 0x5a, 0x95, 0xeb, 0x97, 0x49, 0x88, - 0xeb, 0x7d, 0xec, 0x0d, 0x3d, 0xb2, 0x2b, 0x68, 0x36, 0x94, 0x3e, 0xcb, 0x32, 0xa8, 0x80, 0xd9, - 0xe2, 0xbf, 0x24, 0x98, 0x38, 0x68, 0xaf, 0xff, 0x8f, 0xb5, 0xf7, 0x59, 0xee, 0xc9, 0xd0, 0x60, - 0xfb, 0x1f, 0x6c, 0x50, 0xc6, 0x11, 0x4f, 0xfe, 0xb9, 0x06, 0x7b, 0x3d, 0x6c, 0xf0, 0x39, 0xa6, - 0x41, 0xe9, 0xf3, 0xa4, 0xad, 0x68, 0xd1, 0x5e, 0xde, 0x6f, 0xbb, 0xd7, 0x2b, 0xf7, 0xb2, 0x3d, - 0x41, 0xa6, 0x6d, 0x0b, 0x68, 0xd8, 0xfc, 0xdc, 0x69, 0x77, 0xdb, 0xb4, 0x1f, 0x66, 0x4b, 0x18, - 0x50, 0x3d, 0x83, 0x75, 0x2a, 0xf9, 0xb6, 0x55, 0x89, 0xb3, 0xb2, 0x52, 0x93, 0x82, 0xf0, 0xd9, - 0xea, 0xb7, 0x59, 0x19, 0xd7, 0xb6, 0xe0, 0x73, 0x72, 0x50, 0x73, 0x58, 0x06, 0x82, 0x28, 0x31, - 0x7c, 0x48, 0x9c, 0x61, 0x5b, 0x4a, 0x93, 0x2e, 0xec, 0x2f, 0xec, 0xd1, 0x74, 0x40, 0xb8, 0xf2, - 0x56, 0xb6, 0xab, 0xea, 0xd2, 0x31, 0xb5, 0x47, 0x6d, 0xe4, 0x6e, 0x9c, 0x9d, 0xfc, 0x83, 0x27, - 0x0d, 0x31, 0x44, 0x1b, 0x43, 0xdd, 0xf9, 0x18, 0x89, 0x9e, 0x93, 0xdf, 0x79, 0xde, 0x51, 0xf0, - 0x17, 0x0d, 0xb6, 0xc5, 0x71, 0x9a, 0x40, 0xe0, 0x13, 0xd2, 0x39, 0x10, 0x2a, 0xd0, 0x90, 0x21, - 0xf9, 0xb2, 0xb6, 0x97, 0xc2, 0x49, 0x81, 0x8b, 0x12, 0x22, 0x2e, 0x4f, 0xd4, 0x13, 0x81, 0x77, - 0x9b, 0x23, 0x27, 0x34, 0x74, 0x2a, 0xd6, 0xac, 0x14, 0x3b, 0xb9, 0xcb, 0x03, 0xf4, 0xee, 0xc0, - 0x8f, 0x99, 0xb7, 0x77, 0xe3, 0xe9, 0xa5, 0x02, 0x69, 0x1d, 0xc2, 0x88, 0x8e, 0x3f, 0xce, 0xf6, - 0x0f, 0xbe, 0x96, 0x7b, 0x13, 0x84, 0x0c, 0xda, 0xe1, 0x4d, 0x76, 0xa1, 0xcf, 0x6a, 0xcf, 0xe8, - 0x8c, 0xec, 0xe0, 0xec, 0x37, 0xa6, 0x44, 0x20, 0x52, 0xb0, 0xa3, 0x29, 0x6b, 0xa4, 0xeb, 0x74, - 0xd3, 0x82, 0x7e, 0x3a, 0xcf, 0x33, 0x0e, 0x38, 0x5e, 0x2d, 0x8f, 0x9c, 0x5d, 0x71, 0x73, 0x88, - 0x66, 0xa6, 0xf7, 0x7b, 0x71, 0x06, 0xa3, 0x61, 0xdb, 0x3f, 0x91, 0xe7, 0xb5, 0xaf, 0xc5, 0x1d, - 0x3e, 0x64, 0x78, 0xe7, 0x49, 0x22, 0x02, 0xc4, 0x32, 0xfc, 0x72, 0x02, 0x3b, 0x08, 0xab, 0xb1, - 0xc0, 0xa1, 0x1b, 0x04, 0x7d, 0x59, 0x3d, 0xea, 0x85, 0xb9, 0xa0, 0x1e, 0x2a, 0xb2, 0x44, 0xff, - 0x97, 0x7c, 0xaf, 0x65, 0x3a, 0x64, 0xcf, 0x7c, 0xea, 0x8a, 0xff, 0xfc, 0x64, 0xfe, 0x9b, 0xd8, - 0x88, 0x95, 0x43, 0x51, 0x8c, 0x9a, 0x7f, 0xa6, 0xf7, 0x72, 0x6c, 0xe1, 0x77, 0xa7, 0xa5, 0x1c, - 0x00, 0x12, 0x68, 0xcc, 0xf4, 0x54, 0x2d, 0xac, 0xbb, 0x64, 0x43, 0xd6, 0x6d, 0x2a, 0x9c, 0xac, - 0xe8, 0x71, 0x09, 0x46, 0xe2, 0x9a, 0xf5, 0xdb, 0xe1, 0xe5, 0x2e, 0x77, 0x65, 0x14, 0x3c, 0x93, - 0xe6, 0xa0, 0x3b, 0x8b, 0xb1, 0x35, 0x7e, 0x6e, 0x5b, 0x2a, 0x2b, 0xee, 0x4b, 0x77, 0xb9, 0xd2, - 0x46, 0xac, 0x74, 0xc7, 0xd9, 0xe4, 0xdb, 0x43, 0x07, 0xaa, 0x32, 0xe3, 0x2c, 0xaf, 0xe8, 0x95, - 0x43, 0xc7, 0xfd, 0x9c, 0x00, 0x89, 0xc6, 0x82, 0x39, 0x15, 0xb6, 0x78, 0x91, 0x9e, 0x77, 0xe3, - 0x28, 0x44, 0x8c, 0x58, 0x61, 0x33, 0xf4, 0xc2, 0x91, 0xd4, 0xc2, 0xca, 0x0a, 0x1b, 0x83, 0x8a, - 0x21, 0x26, 0xb7, 0xde, 0x1d, 0xb9, 0x9e, 0x1e, 0x78, 0x2c, 0xe4, 0xcd, 0x25, 0x92, 0x07, 0x5e, - 0xee, 0x59, 0x5f, 0xe4, 0x68, 0xbe, 0xcf, 0xce, 0x22, 0xad, 0xe4, 0xbb, 0x8c, 0x90, 0x99, 0xb2, - 0xb3, 0xa4, 0xfe, 0xca, 0x7a, 0x11, 0x9b, 0x10, 0x53, 0x58, 0xfd, 0x44, 0xa2, 0x69, 0xaa, 0x69, - 0xab, 0xf6, 0x72, 0x15, 0x38, 0x9f, 0x5c, 0x65, 0xe5, 0x75, 0x4d, 0xda, 0x54, 0xb2, 0x5d, 0xb7, - 0x99, 0x15, 0x40, 0x0a, 0xec, 0xf0, 0x71, 0xa9, 0xb9, 0x70, 0x32, 0xbe, 0x78, 0xc7, 0x54, 0xcb, - 0x60, 0x28, 0x26, 0x57, 0xa9, 0xef, 0x73, 0xd6, 0xde, 0x2c, 0x24, 0x9a, 0xfa, 0xa7, 0x67, 0x90, - 0x45, 0x8f, 0x86, 0x3d, 0x87, 0x0b, 0xcf, 0x60, 0xb5, 0x9e, 0xa5, 0x36, 0xf2, 0xd8, 0x93, 0xd4, - 0x25, 0x2e, 0x22, 0xd8, 0x96, 0x3e, 0x0b, 0xdb, 0x3e, 0x5d, 0xe9, 0xbc, 0xec, 0xd1, 0x3d, 0x96, - 0xf1, 0xb4, 0x90, 0x6c, 0x8e, 0x2b, 0x53, 0x64, 0x2e, 0x1e, 0x34, 0x1f, 0x7a, 0xeb, 0x76, 0x25, - 0xef, 0xb9, 0x4b, 0x34, 0xf6, 0x3c, 0xf5, 0xc6, 0x80, 0x07, 0x1c, 0x1c, 0x65, 0x73, 0xc7, 0x1e, - 0x51, 0x27, 0x0e, 0x7f, 0x22, 0x3b, 0x30, 0x8f, 0x73, 0xaf, 0x15, 0xb7, 0x4b, 0xe6, 0x5b, 0x82, - 0x60, 0xf1, 0xb3, 0x14, 0xe4, 0xcb, 0x9c, 0x12, 0x83, 0xc9, 0x4b, 0xf1, 0x5f, 0x88, 0xcc, 0xb3, - 0x37, 0xbe, 0x3c, 0xe5, 0x2a, 0x4c, 0x79, 0x49, 0x63, 0x53, 0x61, 0xfd, 0x86, 0xaf, 0x12, 0x25, - 0x8a, 0x05, 0x72, 0x98, 0xad, 0x3a, 0x4b, 0x58, 0x41, 0x9d, 0xcb, 0x50, 0x1a, 0x78, 0x4e, 0x4d, - 0x06, 0xaa, 0x43, 0xd6, 0x81, 0x9f, 0xd3, 0xad, 0x07, 0xd9, 0xcf, 0x9c, 0x09, 0x60, 0x0b, 0x46, - 0xa3, 0x34, 0x24, 0x73, 0xc8, 0x8b, 0xca, 0x45, 0x85, 0x25, 0x1a, 0x95, 0xc7, 0x49, 0x38, 0x05, - 0x81, 0x3e, 0x87, 0xdc, 0x21, 0xca, 0x6e, 0xfb, 0x6d, 0xff, 0x86, 0x68, 0xc4, 0x82, 0x1c, 0x2a, - 0x1d, 0x6c, 0x31, 0xdc, 0xa0, 0x51, 0x00, 0x65, 0x32, 0xe7, 0x2c, 0xc2, 0xd9, 0x99, 0x07, 0xe0, - 0x2c, 0x6a, 0x4d, 0xf5, 0x51, 0x10, 0x61, 0x6f, 0xab, 0x50, 0xfd, 0x31, 0xd6, 0xe7, 0x6f, 0x95, - 0x0b, 0xce, 0x26, 0x21, 0x87, 0x92, 0x58, 0xa6, 0x58, 0xfc, 0xe7, 0x98, 0xe2, 0x32, 0xe1, 0x82, - 0x6e, 0x67, 0xd1, 0xc4, 0x3f, 0xe5, 0xa0, 0xf1, 0x1c, 0x73, 0xfe, 0xd9, 0x71, 0x66, 0x31, 0x8e, - 0x54, 0x1d, 0x6d, 0x91, 0x92, 0x51, 0x3f, 0x71, 0xe7, 0x88, 0x7a, 0x1d, 0x99, 0x12, 0xff, 0xa2, - 0x85, 0xdf, 0xc8, 0x8c, 0xe7, 0x18, 0xb5, 0x45, 0xa1, 0xa7, 0x80, 0xa4, 0xda, 0x55, 0xc7, 0xac, - 0xfc, 0x6c, 0xe1, 0x64, 0x21, 0xc8, 0xfb, 0x88, 0x95, 0xd9, 0x72, 0x15, 0x78, 0x9c, 0x2d, 0xa0, - 0xa6, 0x5c, 0xe0, 0x69, 0x23, 0x07, 0xe6, 0x56, 0x77, 0x6a, 0x3d, 0x85, 0x38, 0x46, 0x4c, 0xf2, - 0x26, 0xdf, 0xd3, 0x94, 0x97, 0x17, 0x71, 0x77, 0xee, 0x08, 0xfd, 0x80, 0x36, 0x15, 0xc1, 0xc2, - 0x22, 0x6e, 0xb9, 0x02, 0x76, 0x3f, 0x8c, 0x25, 0x1e, 0x35, 0xef, 0x1d, 0xe6, 0xc4, 0xe8, 0x31, - 0xbc, 0x90, 0xa8, 0x83, 0xf8, 0x43, 0xac, 0x1f, 0x12, 0x97, 0x84, 0xa0, 0xfc, 0x98, 0x7d, 0x50, - 0x25, 0xfa, 0xe8, 0x02, 0xc9, 0xf2, 0xc7, 0x44, 0xe5, 0x45, 0x19, 0x84, 0xd3, 0x9a, 0x16, 0xfd, - 0x4d, 0x72, 0x76, 0x2d, 0x70, 0x1d, 0x8d, 0x59, 0x05, 0x08, 0x71, 0x4f, 0x25, 0x5a, 0x77, 0x61, - 0x29, 0x04, 0x39, 0x71, 0x89, 0x31, 0x88, 0x58, 0xf0, 0xdc, 0x73, 0xc9, 0xa3, 0x28, 0x87, 0xc5, - 0x76, 0x86, 0xa4, 0xc5, 0x59, 0x5b, 0x6c, 0x91, 0xe9, 0x3f, 0x0b, 0x08, 0x76, 0xd5, 0xa2, 0x18, - 0x34, 0x97, 0xe2, 0x26, 0x28, 0x10, 0x93, 0x55, 0x5d, 0xc7, 0x33, 0x0f, 0x13, 0x18, 0x22, 0xf3, - 0x5a, 0x91, 0x56, 0x95, 0x06, 0xbc, 0x85, 0x4b, 0x2f, 0x53, 0x01, 0x19, 0xab, 0x15, 0x16, 0x86, - 0xe8, 0x1a, 0xd8, 0xc8, 0x70, 0x61, 0xf4, 0x4c, 0x35, 0x8f, 0xf8, 0x6e, 0x08, 0xeb, 0x02, 0xea, - 0xe2, 0xc9, 0x39, 0x16, 0x81, 0x95, 0xa0, 0xc4, 0x8d, 0x30, 0x17, 0x43, 0x48, 0x8b, 0xed, 0xe0, - 0x0e, 0xe4, 0x1f, 0x82, 0x50, 0xf3, 0x60, 0x8c, 0xd9, 0x75, 0x99, 0xe0, 0x0e, 0x42, 0x54, 0x40, - 0x32, 0x16, 0xa1, 0x84, 0x46, 0xf9, 0x62, 0x84, 0xee, 0x38, 0xab, 0xee, 0x3c, 0xad, 0x98, 0x2a, - 0x0e, 0xc9, 0xed, 0x72, 0x03, 0xc6, 0x5c, 0xad, 0xb2, 0x65, 0x18, 0x5e, 0x62, 0x3e, 0xdc, 0xe8, - 0x72, 0x45, 0xb1, 0xe0, 0xc9, 0x5b, 0x59, 0x57, 0xde, 0x0a, 0x09, 0xeb, 0x78, 0x4e, 0xee, 0x63, - 0x0a, 0x09, 0x89, 0xcf, 0x0a, 0xbb, 0x52, 0xcc, 0x16, 0xb7, 0xef, 0x98, 0x43, 0x97, 0x0f, 0x4a, - 0xb9, 0x51, 0x07, 0xc5, 0x90, 0x57, 0x35, 0x4d, 0xe0, 0x6c, 0x9c, 0x1b, 0xb1, 0xa7, 0xd9, 0x2e, - 0x7c, 0xd4, 0x73, 0xcf, 0x07, 0x72, 0x89, 0x1f, 0x9f, 0xec, 0xf9, 0x5a, 0xaf, 0x33, 0x87, 0xc7, - 0xb6, 0x1d, 0x51, 0x8a, 0xec, 0xbe, 0xef, 0xc2, 0xc5, 0x4c, 0xa8, 0xb4, 0xed, 0x19, 0x15, 0x48, - 0x98, 0xef, 0xaf, 0xff, 0x8e, 0x1e, 0xa0, 0x6a, 0xf7, 0x43, 0x8e, 0x92, 0x11, 0x23, 0xee, 0x22, - 0xb6, 0xc2, 0xa4, 0x86, 0x53, 0xa6, 0x93, 0x09, 0x0c, 0x65, 0x16, 0x76, 0x63, 0x46, 0x37, 0x6c, - 0x5f, 0xa6, 0x28, 0xf9, 0xc2, 0x64, 0x7a, 0x1a, 0x08, 0xaa, 0x9c, 0x33, 0x66, 0xa1, 0x10, 0x12, - 0x76, 0x69, 0x31, 0x5f, 0xc6, 0xaa, 0x06, 0xdb, 0x0a, 0x4e, 0xb7, 0x6f, 0x47, 0xa5, 0x66, 0xfa, - 0x8e, 0x0d, 0x52, 0xe1, 0x34, 0x10, 0x40, 0x17, 0x69, 0xb7, 0xcb, 0xfb, 0x62, 0xfb, 0xe5, 0xa1, - 0xf5, 0xe8, 0x01, 0x28, 0x5f, 0xcc, 0x77, 0x8e, 0x97, 0xa8, 0x5c, 0x47, 0xd1, 0xe0, 0x9e, 0x5a, - 0x53, 0xaa, 0x64, 0x1a, 0x00, 0xa7, 0xd8, 0x4a, 0xf1, 0xa9, 0x34, 0x25, 0xb6, 0x6c, 0x34, 0x11, - 0xa6, 0xc8, 0x76, 0xec, 0x45, 0x6f, 0xd2, 0x40, 0x39, 0x86, 0x12, 0x13, 0x6b, 0xc1, 0x91, 0x7c, - 0xc1, 0x27, 0x55, 0x01, 0x61, 0x6e, 0xd1, 0x17, 0xae, 0xcb, 0xfb, 0xf9, 0x07, 0xfe, 0xbf, 0xfe, - 0x99, 0x04, 0xef, 0x67, 0xdc, 0xb3, 0xde, 0x98, 0xa3, 0x43, 0x36, 0xfe, 0xe0, 0xdc, 0xa3, 0x9a, - 0x88, 0x74, 0xc7, 0xb9, 0xe0, 0xd3, 0x23, 0x5f, 0x29, 0x8d, 0xac, 0xc5, 0x58, 0xe6, 0x3a, 0xe3, - 0x3b, 0x33, 0x44, 0x07, 0x60, 0x91, 0x71, 0x67, 0xf0, 0xac, 0x85, 0x24, 0x52, 0xa4, 0x1e, 0xea, - 0x49, 0xec, 0x0a, 0xaf, 0x9c, 0x9b, 0x0b, 0xaf, 0xd2, 0xcf, 0xaf, 0x77, 0x84, 0x85, 0xfa, 0x32, - 0xab, 0x1d, 0x38, 0x7e, 0xad, 0xbb, 0x6b, 0x82, 0x42, 0xc9, 0x78, 0xb4, 0x0b, 0x2b, 0x7b, 0x89, - 0x41, 0x54, 0x60, 0x54, 0x8c, 0x0c, 0xda, 0x17, 0x73, 0x5c, 0xb9, 0xc7, 0x6d, 0x15, 0x3a, 0xf2, - 0xc6, 0x8f, 0x8f, 0x31, 0x2d, 0xf2, 0x9c, 0x84, 0xb3, 0xba, 0xb2, 0xf3, 0xbe, 0xa8, 0xc7, 0xea, - 0x1f, 0xe9, 0x37, 0x39, 0x98, 0xf6, 0x00, 0x82, 0xd0, 0x52, 0xe7, 0xb5, 0x0d, 0xce, 0x3d, 0x3a, - 0xf7, 0x8e, 0x71, 0x6a, 0xd1, 0x5e, 0xc9, 0x0d, 0x77, 0xb6, 0x28, 0xa2, 0xcc, 0x43, 0x67, 0xff, - 0x14, 0xb7, 0xff, 0xb5, 0x80, 0x9f, 0x70, 0x6e, 0x00, 0xf0, 0x4a, 0xad, 0xdd, 0x6f, 0xc4, 0x73, - 0x94, 0xf0, 0xeb, 0x7d, 0x44, 0x6e, 0x0d, 0x1b, 0xc0, 0x19, 0x19, 0x44, 0x9b, 0x64, 0x2b, 0xa0, - 0xe2, 0x4e, 0x49, 0x30, 0x4b, 0xc5, 0x00, 0x75, 0xd9, 0x60, 0x17, 0xad, 0x46, 0x25, 0xd2, 0xb0, - 0x7b, 0x05, 0x90, 0x1f, 0x4c, 0x4f, 0x9e, 0xa9, 0xf1, 0xf1, 0xfd, 0xc1, 0x10, 0x0c, 0xa7, 0x50, - 0x9c, 0x2d, 0xea, 0x2e, 0xee, 0x86, 0x50, 0x28, 0xa2, 0x5f, 0x37, 0xbd, 0xca, 0xb5, 0x2c, 0x6f, - 0x49, 0xba, 0x4b, 0x06, 0xc2, 0x02, 0x92, 0xbc, 0x33, 0x52, 0x6e, 0x48, 0x1e, 0x0d, 0x16, 0x17, - 0x7d, 0x47, 0xaa, 0xeb, 0x1b, 0x1f, 0x37, 0x5e, 0xd2, 0x95, 0x18, 0x4c, 0x35, 0x5d, 0x97, 0x21, - 0x5a, 0x64, 0xdb, 0xda, 0x20, 0x7a, 0x51, 0xe4, 0x23, 0x1b, 0x4e, 0xdb, 0x33, 0x19, 0xf2, 0x67, - 0xaa, 0x69, 0x13, 0xe4, 0x12, 0xba, 0xa9, 0xce, 0x3e, 0x70, 0xab, 0x41, 0x5e, 0x50, 0x21, 0x6a, - 0x91, 0xbb, 0x27, 0xab, 0x65, 0xe8, 0xa2, 0x1d, 0x55, 0x59, 0xb3, 0xec, 0x5a, 0x42, 0x9f, 0x0e, - 0x0e, 0x0f, 0x55, 0x39, 0x73, 0x8b, 0x0b, 0x66, 0x38, 0x95, 0x96, 0x16, 0xd2, 0x36, 0xe3, 0x55, - 0xb1, 0x4c, 0x76, 0xc3, 0x5b, 0xaf, 0x95, 0xc0, 0xe1, 0x0c, 0xc4, 0x05, 0xac, 0x21, 0xf9, 0xee, - 0x35, 0x06, 0x6d, 0x20, 0xd6, 0xb6, 0x10, 0x58, 0x4a, 0xd3, 0x20, 0x7e, 0xf9, 0x02, 0x8b, 0x27, - 0x56, 0xe1, 0x3f, 0xca, 0x16, 0xa3, 0x43, 0x5f, 0x10, 0x75, 0xe2, 0x2d, 0x5d, 0x1e, 0xa9, 0x32, - 0xc0, 0xaa, 0x7d, 0x4b, 0x79, 0xa5, 0xee, 0x36, 0xae, 0xaf, 0x44, 0x7c, 0xf2, 0x3c, 0xad, 0xb5, - 0xb5, 0x75, 0xed, 0xfd, 0x79, 0x0f, 0xb1, 0x7f, 0x56, 0xcb, 0x5e, 0x32, 0xcc, 0x80, 0xab, 0x97, - 0xc2, 0x22, 0x4c, 0xde, 0x5f, 0xb6, 0x85, 0xf2, 0xbf, 0xe2, 0xae, 0x2e, 0x69, 0xaa, 0xed, 0x2c, - 0x6a, 0xc1, 0xef, 0xce, 0xbd, 0xbb, 0x20, 0x7c, 0xdf, 0x4d, 0xea, 0xc2, 0x16, 0x73, 0x85, 0x45, - 0xb3, 0x9d, 0xc3, 0x59, 0x8c, 0xc3, 0xea, 0xd2, 0xc3, 0x96, 0x45, 0x82, 0x8d, 0x4a, 0xa7, 0x1f, - 0x77, 0x04, 0x8d, 0x92, 0x67, 0x8c, 0xdb, 0x73, 0x8d, 0xf7, 0x8c, 0x96, 0xe3, 0xec, 0x46, 0x21, - 0x0f, 0x49, 0xcf, 0x0a, 0x47, 0x87, 0x15, 0xde, 0x4b, 0x99, 0x60, 0x4f, 0xba, 0xb3, 0xd8, 0xa3, - 0xed, 0xb9, 0xe7, 0x0a, 0x4d, 0xdd, 0xab, 0x19, 0xc7, 0x07, 0xee, 0xeb, 0x24, 0xbe, 0x77, 0x34, - 0xc5, 0xb6, 0xff, 0xae, 0x7b, 0x97, 0x5a, 0x7e, 0x24, 0x25, 0xda, 0xfa, 0xca, 0x22, 0x71, 0x7d, - 0xe0, 0xa6, 0xe0, 0xc1, 0xc0, 0x33, 0x1e, 0x2e, 0xd1, 0xe7, 0x3f, 0x5c, 0x62, 0x8c, 0xee, 0x1e, - 0x9b, 0x19, 0xd5, 0xe2, 0x17, 0x8d, 0xd9, 0x14, 0xec, 0x00, 0x0d, 0x91, 0x7d, 0x7c, 0x95, 0x79, - 0x34, 0x5c, 0x53, 0x72, 0x5f, 0xe9, 0x2c, 0xce, 0x78, 0x1f, 0x45, 0xdf, 0x6f, 0x12, 0xc5, 0x99, - 0x18, 0x9f, 0xc9, 0x39, 0x73, 0x45, 0x17, 0xfc, 0xa6, 0x96, 0xa2, 0xcf, 0xf5, 0x2f, 0xce, 0x79, - 0x9b, 0x9b, 0xeb, 0xdf, 0x8e, 0x8b, 0x41, 0x88, 0x19, 0x47, 0xb9, 0xb0, 0x98, 0xcf, 0xc0, 0x0b, - 0x6a, 0xa3, 0x2f, 0xfc, 0xca, 0xea, 0x91, 0x02, 0x91, 0xfa, 0x34, 0xd5, 0xbb, 0xe8, 0xe0, 0xad, - 0x7c, 0xff, 0x4a, 0x77, 0x9c, 0x26, 0x85, 0x15, 0x56, 0xea, 0x78, 0x8b, 0x1a, 0xdc, 0x9f, 0xf2, - 0x2b, 0xe8, 0x09, 0x36, 0x97, 0x71, 0xcc, 0x19, 0x62, 0x29, 0x56, 0x3e, 0x8e, 0x4a, 0x6f, 0x81, - 0xc3, 0xc6, 0x9c, 0xde, 0x63, 0x88, 0x19, 0x0d, 0x24, 0x2f, 0x92, 0x5b, 0x58, 0x70, 0x0e, 0x5d, - 0xc6, 0x8a, 0xbb, 0xc7, 0xc1, 0xeb, 0xa3, 0xb8, 0x98, 0xe9, 0xc1, 0x42, 0x44, 0xb3, 0xf2, 0xd6, - 0x7d, 0x94, 0xe3, 0xc7, 0x70, 0x8b, 0x78, 0x4b, 0xc3, 0xaa, 0xb3, 0x9e, 0x3f, 0xc4, 0x6f, 0xdc, - 0xd8, 0x17, 0xec, 0x39, 0x0b, 0x4e, 0xd5, 0x4b, 0xea, 0xb9, 0x07, 0x43, 0xb1, 0x79, 0xb8, 0x1c, - 0xaa, 0x80, 0xd1, 0x0e, 0x19, 0x18, 0x1a, 0x75, 0x75, 0x1d, 0x18, 0x13, 0x3d, 0xb9, 0x7a, 0x59, - 0xa3, 0x58, 0xa1, 0xd2, 0x1b, 0x9f, 0xdc, 0xb5, 0x10, 0x2a, 0x40, 0xc7, 0x4c, 0x23, 0x3d, 0xe5, - 0x91, 0xbc, 0x43, 0x89, 0x15, 0x9e, 0xa1, 0xab, 0x3c, 0xd1, 0x99, 0x8b, 0xa3, 0x10, 0x1c, 0x6e, - 0xb9, 0x9d, 0x0b, 0xff, 0xc4, 0x71, 0x17, 0x0e, 0x47, 0xe0, 0x57, 0x9b, 0x37, 0xb2, 0x38, 0x99, - 0x98, 0x05, 0x84, 0xa4, 0xcf, 0xa4, 0xfb, 0x5f, 0x8b, 0x12, 0xab, 0xc7, 0x53, 0xf8, 0x4b, 0x89, - 0x9c, 0xb3, 0x49, 0x90, 0xe8, 0x21, 0x31, 0x48, 0xb1, 0xdb, 0x76, 0xe8, 0x15, 0x61, 0x08, 0x29, - 0x61, 0x41, 0xb7, 0x11, 0xa9, 0x55, 0x62, 0x1e, 0xa8, 0x71, 0x92, 0x00, 0x2f, 0x5c, 0x71, 0xd7, - 0x24, 0xad, 0x37, 0xbe, 0xab, 0xfe, 0x12, 0xe8, 0xd2, 0xb0, 0xc1, 0x92, 0x08, 0x88, 0x8b, 0x69, - 0x08, 0xa7, 0x9b, 0x8a, 0x7f, 0x43, 0x68, 0xe3, 0xbb, 0x1f, 0x96, 0x3c, 0xeb, 0x45, 0xc9, 0x95, - 0xfa, 0xe3, 0x0c, 0xfe, 0xa6, 0x91, 0x0b, 0xb5, 0x10, 0x55, 0x67, 0x41, 0xe3, 0x57, 0x2c, 0xef, - 0x72, 0x39, 0xba, 0xd2, 0xa5, 0x07, 0xa0, 0x9b, 0x33, 0x4e, 0xc0, 0x5f, 0xd2, 0xca, 0xad, 0x3a, - 0x98, 0x69, 0xfb, 0x46, 0x04, 0xa6, 0x80, 0x70, 0x3e, 0x02, 0x5e, 0xd0, 0x86, 0x99, 0x1f, 0xc8, - 0x21, 0x2e, 0xd7, 0x75, 0xa1, 0x88, 0xb8, 0x84, 0xc4, 0x16, 0x64, 0xe7, 0xff, 0x8b, 0x9c, 0xc3, - 0x6e, 0x07, 0x2e, 0x75, 0xe9, 0xdc, 0xa2, 0xe9, 0x71, 0x79, 0x6b, 0x0b, 0xd7, 0x10, 0xb9, 0x36, - 0x07, 0xc9, 0xf9, 0xff, 0x1a, 0x02, 0xc1, 0x29, 0x02, 0x2c, 0x6d, 0x01, 0x36, 0x18, 0x01, 0xa6, - 0x49, 0x48, 0x78, 0xb2, 0x83, 0x4e, 0x92, 0x33, 0xce, 0xcf, 0x80, 0xb5, 0x94, 0x8a, 0xf1, 0xfd, - 0x59, 0xed, 0xf7, 0xe3, 0xf5, 0xe1, 0xb7, 0xcf, 0xfb, 0x32, 0xe6, 0xf0, 0x7e, 0xf8, 0x8c, 0xbf, - 0x90, 0xc9, 0x72, 0xca, 0x81, 0xeb, 0x8f, 0x1b, 0xfb, 0xa1, 0xcc, 0x3c, 0x70, 0x59, 0xa9, 0x8b, - 0xce, 0x30, 0xbc, 0xe2, 0x56, 0x74, 0x92, 0x47, 0xc3, 0x87, 0x3f, 0x12, 0x17, 0xe2, 0x8f, 0x56, - 0x2e, 0xa2, 0x99, 0x2c, 0xe9, 0xa6, 0xfa, 0xea, 0x40, 0x7e, 0x03, 0xad, 0xc1, 0xb3, 0x0f, 0x78, - 0x9c, 0x2e, 0xfa, 0xc4, 0x7a, 0x87, 0xb5, 0x52, 0xf4, 0xf0, 0x96, 0xf3, 0xb8, 0x7d, 0xcf, 0x3f, - 0x35, 0x8f, 0x27, 0x7c, 0xab, 0xc0, 0x2e, 0x60, 0x01, 0x00, 0x90, 0x61, 0xeb, 0x8c, 0xfa, 0x3a, - 0x7f, 0x74, 0xc8, 0xa5, 0x7c, 0x25, 0x7e, 0x4e, 0xb2, 0xa5, 0x74, 0xe9, 0x5f, 0x91, 0x60, 0x18, - 0x05, 0x77, 0x56, 0x3c, 0xdf, 0x12, 0xde, 0x65, 0x96, 0xd3, 0xe0, 0x98, 0x8f, 0x09, 0x5d, 0xa2, - 0xf1, 0xe7, 0xfb, 0x9c, 0xcf, 0x4a, 0x84, 0x15, 0x2c, 0x42, 0x1a, 0x5c, 0xe6, 0xcd, 0x71, 0x93, - 0xf3, 0x01, 0xf8, 0x0b, 0xe9, 0x5c, 0x39, 0x7e, 0x00, 0x2b, 0x3a, 0x29, 0x15, 0xe2, 0x3a, 0xd9, - 0x40, 0xd7, 0x99, 0xdf, 0x43, 0x70, 0xe0, 0x54, 0x2d, 0xd3, 0x43, 0x89, 0x85, 0xc5, 0x90, 0x2b, - 0x50, 0xc0, 0x97, 0x5d, 0xf2, 0xb4, 0xf7, 0x40, 0x0c, 0xfa, 0xc8, 0x65, 0x4f, 0xff, 0xd2, 0x5b, - 0xc4, 0x61, 0x78, 0xc9, 0xdd, 0x4f, 0xea, 0x51, 0xed, 0x7a, 0xf8, 0x70, 0x0e, 0x16, 0xf1, 0x6e, - 0x07, 0xd9, 0x42, 0xe8, 0x2e, 0xdc, 0xf2, 0x35, 0xf5, 0xb1, 0xfb, 0x60, 0x8b, 0xe7, 0x2c, 0x28, - 0xce, 0x26, 0xdf, 0xbb, 0xac, 0x26, 0xc7, 0x36, 0x3f, 0xf3, 0xcd, 0xf0, 0x73, 0xff, 0x04, 0x23, - 0x18, 0x77, 0xe8, 0x30, 0x07, 0x79, 0x4a, 0x72, 0x31, 0x58, 0x07, 0x17, 0xa8, 0xe3, 0x23, 0xc7, - 0x92, 0xee, 0xe1, 0xb1, 0xe4, 0x9f, 0x2e, 0x45, 0xb0, 0x1a, 0x73, 0xa0, 0xe7, 0xad, 0xdf, 0x25, - 0x32, 0xbb, 0x7f, 0xcc, 0x1b, 0x98, 0x71, 0x39, 0x02, 0x29, 0xfb, 0x9a, 0xfe, 0xa2, 0x70, 0xee, - 0xdf, 0x19, 0x9e, 0x32, 0x7f, 0x94, 0x39, 0x86, 0x39, 0xa6, 0xd1, 0x8d, 0x85, 0x6f, 0x19, 0x37, - 0xea, 0x3b, 0x06, 0x0f, 0x82, 0x1f, 0xe0, 0x25, 0x82, 0xda, 0xad, 0x8b, 0x9d, 0xb1, 0x28, 0x50, - 0xed, 0xa6, 0x2e, 0xba, 0xf7, 0x50, 0xc5, 0x4d, 0x8c, 0xbd, 0x0c, 0x70, 0x08, 0x18, 0x39, 0x5c, - 0xb8, 0x39, 0x4c, 0xa7, 0xd3, 0xdf, 0x32, 0x50, 0x7e, 0x53, 0x58, 0xfb, 0xa6, 0x1b, 0x6e, 0xd8, - 0x64, 0xda, 0x40, 0xa4, 0xa2, 0x40, 0xfb, 0x82, 0x77, 0x8f, 0xed, 0x8b, 0x9b, 0x6b, 0x2d, 0xc3, - 0xb2, 0x5e, 0x25, 0xaf, 0x29, 0x41, 0x27, 0xa4, 0x6b, 0x0b, 0x47, 0xca, 0x58, 0x69, 0xd1, 0x76, - 0x3e, 0xb1, 0x96, 0xbf, 0x65, 0xfc, 0x86, 0x03, 0xd0, 0xda, 0x7d, 0x71, 0xd3, 0xed, 0x98, 0xa6, - 0xad, 0xb9, 0xdd, 0xb9, 0x91, 0x6e, 0x44, 0x5a, 0x08, 0x16, 0xb8, 0xe8, 0xe6, 0xbb, 0xd9, 0x78, - 0x79, 0x7e, 0x31, 0x15, 0x08, 0x18, 0xeb, 0x61, 0x2a, 0x5b, 0xae, 0xc2, 0x1a, 0xed, 0x83, 0xed, - 0x24, 0xc6, 0x04, 0xdb, 0x33, 0x74, 0xc0, 0x5a, 0xe7, 0x19, 0x1b, 0xed, 0xf7, 0x35, 0x42, 0x53, - 0x13, 0x49, 0x1f, 0x3f, 0x4e, 0x5f, 0x03, 0x80, 0x54, 0xef, 0x95, 0xc6, 0x91, 0x11, 0x37, 0xbf, - 0x7c, 0x9e, 0x12, 0xb9, 0xdc, 0xab, 0x01, 0xaa, 0xd5, 0xcd, 0x6f, 0x26, 0x07, 0x05, 0xbb, 0x17, - 0x2c, 0x6e, 0xd2, 0x76, 0xbe, 0x65, 0x4c, 0x18, 0x0c, 0xeb, 0x2e, 0x80, 0x21, 0x00, 0xe1, 0x4c, - 0x13, 0x85, 0xb5, 0x08, 0x00, 0x67, 0x1a, 0xf4, 0x1e, 0xdf, 0x63, 0x4e, 0xc9, 0xd5, 0x96, 0x76, - 0x88, 0xf1, 0xaf, 0x69, 0x87, 0x6b, 0xab, 0x7a, 0x6c, 0xbd, 0xea, 0x9d, 0x85, 0x31, 0x63, 0x62, - 0x6c, 0xa7, 0x6b, 0xd8, 0x6b, 0x36, 0x5b, 0x5a, 0xde, 0x2b, 0x56, 0x7d, 0x6f, 0x94, 0x2d, 0x6b, - 0x71, 0x94, 0x27, 0xae, 0x97, 0xf6, 0xd2, 0xb1, 0x16, 0xb2, 0xf2, 0xf2, 0x5e, 0xd7, 0x2e, 0x08, - 0x79, 0x7e, 0xaf, 0xdb, 0xc3, 0x85, 0x71, 0x1e, 0xc2, 0xd6, 0xba, 0x7c, 0x9c, 0x72, 0x69, 0xc5, - 0x38, 0xb1, 0xea, 0xbb, 0xb3, 0x89, 0x7b, 0x41, 0xcc, 0x84, 0x62, 0xf2, 0xf2, 0x39, 0xcd, 0x75, - 0x97, 0xf7, 0x4a, 0xab, 0xae, 0xc5, 0xf7, 0xeb, 0xf5, 0xf2, 0x75, 0x02, 0x9b, 0x83, 0x31, 0x49, - 0xc3, 0x6e, 0x4a, 0x5d, 0x7d, 0xd2, 0xf4, 0xa3, 0x07, 0x7d, 0xe2, 0xdc, 0x5c, 0x9d, 0x24, 0xc4, - 0x8c, 0x4d, 0x1c, 0x0c, 0x26, 0x65, 0x8b, 0xc9, 0xaf, 0x08, 0xc0, 0x5a, 0x0c, 0x1d, 0xaf, 0xa2, - 0xaa, 0xa6, 0xa1, 0xf7, 0xd4, 0x7e, 0x3c, 0x04, 0xfc, 0x5a, 0xea, 0x0c, 0x17, 0x57, 0x52, 0xe7, - 0x14, 0xc0, 0x4f, 0x7c, 0x92, 0x97, 0x0e, 0x3d, 0xef, 0x0f, 0x7d, 0x2d, 0x66, 0x01, 0x35, 0x05, - 0xac, 0x1f, 0xe9, 0x9a, 0xe3, 0x0c, 0xb4, 0x77, 0x26, 0x7d, 0xe0, 0x02, 0xf7, 0xa1, 0x1f, 0x74, - 0x61, 0x42, 0xb7, 0x2d, 0xef, 0x13, 0x00, 0xd8, 0x40, 0x88, 0x29, 0xb0, 0x6d, 0xc3, 0xe7, 0x5b, - 0xe1, 0xfd, 0x05, 0xf9, 0x33, 0xb6, 0x16, 0xc1, 0x94, 0xc0, 0x05, 0x2b, 0xe2, 0x07, 0xda, 0xd7, - 0xae, 0xf1, 0xbb, 0x16, 0xc8, 0x2f, 0xd6, 0xdc, 0xf6, 0x62, 0x23, 0xb3, 0x60, 0xb3, 0x12, 0x0a, - 0xa3, 0xde, 0x42, 0x66, 0xa4, 0x16, 0x03, 0x17, 0xbd, 0x43, 0xa1, 0xc2, 0xf8, 0x81, 0xef, 0xd2, - 0x5d, 0x84, 0x8e, 0x93, 0xe5, 0xc1, 0xa0, 0x68, 0xe7, 0xf4, 0xfb, 0x01, 0x90, 0x48, 0x1c, 0x48, - 0xc1, 0xbe, 0x0d, 0x9d, 0x16, 0xad, 0x8b, 0xec, 0x6b, 0x02, 0xd7, 0x96, 0xa2, 0x6a, 0x09, 0x67, - 0xa0, 0xda, 0x90, 0x07, 0xbb, 0x48, 0x5d, 0xcc, 0x15, 0x8b, 0x00, 0x21, 0x08, 0x22, 0x75, 0x31, - 0x2b, 0x0a, 0x7c, 0x18, 0x7f, 0xd0, 0x7f, 0xb5, 0x11, 0xbc, 0x65, 0x73, 0x65, 0x31, 0x0e, 0x1e, - 0x77, 0x6b, 0x0f, 0x98, 0xb2, 0xb7, 0x29, 0x30, 0x6d, 0x20, 0x5c, 0x98, 0x89, 0x03, 0x58, 0x96, - 0xe5, 0x06, 0x13, 0xe6, 0xfe, 0xa8, 0xf4, 0x92, 0x11, 0x1d, 0x92, 0x77, 0x4f, 0x03, 0x31, 0x87, - 0xdf, 0x29, 0x50, 0xda, 0x78, 0x2f, 0xac, 0xad, 0x29, 0xfa, 0x33, 0x36, 0xc0, 0x4a, 0x2e, 0x34, - 0xc0, 0xc1, 0xe7, 0x07, 0x29, 0xf1, 0xe0, 0xa6, 0xf4, 0xc8, 0xbc, 0xa4, 0x45, 0x8e, 0x94, 0xdd, - 0x8d, 0x56, 0xe4, 0xc8, 0xc6, 0xfd, 0x6e, 0x84, 0x57, 0x08, 0xb6, 0x21, 0x04, 0x3f, 0xb2, 0xf1, - 0x60, 0x41, 0x7a, 0xc9, 0x44, 0x5c, 0x42, 0x39, 0x9c, 0xca, 0x89, 0xe2, 0xa8, 0xf8, 0xbb, 0xd3, - 0x79, 0xb0, 0x00, 0x40, 0x30, 0x91, 0x78, 0xfd, 0xea, 0x80, 0x4d, 0x2d, 0x37, 0xdd, 0xec, 0xa3, - 0x12, 0x32, 0x52, 0x1b, 0x9d, 0xd6, 0x7c, 0xb1, 0x02, 0x13, 0x8c, 0xb3, 0x2a, 0xc7, 0xcf, 0xaa, - 0x8c, 0xc0, 0x12, 0x13, 0xb0, 0xab, 0xbf, 0xae, 0x9c, 0x5e, 0x9f, 0x7c, 0xdf, 0xbd, 0x9a, 0x03, - 0xca, 0xb4, 0x90, 0xa3, 0x77, 0x7e, 0x64, 0x21, 0x5b, 0x61, 0xd7, 0x93, 0x84, 0x3c, 0xbb, 0xa7, - 0xd4, 0x13, 0x8a, 0x39, 0x76, 0xbf, 0x48, 0x28, 0x95, 0xb1, 0x0c, 0x3c, 0x94, 0xdd, 0x2b, 0x51, - 0x22, 0x6e, 0x4c, 0xa1, 0xb9, 0xc4, 0x00, 0x55, 0xfe, 0x3c, 0x05, 0x57, 0x98, 0xc5, 0xcd, 0x83, - 0x11, 0x2c, 0x7b, 0xcc, 0x5d, 0x5c, 0xf0, 0x36, 0x9b, 0x90, 0xb5, 0xf0, 0x8c, 0xac, 0xc6, 0xfc, - 0x02, 0xe2, 0x5b, 0x8b, 0x88, 0x5f, 0x0b, 0x61, 0xbe, 0xb5, 0x02, 0xf3, 0x14, 0xf1, 0x20, 0x4d, - 0x2e, 0x41, 0xfc, 0x9a, 0xb7, 0x9e, 0xe4, 0xff, 0x06, 0xdc, 0x7f, 0x56, 0x14, 0x45, 0x90, 0x5d, - 0x74, 0xc6, 0x61, 0x73, 0x2d, 0x0e, 0x9d, 0x2d, 0xc5, 0x71, 0xdd, 0x40, 0x97, 0x61, 0x75, 0x1c, - 0x47, 0xe6, 0x48, 0xb2, 0xbf, 0x83, 0xd5, 0xdb, 0xf7, 0xb0, 0x7a, 0xfb, 0x3f, 0x8a, 0xd5, 0x8f, - 0xe3, 0xe7, 0x16, 0xdb, 0xce, 0xf0, 0x3b, 0x46, 0x3c, 0x96, 0x9e, 0xff, 0x09, 0xda, 0x3b, 0x7e, - 0x0f, 0x4b, 0xc7, 0x1f, 0xc0, 0x52, 0x25, 0xeb, 0xe2, 0x29, 0x5b, 0x91, 0x97, 0xa1, 0xaa, 0x54, - 0x2c, 0xca, 0xff, 0x10, 0x82, 0x8e, 0x89, 0x36, 0x56, 0xf5, 0xcc, 0x35, 0x19, 0x82, 0x04, 0x8e, - 0xc4, 0xb4, 0x74, 0x79, 0xba, 0x77, 0xed, 0x42, 0x1c, 0xd9, 0x8a, 0x27, 0xae, 0xdf, 0xc2, 0xda, - 0x55, 0x80, 0xf6, 0x78, 0x5e, 0x79, 0xd5, 0x6f, 0xbf, 0x87, 0x37, 0xba, 0x07, 0x7a, 0xd4, 0xb5, - 0xf6, 0x0f, 0xec, 0x81, 0x2b, 0x30, 0x76, 0x05, 0x4c, 0x12, 0x21, 0xd1, 0x89, 0xb6, 0x0c, 0x55, - 0xfd, 0x7f, 0x62, 0xcd, 0xed, 0xbf, 0x47, 0x4d, 0xbf, 0x8b, 0x97, 0xf8, 0x55, 0xf7, 0x27, 0x78, - 0x89, 0x43, 0xcb, 0xda, 0xbe, 0x45, 0x88, 0xfe, 0x1e, 0x66, 0xda, 0x2b, 0x08, 0x66, 0xed, 0xa3, - 0x98, 0xd9, 0x7e, 0x67, 0x73, 0x75, 0x11, 0xb3, 0xf6, 0x67, 0x98, 0x59, 0x44, 0xcc, 0xda, 0xbf, - 0x87, 0x99, 0x6d, 0x68, 0xcf, 0xc3, 0xcb, 0x5a, 0x14, 0x31, 0x11, 0xfc, 0x4c, 0x56, 0xe0, 0x87, - 0xe6, 0x0f, 0xd4, 0x36, 0x4a, 0x8a, 0x1f, 0xc6, 0xd5, 0xdd, 0x3b, 0xb8, 0xba, 0xfb, 0x3f, 0x09, - 0x53, 0x77, 0x78, 0x6a, 0xb9, 0x14, 0x55, 0x3e, 0x0e, 0xda, 0x8a, 0xf6, 0x27, 0x3c, 0x67, 0x8d, - 0x43, 0x4b, 0x23, 0x0e, 0x2d, 0xbc, 0xf0, 0xad, 0x68, 0xe8, 0xb6, 0x4c, 0x05, 0xed, 0x34, 0x1d, - 0x67, 0x8c, 0xb8, 0x2d, 0xff, 0x23, 0xe2, 0x36, 0x45, 0xc7, 0xda, 0x0a, 0x7c, 0xb4, 0x19, 0x2c, - 0xcb, 0xd0, 0x41, 0x6f, 0xde, 0x44, 0x27, 0x00, 0x12, 0x03, 0x5d, 0xe6, 0xab, 0xd9, 0x4c, 0x88, - 0x28, 0xd4, 0xc1, 0x7f, 0xa0, 0x2b, 0x0a, 0xf4, 0xd3, 0x71, 0x75, 0x11, 0x18, 0x99, 0x2f, 0xef, - 0x2e, 0x5e, 0xf9, 0x24, 0x5d, 0x4e, 0xaa, 0xe3, 0xc6, 0x12, 0xdb, 0xb2, 0x12, 0x6e, 0xf9, 0xdc, - 0x63, 0x32, 0xcb, 0x5a, 0xf7, 0xaa, 0x6c, 0x2e, 0xeb, 0x60, 0x2d, 0xda, 0x43, 0xa7, 0x1c, 0xea, - 0xe1, 0x81, 0x68, 0x9a, 0x31, 0x59, 0x0e, 0xbe, 0x57, 0x63, 0xd3, 0xd7, 0x69, 0xde, 0x1b, 0x02, - 0xe8, 0xca, 0x7c, 0x07, 0x77, 0x8a, 0x35, 0x14, 0x28, 0xfe, 0x57, 0x0f, 0x83, 0x56, 0xfb, 0xf8, - 0x30, 0xf0, 0x3f, 0xbe, 0x17, 0xd6, 0xc1, 0x8a, 0xf6, 0x7b, 0xf1, 0x26, 0x33, 0x68, 0x5d, 0xc0, - 0xbb, 0x4f, 0xd1, 0x71, 0xc8, 0x72, 0x64, 0x92, 0xb7, 0x35, 0x68, 0x74, 0xd5, 0x10, 0xb8, 0x69, - 0xf8, 0xd6, 0xb6, 0x3e, 0x32, 0x06, 0x50, 0x01, 0xf8, 0x31, 0x5c, 0xa8, 0xa0, 0xd5, 0xad, 0x18, - 0x82, 0xbc, 0x7c, 0x08, 0x71, 0xd0, 0x87, 0xda, 0x46, 0xd6, 0xb9, 0xa2, 0x6d, 0x19, 0xdb, 0xfe, - 0x20, 0x91, 0x62, 0xcb, 0x9d, 0x32, 0xd7, 0x76, 0xf3, 0x55, 0xd1, 0x57, 0x23, 0x86, 0x56, 0xf8, - 0xe8, 0xdc, 0xca, 0x65, 0xc4, 0x0c, 0xd7, 0x3e, 0xdd, 0x0f, 0x57, 0x01, 0xcf, 0x2a, 0x7c, 0x90, - 0x42, 0x2d, 0xbd, 0xcb, 0x2f, 0x5d, 0x45, 0xef, 0x1a, 0xc3, 0x0f, 0x69, 0x17, 0x8e, 0x21, 0x50, - 0xe9, 0x17, 0x35, 0x0b, 0xc9, 0xa0, 0x0b, 0x93, 0x2a, 0x78, 0x52, 0x1f, 0xe1, 0xa3, 0x0a, 0x9d, - 0x64, 0x8e, 0x2c, 0x53, 0x23, 0x4b, 0xee, 0x56, 0xaf, 0x67, 0xb3, 0xd4, 0xb8, 0xb1, 0x76, 0xb5, - 0x64, 0xcf, 0xea, 0xd8, 0x9a, 0x18, 0xb6, 0x99, 0x41, 0x8a, 0x2c, 0x72, 0x86, 0x5a, 0x61, 0x3a, - 0xb5, 0xe1, 0x95, 0xb7, 0x9f, 0x31, 0x23, 0x7b, 0x4b, 0x33, 0x1c, 0xba, 0xd3, 0xe0, 0x57, 0xf8, - 0xd6, 0x2d, 0xca, 0x52, 0xe9, 0x63, 0x3f, 0x78, 0x6c, 0x07, 0x8f, 0x13, 0x7c, 0xdc, 0xcc, 0x06, - 0x36, 0xa3, 0xb5, 0x48, 0xaf, 0xd9, 0xd8, 0x5e, 0xe3, 0x3a, 0xcd, 0x86, 0x3b, 0x5d, 0x7b, 0xb7, - 0xd7, 0x5c, 0xbc, 0x79, 0x10, 0x3a, 0xcd, 0x05, 0xdb, 0xf1, 0x7b, 0xbd, 0xe6, 0x3e, 0x32, 0xd4, - 0x35, 0xae, 0xd7, 0xfc, 0xa2, 0x7d, 0xcc, 0x37, 0x86, 0xb1, 0x90, 0x85, 0xc2, 0x40, 0xf4, 0x00, - 0x39, 0x61, 0xd6, 0xb5, 0xc0, 0x2a, 0xc6, 0xec, 0x1c, 0x64, 0x3a, 0x61, 0x66, 0xaf, 0xb0, 0xd5, - 0xcb, 0x0d, 0xd6, 0x1d, 0x36, 0x79, 0x31, 0xd1, 0x29, 0x64, 0xbd, 0xf4, 0x64, 0x0a, 0xaf, 0xb1, - 0x8e, 0xb7, 0xeb, 0xd1, 0x3d, 0x2a, 0x66, 0x1b, 0x7d, 0x26, 0xaf, 0x5d, 0x63, 0xa2, 0xd3, 0xc2, - 0xbb, 0x78, 0xa4, 0x8f, 0x22, 0x06, 0x1e, 0x1d, 0x7a, 0xdf, 0x8d, 0xac, 0x8b, 0x06, 0xac, 0x72, - 0x6a, 0xe7, 0xd0, 0x88, 0xde, 0x77, 0x06, 0x75, 0xb1, 0x1c, 0xa1, 0x20, 0xec, 0x47, 0xef, 0x85, - 0x66, 0x93, 0xdd, 0xa9, 0xe5, 0xc0, 0xa5, 0x76, 0x14, 0x32, 0x75, 0xcd, 0xaf, 0x61, 0x9b, 0x9e, - 0x77, 0x4b, 0x99, 0x0d, 0x25, 0x5f, 0x71, 0x0d, 0xce, 0xef, 0x21, 0x93, 0xa1, 0x12, 0xbd, 0xb2, - 0x90, 0xaf, 0x7c, 0x08, 0x63, 0x2e, 0x04, 0x14, 0x63, 0xed, 0x3c, 0xc3, 0x18, 0x95, 0xa0, 0x04, - 0x68, 0x86, 0x38, 0x0e, 0xf1, 0xa7, 0x63, 0xcd, 0x6b, 0x7c, 0xe2, 0x8f, 0x8b, 0x49, 0x27, 0xbc, - 0xa4, 0xc0, 0x22, 0x6b, 0x0a, 0x3d, 0x58, 0xee, 0x3e, 0xe6, 0x79, 0x74, 0xaf, 0x71, 0xae, 0x3a, - 0x75, 0xb1, 0x45, 0x23, 0x7e, 0x07, 0x22, 0xdd, 0x57, 0x16, 0x02, 0x9c, 0x8a, 0x2d, 0x92, 0xe8, - 0x7a, 0x97, 0x21, 0xdf, 0x80, 0x85, 0x47, 0x9d, 0x87, 0x96, 0x96, 0x58, 0x24, 0x90, 0x20, 0x58, - 0x0a, 0xbf, 0x6e, 0x31, 0x55, 0x77, 0xed, 0x8f, 0x0c, 0xb7, 0xe5, 0x9e, 0x47, 0x26, 0x51, 0x74, - 0xf9, 0xd1, 0xc8, 0x3d, 0x63, 0x74, 0x96, 0x95, 0x5c, 0x8b, 0x72, 0x10, 0x0f, 0x0c, 0x7f, 0x32, - 0xf0, 0x25, 0x8c, 0x18, 0x3c, 0x56, 0xa3, 0x1f, 0x04, 0xc6, 0x79, 0xf2, 0x27, 0x9b, 0xb9, 0xc6, - 0x50, 0x6f, 0x61, 0x6e, 0x56, 0xf0, 0x9b, 0xa7, 0x17, 0x0c, 0xf9, 0xd4, 0x38, 0xbf, 0xd0, 0x10, - 0x67, 0x36, 0x0c, 0xe9, 0x79, 0x9e, 0xfb, 0x1c, 0x64, 0xb8, 0x47, 0x66, 0xe9, 0x74, 0x5a, 0x58, - 0x10, 0xd9, 0x29, 0x0c, 0xb1, 0x22, 0xfc, 0x5a, 0xc4, 0xf0, 0xec, 0x85, 0x34, 0x74, 0x4d, 0x88, - 0x2e, 0x81, 0xc7, 0x10, 0x35, 0x9b, 0x62, 0x96, 0xcf, 0x6f, 0x2d, 0xab, 0x0f, 0x00, 0x3a, 0x80, - 0xb8, 0xf4, 0xc0, 0x19, 0xba, 0x07, 0x00, 0x4b, 0x56, 0x00, 0x3b, 0xe9, 0x29, 0x2b, 0xd1, 0x25, - 0xf0, 0xfb, 0xd0, 0xb8, 0x14, 0x6d, 0xef, 0x00, 0x83, 0xaa, 0xeb, 0x23, 0x4d, 0x93, 0x10, 0x30, - 0xad, 0xe5, 0xc0, 0xbe, 0xd2, 0x27, 0x69, 0x8b, 0x0c, 0x8d, 0x31, 0x39, 0x74, 0xc8, 0x30, 0x21, - 0x4e, 0x34, 0x82, 0x73, 0x30, 0x15, 0x93, 0xb0, 0xf1, 0xbc, 0x8c, 0x88, 0xed, 0x1c, 0xd9, 0x86, - 0x9e, 0x98, 0x59, 0x43, 0x04, 0xba, 0xfa, 0x49, 0x0e, 0x7f, 0xd9, 0x95, 0x9f, 0x32, 0x29, 0x57, - 0x94, 0x25, 0x3e, 0x01, 0xbb, 0x83, 0x11, 0xae, 0x2d, 0x1f, 0x22, 0x25, 0xaf, 0xfc, 0xc6, 0x92, - 0x45, 0x1e, 0x33, 0x4f, 0x48, 0x75, 0xbb, 0x20, 0xbd, 0x75, 0x9c, 0xf7, 0xec, 0xc9, 0xbd, 0xa9, - 0x18, 0xc7, 0x74, 0x41, 0x74, 0xa6, 0x8d, 0xe0, 0x87, 0x3c, 0x5c, 0xbe, 0xcb, 0xda, 0x13, 0x86, - 0xee, 0xc9, 0xc6, 0xd2, 0x75, 0xed, 0x36, 0x8b, 0x07, 0xff, 0xc1, 0x1a, 0x5f, 0xe3, 0x17, 0xf9, - 0x6f, 0xac, 0x71, 0xe6, 0x80, 0xba, 0x62, 0x89, 0x7b, 0x05, 0xa4, 0xfe, 0x61, 0x37, 0x21, 0x32, - 0x77, 0x43, 0x5b, 0x4c, 0xa6, 0x29, 0x60, 0xf8, 0x9d, 0x60, 0xfc, 0x68, 0x30, 0x64, 0x28, 0xc0, - 0xbc, 0x59, 0x2b, 0x6d, 0x6d, 0x64, 0xd5, 0xbf, 0x2e, 0x2d, 0xce, 0x66, 0xd9, 0xaf, 0xf1, 0xdf, - 0xcb, 0x38, 0x38, 0xe2, 0x5b, 0x0a, 0x10, 0x3b, 0x92, 0x4a, 0x88, 0xe8, 0x7a, 0x86, 0x43, 0x70, - 0xd7, 0x60, 0xd8, 0x9d, 0xdc, 0x3b, 0x08, 0xf4, 0x78, 0x50, 0x94, 0x05, 0xb9, 0x68, 0xfa, 0x07, - 0x39, 0xd0, 0xde, 0xfd, 0xff, 0x1c, 0xef, 0x89, 0x92, 0xb6, 0xeb, 0x47, 0x11, 0xa2, 0x63, 0x17, - 0x73, 0x1e, 0x2c, 0xec, 0x3d, 0x18, 0x50, 0x50, 0xe6, 0x02, 0xd5, 0x6b, 0x0f, 0x2c, 0xe6, 0xf3, - 0x48, 0x6f, 0x57, 0xd0, 0x69, 0xcb, 0xee, 0xe5, 0x1b, 0xe5, 0x5a, 0x78, 0x67, 0xa2, 0x65, 0xda, - 0xc6, 0xd4, 0x95, 0x62, 0x7a, 0x9a, 0x53, 0x17, 0xfd, 0xa2, 0x21, 0xeb, 0x02, 0xeb, 0x60, 0x6f, - 0xea, 0xd1, 0x41, 0xd8, 0x16, 0xe0, 0xbb, 0x52, 0xa2, 0x0c, 0xe3, 0x8d, 0xdb, 0x1b, 0xb0, 0x8b, - 0xf6, 0x00, 0x4c, 0x79, 0x47, 0x14, 0x16, 0x81, 0x14, 0x28, 0x15, 0x00, 0xa4, 0xe5, 0x5c, 0xae, - 0xb4, 0x14, 0xce, 0x35, 0x1e, 0x50, 0x5a, 0x92, 0xd7, 0xff, 0x7f, 0x1b, 0xca, 0xb5, 0x28, 0x98, - 0x01, 0x94, 0xd9, 0x58, 0x28, 0x29, 0x80, 0x95, 0x42, 0xae, 0x16, 0x59, 0xfe, 0xf1, 0x98, 0xa4, - 0x25, 0x3f, 0x00, 0xe0, 0xda, 0xc7, 0xf1, 0x18, 0x00, 0x98, 0x5b, 0x02, 0x20, 0x2c, 0x97, 0x4a, - 0x29, 0xff, 0xb1, 0xa9, 0xa6, 0x05, 0x57, 0x02, 0xb8, 0xf6, 0xbb, 0x13, 0x1d, 0x00, 0x78, 0x6b, - 0x2c, 0x27, 0xc7, 0x4a, 0x39, 0x5f, 0xf8, 0x18, 0x84, 0x58, 0xf0, 0xbf, 0x8d, 0x14, 0xf7, 0x60, - 0x8b, 0x5b, 0x36, 0xcd, 0xd0, 0x73, 0xf1, 0x63, 0x74, 0x48, 0x4b, 0xfe, 0x53, 0x74, 0x18, 0x3d, - 0x5b, 0xa3, 0x0c, 0x41, 0x8e, 0x31, 0x9b, 0x45, 0x99, 0x2f, 0x7f, 0x18, 0xbe, 0xc6, 0x0b, 0xba, - 0x30, 0x48, 0xf2, 0x46, 0x3c, 0x59, 0x37, 0x9f, 0x2b, 0xbe, 0x7f, 0xcc, 0xcd, 0x6b, 0x0e, 0xee, - 0xf1, 0x9c, 0x49, 0xd0, 0xea, 0xb4, 0xd2, 0xf6, 0x46, 0xcb, 0xb8, 0x66, 0xc9, 0x8f, 0x9c, 0x7d, - 0xff, 0xa3, 0xb6, 0xc9, 0x0f, 0x1e, 0x7d, 0x33, 0x9b, 0x5d, 0x30, 0x2e, 0x2a, 0x02, 0x04, 0xe8, - 0x0d, 0x59, 0xf1, 0x5c, 0xb9, 0xc0, 0xc6, 0x61, 0xc5, 0x19, 0xf1, 0x38, 0xf4, 0x64, 0x7f, 0x73, - 0x82, 0xf8, 0xf9, 0xa1, 0x20, 0x50, 0x79, 0x97, 0xee, 0x74, 0x05, 0xb9, 0xf2, 0xe1, 0x09, 0x0a, - 0x00, 0x38, 0xc4, 0xcd, 0xc9, 0x56, 0x9d, 0xd7, 0xd8, 0x43, 0x19, 0x6e, 0x92, 0xfc, 0x82, 0xbf, - 0xeb, 0xa3, 0x20, 0xff, 0xcf, 0xfa, 0x28, 0x2c, 0xb3, 0x35, 0xf3, 0x58, 0xa7, 0x98, 0xcb, 0xfa, - 0x13, 0xa5, 0x7a, 0x43, 0x5b, 0x7a, 0x50, 0x4d, 0x6b, 0xe5, 0xa2, 0x56, 0x78, 0x77, 0xeb, 0x59, - 0x39, 0x63, 0x21, 0xff, 0xa7, 0xdf, 0x3c, 0xf6, 0x68, 0x66, 0x63, 0x4f, 0x84, 0x78, 0xcb, 0xfd, - 0xc8, 0x06, 0x75, 0x83, 0xda, 0x36, 0x7e, 0x6f, 0xe9, 0xac, 0xc5, 0x3b, 0x18, 0xfc, 0x8e, 0x15, - 0xdb, 0x9d, 0x8f, 0xb5, 0x3f, 0x9e, 0x90, 0xc8, 0x7c, 0xe4, 0x80, 0x8e, 0xd9, 0x78, 0x84, 0xec, - 0xea, 0x89, 0xc8, 0x47, 0x16, 0x0d, 0x37, 0x0f, 0x6b, 0xab, 0x27, 0xc2, 0x73, 0x8f, 0xfa, 0x4d, - 0x26, 0xd6, 0xcc, 0xbd, 0xc3, 0xc1, 0xdc, 0x79, 0xc8, 0xfd, 0x33, 0x3c, 0x4c, 0xfe, 0x6f, 0xe4, - 0x60, 0x1f, 0x98, 0x88, 0xbc, 0xb8, 0xe9, 0xce, 0x43, 0x6e, 0xf5, 0x3c, 0x14, 0xfe, 0x78, 0x41, - 0xc8, 0xa4, 0xfc, 0x47, 0x0b, 0x22, 0xff, 0xc1, 0x05, 0x91, 0xff, 0xc8, 0x82, 0xc8, 0x67, 0xff, - 0x8f, 0x5e, 0x0f, 0x85, 0x60, 0x3d, 0xe4, 0x97, 0xcd, 0x43, 0x6f, 0x6a, 0x98, 0x81, 0x0e, 0xe3, - 0xde, 0x85, 0xa6, 0x7a, 0x5a, 0x48, 0xae, 0x82, 0x0c, 0x39, 0x2a, 0x52, 0x19, 0x9c, 0xf0, 0x1c, - 0xef, 0xd1, 0xe7, 0x1a, 0xb7, 0xde, 0xe1, 0xa8, 0xd0, 0xb6, 0xbb, 0x17, 0x6e, 0x36, 0x69, 0xc3, - 0xc1, 0xe2, 0x0d, 0xa6, 0x8f, 0x76, 0x79, 0xee, 0x7b, 0xab, 0x71, 0xf2, 0x50, 0x68, 0xf6, 0xce, - 0xe9, 0x00, 0x12, 0x59, 0x89, 0x9e, 0xc2, 0xb9, 0x57, 0x9f, 0x7e, 0x4b, 0x54, 0x5b, 0x0b, 0x8f, - 0x3a, 0x1b, 0x11, 0xd2, 0xde, 0x1d, 0x74, 0xbe, 0xd0, 0xe6, 0x06, 0xbd, 0xb6, 0x6c, 0x9a, 0xbc, - 0x41, 0x67, 0xbd, 0x41, 0xe7, 0x96, 0x0e, 0x3a, 0x27, 0x2e, 0xca, 0xfa, 0x71, 0x83, 0xce, 0x7d, - 0x78, 0xd0, 0x6b, 0xab, 0x44, 0x68, 0x80, 0x2c, 0xf7, 0x3b, 0x83, 0x66, 0x4a, 0x72, 0xa1, 0xf3, - 0xce, 0x54, 0xf3, 0x83, 0xce, 0x79, 0x83, 0xce, 0x47, 0x06, 0xbd, 0x16, 0x8c, 0x3a, 0xbf, 0x38, - 0xd5, 0x71, 0x83, 0xce, 0x2f, 0x19, 0xf4, 0x87, 0x14, 0x9b, 0xa5, 0x1a, 0x31, 0x82, 0xd1, 0x22, - 0xfd, 0x21, 0x06, 0x0b, 0x17, 0x79, 0x77, 0xd4, 0x18, 0x6b, 0x8f, 0x7b, 0x01, 0x23, 0xaa, 0x84, - 0x47, 0xd8, 0x1d, 0xbb, 0x93, 0xc1, 0xb1, 0x3b, 0xf6, 0x8d, 0x22, 0x71, 0x73, 0x59, 0xd1, 0xdc, - 0x72, 0xeb, 0x9f, 0xed, 0x2e, 0x1c, 0xcb, 0x86, 0x37, 0x4e, 0xa2, 0xb3, 0x00, 0x64, 0x2a, 0xcd, - 0x5d, 0x11, 0x40, 0x90, 0x60, 0xbb, 0x03, 0x88, 0x31, 0x61, 0x6f, 0x5e, 0x07, 0x17, 0xf3, 0x43, - 0xae, 0x88, 0x8e, 0xe3, 0xa1, 0x9d, 0x5d, 0x54, 0x08, 0xf8, 0x1b, 0x65, 0x78, 0xa5, 0x62, 0xba, - 0xe8, 0x79, 0x5c, 0xc9, 0xe9, 0x6c, 0xc0, 0xe7, 0xd2, 0x1b, 0x40, 0xfd, 0x7a, 0xdb, 0x36, 0x6b, - 0xcc, 0x41, 0x19, 0xcd, 0x5f, 0xd4, 0xad, 0x93, 0x7e, 0xe2, 0xcb, 0x27, 0x27, 0x97, 0x84, 0x68, - 0x81, 0xc8, 0xb0, 0x2f, 0x2c, 0x04, 0xfa, 0x5d, 0x6c, 0x9b, 0x2f, 0x9a, 0xb8, 0xe2, 0x60, 0xa3, - 0x2b, 0x6e, 0xba, 0x0d, 0x71, 0x47, 0x1a, 0xcb, 0x0c, 0x6a, 0xec, 0x26, 0x4d, 0xbc, 0xd1, 0x3c, - 0xd6, 0x9e, 0xb6, 0xb6, 0xc4, 0x68, 0x4e, 0xe7, 0x3f, 0xf9, 0x55, 0x58, 0x62, 0x31, 0x77, 0xb3, - 0x63, 0xc4, 0x0b, 0xde, 0xee, 0xf5, 0x31, 0xb3, 0xd7, 0xda, 0x07, 0x0d, 0xe6, 0x0b, 0xf6, 0x72, - 0x0a, 0x44, 0xc4, 0x56, 0xe5, 0xaa, 0xd8, 0x61, 0x2b, 0x38, 0x43, 0x1f, 0x92, 0x51, 0x40, 0xcf, - 0xcb, 0x76, 0x0f, 0xf3, 0x3d, 0xa2, 0x5e, 0xea, 0xae, 0x4b, 0x3f, 0x6f, 0x68, 0xb8, 0x7c, 0xc1, - 0xad, 0xe3, 0x39, 0x92, 0x07, 0x45, 0x34, 0x55, 0x7f, 0xe6, 0xcf, 0x6f, 0x0c, 0x93, 0xe8, 0xd7, - 0x4a, 0x3b, 0xb1, 0xdc, 0x89, 0xdc, 0xdb, 0x72, 0x62, 0x9d, 0xc8, 0x99, 0x37, 0x70, 0xbc, 0xfb, - 0xfa, 0x42, 0xa7, 0x6b, 0x0b, 0xbd, 0x66, 0x3f, 0xe0, 0xba, 0xbe, 0xd8, 0xa9, 0x6b, 0x33, 0x5e, - 0xfb, 0x60, 0xb7, 0x0b, 0xbd, 0xe6, 0x96, 0x5e, 0x51, 0xf0, 0xb7, 0x9a, 0xd8, 0xab, 0x18, 0xfe, - 0xea, 0xff, 0xc3, 0xd1, 0xe6, 0x97, 0x8d, 0xd6, 0xe7, 0xf5, 0xb1, 0x17, 0x5d, 0x18, 0xf9, 0xac, - 0xad, 0x76, 0xd4, 0x77, 0x3f, 0x79, 0x12, 0x3e, 0x29, 0x67, 0x57, 0x79, 0x14, 0x34, 0xa9, 0x86, - 0x6d, 0xc0, 0xd6, 0x2e, 0x7e, 0xe7, 0xe6, 0x1a, 0xb3, 0xf0, 0xe2, 0x56, 0x72, 0xb1, 0x9a, 0x1f, - 0x66, 0x6c, 0xd5, 0x7d, 0x8b, 0x48, 0x1d, 0xbc, 0x59, 0xe9, 0x2f, 0x08, 0x7a, 0x55, 0x3c, 0x86, - 0x06, 0x83, 0x23, 0x0e, 0x81, 0x7e, 0x6f, 0xe6, 0xa3, 0x97, 0x48, 0x04, 0x1a, 0x84, 0x88, 0xe1, - 0x0b, 0xcf, 0x51, 0xd6, 0x22, 0xc7, 0x0c, 0x3e, 0x10, 0xc3, 0x3e, 0x3b, 0x69, 0x1d, 0xf6, 0xbd, - 0xfa, 0x13, 0x55, 0x14, 0x14, 0xcd, 0x71, 0xfd, 0xe0, 0xd1, 0xda, 0x53, 0xa5, 0xdf, 0xed, 0xc8, - 0x98, 0x7a, 0xbf, 0xd6, 0x56, 0x6c, 0x52, 0x2a, 0x48, 0xea, 0xed, 0xf6, 0xf9, 0xd5, 0x44, 0x3e, - 0xde, 0xef, 0x1b, 0x0d, 0xf8, 0xef, 0xac, 0x75, 0x33, 0xd8, 0xbd, 0xe9, 0xc3, 0xd3, 0xb6, 0x8c, - 0xef, 0x7b, 0xcd, 0xc6, 0x03, 0xfc, 0x34, 0x8b, 0x7b, 0xa3, 0x5e, 0x11, 0x13, 0x1a, 0xf7, 0x67, - 0xad, 0x2b, 0xf9, 0xb0, 0x61, 0xd9, 0x85, 0x4e, 0xe9, 0x12, 0x13, 0xae, 0xf4, 0xcb, 0x9b, 0xec, - 0x36, 0x94, 0x99, 0x3e, 0x4d, 0xc6, 0xe5, 0x87, 0xcb, 0x1b, 0x4c, 0x3c, 0xea, 0xec, 0x0e, 0x1e, - 0x3b, 0x93, 0x46, 0x63, 0xc7, 0x3e, 0x85, 0xd7, 0x8d, 0x9d, 0x46, 0xa7, 0x3b, 0x7e, 0xd9, 0xc7, - 0x0a, 0xdb, 0xed, 0xd6, 0xcd, 0xd5, 0xf6, 0x6d, 0x73, 0x70, 0xad, 0x3d, 0x54, 0xda, 0x3b, 0x46, - 0x63, 0xb2, 0x73, 0x7a, 0x76, 0xb7, 0xa1, 0x57, 0xf4, 0x49, 0x53, 0x35, 0x5f, 0x9d, 0xcb, 0xb3, - 0xc2, 0x63, 0xd9, 0x69, 0x5b, 0xd7, 0x07, 0xc3, 0x9d, 0xe1, 0x5e, 0xc1, 0xb8, 0x78, 0x7b, 0xd5, - 0xba, 0x93, 0xab, 0x17, 0x33, 0xdb, 0x6a, 0x75, 0xf5, 0xdb, 0xcc, 0xd9, 0xe8, 0x71, 0xf4, 0xf6, - 0x42, 0xac, 0xc6, 0xf6, 0xeb, 0xf4, 0xfe, 0x4d, 0xdf, 0x9e, 0xe4, 0xd5, 0xfe, 0x33, 0xd9, 0xdb, - 0xed, 0xdd, 0xbf, 0xde, 0x8c, 0x06, 0xc7, 0x99, 0xd7, 0xbd, 0x53, 0xb9, 0x39, 0x3d, 0xea, 0xbd, - 0xbe, 0xdc, 0x3f, 0xee, 0x9e, 0x77, 0x4a, 0x99, 0x96, 0x55, 0xc9, 0xb4, 0x7b, 0x1b, 0xa3, 0xc3, - 0x66, 0xf1, 0x6c, 0xd2, 0xdd, 0x30, 0xac, 0xd3, 0x71, 0xe3, 0x82, 0x8e, 0x65, 0x57, 0xdb, 0xbb, - 0x7e, 0x6e, 0x8d, 0x2e, 0x87, 0xcd, 0x26, 0x2c, 0x84, 0x45, 0xbf, 0xdc, 0x71, 0x98, 0x73, 0x85, - 0xdc, 0x54, 0x62, 0xf7, 0x54, 0xf7, 0xe2, 0x2d, 0x4f, 0x3b, 0xfc, 0x01, 0x14, 0xdd, 0x50, 0x7b, - 0x40, 0xd7, 0x83, 0x95, 0x27, 0x61, 0x31, 0xad, 0x44, 0x28, 0xf0, 0x50, 0x07, 0x06, 0xa9, 0x77, - 0x88, 0x80, 0x67, 0x10, 0xbf, 0xd9, 0x96, 0x77, 0xac, 0x87, 0xab, 0x33, 0xe1, 0x9f, 0xe6, 0x31, - 0xc5, 0x44, 0x4c, 0x4a, 0xe2, 0x7f, 0xda, 0x44, 0x43, 0x37, 0x98, 0xcd, 0x1b, 0x9a, 0x44, 0x2f, - 0xdb, 0xc5, 0xdc, 0xd1, 0x89, 0xeb, 0x83, 0x8a, 0x12, 0xb8, 0x6a, 0xc3, 0xd2, 0x44, 0x47, 0xef, - 0x51, 0x39, 0x82, 0x8d, 0xbf, 0x6d, 0x18, 0x4e, 0xa4, 0x51, 0xff, 0x4c, 0x96, 0x22, 0x97, 0x17, - 0xfc, 0x06, 0xe2, 0xe6, 0x29, 0xa8, 0x10, 0xc2, 0x44, 0x75, 0x06, 0x6e, 0x0e, 0x3b, 0xa1, 0x57, - 0x2c, 0x07, 0xd7, 0x04, 0x2c, 0xe2, 0x72, 0xa1, 0x06, 0x6b, 0x63, 0x6f, 0x57, 0xde, 0xad, 0xb9, - 0x9b, 0xcb, 0x9a, 0xd0, 0x7e, 0x15, 0x1a, 0xaa, 0xd5, 0x31, 0x0c, 0xe3, 0x59, 0x25, 0xf4, 0x56, - 0xac, 0x33, 0x20, 0xc2, 0x37, 0x45, 0xa0, 0x47, 0x98, 0xe2, 0xc0, 0x71, 0x4c, 0xbb, 0x9a, 0xc9, - 0xe0, 0x39, 0x61, 0x1a, 0x74, 0xa8, 0x8e, 0x31, 0xb2, 0x6c, 0x92, 0x46, 0x27, 0x16, 0x33, 0x03, - 0x62, 0x8b, 0x62, 0x01, 0x5e, 0xea, 0xe2, 0x7f, 0xba, 0x97, 0x46, 0xd6, 0xe8, 0x7d, 0xc3, 0x8e, - 0x31, 0x1c, 0x8e, 0x74, 0x6a, 0x99, 0x51, 0x36, 0x97, 0x6d, 0x63, 0x3a, 0xbb, 0xaa, 0xf5, 0xef, - 0xf2, 0x82, 0x65, 0x57, 0xbb, 0x3e, 0xca, 0x0c, 0xf0, 0x43, 0x53, 0xe2, 0x26, 0x05, 0x5b, 0x75, - 0x49, 0xc5, 0x5e, 0xa0, 0x6e, 0x7d, 0x91, 0xba, 0x5d, 0x47, 0x20, 0xef, 0x20, 0x79, 0xc9, 0x97, - 0x2c, 0xc5, 0x8f, 0x52, 0x2d, 0x4a, 0x01, 0xfe, 0x50, 0x16, 0x29, 0x3f, 0x5e, 0x5a, 0x1e, 0x6a, - 0x63, 0x3c, 0x16, 0x58, 0x8b, 0xe2, 0xd0, 0x87, 0x9b, 0xe5, 0xbb, 0x30, 0x2e, 0x46, 0x80, 0xc1, - 0xe7, 0xd8, 0x91, 0x45, 0x5d, 0xca, 0xf1, 0xa2, 0xe9, 0xe2, 0x54, 0x45, 0x10, 0x3e, 0x18, 0xf5, - 0x49, 0xe4, 0xe2, 0x20, 0x12, 0xe9, 0x9a, 0xdf, 0x8c, 0x06, 0x4c, 0x62, 0x2b, 0xe0, 0x0d, 0xf8, - 0x6f, 0x4d, 0xb8, 0x36, 0x84, 0x91, 0x4d, 0x84, 0xf6, 0x48, 0xd5, 0x30, 0xa0, 0xad, 0x40, 0xd8, - 0xce, 0x2d, 0xd1, 0x54, 0x94, 0x93, 0xa0, 0x6b, 0x0b, 0x24, 0x58, 0xf7, 0x36, 0xb9, 0x00, 0xfb, - 0x0d, 0xac, 0x48, 0x56, 0xf7, 0xc1, 0x18, 0x09, 0x1d, 0x28, 0x63, 0x11, 0x67, 0x64, 0xe9, 0x02, - 0xba, 0x50, 0x11, 0xe0, 0xe2, 0xea, 0x90, 0xd0, 0xd3, 0x5d, 0xa4, 0x6d, 0x0c, 0x8f, 0x61, 0xe3, - 0x9d, 0x5a, 0xa4, 0x6a, 0xfc, 0xe2, 0x0c, 0x20, 0x9f, 0x3e, 0xa3, 0x50, 0x8a, 0xf7, 0x7d, 0x81, - 0x58, 0x2d, 0x9d, 0x58, 0xe9, 0x35, 0xb6, 0xa2, 0x16, 0x26, 0x2b, 0xe4, 0x20, 0xe4, 0x9c, 0x18, - 0x16, 0x95, 0x48, 0xce, 0x3d, 0xa8, 0x0c, 0xea, 0xf1, 0xb9, 0x62, 0xc9, 0x2f, 0xd6, 0xcf, 0xf1, - 0xf5, 0x47, 0x3a, 0x5e, 0xf3, 0xb6, 0xe8, 0x52, 0xf7, 0xdb, 0xe1, 0x16, 0xf7, 0x5a, 0xb0, 0xba, - 0xd7, 0xf6, 0x0c, 0x0b, 0x86, 0x6f, 0x3b, 0x82, 0x49, 0x2c, 0xf4, 0xfe, 0x42, 0x5a, 0x95, 0x04, - 0x15, 0x94, 0x08, 0xfc, 0x48, 0x1d, 0x2e, 0x3a, 0x42, 0x03, 0x7d, 0x00, 0x1e, 0x28, 0x3e, 0x8c, - 0x5e, 0xcf, 0x1d, 0x36, 0xa0, 0x65, 0x88, 0x48, 0xb0, 0x61, 0xf5, 0x02, 0x2b, 0x9c, 0x0c, 0x88, - 0x4e, 0xa3, 0x4e, 0x00, 0x2e, 0x00, 0xcd, 0xe9, 0x05, 0x17, 0x5e, 0x35, 0x98, 0x76, 0xc4, 0x99, - 0x18, 0x33, 0xd1, 0x0b, 0xc3, 0x92, 0x93, 0xc1, 0xe4, 0xaf, 0xf9, 0xb3, 0xff, 0xcd, 0xbd, 0x5d, - 0xbc, 0x36, 0x06, 0xd4, 0x6b, 0x46, 0x47, 0x35, 0xa5, 0xc9, 0x9d, 0xc4, 0x3b, 0x28, 0x48, 0x13, - 0x5b, 0xea, 0xe0, 0x6d, 0x30, 0x89, 0x9a, 0x71, 0x6c, 0xc9, 0x61, 0xbe, 0x06, 0xe8, 0xb3, 0x50, - 0xff, 0x94, 0xc5, 0x1f, 0x13, 0xd6, 0xb2, 0xc1, 0x78, 0x51, 0x55, 0x94, 0x54, 0xfb, 0x5c, 0xc7, - 0x0c, 0x5d, 0x6b, 0xe0, 0x8f, 0x6a, 0x9f, 0x8c, 0xd9, 0x2f, 0x8a, 0x05, 0xec, 0x89, 0xae, 0x24, - 0x7c, 0xb4, 0x5f, 0xf5, 0x4e, 0x0b, 0xb0, 0xe2, 0x3d, 0x5f, 0xf7, 0xb5, 0x2b, 0xd2, 0x81, 0xf2, - 0xb2, 0x34, 0x50, 0x6c, 0xea, 0xd6, 0x89, 0x59, 0xf0, 0x7c, 0xb5, 0xbf, 0xed, 0x3e, 0x35, 0x9b, - 0xd7, 0xac, 0xf9, 0x9d, 0x91, 0x55, 0x2f, 0xc9, 0xf0, 0x70, 0xad, 0x58, 0x75, 0xfc, 0xc5, 0xcb, - 0x90, 0xb4, 0x25, 0xd2, 0x3f, 0x41, 0xd5, 0x4c, 0x96, 0xbc, 0x58, 0x51, 0x7b, 0xfc, 0xcb, 0x85, - 0xa2, 0xc1, 0x5b, 0x07, 0x5e, 0xf1, 0x67, 0x64, 0x61, 0xac, 0x49, 0x26, 0xa2, 0xd5, 0xd7, 0x61, - 0x3c, 0x20, 0x51, 0xb1, 0xfd, 0x82, 0x56, 0xe9, 0x37, 0x0d, 0xa0, 0x01, 0x78, 0x04, 0x06, 0xeb, - 0x3f, 0x1a, 0x13, 0x98, 0xe6, 0x1b, 0x1d, 0xe6, 0xa6, 0x0b, 0xaf, 0xd0, 0x15, 0x08, 0x96, 0x98, - 0xce, 0x7e, 0xcc, 0x8e, 0x07, 0x08, 0x7b, 0xa2, 0x68, 0xc0, 0x66, 0x27, 0x90, 0xe9, 0x58, 0xf5, - 0x0d, 0xa9, 0x5b, 0xef, 0x82, 0x4e, 0x84, 0xa2, 0xa8, 0xd4, 0x9b, 0xa2, 0x34, 0x53, 0xff, 0xfe, - 0x43, 0x32, 0x71, 0x63, 0xad, 0xcf, 0xe6, 0x12, 0xf1, 0x1e, 0x34, 0xef, 0xc1, 0x0c, 0x9e, 0xce, - 0xea, 0xa2, 0x28, 0x99, 0x87, 0xd8, 0xcd, 0xd9, 0x68, 0x88, 0x3f, 0x43, 0xa7, 0x9e, 0xc5, 0xbf, - 0x27, 0x2d, 0xf6, 0x76, 0x02, 0x3d, 0x21, 0x30, 0xf0, 0x83, 0x8c, 0x0c, 0x6b, 0xa9, 0xf6, 0x29, - 0xc2, 0x30, 0x44, 0x00, 0x86, 0x03, 0xf8, 0x33, 0xb1, 0xaf, 0x4c, 0x2c, 0xd4, 0xe9, 0xf5, 0xeb, - 0x33, 0x07, 0xef, 0x67, 0x56, 0x67, 0x28, 0x46, 0x55, 0x41, 0xb6, 0xb2, 0x9e, 0x45, 0xa9, 0xdd, - 0xaf, 0xce, 0x46, 0x96, 0x56, 0x15, 0xc5, 0xb9, 0xa4, 0x68, 0xe6, 0x40, 0x81, 0xec, 0x7e, 0x35, - 0x5d, 0x92, 0x40, 0xaa, 0xad, 0xa6, 0xcb, 0x73, 0x89, 0x39, 0x5f, 0x62, 0x22, 0x14, 0xc1, 0xd7, - 0xa1, 0x59, 0x65, 0xa1, 0x64, 0xec, 0xea, 0x8c, 0xdd, 0x1d, 0xac, 0xc2, 0x24, 0x5a, 0xfd, 0x76, - 0x15, 0x3a, 0x7e, 0x19, 0x41, 0x0a, 0xbe, 0x0f, 0xc8, 0x14, 0xde, 0x61, 0x64, 0x54, 0x35, 0xc5, - 0x14, 0xb3, 0x33, 0x04, 0x66, 0x8c, 0x85, 0x4c, 0xb5, 0x8b, 0x09, 0x80, 0x72, 0x8d, 0xe8, 0x55, - 0x36, 0x8d, 0xe6, 0xc4, 0x72, 0x9f, 0xc8, 0xd4, 0xc4, 0xa7, 0x8e, 0x4d, 0x6b, 0x0d, 0xba, 0xca, - 0xab, 0x8d, 0xef, 0x80, 0x3e, 0xd2, 0x43, 0x37, 0x98, 0xb9, 0x04, 0x8a, 0x69, 0xfd, 0xfb, 0x77, - 0x59, 0xca, 0x66, 0xa5, 0x5c, 0x41, 0x2a, 0x48, 0xfe, 0xde, 0xa8, 0xf8, 0xfb, 0x67, 0xba, 0x0f, - 0x9b, 0xef, 0xa8, 0x9d, 0x56, 0x8d, 0xcc, 0x74, 0xa8, 0xd8, 0x69, 0x90, 0x1e, 0xc5, 0x1f, 0x12, - 0xd4, 0xc9, 0x49, 0xd9, 0x0d, 0x29, 0x1b, 0x54, 0xa1, 0xc2, 0xa5, 0x9d, 0xa6, 0x43, 0xef, 0x18, - 0xe8, 0x03, 0x90, 0x86, 0x21, 0x66, 0x0a, 0x95, 0x2c, 0xfe, 0xcb, 0xe6, 0xf2, 0xe9, 0x27, 0x93, - 0x56, 0xcd, 0xc9, 0xb9, 0xa2, 0x94, 0x97, 0x72, 0xd8, 0xc4, 0xea, 0x0e, 0x09, 0xcc, 0x07, 0xf0, - 0x31, 0xb7, 0x4b, 0xa8, 0x97, 0x87, 0x7a, 0x95, 0xdf, 0xaf, 0x56, 0x80, 0x2a, 0xf9, 0xec, 0x6f, - 0xd6, 0x93, 0xa5, 0x12, 0x60, 0x84, 0x1f, 0x20, 0x6c, 0xff, 0x2a, 0xd0, 0xf8, 0xc2, 0x10, 0xd1, - 0xe5, 0x10, 0x37, 0xbb, 0xcc, 0x44, 0xd1, 0x34, 0x53, 0x01, 0x56, 0x96, 0x29, 0x66, 0x4b, 0x1b, - 0x95, 0x9c, 0x8b, 0x93, 0x0c, 0x0c, 0x1c, 0x52, 0xe4, 0x4a, 0x2e, 0x9b, 0x2f, 0xe5, 0x73, 0x95, - 0x5c, 0x31, 0x5f, 0x62, 0x3d, 0x00, 0xe6, 0xff, 0xb4, 0x87, 0x6c, 0xb6, 0x52, 0x2e, 0xcb, 0x32, - 0xdf, 0x45, 0xae, 0x98, 0xcb, 0x95, 0xe5, 0x8d, 0x42, 0x39, 0x5b, 0x2c, 0x17, 0x4b, 0xb2, 0x2c, - 0xfe, 0xf8, 0x51, 0xeb, 0x8d, 0x74, 0x1a, 0xdf, 0x5b, 0x18, 0x80, 0x1c, 0xa4, 0x91, 0x5b, 0x3f, - 0xb0, 0x4e, 0x93, 0x9a, 0xc0, 0x12, 0xc9, 0xd9, 0xa7, 0x6e, 0x9a, 0x85, 0x32, 0xfc, 0xf2, 0x45, - 0x27, 0x13, 0x01, 0xf8, 0x17, 0x7e, 0x4e, 0xd1, 0x5b, 0xd0, 0x9b, 0x79, 0x92, 0xff, 0xf2, 0x25, - 0x24, 0xc6, 0xce, 0xfd, 0x36, 0x6d, 0x50, 0x84, 0x13, 0x44, 0x72, 0x92, 0x33, 0x10, 0xa4, 0xdc, - 0xd5, 0xb9, 0xab, 0x11, 0xfc, 0x49, 0xd3, 0x1d, 0x3a, 0x0d, 0x0c, 0xe2, 0xc2, 0x02, 0x59, 0xd3, - 0x72, 0x5e, 0x69, 0xc1, 0xa0, 0x2e, 0xfa, 0xd4, 0x90, 0xe4, 0xcc, 0xdd, 0xe7, 0xba, 0x69, 0x90, - 0xb9, 0xdc, 0xaa, 0xdb, 0xaf, 0x34, 0x8b, 0x2b, 0xba, 0xbb, 0xdd, 0x3c, 0x5b, 0x52, 0xd8, 0xde, - 0x7e, 0x6d, 0x22, 0x23, 0x3f, 0x03, 0xcd, 0x2d, 0x54, 0x49, 0xb5, 0x77, 0x87, 0x26, 0xf6, 0xea, - 0x57, 0x93, 0xeb, 0xf5, 0xfa, 0x79, 0xfb, 0x09, 0x3f, 0x3b, 0xf0, 0x4c, 0x5e, 0x6d, 0xc8, 0x49, - 0x33, 0x1f, 0x50, 0xbe, 0x12, 0x14, 0xe0, 0xaa, 0x90, 0x2f, 0x5f, 0x44, 0x83, 0x56, 0x11, 0xeb, - 0x75, 0x34, 0xeb, 0x18, 0x3d, 0x4c, 0xfb, 0xd4, 0xb0, 0x2c, 0xe5, 0x35, 0xad, 0xda, 0xf4, 0x37, - 0xd2, 0x2d, 0xb0, 0x18, 0x62, 0xa9, 0x9d, 0xa0, 0x95, 0x4f, 0x90, 0xa6, 0x9c, 0x25, 0x4c, 0x05, - 0xa4, 0xcc, 0x3d, 0x8c, 0x5b, 0x03, 0x59, 0xc9, 0x2f, 0x5f, 0x54, 0xb4, 0x1a, 0x01, 0xb3, 0x8e, - 0x54, 0xbf, 0xea, 0xb7, 0xa9, 0xe3, 0x7c, 0x18, 0x70, 0x5a, 0xf9, 0x50, 0x87, 0xaa, 0x69, 0x0b, - 0xea, 0x86, 0x53, 0xfa, 0x0b, 0x29, 0x6d, 0xae, 0x49, 0xe0, 0x27, 0x2d, 0xc7, 0x0a, 0x9a, 0xc3, - 0xdb, 0x74, 0x09, 0x31, 0x05, 0x0d, 0xa5, 0x44, 0x09, 0x7f, 0xfb, 0xee, 0x6f, 0x3b, 0x25, 0x26, - 0xc5, 0x50, 0x3d, 0xbc, 0x07, 0xee, 0xd7, 0x4b, 0xe7, 0xb2, 0xb9, 0xd2, 0xdf, 0x21, 0x40, 0x52, - 0xe9, 0x8d, 0x6c, 0x31, 0xf7, 0x77, 0x08, 0x94, 0x54, 0x5a, 0xde, 0xc8, 0x85, 0xd2, 0x78, 0x60, - 0xf0, 0x60, 0xa4, 0x75, 0x82, 0x8d, 0xc2, 0x6e, 0x29, 0x38, 0x75, 0x92, 0x46, 0x56, 0x0e, 0xa9, - 0xe9, 0xc9, 0x16, 0x57, 0xc5, 0x4f, 0x4c, 0x56, 0x81, 0xbb, 0xa1, 0x60, 0xad, 0x13, 0xf1, 0x53, - 0x1d, 0xdd, 0x0f, 0x9b, 0xc0, 0x36, 0x47, 0xb0, 0x23, 0xb5, 0x90, 0xbe, 0x70, 0x0e, 0xd1, 0xce, - 0xd6, 0xa2, 0x81, 0x18, 0x6b, 0x6c, 0xcf, 0x83, 0xf9, 0xe1, 0xd1, 0xe8, 0x35, 0x96, 0xdc, 0x4a, - 0xd8, 0xbf, 0x7e, 0xc1, 0x3b, 0xa3, 0x4c, 0xca, 0x78, 0xeb, 0xde, 0x20, 0xfd, 0x42, 0x9b, 0xd9, - 0xdc, 0xc6, 0x16, 0xbd, 0x0e, 0x20, 0x56, 0xe9, 0xad, 0x09, 0x50, 0x8a, 0xbc, 0x2a, 0x81, 0xab, - 0x7b, 0xdd, 0xdb, 0x69, 0xbf, 0x7c, 0x71, 0x36, 0xe5, 0xad, 0x9f, 0x51, 0xcf, 0xf7, 0x6c, 0x99, - 0x5e, 0xac, 0x15, 0xfe, 0x9a, 0x79, 0xd8, 0xf7, 0x3b, 0x98, 0x0b, 0x79, 0xf9, 0x5f, 0x12, 0x62, - 0x37, 0xf1, 0xd7, 0xcc, 0x99, 0x4b, 0xfe, 0x9f, 0x64, 0xf2, 0x67, 0x75, 0xa1, 0x74, 0xb2, 0x9a, - 0xf0, 0x07, 0x15, 0xf4, 0x99, 0x80, 0x7d, 0x28, 0x16, 0xac, 0x9f, 0x31, 0xcd, 0xfe, 0x94, 0x16, - 0x87, 0xed, 0xc4, 0x0c, 0x93, 0x9b, 0x25, 0xc5, 0x34, 0xb5, 0xd7, 0x66, 0xaf, 0x0f, 0xdc, 0xa1, - 0xc3, 0x22, 0x11, 0x88, 0x1a, 0x4a, 0xd7, 0xb0, 0x08, 0xea, 0xb0, 0xfd, 0xa5, 0xe9, 0xee, 0x97, - 0xc6, 0xcd, 0x2f, 0x59, 0x43, 0x21, 0x88, 0x70, 0xa9, 0xb4, 0x83, 0x74, 0xbb, 0x5f, 0x03, 0x38, - 0x29, 0x7f, 0x10, 0x69, 0x34, 0x4c, 0x51, 0x72, 0xcb, 0x3a, 0xb4, 0x2c, 0x6e, 0x7e, 0xee, 0x87, - 0xef, 0x6b, 0x5e, 0x29, 0xa7, 0x6d, 0x8a, 0x92, 0xb3, 0x25, 0x66, 0xe9, 0x37, 0xc8, 0xfd, 0x0f, - 0x91, 0xe3, 0x13, 0x00, 0x49, 0x9f, 0x31, 0x22, 0x36, 0x8d, 0xb0, 0x84, 0x0f, 0x30, 0x33, 0x5e, - 0xd5, 0xb6, 0x5b, 0xd5, 0x8f, 0x50, 0x29, 0xc8, 0x5e, 0x15, 0x37, 0x22, 0x13, 0x5f, 0x78, 0xd0, - 0xa5, 0x85, 0x69, 0xa4, 0x28, 0x28, 0x46, 0x89, 0x8b, 0xcb, 0x1e, 0x3a, 0x34, 0x5b, 0xa6, 0xdd, - 0x16, 0x43, 0xfd, 0x38, 0xeb, 0x6d, 0x51, 0x0a, 0xc6, 0x4a, 0xd9, 0x74, 0x1a, 0xf6, 0xf7, 0xa0, - 0x84, 0xdd, 0x37, 0x59, 0x09, 0x3a, 0x42, 0xb6, 0x1d, 0x6f, 0xb1, 0x2e, 0xaa, 0x6e, 0x8f, 0x50, - 0x58, 0x45, 0x6f, 0x96, 0xb0, 0x07, 0x2b, 0x3a, 0x36, 0xf8, 0xee, 0xab, 0x37, 0x2a, 0x60, 0x5f, - 0x94, 0x8e, 0x5a, 0xe7, 0x67, 0x30, 0x6f, 0xf8, 0x8d, 0x55, 0xb5, 0xf7, 0x9a, 0x80, 0x66, 0x93, - 0x49, 0x5f, 0x48, 0x01, 0xe6, 0xd5, 0xb5, 0xbf, 0x7c, 0x61, 0xaa, 0xfb, 0xcd, 0x21, 0xcf, 0x97, - 0x3d, 0xdf, 0xf0, 0x99, 0x0f, 0x08, 0x13, 0x33, 0xd2, 0x20, 0x4b, 0xd4, 0x3f, 0xc5, 0x24, 0x4a, - 0xc1, 0x8c, 0x87, 0x5a, 0x71, 0xc3, 0x50, 0xcc, 0xc2, 0x93, 0x5e, 0x5f, 0x46, 0x0d, 0x5b, 0x4c, - 0x14, 0xaa, 0xba, 0xf9, 0xcb, 0x5a, 0xf5, 0xdc, 0x45, 0x66, 0x11, 0x4a, 0xe0, 0x40, 0x63, 0x09, - 0xcb, 0x1a, 0xa0, 0x57, 0x05, 0x16, 0x06, 0x07, 0xb4, 0xbf, 0x38, 0x38, 0x48, 0x8c, 0x6d, 0xc5, - 0xa5, 0x6b, 0x60, 0x44, 0x04, 0xf8, 0x02, 0x4f, 0xa7, 0xe2, 0x67, 0x42, 0x78, 0x7a, 0xe8, 0xac, - 0xf7, 0x30, 0x91, 0xde, 0x6d, 0xe2, 0x12, 0x73, 0x98, 0xd8, 0xed, 0x76, 0x43, 0x89, 0x79, 0x4c, - 0x6c, 0xb7, 0xdb, 0xa1, 0xc4, 0x02, 0x26, 0x2a, 0x8a, 0x12, 0x4a, 0x2c, 0x62, 0x62, 0xa5, 0x52, - 0x09, 0x25, 0x96, 0xe2, 0x12, 0xcb, 0x98, 0x58, 0x2e, 0x97, 0x43, 0x89, 0x6d, 0x4c, 0x2c, 0x14, - 0x0a, 0xa1, 0xc4, 0x0e, 0x26, 0xe6, 0xf3, 0xf9, 0x50, 0x22, 0xc1, 0xc4, 0x6c, 0x36, 0x1b, 0x4a, - 0xec, 0x62, 0x62, 0x2e, 0x97, 0x0b, 0x25, 0x5a, 0x14, 0xce, 0x5c, 0xb8, 0x64, 0x9f, 0x96, 0x54, - 0xc2, 0x89, 0x1a, 0x4d, 0x2c, 0x75, 0x42, 0x89, 0x06, 0x24, 0xd2, 0xaf, 0x35, 0xe6, 0xe4, 0x82, - 0x24, 0x04, 0x7f, 0xe4, 0x74, 0x25, 0x19, 0x2a, 0x68, 0xb7, 0x5d, 0x7c, 0xe6, 0x23, 0xc9, 0x03, - 0x37, 0xbd, 0x14, 0x4a, 0x77, 0xda, 0x4b, 0x1a, 0x76, 0xbf, 0x8c, 0xbd, 0xde, 0x4e, 0x26, 0x23, - 0x15, 0x14, 0xaf, 0x46, 0x76, 0x43, 0x96, 0x84, 0xe0, 0xcf, 0xf2, 0x1a, 0x83, 0x0f, 0xf5, 0x41, - 0xfd, 0x80, 0xa9, 0xa9, 0x35, 0xe9, 0xb2, 0x53, 0xe6, 0x27, 0x87, 0x46, 0x60, 0x0c, 0xc9, 0x9d, - 0x90, 0xd3, 0x65, 0x28, 0x57, 0x8d, 0x12, 0x54, 0x14, 0xfd, 0x94, 0xa0, 0xd8, 0xde, 0x12, 0x21, - 0xa8, 0xe8, 0x9c, 0xe4, 0xe3, 0xa6, 0xb4, 0x10, 0x37, 0xf9, 0x94, 0xa0, 0x8a, 0xc5, 0xe2, 0x22, - 0x41, 0x95, 0x4a, 0xa5, 0x0f, 0x12, 0x54, 0x94, 0x72, 0x29, 0x41, 0x75, 0x3a, 0x9d, 0x45, 0x82, - 0x8a, 0x2e, 0x91, 0x6e, 0xdc, 0x6a, 0xa0, 0x04, 0x45, 0x0a, 0xb9, 0x45, 0x82, 0x2a, 0x90, 0xdc, - 0x22, 0x41, 0x15, 0xca, 0x4a, 0x3c, 0x41, 0xe5, 0x61, 0x22, 0xbc, 0x7f, 0x4b, 0xa8, 0x09, 0x90, - 0x19, 0x4b, 0x4d, 0x90, 0x5e, 0x5c, 0x42, 0x4d, 0x7c, 0xab, 0x1f, 0x21, 0x25, 0x39, 0x07, 0x54, - 0xe4, 0xff, 0xf9, 0x00, 0x29, 0x15, 0xb3, 0x92, 0xe0, 0xfd, 0xfb, 0x28, 0x1d, 0x8d, 0x74, 0xd8, - 0x07, 0x44, 0x8e, 0x4f, 0xa1, 0xd4, 0xbf, 0xdd, 0x0f, 0x04, 0x26, 0x5a, 0xb5, 0xdd, 0xc7, 0x3e, - 0xeb, 0xdd, 0x74, 0xc7, 0x22, 0xc0, 0xfc, 0x5d, 0x51, 0x98, 0x36, 0x29, 0x26, 0x6b, 0x6a, 0x2f, - 0x61, 0xa7, 0xd1, 0xe8, 0x4f, 0x24, 0x11, 0x78, 0x34, 0xf9, 0xf5, 0xcb, 0x57, 0x30, 0x40, 0xcb, - 0xb4, 0x47, 0xc3, 0xb4, 0x39, 0x30, 0x1c, 0xc3, 0xce, 0x64, 0x2b, 0x39, 0x39, 0x93, 0x95, 0xcb, - 0x32, 0x72, 0x72, 0xe8, 0x01, 0xb7, 0x67, 0xbd, 0xee, 0x29, 0x01, 0xb5, 0x9e, 0x61, 0x25, 0xa8, - 0x89, 0x43, 0x00, 0xa9, 0x17, 0x34, 0xc5, 0x5f, 0xbf, 0xbe, 0xff, 0x60, 0x85, 0x94, 0x3a, 0x88, - 0x9b, 0xda, 0x77, 0xf9, 0xc7, 0x96, 0x8e, 0xa2, 0xf8, 0xde, 0x48, 0xd3, 0x1e, 0x40, 0xfe, 0x49, - 0x24, 0xab, 0x98, 0x28, 0x19, 0x7e, 0x1b, 0x09, 0x45, 0xd2, 0xbe, 0x67, 0x7f, 0xc0, 0x9f, 0xdc, - 0x8f, 0xa4, 0xa4, 0x06, 0xe9, 0x06, 0x80, 0x89, 0x5b, 0x1e, 0x7d, 0x51, 0xb1, 0x11, 0xfa, 0x94, - 0x4c, 0x69, 0xdf, 0xf3, 0x50, 0x52, 0xdf, 0xac, 0x1b, 0xa0, 0x8e, 0x7c, 0xab, 0xab, 0x20, 0xec, - 0xb0, 0xc1, 0x68, 0xdf, 0x0b, 0x3f, 0x92, 0xf3, 0xb9, 0x8d, 0x77, 0x06, 0x76, 0xf1, 0xeb, 0xdb, - 0x68, 0xfc, 0x26, 0x3a, 0xb1, 0x12, 0xd4, 0xd0, 0x08, 0xf2, 0x45, 0x7d, 0xd3, 0x1d, 0x01, 0x27, - 0x69, 0x47, 0xf7, 0xea, 0x76, 0x1f, 0x3a, 0xa6, 0xe2, 0xb8, 0x0e, 0x42, 0x73, 0x42, 0xaf, 0xa7, - 0x4b, 0x49, 0xc9, 0x53, 0x56, 0xdc, 0x58, 0x73, 0x75, 0xdd, 0x4f, 0x09, 0x44, 0xab, 0x43, 0x54, - 0xb3, 0xea, 0x3f, 0x41, 0xc1, 0x07, 0xf9, 0x8a, 0x42, 0x44, 0x25, 0x2b, 0x76, 0x15, 0x85, 0x4e, - 0x4a, 0x70, 0x76, 0x94, 0x0c, 0xc9, 0x5a, 0xa2, 0x17, 0x1f, 0xb5, 0x03, 0xd2, 0x75, 0x64, 0x66, - 0x5b, 0xcf, 0xaa, 0xde, 0x6c, 0xb5, 0x70, 0x7a, 0x61, 0xd6, 0x3e, 0x31, 0x9d, 0x88, 0xe1, 0xd8, - 0xa9, 0x47, 0xd4, 0x9c, 0x6b, 0xa5, 0x4f, 0x95, 0x1c, 0x34, 0x7f, 0xc3, 0x3a, 0x43, 0x44, 0xc7, - 0x90, 0x00, 0x1e, 0xc3, 0x01, 0x0d, 0xd8, 0x69, 0xb5, 0x0b, 0xf3, 0x0f, 0xfb, 0x1f, 0xd1, 0xf0, - 0x3c, 0xf5, 0x15, 0x3f, 0xa8, 0x4c, 0x80, 0xb4, 0x20, 0x29, 0x38, 0x9e, 0xce, 0x74, 0x6c, 0x1b, - 0x53, 0x22, 0xb1, 0xbd, 0x00, 0xa8, 0x34, 0xe6, 0x00, 0x8d, 0xa5, 0x69, 0xd0, 0xc9, 0xba, 0x88, - 0xd7, 0xd2, 0x00, 0x2b, 0x18, 0x2c, 0x4f, 0xef, 0x36, 0x07, 0xaa, 0xd6, 0x4d, 0xd8, 0x30, 0x1b, - 0x81, 0x8a, 0xc6, 0x2a, 0xfb, 0xca, 0x42, 0x02, 0x64, 0x9b, 0x2d, 0xcf, 0xcc, 0x95, 0x12, 0x33, - 0x19, 0x31, 0x45, 0x2d, 0x65, 0x55, 0x51, 0x4c, 0xa6, 0x48, 0x50, 0xcf, 0xd0, 0xd1, 0x54, 0x9b, - 0x60, 0xd4, 0x4d, 0xea, 0x91, 0x3b, 0x47, 0x48, 0xca, 0xe8, 0x8a, 0x4c, 0xaa, 0x48, 0xc7, 0x69, - 0xda, 0x18, 0x20, 0x35, 0x49, 0xcd, 0x68, 0xb2, 0x94, 0xa0, 0x4d, 0xd6, 0x43, 0x62, 0x54, 0xdf, - 0x13, 0xa3, 0x20, 0xf5, 0xd0, 0x04, 0xa9, 0x16, 0x64, 0x5f, 0x56, 0x0c, 0x6a, 0x83, 0x42, 0x98, - 0x10, 0xf7, 0xa0, 0x3d, 0x1a, 0x03, 0x2c, 0x2d, 0x5c, 0x68, 0xf8, 0x85, 0x6a, 0x81, 0x06, 0xff, - 0x65, 0x61, 0x05, 0x0f, 0x2f, 0x3e, 0x89, 0xcb, 0x04, 0x33, 0xd6, 0xa2, 0x44, 0x5b, 0x4b, 0x26, - 0x6b, 0x20, 0x9f, 0x10, 0x5f, 0x8b, 0x31, 0x15, 0x67, 0x40, 0x3f, 0x75, 0x65, 0xd7, 0x69, 0x28, - 0xdb, 0x0e, 0x41, 0xdf, 0xa1, 0x34, 0x20, 0xcb, 0xbe, 0x53, 0x9d, 0x01, 0x60, 0x55, 0x4c, 0x6e, - 0xad, 0x67, 0xab, 0x63, 0x43, 0xed, 0x0a, 0x32, 0x10, 0x88, 0x09, 0x3a, 0x38, 0x4d, 0xad, 0xf9, - 0xc6, 0xc0, 0x60, 0x80, 0xac, 0x0f, 0x48, 0x18, 0x18, 0xb6, 0x83, 0xcd, 0xa6, 0x40, 0x7e, 0xc7, - 0x38, 0x92, 0x5b, 0x20, 0x5b, 0xa5, 0xd8, 0x23, 0x62, 0x12, 0xe6, 0x87, 0x69, 0xb0, 0x9b, 0x32, - 0x28, 0xaa, 0xa8, 0x20, 0xd9, 0xb8, 0x28, 0x13, 0x2e, 0x7e, 0x68, 0x2b, 0xa9, 0x3a, 0xf4, 0x92, - 0xc2, 0xf4, 0x64, 0xd5, 0xe5, 0x03, 0xb8, 0xdc, 0xbd, 0x5e, 0x61, 0x11, 0xb0, 0xd2, 0xc9, 0x39, - 0xa3, 0xba, 0x78, 0x6c, 0x06, 0x42, 0x69, 0xb2, 0xe6, 0x40, 0x1d, 0x34, 0x82, 0x81, 0x9a, 0xdb, - 0x27, 0x3b, 0x84, 0x98, 0xf8, 0xc6, 0x64, 0x55, 0xba, 0xf2, 0x12, 0xa0, 0xb6, 0xe0, 0xd5, 0x2b, - 0xd4, 0xfd, 0x6f, 0x1c, 0x55, 0x03, 0x49, 0x37, 0x21, 0x3a, 0xd6, 0x88, 0x88, 0xf5, 0x25, 0xad, - 0x9b, 0x9d, 0xa1, 0x08, 0x13, 0xf5, 0x29, 0x73, 0x6a, 0xb4, 0xd5, 0x0c, 0x68, 0x74, 0xb6, 0x93, - 0xd0, 0x95, 0xb1, 0xda, 0x57, 0xa0, 0x64, 0x7a, 0x64, 0x13, 0xab, 0xd1, 0x87, 0x49, 0x82, 0x15, - 0x8b, 0xcb, 0x6d, 0x65, 0x2b, 0x50, 0x26, 0x1a, 0x27, 0x8e, 0x93, 0xff, 0x02, 0xc9, 0x9c, 0x5a, - 0xc3, 0xb6, 0x7a, 0xc4, 0xe9, 0x0c, 0x82, 0x63, 0xb0, 0x01, 0x86, 0xee, 0x86, 0xf4, 0xf4, 0x93, - 0x6d, 0xe8, 0x80, 0xde, 0xd9, 0x90, 0x38, 0x03, 0xa3, 0x5b, 0x15, 0xa1, 0x04, 0xac, 0x5d, 0xe4, - 0x24, 0x7a, 0x02, 0xf8, 0x0c, 0xa1, 0x05, 0x12, 0xc9, 0x20, 0x65, 0x16, 0xb5, 0x08, 0x00, 0x8e, - 0xd0, 0xb8, 0x06, 0xba, 0x7d, 0x32, 0x0d, 0xc4, 0x0c, 0xbd, 0x60, 0x29, 0xb4, 0x35, 0x1b, 0xc0, - 0x19, 0x34, 0xa3, 0x9f, 0x10, 0xcf, 0x0c, 0x41, 0xc1, 0xd2, 0x2e, 0x7b, 0xa5, 0x3d, 0xa3, 0xf9, - 0x3a, 0x04, 0x45, 0x5a, 0xd8, 0x61, 0x1f, 0xf0, 0xb2, 0x29, 0xc3, 0x20, 0xdd, 0xb4, 0x88, 0x4d, - 0xf6, 0x54, 0x1d, 0x96, 0xe4, 0x6b, 0x22, 0x91, 0x84, 0x56, 0xdd, 0x3d, 0x82, 0x93, 0xc5, 0xfb, - 0x69, 0x60, 0x54, 0x50, 0xae, 0xba, 0x2c, 0x2b, 0x40, 0x04, 0x2c, 0xf4, 0x2f, 0x5f, 0x78, 0x5e, - 0x24, 0xe2, 0xfa, 0x6f, 0xb2, 0xe5, 0xcf, 0xdf, 0x94, 0x96, 0x5c, 0xef, 0x45, 0xf7, 0xa8, 0x1f, - 0x53, 0x98, 0x05, 0x75, 0x39, 0xc5, 0x5c, 0x0c, 0x1d, 0xba, 0x9a, 0xb8, 0x3b, 0x91, 0x3e, 0xc0, - 0x7b, 0xf7, 0x68, 0x29, 0xe7, 0xdf, 0xd9, 0x33, 0x77, 0x33, 0xcf, 0xcf, 0xe3, 0x6f, 0xe3, 0xb1, - 0xd4, 0xb0, 0x41, 0x2a, 0x39, 0x97, 0xf0, 0x3c, 0x7f, 0x4e, 0xff, 0xc7, 0x28, 0xcf, 0x25, 0xbc, - 0x6e, 0xcc, 0x76, 0x11, 0x04, 0x97, 0x66, 0x6e, 0x60, 0xa2, 0x14, 0x6f, 0x1b, 0x93, 0x3e, 0x65, - 0xdd, 0xad, 0xba, 0x33, 0xf6, 0x79, 0xba, 0xb7, 0x47, 0xc8, 0x54, 0x99, 0x45, 0x06, 0x0c, 0x80, - 0x58, 0xaf, 0x2d, 0x8a, 0x29, 0xc3, 0x6a, 0x68, 0x5a, 0xe2, 0x2b, 0x17, 0xa6, 0xd5, 0xf5, 0xe3, - 0xfc, 0xf1, 0x35, 0xe9, 0x6f, 0xa7, 0x78, 0x88, 0x21, 0xd8, 0x49, 0x3d, 0x06, 0x32, 0xc7, 0x18, - 0x75, 0x06, 0x78, 0x3a, 0x81, 0x1a, 0x28, 0xa5, 0xe2, 0x6d, 0xea, 0xb5, 0x09, 0x1b, 0xe2, 0xb2, - 0xd2, 0xc0, 0x61, 0x22, 0x65, 0x03, 0xe6, 0x1a, 0x99, 0x30, 0xe2, 0x6d, 0x2c, 0xcc, 0x9e, 0x16, - 0x38, 0x6d, 0x04, 0xb0, 0xd9, 0x08, 0x9b, 0x93, 0xb4, 0x63, 0xee, 0xdc, 0x29, 0x1d, 0x0c, 0xa9, - 0x0f, 0x65, 0x99, 0x81, 0xfe, 0xd7, 0x2f, 0xe7, 0x3b, 0xf9, 0x11, 0xbd, 0xca, 0xe7, 0x15, 0xe2, - 0x18, 0xbc, 0xeb, 0x05, 0x42, 0x24, 0xa7, 0x0e, 0xf8, 0x9c, 0xb1, 0xda, 0x5f, 0xbe, 0x7c, 0x72, - 0x80, 0x31, 0xab, 0x2d, 0x74, 0x32, 0x85, 0x7d, 0xea, 0x3f, 0x9b, 0x31, 0x97, 0xea, 0xec, 0xa1, - 0x61, 0x38, 0x20, 0x4d, 0xe1, 0x34, 0x40, 0x81, 0x45, 0x83, 0x22, 0x08, 0x5c, 0xaa, 0x28, 0xb1, - 0x46, 0x16, 0xc8, 0x93, 0xf0, 0x06, 0x0d, 0x8c, 0x50, 0xcf, 0xfc, 0x3e, 0x3c, 0x38, 0x90, 0x89, - 0xb1, 0xb9, 0x75, 0x5d, 0x48, 0x92, 0x0b, 0x5b, 0x7e, 0x33, 0xbc, 0x7d, 0x5b, 0x20, 0xb9, 0xb9, - 0x93, 0x4e, 0x2b, 0x32, 0x17, 0x13, 0xba, 0xd5, 0xe2, 0x37, 0x2b, 0x0f, 0xae, 0x4f, 0x4f, 0xe8, - 0x8e, 0x1b, 0x46, 0x09, 0xb0, 0x6c, 0x82, 0x5e, 0x27, 0xc0, 0xb8, 0x11, 0x08, 0x58, 0x0e, 0xd4, - 0x13, 0xc5, 0x23, 0x71, 0xf7, 0x60, 0x08, 0x39, 0x39, 0xeb, 0x5e, 0xd1, 0xd5, 0x21, 0xdd, 0xfb, - 0x5c, 0xa3, 0x97, 0x77, 0x74, 0x54, 0x8f, 0xae, 0x8b, 0xb8, 0x39, 0x62, 0x3d, 0xcc, 0xa5, 0x5c, - 0x05, 0x56, 0x83, 0x04, 0x43, 0xe4, 0xf9, 0x0d, 0x89, 0xe0, 0x83, 0x73, 0x86, 0x49, 0xce, 0x02, - 0x04, 0x89, 0x4d, 0x40, 0x08, 0x71, 0x55, 0x6d, 0x43, 0xa0, 0x9a, 0xbc, 0xd0, 0x53, 0x60, 0xd3, - 0xec, 0x7e, 0x82, 0xb9, 0x90, 0x79, 0x1d, 0x3a, 0xe2, 0x53, 0x43, 0xea, 0x45, 0x92, 0xf7, 0x89, - 0x8c, 0xc7, 0x91, 0xc3, 0x01, 0xeb, 0x06, 0x58, 0xb4, 0x13, 0x2e, 0x62, 0x90, 0x55, 0xc6, 0xe3, - 0x64, 0xd9, 0xd0, 0x9d, 0xa5, 0x43, 0x97, 0xe2, 0xb2, 0xdc, 0x6e, 0xe6, 0x52, 0x88, 0x24, 0x80, - 0x51, 0x5d, 0xe1, 0x49, 0xe5, 0x90, 0xb8, 0xd6, 0x51, 0x06, 0x76, 0x60, 0x84, 0x44, 0x09, 0xfb, - 0x14, 0xb6, 0xf5, 0x74, 0x4f, 0x33, 0x60, 0x79, 0x38, 0x99, 0x72, 0xa9, 0x80, 0x68, 0xd5, 0xf9, - 0xd4, 0x84, 0xb3, 0x4e, 0x93, 0xff, 0xb6, 0x93, 0x99, 0x7c, 0x09, 0xb3, 0xb5, 0xf8, 0xec, 0x75, - 0xcc, 0xfd, 0x5b, 0x4f, 0x66, 0x4a, 0xb8, 0x21, 0xd5, 0xed, 0x2d, 0x3b, 0x25, 0x0a, 0x62, 0x2a, - 0x91, 0x85, 0x3d, 0x1b, 0xcd, 0x26, 0xaf, 0x22, 0x9e, 0x23, 0xbd, 0xc2, 0x62, 0x4c, 0x89, 0x92, - 0x20, 0xe2, 0x77, 0xd2, 0x5c, 0xeb, 0xaf, 0x92, 0xaa, 0xeb, 0xbf, 0x7e, 0xd9, 0x5b, 0xba, 0x5f, - 0x41, 0xdf, 0x12, 0x07, 0xc6, 0x08, 0x49, 0x0a, 0x7f, 0xa0, 0x0a, 0x94, 0x96, 0x3e, 0x01, 0x1b, - 0xd7, 0x01, 0x95, 0x50, 0x1c, 0x1b, 0x00, 0x54, 0x6c, 0x16, 0x2b, 0xb0, 0xce, 0x6c, 0x96, 0xa6, - 0xa5, 0xa8, 0x0b, 0x26, 0xa6, 0x7f, 0x43, 0x50, 0xd0, 0x70, 0x89, 0xf9, 0x5c, 0x79, 0x37, 0x1d, - 0x53, 0x9c, 0xf5, 0x92, 0xfc, 0x37, 0x56, 0xb1, 0x09, 0x2a, 0x7f, 0x0a, 0x67, 0xa0, 0xd6, 0x81, - 0x57, 0x18, 0x13, 0x5c, 0x47, 0x68, 0x98, 0x15, 0x3d, 0x81, 0xef, 0xe7, 0x37, 0xc7, 0xda, 0xfc, - 0xe6, 0x74, 0xbd, 0x63, 0xd5, 0x67, 0xf2, 0xea, 0x74, 0xc5, 0xcd, 0xbf, 0x66, 0x64, 0xfe, 0x2d, - 0xe3, 0x74, 0xf9, 0xac, 0xb1, 0xa2, 0xb1, 0x2c, 0x67, 0x0e, 0xa2, 0xb4, 0x9b, 0x9d, 0x81, 0xea, - 0x3f, 0x43, 0xb3, 0x73, 0xc2, 0x9d, 0x18, 0x5e, 0x24, 0xd8, 0xfc, 0x90, 0x7a, 0xd6, 0xe7, 0x55, - 0xf4, 0xa8, 0x97, 0x1e, 0x00, 0x26, 0x1d, 0x90, 0x0e, 0xbf, 0x7c, 0x21, 0xa9, 0x94, 0x87, 0x33, - 0xb2, 0x99, 0x2b, 0xe2, 0x50, 0x48, 0x1d, 0x7e, 0x93, 0x12, 0x27, 0x70, 0x52, 0x3f, 0xde, 0x1b, - 0x68, 0x92, 0x63, 0x87, 0x40, 0xa9, 0x3f, 0x4d, 0x84, 0x54, 0xed, 0xfe, 0x4c, 0xb2, 0x90, 0x4b, - 0xb5, 0x4f, 0xb4, 0xe5, 0xef, 0xce, 0x8f, 0x5f, 0xbf, 0xe4, 0x4f, 0xd8, 0x3a, 0xf6, 0xb1, 0x15, - 0x14, 0xc5, 0xef, 0x40, 0x40, 0xe1, 0x60, 0xe9, 0x3b, 0xd8, 0xe5, 0x16, 0xbd, 0x4b, 0x57, 0x2e, - 0xd7, 0x84, 0xc3, 0x1d, 0x61, 0x38, 0xb2, 0x1d, 0xa1, 0x4d, 0x04, 0x48, 0x17, 0x0c, 0x50, 0xa3, - 0x88, 0x6d, 0xa7, 0x71, 0x62, 0xab, 0x2b, 0x5a, 0xf9, 0xe9, 0xd5, 0xc7, 0xd3, 0xf4, 0x89, 0xa5, - 0x62, 0x90, 0x5d, 0xe1, 0xaf, 0x99, 0x49, 0x25, 0x7f, 0x27, 0x39, 0xff, 0xc4, 0xe1, 0xc8, 0x74, - 0xcf, 0x3c, 0xdc, 0x61, 0xb8, 0x9e, 0xaf, 0x40, 0x23, 0xc4, 0x43, 0x03, 0x1d, 0xc3, 0x97, 0x2f, - 0x6c, 0x28, 0xe4, 0x47, 0xf0, 0x94, 0xd6, 0xa9, 0x11, 0x39, 0x78, 0x85, 0xe9, 0xe7, 0x0f, 0x21, - 0x2e, 0x34, 0xe5, 0x15, 0x7d, 0x3b, 0xb9, 0x43, 0x08, 0xbf, 0xac, 0xe9, 0xe6, 0x71, 0xad, 0x79, - 0x49, 0x69, 0xd3, 0xe6, 0xc0, 0x53, 0x4c, 0xf5, 0x56, 0xd1, 0x3c, 0xdd, 0x86, 0x16, 0x06, 0x19, - 0xcf, 0xab, 0x94, 0x74, 0x4f, 0x23, 0x44, 0xd7, 0x2a, 0xec, 0x9e, 0xcc, 0x00, 0x85, 0xa8, 0x7d, - 0x3d, 0x81, 0xc7, 0xb6, 0x5e, 0x41, 0x6f, 0x34, 0x4e, 0x1a, 0xd4, 0x83, 0x2d, 0xfa, 0xb7, 0x9a, - 0xe8, 0x12, 0x0c, 0xe7, 0x01, 0x69, 0xba, 0xe4, 0x3f, 0x9a, 0xc1, 0xe3, 0x8b, 0x16, 0x35, 0x9e, - 0x3a, 0xfc, 0xe2, 0x7f, 0xd1, 0x3c, 0xdc, 0xbd, 0x8b, 0xa9, 0x17, 0x6d, 0x8b, 0x7b, 0xc6, 0xa3, - 0xdb, 0x80, 0x96, 0xcc, 0xed, 0xce, 0xb3, 0x4f, 0x99, 0x4c, 0x33, 0x47, 0xfb, 0x6e, 0x8d, 0xb8, - 0x1f, 0x5c, 0x4a, 0x50, 0x23, 0x3d, 0x71, 0x5a, 0xde, 0x57, 0x76, 0xaf, 0xe8, 0x99, 0x9b, 0x2c, - 0x55, 0xe8, 0x7f, 0x28, 0x9e, 0x90, 0x29, 0xe9, 0x34, 0x8d, 0xe1, 0x10, 0x24, 0x10, 0xdc, 0x8b, - 0xcc, 0x57, 0x14, 0xbb, 0x78, 0x66, 0x6c, 0xaa, 0xcc, 0xfd, 0x01, 0x83, 0xb0, 0xb7, 0x0d, 0xc5, - 0x02, 0x2e, 0xcc, 0x0d, 0xc4, 0xa4, 0x73, 0x4e, 0x79, 0x70, 0x40, 0x09, 0x78, 0xfa, 0x0b, 0x4b, - 0xb3, 0xe6, 0x58, 0xaf, 0xb3, 0x84, 0xbd, 0x4a, 0x3e, 0x03, 0x79, 0xd9, 0xd3, 0x20, 0xb2, 0x32, - 0x25, 0x09, 0x64, 0xf0, 0xae, 0xbc, 0x9a, 0x9c, 0xcd, 0x99, 0x3e, 0xfd, 0x93, 0x77, 0xb8, 0xa5, - 0x1f, 0xac, 0xe9, 0x88, 0x40, 0x94, 0x64, 0xeb, 0x6b, 0x38, 0xe6, 0x44, 0xb5, 0x1c, 0xfe, 0xa4, - 0xa7, 0x40, 0x3f, 0x59, 0x2b, 0x7e, 0xad, 0x7e, 0xf5, 0x1d, 0x2b, 0xfc, 0xb3, 0xf6, 0x5a, 0xc8, - 0x47, 0xb8, 0x26, 0xc6, 0x5f, 0x9d, 0xaf, 0xbd, 0xd3, 0xf2, 0x7c, 0xf3, 0x67, 0x4d, 0x4f, 0xc1, - 0xc2, 0x14, 0xd1, 0x6f, 0x66, 0xa0, 0x8c, 0x89, 0xa0, 0x1b, 0x2e, 0x52, 0x6c, 0xe1, 0x95, 0x38, - 0x9f, 0x60, 0xc1, 0xb9, 0x61, 0xe3, 0x41, 0xfe, 0xb5, 0x88, 0x30, 0x51, 0x6c, 0x74, 0xc1, 0x51, - 0x6d, 0x7b, 0x44, 0xa8, 0x44, 0x8d, 0x0b, 0xec, 0x15, 0xd8, 0xa8, 0x57, 0x0b, 0x36, 0x39, 0x94, - 0x0d, 0xa0, 0x55, 0xd1, 0xf3, 0xe8, 0x11, 0x25, 0xd6, 0xc7, 0x01, 0x70, 0x24, 0xfc, 0xfc, 0x8f, - 0xdb, 0x94, 0x6a, 0x0b, 0x28, 0x2c, 0x8c, 0x4c, 0xb7, 0x2a, 0xbd, 0xf5, 0x8b, 0x02, 0x94, 0x82, - 0x09, 0x63, 0xd5, 0x18, 0xd9, 0xcc, 0xff, 0x4a, 0xd3, 0x14, 0x76, 0xac, 0x32, 0x86, 0x6d, 0x14, - 0x3f, 0xe5, 0x41, 0x7d, 0x7d, 0xfe, 0x43, 0x17, 0x04, 0x21, 0xd1, 0x02, 0x35, 0x07, 0x20, 0x50, - 0xbc, 0x36, 0x26, 0xaa, 0xc6, 0x6e, 0x48, 0x08, 0xe8, 0xb8, 0x4d, 0x9d, 0xd7, 0x0c, 0x97, 0x15, - 0x10, 0xea, 0xf9, 0xc2, 0xba, 0x4c, 0xc2, 0xb8, 0x0e, 0x5c, 0x20, 0x14, 0x0f, 0x0c, 0x83, 0xf9, - 0xc6, 0xe0, 0x01, 0x81, 0xf0, 0xac, 0x1b, 0x13, 0x60, 0xa3, 0x86, 0xd1, 0x45, 0x17, 0x21, 0x07, - 0x34, 0x68, 0x1c, 0xc4, 0xd7, 0x6f, 0xde, 0xa7, 0x05, 0x98, 0xbf, 0x74, 0x87, 0x5e, 0x67, 0xf0, - 0xd2, 0x36, 0x7d, 0xb0, 0x56, 0xfa, 0x0c, 0xb9, 0x64, 0x8f, 0x6e, 0xd0, 0xe6, 0x6b, 0x88, 0x34, - 0x7d, 0x6f, 0x9f, 0xaf, 0x49, 0x89, 0x22, 0x90, 0xfa, 0xde, 0x88, 0x4c, 0x88, 0x76, 0xdd, 0xd7, - 0x39, 0x66, 0xa7, 0x4b, 0xbe, 0x14, 0x46, 0xd7, 0x0d, 0x63, 0xbd, 0x75, 0x3b, 0x62, 0x24, 0xf1, - 0xa8, 0x84, 0x50, 0x63, 0x0b, 0xe5, 0x26, 0xc0, 0x8f, 0xd1, 0x87, 0xa3, 0x4e, 0x15, 0x10, 0xfa, - 0xbc, 0x29, 0x27, 0xbd, 0xa5, 0x6c, 0x98, 0x23, 0x0c, 0x1f, 0xe5, 0x55, 0xfb, 0xe4, 0x2a, 0x2a, - 0x48, 0x76, 0xf0, 0x2b, 0x51, 0x15, 0x9c, 0x00, 0xcd, 0x25, 0x40, 0x88, 0x85, 0x84, 0x4f, 0x75, - 0x37, 0x17, 0x04, 0x91, 0x88, 0x3e, 0xe8, 0x92, 0xc4, 0x7b, 0xea, 0xa0, 0x58, 0x90, 0x0b, 0xd4, - 0x40, 0x81, 0x98, 0x1e, 0xd9, 0x5b, 0x33, 0xb9, 0x3a, 0x9b, 0xcf, 0xab, 0x31, 0x5a, 0x22, 0xf3, - 0x57, 0x21, 0x21, 0x78, 0xa2, 0xf0, 0x86, 0x35, 0x46, 0x7e, 0x81, 0x83, 0xdc, 0x1a, 0x55, 0xfd, - 0xf0, 0x90, 0x2d, 0x90, 0x8e, 0x08, 0x30, 0x96, 0x64, 0xd4, 0xc6, 0xe4, 0xab, 0x5e, 0x1e, 0xfe, - 0x22, 0x83, 0x44, 0x20, 0x33, 0x9e, 0xf7, 0xd2, 0x8a, 0x51, 0x26, 0x40, 0xf9, 0x79, 0x06, 0x41, - 0x24, 0x22, 0x3a, 0x4a, 0xfe, 0x30, 0xb9, 0x71, 0x32, 0xdf, 0x1b, 0x97, 0xa5, 0x83, 0xd2, 0x62, - 0xa9, 0xd8, 0x7f, 0x32, 0x18, 0xab, 0x1f, 0x22, 0x27, 0x34, 0x58, 0x5e, 0x4c, 0x47, 0x46, 0xb4, - 0x38, 0x58, 0x3c, 0x36, 0xe3, 0x4e, 0xbc, 0x22, 0x43, 0x05, 0x1d, 0x72, 0xd5, 0x20, 0x5d, 0x3f, - 0xbc, 0x7f, 0x68, 0x8c, 0xe4, 0x9d, 0x31, 0xba, 0xfe, 0xfa, 0xff, 0xf8, 0x10, 0xa9, 0x12, 0xbc, - 0x6a, 0x98, 0xcc, 0x3d, 0xea, 0x1f, 0x1a, 0x65, 0xc2, 0x75, 0xb6, 0x22, 0xd4, 0xfa, 0x9b, 0xb6, - 0x07, 0x6a, 0x0f, 0x8b, 0xb2, 0xd4, 0xf4, 0x48, 0x67, 0x09, 0x62, 0xed, 0x53, 0x4d, 0x0c, 0x0f, - 0x34, 0x70, 0xd2, 0xfa, 0x83, 0x21, 0xe3, 0xbe, 0x83, 0xb0, 0xb8, 0x84, 0x2d, 0x99, 0x97, 0x27, - 0xd0, 0x52, 0xe0, 0xcc, 0xe2, 0xe1, 0xf8, 0xf2, 0xc4, 0xdf, 0x7e, 0x61, 0xbf, 0x03, 0xc6, 0x00, - 0x05, 0x7d, 0x93, 0x18, 0x60, 0xc7, 0x17, 0x15, 0x0d, 0x96, 0x05, 0x5b, 0x0b, 0xe8, 0x10, 0xe8, - 0x88, 0x52, 0xdf, 0x24, 0xdf, 0xe5, 0x1f, 0x9b, 0x0e, 0xda, 0xc5, 0x24, 0x82, 0x9c, 0x31, 0xee, - 0x0e, 0xd0, 0x25, 0x3a, 0x61, 0x51, 0xbc, 0xe3, 0x3d, 0x84, 0xaf, 0x08, 0x07, 0xc5, 0x43, 0x12, - 0x6a, 0xfc, 0x5c, 0x1a, 0xc5, 0x48, 0xc0, 0x2f, 0x87, 0xbb, 0x57, 0x83, 0x40, 0xca, 0x85, 0x2e, - 0xe6, 0x2f, 0x5a, 0x5b, 0xf4, 0x22, 0xe8, 0x61, 0x52, 0xee, 0xc7, 0x16, 0xfe, 0x41, 0x71, 0x22, - 0xec, 0x76, 0xc8, 0xb8, 0x40, 0xc2, 0xad, 0x06, 0x1b, 0x23, 0xca, 0xc9, 0xdf, 0xb3, 0x3f, 0xe6, - 0x3e, 0x6f, 0xfd, 0x59, 0x63, 0xec, 0xf4, 0x45, 0x5b, 0x0c, 0xa5, 0xe3, 0x7d, 0x18, 0x0d, 0xe6, - 0x02, 0xcd, 0x93, 0x42, 0x6c, 0x49, 0x5f, 0x2f, 0xf2, 0x0b, 0xf3, 0x2d, 0x72, 0xca, 0xec, 0x7c, - 0x01, 0xdf, 0x3e, 0x2b, 0xf6, 0xb8, 0x70, 0x82, 0x71, 0x34, 0xce, 0xf8, 0xb7, 0x5a, 0xda, 0x48, - 0x32, 0xb1, 0x2e, 0x39, 0x73, 0x25, 0x35, 0x26, 0x5a, 0xc9, 0x3f, 0x5c, 0x21, 0x10, 0xf4, 0x18, - 0x3b, 0xba, 0xa4, 0x58, 0x05, 0x50, 0xb3, 0xe9, 0xe4, 0x75, 0x86, 0xe6, 0x45, 0xd2, 0xa3, 0x07, - 0x26, 0x9e, 0x20, 0x61, 0x70, 0x47, 0x15, 0x09, 0xd7, 0xc9, 0xcf, 0x66, 0x33, 0x45, 0x85, 0x4f, - 0xe6, 0xd7, 0x83, 0x47, 0x11, 0xc9, 0x24, 0x6e, 0x43, 0xaa, 0x0e, 0x22, 0x3e, 0x33, 0x39, 0xfb, - 0x0a, 0x1f, 0x1e, 0x5d, 0x30, 0x05, 0x5f, 0xa9, 0x63, 0x49, 0x90, 0xf6, 0x6a, 0x0a, 0xec, 0x2d, - 0x40, 0x36, 0xe6, 0xc8, 0x1e, 0x24, 0xbe, 0x13, 0x49, 0x91, 0x3c, 0x99, 0x1b, 0xcf, 0x28, 0x58, - 0x32, 0xac, 0x78, 0x27, 0x15, 0x23, 0x22, 0xd1, 0x98, 0x3d, 0x1e, 0x0d, 0x90, 0xb9, 0x21, 0x6e, - 0xfe, 0x0c, 0x8c, 0x6e, 0xa6, 0xda, 0x45, 0x69, 0x2b, 0x5a, 0x4f, 0xf5, 0x35, 0x26, 0xdc, 0x37, - 0x7f, 0xc6, 0xb4, 0x8c, 0xc6, 0x60, 0xc1, 0x8f, 0xd7, 0x13, 0x4f, 0x39, 0x64, 0x9e, 0xc4, 0x66, - 0x42, 0x52, 0xfc, 0x96, 0xe8, 0xbb, 0x36, 0x7f, 0x0d, 0x47, 0xb0, 0xfa, 0xca, 0xdc, 0xc9, 0xf3, - 0x2c, 0x64, 0x03, 0xea, 0x27, 0x73, 0x4f, 0xdf, 0x20, 0xc9, 0x39, 0x48, 0x03, 0x51, 0x9f, 0x68, - 0xff, 0x83, 0x82, 0x42, 0x4f, 0xb3, 0xb8, 0x11, 0xea, 0x98, 0x11, 0x8e, 0x0b, 0xd1, 0x22, 0x20, - 0xca, 0x43, 0x5e, 0x2a, 0x2b, 0xcb, 0x73, 0x2f, 0x52, 0x5d, 0xc7, 0xfd, 0x1e, 0x0a, 0x1d, 0x63, - 0x5c, 0xfb, 0x91, 0xc6, 0xd1, 0x91, 0xd1, 0x6b, 0x83, 0x6b, 0x9e, 0x51, 0x6f, 0xb4, 0xf5, 0x7c, - 0x85, 0xc5, 0x06, 0xc1, 0x76, 0x23, 0x33, 0x02, 0xda, 0x22, 0x1f, 0x04, 0xc9, 0x6b, 0xdb, 0x6f, - 0xda, 0x87, 0xc8, 0xc5, 0x3e, 0x75, 0x16, 0x4d, 0xa5, 0xe6, 0x4b, 0x84, 0x17, 0x87, 0xe6, 0x6f, - 0xca, 0x5b, 0x09, 0x2a, 0x84, 0x50, 0x29, 0xe2, 0xcb, 0x17, 0xd9, 0xfd, 0x4d, 0x2c, 0xf7, 0xed, - 0x40, 0xa3, 0x28, 0x0a, 0x00, 0xee, 0x52, 0x00, 0xaa, 0xa3, 0x7e, 0xab, 0xcb, 0xcb, 0x2f, 0xf8, - 0x81, 0xb0, 0x15, 0x91, 0xf4, 0xec, 0xaf, 0xd8, 0x56, 0x35, 0x24, 0x27, 0xf8, 0xc6, 0xda, 0x8b, - 0x46, 0x22, 0xd8, 0x90, 0x90, 0x59, 0x32, 0xb6, 0x10, 0x8d, 0x7e, 0xc6, 0x56, 0x35, 0x06, 0x3f, - 0xe3, 0x55, 0x0b, 0xb6, 0x30, 0x7a, 0x06, 0x3d, 0x7c, 0xf4, 0x3c, 0x63, 0x89, 0xbb, 0x52, 0x49, - 0x1a, 0x29, 0xb0, 0xb6, 0x70, 0xf2, 0xc5, 0x23, 0xc8, 0x49, 0x0f, 0xe9, 0x76, 0x90, 0xf9, 0xfe, - 0x1f, 0xa3, 0xbc, 0x5c, 0x90, 0xd7, 0xf1, 0xa7, 0xd7, 0x83, 0xbf, 0x05, 0x19, 0x5f, 0x0a, 0xdd, - 0x36, 0xbc, 0x14, 0x08, 0x7d, 0xa9, 0xf4, 0x30, 0xa7, 0x57, 0xa1, 0x2f, 0x3d, 0x85, 0xbe, 0xf4, - 0x4a, 0x25, 0x7c, 0xe9, 0x55, 0xb0, 0x4e, 0x36, 0x9f, 0x85, 0x97, 0x9d, 0x8d, 0xca, 0xce, 0x8f, - 0x0c, 0x9e, 0xea, 0x2c, 0x39, 0x74, 0xf3, 0x03, 0x89, 0xa2, 0xb3, 0x37, 0xfd, 0xe8, 0x3a, 0x73, - 0xc6, 0xc2, 0x73, 0x57, 0x71, 0x87, 0x82, 0xd7, 0x46, 0xc3, 0x5a, 0xbd, 0x5e, 0xc7, 0x79, 0x5a, - 0xe6, 0xb8, 0xb8, 0xaa, 0x19, 0x92, 0xc6, 0xaf, 0x8c, 0x50, 0x75, 0x49, 0x4c, 0xe0, 0x27, 0x87, - 0x92, 0xa0, 0x74, 0x3b, 0xf4, 0xd8, 0xc8, 0x4b, 0x74, 0x53, 0xba, 0x69, 0xc6, 0xf3, 0x9d, 0xc0, - 0x15, 0x9a, 0x50, 0xbf, 0x1d, 0x60, 0x03, 0xf0, 0x12, 0xf2, 0xdf, 0x46, 0xf1, 0xd1, 0xf2, 0x1c, - 0xa3, 0xdd, 0x52, 0xf0, 0x06, 0x24, 0x4a, 0xfd, 0x95, 0x49, 0xba, 0x67, 0xa7, 0x51, 0x5e, 0x64, - 0xf2, 0x32, 0xf7, 0x69, 0x20, 0x6f, 0xe4, 0x6e, 0x38, 0x80, 0xba, 0xef, 0x20, 0xa4, 0x77, 0x3b, - 0x40, 0x9f, 0x28, 0x28, 0xb8, 0x4e, 0x4e, 0xe8, 0xcd, 0xec, 0xb7, 0x0c, 0xe4, 0x34, 0xdd, 0x0a, - 0xbd, 0xa5, 0x27, 0x55, 0xea, 0xeb, 0xbc, 0xaa, 0xc8, 0x00, 0x8a, 0x24, 0xd0, 0x37, 0x7a, 0x38, - 0xc1, 0x43, 0xa7, 0x21, 0xee, 0xb3, 0x5b, 0x09, 0x2e, 0x40, 0x9a, 0xbc, 0xb3, 0xb8, 0x2d, 0xb1, - 0xf0, 0x68, 0x7c, 0x18, 0xb8, 0xec, 0x4e, 0xec, 0x96, 0xb4, 0x58, 0x30, 0xb7, 0xaa, 0x60, 0xb2, - 0xba, 0xa2, 0xe7, 0xe5, 0x6d, 0x66, 0x3f, 0x04, 0x62, 0x6e, 0x69, 0xa9, 0xe4, 0xe2, 0xc6, 0xe8, - 0xad, 0x13, 0x6e, 0x1b, 0x83, 0x09, 0xb3, 0x08, 0x19, 0x10, 0xc5, 0xcc, 0xe0, 0x07, 0xfa, 0x6a, - 0x76, 0xdd, 0x4e, 0x3b, 0xc6, 0x9e, 0x3a, 0x25, 0xdd, 0x44, 0x36, 0xe9, 0xee, 0x5d, 0x2e, 0x72, - 0xcd, 0x89, 0x25, 0x69, 0x75, 0xf1, 0xcc, 0x70, 0x04, 0xfc, 0xac, 0x1c, 0x6d, 0xb2, 0x2b, 0xd6, - 0xf4, 0xcd, 0x2c, 0xc9, 0x6f, 0x69, 0xf5, 0x84, 0x0e, 0xff, 0xcf, 0xd4, 0xe1, 0x25, 0xe9, 0x37, - 0x01, 0x79, 0xf2, 0x96, 0x5c, 0xcd, 0x26, 0x93, 0x29, 0x51, 0x68, 0x88, 0x55, 0x1d, 0xa7, 0x23, - 0x41, 0xcb, 0x16, 0xe5, 0xbf, 0xa9, 0x0d, 0x92, 0x5a, 0xb1, 0xa1, 0x22, 0x2c, 0x6b, 0x2c, 0x34, - 0x6c, 0x88, 0xde, 0xfe, 0xc6, 0x84, 0x25, 0x92, 0x1e, 0x25, 0x71, 0xe7, 0x44, 0xb6, 0xeb, 0x7c, - 0x07, 0x6a, 0xfc, 0x01, 0x1a, 0x64, 0x54, 0xa0, 0x85, 0x32, 0x49, 0x1b, 0xb6, 0xc3, 0x2d, 0x25, - 0x55, 0xf7, 0x8c, 0x7f, 0x50, 0x94, 0x1e, 0x3f, 0xe3, 0x7e, 0x5a, 0x0d, 0xa7, 0xb3, 0x1e, 0x8c, - 0xba, 0x78, 0x3c, 0x1a, 0x0d, 0x94, 0xe7, 0x91, 0x58, 0x23, 0x69, 0xd0, 0x5f, 0xd3, 0xf4, 0x54, - 0xc3, 0x3d, 0x0b, 0x95, 0xd3, 0xd9, 0x42, 0x9a, 0xda, 0x7d, 0xa1, 0xdc, 0x81, 0x01, 0x22, 0x24, - 0x5d, 0x54, 0x1d, 0x9d, 0xa6, 0xe0, 0x03, 0xdb, 0xf9, 0xc6, 0xc0, 0x9b, 0xb1, 0xf2, 0x5c, 0x00, - 0x99, 0xc9, 0x98, 0xfb, 0xfa, 0xf8, 0x37, 0xfa, 0x3d, 0x4c, 0xe0, 0xd4, 0x7f, 0xcd, 0x94, 0x39, - 0xfe, 0x45, 0x37, 0x87, 0xba, 0xb2, 0x25, 0x8a, 0xd5, 0xaf, 0xbe, 0x19, 0xd2, 0xd0, 0xf0, 0xfe, - 0x47, 0x3d, 0xb7, 0xf9, 0x6d, 0x60, 0x79, 0xc6, 0x05, 0xef, 0x8e, 0x90, 0xff, 0x61, 0x75, 0xf7, - 0x43, 0x78, 0x72, 0x8d, 0xf9, 0xe6, 0xe3, 0xa7, 0x90, 0x17, 0xbf, 0xdb, 0x8a, 0xa9, 0x54, 0x4d, - 0x76, 0xcd, 0x94, 0x5f, 0x69, 0x9f, 0xb9, 0x62, 0xe9, 0x0b, 0x1e, 0x07, 0x39, 0x5b, 0xde, 0xe8, - 0xc5, 0x1d, 0xd2, 0x1e, 0xf5, 0x45, 0xe9, 0xeb, 0x8a, 0xf0, 0x96, 0xb1, 0x17, 0x03, 0x67, 0xff, - 0xf1, 0xb5, 0x8b, 0x55, 0xff, 0xe3, 0x6b, 0xf5, 0x6b, 0x2a, 0x91, 0xcd, 0x95, 0xdd, 0x86, 0xc5, - 0x9e, 0x02, 0xdc, 0x1a, 0xb6, 0x64, 0x7a, 0x78, 0x9a, 0x4c, 0x7d, 0xa5, 0xf2, 0x60, 0x74, 0xbf, - 0x0c, 0x57, 0x01, 0x45, 0xb5, 0x4a, 0x63, 0xdc, 0x42, 0xf1, 0xe0, 0x83, 0x72, 0xa1, 0x8b, 0x62, - 0x5f, 0xd1, 0x5e, 0x4c, 0xc7, 0xe0, 0x43, 0xbe, 0x3d, 0x52, 0x35, 0x74, 0xa1, 0x48, 0x8f, 0xd5, - 0x6e, 0x32, 0x9c, 0xd5, 0x52, 0xfb, 0x20, 0xac, 0xd3, 0x0b, 0x37, 0x28, 0x56, 0x63, 0xa1, 0x89, - 0xda, 0x53, 0xd3, 0x36, 0x4d, 0x4f, 0x89, 0xff, 0x12, 0xa8, 0x33, 0x31, 0x4d, 0xb3, 0x6c, 0x5b, - 0x95, 0x44, 0xa1, 0xbb, 0x3d, 0x04, 0x36, 0x19, 0x6e, 0xe6, 0xc6, 0x44, 0x53, 0xbb, 0x28, 0x45, - 0xcc, 0xee, 0xe9, 0x11, 0x4d, 0x4f, 0x46, 0x4a, 0x63, 0xc0, 0x2f, 0x01, 0x97, 0x0e, 0x2c, 0x24, - 0x68, 0xf0, 0x79, 0xdb, 0x6d, 0x8e, 0xa4, 0x4d, 0xdb, 0x52, 0x86, 0x5b, 0xe1, 0x82, 0x17, 0xad, - 0xab, 0xc6, 0xa9, 0x28, 0x25, 0xdc, 0x5c, 0xba, 0xdc, 0x92, 0xdc, 0x5a, 0x73, 0x5b, 0x58, 0x18, - 0xf5, 0x2e, 0xf0, 0xc9, 0x21, 0xae, 0x34, 0xc1, 0xbd, 0xd1, 0x22, 0x4a, 0x5a, 0x04, 0x90, 0x06, - 0x90, 0x1f, 0xec, 0xc8, 0xc2, 0xde, 0x45, 0x0b, 0x47, 0x4e, 0x17, 0x6b, 0xcf, 0xb4, 0x23, 0xa5, - 0x4e, 0x1b, 0x4d, 0x01, 0xf8, 0x03, 0xde, 0xcb, 0xc2, 0x52, 0x43, 0xa5, 0x13, 0x1d, 0x8f, 0xaa, - 0x11, 0xfb, 0xd5, 0x86, 0x3d, 0x1d, 0xf3, 0x81, 0x91, 0x8f, 0x52, 0x78, 0x2a, 0x4f, 0x1f, 0x9d, - 0x14, 0x82, 0x87, 0x58, 0xe4, 0x16, 0x2d, 0x48, 0x24, 0x7f, 0xb3, 0x82, 0x19, 0x56, 0x08, 0x16, - 0xf0, 0xbf, 0x16, 0x90, 0xba, 0xab, 0x8f, 0x55, 0xcb, 0xd0, 0x87, 0x14, 0x74, 0x92, 0xc6, 0x3b, - 0xfc, 0xf4, 0x90, 0x00, 0x5d, 0x4f, 0x2c, 0x02, 0x8f, 0x74, 0x6a, 0xb4, 0x89, 0x6a, 0xa2, 0x6b, - 0x37, 0x56, 0x06, 0x02, 0xa6, 0x6b, 0xe7, 0x27, 0xe3, 0x74, 0xcf, 0xe3, 0xf0, 0x96, 0x4d, 0x05, - 0x69, 0x2a, 0x17, 0xa3, 0x31, 0x29, 0x28, 0xb2, 0xc4, 0xdf, 0x3e, 0x12, 0x87, 0x26, 0xc9, 0x3c, - 0x84, 0x7c, 0x9f, 0x08, 0xd7, 0x08, 0xe6, 0xd6, 0x6c, 0xa9, 0x78, 0x32, 0xd7, 0x47, 0xf7, 0x81, - 0x50, 0x1c, 0x1c, 0xde, 0x8d, 0xc4, 0x63, 0xa7, 0xde, 0xa5, 0x73, 0x9e, 0xa5, 0x52, 0x79, 0xdd, - 0xf6, 0x77, 0xb7, 0xd0, 0x79, 0x6a, 0x82, 0xbf, 0x74, 0x14, 0xbe, 0x69, 0xe4, 0x5e, 0x30, 0x42, - 0xa1, 0xaa, 0xef, 0x6a, 0x04, 0x5e, 0xe1, 0x54, 0x8a, 0xb6, 0xa9, 0x05, 0x3a, 0x80, 0x9e, 0x06, - 0xfa, 0xaf, 0x51, 0x0f, 0x83, 0xa0, 0x11, 0x2a, 0xcd, 0x71, 0x6d, 0x6a, 0x29, 0x20, 0x29, 0x6d, - 0x13, 0x1b, 0xc6, 0x2c, 0x6c, 0x5f, 0x4b, 0xd2, 0x96, 0x14, 0x66, 0x04, 0x86, 0xf6, 0xc5, 0x94, - 0x96, 0x94, 0x8c, 0xfa, 0xa7, 0x4f, 0x0a, 0x1e, 0xa8, 0xc4, 0x9f, 0x7e, 0xf9, 0xea, 0xd7, 0xaf, - 0x5f, 0x78, 0x35, 0x41, 0xfb, 0xf2, 0x85, 0xf7, 0x1b, 0x86, 0x6c, 0xf4, 0x98, 0x12, 0x83, 0xaf, - 0x46, 0x8b, 0x35, 0x7b, 0xa2, 0xa2, 0x3c, 0xa5, 0xa3, 0x80, 0x98, 0x9c, 0x75, 0xd0, 0x77, 0x25, - 0x5b, 0x55, 0x43, 0x47, 0x94, 0xb5, 0xb6, 0x45, 0x94, 0xe7, 0x1a, 0xcd, 0xcb, 0xf1, 0x79, 0xfd, - 0x70, 0x5e, 0x9e, 0xcf, 0xd3, 0x92, 0xe2, 0x1c, 0xe1, 0xb7, 0x5c, 0x6d, 0xc3, 0x15, 0x8d, 0x41, - 0xac, 0xd7, 0xe6, 0x41, 0x84, 0xab, 0xb6, 0xbd, 0xc8, 0x7c, 0xb8, 0x78, 0x4a, 0x02, 0x6c, 0x62, - 0xc2, 0x5f, 0x33, 0x3d, 0x6d, 0xe8, 0x5b, 0x78, 0x10, 0x2c, 0x32, 0xe5, 0xd6, 0x17, 0xb3, 0xb5, - 0x39, 0x14, 0x08, 0xab, 0x2c, 0x80, 0xba, 0x8b, 0x89, 0x95, 0xc0, 0xbc, 0x64, 0x84, 0x59, 0x2d, - 0x8f, 0x8a, 0xc5, 0xc7, 0x62, 0x62, 0xed, 0xd2, 0xcf, 0x92, 0xac, 0x8e, 0xeb, 0x47, 0xfa, 0xe8, - 0xe6, 0xcf, 0x3a, 0xfa, 0x9d, 0x00, 0x65, 0x4b, 0x3e, 0x6b, 0x87, 0xc3, 0x84, 0x5e, 0x61, 0x78, - 0x99, 0xcd, 0x77, 0xe3, 0x32, 0xf1, 0x7f, 0x41, 0x07, 0xac, 0xeb, 0x6c, 0x33, 0x94, 0xba, 0xf4, - 0xc9, 0x30, 0x25, 0xd3, 0x4b, 0x7a, 0x90, 0xfa, 0x6e, 0xda, 0x83, 0x34, 0xaa, 0x83, 0x94, 0x05, - 0x24, 0xf1, 0x6d, 0x38, 0xf9, 0x7b, 0x38, 0x90, 0x7a, 0x30, 0x35, 0x2c, 0xb6, 0x4e, 0x28, 0xa2, - 0x8e, 0xfb, 0x51, 0x57, 0xbc, 0x5f, 0x8b, 0x17, 0x1b, 0x89, 0x80, 0x7a, 0xdf, 0x29, 0xee, 0x84, - 0x62, 0x57, 0xb5, 0xd8, 0xa1, 0x83, 0x38, 0x5f, 0x12, 0x02, 0x92, 0x43, 0x21, 0xb4, 0x13, 0x41, - 0x19, 0x34, 0xe8, 0xe1, 0x0b, 0x47, 0x0b, 0x05, 0xb6, 0x44, 0x37, 0x3a, 0x0e, 0x9d, 0xd9, 0xcd, - 0x77, 0x22, 0x21, 0x79, 0xd1, 0x71, 0x7e, 0x4a, 0xe3, 0x77, 0x40, 0x3f, 0x55, 0x51, 0x6b, 0x79, - 0x1f, 0xc6, 0x61, 0xf4, 0x33, 0x85, 0xa7, 0x2a, 0x0f, 0xe1, 0x50, 0xfd, 0x53, 0x00, 0x07, 0x28, - 0xb0, 0x0d, 0x91, 0xc5, 0x8c, 0xd0, 0x6d, 0xe7, 0x63, 0x98, 0xfe, 0x00, 0x4e, 0x1f, 0x16, 0x51, - 0xfa, 0x10, 0xc2, 0xe9, 0xc3, 0x9f, 0x42, 0x3c, 0xfc, 0xa7, 0x50, 0xfa, 0xb0, 0x80, 0xd2, 0x10, - 0x84, 0xc3, 0x3f, 0x85, 0x90, 0xf1, 0xc3, 0x76, 0x98, 0x9f, 0xd0, 0x1e, 0x15, 0x13, 0xef, 0x6f, - 0xd3, 0xe0, 0xa3, 0xf0, 0x8c, 0x9f, 0x3b, 0x34, 0xb9, 0x38, 0xb0, 0x5a, 0x5b, 0x5b, 0xb7, 0xdd, - 0x08, 0x51, 0xbb, 0x94, 0x41, 0x0a, 0xd9, 0x1d, 0x61, 0xef, 0x9e, 0x8a, 0x7d, 0xfc, 0x42, 0x23, - 0xda, 0xba, 0x09, 0xdd, 0xb2, 0x73, 0xb6, 0x70, 0x6a, 0xa8, 0xbb, 0x6c, 0x2e, 0x3a, 0xc2, 0x6c, - 0xce, 0x63, 0x38, 0xdf, 0xdc, 0x30, 0x65, 0xc1, 0x57, 0x0d, 0xff, 0x9a, 0x01, 0x27, 0x86, 0x61, - 0x67, 0x73, 0x5b, 0x78, 0xf6, 0xcd, 0xee, 0xbe, 0xb2, 0x91, 0x5f, 0x80, 0x30, 0xa1, 0xd9, 0xdf, - 0x32, 0xac, 0x4e, 0xb4, 0x6e, 0x16, 0xeb, 0x66, 0x97, 0xd5, 0xdd, 0x56, 0xac, 0x65, 0x15, 0x73, - 0x58, 0x31, 0xb7, 0xac, 0x62, 0xc3, 0xea, 0x2c, 0xab, 0x98, 0xc7, 0x8a, 0xf9, 0x65, 0x15, 0x9b, - 0xf4, 0x06, 0x78, 0x50, 0x37, 0xc3, 0xb2, 0x23, 0xbc, 0xe8, 0xd0, 0x9d, 0x1f, 0x3a, 0x1b, 0xb6, - 0x8e, 0x68, 0x53, 0x63, 0xa7, 0xa2, 0x85, 0x42, 0x89, 0x60, 0xab, 0xc3, 0x3f, 0x9d, 0x07, 0x3b, - 0xba, 0x76, 0x5b, 0xea, 0xbb, 0xb3, 0x60, 0xab, 0x8b, 0x88, 0x24, 0x0a, 0xd4, 0xd4, 0xdf, 0x9f, - 0x85, 0x98, 0xba, 0x77, 0xe4, 0x4e, 0xd5, 0xb4, 0x2b, 0xa3, 0xf3, 0xfc, 0x60, 0x8c, 0xde, 0xc1, - 0x4c, 0x2d, 0x6a, 0x78, 0x83, 0x61, 0x50, 0xeb, 0x11, 0xb4, 0xaf, 0xe1, 0x49, 0xcf, 0x10, 0xf7, - 0x70, 0xd2, 0xdf, 0x12, 0x43, 0x7d, 0x40, 0xae, 0xb1, 0x15, 0x6c, 0xec, 0x0b, 0x1b, 0xa0, 0x4b, - 0xf7, 0x78, 0x6b, 0x9a, 0x6e, 0x21, 0xf0, 0x80, 0x76, 0xa7, 0x98, 0x95, 0xcc, 0xa2, 0x7a, 0x6f, - 0xbe, 0xbf, 0x82, 0x6d, 0xa2, 0x85, 0x31, 0x8b, 0xf2, 0x08, 0xbf, 0x84, 0x21, 0xe5, 0xcf, 0xd6, - 0x70, 0x64, 0xf8, 0x0b, 0x06, 0x47, 0xec, 0x68, 0x77, 0xea, 0xcf, 0xe2, 0x12, 0x2b, 0x9e, 0xf5, - 0x16, 0x02, 0x97, 0xbe, 0x07, 0x36, 0x3c, 0x74, 0x68, 0xa3, 0x72, 0x22, 0xfc, 0xba, 0x7e, 0x8e, - 0x89, 0x64, 0x2d, 0x88, 0xf8, 0x4b, 0x1b, 0xaf, 0x51, 0xd1, 0x00, 0xc7, 0x02, 0xb5, 0xb7, 0x6c, - 0xd7, 0xf8, 0xc2, 0x7e, 0xa1, 0x59, 0x90, 0x9c, 0x00, 0xe7, 0x85, 0x2c, 0xde, 0xf8, 0xc2, 0x70, - 0x8e, 0xf8, 0x93, 0xcf, 0x15, 0xc5, 0x39, 0x15, 0x24, 0x7e, 0xa6, 0x40, 0x5c, 0xd2, 0xb7, 0xe0, - 0x5f, 0xd5, 0x8b, 0xc4, 0x26, 0xa0, 0x70, 0x96, 0xfa, 0x1a, 0xb2, 0x0f, 0x1a, 0x26, 0xa3, 0xf4, - 0x77, 0x61, 0x63, 0xc9, 0xb8, 0x45, 0xa3, 0x1b, 0x9a, 0xd2, 0xa7, 0x27, 0xbb, 0x78, 0x80, 0xbd, - 0xf9, 0x35, 0xf5, 0x33, 0x8a, 0x84, 0xbe, 0x1b, 0x92, 0xcb, 0x3b, 0xdb, 0xa6, 0xea, 0x24, 0xec, - 0xd0, 0xf3, 0x1a, 0x6f, 0x27, 0xc5, 0xb8, 0x73, 0x3a, 0x99, 0x3a, 0x61, 0x39, 0x79, 0xd1, 0x21, - 0xee, 0x2b, 0x42, 0xf8, 0xd5, 0x45, 0x47, 0x6e, 0xa3, 0xfc, 0xd7, 0xac, 0x45, 0x4d, 0x82, 0x69, - 0xfc, 0x1a, 0x49, 0x73, 0xa0, 0x58, 0x4d, 0x74, 0x78, 0xa5, 0x54, 0x95, 0x12, 0x1b, 0x62, 0xba, - 0xe3, 0x26, 0x35, 0xd0, 0x7b, 0x33, 0xe9, 0xa1, 0xe3, 0x67, 0x64, 0xdc, 0xeb, 0x1d, 0x2f, 0x20, - 0x1f, 0x25, 0x8b, 0x10, 0xa8, 0x9e, 0x7c, 0xd8, 0x4b, 0xd6, 0xc2, 0x82, 0xdb, 0xbe, 0x65, 0xd2, - 0xb9, 0x91, 0xe4, 0x00, 0x9c, 0x86, 0x17, 0x80, 0x65, 0x45, 0x43, 0xd6, 0xd2, 0x86, 0xb2, 0x41, - 0x43, 0xdb, 0x1f, 0x68, 0xa8, 0xbf, 0xb4, 0xa1, 0x5c, 0xd0, 0x50, 0xf3, 0x03, 0x0d, 0x69, 0x4b, - 0x1b, 0xca, 0x07, 0x0d, 0xed, 0xf8, 0x0d, 0x71, 0x4c, 0x42, 0xf8, 0xb9, 0x38, 0xe1, 0x31, 0xb6, - 0x71, 0x97, 0xf0, 0x97, 0x5b, 0xc7, 0xb5, 0x78, 0xcb, 0x78, 0x5c, 0xeb, 0xb1, 0x96, 0x71, 0x2d, - 0xd6, 0x2a, 0xae, 0x45, 0x2d, 0xe2, 0xb0, 0x10, 0xa2, 0xd7, 0x12, 0x2d, 0xea, 0x8d, 0x1f, 0xe5, - 0x73, 0xaa, 0x1e, 0x02, 0x1c, 0x5e, 0x19, 0x2c, 0x0b, 0xa1, 0xed, 0x3c, 0x1a, 0x72, 0xa6, 0x4e, - 0xa8, 0x86, 0x13, 0xfb, 0xc9, 0x9d, 0xe0, 0x8b, 0x3b, 0x7f, 0xcd, 0x44, 0x62, 0x9b, 0xe5, 0x5c, - 0xa9, 0x24, 0xd6, 0xeb, 0x36, 0xd5, 0x5a, 0xb7, 0xf2, 0xb9, 0x6a, 0xa9, 0x30, 0xe7, 0xc5, 0x6b, - 0x77, 0xcd, 0x22, 0x07, 0x0d, 0xc5, 0xd0, 0xa3, 0x9f, 0xf5, 0x11, 0x90, 0x1b, 0xa5, 0xd3, 0x69, - 0x31, 0xe3, 0x1a, 0x83, 0x7c, 0x44, 0x81, 0x66, 0x48, 0x23, 0x16, 0x3a, 0x40, 0xd0, 0xe8, 0x52, - 0x06, 0x90, 0x3b, 0xdd, 0xcd, 0xbf, 0x66, 0xa3, 0x2d, 0xb1, 0x85, 0x22, 0xb6, 0x70, 0x8f, 0x1e, - 0x21, 0xf4, 0xe9, 0x64, 0x77, 0x47, 0x64, 0xde, 0x67, 0x5c, 0x29, 0x1e, 0x47, 0x00, 0xef, 0x96, - 0x78, 0x87, 0x16, 0x22, 0x5a, 0x07, 0x78, 0x04, 0x54, 0x5e, 0x28, 0xc0, 0xa2, 0x03, 0x81, 0x3a, - 0xe9, 0x15, 0x8a, 0x6d, 0x17, 0x25, 0xf2, 0xf3, 0x5e, 0x0f, 0x6f, 0xf7, 0x70, 0x1e, 0x6f, 0x1c, - 0x88, 0x2e, 0x82, 0x39, 0x86, 0x1b, 0xe6, 0xf3, 0x2b, 0xe3, 0x29, 0xfe, 0x35, 0x4b, 0x8c, 0xb6, - 0x86, 0x93, 0xaa, 0x67, 0x65, 0x4e, 0xae, 0x67, 0xe7, 0x9c, 0xb2, 0xd2, 0x99, 0x2f, 0x28, 0x3d, - 0x27, 0x44, 0x0f, 0xd4, 0x21, 0xff, 0xb3, 0x49, 0xd0, 0x19, 0xfb, 0x6c, 0x92, 0xc7, 0xd5, 0xb9, - 0x51, 0xbc, 0x03, 0x20, 0x79, 0x07, 0xc0, 0x10, 0x7c, 0x3c, 0x70, 0xdd, 0xf5, 0x44, 0x14, 0xa7, - 0x9d, 0xaa, 0x9c, 0xfc, 0x07, 0x40, 0x16, 0xb0, 0x57, 0xcf, 0x47, 0x09, 0x69, 0x76, 0x5d, 0xd1, - 0xd4, 0xbe, 0x5e, 0x45, 0x9e, 0x6e, 0x39, 0xe8, 0x98, 0x84, 0xdb, 0x21, 0x16, 0x1a, 0xa7, 0xa8, - 0x71, 0x51, 0x4c, 0xf5, 0x30, 0x69, 0x71, 0xa4, 0xb4, 0x25, 0x66, 0xfd, 0x5d, 0xd8, 0xd4, 0x8d, - 0x5e, 0x74, 0xe4, 0x1c, 0x15, 0x1b, 0xbd, 0x55, 0xe3, 0xe0, 0x8c, 0x8a, 0xb0, 0x3c, 0xa1, 0x07, - 0xd7, 0x7a, 0xb9, 0xc9, 0x08, 0xf4, 0xc1, 0xf3, 0x9c, 0x04, 0xc0, 0x16, 0x70, 0x24, 0x1e, 0x50, - 0x63, 0xa6, 0x47, 0x74, 0x0f, 0x68, 0xf0, 0xf3, 0xcb, 0x87, 0x29, 0xec, 0x9d, 0xd9, 0xfb, 0x9a, - 0xd2, 0x52, 0x5f, 0xed, 0x87, 0x95, 0xf3, 0xf7, 0x35, 0x95, 0x18, 0x0e, 0xd6, 0xb3, 0x68, 0x54, - 0xf4, 0x86, 0xf7, 0x35, 0x65, 0xe2, 0x5b, 0xcc, 0xe0, 0x68, 0x83, 0x4b, 0x66, 0xc9, 0xcd, 0xdb, - 0x0c, 0x40, 0x7d, 0x07, 0x30, 0xf2, 0x1e, 0x60, 0xc3, 0x41, 0x08, 0xa8, 0x44, 0x7f, 0x91, 0x9e, - 0xcc, 0x2a, 0x5a, 0xc0, 0xff, 0x7d, 0x60, 0x85, 0xe5, 0xb4, 0x04, 0xdb, 0xff, 0xd0, 0x23, 0xa2, - 0x01, 0x3c, 0xf8, 0x13, 0x20, 0x52, 0x26, 0xeb, 0xcf, 0xec, 0x3e, 0x46, 0x19, 0x83, 0x4d, 0xdb, - 0x1f, 0x7f, 0x0b, 0x2f, 0x14, 0x70, 0xef, 0xe1, 0xa9, 0x13, 0x3f, 0xb4, 0xf6, 0xfa, 0x96, 0x19, - 0x8b, 0xa4, 0x2c, 0x6f, 0xcf, 0xe0, 0xa8, 0x12, 0xca, 0xff, 0x0f, 0x70, 0x04, 0xdb, 0xec, 0xac, - 0x9c, 0xba, 0x28, 0x54, 0x50, 0xfe, 0x1f, 0x81, 0xea, 0x03, 0xd6, 0x77, 0x66, 0x12, 0x5a, 0x26, - 0xbb, 0xfa, 0x1f, 0x77, 0xf2, 0xe3, 0xf2, 0xd2, 0x5d, 0x36, 0xfe, 0x7b, 0x6e, 0xdc, 0x7c, 0x79, - 0xb6, 0xd5, 0xf0, 0x96, 0x3a, 0x10, 0xda, 0x61, 0x5d, 0x08, 0x28, 0x52, 0xf4, 0x37, 0xf9, 0x04, - 0xdd, 0x1a, 0x7a, 0x49, 0x78, 0xf8, 0xf2, 0xa5, 0xbf, 0x6e, 0x6e, 0x66, 0xbf, 0x7c, 0xe9, 0xae, - 0x77, 0x36, 0xb3, 0x5b, 0x6d, 0x4a, 0x38, 0x09, 0x92, 0x6e, 0x8c, 0xba, 0xaa, 0x71, 0x45, 0xd8, - 0xdd, 0x8a, 0x2f, 0x5f, 0x22, 0x09, 0xd4, 0xdc, 0x26, 0x56, 0x0f, 0x71, 0x23, 0x5f, 0x61, 0x12, - 0x08, 0x01, 0xd0, 0x76, 0x86, 0xa2, 0xdb, 0x37, 0x0d, 0xe0, 0x6b, 0x1a, 0xf4, 0x98, 0x81, 0x59, - 0x0d, 0xdc, 0x70, 0x65, 0xd8, 0x37, 0x70, 0xcf, 0xd5, 0x1a, 0x08, 0x5d, 0x20, 0x8e, 0x19, 0xd1, - 0xed, 0xae, 0x4d, 0x7f, 0x55, 0x7d, 0x45, 0xf1, 0xdb, 0x31, 0x43, 0x1a, 0x08, 0xac, 0x86, 0x4d, - 0x3c, 0xa9, 0x79, 0xbf, 0xe5, 0x38, 0x8b, 0x4f, 0xa8, 0xe5, 0x88, 0xcd, 0x87, 0xb6, 0x8c, 0x7c, - 0xf0, 0xf7, 0x35, 0x9c, 0x2e, 0x06, 0x1d, 0x45, 0x11, 0x7e, 0x39, 0xf5, 0xb8, 0x90, 0x59, 0x4c, - 0xe4, 0xf2, 0xbf, 0x64, 0x6b, 0x82, 0x4e, 0xea, 0xc6, 0x3c, 0xc3, 0xcb, 0x38, 0xdc, 0x11, 0x8f, - 0xf9, 0x21, 0x22, 0x0b, 0x7d, 0xf1, 0x30, 0xf0, 0xf2, 0xf9, 0x08, 0x28, 0xdd, 0x10, 0x28, 0x3b, - 0xd4, 0xa5, 0x86, 0x03, 0xa0, 0xcb, 0x2b, 0x83, 0x9b, 0xbf, 0xf9, 0x09, 0xb3, 0x90, 0x3e, 0xbc, - 0x28, 0x3b, 0x02, 0xc9, 0x59, 0xc8, 0xd6, 0x98, 0x87, 0xe7, 0xdc, 0xb3, 0x7b, 0x2f, 0xba, 0x49, - 0xb8, 0x26, 0x76, 0xde, 0x82, 0xbe, 0x59, 0x67, 0xa7, 0xdc, 0xb5, 0xe0, 0xa6, 0x96, 0xe6, 0x1e, - 0xbd, 0x82, 0x5a, 0x89, 0x57, 0x4d, 0x93, 0x9e, 0x5f, 0xa8, 0xf7, 0xee, 0x05, 0xe6, 0x46, 0xff, - 0x64, 0xdf, 0xf2, 0xaf, 0xd4, 0xe5, 0x9a, 0xf2, 0xad, 0x8e, 0x83, 0xac, 0x29, 0xa9, 0x54, 0x32, - 0xe0, 0x18, 0x8a, 0x7f, 0x1d, 0x88, 0xda, 0x76, 0xa9, 0xc3, 0x3d, 0x25, 0x7e, 0x05, 0x8d, 0xc5, - 0x3f, 0x93, 0x7e, 0x6f, 0x7d, 0x4b, 0x4c, 0x29, 0xcb, 0x0e, 0x83, 0x3f, 0xf1, 0xf5, 0x00, 0x92, - 0x9f, 0x3e, 0x18, 0xb0, 0x54, 0x3f, 0x06, 0x6d, 0x96, 0x5d, 0xc7, 0x76, 0x0f, 0x1c, 0xbe, 0xe5, - 0x82, 0x92, 0xfd, 0x2e, 0xa8, 0xa1, 0x00, 0xf9, 0xca, 0x93, 0x68, 0x44, 0xb6, 0xbc, 0xf4, 0x18, - 0x5a, 0xfa, 0x44, 0x4d, 0xc4, 0x9f, 0x34, 0x76, 0x21, 0x33, 0xbc, 0xe5, 0x79, 0x47, 0x1a, 0xc1, - 0x18, 0xb0, 0xb7, 0xb9, 0xed, 0xdd, 0x70, 0x48, 0xc2, 0x9e, 0x98, 0x5a, 0x56, 0x8a, 0xf8, 0xa5, - 0xbe, 0x79, 0x22, 0x9b, 0x3f, 0x64, 0x44, 0x59, 0x14, 0xf0, 0xb8, 0xb3, 0x76, 0x3f, 0xfe, 0x78, - 0xd4, 0x3f, 0xc1, 0xc3, 0x06, 0xf0, 0xb8, 0x70, 0x0c, 0x16, 0x29, 0x7c, 0x89, 0x12, 0x7d, 0x0e, - 0x4c, 0x3b, 0x89, 0xaa, 0x3e, 0x3e, 0xf8, 0x8e, 0xea, 0xde, 0x65, 0xe1, 0xaf, 0x27, 0x34, 0x28, - 0x78, 0x95, 0xc5, 0x0b, 0x8f, 0x31, 0x41, 0xd9, 0x7d, 0x9e, 0x7d, 0x44, 0x4e, 0x5c, 0x59, 0x44, - 0xf1, 0xff, 0xf8, 0x5a, 0xf5, 0x71, 0xc0, 0x7d, 0x70, 0x3b, 0xc6, 0x2e, 0x15, 0x98, 0x93, 0x36, - 0x6f, 0xdc, 0x36, 0xbb, 0xbe, 0x15, 0xe9, 0x6b, 0xcd, 0x3f, 0x47, 0xa7, 0xce, 0x86, 0x02, 0x03, - 0x99, 0x9e, 0x37, 0x51, 0x57, 0xc1, 0x70, 0x5b, 0x7f, 0xcd, 0x9c, 0xb4, 0xda, 0x9d, 0xa3, 0x97, - 0x96, 0x5c, 0xaf, 0xe3, 0xf3, 0x96, 0xe8, 0x9a, 0x18, 0xc4, 0xaa, 0x93, 0xc6, 0x4b, 0x0e, 0xa0, - 0xfa, 0xb8, 0x31, 0xcf, 0x53, 0x98, 0x9f, 0x12, 0x99, 0x13, 0xf2, 0xdc, 0xef, 0xf2, 0x67, 0x8d, - 0x50, 0x0f, 0xeb, 0x90, 0xf9, 0xca, 0x75, 0xb5, 0x76, 0x6b, 0x86, 0x9c, 0xf9, 0x22, 0x39, 0xcb, - 0xe6, 0x8e, 0xf3, 0x1b, 0x8c, 0x29, 0xcb, 0x51, 0xdf, 0xe2, 0xa1, 0x9d, 0xef, 0xf0, 0xea, 0x7a, - 0x64, 0x52, 0x07, 0x59, 0x89, 0x1e, 0xdd, 0x11, 0xcf, 0x71, 0xd4, 0x3f, 0x60, 0xc4, 0x2b, 0x00, - 0xce, 0x37, 0xe2, 0x4e, 0x6a, 0xcd, 0x81, 0xe5, 0x4b, 0xbe, 0x3b, 0x3f, 0xea, 0x33, 0xb5, 0x5b, - 0xc5, 0x07, 0xf4, 0x2f, 0x40, 0x25, 0x8f, 0xbd, 0x64, 0x7f, 0xcc, 0xb1, 0x0d, 0xde, 0x7b, 0x93, - 0xfa, 0x1f, 0xd1, 0x9b, 0xe2, 0x1a, 0xc1, 0x98, 0x50, 0x8a, 0x45, 0x12, 0x0e, 0x4d, 0x4c, 0xa2, - 0x33, 0x81, 0xe7, 0x99, 0x8a, 0xed, 0xc9, 0xac, 0x25, 0xb1, 0x85, 0x17, 0x6b, 0xc5, 0x79, 0x00, - 0x04, 0xbd, 0xee, 0x48, 0x3c, 0x7a, 0xc2, 0x3b, 0xf3, 0x92, 0x0e, 0x3f, 0xf4, 0xc6, 0xb5, 0x28, - 0x88, 0xe8, 0x92, 0x21, 0xb2, 0x70, 0x0a, 0xb4, 0x33, 0x55, 0xef, 0x92, 0xe9, 0x79, 0x2f, 0x21, - 0x5e, 0xb5, 0x6e, 0x77, 0xc4, 0xe4, 0x37, 0x99, 0x3a, 0x17, 0x86, 0x89, 0x96, 0xb9, 0xbd, 0xa2, - 0x2b, 0x39, 0xf3, 0x90, 0x75, 0x89, 0x16, 0x3b, 0xc1, 0xa0, 0x09, 0x2c, 0x15, 0xef, 0x92, 0xb0, - 0x8c, 0x2d, 0xb1, 0x56, 0xfb, 0x54, 0xcb, 0x82, 0x04, 0xe0, 0x65, 0xd4, 0x18, 0x76, 0xd0, 0xa5, - 0x41, 0xdb, 0xfa, 0xfe, 0xa3, 0xaa, 0x79, 0x77, 0xc5, 0x6b, 0x34, 0xe6, 0x83, 0xe3, 0x56, 0xfc, - 0x96, 0xff, 0xf5, 0x8b, 0xba, 0x3d, 0x50, 0x5f, 0x52, 0x28, 0x87, 0xbf, 0x5e, 0x51, 0x89, 0x5e, - 0x4b, 0x8c, 0xb9, 0x1a, 0x4e, 0x43, 0x63, 0x79, 0x01, 0xca, 0xe8, 0x9d, 0x70, 0xf7, 0xaa, 0x43, - 0xf0, 0xcd, 0x3c, 0xef, 0x24, 0xd3, 0xef, 0xa8, 0xe0, 0x77, 0x94, 0xff, 0xb1, 0x05, 0x22, 0x65, - 0x15, 0x1f, 0x6a, 0x32, 0xbd, 0x72, 0x95, 0x40, 0x57, 0x92, 0xa4, 0xa4, 0x70, 0x7d, 0x25, 0x14, - 0xc0, 0x53, 0x47, 0x1b, 0x61, 0xdc, 0x57, 0x10, 0xf5, 0x82, 0x0e, 0xd8, 0xb7, 0xee, 0xb0, 0x70, - 0x90, 0x9f, 0xe5, 0xf3, 0xe9, 0xa7, 0xe6, 0xc2, 0xf9, 0x39, 0x2e, 0x9f, 0x7d, 0xe9, 0x2d, 0x9c, - 0x3f, 0xe6, 0xf3, 0xe9, 0x77, 0xd6, 0xc2, 0xf9, 0xbd, 0x70, 0x7e, 0xb1, 0x86, 0xce, 0x3b, 0x4e, - 0xaa, 0xde, 0xc7, 0x1b, 0xb4, 0xb8, 0x57, 0x00, 0x51, 0xa3, 0xa7, 0xdd, 0x81, 0x33, 0xd4, 0x12, - 0xf8, 0xbd, 0x4d, 0x89, 0x48, 0xba, 0x84, 0x92, 0xc6, 0xde, 0x3d, 0x60, 0x91, 0xfa, 0x03, 0xb0, - 0xbd, 0xcd, 0xfb, 0x96, 0x25, 0xbf, 0xb5, 0xc5, 0xf8, 0xc7, 0xfa, 0x7e, 0xed, 0xcc, 0x05, 0xde, - 0xf7, 0x97, 0x76, 0xdf, 0x42, 0xee, 0xc7, 0xd9, 0x1f, 0x51, 0xf2, 0xa5, 0xfe, 0xa9, 0x6e, 0x59, - 0x8f, 0x80, 0xbf, 0xcb, 0x92, 0xcf, 0x1b, 0x7e, 0x78, 0xe1, 0xb6, 0x80, 0x2c, 0xfd, 0x85, 0x84, - 0x34, 0x4c, 0xab, 0x20, 0xa7, 0x89, 0x1f, 0x98, 0xeb, 0xdd, 0x2f, 0x4a, 0xe8, 0x54, 0x2c, 0x61, - 0x37, 0x74, 0x8c, 0x17, 0x5e, 0xf2, 0xcf, 0xe8, 0x97, 0x22, 0x4d, 0x7a, 0x1e, 0xe8, 0x6a, 0x3b, - 0x7f, 0xcd, 0xa0, 0x55, 0x28, 0x7b, 0x01, 0x89, 0x4d, 0xdb, 0x4e, 0x50, 0x9f, 0x69, 0xdf, 0x5f, - 0xf2, 0x27, 0xdd, 0xe1, 0x98, 0x93, 0xa4, 0xf7, 0x49, 0xdf, 0x10, 0xdf, 0xf9, 0xe4, 0x45, 0xe2, - 0xf3, 0x4e, 0xee, 0x61, 0x4a, 0x7c, 0x17, 0x35, 0xfc, 0x22, 0x2b, 0x35, 0x9e, 0x24, 0x7d, 0xcf, - 0x03, 0x60, 0x0c, 0xe4, 0xdb, 0x62, 0x01, 0x60, 0x77, 0x29, 0xcf, 0xb7, 0x60, 0x21, 0xea, 0x05, - 0x00, 0xe2, 0x7b, 0x31, 0xfb, 0x40, 0xf0, 0xc1, 0x2a, 0xf0, 0x36, 0x69, 0xda, 0x18, 0x39, 0x2e, - 0x54, 0xef, 0xa0, 0x09, 0x34, 0x93, 0x75, 0x22, 0x89, 0xff, 0x25, 0xb8, 0x5f, 0xbd, 0x11, 0x53, - 0xc8, 0x0f, 0xfe, 0x4b, 0xfc, 0x77, 0xb0, 0x46, 0xdb, 0xe4, 0xd1, 0xc6, 0xb9, 0x3d, 0x58, 0xa4, - 0x6b, 0x29, 0x13, 0xb7, 0xb0, 0x1f, 0x0c, 0x23, 0xe6, 0x6a, 0xb9, 0xf8, 0xd9, 0x1d, 0x9e, 0x90, - 0xa6, 0xfe, 0xc5, 0xc9, 0x1a, 0xef, 0xe2, 0x2e, 0x90, 0xc0, 0x01, 0x83, 0xc0, 0x02, 0x0e, 0x55, - 0x4f, 0x88, 0x69, 0x1f, 0xc6, 0x24, 0x06, 0x67, 0xf3, 0x42, 0xc2, 0xd5, 0x23, 0xb3, 0xeb, 0x07, - 0xdf, 0x53, 0xbb, 0xc9, 0x70, 0x88, 0x0f, 0xbe, 0x18, 0xf3, 0x00, 0xe7, 0x83, 0xde, 0x06, 0x37, - 0x68, 0x83, 0x34, 0xe4, 0x67, 0xe8, 0x7f, 0xed, 0x78, 0xb7, 0xfd, 0x5c, 0x19, 0xa0, 0x2a, 0xd0, - 0x0d, 0xbf, 0x96, 0xad, 0xfb, 0x7c, 0x06, 0x3d, 0x27, 0x81, 0x30, 0xeb, 0x94, 0x44, 0xc3, 0x3c, - 0x95, 0xae, 0x0b, 0x37, 0x1f, 0xdd, 0x65, 0x01, 0x95, 0x49, 0xef, 0x2a, 0xb6, 0xeb, 0xfc, 0x1d, - 0x50, 0x8e, 0xd7, 0x1e, 0xa3, 0x17, 0xb6, 0x25, 0x6b, 0x75, 0xc7, 0xe3, 0xac, 0x8a, 0x64, 0x48, - 0xaa, 0x64, 0x81, 0x64, 0x56, 0x5b, 0xe0, 0xdd, 0x5a, 0x32, 0x69, 0xd5, 0x39, 0x27, 0x1c, 0xf4, - 0x08, 0xcf, 0x40, 0x67, 0x7f, 0x63, 0x70, 0x01, 0x89, 0x79, 0x85, 0x4b, 0x46, 0x1d, 0x83, 0xd9, - 0x48, 0x6a, 0x1d, 0x23, 0xd5, 0xd0, 0x20, 0x20, 0x02, 0x46, 0x29, 0xb1, 0x90, 0x5f, 0x27, 0x15, - 0x84, 0xcd, 0x75, 0xbe, 0x53, 0xf4, 0xae, 0x31, 0x4c, 0xa0, 0x17, 0xc8, 0x62, 0x9a, 0xba, 0x98, - 0x16, 0xc4, 0x13, 0x21, 0xb4, 0xa3, 0xf5, 0xac, 0xeb, 0x22, 0xc8, 0x6e, 0xa9, 0xdb, 0x4c, 0xac, - 0x04, 0x5a, 0xb6, 0x88, 0x5e, 0x53, 0x38, 0x97, 0x15, 0xdc, 0x4c, 0xbc, 0x29, 0xb3, 0xb0, 0xbb, - 0xf8, 0xac, 0x3e, 0xf6, 0x1a, 0x9f, 0xd5, 0x4e, 0xce, 0x3f, 0xc1, 0x4c, 0xd4, 0x2d, 0xc0, 0x71, - 0x08, 0x01, 0x24, 0xe3, 0x61, 0x93, 0xa2, 0x00, 0x6f, 0xa9, 0x53, 0x9f, 0x77, 0x37, 0xcc, 0xa0, - 0x82, 0x11, 0x06, 0x0d, 0xfc, 0xa3, 0xce, 0x93, 0x18, 0xeb, 0x70, 0xfe, 0x2f, 0x20, 0x6b, 0xf7, - 0x3e, 0x70, 0xe0, 0x46, 0x57, 0x15, 0xa2, 0xe1, 0x11, 0x31, 0xaa, 0x35, 0x1a, 0xaf, 0x24, 0x0c, - 0xa5, 0xf3, 0x64, 0xa8, 0x34, 0x86, 0x43, 0xed, 0x67, 0x98, 0xd8, 0x16, 0x17, 0x28, 0xbd, 0x73, - 0x0c, 0xfc, 0x19, 0xb7, 0x65, 0x49, 0x09, 0x5d, 0x3e, 0x8e, 0xac, 0x44, 0x26, 0x57, 0xe1, 0x11, - 0x20, 0x8d, 0x5d, 0xee, 0x1a, 0xed, 0xe8, 0xe1, 0x1b, 0xaa, 0x4e, 0x78, 0xf5, 0x18, 0x4f, 0xc7, - 0x38, 0xbf, 0x41, 0x9a, 0x07, 0xa2, 0x15, 0x9a, 0x90, 0x14, 0x34, 0x15, 0x7d, 0x9d, 0x1b, 0x7a, - 0x93, 0xe9, 0x51, 0x7f, 0xcd, 0xf4, 0x39, 0x8d, 0xaa, 0x98, 0xf4, 0x0f, 0xeb, 0x5c, 0x95, 0xcb, - 0x4d, 0x15, 0x56, 0x7e, 0x91, 0x37, 0xfe, 0x24, 0x29, 0x72, 0xb8, 0x47, 0xab, 0x72, 0xe6, 0x10, - 0x04, 0x10, 0x85, 0x0e, 0x7c, 0x26, 0x73, 0x31, 0x7c, 0x68, 0x47, 0x0b, 0x87, 0x55, 0xda, 0x65, - 0x9f, 0xfa, 0x0d, 0xd5, 0x0b, 0x3e, 0xf4, 0xcb, 0x2e, 0x5e, 0x87, 0xce, 0x34, 0xdc, 0x93, 0x7b, - 0x50, 0xaf, 0x7d, 0xad, 0xce, 0x9f, 0x8e, 0x36, 0x02, 0x89, 0x6b, 0xde, 0xf5, 0x40, 0x22, 0xae, - 0xf7, 0x51, 0x3e, 0x57, 0x75, 0x17, 0xf6, 0x6e, 0xeb, 0x22, 0x9f, 0x13, 0x5d, 0xdf, 0xa2, 0x7c, - 0x28, 0x75, 0xbd, 0xe5, 0x67, 0x14, 0x22, 0x19, 0x79, 0x2f, 0xa3, 0x18, 0xce, 0x68, 0x7a, 0x19, - 0x65, 0xbe, 0x03, 0x7a, 0x64, 0xe0, 0xd2, 0x97, 0xb8, 0xc5, 0x83, 0xa7, 0x87, 0x6e, 0xf3, 0x8a, - 0x18, 0xca, 0x87, 0x5e, 0xc8, 0xc3, 0xf4, 0x2d, 0x10, 0xdc, 0xcc, 0x2a, 0x7b, 0x5e, 0xdc, 0xb1, - 0x59, 0x80, 0x7a, 0x1a, 0xc3, 0x96, 0x31, 0x14, 0x20, 0x2d, 0x1d, 0xff, 0x80, 0xb8, 0x86, 0x1c, - 0x02, 0x44, 0x4a, 0x2c, 0x91, 0xf4, 0x75, 0x4e, 0xf4, 0x36, 0x73, 0x13, 0x7f, 0x43, 0x20, 0xf5, - 0x9a, 0xa1, 0x5c, 0x53, 0x61, 0xa9, 0x7a, 0xe0, 0x38, 0xfb, 0x33, 0xee, 0xc2, 0xa5, 0x7f, 0x5d, - 0x08, 0x24, 0x1a, 0x73, 0x1e, 0xfa, 0xc4, 0xb3, 0xfb, 0x49, 0x76, 0xf7, 0xb2, 0xf4, 0x57, 0x1a, - 0x45, 0x3c, 0x93, 0x71, 0x4b, 0x7e, 0x65, 0xb7, 0x86, 0x18, 0x52, 0x94, 0x24, 0x77, 0x73, 0x48, - 0xfa, 0x09, 0xc9, 0x74, 0x2a, 0x15, 0x1a, 0x05, 0x0a, 0xf2, 0xf0, 0x3c, 0x5f, 0x65, 0x7a, 0x88, - 0x82, 0xde, 0x9f, 0x5b, 0xe2, 0x59, 0xa6, 0x21, 0x56, 0xe9, 0xf3, 0x9c, 0x9e, 0x1b, 0x81, 0x40, - 0x92, 0x4a, 0xcd, 0x09, 0x7a, 0x93, 0x7f, 0x93, 0xb7, 0x6c, 0x90, 0xa5, 0x42, 0xdf, 0x9f, 0xc0, - 0x1b, 0xa8, 0xc0, 0xd5, 0xd1, 0xf2, 0xd5, 0x4d, 0x8b, 0x55, 0x99, 0x3a, 0xb2, 0x25, 0xb0, 0xd8, - 0x99, 0x21, 0x18, 0x78, 0x53, 0x36, 0xf8, 0x08, 0x81, 0xd0, 0x43, 0x7e, 0x90, 0x46, 0x41, 0x16, - 0x95, 0x22, 0xcf, 0x8d, 0x57, 0xe0, 0x5c, 0x1a, 0x9b, 0xcc, 0x13, 0xd3, 0xaf, 0x53, 0x45, 0xc7, - 0x46, 0x8a, 0xae, 0x39, 0x2d, 0xa8, 0xd3, 0x2b, 0x29, 0x11, 0x2f, 0x46, 0x3d, 0x24, 0x72, 0xd8, - 0xe1, 0x1b, 0x73, 0xee, 0x27, 0x08, 0x62, 0xaf, 0xca, 0xb1, 0x0f, 0x36, 0x7c, 0xe8, 0xa6, 0x9c, - 0x7f, 0x21, 0x7b, 0xa4, 0x75, 0x69, 0xa0, 0x79, 0x6c, 0x5b, 0xc0, 0xc6, 0x05, 0xdc, 0x90, 0x59, - 0x6c, 0x8c, 0xd8, 0x2b, 0x74, 0x71, 0x9f, 0x9e, 0x91, 0xc2, 0xf4, 0xe7, 0x89, 0x3b, 0x12, 0x79, - 0xe7, 0xb6, 0xe0, 0x42, 0x70, 0x17, 0x6a, 0xdf, 0x60, 0x9b, 0x31, 0x8b, 0x8d, 0x44, 0xdc, 0xad, - 0xb6, 0x16, 0x84, 0xa6, 0x42, 0x84, 0x62, 0x3f, 0x1f, 0x75, 0xe3, 0xc4, 0xfb, 0x58, 0x48, 0xfa, - 0xa0, 0x38, 0x2c, 0x0d, 0xbc, 0xeb, 0x50, 0xa7, 0x50, 0x2f, 0x14, 0xcb, 0x2d, 0xb2, 0x2d, 0x1a, - 0x3c, 0xb5, 0x2f, 0x26, 0xbd, 0x95, 0x44, 0xd2, 0x03, 0xc5, 0x6e, 0x38, 0x8e, 0xa5, 0x02, 0xfd, - 0x41, 0xee, 0x50, 0x99, 0x8a, 0x49, 0x58, 0x8d, 0x8a, 0x97, 0x44, 0xef, 0x37, 0x30, 0x8d, 0xbb, - 0x0a, 0xfb, 0xa1, 0x17, 0x59, 0x83, 0xf7, 0x80, 0xa5, 0x99, 0x19, 0x3b, 0x59, 0xd3, 0xbf, 0xd1, - 0x80, 0x0e, 0xb0, 0x66, 0x72, 0x6c, 0xeb, 0xd7, 0xea, 0x0b, 0x51, 0x77, 0x2b, 0x2c, 0xe8, 0x2e, - 0x3b, 0xda, 0x6d, 0xf7, 0x93, 0x94, 0x5c, 0xfe, 0xe5, 0x25, 0x74, 0xd6, 0x4b, 0x6e, 0x4a, 0xf2, - 0x67, 0x6d, 0x59, 0x80, 0x37, 0x6d, 0xce, 0x0c, 0x4b, 0x21, 0xb4, 0x2d, 0xc3, 0xa0, 0x1f, 0x91, - 0x8d, 0x7d, 0x51, 0x91, 0x21, 0x4e, 0x71, 0x55, 0x20, 0x5f, 0x00, 0xf6, 0x4c, 0x0a, 0x41, 0x00, - 0x53, 0x2e, 0x5a, 0x0f, 0x0d, 0x40, 0x9a, 0x66, 0x9f, 0x1c, 0xf9, 0xd3, 0x2e, 0xe3, 0x42, 0xe7, - 0x70, 0x9f, 0x7c, 0x74, 0x83, 0xc2, 0x44, 0x08, 0x07, 0xad, 0x64, 0x5c, 0xd4, 0x39, 0x66, 0xfb, - 0x21, 0x68, 0x1e, 0xf2, 0xe8, 0x27, 0x12, 0x0f, 0x25, 0x52, 0xca, 0x1d, 0x15, 0x68, 0xa4, 0xb1, - 0x25, 0x02, 0x03, 0xd2, 0xe2, 0xc9, 0x95, 0x53, 0xa5, 0x51, 0x54, 0xec, 0x75, 0xcf, 0x36, 0x18, - 0x6a, 0xfa, 0xe1, 0x27, 0x8a, 0x5a, 0xa1, 0xb6, 0x30, 0xc9, 0xa8, 0x47, 0x00, 0x00, 0x69, 0x26, - 0xd2, 0x21, 0x48, 0x75, 0x7c, 0x8a, 0xd1, 0x83, 0xa4, 0x0e, 0x13, 0x9f, 0x86, 0xcf, 0xad, 0x87, - 0x03, 0x58, 0xe7, 0xdd, 0xe0, 0x75, 0x87, 0x45, 0x4a, 0x54, 0xed, 0xd3, 0x24, 0xd2, 0xfa, 0x66, - 0x9d, 0xfa, 0x59, 0x26, 0x91, 0x79, 0x69, 0xee, 0x45, 0x74, 0x59, 0xd2, 0xd2, 0xec, 0x9b, 0x08, - 0xf0, 0xab, 0xea, 0x18, 0x73, 0x99, 0xcd, 0x2e, 0xcb, 0xce, 0x82, 0xaa, 0x89, 0xd9, 0xf4, 0x97, - 0x65, 0x1b, 0xf4, 0x81, 0x79, 0x6c, 0x1a, 0x34, 0xd3, 0x33, 0x9f, 0xad, 0x67, 0x25, 0x35, 0xc8, - 0x4c, 0xd1, 0x37, 0x2e, 0x5b, 0xea, 0x7c, 0xf9, 0xd2, 0x59, 0x62, 0x09, 0xec, 0x7e, 0xf9, 0xd2, - 0x5d, 0x92, 0x05, 0x12, 0x9b, 0xb5, 0xd4, 0x94, 0xc3, 0x24, 0xca, 0x48, 0xc3, 0x11, 0x4b, 0x5d, - 0xa4, 0xed, 0x48, 0x6e, 0xa4, 0x79, 0xae, 0x67, 0x3a, 0x73, 0x9c, 0xa8, 0xa9, 0x79, 0xf4, 0xc0, - 0xc9, 0x98, 0xca, 0x52, 0x0a, 0x30, 0x80, 0x02, 0x6a, 0xfa, 0xdf, 0x75, 0x75, 0xdd, 0xa0, 0x0d, - 0x99, 0xa1, 0x89, 0xc3, 0xe3, 0x09, 0xa6, 0x55, 0x02, 0x89, 0xe0, 0x79, 0x08, 0x14, 0x43, 0xab, - 0x9f, 0xf9, 0xe5, 0x8b, 0xb9, 0x7c, 0xb0, 0x5c, 0x78, 0x4c, 0x5f, 0x57, 0x0f, 0x2b, 0x40, 0x3f, - 0xa9, 0x02, 0xf4, 0x9d, 0x93, 0x02, 0x83, 0x4f, 0x5d, 0xcc, 0xc5, 0x1f, 0xac, 0x4b, 0x87, 0xa9, - 0x4f, 0xf6, 0x12, 0xf5, 0x89, 0x4a, 0x4f, 0xee, 0x66, 0x73, 0x4d, 0xa6, 0x8e, 0xa4, 0x87, 0x40, - 0xa7, 0xce, 0x8c, 0xd0, 0x90, 0x4e, 0xc3, 0x56, 0xfa, 0xf6, 0xa2, 0xff, 0xef, 0x7f, 0xff, 0xdf, - 0x68, 0x2e, 0xda, 0xd2, 0x97, 0x82, 0x5f, 0xd5, 0x97, 0x5d, 0x35, 0x62, 0x06, 0x39, 0x13, 0xaf, - 0xda, 0xae, 0xb0, 0x14, 0x7b, 0x00, 0x38, 0xe6, 0xcf, 0x90, 0xf5, 0x99, 0xb2, 0x33, 0x13, 0x04, - 0x55, 0x76, 0xdf, 0x36, 0x49, 0xcd, 0x59, 0xfa, 0x66, 0x76, 0xcb, 0xac, 0x63, 0x3c, 0x21, 0x90, - 0x93, 0x6c, 0xb1, 0x8a, 0x1e, 0x73, 0xd8, 0x7e, 0x5d, 0xcc, 0x52, 0xe7, 0x05, 0x58, 0x9d, 0xb0, - 0x95, 0x7c, 0x0a, 0x8d, 0xac, 0x6f, 0x41, 0xcb, 0x8c, 0xb3, 0xf7, 0xe3, 0x97, 0x3c, 0x2d, 0xe1, - 0x91, 0xc1, 0x68, 0x09, 0xe3, 0x30, 0x3b, 0x7e, 0x19, 0x34, 0x21, 0xa1, 0x03, 0x7d, 0xbf, 0xee, - 0xde, 0x86, 0xea, 0x31, 0xf6, 0xdf, 0x21, 0xb0, 0xa3, 0xe9, 0x99, 0x44, 0x3f, 0x35, 0x02, 0x2d, - 0xcf, 0x0d, 0x9e, 0xdf, 0xa3, 0x36, 0xf6, 0xcd, 0xec, 0xaf, 0x5f, 0xa3, 0x4d, 0x19, 0x9f, 0x4d, - 0x10, 0x20, 0x04, 0x10, 0xbf, 0x7b, 0x73, 0x61, 0xac, 0x5a, 0xce, 0x48, 0xd1, 0x92, 0xa0, 0x7b, - 0x50, 0x7b, 0xb8, 0xb7, 0x96, 0x59, 0x29, 0x51, 0xf8, 0x8e, 0x37, 0x27, 0xcd, 0x1f, 0x11, 0x4c, - 0x01, 0x1d, 0x86, 0x22, 0xef, 0x98, 0x51, 0x0e, 0x89, 0x77, 0x27, 0x99, 0x3e, 0x56, 0x23, 0x5e, - 0xc8, 0x34, 0xbc, 0x65, 0x29, 0x26, 0xc3, 0xb6, 0x17, 0x92, 0x8c, 0x8d, 0x47, 0xe5, 0xf9, 0x05, - 0x26, 0xb9, 0xda, 0x78, 0x2d, 0xfc, 0x77, 0x6b, 0xc3, 0x7c, 0x85, 0xbe, 0xb7, 0x82, 0xf7, 0xda, - 0xc3, 0x71, 0x8b, 0x42, 0xd9, 0x73, 0xe3, 0x27, 0x8d, 0xd0, 0xe8, 0x44, 0x89, 0x25, 0x68, 0x52, - 0x4a, 0x2c, 0xab, 0xfb, 0xa2, 0xb5, 0x7f, 0xd2, 0x08, 0x8a, 0xcb, 0x2b, 0xcf, 0xa3, 0x68, 0xc2, - 0x1b, 0xfb, 0x33, 0xee, 0x4e, 0xe2, 0x85, 0x31, 0x21, 0x96, 0x67, 0x34, 0xc6, 0xbd, 0xaa, 0x8e, - 0x1f, 0xb7, 0xd9, 0xf2, 0x42, 0xc3, 0x61, 0xa8, 0x2a, 0xfe, 0x06, 0xa3, 0x16, 0x2a, 0xaa, 0x6b, - 0x8d, 0x65, 0x25, 0x5b, 0xaf, 0x7a, 0x27, 0x54, 0xd6, 0xfb, 0x0e, 0x4e, 0xa8, 0x02, 0x83, 0xa9, - 0xe5, 0xaf, 0x6b, 0x3f, 0xb0, 0x40, 0x2b, 0xf8, 0x90, 0x0d, 0x5a, 0x27, 0x12, 0xdc, 0x87, 0x6d, - 0x16, 0xcf, 0x8a, 0xdc, 0xfd, 0x73, 0xdb, 0x52, 0xf1, 0x94, 0x65, 0x49, 0x6e, 0xcb, 0x24, 0x88, - 0x90, 0xa5, 0xf9, 0xc1, 0xf7, 0xec, 0x97, 0x97, 0x69, 0x66, 0x57, 0x65, 0xe6, 0x56, 0x65, 0xe6, - 0x31, 0xd3, 0xfb, 0x36, 0x40, 0x62, 0x49, 0xa9, 0xab, 0x15, 0x2d, 0xec, 0xaf, 0xc8, 0xdb, 0xa6, - 0x57, 0xf5, 0x83, 0x0f, 0x0e, 0x2c, 0x29, 0x76, 0x27, 0x26, 0xf9, 0x0f, 0x00, 0x70, 0x71, 0xd7, - 0x99, 0x2d, 0x6e, 0x82, 0x97, 0x36, 0x16, 0xce, 0x7f, 0xbc, 0x66, 0xa3, 0xa7, 0x3f, 0xac, 0x4a, - 0x5b, 0xd1, 0xe2, 0x6a, 0x34, 0x9b, 0xd7, 0xb1, 0xe5, 0x07, 0x64, 0x3a, 0x59, 0x28, 0x4f, 0x30, - 0xa6, 0x7d, 0x6c, 0x71, 0xf6, 0x99, 0x9d, 0xb8, 0x0e, 0x28, 0x1e, 0x41, 0xf0, 0xa2, 0x05, 0xe2, - 0xbb, 0x5a, 0x36, 0x1a, 0xf6, 0x79, 0x86, 0x95, 0x75, 0xed, 0x7f, 0xa3, 0xee, 0x78, 0x45, 0xdd, - 0xd8, 0x0a, 0xcf, 0xab, 0x3b, 0x5b, 0x81, 0x4d, 0xab, 0xdf, 0x5e, 0x59, 0x97, 0x60, 0x3c, 0xfd, - 0xd8, 0x9a, 0x2f, 0x1d, 0x7b, 0x7d, 0xb2, 0xa2, 0x1e, 0xfd, 0x9c, 0x51, 0xb4, 0x26, 0x77, 0x49, - 0xdd, 0x7d, 0xa4, 0xb1, 0x1c, 0x2d, 0x3b, 0xb1, 0x20, 0xaf, 0x46, 0xd7, 0x6f, 0x28, 0x7a, 0x5b, - 0x60, 0xf4, 0x95, 0x16, 0x37, 0xee, 0x9f, 0x2c, 0x1c, 0x27, 0x33, 0xa6, 0x78, 0x26, 0xde, 0x1f, - 0xdf, 0x7d, 0x4b, 0x0b, 0x61, 0x7b, 0xbf, 0x4d, 0xb7, 0x6c, 0xfe, 0x98, 0x99, 0x99, 0xdf, 0x16, - 0xe5, 0x00, 0x8e, 0x39, 0xe3, 0x37, 0x73, 0x56, 0xb2, 0x6f, 0xc9, 0x79, 0x57, 0x08, 0x61, 0xfd, - 0x23, 0xd3, 0xfd, 0x58, 0xc9, 0xe5, 0xbc, 0x99, 0x13, 0xa7, 0xa3, 0x06, 0x43, 0xbc, 0xed, 0x8b, - 0xa2, 0x14, 0xf9, 0x56, 0x4a, 0x6a, 0x61, 0x9d, 0x21, 0x22, 0xf3, 0x91, 0xcd, 0xdc, 0x97, 0x2f, - 0x34, 0xfe, 0xc5, 0xd2, 0x22, 0x45, 0x7a, 0xf6, 0x83, 0x66, 0xd0, 0xd5, 0xb2, 0xa7, 0x10, 0xba, - 0x4d, 0xa8, 0x25, 0xc5, 0x2c, 0x35, 0xca, 0x78, 0x66, 0x47, 0x2c, 0x89, 0xa4, 0xf1, 0xce, 0xf1, - 0xe2, 0x22, 0x4b, 0xe7, 0x03, 0xae, 0x79, 0xb2, 0x9e, 0x84, 0xaa, 0xee, 0x8a, 0x89, 0xef, 0x4d, - 0xf9, 0x39, 0x8f, 0x0a, 0x7e, 0x18, 0x09, 0xc0, 0x59, 0x98, 0x7c, 0x7b, 0xa1, 0xc9, 0xd0, 0xe4, - 0xbb, 0x14, 0xb3, 0x6a, 0xf6, 0xbd, 0xa8, 0x9e, 0xec, 0xdb, 0x89, 0x2c, 0x66, 0x8f, 0x7f, 0xf3, - 0xfb, 0x0f, 0xa4, 0x53, 0x3d, 0x39, 0xd3, 0x57, 0x6c, 0xec, 0x18, 0x01, 0x82, 0x1e, 0xc2, 0x5e, - 0x28, 0x16, 0x8c, 0xda, 0xc1, 0x95, 0x14, 0xb4, 0xe2, 0xe9, 0xcd, 0x24, 0xe6, 0x5c, 0x81, 0x3f, - 0x4e, 0x60, 0x36, 0x73, 0x77, 0xce, 0xa8, 0x86, 0x18, 0xcc, 0x99, 0x61, 0x3a, 0xe1, 0x00, 0x2a, - 0xfc, 0x27, 0x7c, 0x20, 0x93, 0x3b, 0xac, 0xac, 0x11, 0xee, 0x24, 0x81, 0x9e, 0x0c, 0x82, 0xc0, - 0xe7, 0x7e, 0x66, 0xee, 0xd7, 0xaf, 0xac, 0xff, 0x0c, 0x19, 0x9f, 0xf0, 0x48, 0x11, 0x23, 0xca, - 0xe6, 0x7f, 0x04, 0x42, 0xb3, 0x4c, 0x4f, 0x58, 0x7f, 0xfd, 0x62, 0x4e, 0x0e, 0x98, 0xc7, 0xfe, - 0x06, 0x25, 0x60, 0x7f, 0xdc, 0xac, 0xcb, 0xd1, 0xd4, 0x2c, 0x15, 0xb5, 0x97, 0x90, 0x55, 0x95, - 0x2c, 0x0f, 0x26, 0xe0, 0xaa, 0xfe, 0xfa, 0xc7, 0x04, 0x7f, 0xa3, 0x1e, 0xf1, 0x79, 0x59, 0x8c, - 0x03, 0xdc, 0x55, 0xc7, 0xdf, 0xa3, 0x17, 0x9d, 0xbc, 0x48, 0xc0, 0x1c, 0x92, 0x8d, 0xa4, 0xb2, - 0xa8, 0x2a, 0x2c, 0x87, 0xb3, 0xba, 0x64, 0x68, 0xb5, 0xdf, 0x81, 0xc8, 0xbb, 0xec, 0xf3, 0x2e, - 0x38, 0xff, 0xd7, 0xff, 0x83, 0xe0, 0x7c, 0xf9, 0x12, 0x4a, 0xfb, 0x7f, 0xff, 0x10, 0xc5, 0x9c, - 0xf0, 0xe8, 0xee, 0x10, 0x57, 0x18, 0xdc, 0x8e, 0x99, 0x5f, 0xd9, 0x06, 0x44, 0x3f, 0xcb, 0xb9, - 0x18, 0xcb, 0xc3, 0x0b, 0xb9, 0x41, 0xdd, 0x25, 0x40, 0xc0, 0x40, 0xbe, 0xe1, 0xde, 0xff, 0x00, - 0x48, 0x44, 0x5a, 0x10, 0xcd, 0x69, 0x0f, 0x09, 0xd9, 0x9c, 0x26, 0xe9, 0x95, 0x79, 0x3f, 0x05, - 0x3f, 0x09, 0x9a, 0x14, 0xfd, 0x15, 0xad, 0xa9, 0xe6, 0x16, 0xfd, 0x8b, 0x31, 0x56, 0xfd, 0x53, - 0x72, 0xf4, 0xcc, 0xb1, 0x41, 0x59, 0xc0, 0xbb, 0x14, 0x82, 0x98, 0xb2, 0x5d, 0x27, 0x16, 0x2d, - 0x7c, 0x41, 0xfa, 0x27, 0xfb, 0xa8, 0x2a, 0xfd, 0x36, 0x25, 0x51, 0x69, 0xe4, 0x3e, 0x84, 0x02, - 0x83, 0x21, 0xa6, 0xb5, 0xe1, 0x9c, 0x9e, 0x30, 0xa0, 0x69, 0xdd, 0x35, 0x4c, 0x06, 0x5f, 0x9b, - 0x5c, 0x94, 0x50, 0xd8, 0x78, 0xe8, 0x60, 0x22, 0xdb, 0x22, 0x17, 0x60, 0x72, 0x68, 0x5e, 0x30, - 0xe4, 0xd0, 0x55, 0x88, 0x4c, 0x59, 0xf7, 0xc2, 0xdc, 0xf9, 0xe1, 0xab, 0x6a, 0x6c, 0xee, 0x60, - 0x68, 0x34, 0x3f, 0x7c, 0xed, 0x03, 0xf4, 0x53, 0x27, 0x26, 0xb9, 0x36, 0xad, 0xdb, 0x9b, 0x85, - 0x8d, 0x2f, 0x5f, 0xec, 0x6f, 0xc5, 0xf2, 0xaf, 0x5f, 0xf6, 0x66, 0xa9, 0x80, 0xcf, 0x95, 0x2c, - 0x3e, 0x57, 0x4a, 0xf8, 0x9c, 0xcd, 0xe5, 0xf1, 0x25, 0x57, 0x2c, 0x6e, 0x89, 0x75, 0x00, 0x6d, - 0x53, 0x94, 0x5e, 0xeb, 0x3a, 0xad, 0xa4, 0xd3, 0x4a, 0x3a, 0xad, 0xa4, 0xd3, 0x4a, 0x3a, 0xad, - 0xa4, 0xb3, 0x4a, 0x3a, 0x5f, 0xc9, 0x0d, 0xde, 0x99, 0x48, 0x50, 0xe8, 0xbc, 0x40, 0xa1, 0x5b, - 0xe2, 0x37, 0xb1, 0x3a, 0x4d, 0xa6, 0xdc, 0x21, 0x45, 0xac, 0xe6, 0xf4, 0xa0, 0x2f, 0x5c, 0xf6, - 0x35, 0x99, 0x62, 0xe3, 0x60, 0xe1, 0xfb, 0x64, 0x69, 0xa6, 0x33, 0x2f, 0x06, 0xfc, 0x8e, 0x21, - 0xb7, 0x59, 0x0c, 0x95, 0x67, 0x72, 0xd7, 0x4a, 0x50, 0x84, 0x4d, 0xec, 0x5f, 0xbf, 0xfc, 0x73, - 0xe4, 0x89, 0xfd, 0x4d, 0xe6, 0x2d, 0xa3, 0x04, 0xc3, 0x62, 0x6e, 0xf9, 0xd6, 0xe0, 0x09, 0x86, - 0x51, 0xb1, 0x08, 0xbd, 0x69, 0x90, 0xa0, 0x61, 0xf2, 0x45, 0x49, 0x9c, 0xd0, 0xd0, 0xba, 0x13, - 0xfc, 0x70, 0x86, 0x98, 0x8a, 0x7c, 0x9a, 0x20, 0x08, 0xcd, 0x4f, 0x2b, 0xd7, 0xa0, 0x37, 0xfa, - 0x75, 0x8b, 0x3b, 0xd2, 0x6e, 0xc1, 0x5c, 0x12, 0xfa, 0x91, 0xb7, 0x74, 0x5b, 0xd5, 0x15, 0xeb, - 0xf5, 0x9a, 0x9e, 0xf0, 0xd0, 0x58, 0xef, 0xed, 0x11, 0xf0, 0x67, 0x4b, 0x94, 0x26, 0x76, 0x1a, - 0xef, 0xed, 0xdb, 0x36, 0x1a, 0x1d, 0xff, 0xff, 0xe2, 0xae, 0xb4, 0xb9, 0x6d, 0x23, 0x4d, 0x7f, - 0xdf, 0x5f, 0x41, 0x21, 0x89, 0x45, 0x44, 0x90, 0x4c, 0x52, 0x56, 0xc6, 0x01, 0x05, 0xb1, 0x1c, - 0x1f, 0x3b, 0xaa, 0xf1, 0x38, 0xda, 0xc8, 0x93, 0x8c, 0x4b, 0xa5, 0x5a, 0x93, 0x14, 0x28, 0xb1, - 0x0c, 0x01, 0x0c, 0x00, 0x1d, 0x0e, 0xc5, 0xff, 0xbe, 0xef, 0xd1, 0xc7, 0xdb, 0x00, 0x78, 0x28, - 0x9a, 0x99, 0xad, 0x4a, 0x2c, 0xa2, 0xd1, 0xdd, 0xe8, 0xbb, 0xfb, 0x3d, 0xfa, 0x79, 0x50, 0xd3, - 0x8b, 0x1d, 0xac, 0x78, 0xbf, 0x8c, 0xee, 0x1b, 0x26, 0x23, 0x19, 0x26, 0x7f, 0xa2, 0x44, 0x86, - 0x17, 0x42, 0x80, 0x6d, 0x71, 0x02, 0x9f, 0x6d, 0xac, 0x84, 0x4e, 0xe0, 0xcf, 0x1d, 0x2c, 0x65, - 0x01, 0xa2, 0xe6, 0x07, 0xe2, 0x81, 0x79, 0x2b, 0x04, 0x6f, 0xa7, 0x66, 0xe6, 0x08, 0xaa, 0xda, - 0x6a, 0x0d, 0x81, 0xbe, 0x29, 0x4c, 0x76, 0x62, 0xa6, 0x1a, 0xac, 0xfb, 0x78, 0x4f, 0xbf, 0x18, - 0xb4, 0x2d, 0x94, 0x10, 0xcc, 0x2b, 0x26, 0x35, 0x7d, 0xf6, 0xcc, 0x81, 0x4e, 0x29, 0x7c, 0x3f, - 0x14, 0x77, 0xfb, 0xf5, 0xd1, 0x8b, 0xa0, 0x2b, 0x07, 0xea, 0x6f, 0x58, 0xf6, 0x9d, 0x55, 0xa3, - 0x08, 0x52, 0x04, 0x7b, 0x1f, 0x5e, 0x9c, 0x12, 0x3e, 0x4f, 0x0a, 0xcb, 0xcb, 0x82, 0x1b, 0x96, - 0x68, 0x95, 0xa9, 0x59, 0x1f, 0x0d, 0xf1, 0xcd, 0x34, 0x9f, 0x3b, 0x3b, 0x87, 0x07, 0x0e, 0xb2, - 0x22, 0x8f, 0xab, 0xa0, 0x7b, 0x80, 0xba, 0xfb, 0x3b, 0xa6, 0xfd, 0x50, 0x1f, 0x43, 0x84, 0x73, - 0xfa, 0x96, 0x26, 0x08, 0xcd, 0xe3, 0xdf, 0x8b, 0xf7, 0xf1, 0xe5, 0x30, 0x89, 0x90, 0x63, 0x53, - 0x18, 0xf9, 0x75, 0x49, 0x35, 0x06, 0x39, 0x4d, 0x6a, 0x35, 0x28, 0xd9, 0x1e, 0x1d, 0xef, 0x15, - 0x37, 0xe3, 0x31, 0x0c, 0x0b, 0x1d, 0xda, 0xe9, 0x13, 0x35, 0x2c, 0x7a, 0xf9, 0x06, 0x55, 0xc9, - 0x54, 0xa9, 0x21, 0x63, 0xbc, 0x89, 0x4e, 0xcc, 0xb1, 0xf1, 0x5e, 0x9a, 0x60, 0x44, 0xa6, 0x79, - 0xa5, 0xa7, 0x8b, 0x9b, 0x5c, 0x91, 0xbd, 0xd2, 0x63, 0xc9, 0x51, 0xdf, 0x0d, 0x11, 0x75, 0x1d, - 0x03, 0x26, 0xf0, 0xcb, 0x32, 0xca, 0xc6, 0x7b, 0x37, 0x17, 0x33, 0xbc, 0x40, 0x96, 0x5e, 0x54, - 0x48, 0x5e, 0x41, 0x40, 0x49, 0x68, 0xc9, 0x9f, 0x15, 0x21, 0xfe, 0x46, 0x4e, 0x56, 0xb5, 0x3e, - 0x13, 0x49, 0x34, 0x17, 0xae, 0x2c, 0x4d, 0xa9, 0xca, 0xfc, 0x79, 0xb7, 0x13, 0x34, 0xe0, 0x39, - 0xa8, 0xc1, 0xd1, 0x81, 0x95, 0xa9, 0xa3, 0x08, 0xfb, 0x8c, 0x44, 0x18, 0x59, 0xaa, 0x5a, 0xc3, - 0x47, 0x5b, 0xf1, 0x18, 0x6b, 0x5b, 0x20, 0x07, 0xe9, 0x3b, 0x06, 0x6d, 0xd7, 0x21, 0x2d, 0x16, - 0xbd, 0x3e, 0x2b, 0xcf, 0x91, 0xff, 0xc4, 0xde, 0xd3, 0xa4, 0xc5, 0x1d, 0x95, 0x75, 0x5d, 0x46, - 0xe4, 0xa5, 0x18, 0x70, 0x32, 0x82, 0xe3, 0xd4, 0x21, 0xaf, 0xfc, 0x25, 0x2e, 0x95, 0x3d, 0x75, - 0x42, 0x72, 0x28, 0xd6, 0x48, 0x69, 0x39, 0x3e, 0x13, 0x19, 0x9f, 0xab, 0x72, 0x3f, 0x44, 0x5b, - 0x5b, 0xed, 0xee, 0xb3, 0xc4, 0x4a, 0xca, 0x14, 0xd2, 0x53, 0x21, 0x50, 0x13, 0x7a, 0x7e, 0xf1, - 0xcc, 0xc0, 0x43, 0xb4, 0xed, 0xc7, 0xcb, 0x6c, 0xb6, 0x2b, 0x9e, 0x86, 0x79, 0xe9, 0x7f, 0xef, - 0xbe, 0xfe, 0x34, 0x70, 0x1f, 0x2b, 0xd1, 0x3f, 0x85, 0x5d, 0x38, 0x83, 0xaa, 0x66, 0x52, 0x7f, - 0x0f, 0x87, 0x83, 0x61, 0xa8, 0x7e, 0x1b, 0x4b, 0x06, 0x26, 0x2a, 0xc8, 0xa2, 0x83, 0x8a, 0x3e, - 0x74, 0x44, 0x6b, 0xaa, 0xdf, 0x50, 0x54, 0xac, 0x56, 0xaf, 0x4a, 0xb5, 0x74, 0xad, 0x16, 0x38, - 0x82, 0x87, 0x7a, 0x47, 0x12, 0x56, 0xb2, 0x0f, 0x59, 0x4b, 0x77, 0xb9, 0x32, 0x8c, 0x59, 0x65, - 0x11, 0x3c, 0x12, 0x40, 0xf2, 0xa5, 0xd8, 0x7a, 0x9b, 0x5c, 0x5d, 0xf6, 0x60, 0xf0, 0xc0, 0x70, - 0x82, 0xee, 0x7f, 0x3b, 0x54, 0xe6, 0xb0, 0x15, 0x27, 0x0b, 0x8d, 0x3b, 0xd4, 0x24, 0xfc, 0x58, - 0x07, 0x91, 0x4c, 0x7d, 0x73, 0xb7, 0xdb, 0x8f, 0x8f, 0xd0, 0x5d, 0x64, 0x77, 0xd7, 0xcf, 0x1c, - 0x07, 0x8a, 0x68, 0x88, 0x1a, 0x0c, 0x08, 0x22, 0x22, 0x23, 0xc7, 0x81, 0xc2, 0xbe, 0xea, 0x56, - 0x5e, 0x8d, 0xec, 0xab, 0xde, 0x79, 0xd0, 0x36, 0xa3, 0xe1, 0x61, 0xab, 0x46, 0xde, 0x48, 0xa8, - 0x47, 0x32, 0xed, 0x9d, 0x4d, 0x8b, 0xcc, 0x47, 0x8a, 0x20, 0x33, 0x23, 0xe0, 0x6b, 0x72, 0x1d, - 0x36, 0x14, 0x1c, 0xc8, 0xbe, 0xac, 0x55, 0xb3, 0x90, 0x66, 0x5c, 0xe2, 0xa9, 0x0c, 0xfe, 0xd0, - 0x19, 0x58, 0xaa, 0x65, 0x5e, 0x99, 0x59, 0x48, 0xef, 0xfd, 0xa0, 0xae, 0xb5, 0x32, 0xef, 0x8b, - 0xfb, 0xa0, 0x59, 0x67, 0x65, 0x62, 0x4c, 0x9d, 0x18, 0xa8, 0xb1, 0xb2, 0x99, 0x77, 0x07, 0xf8, - 0x4f, 0xd8, 0x09, 0x2a, 0x6a, 0x2b, 0x1b, 0xa3, 0x87, 0x31, 0x7a, 0x95, 0x18, 0xfb, 0x32, 0xc6, - 0x3e, 0xc6, 0xd8, 0xd7, 0x31, 0x48, 0x06, 0xfb, 0xb9, 0x2b, 0x7d, 0xa8, 0xb7, 0x86, 0x7b, 0x59, - 0x57, 0xbe, 0xed, 0x55, 0xdf, 0xf6, 0xe4, 0xdb, 0xfd, 0xea, 0xdb, 0x7d, 0x98, 0xf2, 0xc4, 0x01, - 0x40, 0xf0, 0x7c, 0xea, 0x37, 0x6f, 0xa6, 0x53, 0xf4, 0xa4, 0xd3, 0x3e, 0x0d, 0xfa, 0x05, 0xe3, - 0xaa, 0x74, 0x10, 0x20, 0xc5, 0x5a, 0x7b, 0xaf, 0xd1, 0x4a, 0xd3, 0x9a, 0x18, 0x1c, 0x9f, 0x2d, - 0x07, 0x4d, 0xa5, 0x4b, 0x30, 0x2c, 0x08, 0xdf, 0x15, 0xa7, 0xd9, 0xcd, 0xe5, 0x55, 0xab, 0x98, - 0xc1, 0x41, 0x02, 0xb1, 0x91, 0x0b, 0xc4, 0xa4, 0x66, 0x70, 0xbe, 0x4a, 0x12, 0x42, 0x67, 0x51, - 0x98, 0xed, 0xf8, 0x05, 0x65, 0x1b, 0x77, 0xe2, 0x10, 0x4a, 0xcb, 0xdf, 0xa7, 0x4c, 0xf7, 0x3e, - 0xcd, 0x99, 0x11, 0xc6, 0x8d, 0xf2, 0x23, 0x46, 0x79, 0x25, 0x4a, 0xd6, 0xa2, 0x6a, 0xb4, 0x60, - 0xc0, 0xb5, 0xb2, 0x31, 0xac, 0xe2, 0x68, 0x96, 0x5f, 0x88, 0xb9, 0x49, 0x7b, 0x3b, 0x81, 0x04, - 0x51, 0xc4, 0x1d, 0x2f, 0x84, 0x87, 0x29, 0x99, 0x97, 0xf5, 0x44, 0x16, 0xa4, 0xdf, 0x43, 0x38, - 0x69, 0x24, 0x92, 0x13, 0x7c, 0xb8, 0x37, 0xb9, 0x0f, 0x2a, 0x0e, 0x6b, 0xee, 0xec, 0x76, 0xd8, - 0x5e, 0x6b, 0xf2, 0xa8, 0x32, 0x3a, 0x6e, 0xea, 0x36, 0xeb, 0x5a, 0x23, 0xab, 0xee, 0xb3, 0x41, - 0x61, 0x83, 0xc8, 0x6d, 0x03, 0xd9, 0x14, 0xce, 0xce, 0xc3, 0x42, 0x3a, 0xcd, 0x92, 0xe3, 0x6d, - 0xaa, 0x52, 0xb0, 0x33, 0x2b, 0xa2, 0x2e, 0x62, 0x3c, 0xfc, 0x2b, 0x9c, 0x66, 0x83, 0xa1, 0x89, - 0x77, 0xd8, 0xd3, 0x31, 0xbb, 0x2a, 0x66, 0xd7, 0x89, 0x99, 0xd9, 0x98, 0xfb, 0x3a, 0x66, 0x4f, - 0xc5, 0x74, 0x1d, 0x71, 0x8d, 0xb3, 0x31, 0xac, 0x37, 0x70, 0xdc, 0xee, 0x17, 0xe8, 0x97, 0xc6, - 0x83, 0x4f, 0xcc, 0x09, 0x12, 0x39, 0x72, 0x19, 0x42, 0x2c, 0x99, 0x18, 0xdc, 0xdf, 0x2a, 0xf1, - 0x40, 0xde, 0x8e, 0xe1, 0x78, 0xfd, 0x72, 0xd0, 0x0b, 0x0f, 0x40, 0x28, 0x4e, 0x74, 0x0b, 0x15, - 0xec, 0xdd, 0x9b, 0xc0, 0x0a, 0x3f, 0x68, 0x3b, 0xa1, 0x5b, 0x3a, 0x38, 0x17, 0x02, 0x0c, 0x06, - 0x84, 0x32, 0xa0, 0x43, 0xfc, 0x13, 0xdc, 0x4b, 0x30, 0x6a, 0x71, 0x71, 0x08, 0xbb, 0x32, 0x6c, - 0x6a, 0x96, 0x84, 0xd0, 0x63, 0x77, 0x48, 0x6f, 0xa7, 0x5d, 0xec, 0xc2, 0x46, 0x3a, 0x5d, 0x81, - 0xcb, 0x37, 0x5d, 0xa2, 0xd5, 0x81, 0xae, 0x37, 0x85, 0x3c, 0x50, 0x32, 0xdf, 0xe4, 0x3e, 0x9b, - 0x95, 0x8d, 0x2e, 0xe9, 0x78, 0x3a, 0x11, 0x2d, 0xc8, 0x0e, 0x7e, 0xfb, 0xe4, 0xd9, 0x77, 0xb0, - 0x13, 0x1f, 0x26, 0xc6, 0x75, 0x90, 0x1c, 0x9c, 0x93, 0x33, 0x08, 0x3c, 0x57, 0x60, 0x84, 0x98, - 0xe5, 0x4e, 0xbc, 0xee, 0x8e, 0x02, 0xc4, 0x52, 0xcd, 0x1c, 0x4b, 0x31, 0x0f, 0xda, 0xce, 0x64, - 0xe7, 0xfd, 0x4c, 0xfe, 0xf6, 0x5e, 0xc8, 0xcf, 0x70, 0x40, 0x1b, 0x15, 0x65, 0xde, 0xee, 0x04, - 0xdd, 0x1f, 0xa0, 0x9e, 0x4b, 0xbe, 0x25, 0xab, 0x6c, 0x1d, 0xea, 0xeb, 0x15, 0xa5, 0x78, 0xaa, - 0x96, 0x08, 0xfa, 0x89, 0x77, 0xda, 0x60, 0x61, 0x54, 0xcc, 0x47, 0x2e, 0x3e, 0x6d, 0xcd, 0x05, - 0x43, 0x8c, 0x95, 0x02, 0x81, 0xfc, 0x19, 0xdd, 0xce, 0xc7, 0x7b, 0x01, 0x07, 0x7d, 0xed, 0x28, - 0x5b, 0xd1, 0x65, 0x7c, 0xc3, 0xfa, 0xb2, 0x96, 0xd4, 0x63, 0xb1, 0xf2, 0xcb, 0x51, 0x54, 0x81, - 0x54, 0x83, 0xbc, 0xb7, 0x8b, 0xe0, 0x2f, 0x07, 0x4a, 0x17, 0x36, 0x46, 0x9f, 0xa8, 0x19, 0xfe, - 0x83, 0x68, 0x5a, 0x37, 0x11, 0x6e, 0x46, 0x95, 0x8e, 0x69, 0xd8, 0x7a, 0x1d, 0x5f, 0x4c, 0xb6, - 0xf1, 0x99, 0x58, 0xd0, 0x62, 0x7d, 0x72, 0x86, 0xd2, 0x73, 0x9d, 0xbb, 0x11, 0xa7, 0x32, 0x2d, - 0x11, 0x93, 0xe5, 0x7d, 0x37, 0x71, 0x74, 0x88, 0x50, 0x1e, 0x1a, 0xec, 0x9c, 0x12, 0xbf, 0x72, - 0x4b, 0xbf, 0x6d, 0x57, 0xf5, 0x60, 0x0c, 0x89, 0xee, 0xbd, 0x0d, 0x6e, 0x39, 0x36, 0xde, 0x9b, - 0xd9, 0x89, 0x66, 0x3b, 0xb7, 0x3b, 0x20, 0xad, 0xee, 0xd0, 0x22, 0x32, 0x63, 0x36, 0x14, 0xee, - 0xb5, 0x89, 0x3b, 0x51, 0xe2, 0x81, 0xf7, 0xee, 0x9e, 0xa6, 0x07, 0xfc, 0xfa, 0xe9, 0x12, 0x27, - 0x04, 0x48, 0x7e, 0x70, 0xb8, 0xbc, 0xd9, 0x42, 0x7c, 0x6c, 0xb1, 0x55, 0xc7, 0x30, 0xbe, 0xd0, - 0x69, 0x0a, 0x33, 0x29, 0x07, 0x4e, 0x55, 0xa4, 0xe5, 0xb6, 0x52, 0x8f, 0x6e, 0x20, 0x3f, 0xe8, - 0xc1, 0x3c, 0x8b, 0x77, 0xba, 0x08, 0x72, 0xf9, 0x98, 0xa6, 0x68, 0xca, 0x22, 0x58, 0x5e, 0x46, - 0x7f, 0xa1, 0x3b, 0xe4, 0x7d, 0x0d, 0xc1, 0x75, 0x4c, 0x3d, 0x7f, 0x65, 0x54, 0xec, 0x48, 0xb0, - 0x73, 0x6d, 0x15, 0xee, 0x6c, 0x9c, 0x34, 0x26, 0x28, 0x64, 0x74, 0xca, 0x2a, 0x97, 0x0e, 0x32, - 0xba, 0x73, 0xc0, 0x26, 0x5c, 0xfc, 0xed, 0xb3, 0x03, 0xdc, 0x55, 0x45, 0x1b, 0xe2, 0x4d, 0x53, - 0xf4, 0xe5, 0xd9, 0x65, 0x35, 0x48, 0x20, 0x73, 0xc1, 0x54, 0x56, 0xf5, 0x14, 0x79, 0xbe, 0xb6, - 0x7f, 0x8e, 0xa2, 0xda, 0xab, 0x3e, 0xd9, 0x8f, 0xe1, 0xe8, 0x0b, 0x5d, 0xce, 0x3f, 0xa7, 0x29, - 0xfa, 0x5d, 0x07, 0x66, 0x0e, 0x51, 0x12, 0x35, 0x2c, 0x46, 0xd8, 0xb6, 0xbe, 0xdf, 0xc7, 0xb0, - 0x48, 0xbc, 0x80, 0xad, 0x16, 0xd2, 0x8f, 0xfc, 0x85, 0x53, 0x99, 0x2d, 0x55, 0x9b, 0xc1, 0xb5, - 0x68, 0x20, 0x0c, 0x08, 0x65, 0xc0, 0x76, 0x0d, 0x1f, 0x2d, 0x4e, 0xd4, 0x55, 0x52, 0x89, 0xfc, - 0x40, 0xe4, 0xcc, 0xea, 0xe2, 0xdf, 0x68, 0x9f, 0xee, 0xdd, 0xb5, 0x48, 0x14, 0x6d, 0x29, 0xfb, - 0xc4, 0x36, 0x0f, 0x9d, 0x7f, 0x47, 0xd6, 0x74, 0xd6, 0xc0, 0x5b, 0x78, 0xdb, 0x41, 0xad, 0x1b, - 0x58, 0xfd, 0x84, 0xad, 0x2b, 0x64, 0xd8, 0x6e, 0x5f, 0x88, 0xb0, 0xf6, 0x0a, 0x95, 0x60, 0x63, - 0x78, 0x9c, 0x90, 0xfd, 0x15, 0x84, 0xec, 0x2d, 0x18, 0x8a, 0xe6, 0x13, 0xfe, 0x5c, 0x28, 0x26, - 0x1e, 0x1e, 0xa4, 0xce, 0xa2, 0x46, 0xfd, 0x74, 0x07, 0x3b, 0xdb, 0x1d, 0x2a, 0xdd, 0x41, 0xc0, - 0x6f, 0x1b, 0x49, 0x3c, 0xa8, 0x42, 0xd9, 0x2f, 0x82, 0xfd, 0x78, 0xdf, 0xd7, 0x84, 0xe3, 0x1c, - 0x25, 0x52, 0x69, 0x51, 0x0e, 0xff, 0x4a, 0x82, 0x78, 0x14, 0x45, 0x46, 0x5d, 0xb3, 0xf7, 0xf3, - 0xc9, 0xdb, 0x0f, 0x70, 0x84, 0x80, 0x99, 0x3d, 0xcb, 0x0a, 0xbc, 0x56, 0x8f, 0xae, 0x80, 0x24, - 0x93, 0xa3, 0x87, 0xd6, 0x2d, 0xf2, 0x29, 0x82, 0xc0, 0x0b, 0x65, 0x91, 0xfc, 0x4e, 0xa8, 0x31, - 0xd9, 0x4b, 0xb3, 0xbb, 0xb6, 0xff, 0x1c, 0xc1, 0x59, 0x95, 0xf8, 0x68, 0x64, 0xe1, 0x3e, 0x6d, - 0x77, 0xb0, 0xa0, 0x4f, 0x2f, 0x60, 0x03, 0xe5, 0x1f, 0x9a, 0xc3, 0x50, 0x4a, 0xcf, 0x9a, 0x55, - 0xd5, 0x8c, 0xd3, 0x6e, 0xe7, 0x7b, 0xed, 0x51, 0xd3, 0x1f, 0x6e, 0x81, 0x30, 0x4d, 0xee, 0xfa, - 0x36, 0x41, 0x34, 0xf4, 0x17, 0x6d, 0xa5, 0x09, 0xb2, 0xb8, 0xd0, 0xb1, 0x60, 0x73, 0xd9, 0x7f, - 0xd1, 0x21, 0xb9, 0x16, 0xc9, 0xd3, 0x4a, 0xb3, 0xe3, 0x22, 0xbf, 0x93, 0x16, 0xfe, 0x60, 0x50, - 0x5b, 0x18, 0x0e, 0x23, 0x11, 0x22, 0x1a, 0x87, 0x4e, 0xb8, 0x28, 0x06, 0x77, 0x05, 0x69, 0x03, - 0xda, 0xd0, 0x2f, 0xdb, 0x73, 0xef, 0xd6, 0x0b, 0x11, 0x8a, 0x74, 0xb1, 0xed, 0x87, 0x4d, 0xde, - 0x94, 0xc5, 0x54, 0xb8, 0x52, 0xa6, 0x01, 0xf2, 0x94, 0xc2, 0xd6, 0x14, 0xce, 0x91, 0x52, 0x0c, - 0xbd, 0x91, 0x77, 0xd1, 0xe7, 0x14, 0x5a, 0x16, 0xf9, 0x18, 0xa7, 0xac, 0x46, 0xa3, 0x84, 0xfd, - 0x16, 0x2a, 0x27, 0x51, 0xcd, 0xf0, 0x8f, 0x8f, 0xef, 0x76, 0x5f, 0x7a, 0x8b, 0x60, 0x94, 0x5d, - 0x7c, 0x0d, 0x4b, 0xe9, 0x88, 0xf9, 0x08, 0xad, 0xd6, 0x23, 0xd8, 0x0d, 0xb0, 0x7f, 0x36, 0xd0, - 0x81, 0xe1, 0x60, 0x7a, 0xa4, 0x1a, 0xec, 0xd2, 0x47, 0xc6, 0x7b, 0x65, 0x3d, 0xd1, 0x4a, 0x1d, - 0x02, 0xcd, 0x27, 0xad, 0x98, 0x45, 0xc9, 0x24, 0x7d, 0x97, 0x55, 0x90, 0x95, 0x0d, 0x24, 0x19, - 0xe5, 0x12, 0xa5, 0x59, 0x89, 0x27, 0x76, 0xa3, 0x54, 0x52, 0xca, 0x32, 0xf5, 0x37, 0x8c, 0x15, - 0xbe, 0x38, 0x5d, 0xf9, 0xe2, 0x0b, 0x38, 0x8c, 0x1b, 0x8e, 0x9b, 0x40, 0x03, 0xc5, 0xa2, 0x42, - 0xf6, 0x57, 0xb3, 0x8c, 0x35, 0x59, 0xeb, 0x67, 0xcc, 0xc3, 0x83, 0xd6, 0xb8, 0x22, 0x09, 0x63, - 0xef, 0xc0, 0xaf, 0x68, 0xbf, 0x18, 0x6e, 0x5c, 0x08, 0x1f, 0x58, 0x10, 0x58, 0x47, 0x8a, 0x19, - 0x2c, 0x61, 0xb1, 0xa7, 0xf8, 0x20, 0x56, 0x39, 0xbc, 0x56, 0xfd, 0x26, 0xc9, 0xbf, 0xc4, 0xd8, - 0x00, 0xe7, 0x59, 0x1a, 0x92, 0x86, 0x0c, 0x21, 0xfe, 0xd3, 0x05, 0x69, 0xcb, 0xe4, 0x10, 0xb7, - 0x9a, 0x0e, 0x52, 0xb7, 0x3b, 0x8f, 0x45, 0x7c, 0xc9, 0xa2, 0x33, 0x2b, 0xe3, 0x51, 0xeb, 0x44, - 0x7a, 0x09, 0xe4, 0xac, 0x60, 0xad, 0x49, 0x87, 0xef, 0x23, 0x56, 0x53, 0x05, 0x93, 0xfc, 0x8f, - 0x70, 0xab, 0x4b, 0x54, 0x93, 0x62, 0x41, 0xac, 0xb9, 0x78, 0x7e, 0x48, 0x1c, 0x66, 0xbd, 0x36, - 0xea, 0xe8, 0xb6, 0xe0, 0x1f, 0x7f, 0xf0, 0x19, 0xdb, 0x1f, 0x66, 0x3c, 0xdf, 0xe0, 0x6f, 0x7d, - 0x42, 0xfe, 0x21, 0x66, 0xda, 0x23, 0xfe, 0x1f, 0x92, 0xc2, 0xbe, 0x9d, 0x93, 0xe2, 0xee, 0xa8, - 0x23, 0x40, 0x7d, 0x17, 0x14, 0x8a, 0x0c, 0x8a, 0x10, 0x88, 0x96, 0x12, 0x98, 0x4c, 0x13, 0x38, - 0x33, 0xaa, 0x17, 0x6f, 0x6e, 0xf2, 0x05, 0x62, 0x2c, 0x90, 0x6f, 0xed, 0xe7, 0xd0, 0xe3, 0xaf, - 0x5c, 0x30, 0x52, 0x00, 0x02, 0xdd, 0xa2, 0xeb, 0xb5, 0x73, 0x0f, 0x36, 0x4d, 0x42, 0x6c, 0x42, - 0x28, 0xd4, 0x62, 0x51, 0x2b, 0x3f, 0xba, 0xdc, 0xb8, 0x35, 0x30, 0x9a, 0xc2, 0x2d, 0xfd, 0xcb, - 0x87, 0x03, 0x32, 0x39, 0x79, 0x53, 0xf1, 0x89, 0xbf, 0x14, 0x39, 0x88, 0xd2, 0xb8, 0xbc, 0xcb, - 0xf2, 0x2f, 0x5c, 0x1d, 0x58, 0x20, 0x5b, 0x18, 0x1f, 0xe5, 0x61, 0x62, 0x35, 0x82, 0x6d, 0x06, - 0x99, 0xd0, 0x3e, 0xe2, 0x6f, 0xae, 0x36, 0xf1, 0x1c, 0xad, 0xcf, 0xa7, 0x95, 0x64, 0xe9, 0x25, - 0x44, 0xc2, 0xdc, 0xf6, 0x3c, 0xed, 0x7b, 0x32, 0x47, 0xad, 0x65, 0x38, 0xc7, 0x85, 0x2a, 0xd4, - 0xe5, 0x5a, 0x2c, 0xfa, 0x02, 0x5c, 0x9d, 0x3a, 0x99, 0x74, 0x9b, 0x39, 0x42, 0xad, 0x9b, 0xc2, - 0xaf, 0xe9, 0x40, 0xc4, 0x76, 0xbf, 0x9d, 0xc6, 0x77, 0x68, 0x4f, 0x50, 0x13, 0x90, 0x8d, 0x91, - 0xf4, 0x96, 0xe6, 0x20, 0x4e, 0x4d, 0xf2, 0xe1, 0x76, 0x5e, 0x29, 0x9f, 0x73, 0x78, 0xf7, 0xfe, - 0x16, 0x87, 0xe6, 0xfb, 0x5b, 0x65, 0x74, 0x58, 0x3f, 0xa3, 0x34, 0x13, 0x46, 0xa2, 0xbe, 0x0d, - 0x7b, 0x10, 0xe6, 0x1b, 0x33, 0x5f, 0x84, 0xd7, 0x7b, 0xe3, 0x51, 0xae, 0x5a, 0xe3, 0xf3, 0x25, - 0xb9, 0x25, 0xa0, 0x72, 0x61, 0xa3, 0x3a, 0x9c, 0x4e, 0x50, 0xda, 0x6e, 0xd9, 0x9b, 0x2e, 0xc8, - 0x9f, 0xed, 0x0d, 0x47, 0x30, 0xe1, 0xc3, 0x51, 0x32, 0x4c, 0xe9, 0xda, 0x08, 0x47, 0x42, 0xf7, - 0x7e, 0x76, 0x89, 0x55, 0xf9, 0x54, 0x0d, 0x6f, 0xf8, 0xad, 0x8d, 0xec, 0x6b, 0x9c, 0x4f, 0x59, - 0x35, 0x74, 0x71, 0xfa, 0xba, 0xc3, 0x08, 0x46, 0x84, 0x52, 0xd1, 0x6b, 0xb3, 0x8b, 0x78, 0x3b, - 0x25, 0x1c, 0x58, 0x07, 0x1e, 0x6c, 0x3b, 0x04, 0xe7, 0xe0, 0x87, 0x4e, 0xa9, 0x1d, 0x77, 0xb0, - 0xdc, 0x11, 0xa4, 0xb4, 0xe3, 0xb3, 0x26, 0x20, 0x0d, 0xb6, 0xb8, 0x91, 0x62, 0x6a, 0x6e, 0xda, - 0xc2, 0x60, 0xff, 0x4a, 0x60, 0x03, 0x23, 0x4c, 0x6d, 0xd8, 0xc1, 0x82, 0x62, 0xfa, 0x47, 0xdc, - 0xae, 0x75, 0x39, 0x77, 0xea, 0xdc, 0x74, 0x6a, 0xbd, 0x3f, 0x9d, 0x8e, 0xb6, 0x23, 0x04, 0x51, - 0xf1, 0x31, 0x31, 0x76, 0xf7, 0x31, 0xdf, 0x72, 0x74, 0x48, 0x6a, 0x15, 0xe9, 0x3b, 0xbc, 0x69, - 0x6c, 0x65, 0x4c, 0xb2, 0x51, 0x3b, 0xcb, 0x46, 0x38, 0xae, 0xf8, 0xd9, 0x71, 0x26, 0xd6, 0x1d, - 0xae, 0xb6, 0x20, 0xa9, 0xab, 0x10, 0x7a, 0x30, 0x57, 0xc6, 0xf1, 0xca, 0xba, 0x51, 0x5a, 0xac, - 0x1c, 0xfd, 0xf0, 0x99, 0x33, 0x58, 0xb7, 0x0b, 0x73, 0x31, 0x38, 0x6c, 0x04, 0xb2, 0x72, 0x14, - 0xed, 0xd1, 0xb5, 0xd3, 0xec, 0x06, 0xb2, 0x86, 0x2a, 0xa7, 0xa6, 0x2a, 0xe2, 0x46, 0x84, 0x70, - 0x17, 0x7a, 0x6b, 0xe8, 0x04, 0xb8, 0x85, 0x15, 0x0e, 0xf2, 0x04, 0x69, 0x54, 0x51, 0x82, 0xc0, - 0xd9, 0x98, 0x36, 0xf9, 0xa8, 0x16, 0xbb, 0x5d, 0xeb, 0xbc, 0x1e, 0x74, 0x3b, 0x0d, 0xde, 0xcb, - 0x4b, 0x52, 0x15, 0x32, 0x15, 0x3a, 0x38, 0x23, 0x10, 0x6f, 0x9b, 0xcb, 0x71, 0x7d, 0x07, 0x52, - 0x5c, 0x2a, 0xb0, 0x14, 0xf0, 0xf8, 0x8c, 0x3e, 0x2b, 0xc6, 0x3d, 0xbc, 0xf6, 0x95, 0x18, 0x31, - 0x8b, 0x16, 0x12, 0x49, 0x01, 0x9b, 0x76, 0x9c, 0x67, 0x49, 0x02, 0xdf, 0xce, 0x7e, 0xc5, 0x8e, - 0x99, 0x8f, 0xe2, 0xab, 0xe1, 0xed, 0x34, 0xcb, 0x43, 0x43, 0x96, 0x4b, 0x33, 0x0d, 0x1e, 0x89, - 0x44, 0x78, 0xa1, 0x9d, 0x4d, 0x9a, 0xb1, 0x2c, 0x0d, 0x50, 0xe5, 0x51, 0x1d, 0x02, 0xee, 0xa8, - 0x01, 0xf0, 0xcd, 0x40, 0xc8, 0x14, 0x6b, 0x31, 0xde, 0xf6, 0x7b, 0x16, 0x37, 0xc1, 0x81, 0x6f, - 0xfb, 0x00, 0x67, 0xac, 0x42, 0xe1, 0x30, 0x62, 0x46, 0x35, 0x04, 0x37, 0x8b, 0xdd, 0x86, 0x80, - 0x4b, 0x84, 0xcf, 0x1f, 0x79, 0xfb, 0x2f, 0xbf, 0x63, 0x4a, 0x9b, 0xbf, 0xaf, 0x82, 0x71, 0x6b, - 0x4e, 0xf0, 0x2f, 0x45, 0x74, 0xdb, 0x14, 0x53, 0x0b, 0xab, 0xb6, 0x0e, 0xb2, 0x0d, 0x0b, 0x77, - 0x7d, 0xb7, 0xdb, 0x0d, 0xed, 0x1d, 0x01, 0x89, 0x8b, 0x16, 0x2f, 0x03, 0x43, 0x2a, 0x96, 0x83, - 0x21, 0x15, 0x8b, 0x0d, 0xa1, 0xb5, 0x30, 0xea, 0x3a, 0xc4, 0x36, 0x07, 0xa5, 0xad, 0x7c, 0x7a, - 0x69, 0x1e, 0x83, 0xcb, 0x54, 0x34, 0x52, 0x1d, 0x8c, 0xca, 0xab, 0x1a, 0x30, 0x53, 0xb1, 0x01, - 0x30, 0x53, 0x99, 0x53, 0x02, 0xbe, 0x05, 0xa2, 0xb3, 0xb4, 0x48, 0xd9, 0xa4, 0x4a, 0xc1, 0x3b, - 0x96, 0x0d, 0xc8, 0x6b, 0xdf, 0xce, 0xd7, 0x02, 0xaf, 0x2d, 0x9a, 0xbf, 0xf4, 0x66, 0xcd, 0x97, - 0xd6, 0x8d, 0x9e, 0x4f, 0x6b, 0xba, 0x07, 0xf1, 0xd8, 0x6c, 0x0f, 0x75, 0xfe, 0xdd, 0x83, 0x65, - 0x7d, 0x71, 0xe4, 0x70, 0xa1, 0xb1, 0x7d, 0x15, 0x76, 0x9f, 0x36, 0x6a, 0x24, 0xaa, 0x96, 0x03, - 0xa9, 0xe5, 0x14, 0x8d, 0xf0, 0xb4, 0xbe, 0x9d, 0x9b, 0x59, 0x14, 0x2f, 0xe8, 0x5e, 0x83, 0xba, - 0xd7, 0x2a, 0x92, 0x8d, 0xbd, 0x65, 0x83, 0x70, 0xe6, 0x30, 0x73, 0x18, 0xfa, 0x78, 0xef, 0xe8, - 0x35, 0xfa, 0x61, 0x24, 0x8d, 0xa0, 0x48, 0x1a, 0x2a, 0xb8, 0xb2, 0x44, 0x0b, 0x7a, 0x4b, 0x69, - 0xfb, 0xd7, 0x79, 0xc6, 0x64, 0xf9, 0x5f, 0x9a, 0xa6, 0xb6, 0x50, 0xeb, 0x12, 0x16, 0xc8, 0xb7, - 0x0a, 0xa5, 0x84, 0x65, 0x96, 0x2f, 0x33, 0x57, 0xa8, 0x57, 0x3b, 0xfd, 0x3f, 0x0f, 0x24, 0x4c, - 0xa0, 0x45, 0x35, 0x10, 0x61, 0x34, 0xc2, 0x32, 0x28, 0xfe, 0x93, 0x10, 0x83, 0xa9, 0xdc, 0x9e, - 0xa0, 0x80, 0x35, 0xfb, 0x34, 0xd2, 0xb7, 0xae, 0x06, 0xa5, 0xea, 0xbe, 0x1c, 0xd2, 0x9c, 0x7e, - 0x75, 0x71, 0xa1, 0x37, 0x8d, 0x7a, 0xaf, 0x2e, 0xc5, 0xee, 0x6d, 0x02, 0xe9, 0x5d, 0x86, 0xd0, - 0xfb, 0x44, 0x34, 0xde, 0xb7, 0xfb, 0x2f, 0x7e, 0xaa, 0xf1, 0x16, 0xfc, 0x49, 0x70, 0xdd, 0x04, - 0x11, 0x68, 0x9f, 0x88, 0xab, 0x4b, 0x79, 0x3c, 0x11, 0x52, 0x97, 0xf2, 0x78, 0x22, 0x9a, 0x2e, - 0xe5, 0xb1, 0x0e, 0x48, 0x57, 0x4d, 0x24, 0xf7, 0x24, 0x77, 0x02, 0x43, 0x30, 0x31, 0x9e, 0x32, - 0xfa, 0x6a, 0x76, 0xbf, 0x89, 0x36, 0x30, 0x5d, 0xc2, 0x18, 0x28, 0x49, 0x01, 0x5b, 0x46, 0xc7, - 0x46, 0xae, 0xcd, 0xe9, 0x80, 0xff, 0x84, 0x96, 0x34, 0x1b, 0xbd, 0xa2, 0xc9, 0xd2, 0x96, 0x48, - 0xe7, 0xb3, 0xca, 0xe3, 0x1e, 0x62, 0x3a, 0xb5, 0x8b, 0x26, 0x44, 0x27, 0x4c, 0x4f, 0xa0, 0x02, - 0xf8, 0x83, 0x2c, 0x04, 0x2e, 0xfc, 0x38, 0xc2, 0x25, 0x58, 0xf0, 0x26, 0x6b, 0x6b, 0x95, 0x8b, - 0xc4, 0x04, 0x0a, 0x73, 0x75, 0x92, 0xbc, 0xad, 0x7a, 0xb7, 0x27, 0xb1, 0xb6, 0x96, 0x94, 0x96, - 0xd4, 0xb2, 0x88, 0x1c, 0x08, 0xeb, 0xc9, 0x34, 0x2f, 0x60, 0xf9, 0xf6, 0x8e, 0x34, 0xeb, 0x5f, - 0x4b, 0x35, 0x07, 0x37, 0xef, 0x36, 0xf9, 0xdb, 0xa4, 0x87, 0xb3, 0xc4, 0x90, 0x76, 0x6b, 0xdf, - 0xc7, 0x7e, 0xba, 0xb3, 0xe3, 0x43, 0x9d, 0xb8, 0xd9, 0x61, 0x19, 0xce, 0xbf, 0x42, 0xc3, 0x23, - 0xe5, 0xe2, 0x8e, 0xfb, 0x89, 0xab, 0xfc, 0x0f, 0x0d, 0x5f, 0xb2, 0x1d, 0x94, 0xf2, 0xc6, 0xb5, - 0x52, 0x7c, 0x96, 0x4b, 0x6f, 0x18, 0xd3, 0x22, 0x9b, 0xec, 0x22, 0xca, 0x9e, 0xdf, 0x4f, 0x8c, - 0x8d, 0x15, 0x2f, 0x5b, 0x92, 0xe6, 0xbd, 0x41, 0x0f, 0xad, 0xb9, 0xaa, 0x2c, 0xa5, 0x4a, 0x9b, - 0x98, 0xfa, 0xfc, 0x15, 0x74, 0x34, 0x94, 0xbd, 0x24, 0x86, 0x69, 0x0d, 0xfd, 0xd4, 0x58, 0x48, - 0xa0, 0xaf, 0xf0, 0x4e, 0x98, 0x25, 0x7b, 0x11, 0x2f, 0x7c, 0x64, 0x4a, 0x53, 0x4e, 0x09, 0xce, - 0x8b, 0x50, 0xb6, 0xd8, 0x99, 0x7d, 0x45, 0x86, 0x87, 0x73, 0x49, 0x1d, 0xc3, 0xfa, 0x5a, 0xa9, - 0xb1, 0x82, 0xb5, 0xf9, 0x24, 0x61, 0x07, 0x4e, 0xa7, 0xdd, 0xd1, 0x3a, 0x3c, 0x8e, 0x41, 0x9e, - 0xef, 0x06, 0x9d, 0x00, 0x2f, 0x83, 0x9b, 0x97, 0x17, 0x37, 0xb9, 0xfb, 0xd6, 0x79, 0x75, 0x56, - 0x9e, 0xcb, 0xc8, 0x56, 0x1f, 0xbc, 0x2c, 0x8d, 0x8d, 0x41, 0x49, 0x9d, 0x11, 0x26, 0x7c, 0x71, - 0xe3, 0xa4, 0xb1, 0x98, 0xd6, 0x12, 0xde, 0x6e, 0x2c, 0x7e, 0xd0, 0x5d, 0x56, 0x74, 0xf7, 0x4d, - 0x43, 0x39, 0x31, 0x82, 0x53, 0x1a, 0x89, 0x27, 0x96, 0xc4, 0x27, 0x05, 0x83, 0x7d, 0xb8, 0x05, - 0x42, 0x7c, 0x30, 0xd3, 0xde, 0x45, 0xed, 0x5e, 0x35, 0xa4, 0x7b, 0x73, 0x93, 0xeb, 0x84, 0x45, - 0x4d, 0xef, 0xde, 0xae, 0xb6, 0xa5, 0xd4, 0xe4, 0x77, 0x3b, 0xdf, 0x17, 0xa6, 0x07, 0x65, 0x96, - 0x1f, 0x37, 0xcb, 0xd1, 0x69, 0xe9, 0x4d, 0x32, 0xfe, 0xc5, 0x4e, 0x72, 0x93, 0x4b, 0x1f, 0x1d, - 0x90, 0xf8, 0x6a, 0x5e, 0x82, 0x02, 0x40, 0x5e, 0x5e, 0x0a, 0xd0, 0xc1, 0x40, 0xbe, 0x99, 0x39, - 0xaf, 0x06, 0x6d, 0x34, 0x0c, 0x22, 0x12, 0x25, 0x88, 0x9b, 0x6a, 0x8d, 0xc4, 0xf5, 0xd0, 0x49, - 0x93, 0x75, 0x3f, 0xfb, 0xcd, 0x33, 0x2d, 0xb4, 0xc9, 0x5d, 0xe1, 0x56, 0x7f, 0xcc, 0x5e, 0xec, - 0xa4, 0x5c, 0x1b, 0x63, 0xc1, 0xe4, 0x7b, 0x9b, 0x5e, 0xd8, 0x98, 0x6b, 0xbe, 0xcc, 0x2a, 0xa1, - 0x8a, 0xeb, 0xee, 0x89, 0x8b, 0xc4, 0xa1, 0x56, 0x3c, 0x64, 0x47, 0x8a, 0x6d, 0x6b, 0xa3, 0x56, - 0x76, 0x56, 0x84, 0xe8, 0x85, 0x05, 0xfd, 0x08, 0x7f, 0x3b, 0x08, 0x6a, 0x65, 0xda, 0x3f, 0x3c, - 0x2b, 0xf3, 0xf3, 0x80, 0xab, 0x13, 0x76, 0x82, 0x3c, 0x44, 0xbd, 0x6e, 0x7a, 0x11, 0x76, 0x8c, - 0x34, 0x6c, 0x7b, 0x8d, 0x63, 0x0d, 0xaa, 0x01, 0x70, 0x9a, 0x2a, 0x04, 0x75, 0x09, 0x8c, 0x02, - 0x16, 0xc7, 0xd4, 0x9e, 0x27, 0x88, 0xe8, 0xbb, 0x1d, 0xe4, 0xa1, 0xd7, 0x1b, 0xd9, 0x2a, 0x4a, - 0x96, 0xd3, 0xab, 0x9b, 0xc9, 0x24, 0x89, 0x89, 0xf0, 0x74, 0xe9, 0x59, 0xcc, 0x76, 0xbb, 0x3c, - 0x8f, 0xe1, 0x60, 0x61, 0x5a, 0x57, 0xd8, 0x5e, 0x44, 0x59, 0x1f, 0x1e, 0x52, 0x74, 0x7e, 0x77, - 0xc8, 0x1d, 0x30, 0xff, 0xd5, 0xa7, 0x35, 0x24, 0x01, 0xe3, 0xf3, 0x1a, 0xfc, 0x5a, 0x4d, 0x74, - 0x43, 0xd0, 0xa6, 0xb8, 0xd0, 0x4d, 0xa6, 0xe9, 0xb4, 0x8c, 0x93, 0xaf, 0x1b, 0x95, 0x7e, 0xb6, - 0xaa, 0xf8, 0x29, 0xea, 0xb3, 0xa1, 0xa8, 0xba, 0xd0, 0x8f, 0x2e, 0xb1, 0xed, 0x14, 0x1e, 0x59, - 0xa6, 0x57, 0x34, 0xb4, 0x94, 0xfa, 0x86, 0xeb, 0x52, 0xef, 0xe9, 0xa4, 0x56, 0x14, 0x50, 0xd5, - 0x73, 0xea, 0xa3, 0x65, 0x1b, 0x59, 0x1b, 0x21, 0xc1, 0x88, 0x9a, 0xd0, 0xc5, 0xff, 0xde, 0x5f, - 0x48, 0x0a, 0xea, 0xa8, 0x53, 0x00, 0x7f, 0x39, 0x05, 0xa9, 0xe7, 0xa8, 0x85, 0x96, 0xc2, 0xc2, - 0x30, 0xca, 0xba, 0x8c, 0x29, 0xde, 0x11, 0x4c, 0x14, 0xe5, 0x14, 0x16, 0x22, 0x02, 0x4b, 0x2d, - 0xc6, 0x32, 0x4e, 0x15, 0x38, 0x08, 0x88, 0xb2, 0xf1, 0x8c, 0x5b, 0xd2, 0xd4, 0x74, 0xcd, 0x03, - 0xca, 0x15, 0xc9, 0x21, 0x83, 0xd7, 0x65, 0x9d, 0x27, 0x98, 0x15, 0xf8, 0xf5, 0x2a, 0x05, 0xcb, - 0xd1, 0x07, 0x68, 0x35, 0x73, 0x5a, 0xa9, 0x45, 0x40, 0xe4, 0x66, 0x68, 0x3f, 0x38, 0x60, 0xe7, - 0xda, 0xb9, 0x4d, 0x44, 0x06, 0x59, 0xd0, 0x1c, 0xe0, 0x56, 0x7e, 0x9a, 0x2c, 0x3c, 0xd8, 0xb9, - 0x0d, 0x14, 0x2c, 0x9a, 0x86, 0xb7, 0xd6, 0x6d, 0x1b, 0x48, 0x70, 0x25, 0x94, 0x0c, 0x36, 0x34, - 0x6c, 0x88, 0xa0, 0xa5, 0x45, 0x98, 0x8d, 0xe8, 0x8f, 0x3f, 0x42, 0xca, 0x8a, 0xb0, 0xf7, 0x79, - 0xa1, 0x31, 0xbe, 0x8a, 0x35, 0xa4, 0x4b, 0xd5, 0x81, 0x6c, 0xd1, 0x96, 0xe0, 0xcd, 0x31, 0x63, - 0x12, 0xb6, 0x46, 0x04, 0x7c, 0x95, 0xc6, 0x45, 0x41, 0x38, 0x36, 0x6a, 0x7c, 0xaf, 0x9c, 0x55, - 0x58, 0x8f, 0xe9, 0x88, 0x26, 0x95, 0x9a, 0x35, 0xff, 0xca, 0x59, 0xbe, 0xb2, 0xd4, 0xa7, 0xe8, - 0xbd, 0xa8, 0xd5, 0x75, 0x23, 0x34, 0x73, 0x3e, 0xae, 0xd8, 0xc5, 0xff, 0x4f, 0xb1, 0x5f, 0xf3, - 0xf7, 0x74, 0xc9, 0xd1, 0xe0, 0xc4, 0x6b, 0xd7, 0x23, 0x0a, 0x0e, 0x9f, 0xf1, 0x1e, 0x55, 0xe0, - 0xcf, 0x15, 0xd4, 0x3a, 0x63, 0x35, 0x54, 0x28, 0xb6, 0xce, 0xb3, 0x00, 0xb3, 0x2d, 0x2a, 0x54, - 0x43, 0xc8, 0xbb, 0x04, 0x15, 0x74, 0xc1, 0x6d, 0x1f, 0x43, 0xb9, 0x44, 0x15, 0x48, 0xae, 0x67, - 0x75, 0x08, 0xdb, 0x06, 0xe4, 0xda, 0xcf, 0x55, 0xe4, 0x5a, 0xa7, 0x98, 0xe4, 0x67, 0x5f, 0x2c, - 0x07, 0xb0, 0x85, 0x2f, 0xa1, 0x77, 0xcc, 0x4c, 0x4f, 0x6b, 0x86, 0x8c, 0xd5, 0x90, 0xb6, 0xad, - 0xaa, 0x04, 0xf4, 0x04, 0xb0, 0xdb, 0xa2, 0x0e, 0x76, 0xab, 0x51, 0xca, 0x34, 0x06, 0xdc, 0x4a, - 0x86, 0x12, 0x26, 0x95, 0x42, 0xa9, 0x0c, 0xe1, 0x70, 0x2c, 0x89, 0x03, 0x35, 0x16, 0x31, 0x98, - 0x6c, 0xa8, 0xcf, 0xa6, 0x2a, 0x0f, 0x34, 0x41, 0xfa, 0x06, 0x04, 0x25, 0xb5, 0x15, 0xec, 0x7f, - 0xf0, 0x2a, 0x34, 0xc3, 0x47, 0xd1, 0xc8, 0x09, 0x5b, 0xcb, 0x8b, 0x5e, 0x50, 0xd1, 0x6c, 0x39, - 0x44, 0x31, 0x7e, 0x4f, 0x34, 0x49, 0xbb, 0xa8, 0xc9, 0xef, 0x49, 0x53, 0x45, 0x9e, 0x1f, 0x35, - 0x2d, 0xa6, 0x57, 0xde, 0x51, 0x3b, 0x89, 0x71, 0x86, 0xc7, 0x64, 0x95, 0x87, 0x81, 0x80, 0x26, - 0x56, 0x51, 0x3c, 0x5e, 0x08, 0x7d, 0x27, 0x31, 0x74, 0x3d, 0x5d, 0xc3, 0xc3, 0xa6, 0xa4, 0x8d, - 0x77, 0x5b, 0x6f, 0xbc, 0xb8, 0xd3, 0x6e, 0xeb, 0x53, 0xc8, 0x9f, 0x9f, 0xbc, 0xf0, 0x81, 0x81, - 0x77, 0x0a, 0xbd, 0xd4, 0x9a, 0x19, 0x49, 0x16, 0x0e, 0xdd, 0x59, 0xee, 0x85, 0xd8, 0xf2, 0xde, - 0xcf, 0xb7, 0x48, 0x06, 0x09, 0xc7, 0x91, 0xd6, 0xdd, 0xb4, 0xbc, 0x6a, 0x91, 0xb7, 0x03, 0x7c, - 0xf5, 0x1f, 0xb0, 0x48, 0xab, 0x3b, 0x2b, 0x2a, 0x6c, 0xf1, 0xa8, 0x19, 0x3f, 0x2e, 0x2a, 0xc7, - 0x16, 0x78, 0x7c, 0x5d, 0xd8, 0x83, 0x0b, 0x56, 0xf9, 0xe1, 0xa1, 0x7c, 0xda, 0x71, 0xab, 0xa1, - 0x17, 0x66, 0x59, 0x4f, 0x94, 0x02, 0x1e, 0x8e, 0x5e, 0x9d, 0x1c, 0xb7, 0xa0, 0xff, 0xae, 0x87, - 0xe9, 0x05, 0xb3, 0x1d, 0xc3, 0x80, 0x18, 0xe6, 0xf1, 0x50, 0xa7, 0x18, 0xce, 0xa6, 0x86, 0x72, - 0x87, 0x12, 0x41, 0x00, 0x69, 0x4c, 0x55, 0xbc, 0xa3, 0xe6, 0xcf, 0x74, 0xe5, 0x67, 0xba, 0x1a, - 0x02, 0xb0, 0x61, 0x8f, 0x6d, 0x5d, 0xff, 0x00, 0xc7, 0x55, 0x1c, 0x17, 0x65, 0xd6, 0x3a, 0x7e, - 0xd3, 0x12, 0x84, 0x9b, 0xbc, 0x17, 0x5d, 0x54, 0x55, 0xc1, 0xe6, 0x80, 0x44, 0xd5, 0x87, 0x9e, - 0xb8, 0x90, 0xc7, 0xa4, 0xde, 0x41, 0x87, 0x8e, 0x49, 0x5d, 0x73, 0x4c, 0xc2, 0x7e, 0x8c, 0x43, - 0x90, 0xe2, 0xdf, 0x0b, 0xdb, 0xdc, 0x49, 0xdb, 0x5f, 0x1c, 0x2d, 0xd9, 0xf4, 0xb1, 0x99, 0xd7, - 0xef, 0xfb, 0xe8, 0x6b, 0x7f, 0xc2, 0xdb, 0xbe, 0x46, 0x6b, 0x5c, 0xa9, 0x5e, 0xd4, 0x26, 0x03, - 0xac, 0xab, 0xd9, 0xf5, 0x69, 0x04, 0x62, 0x01, 0xb7, 0x97, 0x7f, 0x91, 0x9a, 0x62, 0x7b, 0x27, - 0xde, 0xd9, 0xbe, 0x88, 0x13, 0x17, 0x70, 0xff, 0xa4, 0x4d, 0xe1, 0x1b, 0xe3, 0xed, 0x33, 0x68, - 0xff, 0x76, 0xb8, 0xbd, 0xa9, 0x66, 0xfa, 0xc4, 0x55, 0x4d, 0x6f, 0x2f, 0x44, 0xc9, 0x1b, 0x3b, - 0xfe, 0x6e, 0x98, 0xeb, 0x2a, 0x79, 0xa3, 0x19, 0xf3, 0xd4, 0x8d, 0xc5, 0x58, 0xc0, 0xf7, 0x9e, - 0x69, 0x78, 0x5d, 0x77, 0x77, 0x9d, 0x80, 0x51, 0x80, 0xd5, 0xd2, 0xc0, 0x90, 0x98, 0x47, 0x55, - 0x5f, 0xc7, 0xc5, 0x52, 0x4e, 0xcb, 0xac, 0xb6, 0x62, 0xed, 0x76, 0xbf, 0xe9, 0xd6, 0x0e, 0xcc, - 0xd0, 0xaf, 0xa3, 0xac, 0x64, 0xde, 0x6f, 0xd7, 0x37, 0x96, 0x31, 0x76, 0x82, 0x78, 0x99, 0x56, - 0x1c, 0xdf, 0x4f, 0x53, 0x61, 0xbc, 0x54, 0xe7, 0xcd, 0x76, 0xc7, 0x5f, 0x68, 0x9d, 0xbc, 0x00, - 0x83, 0x9a, 0x75, 0x70, 0xb2, 0xf8, 0x20, 0x5a, 0x4f, 0xb2, 0xf1, 0x0d, 0x1a, 0xab, 0x4b, 0x7d, - 0x71, 0x8e, 0x70, 0x96, 0x41, 0xb4, 0xb9, 0x40, 0xd7, 0xa3, 0x98, 0x6e, 0x8c, 0x89, 0xdb, 0xf2, - 0x84, 0x3a, 0x08, 0x91, 0x39, 0x88, 0x1c, 0xc8, 0x36, 0x36, 0xbf, 0x8e, 0xe3, 0x94, 0xbc, 0x72, - 0x94, 0x65, 0x7c, 0x56, 0xbc, 0x63, 0xa7, 0xb1, 0xe6, 0x86, 0x28, 0xf1, 0xa2, 0x53, 0x55, 0xfd, - 0xa9, 0xf5, 0x70, 0x65, 0x23, 0xc8, 0x29, 0x2c, 0xee, 0xf8, 0x9e, 0x67, 0x46, 0xb3, 0x8a, 0x0e, - 0xdf, 0x18, 0x84, 0x45, 0x34, 0x59, 0xc2, 0x9f, 0x96, 0x30, 0x91, 0xbe, 0xec, 0x7c, 0xe7, 0x09, - 0x9a, 0x74, 0x7c, 0xdb, 0xda, 0x54, 0x0c, 0x71, 0x65, 0x0e, 0x54, 0xd7, 0x98, 0x59, 0x17, 0x28, - 0x22, 0x5d, 0x23, 0x7f, 0x78, 0xdf, 0x56, 0x95, 0x38, 0x06, 0x8a, 0x15, 0x55, 0x68, 0xca, 0xb8, - 0xc8, 0xdf, 0x6f, 0x16, 0x1d, 0x28, 0x11, 0xe1, 0x3f, 0xb6, 0x5a, 0x95, 0x33, 0x00, 0xd5, 0x09, - 0x6d, 0x45, 0xba, 0x72, 0xeb, 0x05, 0x85, 0x64, 0x17, 0x86, 0x99, 0x98, 0x55, 0xac, 0xa4, 0xdb, - 0x7c, 0xd5, 0xd0, 0x46, 0x09, 0xd7, 0xd0, 0xc8, 0xa8, 0x94, 0x79, 0xb5, 0xad, 0x6d, 0x71, 0xde, - 0xdc, 0xe4, 0x64, 0x86, 0x58, 0x52, 0xda, 0x8f, 0x46, 0x7f, 0xb1, 0x24, 0xc2, 0x37, 0x50, 0xb8, - 0x9d, 0xee, 0x62, 0xa3, 0x8f, 0xe9, 0x2e, 0x7e, 0x01, 0x5d, 0xdc, 0x68, 0xd8, 0x73, 0x97, 0x6f, - 0xe7, 0xf8, 0xa2, 0xcb, 0xc9, 0x6b, 0xf7, 0x0f, 0x07, 0x07, 0xfb, 0x7b, 0xbc, 0x7c, 0x77, 0xf6, - 0x7a, 0xb0, 0xb1, 0xc6, 0x33, 0xf8, 0xd1, 0x95, 0x22, 0x31, 0x29, 0xdd, 0x6a, 0xdd, 0x6f, 0x8e, - 0x29, 0x55, 0xa5, 0xdb, 0xf3, 0x6e, 0x07, 0x7a, 0xbb, 0x68, 0xae, 0xe5, 0x53, 0x0a, 0x6e, 0x5b, - 0x50, 0x17, 0xdd, 0x14, 0xbc, 0xd3, 0x5c, 0xf0, 0x8f, 0x9b, 0x95, 0xdb, 0x51, 0xed, 0xad, 0x2c, - 0xfe, 0x8a, 0x31, 0x57, 0xdf, 0x28, 0x1e, 0x33, 0xe6, 0x96, 0xb2, 0xb3, 0x54, 0x06, 0xc3, 0x73, - 0x3d, 0xe1, 0x97, 0xd8, 0x54, 0xd4, 0x22, 0x3d, 0xfb, 0x70, 0x73, 0x8d, 0xca, 0x77, 0xe1, 0x98, - 0xf9, 0x29, 0xbb, 0x69, 0xa5, 0x31, 0xc8, 0x4c, 0xc3, 0xb2, 0x05, 0x87, 0x42, 0x38, 0x74, 0xf5, - 0x94, 0x64, 0x5f, 0xe0, 0x31, 0x00, 0x93, 0xb7, 0x86, 0xe6, 0x44, 0xb6, 0xa5, 0xc0, 0x66, 0xfe, - 0xb3, 0x2b, 0xbd, 0x36, 0xfa, 0x76, 0x3b, 0x1d, 0xb1, 0xea, 0x93, 0x16, 0xc1, 0xe5, 0xb5, 0x15, - 0x9a, 0xe5, 0x8e, 0x5e, 0x82, 0x79, 0x1b, 0x30, 0x9b, 0xc0, 0x7f, 0x6a, 0x31, 0x97, 0x7b, 0xf6, - 0x7c, 0x59, 0x7a, 0xc6, 0x71, 0xd1, 0x89, 0xd7, 0xb5, 0xac, 0x89, 0x5d, 0x6f, 0x56, 0x5d, 0x90, - 0x86, 0x96, 0x5d, 0x76, 0xc0, 0x90, 0xee, 0x17, 0x62, 0x23, 0x37, 0x6a, 0xb5, 0x09, 0x48, 0x02, - 0x65, 0x98, 0xc4, 0x93, 0xb2, 0xbf, 0xe9, 0xca, 0x78, 0xa2, 0x34, 0x42, 0x7a, 0xac, 0x6e, 0xf8, - 0xe1, 0xa4, 0xf1, 0xcb, 0xa4, 0x2f, 0xd9, 0xfc, 0xd3, 0x6a, 0x80, 0x9a, 0x8f, 0x6f, 0x0b, 0x1f, - 0x38, 0x3a, 0xd0, 0xc7, 0x55, 0xf8, 0x3c, 0x75, 0xf4, 0xb7, 0xca, 0xf4, 0xbe, 0x7d, 0xd3, 0xa0, - 0xb8, 0x2e, 0x9b, 0xbc, 0x19, 0x55, 0xec, 0x5e, 0x53, 0x6c, 0x8a, 0x15, 0xaa, 0x44, 0x4e, 0x69, - 0x88, 0x00, 0x34, 0xd6, 0xae, 0xe0, 0x98, 0x4f, 0x7c, 0x08, 0x63, 0x7b, 0x60, 0xc0, 0x1c, 0x3f, - 0x87, 0x94, 0xf1, 0x2e, 0x04, 0xa2, 0x8c, 0x6a, 0x81, 0x8a, 0xea, 0x80, 0xaf, 0x04, 0xf2, 0x1a, - 0xc8, 0x43, 0x8e, 0x3e, 0xb7, 0xc0, 0x30, 0x68, 0x04, 0x20, 0x0f, 0x96, 0x58, 0xc9, 0xe5, 0xf5, - 0x4d, 0xed, 0x07, 0x60, 0x1a, 0x6d, 0x0e, 0x45, 0x0b, 0xcf, 0xce, 0x17, 0x95, 0x5b, 0x8d, 0xcc, - 0xc1, 0x84, 0x37, 0x1b, 0x4b, 0xba, 0xd9, 0x4d, 0x28, 0xf1, 0xe8, 0x3a, 0x5d, 0xe0, 0xd5, 0x51, - 0x44, 0x84, 0xe1, 0xa6, 0x5d, 0xf8, 0x7d, 0xe9, 0x14, 0x59, 0xd6, 0x3e, 0xf6, 0xf6, 0xfe, 0xa9, - 0xdf, 0x2a, 0x40, 0x4e, 0x5b, 0xe0, 0x71, 0x4f, 0x5d, 0xfd, 0x8f, 0xe2, 0x60, 0xf5, 0x27, 0x19, - 0x37, 0x5c, 0xf8, 0x44, 0xe3, 0x67, 0x89, 0x86, 0x86, 0xf2, 0x73, 0xe0, 0x2b, 0x25, 0x07, 0x94, - 0xe3, 0x30, 0xad, 0x4c, 0xdd, 0x78, 0x57, 0xe4, 0x51, 0x8d, 0xdd, 0x17, 0x66, 0xde, 0x15, 0xc0, - 0x3d, 0x9f, 0x2d, 0x70, 0x0f, 0x73, 0x47, 0x33, 0x14, 0x58, 0x50, 0xd4, 0x1b, 0x89, 0xef, 0xe2, - 0x71, 0x23, 0xe1, 0xb5, 0xbb, 0xc2, 0x6d, 0x24, 0xae, 0x14, 0x3a, 0xaf, 0xb3, 0x71, 0xc5, 0x81, - 0xe8, 0x2a, 0x2d, 0x7f, 0x84, 0xb0, 0x04, 0xe1, 0xc9, 0x58, 0xdc, 0x8d, 0xc2, 0x7b, 0x35, 0x85, - 0x42, 0x22, 0x20, 0xf7, 0xf8, 0x92, 0xb3, 0xec, 0x2c, 0x16, 0x85, 0xb8, 0xd6, 0xef, 0xba, 0xbf, - 0x16, 0x72, 0x49, 0x64, 0x5e, 0x34, 0x77, 0x22, 0x9a, 0x21, 0xaf, 0x9d, 0x28, 0x8b, 0xb5, 0xd0, - 0xc3, 0xe9, 0x3a, 0xe8, 0x61, 0xac, 0x61, 0x67, 0x2b, 0x52, 0xa6, 0x7f, 0x17, 0x67, 0x18, 0xfa, - 0x47, 0x58, 0xd6, 0x5c, 0xc0, 0xe1, 0xeb, 0xa9, 0x78, 0x55, 0x01, 0x1e, 0x96, 0x23, 0xa0, 0x02, - 0x41, 0x3c, 0xbb, 0xcb, 0x1d, 0x74, 0x36, 0xec, 0x4c, 0x1c, 0x83, 0xe4, 0x95, 0x8c, 0x8e, 0xf7, - 0x91, 0x18, 0x5a, 0x29, 0x36, 0x1b, 0xfa, 0x9a, 0xe1, 0xb0, 0x45, 0x4b, 0x52, 0xcd, 0x01, 0xb4, - 0x40, 0x82, 0xae, 0x14, 0x06, 0xef, 0x6d, 0x98, 0x04, 0xd7, 0xd3, 0x70, 0x18, 0xe0, 0x5d, 0x87, - 0x60, 0x94, 0x4f, 0xc3, 0xc6, 0x7a, 0x13, 0xb1, 0x99, 0x81, 0x65, 0x86, 0x1e, 0xc9, 0x16, 0x0b, - 0x4d, 0xcd, 0xd2, 0x80, 0xe2, 0x3a, 0xde, 0x00, 0xc5, 0xf5, 0x62, 0x3d, 0x8a, 0x6b, 0x30, 0x6b, - 0x8e, 0x83, 0xe8, 0xcb, 0xba, 0x1b, 0x72, 0x1a, 0x16, 0x90, 0x73, 0x34, 0x0e, 0xf8, 0x37, 0xe4, - 0x10, 0x5d, 0xa8, 0xdf, 0xd9, 0x24, 0x9a, 0x2d, 0xf8, 0x27, 0x8c, 0x0c, 0xba, 0x67, 0xc5, 0x24, - 0xc6, 0xb1, 0xeb, 0x9e, 0x9f, 0x4b, 0xcb, 0xba, 0x72, 0x14, 0x5c, 0x3d, 0x86, 0xfa, 0xbc, 0x68, - 0x54, 0x81, 0xa3, 0xd3, 0x2a, 0x70, 0xb4, 0xf2, 0x5e, 0xa8, 0x99, 0x96, 0x83, 0x61, 0xdd, 0xbc, - 0x5f, 0x77, 0x07, 0x4e, 0xc8, 0xd7, 0x77, 0xd2, 0x4e, 0x0e, 0x0b, 0xbc, 0x70, 0xf8, 0xf0, 0x90, - 0x1c, 0x11, 0xb0, 0xb9, 0x86, 0xc5, 0x40, 0xc0, 0x22, 0x9d, 0x65, 0x44, 0x51, 0xf8, 0xde, 0xeb, - 0x61, 0xca, 0xd1, 0x87, 0xbb, 0x8d, 0x59, 0x1e, 0xa5, 0xb5, 0x4c, 0xac, 0x7f, 0x02, 0xbe, 0x21, - 0x64, 0x58, 0x37, 0x21, 0x29, 0xe6, 0x86, 0x0f, 0x0f, 0x5b, 0xb5, 0x70, 0xa4, 0xc9, 0x93, 0x79, - 0xb5, 0x2e, 0xf4, 0xda, 0xa7, 0x70, 0x33, 0x1a, 0x87, 0x66, 0xc2, 0x43, 0x73, 0xc8, 0x03, 0x89, - 0x5c, 0xc3, 0x93, 0x43, 0xc6, 0xc9, 0x16, 0x9b, 0x96, 0x03, 0xdd, 0x5d, 0xd4, 0xa0, 0xbb, 0xfb, - 0x7c, 0xd7, 0xdd, 0xd2, 0xac, 0xe9, 0xd6, 0xcd, 0xeb, 0x2d, 0x5e, 0x6f, 0xdd, 0xa9, 0x6a, 0xdd, - 0xe9, 0x61, 0xc9, 0xcd, 0x35, 0x3d, 0x2a, 0x6b, 0x0d, 0xa3, 0x25, 0xfa, 0xd2, 0xb4, 0x6e, 0xae, - 0x3b, 0x23, 0x5f, 0xdd, 0x19, 0xd8, 0x8e, 0x19, 0x0f, 0x49, 0xc2, 0x54, 0x89, 0xa6, 0x81, 0x7e, - 0xcc, 0x66, 0x9f, 0xa2, 0x7c, 0x81, 0xd5, 0x1c, 0xd7, 0x91, 0x90, 0xa9, 0xf1, 0x6b, 0x2b, 0xe5, - 0x78, 0x0d, 0x2a, 0xba, 0x33, 0x71, 0xd2, 0xf5, 0x13, 0x27, 0x33, 0x13, 0xa7, 0xd4, 0xc5, 0x82, - 0x89, 0x53, 0xa8, 0xdf, 0x30, 0x71, 0xd2, 0x80, 0x3a, 0xa5, 0x8a, 0x00, 0x8d, 0x18, 0x23, 0x14, - 0xa5, 0x74, 0x91, 0xb5, 0x25, 0x3a, 0x34, 0x7a, 0x20, 0x19, 0x47, 0x47, 0x67, 0xa2, 0x65, 0xae, - 0x6b, 0x88, 0x9a, 0x67, 0x96, 0xc3, 0x70, 0xd0, 0x24, 0x36, 0x80, 0x8c, 0x70, 0x85, 0x2a, 0xc3, - 0x6b, 0xd8, 0xee, 0xa6, 0x20, 0x5b, 0x59, 0xdb, 0x0b, 0xbc, 0x51, 0x1e, 0x09, 0x70, 0x10, 0xda, - 0x42, 0x67, 0x03, 0x9d, 0xd5, 0xee, 0x6e, 0xb0, 0x6c, 0xe3, 0xc5, 0x61, 0x07, 0x1b, 0x8a, 0xef, - 0x6c, 0xb1, 0xe5, 0x2f, 0xf1, 0xed, 0x8a, 0xdd, 0x1a, 0x57, 0xca, 0xa5, 0x4b, 0x7c, 0x65, 0xb7, - 0xc6, 0xac, 0x3e, 0xad, 0xca, 0xeb, 0x93, 0x9b, 0xd5, 0xa7, 0xe5, 0x39, 0xfd, 0x7d, 0xba, 0x22, - 0x1f, 0x58, 0xb7, 0x97, 0xed, 0x2c, 0xf5, 0x7c, 0x56, 0x15, 0xe8, 0xda, 0x2d, 0xd0, 0xf5, 0xaa, - 0x02, 0x75, 0x7b, 0xab, 0x32, 0xea, 0xf6, 0xdc, 0x9c, 0xba, 0x74, 0x6a, 0x55, 0x7a, 0xaf, 0x63, - 0x54, 0xc9, 0x54, 0x33, 0x3c, 0x5d, 0x55, 0xc3, 0xc2, 0xad, 0x61, 0x31, 0x5d, 0x97, 0xdb, 0xc7, - 0xd9, 0x8a, 0xdc, 0xca, 0x59, 0xb8, 0x6c, 0xc0, 0x56, 0xf3, 0xa1, 0xf3, 0x16, 0xaa, 0xc7, 0x1e, - 0x77, 0xe2, 0x5a, 0x3a, 0xe4, 0xe2, 0x32, 0x2c, 0x6b, 0x35, 0x8f, 0x2f, 0x4f, 0xee, 0xf2, 0x15, - 0xe5, 0x85, 0x2d, 0x79, 0xeb, 0x11, 0x67, 0x80, 0x86, 0xfc, 0x7f, 0xca, 0x57, 0xb5, 0xee, 0x46, - 0xbb, 0xbd, 0x7b, 0x75, 0xef, 0x32, 0x79, 0x97, 0xc7, 0xf1, 0x1f, 0xb1, 0xb9, 0xa1, 0x2d, 0x4e, - 0xd3, 0x73, 0xbc, 0xb9, 0xe8, 0x95, 0x1e, 0x2c, 0xe8, 0x8c, 0x23, 0x44, 0x7e, 0x35, 0x7c, 0x8e, - 0x06, 0xe1, 0x3a, 0x0e, 0xec, 0xcd, 0xc9, 0x58, 0x5c, 0x0a, 0x56, 0xf7, 0x1e, 0x6b, 0xd7, 0x29, - 0xdb, 0x90, 0x2d, 0xba, 0x7f, 0xc2, 0x69, 0xd2, 0x5f, 0x71, 0xca, 0x2e, 0xdf, 0xfd, 0xd3, 0x14, - 0x86, 0x2f, 0x3f, 0x47, 0xf1, 0x40, 0x20, 0x5b, 0x54, 0x51, 0x2a, 0xb6, 0x35, 0x4a, 0x45, 0x15, - 0xc0, 0x35, 0x54, 0x43, 0x61, 0xdb, 0x70, 0x98, 0x56, 0x93, 0x7e, 0x5e, 0x96, 0xb4, 0x8a, 0xf7, - 0x2b, 0xc0, 0x5e, 0x1b, 0x46, 0xc4, 0xe4, 0xde, 0xb6, 0x3a, 0x2c, 0xd5, 0x93, 0xfb, 0x8b, 0x78, - 0x62, 0xef, 0x89, 0xd0, 0x63, 0xb5, 0x2b, 0x0d, 0x30, 0xf1, 0xa3, 0x2a, 0xaa, 0xe9, 0xdc, 0x1a, - 0x31, 0x8a, 0x37, 0xa9, 0xee, 0xca, 0x0c, 0x1e, 0x57, 0x69, 0x48, 0x16, 0xc6, 0xd5, 0x6a, 0xe1, - 0xf0, 0xac, 0x8c, 0xce, 0xda, 0x98, 0xac, 0x83, 0xd2, 0xf9, 0xd5, 0x71, 0x8e, 0xc0, 0x32, 0xed, - 0xa6, 0x51, 0x5e, 0xdc, 0x37, 0xe6, 0xe5, 0xc0, 0x54, 0xd5, 0xa6, 0x8d, 0x81, 0xa9, 0x6a, 0xcc, - 0x72, 0xda, 0x9c, 0x65, 0x0d, 0xdb, 0xaa, 0x96, 0x2d, 0xc3, 0xdb, 0x40, 0x0f, 0x2a, 0x6c, 0x3e, - 0x14, 0xc7, 0x1f, 0x1e, 0xe2, 0xa3, 0x7d, 0xdf, 0x9d, 0x44, 0x8b, 0x45, 0x75, 0x83, 0xd7, 0xc0, - 0x56, 0x04, 0x03, 0xa3, 0x36, 0xef, 0x7d, 0xea, 0x7d, 0x9e, 0x5b, 0xe3, 0xfd, 0xa8, 0x08, 0x7b, - 0x32, 0xa0, 0x07, 0x01, 0xea, 0x67, 0x17, 0x76, 0xf4, 0xca, 0xe4, 0x71, 0x8a, 0xc5, 0x00, 0x34, - 0x58, 0x2c, 0x81, 0x1b, 0x58, 0x2d, 0x5b, 0x61, 0xca, 0xa6, 0x3e, 0xcc, 0xb2, 0x58, 0xb6, 0x1f, - 0x6d, 0x6d, 0x95, 0xea, 0xd3, 0x2a, 0xa8, 0x47, 0x41, 0xea, 0xa1, 0x8b, 0x0f, 0x41, 0x45, 0x54, - 0x73, 0x3e, 0xff, 0x3e, 0xab, 0x2f, 0x80, 0x38, 0xe9, 0xe3, 0xea, 0x04, 0xa0, 0xf3, 0x84, 0x10, - 0xdf, 0x11, 0x2a, 0x70, 0x81, 0x04, 0x0e, 0x5a, 0x29, 0xd3, 0x46, 0xf4, 0x33, 0x75, 0x29, 0x5d, - 0xbb, 0x0c, 0x20, 0x70, 0x88, 0x71, 0x1f, 0xb8, 0xc3, 0x13, 0x9b, 0x7c, 0xb2, 0xf0, 0x1e, 0x27, - 0xa8, 0x94, 0x8c, 0x3d, 0xff, 0x30, 0x22, 0xfa, 0x07, 0xcc, 0x1e, 0xd6, 0xc7, 0x45, 0xa0, 0x5c, - 0xbf, 0x15, 0x13, 0x56, 0x19, 0xe8, 0xd4, 0xbe, 0x75, 0x83, 0xfc, 0x3d, 0xb1, 0xbf, 0x53, 0xbc, - 0xe7, 0xe8, 0x94, 0x07, 0x56, 0xbf, 0x2c, 0x45, 0xc8, 0xe7, 0x40, 0x1c, 0x6b, 0xde, 0x67, 0x43, - 0xbc, 0x55, 0xa1, 0x34, 0xa0, 0x2d, 0x6f, 0x47, 0xdb, 0xfb, 0x77, 0xbc, 0x56, 0x9b, 0xd8, 0x20, - 0x7d, 0x6f, 0xc5, 0x8a, 0x47, 0x76, 0x48, 0x8d, 0xdb, 0x0a, 0x7d, 0x35, 0x3b, 0xae, 0x7a, 0x4c, - 0xb2, 0x1d, 0xd5, 0xac, 0xe0, 0x3e, 0x54, 0xfb, 0xf8, 0xb0, 0x4b, 0xc4, 0x16, 0xc7, 0xd1, 0x32, - 0xf3, 0x28, 0x08, 0x5b, 0xc7, 0x47, 0xbd, 0x83, 0x8e, 0x0f, 0xf3, 0x3b, 0x87, 0x52, 0x2a, 0xdf, - 0xf5, 0xe3, 0x37, 0x70, 0xea, 0x82, 0x25, 0x60, 0x14, 0xb7, 0xd0, 0xd4, 0x9a, 0x81, 0x2c, 0x13, - 0x17, 0xc5, 0x9e, 0x26, 0x80, 0x41, 0x6c, 0xaa, 0xf6, 0xec, 0x83, 0xd0, 0x77, 0x91, 0x2a, 0x49, - 0x7d, 0x19, 0xbf, 0xf8, 0x21, 0x6a, 0x97, 0x03, 0xcf, 0xf8, 0x8d, 0x7b, 0xd6, 0x2b, 0xde, 0xdf, - 0x99, 0x1d, 0x6b, 0xc4, 0xc6, 0xb9, 0x95, 0x26, 0x9b, 0xb4, 0x66, 0x7e, 0x39, 0x80, 0x83, 0xb5, - 0x56, 0x10, 0x5b, 0x1f, 0xcb, 0xa0, 0xe0, 0xf6, 0xc5, 0xbf, 0xd8, 0xcc, 0x21, 0x12, 0xa3, 0x8c, - 0x44, 0x69, 0xc8, 0xb5, 0x49, 0x08, 0xd5, 0x30, 0x30, 0xe5, 0xeb, 0xa2, 0xfe, 0x7a, 0xec, 0xbc, - 0x1e, 0x5f, 0x7d, 0xa9, 0xf9, 0xc8, 0x2a, 0x0f, 0x18, 0x3c, 0x09, 0x13, 0x34, 0x54, 0x25, 0x94, - 0xeb, 0x4e, 0xf0, 0xdd, 0xca, 0x63, 0xa5, 0xa1, 0x7b, 0x44, 0x4c, 0x84, 0x89, 0xa1, 0xb6, 0xb4, - 0x8c, 0x8c, 0x9f, 0xb5, 0xe5, 0xdd, 0x08, 0x9b, 0x65, 0xfe, 0x75, 0x5e, 0x48, 0x70, 0xd6, 0xd4, - 0x5f, 0x30, 0xb0, 0x01, 0x8f, 0x83, 0x02, 0x07, 0x34, 0x9c, 0xd8, 0x2d, 0xc2, 0x98, 0x23, 0x94, - 0xd8, 0x4c, 0xd1, 0x20, 0xeb, 0x50, 0x93, 0x10, 0x79, 0xed, 0xcb, 0x97, 0xfd, 0x16, 0x4f, 0x82, - 0x16, 0xe9, 0xa3, 0x5b, 0x5f, 0x11, 0x34, 0x40, 0xf8, 0x0a, 0xb4, 0xe8, 0x06, 0x00, 0x83, 0x8e, - 0x88, 0x89, 0x33, 0xf7, 0xfc, 0xa3, 0xdd, 0xee, 0xa3, 0x3f, 0x75, 0xfa, 0x15, 0x0e, 0x2e, 0xf7, - 0x0a, 0x4b, 0x6e, 0x9a, 0xb6, 0xc6, 0xcc, 0x84, 0x8a, 0xd5, 0x93, 0x1f, 0xe5, 0xcf, 0x11, 0xbe, - 0x5a, 0x6d, 0xaa, 0xfe, 0xd9, 0xea, 0x29, 0xed, 0x3d, 0xdd, 0xff, 0x87, 0x73, 0x5b, 0x0c, 0x03, - 0x7b, 0x82, 0x8e, 0x86, 0xd7, 0xd9, 0xc5, 0x74, 0xf2, 0x15, 0xa7, 0x25, 0x81, 0x08, 0xf0, 0xdc, - 0x84, 0x33, 0x15, 0x0f, 0x2c, 0xf8, 0x33, 0xc3, 0x89, 0x17, 0xcd, 0x8e, 0x61, 0x8c, 0x80, 0x70, - 0xf5, 0x41, 0xa0, 0xb1, 0x7c, 0x56, 0xce, 0x31, 0x56, 0x33, 0x20, 0x19, 0x8b, 0x0b, 0x58, 0x22, - 0x40, 0x3c, 0x96, 0x0b, 0xc0, 0xe9, 0x90, 0xc0, 0x9d, 0x71, 0xe2, 0xf3, 0x94, 0x9f, 0x1d, 0xd7, - 0xe7, 0x7c, 0x81, 0x00, 0xef, 0xd9, 0x80, 0xef, 0x9b, 0x9c, 0xcd, 0x8e, 0xcf, 0x61, 0x21, 0x77, - 0x2e, 0xa8, 0x40, 0x10, 0x17, 0xaa, 0x1e, 0x9c, 0xd5, 0x83, 0x6e, 0xeb, 0x41, 0xe8, 0x45, 0x0a, - 0x33, 0xc6, 0x7e, 0x60, 0x9e, 0x86, 0xb3, 0x0f, 0x01, 0x0c, 0xa4, 0xd0, 0x5b, 0xd6, 0x5a, 0x08, - 0x3a, 0x18, 0xc7, 0xdc, 0x46, 0x69, 0x7c, 0x97, 0x7c, 0xa5, 0xf5, 0xe8, 0x42, 0xf7, 0xd8, 0x9e, - 0x07, 0xbb, 0x17, 0x0e, 0x45, 0x9c, 0xf9, 0xe6, 0x43, 0x38, 0x34, 0x29, 0x14, 0xab, 0xf4, 0x7b, - 0xe2, 0xbc, 0x83, 0xc6, 0xc1, 0x30, 0x5f, 0x20, 0x93, 0x28, 0xb0, 0x10, 0x6c, 0x0e, 0x6b, 0xde, - 0x08, 0xaa, 0xb8, 0x22, 0xb3, 0xeb, 0xf2, 0x3d, 0xb4, 0x26, 0xf2, 0x67, 0x09, 0x84, 0x11, 0x85, - 0x2a, 0x26, 0x81, 0x3d, 0xd8, 0x5f, 0x53, 0x2f, 0x98, 0x44, 0x0a, 0xab, 0xaf, 0x59, 0xe0, 0x3b, - 0x3d, 0x90, 0xdc, 0x50, 0xbc, 0x58, 0x2d, 0x47, 0xd1, 0xe6, 0x1e, 0x9e, 0x1e, 0x83, 0x48, 0x93, - 0x68, 0x00, 0xe5, 0xee, 0x57, 0xf2, 0xed, 0x3e, 0x26, 0xdf, 0xfd, 0x97, 0x13, 0xf6, 0x21, 0x41, - 0xd3, 0x8d, 0x5d, 0x29, 0x57, 0xae, 0x84, 0xcb, 0x14, 0xa3, 0xba, 0x40, 0xee, 0x5e, 0xab, 0x33, - 0xc2, 0xbd, 0xbd, 0x72, 0x69, 0xa3, 0xc9, 0x98, 0x71, 0x81, 0x1a, 0xca, 0xbe, 0xd3, 0x86, 0xe3, - 0x74, 0x32, 0x68, 0xbb, 0x79, 0x5e, 0xa0, 0x56, 0x7e, 0xe1, 0xbb, 0x23, 0x0e, 0xe1, 0xcf, 0x6a, - 0x3d, 0x2c, 0xcd, 0x50, 0x4b, 0x8d, 0x50, 0x74, 0x83, 0x80, 0x2d, 0x1f, 0xe3, 0x3a, 0xa4, 0xf2, - 0x23, 0x9a, 0xd3, 0x75, 0x8b, 0xd9, 0xc2, 0xb4, 0xa2, 0x16, 0x70, 0x30, 0x73, 0x54, 0xee, 0x16, - 0xca, 0x6c, 0x8e, 0x78, 0x74, 0x51, 0x2c, 0xd5, 0xe9, 0xcb, 0x40, 0x60, 0x49, 0xd1, 0xed, 0x37, - 0x59, 0xcd, 0xee, 0xef, 0x89, 0xc3, 0xa4, 0x8f, 0x64, 0xc1, 0xd5, 0xaa, 0xaa, 0x77, 0x38, 0xc6, - 0x4f, 0x88, 0xaa, 0xa5, 0x9d, 0x5f, 0x8e, 0x4e, 0xcb, 0xbc, 0x5d, 0x0a, 0x30, 0x57, 0x98, 0x22, - 0xb0, 0x14, 0x8e, 0x91, 0xcb, 0x85, 0xdb, 0x41, 0x6f, 0x34, 0x55, 0x76, 0x93, 0xc0, 0x25, 0xd1, - 0x51, 0xfa, 0x28, 0xab, 0x22, 0x73, 0x00, 0x62, 0x97, 0xb2, 0xf4, 0x20, 0xfd, 0x4e, 0x15, 0x8a, - 0x93, 0xd0, 0xbb, 0x50, 0x4c, 0xbb, 0x42, 0xe8, 0x64, 0x73, 0xdd, 0xe4, 0xb5, 0xc2, 0xdd, 0xf4, - 0x72, 0x58, 0xb3, 0x91, 0x24, 0x72, 0x0e, 0xe7, 0xc9, 0xf9, 0x55, 0x08, 0xdb, 0x32, 0xfc, 0x7f, - 0x1b, 0xa2, 0x85, 0x09, 0xe4, 0x76, 0x79, 0x71, 0xe5, 0xa0, 0xe3, 0x12, 0x14, 0xef, 0x20, 0x14, - 0xe0, 0x45, 0x36, 0x8f, 0xf7, 0xae, 0x64, 0xb4, 0xfd, 0x1f, 0x2a, 0xf1, 0xfc, 0xc5, 0x1d, 0xb4, - 0x79, 0xdc, 0xa6, 0xc0, 0xe1, 0xa8, 0x68, 0x43, 0x82, 0x5d, 0x2a, 0x91, 0x7f, 0x88, 0x59, 0x70, - 0xe1, 0x20, 0x70, 0x61, 0xdb, 0x32, 0x66, 0xe0, 0x5b, 0x6c, 0x32, 0x74, 0xe3, 0xa9, 0x32, 0x71, - 0x99, 0x76, 0x53, 0xd0, 0x0e, 0xb2, 0x85, 0xa1, 0x1b, 0xfa, 0x2e, 0xe3, 0x91, 0xc1, 0xc5, 0xce, - 0x03, 0x97, 0xee, 0xc8, 0xbc, 0xb8, 0x0c, 0x5c, 0xae, 0x23, 0x8b, 0xa4, 0xcd, 0x03, 0x08, 0x8e, - 0xf7, 0xf2, 0x13, 0x57, 0xf1, 0xfd, 0x29, 0xd9, 0x3e, 0x84, 0x15, 0xa4, 0x5b, 0x53, 0xe0, 0x55, - 0x06, 0xdc, 0x19, 0x8e, 0x48, 0xd9, 0x8b, 0xfd, 0x94, 0x37, 0x9b, 0x1d, 0xd8, 0x2b, 0xcb, 0xec, - 0x54, 0x65, 0xf3, 0x83, 0xef, 0x1b, 0x22, 0xa3, 0xb1, 0x29, 0x49, 0x61, 0xc3, 0xd2, 0xc9, 0x7a, - 0xb0, 0xa9, 0x7d, 0xdf, 0x53, 0xdc, 0x2f, 0x4e, 0xb1, 0x6f, 0xe2, 0x60, 0xe8, 0x84, 0x14, 0xc3, - 0x52, 0x79, 0x77, 0x04, 0x59, 0x7d, 0x98, 0xca, 0x66, 0xfc, 0xab, 0x29, 0x4a, 0xe2, 0xa0, 0x07, - 0x5b, 0xe0, 0x5e, 0x19, 0xfc, 0xab, 0x09, 0xce, 0x40, 0x44, 0x99, 0xe6, 0xd9, 0xde, 0x6b, 0x2e, - 0x41, 0x71, 0xfb, 0x31, 0xfb, 0xe5, 0x72, 0xd4, 0x86, 0x91, 0x96, 0xc0, 0x48, 0x83, 0x51, 0xa6, - 0xc7, 0x5a, 0x35, 0xd7, 0x86, 0x2b, 0xb7, 0xcd, 0x0c, 0x9d, 0xde, 0x12, 0xd6, 0xcf, 0x6f, 0x86, - 0xc3, 0x61, 0x6b, 0xb7, 0x7b, 0xf0, 0x5d, 0xd0, 0x42, 0x76, 0x6a, 0xf4, 0x24, 0xce, 0x77, 0xbc, - 0x00, 0xff, 0x5e, 0xaa, 0xbf, 0x23, 0xd8, 0xc2, 0x71, 0x39, 0x5a, 0x51, 0xc2, 0x61, 0x53, 0xf9, - 0x7e, 0xfd, 0x97, 0x94, 0xaf, 0xd3, 0xe9, 0x6c, 0x56, 0x3e, 0xf1, 0xe5, 0xbf, 0x99, 0x86, 0x95, - 0xbd, 0xf5, 0x25, 0x4e, 0xe0, 0x74, 0x62, 0x67, 0x09, 0x0c, 0x13, 0xbe, 0x3c, 0xef, 0xcf, 0xbb, - 0x20, 0xfc, 0xb1, 0xe2, 0xeb, 0x4b, 0xfc, 0x15, 0xe9, 0x1e, 0x9e, 0x3d, 0x43, 0x46, 0x0b, 0x42, - 0x05, 0x94, 0x4b, 0xa7, 0xba, 0x6d, 0x1f, 0x37, 0xa6, 0x30, 0xc6, 0x15, 0x9b, 0xc2, 0x64, 0x22, - 0xb9, 0x77, 0xe4, 0x90, 0xed, 0xd7, 0x8c, 0x86, 0x76, 0xae, 0xfc, 0xe0, 0x23, 0x58, 0x2a, 0x1f, - 0x90, 0xcd, 0x94, 0xf7, 0xbe, 0x41, 0x08, 0x62, 0x09, 0xb9, 0x08, 0x53, 0x41, 0x1d, 0x98, 0x49, - 0xdd, 0x6c, 0x23, 0x4e, 0x26, 0xc3, 0x61, 0xa7, 0xe3, 0x59, 0xa8, 0xca, 0x15, 0xd3, 0x2c, 0x62, - 0xb0, 0xc9, 0xd2, 0x1f, 0x74, 0xc8, 0x30, 0xa9, 0x16, 0x95, 0x5e, 0x45, 0x56, 0xd5, 0xcb, 0x8e, - 0xda, 0x3e, 0x11, 0xf9, 0xcd, 0x0c, 0x0a, 0x34, 0x8a, 0x28, 0x8b, 0x02, 0x08, 0x62, 0xce, 0xfc, - 0x01, 0xf9, 0xb6, 0xf4, 0xc3, 0x4a, 0xd0, 0xeb, 0xab, 0x21, 0x6c, 0x6f, 0x09, 0xb4, 0x47, 0x71, - 0x0b, 0x1d, 0x09, 0xff, 0x77, 0x96, 0x2e, 0xd9, 0x4f, 0x21, 0x64, 0xab, 0xf4, 0x06, 0xf4, 0xc5, - 0xea, 0x82, 0x5c, 0x39, 0x43, 0xe9, 0xaf, 0x56, 0xed, 0xe1, 0xe4, 0x73, 0xba, 0x36, 0x9f, 0xc2, - 0x6b, 0x5c, 0x02, 0x2a, 0xf9, 0xfc, 0xba, 0x36, 0x9f, 0x5b, 0xaf, 0x71, 0xcd, 0xa8, 0xe4, 0xf3, - 0xb7, 0x7a, 0x3e, 0xed, 0x39, 0x8f, 0xf8, 0xb0, 0x69, 0x66, 0x2c, 0x2a, 0xe9, 0x71, 0x32, 0x3b, - 0xa3, 0xb4, 0xb2, 0x2f, 0x04, 0x65, 0xd4, 0xb4, 0x2b, 0x28, 0xc3, 0x55, 0x75, 0x4f, 0xe8, 0xdb, - 0xc1, 0xa2, 0x48, 0xef, 0xb5, 0xbf, 0x18, 0x01, 0x55, 0x7c, 0x66, 0x67, 0x9d, 0xb4, 0xf1, 0xc4, - 0x51, 0x1d, 0x9b, 0x79, 0x14, 0x07, 0xd5, 0xb0, 0x4b, 0x64, 0x25, 0xa8, 0x84, 0x8d, 0xa2, 0x42, - 0xc3, 0xc0, 0xab, 0x57, 0x95, 0x2a, 0xfe, 0xe6, 0xfa, 0xd9, 0x9a, 0xc3, 0x40, 0xd0, 0x7c, 0xf2, - 0x29, 0x6b, 0x73, 0x24, 0xd6, 0x75, 0xe6, 0xaf, 0xa8, 0x08, 0xee, 0xe0, 0x8b, 0x2b, 0xba, 0x31, - 0x35, 0x33, 0xe6, 0xcb, 0x4f, 0x58, 0x64, 0x6d, 0x0d, 0xd2, 0x20, 0x81, 0x5d, 0xa7, 0xf2, 0x4d, - 0xd8, 0x6e, 0x3a, 0x78, 0x26, 0x8d, 0x11, 0x60, 0x0a, 0x7a, 0xe8, 0xa7, 0x04, 0x56, 0xcd, 0x36, - 0xe2, 0x7d, 0xaf, 0x1d, 0x32, 0xc4, 0x96, 0xdd, 0xdb, 0xc2, 0xa4, 0x96, 0x8f, 0xb0, 0x9d, 0x35, - 0xea, 0xdf, 0xcc, 0x51, 0xca, 0xd7, 0x56, 0xc7, 0xea, 0x49, 0x61, 0x08, 0xbd, 0x50, 0x68, 0xee, - 0xbc, 0xe9, 0x5e, 0x1e, 0x66, 0xc1, 0x10, 0x3a, 0x21, 0xb5, 0x41, 0x97, 0x14, 0x34, 0x8a, 0x12, - 0x1b, 0x34, 0xa2, 0xa0, 0x3b, 0xd8, 0xdc, 0x2a, 0x0d, 0x46, 0x1f, 0xd1, 0x66, 0x7d, 0xf8, 0x48, - 0x78, 0x76, 0x76, 0x1e, 0xd0, 0x7f, 0xe7, 0x8b, 0x85, 0x32, 0x7b, 0x23, 0xb6, 0x3f, 0xc5, 0x8e, - 0xce, 0xb8, 0x71, 0xb2, 0xf3, 0xaa, 0x59, 0xdb, 0xd1, 0xb7, 0x0e, 0x13, 0xf4, 0xeb, 0x6e, 0x36, - 0x09, 0x8c, 0xc7, 0xa5, 0xd4, 0x4b, 0xa3, 0x3c, 0x40, 0x08, 0xbd, 0x63, 0x79, 0xd6, 0x43, 0x3e, - 0x92, 0xff, 0xc6, 0xd5, 0x41, 0x31, 0xd6, 0xe0, 0x33, 0x53, 0xda, 0x20, 0x91, 0xcd, 0xe5, 0xb4, - 0xbc, 0xba, 0x19, 0xa1, 0x1e, 0xfb, 0xf9, 0xab, 0x69, 0x3e, 0xce, 0xb2, 0xec, 0xcb, 0x34, 0x7e, - 0x8e, 0xb4, 0x46, 0xcf, 0xef, 0xa6, 0x5f, 0xa6, 0x28, 0x4e, 0x57, 0x71, 0xa8, 0x35, 0x5a, 0x58, - 0xbb, 0x7d, 0x35, 0xde, 0x89, 0xba, 0x2f, 0xfd, 0xa3, 0x7d, 0xc4, 0x11, 0x6d, 0xe3, 0x67, 0xfd, - 0xe0, 0x6a, 0x7c, 0xd4, 0xd3, 0x8f, 0xfb, 0x1d, 0x5c, 0xea, 0x5f, 0xbc, 0x88, 0xa2, 0xab, 0x31, - 0x85, 0xec, 0x44, 0xfb, 0x18, 0xd2, 0x79, 0x29, 0x42, 0x20, 0x03, 0x7d, 0xba, 0x41, 0x8c, 0x2a, - 0xdf, 0x91, 0x1b, 0x3e, 0x5f, 0x15, 0xe8, 0x17, 0x79, 0x35, 0x5e, 0x04, 0x2d, 0x44, 0x04, 0x0b, - 0x5a, 0x07, 0x9d, 0xef, 0x90, 0xd9, 0x35, 0xf8, 0xb1, 0xab, 0x91, 0xa8, 0xd3, 0x49, 0xee, 0xa0, - 0xd2, 0x42, 0xc0, 0x2f, 0xa4, 0x7a, 0x64, 0xcd, 0x28, 0xbe, 0x77, 0x16, 0x00, 0x12, 0x65, 0x40, - 0xcc, 0xf0, 0xfc, 0xbe, 0xe6, 0x4e, 0x5a, 0x2e, 0xab, 0x48, 0x97, 0x39, 0xc4, 0x2d, 0x9d, 0x4c, - 0xf3, 0xeb, 0xd6, 0x2f, 0xf1, 0x28, 0xcb, 0x94, 0xd8, 0xd8, 0xe6, 0xef, 0xc3, 0x29, 0xb5, 0xc6, - 0x08, 0x04, 0xa2, 0x78, 0x64, 0xb0, 0xec, 0xb4, 0x76, 0x42, 0x17, 0xf9, 0xd4, 0x45, 0xd2, 0x85, - 0x0d, 0xb6, 0x70, 0xd7, 0xa9, 0xbc, 0xe0, 0x32, 0xea, 0x3a, 0x9c, 0xfa, 0x7f, 0xb2, 0xb4, 0xfc, - 0x65, 0x5b, 0xd8, 0x53, 0x22, 0xb4, 0xd3, 0x65, 0x08, 0x96, 0x64, 0x37, 0xa9, 0x66, 0x47, 0x6d, - 0x6a, 0xcc, 0xb8, 0x5e, 0x5f, 0x3a, 0x65, 0xcd, 0xd9, 0x3f, 0xa0, 0xc3, 0x86, 0x5a, 0x43, 0x62, - 0xad, 0xfc, 0x80, 0xce, 0x17, 0x8c, 0x59, 0xc8, 0x86, 0x25, 0xc6, 0x77, 0xc8, 0x66, 0xd1, 0xf5, - 0x5d, 0x20, 0x02, 0x20, 0xfd, 0x3f, 0x49, 0x84, 0x17, 0x51, 0x3e, 0x45, 0xd7, 0x57, 0x12, 0xee, - 0xbd, 0xeb, 0x78, 0x32, 0x49, 0x77, 0x2f, 0x65, 0x20, 0x5e, 0xee, 0x4e, 0x46, 0x1a, 0x07, 0x05, - 0xa0, 0xfa, 0x06, 0x16, 0x21, 0x89, 0x57, 0x3c, 0x13, 0xe1, 0x2e, 0xbf, 0x00, 0xf1, 0x50, 0x81, - 0x28, 0x9f, 0xc3, 0x49, 0x0e, 0x51, 0x26, 0x8e, 0xcb, 0xf8, 0xba, 0xed, 0xdd, 0x25, 0xc4, 0x85, - 0x70, 0xef, 0x29, 0x9f, 0x29, 0x3c, 0xc8, 0xb0, 0xa4, 0x2f, 0xb4, 0x7d, 0x25, 0xd3, 0x75, 0xc0, - 0xe9, 0x69, 0xef, 0x96, 0x6e, 0x12, 0xe0, 0x1f, 0xdd, 0x85, 0xf2, 0x8b, 0xf0, 0x66, 0xc6, 0x9d, - 0x83, 0xec, 0x87, 0x6d, 0x79, 0xe8, 0x59, 0x38, 0xf1, 0xe6, 0x8b, 0xe0, 0xd2, 0xd8, 0x95, 0xb8, - 0x12, 0x9d, 0x40, 0x01, 0xb6, 0x8a, 0x62, 0x16, 0xb5, 0x62, 0x06, 0x15, 0x5c, 0xe0, 0xf9, 0x2c, - 0x94, 0x19, 0x07, 0xb7, 0x12, 0xd3, 0x14, 0x1e, 0x16, 0x75, 0x31, 0x32, 0x88, 0x1d, 0xfa, 0xa3, - 0x38, 0xf8, 0xf1, 0x47, 0xc7, 0xa6, 0x53, 0x2d, 0x18, 0xe9, 0x6e, 0x9a, 0x30, 0x81, 0xe1, 0xc3, - 0xf7, 0x83, 0x19, 0x1d, 0x8c, 0x77, 0x62, 0x8b, 0x0e, 0x4c, 0xe8, 0xca, 0x4f, 0x40, 0x08, 0x96, - 0xd0, 0xc0, 0x1b, 0xe2, 0xfd, 0x16, 0xa8, 0x91, 0x92, 0xed, 0xeb, 0x9a, 0x0e, 0xa0, 0xb5, 0x9d, - 0x46, 0x82, 0x5e, 0x82, 0x3c, 0xd0, 0x8d, 0x64, 0x50, 0xd5, 0x6b, 0xd5, 0x2a, 0xbf, 0xd3, 0x85, - 0xea, 0x2f, 0x02, 0x90, 0x6e, 0x43, 0x04, 0x9f, 0x5e, 0x0d, 0x68, 0x2b, 0x56, 0x7b, 0x04, 0x5b, - 0x26, 0x8c, 0x1b, 0x33, 0x34, 0xe3, 0xe5, 0x82, 0x86, 0x41, 0x4e, 0x40, 0x85, 0xb6, 0xda, 0xc1, - 0xab, 0xbe, 0xa8, 0x06, 0x3b, 0x41, 0x41, 0x6c, 0xae, 0x26, 0x7a, 0x9c, 0x46, 0xde, 0x8c, 0x3c, - 0x0e, 0xa3, 0x28, 0x2a, 0xe1, 0xbc, 0xdc, 0xed, 0x4f, 0x0f, 0x0d, 0x28, 0xcc, 0x54, 0x43, 0xf6, - 0xa7, 0x51, 0x71, 0x36, 0x3d, 0x0f, 0x92, 0x0d, 0x89, 0x11, 0x41, 0xb6, 0xfd, 0xc7, 0x6c, 0x16, - 0xe7, 0xaf, 0x87, 0x88, 0xd0, 0xdd, 0x4f, 0x2b, 0xa5, 0x4f, 0x8c, 0x9e, 0x58, 0x55, 0xc1, 0x8d, - 0x8f, 0xbc, 0x82, 0xda, 0x63, 0x16, 0x7a, 0x59, 0x50, 0xe1, 0x25, 0xf1, 0x30, 0x65, 0x2c, 0xee, - 0x26, 0x08, 0x0b, 0x35, 0x7f, 0x63, 0x72, 0x03, 0x98, 0x66, 0x37, 0x85, 0xdb, 0x84, 0xfa, 0x3c, - 0x8f, 0xfc, 0x05, 0xd2, 0x47, 0x16, 0x33, 0xc1, 0xae, 0x7a, 0x8b, 0x02, 0x50, 0x1b, 0xa5, 0x00, - 0xfe, 0xe5, 0x91, 0x39, 0x15, 0xcf, 0xe3, 0xde, 0xe4, 0x9e, 0xdc, 0xb5, 0x51, 0x9f, 0x86, 0xe4, - 0x74, 0xa9, 0xee, 0x9c, 0x3d, 0x04, 0x00, 0x61, 0x5a, 0x87, 0x69, 0x52, 0x12, 0x05, 0x43, 0x43, - 0x73, 0xb3, 0x59, 0x96, 0x6e, 0x2d, 0xe8, 0x3b, 0x87, 0xe7, 0x75, 0x52, 0x23, 0xc3, 0xd7, 0xee, - 0x1c, 0x66, 0x29, 0xdb, 0x77, 0xf7, 0x9a, 0x31, 0x25, 0x96, 0xf4, 0x75, 0x86, 0xe9, 0x5e, 0xfb, - 0x92, 0x6b, 0x71, 0xa8, 0x73, 0x6e, 0xea, 0x6a, 0x32, 0x1e, 0x58, 0x26, 0xce, 0x49, 0x52, 0x86, - 0x8f, 0x6e, 0x83, 0xa7, 0xd6, 0xb2, 0x84, 0x5a, 0x96, 0xc6, 0xd7, 0x40, 0xb2, 0xd3, 0xcb, 0xea, - 0x66, 0xf9, 0xf5, 0xb0, 0x7c, 0x95, 0xdb, 0x43, 0x66, 0x80, 0x6c, 0x8d, 0x16, 0xa5, 0x08, 0xdb, - 0xc0, 0xbd, 0x61, 0x1d, 0xe3, 0x95, 0x12, 0x5f, 0x8f, 0x52, 0x7a, 0xea, 0xb3, 0xf8, 0x97, 0xa2, - 0x5d, 0x2b, 0x8d, 0xe8, 0xec, 0x48, 0xe1, 0xd1, 0x59, 0x7a, 0x8e, 0xe4, 0x23, 0xed, 0x92, 0xe3, - 0xa9, 0x4c, 0xfd, 0xc3, 0xc2, 0x37, 0x30, 0x51, 0x70, 0x88, 0x4a, 0x0e, 0x8b, 0xdd, 0xb2, 0x9f, - 0xc0, 0xd0, 0xe7, 0x58, 0xb4, 0xd9, 0xc4, 0x7c, 0x73, 0x65, 0xb7, 0xcb, 0x8c, 0x4c, 0xb5, 0x42, - 0x08, 0x1c, 0x77, 0x7f, 0x9e, 0x3a, 0xc0, 0xee, 0x6e, 0x71, 0xca, 0x1c, 0x4b, 0x23, 0x50, 0xdc, - 0x65, 0xa1, 0x04, 0x48, 0x8e, 0x5b, 0xb6, 0x6a, 0xb9, 0x44, 0x44, 0x55, 0x3c, 0x79, 0x41, 0x05, - 0x4b, 0x69, 0x1b, 0xd5, 0x78, 0x52, 0x8a, 0x63, 0x3b, 0xfb, 0x98, 0x33, 0xa2, 0x52, 0x2c, 0x1c, - 0xcc, 0x33, 0x25, 0xcc, 0x28, 0x41, 0x68, 0xa6, 0x7c, 0x91, 0x2b, 0x14, 0xc2, 0xd0, 0xa2, 0x8e, - 0x26, 0xb5, 0x68, 0xd4, 0xa4, 0x0a, 0x4e, 0xda, 0x18, 0x3a, 0xbe, 0x74, 0x69, 0x7e, 0x75, 0x2c, - 0x73, 0xb1, 0x83, 0xf7, 0xd5, 0x06, 0xb7, 0x76, 0x1b, 0x23, 0x88, 0x8f, 0xa8, 0x3b, 0x75, 0x67, - 0x63, 0x91, 0xab, 0xa9, 0xac, 0xb3, 0x8d, 0x4d, 0x87, 0x60, 0xb7, 0xc6, 0xde, 0x9b, 0xfa, 0x03, - 0x7d, 0xad, 0x2c, 0x3d, 0x8f, 0x66, 0xea, 0x87, 0x51, 0xd5, 0x07, 0x76, 0x0c, 0x9a, 0x58, 0x84, - 0xef, 0x0c, 0x5d, 0x68, 0x02, 0x14, 0x44, 0x8c, 0x6f, 0xf1, 0x68, 0x4c, 0x58, 0x64, 0xa1, 0x9c, - 0x52, 0x82, 0x67, 0x91, 0x31, 0x08, 0x89, 0xbf, 0x9a, 0x17, 0x62, 0x50, 0x3b, 0x19, 0x21, 0xb8, - 0x8e, 0xbe, 0xb2, 0xc2, 0x3d, 0x24, 0x2d, 0x65, 0x7c, 0xe3, 0x25, 0x25, 0x42, 0x35, 0x71, 0xc7, - 0x25, 0xd5, 0x44, 0x34, 0x4b, 0x53, 0x58, 0x17, 0xd7, 0xd9, 0xf4, 0x57, 0x38, 0xd7, 0x43, 0x80, - 0xb6, 0x18, 0xa4, 0xd2, 0x88, 0x19, 0x25, 0xa8, 0xc0, 0x4e, 0xea, 0xb6, 0x3c, 0x05, 0x37, 0xcd, - 0x09, 0x2a, 0x96, 0x5f, 0xe6, 0x18, 0xa0, 0xcb, 0x15, 0xe9, 0x52, 0x7b, 0x41, 0xed, 0x3a, 0x10, - 0xc3, 0x6a, 0x08, 0x06, 0xf0, 0x25, 0x35, 0xf0, 0xbc, 0xcd, 0x4c, 0x10, 0x8b, 0xf2, 0x4f, 0xdc, - 0xe8, 0x11, 0x9a, 0xe6, 0x94, 0x56, 0x44, 0xab, 0x69, 0xae, 0x39, 0xb6, 0x8c, 0x92, 0x9b, 0xbc, - 0xdd, 0xc8, 0xa5, 0x56, 0x7f, 0x23, 0x7d, 0x4d, 0xf8, 0xed, 0x82, 0x21, 0x16, 0xfe, 0xf7, 0x75, - 0x9d, 0x93, 0x47, 0x8f, 0x5b, 0x24, 0xbe, 0x0d, 0x3e, 0x44, 0x2f, 0x68, 0x16, 0x4e, 0xa9, 0x24, - 0x70, 0x40, 0xbe, 0xef, 0x28, 0xfe, 0x0a, 0xaa, 0xdc, 0x29, 0x19, 0xd3, 0x54, 0xab, 0xf7, 0x45, - 0xe9, 0x99, 0xff, 0x61, 0x6e, 0x44, 0x06, 0x85, 0xf3, 0xf0, 0x31, 0xbb, 0x81, 0x5e, 0x2a, 0x06, - 0xd5, 0x00, 0x24, 0x2e, 0x89, 0x85, 0x06, 0x71, 0x58, 0x1c, 0xe7, 0x19, 0x21, 0xa9, 0x61, 0x2e, - 0x7a, 0x49, 0x64, 0xca, 0xc5, 0x58, 0x12, 0x2d, 0xd2, 0x21, 0xc5, 0x70, 0x10, 0x16, 0xbf, 0x81, - 0x38, 0xd9, 0xf6, 0x20, 0xad, 0x31, 0xf7, 0xc2, 0xf9, 0x5f, 0x33, 0x5a, 0xca, 0xd3, 0x38, 0x88, - 0xfb, 0x6a, 0x1f, 0x9b, 0x8d, 0x11, 0xbf, 0x5e, 0xaf, 0x48, 0xb0, 0x7a, 0x0d, 0xf3, 0xcb, 0x58, - 0x4c, 0x63, 0x5a, 0xf6, 0x55, 0xa0, 0xbb, 0xe3, 0x9a, 0x28, 0x7d, 0x39, 0xd7, 0xd3, 0x8c, 0xda, - 0xdc, 0xf3, 0x1f, 0x1e, 0x64, 0x35, 0xca, 0xca, 0x73, 0x01, 0xcf, 0x6d, 0x68, 0x4c, 0xdd, 0x54, - 0x90, 0x1b, 0xaa, 0x67, 0xff, 0x69, 0x1a, 0xf6, 0xf2, 0xed, 0x4f, 0xaf, 0x3f, 0xb4, 0xbd, 0x72, - 0x38, 0x1a, 0xf3, 0x61, 0xd4, 0xf3, 0xcf, 0xb8, 0x17, 0xce, 0xd5, 0xc8, 0xfa, 0x98, 0xcd, 0x82, - 0xff, 0x7d, 0xdd, 0x74, 0xfb, 0x46, 0x0d, 0xaf, 0xad, 0xb6, 0xee, 0x9b, 0x8e, 0xef, 0x00, 0xc1, - 0xd1, 0xd8, 0xe7, 0xfa, 0x73, 0x8c, 0x67, 0xcf, 0x2a, 0xed, 0x50, 0x2f, 0x56, 0x54, 0xee, 0xde, - 0x23, 0x4b, 0x26, 0xd9, 0x51, 0xe8, 0x88, 0x5a, 0x20, 0x97, 0xd9, 0x4e, 0x3b, 0xfd, 0xbe, 0x78, - 0x7e, 0xf7, 0x1b, 0x9c, 0x6a, 0xb3, 0x77, 0xd3, 0xfb, 0xf8, 0x02, 0x31, 0x1a, 0x3b, 0x5b, 0xb8, - 0xc6, 0xb6, 0xb9, 0xb8, 0x47, 0x1d, 0x02, 0x86, 0xf2, 0x4d, 0xc0, 0x21, 0x91, 0xf2, 0x62, 0x40, - 0x72, 0xb4, 0xd7, 0xed, 0xc1, 0xb1, 0x65, 0x93, 0xaa, 0x82, 0x08, 0xc3, 0x2d, 0x03, 0xf9, 0x40, - 0xad, 0xf9, 0xd4, 0x45, 0x7e, 0x3e, 0x19, 0x1c, 0xd7, 0xca, 0xaf, 0x6d, 0x6f, 0x77, 0x77, 0xea, - 0x05, 0x9c, 0x6e, 0x17, 0xe1, 0xac, 0x93, 0xa8, 0xbb, 0x9b, 0x68, 0x25, 0xd2, 0x10, 0x0f, 0x5e, - 0x5f, 0x0a, 0x55, 0x04, 0x38, 0x45, 0x2c, 0xcb, 0x63, 0xe2, 0x05, 0x89, 0xbf, 0x69, 0xbb, 0x76, - 0x21, 0x23, 0x35, 0x23, 0xa4, 0x97, 0x12, 0x41, 0xb9, 0xcf, 0xef, 0x7e, 0x8b, 0x94, 0x4c, 0x4e, - 0xcb, 0x07, 0xe1, 0x3c, 0xf7, 0x85, 0x84, 0x4d, 0xb7, 0xeb, 0x54, 0x03, 0x33, 0x88, 0x6f, 0xbf, - 0x78, 0x9d, 0x25, 0x58, 0x08, 0xfc, 0x8a, 0x22, 0xbd, 0x0a, 0x74, 0xd8, 0x48, 0x2b, 0x50, 0x69, - 0x7d, 0x71, 0xd2, 0xa9, 0x98, 0x0a, 0x88, 0x1f, 0x6a, 0xff, 0xc2, 0x26, 0x43, 0xea, 0x60, 0x9d, - 0x95, 0xa2, 0xac, 0xa0, 0x9e, 0x86, 0x15, 0x02, 0x85, 0xae, 0xbb, 0xe8, 0xee, 0xb7, 0x1a, 0xa7, - 0x05, 0x47, 0x60, 0x6c, 0x58, 0x42, 0x3a, 0xa3, 0x80, 0x57, 0x91, 0x1a, 0x24, 0xaf, 0x82, 0x66, - 0x89, 0x6f, 0x36, 0xbe, 0xf6, 0x02, 0x15, 0x05, 0xcd, 0xf3, 0xf4, 0x0b, 0xf2, 0xc7, 0xad, 0xb2, - 0xf7, 0xe2, 0xd9, 0x33, 0x9d, 0x9a, 0xb4, 0x60, 0x5a, 0xd7, 0x86, 0x97, 0x2a, 0xa1, 0xb9, 0xf8, - 0xdd, 0xb3, 0x67, 0x10, 0x1b, 0x22, 0xef, 0xe3, 0x8f, 0xc3, 0x6e, 0xef, 0xa0, 0x33, 0xe8, 0xed, - 0x77, 0xc2, 0xde, 0x0f, 0xb0, 0xc3, 0x6c, 0x61, 0x49, 0x30, 0x94, 0xf2, 0xa2, 0xb2, 0xd3, 0xef, - 0x87, 0x07, 0xfb, 0x05, 0x0a, 0xe5, 0x07, 0x9c, 0x5f, 0xa8, 0x6b, 0x82, 0x9e, 0xe7, 0x4b, 0x99, - 0xd5, 0x91, 0xa0, 0xf7, 0x35, 0xbe, 0x99, 0x77, 0x02, 0x65, 0x97, 0xd8, 0xee, 0x5c, 0x1e, 0x09, - 0xed, 0x2e, 0x1b, 0x9f, 0x47, 0x0e, 0x33, 0x9c, 0x45, 0xba, 0xe8, 0xf6, 0x9a, 0x03, 0x34, 0x04, - 0xc4, 0x1b, 0x78, 0x1d, 0x94, 0x1d, 0x6f, 0xca, 0xcc, 0x7b, 0x44, 0x27, 0x9a, 0x71, 0xc9, 0x77, - 0x8f, 0x75, 0x39, 0x50, 0xfb, 0x04, 0xb9, 0xbd, 0xc0, 0x3f, 0xf2, 0x72, 0x7e, 0x0c, 0x0b, 0xd3, - 0x9b, 0x38, 0x46, 0xdf, 0xe3, 0xbd, 0xbd, 0x3d, 0x45, 0xcd, 0xad, 0x19, 0x76, 0x8c, 0xca, 0xc6, - 0x90, 0x72, 0xc3, 0xae, 0x74, 0x35, 0x9d, 0x80, 0x54, 0xc8, 0x37, 0x28, 0x40, 0xe6, 0x24, 0xaf, - 0x33, 0xfe, 0x55, 0xf8, 0xbe, 0x44, 0xdf, 0x99, 0xc2, 0x48, 0xf6, 0xd5, 0x1b, 0xbc, 0xf1, 0x3e, - 0xa0, 0x95, 0xf6, 0xe1, 0xc1, 0x15, 0x54, 0xe3, 0x60, 0x0e, 0xa1, 0xe4, 0x0d, 0x10, 0x88, 0xd2, - 0x40, 0x58, 0x40, 0xa9, 0xfc, 0xb0, 0x31, 0x3e, 0x5d, 0xbc, 0x37, 0x1a, 0xb0, 0x5a, 0x35, 0x16, - 0x3c, 0x87, 0x96, 0xce, 0xd2, 0xd4, 0x0b, 0x60, 0x8c, 0xab, 0xe9, 0x05, 0x3b, 0x2f, 0xc9, 0x08, - 0x38, 0x59, 0xe3, 0x14, 0x6d, 0x34, 0x3c, 0xa8, 0x3c, 0x22, 0x55, 0xa0, 0xbe, 0x87, 0x7c, 0xea, - 0xb1, 0xae, 0x33, 0xf4, 0x64, 0xcb, 0xee, 0x20, 0x33, 0x9c, 0xd0, 0x01, 0x1e, 0x1c, 0x1a, 0x23, - 0x96, 0xb8, 0x4b, 0x31, 0x86, 0xfd, 0x9a, 0x98, 0x94, 0x25, 0x48, 0xe6, 0x5e, 0x80, 0x6b, 0xec, - 0x9a, 0x78, 0x37, 0xb3, 0x75, 0xd1, 0xe8, 0xc3, 0x70, 0x08, 0xb3, 0xf1, 0xfe, 0xeb, 0xf0, 0x39, - 0xac, 0x83, 0xd3, 0x59, 0x79, 0xd4, 0x3a, 0x7c, 0x8e, 0xbc, 0x44, 0xf8, 0xf7, 0xaa, 0xbc, 0x4e, - 0x8e, 0x5a, 0xff, 0x07, 0x83, 0x5a, 0xe4, 0x1c, 0x1e, 0x8b, 0x01, 0x00 + 0xb2, 0x30, 0xf8, 0xdf, 0x4f, 0xa1, 0x52, 0xed, 0xe3, 0x82, 0x83, 0x0c, 0x62, 0x34, 0x43, 0x61, + 0x7f, 0x18, 0xcf, 0xb3, 0x8d, 0xe7, 0xba, 0xb5, 0xbe, 0x12, 0x90, 0x80, 0x6c, 0x21, 0xc9, 0x92, + 0x18, 0x6c, 0x8a, 0xfb, 0x18, 0xbd, 0x56, 0xbf, 0x40, 0xff, 0xe8, 0x7e, 0xab, 0x7e, 0x92, 0x8e, + 0xc8, 0xd4, 0x90, 0x12, 0x02, 0xbb, 0xf6, 0xdd, 0xf7, 0xae, 0xde, 0xe7, 0x94, 0x91, 0x72, 0x88, + 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x88, 0x8c, 0x4c, 0x7d, 0xff, 0xb2, 0x7b, 0xd1, 0xbc, 0x79, 0xbc, + 0xdc, 0x13, 0x06, 0xce, 0x50, 0xdb, 0x12, 0xbe, 0xe3, 0x8f, 0xa0, 0x29, 0x7a, 0xbf, 0x2e, 0x12, + 0x5d, 0xc4, 0x04, 0xa2, 0x74, 0xe1, 0x67, 0x48, 0x1c, 0x45, 0xd0, 0x95, 0x21, 0xa9, 0x8b, 0x63, + 0x95, 0x4c, 0x4c, 0xc3, 0x72, 0x44, 0x61, 0xad, 0x63, 0xe8, 0x0e, 0xd1, 0x9d, 0xba, 0x38, 0x51, + 0xbb, 0xce, 0xa0, 0xde, 0x25, 0x63, 0xb5, 0x43, 0x36, 0xe8, 0x8b, 0xa4, 0xea, 0xaa, 0xa3, 0x2a, + 0xda, 0x86, 0xdd, 0x51, 0x34, 0x52, 0xcf, 0x4a, 0x43, 0x48, 0x18, 0x8e, 0x86, 0xde, 0xbb, 0xe8, + 0x01, 0x5d, 0xeb, 0x0c, 0x14, 0xcb, 0x26, 0x00, 0x64, 0xe4, 0xf4, 0x36, 0xca, 0x62, 0xb8, 0x31, + 0x67, 0x40, 0x86, 0x64, 0xa3, 0x63, 0x68, 0x86, 0x25, 0x0a, 0x7e, 0x73, 0x5f, 0x73, 0xf4, 0x3f, + 0x0e, 0x86, 0x97, 0xf3, 0x46, 0x6c, 0xd1, 0xad, 0xaa, 0x98, 0xa6, 0x46, 0x36, 0x86, 0x46, 0x5b, + 0x85, 0x9f, 0x09, 0x69, 0x6f, 0x40, 0xc2, 0x46, 0x47, 0x31, 0x95, 0xb6, 0x46, 0xb0, 0xa6, 0xa6, + 0xea, 0x2f, 0x82, 0x45, 0xb4, 0xba, 0x68, 0x0f, 0xa0, 0x3b, 0x9d, 0x91, 0x23, 0xa8, 0x00, 0x07, + 0xba, 0x35, 0xb0, 0x48, 0xaf, 0x2e, 0x76, 0x15, 0x47, 0xa9, 0xaa, 0x43, 0xa5, 0x4f, 0x32, 0xd3, + 0x0d, 0xcc, 0xa9, 0xb5, 0x15, 0x9b, 0x94, 0x0a, 0x52, 0xa3, 0xd1, 0xd8, 0x69, 0x34, 0xf6, 0x1a, + 0x7b, 0xf0, 0x17, 0x7f, 0x0f, 0x1a, 0xcd, 0x03, 0x7c, 0xda, 0xef, 0xc3, 0x9f, 0x23, 0xed, 0xea, + 0xe6, 0xa5, 0x73, 0xde, 0x1c, 0x18, 0x27, 0x98, 0xb6, 0x7b, 0xab, 0x1d, 0x5d, 0xef, 0x1f, 0xe1, + 0xe3, 0x15, 0x2b, 0xdd, 0xa7, 0x65, 0x0f, 0x33, 0x97, 0x99, 0x47, 0x4c, 0xd9, 0xcb, 0x1e, 0x5f, + 0xef, 0xed, 0xdf, 0x5e, 0x1c, 0x65, 0x9f, 0x21, 0x29, 0x73, 0x39, 0xb9, 0x98, 0xf6, 0xcf, 0x0f, + 0x48, 0xe3, 0xf6, 0x6c, 0xba, 0x57, 0x39, 0x28, 0x75, 0xae, 0x9a, 0x27, 0xbb, 0xf7, 0x8d, 0x81, + 0xd9, 0xd8, 0x7d, 0xca, 0xf5, 0xca, 0x97, 0x67, 0xcf, 0x3b, 0xad, 0xfc, 0xd5, 0xbd, 0x5c, 0xbe, + 0x3a, 0xc9, 0xc9, 0x27, 0xca, 0x53, 0x33, 0xd7, 0xef, 0x35, 0x2b, 0x83, 0xa6, 0xfe, 0x6a, 0x8c, + 0x8c, 0xf3, 0x7e, 0xe3, 0xba, 0xff, 0xb8, 0xf9, 0x7e, 0x36, 0x6d, 0xbc, 0x9d, 0x6b, 0xb7, 0xdd, + 0xab, 0x43, 0xed, 0x41, 0x6d, 0x68, 0x17, 0xb9, 0xb3, 0xdd, 0xc6, 0x6e, 0x29, 0xbf, 0x77, 0xf7, + 0x7a, 0x7e, 0xd8, 0x20, 0x72, 0x83, 0x22, 0xa2, 0xed, 0xdf, 0xbc, 0xb4, 0x46, 0x57, 0xc3, 0x66, + 0x53, 0xdc, 0x5a, 0x13, 0xbe, 0x3b, 0xaa, 0xa3, 0x91, 0xad, 0xfb, 0xd3, 0xbd, 0xdd, 0xef, 0x19, + 0xf6, 0x2c, 0x7c, 0xb7, 0x3b, 0x96, 0x6a, 0x3a, 0x5b, 0x6b, 0xbd, 0x91, 0xde, 0x71, 0x54, 0x43, + 0x17, 0x7a, 0x84, 0x74, 0xdb, 0x4a, 0xe7, 0x25, 0x91, 0x9c, 0xcd, 0xc7, 0x8a, 0x25, 0xc0, 0x90, + 0x1b, 0x9d, 0xd1, 0x10, 0x28, 0x9f, 0xee, 0x13, 0x67, 0x4f, 0x23, 0xf8, 0x68, 0xef, 0xbc, 0xdd, + 0x28, 0xfd, 0x73, 0x18, 0x83, 0x84, 0x88, 0xdc, 0x23, 0x26, 0x7f, 0xc8, 0x3f, 0x25, 0x2d, 0x28, + 0xda, 0xb1, 0x88, 0xe2, 0x10, 0xb7, 0x74, 0x42, 0x64, 0xad, 0x88, 0xc9, 0x9a, 0x96, 0x76, 0xde, + 0x4c, 0x77, 0xe0, 0xd4, 0x8e, 0x82, 0x2d, 0x66, 0x9e, 0x95, 0xb1, 0xe2, 0x16, 0x90, 0xb4, 0xb4, + 0x6d, 0x75, 0xea, 0xa2, 0x6a, 0x19, 0xe9, 0x67, 0x1b, 0x5f, 0x95, 0x6e, 0x77, 0x6f, 0x0c, 0x30, + 0x4e, 0x55, 0x1b, 0x46, 0x9f, 0x58, 0x09, 0x51, 0x33, 0xa0, 0x3d, 0x89, 0xd4, 0xb7, 0x66, 0x1d, + 0x53, 0xed, 0xbc, 0xd4, 0x75, 0x32, 0x11, 0xb0, 0x7c, 0x13, 0x19, 0xe8, 0x12, 0x52, 0xb0, 0xd0, + 0x57, 0x93, 0x3e, 0x88, 0xd2, 0x8c, 0x72, 0x6a, 0x35, 0x57, 0x92, 0xa5, 0xc9, 0x80, 0x10, 0xed, + 0x54, 0xed, 0x0f, 0x1c, 0x9d, 0xd8, 0x76, 0xf5, 0x4b, 0x96, 0xa5, 0x34, 0xf4, 0xbe, 0x46, 0xaa, + 0xb9, 0x4d, 0xb7, 0xc0, 0xae, 0x6a, 0x11, 0x4a, 0x89, 0xaa, 0xd8, 0xd1, 0x8c, 0xce, 0xcb, 0x44, + 0xb5, 0x09, 0x20, 0xa2, 0xbc, 0x19, 0x23, 0xa7, 0xfa, 0x63, 0xd6, 0x31, 0x86, 0xa6, 0xa1, 0x03, + 0x42, 0x55, 0x6c, 0x73, 0xa4, 0xa6, 0xef, 0xb1, 0x92, 0x64, 0x98, 0x58, 0xc5, 0xae, 0xce, 0xe6, + 0xf3, 0x9f, 0xf3, 0xa4, 0x44, 0x31, 0x4b, 0x1b, 0x7a, 0x42, 0x54, 0x75, 0x13, 0xea, 0x11, 0x1d, + 0x50, 0x4e, 0x24, 0x01, 0x67, 0x98, 0x05, 0x14, 0xd1, 0x44, 0x36, 0x19, 0x2a, 0x47, 0xd9, 0xbf, + 0x0a, 0xf3, 0x44, 0xef, 0x13, 0xb7, 0xe8, 0xc8, 0x04, 0xf6, 0x24, 0x97, 0x2d, 0x4d, 0xed, 0x12, + 0xcb, 0x4e, 0x40, 0xf9, 0x1a, 0x0e, 0x88, 0xf3, 0x31, 0x95, 0x9d, 0x0f, 0xa8, 0xec, 0x30, 0x2a, + 0x5b, 0xd8, 0x98, 0x63, 0x8c, 0x3a, 0x03, 0x4a, 0x6c, 0x67, 0x25, 0xb1, 0x69, 0x61, 0xbb, 0x7e, + 0x8d, 0x3f, 0x37, 0xb4, 0x0e, 0x74, 0x65, 0x64, 0x26, 0xbe, 0xd1, 0x1e, 0xfe, 0x60, 0x0d, 0xd2, + 0x42, 0xe2, 0xcf, 0x6f, 0xd2, 0x0c, 0x90, 0xd5, 0x88, 0x03, 0xc8, 0x42, 0xa9, 0x23, 0x98, 0xb8, + 0xd6, 0x58, 0xd1, 0x12, 0xb4, 0x5b, 0x22, 0x92, 0x10, 0xf2, 0x88, 0x58, 0xaf, 0x07, 0x5d, 0x81, + 0x9e, 0x74, 0xdf, 0x5a, 0x0e, 0x74, 0x67, 0x7d, 0x3d, 0xd1, 0xd1, 0x88, 0x62, 0xf9, 0xb5, 0x9c, + 0xa4, 0x64, 0xe8, 0xa7, 0x80, 0x48, 0x22, 0x99, 0x9c, 0x4b, 0x59, 0x59, 0x46, 0xca, 0x01, 0xd8, + 0x1b, 0x75, 0x48, 0x60, 0x50, 0x18, 0xd4, 0x41, 0x1a, 0x3a, 0x0b, 0x64, 0x6e, 0x0e, 0x54, 0xad, + 0x0b, 0x55, 0x3e, 0x59, 0x50, 0x73, 0x0b, 0xae, 0x7d, 0xcf, 0xb8, 0x33, 0x01, 0xa6, 0x84, 0xf3, + 0x06, 0x53, 0x63, 0xed, 0x7f, 0xf5, 0x40, 0xe0, 0x6c, 0xf4, 0x94, 0x0e, 0x99, 0xb9, 0x4f, 0x43, + 0x55, 0x7b, 0xab, 0xde, 0x1f, 0x81, 0x98, 0xb0, 0x6b, 0x40, 0xc0, 0xea, 0xc8, 0xd2, 0x12, 0x54, + 0x82, 0x60, 0x7e, 0x66, 0x62, 0xf4, 0x7a, 0xb9, 0x9a, 0x27, 0xe9, 0xa8, 0xa0, 0xf3, 0xa4, 0x49, + 0x57, 0xae, 0x1c, 0x9c, 0xf5, 0x1b, 0x54, 0x96, 0x34, 0x1a, 0xfa, 0x6d, 0xa3, 0x61, 0xb3, 0x09, + 0x9a, 0xc5, 0xbf, 0xc3, 0xfd, 0x46, 0xe3, 0xe0, 0x69, 0xd8, 0x6f, 0x2c, 0xfd, 0x6f, 0x67, 0xd8, + 0x68, 0xf4, 0x1f, 0x26, 0xd7, 0xcd, 0xc6, 0x6b, 0xe7, 0xf1, 0xf8, 0xe9, 0xa8, 0x71, 0xf3, 0xd8, + 0x3c, 0x6e, 0x9c, 0x4f, 0x9a, 0xef, 0x46, 0x63, 0xa7, 0x09, 0x42, 0x69, 0xf2, 0x78, 0x78, 0xb4, + 0x63, 0x6f, 0xee, 0x96, 0xd5, 0x8b, 0xc9, 0x7b, 0x7f, 0x98, 0x3f, 0x7b, 0x38, 0xd3, 0xdf, 0x9f, + 0x9a, 0x2f, 0x8e, 0xfe, 0xdc, 0x69, 0x9f, 0xa7, 0xae, 0xb4, 0xe3, 0x53, 0xe5, 0x38, 0x3f, 0xd2, + 0x6e, 0x4f, 0x4d, 0xcd, 0xbc, 0x2f, 0xdd, 0xbe, 0xde, 0xab, 0x06, 0x69, 0x55, 0xb2, 0xc7, 0x6f, + 0x44, 0x7e, 0xbe, 0xd5, 0x8e, 0x27, 0x4f, 0x56, 0x51, 0xbf, 0xe9, 0xee, 0xe5, 0x4f, 0x75, 0xa7, + 0x7b, 0x39, 0x6e, 0xf4, 0x53, 0x3d, 0x27, 0xd3, 0x6b, 0xdb, 0xa7, 0xf6, 0x81, 0x76, 0x7e, 0x3a, + 0x1a, 0x68, 0xc3, 0xab, 0xe7, 0x13, 0x75, 0xf3, 0xfc, 0x72, 0x77, 0xef, 0xa8, 0x3f, 0xb9, 0x19, + 0x82, 0x14, 0x53, 0x4a, 0xc3, 0xae, 0x96, 0x6a, 0x1d, 0xde, 0xee, 0x0c, 0xf6, 0x8e, 0xba, 0x87, + 0xfb, 0x53, 0xe5, 0x65, 0xd3, 0x2e, 0xec, 0x65, 0xde, 0xde, 0x07, 0xc7, 0xad, 0xe7, 0xe6, 0xe6, + 0xce, 0xd5, 0xd5, 0x69, 0x6f, 0x77, 0x62, 0x98, 0xfb, 0x19, 0xb5, 0xa4, 0xbc, 0xb6, 0xf6, 0xb4, + 0xbd, 0xfd, 0xdd, 0x87, 0x69, 0xf9, 0xe9, 0xee, 0xfe, 0xf9, 0x2d, 0x6f, 0xbd, 0x0d, 0x0b, 0xe7, + 0xa5, 0x7d, 0xed, 0xe9, 0xaa, 0x30, 0x18, 0xa5, 0xf4, 0x07, 0xfb, 0xe0, 0x68, 0xf7, 0xec, 0x6a, + 0x3f, 0xdf, 0x6f, 0x4c, 0x95, 0x6c, 0xa1, 0xd1, 0x6f, 0x58, 0xce, 0xdd, 0xd9, 0xa0, 0xf7, 0xd2, + 0x7f, 0xee, 0xed, 0x35, 0xda, 0x6a, 0x73, 0x30, 0x19, 0xb5, 0x8e, 0x26, 0x7b, 0xb7, 0xcd, 0xe1, + 0xa8, 0x7b, 0x39, 0x50, 0xaf, 0xba, 0x37, 0x25, 0x6b, 0x7c, 0xf4, 0x7c, 0xda, 0xba, 0x7e, 0xda, + 0x9b, 0xec, 0x0e, 0xf6, 0x2b, 0x3b, 0x47, 0xb6, 0x61, 0x1c, 0x15, 0xf3, 0x37, 0x47, 0xd7, 0x47, + 0xc6, 0xd1, 0xed, 0x6e, 0xf9, 0xe5, 0xed, 0xfc, 0xe9, 0x68, 0xf3, 0xf6, 0xb9, 0xf1, 0x76, 0x66, + 0x5d, 0x67, 0x94, 0xb3, 0xcc, 0xee, 0x44, 0xb9, 0x30, 0x8d, 0x77, 0x65, 0x50, 0x39, 0x3d, 0x68, + 0xda, 0x8f, 0xb9, 0xf7, 0xf3, 0xdc, 0xe3, 0xc5, 0xbb, 0x9d, 0x3b, 0xcd, 0x4f, 0x5f, 0xc9, 0xb9, + 0x59, 0x78, 0x7f, 0x78, 0x7e, 0x2d, 0xb7, 0x1f, 0x6e, 0x32, 0x83, 0xb3, 0x9d, 0xd3, 0xe7, 0x4c, + 0x31, 0xff, 0xb8, 0xdb, 0x38, 0x6a, 0xa5, 0x36, 0x47, 0xa5, 0x52, 0x59, 0xcf, 0x1f, 0xa6, 0x0e, + 0xaf, 0x2f, 0xbb, 0x4f, 0xdd, 0xec, 0x28, 0x7f, 0xf3, 0xde, 0xbd, 0x7e, 0xea, 0xde, 0x9d, 0xdd, + 0xf4, 0x8e, 0xb4, 0xe2, 0x61, 0xef, 0xa4, 0xdf, 0xcd, 0xb6, 0x37, 0x5b, 0xe3, 0xd7, 0x6e, 0xe5, + 0xbe, 0x32, 0x32, 0xad, 0xee, 0x65, 0xf9, 0xea, 0xe6, 0x62, 0x48, 0x94, 0xf7, 0xe2, 0xcd, 0xe5, + 0xc5, 0xf5, 0xb1, 0xb6, 0xbb, 0xfb, 0x7c, 0x78, 0xf7, 0x7c, 0x20, 0x37, 0xce, 0xcf, 0xae, 0x1e, + 0xed, 0xe1, 0xb5, 0x75, 0xa2, 0x0d, 0xcd, 0xb7, 0xd7, 0xbb, 0xcd, 0x97, 0x51, 0xfb, 0xe8, 0xaa, + 0x99, 0x3b, 0x68, 0x1d, 0xbd, 0xec, 0xb7, 0x52, 0x67, 0x3a, 0x69, 0x1e, 0x17, 0xca, 0xc7, 0xc7, + 0xfb, 0x77, 0xcd, 0xc1, 0x55, 0x6f, 0x34, 0x39, 0x39, 0x33, 0x73, 0x6f, 0xb7, 0x15, 0x73, 0xf8, + 0x9a, 0xbd, 0x3b, 0xb9, 0xbd, 0x2e, 0x59, 0xc4, 0x91, 0x0f, 0x4c, 0xb9, 0xf5, 0x7c, 0xf7, 0x78, + 0x7d, 0xbd, 0x9f, 0x7a, 0x78, 0xde, 0x4c, 0x5d, 0xa8, 0xb7, 0xad, 0x97, 0xcc, 0xc1, 0xd1, 0xfb, + 0x28, 0x3b, 0x54, 0x0f, 0x9f, 0xee, 0xa7, 0xa9, 0x7e, 0xf9, 0x31, 0x7b, 0x7d, 0xfb, 0xe2, 0x5c, + 0x0e, 0x5f, 0x8f, 0x54, 0xe7, 0xfa, 0xe6, 0xe1, 0xee, 0xfc, 0xfd, 0xbd, 0xe9, 0x8c, 0xf6, 0x2f, + 0x4f, 0x3a, 0x87, 0xf2, 0xfb, 0xf5, 0xce, 0x41, 0xea, 0xb1, 0x92, 0x69, 0xea, 0x83, 0x1d, 0x25, + 0x27, 0x8f, 0x8b, 0xc6, 0x61, 0xcf, 0xde, 0xbb, 0x3d, 0xeb, 0x3f, 0x9c, 0x5d, 0xee, 0xf5, 0x2e, + 0x8a, 0x4f, 0x9d, 0xe3, 0xa9, 0xbc, 0x7f, 0x74, 0xa9, 0xde, 0xbd, 0x4d, 0xfa, 0xcf, 0xed, 0xd2, + 0xd9, 0xd1, 0xe8, 0x2e, 0x65, 0x3c, 0x15, 0xc6, 0xb9, 0x97, 0x97, 0x52, 0xe6, 0x5d, 0x3f, 0x9a, + 0xee, 0x9e, 0x58, 0xfd, 0xd1, 0x59, 0x2e, 0xf7, 0x96, 0x6a, 0xdf, 0x97, 0x27, 0xb7, 0x07, 0xaf, + 0xea, 0xa6, 0x72, 0x5a, 0xee, 0x5d, 0x1d, 0xbf, 0x4f, 0xf4, 0xe6, 0x73, 0xd9, 0x39, 0x32, 0xcd, + 0xee, 0x51, 0xa5, 0xfd, 0xb8, 0xdb, 0xba, 0x3b, 0xbe, 0x6b, 0x5e, 0x1d, 0xe9, 0xaa, 0x79, 0x2f, + 0x1f, 0xb6, 0x9d, 0x8e, 0xd6, 0xb9, 0xd9, 0x1c, 0x37, 0xdf, 0x4e, 0x87, 0x0f, 0x4a, 0xeb, 0xce, + 0xba, 0x6a, 0x9d, 0x9f, 0xbd, 0xb5, 0x95, 0xe3, 0xe3, 0x9d, 0x41, 0xee, 0x52, 0x7d, 0xb0, 0x1e, + 0xda, 0xfd, 0x6e, 0xa9, 0xd1, 0x7e, 0x25, 0x9d, 0xee, 0xee, 0xcd, 0x45, 0x65, 0xef, 0x6a, 0xef, + 0x88, 0xdc, 0xcb, 0x77, 0x97, 0xf7, 0x57, 0x9d, 0xee, 0x55, 0x59, 0x73, 0x2e, 0x2f, 0xf6, 0x46, + 0xa9, 0xcd, 0xd2, 0x6b, 0xee, 0x68, 0x7a, 0x7b, 0x63, 0x1c, 0x93, 0x7b, 0xb3, 0xf7, 0x7c, 0xa5, + 0x1e, 0x1e, 0x1e, 0x16, 0x61, 0x2a, 0xed, 0x9e, 0x3e, 0x67, 0xdb, 0x87, 0xfd, 0xab, 0xe9, 0x83, + 0x7d, 0x0b, 0x1d, 0x3a, 0x79, 0x6c, 0xf7, 0x53, 0xcd, 0x29, 0xfc, 0xaf, 0x54, 0x21, 0x87, 0x9d, + 0x8b, 0x31, 0x88, 0xe8, 0xe3, 0xac, 0x56, 0x6a, 0xcb, 0xfa, 0xee, 0xe6, 0xf3, 0x41, 0xaa, 0xdd, + 0x6a, 0x64, 0xbb, 0xcd, 0xa7, 0xbb, 0xe9, 0x70, 0x52, 0x7e, 0x3a, 0xce, 0x1c, 0x3d, 0x3a, 0xd3, + 0x4b, 0xa7, 0x7d, 0x3c, 0xd5, 0xcc, 0xab, 0xcc, 0xe9, 0xc1, 0x73, 0xeb, 0x55, 0x96, 0x6f, 0x86, + 0xdd, 0xf3, 0xa3, 0xa7, 0xa9, 0x75, 0x40, 0xb4, 0xd4, 0x5b, 0xca, 0x7a, 0x3a, 0xb6, 0x8c, 0x94, + 0x7e, 0x3b, 0xc8, 0x5f, 0x5a, 0xe7, 0x47, 0x07, 0x93, 0x93, 0xd2, 0xbd, 0xf5, 0x70, 0x7e, 0x76, + 0x97, 0x9b, 0xde, 0x90, 0xeb, 0xfb, 0xc3, 0xd6, 0x73, 0xab, 0xf3, 0xe2, 0x9c, 0x1e, 0xf7, 0x48, + 0xd6, 0xea, 0x6c, 0xda, 0xe6, 0xdb, 0xf8, 0x25, 0xdf, 0x2e, 0xdd, 0x15, 0x5e, 0x0a, 0xe5, 0x96, + 0x95, 0x6f, 0x0c, 0xb3, 0x97, 0xe3, 0xcc, 0x95, 0xda, 0x1b, 0xd8, 0x47, 0xb9, 0xd1, 0xd9, 0xb8, + 0x53, 0x2e, 0xe5, 0x2f, 0xd4, 0xab, 0xab, 0xeb, 0x73, 0x83, 0x74, 0xcd, 0xcb, 0xde, 0xa1, 0xde, + 0x9a, 0x74, 0x40, 0x1a, 0xa6, 0x94, 0xdd, 0xbd, 0xbd, 0xd2, 0x66, 0xe7, 0xe4, 0xfd, 0xa6, 0xbf, + 0xa3, 0x5d, 0xf5, 0x9f, 0xcd, 0xe7, 0xfe, 0xcd, 0xae, 0x7e, 0xec, 0x1c, 0xe8, 0x0f, 0xb9, 0xd7, + 0xf6, 0xf0, 0xe1, 0xb8, 0xb4, 0x7f, 0xb1, 0x73, 0xfa, 0xb4, 0x39, 0xb1, 0xad, 0xd4, 0xf1, 0xd3, + 0xfb, 0xa3, 0xde, 0x7e, 0xee, 0xb6, 0x5f, 0x9a, 0xa3, 0xbd, 0xde, 0xad, 0x7c, 0x38, 0xd6, 0x26, + 0xaf, 0x6d, 0xe7, 0xb6, 0x7f, 0xbc, 0xf9, 0x7e, 0xfd, 0xb0, 0x7f, 0x7e, 0x6c, 0x8f, 0x5b, 0x53, + 0x6d, 0xf2, 0x9e, 0xbb, 0x7f, 0x74, 0x94, 0xc2, 0xf4, 0xd9, 0x52, 0x33, 0x3d, 0x7b, 0xa4, 0xe9, + 0xfa, 0xfe, 0xdd, 0xe5, 0x9b, 0xa1, 0x9b, 0x97, 0xf2, 0xf5, 0x69, 0xd1, 0xb8, 0x3b, 0x3f, 0x79, + 0x79, 0xe9, 0xed, 0x69, 0x07, 0x85, 0x8e, 0x7d, 0xb3, 0x7b, 0xde, 0xb0, 0xfb, 0xef, 0xcd, 0x7c, + 0xf9, 0x60, 0xb3, 0xdf, 0x3a, 0xb9, 0xeb, 0xb7, 0x9e, 0x36, 0x87, 0x99, 0xce, 0xde, 0xf8, 0xa4, + 0x71, 0x3a, 0x9c, 0x9e, 0xbc, 0x67, 0x32, 0xa3, 0xcd, 0x41, 0x89, 0xf4, 0x0f, 0xf7, 0x37, 0xcf, + 0xac, 0xc3, 0xc2, 0xf3, 0xb1, 0x99, 0x79, 0x9a, 0x16, 0x5e, 0xf3, 0x39, 0xa5, 0x7c, 0xb3, 0x99, + 0x9d, 0xea, 0x87, 0x77, 0xd7, 0xcd, 0x03, 0xad, 0xb7, 0xff, 0x74, 0xee, 0x38, 0xdd, 0xdc, 0x7e, + 0xe7, 0x56, 0x51, 0xde, 0x4a, 0xa4, 0x72, 0xf9, 0x32, 0x18, 0x75, 0xde, 0xae, 0x65, 0xe3, 0x72, + 0x94, 0x7d, 0xcf, 0xbe, 0x67, 0x76, 0x77, 0x52, 0xe5, 0x89, 0x3a, 0x6d, 0xec, 0x77, 0xcf, 0x6e, + 0xb3, 0x7d, 0x7d, 0xb8, 0x53, 0x98, 0x36, 0x26, 0xa5, 0xb2, 0x39, 0x39, 0xec, 0xdc, 0x3f, 0x6b, + 0xfb, 0xd6, 0x8e, 0xfe, 0x30, 0x3d, 0x7d, 0x7e, 0x2e, 0xe5, 0x6f, 0x0f, 0xfa, 0xe3, 0xf3, 0x83, + 0xbb, 0x83, 0xc6, 0xf1, 0xfe, 0xfb, 0x74, 0x7f, 0x92, 0xba, 0x37, 0x86, 0xfa, 0xe6, 0x59, 0x43, + 0x6d, 0xdf, 0xb5, 0x47, 0x25, 0x8d, 0x1c, 0x5e, 0xef, 0x14, 0xed, 0x4e, 0x56, 0xee, 0x9d, 0x3a, + 0x6d, 0xab, 0x6b, 0x65, 0x8e, 0x5f, 0xef, 0x4a, 0x8f, 0x56, 0xca, 0x18, 0x4f, 0xf6, 0x9d, 0xeb, + 0xc3, 0xbd, 0xcd, 0xb3, 0xc2, 0xfb, 0x41, 0x45, 0x7e, 0x3d, 0xdf, 0x29, 0x3d, 0x5e, 0xef, 0x19, + 0x46, 0x31, 0xfb, 0xb2, 0x7f, 0xac, 0xb4, 0x5f, 0xf3, 0xe7, 0xe4, 0xf0, 0xee, 0xa4, 0x4b, 0x7a, + 0x99, 0x81, 0x7d, 0xb6, 0xbf, 0xdf, 0x32, 0x9d, 0xe2, 0xb0, 0xfc, 0x30, 0x3c, 0x7e, 0xdd, 0xdd, + 0x6d, 0xe8, 0xd7, 0x72, 0xa7, 0x90, 0x2d, 0x0f, 0xa7, 0xc3, 0xa9, 0x75, 0xf5, 0x7e, 0x35, 0x7a, + 0xbb, 0xd4, 0x6d, 0xf3, 0x7a, 0xd2, 0x6b, 0x3c, 0xbe, 0x98, 0xce, 0xe0, 0xdd, 0x02, 0xb2, 0xdc, + 0x64, 0xa7, 0xe7, 0xad, 0x5e, 0xe1, 0xde, 0xd9, 0x39, 0x3b, 0xab, 0xec, 0x5e, 0xdd, 0x64, 0x2b, + 0xa3, 0xd3, 0x54, 0xbf, 0x5d, 0xd8, 0xec, 0xef, 0x9f, 0x5e, 0xe6, 0x3b, 0x37, 0x72, 0x79, 0xbf, + 0x7c, 0x54, 0xe8, 0x3e, 0x4d, 0x8f, 0xb5, 0x42, 0xf6, 0xc0, 0x9e, 0x56, 0xee, 0x0f, 0xdf, 0x4f, + 0x77, 0x2e, 0x0e, 0xdf, 0xef, 0x9f, 0xaf, 0x5b, 0x95, 0xf3, 0xd3, 0xe6, 0xc5, 0xed, 0x4e, 0x73, + 0xff, 0x2a, 0x35, 0x3a, 0x18, 0xec, 0x64, 0xee, 0x36, 0x9f, 0xde, 0x6f, 0x27, 0x27, 0x7b, 0xad, + 0x9b, 0xe1, 0xae, 0xa5, 0x1e, 0xa7, 0x6e, 0x91, 0xf7, 0x33, 0xed, 0xfd, 0x87, 0xfd, 0xb3, 0xd3, + 0x53, 0xfb, 0xb9, 0xaf, 0x36, 0x9c, 0x82, 0x69, 0x6e, 0x8e, 0x34, 0x73, 0xda, 0xce, 0x39, 0xef, + 0x7b, 0xe5, 0xa3, 0xf2, 0x74, 0xf0, 0x76, 0x78, 0xb1, 0xbb, 0x73, 0x92, 0x6f, 0x1d, 0xf4, 0x4b, + 0x57, 0x97, 0xd9, 0xdc, 0x8e, 0x7a, 0x99, 0x7f, 0x3c, 0x9b, 0xe4, 0xac, 0xdd, 0x7d, 0xe7, 0xfe, + 0x76, 0xf7, 0xe1, 0x34, 0x45, 0x6c, 0x7d, 0x9c, 0x3f, 0xac, 0x5c, 0x4d, 0x5f, 0x7b, 0xc3, 0xf6, + 0xae, 0xde, 0x3e, 0x3b, 0x7d, 0x3e, 0xb8, 0xdd, 0x37, 0x5f, 0x5f, 0x9f, 0xda, 0xfa, 0x7d, 0xab, + 0x2f, 0x6b, 0x83, 0xfb, 0x71, 0x65, 0x72, 0x9b, 0x2f, 0xbe, 0xde, 0x1c, 0xbe, 0x5e, 0x56, 0xde, + 0x5f, 0x6f, 0xad, 0xd3, 0xcd, 0x97, 0xd7, 0x93, 0xe7, 0xf2, 0xe3, 0xf3, 0xd3, 0x7b, 0x5f, 0xce, + 0x9a, 0xed, 0x4a, 0xea, 0xed, 0xaa, 0x6c, 0x3f, 0x3c, 0x99, 0x8f, 0xd3, 0x93, 0x03, 0x75, 0xff, + 0xf8, 0xe6, 0xdc, 0x3e, 0x9a, 0x4c, 0xcc, 0xb7, 0xeb, 0x42, 0xa1, 0xbf, 0x77, 0xa1, 0xdf, 0x65, + 0x52, 0x04, 0x18, 0xa9, 0x7b, 0xb8, 0x9b, 0xc9, 0x69, 0x57, 0xf9, 0x51, 0xab, 0xf8, 0x96, 0x7d, + 0x7d, 0x3f, 0x7a, 0x77, 0x1e, 0x6e, 0xcf, 0x2f, 0xf7, 0x4a, 0x46, 0xf7, 0xf1, 0x58, 0xbe, 0x7c, + 0xbd, 0x55, 0xef, 0x8f, 0x9d, 0xfe, 0xc9, 0xc1, 0xc9, 0xd9, 0xd1, 0xe9, 0x63, 0x49, 0xee, 0x4e, + 0xc9, 0xe3, 0x9b, 0xde, 0x6e, 0xa7, 0xec, 0xfd, 0x93, 0x93, 0xd7, 0x73, 0x5d, 0xbe, 0x7f, 0xcf, + 0x59, 0xa7, 0xce, 0x59, 0x7b, 0xe7, 0xea, 0xfe, 0x52, 0x7f, 0x74, 0x86, 0xc7, 0x4a, 0xe1, 0xfe, + 0x75, 0xff, 0xda, 0x68, 0x67, 0x2a, 0xc3, 0xe1, 0xe8, 0xad, 0x73, 0x75, 0x37, 0xde, 0x54, 0x7b, + 0xcd, 0xf3, 0xf1, 0x83, 0xa5, 0x0d, 0xde, 0xfb, 0xbb, 0xa7, 0xbb, 0x63, 0x50, 0xc2, 0x53, 0xe5, + 0xc3, 0xe2, 0xf4, 0xf9, 0xa4, 0x52, 0x28, 0x77, 0x76, 0x89, 0x93, 0xda, 0x57, 0x1e, 0x7a, 0xad, + 0xd4, 0xe9, 0x8b, 0x91, 0xb9, 0x77, 0x52, 0xe3, 0x56, 0xe7, 0x55, 0xb1, 0x5e, 0x4b, 0x2f, 0x4f, + 0x37, 0xed, 0x97, 0xc2, 0xb9, 0x72, 0xf2, 0x6a, 0x5e, 0xb4, 0x5f, 0xf6, 0xf6, 0x4c, 0x5b, 0xe9, + 0x54, 0x4e, 0xb3, 0xd6, 0xf5, 0xf9, 0xc3, 0x71, 0xff, 0xb2, 0x6d, 0xdd, 0xbf, 0xed, 0x76, 0x1f, + 0x9f, 0x49, 0xc9, 0xd9, 0xb9, 0x6a, 0xbc, 0x3b, 0x2f, 0xed, 0xc7, 0xa6, 0x3c, 0xd9, 0x25, 0x85, + 0x5b, 0xfd, 0x5c, 0x35, 0x87, 0xfa, 0x13, 0x68, 0x2b, 0xa3, 0xcc, 0xe8, 0xb9, 0x57, 0x3a, 0xe9, + 0x6d, 0x8e, 0x49, 0x36, 0x9b, 0x3b, 0x1c, 0xf5, 0x2a, 0xb9, 0xbd, 0x71, 0x66, 0x93, 0xe8, 0x3b, + 0x99, 0x94, 0x7e, 0xb9, 0x69, 0xb6, 0x41, 0xcd, 0xbc, 0x3a, 0x7e, 0x6a, 0xab, 0xf2, 0x73, 0xb3, + 0x65, 0x1a, 0xe7, 0x15, 0xe8, 0xf8, 0xcd, 0xcb, 0xf3, 0xe6, 0xf1, 0xd9, 0xc4, 0x6c, 0xdf, 0xf7, + 0x0d, 0xb3, 0xd1, 0x1e, 0x38, 0xed, 0x8b, 0xfb, 0x97, 0x37, 0xa7, 0xb1, 0x9f, 0x3f, 0x49, 0x65, + 0x5e, 0x0d, 0xb9, 0xd5, 0x68, 0x9d, 0xdf, 0xe7, 0x0e, 0x72, 0xed, 0xd3, 0x9e, 0x6e, 0x0f, 0xcc, + 0x9d, 0x82, 0x52, 0xe9, 0x0e, 0xdf, 0x37, 0x33, 0x87, 0xd3, 0x4c, 0xa6, 0xdb, 0xc9, 0x5f, 0x3c, + 0x9c, 0x3f, 0x15, 0x80, 0x57, 0xdf, 0x1e, 0x6e, 0xef, 0x72, 0xdd, 0xc7, 0x6b, 0x7b, 0xb7, 0xb2, + 0xf9, 0x7a, 0x72, 0xba, 0x59, 0x79, 0x55, 0xde, 0x47, 0xd0, 0xb5, 0xa3, 0xec, 0xf8, 0xf2, 0xe1, + 0x66, 0x33, 0xbf, 0x59, 0x6c, 0xdf, 0xb7, 0x0e, 0x8c, 0xce, 0x8e, 0xd1, 0xdb, 0xcd, 0x91, 0xa3, + 0xeb, 0xf7, 0x63, 0xb9, 0x73, 0xd6, 0x94, 0x41, 0x5b, 0x9b, 0x5c, 0xc9, 0xfd, 0xde, 0x78, 0xd4, + 0xea, 0x8e, 0xbb, 0xd9, 0x42, 0x2f, 0x3b, 0x02, 0xae, 0x3f, 0xbd, 0xdc, 0xcb, 0x1f, 0x1f, 0x1f, + 0x9e, 0x96, 0x46, 0xcd, 0x6e, 0x46, 0x2f, 0xea, 0xe5, 0x6e, 0xbe, 0x78, 0x7b, 0x71, 0x72, 0xa9, + 0x97, 0xf4, 0x81, 0x05, 0x0b, 0xa4, 0x75, 0x97, 0x57, 0xba, 0x79, 0xfd, 0x3d, 0xa7, 0xde, 0xa8, + 0xe7, 0xa7, 0x85, 0x6c, 0x61, 0x4f, 0x27, 0xbd, 0xd3, 0xcc, 0xf1, 0xc1, 0xa9, 0x76, 0xff, 0xe4, + 0x3c, 0xdd, 0x2b, 0xaf, 0xc6, 0xde, 0xa0, 0x30, 0x6d, 0x3d, 0x8f, 0xed, 0x83, 0x76, 0xa6, 0x34, + 0xac, 0x58, 0xca, 0xbe, 0x66, 0x9f, 0x0e, 0x0b, 0xa3, 0xc3, 0x97, 0xab, 0x7b, 0x6d, 0xbc, 0x79, + 0x93, 0x99, 0x90, 0xa7, 0xf7, 0xe7, 0xc3, 0x43, 0xb2, 0x39, 0x7d, 0x52, 0x6f, 0xdf, 0xcd, 0xe3, + 0xe2, 0x7d, 0xe3, 0x7e, 0xe7, 0x74, 0xf7, 0x7c, 0x72, 0x7d, 0x32, 0x9d, 0x5c, 0x3f, 0xea, 0xfb, + 0xc6, 0xc3, 0xc1, 0xb4, 0xa3, 0x9c, 0x4c, 0xcf, 0x4b, 0xbb, 0xd7, 0xe5, 0x9d, 0x73, 0x3d, 0x67, + 0x54, 0xce, 0x5f, 0x61, 0x84, 0x9d, 0xb1, 0xa5, 0x14, 0x6f, 0xf4, 0xa3, 0xe7, 0x87, 0xb3, 0x1d, + 0x6d, 0x78, 0xb4, 0xff, 0x94, 0x7f, 0xbb, 0x7c, 0x7c, 0xc8, 0x9f, 0x39, 0x95, 0x71, 0x71, 0x38, + 0x3c, 0x1c, 0x4d, 0x1e, 0xc7, 0xe3, 0xe9, 0xe5, 0x98, 0x58, 0xa7, 0x15, 0xd2, 0x1a, 0xdb, 0xef, + 0x0f, 0xe7, 0xcf, 0xb7, 0x0f, 0xd6, 0x4b, 0xfb, 0xb5, 0x73, 0x70, 0x71, 0x77, 0x9f, 0x6b, 0xef, + 0xb5, 0x77, 0x0f, 0x4e, 0xd4, 0xfc, 0xd9, 0xe9, 0xdd, 0xcd, 0xfd, 0xfb, 0xfb, 0xfd, 0xe1, 0x7e, + 0xb1, 0xb0, 0x33, 0xca, 0xe4, 0xac, 0x46, 0xf6, 0xf5, 0xc5, 0x28, 0x69, 0x95, 0xde, 0x7e, 0xff, + 0xae, 0xbd, 0x33, 0xb2, 0x7a, 0x77, 0x3b, 0xf7, 0xfb, 0xfb, 0xda, 0xdd, 0x7d, 0x76, 0xd4, 0x9f, + 0x5e, 0x4c, 0x3a, 0x76, 0xaa, 0x7c, 0x9f, 0xc9, 0x80, 0x7c, 0x7a, 0x3a, 0x56, 0xc9, 0xa9, 0x56, + 0xb9, 0x7f, 0x68, 0x94, 0xc9, 0xc1, 0x69, 0xb1, 0x63, 0xed, 0x6c, 0xf6, 0x06, 0x17, 0x67, 0x6f, + 0x53, 0xad, 0xdc, 0x7e, 0xbe, 0xba, 0x3f, 0x78, 0xde, 0xc9, 0xb6, 0xef, 0x33, 0xc6, 0x4b, 0xe9, + 0xb6, 0xf3, 0x4a, 0x74, 0xdb, 0xda, 0xdc, 0x2f, 0x1f, 0x6e, 0x8e, 0x1c, 0x7b, 0xd8, 0x7d, 0x35, + 0x0e, 0x87, 0xef, 0x95, 0x8a, 0x35, 0x7e, 0x23, 0x7b, 0x99, 0xcb, 0x77, 0x50, 0x10, 0x0a, 0xc3, + 0xf1, 0xdd, 0xc3, 0xe9, 0xf3, 0xdb, 0x63, 0x79, 0x5c, 0x7e, 0x2e, 0x3e, 0x0c, 0x9e, 0xc8, 0x61, + 0x5e, 0xb9, 0x7c, 0xd8, 0x2c, 0x76, 0x4d, 0xf5, 0xa2, 0x48, 0xce, 0x33, 0x17, 0xef, 0x93, 0xce, + 0xc1, 0xe6, 0xfb, 0x4b, 0x4f, 0x73, 0x32, 0x76, 0xb7, 0x48, 0x36, 0x1f, 0x3b, 0xaf, 0xed, 0x0b, + 0x63, 0xd2, 0xbb, 0xee, 0xe7, 0x72, 0xd7, 0xc5, 0x62, 0xb9, 0xa8, 0x38, 0xb9, 0xf1, 0xc3, 0x43, + 0x79, 0xf3, 0x3e, 0xfb, 0x28, 0xf7, 0xaf, 0xe4, 0xcd, 0x4a, 0xa1, 0xb2, 0x49, 0x1e, 0x6f, 0xb2, + 0x7b, 0x2f, 0x6f, 0xc6, 0xde, 0xeb, 0xd9, 0x23, 0xe8, 0x80, 0x87, 0xdd, 0xf2, 0xd5, 0xf8, 0xe4, + 0xc0, 0xba, 0x3e, 0x28, 0xb5, 0x8f, 0x1f, 0x6f, 0x76, 0x9b, 0xcd, 0xa7, 0xc7, 0x83, 0xbd, 0xfb, + 0xce, 0xb0, 0x78, 0x90, 0x05, 0x32, 0xe6, 0xd4, 0x62, 0xe1, 0xb1, 0x72, 0xef, 0xa8, 0x3b, 0xa3, + 0x17, 0xed, 0xb2, 0xb8, 0xf9, 0xe8, 0xec, 0x3c, 0x9d, 0x35, 0xee, 0xb5, 0x51, 0xae, 0xf7, 0xf8, + 0xbe, 0x7b, 0xb6, 0x79, 0x95, 0x2a, 0xee, 0x83, 0x24, 0x6f, 0xe5, 0x2f, 0xde, 0x8b, 0xcf, 0xb0, + 0x86, 0x1d, 0x29, 0x1d, 0xa7, 0x7d, 0x7f, 0x69, 0x4c, 0x46, 0x57, 0xfd, 0xf3, 0xb7, 0x43, 0x6d, + 0x74, 0xa2, 0x29, 0x93, 0xca, 0x44, 0x6f, 0x5f, 0x0c, 0x9d, 0x91, 0xf2, 0x6c, 0x64, 0xee, 0x5a, + 0x93, 0x0a, 0x48, 0xe4, 0xd6, 0xf5, 0xe4, 0xac, 0x33, 0x02, 0xb6, 0x7c, 0x9a, 0xec, 0x0f, 0x06, + 0x25, 0x7b, 0x73, 0x60, 0xbf, 0x5a, 0xea, 0x7d, 0xd3, 0xee, 0x37, 0x72, 0x76, 0x5e, 0xdf, 0x07, + 0xb5, 0xb9, 0x70, 0xb4, 0x79, 0x91, 0x52, 0xec, 0xe9, 0x64, 0xfa, 0xd4, 0x76, 0x4e, 0x4f, 0xe5, + 0xfc, 0x5e, 0xa5, 0x3d, 0xe8, 0x5c, 0x97, 0x1e, 0xdf, 0x2b, 0xc3, 0xa3, 0xf6, 0xbe, 0x7c, 0x5b, + 0x29, 0x9d, 0xc8, 0xd3, 0x83, 0xc6, 0x66, 0x7b, 0x5a, 0x79, 0x4b, 0x69, 0xb9, 0x4c, 0x66, 0x33, + 0xff, 0x9c, 0x3a, 0xcc, 0xa9, 0xf2, 0xde, 0x41, 0x37, 0xb7, 0x39, 0x6a, 0xdc, 0x9d, 0x1f, 0x65, + 0xee, 0x07, 0xcd, 0xc7, 0xd1, 0xfd, 0xeb, 0xd1, 0xae, 0xf2, 0x38, 0x55, 0xba, 0xb6, 0xac, 0x75, + 0xee, 0xf6, 0xef, 0x52, 0xdd, 0x0b, 0xed, 0x70, 0xb8, 0x33, 0xcd, 0xbc, 0x5e, 0x6c, 0x76, 0x4a, + 0x99, 0xd1, 0xd3, 0x83, 0xec, 0x5c, 0x93, 0x5b, 0xe7, 0xf8, 0x6a, 0x5c, 0x2a, 0xbc, 0x01, 0xfb, + 0x36, 0xc6, 0x0f, 0xa5, 0xe9, 0x2e, 0x79, 0x6f, 0x3c, 0x64, 0xca, 0xf7, 0xc3, 0x72, 0xb3, 0x3f, + 0xc8, 0x54, 0x8a, 0x17, 0x95, 0x8b, 0xa9, 0x7d, 0xde, 0x7c, 0xd4, 0xed, 0x87, 0xfb, 0xab, 0xd4, + 0xa6, 0xd9, 0x7c, 0x2f, 0x67, 0xce, 0xcf, 0x9e, 0x8a, 0x9b, 0x4f, 0x8d, 0xa3, 0x83, 0xbd, 0xee, + 0xcd, 0x24, 0xa5, 0x98, 0xe5, 0xbb, 0xd4, 0x51, 0xfe, 0xfc, 0xf6, 0x8e, 0xc0, 0x9c, 0x9a, 0xa8, + 0xe3, 0x94, 0xd6, 0xe9, 0xbc, 0x3e, 0x67, 0x37, 0x73, 0x0f, 0x9b, 0x8f, 0x93, 0x62, 0xff, 0xb8, + 0x71, 0x7b, 0x75, 0xf0, 0x78, 0x79, 0x55, 0xba, 0x7a, 0x9b, 0x5e, 0xf7, 0xfa, 0xa4, 0x99, 0xba, + 0xea, 0x14, 0xef, 0xf5, 0xc6, 0x59, 0xb3, 0x71, 0xb8, 0x3f, 0x2e, 0xdd, 0x1c, 0x3b, 0xc4, 0xc9, + 0x9b, 0x7a, 0xa6, 0x9c, 0x6f, 0x17, 0x1e, 0x9b, 0x8d, 0xa3, 0x9d, 0x71, 0xbe, 0x68, 0xf4, 0xcc, + 0x9b, 0xeb, 0x37, 0xa7, 0x78, 0xf9, 0x0c, 0x3a, 0xe9, 0x4d, 0xf9, 0xe4, 0xb1, 0xb1, 0x77, 0x75, + 0x52, 0xd6, 0xf7, 0xfb, 0x3b, 0x1d, 0x50, 0x8b, 0x6f, 0x27, 0xc0, 0xfb, 0xaf, 0x87, 0xad, 0x9d, + 0x13, 0x63, 0xef, 0x60, 0xf3, 0xe4, 0xe9, 0xea, 0xf4, 0xcc, 0x7c, 0x36, 0x8a, 0xa3, 0x81, 0x92, + 0xb9, 0x3c, 0xca, 0xbd, 0x8d, 0x76, 0xee, 0x2f, 0x9a, 0x37, 0xad, 0xdd, 0x27, 0xe5, 0xd9, 0x7c, + 0xbd, 0x2a, 0x95, 0x53, 0x4f, 0x4a, 0xb6, 0xfc, 0xdc, 0x3f, 0xe8, 0x3f, 0x9e, 0xdd, 0x94, 0xf5, + 0x9d, 0xc1, 0xf3, 0x49, 0x67, 0xdf, 0x3a, 0x69, 0x3e, 0xee, 0x97, 0xde, 0x4e, 0x5a, 0x4f, 0xd7, + 0xa7, 0xfb, 0x45, 0xe7, 0xba, 0xf8, 0x78, 0x32, 0xb8, 0x7d, 0x7f, 0x3f, 0xbf, 0x3f, 0x2b, 0xe6, + 0x86, 0x3b, 0xe3, 0xd1, 0xe5, 0x99, 0x7a, 0xba, 0x39, 0xbd, 0x9c, 0x16, 0x6e, 0x95, 0xeb, 0xfe, + 0xbe, 0x7a, 0xfc, 0xd4, 0xb8, 0xdb, 0xb7, 0x3b, 0x4f, 0xb9, 0xc3, 0xdb, 0xa3, 0xc1, 0xed, 0x65, + 0x67, 0x4f, 0x39, 0x2c, 0xde, 0xdf, 0xef, 0x8e, 0xc7, 0xc3, 0x71, 0xf7, 0xb2, 0xa7, 0x15, 0x4f, + 0x94, 0xe6, 0xf8, 0xa2, 0x6c, 0x64, 0x53, 0xbd, 0xfd, 0xe6, 0x4e, 0xbb, 0x34, 0x18, 0x8f, 0x4e, + 0xdf, 0xcb, 0xda, 0xd9, 0xf5, 0xc5, 0xa4, 0xf7, 0x7c, 0x79, 0x5e, 0x56, 0x15, 0xab, 0x22, 0x5f, + 0x37, 0x9b, 0xea, 0x75, 0xf3, 0xd8, 0xca, 0x8f, 0xfa, 0xaf, 0x87, 0xbd, 0xd2, 0xe9, 0x6b, 0xff, + 0xf6, 0xf1, 0xd1, 0x2e, 0x0e, 0xde, 0xc7, 0xa3, 0x8a, 0x73, 0x76, 0x74, 0x71, 0x6b, 0x65, 0xa6, + 0xe6, 0xf8, 0xda, 0x3e, 0xbf, 0x1b, 0x77, 0x9f, 0x32, 0x66, 0x6a, 0xb8, 0x53, 0xd6, 0x37, 0xef, + 0x72, 0x20, 0x15, 0xe5, 0x9b, 0x94, 0x72, 0x3d, 0xb8, 0x34, 0xcf, 0x07, 0xf6, 0xf9, 0xfe, 0xc5, + 0xeb, 0xd4, 0xd8, 0xcb, 0x8d, 0x64, 0x7b, 0xf4, 0x7a, 0xa3, 0x9a, 0xfd, 0x69, 0xb1, 0x7c, 0x74, + 0xdc, 0xa0, 0x4e, 0x8a, 0x7a, 0x52, 0xe8, 0x19, 0xd6, 0x50, 0x71, 0x12, 0xdf, 0xd0, 0x80, 0xfa, + 0x96, 0x9c, 0x57, 0x2d, 0xc3, 0x70, 0x66, 0x1b, 0x1b, 0x9d, 0x8d, 0x6c, 0xf5, 0x6b, 0x36, 0x9b, + 0xad, 0xe1, 0x63, 0xaf, 0xfa, 0xb5, 0xd7, 0xeb, 0xd1, 0xc7, 0x5c, 0x15, 0x5d, 0x43, 0xf4, 0x31, + 0x5f, 0xfd, 0x9a, 0xcf, 0xe7, 0xe9, 0x63, 0xa1, 0xfa, 0xb5, 0x50, 0x28, 0xd0, 0xc7, 0x62, 0xf5, + 0x6b, 0xb1, 0x58, 0xa4, 0x8f, 0xa5, 0xea, 0xd7, 0x52, 0xa9, 0x44, 0x1f, 0xcb, 0xd5, 0xaf, 0xe5, + 0x72, 0x99, 0x3e, 0xb6, 0xab, 0x5f, 0xdb, 0xed, 0x36, 0x7d, 0xec, 0x54, 0xbf, 0x76, 0x3a, 0x1d, + 0xfa, 0x48, 0xaa, 0x5f, 0x09, 0x21, 0xf4, 0xb1, 0x5b, 0xfd, 0xda, 0xed, 0x76, 0xe9, 0xa3, 0x05, + 0x05, 0xf2, 0xac, 0xb5, 0x3e, 0x34, 0xdc, 0x61, 0xe8, 0x68, 0xd0, 0x5a, 0x59, 0xa1, 0x8f, 0x6f, + 0xd5, 0xaf, 0x4a, 0x45, 0x86, 0x47, 0x07, 0xe0, 0xca, 0x69, 0xd6, 0xae, 0x51, 0xb5, 0xfa, 0x6d, + 0x25, 0x91, 0x2f, 0x48, 0x82, 0xf7, 0x4f, 0x4e, 0x57, 0x92, 0x34, 0xcf, 0x69, 0x2f, 0x66, 0x82, + 0x5d, 0x9f, 0xa0, 0x10, 0x92, 0x5e, 0x19, 0x85, 0x15, 0xca, 0xca, 0x39, 0x49, 0x08, 0xfe, 0x2c, + 0x96, 0x1b, 0xb0, 0x72, 0xc5, 0xac, 0x24, 0x78, 0xff, 0xc2, 0x85, 0x9c, 0x41, 0x75, 0x53, 0x36, + 0xa7, 0xf8, 0x64, 0x7a, 0x4f, 0x50, 0xab, 0x94, 0x67, 0x69, 0x6d, 0xb3, 0x9a, 0x2d, 0x98, 0x53, + 0x81, 0xfd, 0x91, 0xdd, 0x27, 0x2c, 0x03, 0x39, 0x15, 0x78, 0x95, 0x85, 0x4d, 0xfc, 0x4b, 0x6b, + 0x75, 0xab, 0xba, 0xa1, 0x23, 0x89, 0xec, 0xbe, 0x59, 0x15, 0xdb, 0xe8, 0x1e, 0x11, 0x31, 0x63, + 0xe8, 0x54, 0xa1, 0xe6, 0x1c, 0x1d, 0x8b, 0x33, 0xea, 0x4f, 0xd8, 0x50, 0x98, 0x0b, 0x65, 0xa8, + 0x80, 0xfe, 0x3f, 0xd2, 0xa8, 0x07, 0x62, 0xde, 0x36, 0xba, 0x6f, 0xb3, 0xa1, 0x62, 0xf5, 0x55, + 0xbd, 0x2a, 0xd7, 0xd0, 0xc7, 0xd4, 0xb7, 0x8c, 0x91, 0xde, 0x65, 0xae, 0xbf, 0x2a, 0x43, 0x1b, + 0x46, 0x3d, 0x59, 0xe3, 0xed, 0xed, 0x43, 0xa2, 0x8d, 0x89, 0xa3, 0x76, 0x14, 0xe9, 0x8e, 0x58, + 0x5d, 0x45, 0x57, 0x24, 0x5b, 0xd1, 0xed, 0x0d, 0x9b, 0x58, 0x6a, 0x8f, 0x15, 0xb4, 0xd5, 0x77, + 0x52, 0xcd, 0x02, 0x96, 0xb5, 0x30, 0xa0, 0x5e, 0xb2, 0xe6, 0x90, 0xa9, 0xb3, 0xa1, 0x68, 0x6a, + 0x5f, 0xaf, 0x76, 0x08, 0xfa, 0x13, 0x6a, 0xe8, 0x25, 0x7c, 0x51, 0x9d, 0x0d, 0x86, 0x66, 0x47, + 0xd1, 0x34, 0xf4, 0xeb, 0xb0, 0x6e, 0xb9, 0x59, 0x23, 0x80, 0x0d, 0xf0, 0x35, 0xd2, 0xf1, 0x32, + 0x86, 0xc6, 0x7b, 0x5c, 0xaa, 0xbd, 0x98, 0xb8, 0x58, 0xca, 0x6b, 0x4f, 0x31, 0x37, 0x06, 0x6a, + 0x7f, 0xa0, 0xa1, 0xff, 0xc9, 0xed, 0xb1, 0x63, 0x41, 0x4f, 0x4c, 0xc5, 0x02, 0xcc, 0x6a, 0x76, + 0xc7, 0x32, 0x34, 0xad, 0xad, 0x58, 0xcc, 0xb5, 0x5a, 0x2d, 0x41, 0x77, 0x82, 0xb4, 0x70, 0xc7, + 0xec, 0x76, 0x52, 0xe0, 0xea, 0x52, 0xc2, 0x4a, 0x94, 0xf8, 0x03, 0x82, 0xe0, 0xab, 0x59, 0x59, + 0xfe, 0x57, 0x8d, 0xc1, 0xa1, 0x8f, 0xa6, 0x61, 0xab, 0x74, 0x3c, 0x7a, 0xea, 0x94, 0x74, 0x6b, + 0x06, 0x2c, 0xab, 0x0c, 0xf6, 0x46, 0x9b, 0x0c, 0x94, 0xb1, 0x0a, 0xb0, 0x11, 0xd9, 0xf9, 0xd7, + 0x76, 0x9f, 0x03, 0x31, 0x1e, 0x04, 0x30, 0xc6, 0x93, 0x28, 0x90, 0xf7, 0x0d, 0x55, 0xef, 0x92, + 0x69, 0x75, 0x23, 0x1b, 0x1a, 0x4b, 0xbf, 0x94, 0x4b, 0x6f, 0x2e, 0xcb, 0x22, 0x26, 0x51, 0x90, + 0x2c, 0xee, 0x13, 0x9f, 0x47, 0xc7, 0xb0, 0x83, 0x88, 0xd5, 0x0c, 0x53, 0xe9, 0xa8, 0xce, 0x1b, + 0xb0, 0x08, 0xed, 0x23, 0x83, 0xe6, 0x26, 0x0a, 0x39, 0x7b, 0x6e, 0x7a, 0x3c, 0x44, 0xb9, 0x55, + 0x16, 0x72, 0xf8, 0x77, 0xae, 0x48, 0x4a, 0x75, 0xac, 0x42, 0x69, 0xd2, 0x95, 0xcc, 0x59, 0x98, + 0x5e, 0xdd, 0x24, 0x9f, 0x3d, 0xa3, 0x4c, 0xd1, 0x25, 0x1d, 0xc3, 0xa2, 0x7c, 0xc9, 0xba, 0xde, + 0x1e, 0x39, 0x8e, 0xa1, 0xcf, 0x80, 0x19, 0x34, 0x55, 0x27, 0xd0, 0x78, 0x67, 0x64, 0xd9, 0x00, + 0xc3, 0x34, 0x54, 0xec, 0xc7, 0x3c, 0xad, 0x29, 0x6d, 0xa2, 0xd9, 0x01, 0xff, 0x9a, 0x4a, 0xb7, + 0xab, 0xea, 0xfd, 0x6a, 0x99, 0x43, 0xe2, 0x2b, 0x7a, 0xa5, 0x69, 0xc1, 0x59, 0x84, 0x5a, 0x6d, + 0x03, 0xc0, 0x0f, 0xab, 0xc0, 0x6f, 0x9d, 0x04, 0x43, 0xab, 0x3d, 0x48, 0x0a, 0x29, 0x01, 0x86, + 0x39, 0x59, 0xb3, 0x28, 0xc5, 0x4b, 0x0b, 0x0c, 0x5c, 0x4e, 0x46, 0xb0, 0xa8, 0x4d, 0x2c, 0x00, + 0xaa, 0xf7, 0x81, 0x21, 0xbb, 0xa4, 0x0a, 0xc4, 0xc2, 0x79, 0xa1, 0x6d, 0x58, 0xda, 0x3c, 0xdd, + 0xb6, 0xd4, 0x99, 0x87, 0x12, 0x4c, 0xe0, 0x79, 0x7a, 0x62, 0xa1, 0x9f, 0xcb, 0x8a, 0x22, 0xe2, + 0x18, 0x26, 0x20, 0xaf, 0x91, 0x1e, 0x4c, 0x59, 0xb7, 0x61, 0x7e, 0xfc, 0xfc, 0xb6, 0x9d, 0x76, + 0xd2, 0x1f, 0xe2, 0xec, 0x3c, 0x8d, 0xbe, 0x71, 0x3b, 0xce, 0x0f, 0xc6, 0x66, 0x20, 0x7a, 0xcc, + 0x80, 0x8e, 0x20, 0xc7, 0x35, 0x6e, 0x4e, 0xe6, 0x00, 0x91, 0x2f, 0xea, 0x10, 0x37, 0x12, 0x14, + 0x60, 0x71, 0x24, 0xec, 0x86, 0xc7, 0x5e, 0x5c, 0x7a, 0x57, 0xb5, 0x4d, 0x4d, 0x79, 0xab, 0xaa, + 0x3a, 0x2d, 0x41, 0xc5, 0xca, 0x3c, 0x0d, 0x83, 0x11, 0xa6, 0x46, 0x3f, 0x19, 0xd4, 0x81, 0xec, + 0x5e, 0x2f, 0x92, 0x5f, 0x0a, 0xe5, 0x03, 0xc1, 0x05, 0x86, 0xb5, 0x94, 0x86, 0x3e, 0xbb, 0xcf, + 0xde, 0xf0, 0x6d, 0xd0, 0xf1, 0x12, 0x0a, 0x74, 0xd4, 0xd2, 0x83, 0x51, 0xdf, 0xf5, 0xf1, 0x51, + 0xb4, 0x0b, 0x39, 0xa4, 0x9f, 0xa9, 0x01, 0x03, 0x5b, 0x6f, 0xc2, 0x4d, 0x63, 0xe7, 0x74, 0x4f, + 0x4a, 0xdb, 0xa4, 0xef, 0xcc, 0x1c, 0xdc, 0x57, 0xd8, 0x70, 0x7d, 0xc1, 0x8c, 0x9e, 0xc1, 0x2c, + 0x9b, 0xd3, 0x32, 0xc2, 0xcd, 0xae, 0x3f, 0x0e, 0xb4, 0x11, 0xae, 0xa3, 0x0b, 0xd2, 0x88, 0x6b, + 0x65, 0x57, 0xf2, 0xab, 0x73, 0x42, 0x0d, 0x85, 0xb4, 0x07, 0x4d, 0xae, 0xf9, 0x03, 0xce, 0x60, + 0x0c, 0xd5, 0x6e, 0x57, 0x23, 0xf3, 0xf4, 0x0b, 0x79, 0x73, 0x5c, 0xae, 0x66, 0x19, 0x38, 0xba, + 0xf3, 0xf4, 0x58, 0xd1, 0xc2, 0xc9, 0x74, 0xb4, 0xdd, 0x74, 0x41, 0xe5, 0x9a, 0xb1, 0x61, 0xd8, + 0x80, 0x85, 0x6c, 0xea, 0x68, 0xa6, 0xdb, 0x20, 0x01, 0xd7, 0x28, 0x6d, 0xdb, 0xd0, 0x46, 0x0e, + 0x61, 0x2c, 0x03, 0xcc, 0xee, 0xb1, 0x72, 0x11, 0x89, 0x04, 0x92, 0x8e, 0x95, 0xa7, 0x53, 0x15, + 0x17, 0x72, 0x26, 0xd4, 0x40, 0xe2, 0x93, 0x87, 0x04, 0x60, 0x9f, 0x9c, 0xa7, 0x09, 0x2d, 0x21, + 0xa5, 0xfb, 0xee, 0xaf, 0x57, 0x47, 0x0a, 0x35, 0x18, 0x61, 0xf4, 0x85, 0x09, 0xec, 0x56, 0x9f, + 0x2d, 0xf2, 0xdb, 0x22, 0xaa, 0xc8, 0xe3, 0x88, 0x29, 0x63, 0xef, 0x32, 0x1d, 0x4d, 0xc3, 0x8c, + 0xe9, 0x53, 0x1c, 0xe7, 0xb9, 0x33, 0xc4, 0x9d, 0x1a, 0xb4, 0xe6, 0x46, 0x27, 0xa6, 0xee, 0xd2, + 0xf5, 0x2b, 0x97, 0x04, 0x12, 0x59, 0xd0, 0xb1, 0x6a, 0x16, 0xc6, 0x1f, 0x4a, 0xab, 0x5d, 0x81, + 0x9b, 0xd1, 0x2c, 0x6f, 0xc3, 0x52, 0xba, 0xea, 0xc8, 0xae, 0xe6, 0x70, 0x41, 0xf6, 0xe7, 0x19, + 0x6d, 0x3b, 0xef, 0x63, 0x9e, 0x2f, 0x72, 0xc3, 0x0f, 0xc9, 0x02, 0xca, 0x1a, 0x00, 0x1a, 0x99, + 0x62, 0xa1, 0x89, 0x95, 0x2b, 0xb8, 0xdd, 0xdd, 0xe8, 0x08, 0xb0, 0x3e, 0xe8, 0x21, 0x66, 0x2c, + 0xb1, 0x31, 0x53, 0x2c, 0x58, 0xfa, 0x96, 0x0c, 0xb3, 0x47, 0x3b, 0x3a, 0xdc, 0x59, 0xa8, 0xe4, + 0x72, 0x38, 0x6d, 0x28, 0xd4, 0x06, 0x75, 0xd2, 0x7f, 0x04, 0x86, 0x75, 0xa4, 0x82, 0xa2, 0x2d, + 0x22, 0x4f, 0x7b, 0x9a, 0x35, 0x5b, 0x5c, 0xaf, 0x7d, 0x36, 0xb2, 0x0c, 0xdc, 0x0b, 0x48, 0xc8, + 0x49, 0x7e, 0x15, 0xf0, 0xb3, 0x85, 0x74, 0xde, 0x5e, 0x32, 0xf0, 0x81, 0x54, 0xe3, 0x24, 0x34, + 0x70, 0xe1, 0xd4, 0x94, 0xf0, 0x8f, 0x02, 0x94, 0xee, 0x0a, 0xb4, 0xf5, 0x85, 0xc6, 0xb2, 0x65, + 0xb9, 0x4b, 0xfa, 0xc0, 0x6b, 0xaa, 0x36, 0x8b, 0x65, 0x8d, 0xf8, 0x09, 0xf8, 0x55, 0x53, 0xc7, + 0x04, 0x77, 0x4c, 0xbd, 0xb5, 0xb3, 0xe0, 0x53, 0x8d, 0xae, 0xbe, 0x2e, 0x37, 0xc8, 0x41, 0xc1, + 0xdc, 0xae, 0x57, 0xb4, 0xe2, 0x2f, 0xd4, 0x15, 0xae, 0xe4, 0x92, 0xae, 0x15, 0xa1, 0x08, 0x1d, + 0x17, 0x7c, 0x88, 0x99, 0x71, 0x89, 0x0d, 0xc8, 0x90, 0xf0, 0x0f, 0xf4, 0x01, 0x64, 0xd5, 0x6c, + 0x81, 0x47, 0x79, 0x8d, 0x63, 0x71, 0x8a, 0xc1, 0xcc, 0x5e, 0xb2, 0x6e, 0xf9, 0x2b, 0x06, 0xdf, + 0xad, 0x65, 0x13, 0x00, 0x96, 0x0e, 0xda, 0xbc, 0xe0, 0xae, 0xa9, 0x2b, 0xb1, 0xe8, 0x69, 0x06, + 0xe8, 0x04, 0x08, 0xdd, 0xeb, 0x3d, 0x55, 0x9b, 0xb8, 0x41, 0xa7, 0x75, 0x70, 0xc0, 0xa5, 0x28, + 0x20, 0xca, 0x05, 0x2b, 0x55, 0xc0, 0x4e, 0xb2, 0x36, 0x54, 0x75, 0x57, 0xa5, 0x2a, 0x50, 0xb6, + 0xc5, 0xc5, 0xc0, 0x45, 0xcc, 0x63, 0x10, 0x57, 0x61, 0x6e, 0x9b, 0x50, 0xda, 0x5d, 0xde, 0xd9, + 0x02, 0x12, 0x5b, 0xae, 0x8d, 0xe5, 0xdc, 0x49, 0x51, 0xfc, 0x17, 0x57, 0x23, 0xe8, 0x72, 0x75, + 0x80, 0x9a, 0xcc, 0x6c, 0x05, 0x85, 0x06, 0xc9, 0x08, 0xa6, 0x24, 0x44, 0xb3, 0x34, 0xea, 0xcf, + 0x63, 0xb2, 0x0a, 0x82, 0xc2, 0x2d, 0x77, 0x0b, 0x8a, 0xef, 0xfc, 0x43, 0x00, 0xa5, 0xd5, 0xd5, + 0x71, 0xb3, 0x5d, 0x01, 0xc6, 0xb7, 0xc0, 0x10, 0x03, 0x4d, 0x8b, 0x1f, 0x77, 0xf6, 0xc8, 0x69, + 0x32, 0x7a, 0xf2, 0xdf, 0x98, 0x91, 0xf4, 0xc4, 0x03, 0xcd, 0xc2, 0x14, 0x61, 0xc3, 0xb3, 0x45, + 0xcc, 0xa4, 0xff, 0x0c, 0x5d, 0xf7, 0xc8, 0xbc, 0x81, 0x4c, 0xed, 0x97, 0x88, 0xe5, 0x68, 0xae, + 0x19, 0x55, 0x92, 0x93, 0x19, 0xc1, 0x6f, 0x72, 0x83, 0xb6, 0x99, 0x5c, 0xae, 0xcc, 0x22, 0x39, + 0xdd, 0x98, 0x81, 0x19, 0xc7, 0x65, 0x3e, 0x83, 0x5b, 0x04, 0xed, 0x92, 0x31, 0x59, 0xd2, 0x37, + 0x7c, 0xcf, 0x78, 0xad, 0xa1, 0xd8, 0x9e, 0x22, 0x97, 0x21, 0x1b, 0xb8, 0x12, 0x1c, 0x52, 0x82, + 0x09, 0x8b, 0x58, 0x40, 0x23, 0x93, 0xaa, 0x32, 0x72, 0x8c, 0x1a, 0xaf, 0x86, 0x2f, 0xc3, 0x2f, + 0x58, 0xd7, 0x05, 0x6a, 0x70, 0xb9, 0x76, 0x82, 0x07, 0x68, 0x83, 0xd5, 0xc1, 0x02, 0xd4, 0x54, + 0x99, 0x7f, 0xed, 0x4d, 0xa5, 0xaf, 0xa6, 0xa2, 0x4d, 0xe0, 0x2f, 0x76, 0x0b, 0x7e, 0x5e, 0x35, + 0xf8, 0x33, 0x72, 0x54, 0xf8, 0x01, 0xdd, 0x81, 0x25, 0xc2, 0x83, 0x9f, 0x82, 0x0f, 0x39, 0x29, + 0xdd, 0xd3, 0xbb, 0xa0, 0xf7, 0x4c, 0xdd, 0x59, 0x90, 0x2b, 0xcb, 0xa1, 0x15, 0x24, 0x0b, 0xc2, + 0x79, 0xce, 0x81, 0x09, 0xd7, 0x9e, 0xe1, 0xf4, 0xf1, 0xc4, 0x1a, 0xae, 0x06, 0x9e, 0xee, 0x8d, + 0xcb, 0x11, 0xf6, 0x15, 0xb5, 0x5e, 0xb7, 0xb0, 0x80, 0x1a, 0x8c, 0xea, 0x4f, 0x17, 0x3a, 0xba, + 0xb8, 0x82, 0x30, 0xd4, 0x07, 0x64, 0x0a, 0xa8, 0x6b, 0xa4, 0x3b, 0x54, 0x4c, 0xda, 0x11, 0x2d, + 0xe8, 0x08, 0xdd, 0xab, 0x77, 0x3b, 0xf4, 0xda, 0xb1, 0x37, 0x26, 0x7c, 0x87, 0xd8, 0xf6, 0x37, + 0x74, 0x43, 0xd5, 0x60, 0xe1, 0xa0, 0xdd, 0x91, 0xd2, 0x6c, 0xbf, 0x5d, 0x4a, 0x9b, 0xa8, 0x71, + 0x53, 0xd5, 0xc9, 0x7d, 0xa0, 0xa5, 0x7d, 0x2d, 0x9d, 0xa2, 0xe8, 0xf6, 0xce, 0x9f, 0xc6, 0x45, + 0xaa, 0xfb, 0xc1, 0x84, 0xb5, 0x87, 0x86, 0xe1, 0x0c, 0x66, 0xb1, 0x0b, 0x0c, 0xc7, 0x78, 0x3d, + 0x29, 0x9b, 0xfc, 0x77, 0xba, 0x68, 0x27, 0x05, 0xa2, 0xd8, 0x64, 0x03, 0x74, 0x3f, 0xca, 0x5b, + 0x1b, 0x4c, 0xd1, 0xf7, 0x9b, 0x92, 0x85, 0x0d, 0x0a, 0xd9, 0x1b, 0xd8, 0x0d, 0x57, 0x76, 0xe2, + 0xe8, 0x7a, 0xab, 0x89, 0x37, 0x05, 0x50, 0xda, 0xe2, 0x48, 0x43, 0x5a, 0x54, 0xe2, 0x2e, 0x31, + 0xe1, 0x42, 0x7a, 0xfb, 0xd2, 0x59, 0x9d, 0x4f, 0x46, 0x75, 0x03, 0xaf, 0xe5, 0x9e, 0x46, 0xa6, + 0x35, 0xba, 0x6c, 0x6d, 0x80, 0x11, 0x34, 0xb4, 0x3d, 0xfb, 0xec, 0x79, 0x64, 0x3b, 0x6a, 0xef, + 0x6d, 0xc3, 0x9d, 0x29, 0x5e, 0xb2, 0xaf, 0x92, 0x64, 0x7d, 0x7b, 0x2c, 0x5d, 0x29, 0xf2, 0x62, + 0x39, 0xbd, 0x89, 0x2b, 0x30, 0x5d, 0xcc, 0x37, 0x08, 0x06, 0x0d, 0xd8, 0xee, 0xb4, 0xb3, 0x1d, + 0xe5, 0x0d, 0xba, 0x2e, 0xd1, 0x07, 0x40, 0xdb, 0x5f, 0x4a, 0xd9, 0x1a, 0xea, 0x77, 0xd7, 0xe3, + 0x78, 0x68, 0xbf, 0xf3, 0xf2, 0x16, 0xa4, 0xb3, 0x77, 0x5e, 0x6d, 0xa6, 0x5d, 0xf7, 0x30, 0xca, + 0xd5, 0x42, 0x83, 0xcb, 0x46, 0xd8, 0x6b, 0x74, 0xc6, 0x29, 0xa7, 0x1e, 0xe7, 0xcc, 0x3e, 0xd9, + 0x62, 0xb0, 0xd6, 0x05, 0x93, 0x25, 0x2f, 0xcb, 0x1c, 0x24, 0xc1, 0x33, 0x02, 0x79, 0x0e, 0xcf, + 0x87, 0x66, 0x53, 0x48, 0x95, 0x9e, 0x45, 0x74, 0x3d, 0x1c, 0x8f, 0x45, 0xf1, 0x13, 0x61, 0x17, + 0x6a, 0x7c, 0xb0, 0xfa, 0x68, 0xc2, 0x79, 0x8a, 0x42, 0x5e, 0x0e, 0x54, 0x31, 0xfa, 0xcc, 0xcd, + 0x68, 0xfa, 0xbe, 0x08, 0xd8, 0xa3, 0x98, 0xcc, 0x75, 0xc0, 0x45, 0xcc, 0x6b, 0xd3, 0xb5, 0x3c, + 0x71, 0x61, 0xfc, 0xaa, 0xea, 0x3d, 0xc3, 0x2b, 0x20, 0x2d, 0xd4, 0x58, 0xa1, 0xee, 0x2e, 0x80, + 0x47, 0xbc, 0x61, 0xf8, 0xdb, 0xa1, 0x84, 0x19, 0xe5, 0xdd, 0x3c, 0xed, 0x9e, 0x37, 0x95, 0xd9, + 0x2c, 0x5e, 0x0e, 0xbb, 0xb0, 0xa0, 0x2e, 0x97, 0x38, 0x2d, 0xb4, 0x14, 0xa2, 0x02, 0x1d, 0xaa, + 0x1a, 0x67, 0x02, 0xa3, 0x4d, 0x1e, 0x43, 0x15, 0x8f, 0x9d, 0xb3, 0x71, 0xee, 0x05, 0x98, 0xe5, + 0x02, 0xea, 0x7b, 0x8a, 0x25, 0xb1, 0x56, 0x30, 0x45, 0xe2, 0xd4, 0xce, 0xa2, 0xed, 0x61, 0x3f, + 0x0b, 0xb4, 0x76, 0x5f, 0xf8, 0x0f, 0x40, 0x21, 0x24, 0xfa, 0xdc, 0xed, 0x97, 0x00, 0xba, 0x86, + 0xa1, 0x39, 0xaa, 0x89, 0x36, 0x98, 0x27, 0x9a, 0x42, 0x89, 0x33, 0x74, 0x49, 0xb4, 0x55, 0x0d, + 0xf1, 0x61, 0x75, 0x97, 0x4f, 0xed, 0xa2, 0xbb, 0x06, 0x0d, 0x94, 0x2e, 0xb4, 0x84, 0xfd, 0xf3, + 0x3d, 0x76, 0xf8, 0xc0, 0x79, 0xcf, 0x3e, 0xe1, 0x05, 0xe3, 0xc9, 0xc4, 0x6c, 0x3a, 0x9e, 0xca, + 0xa5, 0x40, 0x7f, 0x2d, 0x85, 0x58, 0xcb, 0xd7, 0x46, 0x83, 0xbe, 0xbb, 0x5c, 0x5b, 0xe6, 0x55, + 0x53, 0x77, 0x75, 0xa7, 0xef, 0x1b, 0x15, 0x36, 0x0c, 0x0b, 0x82, 0x62, 0xb5, 0x9f, 0x27, 0xbd, + 0x89, 0x94, 0x8e, 0xa1, 0xa3, 0x37, 0xc3, 0xb3, 0x39, 0xb4, 0xb8, 0x63, 0x0a, 0x54, 0xab, 0x4a, + 0x8f, 0x32, 0x57, 0x0c, 0xbd, 0xdd, 0xbc, 0x99, 0x27, 0xec, 0x44, 0x71, 0x89, 0xa6, 0x4d, 0x45, + 0x6e, 0x7c, 0x7f, 0x8a, 0x01, 0xb9, 0x18, 0x8d, 0xb8, 0x04, 0x66, 0x97, 0x52, 0x93, 0xcf, 0x4b, + 0x8a, 0x0e, 0x22, 0xef, 0xb8, 0x5b, 0xf6, 0x1c, 0xf4, 0xab, 0x33, 0x20, 0x9d, 0x17, 0xa6, 0x4d, + 0xc6, 0x72, 0x53, 0x4c, 0x16, 0xcf, 0x53, 0xf4, 0x51, 0xe3, 0x78, 0x1e, 0x98, 0x57, 0xe9, 0x92, + 0x18, 0xb6, 0x8b, 0x0c, 0x06, 0xd5, 0xc2, 0x68, 0x14, 0xe7, 0x23, 0x9a, 0x60, 0xee, 0x8c, 0x0b, + 0x4c, 0x2a, 0x19, 0x67, 0x81, 0x65, 0x3b, 0x33, 0x4e, 0x91, 0xcb, 0x52, 0x51, 0xe9, 0x18, 0x0a, + 0x24, 0x07, 0xe0, 0x56, 0xf3, 0xf3, 0x12, 0x33, 0x39, 0x97, 0xe4, 0x26, 0x36, 0x1a, 0x46, 0x9f, + 0x60, 0xe9, 0x30, 0x0b, 0xf3, 0x96, 0x73, 0x2e, 0x24, 0x08, 0xc2, 0xde, 0xcb, 0xe2, 0x4a, 0x83, + 0xea, 0x81, 0x5a, 0x54, 0xc9, 0xa5, 0xde, 0x3b, 0x84, 0x9c, 0x8c, 0x5a, 0x20, 0x71, 0x8b, 0x22, + 0x23, 0x4b, 0xda, 0x1e, 0x18, 0x93, 0x59, 0x20, 0x80, 0x14, 0x5d, 0x1d, 0x32, 0x17, 0x24, 0x8e, + 0x8a, 0xaa, 0x53, 0x61, 0x13, 0x3c, 0x0a, 0x39, 0xfc, 0x63, 0x11, 0x54, 0x20, 0x7d, 0x10, 0xc4, + 0xb2, 0x0c, 0x8b, 0x83, 0xb1, 0x40, 0xdf, 0xaf, 0xed, 0x5c, 0x3c, 0xe4, 0x79, 0x7a, 0x68, 0x74, + 0x95, 0x05, 0xcf, 0xa4, 0xa7, 0x52, 0x78, 0x8b, 0x9f, 0x67, 0x3d, 0xe3, 0x90, 0x72, 0x1d, 0x76, + 0x06, 0xa8, 0xc2, 0x67, 0xb1, 0xbf, 0x4b, 0x87, 0xd4, 0x88, 0xd5, 0xe1, 0x1f, 0x13, 0xcc, 0x3a, + 0x88, 0xb7, 0xe3, 0x0b, 0x36, 0x6f, 0xa7, 0xf3, 0xda, 0x0b, 0x4a, 0x9e, 0x90, 0x5a, 0x8d, 0x2e, + 0x07, 0xc3, 0x26, 0x9f, 0x5e, 0xcf, 0x99, 0xde, 0xc0, 0x54, 0x7f, 0xe6, 0xfb, 0xa2, 0x6b, 0x9c, + 0xf4, 0x55, 0x37, 0xba, 0xc4, 0xf6, 0xe5, 0x77, 0x61, 0xfe, 0xd5, 0xa2, 0xe6, 0x9a, 0x97, 0x90, + 0x9f, 0x7f, 0xd5, 0xbb, 0x9a, 0xe3, 0xbb, 0x99, 0x5d, 0xdf, 0x2e, 0x2d, 0x04, 0x7a, 0x46, 0xac, + 0x4b, 0x35, 0x42, 0xa9, 0x94, 0x50, 0x44, 0x4a, 0x31, 0x27, 0xca, 0xa2, 0xf3, 0xe3, 0x2b, 0x08, + 0x20, 0x1d, 0x1a, 0xfb, 0xac, 0x97, 0x38, 0x00, 0x56, 0xe0, 0xf8, 0xba, 0xb8, 0x20, 0xb8, 0x69, + 0xca, 0x02, 0x43, 0xe0, 0xf6, 0x94, 0xef, 0xad, 0xcf, 0x85, 0x17, 0x7a, 0xde, 0x30, 0xa0, 0x0b, + 0x68, 0x60, 0x2e, 0x67, 0x0b, 0x08, 0x8e, 0x23, 0x5f, 0x60, 0xea, 0x86, 0x40, 0xd0, 0xc5, 0x9d, + 0x03, 0xe1, 0xe6, 0x52, 0x5f, 0xa9, 0x4b, 0x6b, 0xf6, 0xf2, 0x81, 0xfb, 0xd4, 0xad, 0xd6, 0xf5, + 0xeb, 0x74, 0x67, 0x11, 0xd5, 0xa8, 0x1c, 0xa8, 0x29, 0x6d, 0x47, 0xf7, 0xc6, 0xa7, 0x18, 0x6e, + 0x92, 0xe6, 0x85, 0xda, 0x0d, 0x95, 0xf6, 0x90, 0xef, 0xaa, 0x63, 0xaf, 0x10, 0x3c, 0x72, 0x64, + 0x28, 0x54, 0xe4, 0xc0, 0xcc, 0xf1, 0x0c, 0x08, 0x5a, 0xe5, 0xab, 0x3a, 0xec, 0x4f, 0x3c, 0x38, + 0x65, 0xd7, 0xfe, 0x99, 0x7f, 0xd5, 0xf8, 0xda, 0x25, 0x4a, 0xc4, 0x58, 0x8f, 0x36, 0x58, 0x40, + 0x8a, 0xe5, 0xcc, 0x16, 0x3d, 0x1b, 0x95, 0x90, 0x13, 0x23, 0xd8, 0x06, 0xb0, 0x48, 0x77, 0x0e, + 0x4d, 0x72, 0xd0, 0xe9, 0xb2, 0x84, 0xaf, 0x9c, 0x91, 0x30, 0x4f, 0x4f, 0xd4, 0x19, 0x0d, 0x61, + 0xdf, 0x80, 0xb5, 0x03, 0xc6, 0x03, 0x59, 0xc3, 0x04, 0xe2, 0xe2, 0xdc, 0xeb, 0xd6, 0xa2, 0x39, + 0x1d, 0x0b, 0x70, 0xdb, 0x20, 0xdd, 0x3e, 0xb1, 0x3d, 0x75, 0x92, 0x0a, 0xee, 0xff, 0xf5, 0x42, + 0xde, 0x7a, 0x16, 0xd8, 0x50, 0xb6, 0xc0, 0x44, 0xc6, 0xac, 0x67, 0x19, 0xc3, 0x99, 0x2f, 0x16, + 0x7c, 0x89, 0x3e, 0x77, 0x8c, 0xd9, 0x6a, 0x79, 0x18, 0xac, 0x36, 0x9e, 0x22, 0xeb, 0xd2, 0xc3, + 0x5f, 0x77, 0xbf, 0x7d, 0x5b, 0xb6, 0xee, 0xe6, 0x3c, 0xd7, 0x63, 0xc8, 0x7f, 0xeb, 0x2d, 0x40, + 0x61, 0xfe, 0x5e, 0xae, 0x26, 0x52, 0x22, 0xc6, 0xe9, 0x1c, 0xc1, 0xa6, 0x15, 0x6e, 0x5b, 0xf6, + 0x79, 0x97, 0xc7, 0x57, 0xca, 0xc8, 0x42, 0x04, 0x63, 0x5a, 0x8a, 0x56, 0xe5, 0xda, 0x65, 0x1a, + 0xe2, 0x46, 0x1f, 0x5b, 0xc3, 0xc0, 0xeb, 0x0a, 0xba, 0x0d, 0xa5, 0xaf, 0xb2, 0x0c, 0x26, 0x60, + 0xb6, 0xf8, 0x2f, 0x09, 0x06, 0x0e, 0xe0, 0xf5, 0xff, 0x31, 0x78, 0x5f, 0xe5, 0x9e, 0x0c, 0x00, + 0xdb, 0xff, 0x20, 0x40, 0x19, 0x7b, 0x3c, 0xf9, 0xe7, 0x00, 0xf6, 0x7a, 0x08, 0xf0, 0x25, 0x06, + 0xa0, 0xf4, 0x75, 0xd2, 0x56, 0xb4, 0x68, 0x2b, 0x1f, 0xc3, 0xee, 0xf5, 0xca, 0xbd, 0x6c, 0x4f, + 0x90, 0x29, 0x6c, 0x01, 0x1d, 0x9b, 0x5f, 0x3b, 0xed, 0x6e, 0x9b, 0xb6, 0xc3, 0x7c, 0x09, 0x03, + 0x6a, 0x67, 0xb0, 0x46, 0x25, 0xdf, 0xb7, 0x2a, 0x71, 0x5e, 0x56, 0xea, 0x52, 0x10, 0xbe, 0x5a, + 0xfd, 0x36, 0x2b, 0xe3, 0xfa, 0x16, 0x7c, 0x49, 0x0e, 0x66, 0x0e, 0xcb, 0x40, 0x14, 0x25, 0x46, + 0x0f, 0x89, 0x73, 0x6c, 0x4b, 0x69, 0xd2, 0x85, 0xf5, 0x85, 0x3d, 0x9a, 0x0e, 0x28, 0x57, 0xde, + 0xcc, 0x76, 0x4d, 0x5d, 0xda, 0xa7, 0xf6, 0xa8, 0x8d, 0xd2, 0x8d, 0xf3, 0x93, 0x7f, 0x72, 0xa7, + 0x21, 0x86, 0x69, 0x63, 0xb8, 0x3b, 0x1f, 0xa3, 0xd1, 0x73, 0xfa, 0x3b, 0x2f, 0x3b, 0x0a, 0xfe, + 0xa4, 0x41, 0x58, 0x9c, 0xa4, 0x09, 0x14, 0x3e, 0x21, 0x9d, 0x03, 0xa5, 0x02, 0x1d, 0x19, 0x92, + 0xaf, 0x6b, 0x7b, 0x29, 0x9c, 0x16, 0xb8, 0xa8, 0x21, 0xe2, 0xf4, 0x44, 0x3b, 0x11, 0x64, 0xb7, + 0x39, 0x72, 0x42, 0x5d, 0xa7, 0x6a, 0xcd, 0x4a, 0xb5, 0x93, 0x3b, 0x23, 0x40, 0x8f, 0x08, 0xfc, + 0x9c, 0x79, 0x6b, 0x37, 0x6e, 0x52, 0x2a, 0x90, 0xd6, 0x21, 0x8c, 0xe9, 0xf8, 0x5d, 0x6b, 0x7f, + 0xe3, 0x6b, 0x79, 0xd0, 0x40, 0xc8, 0xa1, 0x1d, 0x5e, 0x64, 0x17, 0xda, 0xac, 0xf6, 0x8c, 0xce, + 0xc8, 0x0e, 0xb6, 0x78, 0x63, 0x4a, 0x04, 0x2a, 0x05, 0xdb, 0x9a, 0xb2, 0x46, 0xba, 0x4e, 0x17, + 0x2d, 0x68, 0xa7, 0xf3, 0x32, 0xe3, 0x90, 0xe3, 0xcd, 0xf2, 0xc8, 0xde, 0x15, 0x37, 0x86, 0xe8, + 0x66, 0xfa, 0xb8, 0x15, 0x67, 0x30, 0x1a, 0xb6, 0xfd, 0x8d, 0x77, 0xde, 0xfa, 0x5a, 0x5c, 0xe1, + 0x43, 0x8e, 0x77, 0x9e, 0x25, 0x22, 0x48, 0x2c, 0xa3, 0x2f, 0xa7, 0xb0, 0x83, 0xb2, 0x1a, 0x8b, + 0x1c, 0x46, 0x3b, 0xd0, 0x97, 0xd5, 0xbd, 0x5e, 0x18, 0x0b, 0x1a, 0x88, 0x22, 0x4b, 0xf4, 0x7f, + 0xc9, 0x8f, 0x20, 0xd3, 0x2e, 0x7b, 0xee, 0x53, 0x57, 0xfd, 0xe7, 0x07, 0xf3, 0xbf, 0x48, 0x8d, + 0x58, 0x3d, 0x14, 0xd5, 0xa8, 0xf9, 0x57, 0x7a, 0xfc, 0xc6, 0x16, 0xfe, 0x74, 0x58, 0xca, 0x01, + 0x22, 0x81, 0xc5, 0x4c, 0x77, 0xd5, 0xc2, 0xb6, 0x4b, 0x36, 0xe4, 0xdd, 0xa6, 0xca, 0xc9, 0x8a, + 0x16, 0x97, 0x50, 0x24, 0x0e, 0xac, 0x0f, 0x87, 0xd7, 0xbb, 0xdc, 0x99, 0x51, 0xf0, 0x5c, 0x9a, + 0x83, 0xee, 0x2c, 0xc6, 0xd7, 0xf8, 0xb5, 0x6d, 0xa9, 0xac, 0xb8, 0xaf, 0xdd, 0xe5, 0x4a, 0x9b, + 0xb1, 0xda, 0x1d, 0xe7, 0x93, 0x6f, 0x0f, 0x1d, 0xa8, 0xca, 0x9c, 0xb3, 0xbc, 0xa1, 0x57, 0x0e, + 0xed, 0xea, 0x73, 0x0a, 0x24, 0x3a, 0x0b, 0xe6, 0x54, 0xd9, 0xe2, 0x55, 0x7a, 0x3e, 0x5a, 0xa3, + 0x10, 0x71, 0x62, 0x85, 0xdd, 0xd0, 0x0b, 0x5b, 0x52, 0x0b, 0x33, 0x2b, 0xec, 0x0c, 0x2a, 0x86, + 0x84, 0xdc, 0x46, 0x77, 0xe4, 0x06, 0x74, 0xe0, 0xb6, 0x90, 0x37, 0x96, 0xc8, 0x1e, 0x78, 0x86, + 0x67, 0x63, 0x51, 0xa2, 0xf9, 0xa1, 0x39, 0x8b, 0xbc, 0x92, 0xef, 0x32, 0x46, 0x66, 0xc6, 0xce, + 0x92, 0xfa, 0x2b, 0xeb, 0x45, 0x7c, 0x42, 0xcc, 0x60, 0xf5, 0x13, 0x89, 0xa6, 0xa9, 0xa6, 0xad, + 0xda, 0xcb, 0x4d, 0xe0, 0x7c, 0x72, 0x95, 0x97, 0xd7, 0x75, 0x69, 0x53, 0xcd, 0x76, 0xc3, 0x66, + 0x5e, 0x00, 0x29, 0xf0, 0xc3, 0xc7, 0xa5, 0xe6, 0xc2, 0xc9, 0xf8, 0xe2, 0x6d, 0x53, 0x2d, 0xc3, + 0xa1, 0x98, 0x5c, 0x65, 0xbe, 0xcf, 0x19, 0xbc, 0x59, 0x48, 0x35, 0xf5, 0x77, 0xcf, 0x20, 0x8b, + 0x6e, 0x0d, 0x7b, 0x01, 0x17, 0x9e, 0xc3, 0x6a, 0x23, 0x4b, 0x7d, 0xe4, 0xb1, 0x3b, 0xa9, 0x4b, + 0x22, 0x41, 0x10, 0x96, 0x3e, 0x0b, 0xfb, 0x3e, 0x5d, 0xed, 0xbc, 0xec, 0xf1, 0x3d, 0x96, 0xf1, + 0xac, 0x90, 0x6c, 0x8e, 0x2b, 0x53, 0x64, 0x21, 0x1e, 0x34, 0x1f, 0x5a, 0xeb, 0x76, 0x25, 0xef, + 0xb9, 0x4b, 0x34, 0xf6, 0x3c, 0xf5, 0xfa, 0x80, 0x1b, 0x1c, 0x1c, 0x67, 0x73, 0xdb, 0x1e, 0xd1, + 0x20, 0x0e, 0x7f, 0x20, 0x3b, 0x30, 0x8e, 0x73, 0x0f, 0x8a, 0xdb, 0x24, 0x8b, 0x2d, 0x41, 0xb4, + 0xf8, 0x51, 0x0a, 0xf2, 0x65, 0xce, 0x88, 0xc1, 0xe4, 0xa5, 0xf4, 0x2f, 0x44, 0xc6, 0xd9, 0xeb, + 0x5f, 0x9e, 0x4a, 0x15, 0x66, 0xbc, 0xa4, 0x11, 0x54, 0xd8, 0xbe, 0xe1, 0xab, 0x44, 0x99, 0x62, + 0x81, 0x1d, 0x66, 0xab, 0xf6, 0x12, 0x56, 0x70, 0xe7, 0x32, 0x92, 0x06, 0x01, 0x52, 0x93, 0x81, + 0xea, 0x90, 0x0d, 0x90, 0xe7, 0x74, 0xe9, 0x41, 0xf1, 0x33, 0x67, 0x0a, 0xd8, 0x82, 0xd3, 0x28, + 0x0d, 0xc9, 0x1c, 0xf1, 0xa2, 0x7a, 0x51, 0x61, 0x89, 0x45, 0xe5, 0x49, 0x12, 0xce, 0x40, 0xa0, + 0xcf, 0xa1, 0x70, 0x88, 0xb2, 0x0b, 0xbf, 0xed, 0x1f, 0x04, 0x8d, 0x78, 0x90, 0x43, 0xa5, 0x83, + 0x25, 0x86, 0xeb, 0x34, 0x2a, 0xa0, 0x4c, 0xe7, 0x9c, 0x45, 0x24, 0x3b, 0x0b, 0xf4, 0x9b, 0x45, + 0xbd, 0xa9, 0x3e, 0x09, 0x22, 0xe2, 0x6d, 0x15, 0xa9, 0x3f, 0x27, 0xfa, 0xfc, 0xa5, 0x72, 0x21, + 0xd8, 0x24, 0x14, 0x50, 0x12, 0x2b, 0x14, 0x8b, 0xff, 0x9c, 0x50, 0x5c, 0xa6, 0x5c, 0xd0, 0xe5, + 0x2c, 0x9a, 0xf8, 0x77, 0x25, 0x68, 0xbc, 0xc4, 0x9c, 0x7f, 0x75, 0x9c, 0x59, 0x4c, 0x20, 0x55, + 0x47, 0x5b, 0xe4, 0x64, 0xb4, 0x4f, 0xdc, 0x31, 0xa2, 0x51, 0x47, 0xa6, 0xc4, 0xbf, 0x68, 0xe1, + 0x37, 0x32, 0xe3, 0x25, 0x46, 0x6d, 0x51, 0xe9, 0x29, 0x20, 0xab, 0x76, 0xd5, 0x31, 0x2b, 0x3f, + 0x5b, 0xd8, 0x59, 0x08, 0xf2, 0x3e, 0xe3, 0x65, 0xb6, 0x5c, 0x03, 0x1e, 0x47, 0x0b, 0xb8, 0x29, + 0x17, 0x44, 0xda, 0xc8, 0x81, 0xbb, 0xd5, 0x1d, 0x5a, 0xcf, 0x20, 0x8e, 0x51, 0x93, 0xbc, 0xc1, + 0xf7, 0x2c, 0xe5, 0xe5, 0x45, 0xdc, 0x95, 0x3b, 0xc2, 0x3f, 0x60, 0x4d, 0x45, 0xa8, 0xb0, 0x48, + 0x5b, 0xae, 0x80, 0xdd, 0x0f, 0x53, 0x89, 0x27, 0xcd, 0x47, 0x9b, 0x39, 0x31, 0x76, 0x0c, 0xaf, + 0x24, 0xea, 0xa0, 0xfe, 0x10, 0xeb, 0xa7, 0xc4, 0x25, 0x21, 0x2a, 0x3f, 0x67, 0x9f, 0x34, 0x89, + 0x3e, 0x3b, 0x41, 0xb2, 0xfc, 0x36, 0x51, 0x79, 0x51, 0x07, 0xe1, 0xac, 0xa6, 0xc5, 0x78, 0x93, + 0x9c, 0x5d, 0x0b, 0x22, 0x44, 0x63, 0x66, 0x01, 0x62, 0xdc, 0x53, 0x89, 0xd6, 0x5d, 0x98, 0x0a, + 0x41, 0x4e, 0x5c, 0x62, 0x0c, 0x21, 0x16, 0x22, 0xf7, 0x5c, 0xf6, 0x28, 0xca, 0x61, 0xb5, 0x9d, + 0x11, 0x69, 0x71, 0xd4, 0x16, 0x21, 0x32, 0xfb, 0x67, 0x81, 0xc0, 0xae, 0x59, 0x14, 0x43, 0xe6, + 0x52, 0xdc, 0x00, 0x05, 0x6a, 0xb2, 0xaa, 0xeb, 0xb8, 0xe7, 0x61, 0x82, 0x40, 0x64, 0x51, 0x2b, + 0xd2, 0xaa, 0xd2, 0x40, 0xb7, 0x70, 0xe9, 0x65, 0x26, 0x20, 0x13, 0xb5, 0xc2, 0x42, 0x17, 0x5d, + 0x07, 0x1b, 0x19, 0x2e, 0xf4, 0x9e, 0x99, 0xe6, 0x91, 0xd8, 0x0d, 0x61, 0x43, 0x40, 0x5b, 0x3c, + 0x39, 0xc7, 0x22, 0x30, 0x13, 0x94, 0xb8, 0x1e, 0xe6, 0x62, 0x18, 0x69, 0x11, 0x0e, 0xae, 0x40, + 0xfe, 0x26, 0x08, 0x75, 0x0f, 0xc6, 0xb8, 0x5d, 0x97, 0x29, 0xee, 0xa0, 0x44, 0x05, 0x2c, 0x63, + 0x11, 0xca, 0x68, 0x54, 0x2e, 0x46, 0xf8, 0x8e, 0xf3, 0xea, 0xce, 0xd3, 0x8a, 0xa9, 0x62, 0x97, + 0xdc, 0x26, 0x37, 0xa1, 0xcf, 0xd5, 0x2a, 0x9b, 0x86, 0xe1, 0x29, 0xe6, 0xe3, 0x8d, 0x21, 0x57, + 0x94, 0x0a, 0x9e, 0xbe, 0x95, 0x75, 0xf5, 0xad, 0x90, 0xb2, 0x8e, 0xfb, 0xe4, 0x3e, 0xa5, 0x90, + 0x91, 0x42, 0x11, 0xb3, 0x2c, 0x82, 0x22, 0x1c, 0x51, 0x31, 0x5b, 0x5c, 0xc5, 0x63, 0xf6, 0x5e, + 0x3e, 0xa9, 0xec, 0x46, 0xe3, 0x14, 0x43, 0x31, 0xd4, 0x34, 0x81, 0x73, 0x75, 0x6e, 0xc6, 0x6e, + 0x6a, 0xbb, 0x68, 0xce, 0x82, 0xe0, 0x19, 0x37, 0xe0, 0x11, 0x53, 0x69, 0x58, 0x9f, 0x8f, 0xfa, + 0x92, 0x20, 0x3f, 0xd9, 0x8b, 0xb7, 0xde, 0x60, 0xd1, 0x90, 0x6d, 0x3b, 0x62, 0x31, 0xd9, 0x7d, + 0x3f, 0xbe, 0x8b, 0xf9, 0x57, 0x29, 0xec, 0x19, 0xd5, 0x56, 0x58, 0x60, 0xb0, 0xff, 0x8e, 0xe1, + 0xa1, 0x6a, 0xf7, 0x53, 0x51, 0x94, 0x11, 0x0f, 0xef, 0x22, 0x0d, 0xc3, 0x7c, 0x88, 0xe3, 0xa9, + 0x93, 0x09, 0x74, 0xc5, 0x8b, 0x8c, 0xed, 0x92, 0x9e, 0x32, 0xd2, 0x1c, 0x0c, 0xc5, 0xf6, 0x7b, + 0x5f, 0xf2, 0x35, 0xcd, 0xf4, 0x34, 0xd0, 0x62, 0xb9, 0x48, 0xcd, 0x42, 0x21, 0xa4, 0x09, 0xd3, + 0x62, 0xbe, 0x02, 0x56, 0x0d, 0xd6, 0x1c, 0xe4, 0x05, 0xdf, 0xc9, 0x4a, 0x7d, 0xf8, 0x1d, 0x1b, + 0x54, 0xc6, 0x69, 0xa0, 0x9d, 0x2e, 0x32, 0x76, 0x97, 0x8f, 0xb7, 0xf6, 0xcb, 0x03, 0xf4, 0xe8, + 0xee, 0x28, 0x5f, 0xcc, 0x0f, 0x90, 0x97, 0xa8, 0xd2, 0x47, 0xc9, 0xe0, 0x6e, 0x69, 0x53, 0x96, + 0x65, 0xe6, 0x01, 0x67, 0xf5, 0x4a, 0xf1, 0xa9, 0x34, 0x25, 0xb6, 0x6c, 0x34, 0x11, 0x86, 0xc8, + 0x76, 0xec, 0xc5, 0x50, 0xd3, 0xc0, 0x72, 0x86, 0x12, 0x13, 0x6b, 0x21, 0x98, 0x7c, 0x21, 0x60, + 0x55, 0x01, 0x4d, 0x6f, 0x31, 0x50, 0xae, 0xcb, 0xc7, 0xfa, 0x07, 0xc1, 0xc1, 0xfe, 0x86, 0x05, + 0x1f, 0x84, 0xdc, 0xb3, 0xde, 0x59, 0x14, 0x44, 0x36, 0x7e, 0x57, 0xdd, 0xe3, 0x9a, 0x88, 0xea, + 0xc7, 0x85, 0xe1, 0xd3, 0xfd, 0x60, 0x29, 0x8d, 0x72, 0xc7, 0x58, 0x16, 0x57, 0xe3, 0x47, 0x3a, + 0x44, 0x3b, 0x60, 0x91, 0x71, 0x67, 0xf0, 0xa2, 0x85, 0xd4, 0x55, 0xe4, 0x1e, 0x1a, 0x66, 0xec, + 0x6a, 0xb6, 0x5c, 0x0c, 0x0c, 0x6f, 0xef, 0xcf, 0x6f, 0x76, 0x85, 0x85, 0xfa, 0x32, 0xab, 0x1d, + 0x44, 0x85, 0x6d, 0xb8, 0x73, 0x82, 0x62, 0xc9, 0x04, 0xb8, 0x8b, 0x2b, 0x7b, 0x89, 0x21, 0x54, + 0xe0, 0x71, 0x8c, 0x74, 0xda, 0xd7, 0x81, 0x5c, 0xa5, 0xc8, 0x85, 0x0a, 0x0d, 0x79, 0xfd, 0xc7, + 0xc7, 0x18, 0x88, 0xbc, 0x7c, 0xe1, 0x5c, 0xb2, 0x6c, 0x33, 0x30, 0x1a, 0xce, 0xfa, 0xb7, 0x8c, + 0x9f, 0x1c, 0x0c, 0x7b, 0x80, 0x41, 0x68, 0xaa, 0xf3, 0xa6, 0x08, 0x17, 0x3b, 0x9d, 0xfb, 0xc0, + 0x73, 0xb5, 0xe8, 0xcc, 0xe4, 0xba, 0x3b, 0x5b, 0xd4, 0x5f, 0xe6, 0xa1, 0xc0, 0x00, 0x4a, 0xdb, + 0xff, 0x5c, 0xa0, 0x4f, 0x38, 0x37, 0x40, 0x78, 0xa5, 0x49, 0xef, 0x03, 0xf1, 0xa2, 0x28, 0xfc, + 0x7a, 0x9f, 0x51, 0x6a, 0xc3, 0xde, 0x71, 0xc6, 0x06, 0x51, 0x90, 0x6c, 0x06, 0x54, 0xdc, 0x21, + 0x09, 0x46, 0xa9, 0x18, 0x90, 0x2e, 0x1b, 0x2c, 0xb1, 0xd5, 0xa8, 0xba, 0x1a, 0x8e, 0xbd, 0x00, + 0xf6, 0x83, 0xe1, 0xc9, 0x33, 0x1b, 0x3f, 0xbe, 0x3d, 0xe8, 0x82, 0xe1, 0x14, 0x8a, 0xb3, 0x45, + 0xc3, 0xc6, 0x5d, 0x10, 0x0a, 0x45, 0x0c, 0xfa, 0xa6, 0xc7, 0xb9, 0x96, 0xe5, 0x2d, 0x49, 0x77, + 0xd9, 0x40, 0x58, 0x20, 0x92, 0xb7, 0x81, 0xca, 0x75, 0xc9, 0xe3, 0xc1, 0xe2, 0x62, 0x60, 0x49, + 0x75, 0x63, 0xf3, 0xf3, 0x9e, 0x4d, 0x3a, 0x13, 0x83, 0xa1, 0xa6, 0xf3, 0x32, 0xc4, 0x8b, 0x6c, + 0x59, 0x1b, 0x44, 0x4f, 0x91, 0x7c, 0x66, 0xc1, 0x69, 0x7b, 0xfe, 0x44, 0x7e, 0xc3, 0x35, 0x6d, + 0x82, 0xd2, 0x42, 0x17, 0xd5, 0xd9, 0x27, 0x8e, 0x3c, 0xc8, 0x0b, 0xf6, 0x45, 0x2d, 0x72, 0x30, + 0x65, 0xb5, 0x82, 0x5d, 0xb4, 0xa3, 0xf6, 0x6c, 0x96, 0x9d, 0x59, 0xe8, 0xd3, 0xce, 0xe1, 0x8e, + 0x2b, 0xe7, 0x8b, 0x71, 0xd1, 0x0c, 0xa7, 0xd2, 0xd2, 0x42, 0xda, 0x66, 0xb2, 0x2a, 0x56, 0xc8, + 0x6e, 0x7a, 0xf3, 0xb5, 0x12, 0x44, 0xa3, 0x81, 0xba, 0x80, 0x35, 0x24, 0x3f, 0xf6, 0xc6, 0xa0, + 0x00, 0x62, 0x1d, 0x0f, 0x81, 0x1b, 0x35, 0x0d, 0xba, 0x99, 0xaf, 0xc6, 0x78, 0x3a, 0x17, 0xfe, + 0xa3, 0x62, 0x31, 0xda, 0xf5, 0x05, 0x05, 0x28, 0xde, 0x0d, 0xe6, 0xb1, 0x2a, 0x43, 0xac, 0xda, + 0xb7, 0x94, 0x37, 0x1a, 0x8b, 0xe3, 0x06, 0x52, 0xc4, 0x27, 0xcf, 0xd3, 0x5a, 0x5b, 0xdb, 0xd0, + 0x3e, 0x1e, 0xf7, 0x90, 0xf8, 0x67, 0xb5, 0xec, 0x25, 0xdd, 0x0c, 0xa4, 0x7a, 0x29, 0xac, 0xc2, + 0xe4, 0xfd, 0x69, 0x5b, 0x28, 0xff, 0x2b, 0xee, 0x5c, 0x93, 0xa6, 0xda, 0xce, 0xa2, 0x89, 0xfc, + 0xe1, 0xd8, 0xbb, 0x13, 0xc2, 0x0f, 0xec, 0xa4, 0xf1, 0x6d, 0x31, 0xe7, 0x5b, 0x34, 0xdb, 0x39, + 0x9a, 0xc5, 0x44, 0xb3, 0x2e, 0xdd, 0x89, 0x59, 0x64, 0xd8, 0xa8, 0xce, 0xfa, 0xf9, 0x28, 0xd1, + 0x28, 0x7b, 0xc6, 0xc4, 0x44, 0xd7, 0xf8, 0xb0, 0x69, 0x39, 0xce, 0xa9, 0x14, 0x0a, 0x9f, 0xf4, + 0x5c, 0x74, 0xb4, 0x5b, 0xe1, 0xb5, 0x94, 0x69, 0xfd, 0xa4, 0x3b, 0x8b, 0xdd, 0xf7, 0x9e, 0x7b, + 0x71, 0xd2, 0x34, 0xf6, 0x9a, 0x49, 0x7c, 0x90, 0xbe, 0x4e, 0xe2, 0x47, 0x47, 0x53, 0x6c, 0xfb, + 0xdf, 0x75, 0xef, 0xc4, 0xcb, 0xcf, 0xa4, 0x44, 0xa1, 0xaf, 0x2c, 0x12, 0xd7, 0x06, 0x2e, 0x0a, + 0x1e, 0x0e, 0xbc, 0xe0, 0xe1, 0x12, 0x7d, 0xf9, 0xc3, 0x25, 0xc6, 0x18, 0xf6, 0xb1, 0x99, 0x51, + 0x13, 0x7f, 0xd1, 0xd3, 0x4d, 0xd1, 0x0e, 0xc8, 0x10, 0x59, 0xc7, 0x57, 0xf9, 0x4e, 0xc3, 0x35, + 0x25, 0xf7, 0x95, 0x8e, 0xe2, 0x8c, 0x0f, 0x60, 0xf4, 0x83, 0x2a, 0x51, 0x9d, 0x89, 0x09, 0xa8, + 0x9c, 0xb3, 0x38, 0x75, 0xc1, 0x07, 0xb5, 0x94, 0x7c, 0x6e, 0xf0, 0x71, 0xce, 0x5b, 0xdc, 0xdc, + 0xe0, 0x77, 0x9c, 0x0c, 0x42, 0x4c, 0x3f, 0xca, 0x85, 0xc5, 0x7c, 0x86, 0x5e, 0x50, 0x1b, 0x03, + 0xe5, 0x57, 0x56, 0x8f, 0x14, 0x88, 0xd4, 0xa7, 0xa9, 0xde, 0x29, 0x08, 0x6f, 0xe6, 0xfb, 0xc7, + 0xba, 0xe3, 0xec, 0x2b, 0xac, 0xb0, 0xd2, 0xf2, 0x5b, 0xb4, 0xeb, 0xfe, 0xae, 0xbc, 0x82, 0x96, + 0x60, 0x71, 0x19, 0xc7, 0x6c, 0x30, 0x96, 0x62, 0xf5, 0xe3, 0xa8, 0xf6, 0x16, 0x44, 0x73, 0xcc, + 0xe9, 0x21, 0x87, 0x98, 0xde, 0x40, 0xf2, 0x22, 0xbb, 0x85, 0x15, 0xe7, 0xd0, 0x49, 0xad, 0xb8, + 0x43, 0x1e, 0xbc, 0x95, 0x8a, 0x93, 0x99, 0xee, 0x3a, 0x44, 0x2c, 0x2b, 0x6f, 0xde, 0x47, 0x25, + 0x7e, 0x8c, 0xb4, 0x88, 0x77, 0x43, 0xac, 0xda, 0x08, 0xfa, 0x9b, 0xf4, 0x8d, 0xeb, 0xfb, 0x82, + 0xb3, 0x67, 0x21, 0xe2, 0x7a, 0x49, 0x3d, 0x77, 0xd7, 0x28, 0x36, 0x0f, 0xa7, 0x43, 0x15, 0x28, + 0xda, 0x21, 0x03, 0x43, 0xa3, 0x71, 0xb0, 0x03, 0x63, 0xa2, 0x27, 0x57, 0x4f, 0x6b, 0x54, 0x2b, + 0x54, 0x7a, 0x1c, 0x94, 0x3b, 0x33, 0x42, 0x15, 0xe8, 0x38, 0xa3, 0x1f, 0xb7, 0x80, 0x24, 0x6f, + 0xc7, 0x62, 0x45, 0xd8, 0xe8, 0xaa, 0x30, 0x75, 0x16, 0xff, 0x28, 0x04, 0x3b, 0x5f, 0x6e, 0xe3, + 0xc2, 0x3f, 0xb1, 0x17, 0x86, 0xdd, 0x11, 0xf8, 0xd9, 0xe6, 0xf5, 0x2c, 0x4e, 0x27, 0x66, 0x97, + 0x42, 0xd2, 0x67, 0xd2, 0xfd, 0xcf, 0x45, 0x8d, 0xd5, 0x93, 0x29, 0xfc, 0x89, 0x45, 0x2e, 0x12, + 0x25, 0x48, 0xf4, 0x88, 0x18, 0xa4, 0xd8, 0x6d, 0x3b, 0xf4, 0x8a, 0x38, 0x84, 0x8c, 0xb0, 0xa0, + 0xd9, 0x88, 0xd6, 0x2a, 0xb1, 0xf0, 0xd4, 0x38, 0x4d, 0x80, 0x57, 0xae, 0xb8, 0x33, 0x94, 0xd6, + 0x3b, 0xdf, 0x54, 0x7f, 0x09, 0x76, 0x69, 0x58, 0x60, 0x49, 0x04, 0xc5, 0xc5, 0x34, 0xc4, 0xd3, + 0x4d, 0xc5, 0xbf, 0x21, 0xb2, 0xf1, 0xcd, 0x0f, 0x4b, 0x9e, 0xf7, 0xa2, 0xe4, 0x6a, 0xfd, 0x71, + 0xbb, 0x01, 0xa6, 0x91, 0x0b, 0x41, 0x88, 0x9a, 0xb3, 0x60, 0xf1, 0x2b, 0x96, 0x77, 0xc0, 0x1c, + 0xe3, 0xec, 0xd2, 0x03, 0xb0, 0xcd, 0x99, 0x24, 0xe0, 0x4f, 0x70, 0xe5, 0x56, 0xed, 0xda, 0xb4, + 0x7d, 0x27, 0x02, 0x33, 0x40, 0xb8, 0x00, 0x02, 0xef, 0xe2, 0x86, 0x99, 0x7f, 0x99, 0x43, 0x5c, + 0xae, 0x1b, 0x5f, 0x11, 0x89, 0x17, 0x89, 0x2d, 0xc8, 0x82, 0x03, 0x16, 0x25, 0x87, 0xdd, 0x0e, + 0xe2, 0xed, 0xd2, 0xb9, 0x45, 0xbf, 0xe4, 0x72, 0x68, 0x0b, 0x67, 0x14, 0x39, 0x98, 0x83, 0xe4, + 0xfc, 0x7f, 0x0d, 0x81, 0xe1, 0x14, 0x01, 0xa6, 0xb6, 0x00, 0x0b, 0x8c, 0x00, 0xc3, 0x24, 0x24, + 0x3c, 0xdd, 0x41, 0x27, 0xc9, 0x19, 0x17, 0x84, 0xc0, 0x20, 0xa5, 0x62, 0x02, 0x83, 0x56, 0x07, + 0x05, 0x79, 0x6d, 0xf8, 0xf0, 0xf9, 0x40, 0xc7, 0x1c, 0x1e, 0x1e, 0x9f, 0xf1, 0xa7, 0x35, 0x59, + 0x4e, 0x39, 0x88, 0x0b, 0x72, 0xef, 0x7f, 0x28, 0xb3, 0xf0, 0x5c, 0x56, 0xea, 0xb2, 0x33, 0x0c, + 0xcf, 0xb8, 0x15, 0x8d, 0xe4, 0xd1, 0xf1, 0xe1, 0xf7, 0xc4, 0xc5, 0xf8, 0xb3, 0x95, 0x8b, 0xe8, + 0x26, 0x4b, 0xba, 0xa9, 0xbe, 0x39, 0x90, 0xdf, 0x44, 0x57, 0xf1, 0xec, 0x13, 0xe1, 0xa8, 0x8b, + 0x01, 0xb3, 0xde, 0x4e, 0xae, 0x14, 0xdd, 0xd9, 0xe5, 0xc2, 0x71, 0x3f, 0x0a, 0x5e, 0xcd, 0xe3, + 0xf6, 0xdf, 0x2a, 0xb4, 0x0b, 0x58, 0x00, 0x10, 0x64, 0xd4, 0x3a, 0xa7, 0x81, 0xd0, 0x9f, 0xed, + 0x72, 0x29, 0x5f, 0x89, 0x1f, 0x93, 0x6c, 0x29, 0x5d, 0xfa, 0x57, 0xe4, 0x42, 0x8c, 0x82, 0x3b, + 0x2a, 0x5e, 0xe0, 0x09, 0x1f, 0x4f, 0xcb, 0x59, 0x70, 0x2c, 0x00, 0x85, 0x4e, 0xd1, 0xf8, 0xcd, + 0x7f, 0x2e, 0xa0, 0x25, 0x22, 0x0a, 0x16, 0x31, 0x0d, 0x4e, 0xfa, 0xe6, 0xb8, 0xc1, 0xf9, 0x04, + 0xfe, 0x85, 0x74, 0xae, 0x1c, 0xdf, 0x81, 0x15, 0x8d, 0x94, 0x0a, 0x71, 0x8d, 0x6c, 0x62, 0x5c, + 0xcd, 0x9f, 0x11, 0x38, 0x88, 0xb8, 0x96, 0xe9, 0x8e, 0xc5, 0xc2, 0x64, 0xc8, 0x15, 0x28, 0xe2, + 0xcb, 0x4e, 0x80, 0xda, 0xfb, 0xa0, 0x06, 0x7d, 0xe6, 0x24, 0xa8, 0x7f, 0x22, 0x2e, 0x12, 0x4d, + 0xbc, 0xe4, 0x60, 0x28, 0x0d, 0xb7, 0x76, 0xc3, 0x7f, 0xb8, 0xe8, 0x8b, 0xf8, 0x98, 0x84, 0x6c, + 0x21, 0x74, 0x50, 0x6e, 0xf9, 0x9c, 0xfa, 0xdc, 0x61, 0xb1, 0xc5, 0x4d, 0x18, 0x54, 0x67, 0x93, + 0x1f, 0x9d, 0x64, 0x93, 0x63, 0xc1, 0xcf, 0x7c, 0x37, 0xfc, 0xdc, 0xdf, 0xd7, 0x08, 0xfa, 0x1d, + 0xda, 0xe9, 0x41, 0x99, 0x92, 0x5c, 0xbc, 0xc9, 0x83, 0xbb, 0xc5, 0xe3, 0x33, 0x7b, 0x96, 0xee, + 0xce, 0xb2, 0xe4, 0x6f, 0x3d, 0x45, 0xa8, 0x1a, 0xb3, 0xdb, 0xe7, 0xcd, 0xdf, 0x25, 0x3a, 0xbb, + 0xbf, 0x07, 0x1c, 0xb8, 0x71, 0x39, 0x06, 0x29, 0xfb, 0x96, 0xfe, 0xa2, 0x72, 0xee, 0x1f, 0x28, + 0x9e, 0xb2, 0x60, 0x95, 0x39, 0x5e, 0x75, 0x4c, 0x6f, 0x38, 0x16, 0xbe, 0x67, 0xdc, 0x9b, 0xdf, + 0xf1, 0x02, 0x21, 0xf8, 0x01, 0x59, 0x22, 0xa8, 0xdd, 0xba, 0xd8, 0x19, 0x8b, 0x02, 0xb5, 0x6e, + 0xea, 0xa2, 0x7b, 0x48, 0x55, 0xdc, 0xc2, 0xfb, 0x97, 0x01, 0x0f, 0x01, 0x6f, 0x0f, 0x17, 0x6e, + 0x8f, 0xd2, 0xe9, 0xf4, 0xf7, 0x0c, 0x94, 0xdf, 0x12, 0xd6, 0xbe, 0xeb, 0x86, 0x7b, 0x75, 0x32, + 0x05, 0x10, 0xa9, 0x28, 0xd0, 0xb6, 0xe0, 0xdd, 0x13, 0xfb, 0xe2, 0xd6, 0x5a, 0xcb, 0xb0, 0xac, + 0x37, 0xc9, 0x03, 0x25, 0xe8, 0x84, 0x74, 0x6d, 0xe1, 0x58, 0x19, 0x2b, 0x2d, 0x0a, 0xe7, 0x0b, + 0x83, 0xfc, 0x3d, 0xe3, 0x03, 0x0e, 0x50, 0x6b, 0xf7, 0xc5, 0x2d, 0xb7, 0x61, 0x9a, 0xb6, 0xe6, + 0x36, 0xe7, 0xde, 0x76, 0x23, 0xd2, 0x42, 0x30, 0xc1, 0x45, 0x37, 0xdf, 0xcd, 0xc6, 0x93, 0xf5, + 0x8b, 0xa9, 0xc0, 0xc0, 0x58, 0x0f, 0x53, 0xd9, 0x74, 0x15, 0xd6, 0x68, 0x1b, 0x6c, 0x25, 0x31, + 0x26, 0x08, 0xcf, 0xd0, 0x81, 0x6a, 0x9d, 0x17, 0x04, 0xda, 0xef, 0x6b, 0x84, 0xa6, 0x26, 0x92, + 0x3e, 0x7d, 0x9c, 0xbe, 0x06, 0x08, 0xa9, 0xde, 0x2b, 0xbd, 0x64, 0x46, 0xdc, 0x5a, 0xff, 0x3a, + 0x25, 0x72, 0xb9, 0x57, 0x03, 0x52, 0xab, 0x5b, 0xdf, 0x4d, 0x0e, 0x0b, 0x76, 0x68, 0x58, 0xdc, + 0xa2, 0x70, 0xbe, 0x67, 0x4c, 0xe8, 0x0c, 0x6b, 0x2e, 0xc0, 0x21, 0x40, 0xe1, 0x5c, 0x13, 0x85, + 0xb5, 0x08, 0x02, 0xe7, 0x1a, 0xb4, 0x1e, 0xdf, 0x62, 0x4e, 0xc9, 0xd5, 0x96, 0x36, 0x88, 0x77, + 0x60, 0xd3, 0x06, 0xd7, 0x56, 0xb5, 0xd8, 0x7a, 0xd3, 0x3b, 0x0b, 0x7d, 0xc6, 0xc4, 0xd8, 0x46, + 0xd7, 0xb0, 0xd5, 0x6c, 0xb6, 0xb4, 0xbc, 0x55, 0xac, 0xfa, 0x51, 0x2f, 0x5b, 0xd6, 0x62, 0x2f, + 0x4f, 0xdd, 0x10, 0xee, 0xa5, 0x7d, 0x2d, 0x64, 0xe5, 0xe5, 0xad, 0xae, 0x5d, 0x12, 0xf2, 0xf2, + 0x51, 0xb3, 0x47, 0x0b, 0xfd, 0x3c, 0x82, 0xa5, 0x75, 0x79, 0x3f, 0xe5, 0xd2, 0x8a, 0x7e, 0x62, + 0xd5, 0x0f, 0x47, 0x13, 0xd7, 0x82, 0x98, 0x01, 0xc5, 0xe4, 0xe5, 0x63, 0x9a, 0xeb, 0x2e, 0x6f, + 0x95, 0x56, 0x5d, 0x8b, 0x6f, 0xd7, 0x6b, 0xe5, 0xdb, 0x04, 0x16, 0x07, 0x63, 0x92, 0x86, 0xd5, + 0x94, 0xc6, 0x01, 0xa5, 0xe9, 0x87, 0x0f, 0xfa, 0xc4, 0xb9, 0xbd, 0x3e, 0x4d, 0x88, 0x19, 0x9b, + 0x38, 0x78, 0xa1, 0x94, 0x2d, 0x26, 0xbf, 0x21, 0x02, 0x6b, 0x31, 0x7c, 0xbc, 0x8a, 0xab, 0x9a, + 0x86, 0xde, 0x53, 0xfb, 0xf1, 0x18, 0xf0, 0x73, 0xa9, 0x33, 0x5c, 0x9c, 0x49, 0x9d, 0x33, 0x40, + 0x3f, 0xf1, 0x45, 0x5e, 0xda, 0xf5, 0xbc, 0xdf, 0xf5, 0xb5, 0x98, 0x09, 0xd4, 0x14, 0xb0, 0x7e, + 0xa4, 0x69, 0x4e, 0x32, 0xd0, 0xd6, 0x99, 0xf6, 0x81, 0x13, 0xdc, 0xc7, 0x7e, 0xd0, 0x85, 0x01, + 0xdd, 0xb1, 0xbc, 0xcf, 0x00, 0x20, 0x80, 0x90, 0x50, 0x60, 0xcb, 0x86, 0x2f, 0xb7, 0xc2, 0xeb, + 0x0b, 0xca, 0x67, 0x84, 0x16, 0xa1, 0x94, 0xc0, 0xdd, 0x64, 0xc4, 0x77, 0xb4, 0xaf, 0xdd, 0xe0, + 0xb7, 0x2d, 0x50, 0x5e, 0xac, 0xb9, 0xf0, 0x62, 0xaf, 0x6d, 0x41, 0xb0, 0x12, 0x2a, 0xa3, 0xde, + 0x44, 0x66, 0xac, 0x16, 0x83, 0x17, 0x3d, 0x60, 0xa1, 0x42, 0xff, 0x41, 0xee, 0xd2, 0x55, 0x84, + 0xf6, 0x93, 0xe5, 0x41, 0xa7, 0x68, 0xe3, 0xf4, 0x1b, 0x02, 0x90, 0x48, 0x1c, 0x48, 0xc1, 0xb6, + 0x0d, 0x9d, 0x16, 0xad, 0x8b, 0xec, 0x8b, 0x02, 0x37, 0x96, 0xa2, 0x6a, 0x09, 0x67, 0xa0, 0xda, + 0x90, 0x07, 0xab, 0x48, 0x5d, 0xcc, 0x15, 0x8b, 0x80, 0x21, 0x28, 0x22, 0x75, 0x31, 0x2b, 0x0a, + 0xfc, 0x55, 0xfe, 0x60, 0xff, 0x6a, 0x23, 0x78, 0xcb, 0xe6, 0xca, 0x62, 0x1c, 0x3e, 0xee, 0xd2, + 0x1e, 0x08, 0x65, 0x6f, 0x51, 0x60, 0xd6, 0x40, 0xb8, 0x30, 0x53, 0x07, 0xb0, 0x2c, 0xcb, 0x0d, + 0x06, 0xcc, 0xfd, 0x51, 0xe9, 0x09, 0x24, 0xda, 0x25, 0xef, 0x10, 0x07, 0x52, 0x0e, 0xbf, 0x55, + 0xa0, 0xb4, 0xf1, 0xd0, 0x58, 0x5b, 0x53, 0xf4, 0x17, 0x04, 0xc0, 0x4a, 0x2e, 0x00, 0xe0, 0xf0, + 0xf3, 0x6f, 0x30, 0xf1, 0xf0, 0xa6, 0xfc, 0xc8, 0x42, 0xa8, 0x45, 0x8e, 0x95, 0xdd, 0x85, 0x56, + 0xe4, 0xd8, 0xc6, 0xfd, 0x76, 0x84, 0x57, 0x08, 0x96, 0x21, 0x44, 0x3f, 0xb2, 0xf0, 0x60, 0x41, + 0x7a, 0x02, 0x45, 0x5c, 0xc2, 0x39, 0x9c, 0xc9, 0x89, 0xea, 0xa8, 0xf8, 0xa7, 0xc3, 0x79, 0xb8, + 0x80, 0x40, 0x30, 0x90, 0x78, 0x36, 0xeb, 0x90, 0x0d, 0x2d, 0x37, 0xdc, 0xec, 0xc3, 0x12, 0x32, + 0x72, 0x1b, 0x1d, 0xd6, 0x7c, 0xb1, 0x02, 0x03, 0x8c, 0xa3, 0x2a, 0xc7, 0x8f, 0xaa, 0x8c, 0xc8, + 0x12, 0x13, 0xa8, 0xab, 0xbf, 0xad, 0x1c, 0x5e, 0x9f, 0x7d, 0x3f, 0x3c, 0xb7, 0x03, 0xc6, 0xb4, + 0x90, 0xa3, 0x07, 0x82, 0x64, 0x21, 0x5b, 0x61, 0x67, 0x97, 0x84, 0x3c, 0x3b, 0xc4, 0xd4, 0x13, + 0x8a, 0x39, 0x76, 0xf8, 0x48, 0x28, 0x95, 0xb1, 0x0c, 0x3c, 0x94, 0xdd, 0xf3, 0x52, 0x22, 0x2e, + 0x4c, 0xa1, 0xb1, 0xc4, 0xdb, 0xab, 0xfc, 0x71, 0x0a, 0xce, 0x37, 0x8b, 0x5b, 0x87, 0x23, 0x98, + 0xf6, 0x98, 0xbb, 0x38, 0xe1, 0x6d, 0x36, 0x20, 0x6b, 0xe1, 0x11, 0x59, 0x4d, 0xf9, 0x05, 0xc2, + 0xb7, 0x16, 0x09, 0xbf, 0x16, 0xa2, 0x7c, 0x6b, 0x05, 0xe5, 0x29, 0xe1, 0x41, 0x9b, 0x5c, 0x42, + 0xf8, 0x35, 0x6f, 0x3e, 0xc9, 0xff, 0x0d, 0xb4, 0xff, 0xaa, 0x28, 0x8a, 0x20, 0xbb, 0xe4, 0x8c, + 0xa3, 0xe6, 0x5a, 0x1c, 0x39, 0x5b, 0x8a, 0xe3, 0xc6, 0x88, 0x2e, 0xa3, 0xea, 0x38, 0x8e, 0xcd, + 0x91, 0x65, 0xff, 0x84, 0xaa, 0x77, 0x1f, 0x51, 0xf5, 0xee, 0x7f, 0x94, 0xaa, 0x9f, 0xa7, 0xcf, + 0x1d, 0xc2, 0xce, 0xf0, 0x2b, 0x46, 0x3c, 0x95, 0x5e, 0xfe, 0x09, 0xde, 0x3b, 0xf9, 0x88, 0x4a, + 0x27, 0x9f, 0xa0, 0x52, 0x25, 0xeb, 0xd2, 0x29, 0x5b, 0x91, 0x97, 0x91, 0xaa, 0x54, 0x2c, 0xca, + 0xff, 0x10, 0x81, 0x4e, 0x88, 0x36, 0x56, 0xf5, 0xcc, 0x0d, 0x19, 0x82, 0x06, 0x8e, 0xcc, 0xb4, + 0x74, 0x7a, 0xba, 0x07, 0xf1, 0x42, 0x12, 0xd9, 0x8a, 0x67, 0xae, 0x3f, 0xa2, 0xda, 0x75, 0x40, + 0xf6, 0x78, 0x59, 0x79, 0xdd, 0x6f, 0x7f, 0x44, 0x37, 0xba, 0x06, 0x7a, 0xdc, 0xb5, 0xf6, 0x0f, + 0xac, 0x81, 0x2b, 0x28, 0x76, 0x0d, 0x42, 0x12, 0x31, 0xd1, 0x89, 0xb6, 0x8c, 0x54, 0xfd, 0x7f, + 0x62, 0xce, 0x1d, 0x7c, 0xc4, 0x4d, 0x7f, 0x4a, 0x97, 0xf8, 0x59, 0xf7, 0x77, 0xe8, 0x12, 0x47, + 0x96, 0xb5, 0x03, 0x8b, 0x10, 0xfd, 0x23, 0xca, 0xb4, 0x57, 0x30, 0xcc, 0xda, 0x67, 0x29, 0xb3, + 0xf3, 0xc1, 0xe2, 0xea, 0x12, 0x66, 0xed, 0xef, 0x51, 0x66, 0x91, 0x30, 0x6b, 0xff, 0x35, 0xca, + 0xec, 0x00, 0x3c, 0x8f, 0x2e, 0x6b, 0x51, 0xc2, 0x44, 0xe8, 0x33, 0x59, 0x41, 0x1f, 0x9a, 0x3f, + 0x50, 0xdb, 0xa8, 0x29, 0x7e, 0x9a, 0x56, 0xf7, 0x1f, 0xd0, 0xea, 0xfe, 0xff, 0x4f, 0x94, 0xba, + 0xc7, 0x5d, 0xcb, 0xa5, 0xa4, 0xf2, 0x69, 0xd0, 0x56, 0xb4, 0xbf, 0x23, 0x73, 0xd6, 0x38, 0xb2, + 0x34, 0xe2, 0xc8, 0xc2, 0x2b, 0xdf, 0x8a, 0x86, 0x31, 0xcd, 0x54, 0xd1, 0x4e, 0xd3, 0x7e, 0xc6, + 0xa8, 0xdb, 0xf2, 0x3f, 0xa2, 0x6e, 0x53, 0x72, 0xac, 0xad, 0xa0, 0x47, 0x9b, 0xe1, 0xb2, 0x8c, + 0x1c, 0xf4, 0x58, 0x4e, 0x74, 0x00, 0x20, 0x31, 0xb0, 0x65, 0xbe, 0x99, 0xcd, 0x84, 0x88, 0x4a, + 0x1d, 0xfc, 0x07, 0xb6, 0xa2, 0x40, 0x3f, 0x1f, 0x57, 0x17, 0x41, 0x90, 0xf9, 0xfa, 0xee, 0xe2, + 0x79, 0x50, 0xd2, 0xe5, 0xb4, 0x3a, 0xae, 0x2f, 0xb1, 0x90, 0x95, 0x30, 0xe4, 0x0b, 0x4f, 0xc8, + 0x2c, 0x83, 0xee, 0x55, 0xd9, 0x5a, 0xd6, 0xc0, 0x5a, 0xb4, 0x85, 0x4e, 0x39, 0xd4, 0xc2, 0x23, + 0xd1, 0x34, 0x63, 0xb2, 0x1c, 0x7d, 0xaf, 0xc6, 0x96, 0x6f, 0xd3, 0x7c, 0xd4, 0x05, 0xb0, 0x95, + 0xf9, 0x06, 0xee, 0x15, 0x6b, 0x28, 0x50, 0xfa, 0xaf, 0xee, 0x06, 0xad, 0xf6, 0xf9, 0x6e, 0xe0, + 0x7f, 0x7c, 0x2b, 0xac, 0x81, 0x15, 0xf0, 0x7b, 0xf1, 0x2e, 0x33, 0x80, 0x2e, 0xe0, 0xc1, 0xa8, + 0x68, 0x3f, 0x64, 0x39, 0x32, 0xc8, 0x3b, 0x1a, 0x00, 0x5d, 0xd5, 0x05, 0x6e, 0x18, 0xbe, 0xb7, + 0xad, 0xcf, 0xf4, 0x01, 0x4c, 0x00, 0xbe, 0x0f, 0x97, 0x2a, 0x58, 0x75, 0x2b, 0xba, 0x20, 0x2f, + 0xef, 0x42, 0x1c, 0xf6, 0x21, 0xd8, 0x28, 0x3a, 0x57, 0xc0, 0x96, 0x11, 0xf6, 0x27, 0x99, 0x14, + 0x21, 0x77, 0xca, 0x1c, 0xec, 0xe6, 0x9b, 0xa2, 0xaf, 0x26, 0x0c, 0xad, 0xf0, 0xd9, 0xb1, 0x95, + 0xcb, 0x48, 0x19, 0x0e, 0x3e, 0x5d, 0x0f, 0x57, 0x21, 0xcf, 0x2a, 0x7c, 0x92, 0x43, 0x2d, 0xbd, + 0xcb, 0x4f, 0x5d, 0x45, 0xef, 0x1a, 0xc3, 0x4f, 0x59, 0x17, 0x8e, 0x21, 0x50, 0xed, 0x17, 0x2d, + 0x0b, 0xc9, 0xa0, 0x13, 0x93, 0x1a, 0x78, 0x52, 0x1f, 0xf1, 0xa3, 0x06, 0x9d, 0x64, 0x8e, 0x2c, + 0x53, 0x23, 0x4b, 0x0e, 0x5e, 0x6f, 0x64, 0xb3, 0xd4, 0xb9, 0xb1, 0x76, 0xbd, 0x64, 0xcd, 0xea, + 0xd8, 0x9a, 0x18, 0xf6, 0x99, 0x41, 0x8a, 0x2c, 0x72, 0x8e, 0x5a, 0x61, 0x3a, 0xb5, 0xe1, 0x95, + 0xf7, 0x9f, 0x31, 0x27, 0x7b, 0x4b, 0x33, 0x1c, 0xba, 0xd2, 0xe0, 0x97, 0xf8, 0x36, 0x2c, 0x2a, + 0x52, 0xe9, 0x63, 0x3f, 0x78, 0x6c, 0x07, 0x8f, 0x13, 0x7c, 0xdc, 0xca, 0x06, 0x3e, 0xa3, 0xb5, + 0x48, 0xab, 0xd9, 0xd8, 0x56, 0xe3, 0x1a, 0xcd, 0x86, 0x1b, 0x5d, 0xfb, 0xb0, 0xd5, 0x5c, 0xbc, + 0x7b, 0x10, 0x1a, 0xcd, 0x05, 0xcb, 0xf1, 0x47, 0xad, 0xe6, 0x3e, 0xd3, 0xd5, 0x35, 0xae, 0xd5, + 0xfc, 0xa2, 0x7f, 0xcc, 0x77, 0x86, 0xb1, 0xfb, 0x0c, 0x85, 0x81, 0xe8, 0x21, 0x72, 0xca, 0xbc, + 0x6b, 0x81, 0x57, 0x8c, 0xf9, 0x39, 0xc8, 0x74, 0xc2, 0xdc, 0x5e, 0x61, 0xaf, 0x97, 0x7b, 0x93, + 0x77, 0xd8, 0xe5, 0xc5, 0x54, 0xa7, 0x90, 0xf7, 0xd2, 0xd3, 0x29, 0x3c, 0x60, 0x1d, 0x6f, 0xd5, + 0xa3, 0x6b, 0x54, 0xcc, 0x32, 0xfa, 0x42, 0xde, 0xba, 0xc6, 0x44, 0xa7, 0x85, 0xf7, 0x70, 0x4b, + 0x1f, 0x55, 0x0c, 0xdc, 0x3a, 0xf4, 0xbe, 0x1d, 0x59, 0x17, 0x0d, 0x98, 0xe5, 0xd4, 0xcf, 0xa1, + 0x11, 0xbd, 0xef, 0x0c, 0xea, 0x62, 0x39, 0xc2, 0x41, 0xd8, 0x8e, 0xde, 0x0b, 0x8d, 0x26, 0x3b, + 0x70, 0xcb, 0xa1, 0x4b, 0xfd, 0x28, 0x64, 0xea, 0xba, 0x5f, 0xc3, 0x3e, 0x3d, 0xef, 0x08, 0x33, + 0xeb, 0x4a, 0xbe, 0xe2, 0x3a, 0x9c, 0x3f, 0x22, 0x26, 0x23, 0x25, 0x46, 0x65, 0xa1, 0x5c, 0xf9, + 0x14, 0xc5, 0x5c, 0x0c, 0x28, 0xc5, 0xda, 0x79, 0x46, 0x31, 0xaa, 0x41, 0x09, 0x00, 0x86, 0x38, + 0x0e, 0xf1, 0x87, 0x63, 0xcd, 0x03, 0x3e, 0xf1, 0xfb, 0xc5, 0xb4, 0x13, 0x5e, 0x53, 0x60, 0xd7, + 0x6e, 0x0a, 0x3d, 0x98, 0xee, 0x3e, 0xe5, 0x79, 0x72, 0xaf, 0x71, 0xa1, 0x3a, 0x75, 0xb1, 0x45, + 0xaf, 0x03, 0x0f, 0x54, 0xba, 0x6f, 0xec, 0x7e, 0x70, 0xaa, 0xb6, 0x48, 0xa2, 0x1b, 0x5d, 0x86, + 0x72, 0x03, 0x26, 0x1e, 0x0d, 0x1e, 0x5a, 0x5a, 0x62, 0x91, 0x41, 0x82, 0x9b, 0x54, 0xf8, 0x79, + 0x8b, 0xa9, 0xba, 0xeb, 0x7f, 0x64, 0xb4, 0x2d, 0xf7, 0x3c, 0x36, 0x89, 0x92, 0xcb, 0xbf, 0xaa, + 0xdc, 0x73, 0x46, 0x67, 0x59, 0xc9, 0xb5, 0xa8, 0x04, 0xf1, 0xd0, 0xf0, 0x07, 0x03, 0x5f, 0xc2, + 0x84, 0xc1, 0x6d, 0x35, 0xfa, 0x51, 0x60, 0x1c, 0x27, 0x7f, 0xb0, 0x59, 0x68, 0x0c, 0x8d, 0x16, + 0xe6, 0x46, 0x05, 0xbf, 0x7b, 0x7a, 0xc9, 0x88, 0x4f, 0x9d, 0xf3, 0x0b, 0x80, 0x38, 0xb7, 0x61, + 0xc8, 0xce, 0xf3, 0xc2, 0xe7, 0x20, 0xc3, 0xdd, 0x32, 0x4b, 0xa7, 0xd3, 0xc2, 0x82, 0xca, 0x4e, + 0x71, 0x88, 0x55, 0xe1, 0xd7, 0x22, 0x8e, 0x67, 0xef, 0xbe, 0x43, 0xd7, 0x85, 0xe8, 0x32, 0x78, + 0x0c, 0x53, 0xb3, 0x21, 0x66, 0xf9, 0xfc, 0xd2, 0xb2, 0x7a, 0x03, 0xa0, 0x03, 0x84, 0x4b, 0x0f, + 0x9c, 0xa1, 0xbb, 0x01, 0xb0, 0x64, 0x06, 0xb0, 0x9d, 0x9e, 0xb2, 0x12, 0x9d, 0x02, 0x7f, 0x8e, + 0x8d, 0xcb, 0xd1, 0xf6, 0x2e, 0x08, 0xa8, 0xba, 0x3e, 0xd2, 0x34, 0x09, 0x11, 0xd3, 0x5a, 0x0e, + 0xac, 0x2b, 0x7d, 0x92, 0xb6, 0xc8, 0xd0, 0x18, 0x93, 0x23, 0x87, 0x0c, 0x13, 0xe2, 0x44, 0x23, + 0x38, 0x06, 0x53, 0x31, 0x09, 0x0b, 0xcf, 0xeb, 0x88, 0xd8, 0xce, 0xb1, 0x6d, 0xe8, 0x89, 0x99, + 0x35, 0x44, 0xa4, 0xab, 0x5f, 0xe4, 0xf0, 0xd7, 0x5d, 0xf9, 0x21, 0x93, 0x72, 0x45, 0x59, 0xe2, + 0x13, 0xb0, 0x39, 0xe8, 0xe1, 0xda, 0xf2, 0x2e, 0x52, 0xf6, 0xca, 0x6f, 0x2e, 0x99, 0xe4, 0x31, + 0xe3, 0x84, 0x5c, 0xb7, 0x07, 0xda, 0x5b, 0xc7, 0xf9, 0xc8, 0x9f, 0xdc, 0x9b, 0x8a, 0x71, 0x42, + 0x17, 0x54, 0x67, 0x0a, 0x04, 0x3f, 0xe6, 0xe1, 0xca, 0x5d, 0x06, 0x4f, 0x18, 0xba, 0x3b, 0x1b, + 0x4b, 0xe7, 0xb5, 0x0b, 0x16, 0x37, 0xfe, 0x83, 0x39, 0xbe, 0xc6, 0x4f, 0xf2, 0x3f, 0x98, 0xe3, + 0x2c, 0x00, 0x75, 0xc5, 0x14, 0xf7, 0x0a, 0x48, 0xfd, 0xa3, 0x6e, 0x42, 0x64, 0xe1, 0x86, 0xb6, + 0x98, 0x4c, 0x53, 0xc4, 0xf0, 0x5b, 0xc1, 0xf8, 0xe1, 0x60, 0xc8, 0x50, 0x40, 0x78, 0x33, 0x28, + 0x6d, 0x6d, 0x64, 0xd5, 0xbf, 0x2d, 0x2d, 0xce, 0x46, 0xd9, 0xaf, 0xf1, 0xdf, 0x2b, 0x38, 0x38, + 0xe6, 0x5b, 0x8a, 0x10, 0xdb, 0x92, 0x4a, 0x88, 0x18, 0x7a, 0x86, 0x5d, 0x70, 0xe7, 0x60, 0x38, + 0x9c, 0xdc, 0xdb, 0x08, 0xf4, 0x64, 0x50, 0x54, 0x04, 0xb9, 0x64, 0xfa, 0x07, 0x25, 0xd0, 0xfe, + 0xc3, 0xff, 0x9c, 0xec, 0x89, 0xb2, 0xb6, 0x1b, 0x47, 0x11, 0xe2, 0x63, 0x97, 0x72, 0x1e, 0x2e, + 0xec, 0x3d, 0xe8, 0x50, 0x50, 0xe6, 0x12, 0xcd, 0x6b, 0x0f, 0x2d, 0x16, 0xf3, 0x48, 0x4f, 0x57, + 0xd0, 0x61, 0xcb, 0xee, 0xe7, 0x1b, 0xe5, 0x5a, 0x78, 0x65, 0xa2, 0x65, 0xda, 0xc6, 0xd4, 0xd5, + 0x62, 0x7a, 0x9a, 0x53, 0x17, 0xfd, 0xa2, 0x21, 0xef, 0x02, 0x6b, 0x60, 0x7f, 0xea, 0xf1, 0x41, + 0xd8, 0x17, 0xe0, 0x87, 0x52, 0xa2, 0x0e, 0xe3, 0xf5, 0xdb, 0xeb, 0xb0, 0x4b, 0xf6, 0x00, 0x4d, + 0x79, 0x57, 0x14, 0x16, 0x91, 0x14, 0x28, 0x17, 0x00, 0xa6, 0xe5, 0x5c, 0xae, 0xb4, 0x14, 0xcf, + 0x35, 0x1e, 0x51, 0x5a, 0x92, 0xb7, 0xff, 0xff, 0x18, 0xcb, 0xb5, 0x28, 0x9a, 0x01, 0x96, 0xd9, + 0x58, 0x2c, 0x29, 0x82, 0x95, 0x42, 0xae, 0x16, 0x99, 0xfe, 0xf1, 0x94, 0xa4, 0x25, 0x3f, 0x81, + 0xe0, 0xda, 0xe7, 0xe9, 0x18, 0x20, 0x98, 0x5b, 0x82, 0x20, 0x4c, 0x97, 0x4a, 0x29, 0xff, 0xb9, + 0xa1, 0xa6, 0x05, 0x57, 0x22, 0xb8, 0xf6, 0xa7, 0x03, 0x1d, 0x20, 0x78, 0x67, 0x2c, 0x67, 0xc7, + 0x4a, 0x39, 0x5f, 0xf8, 0x1c, 0x86, 0x58, 0xf0, 0xbf, 0x8d, 0x15, 0xf7, 0x61, 0x89, 0x5b, 0x36, + 0xcc, 0xd0, 0x72, 0xf1, 0x73, 0x7c, 0x48, 0x4b, 0xfe, 0x53, 0x7c, 0x18, 0xdd, 0x5b, 0xa3, 0x02, + 0x41, 0x8e, 0x71, 0x9b, 0x45, 0x85, 0x2f, 0xbf, 0x19, 0xbe, 0xc6, 0x2b, 0xba, 0xd0, 0x49, 0xf2, + 0x4e, 0x3c, 0x5d, 0x37, 0x9f, 0x2b, 0x7e, 0xbc, 0xcd, 0xcd, 0x5b, 0x0e, 0xee, 0xf6, 0x9c, 0x49, + 0xd0, 0xeb, 0xb4, 0xd2, 0xf7, 0x46, 0xcb, 0xb8, 0x6e, 0xc9, 0xcf, 0xec, 0x7d, 0xff, 0xa3, 0xbe, + 0xc9, 0x4f, 0x6e, 0x7d, 0x33, 0x9f, 0x5d, 0xd0, 0x2f, 0xaa, 0x02, 0x04, 0xe4, 0x0d, 0x79, 0xf1, + 0x5c, 0xbd, 0xc0, 0xc6, 0x6e, 0xc5, 0x39, 0xf1, 0x38, 0xf2, 0x64, 0xff, 0x70, 0x80, 0xf8, 0xf1, + 0xa1, 0x28, 0x50, 0x7d, 0x97, 0xae, 0x74, 0x05, 0xb9, 0xf2, 0xe9, 0x01, 0x0a, 0x10, 0x38, 0xc2, + 0xc5, 0xc9, 0x56, 0x9d, 0xb7, 0xd8, 0x4d, 0x19, 0x6e, 0x90, 0xfc, 0x82, 0x7f, 0x1a, 0xa3, 0x20, + 0xff, 0xcf, 0xc6, 0x28, 0x2c, 0xf3, 0x35, 0xf3, 0x54, 0xa7, 0x94, 0xcb, 0xfa, 0x03, 0xa5, 0x7a, + 0x5d, 0x5b, 0xba, 0x51, 0x4d, 0x6b, 0xe5, 0xa2, 0x5e, 0x78, 0x77, 0xe9, 0x59, 0x39, 0x62, 0xa1, + 0xf8, 0xa7, 0x3f, 0xdc, 0xf6, 0x68, 0x66, 0x63, 0x77, 0x84, 0x78, 0xcf, 0xfd, 0xc8, 0x06, 0x73, + 0x83, 0xfa, 0x36, 0xfe, 0x6c, 0xea, 0xac, 0xc5, 0x07, 0x18, 0xfc, 0x89, 0x17, 0xdb, 0x1d, 0x8f, + 0xb5, 0xbf, 0x3d, 0x20, 0x91, 0xf1, 0xc8, 0x01, 0x1f, 0xb3, 0xfe, 0x08, 0xd9, 0xd5, 0x03, 0x91, + 0x8f, 0x4c, 0x1a, 0x6e, 0x1c, 0xd6, 0x56, 0x0f, 0x84, 0x17, 0x1e, 0xf5, 0x87, 0x42, 0xac, 0x99, + 0xfb, 0x40, 0x82, 0xb9, 0xe3, 0x90, 0xfb, 0x67, 0x64, 0x98, 0xfc, 0xdf, 0x28, 0xc1, 0x3e, 0x31, + 0x10, 0x79, 0x71, 0xcb, 0x1d, 0x87, 0xdc, 0xea, 0x71, 0x28, 0xfc, 0xed, 0x09, 0x21, 0x93, 0xf2, + 0xdf, 0x9a, 0x10, 0xf9, 0x4f, 0x4e, 0x88, 0xfc, 0x67, 0x26, 0x44, 0x3e, 0xfb, 0xff, 0xeb, 0xf9, + 0x50, 0x08, 0xe6, 0x43, 0x7e, 0xd9, 0x38, 0xf4, 0xa6, 0x86, 0x19, 0xd8, 0x30, 0xee, 0x59, 0x68, + 0x6a, 0xa7, 0x85, 0xf4, 0x2a, 0xc8, 0x90, 0xa3, 0x2a, 0x95, 0xc1, 0x29, 0xcf, 0xf1, 0x11, 0x7d, + 0xae, 0x73, 0xeb, 0x03, 0x89, 0x0a, 0xb0, 0xdd, 0xb5, 0x70, 0xab, 0x49, 0x01, 0x07, 0x93, 0x37, + 0x18, 0x3e, 0xda, 0xe4, 0x85, 0x1f, 0xad, 0xc6, 0xe9, 0x43, 0xa1, 0xd1, 0xbb, 0xa0, 0x1d, 0x48, + 0x64, 0x25, 0xba, 0x0b, 0xe7, 0x1e, 0x7d, 0xfa, 0x23, 0x55, 0x6d, 0x2d, 0xdc, 0xeb, 0x6c, 0x44, + 0x49, 0xfb, 0xb0, 0xd3, 0xf9, 0x42, 0x9b, 0xeb, 0xf4, 0xda, 0xb2, 0x61, 0xf2, 0x3a, 0x9d, 0xf5, + 0x3a, 0x9d, 0x5b, 0xda, 0xe9, 0x9c, 0xb8, 0xa8, 0xeb, 0xc7, 0x75, 0x3a, 0xf7, 0xe9, 0x4e, 0xaf, + 0xad, 0x52, 0xa1, 0x01, 0xb3, 0xdc, 0x9f, 0x74, 0x9a, 0x19, 0xc9, 0x85, 0xce, 0x07, 0x43, 0xcd, + 0x77, 0x3a, 0xe7, 0x75, 0x3a, 0x1f, 0xe9, 0xf4, 0x5a, 0xd0, 0xeb, 0xfc, 0xe2, 0x50, 0xc7, 0x75, + 0x3a, 0xbf, 0xa4, 0xd3, 0x9f, 0x32, 0x6c, 0x96, 0x5a, 0xc4, 0x88, 0x46, 0x8b, 0xf4, 0x87, 0x78, + 0x93, 0xb8, 0xc8, 0x87, 0xa3, 0xc6, 0x78, 0x7b, 0xdc, 0x03, 0x18, 0x51, 0x23, 0x3c, 0x22, 0xee, + 0xd8, 0x99, 0x0c, 0x4e, 0xdc, 0xb1, 0x0f, 0x18, 0x89, 0x5b, 0xcb, 0x8a, 0xe6, 0x96, 0x7b, 0xff, + 0x6c, 0x77, 0xe2, 0x58, 0x36, 0xbc, 0x71, 0x1a, 0x9d, 0x05, 0x28, 0x53, 0x6d, 0xee, 0x9a, 0x00, + 0x81, 0x04, 0xdb, 0xed, 0x40, 0x8c, 0x0b, 0x7b, 0xeb, 0x26, 0x38, 0x98, 0x1f, 0x0a, 0x45, 0x74, + 0x1c, 0x8f, 0xec, 0xec, 0xa0, 0x42, 0x20, 0xdf, 0xa8, 0xc0, 0x2b, 0x15, 0xd3, 0x45, 0x2f, 0xe2, + 0x4a, 0x4e, 0x67, 0x03, 0x39, 0x97, 0xde, 0x04, 0xee, 0xd7, 0xdb, 0xb6, 0x59, 0x63, 0x01, 0xca, + 0xe8, 0xfe, 0xa2, 0x61, 0x9d, 0xf4, 0xfb, 0x5f, 0x3e, 0x3b, 0xb9, 0x2c, 0x44, 0x0b, 0x44, 0xba, + 0x7d, 0x69, 0x21, 0xd2, 0x1f, 0x52, 0xdb, 0x7c, 0xd5, 0xc4, 0x15, 0x1b, 0x1b, 0x5d, 0x71, 0xcb, + 0x05, 0xc4, 0x6d, 0x69, 0x2c, 0x73, 0xa8, 0xb1, 0x93, 0x34, 0xf1, 0x4e, 0xf3, 0x58, 0x7f, 0xda, + 0xda, 0x12, 0xa7, 0x39, 0x1d, 0xff, 0xe4, 0x37, 0x61, 0x89, 0xc7, 0xdc, 0xcd, 0x8e, 0x51, 0x2f, + 0x78, 0xbf, 0xd7, 0xe7, 0xdc, 0x5e, 0x6b, 0x9f, 0x74, 0x98, 0x2f, 0xf8, 0xcb, 0x29, 0x12, 0x11, + 0x5f, 0x95, 0x6b, 0x62, 0x87, 0xbd, 0xe0, 0x8c, 0x7c, 0xc8, 0x46, 0x01, 0x3f, 0x2f, 0x5b, 0x3d, + 0xcc, 0x8f, 0x98, 0x7a, 0x69, 0xb8, 0x2e, 0xfd, 0xf6, 0xa1, 0xe1, 0xca, 0x05, 0xb7, 0x8e, 0x17, + 0x48, 0x1e, 0x14, 0xd1, 0x54, 0xfd, 0x85, 0xdf, 0xbf, 0x31, 0x4c, 0xa2, 0xdf, 0x28, 0xed, 0xc4, + 0xf2, 0x20, 0x72, 0x6f, 0xc9, 0x89, 0x0d, 0x22, 0x67, 0xd1, 0xc0, 0xf1, 0xe1, 0xeb, 0x0b, 0x8d, + 0xae, 0x2d, 0xb4, 0x9a, 0xfd, 0x44, 0xe8, 0xfa, 0x62, 0xa3, 0xae, 0xcf, 0x78, 0xed, 0x93, 0xcd, + 0x2e, 0xb4, 0x9a, 0x5b, 0x7a, 0x44, 0xc1, 0x5f, 0x6a, 0x62, 0x8f, 0x62, 0xf8, 0xb3, 0xff, 0x6f, + 0xf6, 0x36, 0xbf, 0xac, 0xb7, 0xbe, 0xac, 0x8f, 0x3d, 0xe8, 0xc2, 0xd8, 0x67, 0x6d, 0x75, 0xa0, + 0xbe, 0xfb, 0x3d, 0x94, 0xf0, 0x4e, 0x39, 0x3b, 0xca, 0xa3, 0xa0, 0x4b, 0x35, 0xec, 0x03, 0xb6, + 0xf6, 0xf0, 0x23, 0x38, 0x37, 0x98, 0x85, 0x07, 0xb7, 0x92, 0x8b, 0xd5, 0xfc, 0x6b, 0xc6, 0x56, + 0x9d, 0xb7, 0x88, 0xd4, 0xc1, 0x93, 0x95, 0xfe, 0x84, 0xa0, 0x47, 0xc5, 0x63, 0x78, 0x30, 0xd8, + 0xe2, 0x10, 0xe8, 0xc7, 0x68, 0x3e, 0x7b, 0x88, 0x44, 0xa0, 0x97, 0x10, 0x31, 0x7a, 0xe1, 0x3e, + 0xca, 0x5a, 0x64, 0x9b, 0xc1, 0x47, 0x62, 0xd8, 0x67, 0x3b, 0xad, 0xc3, 0xbe, 0x57, 0x7f, 0xa2, + 0x8a, 0x82, 0xa2, 0x39, 0x6e, 0x1c, 0x3c, 0x7a, 0x7b, 0xaa, 0xf4, 0xa3, 0x1e, 0x19, 0x53, 0xef, + 0xd7, 0xda, 0x8a, 0x4d, 0x4a, 0x05, 0x49, 0xbd, 0xdb, 0xb9, 0xb8, 0x9e, 0xc8, 0x27, 0x07, 0x7d, + 0xa3, 0x01, 0xff, 0x9d, 0xb7, 0x6e, 0x07, 0x7b, 0xb7, 0x7d, 0x78, 0xda, 0x91, 0xf1, 0x7d, 0xbf, + 0xd9, 0x78, 0x84, 0x9f, 0x66, 0x71, 0x7f, 0xd4, 0x2b, 0x62, 0x42, 0xe3, 0xe1, 0xbc, 0x75, 0x2d, + 0x1f, 0x35, 0x2c, 0xbb, 0xd0, 0x29, 0x5d, 0x61, 0xc2, 0xb5, 0x7e, 0x75, 0x9b, 0xdd, 0x81, 0x32, + 0xd3, 0xe7, 0xc9, 0xb8, 0xfc, 0x78, 0x75, 0x8b, 0x89, 0xc7, 0x9d, 0xbd, 0xc1, 0x53, 0x67, 0xd2, + 0x68, 0xec, 0xda, 0x67, 0xf0, 0xba, 0xb9, 0xdb, 0xe8, 0x74, 0xc7, 0xaf, 0x07, 0x58, 0x61, 0xa7, + 0xdd, 0xba, 0xbd, 0xde, 0xb9, 0x6b, 0x0e, 0x6e, 0xb4, 0xc7, 0x4a, 0x7b, 0xd7, 0x68, 0x4c, 0x76, + 0xcf, 0xce, 0xef, 0x37, 0xf5, 0x8a, 0x3e, 0x69, 0xaa, 0xe6, 0x9b, 0x73, 0x75, 0x5e, 0x78, 0x2a, + 0x3b, 0x6d, 0xeb, 0xe6, 0x70, 0xb8, 0x3b, 0xdc, 0x2f, 0x18, 0x97, 0xef, 0x6f, 0x5a, 0x77, 0x72, + 0xfd, 0x6a, 0x66, 0x5b, 0xad, 0xae, 0x7e, 0x97, 0x39, 0x1f, 0x3d, 0x8d, 0xde, 0x5f, 0x89, 0xd5, + 0xd8, 0x79, 0x9b, 0x3e, 0xbc, 0xeb, 0x3b, 0x93, 0xbc, 0xda, 0x7f, 0x21, 0xfb, 0x7b, 0xbd, 0x87, + 0xb7, 0xdb, 0xd1, 0xe0, 0x24, 0xf3, 0xb6, 0x7f, 0x26, 0x37, 0xa7, 0xc7, 0xbd, 0xb7, 0xd7, 0x87, + 0xa7, 0xbd, 0x8b, 0x4e, 0x29, 0xd3, 0xb2, 0x2a, 0x99, 0x76, 0x6f, 0x73, 0x74, 0xd4, 0x2c, 0x9e, + 0x4f, 0xba, 0x9b, 0x86, 0x75, 0x36, 0x6e, 0x5c, 0xd2, 0xbe, 0xec, 0x69, 0xfb, 0x37, 0x2f, 0xad, + 0xd1, 0xd5, 0xb0, 0xd9, 0x84, 0x89, 0xb0, 0x18, 0x97, 0x3b, 0x0e, 0x4b, 0xae, 0x50, 0x98, 0x4a, + 0xec, 0x9a, 0xea, 0x1e, 0xbc, 0xe5, 0x79, 0x87, 0xdf, 0x80, 0xa2, 0x0b, 0x6a, 0x0f, 0xf8, 0x7a, + 0xb0, 0x72, 0x27, 0x2c, 0x06, 0x4a, 0x84, 0x03, 0x8f, 0x74, 0x10, 0x90, 0x7a, 0x87, 0x08, 0xb8, + 0x07, 0xf1, 0x87, 0xb0, 0xbc, 0x6d, 0x3d, 0x9c, 0x9d, 0x09, 0x7f, 0x37, 0x8f, 0x19, 0x26, 0x62, + 0x52, 0x12, 0xff, 0xb7, 0x4d, 0x34, 0x0c, 0x83, 0xd9, 0xba, 0xa5, 0x49, 0xf4, 0xb0, 0x5d, 0xcc, + 0x19, 0x9d, 0xb8, 0x36, 0xa8, 0x2a, 0x81, 0xb3, 0x36, 0xac, 0x4d, 0x74, 0xf4, 0x1e, 0xd5, 0x23, + 0x58, 0xff, 0xdb, 0x86, 0xe1, 0x44, 0x80, 0xfa, 0x7b, 0xb2, 0x94, 0xb8, 0xbc, 0xe2, 0x37, 0x10, + 0xb7, 0xce, 0xc0, 0x84, 0x10, 0x26, 0xaa, 0x33, 0x70, 0x73, 0xd8, 0x0e, 0xbd, 0x62, 0x39, 0x38, + 0x27, 0x60, 0x12, 0x97, 0x0b, 0x35, 0x98, 0x1b, 0xfb, 0x7b, 0xf2, 0x5e, 0xcd, 0x5d, 0x5c, 0xd6, + 0x84, 0xf6, 0x9b, 0xd0, 0x50, 0xad, 0x8e, 0x61, 0x18, 0x2f, 0x2a, 0xa1, 0xa7, 0x62, 0x9d, 0x01, + 0x11, 0xbe, 0x2b, 0x02, 0xdd, 0xc2, 0x14, 0x07, 0x8e, 0x63, 0xda, 0xd5, 0x4c, 0x06, 0xf7, 0x09, + 0xd3, 0x60, 0x43, 0x75, 0x8c, 0x91, 0x65, 0x93, 0x34, 0x06, 0xb1, 0x98, 0x19, 0x50, 0x5b, 0x14, + 0x0b, 0xe8, 0x52, 0x17, 0xff, 0xb7, 0x7b, 0x68, 0x64, 0x8d, 0x9e, 0x37, 0xec, 0x18, 0xc3, 0xe1, + 0x48, 0xa7, 0x9e, 0x19, 0x65, 0x6b, 0xd9, 0x32, 0xa6, 0xb3, 0xa3, 0x5a, 0xff, 0x55, 0x59, 0xb0, + 0xec, 0x68, 0xd7, 0x67, 0x85, 0x01, 0x7e, 0x85, 0x4a, 0xdc, 0xa2, 0x68, 0xab, 0x2e, 0xab, 0xd8, + 0x0b, 0xdc, 0xad, 0x2f, 0x72, 0xb7, 0x1b, 0x08, 0xe4, 0x6d, 0x24, 0x2f, 0xf9, 0xcc, 0xa5, 0xf8, + 0x59, 0xae, 0x45, 0x2d, 0xc0, 0xef, 0xca, 0x22, 0xe7, 0xc7, 0x6b, 0xcb, 0x43, 0x6d, 0x8c, 0xdb, + 0x02, 0x6b, 0x51, 0x1a, 0xfa, 0x78, 0xb3, 0x7c, 0x17, 0xc7, 0xc5, 0x1b, 0x60, 0xf0, 0x39, 0xb6, + 0x67, 0xd1, 0x90, 0x72, 0x3c, 0x68, 0xba, 0x38, 0x54, 0x11, 0x82, 0x0f, 0x46, 0x7d, 0x12, 0x39, + 0x38, 0x88, 0x4c, 0xba, 0xe6, 0x83, 0xd1, 0x40, 0x48, 0x6c, 0x07, 0xb2, 0x01, 0xff, 0xad, 0x09, + 0x37, 0x86, 0x30, 0xb2, 0x89, 0xd0, 0x1e, 0xa9, 0x1a, 0xde, 0x76, 0x2b, 0x10, 0xb6, 0x72, 0x4b, + 0x34, 0x15, 0xf5, 0x24, 0x68, 0xda, 0x02, 0x0d, 0xd6, 0x3d, 0x4d, 0x2e, 0xc0, 0x7a, 0x03, 0x33, + 0x92, 0xd5, 0x7d, 0x34, 0x46, 0x42, 0x07, 0xca, 0x58, 0xc4, 0x19, 0x59, 0xba, 0x80, 0x21, 0x54, + 0x04, 0xa4, 0xb8, 0x3a, 0x24, 0x74, 0x77, 0x17, 0x79, 0x1b, 0xaf, 0xc7, 0xb0, 0xf1, 0x4c, 0x2d, + 0x72, 0x35, 0x7e, 0x8e, 0x06, 0x88, 0x4f, 0x9f, 0x51, 0x29, 0xc5, 0xf3, 0xbe, 0xc0, 0xac, 0x96, + 0x4e, 0xac, 0xf4, 0x1a, 0x9b, 0x51, 0x0b, 0x83, 0x15, 0x0a, 0x10, 0x72, 0x4e, 0x0d, 0x8b, 0x6a, + 0x24, 0x17, 0x1e, 0x56, 0x06, 0x8d, 0xf8, 0x5c, 0x31, 0xe5, 0x17, 0xeb, 0xe7, 0xf8, 0xfa, 0x23, + 0x1d, 0x8f, 0x79, 0x5b, 0x74, 0xaa, 0xfb, 0x70, 0xb8, 0xc9, 0xbd, 0x16, 0xcc, 0xee, 0xb5, 0x7d, + 0xc3, 0x82, 0xee, 0xdb, 0x8e, 0x60, 0x12, 0x0b, 0xa3, 0xbf, 0x90, 0x57, 0x25, 0x41, 0x05, 0x23, + 0x02, 0xbf, 0x60, 0x87, 0x93, 0x8e, 0xd0, 0x8b, 0x3e, 0x80, 0x0e, 0x94, 0x1e, 0x46, 0xaf, 0xe7, + 0x76, 0x1b, 0xc8, 0x32, 0x44, 0x22, 0xd8, 0x30, 0x7b, 0x41, 0x14, 0x4e, 0x06, 0x44, 0xa7, 0xb7, + 0x4e, 0x00, 0x2d, 0x80, 0xcc, 0xe9, 0x85, 0x10, 0x5e, 0x35, 0x18, 0x76, 0xa4, 0x99, 0x18, 0x33, + 0xd0, 0x0b, 0xdd, 0x92, 0x93, 0xc1, 0xe0, 0xaf, 0xf9, 0xa3, 0xff, 0xdd, 0x3d, 0x5d, 0xbc, 0x36, + 0x06, 0xd2, 0x6b, 0x46, 0x47, 0x35, 0xa5, 0xc9, 0xbd, 0xc4, 0x07, 0x28, 0x48, 0x13, 0x5b, 0xea, + 0xe0, 0x69, 0x30, 0x89, 0xba, 0x71, 0x6c, 0xc9, 0x61, 0xb1, 0x06, 0x18, 0xb3, 0x50, 0xff, 0x92, + 0xc5, 0x1f, 0x13, 0xe6, 0xb2, 0xc1, 0x64, 0x51, 0x55, 0x94, 0x54, 0xfb, 0x42, 0xc7, 0x0c, 0x5d, + 0x6b, 0xe0, 0x8f, 0x6a, 0x9f, 0x8e, 0xd9, 0x2f, 0xaa, 0x05, 0xec, 0x89, 0xce, 0x24, 0x7c, 0xb4, + 0xdf, 0xf4, 0x4e, 0x0b, 0xa8, 0xe2, 0x3d, 0xdf, 0xf4, 0xb5, 0x6b, 0xd2, 0x81, 0xf2, 0xb2, 0x34, + 0x50, 0x6c, 0x1a, 0xd6, 0x89, 0x59, 0xf0, 0x7c, 0x7d, 0xb0, 0xe3, 0x3e, 0x35, 0x9b, 0x37, 0x0c, + 0xfc, 0xee, 0xc8, 0xaa, 0x97, 0x64, 0x78, 0xb8, 0x51, 0xac, 0x3a, 0xfe, 0xe2, 0x61, 0x48, 0x0a, + 0x89, 0xf4, 0x4f, 0xd1, 0x34, 0x93, 0x25, 0xef, 0xae, 0xa8, 0x7d, 0xfe, 0xe5, 0x52, 0xd1, 0xe0, + 0xad, 0x03, 0xaf, 0xf8, 0x33, 0xb2, 0xf0, 0xae, 0x49, 0xa6, 0xa2, 0xd5, 0x37, 0xa0, 0x3f, 0xa0, + 0x51, 0xb1, 0xf5, 0x82, 0x56, 0xe9, 0x37, 0x0d, 0xe0, 0x01, 0x78, 0x04, 0x01, 0xeb, 0x3f, 0x1a, + 0x13, 0x18, 0xe6, 0x5b, 0x1d, 0xc6, 0xa6, 0x0b, 0xaf, 0xd0, 0x14, 0x28, 0x96, 0x98, 0xce, 0x7e, + 0xcc, 0x8e, 0x87, 0x08, 0x7b, 0xa2, 0x64, 0x40, 0xb0, 0x13, 0xc8, 0x74, 0xac, 0xfa, 0xa6, 0xd4, + 0xad, 0x77, 0xc1, 0x26, 0x42, 0x55, 0x54, 0xea, 0x4d, 0x51, 0x9b, 0xa9, 0xff, 0xf8, 0x29, 0x99, + 0xb8, 0xb0, 0xd6, 0x67, 0x73, 0x89, 0x78, 0x0f, 0x9a, 0xf7, 0x60, 0x06, 0x4f, 0xe7, 0x75, 0x51, + 0x94, 0xcc, 0x23, 0x6c, 0xe6, 0x7c, 0x34, 0xc4, 0x9f, 0xa1, 0x53, 0xcf, 0xe2, 0xdf, 0xd3, 0x16, + 0x7b, 0x3b, 0x85, 0x96, 0x10, 0x19, 0xf8, 0x41, 0x41, 0x86, 0xb5, 0x54, 0xfb, 0x0c, 0x71, 0x18, + 0x22, 0x02, 0xc3, 0x01, 0xfc, 0x99, 0xd8, 0xd7, 0x26, 0x16, 0xea, 0xf4, 0xfa, 0xf5, 0x99, 0x83, + 0xe7, 0x33, 0xab, 0x33, 0x54, 0xa3, 0xaa, 0xa0, 0x5b, 0x59, 0x2f, 0xa2, 0xd4, 0xee, 0x57, 0x67, + 0x23, 0x4b, 0xab, 0x8a, 0xe2, 0x5c, 0x52, 0x34, 0x73, 0xa0, 0x40, 0x76, 0xbf, 0x9a, 0x2e, 0x49, + 0xa0, 0xd5, 0x56, 0xd3, 0xe5, 0xb9, 0xc4, 0x82, 0x2f, 0x31, 0x11, 0x8a, 0xe0, 0xeb, 0xd0, 0xac, + 0xb2, 0xab, 0x64, 0xec, 0xea, 0x8c, 0x9d, 0x1d, 0xac, 0xc2, 0x20, 0x5a, 0xfd, 0x76, 0x15, 0x1a, + 0x7e, 0x1d, 0x41, 0x0a, 0xbe, 0x0f, 0xc8, 0x14, 0xde, 0xa1, 0x67, 0xd4, 0x34, 0xc5, 0x14, 0xb3, + 0x33, 0x04, 0x61, 0x8c, 0x85, 0x4c, 0xb5, 0x8b, 0x09, 0x40, 0x72, 0x8d, 0xe8, 0x55, 0x36, 0x8c, + 0xe6, 0xc4, 0x72, 0x9f, 0xc8, 0xd4, 0xc4, 0xa7, 0x8e, 0x4d, 0x6b, 0x0d, 0xba, 0xca, 0x9b, 0x8d, + 0xef, 0x40, 0x3e, 0xd2, 0xc3, 0x30, 0x98, 0xb9, 0x04, 0x86, 0x69, 0xfd, 0xc7, 0x0f, 0x59, 0xca, + 0x66, 0xa5, 0x5c, 0x41, 0x2a, 0x48, 0xfe, 0xda, 0xa8, 0xf8, 0xeb, 0x67, 0xba, 0x0f, 0x8b, 0xef, + 0xa8, 0x9d, 0x56, 0x8d, 0xcc, 0x74, 0xa8, 0xd8, 0x69, 0xd0, 0x1e, 0xc5, 0x9f, 0x12, 0xd4, 0xc9, + 0x49, 0xd9, 0x4d, 0x29, 0x1b, 0x54, 0xa1, 0xca, 0xa5, 0x9d, 0xa6, 0x5d, 0xef, 0x18, 0x18, 0x03, + 0x90, 0x86, 0x2e, 0x66, 0x0a, 0x95, 0x2c, 0xfe, 0xcb, 0xe6, 0xf2, 0xe9, 0x67, 0x93, 0x56, 0xcd, + 0xc9, 0xb9, 0xa2, 0x94, 0x97, 0x72, 0x08, 0x62, 0x75, 0x83, 0x04, 0xc6, 0x03, 0xe4, 0x98, 0xdb, + 0x24, 0xd4, 0xcb, 0x43, 0xbd, 0xca, 0x9f, 0x57, 0x2b, 0x40, 0x95, 0x7c, 0xf6, 0x0f, 0xeb, 0xc9, + 0x52, 0x09, 0x28, 0xc2, 0x77, 0x10, 0x96, 0x7f, 0x15, 0x78, 0x7c, 0xa1, 0x8b, 0x18, 0x72, 0x88, + 0x8b, 0x5d, 0x66, 0xa2, 0x68, 0x9a, 0xa9, 0x80, 0x28, 0xcb, 0x14, 0xb3, 0xa5, 0xcd, 0x4a, 0xce, + 0xa5, 0x49, 0x06, 0x3a, 0x0e, 0x29, 0x72, 0x25, 0x97, 0xcd, 0x97, 0xf2, 0xb9, 0x4a, 0xae, 0x98, + 0x2f, 0xb1, 0x16, 0x80, 0xf2, 0x7f, 0xb7, 0x85, 0x6c, 0xb6, 0x52, 0x2e, 0xcb, 0x32, 0xdf, 0x44, + 0xae, 0x98, 0xcb, 0x95, 0xe5, 0xcd, 0x42, 0x39, 0x5b, 0x2c, 0x17, 0x4b, 0xb2, 0x2c, 0xfe, 0xfc, + 0x59, 0xeb, 0x8d, 0x74, 0x7a, 0xf9, 0xb7, 0x30, 0x00, 0x3d, 0x48, 0x23, 0x77, 0xfe, 0xc5, 0x3a, + 0x4d, 0xea, 0x02, 0x4b, 0x24, 0x67, 0x5f, 0xba, 0x69, 0x76, 0x95, 0xe1, 0xfa, 0xba, 0x4e, 0x26, + 0x02, 0xc8, 0x2f, 0xfc, 0xd6, 0xa2, 0x37, 0xa1, 0xb7, 0xf2, 0x24, 0xbf, 0xbe, 0x1e, 0x52, 0x63, + 0xe7, 0x3e, 0x4c, 0x1b, 0x0c, 0xe1, 0x04, 0x91, 0x9c, 0xe4, 0x0c, 0x14, 0x29, 0x77, 0x76, 0xee, + 0x69, 0x04, 0x7f, 0xd2, 0x74, 0x85, 0x4e, 0x83, 0x80, 0xb8, 0xb4, 0x40, 0xd7, 0xb4, 0x9c, 0x37, + 0x5a, 0x30, 0xa8, 0x8b, 0x31, 0x35, 0x24, 0x39, 0x73, 0xd7, 0xb9, 0x6e, 0x1a, 0x74, 0x2e, 0xb7, + 0xea, 0xce, 0x1b, 0xcd, 0xe2, 0x8a, 0xee, 0xed, 0x34, 0xcf, 0x97, 0x14, 0xb6, 0x77, 0xde, 0x9a, + 0x28, 0xc8, 0xcf, 0xc1, 0x72, 0x0b, 0x55, 0x52, 0xed, 0xbd, 0xa1, 0x89, 0xad, 0xfa, 0xd5, 0xe4, + 0x7a, 0xbd, 0x7e, 0xd1, 0x7e, 0xc6, 0x6f, 0x12, 0xbc, 0x90, 0x37, 0x1b, 0x72, 0xd2, 0x2c, 0x06, + 0x94, 0xaf, 0x04, 0x05, 0xb8, 0x2a, 0x64, 0x7d, 0x5d, 0x34, 0x68, 0x15, 0xb1, 0x5e, 0x47, 0xb7, + 0x8e, 0xd1, 0xc3, 0xb4, 0x2f, 0x0d, 0xcb, 0x52, 0xde, 0xd2, 0xaa, 0x4d, 0x7f, 0x23, 0xcd, 0x82, + 0x88, 0x21, 0x96, 0xda, 0x09, 0xa0, 0x7c, 0x81, 0x34, 0xe5, 0x3c, 0x61, 0x2a, 0xa0, 0x65, 0xee, + 0xe3, 0xbd, 0x35, 0x90, 0x95, 0x5c, 0x5f, 0x57, 0xd1, 0x6b, 0x04, 0xc2, 0x3a, 0x52, 0xfd, 0xba, + 0xdf, 0xa6, 0x81, 0xf3, 0x61, 0xc4, 0x69, 0xe5, 0x23, 0x1d, 0xaa, 0xa6, 0x2d, 0xa8, 0x1b, 0x4e, + 0xe9, 0x2f, 0xa4, 0xb4, 0x39, 0x90, 0x20, 0x4f, 0x5a, 0x8e, 0x15, 0x80, 0xc3, 0xd3, 0x74, 0x09, + 0x31, 0x05, 0x80, 0x52, 0xa2, 0x84, 0xbf, 0x7d, 0xf7, 0xb7, 0x9d, 0x12, 0x93, 0x62, 0xa8, 0x1e, + 0x9e, 0x03, 0xf7, 0xeb, 0xa5, 0x73, 0xd9, 0x5c, 0xe9, 0xdf, 0x21, 0x44, 0x52, 0xe9, 0xcd, 0x6c, + 0x31, 0xf7, 0xef, 0x10, 0x2a, 0xa9, 0xb4, 0xbc, 0x99, 0x0b, 0xa5, 0xf1, 0xc8, 0xe0, 0xc6, 0x48, + 0xeb, 0x14, 0x81, 0xc2, 0x6a, 0x29, 0x38, 0x75, 0x92, 0x46, 0x51, 0x0e, 0xa9, 0xe9, 0xc9, 0x36, + 0x57, 0xc5, 0x4f, 0x4c, 0x56, 0x41, 0xba, 0xa1, 0x62, 0xad, 0x13, 0xf1, 0x4b, 0x1d, 0xc3, 0x0f, + 0x9b, 0x20, 0x36, 0x47, 0xb0, 0x22, 0xb5, 0x90, 0xbf, 0x70, 0x0c, 0xd1, 0xcf, 0xd6, 0xa2, 0x17, + 0x31, 0xd6, 0xd8, 0x9a, 0x07, 0xe3, 0xc3, 0x93, 0xd1, 0x03, 0x96, 0xdc, 0x4e, 0xd8, 0xbf, 0x7f, + 0xc3, 0x3b, 0xe3, 0x4c, 0x2a, 0x78, 0xeb, 0x5e, 0x27, 0xfd, 0x42, 0x5b, 0xd9, 0xdc, 0xe6, 0x36, + 0x3d, 0x0e, 0x20, 0x56, 0xe9, 0xa9, 0x09, 0x30, 0x8a, 0xbc, 0x2a, 0x41, 0xa8, 0x7b, 0xdd, 0x5b, + 0x69, 0xd7, 0xd7, 0x9d, 0x2d, 0x79, 0xfb, 0x57, 0x34, 0xf2, 0x3d, 0x5b, 0xa6, 0x07, 0x6b, 0x85, + 0xbf, 0x66, 0x1e, 0xf5, 0xfd, 0x06, 0xe6, 0x42, 0x5e, 0xfe, 0x97, 0x84, 0xd4, 0x4d, 0xfc, 0x35, + 0x73, 0xe6, 0x92, 0xff, 0x27, 0x99, 0xfc, 0x55, 0x5d, 0x28, 0x9d, 0xac, 0x26, 0xfc, 0x4e, 0x05, + 0x6d, 0x26, 0x60, 0x1d, 0x8a, 0x45, 0xeb, 0x57, 0x0c, 0xd8, 0x5f, 0xd2, 0x62, 0xb7, 0x9d, 0x98, + 0x6e, 0x72, 0xa3, 0xa4, 0x98, 0xa6, 0xf6, 0xd6, 0xec, 0xf5, 0x41, 0x3a, 0x74, 0xd8, 0x4d, 0x04, + 0xa2, 0x86, 0xda, 0x35, 0x4c, 0x82, 0x3a, 0x2c, 0x7f, 0x69, 0xba, 0xfa, 0xa5, 0x71, 0xf1, 0x4b, + 0xd6, 0x50, 0x09, 0x22, 0x5c, 0x2a, 0x6d, 0x20, 0xdd, 0xee, 0xd7, 0x00, 0x4f, 0x2a, 0x1f, 0x44, + 0x7a, 0x1b, 0xa6, 0x28, 0xb9, 0x65, 0x1d, 0x5a, 0x16, 0x17, 0xbf, 0x34, 0x5b, 0xd1, 0x6a, 0x5e, + 0x29, 0xa7, 0x6d, 0x8a, 0x92, 0xb3, 0x2d, 0x66, 0xe9, 0x07, 0xca, 0xfd, 0xaf, 0x94, 0xe3, 0x13, + 0x20, 0x49, 0x9f, 0xf1, 0x46, 0x6c, 0x7a, 0xc3, 0x12, 0x3e, 0xc0, 0xc8, 0x78, 0x55, 0xdb, 0x6e, + 0x55, 0xff, 0x86, 0x4a, 0x41, 0xf6, 0xaa, 0xb8, 0x37, 0x32, 0xf1, 0x85, 0x07, 0x5d, 0x5a, 0x98, + 0xde, 0x14, 0x05, 0xc5, 0x28, 0x73, 0x71, 0xd9, 0x43, 0x87, 0x66, 0xcb, 0xb4, 0xd9, 0x62, 0xa8, + 0x1d, 0x67, 0xa3, 0x2d, 0x4a, 0x41, 0x5f, 0xa9, 0x98, 0x4e, 0xc3, 0xfa, 0x1e, 0x94, 0xb0, 0xfb, + 0x26, 0x2b, 0x41, 0x7b, 0xc8, 0x96, 0xe3, 0x6d, 0xd6, 0x44, 0xd5, 0x6d, 0x11, 0x0a, 0xab, 0x18, + 0xcd, 0x12, 0x8e, 0x60, 0xc5, 0xc0, 0x06, 0x3f, 0x7c, 0xf5, 0x56, 0x05, 0xea, 0x8b, 0xd2, 0x71, + 0xeb, 0xe2, 0x1c, 0xc6, 0x0d, 0x3f, 0xc0, 0xaa, 0xf6, 0xde, 0x12, 0x00, 0x36, 0x99, 0xf4, 0x95, + 0x14, 0x10, 0x5e, 0x5d, 0x7b, 0x7d, 0x9d, 0x99, 0xee, 0xb7, 0x47, 0xbc, 0x5c, 0xf6, 0x62, 0xc3, + 0x67, 0x3e, 0x22, 0x4c, 0xcd, 0x48, 0x83, 0x2e, 0x51, 0xff, 0x12, 0x93, 0x28, 0x05, 0x23, 0x1e, + 0x82, 0xe2, 0x5e, 0x43, 0x31, 0x0b, 0x0f, 0x7a, 0x7d, 0x19, 0x37, 0x6c, 0x33, 0x55, 0xa8, 0xea, + 0xe6, 0x2f, 0x83, 0xea, 0x85, 0x8b, 0xcc, 0x22, 0x9c, 0xc0, 0xa1, 0xc6, 0x12, 0x96, 0x01, 0xa0, + 0x47, 0x05, 0x16, 0x3a, 0x07, 0xbc, 0xbf, 0xd8, 0x39, 0x48, 0x8c, 0x85, 0xe2, 0xf2, 0x35, 0x08, + 0x22, 0x02, 0x72, 0x81, 0xe7, 0x53, 0xf1, 0x2b, 0x21, 0x3c, 0x3f, 0x74, 0x36, 0x7a, 0x98, 0x48, + 0xcf, 0x36, 0x71, 0x89, 0x39, 0x4c, 0xec, 0x76, 0xbb, 0xa1, 0xc4, 0x3c, 0x26, 0xb6, 0xdb, 0xed, + 0x50, 0x62, 0x01, 0x13, 0x15, 0x45, 0x09, 0x25, 0x16, 0x31, 0xb1, 0x52, 0xa9, 0x84, 0x12, 0x4b, + 0x71, 0x89, 0x65, 0x4c, 0x2c, 0x97, 0xcb, 0xa1, 0xc4, 0x36, 0x26, 0x16, 0x0a, 0x85, 0x50, 0x62, + 0x07, 0x13, 0xf3, 0xf9, 0x7c, 0x28, 0x91, 0x60, 0x62, 0x36, 0x9b, 0x0d, 0x25, 0x76, 0x31, 0x31, + 0x97, 0xcb, 0x85, 0x12, 0x2d, 0x8a, 0x67, 0x2e, 0x5c, 0xb2, 0x4f, 0x4b, 0x2a, 0xe1, 0x44, 0x8d, + 0x26, 0x96, 0x3a, 0xa1, 0x44, 0x03, 0x12, 0xe9, 0xa7, 0x1c, 0x73, 0x72, 0x41, 0x12, 0x82, 0x3f, + 0x72, 0xba, 0x92, 0x0c, 0x15, 0xb4, 0xdb, 0x2e, 0x3d, 0xf3, 0x91, 0xe4, 0x81, 0x9b, 0x5e, 0x0a, + 0xa5, 0x3b, 0xed, 0x25, 0x80, 0xdd, 0xcf, 0x66, 0x6f, 0xb4, 0x93, 0xc9, 0x48, 0x05, 0xc5, 0xab, + 0x91, 0xdd, 0x94, 0x25, 0x21, 0xf8, 0xb3, 0xbc, 0xc6, 0xe0, 0x53, 0x6d, 0xd0, 0x38, 0x60, 0xea, + 0x6a, 0x4d, 0xba, 0xe2, 0x94, 0xc5, 0xc9, 0xa1, 0x13, 0x18, 0xaf, 0xe4, 0x4e, 0xc8, 0xe9, 0x32, + 0x94, 0xab, 0x46, 0x19, 0x2a, 0x4a, 0x7e, 0xca, 0x50, 0x6c, 0x6d, 0x89, 0x30, 0x54, 0x74, 0x4c, + 0xf2, 0x71, 0x43, 0x5a, 0x88, 0x1b, 0x7c, 0xca, 0x50, 0xc5, 0x62, 0x71, 0x91, 0xa1, 0x4a, 0xa5, + 0xd2, 0x27, 0x19, 0x2a, 0xca, 0xb9, 0x94, 0xa1, 0x3a, 0x9d, 0xce, 0x22, 0x43, 0x45, 0xa7, 0x48, + 0x37, 0x6e, 0x36, 0x50, 0x86, 0x22, 0x85, 0xdc, 0x22, 0x43, 0x15, 0x48, 0x6e, 0x91, 0xa1, 0x0a, + 0x65, 0x25, 0x9e, 0xa1, 0xf2, 0x30, 0x10, 0xde, 0xbf, 0x25, 0xdc, 0x04, 0xc4, 0x8c, 0xe5, 0x26, + 0x48, 0x2f, 0x2e, 0xe1, 0x26, 0x1e, 0xea, 0x67, 0x58, 0x49, 0xce, 0x01, 0x17, 0xf9, 0x7f, 0x3e, + 0xc1, 0x4a, 0xc5, 0xac, 0x24, 0x78, 0xff, 0x3e, 0xcb, 0x47, 0x23, 0x1d, 0xd6, 0x01, 0x91, 0x93, + 0x53, 0xa8, 0xf5, 0xef, 0xf4, 0x03, 0x85, 0x89, 0x56, 0x6d, 0xf7, 0xb1, 0xcd, 0x7a, 0x37, 0xdd, + 0xb1, 0x08, 0x08, 0x7f, 0x57, 0x15, 0xa6, 0x20, 0xc5, 0x64, 0x4d, 0xed, 0x25, 0xec, 0x34, 0x3a, + 0xfd, 0x89, 0x24, 0x82, 0x8c, 0x26, 0xbf, 0x7f, 0xfb, 0x06, 0x06, 0x58, 0x99, 0xf6, 0x68, 0x98, + 0x36, 0x07, 0x86, 0x63, 0xd8, 0x99, 0x6c, 0x25, 0x27, 0x67, 0xb2, 0x72, 0x59, 0x46, 0x49, 0x0e, + 0x2d, 0xe0, 0xf2, 0xac, 0xd7, 0x3d, 0x23, 0xa0, 0xd6, 0x33, 0xac, 0x04, 0x75, 0x71, 0x08, 0xa0, + 0xf5, 0x82, 0xa5, 0xf8, 0xfb, 0xf7, 0x8f, 0x9f, 0xac, 0x90, 0x52, 0x07, 0x75, 0x53, 0xfb, 0x21, + 0xff, 0xdc, 0xd6, 0x51, 0x15, 0xdf, 0x1f, 0x69, 0xda, 0x23, 0xe8, 0x3f, 0x89, 0x64, 0x15, 0x13, + 0x25, 0xd5, 0x87, 0x91, 0x50, 0x24, 0xed, 0x47, 0xf6, 0x27, 0xfc, 0xc9, 0xfd, 0x4c, 0x4a, 0x46, + 0x90, 0xae, 0x26, 0x6b, 0x06, 0x2e, 0x79, 0xf4, 0xc5, 0x40, 0x20, 0xf4, 0x29, 0x99, 0xd2, 0x7e, + 0xe4, 0xa1, 0xa4, 0xbe, 0x55, 0x57, 0xc1, 0x1c, 0xf9, 0x5e, 0x37, 0x40, 0xd9, 0x61, 0x9d, 0xd1, + 0x7e, 0x14, 0x7e, 0x26, 0xe7, 0x73, 0x1b, 0xcf, 0x0c, 0xec, 0xe1, 0xa7, 0xb9, 0xd1, 0xf9, 0x4d, + 0x74, 0x62, 0x25, 0xa8, 0xa3, 0x11, 0xf4, 0x8b, 0xfa, 0x96, 0xdb, 0x03, 0x4e, 0xd3, 0x8e, 0xae, + 0xd5, 0xed, 0x3e, 0xd0, 0x87, 0xaa, 0xe3, 0x3a, 0x28, 0xcd, 0x09, 0xbd, 0x9e, 0x2e, 0x25, 0x25, + 0xcf, 0x58, 0x71, 0xef, 0x9a, 0xab, 0xeb, 0x7e, 0x4a, 0xa0, 0x5a, 0x1d, 0xa1, 0x99, 0x55, 0xff, + 0x05, 0x06, 0x3e, 0xe8, 0x57, 0x14, 0x23, 0xaa, 0x59, 0xb1, 0xa3, 0x28, 0x74, 0x50, 0x82, 0xbd, + 0xa3, 0x64, 0x48, 0xd7, 0x12, 0xbd, 0xfb, 0x51, 0x3b, 0xa0, 0x5d, 0x47, 0x46, 0xb6, 0xf5, 0xa2, + 0xea, 0xcd, 0x56, 0x0b, 0x87, 0x17, 0x46, 0xed, 0x0b, 0xb3, 0x89, 0x18, 0x8d, 0x9d, 0x7a, 0xc4, + 0xcc, 0xb9, 0x51, 0xfa, 0xd4, 0xc8, 0x41, 0xf7, 0x37, 0xcc, 0x33, 0x24, 0x74, 0x0c, 0x0b, 0xe0, + 0x36, 0x1c, 0xf0, 0x80, 0x9d, 0x56, 0xbb, 0x30, 0xfe, 0xb0, 0xfe, 0x11, 0x0d, 0xf7, 0x53, 0xdf, + 0xf0, 0x6b, 0xcb, 0x04, 0x58, 0x0b, 0x92, 0x82, 0xed, 0xe9, 0x4c, 0xc7, 0xb6, 0x31, 0x25, 0x72, + 0xb7, 0x17, 0x20, 0x95, 0xc6, 0x1c, 0xe0, 0xb1, 0x34, 0xbd, 0x74, 0xb2, 0x2e, 0xe2, 0xb1, 0x34, + 0xa0, 0x0a, 0x5e, 0x96, 0xa7, 0x77, 0x9b, 0x03, 0x55, 0xeb, 0x26, 0x6c, 0x18, 0x8d, 0xc0, 0x44, + 0x63, 0x95, 0x7d, 0x63, 0x21, 0x01, 0xba, 0xcd, 0xb6, 0xe7, 0xe6, 0x4a, 0x89, 0x99, 0x8c, 0x98, + 0xa2, 0x9e, 0xb2, 0xaa, 0x28, 0x26, 0x53, 0x24, 0xa8, 0x67, 0xe8, 0xe8, 0xaa, 0x4d, 0x30, 0xee, + 0x26, 0xf5, 0xc8, 0x99, 0x23, 0x64, 0x65, 0x0c, 0x45, 0x26, 0x55, 0xe4, 0xe3, 0x34, 0x05, 0x06, + 0x44, 0x4d, 0x52, 0x37, 0x9a, 0x2c, 0x25, 0x28, 0xc8, 0x7a, 0x48, 0x8d, 0xea, 0x7b, 0x6a, 0x14, + 0xa4, 0x1e, 0x99, 0xa0, 0xd5, 0x82, 0xee, 0xcb, 0x8a, 0x41, 0x6d, 0x30, 0x08, 0x13, 0xe2, 0x3e, + 0xc0, 0xa3, 0x77, 0x80, 0xa5, 0x85, 0x4b, 0x0d, 0x3f, 0x5f, 0x2d, 0xd0, 0xcb, 0x7f, 0xd9, 0xb5, + 0x82, 0x47, 0x97, 0x5f, 0xc4, 0x65, 0x8a, 0x19, 0x83, 0x28, 0x51, 0x68, 0xc9, 0x64, 0x0d, 0xf4, + 0x13, 0xe2, 0x5b, 0x31, 0xa6, 0xe2, 0x0c, 0xe8, 0x07, 0xb0, 0xec, 0x3a, 0xbd, 0xca, 0xb6, 0x43, + 0x30, 0x76, 0x28, 0x0d, 0xc4, 0xb2, 0xef, 0x55, 0x67, 0x00, 0x54, 0x15, 0x93, 0xdb, 0x1b, 0xd9, + 0xea, 0xd8, 0x50, 0xbb, 0x82, 0x0c, 0x0c, 0x62, 0x82, 0x0d, 0x4e, 0x53, 0x6b, 0xbe, 0x33, 0x30, + 0xe8, 0x20, 0x6b, 0x03, 0x12, 0x06, 0x86, 0xed, 0x20, 0xd8, 0x14, 0xe8, 0xef, 0x78, 0x8f, 0xe4, + 0x36, 0xe8, 0x56, 0x29, 0xf6, 0x88, 0x94, 0x84, 0xf1, 0x61, 0x16, 0xec, 0x96, 0x0c, 0x86, 0x2a, + 0x1a, 0x48, 0x36, 0x4e, 0xca, 0x84, 0x4b, 0x1f, 0x0a, 0x25, 0x55, 0x87, 0x56, 0x52, 0x98, 0x9e, + 0xac, 0xba, 0x72, 0x00, 0xa7, 0xbb, 0xd7, 0x2a, 0x4c, 0x02, 0x56, 0x3a, 0x39, 0x67, 0x5c, 0x17, + 0x4f, 0xcd, 0x40, 0x29, 0x4d, 0xd6, 0x1c, 0xa8, 0x83, 0x4e, 0x30, 0x30, 0x73, 0xfb, 0x64, 0x97, + 0x10, 0x13, 0xdf, 0x98, 0xae, 0x4a, 0x67, 0x5e, 0x02, 0xcc, 0x16, 0x3c, 0x7a, 0x85, 0xb6, 0xff, + 0xad, 0xa3, 0x6a, 0xa0, 0xe9, 0x26, 0x44, 0xc7, 0x1a, 0x11, 0xb1, 0xbe, 0x04, 0xba, 0xd9, 0x19, + 0x8a, 0x30, 0x50, 0x5f, 0x32, 0x67, 0x46, 0x5b, 0xcd, 0x80, 0x45, 0x67, 0x3b, 0x09, 0x5d, 0x19, + 0xab, 0x7d, 0x05, 0x4a, 0xa6, 0x47, 0x36, 0xb1, 0x1a, 0x7d, 0x18, 0x24, 0x98, 0xb1, 0x38, 0xdd, + 0x56, 0x42, 0x81, 0x32, 0xd1, 0x7b, 0xe2, 0x38, 0xfd, 0x2f, 0xd0, 0xcc, 0xa9, 0x37, 0x6c, 0xbb, + 0x47, 0x9c, 0xce, 0x20, 0xd8, 0x06, 0x1b, 0xe0, 0xd5, 0xdd, 0x90, 0x9e, 0x7e, 0xb6, 0x0d, 0x1d, + 0xc8, 0x3b, 0x1b, 0x12, 0x67, 0x60, 0x74, 0xab, 0x22, 0x94, 0x80, 0xb9, 0x8b, 0x92, 0x44, 0x4f, + 0x80, 0x9c, 0x21, 0xb4, 0x40, 0x22, 0x19, 0xa4, 0xcc, 0xa2, 0x1e, 0x01, 0xa0, 0x11, 0x3a, 0xd7, + 0xc0, 0xb6, 0x4f, 0xa6, 0x81, 0x99, 0xa1, 0x15, 0x2c, 0x85, 0xbe, 0x66, 0x03, 0x24, 0x83, 0x66, + 0xf4, 0x13, 0xe2, 0xb9, 0x21, 0x28, 0x58, 0xda, 0x15, 0xaf, 0xb4, 0x65, 0x74, 0x5f, 0x87, 0xb0, + 0x48, 0x0b, 0xbb, 0xec, 0x03, 0x5e, 0x36, 0x15, 0x18, 0xa4, 0x9b, 0x16, 0x11, 0x64, 0x4f, 0xd5, + 0x61, 0x4a, 0xbe, 0x25, 0x12, 0x49, 0x80, 0xea, 0xae, 0x11, 0x9c, 0x2e, 0xde, 0x4f, 0x83, 0xa0, + 0x82, 0x72, 0xd5, 0x65, 0x59, 0x01, 0x21, 0x60, 0xa2, 0xaf, 0xaf, 0xf3, 0xb2, 0x48, 0xc4, 0xf9, + 0xdf, 0x64, 0xd3, 0x9f, 0x3f, 0x29, 0x2d, 0xb9, 0xd1, 0x8b, 0xee, 0x56, 0x3f, 0xa6, 0x30, 0x0f, + 0xea, 0x72, 0x8e, 0xb9, 0x1c, 0x3a, 0x74, 0x36, 0x71, 0x67, 0x22, 0x7d, 0x84, 0xf7, 0x1f, 0xd0, + 0x53, 0xce, 0xbf, 0xb3, 0x67, 0xee, 0x64, 0x9e, 0x9f, 0xc7, 0x9f, 0xc6, 0x63, 0xa9, 0x61, 0x87, + 0x54, 0x72, 0x2e, 0xe1, 0x7e, 0xfe, 0x9c, 0xfe, 0x8f, 0x71, 0x9e, 0xcb, 0x78, 0xdd, 0x98, 0xe5, + 0x22, 0xb8, 0x5c, 0x9a, 0x85, 0x81, 0x89, 0x52, 0xbc, 0x6f, 0x4c, 0xfa, 0x92, 0x75, 0x97, 0xea, + 0xce, 0xd8, 0x97, 0xe9, 0xde, 0x1a, 0x21, 0x53, 0x63, 0x16, 0x05, 0x30, 0x20, 0x62, 0xbd, 0xb5, + 0x28, 0xa5, 0x0c, 0xab, 0xa1, 0x69, 0x89, 0x6f, 0xdc, 0x35, 0xad, 0x6e, 0x1c, 0xe7, 0xcf, 0x6f, + 0x49, 0x7f, 0x39, 0xc5, 0x4d, 0x0c, 0xc1, 0x4e, 0xea, 0x31, 0x98, 0x39, 0xc6, 0xa8, 0x33, 0xc0, + 0xdd, 0x09, 0xb4, 0x40, 0x29, 0x17, 0xef, 0xd0, 0xa8, 0x4d, 0x58, 0x10, 0x97, 0x95, 0x06, 0x09, + 0x13, 0x29, 0x1b, 0x08, 0xd7, 0xc8, 0x80, 0x11, 0x6f, 0x61, 0x61, 0xfe, 0xb4, 0x20, 0x68, 0x23, + 0xc0, 0xcd, 0x46, 0xdc, 0x9c, 0xa4, 0x1d, 0x73, 0xe6, 0x4e, 0xe9, 0xe0, 0x95, 0xfa, 0x50, 0x96, + 0x39, 0xe8, 0x7f, 0xff, 0x76, 0x7e, 0x90, 0x9f, 0xd1, 0xa3, 0x7c, 0x5e, 0x21, 0x4e, 0xc0, 0xbb, + 0x51, 0x20, 0x44, 0x72, 0xea, 0x40, 0xcf, 0x19, 0xab, 0xbd, 0xbe, 0xfe, 0xc5, 0x01, 0xc1, 0xac, + 0xb6, 0x30, 0xc8, 0x14, 0xd6, 0xa9, 0xff, 0xdd, 0x8c, 0x39, 0x54, 0x67, 0x0f, 0x0d, 0xc3, 0x01, + 0x6d, 0x0a, 0x87, 0x01, 0x0a, 0x2c, 0x3a, 0x14, 0x41, 0xe1, 0x52, 0x45, 0x89, 0x01, 0x59, 0x60, + 0x4f, 0xc2, 0x3b, 0x34, 0xf0, 0x86, 0x7a, 0x16, 0xf7, 0xe1, 0xe1, 0x81, 0x42, 0x8c, 0x8d, 0xad, + 0x1b, 0x42, 0x92, 0x5c, 0x58, 0xf2, 0x9b, 0xe1, 0xe5, 0xdb, 0x02, 0xcd, 0xcd, 0x1d, 0x74, 0x5a, + 0x91, 0x85, 0x98, 0xd0, 0xa5, 0x16, 0x3f, 0x68, 0x79, 0x78, 0x73, 0x76, 0x4a, 0x57, 0xdc, 0x30, + 0x49, 0x40, 0x64, 0x13, 0x8c, 0x3a, 0x01, 0xc1, 0x8d, 0x48, 0xc0, 0x74, 0xa0, 0x91, 0x28, 0x1e, + 0x8b, 0xbb, 0x1b, 0x43, 0x28, 0xc9, 0x59, 0xf3, 0x8a, 0xae, 0x0e, 0xe9, 0xda, 0xe7, 0x3a, 0xbd, + 0xbc, 0xad, 0xa3, 0x7a, 0x74, 0x5e, 0xc4, 0x8d, 0x11, 0x6b, 0x61, 0x2e, 0xe5, 0x2a, 0x30, 0x1b, + 0x24, 0xe8, 0x22, 0x2f, 0x6f, 0x48, 0x84, 0x1e, 0x5c, 0x30, 0x4c, 0x72, 0x16, 0x10, 0x48, 0x6c, + 0x02, 0x41, 0x88, 0x6b, 0x6a, 0x1b, 0x02, 0xb5, 0xe4, 0x85, 0x9e, 0x02, 0x8b, 0x66, 0xf7, 0x0b, + 0x8c, 0x85, 0xcc, 0xdb, 0xd0, 0x91, 0x98, 0x1a, 0x52, 0x2f, 0x92, 0xbc, 0xcf, 0x64, 0x3c, 0x8d, + 0x1c, 0x0e, 0x59, 0xf7, 0x82, 0x45, 0x3b, 0xe1, 0x12, 0x06, 0x45, 0x65, 0x3c, 0x4d, 0x96, 0x75, + 0xdd, 0x59, 0xda, 0x75, 0x29, 0x2e, 0xcb, 0x6d, 0x66, 0x2e, 0x85, 0x58, 0x02, 0x04, 0xd5, 0x35, + 0xee, 0x54, 0x0e, 0x89, 0xeb, 0x1d, 0x65, 0x68, 0x07, 0x4e, 0x48, 0xd4, 0xb0, 0xcf, 0x60, 0x59, + 0x4f, 0xf7, 0x34, 0x03, 0xa6, 0x87, 0x93, 0x29, 0x97, 0x0a, 0x48, 0x56, 0x9d, 0x4f, 0x4d, 0x38, + 0x1b, 0x34, 0xf9, 0xdf, 0x76, 0x32, 0x93, 0x2f, 0x61, 0xb6, 0x16, 0x9f, 0xbd, 0x81, 0xb9, 0xff, + 0xd6, 0x93, 0x99, 0x12, 0x2e, 0x48, 0x75, 0x7b, 0xdb, 0x4e, 0x89, 0x82, 0x98, 0x4a, 0x64, 0x61, + 0xcd, 0x46, 0xb7, 0xc9, 0x9b, 0x88, 0xfb, 0x48, 0x6f, 0x30, 0x19, 0x53, 0xa2, 0x24, 0x88, 0xf8, + 0x9d, 0x34, 0xd7, 0xfb, 0xab, 0xa4, 0xea, 0xfa, 0xef, 0xdf, 0xf6, 0xb6, 0xee, 0x57, 0xd0, 0xb7, + 0xc5, 0x81, 0x31, 0x42, 0x96, 0xc2, 0x1f, 0xa8, 0x02, 0xa5, 0xa5, 0x2f, 0x20, 0xc6, 0x75, 0x20, + 0x25, 0x14, 0x47, 0x00, 0x40, 0x8a, 0xad, 0x62, 0x05, 0xe6, 0x99, 0xcd, 0xd2, 0xb4, 0x14, 0x0d, + 0xc1, 0xc4, 0xf4, 0xef, 0x88, 0x0a, 0x3a, 0x2e, 0x31, 0x9f, 0x2b, 0xef, 0xa6, 0x63, 0x8a, 0xb3, + 0x51, 0x92, 0xff, 0x8d, 0x55, 0x6c, 0x82, 0xc6, 0x9f, 0xc2, 0x39, 0xa8, 0x75, 0x90, 0x15, 0xc6, + 0x04, 0xe7, 0x11, 0x3a, 0x66, 0x45, 0x4f, 0xe1, 0xfb, 0xf5, 0xdd, 0xb1, 0xb6, 0xbe, 0x3b, 0x5d, + 0x6f, 0x5b, 0xf5, 0x85, 0xbc, 0x39, 0x5d, 0x71, 0xeb, 0xaf, 0x19, 0x99, 0x7f, 0xcf, 0x38, 0x5d, + 0x3e, 0x6b, 0xac, 0x68, 0x2c, 0xcb, 0x99, 0x83, 0x2a, 0xed, 0x66, 0x67, 0xa0, 0xfa, 0xaf, 0xd0, + 0xe8, 0x9c, 0x72, 0x3b, 0x86, 0x97, 0x09, 0x36, 0x3e, 0xa4, 0x9e, 0xf5, 0x65, 0x15, 0xdd, 0xea, + 0xa5, 0x1b, 0x80, 0x49, 0x07, 0xb4, 0xc3, 0xf5, 0x75, 0x92, 0x4a, 0x79, 0x34, 0x23, 0x5b, 0xb9, + 0x22, 0x76, 0x85, 0xd4, 0xe1, 0x37, 0x29, 0x71, 0x0a, 0x27, 0x8d, 0xe3, 0xbd, 0x05, 0x90, 0x9c, + 0x38, 0x04, 0x4e, 0xfd, 0x65, 0x22, 0xa6, 0x6a, 0xf7, 0x57, 0x92, 0x5d, 0xb9, 0x54, 0xfb, 0x42, + 0x21, 0xff, 0x70, 0x7e, 0xfe, 0xfe, 0x2d, 0x7f, 0x41, 0xe8, 0xd8, 0xc6, 0x76, 0x50, 0x14, 0xbf, + 0x03, 0x01, 0x85, 0x83, 0xa9, 0xef, 0x60, 0x93, 0xdb, 0xf4, 0x2c, 0x5d, 0xb9, 0x5c, 0x13, 0x8e, + 0x76, 0x85, 0xe1, 0xc8, 0x76, 0x84, 0x36, 0x11, 0x20, 0x5d, 0x30, 0xc0, 0x8c, 0x22, 0xb6, 0x9d, + 0xc6, 0x81, 0xad, 0xae, 0x80, 0xf2, 0xcb, 0xab, 0x8f, 0xbb, 0xe9, 0x13, 0x4b, 0xc5, 0x4b, 0x76, + 0x85, 0xbf, 0x66, 0x26, 0xd5, 0xfc, 0x9d, 0xe4, 0xfc, 0x0b, 0x47, 0x23, 0xd3, 0xdd, 0xf3, 0x70, + 0xbb, 0xe1, 0x46, 0xbe, 0x02, 0x8f, 0x10, 0x8f, 0x0c, 0xb4, 0x0f, 0xeb, 0xeb, 0xac, 0x2b, 0xe4, + 0x67, 0xf0, 0x94, 0xd6, 0xa9, 0x13, 0x39, 0x78, 0x85, 0xe1, 0xe7, 0x37, 0x21, 0x2e, 0x35, 0xe5, + 0x0d, 0x63, 0x3b, 0xb9, 0x4d, 0x08, 0xbf, 0xac, 0xe9, 0xe6, 0x71, 0xd0, 0xbc, 0xa4, 0xb4, 0x69, + 0x73, 0xe8, 0x29, 0xa6, 0x7a, 0xa7, 0x68, 0x9e, 0x6d, 0x43, 0x0b, 0x83, 0x8e, 0xe7, 0x55, 0x4a, + 0xba, 0xbb, 0x11, 0xa2, 0xeb, 0x15, 0x76, 0x77, 0x66, 0x80, 0x43, 0xd4, 0xbe, 0x9e, 0xc0, 0x6d, + 0x5b, 0xaf, 0xa0, 0xd7, 0x1b, 0x27, 0x0d, 0xe6, 0xc1, 0x36, 0xfd, 0x5b, 0x4d, 0x74, 0x09, 0x5e, + 0xe7, 0x01, 0x69, 0xba, 0xe4, 0x3f, 0x9a, 0xc1, 0xe3, 0xab, 0x16, 0x75, 0x9e, 0x3a, 0xfc, 0xe4, + 0x7f, 0xd5, 0x3c, 0xda, 0x7d, 0x48, 0xa9, 0x57, 0x6d, 0x9b, 0x7b, 0xc6, 0xad, 0xdb, 0x80, 0x97, + 0xcc, 0x9d, 0xce, 0x8b, 0xcf, 0x99, 0xcc, 0x32, 0x47, 0xff, 0x6e, 0x8d, 0xb8, 0x1f, 0x5c, 0x4a, + 0x50, 0x27, 0x3d, 0x71, 0x5a, 0xde, 0x27, 0x78, 0xaf, 0xe9, 0x9e, 0x9b, 0x2c, 0x55, 0xe8, 0x7f, + 0xa8, 0x9e, 0x90, 0x29, 0xe9, 0x34, 0x8d, 0xe1, 0x10, 0x34, 0x10, 0x5c, 0x8b, 0xcc, 0x37, 0x54, + 0xbb, 0x78, 0x61, 0x6c, 0xaa, 0x2c, 0xfc, 0x01, 0x2f, 0x61, 0x6f, 0x1b, 0x8a, 0x05, 0x52, 0x98, + 0xeb, 0x88, 0x49, 0xc7, 0x9c, 0xca, 0xe0, 0x80, 0x13, 0x70, 0xf7, 0x17, 0xa6, 0x66, 0xcd, 0xb1, + 0xde, 0x66, 0x09, 0x7b, 0x95, 0x7e, 0x06, 0xfa, 0xb2, 0x67, 0x41, 0x64, 0x65, 0xca, 0x12, 0x28, + 0xe0, 0x5d, 0x7d, 0x35, 0x39, 0x9b, 0x33, 0x7b, 0xfa, 0x17, 0x1f, 0x70, 0x4b, 0x3f, 0x58, 0xd3, + 0x11, 0x81, 0x29, 0xc9, 0xf6, 0xb7, 0xf0, 0x9d, 0x13, 0xd5, 0x72, 0xf8, 0x93, 0x9e, 0x02, 0xfd, + 0x64, 0xad, 0xf8, 0xad, 0xfa, 0xcd, 0x0f, 0xac, 0xf0, 0xf7, 0xda, 0x6b, 0xa1, 0x18, 0xe1, 0x9a, + 0x18, 0x7f, 0x74, 0xbe, 0xf6, 0x01, 0xe4, 0xf9, 0xd6, 0xaf, 0x9a, 0x9e, 0x82, 0x89, 0x29, 0x62, + 0xdc, 0xcc, 0x40, 0x19, 0x13, 0x41, 0x37, 0x5c, 0xa2, 0xd8, 0xc2, 0x1b, 0x71, 0xbe, 0xc0, 0x84, + 0x73, 0xaf, 0x8d, 0x07, 0xfd, 0xd7, 0x22, 0xc2, 0x44, 0xb1, 0x31, 0x04, 0x47, 0xb5, 0xed, 0x11, + 0xa1, 0x1a, 0x35, 0x4e, 0xb0, 0x37, 0x10, 0xa3, 0x5e, 0x2d, 0x58, 0xe4, 0x50, 0x37, 0x00, 0xa8, + 0xa2, 0x17, 0xd1, 0x23, 0x4a, 0xac, 0x8d, 0x43, 0x90, 0x48, 0xf8, 0xf9, 0x1f, 0x17, 0x94, 0x6a, + 0x0b, 0xa8, 0x2c, 0x8c, 0x4c, 0xb7, 0x2a, 0x3d, 0xf5, 0x8b, 0x0a, 0x94, 0x82, 0x09, 0x63, 0xd5, + 0x18, 0xd9, 0x2c, 0xfe, 0x4a, 0xd3, 0x14, 0xb6, 0xad, 0x32, 0x86, 0x65, 0x14, 0x3f, 0xe5, 0x41, + 0x63, 0x7d, 0xfe, 0x43, 0x17, 0x04, 0x21, 0xd1, 0x02, 0x33, 0x07, 0x30, 0x50, 0x3c, 0x18, 0x13, + 0x55, 0x63, 0x27, 0x24, 0x04, 0x0c, 0xdc, 0xa6, 0xc1, 0x6b, 0x86, 0x2b, 0x0a, 0x08, 0x8d, 0x7c, + 0x61, 0x4d, 0x26, 0xa1, 0x5f, 0x87, 0x2e, 0x12, 0x8a, 0x87, 0x86, 0xc1, 0x62, 0x63, 0x70, 0x83, + 0x40, 0x78, 0xd1, 0x8d, 0x09, 0x88, 0x51, 0xc3, 0xe8, 0x62, 0x88, 0x90, 0x03, 0x16, 0x34, 0x76, + 0xe2, 0xdb, 0x77, 0xef, 0xd3, 0x02, 0x2c, 0x5e, 0xba, 0x43, 0x8f, 0x33, 0x78, 0x69, 0x5b, 0x3e, + 0x5a, 0x2b, 0x63, 0x86, 0x5c, 0xb6, 0xc7, 0x30, 0x68, 0xf3, 0x2d, 0xc4, 0x9a, 0x7e, 0xb4, 0xcf, + 0xb7, 0xa4, 0x44, 0x09, 0x48, 0x63, 0x6f, 0x44, 0xa6, 0x44, 0xbb, 0xe1, 0xeb, 0x9c, 0xb0, 0xd3, + 0x25, 0x5f, 0x0b, 0xa3, 0xf3, 0x86, 0x89, 0xde, 0xba, 0x1d, 0x71, 0x92, 0x78, 0x5c, 0x42, 0xa8, + 0xb3, 0x85, 0x4a, 0x13, 0x90, 0xc7, 0x18, 0xc3, 0x51, 0xa7, 0x06, 0x08, 0x7d, 0xde, 0x92, 0x93, + 0xde, 0x54, 0x36, 0xcc, 0x11, 0x5e, 0x1f, 0xe5, 0x55, 0xfb, 0xe2, 0x1a, 0x2a, 0xc8, 0x76, 0xf0, + 0x2b, 0x51, 0x13, 0x9c, 0x00, 0xcf, 0x25, 0x40, 0x89, 0x85, 0x84, 0x2f, 0x75, 0x37, 0x17, 0x14, + 0x91, 0x88, 0x3d, 0xe8, 0xb2, 0xc4, 0x47, 0xe6, 0xa0, 0x58, 0x90, 0x0b, 0xd4, 0x41, 0x81, 0x94, + 0x1e, 0xd9, 0xdb, 0x33, 0xb9, 0x3a, 0x9b, 0xcf, 0xab, 0x31, 0x56, 0x22, 0x8b, 0x57, 0x21, 0x21, + 0x7c, 0xa2, 0xf8, 0x86, 0x2d, 0x46, 0x7e, 0x82, 0x83, 0xde, 0x1a, 0x35, 0xfd, 0x70, 0x93, 0x2d, + 0xd0, 0x8e, 0x08, 0x08, 0x96, 0x64, 0xd4, 0xc7, 0xe4, 0x9b, 0x5e, 0x1e, 0xfd, 0x22, 0x9d, 0x44, + 0x24, 0x33, 0x5e, 0xf4, 0xd2, 0x8a, 0x5e, 0x26, 0xc0, 0xf8, 0x79, 0x01, 0x45, 0x24, 0xa2, 0x3a, + 0x4a, 0x7e, 0x37, 0xb9, 0x7e, 0xb2, 0xd8, 0x1b, 0x57, 0xa4, 0x83, 0xd1, 0x62, 0xa9, 0xd8, 0x7e, + 0x32, 0xe8, 0xab, 0x7f, 0x45, 0x4e, 0xa8, 0xb3, 0xbc, 0x9a, 0x8e, 0x82, 0x68, 0xb1, 0xb3, 0xb8, + 0x6d, 0xc6, 0xed, 0x78, 0x45, 0xba, 0x0a, 0x36, 0xe4, 0xaa, 0x4e, 0xba, 0x71, 0x78, 0xff, 0x50, + 0x1f, 0xc9, 0x07, 0x7d, 0x74, 0xe3, 0xf5, 0xff, 0xf1, 0x2e, 0x52, 0x23, 0x78, 0x55, 0x37, 0x59, + 0x78, 0xd4, 0x3f, 0xd4, 0xcb, 0x84, 0x1b, 0x6c, 0x45, 0xa8, 0xf7, 0x37, 0x6d, 0x0f, 0xd4, 0x1e, + 0x16, 0x65, 0xa9, 0xe9, 0x91, 0xce, 0x12, 0xc4, 0xda, 0x97, 0x9a, 0x18, 0xee, 0x68, 0x10, 0xa4, + 0xf5, 0x37, 0xba, 0x8c, 0xeb, 0x0e, 0xe2, 0xe2, 0x32, 0xb6, 0x64, 0x5e, 0x9d, 0x02, 0xa4, 0x20, + 0x98, 0xc5, 0xa3, 0xf1, 0xd5, 0xa9, 0xbf, 0xfc, 0xc2, 0x7a, 0x07, 0x82, 0x01, 0x0a, 0xfa, 0x2e, + 0x31, 0xa0, 0x8e, 0xaf, 0x2a, 0x1a, 0x2c, 0x0b, 0x96, 0x16, 0xb0, 0x21, 0x30, 0x10, 0xa5, 0xbe, + 0x45, 0x7e, 0xc8, 0x3f, 0xb7, 0x1c, 0xf4, 0x8b, 0x49, 0x04, 0x25, 0x63, 0xdc, 0x19, 0xa0, 0x2b, + 0x0c, 0xc2, 0xa2, 0x74, 0xc7, 0x73, 0x08, 0xdf, 0x10, 0x0f, 0x4a, 0x87, 0x24, 0xd4, 0xf8, 0xb5, + 0xf4, 0x16, 0x23, 0x01, 0xbf, 0x1c, 0xee, 0x1e, 0x0d, 0x02, 0x2d, 0x17, 0x9a, 0x98, 0xbf, 0x6a, + 0x6d, 0xd1, 0xbb, 0x41, 0x0f, 0x93, 0x72, 0x3f, 0xb7, 0xf1, 0x0f, 0xaa, 0x13, 0xe1, 0xb0, 0x43, + 0x26, 0x05, 0x12, 0x6e, 0x35, 0x58, 0x18, 0x51, 0x4f, 0xfe, 0x91, 0xfd, 0x39, 0xf7, 0x65, 0xeb, + 0xaf, 0x1a, 0x13, 0xa7, 0xaf, 0xda, 0xe2, 0x55, 0x3a, 0xde, 0x87, 0xd1, 0x60, 0x2c, 0xd0, 0x3d, + 0x29, 0xc4, 0x96, 0xf4, 0xed, 0x22, 0xbf, 0x30, 0x0f, 0x91, 0x33, 0x66, 0xe7, 0x0b, 0xf4, 0xf6, + 0x45, 0xb1, 0x27, 0x85, 0x13, 0x4c, 0xa2, 0x71, 0xce, 0xbf, 0xd5, 0xda, 0x46, 0x92, 0xa9, 0x75, + 0xc9, 0x99, 0xab, 0xa9, 0x31, 0xd5, 0x4a, 0xfe, 0xe9, 0x2a, 0x81, 0x60, 0xc7, 0xd8, 0xd1, 0x29, + 0xc5, 0x2a, 0x80, 0x99, 0x4d, 0x07, 0xaf, 0x33, 0x34, 0x2f, 0x93, 0x1e, 0x3f, 0x30, 0xf5, 0x04, + 0x19, 0x83, 0xdb, 0xaa, 0x48, 0xb8, 0x41, 0x7e, 0x36, 0x1b, 0x29, 0xaa, 0x7c, 0xb2, 0xb8, 0x1e, + 0xdc, 0x8a, 0x48, 0x26, 0x71, 0x19, 0x52, 0x75, 0x50, 0xf1, 0x99, 0xcb, 0xd9, 0x37, 0xf8, 0x70, + 0xeb, 0x82, 0x19, 0xf8, 0x4a, 0x1d, 0x4b, 0x82, 0xb6, 0x57, 0x53, 0x60, 0x6d, 0x01, 0xb6, 0x31, + 0x47, 0xf6, 0x20, 0xf1, 0x83, 0x48, 0x8a, 0xe4, 0xe9, 0xdc, 0xb8, 0x47, 0xc1, 0x92, 0x61, 0xc6, + 0x3b, 0xa9, 0x18, 0x15, 0x89, 0xde, 0xd9, 0xe3, 0xf1, 0x00, 0x99, 0x1b, 0xe2, 0xd6, 0xaf, 0xc0, + 0xe9, 0x66, 0xaa, 0x5d, 0xd4, 0xb6, 0xa2, 0xf5, 0x54, 0xdf, 0x62, 0xc2, 0x75, 0xf3, 0x57, 0x0c, + 0x64, 0x74, 0x06, 0x0b, 0xfe, 0x7d, 0x3d, 0xf1, 0x9c, 0x43, 0xe6, 0x49, 0x04, 0x13, 0xd2, 0xe2, + 0xb7, 0x45, 0x3f, 0xb4, 0xf9, 0x5b, 0xf8, 0x06, 0xab, 0x6f, 0x2c, 0x9c, 0x3c, 0xcf, 0xae, 0x6c, + 0x40, 0xfb, 0x64, 0xee, 0xd9, 0x1b, 0x24, 0x39, 0x07, 0x6d, 0x20, 0x1a, 0x13, 0xed, 0x7f, 0x50, + 0x50, 0xe8, 0x69, 0x16, 0xd7, 0x43, 0x1d, 0x33, 0xc2, 0xf7, 0x42, 0xb4, 0x08, 0xa8, 0xf2, 0x90, + 0x97, 0xca, 0xca, 0xf2, 0xdc, 0xbb, 0xa9, 0xae, 0xe3, 0x7e, 0x0f, 0x85, 0xf6, 0x31, 0x0e, 0x7e, + 0x04, 0x38, 0x06, 0x32, 0x7a, 0x30, 0x38, 0xf0, 0x8c, 0x7b, 0xa3, 0xd0, 0xf3, 0x15, 0x76, 0x37, + 0x08, 0xc2, 0x8d, 0x8c, 0x08, 0x58, 0x8b, 0xfc, 0x25, 0x48, 0x1e, 0x6c, 0x1f, 0xb4, 0x8f, 0x91, + 0x4b, 0x7d, 0x1a, 0x2c, 0x9a, 0x4a, 0xcd, 0x97, 0x28, 0x2f, 0x0e, 0xcd, 0xdf, 0x92, 0xb7, 0x13, + 0x54, 0x09, 0xa1, 0x5a, 0xc4, 0xfa, 0xba, 0xec, 0xfe, 0x26, 0x96, 0xc7, 0x76, 0xa0, 0x53, 0x14, + 0x15, 0x00, 0x77, 0x2a, 0x00, 0xd7, 0xd1, 0xb8, 0xd5, 0xe5, 0xe5, 0x17, 0xe2, 0x40, 0xd8, 0x8c, + 0x48, 0x7a, 0xfe, 0x57, 0x84, 0x55, 0x0d, 0xe9, 0x09, 0xbe, 0xb3, 0xf6, 0xb2, 0x91, 0x08, 0x16, + 0x24, 0x14, 0x96, 0x4c, 0x2c, 0x44, 0x6f, 0x3f, 0x63, 0xb3, 0x1a, 0x2f, 0x3f, 0xe3, 0x4d, 0x0b, + 0x36, 0x31, 0x7a, 0x06, 0xdd, 0x7c, 0xf4, 0x22, 0x63, 0x89, 0x3b, 0x53, 0x49, 0x1a, 0x39, 0xb0, + 0xb6, 0xb0, 0xf3, 0xc5, 0x13, 0xc8, 0x49, 0x0f, 0xe9, 0x72, 0x90, 0xf9, 0xf1, 0x1f, 0xa3, 0xbc, + 0x5c, 0x90, 0x37, 0xf0, 0xa7, 0xd7, 0x83, 0xbf, 0x05, 0x19, 0x5f, 0x0a, 0xdd, 0x36, 0xbc, 0x14, + 0x08, 0x7d, 0xa9, 0xf4, 0x30, 0xa7, 0x57, 0xa1, 0x2f, 0x3d, 0x85, 0xbe, 0xf4, 0x4a, 0x25, 0x7c, + 0xe9, 0x55, 0xb0, 0x4e, 0x36, 0x9f, 0x85, 0x97, 0xdd, 0xcd, 0xca, 0xee, 0xcf, 0x0c, 0xee, 0xea, + 0x2c, 0xd9, 0x74, 0xf3, 0x2f, 0x12, 0xc5, 0x60, 0x6f, 0xfa, 0xd1, 0x75, 0x16, 0x8c, 0x85, 0xfb, + 0xae, 0xe2, 0x2e, 0x45, 0xaf, 0x8d, 0x8e, 0xb5, 0x7a, 0xbd, 0x8e, 0xe3, 0xb4, 0x2c, 0x70, 0x71, + 0x15, 0x18, 0x92, 0xc6, 0xaf, 0x8c, 0x50, 0x73, 0x49, 0x4c, 0xe0, 0x27, 0x87, 0x92, 0x60, 0x74, + 0x3b, 0x74, 0xdb, 0xc8, 0x4b, 0x74, 0x53, 0xba, 0x69, 0x26, 0xf3, 0x9d, 0x20, 0x14, 0x9a, 0xd0, + 0xb8, 0x1d, 0x10, 0x03, 0xf0, 0x12, 0x8a, 0xdf, 0x46, 0xf5, 0xd1, 0xf2, 0x02, 0xa3, 0xdd, 0x52, + 0xf0, 0x06, 0x2c, 0x4a, 0xe3, 0x95, 0x49, 0xba, 0x67, 0xa7, 0x51, 0x5f, 0x64, 0xfa, 0x32, 0xf7, + 0x69, 0x20, 0xaf, 0xe7, 0xee, 0x75, 0x00, 0x75, 0x3f, 0x40, 0x48, 0xef, 0x76, 0x80, 0x3f, 0x51, + 0x51, 0x70, 0x83, 0x9c, 0x30, 0x9a, 0xd9, 0x87, 0x0c, 0xec, 0x34, 0xdd, 0x0e, 0xbd, 0xa5, 0x27, + 0x55, 0x1a, 0xeb, 0xbc, 0xaa, 0xc8, 0x00, 0x8a, 0x24, 0x30, 0x36, 0x7a, 0x38, 0xc1, 0x4d, 0xa7, + 0x21, 0xae, 0xb3, 0xdb, 0x09, 0xee, 0x82, 0x34, 0x79, 0x77, 0x71, 0x59, 0x62, 0xd7, 0xa3, 0xf1, + 0xd7, 0xc0, 0x65, 0x77, 0x63, 0x97, 0xa4, 0xc5, 0x82, 0xb9, 0x55, 0x05, 0x93, 0xd5, 0x15, 0x2d, + 0x2f, 0x87, 0x99, 0xfd, 0x14, 0x8a, 0xb9, 0xa5, 0xa5, 0x92, 0x8b, 0x0b, 0xa3, 0x37, 0x4f, 0xb8, + 0x65, 0x0c, 0x06, 0xcc, 0x22, 0x64, 0x40, 0x14, 0x33, 0x83, 0x1f, 0xe8, 0xab, 0xd9, 0x75, 0x3b, + 0xed, 0x18, 0xfb, 0xea, 0x94, 0x74, 0x13, 0xd9, 0xa4, 0xbb, 0x76, 0xb9, 0xc4, 0x35, 0x27, 0x96, + 0xa4, 0xd5, 0xc5, 0x73, 0xc3, 0x11, 0xf0, 0xb3, 0x72, 0x14, 0x64, 0x57, 0xac, 0xe9, 0x5b, 0x59, + 0x92, 0xdf, 0xd6, 0xea, 0x09, 0x1d, 0xfe, 0x9f, 0xa9, 0xc3, 0x4b, 0xd2, 0x07, 0x01, 0x79, 0xf2, + 0xb6, 0x5c, 0xcd, 0x26, 0x93, 0x29, 0x51, 0x68, 0x88, 0x55, 0x1d, 0x87, 0x23, 0x41, 0xcb, 0x16, + 0xe5, 0x7f, 0x53, 0x1f, 0x24, 0xf5, 0x62, 0x43, 0x45, 0x98, 0xd6, 0x58, 0x68, 0xd8, 0x10, 0xbd, + 0xf5, 0x8d, 0x29, 0x4b, 0x24, 0x3d, 0x4a, 0xe2, 0xca, 0x89, 0x62, 0xd7, 0xf9, 0x01, 0xdc, 0xf8, + 0x13, 0x2c, 0xc8, 0xa8, 0x42, 0x0b, 0x65, 0x92, 0x36, 0x2c, 0x87, 0xdb, 0x4a, 0xaa, 0xee, 0x39, + 0xff, 0xa0, 0x28, 0xdd, 0x7e, 0xc6, 0xf5, 0xb4, 0x1a, 0x4e, 0x67, 0x2d, 0xa8, 0x75, 0xf1, 0x64, + 0x34, 0x1a, 0x28, 0x2f, 0x23, 0xb1, 0x46, 0xd2, 0x60, 0xbf, 0xa6, 0xe9, 0xae, 0x86, 0xbb, 0x17, + 0x2a, 0xa7, 0xb3, 0x85, 0x34, 0xf5, 0xfb, 0x42, 0xb9, 0x43, 0x03, 0x54, 0x48, 0x3a, 0xa9, 0x3a, + 0x3a, 0x4d, 0xc1, 0x07, 0xb6, 0xf2, 0x8d, 0x41, 0x36, 0x63, 0xe5, 0xb9, 0x00, 0x3a, 0x93, 0x3a, + 0xf7, 0xed, 0xf1, 0xef, 0xf4, 0x7b, 0x98, 0x20, 0xa9, 0xff, 0x9a, 0x29, 0x73, 0xfc, 0x8b, 0x61, + 0x0e, 0x75, 0x65, 0x5b, 0x14, 0xab, 0xdf, 0x7c, 0x37, 0xa4, 0xa1, 0xe1, 0xf9, 0x8f, 0x7a, 0x6e, + 0xeb, 0xfb, 0xc0, 0xf2, 0x9c, 0x0b, 0xde, 0x19, 0x21, 0xff, 0xc3, 0xea, 0xee, 0x87, 0xf0, 0xe4, + 0x1a, 0x8b, 0xcd, 0xc7, 0x4f, 0x21, 0x2f, 0x7e, 0xb7, 0x15, 0x53, 0xa9, 0x99, 0xec, 0xba, 0x29, + 0xbf, 0xd1, 0x36, 0x73, 0xc5, 0xd2, 0x3a, 0x6e, 0x07, 0x39, 0xdb, 0x5e, 0xef, 0xc5, 0x5d, 0xd2, + 0x1e, 0xf5, 0x45, 0xe9, 0xdb, 0x8a, 0xeb, 0x2d, 0x63, 0x0f, 0x06, 0xce, 0xfe, 0xe3, 0x5b, 0x17, + 0xab, 0xfe, 0xc7, 0xb7, 0xea, 0xb7, 0x54, 0x22, 0x9b, 0x2b, 0xbb, 0x80, 0xc5, 0x9e, 0x02, 0xd2, + 0x1a, 0x96, 0x64, 0xba, 0x79, 0x9a, 0x4c, 0x7d, 0xa3, 0xfa, 0x60, 0x74, 0xbd, 0x0c, 0x57, 0x01, + 0x43, 0xb5, 0x4a, 0xef, 0xb8, 0x85, 0xe2, 0xc1, 0x07, 0xe5, 0x42, 0x07, 0xc5, 0xbe, 0xa1, 0xbf, + 0x98, 0xf6, 0xc1, 0xc7, 0x7c, 0x67, 0xa4, 0x6a, 0x18, 0x42, 0x91, 0x1e, 0xab, 0xdd, 0x64, 0x38, + 0xab, 0xa5, 0xf6, 0x41, 0x59, 0xa7, 0x07, 0x6e, 0x50, 0xad, 0xc6, 0x42, 0x13, 0xb5, 0xa7, 0xa6, + 0x6d, 0x9a, 0x9e, 0x12, 0xff, 0x25, 0xd0, 0x60, 0x62, 0x9a, 0x66, 0xd9, 0xb6, 0x2a, 0x89, 0x42, + 0x77, 0x67, 0x08, 0x62, 0x32, 0x0c, 0xe6, 0xd6, 0x44, 0x57, 0xbb, 0x28, 0x45, 0xdc, 0xee, 0xe9, + 0x11, 0x4d, 0x4f, 0x46, 0x4a, 0xe3, 0x85, 0x5f, 0x02, 0x4e, 0x1d, 0x98, 0x48, 0x00, 0xf0, 0x65, + 0xc7, 0x05, 0x47, 0xd2, 0xa6, 0x6d, 0x29, 0xc3, 0xed, 0x70, 0xc1, 0xcb, 0xd6, 0x75, 0xe3, 0x4c, + 0x94, 0x12, 0x6e, 0x2e, 0x9d, 0x6e, 0x49, 0x6e, 0xae, 0xb9, 0x10, 0x16, 0x7a, 0xbd, 0x07, 0x72, + 0x72, 0x88, 0x33, 0x4d, 0x70, 0x4f, 0xb4, 0x88, 0x92, 0x16, 0x41, 0xa4, 0x01, 0xec, 0x07, 0x2b, + 0xb2, 0xb0, 0x7f, 0xd9, 0xc2, 0x9e, 0xd3, 0xc9, 0xda, 0x33, 0xed, 0x48, 0xa9, 0xb3, 0x46, 0x53, + 0x00, 0xf9, 0x80, 0xe7, 0xb2, 0xb0, 0xd4, 0x50, 0xe9, 0x44, 0xfb, 0xa3, 0x6a, 0xc4, 0x7e, 0xb3, + 0x61, 0x4d, 0xc7, 0x7c, 0x10, 0xe4, 0xa3, 0x14, 0xee, 0xca, 0xd3, 0x47, 0x27, 0x85, 0xe8, 0x21, + 0x15, 0xb9, 0x49, 0x0b, 0x1a, 0xc9, 0xbf, 0x59, 0xc1, 0x0c, 0x2b, 0x04, 0x13, 0xf8, 0x5f, 0x0b, + 0x44, 0xdd, 0xd3, 0xc7, 0xaa, 0x65, 0xe8, 0x43, 0x8a, 0x3a, 0x49, 0xe3, 0x19, 0x7e, 0xba, 0x49, + 0x80, 0xa1, 0x27, 0x16, 0x81, 0x47, 0x3a, 0x34, 0xda, 0x44, 0x35, 0x31, 0xb4, 0x1b, 0x2b, 0x03, + 0x03, 0xd3, 0xb9, 0xf3, 0x8b, 0x49, 0xba, 0x97, 0x71, 0x78, 0xc9, 0xa6, 0x8a, 0x34, 0xd5, 0x8b, + 0xd1, 0x99, 0x14, 0x14, 0x59, 0x12, 0x6f, 0x1f, 0xb9, 0x87, 0x26, 0xc9, 0x22, 0x84, 0xfc, 0x98, + 0x08, 0xd7, 0x09, 0xe6, 0xd6, 0x6c, 0xa9, 0xb8, 0x33, 0xd7, 0xc7, 0xf0, 0x81, 0xd0, 0x3d, 0x38, + 0x7c, 0x18, 0x89, 0x27, 0x4e, 0xbd, 0x43, 0xe7, 0xbc, 0x48, 0xa5, 0xfa, 0xba, 0xed, 0xaf, 0x6e, + 0xa1, 0xfd, 0xd4, 0x04, 0x7f, 0xe8, 0x28, 0x7c, 0xd2, 0xc8, 0x3d, 0x60, 0x84, 0x4a, 0x55, 0xdf, + 0xb5, 0x08, 0xbc, 0xc2, 0xa9, 0x14, 0x85, 0xa9, 0x05, 0x36, 0x80, 0x9e, 0x06, 0xfe, 0xaf, 0xd1, + 0x08, 0x83, 0x00, 0x08, 0xd5, 0xe6, 0x38, 0x98, 0x5a, 0x0a, 0x58, 0x4a, 0xdb, 0x42, 0xc0, 0x98, + 0x85, 0xf0, 0xb5, 0x24, 0x85, 0xa4, 0x30, 0x27, 0x30, 0xc0, 0x17, 0x53, 0x5a, 0x52, 0x52, 0xeb, + 0x5f, 0xbe, 0x28, 0xb8, 0xa1, 0x12, 0xbf, 0xfb, 0xe5, 0x9b, 0x5f, 0xbf, 0x7f, 0xe3, 0xd1, 0x04, + 0x6d, 0x7d, 0x9d, 0x8f, 0x1b, 0x86, 0x6c, 0x8c, 0x98, 0x12, 0x83, 0xaf, 0x46, 0x8b, 0x35, 0x7b, + 0xa2, 0xa2, 0x3e, 0xa5, 0xa3, 0x82, 0x98, 0x9c, 0x75, 0x30, 0x76, 0x25, 0x5b, 0x35, 0x42, 0x5b, + 0x94, 0xb5, 0xb6, 0x45, 0x94, 0x97, 0x1a, 0xcd, 0xcb, 0xf1, 0x79, 0xfd, 0x70, 0x5e, 0x9e, 0xcf, + 0xd3, 0x92, 0xe2, 0x1c, 0xf1, 0xb7, 0x5c, 0x6b, 0xc3, 0x55, 0x8d, 0x41, 0xad, 0xd7, 0xe6, 0xc1, + 0x0d, 0x57, 0x6d, 0x7b, 0x51, 0xf8, 0x70, 0xf7, 0x29, 0x09, 0xb0, 0x88, 0x09, 0x7f, 0xcd, 0xf4, + 0xb4, 0xa1, 0x6f, 0xe3, 0x46, 0xb0, 0xc8, 0x8c, 0x5b, 0x5f, 0xcd, 0xd6, 0xe6, 0x50, 0x20, 0x6c, + 0xb2, 0x00, 0xe9, 0x2e, 0x27, 0x56, 0x02, 0xf3, 0x92, 0x11, 0x61, 0xb5, 0xfc, 0x56, 0x2c, 0xfe, + 0x2e, 0x26, 0x06, 0x97, 0x7e, 0x96, 0x64, 0xf5, 0xbd, 0x7e, 0xa4, 0x8f, 0x61, 0xfe, 0xac, 0xa1, + 0x3f, 0xb9, 0xa0, 0x6c, 0xc9, 0x67, 0xed, 0xb0, 0x9b, 0xd0, 0x2a, 0x74, 0x2f, 0xb3, 0xf5, 0xe1, + 0xbd, 0x4c, 0xfc, 0x5f, 0xb0, 0x01, 0xeb, 0x3a, 0x5b, 0x0c, 0xa5, 0x2e, 0x7d, 0x32, 0x4c, 0xc9, + 0xf4, 0x92, 0x1e, 0xa5, 0xbe, 0x9b, 0xf6, 0x28, 0x8d, 0xea, 0xa0, 0x65, 0x01, 0x4b, 0x7c, 0x1f, + 0x4e, 0xfe, 0x3d, 0x1c, 0x48, 0x3d, 0x18, 0x1a, 0x76, 0xb7, 0x4e, 0xe8, 0x46, 0x1d, 0xf7, 0xa3, + 0xae, 0x78, 0xbe, 0x16, 0x0f, 0x36, 0x12, 0x01, 0xed, 0xbe, 0x33, 0x5c, 0x09, 0xc5, 0xae, 0x6a, + 0xb1, 0x4d, 0x07, 0x71, 0xbe, 0xe4, 0x0a, 0x48, 0x8e, 0x84, 0x00, 0x27, 0x42, 0x32, 0x00, 0xe8, + 0xd1, 0x0b, 0x7b, 0x0b, 0x05, 0xb6, 0x45, 0xf7, 0x76, 0x1c, 0x3a, 0xb2, 0x5b, 0x1f, 0xdc, 0x84, + 0xe4, 0xdd, 0x8e, 0xf3, 0x4b, 0x1a, 0x7f, 0x80, 0xfa, 0x99, 0x8a, 0x56, 0xcb, 0xc7, 0x38, 0x0e, + 0xa3, 0x9f, 0x29, 0x3c, 0x53, 0x79, 0x0c, 0x87, 0xea, 0xdf, 0x45, 0x70, 0x80, 0x0a, 0xdb, 0x10, + 0x45, 0xcc, 0x08, 0xc3, 0x76, 0x3e, 0x47, 0xe9, 0x4f, 0xd0, 0xf4, 0x71, 0x91, 0xa4, 0x8f, 0x21, + 0x9a, 0x3e, 0xfe, 0x5d, 0x8c, 0x87, 0xff, 0x14, 0x49, 0x1f, 0x17, 0x48, 0x1a, 0xc2, 0x70, 0xf8, + 0x77, 0x31, 0x64, 0xf2, 0xb0, 0x1d, 0x96, 0x27, 0xb4, 0x45, 0xc5, 0xc4, 0xf3, 0xdb, 0xf4, 0xf2, + 0x51, 0x78, 0xc6, 0xcf, 0x1d, 0x9a, 0xdc, 0x3d, 0xb0, 0x5a, 0x5b, 0xdb, 0xb0, 0xdd, 0x1b, 0xa2, + 0xf6, 0xa8, 0x80, 0x14, 0xb2, 0xbb, 0xc2, 0xfe, 0x03, 0x55, 0xfb, 0xf8, 0x89, 0x46, 0xb4, 0x0d, + 0x13, 0x9a, 0x65, 0xfb, 0x6c, 0xe1, 0xd4, 0x50, 0x73, 0xd9, 0x5c, 0xb4, 0x87, 0xd9, 0x9c, 0x27, + 0x70, 0xbe, 0xbb, 0xd7, 0x94, 0x05, 0x5f, 0x35, 0xfc, 0x6b, 0x06, 0x92, 0x18, 0xba, 0x9d, 0xcd, + 0x6d, 0xe3, 0xde, 0x37, 0x3b, 0xfb, 0xca, 0x7a, 0x7e, 0x09, 0xca, 0x84, 0x66, 0x7f, 0xcf, 0xb0, + 0x3a, 0xd1, 0xba, 0x59, 0xac, 0x9b, 0x5d, 0x56, 0x77, 0x47, 0xb1, 0x96, 0x55, 0xcc, 0x61, 0xc5, + 0xdc, 0xb2, 0x8a, 0x0d, 0xab, 0xb3, 0xac, 0x62, 0x1e, 0x2b, 0xe6, 0x97, 0x55, 0x6c, 0xd2, 0x13, + 0xe0, 0x41, 0xdd, 0x0c, 0xcb, 0x8e, 0xc8, 0xa2, 0x23, 0x77, 0x7c, 0xe8, 0x68, 0xd8, 0x3a, 0x92, + 0x4d, 0x8d, 0x1d, 0x8a, 0x16, 0x2a, 0x25, 0x82, 0xad, 0x0e, 0xff, 0xee, 0x38, 0xd8, 0xd1, 0xb9, + 0xdb, 0x52, 0x3f, 0x1c, 0x05, 0x5b, 0x5d, 0x24, 0x24, 0x51, 0xa0, 0xa6, 0xfe, 0xf1, 0x28, 0xc4, + 0xd4, 0xbd, 0x27, 0xf7, 0xaa, 0xa6, 0x5d, 0x1b, 0x9d, 0x97, 0x47, 0x63, 0xf4, 0x01, 0x65, 0x6a, + 0x51, 0xc7, 0x1b, 0x74, 0x83, 0x7a, 0x8f, 0x00, 0xbe, 0x86, 0x3b, 0x3d, 0x43, 0x5c, 0xc3, 0x49, + 0x7f, 0x5b, 0x0c, 0xb5, 0x81, 0xd2, 0x77, 0x3b, 0x58, 0xd8, 0x17, 0x16, 0x40, 0x97, 0xef, 0xf1, + 0xd4, 0x34, 0x5d, 0x42, 0xe0, 0x01, 0xfd, 0x4e, 0x31, 0x33, 0x99, 0xdd, 0xea, 0xbd, 0xf5, 0xf1, + 0x0c, 0xb6, 0x89, 0x16, 0xa6, 0x2c, 0xea, 0x23, 0xfc, 0x14, 0x86, 0x94, 0xbf, 0x37, 0x87, 0x23, + 0xdd, 0x5f, 0x70, 0x38, 0x62, 0x43, 0x7b, 0x53, 0x7f, 0x14, 0x97, 0x78, 0xf1, 0xac, 0xf7, 0x10, + 0xba, 0xf4, 0x3d, 0xf0, 0xe1, 0x61, 0x40, 0x1b, 0xd5, 0x13, 0xe1, 0xd7, 0x8d, 0x73, 0x4c, 0x24, + 0x6b, 0xc1, 0x8d, 0xbf, 0x14, 0x78, 0x8d, 0xaa, 0x06, 0xd8, 0x17, 0xa8, 0xbd, 0x6d, 0xbb, 0xce, + 0x17, 0xf6, 0x0b, 0x60, 0x41, 0x73, 0x02, 0x9a, 0x17, 0xb2, 0x78, 0xe2, 0x0b, 0xaf, 0x73, 0xc4, + 0x9f, 0x7c, 0xae, 0x28, 0xce, 0xa9, 0x22, 0xf1, 0x2b, 0x05, 0xea, 0x92, 0xbe, 0x0d, 0xff, 0xaa, + 0xde, 0x4d, 0x6c, 0x02, 0x2a, 0x67, 0xa9, 0x6f, 0x21, 0xff, 0xa0, 0x61, 0x32, 0x4e, 0xff, 0x10, + 0x37, 0x96, 0x8c, 0x4b, 0x34, 0x86, 0xa1, 0x29, 0x7d, 0xba, 0xb3, 0x8b, 0x1b, 0xd8, 0x5b, 0xdf, + 0x52, 0xbf, 0xa2, 0x44, 0xe8, 0xbb, 0x57, 0x72, 0x79, 0x7b, 0xdb, 0xd4, 0x9c, 0xfc, 0x6b, 0x66, + 0xcc, 0x6b, 0xbc, 0x9f, 0x14, 0xef, 0x9d, 0xd3, 0xc9, 0xd4, 0x09, 0xeb, 0xc9, 0x8b, 0x01, 0x71, + 0xdf, 0x10, 0xc3, 0x6f, 0x2e, 0x39, 0x72, 0x9b, 0xe5, 0xbf, 0x66, 0x2d, 0xea, 0x12, 0x4c, 0xe3, + 0xd7, 0x48, 0x9a, 0x03, 0xc5, 0x6a, 0x62, 0xc0, 0x2b, 0xe5, 0xaa, 0x94, 0xd8, 0x10, 0xd3, 0x1d, + 0x37, 0xa9, 0x81, 0xd1, 0x9b, 0x49, 0x8f, 0x1c, 0xbf, 0x22, 0xfd, 0xde, 0xe8, 0x78, 0x17, 0xf2, + 0x51, 0xb6, 0x08, 0xa1, 0xea, 0xe9, 0x87, 0xbd, 0x64, 0x2d, 0xac, 0xb8, 0x1d, 0x58, 0x26, 0x1d, + 0x1b, 0x49, 0x0e, 0xd0, 0x69, 0x78, 0x17, 0xb0, 0xac, 0x00, 0x64, 0x2d, 0x05, 0x94, 0x0d, 0x00, + 0xed, 0x7c, 0x02, 0x50, 0x7f, 0x29, 0xa0, 0x5c, 0x00, 0xa8, 0xf9, 0x09, 0x40, 0xda, 0x52, 0x40, + 0xf9, 0x00, 0xd0, 0xae, 0x0f, 0x88, 0x13, 0x12, 0xc2, 0xaf, 0xc5, 0x01, 0x8f, 0xf1, 0x8d, 0xbb, + 0x8c, 0xbf, 0xdc, 0x3b, 0xae, 0xc5, 0x7b, 0xc6, 0xe3, 0xa0, 0xc7, 0x7a, 0xc6, 0xb5, 0x58, 0xaf, + 0xb8, 0x16, 0xf5, 0x88, 0xc3, 0x44, 0x88, 0x1e, 0x4b, 0xb4, 0x68, 0x34, 0x7e, 0x54, 0xce, 0xa9, + 0x7a, 0x08, 0x71, 0x78, 0x65, 0xb8, 0x2c, 0x5c, 0x6d, 0xe7, 0xf1, 0x90, 0x33, 0x75, 0x42, 0x35, + 0x9c, 0xd8, 0x4f, 0xee, 0x04, 0x5f, 0xdc, 0xf9, 0x6b, 0x26, 0x12, 0xdb, 0x2c, 0xe7, 0x4a, 0x25, + 0xb1, 0x5e, 0xb7, 0xa9, 0xd5, 0xba, 0x9d, 0xcf, 0x55, 0x4b, 0x85, 0x39, 0xaf, 0x5e, 0xbb, 0x73, + 0x16, 0x25, 0x68, 0xe8, 0x0e, 0x3d, 0xfa, 0x59, 0x1f, 0x01, 0xa5, 0x51, 0x3a, 0x9d, 0x16, 0x33, + 0xae, 0x33, 0xc8, 0x27, 0x14, 0x58, 0x86, 0xf4, 0xc6, 0x42, 0x07, 0x18, 0x1a, 0x43, 0xca, 0x00, + 0x73, 0xa7, 0xbb, 0xf5, 0xd7, 0x6c, 0xb4, 0x2d, 0xb6, 0x50, 0xc5, 0x16, 0x1e, 0x30, 0x22, 0x84, + 0x3e, 0x9d, 0xee, 0xed, 0x8a, 0x2c, 0xfa, 0x8c, 0x2b, 0xc5, 0xd3, 0x08, 0xf0, 0xdd, 0x16, 0xef, + 0xd1, 0x43, 0x44, 0xeb, 0x80, 0x8c, 0x80, 0xca, 0x0b, 0x05, 0xd8, 0xed, 0x40, 0x60, 0x4e, 0x7a, + 0x85, 0x62, 0xe1, 0xa2, 0x46, 0x7e, 0xd1, 0xeb, 0xe1, 0xe9, 0x1e, 0x2e, 0xe2, 0x8d, 0x43, 0xd1, + 0x25, 0x30, 0x27, 0x70, 0xc3, 0x72, 0x7e, 0xe5, 0x7d, 0x8a, 0x7f, 0xcd, 0x12, 0xa3, 0xed, 0xe1, + 0xa4, 0xea, 0x79, 0x99, 0x93, 0x1b, 0xd9, 0x39, 0x67, 0xac, 0x74, 0xe6, 0x0b, 0x46, 0xcf, 0x29, + 0xd1, 0x03, 0x73, 0xc8, 0xff, 0x6c, 0x12, 0x34, 0xc6, 0x3e, 0x9b, 0xe4, 0x49, 0x75, 0xae, 0x17, + 0x1f, 0x20, 0x48, 0x3e, 0x40, 0x30, 0x84, 0x1f, 0x8f, 0x5c, 0x77, 0x23, 0x11, 0xa5, 0x69, 0xa7, + 0x2a, 0x27, 0xff, 0x01, 0x94, 0x05, 0x6c, 0xd5, 0x8b, 0x51, 0x42, 0x9e, 0xdd, 0x50, 0x34, 0xb5, + 0xaf, 0x57, 0x51, 0xa6, 0x5b, 0x0e, 0x06, 0x26, 0xe1, 0x72, 0x88, 0x85, 0xc6, 0x29, 0xea, 0x5c, + 0x14, 0x53, 0x3d, 0x4c, 0x5a, 0xec, 0x29, 0x85, 0xc4, 0xbc, 0xbf, 0x0b, 0x8b, 0xba, 0xd1, 0x8b, + 0xf6, 0x9c, 0xe3, 0x62, 0xa3, 0xb7, 0xaa, 0x1f, 0x9c, 0x53, 0x11, 0xa6, 0x27, 0xb4, 0xe0, 0x7a, + 0x2f, 0xb7, 0x18, 0x83, 0x3e, 0x7a, 0x91, 0x93, 0x80, 0xd8, 0x02, 0x8d, 0xc4, 0x43, 0xea, 0xcc, + 0xf4, 0x98, 0xee, 0x11, 0x1d, 0x7e, 0x7e, 0xf9, 0x30, 0x87, 0x7d, 0x30, 0x7a, 0xdf, 0x52, 0x5a, + 0xea, 0x9b, 0xfd, 0xb8, 0x72, 0xfc, 0xbe, 0xa5, 0x12, 0xc3, 0xc1, 0x46, 0x16, 0x9d, 0x8a, 0x5e, + 0xf7, 0xbe, 0xa5, 0x4c, 0x7c, 0x8b, 0xe9, 0x1c, 0x05, 0xb8, 0x64, 0x94, 0xdc, 0xbc, 0xad, 0x00, + 0xd5, 0x0f, 0x10, 0x23, 0x1f, 0x21, 0x36, 0x1c, 0x84, 0x90, 0x4a, 0xf4, 0x17, 0xf9, 0xc9, 0xac, + 0xa2, 0x07, 0xfc, 0xbf, 0x8e, 0xac, 0xb0, 0x9c, 0x97, 0x60, 0xf9, 0x1f, 0x7a, 0x4c, 0x34, 0x80, + 0x07, 0x7f, 0x00, 0x44, 0x2a, 0x64, 0xfd, 0x91, 0x3d, 0xc0, 0x5b, 0xc6, 0x60, 0xd1, 0xf6, 0xfb, + 0xdf, 0xc2, 0x03, 0x05, 0xdc, 0x7b, 0x78, 0xe8, 0xc4, 0x4f, 0xcd, 0xbd, 0xbe, 0x65, 0xc6, 0x12, + 0x29, 0xcb, 0xfb, 0x33, 0x38, 0xae, 0x84, 0xf2, 0xff, 0x03, 0x12, 0xc1, 0x36, 0x3b, 0x2b, 0x87, + 0x2e, 0x8a, 0x15, 0x94, 0xff, 0x47, 0xb0, 0xfa, 0x84, 0xf7, 0x9d, 0xb9, 0x84, 0x96, 0xe9, 0xae, + 0xfe, 0xc7, 0x9d, 0xfc, 0x7b, 0x79, 0xe9, 0x2a, 0x1b, 0xff, 0x3d, 0x37, 0x6e, 0xbc, 0x3c, 0xdf, + 0x6a, 0x78, 0x49, 0x1d, 0x08, 0xed, 0xb0, 0x2d, 0x04, 0x1c, 0x29, 0xfa, 0x8b, 0x7c, 0x82, 0x2e, + 0x0d, 0xbd, 0x24, 0x3c, 0xac, 0xaf, 0xf7, 0x37, 0xcc, 0xad, 0xec, 0xfa, 0x7a, 0x77, 0xa3, 0xb3, + 0x95, 0xdd, 0x6e, 0x53, 0xc6, 0x49, 0x90, 0x74, 0x63, 0xd4, 0x55, 0x8d, 0x6b, 0xc2, 0xce, 0x56, + 0xac, 0xaf, 0x47, 0x12, 0xa8, 0xbb, 0x4d, 0xac, 0x1e, 0xe1, 0x42, 0xbe, 0xc2, 0x25, 0x10, 0x42, + 0xa0, 0xed, 0x0c, 0x45, 0xb7, 0x6d, 0x7a, 0x81, 0xaf, 0x69, 0xd0, 0x6d, 0x06, 0xe6, 0x35, 0x70, + 0xaf, 0x2b, 0xc3, 0xb6, 0x41, 0x7a, 0xae, 0xb6, 0x40, 0xe8, 0x04, 0x71, 0xcc, 0x88, 0x6d, 0x77, + 0x63, 0xfa, 0xb3, 0xea, 0x1b, 0xaa, 0xdf, 0x8e, 0x19, 0xb2, 0x40, 0x60, 0x36, 0x6c, 0xe1, 0x4e, + 0xcd, 0xc7, 0x90, 0xe3, 0x3c, 0x3e, 0x21, 0xc8, 0x11, 0x9f, 0x0f, 0x85, 0x8c, 0x72, 0xf0, 0xcf, + 0x2d, 0x9c, 0x2e, 0x5e, 0x3a, 0x8a, 0x2a, 0xfc, 0x72, 0xee, 0x71, 0x31, 0xb3, 0x98, 0xca, 0xe5, + 0x7f, 0xc9, 0xd6, 0x04, 0x9b, 0xd4, 0xbd, 0xf3, 0x0c, 0x0f, 0xe3, 0x70, 0x5b, 0x3c, 0xe6, 0xa7, + 0x98, 0x2c, 0xf4, 0xc5, 0xc3, 0x20, 0xca, 0xe7, 0x33, 0xa8, 0x74, 0x43, 0xa8, 0xec, 0xd2, 0x90, + 0x1a, 0x0e, 0x81, 0x2e, 0x6f, 0x0c, 0x6e, 0xfd, 0xe1, 0x27, 0xcc, 0x42, 0xf6, 0xf0, 0xa2, 0xee, + 0x08, 0x2c, 0x67, 0xa1, 0x58, 0x63, 0x11, 0x9e, 0x73, 0xcf, 0xef, 0xbd, 0x18, 0x26, 0xe1, 0xba, + 0xd8, 0x79, 0x0f, 0xfa, 0x56, 0x9d, 0xed, 0x72, 0xd7, 0x82, 0x93, 0x5a, 0x9a, 0xbb, 0xf5, 0x0a, + 0x66, 0x25, 0x1e, 0x35, 0x4d, 0x7a, 0x71, 0xa1, 0xde, 0xbb, 0x77, 0x31, 0x37, 0xc6, 0x27, 0xfb, + 0x9e, 0x7f, 0xa5, 0x2e, 0xd7, 0x94, 0xef, 0x75, 0xec, 0x64, 0x4d, 0x49, 0xa5, 0x92, 0x81, 0xc4, + 0x50, 0xfc, 0xe3, 0x40, 0xd4, 0xb7, 0x4b, 0x03, 0xee, 0x29, 0xf3, 0x2b, 0xe8, 0x2c, 0xfe, 0x95, + 0xf4, 0x5b, 0xeb, 0x5b, 0x62, 0x4a, 0x59, 0xb6, 0x19, 0xfc, 0x85, 0xaf, 0x07, 0x98, 0xfc, 0xf2, + 0xd1, 0x80, 0xa9, 0xfa, 0x39, 0x6c, 0xb3, 0xec, 0x38, 0xb6, 0xbb, 0xe1, 0xf0, 0x3d, 0x17, 0x94, + 0xec, 0x77, 0xc1, 0x0c, 0x05, 0xcc, 0x57, 0xee, 0x44, 0x23, 0xb1, 0xe5, 0xa5, 0xdb, 0xd0, 0xd2, + 0x17, 0xea, 0x22, 0xfe, 0xa2, 0xb1, 0x03, 0x99, 0xe1, 0x25, 0xcf, 0xdb, 0xd2, 0x08, 0xfa, 0x80, + 0xad, 0xcd, 0x6d, 0xef, 0x84, 0x43, 0x12, 0xd6, 0xc4, 0xd4, 0xb2, 0x52, 0xc4, 0x2f, 0xf5, 0xdd, + 0x53, 0xd9, 0xfc, 0x2e, 0x23, 0xc9, 0xa2, 0x88, 0xc7, 0xed, 0xb5, 0xfb, 0xf7, 0x8f, 0x47, 0xe3, + 0x13, 0x3c, 0x6a, 0x80, 0x8c, 0x0b, 0xdf, 0xc1, 0x22, 0x85, 0x0f, 0x51, 0x62, 0xcc, 0x81, 0x69, + 0x27, 0xd1, 0xd4, 0xc7, 0x07, 0x3f, 0x50, 0xdd, 0x3b, 0x2c, 0xfc, 0xed, 0x94, 0x5e, 0x0a, 0x5e, + 0x65, 0xf7, 0x85, 0xc7, 0xb8, 0xa0, 0xec, 0x3e, 0x2f, 0x3e, 0x22, 0x3b, 0xae, 0xec, 0x46, 0xf1, + 0xff, 0xf8, 0x56, 0xf5, 0x69, 0xc0, 0x7d, 0x70, 0x3b, 0xc6, 0x2f, 0x15, 0xb8, 0x93, 0xb6, 0x6e, + 0x5d, 0x98, 0x5d, 0xdf, 0x8b, 0xf4, 0xad, 0xe6, 0xef, 0xa3, 0xd3, 0x60, 0x43, 0x81, 0xa1, 0x4c, + 0xf7, 0x9b, 0x68, 0xa8, 0x60, 0x18, 0xd6, 0x5f, 0x33, 0x27, 0xad, 0x76, 0xe7, 0x18, 0xa5, 0x25, + 0xd7, 0xeb, 0xf8, 0xbc, 0x2d, 0xba, 0x2e, 0x06, 0xb1, 0xea, 0xa4, 0xf1, 0x90, 0x03, 0x98, 0x3e, + 0xee, 0x9d, 0xe7, 0x29, 0xcc, 0x4f, 0x89, 0x2c, 0x08, 0x79, 0xee, 0x37, 0xf9, 0xab, 0x46, 0x68, + 0x84, 0x75, 0xc8, 0x7d, 0xe5, 0x86, 0x5a, 0xbb, 0x35, 0x43, 0xc1, 0x7c, 0x91, 0x9c, 0x65, 0x63, + 0xc7, 0xc5, 0x0d, 0xc6, 0x94, 0xe5, 0xb8, 0x6f, 0x71, 0xd3, 0xce, 0x0f, 0x78, 0x75, 0x23, 0x32, + 0x69, 0x80, 0xac, 0x44, 0xb7, 0xee, 0x88, 0x17, 0x38, 0xea, 0x6f, 0x30, 0xe2, 0x11, 0x00, 0xe7, + 0x3b, 0x71, 0x07, 0xb5, 0xe6, 0xc0, 0xf4, 0x25, 0x3f, 0x9c, 0x9f, 0xf5, 0x99, 0xda, 0xad, 0xe2, + 0x03, 0xc6, 0x17, 0xa0, 0x91, 0xc7, 0x5e, 0xb2, 0x3f, 0xe7, 0x08, 0x83, 0x8f, 0xde, 0xa4, 0xf1, + 0x47, 0xf4, 0xa4, 0xb8, 0x46, 0xf0, 0x4e, 0x28, 0xc5, 0x22, 0x09, 0x87, 0x26, 0x26, 0x31, 0x98, + 0xc0, 0x8b, 0x4c, 0x45, 0x78, 0x32, 0x83, 0x24, 0xb6, 0xf0, 0x60, 0xad, 0x38, 0x0f, 0x90, 0xa0, + 0xc7, 0x1d, 0x89, 0xc7, 0x4f, 0x78, 0x66, 0x5e, 0xd2, 0xe1, 0x87, 0x9e, 0xb8, 0x16, 0x05, 0x11, + 0x43, 0x32, 0x44, 0x76, 0x9d, 0x02, 0x6d, 0x4c, 0xd5, 0xbb, 0x64, 0x7a, 0xd1, 0x4b, 0x88, 0xd7, + 0xad, 0xbb, 0x5d, 0x31, 0xf9, 0x5d, 0xa6, 0xc1, 0x85, 0x61, 0xa6, 0x65, 0x61, 0xaf, 0x18, 0x4a, + 0xce, 0x22, 0x64, 0x5d, 0xa6, 0xc5, 0x46, 0xf0, 0xd2, 0x04, 0x96, 0x8a, 0x67, 0x49, 0x58, 0xc6, + 0xb6, 0x58, 0xab, 0x7d, 0xa9, 0x65, 0x41, 0x03, 0xf0, 0x32, 0x6a, 0x8c, 0x3a, 0x18, 0xd2, 0xa0, + 0x6d, 0xff, 0xf8, 0x59, 0xd5, 0xbc, 0xb3, 0xe2, 0x35, 0x7a, 0xe7, 0x83, 0xe3, 0x56, 0xfc, 0x9e, + 0xff, 0xfd, 0x9b, 0x86, 0x3d, 0xd0, 0x58, 0x52, 0x28, 0x87, 0xbf, 0x5e, 0x51, 0x89, 0x1e, 0x4b, + 0x8c, 0x39, 0x1a, 0x4e, 0xaf, 0xc6, 0xf2, 0x2e, 0x28, 0xa3, 0x67, 0xc2, 0xdd, 0xa3, 0x0e, 0xc1, + 0x37, 0xf3, 0xbc, 0x9d, 0x4c, 0xbf, 0xa1, 0x82, 0xdf, 0x50, 0xfe, 0xe7, 0x36, 0xa8, 0x94, 0x55, + 0x7c, 0xa8, 0xc9, 0xf4, 0xc8, 0x55, 0x02, 0x43, 0x49, 0x92, 0x92, 0xc2, 0xb5, 0x95, 0x50, 0x80, + 0x4e, 0x1d, 0x6d, 0x84, 0xf7, 0xbe, 0x82, 0xaa, 0x17, 0x34, 0xc0, 0xbe, 0x75, 0x87, 0x85, 0x83, + 0xfc, 0x2c, 0x9f, 0x4f, 0x3f, 0x35, 0x17, 0xce, 0xcf, 0x71, 0xf9, 0xec, 0x4b, 0x6f, 0xe1, 0xfc, + 0x31, 0x9f, 0x4f, 0xbf, 0xb3, 0x16, 0xce, 0xef, 0x85, 0xf3, 0x8b, 0x35, 0x0c, 0xde, 0x71, 0x52, + 0xf5, 0x3e, 0x9e, 0xa0, 0xc5, 0xb5, 0x02, 0x98, 0x1a, 0x23, 0xed, 0x0e, 0x9d, 0xa1, 0x96, 0xc0, + 0xef, 0x6d, 0x4a, 0x44, 0xd2, 0x25, 0xd4, 0x34, 0xf6, 0x1f, 0x80, 0x8a, 0x34, 0x1e, 0x80, 0xad, + 0x6d, 0xde, 0xb7, 0x2c, 0xf9, 0xa5, 0x2d, 0x26, 0x3e, 0xd6, 0x8f, 0x6b, 0x67, 0x21, 0xf0, 0x7e, + 0xbc, 0xb4, 0xfb, 0x16, 0x0a, 0x3f, 0xce, 0xfe, 0x8c, 0xb2, 0x2f, 0x8d, 0x4f, 0x75, 0xcb, 0x7a, + 0x0c, 0xfc, 0x43, 0x96, 0x7c, 0xd9, 0xf0, 0xd3, 0xbb, 0x6e, 0x0b, 0xd8, 0xd2, 0x9f, 0x48, 0xc8, + 0xc3, 0xb4, 0x0a, 0x4a, 0x9a, 0xf8, 0x8e, 0xb9, 0xd1, 0xfd, 0xa2, 0x84, 0x41, 0xc5, 0x12, 0x36, + 0x43, 0xfb, 0x78, 0xe9, 0x25, 0xff, 0x8a, 0x7e, 0x29, 0xd2, 0xa4, 0xfb, 0x81, 0xae, 0xb5, 0xf3, + 0xd7, 0x0c, 0xa0, 0x42, 0xd9, 0x4b, 0x48, 0x6c, 0xda, 0x76, 0x82, 0xc6, 0x4c, 0xfb, 0xf1, 0x92, + 0xbf, 0xe8, 0x0a, 0xc7, 0x82, 0x24, 0xbd, 0x4f, 0xfa, 0x86, 0xe4, 0xce, 0x17, 0xef, 0x26, 0x3e, + 0x6f, 0xe7, 0x1e, 0x86, 0xc4, 0x0f, 0x51, 0xc3, 0x2f, 0xb2, 0x52, 0xe7, 0x49, 0xd2, 0x8f, 0x3c, + 0x00, 0xc1, 0x40, 0xbe, 0x2f, 0x16, 0x00, 0x71, 0x97, 0xf2, 0x62, 0x0b, 0x16, 0x6e, 0xbd, 0x00, + 0x44, 0xfc, 0x28, 0x66, 0x1f, 0x09, 0xfe, 0xb2, 0x0a, 0x3c, 0x4d, 0x9a, 0x36, 0x46, 0x8e, 0x8b, + 0xd5, 0x07, 0x64, 0x02, 0xcb, 0x64, 0x83, 0x48, 0xe2, 0x7f, 0x0a, 0xee, 0x57, 0x6f, 0xc4, 0x14, + 0xca, 0x83, 0xff, 0x14, 0xff, 0x2b, 0x54, 0xa3, 0x30, 0x79, 0xb2, 0x71, 0x61, 0x0f, 0x16, 0xe9, + 0x5a, 0xca, 0xc4, 0x2d, 0xec, 0x5f, 0x86, 0x11, 0x73, 0xb4, 0x5c, 0xfc, 0xea, 0x76, 0x4f, 0x48, + 0xd3, 0xf8, 0xe2, 0x64, 0x8d, 0x0f, 0x71, 0x17, 0x48, 0x10, 0x80, 0x41, 0x60, 0x02, 0x87, 0xaa, + 0x27, 0xc4, 0xb4, 0x8f, 0x63, 0x12, 0x2f, 0x67, 0xf3, 0xae, 0x84, 0xab, 0x47, 0x46, 0xd7, 0xbf, + 0x7c, 0x4f, 0xed, 0x26, 0xc3, 0x57, 0x7c, 0xf0, 0xc5, 0x58, 0x04, 0x38, 0x7f, 0xe9, 0x6d, 0x70, + 0x82, 0x36, 0x48, 0x43, 0x79, 0x86, 0xf1, 0xd7, 0x8e, 0x77, 0xda, 0xcf, 0xd5, 0x01, 0xaa, 0x02, + 0x5d, 0xf0, 0x6b, 0xd9, 0xba, 0x2f, 0x67, 0x30, 0x72, 0x12, 0x18, 0xb3, 0x4e, 0x59, 0x34, 0x2c, + 0x53, 0xe9, 0xbc, 0x70, 0xf3, 0x31, 0x5c, 0x16, 0x48, 0x99, 0xf4, 0x8e, 0x62, 0xbb, 0xc1, 0xdf, + 0x01, 0xe7, 0x78, 0xf0, 0x18, 0xbf, 0xb0, 0x25, 0x59, 0xab, 0x3b, 0x9e, 0x64, 0x55, 0x24, 0x55, + 0x32, 0x24, 0x0b, 0x34, 0xb3, 0xda, 0x82, 0xec, 0xd6, 0x92, 0x49, 0xab, 0xce, 0x05, 0xe1, 0x60, + 0x44, 0x78, 0x06, 0x1a, 0xfb, 0x37, 0x5e, 0x2e, 0x20, 0xb1, 0xa8, 0x70, 0x49, 0xad, 0xe3, 0x65, + 0x36, 0x92, 0x51, 0xc7, 0x9b, 0x6a, 0xe8, 0x25, 0x20, 0x02, 0xde, 0x52, 0x62, 0xa1, 0xbc, 0x4e, + 0x2a, 0x88, 0x9b, 0x1b, 0x7c, 0xa7, 0xe8, 0x5d, 0x63, 0x98, 0xc0, 0x28, 0x90, 0xc5, 0x34, 0x63, + 0x31, 0x2d, 0xb8, 0x4f, 0x84, 0xd0, 0x86, 0x36, 0xb2, 0x6e, 0x88, 0x20, 0x3b, 0xa5, 0x6e, 0x33, + 0xb5, 0x12, 0x78, 0xd9, 0x22, 0x7a, 0x4d, 0xe1, 0x42, 0x56, 0x70, 0x31, 0xf1, 0x86, 0xcc, 0xc2, + 0xe6, 0xe2, 0xb3, 0xfa, 0xd8, 0x6a, 0x7c, 0x56, 0x3b, 0x39, 0xff, 0x02, 0x23, 0x51, 0xb7, 0x80, + 0xc6, 0x21, 0x02, 0x90, 0x8c, 0x47, 0x4d, 0x4a, 0x02, 0x3c, 0xa5, 0x4e, 0x63, 0xde, 0xdd, 0x6b, + 0x06, 0x15, 0xbc, 0x61, 0x50, 0xc5, 0x3f, 0xc6, 0x3c, 0x89, 0x77, 0x1d, 0xce, 0xff, 0x05, 0x6c, + 0xed, 0x9e, 0x07, 0x0e, 0xc2, 0xe8, 0xaa, 0x42, 0xf4, 0x7a, 0x44, 0xbc, 0xd5, 0x1a, 0x9d, 0x57, + 0x12, 0x5e, 0xa5, 0xf3, 0x6c, 0xa8, 0xf4, 0x0e, 0x87, 0xda, 0xaf, 0x30, 0xb3, 0x2d, 0x4e, 0x50, + 0x7a, 0xe6, 0x18, 0xe4, 0x33, 0x2e, 0xcb, 0x92, 0x12, 0x3a, 0x7c, 0x1c, 0x99, 0x89, 0x4c, 0xaf, + 0xc2, 0x2d, 0x40, 0x7a, 0x77, 0xb9, 0xeb, 0xb4, 0xa3, 0x9b, 0x6f, 0x68, 0x3a, 0xe1, 0xd1, 0x63, + 0xdc, 0x1d, 0xe3, 0xe2, 0x06, 0x69, 0x1e, 0xa8, 0x56, 0xe8, 0x42, 0x52, 0xd0, 0x55, 0xf4, 0x6d, + 0x6e, 0xe8, 0x4d, 0x66, 0x47, 0xfd, 0x35, 0xd3, 0xe7, 0xf4, 0x56, 0xc5, 0xa4, 0xbf, 0x59, 0xe7, + 0x9a, 0x5c, 0x6e, 0xaa, 0xb0, 0xf2, 0x8b, 0xbc, 0xf1, 0x3b, 0x49, 0x91, 0xcd, 0x3d, 0x5a, 0x95, + 0x73, 0x87, 0x20, 0x82, 0xa8, 0x74, 0xe0, 0x33, 0x99, 0x8b, 0xe1, 0x4d, 0x3b, 0x5a, 0x38, 0x6c, + 0xd2, 0x2e, 0xfb, 0xd4, 0x6f, 0xa8, 0x5e, 0xf0, 0xa1, 0x5f, 0x76, 0xf0, 0x3a, 0xb4, 0xa7, 0xe1, + 0xee, 0xdc, 0x83, 0x79, 0xed, 0x5b, 0x75, 0xfe, 0x70, 0xb4, 0x11, 0x49, 0x9c, 0xf3, 0x6e, 0x04, + 0x12, 0x71, 0xa3, 0x8f, 0x72, 0x55, 0x16, 0x4c, 0x94, 0xab, 0xba, 0xf3, 0x7b, 0xaf, 0x75, 0x99, + 0xcf, 0x89, 0x5e, 0x88, 0x11, 0xfb, 0xc9, 0x87, 0x32, 0x37, 0x5a, 0x5e, 0x7e, 0xc1, 0xcd, 0x2f, + 0x44, 0xf2, 0xf3, 0x6e, 0x7e, 0xd1, 0xcd, 0x2f, 0x86, 0xf3, 0x9b, 0x5e, 0x7e, 0x96, 0xe5, 0x97, + 0xf9, 0xc6, 0xe9, 0xae, 0x82, 0xcb, 0x82, 0xe2, 0x36, 0xdf, 0x03, 0x3d, 0x74, 0xe0, 0x57, 0xc4, + 0xdb, 0x7e, 0xe8, 0x99, 0x3d, 0x4c, 0xdf, 0x06, 0xdd, 0xce, 0xac, 0xb2, 0xe7, 0xc5, 0x45, 0x9d, + 0xdd, 0x61, 0x4f, 0xaf, 0xb9, 0x65, 0x32, 0x07, 0xb8, 0x4f, 0xc7, 0x3f, 0xa0, 0xd1, 0xa1, 0x10, + 0x01, 0xad, 0x13, 0x4b, 0x24, 0x7d, 0xb3, 0x14, 0x03, 0xd2, 0xdc, 0xc4, 0x3f, 0xd0, 0x59, 0x3d, + 0x30, 0x49, 0x00, 0xa9, 0xb0, 0x44, 0x57, 0x1c, 0xac, 0xd8, 0x08, 0xc2, 0xfd, 0xee, 0x5c, 0x79, + 0x5d, 0xa1, 0x97, 0x3a, 0xd1, 0x4d, 0x06, 0xdc, 0x6c, 0xe1, 0x77, 0x84, 0xac, 0xa1, 0x73, 0xd3, + 0xd7, 0x12, 0xdf, 0x60, 0xba, 0x42, 0x27, 0xe7, 0xdf, 0xe8, 0x77, 0xae, 0x92, 0x35, 0x31, 0x1c, + 0x6f, 0x45, 0x8f, 0xd1, 0x7a, 0x71, 0x85, 0xbf, 0xe2, 0x8e, 0x7f, 0xfa, 0x87, 0x97, 0x28, 0x98, + 0xd0, 0x07, 0xa7, 0xdd, 0x0f, 0xc4, 0xbb, 0x47, 0xb7, 0xbf, 0xd1, 0x3b, 0xcd, 0x33, 0x19, 0xaf, + 0x41, 0x1a, 0xb3, 0xca, 0xb1, 0x67, 0xdb, 0xe3, 0x40, 0x36, 0x24, 0x4a, 0xd2, 0x3d, 0xee, 0x82, + 0xe5, 0xc7, 0x6a, 0xf7, 0x7b, 0x2e, 0x2f, 0x6f, 0x66, 0xf3, 0x32, 0x76, 0x86, 0x70, 0xa7, 0x9e, + 0xa4, 0x5f, 0x50, 0x83, 0xb2, 0x61, 0x36, 0xb7, 0xe9, 0x76, 0x18, 0xaa, 0x62, 0x3c, 0x82, 0xca, + 0xec, 0x28, 0x5a, 0x7d, 0x5b, 0x3c, 0xcf, 0x34, 0xc4, 0x2a, 0x7d, 0x9e, 0xd3, 0x9e, 0x81, 0x42, + 0x95, 0x4a, 0xcd, 0x09, 0x46, 0xc3, 0x7f, 0x97, 0xb7, 0x6d, 0xd0, 0x05, 0x43, 0xdf, 0xcf, 0xc0, + 0x13, 0xb4, 0xb0, 0x2a, 0xa1, 0xe7, 0xae, 0x9b, 0x16, 0xab, 0x32, 0x0d, 0xc4, 0x4b, 0x60, 0xb1, + 0x73, 0x43, 0x30, 0xf0, 0xa4, 0x6f, 0xf0, 0x11, 0x05, 0xa1, 0x87, 0xf2, 0x2c, 0x8d, 0x8a, 0x38, + 0x1a, 0x75, 0x5e, 0x18, 0xb2, 0xc0, 0x85, 0x64, 0x36, 0x59, 0x24, 0xa9, 0x5f, 0xa7, 0x8a, 0x81, + 0x99, 0x74, 0x30, 0xe7, 0xb4, 0xa0, 0x4e, 0x8f, 0xd4, 0x44, 0xa2, 0x30, 0xf5, 0x90, 0xca, 0x64, + 0x87, 0x4f, 0xfc, 0xb9, 0x9f, 0x50, 0x88, 0x3d, 0xea, 0xc7, 0x3e, 0x38, 0xf1, 0xa9, 0x93, 0x7e, + 0xfe, 0x81, 0xf2, 0x91, 0xd6, 0xa5, 0x17, 0xe5, 0x23, 0x6c, 0x01, 0x81, 0x0b, 0xa8, 0x50, 0xb0, + 0xbb, 0x3d, 0x62, 0x8f, 0x00, 0xc6, 0x7d, 0x3a, 0x47, 0x0a, 0x4f, 0x0e, 0x4f, 0x5d, 0x93, 0xc8, + 0x07, 0xa7, 0x1d, 0x17, 0x2e, 0xa7, 0xa1, 0xfe, 0x19, 0xa6, 0x4c, 0xb0, 0xbb, 0x9d, 0x88, 0xab, + 0x2a, 0xd4, 0x82, 0xab, 0xb5, 0x90, 0xa0, 0xd8, 0xce, 0x67, 0xc3, 0x50, 0xf1, 0x3c, 0x19, 0xce, + 0x4b, 0x30, 0x7c, 0x96, 0x5e, 0x1c, 0xec, 0xd0, 0xa0, 0x56, 0xef, 0x2a, 0x99, 0x3b, 0x14, 0xbb, + 0xf4, 0xf2, 0xd7, 0xbe, 0x98, 0xf4, 0xa6, 0x39, 0x49, 0x0f, 0x14, 0xbb, 0xe1, 0x38, 0x96, 0x0a, + 0x3c, 0x08, 0xb9, 0x43, 0x65, 0x2a, 0x26, 0x41, 0x54, 0x28, 0x5e, 0x12, 0x3d, 0x9f, 0xc1, 0x3c, + 0x06, 0x55, 0x58, 0xcf, 0xbd, 0x9b, 0x41, 0xf8, 0x08, 0x5e, 0x9a, 0x99, 0x81, 0xf9, 0xa6, 0x7f, + 0xa7, 0x17, 0x52, 0xc0, 0x2c, 0xcb, 0x31, 0xd5, 0x45, 0xab, 0x2f, 0xdc, 0x1a, 0x5c, 0x61, 0x97, + 0x06, 0xb3, 0xad, 0xe9, 0x76, 0x3f, 0x49, 0xd9, 0xe5, 0x5f, 0x5e, 0x42, 0x67, 0xa3, 0xe4, 0xa6, + 0x24, 0x7f, 0xd5, 0x96, 0x5d, 0x50, 0xa7, 0xcd, 0x99, 0x63, 0x2c, 0x44, 0xb6, 0x65, 0x14, 0xf4, + 0x6f, 0x94, 0x63, 0x5f, 0x84, 0x64, 0x84, 0x53, 0x5c, 0x13, 0xce, 0x57, 0xe0, 0x3d, 0x97, 0x48, + 0x70, 0x01, 0x2b, 0x77, 0xdb, 0x10, 0xbd, 0x40, 0x35, 0xcd, 0x3e, 0x99, 0xf2, 0x77, 0x9b, 0x8c, + 0xbb, 0xfa, 0x87, 0xfb, 0x64, 0xa5, 0x7b, 0xa9, 0x4d, 0x84, 0x71, 0xd0, 0xcb, 0xc7, 0xdd, 0x9a, + 0xc7, 0x7c, 0x57, 0x04, 0xdd, 0x5b, 0x1e, 0xff, 0x44, 0xee, 0x73, 0x89, 0x94, 0x72, 0x7b, 0x05, + 0x16, 0x75, 0x6c, 0x89, 0xc0, 0x01, 0xb6, 0xb8, 0xf3, 0xe6, 0x54, 0xe9, 0x2d, 0x30, 0xf6, 0x86, + 0xe7, 0xdb, 0x0c, 0x81, 0x7e, 0xfc, 0x85, 0xaa, 0x62, 0x08, 0x16, 0x26, 0xa9, 0xf5, 0x08, 0x02, + 0xa0, 0x8d, 0x45, 0x1a, 0x04, 0xad, 0x94, 0x4f, 0x31, 0x7a, 0x90, 0xd4, 0x61, 0xea, 0xdf, 0xf0, + 0xa5, 0xf5, 0x78, 0x08, 0xf3, 0xbc, 0x1b, 0xbc, 0xee, 0xb2, 0x9b, 0x1e, 0x55, 0xfb, 0x0c, 0x17, + 0x0c, 0x67, 0xab, 0x4e, 0xe3, 0x44, 0x93, 0x28, 0xbc, 0x34, 0xf7, 0x20, 0xbd, 0x2c, 0x69, 0x69, + 0xf6, 0x4d, 0x07, 0xf8, 0x55, 0x75, 0xbc, 0x33, 0x9a, 0x8d, 0x2e, 0xcb, 0xce, 0x82, 0xa9, 0x8c, + 0xd9, 0xf4, 0x97, 0x65, 0xab, 0xf4, 0x81, 0x45, 0x9c, 0xaa, 0x34, 0xd3, 0x73, 0xff, 0x6d, 0x64, + 0x25, 0x23, 0xc8, 0x4c, 0xd1, 0x37, 0x2e, 0x5b, 0xea, 0xac, 0xaf, 0x77, 0x96, 0x78, 0x32, 0xbb, + 0xeb, 0xeb, 0xdd, 0x25, 0x59, 0xa0, 0x71, 0x5a, 0x4b, 0x5d, 0x51, 0x4c, 0x23, 0x8e, 0x00, 0x8e, + 0x78, 0x1a, 0x23, 0xb0, 0x23, 0xb9, 0x11, 0xf0, 0x5c, 0xcb, 0x74, 0xe4, 0x38, 0x55, 0x59, 0xf3, + 0xf8, 0x81, 0xd3, 0x91, 0x95, 0xa5, 0x1c, 0xa0, 0x02, 0x07, 0xd4, 0xf4, 0x7f, 0xd7, 0x8d, 0x0d, + 0x95, 0x02, 0x32, 0x43, 0x03, 0x87, 0xdb, 0x2b, 0xcc, 0x2a, 0x06, 0x16, 0xc1, 0xfd, 0x1c, 0x28, + 0x86, 0x5e, 0x4b, 0x73, 0x7d, 0xdd, 0x5c, 0xde, 0x59, 0xee, 0x7a, 0x4f, 0xdf, 0xd7, 0x10, 0x36, + 0xe0, 0x7e, 0x51, 0x03, 0xee, 0x07, 0xa7, 0xc5, 0x06, 0x9f, 0xea, 0x98, 0x8b, 0x3f, 0x59, 0x93, + 0x0e, 0x53, 0x1a, 0xec, 0x25, 0xe6, 0x1f, 0x5d, 0x7b, 0xdd, 0xc5, 0xe6, 0x86, 0x4c, 0x1d, 0x49, + 0x0f, 0xa1, 0x4e, 0x83, 0x31, 0x01, 0x90, 0x4e, 0xaf, 0xdd, 0xf4, 0xfd, 0x5d, 0xff, 0xef, 0xff, + 0xf1, 0x7f, 0xa1, 0xbb, 0x6b, 0x5b, 0x5f, 0x8a, 0x7e, 0x55, 0x5f, 0x76, 0x54, 0x8a, 0x39, 0x14, + 0x4d, 0x3c, 0x2a, 0xbc, 0xc2, 0xd3, 0xed, 0x21, 0xe0, 0x98, 0xbf, 0x42, 0xde, 0x73, 0x2a, 0xce, + 0x4c, 0x50, 0xb4, 0xd9, 0x79, 0xe1, 0x24, 0x75, 0xc7, 0xe9, 0x5b, 0xd9, 0x6d, 0xb3, 0x8e, 0xf7, + 0x21, 0x81, 0x12, 0x67, 0x8b, 0x55, 0x8c, 0xf8, 0x43, 0xf8, 0x75, 0x31, 0x4b, 0x83, 0x2f, 0x60, + 0x76, 0xc2, 0x52, 0xf2, 0x25, 0xd4, 0xb3, 0xbe, 0x05, 0x90, 0x99, 0x64, 0xef, 0xc7, 0x4f, 0x79, + 0x5a, 0xc2, 0x63, 0x83, 0xd1, 0x12, 0xc1, 0x61, 0x76, 0xfc, 0x32, 0xe8, 0x02, 0xc3, 0x03, 0x00, + 0xfd, 0xba, 0x7b, 0x9a, 0xab, 0xc7, 0xc4, 0x7f, 0x87, 0xc0, 0x8a, 0xa6, 0x67, 0x12, 0xfd, 0xd4, + 0x08, 0xac, 0x54, 0xf7, 0xf2, 0xff, 0x1e, 0xdd, 0x23, 0xd8, 0xca, 0xfe, 0xfe, 0x3d, 0xda, 0x92, + 0xf1, 0xd9, 0x04, 0x05, 0x42, 0x00, 0xf3, 0xa1, 0x37, 0x17, 0xc6, 0xaa, 0xe5, 0x8c, 0x14, 0x2d, + 0x09, 0xb6, 0x13, 0xf5, 0xe7, 0x7b, 0x73, 0x99, 0x95, 0x12, 0x85, 0x1f, 0x78, 0xf2, 0xd3, 0xfc, + 0x19, 0xa1, 0x14, 0xf0, 0x61, 0xe8, 0xe6, 0x20, 0x33, 0x2a, 0x21, 0xf1, 0xec, 0x27, 0x53, 0x20, + 0x6b, 0xc4, 0xbb, 0xf2, 0x0d, 0x4f, 0x89, 0x8a, 0xc9, 0xb0, 0xef, 0x88, 0x24, 0x63, 0xef, 0xd3, + 0xf2, 0xe2, 0x1a, 0x93, 0x5c, 0x6d, 0x3c, 0xd6, 0xfe, 0xa7, 0xb5, 0x61, 0xbc, 0x42, 0xdf, 0x8b, + 0xc1, 0x73, 0xf9, 0xe1, 0x7b, 0x97, 0x42, 0xd9, 0x73, 0xe3, 0x17, 0xbd, 0x61, 0xd2, 0x89, 0x32, + 0x4b, 0x00, 0x52, 0x4a, 0x2c, 0xab, 0xfb, 0xaa, 0xb5, 0x7f, 0xd1, 0x1b, 0x20, 0x97, 0x57, 0x9e, + 0x47, 0xc9, 0x84, 0x37, 0x0e, 0xcc, 0xb8, 0x33, 0x95, 0x97, 0xc6, 0x84, 0x58, 0x9e, 0xd3, 0x1b, + 0xd7, 0xaa, 0x3a, 0x7e, 0x9c, 0x67, 0xdb, 0xbb, 0xda, 0x0e, 0xaf, 0xda, 0xe2, 0x4f, 0x60, 0x6a, + 0xa1, 0xa2, 0xba, 0xd6, 0x58, 0x56, 0xb2, 0xf5, 0xa6, 0x77, 0x42, 0x65, 0xbd, 0xef, 0xf8, 0x84, + 0x2a, 0x30, 0x9c, 0x5a, 0xfe, 0xbc, 0xf6, 0x2f, 0x46, 0x68, 0x05, 0x1f, 0xe2, 0x41, 0xef, 0x4a, + 0x82, 0xfb, 0x30, 0xcf, 0xe2, 0x5e, 0x97, 0xbb, 0x7e, 0xee, 0x58, 0x2a, 0xee, 0x12, 0x2d, 0xc9, + 0x6d, 0x99, 0x04, 0x09, 0xb2, 0x34, 0xff, 0xc8, 0xfb, 0x16, 0xfd, 0x8a, 0x32, 0xcd, 0xec, 0xaa, + 0xcc, 0xdc, 0xaa, 0xcc, 0x3c, 0x66, 0x7a, 0xdf, 0x36, 0x48, 0x2c, 0x29, 0x75, 0xbd, 0x02, 0xc2, + 0xc1, 0x8a, 0xbc, 0x1d, 0x7a, 0xd5, 0x40, 0xf0, 0xc1, 0x84, 0x25, 0xc5, 0xee, 0xc5, 0x24, 0xff, + 0x01, 0x03, 0xee, 0xde, 0x78, 0xe6, 0x4b, 0x9c, 0xe0, 0xa1, 0x93, 0x85, 0xfd, 0x2b, 0x0f, 0x6c, + 0x74, 0xf7, 0x8a, 0x55, 0x69, 0x2b, 0x5a, 0x5c, 0x8d, 0x66, 0xf3, 0x26, 0xb6, 0xfc, 0x80, 0x4c, + 0x27, 0x0b, 0xe5, 0x09, 0xde, 0xc9, 0x1f, 0x5b, 0x9c, 0x7d, 0x26, 0x28, 0xae, 0x01, 0x4a, 0x47, + 0x50, 0xbc, 0x68, 0x81, 0xf8, 0xa6, 0x96, 0xf5, 0x86, 0x7d, 0x5e, 0x62, 0x65, 0x5d, 0xfb, 0xbf, + 0x50, 0x77, 0xbc, 0xa2, 0x6e, 0x6c, 0x85, 0x97, 0xd5, 0x8d, 0xad, 0xa0, 0xa6, 0xd5, 0x6f, 0xaf, + 0xac, 0x4b, 0xf0, 0x7b, 0x00, 0xb1, 0x35, 0x5f, 0x3b, 0xf6, 0xc6, 0x64, 0x45, 0x3d, 0xfa, 0x39, + 0xa6, 0x68, 0x4d, 0xee, 0x90, 0xbd, 0xfb, 0x48, 0xef, 0xa2, 0xb4, 0xec, 0xc4, 0x82, 0xbe, 0x1a, + 0x9d, 0xbf, 0xa1, 0xdb, 0xe7, 0x02, 0xa7, 0xb5, 0xb4, 0xb8, 0x70, 0xff, 0x62, 0xd7, 0x89, 0x32, + 0x67, 0x90, 0xe7, 0xa2, 0xfe, 0xf9, 0xc3, 0xf7, 0x14, 0x11, 0xb6, 0xf6, 0xdb, 0x74, 0xc9, 0xe6, + 0xb7, 0xc9, 0x99, 0xfb, 0x70, 0x51, 0x0f, 0xe0, 0x84, 0x33, 0x7e, 0xf3, 0x67, 0xa5, 0xf8, 0x96, + 0x9c, 0x0f, 0x95, 0x10, 0xd6, 0x3e, 0x0a, 0xdd, 0xcf, 0x95, 0x5c, 0x2e, 0x9b, 0x39, 0x75, 0x3a, + 0xea, 0xf0, 0xc4, 0xd3, 0xca, 0xa8, 0x4a, 0x91, 0xef, 0xa5, 0xa4, 0x16, 0xb6, 0x19, 0x22, 0x3a, + 0x1f, 0xd9, 0xca, 0xad, 0xaf, 0xd3, 0xfb, 0x3b, 0x96, 0x16, 0x29, 0xd2, 0xbd, 0x2b, 0x74, 0xe3, + 0xae, 0xd6, 0x3d, 0x85, 0xd0, 0x69, 0x48, 0x2d, 0x29, 0x66, 0xa9, 0xc7, 0xc8, 0x73, 0x9b, 0x62, + 0x49, 0x64, 0x8d, 0x0f, 0xb6, 0x47, 0x17, 0x45, 0x3a, 0x7f, 0x61, 0x9c, 0xa7, 0xeb, 0x49, 0x68, + 0xea, 0xae, 0x18, 0xf8, 0xde, 0x94, 0x1f, 0xf3, 0xa8, 0xe2, 0x87, 0x37, 0x19, 0x38, 0x0b, 0x83, + 0x6f, 0x2f, 0x80, 0x0c, 0x0d, 0xbe, 0xcb, 0x31, 0xab, 0x46, 0xdf, 0xbb, 0x95, 0x94, 0x7d, 0xfb, + 0x91, 0xdd, 0x39, 0xe4, 0x9f, 0x5c, 0xff, 0x1b, 0xda, 0xa9, 0x9e, 0x9c, 0xe9, 0x2b, 0x16, 0x76, + 0xbc, 0xc1, 0x82, 0x6e, 0x22, 0x5f, 0x2a, 0x16, 0xf4, 0xda, 0xc1, 0x99, 0x14, 0x40, 0xf1, 0xec, + 0x66, 0x12, 0xb3, 0x2f, 0xc2, 0x6f, 0x87, 0x30, 0x9f, 0xbf, 0x3b, 0x66, 0xd4, 0x42, 0x0c, 0xc6, + 0xcc, 0x30, 0x9d, 0xf0, 0x05, 0x30, 0xfc, 0x27, 0x88, 0x20, 0x93, 0xdb, 0x6c, 0xad, 0x11, 0x6e, + 0x27, 0x84, 0xee, 0x6c, 0x82, 0xc2, 0xe7, 0x7e, 0x26, 0xef, 0xf7, 0xef, 0xac, 0xff, 0x0c, 0x19, + 0x5f, 0x70, 0x4b, 0x14, 0x6f, 0xc4, 0xcd, 0xff, 0x0c, 0x94, 0x66, 0x99, 0xee, 0x10, 0xff, 0xfe, + 0xcd, 0x82, 0x34, 0x30, 0x8f, 0xfd, 0x0d, 0x4a, 0xc0, 0xfa, 0xb8, 0x55, 0x97, 0xa3, 0xa9, 0x59, + 0xaa, 0x6a, 0x2f, 0x61, 0xab, 0x2a, 0x59, 0x7e, 0x19, 0x82, 0x6b, 0xfa, 0xeb, 0x9f, 0x53, 0xfc, + 0xd5, 0x7a, 0x24, 0x66, 0x67, 0xf1, 0x1e, 0xe3, 0xae, 0x3a, 0xfe, 0x11, 0x3d, 0xa8, 0xe5, 0xdd, + 0x64, 0xcc, 0x11, 0x59, 0x4d, 0x2a, 0x8b, 0xa6, 0xc2, 0x72, 0x3c, 0xab, 0x4b, 0xba, 0x56, 0xfb, + 0x13, 0x8c, 0xbc, 0xc3, 0x4a, 0x1f, 0xa2, 0xf3, 0x7f, 0xfe, 0xdf, 0x88, 0xce, 0xfa, 0x7a, 0x28, + 0xed, 0xff, 0xf9, 0x9b, 0x24, 0xe6, 0x94, 0x47, 0x77, 0x85, 0xb8, 0xc6, 0xcb, 0xf9, 0x98, 0x6f, + 0x98, 0x2d, 0x40, 0xf4, 0xb3, 0xa2, 0x8b, 0x77, 0x91, 0x78, 0x57, 0x86, 0xd0, 0x70, 0x0f, 0x50, + 0x30, 0x50, 0x6e, 0xb8, 0xe7, 0x57, 0x00, 0x13, 0x91, 0x16, 0x44, 0x77, 0xda, 0x63, 0x42, 0x36, + 0xa7, 0x49, 0x7a, 0xe4, 0xdf, 0x4f, 0xc1, 0x4f, 0x9a, 0x26, 0x45, 0x7f, 0x46, 0x6b, 0xaa, 0xb9, + 0x4d, 0xff, 0xe2, 0x1d, 0xb1, 0xfe, 0x2e, 0x3f, 0x46, 0x16, 0xd9, 0x60, 0x2c, 0xe0, 0x59, 0x10, + 0x41, 0x4c, 0xd9, 0x6e, 0x10, 0x8e, 0x16, 0x3e, 0xe0, 0xfd, 0x8b, 0x7d, 0x14, 0x96, 0x7e, 0x5b, + 0x93, 0xa8, 0xf4, 0xe6, 0x41, 0xc4, 0x02, 0x2f, 0x73, 0x4c, 0x6b, 0xc3, 0x39, 0xdd, 0x21, 0xc1, + 0xad, 0x01, 0xd7, 0x31, 0x19, 0x7c, 0x2d, 0x73, 0x51, 0x43, 0x61, 0xfd, 0xa1, 0x9d, 0x89, 0x2c, + 0x8b, 0xdc, 0x05, 0x99, 0x43, 0xf3, 0x92, 0x11, 0x87, 0xce, 0x42, 0x14, 0xca, 0xba, 0x77, 0x4d, + 0x9f, 0x7f, 0xfd, 0x56, 0x8d, 0x8d, 0x1d, 0x74, 0x8d, 0xe6, 0x87, 0x8f, 0xad, 0x80, 0x7d, 0xea, + 0xc4, 0x24, 0xd7, 0xa6, 0x75, 0x7b, 0xab, 0xb0, 0xb9, 0xbe, 0x6e, 0x7f, 0x2f, 0x96, 0x7f, 0xff, + 0xb6, 0xb7, 0x4a, 0x05, 0x7c, 0xae, 0x64, 0xf1, 0xb9, 0x52, 0xc2, 0xe7, 0x6c, 0x2e, 0x8f, 0x2f, + 0xb9, 0x62, 0x71, 0x5b, 0xac, 0x03, 0x6a, 0x5b, 0xa2, 0xf4, 0x56, 0xd7, 0x69, 0x25, 0x9d, 0x56, + 0xd2, 0x69, 0x25, 0x9d, 0x56, 0xd2, 0x69, 0x25, 0x9d, 0x55, 0xd2, 0xf9, 0x4a, 0xee, 0xe5, 0xa3, + 0x89, 0x04, 0xc5, 0xce, 0xbb, 0xe8, 0x74, 0x5b, 0xfc, 0x2e, 0x56, 0xa7, 0xc9, 0x94, 0xdb, 0xa5, + 0x88, 0x4b, 0x9f, 0x6e, 0x54, 0x86, 0xcb, 0xbe, 0x25, 0x53, 0xac, 0x1f, 0xec, 0xfa, 0x41, 0x59, + 0x9a, 0xe9, 0x2c, 0x0a, 0x03, 0xbf, 0xc3, 0xc8, 0x2d, 0x16, 0x43, 0xe5, 0x85, 0xdc, 0xb7, 0x12, + 0x94, 0x60, 0x13, 0xfb, 0xf7, 0x6f, 0x7f, 0x1f, 0xfc, 0xff, 0x2b, 0xee, 0x4a, 0x9b, 0xdb, 0x36, + 0xd2, 0xf4, 0xf7, 0xfd, 0x15, 0x14, 0x92, 0x58, 0x44, 0x04, 0xc9, 0x20, 0x65, 0x65, 0x3c, 0xa0, + 0x20, 0x96, 0xe3, 0x63, 0x47, 0x35, 0x8e, 0xa3, 0x8d, 0x3c, 0xc9, 0xb8, 0x54, 0xaa, 0x15, 0x49, + 0x35, 0x25, 0x94, 0x21, 0x80, 0x01, 0xa0, 0xc3, 0xa1, 0xf8, 0xdf, 0xf7, 0x3d, 0xfa, 0x04, 0xc0, + 0x43, 0xf1, 0xcc, 0x6c, 0x55, 0x62, 0x11, 0x8d, 0xee, 0x46, 0xdf, 0xdd, 0xef, 0xd1, 0xcf, 0x73, + 0x5f, 0x1e, 0x86, 0xb6, 0x66, 0x54, 0x20, 0xac, 0xe7, 0x50, 0x6b, 0x83, 0xef, 0x11, 0x06, 0xa6, + 0x10, 0x74, 0x53, 0xa2, 0x4b, 0x30, 0xff, 0x5e, 0xe0, 0xdd, 0x13, 0x34, 0xf0, 0x3d, 0x12, 0x7f, + 0x78, 0x3b, 0x35, 0x6a, 0x05, 0x43, 0x2d, 0x40, 0x89, 0x07, 0xf0, 0x35, 0x62, 0xe7, 0xf8, 0x4d, + 0x8c, 0x4f, 0xa1, 0x2f, 0x05, 0x91, 0xd4, 0xed, 0x8d, 0x93, 0x6c, 0x54, 0x7c, 0xf9, 0x48, 0x16, + 0x2a, 0xc2, 0xaa, 0x1f, 0xdf, 0xc2, 0xfa, 0x5c, 0x78, 0xc1, 0x7d, 0xb9, 0x87, 0xb8, 0x03, 0x65, + 0x89, 0x4a, 0x47, 0xd4, 0xf4, 0x62, 0x07, 0x4b, 0xde, 0x32, 0xad, 0xfb, 0x86, 0xc9, 0x48, 0x86, + 0xd5, 0x1f, 0x29, 0x91, 0xe6, 0xb5, 0xb0, 0xc0, 0xc2, 0x38, 0x81, 0xcf, 0x36, 0x62, 0x42, 0x57, + 0xf0, 0xe7, 0x0e, 0x16, 0xb4, 0x05, 0x02, 0xe7, 0x07, 0xd6, 0x03, 0xf3, 0x6e, 0x58, 0xbc, 0xa3, + 0x8a, 0x59, 0x24, 0xa8, 0x6b, 0xab, 0x15, 0x84, 0xfb, 0xa6, 0x30, 0xdf, 0xa9, 0x9e, 0x6a, 0xb0, + 0xee, 0x23, 0xce, 0x40, 0x39, 0xec, 0x1a, 0x28, 0x24, 0x98, 0x57, 0x4c, 0xca, 0xfa, 0xec, 0x99, + 0x03, 0xfd, 0x52, 0xfa, 0x7e, 0x64, 0x61, 0x13, 0xa8, 0xa3, 0x17, 0x41, 0x6f, 0x0e, 0xe5, 0xdf, + 0xa8, 0x1a, 0x38, 0xab, 0x46, 0x19, 0x64, 0x08, 0x56, 0x3f, 0xba, 0x3c, 0x25, 0x7c, 0xa1, 0x0c, + 0x96, 0x97, 0x05, 0x37, 0x2c, 0xd1, 0x42, 0x53, 0xb3, 0x3e, 0x19, 0xa2, 0x9c, 0x69, 0x4a, 0x77, + 0x76, 0x0e, 0x0f, 0x1c, 0x64, 0x48, 0x1e, 0x57, 0x41, 0xef, 0x00, 0x75, 0xf7, 0xf7, 0x4c, 0x5b, + 0x22, 0x3f, 0x86, 0x08, 0xed, 0xf4, 0x2d, 0x45, 0x70, 0x5a, 0x88, 0xdf, 0xcb, 0xf7, 0xe2, 0x6a, + 0x94, 0xc6, 0xc8, 0x11, 0x6a, 0x39, 0x29, 0xa8, 0x92, 0x2a, 0x0c, 0x75, 0x9a, 0xd4, 0x72, 0x50, + 0xb2, 0x3d, 0x5d, 0xec, 0x95, 0xb7, 0x93, 0x09, 0x0c, 0x0b, 0x15, 0x1a, 0x0e, 0x88, 0xda, 0x16, + 0xbd, 0x94, 0x83, 0xba, 0x64, 0x2a, 0xd5, 0x90, 0x02, 0x6f, 0xd2, 0x13, 0xf3, 0xad, 0xd8, 0xcb, + 0x52, 0x8c, 0xc8, 0x34, 0xb5, 0xf4, 0x74, 0x79, 0x5b, 0x48, 0xb2, 0x5a, 0x7a, 0xac, 0x38, 0xea, + 0xbb, 0x11, 0xa2, 0xc6, 0x63, 0xc0, 0x14, 0x7e, 0x19, 0x46, 0x5c, 0xb1, 0x77, 0x7b, 0x39, 0xc3, + 0x0b, 0x70, 0xd9, 0x65, 0x8d, 0xa4, 0x16, 0x04, 0x94, 0x94, 0x96, 0xfc, 0x59, 0x19, 0xe1, 0x6f, + 0xe4, 0x94, 0x95, 0xeb, 0x33, 0x91, 0x5c, 0x73, 0xe1, 0xaa, 0x4a, 0x97, 0xaa, 0x2a, 0x9e, 0xf7, + 0xc2, 0xa0, 0x05, 0x8f, 0x42, 0x0e, 0x8e, 0x10, 0x56, 0xa6, 0x50, 0x12, 0x0e, 0x6a, 0x89, 0x30, + 0x36, 0x54, 0xbb, 0x9a, 0x4f, 0xb7, 0xe6, 0xf1, 0xd6, 0x35, 0x40, 0x14, 0xb6, 0xef, 0x1b, 0xb4, + 0x5d, 0x48, 0x5a, 0x2c, 0x7a, 0x7d, 0x56, 0x9d, 0x23, 0x7f, 0x8b, 0xb9, 0x67, 0x4a, 0x8b, 0x3b, + 0x2a, 0xeb, 0x7a, 0x8c, 0x28, 0x4c, 0x31, 0xe0, 0x64, 0x04, 0xc7, 0xa9, 0x43, 0x5e, 0xf9, 0x2b, + 0x5c, 0x2a, 0xfb, 0xf2, 0x84, 0xe4, 0x50, 0xc4, 0x91, 0xd2, 0x72, 0x72, 0x66, 0x65, 0x7c, 0x2e, + 0xcb, 0xfd, 0x18, 0x6f, 0x6d, 0x75, 0x7b, 0xcf, 0x52, 0x23, 0x29, 0x53, 0x48, 0x5f, 0x86, 0x40, + 0x4d, 0xe8, 0xf9, 0xc5, 0x33, 0x0d, 0x6f, 0xd1, 0x35, 0x1f, 0xaf, 0xf2, 0xd9, 0xae, 0xf5, 0x34, + 0x2a, 0x2a, 0xff, 0x7b, 0xf7, 0xf5, 0xa7, 0xa1, 0xfb, 0x58, 0x8b, 0xfe, 0x29, 0xea, 0xc1, 0x19, + 0x54, 0x36, 0x93, 0xfc, 0x7b, 0x38, 0x1a, 0x8e, 0x22, 0xf9, 0x5b, 0x5b, 0x32, 0x30, 0x51, 0x49, + 0x16, 0x1d, 0x54, 0xf4, 0xa1, 0x23, 0x5d, 0x5b, 0xfd, 0x46, 0x56, 0xc5, 0x1a, 0xf5, 0xaa, 0x55, + 0x4b, 0xd5, 0x6a, 0x81, 0x23, 0x78, 0xa4, 0x76, 0x24, 0xcb, 0x4a, 0xf6, 0x21, 0xef, 0xa8, 0x2e, + 0x97, 0x86, 0x31, 0xa3, 0x2c, 0x82, 0x47, 0x02, 0x78, 0xbe, 0xb2, 0xb6, 0xde, 0x36, 0x57, 0x9d, + 0x3d, 0x18, 0x3c, 0x30, 0x9c, 0xa0, 0xfb, 0xdf, 0x8e, 0xa4, 0x39, 0x6c, 0xc5, 0xc9, 0x42, 0xe1, + 0x26, 0xb5, 0x09, 0x3f, 0xc6, 0xc1, 0x25, 0x91, 0xdf, 0xdc, 0xed, 0x0d, 0xc4, 0x11, 0xba, 0xbb, + 0xec, 0xee, 0xfa, 0x89, 0xe3, 0x00, 0x12, 0x8f, 0x50, 0x83, 0x01, 0x41, 0x44, 0xc4, 0xe4, 0x38, + 0x80, 0x98, 0x57, 0xbd, 0xda, 0xab, 0xb1, 0x79, 0xd5, 0x3f, 0x0f, 0xba, 0x7a, 0x34, 0x3c, 0x6e, + 0x35, 0xc8, 0x27, 0x09, 0xb5, 0xc9, 0x4e, 0x7b, 0x6f, 0xd2, 0x22, 0x73, 0x93, 0x24, 0xf8, 0x4c, + 0x08, 0xb8, 0x9b, 0x5c, 0x9f, 0x35, 0x85, 0x08, 0xb2, 0x47, 0x2b, 0xd5, 0x2c, 0xa4, 0x99, 0x54, + 0x78, 0x2a, 0x83, 0x3f, 0x74, 0x06, 0xb6, 0xd5, 0x32, 0xaf, 0xf4, 0x2c, 0xa4, 0xf7, 0x7e, 0xd0, + 0xd4, 0x5a, 0xe9, 0xf7, 0xe5, 0x43, 0xd0, 0xae, 0xb3, 0xd2, 0x31, 0x12, 0x27, 0x06, 0x6a, 0xac, + 0x4c, 0xe6, 0xbd, 0x21, 0xfe, 0x13, 0x85, 0x41, 0x4d, 0x6d, 0x65, 0x62, 0xf4, 0x31, 0x46, 0xbf, + 0x16, 0x63, 0xdf, 0x8e, 0xb1, 0x8f, 0x31, 0xf6, 0x55, 0x0c, 0x92, 0xc1, 0x7e, 0xee, 0xd9, 0x3e, + 0xe0, 0x5b, 0xa3, 0xbd, 0xbc, 0x67, 0xbf, 0xed, 0xd7, 0xdf, 0xf6, 0xed, 0xb7, 0xfb, 0xf5, 0xb7, + 0xfb, 0x30, 0xe5, 0x89, 0xc3, 0x80, 0xe0, 0x05, 0xe5, 0x6f, 0xde, 0x4c, 0x73, 0xf4, 0x04, 0x54, + 0x3e, 0x19, 0xea, 0x05, 0x3b, 0x47, 0x84, 0x08, 0xf0, 0x62, 0xac, 0xbd, 0x37, 0x68, 0xa5, 0xe9, + 0x4c, 0x35, 0x0e, 0xd1, 0x96, 0x83, 0x06, 0xd3, 0x23, 0x18, 0x19, 0x84, 0x1f, 0x13, 0x59, 0x7e, + 0x7b, 0x75, 0xdd, 0x29, 0x67, 0x70, 0x90, 0x40, 0x6c, 0xe7, 0x12, 0x31, 0xb5, 0x19, 0x5c, 0xb0, + 0x96, 0x84, 0xd0, 0x65, 0x24, 0xe6, 0x3c, 0x7e, 0x41, 0xda, 0xc6, 0x9d, 0x38, 0x84, 0x32, 0xf3, + 0x53, 0xc2, 0x74, 0xf5, 0x49, 0xc1, 0x8c, 0x36, 0x6e, 0x94, 0xbf, 0x62, 0x94, 0x57, 0x56, 0xc9, + 0x3a, 0x54, 0x8d, 0x0e, 0x0c, 0xb8, 0x4e, 0x3e, 0x81, 0x55, 0x1c, 0xcd, 0xf2, 0x0b, 0x6b, 0x6e, + 0xd2, 0xde, 0x4e, 0x20, 0x47, 0x14, 0x71, 0xc7, 0x8b, 0xe0, 0x21, 0x27, 0xf3, 0xb2, 0x9a, 0xc8, + 0x16, 0x69, 0xf9, 0x08, 0x4e, 0x1a, 0xa9, 0xcd, 0x69, 0x3e, 0xda, 0x9b, 0x3e, 0x04, 0x35, 0x87, + 0x3b, 0x77, 0x76, 0x3b, 0x6c, 0xb5, 0x0d, 0x79, 0x54, 0x1a, 0x1d, 0x37, 0x75, 0xfb, 0x75, 0xad, + 0x91, 0x75, 0xf7, 0xdf, 0xa0, 0x34, 0x41, 0xe4, 0x53, 0x82, 0x6c, 0x10, 0x67, 0xe7, 0x51, 0x69, + 0x3b, 0xfd, 0x92, 0xe3, 0x70, 0x26, 0x53, 0xb0, 0x33, 0x2e, 0xa2, 0x46, 0x62, 0x3c, 0xfc, 0x6b, + 0x39, 0xfd, 0x06, 0x23, 0x1d, 0xef, 0xb0, 0xaf, 0x62, 0xf6, 0x64, 0xcc, 0x9e, 0x13, 0x33, 0x31, + 0x31, 0xf7, 0x55, 0xcc, 0xbe, 0x8c, 0xe9, 0x3a, 0x12, 0x6b, 0x67, 0x69, 0x58, 0x6f, 0xe0, 0xb8, + 0x3d, 0x28, 0xd1, 0xaf, 0x8e, 0x07, 0x9f, 0x35, 0x27, 0x48, 0xe4, 0x28, 0xec, 0x10, 0x62, 0xf9, + 0xc4, 0xe0, 0xc1, 0x56, 0x85, 0x07, 0xf2, 0xae, 0x80, 0xe3, 0xf5, 0xcb, 0x61, 0x3f, 0x3a, 0x00, + 0xa1, 0x38, 0x55, 0x2d, 0x54, 0xb2, 0x77, 0x72, 0x0a, 0x2b, 0xfc, 0xb0, 0xeb, 0x84, 0x6e, 0xa9, + 0xe0, 0xc2, 0x12, 0x60, 0x30, 0x20, 0xb2, 0x03, 0x42, 0xe2, 0xcf, 0xe0, 0x5e, 0x82, 0x51, 0x8b, + 0x8b, 0x43, 0xd4, 0xb3, 0xc3, 0x12, 0xbd, 0x24, 0x44, 0x1e, 0xbb, 0x73, 0x7a, 0x3b, 0xdd, 0x72, + 0x17, 0x36, 0xd2, 0x7c, 0x05, 0xae, 0x60, 0xbe, 0x44, 0xab, 0x03, 0x5d, 0xaf, 0x0b, 0x79, 0x20, + 0x65, 0xbe, 0xe9, 0x43, 0x3e, 0xab, 0x5a, 0x5d, 0xea, 0xf1, 0x74, 0x62, 0xb5, 0x20, 0x3b, 0x28, + 0xee, 0x93, 0x67, 0xe2, 0xc1, 0x8e, 0x38, 0x4c, 0xb5, 0xeb, 0x23, 0x39, 0x68, 0xa7, 0x67, 0x10, + 0x78, 0x2e, 0xc1, 0x14, 0x31, 0xcb, 0x1d, 0xb1, 0xee, 0x8e, 0x05, 0xc4, 0x92, 0xcd, 0x2c, 0x6c, + 0x31, 0x0f, 0xda, 0x4e, 0x67, 0xe7, 0xfd, 0x4c, 0xf7, 0x05, 0xbc, 0x88, 0x9f, 0xe1, 0x80, 0x36, + 0x2e, 0xab, 0xa2, 0x1b, 0x06, 0xbd, 0x1f, 0xa0, 0x9e, 0x4b, 0xbe, 0x65, 0x57, 0xd9, 0x5c, 0x08, + 0x68, 0x56, 0x94, 0xe2, 0xc9, 0x5a, 0x22, 0x68, 0x29, 0xde, 0xc9, 0x83, 0x85, 0x51, 0x32, 0x37, + 0xb9, 0xf8, 0xba, 0x0d, 0x17, 0x0c, 0x6b, 0xac, 0x94, 0x48, 0x44, 0xc0, 0xe8, 0x7c, 0x3e, 0xde, + 0x6b, 0x38, 0x18, 0x28, 0x47, 0xdf, 0x9a, 0x2e, 0xe3, 0x1b, 0xd6, 0x97, 0x75, 0x6c, 0x3d, 0x16, + 0x2b, 0xbf, 0x1c, 0x45, 0x15, 0x48, 0x35, 0xc8, 0xdb, 0xbb, 0x08, 0xfe, 0x72, 0x20, 0x75, 0x61, + 0x13, 0x74, 0xd8, 0x9a, 0xe1, 0x3f, 0x88, 0x06, 0x76, 0x1b, 0xe3, 0x66, 0x54, 0xeb, 0x98, 0x96, + 0xad, 0xd7, 0xf1, 0x25, 0x65, 0x1b, 0x9f, 0x8e, 0x05, 0x2d, 0x36, 0x20, 0x57, 0x2d, 0x35, 0xd7, + 0xb9, 0x1b, 0x71, 0x2a, 0xd3, 0x12, 0x31, 0x5d, 0xde, 0x77, 0x53, 0x47, 0x87, 0x08, 0xe5, 0xa1, + 0xc1, 0xce, 0x29, 0xf1, 0x2b, 0x77, 0xf4, 0xdb, 0x74, 0x55, 0x1f, 0xc6, 0x90, 0xd5, 0xbd, 0x77, + 0xc1, 0x1d, 0xc7, 0xc6, 0x7b, 0x3f, 0x3b, 0xf1, 0x6c, 0xe7, 0x6e, 0x07, 0xa4, 0xd5, 0x1d, 0x5a, + 0x44, 0x66, 0xcc, 0xe6, 0xc2, 0xbd, 0x36, 0x75, 0x27, 0x8a, 0x18, 0x7a, 0xef, 0x1e, 0x68, 0x7a, + 0xc0, 0xaf, 0x1f, 0xaf, 0x70, 0x42, 0x80, 0xe4, 0x07, 0x87, 0xcb, 0xdb, 0x2d, 0xc4, 0xf7, 0xb6, + 0xb6, 0x6a, 0x01, 0xe3, 0x0b, 0x9d, 0xa6, 0x30, 0x93, 0x6a, 0xe8, 0x54, 0xc5, 0xb6, 0xdc, 0xd6, + 0xea, 0xd1, 0x0b, 0xec, 0x0f, 0x7a, 0x30, 0xcf, 0xc4, 0x4e, 0x0f, 0x41, 0x3a, 0x9f, 0xd2, 0x14, + 0x6d, 0x59, 0x04, 0xcb, 0xcb, 0xe8, 0x2f, 0x54, 0x87, 0xbc, 0x6f, 0x20, 0xd0, 0x4e, 0xa8, 0xe7, + 0xaf, 0xb5, 0x8a, 0x1d, 0x09, 0x82, 0x6e, 0x8c, 0xc2, 0x9d, 0x8d, 0x93, 0xda, 0x04, 0x85, 0x8c, + 0x54, 0x49, 0xed, 0xd2, 0x44, 0x42, 0x77, 0x26, 0xd8, 0x84, 0x8b, 0xbf, 0x7d, 0xc6, 0x93, 0xbe, + 0xae, 0x69, 0x43, 0xbc, 0x24, 0x43, 0x5f, 0x9e, 0x5d, 0x56, 0x83, 0x04, 0x76, 0x2e, 0x98, 0xca, + 0xa8, 0x9e, 0x62, 0xcf, 0x57, 0xf6, 0xcf, 0x71, 0xdc, 0x78, 0x35, 0x20, 0xfb, 0x31, 0x1c, 0x7d, + 0xa1, 0xcb, 0xf9, 0x67, 0x92, 0xa1, 0xdf, 0x78, 0xa0, 0xe7, 0x10, 0x25, 0x91, 0xc3, 0x62, 0x8c, + 0x6d, 0xeb, 0x43, 0x1d, 0xd0, 0x25, 0xda, 0x7a, 0x01, 0x5b, 0x2d, 0xa4, 0x1f, 0xc3, 0x5a, 0x65, + 0x57, 0x66, 0x4b, 0xd6, 0x66, 0x78, 0x63, 0x35, 0x10, 0x06, 0x44, 0x76, 0xc0, 0x76, 0x03, 0xdf, + 0x4d, 0xa4, 0xf2, 0x2a, 0xac, 0x8d, 0x5c, 0x41, 0xe4, 0xd2, 0xf2, 0xe2, 0xe2, 0x78, 0x9f, 0x1c, + 0x08, 0x3b, 0x24, 0x8a, 0x76, 0xa4, 0x7d, 0x62, 0x9b, 0x87, 0xce, 0xbf, 0x23, 0x6b, 0x3a, 0x6b, + 0xe0, 0x2d, 0xc2, 0xed, 0xa0, 0xd1, 0x0d, 0xac, 0x7e, 0xc2, 0xd6, 0xb5, 0x64, 0xd8, 0xde, 0xc0, + 0x12, 0x61, 0xcd, 0x15, 0x30, 0x8b, 0x4d, 0xe2, 0x69, 0x42, 0xf6, 0x17, 0x10, 0xb2, 0xb7, 0x60, + 0x28, 0xea, 0x4f, 0xf8, 0x73, 0x4b, 0x31, 0xf1, 0xf8, 0x68, 0xeb, 0x2c, 0x1a, 0xd4, 0x55, 0xf7, + 0xb0, 0xb3, 0xdd, 0xa3, 0xd2, 0x1d, 0x04, 0xfc, 0xae, 0x96, 0xc4, 0x83, 0x3a, 0x14, 0xff, 0x22, + 0xd8, 0x17, 0xfb, 0xbe, 0x22, 0x4c, 0xe7, 0x28, 0xb1, 0x4c, 0x8b, 0x72, 0xf8, 0x17, 0x12, 0xc4, + 0xe3, 0x38, 0xd6, 0xea, 0x9a, 0xbd, 0x9f, 0x4f, 0xde, 0x7e, 0x80, 0x23, 0x04, 0xcc, 0xec, 0x59, + 0x5e, 0x22, 0x2c, 0x00, 0xba, 0x02, 0x92, 0x4c, 0x8e, 0x1e, 0x5a, 0x77, 0xc8, 0x07, 0x09, 0x02, + 0x2f, 0x94, 0xc5, 0xe6, 0xa7, 0x42, 0x8d, 0xc9, 0x5e, 0x96, 0xdf, 0x77, 0xfd, 0xe7, 0x08, 0x2e, + 0x2b, 0xc5, 0x47, 0x2d, 0x0b, 0x0f, 0x68, 0xbb, 0x83, 0x05, 0x3d, 0xb9, 0x84, 0x0d, 0x94, 0x7f, + 0x28, 0x0e, 0x46, 0x5b, 0x7a, 0x56, 0xac, 0xb0, 0x7a, 0x9c, 0xf6, 0xc2, 0xef, 0x95, 0x47, 0xcd, + 0x60, 0xb4, 0x05, 0xc2, 0x34, 0x5d, 0x37, 0x30, 0x09, 0xe2, 0x91, 0xbf, 0xe8, 0x4a, 0x4d, 0x90, + 0xc1, 0xb5, 0x16, 0x16, 0x1b, 0xcd, 0xfe, 0x8b, 0x90, 0xe4, 0x5a, 0x24, 0x7f, 0xab, 0xf4, 0x8e, + 0x8b, 0xfc, 0x54, 0x4a, 0xf8, 0x83, 0x41, 0x6d, 0x60, 0x44, 0xb4, 0x44, 0x88, 0x68, 0x22, 0x2a, + 0xe1, 0xa2, 0x1c, 0xde, 0x97, 0xa4, 0x0d, 0xe8, 0x42, 0xbf, 0x6c, 0xcf, 0xbd, 0x3b, 0x2f, 0x42, + 0x28, 0xd5, 0xc5, 0xb6, 0x1f, 0xb5, 0x79, 0x53, 0x96, 0x89, 0xe5, 0x4a, 0x99, 0x05, 0xc8, 0xb3, + 0x0a, 0x5b, 0x53, 0x34, 0x47, 0x4a, 0x34, 0xf4, 0xa6, 0xde, 0x45, 0x9f, 0x53, 0x68, 0x59, 0xe4, + 0x93, 0x4c, 0x58, 0x8d, 0x46, 0x09, 0x07, 0x1d, 0x54, 0x4e, 0xa2, 0x9a, 0xe1, 0x1f, 0x1f, 0xdf, + 0xed, 0xbe, 0xf4, 0x16, 0xc1, 0x38, 0xbf, 0xfc, 0x12, 0x55, 0xb6, 0x23, 0xe6, 0x13, 0xb4, 0x5a, + 0x4f, 0x60, 0x67, 0xc0, 0xfe, 0xd9, 0x40, 0x07, 0x86, 0x83, 0xe9, 0x89, 0x6a, 0xb0, 0x2b, 0x18, + 0xe5, 0x42, 0x59, 0x4f, 0x94, 0x52, 0x87, 0x40, 0xff, 0x49, 0x2b, 0x66, 0x50, 0x3e, 0x49, 0xdf, + 0x65, 0x14, 0x64, 0x55, 0x0b, 0xc9, 0x47, 0xb5, 0x44, 0x69, 0x56, 0xe1, 0x89, 0x5d, 0x2b, 0x95, + 0xa4, 0xb2, 0x4c, 0xfe, 0x8d, 0x84, 0xc4, 0x47, 0xa7, 0x2b, 0x6b, 0x7c, 0x81, 0x88, 0x71, 0xcf, + 0x71, 0x13, 0x68, 0xa1, 0x88, 0x94, 0xcc, 0x04, 0x72, 0x96, 0xb1, 0x26, 0x6b, 0xfd, 0x8c, 0x79, + 0x7c, 0x54, 0x1a, 0x57, 0x24, 0x91, 0xec, 0x1f, 0xf8, 0x35, 0xed, 0x17, 0xc3, 0xa5, 0x5b, 0xc2, + 0x07, 0x16, 0x04, 0xd6, 0x91, 0x72, 0x06, 0x4b, 0x98, 0xf0, 0x24, 0x9f, 0xc5, 0x2a, 0x87, 0xd7, + 0xba, 0xdf, 0x24, 0xf9, 0x97, 0x68, 0x1b, 0xe0, 0x3c, 0xcf, 0x22, 0xd2, 0x90, 0x21, 0x45, 0x41, + 0xb6, 0x20, 0x6d, 0x99, 0x3d, 0xc4, 0x8d, 0xa6, 0x83, 0xd4, 0xed, 0xce, 0x63, 0x29, 0xae, 0x58, + 0x74, 0x66, 0x65, 0x3c, 0x6a, 0x9d, 0x48, 0x2f, 0x81, 0x9c, 0x1b, 0xac, 0x35, 0x09, 0xf9, 0x3e, + 0x65, 0x3d, 0x55, 0x30, 0x2d, 0xfe, 0x88, 0xb6, 0x7a, 0x44, 0x95, 0x69, 0x2d, 0x88, 0x0d, 0x17, + 0xcf, 0x0f, 0xa9, 0xc3, 0x0c, 0xd8, 0x45, 0x1d, 0xdd, 0x16, 0xfc, 0xe3, 0x0f, 0x2f, 0xb0, 0xfd, + 0x61, 0xc6, 0x33, 0x02, 0x41, 0xe7, 0x13, 0xf2, 0x27, 0x31, 0x53, 0x20, 0xf1, 0x17, 0x91, 0x14, + 0xf6, 0xed, 0x9c, 0x14, 0x77, 0x47, 0xa1, 0x05, 0x4a, 0xbc, 0xa0, 0x50, 0x64, 0x80, 0x84, 0x40, + 0xb4, 0x94, 0xc0, 0x64, 0x9a, 0xc2, 0x99, 0x51, 0xbe, 0x78, 0x73, 0x5b, 0x2c, 0x10, 0x23, 0x82, + 0x7c, 0x6b, 0x2f, 0x22, 0x8f, 0xbf, 0x72, 0xc9, 0x48, 0x07, 0x08, 0xd4, 0x8b, 0xae, 0xd7, 0xce, + 0x3d, 0xde, 0x2c, 0x8d, 0xb0, 0x09, 0xa1, 0x50, 0x8b, 0x45, 0xa3, 0xfc, 0xe8, 0x72, 0xe3, 0xd6, + 0x40, 0x6b, 0x0a, 0xb7, 0xd4, 0x2f, 0x1f, 0x0e, 0xc8, 0xe4, 0xe4, 0x4d, 0xc5, 0x27, 0xfe, 0x55, + 0xe4, 0x50, 0xca, 0x44, 0x75, 0x9f, 0x17, 0x9f, 0xb9, 0x3a, 0xb0, 0x40, 0x76, 0x30, 0x3e, 0xca, + 0xc3, 0xc4, 0xca, 0x04, 0xdb, 0x0c, 0x32, 0xb9, 0x7d, 0xc4, 0xdf, 0x5c, 0x6d, 0xe2, 0x69, 0x5a, + 0x9f, 0x4f, 0x27, 0xcd, 0xb3, 0x2b, 0x88, 0x84, 0xb9, 0xed, 0x79, 0xca, 0xf7, 0x64, 0x8e, 0x5a, + 0xcb, 0x68, 0x8e, 0x0b, 0x55, 0xa4, 0xca, 0xb5, 0x58, 0x0c, 0x2c, 0x70, 0x78, 0xea, 0x64, 0xd2, + 0x6d, 0x16, 0x08, 0x15, 0xaf, 0x0b, 0xbf, 0xa6, 0x03, 0x11, 0x9b, 0xfe, 0x2e, 0x11, 0xf7, 0x68, + 0x4f, 0x90, 0x13, 0x90, 0x8d, 0x91, 0xf4, 0x96, 0xe6, 0x20, 0x4e, 0x4d, 0xf2, 0xe1, 0x76, 0x5e, + 0x49, 0x9f, 0x73, 0x78, 0xf7, 0xfe, 0x0e, 0x87, 0xe6, 0xfb, 0x3b, 0x69, 0x74, 0x58, 0x3f, 0xa3, + 0x14, 0x93, 0x47, 0x2a, 0xbf, 0x0d, 0x7b, 0x10, 0xe6, 0x2b, 0x98, 0xef, 0xc2, 0xeb, 0xbf, 0xf1, + 0x28, 0x57, 0xa5, 0xf1, 0xf9, 0x9c, 0xde, 0x11, 0xd0, 0xba, 0x65, 0xa3, 0x3a, 0x4c, 0xa6, 0x28, + 0x6d, 0x77, 0xcc, 0x4d, 0x1d, 0xe4, 0xff, 0xf6, 0x46, 0x63, 0x98, 0xf0, 0xd1, 0x38, 0x1d, 0x65, + 0x74, 0xed, 0x85, 0x23, 0xa1, 0x7b, 0x3f, 0xbb, 0xc4, 0xca, 0x7c, 0xea, 0x86, 0x37, 0xfc, 0xd6, + 0x46, 0xf6, 0x35, 0xce, 0xa7, 0xaa, 0x1b, 0xba, 0x38, 0x7d, 0xd3, 0x61, 0x04, 0x23, 0x42, 0xa9, + 0xe8, 0xb5, 0xde, 0x45, 0xbc, 0x9d, 0x0a, 0x0e, 0xac, 0x43, 0x0f, 0xb6, 0x1d, 0x82, 0xa3, 0xf0, + 0x23, 0xa7, 0xd4, 0x8e, 0x3b, 0x58, 0xe1, 0x08, 0x52, 0xca, 0xf1, 0x59, 0x11, 0xa8, 0x06, 0x5b, + 0xdc, 0x48, 0x82, 0x9a, 0x9b, 0xb6, 0x30, 0xd8, 0xbf, 0x52, 0xd8, 0xc0, 0x08, 0x13, 0x1c, 0x76, + 0xb0, 0xa0, 0x4c, 0xfe, 0x10, 0xdd, 0x46, 0x97, 0x73, 0xa7, 0xce, 0x75, 0xa7, 0x36, 0xfb, 0xd3, + 0xe9, 0x68, 0x33, 0x42, 0x10, 0xd5, 0x1f, 0x13, 0x63, 0x77, 0x1f, 0xf3, 0x2d, 0x4d, 0x87, 0x64, + 0x57, 0x92, 0xd6, 0xc3, 0x9b, 0xd6, 0x56, 0xc6, 0x24, 0x1b, 0xb5, 0xb3, 0xdd, 0x08, 0xc7, 0x35, + 0x3f, 0x3b, 0xce, 0xc4, 0xb8, 0xc3, 0x35, 0x16, 0x24, 0x79, 0x15, 0x42, 0x0d, 0xe6, 0xda, 0x38, + 0x5e, 0x59, 0x37, 0x4a, 0x8b, 0x95, 0xa3, 0x1f, 0x3e, 0x73, 0x1e, 0xab, 0x76, 0x61, 0x2e, 0x09, + 0x87, 0x4d, 0xc1, 0xae, 0x1c, 0x45, 0x7b, 0x72, 0xed, 0x14, 0x3b, 0x83, 0x5d, 0x43, 0x99, 0x53, + 0x5b, 0x15, 0x71, 0x23, 0x42, 0xb8, 0x0e, 0xb5, 0x35, 0x84, 0x01, 0x6e, 0x61, 0xa5, 0x83, 0x9c, + 0x41, 0x1a, 0x55, 0x94, 0x20, 0x70, 0x36, 0x66, 0x6d, 0x3e, 0xaa, 0xe5, 0x6e, 0xcf, 0x38, 0xaf, + 0x07, 0xbd, 0xb0, 0xc5, 0x7b, 0x79, 0x49, 0xaa, 0xd2, 0x4e, 0x85, 0x0e, 0xce, 0x08, 0x24, 0xdc, + 0xe5, 0x72, 0xdc, 0xdc, 0x83, 0x14, 0x97, 0x59, 0x58, 0x10, 0x78, 0x7c, 0x46, 0x9f, 0x15, 0xed, + 0x1e, 0xde, 0xf8, 0x8a, 0x40, 0xcc, 0xa5, 0x85, 0x8d, 0x04, 0x81, 0x4d, 0x3b, 0x29, 0xf2, 0x34, + 0x85, 0x6f, 0xe7, 0xbf, 0x62, 0xc7, 0xcc, 0xc7, 0xe2, 0x7a, 0x74, 0x97, 0xe4, 0x45, 0xa4, 0xc9, + 0x7e, 0x69, 0xa6, 0xc1, 0x23, 0x91, 0x20, 0x2f, 0x94, 0xb3, 0x49, 0x3b, 0x16, 0xa7, 0x06, 0xda, + 0x3c, 0x6a, 0x42, 0xd8, 0x1d, 0xb5, 0x00, 0xd6, 0x69, 0x08, 0x9c, 0x72, 0x2d, 0x46, 0xdd, 0x7e, + 0xdf, 0xe0, 0x3e, 0x38, 0xf0, 0x73, 0x1f, 0xe0, 0x8c, 0x55, 0x4a, 0x1c, 0x49, 0xcc, 0xa8, 0x81, + 0x40, 0x67, 0xb0, 0xe7, 0x10, 0x30, 0x8a, 0xf8, 0x05, 0x62, 0x6f, 0xff, 0xe5, 0x77, 0x4c, 0xc9, + 0xf3, 0xd3, 0x2a, 0x18, 0xba, 0xf6, 0x04, 0xff, 0x52, 0x44, 0xba, 0x4d, 0x31, 0xc1, 0xb0, 0x6a, + 0xeb, 0x20, 0xe7, 0xb0, 0x70, 0x37, 0xf7, 0xbb, 0xbd, 0xc8, 0xdc, 0x11, 0xb0, 0x71, 0xdd, 0xc4, + 0x32, 0x30, 0xa7, 0x72, 0x39, 0x98, 0x53, 0xb9, 0xd8, 0x10, 0x1a, 0x0c, 0xa3, 0xae, 0x43, 0x9c, + 0x73, 0x50, 0xe6, 0xaa, 0xaf, 0x2f, 0xcd, 0x53, 0x70, 0xa5, 0xca, 0x56, 0xaa, 0x86, 0x71, 0x75, + 0xdd, 0x00, 0x96, 0x2a, 0x37, 0x00, 0x96, 0xaa, 0x0a, 0x4a, 0xc0, 0xb7, 0x40, 0x54, 0x96, 0x06, + 0xe9, 0x9b, 0x54, 0x29, 0x78, 0x47, 0xb4, 0x05, 0x39, 0xee, 0xdb, 0xf9, 0x5a, 0xe0, 0xb8, 0x45, + 0xfb, 0x97, 0xde, 0xac, 0xf9, 0xd2, 0xba, 0xd1, 0xf3, 0x69, 0x4d, 0xf7, 0x20, 0x9e, 0x9c, 0xe9, + 0xa1, 0xf0, 0xdf, 0x3d, 0x58, 0xd6, 0x17, 0xc7, 0x1e, 0x2e, 0x34, 0xb6, 0xaf, 0xa3, 0xde, 0xd7, + 0x8d, 0x1a, 0x1b, 0x15, 0xcc, 0x81, 0x04, 0x73, 0x8a, 0x46, 0x78, 0x60, 0xdf, 0xce, 0xf5, 0x2c, + 0x12, 0x0b, 0xba, 0xd7, 0x20, 0xef, 0xe5, 0x5a, 0xc9, 0x26, 0xde, 0xb2, 0x41, 0x38, 0x73, 0x98, + 0x45, 0x14, 0xa8, 0x12, 0x52, 0x74, 0xa2, 0x1f, 0x46, 0xda, 0x0a, 0xea, 0xa4, 0xa0, 0x8e, 0x6b, + 0x4b, 0xb4, 0x45, 0xcf, 0x69, 0xdb, 0xfe, 0x55, 0x9e, 0x82, 0x2c, 0xff, 0x4b, 0xd3, 0x34, 0x16, + 0x6a, 0x55, 0xc2, 0x12, 0xf9, 0x62, 0xa1, 0x94, 0xb0, 0xcc, 0xf2, 0x65, 0xec, 0x1a, 0x75, 0x6c, + 0x38, 0xf8, 0xf3, 0x40, 0xc8, 0x04, 0xba, 0xd4, 0x00, 0x41, 0x46, 0x23, 0x2c, 0x83, 0xfa, 0x7f, + 0x15, 0xe2, 0x31, 0x95, 0xdb, 0xb3, 0x28, 0x6c, 0xf5, 0x3e, 0x8d, 0xf4, 0xb3, 0xab, 0x41, 0xb5, + 0x7a, 0x2f, 0x47, 0x34, 0xa7, 0x5f, 0x5d, 0x5e, 0xaa, 0x4d, 0xa3, 0xd9, 0xab, 0x4b, 0xb1, 0x87, + 0xdb, 0x40, 0x86, 0x97, 0x21, 0x0c, 0x7f, 0x25, 0x9a, 0xf0, 0xdb, 0xfd, 0x17, 0x3f, 0x36, 0x78, + 0x17, 0xfe, 0x24, 0x38, 0x70, 0x8a, 0x08, 0xba, 0x5f, 0x89, 0x0b, 0x4c, 0x79, 0x7c, 0x25, 0x24, + 0x30, 0xe5, 0xf1, 0x95, 0x68, 0xc0, 0x94, 0xc7, 0x3a, 0x20, 0x60, 0x39, 0x91, 0xdc, 0x93, 0xdc, + 0x09, 0x0c, 0xc1, 0x54, 0x7b, 0xca, 0xa8, 0x7b, 0xe3, 0x83, 0x36, 0xda, 0xc3, 0x6c, 0x09, 0xe3, + 0xa1, 0x4d, 0x6a, 0xd8, 0xd1, 0x3a, 0x36, 0x72, 0x6d, 0xce, 0x86, 0xfc, 0x27, 0x32, 0xa4, 0xdf, + 0xe8, 0x15, 0x4d, 0x96, 0xb6, 0xd4, 0x76, 0x3e, 0xab, 0x3d, 0xee, 0x21, 0x26, 0x55, 0xb7, 0x6c, + 0x43, 0xa4, 0xc2, 0xf4, 0x04, 0x8a, 0x80, 0x3f, 0xc8, 0x42, 0xe0, 0xc2, 0xa7, 0x23, 0xdc, 0x83, + 0x01, 0x9f, 0x32, 0xb6, 0x56, 0x7b, 0x91, 0x98, 0x42, 0x61, 0xae, 0x4f, 0xd2, 0xb7, 0x75, 0xef, + 0xf6, 0x54, 0x28, 0x6b, 0x49, 0x65, 0x48, 0x39, 0xcb, 0xd8, 0x81, 0xe0, 0x9e, 0x26, 0x45, 0x09, + 0xcb, 0xb7, 0x77, 0xa4, 0x58, 0x0b, 0x3b, 0xb2, 0x39, 0xb8, 0x79, 0xb7, 0xc9, 0xdf, 0x26, 0x3b, + 0x9c, 0xa5, 0x9a, 0x74, 0x5c, 0xf9, 0x3e, 0x0e, 0xb2, 0x9d, 0x1d, 0x1f, 0xea, 0xc4, 0xcd, 0x0e, + 0xcb, 0x70, 0xf1, 0x05, 0x1a, 0x1e, 0x29, 0x23, 0x77, 0xdc, 0x4f, 0x5c, 0x17, 0x7f, 0x28, 0xf8, + 0x95, 0xed, 0xa0, 0xb2, 0x6f, 0x5c, 0x4b, 0xc5, 0x67, 0xb5, 0xf4, 0x86, 0x31, 0x2d, 0xb2, 0xe9, + 0x2e, 0xa2, 0x04, 0xfa, 0x83, 0x54, 0xdb, 0x58, 0xf1, 0xb2, 0x25, 0x69, 0xde, 0x5b, 0xf4, 0xd0, + 0x8a, 0x6b, 0xcb, 0x50, 0xc2, 0x74, 0x89, 0x69, 0xd0, 0x5f, 0x41, 0xa7, 0x43, 0xd9, 0xdb, 0xc4, + 0x36, 0x9d, 0x91, 0x9f, 0x69, 0x0b, 0x09, 0xf4, 0x15, 0xde, 0x09, 0x33, 0x64, 0x35, 0xd6, 0x0b, + 0x1f, 0x99, 0xde, 0xa4, 0x53, 0x82, 0xf3, 0x22, 0xb2, 0x5b, 0xec, 0xcc, 0xbc, 0x22, 0xc3, 0xc3, + 0xb9, 0x4d, 0x7d, 0xc3, 0xfa, 0x5a, 0x5b, 0x63, 0x05, 0x6b, 0xf3, 0x49, 0xca, 0x0e, 0x9c, 0x4e, + 0xbb, 0xa3, 0x75, 0x78, 0x22, 0x40, 0x9e, 0xef, 0x05, 0x61, 0x80, 0x97, 0xc1, 0xf5, 0xcb, 0xcb, + 0xdb, 0xc2, 0x7d, 0xeb, 0xbc, 0x3a, 0xab, 0xce, 0xed, 0xc8, 0x46, 0x1f, 0xbc, 0x2c, 0x8d, 0x89, + 0x41, 0x49, 0x9d, 0x11, 0x66, 0xf9, 0xe2, 0x8a, 0xb4, 0xb5, 0x98, 0xc6, 0x12, 0xde, 0x6d, 0x2d, + 0x7e, 0xd0, 0x5b, 0x56, 0x74, 0xf7, 0x4d, 0x4b, 0x39, 0x31, 0x82, 0x53, 0x1a, 0x1b, 0x0f, 0x2d, + 0x15, 0x27, 0x25, 0x83, 0x95, 0xb8, 0x05, 0x42, 0x7c, 0x33, 0xdd, 0xde, 0x65, 0xe3, 0x5e, 0x35, + 0xa4, 0x7b, 0x73, 0x5b, 0xa8, 0x84, 0x65, 0x43, 0xef, 0xde, 0xad, 0xb7, 0xa5, 0xad, 0xc9, 0xef, + 0x85, 0xdf, 0x97, 0xba, 0x07, 0xed, 0x2c, 0x3f, 0x6e, 0x96, 0xa3, 0xd3, 0xd2, 0x9b, 0x64, 0xfc, + 0x8b, 0x99, 0xe4, 0x3a, 0x97, 0x01, 0x3a, 0x20, 0xf1, 0xd5, 0xbc, 0x14, 0x05, 0x80, 0xa2, 0xba, + 0xb2, 0x40, 0x13, 0x03, 0xfb, 0xcd, 0xcc, 0x79, 0x35, 0xec, 0xa2, 0x61, 0x10, 0x91, 0x34, 0x41, + 0xdc, 0x94, 0x6b, 0x24, 0xae, 0x87, 0x4e, 0x9a, 0xbc, 0x77, 0xe1, 0xb7, 0xcf, 0xb4, 0xc8, 0x24, + 0x77, 0x85, 0x5b, 0xf5, 0x31, 0x73, 0xb1, 0x93, 0x72, 0x6d, 0x8d, 0x05, 0x93, 0xef, 0x6d, 0x76, + 0x69, 0x62, 0xae, 0xf9, 0x32, 0xab, 0x84, 0x6a, 0xae, 0xbb, 0x27, 0x2e, 0x4c, 0x88, 0x5c, 0xf1, + 0x90, 0xdd, 0x49, 0x98, 0xd6, 0x46, 0xad, 0xec, 0xac, 0x8c, 0xd0, 0x0b, 0x0b, 0xfa, 0x11, 0xfe, + 0x86, 0x08, 0xca, 0xa5, 0xdb, 0x3f, 0x3a, 0xab, 0x8a, 0xf3, 0x80, 0xab, 0x13, 0x85, 0x41, 0x11, + 0xa1, 0x5e, 0x37, 0xbb, 0x8c, 0x42, 0x2d, 0x0d, 0x9b, 0x5e, 0xe3, 0x58, 0xc3, 0x7a, 0x00, 0x9c, + 0xa6, 0x4a, 0x8b, 0x7a, 0x05, 0x46, 0x01, 0x8b, 0x63, 0x72, 0xcf, 0x83, 0xc3, 0x0f, 0x88, 0xc8, + 0xbb, 0x70, 0xbc, 0x88, 0x7a, 0xe1, 0xec, 0x61, 0xa0, 0x89, 0x8a, 0x56, 0x51, 0xca, 0x9c, 0x5e, + 0xdf, 0x4e, 0xa7, 0xa9, 0x20, 0xc2, 0xd6, 0xa5, 0x67, 0x31, 0xd3, 0xed, 0xf6, 0x79, 0x0c, 0x07, + 0x0b, 0xd3, 0xd2, 0xc2, 0xf6, 0x62, 0x95, 0xf5, 0xf1, 0x31, 0x43, 0xe7, 0x77, 0x87, 0x9c, 0x02, + 0xf3, 0x5f, 0x7d, 0x5a, 0x43, 0x12, 0x33, 0x3e, 0xaf, 0xc1, 0xaf, 0xd5, 0x44, 0x3d, 0x04, 0xcd, + 0x8a, 0x0b, 0xdd, 0x34, 0xc9, 0x92, 0x4a, 0xa4, 0x5f, 0x36, 0x2a, 0xfd, 0x6c, 0x55, 0xf1, 0xb3, + 0x23, 0x42, 0x26, 0xd1, 0x85, 0x7e, 0x72, 0x89, 0x4d, 0xa7, 0xf0, 0xc8, 0xd2, 0xbd, 0xa2, 0xa0, + 0xb1, 0xe4, 0x37, 0x5c, 0x97, 0x7a, 0x4f, 0x25, 0x35, 0xa2, 0x80, 0xac, 0x9e, 0x53, 0x1f, 0x25, + 0xdb, 0xd8, 0xb5, 0xb1, 0x24, 0x18, 0xab, 0x26, 0x74, 0xf1, 0xbf, 0xff, 0x17, 0x92, 0x82, 0x42, + 0x79, 0x0a, 0xe0, 0x2f, 0x67, 0x20, 0xf5, 0x1c, 0x75, 0xd0, 0x52, 0x58, 0x6a, 0x46, 0x5c, 0x97, + 0xf1, 0xc5, 0x3b, 0x82, 0x89, 0x22, 0x9d, 0xc2, 0x22, 0x44, 0x60, 0x69, 0xc4, 0x58, 0xc6, 0x09, + 0x03, 0x07, 0x01, 0xab, 0x6c, 0x3c, 0xe3, 0x96, 0x34, 0x35, 0x5d, 0xf3, 0x80, 0x72, 0xc5, 0xf6, + 0x90, 0xc1, 0xeb, 0xb2, 0xce, 0x13, 0xcc, 0x0a, 0xfc, 0x7a, 0x9d, 0x42, 0xe6, 0xe8, 0x03, 0xb4, + 0x9a, 0x3e, 0xad, 0x34, 0x22, 0x20, 0xf2, 0x34, 0xb4, 0x1f, 0x1c, 0xb0, 0x0b, 0xe5, 0xdc, 0x66, + 0x45, 0x06, 0x59, 0x50, 0x1f, 0xe0, 0x56, 0x7e, 0x9a, 0x2c, 0x3c, 0xd8, 0xb9, 0x2d, 0x14, 0x32, + 0x8a, 0x46, 0xb8, 0xd1, 0x6d, 0x1b, 0x48, 0x70, 0x15, 0x94, 0x0c, 0x36, 0x34, 0x6c, 0x88, 0xa0, + 0xa3, 0x44, 0x98, 0x8d, 0xe8, 0x9b, 0x3f, 0x42, 0xca, 0x9a, 0xb0, 0x77, 0xb1, 0x50, 0x18, 0x65, + 0xe5, 0x1a, 0xd2, 0xa8, 0xfa, 0x40, 0x36, 0x68, 0x51, 0xf0, 0xe6, 0x98, 0x31, 0x15, 0x3b, 0x63, + 0x02, 0xee, 0xca, 0x44, 0x59, 0x12, 0x8e, 0x8d, 0x1c, 0xdf, 0x2b, 0x67, 0x15, 0xd6, 0x23, 0x19, + 0xd3, 0xa4, 0x92, 0xb3, 0xe6, 0x5f, 0x39, 0xcb, 0x57, 0x96, 0xfa, 0x14, 0xbd, 0x17, 0x95, 0xba, + 0x6e, 0x8c, 0x66, 0xce, 0xa7, 0x15, 0xbb, 0xfc, 0xff, 0x29, 0xf6, 0x6b, 0xfe, 0x9e, 0x2a, 0x39, + 0x1a, 0x9c, 0x78, 0xed, 0x7a, 0x42, 0xc1, 0xe1, 0x33, 0xde, 0x93, 0x0a, 0x7c, 0x51, 0x43, 0xdd, + 0xd3, 0x56, 0x43, 0x89, 0xc2, 0xeb, 0x3c, 0x5b, 0x60, 0xbc, 0x65, 0x8d, 0x2a, 0x09, 0x79, 0xa3, + 0xa0, 0x82, 0x2e, 0x38, 0xef, 0x53, 0x28, 0xa3, 0xa8, 0x02, 0xe9, 0xcd, 0xac, 0x09, 0xc1, 0xdb, + 0x82, 0xbc, 0x7b, 0x51, 0x47, 0xde, 0x75, 0x8a, 0x49, 0x7e, 0xf6, 0xe5, 0x72, 0x00, 0x5e, 0xf8, + 0x12, 0x7a, 0xc7, 0xcc, 0xd4, 0xb4, 0x66, 0xc8, 0x5b, 0x05, 0xc9, 0xdb, 0xa9, 0x4b, 0x40, 0x5f, + 0x01, 0xd6, 0x5b, 0x36, 0xc1, 0x7a, 0x15, 0xca, 0x9a, 0xc2, 0xb0, 0x5b, 0xc9, 0xb0, 0xc2, 0xa4, + 0x58, 0x28, 0x95, 0x21, 0x1c, 0x8e, 0x21, 0xa1, 0xa0, 0xc6, 0x22, 0x06, 0x96, 0x0d, 0xf5, 0xd9, + 0x54, 0xe5, 0xa1, 0x22, 0x78, 0xdf, 0x80, 0x60, 0xa5, 0xb1, 0x82, 0xfd, 0x0f, 0x5e, 0x85, 0x66, + 0xf8, 0x28, 0x1a, 0x39, 0x51, 0x67, 0x79, 0xd1, 0x4b, 0x2a, 0x9a, 0x29, 0x87, 0x55, 0x8c, 0xdf, + 0x53, 0x45, 0x32, 0x6f, 0xd5, 0xe4, 0xf7, 0xb4, 0xad, 0x22, 0xcf, 0x8f, 0xda, 0x16, 0xd3, 0x6b, + 0xef, 0xa8, 0x9b, 0x0a, 0x9c, 0xe1, 0x82, 0xac, 0xf2, 0x30, 0x10, 0xd0, 0xc4, 0x6a, 0x15, 0x8f, + 0x17, 0x42, 0xdf, 0x49, 0x0c, 0x5d, 0x4f, 0xd7, 0xf0, 0xb0, 0x29, 0x69, 0xe3, 0xdd, 0x56, 0x1b, + 0x2f, 0xee, 0xb4, 0xdb, 0xea, 0x14, 0xf2, 0xe7, 0x27, 0x2f, 0x7c, 0x60, 0xe8, 0x9d, 0x42, 0x2f, + 0x75, 0x66, 0x5a, 0x92, 0x85, 0x43, 0x77, 0x5e, 0x78, 0x11, 0xb6, 0xbc, 0xf7, 0xf3, 0x1d, 0x92, + 0x59, 0xc2, 0x71, 0xa4, 0x73, 0x9f, 0x54, 0xd7, 0x1d, 0xf2, 0x76, 0x80, 0xaf, 0xfe, 0x03, 0x16, + 0x69, 0x79, 0x67, 0x45, 0x86, 0x2d, 0x9e, 0x34, 0xe3, 0x27, 0x65, 0xed, 0xd8, 0x02, 0x8f, 0xaf, + 0x4b, 0x73, 0x70, 0xc1, 0x2a, 0x3f, 0x3e, 0x56, 0x5f, 0x77, 0xdc, 0x6a, 0xe9, 0x85, 0x59, 0xde, + 0xb7, 0x4a, 0x01, 0x0f, 0x47, 0xaf, 0x4e, 0x8e, 0x3b, 0xd0, 0x7f, 0x37, 0xa3, 0xec, 0x92, 0xd9, + 0x9a, 0x61, 0x40, 0x8c, 0x0a, 0x31, 0x52, 0x29, 0x46, 0xb3, 0x44, 0x53, 0x06, 0x51, 0x22, 0x08, + 0x20, 0x8d, 0xa9, 0x8c, 0x77, 0xd4, 0xfe, 0x99, 0x9e, 0xfd, 0x99, 0x9e, 0x82, 0x30, 0x6c, 0xd9, + 0x63, 0x3b, 0x37, 0x3f, 0xc0, 0x71, 0x15, 0xc7, 0x45, 0x95, 0x77, 0x8e, 0xdf, 0x74, 0x2c, 0xc2, + 0x50, 0xde, 0x8b, 0x2e, 0xeb, 0xaa, 0x60, 0x7d, 0x40, 0xa2, 0xea, 0x43, 0x4f, 0x5c, 0xda, 0xc7, + 0xa4, 0xfe, 0x41, 0x48, 0xc7, 0xa4, 0x9e, 0x3e, 0x26, 0x61, 0x3f, 0x8a, 0x08, 0xa4, 0xf8, 0xf7, + 0x96, 0x6d, 0xee, 0xa4, 0xeb, 0x2f, 0x8e, 0x96, 0x6c, 0xfa, 0xd8, 0xcc, 0xeb, 0xf7, 0x7d, 0xf4, + 0xb5, 0x3f, 0xe1, 0x6d, 0x5f, 0xa1, 0x4d, 0xae, 0x54, 0x2f, 0x2a, 0x93, 0x01, 0xd6, 0x55, 0xef, + 0xfa, 0x34, 0x02, 0xb1, 0x80, 0xdb, 0xcb, 0xbf, 0x48, 0x4d, 0xb1, 0xbd, 0x23, 0x76, 0xb6, 0x2f, + 0x45, 0xea, 0x12, 0x06, 0x9c, 0x74, 0x29, 0x7c, 0x63, 0xbe, 0x00, 0x26, 0x1d, 0xd8, 0x8e, 0xb6, + 0x37, 0xd5, 0x4c, 0x9f, 0xb8, 0xaa, 0xe9, 0xed, 0x85, 0x55, 0xf2, 0xd6, 0x8e, 0xbf, 0x1f, 0x15, + 0xaa, 0x4a, 0xde, 0x78, 0xc6, 0x3c, 0x7b, 0x13, 0x6b, 0x2c, 0xe0, 0x7b, 0x4f, 0x37, 0xbc, 0xaa, + 0xbb, 0xbb, 0x4e, 0xc0, 0x28, 0xc0, 0x6a, 0x29, 0x60, 0x4b, 0xcc, 0xa3, 0xae, 0xaf, 0xe3, 0x62, + 0x49, 0xa7, 0x65, 0x56, 0x5b, 0xb1, 0x76, 0x7b, 0xd0, 0x76, 0x6b, 0x07, 0x66, 0xe8, 0x97, 0x71, + 0x5e, 0x31, 0x6f, 0xb9, 0xeb, 0x1b, 0xcb, 0x18, 0x3b, 0x81, 0x58, 0xa6, 0x15, 0xc7, 0xf7, 0x49, + 0x66, 0x19, 0x2f, 0xe5, 0x79, 0xb3, 0x1b, 0x2a, 0x24, 0xc4, 0x0b, 0x1b, 0x0c, 0x6a, 0x16, 0xe2, + 0x64, 0xf1, 0x41, 0xb4, 0x9e, 0xe6, 0x93, 0x5b, 0x34, 0x56, 0x57, 0xea, 0xe2, 0x1c, 0xe1, 0x44, + 0x83, 0x68, 0x73, 0x89, 0xae, 0x47, 0x82, 0x6e, 0x8c, 0x59, 0xb7, 0xe5, 0x09, 0x75, 0x10, 0x22, + 0x73, 0x10, 0x39, 0x90, 0x6d, 0x6c, 0x7e, 0x9d, 0x88, 0x8c, 0xbc, 0x72, 0xa4, 0x65, 0x7c, 0x56, + 0xbe, 0x63, 0xa7, 0xb1, 0xf6, 0x86, 0xa8, 0xf0, 0xa2, 0x53, 0x5d, 0xfd, 0xa9, 0xf4, 0x70, 0x55, + 0x2b, 0x48, 0x2b, 0x2c, 0xee, 0xf8, 0x9e, 0x67, 0x46, 0xbb, 0x8a, 0x0e, 0xdf, 0x68, 0x84, 0x45, + 0x34, 0x59, 0xc2, 0x9f, 0x8e, 0x65, 0x22, 0x7d, 0x19, 0x7e, 0xe7, 0x59, 0x34, 0xef, 0xf8, 0xb6, + 0xb3, 0xa9, 0x18, 0xe2, 0xca, 0x1c, 0xa8, 0xae, 0xd1, 0xb3, 0x2e, 0x90, 0x44, 0xc0, 0x5a, 0xfe, + 0xf0, 0xbe, 0xad, 0x2b, 0x71, 0x34, 0x94, 0x2c, 0xaa, 0xd0, 0xa4, 0x71, 0x91, 0xbf, 0xdf, 0x2e, + 0x3a, 0x50, 0x22, 0xc2, 0x7f, 0xec, 0x74, 0x6a, 0x67, 0x00, 0xaa, 0x13, 0xda, 0x8a, 0x54, 0xe5, + 0xd6, 0x0b, 0x0a, 0xe9, 0x2e, 0x0c, 0x33, 0x6b, 0x56, 0xb1, 0x92, 0x6e, 0xf3, 0x55, 0x43, 0x19, + 0x25, 0x5c, 0x43, 0x23, 0xa3, 0x52, 0x16, 0xf5, 0xb6, 0x36, 0xc5, 0x79, 0x73, 0x5b, 0x90, 0x19, + 0x62, 0x49, 0x69, 0x3f, 0x6a, 0xfd, 0xc5, 0x92, 0x08, 0xdf, 0x40, 0xe1, 0x76, 0x7a, 0x8b, 0x8d, + 0x3e, 0xa6, 0xba, 0xf8, 0x05, 0x74, 0x71, 0xab, 0x61, 0xcf, 0x5d, 0xbe, 0x9d, 0xe3, 0x8b, 0x2a, + 0x27, 0xaf, 0xdd, 0x3f, 0x1c, 0x1c, 0xec, 0xef, 0xf1, 0xf2, 0x1d, 0xee, 0xf5, 0x61, 0x63, 0x15, + 0x33, 0xf8, 0xd1, 0xb3, 0x45, 0x62, 0x52, 0xba, 0x35, 0xba, 0x5f, 0x1f, 0x53, 0xea, 0x4a, 0xb7, + 0xe7, 0xbd, 0x10, 0x7a, 0xbb, 0x6c, 0xaf, 0xe5, 0xd7, 0x14, 0xdc, 0xb4, 0xa0, 0x2a, 0xba, 0x2e, + 0x78, 0xd8, 0x5e, 0xf0, 0x8f, 0x9b, 0x95, 0xdb, 0x51, 0xed, 0xad, 0x2c, 0xfe, 0x8a, 0x31, 0xd7, + 0xdc, 0x28, 0x9e, 0x32, 0xe6, 0x96, 0xb2, 0xcb, 0xd4, 0x06, 0xc3, 0x73, 0x35, 0xe1, 0x97, 0xd8, + 0x54, 0xe4, 0x22, 0x3d, 0xfb, 0x70, 0x7b, 0x83, 0xca, 0x77, 0xcb, 0x31, 0xf3, 0x53, 0x7e, 0xdb, + 0xc9, 0x04, 0xc8, 0x4c, 0xa3, 0xaa, 0x03, 0x87, 0x42, 0x38, 0x74, 0xf5, 0xa5, 0x64, 0x5f, 0xe2, + 0x31, 0x00, 0x93, 0x77, 0x46, 0xfa, 0x44, 0xb6, 0x25, 0xc1, 0x66, 0xfe, 0xb3, 0x2b, 0xbd, 0x32, + 0xfa, 0xf6, 0xc2, 0xd0, 0x5a, 0xf5, 0x49, 0x8b, 0xe0, 0xf2, 0xf2, 0x5a, 0x9a, 0xe5, 0x50, 0x2d, + 0xc1, 0xbc, 0x0d, 0xe8, 0x4d, 0xe0, 0x3f, 0xb5, 0x98, 0xdb, 0x7b, 0xf6, 0x7c, 0x59, 0x7a, 0xc6, + 0x71, 0x51, 0x89, 0xd7, 0xb5, 0xac, 0x8e, 0xdd, 0x6c, 0x56, 0x55, 0x90, 0x96, 0x96, 0x5d, 0x76, + 0xc0, 0xb0, 0xdd, 0x2f, 0xac, 0x8d, 0x5c, 0xab, 0xd5, 0xa6, 0x20, 0x09, 0x54, 0x51, 0x2a, 0xa6, + 0xd5, 0x60, 0xd3, 0x95, 0xf1, 0x44, 0x6a, 0x84, 0xd4, 0x58, 0xdd, 0xf0, 0xc3, 0x69, 0xeb, 0x97, + 0x49, 0x5f, 0xb2, 0xf9, 0xa7, 0xe5, 0x00, 0xd5, 0x1f, 0xdf, 0xb6, 0x7c, 0xe0, 0xe8, 0x40, 0x2f, + 0xea, 0xf0, 0x79, 0xf2, 0xe8, 0x6f, 0x94, 0xe9, 0x03, 0xf3, 0xa6, 0x45, 0x71, 0x5d, 0xb5, 0x79, + 0x33, 0xca, 0xd8, 0xfd, 0xb6, 0xd8, 0x14, 0x2b, 0x92, 0x89, 0x9c, 0xd2, 0x10, 0x81, 0xa9, 0x50, + 0xae, 0xe0, 0x98, 0x8f, 0x38, 0x84, 0xb1, 0x3d, 0xd4, 0x60, 0x8e, 0x17, 0x11, 0x65, 0xbc, 0x0b, + 0x81, 0x28, 0xa3, 0x1a, 0xa0, 0xa2, 0x26, 0xe0, 0x2b, 0x81, 0xbc, 0x06, 0xf6, 0x21, 0x47, 0x9d, + 0x5b, 0x60, 0x18, 0xb4, 0x02, 0xa8, 0x07, 0x4b, 0xac, 0xe4, 0xf6, 0xf5, 0x4d, 0xe5, 0x07, 0xa0, + 0x1b, 0x6d, 0x0e, 0x45, 0x8b, 0xce, 0xce, 0x17, 0xb5, 0x5b, 0x8d, 0xcc, 0x21, 0x85, 0x37, 0x1b, + 0x2b, 0xba, 0xd9, 0x4d, 0x28, 0xf7, 0xe8, 0x3a, 0x5d, 0xe2, 0xd5, 0x51, 0x44, 0x84, 0xe1, 0xa6, + 0x5d, 0xf8, 0x03, 0xdb, 0x29, 0xb2, 0x6a, 0x7c, 0xec, 0xed, 0xc3, 0xd7, 0x7e, 0xab, 0x04, 0x39, + 0x6d, 0x81, 0xc7, 0x3d, 0x79, 0xf5, 0x3f, 0x16, 0xc1, 0xea, 0x4f, 0x32, 0xa8, 0xb9, 0xe5, 0x13, + 0x8d, 0x9f, 0x25, 0x1a, 0x1d, 0xca, 0xcf, 0x81, 0xaf, 0xb4, 0x39, 0xac, 0x1c, 0x87, 0x69, 0x69, + 0xea, 0xc6, 0xbb, 0x22, 0x4f, 0x6a, 0xec, 0x81, 0x65, 0xe6, 0x5d, 0x01, 0xdc, 0x73, 0x61, 0x80, + 0x7b, 0x98, 0xfb, 0x9a, 0xa1, 0xc0, 0x82, 0xb2, 0xd9, 0x48, 0x7c, 0x17, 0x8f, 0x1b, 0x09, 0xaf, + 0xdd, 0x95, 0x6e, 0x23, 0x71, 0xa5, 0xd0, 0x79, 0x9d, 0x8d, 0x2b, 0x0e, 0x44, 0x57, 0x65, 0xf8, + 0x2f, 0x2c, 0x4b, 0x10, 0x9e, 0x8c, 0xad, 0xbb, 0x51, 0x78, 0xaf, 0xa6, 0x94, 0x48, 0x04, 0xe4, + 0x1e, 0x5f, 0x71, 0x96, 0xe1, 0x62, 0x51, 0x5a, 0xd7, 0xfa, 0x5d, 0xf7, 0xd7, 0xd2, 0x5e, 0x12, + 0x99, 0xd7, 0xcd, 0x9d, 0x88, 0x7a, 0xc8, 0x2b, 0x27, 0xca, 0x72, 0x2d, 0xf4, 0x70, 0xb6, 0x0e, + 0x7a, 0x18, 0x6b, 0x18, 0x6e, 0xc5, 0xd2, 0xf4, 0xef, 0xe2, 0x0c, 0x43, 0xff, 0x58, 0x96, 0x35, + 0x17, 0x70, 0xf8, 0x26, 0xb1, 0x5e, 0xd5, 0x80, 0x87, 0xed, 0x11, 0x50, 0x83, 0x20, 0x9e, 0xdd, + 0x17, 0x0e, 0x3a, 0x1b, 0x76, 0x26, 0x8e, 0x41, 0xf2, 0x4a, 0x46, 0xc7, 0xfb, 0xd8, 0x1a, 0x5a, + 0x19, 0x36, 0x1b, 0xfa, 0x9a, 0xe1, 0xb0, 0x45, 0x4b, 0x52, 0xc3, 0x01, 0xb4, 0x44, 0x82, 0xb1, + 0x0c, 0x06, 0xef, 0x5d, 0x94, 0x06, 0x37, 0x49, 0x34, 0x0a, 0xf2, 0x2c, 0xca, 0x83, 0x71, 0x91, + 0x44, 0xad, 0xf5, 0x26, 0x62, 0x36, 0x0d, 0xcb, 0x0c, 0x3d, 0x92, 0x2c, 0x16, 0x8a, 0x5a, 0xa6, + 0x05, 0xc5, 0x75, 0xb2, 0x01, 0x8a, 0xeb, 0xe5, 0x7a, 0x14, 0xd7, 0x60, 0xd6, 0x1e, 0x07, 0xd1, + 0x97, 0x55, 0x37, 0x14, 0x34, 0x2c, 0x20, 0xe7, 0x78, 0x12, 0xf0, 0x6f, 0xc8, 0x21, 0xbe, 0x94, + 0xbf, 0xf3, 0x69, 0x3c, 0x5b, 0xf0, 0x4f, 0x18, 0x19, 0x74, 0xcf, 0x8a, 0x49, 0x98, 0x85, 0xeb, + 0x9e, 0x5f, 0xd8, 0x96, 0x75, 0xe9, 0x28, 0xb8, 0x7a, 0x0c, 0x0d, 0x78, 0xd1, 0xa8, 0x03, 0x47, + 0x67, 0x75, 0xe0, 0x68, 0xe9, 0xbd, 0xd0, 0x30, 0x2d, 0x07, 0xa3, 0xa6, 0x79, 0xbf, 0xe9, 0x0e, + 0x9c, 0x92, 0xaf, 0xef, 0xb4, 0x9b, 0x1e, 0x96, 0x78, 0xe1, 0xf0, 0xf1, 0x31, 0x3d, 0x22, 0x60, + 0x73, 0x05, 0x8b, 0x81, 0x80, 0x45, 0x2a, 0xcb, 0x98, 0xa2, 0xf0, 0xbd, 0xd7, 0xc3, 0x8c, 0xa3, + 0x8f, 0x76, 0x5b, 0xb3, 0x3c, 0xca, 0x1a, 0x99, 0x18, 0xff, 0x04, 0x7c, 0x43, 0xc8, 0xb0, 0x6e, + 0x42, 0x52, 0xcc, 0x8d, 0x1e, 0x1f, 0xb7, 0x1a, 0xe1, 0x48, 0xf3, 0x67, 0xe7, 0xd5, 0xb9, 0x54, + 0x6b, 0x9f, 0xc4, 0xcd, 0x68, 0x1d, 0x9a, 0x29, 0x0f, 0xcd, 0x11, 0x0f, 0x24, 0x72, 0x0d, 0x4f, + 0x0f, 0x19, 0x27, 0xdb, 0xda, 0xb4, 0x1c, 0xe8, 0xee, 0xb2, 0x01, 0xdd, 0x3d, 0xe0, 0xbb, 0xee, + 0x86, 0x26, 0x4e, 0xb5, 0x6e, 0xd1, 0x6c, 0xf1, 0x66, 0xeb, 0xe6, 0xb2, 0x75, 0xf3, 0xc3, 0x8a, + 0x9b, 0x2b, 0x3f, 0xaa, 0x1a, 0x0d, 0xa3, 0x24, 0xfa, 0x4a, 0xb7, 0x6e, 0xa1, 0x3a, 0xa3, 0x58, + 0xdd, 0x19, 0xd4, 0x8e, 0x3c, 0x24, 0x09, 0x53, 0x25, 0xce, 0x03, 0xf5, 0x98, 0xcf, 0x3e, 0xc5, + 0xc5, 0x02, 0xab, 0x39, 0x69, 0x22, 0x21, 0x53, 0xe3, 0x37, 0x56, 0xca, 0xc9, 0x1a, 0x54, 0x74, + 0x67, 0xe2, 0x64, 0xeb, 0x27, 0x4e, 0xa2, 0x27, 0x4e, 0xa5, 0x8a, 0x05, 0x13, 0xa7, 0x94, 0xbf, + 0x61, 0xe2, 0x64, 0x01, 0x75, 0x4a, 0x1d, 0x01, 0x1a, 0x31, 0x46, 0x28, 0x4a, 0xe5, 0x22, 0x6b, + 0xdb, 0xe8, 0xd0, 0xe8, 0x81, 0xa4, 0x1d, 0x1d, 0x9d, 0x89, 0x96, 0xb8, 0xae, 0x21, 0x72, 0x9e, + 0x19, 0x0e, 0xc6, 0x61, 0x9b, 0xd8, 0x00, 0x32, 0xc2, 0x35, 0xaa, 0x0c, 0x6f, 0x60, 0xbb, 0x4b, + 0x40, 0xb6, 0x32, 0xb6, 0x17, 0x78, 0x23, 0x3d, 0x12, 0xe0, 0x20, 0xb4, 0x85, 0xce, 0x06, 0x2a, + 0xab, 0xdd, 0xdd, 0x60, 0xd9, 0xc6, 0x8b, 0xc3, 0x0e, 0x36, 0x14, 0xdf, 0xd9, 0x62, 0xab, 0x5f, + 0xc4, 0xdd, 0x8a, 0xdd, 0x1a, 0x57, 0xca, 0xa5, 0x4b, 0x7c, 0x6d, 0xb7, 0xc6, 0xac, 0x3e, 0xad, + 0xca, 0xeb, 0x93, 0x9b, 0xd5, 0xa7, 0xe5, 0x39, 0xfd, 0x94, 0xac, 0xc8, 0x07, 0xd6, 0xed, 0x65, + 0x3b, 0x4b, 0x33, 0x9f, 0x55, 0x05, 0xba, 0x71, 0x0b, 0x74, 0xb3, 0xaa, 0x40, 0xbd, 0xfe, 0xaa, + 0x8c, 0x7a, 0x7d, 0x37, 0xa7, 0x1e, 0x9d, 0x5a, 0xa5, 0xde, 0xeb, 0x18, 0x55, 0x32, 0xf5, 0x0c, + 0x4f, 0x57, 0xd5, 0xb0, 0x74, 0x6b, 0x58, 0x26, 0xeb, 0x72, 0xfb, 0x38, 0x5b, 0x91, 0x5b, 0x35, + 0x8b, 0x96, 0x0d, 0xd8, 0x7a, 0x3e, 0x74, 0xde, 0x42, 0xf5, 0xd8, 0xd3, 0x4e, 0x5c, 0x4b, 0x87, + 0x9c, 0xa8, 0xa2, 0xaa, 0x51, 0x73, 0x71, 0x75, 0x72, 0x5f, 0xac, 0x28, 0x2f, 0x6c, 0xc9, 0x5b, + 0x4f, 0x38, 0x03, 0xb4, 0xe4, 0xff, 0x63, 0xb1, 0xaa, 0x75, 0x37, 0xda, 0xed, 0xdd, 0xab, 0x7b, + 0x57, 0xe9, 0xbb, 0x42, 0x88, 0x3f, 0x84, 0xbe, 0xa1, 0x6d, 0x9d, 0xa6, 0xe7, 0x78, 0x73, 0xd1, + 0xab, 0x3c, 0x58, 0xd0, 0x19, 0x47, 0x88, 0xfc, 0x6a, 0xf8, 0x1c, 0x0d, 0xc2, 0xb5, 0x08, 0xcc, + 0xcd, 0x49, 0x61, 0x5d, 0x0a, 0x96, 0xf7, 0x1e, 0x1b, 0xd7, 0x29, 0xbb, 0x90, 0x2d, 0xba, 0x7f, + 0xc2, 0x69, 0xd2, 0x5f, 0x71, 0xca, 0xae, 0xde, 0xfd, 0x53, 0x17, 0x86, 0x2f, 0x3f, 0xc7, 0x62, + 0x68, 0x21, 0x5b, 0xd4, 0x51, 0x2a, 0xb6, 0x15, 0x4a, 0x45, 0x1d, 0xc0, 0x35, 0x92, 0x43, 0x61, + 0x5b, 0x73, 0xb0, 0xd6, 0x93, 0x5e, 0x2c, 0x4b, 0x5a, 0xc7, 0xfb, 0xb5, 0xc0, 0x5e, 0x5b, 0x46, + 0xc4, 0xf4, 0xc1, 0xb4, 0x3a, 0x2c, 0xd5, 0xd3, 0x87, 0x4b, 0x31, 0x35, 0xf7, 0x44, 0xe8, 0xb1, + 0xde, 0x95, 0x1a, 0x98, 0xf8, 0x49, 0x15, 0x55, 0x74, 0x74, 0xad, 0x18, 0xc5, 0x9b, 0x54, 0x77, + 0x65, 0x06, 0x4f, 0xab, 0x34, 0x24, 0x8b, 0x44, 0xbd, 0x5a, 0x38, 0x3c, 0x6b, 0xa3, 0xb3, 0x31, + 0x26, 0x9b, 0xa0, 0x74, 0x7e, 0x7d, 0x9c, 0x23, 0xb0, 0x4c, 0xb7, 0x6d, 0x94, 0x97, 0x0f, 0xad, + 0x79, 0x39, 0x30, 0x55, 0x8d, 0x69, 0xa3, 0x61, 0xaa, 0x5a, 0xb3, 0x4c, 0xda, 0xb3, 0x6c, 0x60, + 0x5b, 0x35, 0xb2, 0x65, 0x78, 0x1b, 0xe8, 0x41, 0x89, 0xcd, 0x87, 0xe2, 0xf8, 0xe3, 0xa3, 0x38, + 0xda, 0xf7, 0xdd, 0x49, 0xb4, 0x58, 0xd4, 0x37, 0x78, 0x05, 0x6c, 0x45, 0x30, 0x30, 0x72, 0xf3, + 0xde, 0xa7, 0xde, 0xe7, 0xb9, 0x35, 0xd9, 0x8f, 0xcb, 0xa8, 0x6f, 0x07, 0xf4, 0x21, 0x40, 0xfe, + 0xec, 0xc1, 0x8e, 0x5e, 0x9b, 0x3c, 0x4e, 0xb1, 0x18, 0x80, 0x06, 0x8b, 0x65, 0xe1, 0x06, 0xd6, + 0xcb, 0x56, 0xea, 0xb2, 0xc9, 0x0f, 0xb3, 0x2c, 0x96, 0xef, 0xc7, 0x5b, 0x5b, 0x95, 0xfc, 0xb4, + 0x0c, 0xea, 0x53, 0x90, 0x7c, 0xe8, 0xe1, 0x43, 0x50, 0x13, 0xd5, 0x9c, 0xcf, 0xbf, 0xcf, 0x9b, + 0x0b, 0x20, 0x4e, 0x7a, 0x51, 0x9f, 0x00, 0x74, 0x9e, 0xb0, 0xc4, 0x77, 0x84, 0x0a, 0x5c, 0x20, + 0x81, 0x83, 0x52, 0xca, 0x74, 0x11, 0xfd, 0x4c, 0x5e, 0x4a, 0x57, 0x2e, 0x03, 0x08, 0x1c, 0xa2, + 0xdd, 0x07, 0xee, 0xf1, 0xc4, 0x66, 0x3f, 0x19, 0x78, 0x8f, 0x13, 0x54, 0x4a, 0x0a, 0xcf, 0x3f, + 0x8c, 0x89, 0xfe, 0x01, 0xb3, 0x87, 0xf5, 0x71, 0x11, 0x48, 0xd7, 0x6f, 0xc9, 0x9d, 0x55, 0x05, + 0x2a, 0xb5, 0x6f, 0xdc, 0x20, 0x7f, 0x4f, 0xcd, 0xef, 0x0c, 0xef, 0x39, 0x3a, 0xe5, 0x81, 0xd5, + 0x2f, 0xcf, 0x10, 0xf2, 0x39, 0xb0, 0x8e, 0x35, 0xef, 0xf3, 0x11, 0xde, 0xaa, 0x90, 0x1a, 0xd0, + 0x8e, 0xb7, 0xa3, 0xec, 0xfd, 0x3b, 0x5e, 0xa7, 0x4b, 0x6c, 0x96, 0xbe, 0xb7, 0x62, 0xc5, 0x23, + 0x3b, 0xa4, 0xc2, 0x6d, 0x85, 0xbe, 0x9a, 0x1d, 0xd7, 0x3d, 0x26, 0xd9, 0x8e, 0xaa, 0x57, 0x70, + 0x1f, 0xaa, 0x7d, 0x7c, 0xd8, 0x23, 0x62, 0x8b, 0xe3, 0x78, 0x99, 0x79, 0x14, 0x84, 0xad, 0xe3, + 0xa3, 0xfe, 0x41, 0xe8, 0xc3, 0xfc, 0x2e, 0xa0, 0x94, 0xd2, 0x77, 0xfd, 0xf8, 0x0d, 0x9c, 0xba, + 0x60, 0x09, 0x18, 0x8b, 0x0e, 0x9a, 0x5a, 0x73, 0x90, 0x65, 0x44, 0x59, 0xee, 0x29, 0x02, 0x18, + 0xc4, 0xa6, 0xea, 0xce, 0x3e, 0x58, 0xfa, 0x2e, 0x52, 0x25, 0xc9, 0x2f, 0xe3, 0x17, 0x3f, 0xc4, + 0xdd, 0x6a, 0xe8, 0x69, 0xbf, 0x71, 0xcf, 0x78, 0xc5, 0xfb, 0x3b, 0xb3, 0x63, 0x85, 0xd8, 0x38, + 0x37, 0xd2, 0x64, 0x9b, 0xd6, 0xcc, 0xaf, 0x86, 0x70, 0xb0, 0x56, 0x0a, 0x62, 0xe3, 0x63, 0x19, + 0x94, 0xdc, 0xbe, 0xf8, 0x17, 0x9b, 0x39, 0x42, 0x62, 0x94, 0xb1, 0x55, 0x1a, 0x72, 0x6d, 0xb2, + 0x84, 0x6a, 0x18, 0x98, 0xf6, 0xeb, 0xb2, 0xf9, 0x7a, 0xe2, 0xbc, 0x9e, 0x5c, 0x7f, 0x6e, 0xf8, + 0xc8, 0x4a, 0x0f, 0x18, 0x3c, 0x09, 0x13, 0x34, 0x54, 0x2d, 0x94, 0xeb, 0x4e, 0xf0, 0xdd, 0xd2, + 0x63, 0xa5, 0xa5, 0x7b, 0xac, 0x98, 0x08, 0x13, 0x43, 0x6d, 0x69, 0x18, 0x25, 0x2f, 0x94, 0xe5, + 0x5d, 0x0b, 0x9b, 0x55, 0xf1, 0x65, 0x5e, 0xda, 0xe0, 0xac, 0x99, 0xbf, 0x60, 0x60, 0x03, 0x1e, + 0x07, 0x25, 0x0e, 0x68, 0x38, 0xb1, 0x1b, 0x84, 0x31, 0x47, 0x28, 0x31, 0x99, 0xa2, 0x41, 0xd6, + 0xa1, 0x26, 0x21, 0xf2, 0xdd, 0x97, 0x2f, 0x07, 0x1d, 0x9e, 0x04, 0x1d, 0xd2, 0x47, 0x77, 0xbe, + 0x20, 0x68, 0x80, 0xe5, 0x2b, 0xd0, 0xa1, 0x1b, 0x00, 0x0c, 0x3a, 0x62, 0x4d, 0x9c, 0xb9, 0xe7, + 0x1f, 0xed, 0xf6, 0x9e, 0xfc, 0xa9, 0xd3, 0x2f, 0x70, 0x70, 0x79, 0x90, 0x58, 0x72, 0x49, 0xd6, + 0x99, 0x30, 0x93, 0x2b, 0x56, 0xcf, 0xfe, 0x28, 0x7f, 0x8e, 0xf0, 0xd5, 0x1a, 0x53, 0xf5, 0xcf, + 0x56, 0x4f, 0x6a, 0xef, 0xe9, 0xfe, 0x3f, 0x9c, 0xdb, 0x04, 0x0c, 0xec, 0x29, 0x3a, 0x1a, 0xde, + 0xe4, 0x97, 0xc9, 0xf4, 0x0b, 0x4e, 0x4b, 0x02, 0x11, 0xe0, 0xb9, 0x09, 0x67, 0x2a, 0x1e, 0x58, + 0xf0, 0x67, 0x86, 0x13, 0x2f, 0x9e, 0x1d, 0xc3, 0x18, 0x01, 0xe1, 0xea, 0x83, 0x85, 0xc6, 0x72, + 0x21, 0x9d, 0x63, 0x8c, 0x66, 0xc0, 0x66, 0x5c, 0x2e, 0x61, 0x89, 0x00, 0xf1, 0xd8, 0x5e, 0x00, + 0x4e, 0x47, 0x04, 0xee, 0x8c, 0x13, 0x9f, 0xa7, 0xfc, 0xec, 0xb8, 0x39, 0xe7, 0x4b, 0x04, 0x78, + 0xcf, 0x87, 0x7c, 0xdf, 0xe4, 0x6c, 0x76, 0x7c, 0x0e, 0x0b, 0xb9, 0x73, 0x41, 0x05, 0x82, 0xb8, + 0x50, 0xcd, 0xe0, 0xbc, 0x19, 0x74, 0xd7, 0x0c, 0x42, 0x2f, 0x52, 0x98, 0x31, 0xe6, 0x03, 0xf3, + 0x2c, 0x9a, 0x7d, 0x08, 0x60, 0x20, 0x45, 0xde, 0xb2, 0xd6, 0x42, 0xd0, 0x41, 0x21, 0xb8, 0x8d, + 0x32, 0x71, 0x9f, 0x7e, 0xa1, 0xf5, 0xe8, 0x52, 0xf5, 0xd8, 0x9e, 0x07, 0xbb, 0x17, 0x0e, 0x45, + 0x9c, 0xf9, 0xfa, 0x43, 0x38, 0x34, 0x29, 0x14, 0xab, 0xf4, 0x7b, 0xea, 0xbc, 0x83, 0xc6, 0xc1, + 0x30, 0xdf, 0x42, 0x26, 0x91, 0x60, 0x21, 0xd8, 0x1c, 0xc6, 0xbc, 0x11, 0xd4, 0x71, 0x45, 0x66, + 0x37, 0xd5, 0x7b, 0x68, 0x4d, 0xe4, 0xcf, 0xb2, 0x10, 0x46, 0x24, 0xaa, 0x98, 0x0d, 0xec, 0xc1, + 0xfe, 0x9a, 0x6a, 0xc1, 0x24, 0x52, 0x5b, 0x75, 0xcd, 0x02, 0xdf, 0xa9, 0x81, 0xe4, 0x86, 0xe2, + 0xc5, 0x6a, 0x7b, 0x14, 0x6d, 0xee, 0xe1, 0xe9, 0x31, 0x88, 0x34, 0x89, 0x06, 0x50, 0xee, 0x41, + 0x2d, 0xdf, 0xde, 0x53, 0xf2, 0xdd, 0x97, 0x04, 0x90, 0x78, 0x17, 0xd4, 0x33, 0x2b, 0xe5, 0xca, + 0x95, 0x70, 0x99, 0x62, 0x54, 0x15, 0xc8, 0xdd, 0x6b, 0x55, 0x46, 0xb8, 0xb7, 0xd7, 0x2e, 0x6d, + 0xb4, 0x19, 0x33, 0x2e, 0x51, 0x43, 0x39, 0x70, 0xda, 0x70, 0x92, 0x4d, 0x87, 0x5d, 0x37, 0xcf, + 0x4b, 0xd4, 0xca, 0x2f, 0x7c, 0x77, 0xc4, 0x21, 0xfc, 0x59, 0xa3, 0x87, 0x6d, 0x33, 0xd4, 0x52, + 0x23, 0x14, 0xdd, 0x20, 0x60, 0xcb, 0xc7, 0xa4, 0x09, 0xa9, 0xfc, 0x84, 0xe6, 0x74, 0xdd, 0x62, + 0xb6, 0x30, 0xad, 0x55, 0x0b, 0x38, 0x98, 0x39, 0x2a, 0x77, 0x03, 0x65, 0x36, 0x47, 0x3c, 0xba, + 0x58, 0xd8, 0xea, 0xf4, 0x65, 0x20, 0xb0, 0xa4, 0xe8, 0xf6, 0xdb, 0xac, 0x66, 0x0f, 0x0f, 0xc4, + 0x61, 0x32, 0x40, 0xb2, 0xe3, 0x7a, 0x55, 0xe5, 0x3b, 0x1c, 0xe3, 0x27, 0x44, 0xd5, 0xd2, 0x2d, + 0xae, 0xc6, 0xa7, 0x55, 0xd1, 0xad, 0x2c, 0x30, 0x57, 0x98, 0x22, 0xb0, 0x14, 0x4e, 0x90, 0xcb, + 0x85, 0xdb, 0x41, 0x6d, 0x34, 0x75, 0x76, 0x93, 0xc0, 0x25, 0xd1, 0x91, 0xfa, 0x28, 0xa3, 0x22, + 0x73, 0x00, 0x62, 0x97, 0xb2, 0xf4, 0x20, 0xfd, 0x4e, 0x1d, 0x8a, 0x93, 0xd0, 0xbb, 0x50, 0x4c, + 0xbb, 0x46, 0xe8, 0x64, 0x7d, 0xdd, 0xe4, 0xb5, 0xc4, 0xdd, 0xf4, 0x0a, 0x58, 0xb3, 0x91, 0x24, + 0x72, 0x0e, 0xe7, 0xc9, 0xf9, 0x75, 0x04, 0xdb, 0x32, 0xfc, 0x7f, 0x17, 0xa1, 0x85, 0x09, 0xe4, + 0x76, 0xfb, 0xe2, 0xca, 0x41, 0xe8, 0x12, 0x2c, 0xef, 0x20, 0x14, 0xe0, 0x65, 0x3e, 0x17, 0x7b, + 0xd7, 0x76, 0xb4, 0xfd, 0x1f, 0x6a, 0xf1, 0xfc, 0xc5, 0x3d, 0xb4, 0xb9, 0xe8, 0x52, 0xe0, 0x68, + 0x5c, 0x76, 0x21, 0xc1, 0x2e, 0x95, 0xc8, 0x3f, 0xc4, 0x2c, 0xb8, 0x70, 0x10, 0xb8, 0x30, 0x6d, + 0x29, 0x18, 0xf8, 0x16, 0x9b, 0x0c, 0xdd, 0x78, 0xea, 0x4c, 0x5c, 0xba, 0xdd, 0x24, 0xb4, 0x83, + 0xdd, 0xc2, 0xd0, 0x0d, 0x03, 0x97, 0xf1, 0x48, 0xe3, 0x62, 0x17, 0x81, 0x4b, 0x77, 0xa4, 0x5f, + 0x5c, 0x05, 0x2e, 0xd7, 0x91, 0x41, 0xd2, 0xe6, 0x01, 0x04, 0xc7, 0x7b, 0xfb, 0x13, 0xd7, 0xe2, + 0xe1, 0x94, 0x6c, 0x1f, 0x96, 0x15, 0xa4, 0xd7, 0x50, 0xe0, 0xd5, 0x06, 0xdc, 0x19, 0x8e, 0x48, + 0xbb, 0x17, 0x07, 0x19, 0x6f, 0x36, 0x3b, 0xb0, 0x57, 0x56, 0xf9, 0xa9, 0xcc, 0xe6, 0x07, 0xdf, + 0xd7, 0x44, 0x46, 0x13, 0x5d, 0x92, 0xd2, 0x84, 0x65, 0xd3, 0xf5, 0x60, 0x53, 0xfb, 0xbe, 0x27, + 0xb9, 0x5f, 0x9c, 0x62, 0xdf, 0x8a, 0x60, 0xe4, 0x84, 0x94, 0xa3, 0x4a, 0x7a, 0x77, 0x04, 0x49, + 0x73, 0x98, 0xda, 0xcd, 0xf8, 0x37, 0x5d, 0x94, 0xd4, 0x41, 0x0f, 0x36, 0xc0, 0xbd, 0x76, 0xf0, + 0xaf, 0x3a, 0x38, 0x01, 0x11, 0x25, 0x29, 0xf2, 0xbd, 0xd7, 0x5c, 0x82, 0xf2, 0xee, 0x63, 0xfe, + 0xcb, 0xd5, 0xb8, 0x0b, 0x23, 0x2d, 0x85, 0x91, 0x06, 0xa3, 0x4c, 0x8d, 0xb5, 0x7a, 0xae, 0x2d, + 0x57, 0x6e, 0xdb, 0x19, 0x3a, 0xbd, 0x25, 0xac, 0x9f, 0xdf, 0x8c, 0x46, 0xa3, 0xce, 0x6e, 0xef, + 0xe0, 0xbb, 0xa0, 0x83, 0xec, 0xda, 0xe8, 0x49, 0x5c, 0xec, 0x78, 0x01, 0xfe, 0xbd, 0x92, 0x7f, + 0xc7, 0xb0, 0x85, 0xe3, 0x72, 0xb4, 0xa2, 0x84, 0xa3, 0xb6, 0xf2, 0xfd, 0xfa, 0x2f, 0x29, 0x5f, + 0x18, 0x86, 0x9b, 0x95, 0xcf, 0xfa, 0xf2, 0xdf, 0x75, 0xc3, 0xda, 0xbd, 0xf5, 0x59, 0xa4, 0x70, + 0x3a, 0x31, 0xb3, 0x04, 0x86, 0x09, 0x5f, 0x9e, 0xf7, 0xe7, 0x3d, 0x10, 0xfe, 0x58, 0xf1, 0xf5, + 0x59, 0x7c, 0x41, 0xba, 0x87, 0x67, 0xcf, 0x90, 0xd1, 0x82, 0x50, 0x01, 0xed, 0xa5, 0x53, 0xde, + 0xb6, 0x17, 0xad, 0x29, 0xb4, 0x71, 0xc5, 0xa4, 0xd0, 0x99, 0xd8, 0xdc, 0x3b, 0xf6, 0x90, 0x1d, + 0x34, 0x8c, 0x86, 0x66, 0xae, 0xfc, 0xe0, 0x23, 0x58, 0x2a, 0x1f, 0x90, 0xf5, 0x94, 0xf7, 0xbe, + 0x41, 0x08, 0x62, 0x1b, 0x72, 0x11, 0xa6, 0x82, 0x3c, 0x30, 0x93, 0xba, 0xd9, 0x44, 0x9c, 0x4e, + 0x47, 0xa3, 0x30, 0xf4, 0x0c, 0x54, 0xe5, 0x8a, 0x69, 0x16, 0x33, 0xd8, 0x64, 0xe5, 0x0f, 0x43, + 0x32, 0x4c, 0xca, 0x45, 0xa5, 0x5f, 0x93, 0x55, 0xd5, 0xb2, 0x23, 0xb7, 0x4f, 0x44, 0x7e, 0xd3, + 0x83, 0x02, 0x8d, 0x22, 0xd2, 0xa2, 0x00, 0x82, 0x98, 0x33, 0x7f, 0x40, 0xbe, 0xad, 0xfc, 0xa8, + 0x16, 0xf4, 0xfa, 0x7a, 0x04, 0xdb, 0x5b, 0x0a, 0xed, 0x51, 0xde, 0x41, 0x47, 0xc2, 0xff, 0xe1, + 0xd2, 0x25, 0xfb, 0x6b, 0x08, 0xd9, 0x6a, 0xbd, 0x01, 0x7d, 0xb1, 0xba, 0x20, 0xd7, 0xce, 0x50, + 0xfa, 0x9b, 0x51, 0x7b, 0x38, 0xf9, 0x9c, 0xae, 0xcd, 0xa7, 0xf4, 0x5a, 0x97, 0x80, 0x5a, 0x3e, + 0xbf, 0xae, 0xcd, 0xe7, 0xce, 0x6b, 0x5d, 0x33, 0x6a, 0xf9, 0xfc, 0xbd, 0x99, 0x4f, 0x77, 0xce, + 0x23, 0x3e, 0x6a, 0x9b, 0x19, 0x8b, 0x5a, 0x7a, 0x9c, 0xcc, 0xce, 0x28, 0xad, 0xed, 0x0b, 0x41, + 0x15, 0xb7, 0xed, 0x0a, 0xd2, 0x70, 0x55, 0xdf, 0x13, 0x06, 0x66, 0xb0, 0x5c, 0xe0, 0xb4, 0x35, + 0xfe, 0x62, 0x04, 0x54, 0x71, 0xc1, 0xce, 0x3a, 0x59, 0xeb, 0x89, 0xa3, 0x3e, 0x36, 0x8b, 0x58, + 0x04, 0xf5, 0xb0, 0x2b, 0x64, 0x25, 0xa8, 0x85, 0x8d, 0xe3, 0x52, 0xc1, 0xc0, 0xcb, 0x57, 0xb5, + 0x2a, 0xfe, 0xe6, 0xfa, 0xd9, 0xea, 0xc3, 0x40, 0xd0, 0x7e, 0xf2, 0xa9, 0x1a, 0x73, 0x44, 0xa8, + 0x3a, 0xf3, 0x57, 0x64, 0x04, 0x77, 0xf0, 0x89, 0x9a, 0x6e, 0x4c, 0xce, 0x8c, 0xf9, 0xf2, 0x13, + 0x16, 0x59, 0x5b, 0x83, 0x2c, 0x48, 0x61, 0xd7, 0xa9, 0x7d, 0x13, 0xb6, 0x9b, 0x10, 0xcf, 0xa4, + 0x02, 0x01, 0xa6, 0xa0, 0x87, 0x7e, 0x4c, 0x61, 0xd5, 0xec, 0x22, 0xde, 0xf7, 0xda, 0x21, 0x43, + 0x6c, 0xd9, 0xfd, 0x2d, 0x4c, 0x6a, 0xf8, 0x08, 0xbb, 0x49, 0xab, 0xfe, 0x4d, 0x1f, 0xa5, 0x7c, + 0x65, 0x75, 0xac, 0x9f, 0x14, 0x46, 0xd0, 0x0b, 0xa5, 0xe2, 0xce, 0xcb, 0xf7, 0x8a, 0x28, 0x09, + 0x46, 0xd0, 0x09, 0x99, 0x09, 0xba, 0xa2, 0xa0, 0x71, 0x9c, 0x9a, 0xa0, 0x31, 0x05, 0xc1, 0xd2, + 0x52, 0x6f, 0x30, 0xfa, 0x88, 0x32, 0xeb, 0xc3, 0x47, 0xa2, 0xb3, 0xb3, 0xf3, 0x80, 0xfe, 0x3b, + 0x5f, 0x2c, 0xa4, 0xd9, 0x1b, 0xb1, 0xfd, 0x29, 0x76, 0x7c, 0xc6, 0x8d, 0x93, 0x9c, 0xd7, 0xcd, + 0xda, 0x8e, 0xbe, 0x75, 0x94, 0xa2, 0x5f, 0x77, 0xbb, 0x49, 0x60, 0x32, 0xa9, 0x6c, 0xbd, 0xb4, + 0x23, 0x0f, 0x48, 0x9e, 0xfa, 0x3f, 0x63, 0x11, 0x61, 0x2c, 0xcf, 0x0b, 0xcd, 0x3b, 0x2f, 0x16, + 0xcf, 0x51, 0x3e, 0xfc, 0x18, 0xf7, 0x2f, 0x96, 0x32, 0xa3, 0x8b, 0x3d, 0xbc, 0x6e, 0xd0, 0xb5, + 0xc1, 0x34, 0xbd, 0x10, 0x4e, 0x96, 0x71, 0x17, 0xd7, 0x52, 0x49, 0x96, 0xf3, 0xe6, 0xe7, 0x9f, + 0x4e, 0xb0, 0xb8, 0x85, 0xcf, 0x2a, 0x91, 0x77, 0xb8, 0xde, 0xf0, 0x72, 0x2f, 0x02, 0xba, 0xe8, + 0xf2, 0xfc, 0xe1, 0x06, 0xc7, 0x50, 0x3b, 0xc7, 0xf5, 0x68, 0xc2, 0xfc, 0xd6, 0x18, 0x51, 0x42, + 0x88, 0x0e, 0x1b, 0xd4, 0xa4, 0x78, 0xbf, 0xc5, 0x8f, 0xda, 0x48, 0x54, 0xe9, 0xcd, 0x82, 0x4f, + 0xc4, 0xd7, 0x13, 0xfb, 0x38, 0x8c, 0x94, 0x2d, 0xff, 0x8d, 0x0b, 0xa8, 0x2c, 0x27, 0x3e, 0x33, + 0xeb, 0x0f, 0x72, 0xfd, 0x5c, 0x25, 0xd5, 0xf5, 0xed, 0x18, 0x55, 0xfd, 0xcf, 0x5f, 0x25, 0xc5, + 0x24, 0xcf, 0xf3, 0xcf, 0x89, 0x78, 0x8e, 0xcc, 0x4f, 0xd0, 0x2c, 0x9f, 0x13, 0xd4, 0x38, 0xd4, + 0xa1, 0xba, 0x15, 0xa0, 0x5a, 0xb7, 0x7b, 0x3d, 0xd9, 0x89, 0x7b, 0x2f, 0xfd, 0xa3, 0x7d, 0x84, + 0x5a, 0xed, 0xe2, 0x67, 0xfd, 0xe0, 0x7a, 0x72, 0xd4, 0x57, 0x8f, 0xfb, 0x21, 0xee, 0x86, 0x2f, + 0x5e, 0xc4, 0xf1, 0xf5, 0x84, 0x42, 0x76, 0xe2, 0x7d, 0x0c, 0x09, 0x5f, 0x5a, 0x21, 0x90, 0x81, + 0x3a, 0x00, 0x22, 0x8c, 0x97, 0xef, 0x88, 0x56, 0x17, 0xd7, 0x25, 0xba, 0x8e, 0x5e, 0x4f, 0x16, + 0x41, 0x07, 0x41, 0xd3, 0x82, 0xce, 0x41, 0xf8, 0x1d, 0x92, 0xdf, 0x06, 0x7f, 0xed, 0x29, 0xb0, + 0xee, 0x6c, 0x5a, 0x38, 0xc0, 0xbd, 0x10, 0xf0, 0x0b, 0x69, 0x67, 0x59, 0x79, 0x8c, 0xef, 0x9d, + 0x35, 0x92, 0xa4, 0x3d, 0x90, 0xc4, 0x3c, 0x7f, 0xa0, 0xe8, 0xa5, 0x96, 0x8b, 0x73, 0xb6, 0x57, + 0x21, 0x42, 0xbb, 0x4e, 0x93, 0xe2, 0xa6, 0xf3, 0x8b, 0x18, 0xe7, 0xb9, 0x94, 0xac, 0xbb, 0xfc, + 0x7d, 0x38, 0xc8, 0x37, 0x48, 0x93, 0x0a, 0x31, 0x8d, 0x35, 0xdc, 0x9f, 0x52, 0xe0, 0xa8, 0x22, + 0x9f, 0xba, 0x60, 0xc3, 0x70, 0x06, 0x29, 0xdd, 0xa5, 0xbc, 0x28, 0xb9, 0x8c, 0xaa, 0x0e, 0xa7, + 0xfe, 0x9f, 0x2c, 0x2d, 0x7f, 0xd9, 0x14, 0xf6, 0x94, 0x38, 0xff, 0x54, 0x19, 0x82, 0x25, 0xd9, + 0x4d, 0xeb, 0xd9, 0x51, 0x9b, 0x6a, 0x4b, 0xb7, 0x37, 0xb0, 0xfd, 0xd6, 0xe6, 0xec, 0x42, 0x11, + 0xb2, 0x2d, 0x5b, 0xf3, 0x7c, 0x4b, 0x57, 0xa9, 0xf3, 0x05, 0xc3, 0x3a, 0xb2, 0xed, 0x8d, 0x21, + 0x30, 0xf2, 0x59, 0x7c, 0x73, 0x1f, 0x58, 0x01, 0x90, 0xfe, 0x9f, 0xa4, 0xe5, 0xb0, 0xa2, 0x7c, + 0x8a, 0x6f, 0xae, 0x6d, 0x44, 0xfc, 0x9e, 0xe3, 0xec, 0x65, 0x7b, 0xc4, 0x49, 0x1b, 0xfa, 0x72, + 0x8f, 0x3b, 0x52, 0xca, 0x48, 0x8c, 0xd9, 0x37, 0xb0, 0x4e, 0xdb, 0x90, 0xce, 0x33, 0x2b, 0xdc, + 0xa5, 0x60, 0x20, 0xaa, 0xae, 0xd3, 0x2a, 0x2f, 0xe0, 0xb0, 0x8b, 0xf3, 0xf6, 0xb8, 0x12, 0x37, + 0x5d, 0xef, 0x3e, 0x25, 0xba, 0x88, 0x07, 0x4f, 0xba, 0x95, 0xe1, 0x59, 0x8f, 0x95, 0x21, 0x96, + 0x42, 0xb4, 0x62, 0x46, 0x13, 0x38, 0x60, 0xee, 0xdd, 0xd1, 0x65, 0x0b, 0xfc, 0xa3, 0xba, 0xd0, + 0xfe, 0x22, 0xbc, 0x99, 0x71, 0xe7, 0x20, 0x41, 0x64, 0xd7, 0x3e, 0x17, 0x2e, 0x9c, 0x78, 0xf3, + 0x45, 0x70, 0xa5, 0x4d, 0x6f, 0x5c, 0x89, 0x30, 0x90, 0x98, 0xb6, 0x56, 0x31, 0xcb, 0x46, 0x31, + 0x83, 0x1a, 0x74, 0xf2, 0x7c, 0x16, 0xd9, 0x19, 0x07, 0x77, 0x36, 0xec, 0x2b, 0x3c, 0x2c, 0x9a, + 0x92, 0x76, 0x20, 0x1c, 0x86, 0x28, 0x11, 0xfc, 0xf5, 0xaf, 0x8e, 0xd9, 0xab, 0x5e, 0x30, 0x5a, + 0x99, 0xdb, 0x60, 0x93, 0xe1, 0xc3, 0x0f, 0xc3, 0x19, 0xc9, 0x0e, 0x3b, 0xc2, 0x77, 0x57, 0xdc, + 0xaf, 0x00, 0x51, 0xb6, 0xd1, 0x93, 0x37, 0x84, 0x44, 0x2e, 0x51, 0x69, 0x67, 0xb7, 0xaf, 0x6b, + 0x5d, 0x81, 0xd6, 0x76, 0x1a, 0x09, 0x7a, 0x09, 0xf2, 0x40, 0x4f, 0x9b, 0x61, 0x5d, 0xf5, 0xd7, + 0xa8, 0xfc, 0x4e, 0x0f, 0xaa, 0xbf, 0x08, 0x0e, 0x42, 0x58, 0xab, 0xbb, 0xeb, 0x30, 0x7f, 0xad, + 0x0d, 0x11, 0xf1, 0xa8, 0x09, 0x06, 0x48, 0x0f, 0x4d, 0xb1, 0x5c, 0x16, 0xd3, 0xe0, 0x12, 0xa8, + 0xf3, 0x97, 0x87, 0x9c, 0xba, 0xbb, 0xae, 0x86, 0x97, 0x90, 0x28, 0xa4, 0xab, 0xb9, 0x30, 0x93, + 0xd8, 0x9b, 0x91, 0x53, 0x26, 0xec, 0x6c, 0x15, 0x88, 0x14, 0xbd, 0x41, 0x72, 0xa8, 0x71, 0x73, + 0x12, 0xc5, 0x6a, 0x90, 0xc5, 0xe5, 0x19, 0x6c, 0xeb, 0xe9, 0x86, 0xdc, 0x91, 0x20, 0xfe, 0xff, + 0x63, 0x36, 0x13, 0xc5, 0xeb, 0x11, 0x82, 0x98, 0x0f, 0xb2, 0x5a, 0xe9, 0x53, 0xad, 0x4a, 0x97, + 0x55, 0x70, 0xe3, 0x23, 0xf5, 0xa2, 0x72, 0x2a, 0x86, 0x5e, 0xb6, 0xd8, 0x02, 0x53, 0x31, 0xca, + 0x18, 0xae, 0xbc, 0x0d, 0xe5, 0x43, 0xce, 0x5f, 0x41, 0xe7, 0x82, 0x24, 0xbf, 0x2d, 0xdd, 0x26, + 0x54, 0x22, 0x0f, 0x52, 0x3c, 0xd8, 0x6e, 0xc4, 0x98, 0x09, 0x76, 0xd5, 0x5b, 0x3c, 0x3c, 0xd0, + 0xe6, 0xce, 0xbf, 0x3c, 0xb2, 0x38, 0xa3, 0xc8, 0xe2, 0x4d, 0x1f, 0xc8, 0xa3, 0x1d, 0x55, 0x8e, + 0xc8, 0xdf, 0x97, 0xa9, 0xce, 0xd9, 0x43, 0x8c, 0x14, 0x66, 0xbe, 0x48, 0xd2, 0x8a, 0x58, 0x2a, + 0x5a, 0x9a, 0x9b, 0x2d, 0xd7, 0x74, 0xb1, 0x43, 0x5d, 0xcb, 0x3c, 0x6f, 0xf2, 0x3e, 0x69, 0x4a, + 0x7b, 0xe7, 0xbc, 0x4f, 0xd9, 0xbe, 0x7b, 0x50, 0xa4, 0x32, 0xc2, 0x66, 0xf8, 0xab, 0x14, 0x41, + 0xac, 0x72, 0xb7, 0x57, 0x12, 0x63, 0x78, 0xae, 0xeb, 0xaa, 0x33, 0x1e, 0x1a, 0xb2, 0xd2, 0x69, + 0x5a, 0x45, 0x4f, 0x6e, 0x83, 0xaf, 0xad, 0x65, 0x05, 0xb5, 0xac, 0xb4, 0x3b, 0x86, 0xa9, 0xad, + 0x33, 0x1b, 0x10, 0x4d, 0x75, 0x54, 0xbd, 0x2a, 0xcc, 0x39, 0x3c, 0x40, 0x42, 0x4b, 0x03, 0xe4, + 0x84, 0x6d, 0xe0, 0x5e, 0x42, 0x17, 0x78, 0xeb, 0xc6, 0x57, 0xa3, 0x94, 0x9e, 0x06, 0x2c, 0x21, + 0x67, 0x68, 0xfa, 0xcb, 0x62, 0x3a, 0x5e, 0x53, 0x78, 0x7c, 0x96, 0x9d, 0x23, 0x3f, 0x4b, 0xb7, + 0xe2, 0x78, 0x32, 0x53, 0xff, 0xb0, 0xf4, 0x35, 0x92, 0x16, 0x1c, 0xa2, 0xd2, 0xc3, 0x72, 0xb7, + 0x1a, 0xa4, 0x30, 0xf4, 0x39, 0x16, 0x6d, 0x36, 0x82, 0x2f, 0xf7, 0xec, 0xf6, 0x98, 0xb4, 0xaa, + 0x51, 0x08, 0x0b, 0xea, 0xde, 0x9f, 0x67, 0x0e, 0xf6, 0xbd, 0x5b, 0x9c, 0xaa, 0xc0, 0xd2, 0x58, + 0x40, 0xf7, 0x76, 0xa1, 0x2c, 0x1c, 0x21, 0xb7, 0x6c, 0xf5, 0x72, 0x59, 0x11, 0x65, 0xf1, 0xec, + 0x3b, 0x3c, 0x58, 0x4a, 0xd3, 0xa8, 0xda, 0xd9, 0xd4, 0x92, 0x6c, 0xd8, 0x0d, 0x9f, 0x41, 0xa7, + 0x84, 0xe5, 0x83, 0x9f, 0x4b, 0x79, 0x4f, 0xca, 0x8a, 0x33, 0xe9, 0xae, 0x5d, 0x63, 0x59, 0x86, + 0x16, 0x75, 0x94, 0xcd, 0x65, 0xab, 0xb2, 0xd9, 0xa2, 0xed, 0x15, 0xd0, 0xf1, 0x95, 0xcb, 0x84, + 0xac, 0x62, 0xe9, 0xbb, 0x2f, 0xbc, 0xaf, 0xb6, 0x78, 0xfe, 0x9b, 0x18, 0x81, 0x38, 0xa2, 0xee, + 0x54, 0x9d, 0x8d, 0x45, 0xae, 0xa7, 0x32, 0xfe, 0x48, 0x26, 0x1d, 0xe2, 0x01, 0x6b, 0x93, 0x78, + 0xe6, 0x0f, 0xd5, 0xcd, 0xbb, 0xec, 0x3c, 0x9e, 0xc9, 0x1f, 0xda, 0x9a, 0x11, 0x98, 0x31, 0xa8, + 0x63, 0x11, 0x04, 0x36, 0x74, 0xa1, 0x0e, 0x90, 0x28, 0x3a, 0xbe, 0x81, 0xec, 0xd1, 0x61, 0xb1, + 0x41, 0xbb, 0xca, 0x08, 0xc1, 0xc6, 0x8e, 0x41, 0x64, 0x05, 0xf5, 0xbc, 0x10, 0xa6, 0xdb, 0xc9, + 0x08, 0xf1, 0x87, 0xd4, 0xad, 0x1e, 0xee, 0x21, 0xdb, 0x98, 0xc8, 0x97, 0x82, 0x32, 0xe2, 0x9c, + 0xb3, 0xae, 0x01, 0x65, 0x8a, 0xab, 0x67, 0x69, 0x0a, 0xe3, 0x05, 0x3c, 0x4b, 0x7e, 0x85, 0x73, + 0x3d, 0x04, 0x28, 0xa3, 0x4a, 0x66, 0xdb, 0x79, 0xe3, 0x14, 0x75, 0xfc, 0x69, 0xd3, 0xdc, 0x29, + 0x11, 0xb9, 0x39, 0x41, 0xcd, 0x38, 0xce, 0x34, 0x0c, 0x74, 0xff, 0x24, 0x5b, 0x6a, 0x52, 0x69, + 0xdc, 0x98, 0x62, 0xe4, 0x11, 0x8b, 0x24, 0x7d, 0x49, 0x0d, 0x3c, 0x6f, 0x33, 0x2b, 0xcd, 0xa2, + 0xfa, 0x13, 0x97, 0x9e, 0x2c, 0x65, 0x7c, 0x46, 0x2b, 0xa2, 0x51, 0xc6, 0x37, 0x7c, 0x7f, 0xc6, + 0xe9, 0x6d, 0xd1, 0x6d, 0xa5, 0x9b, 0x6b, 0xbe, 0xb1, 0xdd, 0x71, 0xf8, 0xed, 0x82, 0x51, 0x28, + 0xfe, 0xf7, 0x75, 0x93, 0xb6, 0x48, 0x8d, 0x5b, 0xe4, 0x06, 0x0e, 0x3e, 0xc4, 0x2f, 0x68, 0x16, + 0x26, 0x54, 0x12, 0x38, 0x20, 0x3f, 0x84, 0x92, 0xe2, 0x83, 0x2a, 0x77, 0x4a, 0xf6, 0x46, 0xd9, + 0xea, 0x03, 0xab, 0xf4, 0x4c, 0x91, 0x31, 0xd7, 0x22, 0x83, 0x84, 0xc2, 0xf8, 0x98, 0xdf, 0x42, + 0x2f, 0x95, 0xc3, 0x7a, 0x00, 0x72, 0xbb, 0x08, 0x4b, 0xc9, 0x3a, 0x2a, 0x8f, 0x8b, 0x9c, 0xc0, + 0xe6, 0x30, 0x17, 0xb5, 0x24, 0x32, 0x2b, 0xa5, 0xb0, 0xb9, 0x28, 0xe9, 0x90, 0xa2, 0x69, 0x1a, + 0xcb, 0xdf, 0x40, 0x9c, 0xec, 0x7a, 0x90, 0x56, 0x5b, 0xc4, 0xe1, 0xfc, 0xaf, 0x48, 0x3f, 0xed, + 0xd3, 0xf8, 0xe4, 0xb3, 0xda, 0xc7, 0x66, 0x13, 0x84, 0xf8, 0x57, 0x2b, 0x12, 0xac, 0x5e, 0xa3, + 0xe2, 0x4a, 0x58, 0xd3, 0x98, 0x96, 0x7d, 0x19, 0xe8, 0xee, 0xb8, 0x3a, 0xca, 0xc0, 0x9e, 0xeb, + 0x59, 0x4e, 0x6d, 0xee, 0xf9, 0x8f, 0x8f, 0x76, 0x35, 0xaa, 0xda, 0x73, 0x09, 0xcf, 0x5d, 0x68, + 0x4c, 0xd5, 0x54, 0x90, 0x1b, 0x6a, 0xb0, 0xff, 0xa9, 0x1b, 0xf6, 0xea, 0xed, 0x8f, 0xaf, 0x3f, + 0x74, 0xbd, 0x6a, 0x34, 0x9e, 0xf0, 0x61, 0x14, 0xe4, 0x73, 0xee, 0x85, 0x73, 0x39, 0xb2, 0x3e, + 0xe6, 0xb3, 0xe0, 0x7f, 0x5f, 0xb7, 0x5d, 0x50, 0x92, 0xc3, 0x6b, 0xab, 0xab, 0xfa, 0x26, 0xf4, + 0x1d, 0xac, 0x3c, 0x1a, 0xfb, 0x5c, 0x7f, 0x8e, 0xf1, 0xec, 0x59, 0xad, 0x1d, 0x9a, 0xc5, 0x8a, + 0xab, 0xdd, 0x07, 0x24, 0x12, 0x25, 0x53, 0x13, 0x1d, 0x51, 0x4b, 0xa4, 0x7b, 0xdb, 0xe9, 0x66, + 0xdf, 0x97, 0xcf, 0xef, 0x7f, 0x83, 0x53, 0x6d, 0xfe, 0x2e, 0x79, 0x10, 0x97, 0x08, 0x63, 0x19, + 0x6e, 0xe1, 0x1a, 0xdb, 0xe5, 0xe2, 0x1e, 0x85, 0x84, 0x9d, 0xe5, 0xeb, 0x80, 0x43, 0xe2, 0x2d, + 0xc6, 0x80, 0xf4, 0x68, 0xaf, 0xd7, 0x87, 0x63, 0xcb, 0x26, 0x55, 0x05, 0x11, 0x86, 0x5b, 0x06, + 0xf2, 0x81, 0x5a, 0xf3, 0xa9, 0x8b, 0x5c, 0xa1, 0x72, 0x38, 0xae, 0x55, 0x5f, 0xba, 0xde, 0xee, + 0x6e, 0xe2, 0x05, 0x9c, 0x6e, 0x17, 0x11, 0xbf, 0xd3, 0xb8, 0xb7, 0x9b, 0x2a, 0x3d, 0xdb, 0x08, + 0x0f, 0x5e, 0x9f, 0x4b, 0x59, 0x04, 0x38, 0x45, 0x2c, 0xcb, 0x63, 0xea, 0x05, 0xa9, 0xbf, 0x69, + 0xbb, 0xf6, 0x20, 0x23, 0x39, 0x23, 0x6c, 0x47, 0x2e, 0x42, 0xbb, 0x9f, 0xdf, 0xff, 0x16, 0x4b, + 0x99, 0x9c, 0x96, 0x0f, 0x82, 0xc2, 0x1e, 0x58, 0x12, 0x36, 0x5d, 0x40, 0x94, 0x0d, 0xcc, 0x38, + 0xc7, 0x83, 0xf2, 0x75, 0x9e, 0x62, 0x21, 0xf0, 0x2b, 0x92, 0x17, 0x2c, 0x50, 0x61, 0x63, 0xa5, + 0x63, 0xa6, 0xf5, 0xc5, 0x49, 0x27, 0x63, 0x4a, 0xae, 0x02, 0xa8, 0xfd, 0x0b, 0x93, 0x0c, 0xd9, + 0x95, 0x55, 0x56, 0x92, 0xd5, 0x83, 0x7a, 0x1a, 0x56, 0x08, 0x14, 0xba, 0xee, 0xe3, 0xfb, 0xdf, + 0x1a, 0xb4, 0x1f, 0x1c, 0x81, 0xe1, 0x73, 0x09, 0x0c, 0x8e, 0x02, 0x5e, 0xc5, 0x72, 0x90, 0xbc, + 0x0a, 0xda, 0x25, 0xbe, 0xd9, 0xe4, 0xc6, 0x0b, 0x64, 0x14, 0xf4, 0x60, 0xa0, 0x5f, 0x90, 0x3f, + 0x6e, 0x95, 0xfd, 0x17, 0xcf, 0x9e, 0xa9, 0xd4, 0xa4, 0x28, 0x54, 0xea, 0x48, 0xbc, 0x77, 0x0a, + 0xcd, 0xc5, 0xef, 0x9e, 0x3d, 0x83, 0xd8, 0x10, 0x79, 0x1f, 0x7f, 0x1c, 0xf6, 0xfa, 0x07, 0xe1, + 0xb0, 0xbf, 0x1f, 0x46, 0xfd, 0x1f, 0x60, 0x87, 0xd9, 0xc2, 0x92, 0x60, 0x28, 0xe5, 0x45, 0x65, + 0xa7, 0xdf, 0x8f, 0x8f, 0xe6, 0x0b, 0x14, 0xca, 0x0f, 0x38, 0xbf, 0x50, 0xd7, 0x04, 0x3d, 0xcf, + 0xf7, 0x56, 0xeb, 0x23, 0x41, 0xed, 0x6b, 0x7c, 0x79, 0xf1, 0x04, 0xca, 0x6e, 0xc3, 0xdf, 0x73, + 0x79, 0x6c, 0xf4, 0x7b, 0xbb, 0xf1, 0x79, 0xe4, 0x30, 0x09, 0x5c, 0xac, 0x8a, 0x6e, 0x6e, 0x82, + 0x40, 0x43, 0x40, 0xbc, 0xa1, 0x17, 0xa2, 0xec, 0x78, 0x5b, 0xe5, 0xde, 0x13, 0x3a, 0x51, 0x8f, + 0x4b, 0xbe, 0x9e, 0xad, 0xca, 0x81, 0xda, 0x27, 0xc8, 0xed, 0x05, 0xfe, 0xb1, 0xf1, 0x0b, 0x04, + 0x2c, 0x4c, 0x6f, 0x84, 0x40, 0xf7, 0xec, 0xbd, 0xbd, 0x3d, 0xc9, 0x5e, 0xae, 0x48, 0x88, 0xb4, + 0xca, 0x46, 0xf3, 0x96, 0xc3, 0xae, 0x74, 0x9d, 0x4c, 0x41, 0x2a, 0xe4, 0x4b, 0x26, 0x20, 0x73, + 0x92, 0x63, 0x1e, 0xff, 0x2a, 0x7d, 0xdf, 0x06, 0x28, 0x4a, 0x60, 0x24, 0xfb, 0xf2, 0x0d, 0x82, + 0x02, 0x0c, 0x69, 0xa5, 0x7d, 0x7c, 0x74, 0x05, 0x55, 0x11, 0xcc, 0x21, 0x94, 0x1c, 0x26, 0x02, + 0xab, 0x34, 0x10, 0x16, 0x50, 0x2a, 0x3f, 0x6a, 0x8d, 0x4f, 0xd8, 0x04, 0x5a, 0x03, 0xd6, 0xa8, + 0xc6, 0x82, 0xe7, 0xd0, 0xd2, 0x59, 0x9a, 0x79, 0x01, 0x8c, 0x71, 0x39, 0xbd, 0x60, 0xe7, 0x25, + 0x19, 0x01, 0x27, 0xab, 0xc8, 0xd0, 0x8c, 0xc5, 0x83, 0xca, 0x23, 0xde, 0x09, 0xea, 0x7b, 0xc8, + 0xa7, 0x19, 0xeb, 0x26, 0x47, 0x67, 0xbf, 0xfc, 0x1e, 0x32, 0xc3, 0x09, 0x1d, 0xe0, 0xc1, 0xa1, + 0x35, 0x62, 0x85, 0xbb, 0x14, 0xc3, 0xfc, 0xaf, 0x89, 0x49, 0x59, 0x82, 0x64, 0xee, 0x05, 0xb8, + 0xc6, 0xae, 0x89, 0x77, 0x3b, 0x5b, 0x17, 0x8d, 0x3e, 0x0c, 0x87, 0x30, 0x13, 0xef, 0xbf, 0x0e, + 0x9f, 0xc3, 0x3a, 0x98, 0xcc, 0xaa, 0xa3, 0xce, 0xe1, 0x73, 0xa4, 0x6e, 0xc2, 0xbf, 0xd7, 0xd5, + 0x4d, 0x7a, 0xd4, 0xf9, 0x3f, 0x4c, 0xe6, 0xe3, 0x68, 0x05, 0x8d, 0x01, 0x00 }; diff --git a/wled00/udp.cpp b/wled00/udp.cpp index 34af30332..acd2bd06b 100644 --- a/wled00/udp.cpp +++ b/wled00/udp.cpp @@ -669,6 +669,7 @@ void sendSysInfoUDP() #else data[38] = NODE_TYPE_ID_UNDEFINED; #endif + if (bri) data[38] |= 0x80U; // add on/off state data[39] = ip[3]; // unit ID == last IP number uint32_t build = VERSION; diff --git a/wled00/wled.h b/wled00/wled.h index 152110b2a..0a3642422 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2306270 +#define VERSION 2307130 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From ae235aa58c53a8ac53de1e6dced6e906975b9f7f Mon Sep 17 00:00:00 2001 From: cschwinne Date: Fri, 14 Jul 2023 01:12:19 +0200 Subject: [PATCH 44/70] Fix UI handling of in-between inactive segments --- wled00/data/index.js | 7 +- wled00/html_ui.h | 4001 +++++++++++++++++++++--------------------- 2 files changed, 2005 insertions(+), 2003 deletions(-) diff --git a/wled00/data/index.js b/wled00/data/index.js index 9aa7a4b70..145ed2f22 100644 --- a/wled00/data/index.js +++ b/wled00/data/index.js @@ -826,6 +826,7 @@ function populateSegments(s) resetUtil(noNewSegs); if (gId('selall')) gId('selall').checked = true; for (var i = 0; i <= lSeg; i++) { + if (!gId(`seg${i}`)) continue; updateLen(i); updateTrail(gId(`seg${i}bri`)); gId(`segr${i}`).classList.add("hide"); @@ -2051,14 +2052,14 @@ function tglSegn(s) function selSegAll(o) { var obj = {"seg":[]}; - for (let i=0; i<=lSeg; i++) obj.seg.push({"id":i,"sel":o.checked}); + for (let i=0; i<=lSeg; i++) if (gId(`seg${i}`)) obj.seg.push({"id":i,"sel":o.checked}); requestJson(obj); } function selSegEx(s) { var obj = {"seg":[]}; - for (let i=0; i<=lSeg; i++) obj.seg.push({"id":i,"sel":(i==s)}); + for (let i=0; i<=lSeg; i++) if (gId(`seg${i}`)) obj.seg.push({"id":i,"sel":(i==s)}); obj.mainseg = s; requestJson(obj); } @@ -2076,7 +2077,7 @@ function selGrp(g) event.stopPropagation(); var sel = gId(`segcont`).querySelectorAll(`div[data-set="${g}"]`); var obj = {"seg":[]}; - for (let i=0; i<=lSeg; i++) obj.seg.push({"id":i,"sel":false}); + for (let i=0; i<=lSeg; i++) if (gId(`seg${i}`)) obj.seg.push({"id":i,"sel":false}); if (sel) for (let s of sel||[]) { let i = parseInt(s.id.substring(3)); obj.seg[i] = {"id":i,"sel":true}; diff --git a/wled00/html_ui.h b/wled00/html_ui.h index 5952efee3..84a71595f 100644 --- a/wled00/html_ui.h +++ b/wled00/html_ui.h @@ -7,2005 +7,2006 @@ */ // Autogenerated from wled00/data/index.htm, do not edit!! -const uint16_t PAGE_index_L = 31981; +const uint16_t PAGE_index_L = 32000; const uint8_t PAGE_index[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xcc, 0xbd, 0xe9, 0x76, 0xe2, 0xca, - 0xb2, 0x30, 0xf8, 0xdf, 0x4f, 0xa1, 0x52, 0xed, 0xe3, 0x82, 0x83, 0x0c, 0x62, 0x34, 0x43, 0x61, - 0x7f, 0x18, 0xcf, 0xb3, 0x8d, 0xe7, 0xba, 0xb5, 0xbe, 0x12, 0x90, 0x80, 0x6c, 0x21, 0xc9, 0x92, - 0x18, 0x6c, 0x8a, 0xfb, 0x18, 0xbd, 0x56, 0xbf, 0x40, 0xff, 0xe8, 0x7e, 0xab, 0x7e, 0x92, 0x8e, - 0xc8, 0xd4, 0x90, 0x12, 0x02, 0xbb, 0xf6, 0xdd, 0xf7, 0xae, 0xde, 0xe7, 0x94, 0x91, 0x72, 0x88, - 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x88, 0x8c, 0x4c, 0x7d, 0xff, 0xb2, 0x7b, 0xd1, 0xbc, 0x79, 0xbc, - 0xdc, 0x13, 0x06, 0xce, 0x50, 0xdb, 0x12, 0xbe, 0xe3, 0x8f, 0xa0, 0x29, 0x7a, 0xbf, 0x2e, 0x12, - 0x5d, 0xc4, 0x04, 0xa2, 0x74, 0xe1, 0x67, 0x48, 0x1c, 0x45, 0xd0, 0x95, 0x21, 0xa9, 0x8b, 0x63, - 0x95, 0x4c, 0x4c, 0xc3, 0x72, 0x44, 0x61, 0xad, 0x63, 0xe8, 0x0e, 0xd1, 0x9d, 0xba, 0x38, 0x51, - 0xbb, 0xce, 0xa0, 0xde, 0x25, 0x63, 0xb5, 0x43, 0x36, 0xe8, 0x8b, 0xa4, 0xea, 0xaa, 0xa3, 0x2a, - 0xda, 0x86, 0xdd, 0x51, 0x34, 0x52, 0xcf, 0x4a, 0x43, 0x48, 0x18, 0x8e, 0x86, 0xde, 0xbb, 0xe8, - 0x01, 0x5d, 0xeb, 0x0c, 0x14, 0xcb, 0x26, 0x00, 0x64, 0xe4, 0xf4, 0x36, 0xca, 0x62, 0xb8, 0x31, - 0x67, 0x40, 0x86, 0x64, 0xa3, 0x63, 0x68, 0x86, 0x25, 0x0a, 0x7e, 0x73, 0x5f, 0x73, 0xf4, 0x3f, - 0x0e, 0x86, 0x97, 0xf3, 0x46, 0x6c, 0xd1, 0xad, 0xaa, 0x98, 0xa6, 0x46, 0x36, 0x86, 0x46, 0x5b, - 0x85, 0x9f, 0x09, 0x69, 0x6f, 0x40, 0xc2, 0x46, 0x47, 0x31, 0x95, 0xb6, 0x46, 0xb0, 0xa6, 0xa6, - 0xea, 0x2f, 0x82, 0x45, 0xb4, 0xba, 0x68, 0x0f, 0xa0, 0x3b, 0x9d, 0x91, 0x23, 0xa8, 0x00, 0x07, - 0xba, 0x35, 0xb0, 0x48, 0xaf, 0x2e, 0x76, 0x15, 0x47, 0xa9, 0xaa, 0x43, 0xa5, 0x4f, 0x32, 0xd3, - 0x0d, 0xcc, 0xa9, 0xb5, 0x15, 0x9b, 0x94, 0x0a, 0x52, 0xa3, 0xd1, 0xd8, 0x69, 0x34, 0xf6, 0x1a, - 0x7b, 0xf0, 0x17, 0x7f, 0x0f, 0x1a, 0xcd, 0x03, 0x7c, 0xda, 0xef, 0xc3, 0x9f, 0x23, 0xed, 0xea, - 0xe6, 0xa5, 0x73, 0xde, 0x1c, 0x18, 0x27, 0x98, 0xb6, 0x7b, 0xab, 0x1d, 0x5d, 0xef, 0x1f, 0xe1, - 0xe3, 0x15, 0x2b, 0xdd, 0xa7, 0x65, 0x0f, 0x33, 0x97, 0x99, 0x47, 0x4c, 0xd9, 0xcb, 0x1e, 0x5f, - 0xef, 0xed, 0xdf, 0x5e, 0x1c, 0x65, 0x9f, 0x21, 0x29, 0x73, 0x39, 0xb9, 0x98, 0xf6, 0xcf, 0x0f, - 0x48, 0xe3, 0xf6, 0x6c, 0xba, 0x57, 0x39, 0x28, 0x75, 0xae, 0x9a, 0x27, 0xbb, 0xf7, 0x8d, 0x81, - 0xd9, 0xd8, 0x7d, 0xca, 0xf5, 0xca, 0x97, 0x67, 0xcf, 0x3b, 0xad, 0xfc, 0xd5, 0xbd, 0x5c, 0xbe, - 0x3a, 0xc9, 0xc9, 0x27, 0xca, 0x53, 0x33, 0xd7, 0xef, 0x35, 0x2b, 0x83, 0xa6, 0xfe, 0x6a, 0x8c, - 0x8c, 0xf3, 0x7e, 0xe3, 0xba, 0xff, 0xb8, 0xf9, 0x7e, 0x36, 0x6d, 0xbc, 0x9d, 0x6b, 0xb7, 0xdd, - 0xab, 0x43, 0xed, 0x41, 0x6d, 0x68, 0x17, 0xb9, 0xb3, 0xdd, 0xc6, 0x6e, 0x29, 0xbf, 0x77, 0xf7, - 0x7a, 0x7e, 0xd8, 0x20, 0x72, 0x83, 0x22, 0xa2, 0xed, 0xdf, 0xbc, 0xb4, 0x46, 0x57, 0xc3, 0x66, - 0x53, 0xdc, 0x5a, 0x13, 0xbe, 0x3b, 0xaa, 0xa3, 0x91, 0xad, 0xfb, 0xd3, 0xbd, 0xdd, 0xef, 0x19, - 0xf6, 0x2c, 0x7c, 0xb7, 0x3b, 0x96, 0x6a, 0x3a, 0x5b, 0x6b, 0xbd, 0x91, 0xde, 0x71, 0x54, 0x43, - 0x17, 0x7a, 0x84, 0x74, 0xdb, 0x4a, 0xe7, 0x25, 0x91, 0x9c, 0xcd, 0xc7, 0x8a, 0x25, 0xc0, 0x90, - 0x1b, 0x9d, 0xd1, 0x10, 0x28, 0x9f, 0xee, 0x13, 0x67, 0x4f, 0x23, 0xf8, 0x68, 0xef, 0xbc, 0xdd, - 0x28, 0xfd, 0x73, 0x18, 0x83, 0x84, 0x88, 0xdc, 0x23, 0x26, 0x7f, 0xc8, 0x3f, 0x25, 0x2d, 0x28, - 0xda, 0xb1, 0x88, 0xe2, 0x10, 0xb7, 0x74, 0x42, 0x64, 0xad, 0x88, 0xc9, 0x9a, 0x96, 0x76, 0xde, - 0x4c, 0x77, 0xe0, 0xd4, 0x8e, 0x82, 0x2d, 0x66, 0x9e, 0x95, 0xb1, 0xe2, 0x16, 0x90, 0xb4, 0xb4, - 0x6d, 0x75, 0xea, 0xa2, 0x6a, 0x19, 0xe9, 0x67, 0x1b, 0x5f, 0x95, 0x6e, 0x77, 0x6f, 0x0c, 0x30, - 0x4e, 0x55, 0x1b, 0x46, 0x9f, 0x58, 0x09, 0x51, 0x33, 0xa0, 0x3d, 0x89, 0xd4, 0xb7, 0x66, 0x1d, - 0x53, 0xed, 0xbc, 0xd4, 0x75, 0x32, 0x11, 0xb0, 0x7c, 0x13, 0x19, 0xe8, 0x12, 0x52, 0xb0, 0xd0, - 0x57, 0x93, 0x3e, 0x88, 0xd2, 0x8c, 0x72, 0x6a, 0x35, 0x57, 0x92, 0xa5, 0xc9, 0x80, 0x10, 0xed, - 0x54, 0xed, 0x0f, 0x1c, 0x9d, 0xd8, 0x76, 0xf5, 0x4b, 0x96, 0xa5, 0x34, 0xf4, 0xbe, 0x46, 0xaa, - 0xb9, 0x4d, 0xb7, 0xc0, 0xae, 0x6a, 0x11, 0x4a, 0x89, 0xaa, 0xd8, 0xd1, 0x8c, 0xce, 0xcb, 0x44, - 0xb5, 0x09, 0x20, 0xa2, 0xbc, 0x19, 0x23, 0xa7, 0xfa, 0x63, 0xd6, 0x31, 0x86, 0xa6, 0xa1, 0x03, - 0x42, 0x55, 0x6c, 0x73, 0xa4, 0xa6, 0xef, 0xb1, 0x92, 0x64, 0x98, 0x58, 0xc5, 0xae, 0xce, 0xe6, - 0xf3, 0x9f, 0xf3, 0xa4, 0x44, 0x31, 0x4b, 0x1b, 0x7a, 0x42, 0x54, 0x75, 0x13, 0xea, 0x11, 0x1d, - 0x50, 0x4e, 0x24, 0x01, 0x67, 0x98, 0x05, 0x14, 0xd1, 0x44, 0x36, 0x19, 0x2a, 0x47, 0xd9, 0xbf, - 0x0a, 0xf3, 0x44, 0xef, 0x13, 0xb7, 0xe8, 0xc8, 0x04, 0xf6, 0x24, 0x97, 0x2d, 0x4d, 0xed, 0x12, - 0xcb, 0x4e, 0x40, 0xf9, 0x1a, 0x0e, 0x88, 0xf3, 0x31, 0x95, 0x9d, 0x0f, 0xa8, 0xec, 0x30, 0x2a, - 0x5b, 0xd8, 0x98, 0x63, 0x8c, 0x3a, 0x03, 0x4a, 0x6c, 0x67, 0x25, 0xb1, 0x69, 0x61, 0xbb, 0x7e, - 0x8d, 0x3f, 0x37, 0xb4, 0x0e, 0x74, 0x65, 0x64, 0x26, 0xbe, 0xd1, 0x1e, 0xfe, 0x60, 0x0d, 0xd2, - 0x42, 0xe2, 0xcf, 0x6f, 0xd2, 0x0c, 0x90, 0xd5, 0x88, 0x03, 0xc8, 0x42, 0xa9, 0x23, 0x98, 0xb8, - 0xd6, 0x58, 0xd1, 0x12, 0xb4, 0x5b, 0x22, 0x92, 0x10, 0xf2, 0x88, 0x58, 0xaf, 0x07, 0x5d, 0x81, - 0x9e, 0x74, 0xdf, 0x5a, 0x0e, 0x74, 0x67, 0x7d, 0x3d, 0xd1, 0xd1, 0x88, 0x62, 0xf9, 0xb5, 0x9c, - 0xa4, 0x64, 0xe8, 0xa7, 0x80, 0x48, 0x22, 0x99, 0x9c, 0x4b, 0x59, 0x59, 0x46, 0xca, 0x01, 0xd8, - 0x1b, 0x75, 0x48, 0x60, 0x50, 0x18, 0xd4, 0x41, 0x1a, 0x3a, 0x0b, 0x64, 0x6e, 0x0e, 0x54, 0xad, - 0x0b, 0x55, 0x3e, 0x59, 0x50, 0x73, 0x0b, 0xae, 0x7d, 0xcf, 0xb8, 0x33, 0x01, 0xa6, 0x84, 0xf3, - 0x06, 0x53, 0x63, 0xed, 0x7f, 0xf5, 0x40, 0xe0, 0x6c, 0xf4, 0x94, 0x0e, 0x99, 0xb9, 0x4f, 0x43, - 0x55, 0x7b, 0xab, 0xde, 0x1f, 0x81, 0x98, 0xb0, 0x6b, 0x40, 0xc0, 0xea, 0xc8, 0xd2, 0x12, 0x54, - 0x82, 0x60, 0x7e, 0x66, 0x62, 0xf4, 0x7a, 0xb9, 0x9a, 0x27, 0xe9, 0xa8, 0xa0, 0xf3, 0xa4, 0x49, - 0x57, 0xae, 0x1c, 0x9c, 0xf5, 0x1b, 0x54, 0x96, 0x34, 0x1a, 0xfa, 0x6d, 0xa3, 0x61, 0xb3, 0x09, - 0x9a, 0xc5, 0xbf, 0xc3, 0xfd, 0x46, 0xe3, 0xe0, 0x69, 0xd8, 0x6f, 0x2c, 0xfd, 0x6f, 0x67, 0xd8, - 0x68, 0xf4, 0x1f, 0x26, 0xd7, 0xcd, 0xc6, 0x6b, 0xe7, 0xf1, 0xf8, 0xe9, 0xa8, 0x71, 0xf3, 0xd8, - 0x3c, 0x6e, 0x9c, 0x4f, 0x9a, 0xef, 0x46, 0x63, 0xa7, 0x09, 0x42, 0x69, 0xf2, 0x78, 0x78, 0xb4, - 0x63, 0x6f, 0xee, 0x96, 0xd5, 0x8b, 0xc9, 0x7b, 0x7f, 0x98, 0x3f, 0x7b, 0x38, 0xd3, 0xdf, 0x9f, - 0x9a, 0x2f, 0x8e, 0xfe, 0xdc, 0x69, 0x9f, 0xa7, 0xae, 0xb4, 0xe3, 0x53, 0xe5, 0x38, 0x3f, 0xd2, - 0x6e, 0x4f, 0x4d, 0xcd, 0xbc, 0x2f, 0xdd, 0xbe, 0xde, 0xab, 0x06, 0x69, 0x55, 0xb2, 0xc7, 0x6f, - 0x44, 0x7e, 0xbe, 0xd5, 0x8e, 0x27, 0x4f, 0x56, 0x51, 0xbf, 0xe9, 0xee, 0xe5, 0x4f, 0x75, 0xa7, - 0x7b, 0x39, 0x6e, 0xf4, 0x53, 0x3d, 0x27, 0xd3, 0x6b, 0xdb, 0xa7, 0xf6, 0x81, 0x76, 0x7e, 0x3a, - 0x1a, 0x68, 0xc3, 0xab, 0xe7, 0x13, 0x75, 0xf3, 0xfc, 0x72, 0x77, 0xef, 0xa8, 0x3f, 0xb9, 0x19, - 0x82, 0x14, 0x53, 0x4a, 0xc3, 0xae, 0x96, 0x6a, 0x1d, 0xde, 0xee, 0x0c, 0xf6, 0x8e, 0xba, 0x87, - 0xfb, 0x53, 0xe5, 0x65, 0xd3, 0x2e, 0xec, 0x65, 0xde, 0xde, 0x07, 0xc7, 0xad, 0xe7, 0xe6, 0xe6, - 0xce, 0xd5, 0xd5, 0x69, 0x6f, 0x77, 0x62, 0x98, 0xfb, 0x19, 0xb5, 0xa4, 0xbc, 0xb6, 0xf6, 0xb4, - 0xbd, 0xfd, 0xdd, 0x87, 0x69, 0xf9, 0xe9, 0xee, 0xfe, 0xf9, 0x2d, 0x6f, 0xbd, 0x0d, 0x0b, 0xe7, - 0xa5, 0x7d, 0xed, 0xe9, 0xaa, 0x30, 0x18, 0xa5, 0xf4, 0x07, 0xfb, 0xe0, 0x68, 0xf7, 0xec, 0x6a, - 0x3f, 0xdf, 0x6f, 0x4c, 0x95, 0x6c, 0xa1, 0xd1, 0x6f, 0x58, 0xce, 0xdd, 0xd9, 0xa0, 0xf7, 0xd2, - 0x7f, 0xee, 0xed, 0x35, 0xda, 0x6a, 0x73, 0x30, 0x19, 0xb5, 0x8e, 0x26, 0x7b, 0xb7, 0xcd, 0xe1, - 0xa8, 0x7b, 0x39, 0x50, 0xaf, 0xba, 0x37, 0x25, 0x6b, 0x7c, 0xf4, 0x7c, 0xda, 0xba, 0x7e, 0xda, - 0x9b, 0xec, 0x0e, 0xf6, 0x2b, 0x3b, 0x47, 0xb6, 0x61, 0x1c, 0x15, 0xf3, 0x37, 0x47, 0xd7, 0x47, - 0xc6, 0xd1, 0xed, 0x6e, 0xf9, 0xe5, 0xed, 0xfc, 0xe9, 0x68, 0xf3, 0xf6, 0xb9, 0xf1, 0x76, 0x66, - 0x5d, 0x67, 0x94, 0xb3, 0xcc, 0xee, 0x44, 0xb9, 0x30, 0x8d, 0x77, 0x65, 0x50, 0x39, 0x3d, 0x68, - 0xda, 0x8f, 0xb9, 0xf7, 0xf3, 0xdc, 0xe3, 0xc5, 0xbb, 0x9d, 0x3b, 0xcd, 0x4f, 0x5f, 0xc9, 0xb9, - 0x59, 0x78, 0x7f, 0x78, 0x7e, 0x2d, 0xb7, 0x1f, 0x6e, 0x32, 0x83, 0xb3, 0x9d, 0xd3, 0xe7, 0x4c, - 0x31, 0xff, 0xb8, 0xdb, 0x38, 0x6a, 0xa5, 0x36, 0x47, 0xa5, 0x52, 0x59, 0xcf, 0x1f, 0xa6, 0x0e, - 0xaf, 0x2f, 0xbb, 0x4f, 0xdd, 0xec, 0x28, 0x7f, 0xf3, 0xde, 0xbd, 0x7e, 0xea, 0xde, 0x9d, 0xdd, - 0xf4, 0x8e, 0xb4, 0xe2, 0x61, 0xef, 0xa4, 0xdf, 0xcd, 0xb6, 0x37, 0x5b, 0xe3, 0xd7, 0x6e, 0xe5, - 0xbe, 0x32, 0x32, 0xad, 0xee, 0x65, 0xf9, 0xea, 0xe6, 0x62, 0x48, 0x94, 0xf7, 0xe2, 0xcd, 0xe5, - 0xc5, 0xf5, 0xb1, 0xb6, 0xbb, 0xfb, 0x7c, 0x78, 0xf7, 0x7c, 0x20, 0x37, 0xce, 0xcf, 0xae, 0x1e, - 0xed, 0xe1, 0xb5, 0x75, 0xa2, 0x0d, 0xcd, 0xb7, 0xd7, 0xbb, 0xcd, 0x97, 0x51, 0xfb, 0xe8, 0xaa, - 0x99, 0x3b, 0x68, 0x1d, 0xbd, 0xec, 0xb7, 0x52, 0x67, 0x3a, 0x69, 0x1e, 0x17, 0xca, 0xc7, 0xc7, - 0xfb, 0x77, 0xcd, 0xc1, 0x55, 0x6f, 0x34, 0x39, 0x39, 0x33, 0x73, 0x6f, 0xb7, 0x15, 0x73, 0xf8, - 0x9a, 0xbd, 0x3b, 0xb9, 0xbd, 0x2e, 0x59, 0xc4, 0x91, 0x0f, 0x4c, 0xb9, 0xf5, 0x7c, 0xf7, 0x78, - 0x7d, 0xbd, 0x9f, 0x7a, 0x78, 0xde, 0x4c, 0x5d, 0xa8, 0xb7, 0xad, 0x97, 0xcc, 0xc1, 0xd1, 0xfb, - 0x28, 0x3b, 0x54, 0x0f, 0x9f, 0xee, 0xa7, 0xa9, 0x7e, 0xf9, 0x31, 0x7b, 0x7d, 0xfb, 0xe2, 0x5c, - 0x0e, 0x5f, 0x8f, 0x54, 0xe7, 0xfa, 0xe6, 0xe1, 0xee, 0xfc, 0xfd, 0xbd, 0xe9, 0x8c, 0xf6, 0x2f, - 0x4f, 0x3a, 0x87, 0xf2, 0xfb, 0xf5, 0xce, 0x41, 0xea, 0xb1, 0x92, 0x69, 0xea, 0x83, 0x1d, 0x25, - 0x27, 0x8f, 0x8b, 0xc6, 0x61, 0xcf, 0xde, 0xbb, 0x3d, 0xeb, 0x3f, 0x9c, 0x5d, 0xee, 0xf5, 0x2e, - 0x8a, 0x4f, 0x9d, 0xe3, 0xa9, 0xbc, 0x7f, 0x74, 0xa9, 0xde, 0xbd, 0x4d, 0xfa, 0xcf, 0xed, 0xd2, - 0xd9, 0xd1, 0xe8, 0x2e, 0x65, 0x3c, 0x15, 0xc6, 0xb9, 0x97, 0x97, 0x52, 0xe6, 0x5d, 0x3f, 0x9a, - 0xee, 0x9e, 0x58, 0xfd, 0xd1, 0x59, 0x2e, 0xf7, 0x96, 0x6a, 0xdf, 0x97, 0x27, 0xb7, 0x07, 0xaf, - 0xea, 0xa6, 0x72, 0x5a, 0xee, 0x5d, 0x1d, 0xbf, 0x4f, 0xf4, 0xe6, 0x73, 0xd9, 0x39, 0x32, 0xcd, - 0xee, 0x51, 0xa5, 0xfd, 0xb8, 0xdb, 0xba, 0x3b, 0xbe, 0x6b, 0x5e, 0x1d, 0xe9, 0xaa, 0x79, 0x2f, - 0x1f, 0xb6, 0x9d, 0x8e, 0xd6, 0xb9, 0xd9, 0x1c, 0x37, 0xdf, 0x4e, 0x87, 0x0f, 0x4a, 0xeb, 0xce, - 0xba, 0x6a, 0x9d, 0x9f, 0xbd, 0xb5, 0x95, 0xe3, 0xe3, 0x9d, 0x41, 0xee, 0x52, 0x7d, 0xb0, 0x1e, - 0xda, 0xfd, 0x6e, 0xa9, 0xd1, 0x7e, 0x25, 0x9d, 0xee, 0xee, 0xcd, 0x45, 0x65, 0xef, 0x6a, 0xef, - 0x88, 0xdc, 0xcb, 0x77, 0x97, 0xf7, 0x57, 0x9d, 0xee, 0x55, 0x59, 0x73, 0x2e, 0x2f, 0xf6, 0x46, - 0xa9, 0xcd, 0xd2, 0x6b, 0xee, 0x68, 0x7a, 0x7b, 0x63, 0x1c, 0x93, 0x7b, 0xb3, 0xf7, 0x7c, 0xa5, - 0x1e, 0x1e, 0x1e, 0x16, 0x61, 0x2a, 0xed, 0x9e, 0x3e, 0x67, 0xdb, 0x87, 0xfd, 0xab, 0xe9, 0x83, - 0x7d, 0x0b, 0x1d, 0x3a, 0x79, 0x6c, 0xf7, 0x53, 0xcd, 0x29, 0xfc, 0xaf, 0x54, 0x21, 0x87, 0x9d, - 0x8b, 0x31, 0x88, 0xe8, 0xe3, 0xac, 0x56, 0x6a, 0xcb, 0xfa, 0xee, 0xe6, 0xf3, 0x41, 0xaa, 0xdd, - 0x6a, 0x64, 0xbb, 0xcd, 0xa7, 0xbb, 0xe9, 0x70, 0x52, 0x7e, 0x3a, 0xce, 0x1c, 0x3d, 0x3a, 0xd3, - 0x4b, 0xa7, 0x7d, 0x3c, 0xd5, 0xcc, 0xab, 0xcc, 0xe9, 0xc1, 0x73, 0xeb, 0x55, 0x96, 0x6f, 0x86, - 0xdd, 0xf3, 0xa3, 0xa7, 0xa9, 0x75, 0x40, 0xb4, 0xd4, 0x5b, 0xca, 0x7a, 0x3a, 0xb6, 0x8c, 0x94, - 0x7e, 0x3b, 0xc8, 0x5f, 0x5a, 0xe7, 0x47, 0x07, 0x93, 0x93, 0xd2, 0xbd, 0xf5, 0x70, 0x7e, 0x76, - 0x97, 0x9b, 0xde, 0x90, 0xeb, 0xfb, 0xc3, 0xd6, 0x73, 0xab, 0xf3, 0xe2, 0x9c, 0x1e, 0xf7, 0x48, - 0xd6, 0xea, 0x6c, 0xda, 0xe6, 0xdb, 0xf8, 0x25, 0xdf, 0x2e, 0xdd, 0x15, 0x5e, 0x0a, 0xe5, 0x96, - 0x95, 0x6f, 0x0c, 0xb3, 0x97, 0xe3, 0xcc, 0x95, 0xda, 0x1b, 0xd8, 0x47, 0xb9, 0xd1, 0xd9, 0xb8, - 0x53, 0x2e, 0xe5, 0x2f, 0xd4, 0xab, 0xab, 0xeb, 0x73, 0x83, 0x74, 0xcd, 0xcb, 0xde, 0xa1, 0xde, - 0x9a, 0x74, 0x40, 0x1a, 0xa6, 0x94, 0xdd, 0xbd, 0xbd, 0xd2, 0x66, 0xe7, 0xe4, 0xfd, 0xa6, 0xbf, - 0xa3, 0x5d, 0xf5, 0x9f, 0xcd, 0xe7, 0xfe, 0xcd, 0xae, 0x7e, 0xec, 0x1c, 0xe8, 0x0f, 0xb9, 0xd7, - 0xf6, 0xf0, 0xe1, 0xb8, 0xb4, 0x7f, 0xb1, 0x73, 0xfa, 0xb4, 0x39, 0xb1, 0xad, 0xd4, 0xf1, 0xd3, - 0xfb, 0xa3, 0xde, 0x7e, 0xee, 0xb6, 0x5f, 0x9a, 0xa3, 0xbd, 0xde, 0xad, 0x7c, 0x38, 0xd6, 0x26, - 0xaf, 0x6d, 0xe7, 0xb6, 0x7f, 0xbc, 0xf9, 0x7e, 0xfd, 0xb0, 0x7f, 0x7e, 0x6c, 0x8f, 0x5b, 0x53, - 0x6d, 0xf2, 0x9e, 0xbb, 0x7f, 0x74, 0x94, 0xc2, 0xf4, 0xd9, 0x52, 0x33, 0x3d, 0x7b, 0xa4, 0xe9, - 0xfa, 0xfe, 0xdd, 0xe5, 0x9b, 0xa1, 0x9b, 0x97, 0xf2, 0xf5, 0x69, 0xd1, 0xb8, 0x3b, 0x3f, 0x79, - 0x79, 0xe9, 0xed, 0x69, 0x07, 0x85, 0x8e, 0x7d, 0xb3, 0x7b, 0xde, 0xb0, 0xfb, 0xef, 0xcd, 0x7c, - 0xf9, 0x60, 0xb3, 0xdf, 0x3a, 0xb9, 0xeb, 0xb7, 0x9e, 0x36, 0x87, 0x99, 0xce, 0xde, 0xf8, 0xa4, - 0x71, 0x3a, 0x9c, 0x9e, 0xbc, 0x67, 0x32, 0xa3, 0xcd, 0x41, 0x89, 0xf4, 0x0f, 0xf7, 0x37, 0xcf, - 0xac, 0xc3, 0xc2, 0xf3, 0xb1, 0x99, 0x79, 0x9a, 0x16, 0x5e, 0xf3, 0x39, 0xa5, 0x7c, 0xb3, 0x99, - 0x9d, 0xea, 0x87, 0x77, 0xd7, 0xcd, 0x03, 0xad, 0xb7, 0xff, 0x74, 0xee, 0x38, 0xdd, 0xdc, 0x7e, - 0xe7, 0x56, 0x51, 0xde, 0x4a, 0xa4, 0x72, 0xf9, 0x32, 0x18, 0x75, 0xde, 0xae, 0x65, 0xe3, 0x72, - 0x94, 0x7d, 0xcf, 0xbe, 0x67, 0x76, 0x77, 0x52, 0xe5, 0x89, 0x3a, 0x6d, 0xec, 0x77, 0xcf, 0x6e, - 0xb3, 0x7d, 0x7d, 0xb8, 0x53, 0x98, 0x36, 0x26, 0xa5, 0xb2, 0x39, 0x39, 0xec, 0xdc, 0x3f, 0x6b, - 0xfb, 0xd6, 0x8e, 0xfe, 0x30, 0x3d, 0x7d, 0x7e, 0x2e, 0xe5, 0x6f, 0x0f, 0xfa, 0xe3, 0xf3, 0x83, - 0xbb, 0x83, 0xc6, 0xf1, 0xfe, 0xfb, 0x74, 0x7f, 0x92, 0xba, 0x37, 0x86, 0xfa, 0xe6, 0x59, 0x43, - 0x6d, 0xdf, 0xb5, 0x47, 0x25, 0x8d, 0x1c, 0x5e, 0xef, 0x14, 0xed, 0x4e, 0x56, 0xee, 0x9d, 0x3a, - 0x6d, 0xab, 0x6b, 0x65, 0x8e, 0x5f, 0xef, 0x4a, 0x8f, 0x56, 0xca, 0x18, 0x4f, 0xf6, 0x9d, 0xeb, - 0xc3, 0xbd, 0xcd, 0xb3, 0xc2, 0xfb, 0x41, 0x45, 0x7e, 0x3d, 0xdf, 0x29, 0x3d, 0x5e, 0xef, 0x19, - 0x46, 0x31, 0xfb, 0xb2, 0x7f, 0xac, 0xb4, 0x5f, 0xf3, 0xe7, 0xe4, 0xf0, 0xee, 0xa4, 0x4b, 0x7a, - 0x99, 0x81, 0x7d, 0xb6, 0xbf, 0xdf, 0x32, 0x9d, 0xe2, 0xb0, 0xfc, 0x30, 0x3c, 0x7e, 0xdd, 0xdd, - 0x6d, 0xe8, 0xd7, 0x72, 0xa7, 0x90, 0x2d, 0x0f, 0xa7, 0xc3, 0xa9, 0x75, 0xf5, 0x7e, 0x35, 0x7a, - 0xbb, 0xd4, 0x6d, 0xf3, 0x7a, 0xd2, 0x6b, 0x3c, 0xbe, 0x98, 0xce, 0xe0, 0xdd, 0x02, 0xb2, 0xdc, - 0x64, 0xa7, 0xe7, 0xad, 0x5e, 0xe1, 0xde, 0xd9, 0x39, 0x3b, 0xab, 0xec, 0x5e, 0xdd, 0x64, 0x2b, - 0xa3, 0xd3, 0x54, 0xbf, 0x5d, 0xd8, 0xec, 0xef, 0x9f, 0x5e, 0xe6, 0x3b, 0x37, 0x72, 0x79, 0xbf, - 0x7c, 0x54, 0xe8, 0x3e, 0x4d, 0x8f, 0xb5, 0x42, 0xf6, 0xc0, 0x9e, 0x56, 0xee, 0x0f, 0xdf, 0x4f, - 0x77, 0x2e, 0x0e, 0xdf, 0xef, 0x9f, 0xaf, 0x5b, 0x95, 0xf3, 0xd3, 0xe6, 0xc5, 0xed, 0x4e, 0x73, - 0xff, 0x2a, 0x35, 0x3a, 0x18, 0xec, 0x64, 0xee, 0x36, 0x9f, 0xde, 0x6f, 0x27, 0x27, 0x7b, 0xad, - 0x9b, 0xe1, 0xae, 0xa5, 0x1e, 0xa7, 0x6e, 0x91, 0xf7, 0x33, 0xed, 0xfd, 0x87, 0xfd, 0xb3, 0xd3, - 0x53, 0xfb, 0xb9, 0xaf, 0x36, 0x9c, 0x82, 0x69, 0x6e, 0x8e, 0x34, 0x73, 0xda, 0xce, 0x39, 0xef, - 0x7b, 0xe5, 0xa3, 0xf2, 0x74, 0xf0, 0x76, 0x78, 0xb1, 0xbb, 0x73, 0x92, 0x6f, 0x1d, 0xf4, 0x4b, - 0x57, 0x97, 0xd9, 0xdc, 0x8e, 0x7a, 0x99, 0x7f, 0x3c, 0x9b, 0xe4, 0xac, 0xdd, 0x7d, 0xe7, 0xfe, - 0x76, 0xf7, 0xe1, 0x34, 0x45, 0x6c, 0x7d, 0x9c, 0x3f, 0xac, 0x5c, 0x4d, 0x5f, 0x7b, 0xc3, 0xf6, - 0xae, 0xde, 0x3e, 0x3b, 0x7d, 0x3e, 0xb8, 0xdd, 0x37, 0x5f, 0x5f, 0x9f, 0xda, 0xfa, 0x7d, 0xab, - 0x2f, 0x6b, 0x83, 0xfb, 0x71, 0x65, 0x72, 0x9b, 0x2f, 0xbe, 0xde, 0x1c, 0xbe, 0x5e, 0x56, 0xde, - 0x5f, 0x6f, 0xad, 0xd3, 0xcd, 0x97, 0xd7, 0x93, 0xe7, 0xf2, 0xe3, 0xf3, 0xd3, 0x7b, 0x5f, 0xce, - 0x9a, 0xed, 0x4a, 0xea, 0xed, 0xaa, 0x6c, 0x3f, 0x3c, 0x99, 0x8f, 0xd3, 0x93, 0x03, 0x75, 0xff, - 0xf8, 0xe6, 0xdc, 0x3e, 0x9a, 0x4c, 0xcc, 0xb7, 0xeb, 0x42, 0xa1, 0xbf, 0x77, 0xa1, 0xdf, 0x65, - 0x52, 0x04, 0x18, 0xa9, 0x7b, 0xb8, 0x9b, 0xc9, 0x69, 0x57, 0xf9, 0x51, 0xab, 0xf8, 0x96, 0x7d, - 0x7d, 0x3f, 0x7a, 0x77, 0x1e, 0x6e, 0xcf, 0x2f, 0xf7, 0x4a, 0x46, 0xf7, 0xf1, 0x58, 0xbe, 0x7c, - 0xbd, 0x55, 0xef, 0x8f, 0x9d, 0xfe, 0xc9, 0xc1, 0xc9, 0xd9, 0xd1, 0xe9, 0x63, 0x49, 0xee, 0x4e, - 0xc9, 0xe3, 0x9b, 0xde, 0x6e, 0xa7, 0xec, 0xfd, 0x93, 0x93, 0xd7, 0x73, 0x5d, 0xbe, 0x7f, 0xcf, - 0x59, 0xa7, 0xce, 0x59, 0x7b, 0xe7, 0xea, 0xfe, 0x52, 0x7f, 0x74, 0x86, 0xc7, 0x4a, 0xe1, 0xfe, - 0x75, 0xff, 0xda, 0x68, 0x67, 0x2a, 0xc3, 0xe1, 0xe8, 0xad, 0x73, 0x75, 0x37, 0xde, 0x54, 0x7b, - 0xcd, 0xf3, 0xf1, 0x83, 0xa5, 0x0d, 0xde, 0xfb, 0xbb, 0xa7, 0xbb, 0x63, 0x50, 0xc2, 0x53, 0xe5, - 0xc3, 0xe2, 0xf4, 0xf9, 0xa4, 0x52, 0x28, 0x77, 0x76, 0x89, 0x93, 0xda, 0x57, 0x1e, 0x7a, 0xad, - 0xd4, 0xe9, 0x8b, 0x91, 0xb9, 0x77, 0x52, 0xe3, 0x56, 0xe7, 0x55, 0xb1, 0x5e, 0x4b, 0x2f, 0x4f, - 0x37, 0xed, 0x97, 0xc2, 0xb9, 0x72, 0xf2, 0x6a, 0x5e, 0xb4, 0x5f, 0xf6, 0xf6, 0x4c, 0x5b, 0xe9, - 0x54, 0x4e, 0xb3, 0xd6, 0xf5, 0xf9, 0xc3, 0x71, 0xff, 0xb2, 0x6d, 0xdd, 0xbf, 0xed, 0x76, 0x1f, - 0x9f, 0x49, 0xc9, 0xd9, 0xb9, 0x6a, 0xbc, 0x3b, 0x2f, 0xed, 0xc7, 0xa6, 0x3c, 0xd9, 0x25, 0x85, - 0x5b, 0xfd, 0x5c, 0x35, 0x87, 0xfa, 0x13, 0x68, 0x2b, 0xa3, 0xcc, 0xe8, 0xb9, 0x57, 0x3a, 0xe9, - 0x6d, 0x8e, 0x49, 0x36, 0x9b, 0x3b, 0x1c, 0xf5, 0x2a, 0xb9, 0xbd, 0x71, 0x66, 0x93, 0xe8, 0x3b, - 0x99, 0x94, 0x7e, 0xb9, 0x69, 0xb6, 0x41, 0xcd, 0xbc, 0x3a, 0x7e, 0x6a, 0xab, 0xf2, 0x73, 0xb3, - 0x65, 0x1a, 0xe7, 0x15, 0xe8, 0xf8, 0xcd, 0xcb, 0xf3, 0xe6, 0xf1, 0xd9, 0xc4, 0x6c, 0xdf, 0xf7, - 0x0d, 0xb3, 0xd1, 0x1e, 0x38, 0xed, 0x8b, 0xfb, 0x97, 0x37, 0xa7, 0xb1, 0x9f, 0x3f, 0x49, 0x65, - 0x5e, 0x0d, 0xb9, 0xd5, 0x68, 0x9d, 0xdf, 0xe7, 0x0e, 0x72, 0xed, 0xd3, 0x9e, 0x6e, 0x0f, 0xcc, - 0x9d, 0x82, 0x52, 0xe9, 0x0e, 0xdf, 0x37, 0x33, 0x87, 0xd3, 0x4c, 0xa6, 0xdb, 0xc9, 0x5f, 0x3c, - 0x9c, 0x3f, 0x15, 0x80, 0x57, 0xdf, 0x1e, 0x6e, 0xef, 0x72, 0xdd, 0xc7, 0x6b, 0x7b, 0xb7, 0xb2, - 0xf9, 0x7a, 0x72, 0xba, 0x59, 0x79, 0x55, 0xde, 0x47, 0xd0, 0xb5, 0xa3, 0xec, 0xf8, 0xf2, 0xe1, - 0x66, 0x33, 0xbf, 0x59, 0x6c, 0xdf, 0xb7, 0x0e, 0x8c, 0xce, 0x8e, 0xd1, 0xdb, 0xcd, 0x91, 0xa3, - 0xeb, 0xf7, 0x63, 0xb9, 0x73, 0xd6, 0x94, 0x41, 0x5b, 0x9b, 0x5c, 0xc9, 0xfd, 0xde, 0x78, 0xd4, - 0xea, 0x8e, 0xbb, 0xd9, 0x42, 0x2f, 0x3b, 0x02, 0xae, 0x3f, 0xbd, 0xdc, 0xcb, 0x1f, 0x1f, 0x1f, - 0x9e, 0x96, 0x46, 0xcd, 0x6e, 0x46, 0x2f, 0xea, 0xe5, 0x6e, 0xbe, 0x78, 0x7b, 0x71, 0x72, 0xa9, - 0x97, 0xf4, 0x81, 0x05, 0x0b, 0xa4, 0x75, 0x97, 0x57, 0xba, 0x79, 0xfd, 0x3d, 0xa7, 0xde, 0xa8, - 0xe7, 0xa7, 0x85, 0x6c, 0x61, 0x4f, 0x27, 0xbd, 0xd3, 0xcc, 0xf1, 0xc1, 0xa9, 0x76, 0xff, 0xe4, - 0x3c, 0xdd, 0x2b, 0xaf, 0xc6, 0xde, 0xa0, 0x30, 0x6d, 0x3d, 0x8f, 0xed, 0x83, 0x76, 0xa6, 0x34, - 0xac, 0x58, 0xca, 0xbe, 0x66, 0x9f, 0x0e, 0x0b, 0xa3, 0xc3, 0x97, 0xab, 0x7b, 0x6d, 0xbc, 0x79, - 0x93, 0x99, 0x90, 0xa7, 0xf7, 0xe7, 0xc3, 0x43, 0xb2, 0x39, 0x7d, 0x52, 0x6f, 0xdf, 0xcd, 0xe3, - 0xe2, 0x7d, 0xe3, 0x7e, 0xe7, 0x74, 0xf7, 0x7c, 0x72, 0x7d, 0x32, 0x9d, 0x5c, 0x3f, 0xea, 0xfb, - 0xc6, 0xc3, 0xc1, 0xb4, 0xa3, 0x9c, 0x4c, 0xcf, 0x4b, 0xbb, 0xd7, 0xe5, 0x9d, 0x73, 0x3d, 0x67, - 0x54, 0xce, 0x5f, 0x61, 0x84, 0x9d, 0xb1, 0xa5, 0x14, 0x6f, 0xf4, 0xa3, 0xe7, 0x87, 0xb3, 0x1d, - 0x6d, 0x78, 0xb4, 0xff, 0x94, 0x7f, 0xbb, 0x7c, 0x7c, 0xc8, 0x9f, 0x39, 0x95, 0x71, 0x71, 0x38, - 0x3c, 0x1c, 0x4d, 0x1e, 0xc7, 0xe3, 0xe9, 0xe5, 0x98, 0x58, 0xa7, 0x15, 0xd2, 0x1a, 0xdb, 0xef, - 0x0f, 0xe7, 0xcf, 0xb7, 0x0f, 0xd6, 0x4b, 0xfb, 0xb5, 0x73, 0x70, 0x71, 0x77, 0x9f, 0x6b, 0xef, - 0xb5, 0x77, 0x0f, 0x4e, 0xd4, 0xfc, 0xd9, 0xe9, 0xdd, 0xcd, 0xfd, 0xfb, 0xfb, 0xfd, 0xe1, 0x7e, - 0xb1, 0xb0, 0x33, 0xca, 0xe4, 0xac, 0x46, 0xf6, 0xf5, 0xc5, 0x28, 0x69, 0x95, 0xde, 0x7e, 0xff, - 0xae, 0xbd, 0x33, 0xb2, 0x7a, 0x77, 0x3b, 0xf7, 0xfb, 0xfb, 0xda, 0xdd, 0x7d, 0x76, 0xd4, 0x9f, - 0x5e, 0x4c, 0x3a, 0x76, 0xaa, 0x7c, 0x9f, 0xc9, 0x80, 0x7c, 0x7a, 0x3a, 0x56, 0xc9, 0xa9, 0x56, - 0xb9, 0x7f, 0x68, 0x94, 0xc9, 0xc1, 0x69, 0xb1, 0x63, 0xed, 0x6c, 0xf6, 0x06, 0x17, 0x67, 0x6f, - 0x53, 0xad, 0xdc, 0x7e, 0xbe, 0xba, 0x3f, 0x78, 0xde, 0xc9, 0xb6, 0xef, 0x33, 0xc6, 0x4b, 0xe9, - 0xb6, 0xf3, 0x4a, 0x74, 0xdb, 0xda, 0xdc, 0x2f, 0x1f, 0x6e, 0x8e, 0x1c, 0x7b, 0xd8, 0x7d, 0x35, - 0x0e, 0x87, 0xef, 0x95, 0x8a, 0x35, 0x7e, 0x23, 0x7b, 0x99, 0xcb, 0x77, 0x50, 0x10, 0x0a, 0xc3, - 0xf1, 0xdd, 0xc3, 0xe9, 0xf3, 0xdb, 0x63, 0x79, 0x5c, 0x7e, 0x2e, 0x3e, 0x0c, 0x9e, 0xc8, 0x61, - 0x5e, 0xb9, 0x7c, 0xd8, 0x2c, 0x76, 0x4d, 0xf5, 0xa2, 0x48, 0xce, 0x33, 0x17, 0xef, 0x93, 0xce, - 0xc1, 0xe6, 0xfb, 0x4b, 0x4f, 0x73, 0x32, 0x76, 0xb7, 0x48, 0x36, 0x1f, 0x3b, 0xaf, 0xed, 0x0b, - 0x63, 0xd2, 0xbb, 0xee, 0xe7, 0x72, 0xd7, 0xc5, 0x62, 0xb9, 0xa8, 0x38, 0xb9, 0xf1, 0xc3, 0x43, - 0x79, 0xf3, 0x3e, 0xfb, 0x28, 0xf7, 0xaf, 0xe4, 0xcd, 0x4a, 0xa1, 0xb2, 0x49, 0x1e, 0x6f, 0xb2, - 0x7b, 0x2f, 0x6f, 0xc6, 0xde, 0xeb, 0xd9, 0x23, 0xe8, 0x80, 0x87, 0xdd, 0xf2, 0xd5, 0xf8, 0xe4, - 0xc0, 0xba, 0x3e, 0x28, 0xb5, 0x8f, 0x1f, 0x6f, 0x76, 0x9b, 0xcd, 0xa7, 0xc7, 0x83, 0xbd, 0xfb, - 0xce, 0xb0, 0x78, 0x90, 0x05, 0x32, 0xe6, 0xd4, 0x62, 0xe1, 0xb1, 0x72, 0xef, 0xa8, 0x3b, 0xa3, - 0x17, 0xed, 0xb2, 0xb8, 0xf9, 0xe8, 0xec, 0x3c, 0x9d, 0x35, 0xee, 0xb5, 0x51, 0xae, 0xf7, 0xf8, - 0xbe, 0x7b, 0xb6, 0x79, 0x95, 0x2a, 0xee, 0x83, 0x24, 0x6f, 0xe5, 0x2f, 0xde, 0x8b, 0xcf, 0xb0, - 0x86, 0x1d, 0x29, 0x1d, 0xa7, 0x7d, 0x7f, 0x69, 0x4c, 0x46, 0x57, 0xfd, 0xf3, 0xb7, 0x43, 0x6d, - 0x74, 0xa2, 0x29, 0x93, 0xca, 0x44, 0x6f, 0x5f, 0x0c, 0x9d, 0x91, 0xf2, 0x6c, 0x64, 0xee, 0x5a, - 0x93, 0x0a, 0x48, 0xe4, 0xd6, 0xf5, 0xe4, 0xac, 0x33, 0x02, 0xb6, 0x7c, 0x9a, 0xec, 0x0f, 0x06, - 0x25, 0x7b, 0x73, 0x60, 0xbf, 0x5a, 0xea, 0x7d, 0xd3, 0xee, 0x37, 0x72, 0x76, 0x5e, 0xdf, 0x07, - 0xb5, 0xb9, 0x70, 0xb4, 0x79, 0x91, 0x52, 0xec, 0xe9, 0x64, 0xfa, 0xd4, 0x76, 0x4e, 0x4f, 0xe5, - 0xfc, 0x5e, 0xa5, 0x3d, 0xe8, 0x5c, 0x97, 0x1e, 0xdf, 0x2b, 0xc3, 0xa3, 0xf6, 0xbe, 0x7c, 0x5b, - 0x29, 0x9d, 0xc8, 0xd3, 0x83, 0xc6, 0x66, 0x7b, 0x5a, 0x79, 0x4b, 0x69, 0xb9, 0x4c, 0x66, 0x33, - 0xff, 0x9c, 0x3a, 0xcc, 0xa9, 0xf2, 0xde, 0x41, 0x37, 0xb7, 0x39, 0x6a, 0xdc, 0x9d, 0x1f, 0x65, - 0xee, 0x07, 0xcd, 0xc7, 0xd1, 0xfd, 0xeb, 0xd1, 0xae, 0xf2, 0x38, 0x55, 0xba, 0xb6, 0xac, 0x75, - 0xee, 0xf6, 0xef, 0x52, 0xdd, 0x0b, 0xed, 0x70, 0xb8, 0x33, 0xcd, 0xbc, 0x5e, 0x6c, 0x76, 0x4a, - 0x99, 0xd1, 0xd3, 0x83, 0xec, 0x5c, 0x93, 0x5b, 0xe7, 0xf8, 0x6a, 0x5c, 0x2a, 0xbc, 0x01, 0xfb, - 0x36, 0xc6, 0x0f, 0xa5, 0xe9, 0x2e, 0x79, 0x6f, 0x3c, 0x64, 0xca, 0xf7, 0xc3, 0x72, 0xb3, 0x3f, - 0xc8, 0x54, 0x8a, 0x17, 0x95, 0x8b, 0xa9, 0x7d, 0xde, 0x7c, 0xd4, 0xed, 0x87, 0xfb, 0xab, 0xd4, - 0xa6, 0xd9, 0x7c, 0x2f, 0x67, 0xce, 0xcf, 0x9e, 0x8a, 0x9b, 0x4f, 0x8d, 0xa3, 0x83, 0xbd, 0xee, - 0xcd, 0x24, 0xa5, 0x98, 0xe5, 0xbb, 0xd4, 0x51, 0xfe, 0xfc, 0xf6, 0x8e, 0xc0, 0x9c, 0x9a, 0xa8, - 0xe3, 0x94, 0xd6, 0xe9, 0xbc, 0x3e, 0x67, 0x37, 0x73, 0x0f, 0x9b, 0x8f, 0x93, 0x62, 0xff, 0xb8, - 0x71, 0x7b, 0x75, 0xf0, 0x78, 0x79, 0x55, 0xba, 0x7a, 0x9b, 0x5e, 0xf7, 0xfa, 0xa4, 0x99, 0xba, - 0xea, 0x14, 0xef, 0xf5, 0xc6, 0x59, 0xb3, 0x71, 0xb8, 0x3f, 0x2e, 0xdd, 0x1c, 0x3b, 0xc4, 0xc9, - 0x9b, 0x7a, 0xa6, 0x9c, 0x6f, 0x17, 0x1e, 0x9b, 0x8d, 0xa3, 0x9d, 0x71, 0xbe, 0x68, 0xf4, 0xcc, - 0x9b, 0xeb, 0x37, 0xa7, 0x78, 0xf9, 0x0c, 0x3a, 0xe9, 0x4d, 0xf9, 0xe4, 0xb1, 0xb1, 0x77, 0x75, - 0x52, 0xd6, 0xf7, 0xfb, 0x3b, 0x1d, 0x50, 0x8b, 0x6f, 0x27, 0xc0, 0xfb, 0xaf, 0x87, 0xad, 0x9d, - 0x13, 0x63, 0xef, 0x60, 0xf3, 0xe4, 0xe9, 0xea, 0xf4, 0xcc, 0x7c, 0x36, 0x8a, 0xa3, 0x81, 0x92, - 0xb9, 0x3c, 0xca, 0xbd, 0x8d, 0x76, 0xee, 0x2f, 0x9a, 0x37, 0xad, 0xdd, 0x27, 0xe5, 0xd9, 0x7c, - 0xbd, 0x2a, 0x95, 0x53, 0x4f, 0x4a, 0xb6, 0xfc, 0xdc, 0x3f, 0xe8, 0x3f, 0x9e, 0xdd, 0x94, 0xf5, - 0x9d, 0xc1, 0xf3, 0x49, 0x67, 0xdf, 0x3a, 0x69, 0x3e, 0xee, 0x97, 0xde, 0x4e, 0x5a, 0x4f, 0xd7, - 0xa7, 0xfb, 0x45, 0xe7, 0xba, 0xf8, 0x78, 0x32, 0xb8, 0x7d, 0x7f, 0x3f, 0xbf, 0x3f, 0x2b, 0xe6, - 0x86, 0x3b, 0xe3, 0xd1, 0xe5, 0x99, 0x7a, 0xba, 0x39, 0xbd, 0x9c, 0x16, 0x6e, 0x95, 0xeb, 0xfe, - 0xbe, 0x7a, 0xfc, 0xd4, 0xb8, 0xdb, 0xb7, 0x3b, 0x4f, 0xb9, 0xc3, 0xdb, 0xa3, 0xc1, 0xed, 0x65, - 0x67, 0x4f, 0x39, 0x2c, 0xde, 0xdf, 0xef, 0x8e, 0xc7, 0xc3, 0x71, 0xf7, 0xb2, 0xa7, 0x15, 0x4f, - 0x94, 0xe6, 0xf8, 0xa2, 0x6c, 0x64, 0x53, 0xbd, 0xfd, 0xe6, 0x4e, 0xbb, 0x34, 0x18, 0x8f, 0x4e, - 0xdf, 0xcb, 0xda, 0xd9, 0xf5, 0xc5, 0xa4, 0xf7, 0x7c, 0x79, 0x5e, 0x56, 0x15, 0xab, 0x22, 0x5f, - 0x37, 0x9b, 0xea, 0x75, 0xf3, 0xd8, 0xca, 0x8f, 0xfa, 0xaf, 0x87, 0xbd, 0xd2, 0xe9, 0x6b, 0xff, - 0xf6, 0xf1, 0xd1, 0x2e, 0x0e, 0xde, 0xc7, 0xa3, 0x8a, 0x73, 0x76, 0x74, 0x71, 0x6b, 0x65, 0xa6, - 0xe6, 0xf8, 0xda, 0x3e, 0xbf, 0x1b, 0x77, 0x9f, 0x32, 0x66, 0x6a, 0xb8, 0x53, 0xd6, 0x37, 0xef, - 0x72, 0x20, 0x15, 0xe5, 0x9b, 0x94, 0x72, 0x3d, 0xb8, 0x34, 0xcf, 0x07, 0xf6, 0xf9, 0xfe, 0xc5, - 0xeb, 0xd4, 0xd8, 0xcb, 0x8d, 0x64, 0x7b, 0xf4, 0x7a, 0xa3, 0x9a, 0xfd, 0x69, 0xb1, 0x7c, 0x74, - 0xdc, 0xa0, 0x4e, 0x8a, 0x7a, 0x52, 0xe8, 0x19, 0xd6, 0x50, 0x71, 0x12, 0xdf, 0xd0, 0x80, 0xfa, - 0x96, 0x9c, 0x57, 0x2d, 0xc3, 0x70, 0x66, 0x1b, 0x1b, 0x9d, 0x8d, 0x6c, 0xf5, 0x6b, 0x36, 0x9b, - 0xad, 0xe1, 0x63, 0xaf, 0xfa, 0xb5, 0xd7, 0xeb, 0xd1, 0xc7, 0x5c, 0x15, 0x5d, 0x43, 0xf4, 0x31, - 0x5f, 0xfd, 0x9a, 0xcf, 0xe7, 0xe9, 0x63, 0xa1, 0xfa, 0xb5, 0x50, 0x28, 0xd0, 0xc7, 0x62, 0xf5, - 0x6b, 0xb1, 0x58, 0xa4, 0x8f, 0xa5, 0xea, 0xd7, 0x52, 0xa9, 0x44, 0x1f, 0xcb, 0xd5, 0xaf, 0xe5, - 0x72, 0x99, 0x3e, 0xb6, 0xab, 0x5f, 0xdb, 0xed, 0x36, 0x7d, 0xec, 0x54, 0xbf, 0x76, 0x3a, 0x1d, - 0xfa, 0x48, 0xaa, 0x5f, 0x09, 0x21, 0xf4, 0xb1, 0x5b, 0xfd, 0xda, 0xed, 0x76, 0xe9, 0xa3, 0x05, - 0x05, 0xf2, 0xac, 0xb5, 0x3e, 0x34, 0xdc, 0x61, 0xe8, 0x68, 0xd0, 0x5a, 0x59, 0xa1, 0x8f, 0x6f, - 0xd5, 0xaf, 0x4a, 0x45, 0x86, 0x47, 0x07, 0xe0, 0xca, 0x69, 0xd6, 0xae, 0x51, 0xb5, 0xfa, 0x6d, - 0x25, 0x91, 0x2f, 0x48, 0x82, 0xf7, 0x4f, 0x4e, 0x57, 0x92, 0x34, 0xcf, 0x69, 0x2f, 0x66, 0x82, - 0x5d, 0x9f, 0xa0, 0x10, 0x92, 0x5e, 0x19, 0x85, 0x15, 0xca, 0xca, 0x39, 0x49, 0x08, 0xfe, 0x2c, - 0x96, 0x1b, 0xb0, 0x72, 0xc5, 0xac, 0x24, 0x78, 0xff, 0xc2, 0x85, 0x9c, 0x41, 0x75, 0x53, 0x36, - 0xa7, 0xf8, 0x64, 0x7a, 0x4f, 0x50, 0xab, 0x94, 0x67, 0x69, 0x6d, 0xb3, 0x9a, 0x2d, 0x98, 0x53, - 0x81, 0xfd, 0x91, 0xdd, 0x27, 0x2c, 0x03, 0x39, 0x15, 0x78, 0x95, 0x85, 0x4d, 0xfc, 0x4b, 0x6b, - 0x75, 0xab, 0xba, 0xa1, 0x23, 0x89, 0xec, 0xbe, 0x59, 0x15, 0xdb, 0xe8, 0x1e, 0x11, 0x31, 0x63, - 0xe8, 0x54, 0xa1, 0xe6, 0x1c, 0x1d, 0x8b, 0x33, 0xea, 0x4f, 0xd8, 0x50, 0x98, 0x0b, 0x65, 0xa8, - 0x80, 0xfe, 0x3f, 0xd2, 0xa8, 0x07, 0x62, 0xde, 0x36, 0xba, 0x6f, 0xb3, 0xa1, 0x62, 0xf5, 0x55, - 0xbd, 0x2a, 0xd7, 0xd0, 0xc7, 0xd4, 0xb7, 0x8c, 0x91, 0xde, 0x65, 0xae, 0xbf, 0x2a, 0x43, 0x1b, - 0x46, 0x3d, 0x59, 0xe3, 0xed, 0xed, 0x43, 0xa2, 0x8d, 0x89, 0xa3, 0x76, 0x14, 0xe9, 0x8e, 0x58, - 0x5d, 0x45, 0x57, 0x24, 0x5b, 0xd1, 0xed, 0x0d, 0x9b, 0x58, 0x6a, 0x8f, 0x15, 0xb4, 0xd5, 0x77, - 0x52, 0xcd, 0x02, 0x96, 0xb5, 0x30, 0xa0, 0x5e, 0xb2, 0xe6, 0x90, 0xa9, 0xb3, 0xa1, 0x68, 0x6a, - 0x5f, 0xaf, 0x76, 0x08, 0xfa, 0x13, 0x6a, 0xe8, 0x25, 0x7c, 0x51, 0x9d, 0x0d, 0x86, 0x66, 0x47, - 0xd1, 0x34, 0xf4, 0xeb, 0xb0, 0x6e, 0xb9, 0x59, 0x23, 0x80, 0x0d, 0xf0, 0x35, 0xd2, 0xf1, 0x32, - 0x86, 0xc6, 0x7b, 0x5c, 0xaa, 0xbd, 0x98, 0xb8, 0x58, 0xca, 0x6b, 0x4f, 0x31, 0x37, 0x06, 0x6a, - 0x7f, 0xa0, 0xa1, 0xff, 0xc9, 0xed, 0xb1, 0x63, 0x41, 0x4f, 0x4c, 0xc5, 0x02, 0xcc, 0x6a, 0x76, - 0xc7, 0x32, 0x34, 0xad, 0xad, 0x58, 0xcc, 0xb5, 0x5a, 0x2d, 0x41, 0x77, 0x82, 0xb4, 0x70, 0xc7, - 0xec, 0x76, 0x52, 0xe0, 0xea, 0x52, 0xc2, 0x4a, 0x94, 0xf8, 0x03, 0x82, 0xe0, 0xab, 0x59, 0x59, - 0xfe, 0x57, 0x8d, 0xc1, 0xa1, 0x8f, 0xa6, 0x61, 0xab, 0x74, 0x3c, 0x7a, 0xea, 0x94, 0x74, 0x6b, - 0x06, 0x2c, 0xab, 0x0c, 0xf6, 0x46, 0x9b, 0x0c, 0x94, 0xb1, 0x0a, 0xb0, 0x11, 0xd9, 0xf9, 0xd7, - 0x76, 0x9f, 0x03, 0x31, 0x1e, 0x04, 0x30, 0xc6, 0x93, 0x28, 0x90, 0xf7, 0x0d, 0x55, 0xef, 0x92, - 0x69, 0x75, 0x23, 0x1b, 0x1a, 0x4b, 0xbf, 0x94, 0x4b, 0x6f, 0x2e, 0xcb, 0x22, 0x26, 0x51, 0x90, - 0x2c, 0xee, 0x13, 0x9f, 0x47, 0xc7, 0xb0, 0x83, 0x88, 0xd5, 0x0c, 0x53, 0xe9, 0xa8, 0xce, 0x1b, - 0xb0, 0x08, 0xed, 0x23, 0x83, 0xe6, 0x26, 0x0a, 0x39, 0x7b, 0x6e, 0x7a, 0x3c, 0x44, 0xb9, 0x55, - 0x16, 0x72, 0xf8, 0x77, 0xae, 0x48, 0x4a, 0x75, 0xac, 0x42, 0x69, 0xd2, 0x95, 0xcc, 0x59, 0x98, - 0x5e, 0xdd, 0x24, 0x9f, 0x3d, 0xa3, 0x4c, 0xd1, 0x25, 0x1d, 0xc3, 0xa2, 0x7c, 0xc9, 0xba, 0xde, - 0x1e, 0x39, 0x8e, 0xa1, 0xcf, 0x80, 0x19, 0x34, 0x55, 0x27, 0xd0, 0x78, 0x67, 0x64, 0xd9, 0x00, - 0xc3, 0x34, 0x54, 0xec, 0xc7, 0x3c, 0xad, 0x29, 0x6d, 0xa2, 0xd9, 0x01, 0xff, 0x9a, 0x4a, 0xb7, - 0xab, 0xea, 0xfd, 0x6a, 0x99, 0x43, 0xe2, 0x2b, 0x7a, 0xa5, 0x69, 0xc1, 0x59, 0x84, 0x5a, 0x6d, - 0x03, 0xc0, 0x0f, 0xab, 0xc0, 0x6f, 0x9d, 0x04, 0x43, 0xab, 0x3d, 0x48, 0x0a, 0x29, 0x01, 0x86, - 0x39, 0x59, 0xb3, 0x28, 0xc5, 0x4b, 0x0b, 0x0c, 0x5c, 0x4e, 0x46, 0xb0, 0xa8, 0x4d, 0x2c, 0x00, - 0xaa, 0xf7, 0x81, 0x21, 0xbb, 0xa4, 0x0a, 0xc4, 0xc2, 0x79, 0xa1, 0x6d, 0x58, 0xda, 0x3c, 0xdd, - 0xb6, 0xd4, 0x99, 0x87, 0x12, 0x4c, 0xe0, 0x79, 0x7a, 0x62, 0xa1, 0x9f, 0xcb, 0x8a, 0x22, 0xe2, - 0x18, 0x26, 0x20, 0xaf, 0x91, 0x1e, 0x4c, 0x59, 0xb7, 0x61, 0x7e, 0xfc, 0xfc, 0xb6, 0x9d, 0x76, - 0xd2, 0x1f, 0xe2, 0xec, 0x3c, 0x8d, 0xbe, 0x71, 0x3b, 0xce, 0x0f, 0xc6, 0x66, 0x20, 0x7a, 0xcc, - 0x80, 0x8e, 0x20, 0xc7, 0x35, 0x6e, 0x4e, 0xe6, 0x00, 0x91, 0x2f, 0xea, 0x10, 0x37, 0x12, 0x14, - 0x60, 0x71, 0x24, 0xec, 0x86, 0xc7, 0x5e, 0x5c, 0x7a, 0x57, 0xb5, 0x4d, 0x4d, 0x79, 0xab, 0xaa, - 0x3a, 0x2d, 0x41, 0xc5, 0xca, 0x3c, 0x0d, 0x83, 0x11, 0xa6, 0x46, 0x3f, 0x19, 0xd4, 0x81, 0xec, - 0x5e, 0x2f, 0x92, 0x5f, 0x0a, 0xe5, 0x03, 0xc1, 0x05, 0x86, 0xb5, 0x94, 0x86, 0x3e, 0xbb, 0xcf, - 0xde, 0xf0, 0x6d, 0xd0, 0xf1, 0x12, 0x0a, 0x74, 0xd4, 0xd2, 0x83, 0x51, 0xdf, 0xf5, 0xf1, 0x51, - 0xb4, 0x0b, 0x39, 0xa4, 0x9f, 0xa9, 0x01, 0x03, 0x5b, 0x6f, 0xc2, 0x4d, 0x63, 0xe7, 0x74, 0x4f, - 0x4a, 0xdb, 0xa4, 0xef, 0xcc, 0x1c, 0xdc, 0x57, 0xd8, 0x70, 0x7d, 0xc1, 0x8c, 0x9e, 0xc1, 0x2c, - 0x9b, 0xd3, 0x32, 0xc2, 0xcd, 0xae, 0x3f, 0x0e, 0xb4, 0x11, 0xae, 0xa3, 0x0b, 0xd2, 0x88, 0x6b, - 0x65, 0x57, 0xf2, 0xab, 0x73, 0x42, 0x0d, 0x85, 0xb4, 0x07, 0x4d, 0xae, 0xf9, 0x03, 0xce, 0x60, - 0x0c, 0xd5, 0x6e, 0x57, 0x23, 0xf3, 0xf4, 0x0b, 0x79, 0x73, 0x5c, 0xae, 0x66, 0x19, 0x38, 0xba, - 0xf3, 0xf4, 0x58, 0xd1, 0xc2, 0xc9, 0x74, 0xb4, 0xdd, 0x74, 0x41, 0xe5, 0x9a, 0xb1, 0x61, 0xd8, - 0x80, 0x85, 0x6c, 0xea, 0x68, 0xa6, 0xdb, 0x20, 0x01, 0xd7, 0x28, 0x6d, 0xdb, 0xd0, 0x46, 0x0e, - 0x61, 0x2c, 0x03, 0xcc, 0xee, 0xb1, 0x72, 0x11, 0x89, 0x04, 0x92, 0x8e, 0x95, 0xa7, 0x53, 0x15, - 0x17, 0x72, 0x26, 0xd4, 0x40, 0xe2, 0x93, 0x87, 0x04, 0x60, 0x9f, 0x9c, 0xa7, 0x09, 0x2d, 0x21, - 0xa5, 0xfb, 0xee, 0xaf, 0x57, 0x47, 0x0a, 0x35, 0x18, 0x61, 0xf4, 0x85, 0x09, 0xec, 0x56, 0x9f, - 0x2d, 0xf2, 0xdb, 0x22, 0xaa, 0xc8, 0xe3, 0x88, 0x29, 0x63, 0xef, 0x32, 0x1d, 0x4d, 0xc3, 0x8c, - 0xe9, 0x53, 0x1c, 0xe7, 0xb9, 0x33, 0xc4, 0x9d, 0x1a, 0xb4, 0xe6, 0x46, 0x27, 0xa6, 0xee, 0xd2, - 0xf5, 0x2b, 0x97, 0x04, 0x12, 0x59, 0xd0, 0xb1, 0x6a, 0x16, 0xc6, 0x1f, 0x4a, 0xab, 0x5d, 0x81, - 0x9b, 0xd1, 0x2c, 0x6f, 0xc3, 0x52, 0xba, 0xea, 0xc8, 0xae, 0xe6, 0x70, 0x41, 0xf6, 0xe7, 0x19, - 0x6d, 0x3b, 0xef, 0x63, 0x9e, 0x2f, 0x72, 0xc3, 0x0f, 0xc9, 0x02, 0xca, 0x1a, 0x00, 0x1a, 0x99, - 0x62, 0xa1, 0x89, 0x95, 0x2b, 0xb8, 0xdd, 0xdd, 0xe8, 0x08, 0xb0, 0x3e, 0xe8, 0x21, 0x66, 0x2c, - 0xb1, 0x31, 0x53, 0x2c, 0x58, 0xfa, 0x96, 0x0c, 0xb3, 0x47, 0x3b, 0x3a, 0xdc, 0x59, 0xa8, 0xe4, - 0x72, 0x38, 0x6d, 0x28, 0xd4, 0x06, 0x75, 0xd2, 0x7f, 0x04, 0x86, 0x75, 0xa4, 0x82, 0xa2, 0x2d, - 0x22, 0x4f, 0x7b, 0x9a, 0x35, 0x5b, 0x5c, 0xaf, 0x7d, 0x36, 0xb2, 0x0c, 0xdc, 0x0b, 0x48, 0xc8, - 0x49, 0x7e, 0x15, 0xf0, 0xb3, 0x85, 0x74, 0xde, 0x5e, 0x32, 0xf0, 0x81, 0x54, 0xe3, 0x24, 0x34, - 0x70, 0xe1, 0xd4, 0x94, 0xf0, 0x8f, 0x02, 0x94, 0xee, 0x0a, 0xb4, 0xf5, 0x85, 0xc6, 0xb2, 0x65, - 0xb9, 0x4b, 0xfa, 0xc0, 0x6b, 0xaa, 0x36, 0x8b, 0x65, 0x8d, 0xf8, 0x09, 0xf8, 0x55, 0x53, 0xc7, - 0x04, 0x77, 0x4c, 0xbd, 0xb5, 0xb3, 0xe0, 0x53, 0x8d, 0xae, 0xbe, 0x2e, 0x37, 0xc8, 0x41, 0xc1, - 0xdc, 0xae, 0x57, 0xb4, 0xe2, 0x2f, 0xd4, 0x15, 0xae, 0xe4, 0x92, 0xae, 0x15, 0xa1, 0x08, 0x1d, - 0x17, 0x7c, 0x88, 0x99, 0x71, 0x89, 0x0d, 0xc8, 0x90, 0xf0, 0x0f, 0xf4, 0x01, 0x64, 0xd5, 0x6c, - 0x81, 0x47, 0x79, 0x8d, 0x63, 0x71, 0x8a, 0xc1, 0xcc, 0x5e, 0xb2, 0x6e, 0xf9, 0x2b, 0x06, 0xdf, - 0xad, 0x65, 0x13, 0x00, 0x96, 0x0e, 0xda, 0xbc, 0xe0, 0xae, 0xa9, 0x2b, 0xb1, 0xe8, 0x69, 0x06, - 0xe8, 0x04, 0x08, 0xdd, 0xeb, 0x3d, 0x55, 0x9b, 0xb8, 0x41, 0xa7, 0x75, 0x70, 0xc0, 0xa5, 0x28, - 0x20, 0xca, 0x05, 0x2b, 0x55, 0xc0, 0x4e, 0xb2, 0x36, 0x54, 0x75, 0x57, 0xa5, 0x2a, 0x50, 0xb6, - 0xc5, 0xc5, 0xc0, 0x45, 0xcc, 0x63, 0x10, 0x57, 0x61, 0x6e, 0x9b, 0x50, 0xda, 0x5d, 0xde, 0xd9, - 0x02, 0x12, 0x5b, 0xae, 0x8d, 0xe5, 0xdc, 0x49, 0x51, 0xfc, 0x17, 0x57, 0x23, 0xe8, 0x72, 0x75, - 0x80, 0x9a, 0xcc, 0x6c, 0x05, 0x85, 0x06, 0xc9, 0x08, 0xa6, 0x24, 0x44, 0xb3, 0x34, 0xea, 0xcf, - 0x63, 0xb2, 0x0a, 0x82, 0xc2, 0x2d, 0x77, 0x0b, 0x8a, 0xef, 0xfc, 0x43, 0x00, 0xa5, 0xd5, 0xd5, - 0x71, 0xb3, 0x5d, 0x01, 0xc6, 0xb7, 0xc0, 0x10, 0x03, 0x4d, 0x8b, 0x1f, 0x77, 0xf6, 0xc8, 0x69, - 0x32, 0x7a, 0xf2, 0xdf, 0x98, 0x91, 0xf4, 0xc4, 0x03, 0xcd, 0xc2, 0x14, 0x61, 0xc3, 0xb3, 0x45, - 0xcc, 0xa4, 0xff, 0x0c, 0x5d, 0xf7, 0xc8, 0xbc, 0x81, 0x4c, 0xed, 0x97, 0x88, 0xe5, 0x68, 0xae, - 0x19, 0x55, 0x92, 0x93, 0x19, 0xc1, 0x6f, 0x72, 0x83, 0xb6, 0x99, 0x5c, 0xae, 0xcc, 0x22, 0x39, - 0xdd, 0x98, 0x81, 0x19, 0xc7, 0x65, 0x3e, 0x83, 0x5b, 0x04, 0xed, 0x92, 0x31, 0x59, 0xd2, 0x37, - 0x7c, 0xcf, 0x78, 0xad, 0xa1, 0xd8, 0x9e, 0x22, 0x97, 0x21, 0x1b, 0xb8, 0x12, 0x1c, 0x52, 0x82, - 0x09, 0x8b, 0x58, 0x40, 0x23, 0x93, 0xaa, 0x32, 0x72, 0x8c, 0x1a, 0xaf, 0x86, 0x2f, 0xc3, 0x2f, - 0x58, 0xd7, 0x05, 0x6a, 0x70, 0xb9, 0x76, 0x82, 0x07, 0x68, 0x83, 0xd5, 0xc1, 0x02, 0xd4, 0x54, - 0x99, 0x7f, 0xed, 0x4d, 0xa5, 0xaf, 0xa6, 0xa2, 0x4d, 0xe0, 0x2f, 0x76, 0x0b, 0x7e, 0x5e, 0x35, - 0xf8, 0x33, 0x72, 0x54, 0xf8, 0x01, 0xdd, 0x81, 0x25, 0xc2, 0x83, 0x9f, 0x82, 0x0f, 0x39, 0x29, - 0xdd, 0xd3, 0xbb, 0xa0, 0xf7, 0x4c, 0xdd, 0x59, 0x90, 0x2b, 0xcb, 0xa1, 0x15, 0x24, 0x0b, 0xc2, - 0x79, 0xce, 0x81, 0x09, 0xd7, 0x9e, 0xe1, 0xf4, 0xf1, 0xc4, 0x1a, 0xae, 0x06, 0x9e, 0xee, 0x8d, - 0xcb, 0x11, 0xf6, 0x15, 0xb5, 0x5e, 0xb7, 0xb0, 0x80, 0x1a, 0x8c, 0xea, 0x4f, 0x17, 0x3a, 0xba, - 0xb8, 0x82, 0x30, 0xd4, 0x07, 0x64, 0x0a, 0xa8, 0x6b, 0xa4, 0x3b, 0x54, 0x4c, 0xda, 0x11, 0x2d, - 0xe8, 0x08, 0xdd, 0xab, 0x77, 0x3b, 0xf4, 0xda, 0xb1, 0x37, 0x26, 0x7c, 0x87, 0xd8, 0xf6, 0x37, - 0x74, 0x43, 0xd5, 0x60, 0xe1, 0xa0, 0xdd, 0x91, 0xd2, 0x6c, 0xbf, 0x5d, 0x4a, 0x9b, 0xa8, 0x71, - 0x53, 0xd5, 0xc9, 0x7d, 0xa0, 0xa5, 0x7d, 0x2d, 0x9d, 0xa2, 0xe8, 0xf6, 0xce, 0x9f, 0xc6, 0x45, - 0xaa, 0xfb, 0xc1, 0x84, 0xb5, 0x87, 0x86, 0xe1, 0x0c, 0x66, 0xb1, 0x0b, 0x0c, 0xc7, 0x78, 0x3d, - 0x29, 0x9b, 0xfc, 0x77, 0xba, 0x68, 0x27, 0x05, 0xa2, 0xd8, 0x64, 0x03, 0x74, 0x3f, 0xca, 0x5b, - 0x1b, 0x4c, 0xd1, 0xf7, 0x9b, 0x92, 0x85, 0x0d, 0x0a, 0xd9, 0x1b, 0xd8, 0x0d, 0x57, 0x76, 0xe2, - 0xe8, 0x7a, 0xab, 0x89, 0x37, 0x05, 0x50, 0xda, 0xe2, 0x48, 0x43, 0x5a, 0x54, 0xe2, 0x2e, 0x31, - 0xe1, 0x42, 0x7a, 0xfb, 0xd2, 0x59, 0x9d, 0x4f, 0x46, 0x75, 0x03, 0xaf, 0xe5, 0x9e, 0x46, 0xa6, - 0x35, 0xba, 0x6c, 0x6d, 0x80, 0x11, 0x34, 0xb4, 0x3d, 0xfb, 0xec, 0x79, 0x64, 0x3b, 0x6a, 0xef, - 0x6d, 0xc3, 0x9d, 0x29, 0x5e, 0xb2, 0xaf, 0x92, 0x64, 0x7d, 0x7b, 0x2c, 0x5d, 0x29, 0xf2, 0x62, - 0x39, 0xbd, 0x89, 0x2b, 0x30, 0x5d, 0xcc, 0x37, 0x08, 0x06, 0x0d, 0xd8, 0xee, 0xb4, 0xb3, 0x1d, - 0xe5, 0x0d, 0xba, 0x2e, 0xd1, 0x07, 0x40, 0xdb, 0x5f, 0x4a, 0xd9, 0x1a, 0xea, 0x77, 0xd7, 0xe3, - 0x78, 0x68, 0xbf, 0xf3, 0xf2, 0x16, 0xa4, 0xb3, 0x77, 0x5e, 0x6d, 0xa6, 0x5d, 0xf7, 0x30, 0xca, - 0xd5, 0x42, 0x83, 0xcb, 0x46, 0xd8, 0x6b, 0x74, 0xc6, 0x29, 0xa7, 0x1e, 0xe7, 0xcc, 0x3e, 0xd9, - 0x62, 0xb0, 0xd6, 0x05, 0x93, 0x25, 0x2f, 0xcb, 0x1c, 0x24, 0xc1, 0x33, 0x02, 0x79, 0x0e, 0xcf, - 0x87, 0x66, 0x53, 0x48, 0x95, 0x9e, 0x45, 0x74, 0x3d, 0x1c, 0x8f, 0x45, 0xf1, 0x13, 0x61, 0x17, - 0x6a, 0x7c, 0xb0, 0xfa, 0x68, 0xc2, 0x79, 0x8a, 0x42, 0x5e, 0x0e, 0x54, 0x31, 0xfa, 0xcc, 0xcd, - 0x68, 0xfa, 0xbe, 0x08, 0xd8, 0xa3, 0x98, 0xcc, 0x75, 0xc0, 0x45, 0xcc, 0x6b, 0xd3, 0xb5, 0x3c, - 0x71, 0x61, 0xfc, 0xaa, 0xea, 0x3d, 0xc3, 0x2b, 0x20, 0x2d, 0xd4, 0x58, 0xa1, 0xee, 0x2e, 0x80, - 0x47, 0xbc, 0x61, 0xf8, 0xdb, 0xa1, 0x84, 0x19, 0xe5, 0xdd, 0x3c, 0xed, 0x9e, 0x37, 0x95, 0xd9, - 0x2c, 0x5e, 0x0e, 0xbb, 0xb0, 0xa0, 0x2e, 0x97, 0x38, 0x2d, 0xb4, 0x14, 0xa2, 0x02, 0x1d, 0xaa, - 0x1a, 0x67, 0x02, 0xa3, 0x4d, 0x1e, 0x43, 0x15, 0x8f, 0x9d, 0xb3, 0x71, 0xee, 0x05, 0x98, 0xe5, - 0x02, 0xea, 0x7b, 0x8a, 0x25, 0xb1, 0x56, 0x30, 0x45, 0xe2, 0xd4, 0xce, 0xa2, 0xed, 0x61, 0x3f, - 0x0b, 0xb4, 0x76, 0x5f, 0xf8, 0x0f, 0x40, 0x21, 0x24, 0xfa, 0xdc, 0xed, 0x97, 0x00, 0xba, 0x86, - 0xa1, 0x39, 0xaa, 0x89, 0x36, 0x98, 0x27, 0x9a, 0x42, 0x89, 0x33, 0x74, 0x49, 0xb4, 0x55, 0x0d, - 0xf1, 0x61, 0x75, 0x97, 0x4f, 0xed, 0xa2, 0xbb, 0x06, 0x0d, 0x94, 0x2e, 0xb4, 0x84, 0xfd, 0xf3, - 0x3d, 0x76, 0xf8, 0xc0, 0x79, 0xcf, 0x3e, 0xe1, 0x05, 0xe3, 0xc9, 0xc4, 0x6c, 0x3a, 0x9e, 0xca, - 0xa5, 0x40, 0x7f, 0x2d, 0x85, 0x58, 0xcb, 0xd7, 0x46, 0x83, 0xbe, 0xbb, 0x5c, 0x5b, 0xe6, 0x55, - 0x53, 0x77, 0x75, 0xa7, 0xef, 0x1b, 0x15, 0x36, 0x0c, 0x0b, 0x82, 0x62, 0xb5, 0x9f, 0x27, 0xbd, - 0x89, 0x94, 0x8e, 0xa1, 0xa3, 0x37, 0xc3, 0xb3, 0x39, 0xb4, 0xb8, 0x63, 0x0a, 0x54, 0xab, 0x4a, - 0x8f, 0x32, 0x57, 0x0c, 0xbd, 0xdd, 0xbc, 0x99, 0x27, 0xec, 0x44, 0x71, 0x89, 0xa6, 0x4d, 0x45, - 0x6e, 0x7c, 0x7f, 0x8a, 0x01, 0xb9, 0x18, 0x8d, 0xb8, 0x04, 0x66, 0x97, 0x52, 0x93, 0xcf, 0x4b, - 0x8a, 0x0e, 0x22, 0xef, 0xb8, 0x5b, 0xf6, 0x1c, 0xf4, 0xab, 0x33, 0x20, 0x9d, 0x17, 0xa6, 0x4d, - 0xc6, 0x72, 0x53, 0x4c, 0x16, 0xcf, 0x53, 0xf4, 0x51, 0xe3, 0x78, 0x1e, 0x98, 0x57, 0xe9, 0x92, - 0x18, 0xb6, 0x8b, 0x0c, 0x06, 0xd5, 0xc2, 0x68, 0x14, 0xe7, 0x23, 0x9a, 0x60, 0xee, 0x8c, 0x0b, - 0x4c, 0x2a, 0x19, 0x67, 0x81, 0x65, 0x3b, 0x33, 0x4e, 0x91, 0xcb, 0x52, 0x51, 0xe9, 0x18, 0x0a, - 0x24, 0x07, 0xe0, 0x56, 0xf3, 0xf3, 0x12, 0x33, 0x39, 0x97, 0xe4, 0x26, 0x36, 0x1a, 0x46, 0x9f, - 0x60, 0xe9, 0x30, 0x0b, 0xf3, 0x96, 0x73, 0x2e, 0x24, 0x08, 0xc2, 0xde, 0xcb, 0xe2, 0x4a, 0x83, - 0xea, 0x81, 0x5a, 0x54, 0xc9, 0xa5, 0xde, 0x3b, 0x84, 0x9c, 0x8c, 0x5a, 0x20, 0x71, 0x8b, 0x22, - 0x23, 0x4b, 0xda, 0x1e, 0x18, 0x93, 0x59, 0x20, 0x80, 0x14, 0x5d, 0x1d, 0x32, 0x17, 0x24, 0x8e, - 0x8a, 0xaa, 0x53, 0x61, 0x13, 0x3c, 0x0a, 0x39, 0xfc, 0x63, 0x11, 0x54, 0x20, 0x7d, 0x10, 0xc4, - 0xb2, 0x0c, 0x8b, 0x83, 0xb1, 0x40, 0xdf, 0xaf, 0xed, 0x5c, 0x3c, 0xe4, 0x79, 0x7a, 0x68, 0x74, - 0x95, 0x05, 0xcf, 0xa4, 0xa7, 0x52, 0x78, 0x8b, 0x9f, 0x67, 0x3d, 0xe3, 0x90, 0x72, 0x1d, 0x76, - 0x06, 0xa8, 0xc2, 0x67, 0xb1, 0xbf, 0x4b, 0x87, 0xd4, 0x88, 0xd5, 0xe1, 0x1f, 0x13, 0xcc, 0x3a, - 0x88, 0xb7, 0xe3, 0x0b, 0x36, 0x6f, 0xa7, 0xf3, 0xda, 0x0b, 0x4a, 0x9e, 0x90, 0x5a, 0x8d, 0x2e, - 0x07, 0xc3, 0x26, 0x9f, 0x5e, 0xcf, 0x99, 0xde, 0xc0, 0x54, 0x7f, 0xe6, 0xfb, 0xa2, 0x6b, 0x9c, - 0xf4, 0x55, 0x37, 0xba, 0xc4, 0xf6, 0xe5, 0x77, 0x61, 0xfe, 0xd5, 0xa2, 0xe6, 0x9a, 0x97, 0x90, - 0x9f, 0x7f, 0xd5, 0xbb, 0x9a, 0xe3, 0xbb, 0x99, 0x5d, 0xdf, 0x2e, 0x2d, 0x04, 0x7a, 0x46, 0xac, - 0x4b, 0x35, 0x42, 0xa9, 0x94, 0x50, 0x44, 0x4a, 0x31, 0x27, 0xca, 0xa2, 0xf3, 0xe3, 0x2b, 0x08, - 0x20, 0x1d, 0x1a, 0xfb, 0xac, 0x97, 0x38, 0x00, 0x56, 0xe0, 0xf8, 0xba, 0xb8, 0x20, 0xb8, 0x69, - 0xca, 0x02, 0x43, 0xe0, 0xf6, 0x94, 0xef, 0xad, 0xcf, 0x85, 0x17, 0x7a, 0xde, 0x30, 0xa0, 0x0b, - 0x68, 0x60, 0x2e, 0x67, 0x0b, 0x08, 0x8e, 0x23, 0x5f, 0x60, 0xea, 0x86, 0x40, 0xd0, 0xc5, 0x9d, - 0x03, 0xe1, 0xe6, 0x52, 0x5f, 0xa9, 0x4b, 0x6b, 0xf6, 0xf2, 0x81, 0xfb, 0xd4, 0xad, 0xd6, 0xf5, - 0xeb, 0x74, 0x67, 0x11, 0xd5, 0xa8, 0x1c, 0xa8, 0x29, 0x6d, 0x47, 0xf7, 0xc6, 0xa7, 0x18, 0x6e, - 0x92, 0xe6, 0x85, 0xda, 0x0d, 0x95, 0xf6, 0x90, 0xef, 0xaa, 0x63, 0xaf, 0x10, 0x3c, 0x72, 0x64, - 0x28, 0x54, 0xe4, 0xc0, 0xcc, 0xf1, 0x0c, 0x08, 0x5a, 0xe5, 0xab, 0x3a, 0xec, 0x4f, 0x3c, 0x38, - 0x65, 0xd7, 0xfe, 0x99, 0x7f, 0xd5, 0xf8, 0xda, 0x25, 0x4a, 0xc4, 0x58, 0x8f, 0x36, 0x58, 0x40, - 0x8a, 0xe5, 0xcc, 0x16, 0x3d, 0x1b, 0x95, 0x90, 0x13, 0x23, 0xd8, 0x06, 0xb0, 0x48, 0x77, 0x0e, - 0x4d, 0x72, 0xd0, 0xe9, 0xb2, 0x84, 0xaf, 0x9c, 0x91, 0x30, 0x4f, 0x4f, 0xd4, 0x19, 0x0d, 0x61, - 0xdf, 0x80, 0xb5, 0x03, 0xc6, 0x03, 0x59, 0xc3, 0x04, 0xe2, 0xe2, 0xdc, 0xeb, 0xd6, 0xa2, 0x39, - 0x1d, 0x0b, 0x70, 0xdb, 0x20, 0xdd, 0x3e, 0xb1, 0x3d, 0x75, 0x92, 0x0a, 0xee, 0xff, 0xf5, 0x42, - 0xde, 0x7a, 0x16, 0xd8, 0x50, 0xb6, 0xc0, 0x44, 0xc6, 0xac, 0x67, 0x19, 0xc3, 0x99, 0x2f, 0x16, - 0x7c, 0x89, 0x3e, 0x77, 0x8c, 0xd9, 0x6a, 0x79, 0x18, 0xac, 0x36, 0x9e, 0x22, 0xeb, 0xd2, 0xc3, - 0x5f, 0x77, 0xbf, 0x7d, 0x5b, 0xb6, 0xee, 0xe6, 0x3c, 0xd7, 0x63, 0xc8, 0x7f, 0xeb, 0x2d, 0x40, - 0x61, 0xfe, 0x5e, 0xae, 0x26, 0x52, 0x22, 0xc6, 0xe9, 0x1c, 0xc1, 0xa6, 0x15, 0x6e, 0x5b, 0xf6, - 0x79, 0x97, 0xc7, 0x57, 0xca, 0xc8, 0x42, 0x04, 0x63, 0x5a, 0x8a, 0x56, 0xe5, 0xda, 0x65, 0x1a, - 0xe2, 0x46, 0x1f, 0x5b, 0xc3, 0xc0, 0xeb, 0x0a, 0xba, 0x0d, 0xa5, 0xaf, 0xb2, 0x0c, 0x26, 0x60, - 0xb6, 0xf8, 0x2f, 0x09, 0x06, 0x0e, 0xe0, 0xf5, 0xff, 0x31, 0x78, 0x5f, 0xe5, 0x9e, 0x0c, 0x00, - 0xdb, 0xff, 0x20, 0x40, 0x19, 0x7b, 0x3c, 0xf9, 0xe7, 0x00, 0xf6, 0x7a, 0x08, 0xf0, 0x25, 0x06, - 0xa0, 0xf4, 0x75, 0xd2, 0x56, 0xb4, 0x68, 0x2b, 0x1f, 0xc3, 0xee, 0xf5, 0xca, 0xbd, 0x6c, 0x4f, - 0x90, 0x29, 0x6c, 0x01, 0x1d, 0x9b, 0x5f, 0x3b, 0xed, 0x6e, 0x9b, 0xb6, 0xc3, 0x7c, 0x09, 0x03, - 0x6a, 0x67, 0xb0, 0x46, 0x25, 0xdf, 0xb7, 0x2a, 0x71, 0x5e, 0x56, 0xea, 0x52, 0x10, 0xbe, 0x5a, - 0xfd, 0x36, 0x2b, 0xe3, 0xfa, 0x16, 0x7c, 0x49, 0x0e, 0x66, 0x0e, 0xcb, 0x40, 0x14, 0x25, 0x46, - 0x0f, 0x89, 0x73, 0x6c, 0x4b, 0x69, 0xd2, 0x85, 0xf5, 0x85, 0x3d, 0x9a, 0x0e, 0x28, 0x57, 0xde, - 0xcc, 0x76, 0x4d, 0x5d, 0xda, 0xa7, 0xf6, 0xa8, 0x8d, 0xd2, 0x8d, 0xf3, 0x93, 0x7f, 0x72, 0xa7, - 0x21, 0x86, 0x69, 0x63, 0xb8, 0x3b, 0x1f, 0xa3, 0xd1, 0x73, 0xfa, 0x3b, 0x2f, 0x3b, 0x0a, 0xfe, - 0xa4, 0x41, 0x58, 0x9c, 0xa4, 0x09, 0x14, 0x3e, 0x21, 0x9d, 0x03, 0xa5, 0x02, 0x1d, 0x19, 0x92, - 0xaf, 0x6b, 0x7b, 0x29, 0x9c, 0x16, 0xb8, 0xa8, 0x21, 0xe2, 0xf4, 0x44, 0x3b, 0x11, 0x64, 0xb7, - 0x39, 0x72, 0x42, 0x5d, 0xa7, 0x6a, 0xcd, 0x4a, 0xb5, 0x93, 0x3b, 0x23, 0x40, 0x8f, 0x08, 0xfc, - 0x9c, 0x79, 0x6b, 0x37, 0x6e, 0x52, 0x2a, 0x90, 0xd6, 0x21, 0x8c, 0xe9, 0xf8, 0x5d, 0x6b, 0x7f, - 0xe3, 0x6b, 0x79, 0xd0, 0x40, 0xc8, 0xa1, 0x1d, 0x5e, 0x64, 0x17, 0xda, 0xac, 0xf6, 0x8c, 0xce, - 0xc8, 0x0e, 0xb6, 0x78, 0x63, 0x4a, 0x04, 0x2a, 0x05, 0xdb, 0x9a, 0xb2, 0x46, 0xba, 0x4e, 0x17, - 0x2d, 0x68, 0xa7, 0xf3, 0x32, 0xe3, 0x90, 0xe3, 0xcd, 0xf2, 0xc8, 0xde, 0x15, 0x37, 0x86, 0xe8, - 0x66, 0xfa, 0xb8, 0x15, 0x67, 0x30, 0x1a, 0xb6, 0xfd, 0x8d, 0x77, 0xde, 0xfa, 0x5a, 0x5c, 0xe1, - 0x43, 0x8e, 0x77, 0x9e, 0x25, 0x22, 0x48, 0x2c, 0xa3, 0x2f, 0xa7, 0xb0, 0x83, 0xb2, 0x1a, 0x8b, - 0x1c, 0x46, 0x3b, 0xd0, 0x97, 0xd5, 0xbd, 0x5e, 0x18, 0x0b, 0x1a, 0x88, 0x22, 0x4b, 0xf4, 0x7f, - 0xc9, 0x8f, 0x20, 0xd3, 0x2e, 0x7b, 0xee, 0x53, 0x57, 0xfd, 0xe7, 0x07, 0xf3, 0xbf, 0x48, 0x8d, - 0x58, 0x3d, 0x14, 0xd5, 0xa8, 0xf9, 0x57, 0x7a, 0xfc, 0xc6, 0x16, 0xfe, 0x74, 0x58, 0xca, 0x01, - 0x22, 0x81, 0xc5, 0x4c, 0x77, 0xd5, 0xc2, 0xb6, 0x4b, 0x36, 0xe4, 0xdd, 0xa6, 0xca, 0xc9, 0x8a, - 0x16, 0x97, 0x50, 0x24, 0x0e, 0xac, 0x0f, 0x87, 0xd7, 0xbb, 0xdc, 0x99, 0x51, 0xf0, 0x5c, 0x9a, - 0x83, 0xee, 0x2c, 0xc6, 0xd7, 0xf8, 0xb5, 0x6d, 0xa9, 0xac, 0xb8, 0xaf, 0xdd, 0xe5, 0x4a, 0x9b, - 0xb1, 0xda, 0x1d, 0xe7, 0x93, 0x6f, 0x0f, 0x1d, 0xa8, 0xca, 0x9c, 0xb3, 0xbc, 0xa1, 0x57, 0x0e, - 0xed, 0xea, 0x73, 0x0a, 0x24, 0x3a, 0x0b, 0xe6, 0x54, 0xd9, 0xe2, 0x55, 0x7a, 0x3e, 0x5a, 0xa3, - 0x10, 0x71, 0x62, 0x85, 0xdd, 0xd0, 0x0b, 0x5b, 0x52, 0x0b, 0x33, 0x2b, 0xec, 0x0c, 0x2a, 0x86, - 0x84, 0xdc, 0x46, 0x77, 0xe4, 0x06, 0x74, 0xe0, 0xb6, 0x90, 0x37, 0x96, 0xc8, 0x1e, 0x78, 0x86, - 0x67, 0x63, 0x51, 0xa2, 0xf9, 0xa1, 0x39, 0x8b, 0xbc, 0x92, 0xef, 0x32, 0x46, 0x66, 0xc6, 0xce, - 0x92, 0xfa, 0x2b, 0xeb, 0x45, 0x7c, 0x42, 0xcc, 0x60, 0xf5, 0x13, 0x89, 0xa6, 0xa9, 0xa6, 0xad, - 0xda, 0xcb, 0x4d, 0xe0, 0x7c, 0x72, 0x95, 0x97, 0xd7, 0x75, 0x69, 0x53, 0xcd, 0x76, 0xc3, 0x66, - 0x5e, 0x00, 0x29, 0xf0, 0xc3, 0xc7, 0xa5, 0xe6, 0xc2, 0xc9, 0xf8, 0xe2, 0x6d, 0x53, 0x2d, 0xc3, - 0xa1, 0x98, 0x5c, 0x65, 0xbe, 0xcf, 0x19, 0xbc, 0x59, 0x48, 0x35, 0xf5, 0x77, 0xcf, 0x20, 0x8b, - 0x6e, 0x0d, 0x7b, 0x01, 0x17, 0x9e, 0xc3, 0x6a, 0x23, 0x4b, 0x7d, 0xe4, 0xb1, 0x3b, 0xa9, 0x4b, - 0x22, 0x41, 0x10, 0x96, 0x3e, 0x0b, 0xfb, 0x3e, 0x5d, 0xed, 0xbc, 0xec, 0xf1, 0x3d, 0x96, 0xf1, - 0xac, 0x90, 0x6c, 0x8e, 0x2b, 0x53, 0x64, 0x21, 0x1e, 0x34, 0x1f, 0x5a, 0xeb, 0x76, 0x25, 0xef, - 0xb9, 0x4b, 0x34, 0xf6, 0x3c, 0xf5, 0xfa, 0x80, 0x1b, 0x1c, 0x1c, 0x67, 0x73, 0xdb, 0x1e, 0xd1, - 0x20, 0x0e, 0x7f, 0x20, 0x3b, 0x30, 0x8e, 0x73, 0x0f, 0x8a, 0xdb, 0x24, 0x8b, 0x2d, 0x41, 0xb4, - 0xf8, 0x51, 0x0a, 0xf2, 0x65, 0xce, 0x88, 0xc1, 0xe4, 0xa5, 0xf4, 0x2f, 0x44, 0xc6, 0xd9, 0xeb, - 0x5f, 0x9e, 0x4a, 0x15, 0x66, 0xbc, 0xa4, 0x11, 0x54, 0xd8, 0xbe, 0xe1, 0xab, 0x44, 0x99, 0x62, - 0x81, 0x1d, 0x66, 0xab, 0xf6, 0x12, 0x56, 0x70, 0xe7, 0x32, 0x92, 0x06, 0x01, 0x52, 0x93, 0x81, - 0xea, 0x90, 0x0d, 0x90, 0xe7, 0x74, 0xe9, 0x41, 0xf1, 0x33, 0x67, 0x0a, 0xd8, 0x82, 0xd3, 0x28, - 0x0d, 0xc9, 0x1c, 0xf1, 0xa2, 0x7a, 0x51, 0x61, 0x89, 0x45, 0xe5, 0x49, 0x12, 0xce, 0x40, 0xa0, - 0xcf, 0xa1, 0x70, 0x88, 0xb2, 0x0b, 0xbf, 0xed, 0x1f, 0x04, 0x8d, 0x78, 0x90, 0x43, 0xa5, 0x83, - 0x25, 0x86, 0xeb, 0x34, 0x2a, 0xa0, 0x4c, 0xe7, 0x9c, 0x45, 0x24, 0x3b, 0x0b, 0xf4, 0x9b, 0x45, - 0xbd, 0xa9, 0x3e, 0x09, 0x22, 0xe2, 0x6d, 0x15, 0xa9, 0x3f, 0x27, 0xfa, 0xfc, 0xa5, 0x72, 0x21, - 0xd8, 0x24, 0x14, 0x50, 0x12, 0x2b, 0x14, 0x8b, 0xff, 0x9c, 0x50, 0x5c, 0xa6, 0x5c, 0xd0, 0xe5, - 0x2c, 0x9a, 0xf8, 0x77, 0x25, 0x68, 0xbc, 0xc4, 0x9c, 0x7f, 0x75, 0x9c, 0x59, 0x4c, 0x20, 0x55, - 0x47, 0x5b, 0xe4, 0x64, 0xb4, 0x4f, 0xdc, 0x31, 0xa2, 0x51, 0x47, 0xa6, 0xc4, 0xbf, 0x68, 0xe1, - 0x37, 0x32, 0xe3, 0x25, 0x46, 0x6d, 0x51, 0xe9, 0x29, 0x20, 0xab, 0x76, 0xd5, 0x31, 0x2b, 0x3f, - 0x5b, 0xd8, 0x59, 0x08, 0xf2, 0x3e, 0xe3, 0x65, 0xb6, 0x5c, 0x03, 0x1e, 0x47, 0x0b, 0xb8, 0x29, - 0x17, 0x44, 0xda, 0xc8, 0x81, 0xbb, 0xd5, 0x1d, 0x5a, 0xcf, 0x20, 0x8e, 0x51, 0x93, 0xbc, 0xc1, - 0xf7, 0x2c, 0xe5, 0xe5, 0x45, 0xdc, 0x95, 0x3b, 0xc2, 0x3f, 0x60, 0x4d, 0x45, 0xa8, 0xb0, 0x48, - 0x5b, 0xae, 0x80, 0xdd, 0x0f, 0x53, 0x89, 0x27, 0xcd, 0x47, 0x9b, 0x39, 0x31, 0x76, 0x0c, 0xaf, - 0x24, 0xea, 0xa0, 0xfe, 0x10, 0xeb, 0xa7, 0xc4, 0x25, 0x21, 0x2a, 0x3f, 0x67, 0x9f, 0x34, 0x89, - 0x3e, 0x3b, 0x41, 0xb2, 0xfc, 0x36, 0x51, 0x79, 0x51, 0x07, 0xe1, 0xac, 0xa6, 0xc5, 0x78, 0x93, - 0x9c, 0x5d, 0x0b, 0x22, 0x44, 0x63, 0x66, 0x01, 0x62, 0xdc, 0x53, 0x89, 0xd6, 0x5d, 0x98, 0x0a, - 0x41, 0x4e, 0x5c, 0x62, 0x0c, 0x21, 0x16, 0x22, 0xf7, 0x5c, 0xf6, 0x28, 0xca, 0x61, 0xb5, 0x9d, - 0x11, 0x69, 0x71, 0xd4, 0x16, 0x21, 0x32, 0xfb, 0x67, 0x81, 0xc0, 0xae, 0x59, 0x14, 0x43, 0xe6, - 0x52, 0xdc, 0x00, 0x05, 0x6a, 0xb2, 0xaa, 0xeb, 0xb8, 0xe7, 0x61, 0x82, 0x40, 0x64, 0x51, 0x2b, - 0xd2, 0xaa, 0xd2, 0x40, 0xb7, 0x70, 0xe9, 0x65, 0x26, 0x20, 0x13, 0xb5, 0xc2, 0x42, 0x17, 0x5d, - 0x07, 0x1b, 0x19, 0x2e, 0xf4, 0x9e, 0x99, 0xe6, 0x91, 0xd8, 0x0d, 0x61, 0x43, 0x40, 0x5b, 0x3c, - 0x39, 0xc7, 0x22, 0x30, 0x13, 0x94, 0xb8, 0x1e, 0xe6, 0x62, 0x18, 0x69, 0x11, 0x0e, 0xae, 0x40, - 0xfe, 0x26, 0x08, 0x75, 0x0f, 0xc6, 0xb8, 0x5d, 0x97, 0x29, 0xee, 0xa0, 0x44, 0x05, 0x2c, 0x63, - 0x11, 0xca, 0x68, 0x54, 0x2e, 0x46, 0xf8, 0x8e, 0xf3, 0xea, 0xce, 0xd3, 0x8a, 0xa9, 0x62, 0x97, - 0xdc, 0x26, 0x37, 0xa1, 0xcf, 0xd5, 0x2a, 0x9b, 0x86, 0xe1, 0x29, 0xe6, 0xe3, 0x8d, 0x21, 0x57, - 0x94, 0x0a, 0x9e, 0xbe, 0x95, 0x75, 0xf5, 0xad, 0x90, 0xb2, 0x8e, 0xfb, 0xe4, 0x3e, 0xa5, 0x90, - 0x91, 0x42, 0x11, 0xb3, 0x2c, 0x82, 0x22, 0x1c, 0x51, 0x31, 0x5b, 0x5c, 0xc5, 0x63, 0xf6, 0x5e, - 0x3e, 0xa9, 0xec, 0x46, 0xe3, 0x14, 0x43, 0x31, 0xd4, 0x34, 0x81, 0x73, 0x75, 0x6e, 0xc6, 0x6e, - 0x6a, 0xbb, 0x68, 0xce, 0x82, 0xe0, 0x19, 0x37, 0xe0, 0x11, 0x53, 0x69, 0x58, 0x9f, 0x8f, 0xfa, - 0x92, 0x20, 0x3f, 0xd9, 0x8b, 0xb7, 0xde, 0x60, 0xd1, 0x90, 0x6d, 0x3b, 0x62, 0x31, 0xd9, 0x7d, - 0x3f, 0xbe, 0x8b, 0xf9, 0x57, 0x29, 0xec, 0x19, 0xd5, 0x56, 0x58, 0x60, 0xb0, 0xff, 0x8e, 0xe1, - 0xa1, 0x6a, 0xf7, 0x53, 0x51, 0x94, 0x11, 0x0f, 0xef, 0x22, 0x0d, 0xc3, 0x7c, 0x88, 0xe3, 0xa9, - 0x93, 0x09, 0x74, 0xc5, 0x8b, 0x8c, 0xed, 0x92, 0x9e, 0x32, 0xd2, 0x1c, 0x0c, 0xc5, 0xf6, 0x7b, - 0x5f, 0xf2, 0x35, 0xcd, 0xf4, 0x34, 0xd0, 0x62, 0xb9, 0x48, 0xcd, 0x42, 0x21, 0xa4, 0x09, 0xd3, - 0x62, 0xbe, 0x02, 0x56, 0x0d, 0xd6, 0x1c, 0xe4, 0x05, 0xdf, 0xc9, 0x4a, 0x7d, 0xf8, 0x1d, 0x1b, - 0x54, 0xc6, 0x69, 0xa0, 0x9d, 0x2e, 0x32, 0x76, 0x97, 0x8f, 0xb7, 0xf6, 0xcb, 0x03, 0xf4, 0xe8, - 0xee, 0x28, 0x5f, 0xcc, 0x0f, 0x90, 0x97, 0xa8, 0xd2, 0x47, 0xc9, 0xe0, 0x6e, 0x69, 0x53, 0x96, - 0x65, 0xe6, 0x01, 0x67, 0xf5, 0x4a, 0xf1, 0xa9, 0x34, 0x25, 0xb6, 0x6c, 0x34, 0x11, 0x86, 0xc8, - 0x76, 0xec, 0xc5, 0x50, 0xd3, 0xc0, 0x72, 0x86, 0x12, 0x13, 0x6b, 0x21, 0x98, 0x7c, 0x21, 0x60, - 0x55, 0x01, 0x4d, 0x6f, 0x31, 0x50, 0xae, 0xcb, 0xc7, 0xfa, 0x07, 0xc1, 0xc1, 0xfe, 0x86, 0x05, - 0x1f, 0x84, 0xdc, 0xb3, 0xde, 0x59, 0x14, 0x44, 0x36, 0x7e, 0x57, 0xdd, 0xe3, 0x9a, 0x88, 0xea, - 0xc7, 0x85, 0xe1, 0xd3, 0xfd, 0x60, 0x29, 0x8d, 0x72, 0xc7, 0x58, 0x16, 0x57, 0xe3, 0x47, 0x3a, - 0x44, 0x3b, 0x60, 0x91, 0x71, 0x67, 0xf0, 0xa2, 0x85, 0xd4, 0x55, 0xe4, 0x1e, 0x1a, 0x66, 0xec, - 0x6a, 0xb6, 0x5c, 0x0c, 0x0c, 0x6f, 0xef, 0xcf, 0x6f, 0x76, 0x85, 0x85, 0xfa, 0x32, 0xab, 0x1d, - 0x44, 0x85, 0x6d, 0xb8, 0x73, 0x82, 0x62, 0xc9, 0x04, 0xb8, 0x8b, 0x2b, 0x7b, 0x89, 0x21, 0x54, - 0xe0, 0x71, 0x8c, 0x74, 0xda, 0xd7, 0x81, 0x5c, 0xa5, 0xc8, 0x85, 0x0a, 0x0d, 0x79, 0xfd, 0xc7, - 0xc7, 0x18, 0x88, 0xbc, 0x7c, 0xe1, 0x5c, 0xb2, 0x6c, 0x33, 0x30, 0x1a, 0xce, 0xfa, 0xb7, 0x8c, - 0x9f, 0x1c, 0x0c, 0x7b, 0x80, 0x41, 0x68, 0xaa, 0xf3, 0xa6, 0x08, 0x17, 0x3b, 0x9d, 0xfb, 0xc0, - 0x73, 0xb5, 0xe8, 0xcc, 0xe4, 0xba, 0x3b, 0x5b, 0xd4, 0x5f, 0xe6, 0xa1, 0xc0, 0x00, 0x4a, 0xdb, - 0xff, 0x5c, 0xa0, 0x4f, 0x38, 0x37, 0x40, 0x78, 0xa5, 0x49, 0xef, 0x03, 0xf1, 0xa2, 0x28, 0xfc, - 0x7a, 0x9f, 0x51, 0x6a, 0xc3, 0xde, 0x71, 0xc6, 0x06, 0x51, 0x90, 0x6c, 0x06, 0x54, 0xdc, 0x21, - 0x09, 0x46, 0xa9, 0x18, 0x90, 0x2e, 0x1b, 0x2c, 0xb1, 0xd5, 0xa8, 0xba, 0x1a, 0x8e, 0xbd, 0x00, - 0xf6, 0x83, 0xe1, 0xc9, 0x33, 0x1b, 0x3f, 0xbe, 0x3d, 0xe8, 0x82, 0xe1, 0x14, 0x8a, 0xb3, 0x45, - 0xc3, 0xc6, 0x5d, 0x10, 0x0a, 0x45, 0x0c, 0xfa, 0xa6, 0xc7, 0xb9, 0x96, 0xe5, 0x2d, 0x49, 0x77, - 0xd9, 0x40, 0x58, 0x20, 0x92, 0xb7, 0x81, 0xca, 0x75, 0xc9, 0xe3, 0xc1, 0xe2, 0x62, 0x60, 0x49, - 0x75, 0x63, 0xf3, 0xf3, 0x9e, 0x4d, 0x3a, 0x13, 0x83, 0xa1, 0xa6, 0xf3, 0x32, 0xc4, 0x8b, 0x6c, - 0x59, 0x1b, 0x44, 0x4f, 0x91, 0x7c, 0x66, 0xc1, 0x69, 0x7b, 0xfe, 0x44, 0x7e, 0xc3, 0x35, 0x6d, - 0x82, 0xd2, 0x42, 0x17, 0xd5, 0xd9, 0x27, 0x8e, 0x3c, 0xc8, 0x0b, 0xf6, 0x45, 0x2d, 0x72, 0x30, - 0x65, 0xb5, 0x82, 0x5d, 0xb4, 0xa3, 0xf6, 0x6c, 0x96, 0x9d, 0x59, 0xe8, 0xd3, 0xce, 0xe1, 0x8e, - 0x2b, 0xe7, 0x8b, 0x71, 0xd1, 0x0c, 0xa7, 0xd2, 0xd2, 0x42, 0xda, 0x66, 0xb2, 0x2a, 0x56, 0xc8, - 0x6e, 0x7a, 0xf3, 0xb5, 0x12, 0x44, 0xa3, 0x81, 0xba, 0x80, 0x35, 0x24, 0x3f, 0xf6, 0xc6, 0xa0, - 0x00, 0x62, 0x1d, 0x0f, 0x81, 0x1b, 0x35, 0x0d, 0xba, 0x99, 0xaf, 0xc6, 0x78, 0x3a, 0x17, 0xfe, - 0xa3, 0x62, 0x31, 0xda, 0xf5, 0x05, 0x05, 0x28, 0xde, 0x0d, 0xe6, 0xb1, 0x2a, 0x43, 0xac, 0xda, - 0xb7, 0x94, 0x37, 0x1a, 0x8b, 0xe3, 0x06, 0x52, 0xc4, 0x27, 0xcf, 0xd3, 0x5a, 0x5b, 0xdb, 0xd0, - 0x3e, 0x1e, 0xf7, 0x90, 0xf8, 0x67, 0xb5, 0xec, 0x25, 0xdd, 0x0c, 0xa4, 0x7a, 0x29, 0xac, 0xc2, - 0xe4, 0xfd, 0x69, 0x5b, 0x28, 0xff, 0x2b, 0xee, 0x5c, 0x93, 0xa6, 0xda, 0xce, 0xa2, 0x89, 0xfc, - 0xe1, 0xd8, 0xbb, 0x13, 0xc2, 0x0f, 0xec, 0xa4, 0xf1, 0x6d, 0x31, 0xe7, 0x5b, 0x34, 0xdb, 0x39, - 0x9a, 0xc5, 0x44, 0xb3, 0x2e, 0xdd, 0x89, 0x59, 0x64, 0xd8, 0xa8, 0xce, 0xfa, 0xf9, 0x28, 0xd1, - 0x28, 0x7b, 0xc6, 0xc4, 0x44, 0xd7, 0xf8, 0xb0, 0x69, 0x39, 0xce, 0xa9, 0x14, 0x0a, 0x9f, 0xf4, - 0x5c, 0x74, 0xb4, 0x5b, 0xe1, 0xb5, 0x94, 0x69, 0xfd, 0xa4, 0x3b, 0x8b, 0xdd, 0xf7, 0x9e, 0x7b, - 0x71, 0xd2, 0x34, 0xf6, 0x9a, 0x49, 0x7c, 0x90, 0xbe, 0x4e, 0xe2, 0x47, 0x47, 0x53, 0x6c, 0xfb, - 0xdf, 0x75, 0xef, 0xc4, 0xcb, 0xcf, 0xa4, 0x44, 0xa1, 0xaf, 0x2c, 0x12, 0xd7, 0x06, 0x2e, 0x0a, - 0x1e, 0x0e, 0xbc, 0xe0, 0xe1, 0x12, 0x7d, 0xf9, 0xc3, 0x25, 0xc6, 0x18, 0xf6, 0xb1, 0x99, 0x51, - 0x13, 0x7f, 0xd1, 0xd3, 0x4d, 0xd1, 0x0e, 0xc8, 0x10, 0x59, 0xc7, 0x57, 0xf9, 0x4e, 0xc3, 0x35, - 0x25, 0xf7, 0x95, 0x8e, 0xe2, 0x8c, 0x0f, 0x60, 0xf4, 0x83, 0x2a, 0x51, 0x9d, 0x89, 0x09, 0xa8, - 0x9c, 0xb3, 0x38, 0x75, 0xc1, 0x07, 0xb5, 0x94, 0x7c, 0x6e, 0xf0, 0x71, 0xce, 0x5b, 0xdc, 0xdc, - 0xe0, 0x77, 0x9c, 0x0c, 0x42, 0x4c, 0x3f, 0xca, 0x85, 0xc5, 0x7c, 0x86, 0x5e, 0x50, 0x1b, 0x03, - 0xe5, 0x57, 0x56, 0x8f, 0x14, 0x88, 0xd4, 0xa7, 0xa9, 0xde, 0x29, 0x08, 0x6f, 0xe6, 0xfb, 0xc7, - 0xba, 0xe3, 0xec, 0x2b, 0xac, 0xb0, 0xd2, 0xf2, 0x5b, 0xb4, 0xeb, 0xfe, 0xae, 0xbc, 0x82, 0x96, - 0x60, 0x71, 0x19, 0xc7, 0x6c, 0x30, 0x96, 0x62, 0xf5, 0xe3, 0xa8, 0xf6, 0x16, 0x44, 0x73, 0xcc, - 0xe9, 0x21, 0x87, 0x98, 0xde, 0x40, 0xf2, 0x22, 0xbb, 0x85, 0x15, 0xe7, 0xd0, 0x49, 0xad, 0xb8, - 0x43, 0x1e, 0xbc, 0x95, 0x8a, 0x93, 0x99, 0xee, 0x3a, 0x44, 0x2c, 0x2b, 0x6f, 0xde, 0x47, 0x25, - 0x7e, 0x8c, 0xb4, 0x88, 0x77, 0x43, 0xac, 0xda, 0x08, 0xfa, 0x9b, 0xf4, 0x8d, 0xeb, 0xfb, 0x82, - 0xb3, 0x67, 0x21, 0xe2, 0x7a, 0x49, 0x3d, 0x77, 0xd7, 0x28, 0x36, 0x0f, 0xa7, 0x43, 0x15, 0x28, - 0xda, 0x21, 0x03, 0x43, 0xa3, 0x71, 0xb0, 0x03, 0x63, 0xa2, 0x27, 0x57, 0x4f, 0x6b, 0x54, 0x2b, - 0x54, 0x7a, 0x1c, 0x94, 0x3b, 0x33, 0x42, 0x15, 0xe8, 0x38, 0xa3, 0x1f, 0xb7, 0x80, 0x24, 0x6f, - 0xc7, 0x62, 0x45, 0xd8, 0xe8, 0xaa, 0x30, 0x75, 0x16, 0xff, 0x28, 0x04, 0x3b, 0x5f, 0x6e, 0xe3, - 0xc2, 0x3f, 0xb1, 0x17, 0x86, 0xdd, 0x11, 0xf8, 0xd9, 0xe6, 0xf5, 0x2c, 0x4e, 0x27, 0x66, 0x97, - 0x42, 0xd2, 0x67, 0xd2, 0xfd, 0xcf, 0x45, 0x8d, 0xd5, 0x93, 0x29, 0xfc, 0x89, 0x45, 0x2e, 0x12, - 0x25, 0x48, 0xf4, 0x88, 0x18, 0xa4, 0xd8, 0x6d, 0x3b, 0xf4, 0x8a, 0x38, 0x84, 0x8c, 0xb0, 0xa0, - 0xd9, 0x88, 0xd6, 0x2a, 0xb1, 0xf0, 0xd4, 0x38, 0x4d, 0x80, 0x57, 0xae, 0xb8, 0x33, 0x94, 0xd6, - 0x3b, 0xdf, 0x54, 0x7f, 0x09, 0x76, 0x69, 0x58, 0x60, 0x49, 0x04, 0xc5, 0xc5, 0x34, 0xc4, 0xd3, - 0x4d, 0xc5, 0xbf, 0x21, 0xb2, 0xf1, 0xcd, 0x0f, 0x4b, 0x9e, 0xf7, 0xa2, 0xe4, 0x6a, 0xfd, 0x71, - 0xbb, 0x01, 0xa6, 0x91, 0x0b, 0x41, 0x88, 0x9a, 0xb3, 0x60, 0xf1, 0x2b, 0x96, 0x77, 0xc0, 0x1c, - 0xe3, 0xec, 0xd2, 0x03, 0xb0, 0xcd, 0x99, 0x24, 0xe0, 0x4f, 0x70, 0xe5, 0x56, 0xed, 0xda, 0xb4, - 0x7d, 0x27, 0x02, 0x33, 0x40, 0xb8, 0x00, 0x02, 0xef, 0xe2, 0x86, 0x99, 0x7f, 0x99, 0x43, 0x5c, - 0xae, 0x1b, 0x5f, 0x11, 0x89, 0x17, 0x89, 0x2d, 0xc8, 0x82, 0x03, 0x16, 0x25, 0x87, 0xdd, 0x0e, - 0xe2, 0xed, 0xd2, 0xb9, 0x45, 0xbf, 0xe4, 0x72, 0x68, 0x0b, 0x67, 0x14, 0x39, 0x98, 0x83, 0xe4, - 0xfc, 0x7f, 0x0d, 0x81, 0xe1, 0x14, 0x01, 0xa6, 0xb6, 0x00, 0x0b, 0x8c, 0x00, 0xc3, 0x24, 0x24, - 0x3c, 0xdd, 0x41, 0x27, 0xc9, 0x19, 0x17, 0x84, 0xc0, 0x20, 0xa5, 0x62, 0x02, 0x83, 0x56, 0x07, - 0x05, 0x79, 0x6d, 0xf8, 0xf0, 0xf9, 0x40, 0xc7, 0x1c, 0x1e, 0x1e, 0x9f, 0xf1, 0xa7, 0x35, 0x59, - 0x4e, 0x39, 0x88, 0x0b, 0x72, 0xef, 0x7f, 0x28, 0xb3, 0xf0, 0x5c, 0x56, 0xea, 0xb2, 0x33, 0x0c, - 0xcf, 0xb8, 0x15, 0x8d, 0xe4, 0xd1, 0xf1, 0xe1, 0xf7, 0xc4, 0xc5, 0xf8, 0xb3, 0x95, 0x8b, 0xe8, - 0x26, 0x4b, 0xba, 0xa9, 0xbe, 0x39, 0x90, 0xdf, 0x44, 0x57, 0xf1, 0xec, 0x13, 0xe1, 0xa8, 0x8b, - 0x01, 0xb3, 0xde, 0x4e, 0xae, 0x14, 0xdd, 0xd9, 0xe5, 0xc2, 0x71, 0x3f, 0x0a, 0x5e, 0xcd, 0xe3, - 0xf6, 0xdf, 0x2a, 0xb4, 0x0b, 0x58, 0x00, 0x10, 0x64, 0xd4, 0x3a, 0xa7, 0x81, 0xd0, 0x9f, 0xed, - 0x72, 0x29, 0x5f, 0x89, 0x1f, 0x93, 0x6c, 0x29, 0x5d, 0xfa, 0x57, 0xe4, 0x42, 0x8c, 0x82, 0x3b, - 0x2a, 0x5e, 0xe0, 0x09, 0x1f, 0x4f, 0xcb, 0x59, 0x70, 0x2c, 0x00, 0x85, 0x4e, 0xd1, 0xf8, 0xcd, - 0x7f, 0x2e, 0xa0, 0x25, 0x22, 0x0a, 0x16, 0x31, 0x0d, 0x4e, 0xfa, 0xe6, 0xb8, 0xc1, 0xf9, 0x04, - 0xfe, 0x85, 0x74, 0xae, 0x1c, 0xdf, 0x81, 0x15, 0x8d, 0x94, 0x0a, 0x71, 0x8d, 0x6c, 0x62, 0x5c, - 0xcd, 0x9f, 0x11, 0x38, 0x88, 0xb8, 0x96, 0xe9, 0x8e, 0xc5, 0xc2, 0x64, 0xc8, 0x15, 0x28, 0xe2, - 0xcb, 0x4e, 0x80, 0xda, 0xfb, 0xa0, 0x06, 0x7d, 0xe6, 0x24, 0xa8, 0x7f, 0x22, 0x2e, 0x12, 0x4d, - 0xbc, 0xe4, 0x60, 0x28, 0x0d, 0xb7, 0x76, 0xc3, 0x7f, 0xb8, 0xe8, 0x8b, 0xf8, 0x98, 0x84, 0x6c, - 0x21, 0x74, 0x50, 0x6e, 0xf9, 0x9c, 0xfa, 0xdc, 0x61, 0xb1, 0xc5, 0x4d, 0x18, 0x54, 0x67, 0x93, - 0x1f, 0x9d, 0x64, 0x93, 0x63, 0xc1, 0xcf, 0x7c, 0x37, 0xfc, 0xdc, 0xdf, 0xd7, 0x08, 0xfa, 0x1d, - 0xda, 0xe9, 0x41, 0x99, 0x92, 0x5c, 0xbc, 0xc9, 0x83, 0xbb, 0xc5, 0xe3, 0x33, 0x7b, 0x96, 0xee, - 0xce, 0xb2, 0xe4, 0x6f, 0x3d, 0x45, 0xa8, 0x1a, 0xb3, 0xdb, 0xe7, 0xcd, 0xdf, 0x25, 0x3a, 0xbb, - 0xbf, 0x07, 0x1c, 0xb8, 0x71, 0x39, 0x06, 0x29, 0xfb, 0x96, 0xfe, 0xa2, 0x72, 0xee, 0x1f, 0x28, - 0x9e, 0xb2, 0x60, 0x95, 0x39, 0x5e, 0x75, 0x4c, 0x6f, 0x38, 0x16, 0xbe, 0x67, 0xdc, 0x9b, 0xdf, - 0xf1, 0x02, 0x21, 0xf8, 0x01, 0x59, 0x22, 0xa8, 0xdd, 0xba, 0xd8, 0x19, 0x8b, 0x02, 0xb5, 0x6e, - 0xea, 0xa2, 0x7b, 0x48, 0x55, 0xdc, 0xc2, 0xfb, 0x97, 0x01, 0x0f, 0x01, 0x6f, 0x0f, 0x17, 0x6e, - 0x8f, 0xd2, 0xe9, 0xf4, 0xf7, 0x0c, 0x94, 0xdf, 0x12, 0xd6, 0xbe, 0xeb, 0x86, 0x7b, 0x75, 0x32, - 0x05, 0x10, 0xa9, 0x28, 0xd0, 0xb6, 0xe0, 0xdd, 0x13, 0xfb, 0xe2, 0xd6, 0x5a, 0xcb, 0xb0, 0xac, - 0x37, 0xc9, 0x03, 0x25, 0xe8, 0x84, 0x74, 0x6d, 0xe1, 0x58, 0x19, 0x2b, 0x2d, 0x0a, 0xe7, 0x0b, - 0x83, 0xfc, 0x3d, 0xe3, 0x03, 0x0e, 0x50, 0x6b, 0xf7, 0xc5, 0x2d, 0xb7, 0x61, 0x9a, 0xb6, 0xe6, - 0x36, 0xe7, 0xde, 0x76, 0x23, 0xd2, 0x42, 0x30, 0xc1, 0x45, 0x37, 0xdf, 0xcd, 0xc6, 0x93, 0xf5, - 0x8b, 0xa9, 0xc0, 0xc0, 0x58, 0x0f, 0x53, 0xd9, 0x74, 0x15, 0xd6, 0x68, 0x1b, 0x6c, 0x25, 0x31, - 0x26, 0x08, 0xcf, 0xd0, 0x81, 0x6a, 0x9d, 0x17, 0x04, 0xda, 0xef, 0x6b, 0x84, 0xa6, 0x26, 0x92, - 0x3e, 0x7d, 0x9c, 0xbe, 0x06, 0x08, 0xa9, 0xde, 0x2b, 0xbd, 0x64, 0x46, 0xdc, 0x5a, 0xff, 0x3a, - 0x25, 0x72, 0xb9, 0x57, 0x03, 0x52, 0xab, 0x5b, 0xdf, 0x4d, 0x0e, 0x0b, 0x76, 0x68, 0x58, 0xdc, - 0xa2, 0x70, 0xbe, 0x67, 0x4c, 0xe8, 0x0c, 0x6b, 0x2e, 0xc0, 0x21, 0x40, 0xe1, 0x5c, 0x13, 0x85, - 0xb5, 0x08, 0x02, 0xe7, 0x1a, 0xb4, 0x1e, 0xdf, 0x62, 0x4e, 0xc9, 0xd5, 0x96, 0x36, 0x88, 0x77, - 0x60, 0xd3, 0x06, 0xd7, 0x56, 0xb5, 0xd8, 0x7a, 0xd3, 0x3b, 0x0b, 0x7d, 0xc6, 0xc4, 0xd8, 0x46, - 0xd7, 0xb0, 0xd5, 0x6c, 0xb6, 0xb4, 0xbc, 0x55, 0xac, 0xfa, 0x51, 0x2f, 0x5b, 0xd6, 0x62, 0x2f, - 0x4f, 0xdd, 0x10, 0xee, 0xa5, 0x7d, 0x2d, 0x64, 0xe5, 0xe5, 0xad, 0xae, 0x5d, 0x12, 0xf2, 0xf2, - 0x51, 0xb3, 0x47, 0x0b, 0xfd, 0x3c, 0x82, 0xa5, 0x75, 0x79, 0x3f, 0xe5, 0xd2, 0x8a, 0x7e, 0x62, - 0xd5, 0x0f, 0x47, 0x13, 0xd7, 0x82, 0x98, 0x01, 0xc5, 0xe4, 0xe5, 0x63, 0x9a, 0xeb, 0x2e, 0x6f, - 0x95, 0x56, 0x5d, 0x8b, 0x6f, 0xd7, 0x6b, 0xe5, 0xdb, 0x04, 0x16, 0x07, 0x63, 0x92, 0x86, 0xd5, - 0x94, 0xc6, 0x01, 0xa5, 0xe9, 0x87, 0x0f, 0xfa, 0xc4, 0xb9, 0xbd, 0x3e, 0x4d, 0x88, 0x19, 0x9b, - 0x38, 0x78, 0xa1, 0x94, 0x2d, 0x26, 0xbf, 0x21, 0x02, 0x6b, 0x31, 0x7c, 0xbc, 0x8a, 0xab, 0x9a, - 0x86, 0xde, 0x53, 0xfb, 0xf1, 0x18, 0xf0, 0x73, 0xa9, 0x33, 0x5c, 0x9c, 0x49, 0x9d, 0x33, 0x40, - 0x3f, 0xf1, 0x45, 0x5e, 0xda, 0xf5, 0xbc, 0xdf, 0xf5, 0xb5, 0x98, 0x09, 0xd4, 0x14, 0xb0, 0x7e, - 0xa4, 0x69, 0x4e, 0x32, 0xd0, 0xd6, 0x99, 0xf6, 0x81, 0x13, 0xdc, 0xc7, 0x7e, 0xd0, 0x85, 0x01, - 0xdd, 0xb1, 0xbc, 0xcf, 0x00, 0x20, 0x80, 0x90, 0x50, 0x60, 0xcb, 0x86, 0x2f, 0xb7, 0xc2, 0xeb, - 0x0b, 0xca, 0x67, 0x84, 0x16, 0xa1, 0x94, 0xc0, 0xdd, 0x64, 0xc4, 0x77, 0xb4, 0xaf, 0xdd, 0xe0, - 0xb7, 0x2d, 0x50, 0x5e, 0xac, 0xb9, 0xf0, 0x62, 0xaf, 0x6d, 0x41, 0xb0, 0x12, 0x2a, 0xa3, 0xde, - 0x44, 0x66, 0xac, 0x16, 0x83, 0x17, 0x3d, 0x60, 0xa1, 0x42, 0xff, 0x41, 0xee, 0xd2, 0x55, 0x84, - 0xf6, 0x93, 0xe5, 0x41, 0xa7, 0x68, 0xe3, 0xf4, 0x1b, 0x02, 0x90, 0x48, 0x1c, 0x48, 0xc1, 0xb6, - 0x0d, 0x9d, 0x16, 0xad, 0x8b, 0xec, 0x8b, 0x02, 0x37, 0x96, 0xa2, 0x6a, 0x09, 0x67, 0xa0, 0xda, - 0x90, 0x07, 0xab, 0x48, 0x5d, 0xcc, 0x15, 0x8b, 0x80, 0x21, 0x28, 0x22, 0x75, 0x31, 0x2b, 0x0a, - 0xfc, 0x55, 0xfe, 0x60, 0xff, 0x6a, 0x23, 0x78, 0xcb, 0xe6, 0xca, 0x62, 0x1c, 0x3e, 0xee, 0xd2, - 0x1e, 0x08, 0x65, 0x6f, 0x51, 0x60, 0xd6, 0x40, 0xb8, 0x30, 0x53, 0x07, 0xb0, 0x2c, 0xcb, 0x0d, - 0x06, 0xcc, 0xfd, 0x51, 0xe9, 0x09, 0x24, 0xda, 0x25, 0xef, 0x10, 0x07, 0x52, 0x0e, 0xbf, 0x55, - 0xa0, 0xb4, 0xf1, 0xd0, 0x58, 0x5b, 0x53, 0xf4, 0x17, 0x04, 0xc0, 0x4a, 0x2e, 0x00, 0xe0, 0xf0, - 0xf3, 0x6f, 0x30, 0xf1, 0xf0, 0xa6, 0xfc, 0xc8, 0x42, 0xa8, 0x45, 0x8e, 0x95, 0xdd, 0x85, 0x56, - 0xe4, 0xd8, 0xc6, 0xfd, 0x76, 0x84, 0x57, 0x08, 0x96, 0x21, 0x44, 0x3f, 0xb2, 0xf0, 0x60, 0x41, - 0x7a, 0x02, 0x45, 0x5c, 0xc2, 0x39, 0x9c, 0xc9, 0x89, 0xea, 0xa8, 0xf8, 0xa7, 0xc3, 0x79, 0xb8, - 0x80, 0x40, 0x30, 0x90, 0x78, 0x36, 0xeb, 0x90, 0x0d, 0x2d, 0x37, 0xdc, 0xec, 0xc3, 0x12, 0x32, - 0x72, 0x1b, 0x1d, 0xd6, 0x7c, 0xb1, 0x02, 0x03, 0x8c, 0xa3, 0x2a, 0xc7, 0x8f, 0xaa, 0x8c, 0xc8, - 0x12, 0x13, 0xa8, 0xab, 0xbf, 0xad, 0x1c, 0x5e, 0x9f, 0x7d, 0x3f, 0x3c, 0xb7, 0x03, 0xc6, 0xb4, - 0x90, 0xa3, 0x07, 0x82, 0x64, 0x21, 0x5b, 0x61, 0x67, 0x97, 0x84, 0x3c, 0x3b, 0xc4, 0xd4, 0x13, - 0x8a, 0x39, 0x76, 0xf8, 0x48, 0x28, 0x95, 0xb1, 0x0c, 0x3c, 0x94, 0xdd, 0xf3, 0x52, 0x22, 0x2e, - 0x4c, 0xa1, 0xb1, 0xc4, 0xdb, 0xab, 0xfc, 0x71, 0x0a, 0xce, 0x37, 0x8b, 0x5b, 0x87, 0x23, 0x98, - 0xf6, 0x98, 0xbb, 0x38, 0xe1, 0x6d, 0x36, 0x20, 0x6b, 0xe1, 0x11, 0x59, 0x4d, 0xf9, 0x05, 0xc2, - 0xb7, 0x16, 0x09, 0xbf, 0x16, 0xa2, 0x7c, 0x6b, 0x05, 0xe5, 0x29, 0xe1, 0x41, 0x9b, 0x5c, 0x42, - 0xf8, 0x35, 0x6f, 0x3e, 0xc9, 0xff, 0x0d, 0xb4, 0xff, 0xaa, 0x28, 0x8a, 0x20, 0xbb, 0xe4, 0x8c, - 0xa3, 0xe6, 0x5a, 0x1c, 0x39, 0x5b, 0x8a, 0xe3, 0xc6, 0x88, 0x2e, 0xa3, 0xea, 0x38, 0x8e, 0xcd, - 0x91, 0x65, 0xff, 0x84, 0xaa, 0x77, 0x1f, 0x51, 0xf5, 0xee, 0x7f, 0x94, 0xaa, 0x9f, 0xa7, 0xcf, - 0x1d, 0xc2, 0xce, 0xf0, 0x2b, 0x46, 0x3c, 0x95, 0x5e, 0xfe, 0x09, 0xde, 0x3b, 0xf9, 0x88, 0x4a, - 0x27, 0x9f, 0xa0, 0x52, 0x25, 0xeb, 0xd2, 0x29, 0x5b, 0x91, 0x97, 0x91, 0xaa, 0x54, 0x2c, 0xca, - 0xff, 0x10, 0x81, 0x4e, 0x88, 0x36, 0x56, 0xf5, 0xcc, 0x0d, 0x19, 0x82, 0x06, 0x8e, 0xcc, 0xb4, - 0x74, 0x7a, 0xba, 0x07, 0xf1, 0x42, 0x12, 0xd9, 0x8a, 0x67, 0xae, 0x3f, 0xa2, 0xda, 0x75, 0x40, - 0xf6, 0x78, 0x59, 0x79, 0xdd, 0x6f, 0x7f, 0x44, 0x37, 0xba, 0x06, 0x7a, 0xdc, 0xb5, 0xf6, 0x0f, - 0xac, 0x81, 0x2b, 0x28, 0x76, 0x0d, 0x42, 0x12, 0x31, 0xd1, 0x89, 0xb6, 0x8c, 0x54, 0xfd, 0x7f, - 0x62, 0xce, 0x1d, 0x7c, 0xc4, 0x4d, 0x7f, 0x4a, 0x97, 0xf8, 0x59, 0xf7, 0x77, 0xe8, 0x12, 0x47, - 0x96, 0xb5, 0x03, 0x8b, 0x10, 0xfd, 0x23, 0xca, 0xb4, 0x57, 0x30, 0xcc, 0xda, 0x67, 0x29, 0xb3, - 0xf3, 0xc1, 0xe2, 0xea, 0x12, 0x66, 0xed, 0xef, 0x51, 0x66, 0x91, 0x30, 0x6b, 0xff, 0x35, 0xca, - 0xec, 0x00, 0x3c, 0x8f, 0x2e, 0x6b, 0x51, 0xc2, 0x44, 0xe8, 0x33, 0x59, 0x41, 0x1f, 0x9a, 0x3f, - 0x50, 0xdb, 0xa8, 0x29, 0x7e, 0x9a, 0x56, 0xf7, 0x1f, 0xd0, 0xea, 0xfe, 0xff, 0x4f, 0x94, 0xba, - 0xc7, 0x5d, 0xcb, 0xa5, 0xa4, 0xf2, 0x69, 0xd0, 0x56, 0xb4, 0xbf, 0x23, 0x73, 0xd6, 0x38, 0xb2, - 0x34, 0xe2, 0xc8, 0xc2, 0x2b, 0xdf, 0x8a, 0x86, 0x31, 0xcd, 0x54, 0xd1, 0x4e, 0xd3, 0x7e, 0xc6, - 0xa8, 0xdb, 0xf2, 0x3f, 0xa2, 0x6e, 0x53, 0x72, 0xac, 0xad, 0xa0, 0x47, 0x9b, 0xe1, 0xb2, 0x8c, - 0x1c, 0xf4, 0x58, 0x4e, 0x74, 0x00, 0x20, 0x31, 0xb0, 0x65, 0xbe, 0x99, 0xcd, 0x84, 0x88, 0x4a, - 0x1d, 0xfc, 0x07, 0xb6, 0xa2, 0x40, 0x3f, 0x1f, 0x57, 0x17, 0x41, 0x90, 0xf9, 0xfa, 0xee, 0xe2, - 0x79, 0x50, 0xd2, 0xe5, 0xb4, 0x3a, 0xae, 0x2f, 0xb1, 0x90, 0x95, 0x30, 0xe4, 0x0b, 0x4f, 0xc8, - 0x2c, 0x83, 0xee, 0x55, 0xd9, 0x5a, 0xd6, 0xc0, 0x5a, 0xb4, 0x85, 0x4e, 0x39, 0xd4, 0xc2, 0x23, - 0xd1, 0x34, 0x63, 0xb2, 0x1c, 0x7d, 0xaf, 0xc6, 0x96, 0x6f, 0xd3, 0x7c, 0xd4, 0x05, 0xb0, 0x95, - 0xf9, 0x06, 0xee, 0x15, 0x6b, 0x28, 0x50, 0xfa, 0xaf, 0xee, 0x06, 0xad, 0xf6, 0xf9, 0x6e, 0xe0, - 0x7f, 0x7c, 0x2b, 0xac, 0x81, 0x15, 0xf0, 0x7b, 0xf1, 0x2e, 0x33, 0x80, 0x2e, 0xe0, 0xc1, 0xa8, - 0x68, 0x3f, 0x64, 0x39, 0x32, 0xc8, 0x3b, 0x1a, 0x00, 0x5d, 0xd5, 0x05, 0x6e, 0x18, 0xbe, 0xb7, - 0xad, 0xcf, 0xf4, 0x01, 0x4c, 0x00, 0xbe, 0x0f, 0x97, 0x2a, 0x58, 0x75, 0x2b, 0xba, 0x20, 0x2f, - 0xef, 0x42, 0x1c, 0xf6, 0x21, 0xd8, 0x28, 0x3a, 0x57, 0xc0, 0x96, 0x11, 0xf6, 0x27, 0x99, 0x14, - 0x21, 0x77, 0xca, 0x1c, 0xec, 0xe6, 0x9b, 0xa2, 0xaf, 0x26, 0x0c, 0xad, 0xf0, 0xd9, 0xb1, 0x95, - 0xcb, 0x48, 0x19, 0x0e, 0x3e, 0x5d, 0x0f, 0x57, 0x21, 0xcf, 0x2a, 0x7c, 0x92, 0x43, 0x2d, 0xbd, - 0xcb, 0x4f, 0x5d, 0x45, 0xef, 0x1a, 0xc3, 0x4f, 0x59, 0x17, 0x8e, 0x21, 0x50, 0xed, 0x17, 0x2d, - 0x0b, 0xc9, 0xa0, 0x13, 0x93, 0x1a, 0x78, 0x52, 0x1f, 0xf1, 0xa3, 0x06, 0x9d, 0x64, 0x8e, 0x2c, - 0x53, 0x23, 0x4b, 0x0e, 0x5e, 0x6f, 0x64, 0xb3, 0xd4, 0xb9, 0xb1, 0x76, 0xbd, 0x64, 0xcd, 0xea, - 0xd8, 0x9a, 0x18, 0xf6, 0x99, 0x41, 0x8a, 0x2c, 0x72, 0x8e, 0x5a, 0x61, 0x3a, 0xb5, 0xe1, 0x95, - 0xf7, 0x9f, 0x31, 0x27, 0x7b, 0x4b, 0x33, 0x1c, 0xba, 0xd2, 0xe0, 0x97, 0xf8, 0x36, 0x2c, 0x2a, - 0x52, 0xe9, 0x63, 0x3f, 0x78, 0x6c, 0x07, 0x8f, 0x13, 0x7c, 0xdc, 0xca, 0x06, 0x3e, 0xa3, 0xb5, - 0x48, 0xab, 0xd9, 0xd8, 0x56, 0xe3, 0x1a, 0xcd, 0x86, 0x1b, 0x5d, 0xfb, 0xb0, 0xd5, 0x5c, 0xbc, - 0x7b, 0x10, 0x1a, 0xcd, 0x05, 0xcb, 0xf1, 0x47, 0xad, 0xe6, 0x3e, 0xd3, 0xd5, 0x35, 0xae, 0xd5, - 0xfc, 0xa2, 0x7f, 0xcc, 0x77, 0x86, 0xb1, 0xfb, 0x0c, 0x85, 0x81, 0xe8, 0x21, 0x72, 0xca, 0xbc, - 0x6b, 0x81, 0x57, 0x8c, 0xf9, 0x39, 0xc8, 0x74, 0xc2, 0xdc, 0x5e, 0x61, 0xaf, 0x97, 0x7b, 0x93, - 0x77, 0xd8, 0xe5, 0xc5, 0x54, 0xa7, 0x90, 0xf7, 0xd2, 0xd3, 0x29, 0x3c, 0x60, 0x1d, 0x6f, 0xd5, - 0xa3, 0x6b, 0x54, 0xcc, 0x32, 0xfa, 0x42, 0xde, 0xba, 0xc6, 0x44, 0xa7, 0x85, 0xf7, 0x70, 0x4b, - 0x1f, 0x55, 0x0c, 0xdc, 0x3a, 0xf4, 0xbe, 0x1d, 0x59, 0x17, 0x0d, 0x98, 0xe5, 0xd4, 0xcf, 0xa1, - 0x11, 0xbd, 0xef, 0x0c, 0xea, 0x62, 0x39, 0xc2, 0x41, 0xd8, 0x8e, 0xde, 0x0b, 0x8d, 0x26, 0x3b, - 0x70, 0xcb, 0xa1, 0x4b, 0xfd, 0x28, 0x64, 0xea, 0xba, 0x5f, 0xc3, 0x3e, 0x3d, 0xef, 0x08, 0x33, - 0xeb, 0x4a, 0xbe, 0xe2, 0x3a, 0x9c, 0x3f, 0x22, 0x26, 0x23, 0x25, 0x46, 0x65, 0xa1, 0x5c, 0xf9, - 0x14, 0xc5, 0x5c, 0x0c, 0x28, 0xc5, 0xda, 0x79, 0x46, 0x31, 0xaa, 0x41, 0x09, 0x00, 0x86, 0x38, - 0x0e, 0xf1, 0x87, 0x63, 0xcd, 0x03, 0x3e, 0xf1, 0xfb, 0xc5, 0xb4, 0x13, 0x5e, 0x53, 0x60, 0xd7, - 0x6e, 0x0a, 0x3d, 0x98, 0xee, 0x3e, 0xe5, 0x79, 0x72, 0xaf, 0x71, 0xa1, 0x3a, 0x75, 0xb1, 0x45, - 0xaf, 0x03, 0x0f, 0x54, 0xba, 0x6f, 0xec, 0x7e, 0x70, 0xaa, 0xb6, 0x48, 0xa2, 0x1b, 0x5d, 0x86, - 0x72, 0x03, 0x26, 0x1e, 0x0d, 0x1e, 0x5a, 0x5a, 0x62, 0x91, 0x41, 0x82, 0x9b, 0x54, 0xf8, 0x79, - 0x8b, 0xa9, 0xba, 0xeb, 0x7f, 0x64, 0xb4, 0x2d, 0xf7, 0x3c, 0x36, 0x89, 0x92, 0xcb, 0xbf, 0xaa, - 0xdc, 0x73, 0x46, 0x67, 0x59, 0xc9, 0xb5, 0xa8, 0x04, 0xf1, 0xd0, 0xf0, 0x07, 0x03, 0x5f, 0xc2, - 0x84, 0xc1, 0x6d, 0x35, 0xfa, 0x51, 0x60, 0x1c, 0x27, 0x7f, 0xb0, 0x59, 0x68, 0x0c, 0x8d, 0x16, - 0xe6, 0x46, 0x05, 0xbf, 0x7b, 0x7a, 0xc9, 0x88, 0x4f, 0x9d, 0xf3, 0x0b, 0x80, 0x38, 0xb7, 0x61, - 0xc8, 0xce, 0xf3, 0xc2, 0xe7, 0x20, 0xc3, 0xdd, 0x32, 0x4b, 0xa7, 0xd3, 0xc2, 0x82, 0xca, 0x4e, - 0x71, 0x88, 0x55, 0xe1, 0xd7, 0x22, 0x8e, 0x67, 0xef, 0xbe, 0x43, 0xd7, 0x85, 0xe8, 0x32, 0x78, - 0x0c, 0x53, 0xb3, 0x21, 0x66, 0xf9, 0xfc, 0xd2, 0xb2, 0x7a, 0x03, 0xa0, 0x03, 0x84, 0x4b, 0x0f, - 0x9c, 0xa1, 0xbb, 0x01, 0xb0, 0x64, 0x06, 0xb0, 0x9d, 0x9e, 0xb2, 0x12, 0x9d, 0x02, 0x7f, 0x8e, - 0x8d, 0xcb, 0xd1, 0xf6, 0x2e, 0x08, 0xa8, 0xba, 0x3e, 0xd2, 0x34, 0x09, 0x11, 0xd3, 0x5a, 0x0e, - 0xac, 0x2b, 0x7d, 0x92, 0xb6, 0xc8, 0xd0, 0x18, 0x93, 0x23, 0x87, 0x0c, 0x13, 0xe2, 0x44, 0x23, - 0x38, 0x06, 0x53, 0x31, 0x09, 0x0b, 0xcf, 0xeb, 0x88, 0xd8, 0xce, 0xb1, 0x6d, 0xe8, 0x89, 0x99, - 0x35, 0x44, 0xa4, 0xab, 0x5f, 0xe4, 0xf0, 0xd7, 0x5d, 0xf9, 0x21, 0x93, 0x72, 0x45, 0x59, 0xe2, - 0x13, 0xb0, 0x39, 0xe8, 0xe1, 0xda, 0xf2, 0x2e, 0x52, 0xf6, 0xca, 0x6f, 0x2e, 0x99, 0xe4, 0x31, - 0xe3, 0x84, 0x5c, 0xb7, 0x07, 0xda, 0x5b, 0xc7, 0xf9, 0xc8, 0x9f, 0xdc, 0x9b, 0x8a, 0x71, 0x42, - 0x17, 0x54, 0x67, 0x0a, 0x04, 0x3f, 0xe6, 0xe1, 0xca, 0x5d, 0x06, 0x4f, 0x18, 0xba, 0x3b, 0x1b, - 0x4b, 0xe7, 0xb5, 0x0b, 0x16, 0x37, 0xfe, 0x83, 0x39, 0xbe, 0xc6, 0x4f, 0xf2, 0x3f, 0x98, 0xe3, - 0x2c, 0x00, 0x75, 0xc5, 0x14, 0xf7, 0x0a, 0x48, 0xfd, 0xa3, 0x6e, 0x42, 0x64, 0xe1, 0x86, 0xb6, - 0x98, 0x4c, 0x53, 0xc4, 0xf0, 0x5b, 0xc1, 0xf8, 0xe1, 0x60, 0xc8, 0x50, 0x40, 0x78, 0x33, 0x28, - 0x6d, 0x6d, 0x64, 0xd5, 0xbf, 0x2d, 0x2d, 0xce, 0x46, 0xd9, 0xaf, 0xf1, 0xdf, 0x2b, 0x38, 0x38, - 0xe6, 0x5b, 0x8a, 0x10, 0xdb, 0x92, 0x4a, 0x88, 0x18, 0x7a, 0x86, 0x5d, 0x70, 0xe7, 0x60, 0x38, - 0x9c, 0xdc, 0xdb, 0x08, 0xf4, 0x64, 0x50, 0x54, 0x04, 0xb9, 0x64, 0xfa, 0x07, 0x25, 0xd0, 0xfe, - 0xc3, 0xff, 0x9c, 0xec, 0x89, 0xb2, 0xb6, 0x1b, 0x47, 0x11, 0xe2, 0x63, 0x97, 0x72, 0x1e, 0x2e, - 0xec, 0x3d, 0xe8, 0x50, 0x50, 0xe6, 0x12, 0xcd, 0x6b, 0x0f, 0x2d, 0x16, 0xf3, 0x48, 0x4f, 0x57, - 0xd0, 0x61, 0xcb, 0xee, 0xe7, 0x1b, 0xe5, 0x5a, 0x78, 0x65, 0xa2, 0x65, 0xda, 0xc6, 0xd4, 0xd5, - 0x62, 0x7a, 0x9a, 0x53, 0x17, 0xfd, 0xa2, 0x21, 0xef, 0x02, 0x6b, 0x60, 0x7f, 0xea, 0xf1, 0x41, - 0xd8, 0x17, 0xe0, 0x87, 0x52, 0xa2, 0x0e, 0xe3, 0xf5, 0xdb, 0xeb, 0xb0, 0x4b, 0xf6, 0x00, 0x4d, - 0x79, 0x57, 0x14, 0x16, 0x91, 0x14, 0x28, 0x17, 0x00, 0xa6, 0xe5, 0x5c, 0xae, 0xb4, 0x14, 0xcf, - 0x35, 0x1e, 0x51, 0x5a, 0x92, 0xb7, 0xff, 0xff, 0x18, 0xcb, 0xb5, 0x28, 0x9a, 0x01, 0x96, 0xd9, - 0x58, 0x2c, 0x29, 0x82, 0x95, 0x42, 0xae, 0x16, 0x99, 0xfe, 0xf1, 0x94, 0xa4, 0x25, 0x3f, 0x81, - 0xe0, 0xda, 0xe7, 0xe9, 0x18, 0x20, 0x98, 0x5b, 0x82, 0x20, 0x4c, 0x97, 0x4a, 0x29, 0xff, 0xb9, - 0xa1, 0xa6, 0x05, 0x57, 0x22, 0xb8, 0xf6, 0xa7, 0x03, 0x1d, 0x20, 0x78, 0x67, 0x2c, 0x67, 0xc7, - 0x4a, 0x39, 0x5f, 0xf8, 0x1c, 0x86, 0x58, 0xf0, 0xbf, 0x8d, 0x15, 0xf7, 0x61, 0x89, 0x5b, 0x36, - 0xcc, 0xd0, 0x72, 0xf1, 0x73, 0x7c, 0x48, 0x4b, 0xfe, 0x53, 0x7c, 0x18, 0xdd, 0x5b, 0xa3, 0x02, - 0x41, 0x8e, 0x71, 0x9b, 0x45, 0x85, 0x2f, 0xbf, 0x19, 0xbe, 0xc6, 0x2b, 0xba, 0xd0, 0x49, 0xf2, - 0x4e, 0x3c, 0x5d, 0x37, 0x9f, 0x2b, 0x7e, 0xbc, 0xcd, 0xcd, 0x5b, 0x0e, 0xee, 0xf6, 0x9c, 0x49, - 0xd0, 0xeb, 0xb4, 0xd2, 0xf7, 0x46, 0xcb, 0xb8, 0x6e, 0xc9, 0xcf, 0xec, 0x7d, 0xff, 0xa3, 0xbe, - 0xc9, 0x4f, 0x6e, 0x7d, 0x33, 0x9f, 0x5d, 0xd0, 0x2f, 0xaa, 0x02, 0x04, 0xe4, 0x0d, 0x79, 0xf1, - 0x5c, 0xbd, 0xc0, 0xc6, 0x6e, 0xc5, 0x39, 0xf1, 0x38, 0xf2, 0x64, 0xff, 0x70, 0x80, 0xf8, 0xf1, - 0xa1, 0x28, 0x50, 0x7d, 0x97, 0xae, 0x74, 0x05, 0xb9, 0xf2, 0xe9, 0x01, 0x0a, 0x10, 0x38, 0xc2, - 0xc5, 0xc9, 0x56, 0x9d, 0xb7, 0xd8, 0x4d, 0x19, 0x6e, 0x90, 0xfc, 0x82, 0x7f, 0x1a, 0xa3, 0x20, - 0xff, 0xcf, 0xc6, 0x28, 0x2c, 0xf3, 0x35, 0xf3, 0x54, 0xa7, 0x94, 0xcb, 0xfa, 0x03, 0xa5, 0x7a, - 0x5d, 0x5b, 0xba, 0x51, 0x4d, 0x6b, 0xe5, 0xa2, 0x5e, 0x78, 0x77, 0xe9, 0x59, 0x39, 0x62, 0xa1, - 0xf8, 0xa7, 0x3f, 0xdc, 0xf6, 0x68, 0x66, 0x63, 0x77, 0x84, 0x78, 0xcf, 0xfd, 0xc8, 0x06, 0x73, - 0x83, 0xfa, 0x36, 0xfe, 0x6c, 0xea, 0xac, 0xc5, 0x07, 0x18, 0xfc, 0x89, 0x17, 0xdb, 0x1d, 0x8f, - 0xb5, 0xbf, 0x3d, 0x20, 0x91, 0xf1, 0xc8, 0x01, 0x1f, 0xb3, 0xfe, 0x08, 0xd9, 0xd5, 0x03, 0x91, - 0x8f, 0x4c, 0x1a, 0x6e, 0x1c, 0xd6, 0x56, 0x0f, 0x84, 0x17, 0x1e, 0xf5, 0x87, 0x42, 0xac, 0x99, - 0xfb, 0x40, 0x82, 0xb9, 0xe3, 0x90, 0xfb, 0x67, 0x64, 0x98, 0xfc, 0xdf, 0x28, 0xc1, 0x3e, 0x31, - 0x10, 0x79, 0x71, 0xcb, 0x1d, 0x87, 0xdc, 0xea, 0x71, 0x28, 0xfc, 0xed, 0x09, 0x21, 0x93, 0xf2, - 0xdf, 0x9a, 0x10, 0xf9, 0x4f, 0x4e, 0x88, 0xfc, 0x67, 0x26, 0x44, 0x3e, 0xfb, 0xff, 0xeb, 0xf9, - 0x50, 0x08, 0xe6, 0x43, 0x7e, 0xd9, 0x38, 0xf4, 0xa6, 0x86, 0x19, 0xd8, 0x30, 0xee, 0x59, 0x68, - 0x6a, 0xa7, 0x85, 0xf4, 0x2a, 0xc8, 0x90, 0xa3, 0x2a, 0x95, 0xc1, 0x29, 0xcf, 0xf1, 0x11, 0x7d, - 0xae, 0x73, 0xeb, 0x03, 0x89, 0x0a, 0xb0, 0xdd, 0xb5, 0x70, 0xab, 0x49, 0x01, 0x07, 0x93, 0x37, - 0x18, 0x3e, 0xda, 0xe4, 0x85, 0x1f, 0xad, 0xc6, 0xe9, 0x43, 0xa1, 0xd1, 0xbb, 0xa0, 0x1d, 0x48, - 0x64, 0x25, 0xba, 0x0b, 0xe7, 0x1e, 0x7d, 0xfa, 0x23, 0x55, 0x6d, 0x2d, 0xdc, 0xeb, 0x6c, 0x44, - 0x49, 0xfb, 0xb0, 0xd3, 0xf9, 0x42, 0x9b, 0xeb, 0xf4, 0xda, 0xb2, 0x61, 0xf2, 0x3a, 0x9d, 0xf5, - 0x3a, 0x9d, 0x5b, 0xda, 0xe9, 0x9c, 0xb8, 0xa8, 0xeb, 0xc7, 0x75, 0x3a, 0xf7, 0xe9, 0x4e, 0xaf, - 0xad, 0x52, 0xa1, 0x01, 0xb3, 0xdc, 0x9f, 0x74, 0x9a, 0x19, 0xc9, 0x85, 0xce, 0x07, 0x43, 0xcd, - 0x77, 0x3a, 0xe7, 0x75, 0x3a, 0x1f, 0xe9, 0xf4, 0x5a, 0xd0, 0xeb, 0xfc, 0xe2, 0x50, 0xc7, 0x75, - 0x3a, 0xbf, 0xa4, 0xd3, 0x9f, 0x32, 0x6c, 0x96, 0x5a, 0xc4, 0x88, 0x46, 0x8b, 0xf4, 0x87, 0x78, - 0x93, 0xb8, 0xc8, 0x87, 0xa3, 0xc6, 0x78, 0x7b, 0xdc, 0x03, 0x18, 0x51, 0x23, 0x3c, 0x22, 0xee, - 0xd8, 0x99, 0x0c, 0x4e, 0xdc, 0xb1, 0x0f, 0x18, 0x89, 0x5b, 0xcb, 0x8a, 0xe6, 0x96, 0x7b, 0xff, - 0x6c, 0x77, 0xe2, 0x58, 0x36, 0xbc, 0x71, 0x1a, 0x9d, 0x05, 0x28, 0x53, 0x6d, 0xee, 0x9a, 0x00, - 0x81, 0x04, 0xdb, 0xed, 0x40, 0x8c, 0x0b, 0x7b, 0xeb, 0x26, 0x38, 0x98, 0x1f, 0x0a, 0x45, 0x74, - 0x1c, 0x8f, 0xec, 0xec, 0xa0, 0x42, 0x20, 0xdf, 0xa8, 0xc0, 0x2b, 0x15, 0xd3, 0x45, 0x2f, 0xe2, - 0x4a, 0x4e, 0x67, 0x03, 0x39, 0x97, 0xde, 0x04, 0xee, 0xd7, 0xdb, 0xb6, 0x59, 0x63, 0x01, 0xca, - 0xe8, 0xfe, 0xa2, 0x61, 0x9d, 0xf4, 0xfb, 0x5f, 0x3e, 0x3b, 0xb9, 0x2c, 0x44, 0x0b, 0x44, 0xba, - 0x7d, 0x69, 0x21, 0xd2, 0x1f, 0x52, 0xdb, 0x7c, 0xd5, 0xc4, 0x15, 0x1b, 0x1b, 0x5d, 0x71, 0xcb, - 0x05, 0xc4, 0x6d, 0x69, 0x2c, 0x73, 0xa8, 0xb1, 0x93, 0x34, 0xf1, 0x4e, 0xf3, 0x58, 0x7f, 0xda, - 0xda, 0x12, 0xa7, 0x39, 0x1d, 0xff, 0xe4, 0x37, 0x61, 0x89, 0xc7, 0xdc, 0xcd, 0x8e, 0x51, 0x2f, - 0x78, 0xbf, 0xd7, 0xe7, 0xdc, 0x5e, 0x6b, 0x9f, 0x74, 0x98, 0x2f, 0xf8, 0xcb, 0x29, 0x12, 0x11, - 0x5f, 0x95, 0x6b, 0x62, 0x87, 0xbd, 0xe0, 0x8c, 0x7c, 0xc8, 0x46, 0x01, 0x3f, 0x2f, 0x5b, 0x3d, - 0xcc, 0x8f, 0x98, 0x7a, 0x69, 0xb8, 0x2e, 0xfd, 0xf6, 0xa1, 0xe1, 0xca, 0x05, 0xb7, 0x8e, 0x17, - 0x48, 0x1e, 0x14, 0xd1, 0x54, 0xfd, 0x85, 0xdf, 0xbf, 0x31, 0x4c, 0xa2, 0xdf, 0x28, 0xed, 0xc4, - 0xf2, 0x20, 0x72, 0x6f, 0xc9, 0x89, 0x0d, 0x22, 0x67, 0xd1, 0xc0, 0xf1, 0xe1, 0xeb, 0x0b, 0x8d, - 0xae, 0x2d, 0xb4, 0x9a, 0xfd, 0x44, 0xe8, 0xfa, 0x62, 0xa3, 0xae, 0xcf, 0x78, 0xed, 0x93, 0xcd, - 0x2e, 0xb4, 0x9a, 0x5b, 0x7a, 0x44, 0xc1, 0x5f, 0x6a, 0x62, 0x8f, 0x62, 0xf8, 0xb3, 0xff, 0x6f, - 0xf6, 0x36, 0xbf, 0xac, 0xb7, 0xbe, 0xac, 0x8f, 0x3d, 0xe8, 0xc2, 0xd8, 0x67, 0x6d, 0x75, 0xa0, - 0xbe, 0xfb, 0x3d, 0x94, 0xf0, 0x4e, 0x39, 0x3b, 0xca, 0xa3, 0xa0, 0x4b, 0x35, 0xec, 0x03, 0xb6, - 0xf6, 0xf0, 0x23, 0x38, 0x37, 0x98, 0x85, 0x07, 0xb7, 0x92, 0x8b, 0xd5, 0xfc, 0x6b, 0xc6, 0x56, - 0x9d, 0xb7, 0x88, 0xd4, 0xc1, 0x93, 0x95, 0xfe, 0x84, 0xa0, 0x47, 0xc5, 0x63, 0x78, 0x30, 0xd8, - 0xe2, 0x10, 0xe8, 0xc7, 0x68, 0x3e, 0x7b, 0x88, 0x44, 0xa0, 0x97, 0x10, 0x31, 0x7a, 0xe1, 0x3e, - 0xca, 0x5a, 0x64, 0x9b, 0xc1, 0x47, 0x62, 0xd8, 0x67, 0x3b, 0xad, 0xc3, 0xbe, 0x57, 0x7f, 0xa2, - 0x8a, 0x82, 0xa2, 0x39, 0x6e, 0x1c, 0x3c, 0x7a, 0x7b, 0xaa, 0xf4, 0xa3, 0x1e, 0x19, 0x53, 0xef, - 0xd7, 0xda, 0x8a, 0x4d, 0x4a, 0x05, 0x49, 0xbd, 0xdb, 0xb9, 0xb8, 0x9e, 0xc8, 0x27, 0x07, 0x7d, - 0xa3, 0x01, 0xff, 0x9d, 0xb7, 0x6e, 0x07, 0x7b, 0xb7, 0x7d, 0x78, 0xda, 0x91, 0xf1, 0x7d, 0xbf, - 0xd9, 0x78, 0x84, 0x9f, 0x66, 0x71, 0x7f, 0xd4, 0x2b, 0x62, 0x42, 0xe3, 0xe1, 0xbc, 0x75, 0x2d, - 0x1f, 0x35, 0x2c, 0xbb, 0xd0, 0x29, 0x5d, 0x61, 0xc2, 0xb5, 0x7e, 0x75, 0x9b, 0xdd, 0x81, 0x32, - 0xd3, 0xe7, 0xc9, 0xb8, 0xfc, 0x78, 0x75, 0x8b, 0x89, 0xc7, 0x9d, 0xbd, 0xc1, 0x53, 0x67, 0xd2, - 0x68, 0xec, 0xda, 0x67, 0xf0, 0xba, 0xb9, 0xdb, 0xe8, 0x74, 0xc7, 0xaf, 0x07, 0x58, 0x61, 0xa7, - 0xdd, 0xba, 0xbd, 0xde, 0xb9, 0x6b, 0x0e, 0x6e, 0xb4, 0xc7, 0x4a, 0x7b, 0xd7, 0x68, 0x4c, 0x76, - 0xcf, 0xce, 0xef, 0x37, 0xf5, 0x8a, 0x3e, 0x69, 0xaa, 0xe6, 0x9b, 0x73, 0x75, 0x5e, 0x78, 0x2a, - 0x3b, 0x6d, 0xeb, 0xe6, 0x70, 0xb8, 0x3b, 0xdc, 0x2f, 0x18, 0x97, 0xef, 0x6f, 0x5a, 0x77, 0x72, - 0xfd, 0x6a, 0x66, 0x5b, 0xad, 0xae, 0x7e, 0x97, 0x39, 0x1f, 0x3d, 0x8d, 0xde, 0x5f, 0x89, 0xd5, - 0xd8, 0x79, 0x9b, 0x3e, 0xbc, 0xeb, 0x3b, 0x93, 0xbc, 0xda, 0x7f, 0x21, 0xfb, 0x7b, 0xbd, 0x87, - 0xb7, 0xdb, 0xd1, 0xe0, 0x24, 0xf3, 0xb6, 0x7f, 0x26, 0x37, 0xa7, 0xc7, 0xbd, 0xb7, 0xd7, 0x87, - 0xa7, 0xbd, 0x8b, 0x4e, 0x29, 0xd3, 0xb2, 0x2a, 0x99, 0x76, 0x6f, 0x73, 0x74, 0xd4, 0x2c, 0x9e, - 0x4f, 0xba, 0x9b, 0x86, 0x75, 0x36, 0x6e, 0x5c, 0xd2, 0xbe, 0xec, 0x69, 0xfb, 0x37, 0x2f, 0xad, - 0xd1, 0xd5, 0xb0, 0xd9, 0x84, 0x89, 0xb0, 0x18, 0x97, 0x3b, 0x0e, 0x4b, 0xae, 0x50, 0x98, 0x4a, - 0xec, 0x9a, 0xea, 0x1e, 0xbc, 0xe5, 0x79, 0x87, 0xdf, 0x80, 0xa2, 0x0b, 0x6a, 0x0f, 0xf8, 0x7a, - 0xb0, 0x72, 0x27, 0x2c, 0x06, 0x4a, 0x84, 0x03, 0x8f, 0x74, 0x10, 0x90, 0x7a, 0x87, 0x08, 0xb8, - 0x07, 0xf1, 0x87, 0xb0, 0xbc, 0x6d, 0x3d, 0x9c, 0x9d, 0x09, 0x7f, 0x37, 0x8f, 0x19, 0x26, 0x62, - 0x52, 0x12, 0xff, 0xb7, 0x4d, 0x34, 0x0c, 0x83, 0xd9, 0xba, 0xa5, 0x49, 0xf4, 0xb0, 0x5d, 0xcc, - 0x19, 0x9d, 0xb8, 0x36, 0xa8, 0x2a, 0x81, 0xb3, 0x36, 0xac, 0x4d, 0x74, 0xf4, 0x1e, 0xd5, 0x23, - 0x58, 0xff, 0xdb, 0x86, 0xe1, 0x44, 0x80, 0xfa, 0x7b, 0xb2, 0x94, 0xb8, 0xbc, 0xe2, 0x37, 0x10, - 0xb7, 0xce, 0xc0, 0x84, 0x10, 0x26, 0xaa, 0x33, 0x70, 0x73, 0xd8, 0x0e, 0xbd, 0x62, 0x39, 0x38, - 0x27, 0x60, 0x12, 0x97, 0x0b, 0x35, 0x98, 0x1b, 0xfb, 0x7b, 0xf2, 0x5e, 0xcd, 0x5d, 0x5c, 0xd6, - 0x84, 0xf6, 0x9b, 0xd0, 0x50, 0xad, 0x8e, 0x61, 0x18, 0x2f, 0x2a, 0xa1, 0xa7, 0x62, 0x9d, 0x01, - 0x11, 0xbe, 0x2b, 0x02, 0xdd, 0xc2, 0x14, 0x07, 0x8e, 0x63, 0xda, 0xd5, 0x4c, 0x06, 0xf7, 0x09, - 0xd3, 0x60, 0x43, 0x75, 0x8c, 0x91, 0x65, 0x93, 0x34, 0x06, 0xb1, 0x98, 0x19, 0x50, 0x5b, 0x14, - 0x0b, 0xe8, 0x52, 0x17, 0xff, 0xb7, 0x7b, 0x68, 0x64, 0x8d, 0x9e, 0x37, 0xec, 0x18, 0xc3, 0xe1, - 0x48, 0xa7, 0x9e, 0x19, 0x65, 0x6b, 0xd9, 0x32, 0xa6, 0xb3, 0xa3, 0x5a, 0xff, 0x55, 0x59, 0xb0, - 0xec, 0x68, 0xd7, 0x67, 0x85, 0x01, 0x7e, 0x85, 0x4a, 0xdc, 0xa2, 0x68, 0xab, 0x2e, 0xab, 0xd8, - 0x0b, 0xdc, 0xad, 0x2f, 0x72, 0xb7, 0x1b, 0x08, 0xe4, 0x6d, 0x24, 0x2f, 0xf9, 0xcc, 0xa5, 0xf8, - 0x59, 0xae, 0x45, 0x2d, 0xc0, 0xef, 0xca, 0x22, 0xe7, 0xc7, 0x6b, 0xcb, 0x43, 0x6d, 0x8c, 0xdb, - 0x02, 0x6b, 0x51, 0x1a, 0xfa, 0x78, 0xb3, 0x7c, 0x17, 0xc7, 0xc5, 0x1b, 0x60, 0xf0, 0x39, 0xb6, - 0x67, 0xd1, 0x90, 0x72, 0x3c, 0x68, 0xba, 0x38, 0x54, 0x11, 0x82, 0x0f, 0x46, 0x7d, 0x12, 0x39, - 0x38, 0x88, 0x4c, 0xba, 0xe6, 0x83, 0xd1, 0x40, 0x48, 0x6c, 0x07, 0xb2, 0x01, 0xff, 0xad, 0x09, - 0x37, 0x86, 0x30, 0xb2, 0x89, 0xd0, 0x1e, 0xa9, 0x1a, 0xde, 0x76, 0x2b, 0x10, 0xb6, 0x72, 0x4b, - 0x34, 0x15, 0xf5, 0x24, 0x68, 0xda, 0x02, 0x0d, 0xd6, 0x3d, 0x4d, 0x2e, 0xc0, 0x7a, 0x03, 0x33, - 0x92, 0xd5, 0x7d, 0x34, 0x46, 0x42, 0x07, 0xca, 0x58, 0xc4, 0x19, 0x59, 0xba, 0x80, 0x21, 0x54, - 0x04, 0xa4, 0xb8, 0x3a, 0x24, 0x74, 0x77, 0x17, 0x79, 0x1b, 0xaf, 0xc7, 0xb0, 0xf1, 0x4c, 0x2d, - 0x72, 0x35, 0x7e, 0x8e, 0x06, 0x88, 0x4f, 0x9f, 0x51, 0x29, 0xc5, 0xf3, 0xbe, 0xc0, 0xac, 0x96, - 0x4e, 0xac, 0xf4, 0x1a, 0x9b, 0x51, 0x0b, 0x83, 0x15, 0x0a, 0x10, 0x72, 0x4e, 0x0d, 0x8b, 0x6a, - 0x24, 0x17, 0x1e, 0x56, 0x06, 0x8d, 0xf8, 0x5c, 0x31, 0xe5, 0x17, 0xeb, 0xe7, 0xf8, 0xfa, 0x23, - 0x1d, 0x8f, 0x79, 0x5b, 0x74, 0xaa, 0xfb, 0x70, 0xb8, 0xc9, 0xbd, 0x16, 0xcc, 0xee, 0xb5, 0x7d, - 0xc3, 0x82, 0xee, 0xdb, 0x8e, 0x60, 0x12, 0x0b, 0xa3, 0xbf, 0x90, 0x57, 0x25, 0x41, 0x05, 0x23, - 0x02, 0xbf, 0x60, 0x87, 0x93, 0x8e, 0xd0, 0x8b, 0x3e, 0x80, 0x0e, 0x94, 0x1e, 0x46, 0xaf, 0xe7, - 0x76, 0x1b, 0xc8, 0x32, 0x44, 0x22, 0xd8, 0x30, 0x7b, 0x41, 0x14, 0x4e, 0x06, 0x44, 0xa7, 0xb7, - 0x4e, 0x00, 0x2d, 0x80, 0xcc, 0xe9, 0x85, 0x10, 0x5e, 0x35, 0x18, 0x76, 0xa4, 0x99, 0x18, 0x33, - 0xd0, 0x0b, 0xdd, 0x92, 0x93, 0xc1, 0xe0, 0xaf, 0xf9, 0xa3, 0xff, 0xdd, 0x3d, 0x5d, 0xbc, 0x36, - 0x06, 0xd2, 0x6b, 0x46, 0x47, 0x35, 0xa5, 0xc9, 0xbd, 0xc4, 0x07, 0x28, 0x48, 0x13, 0x5b, 0xea, - 0xe0, 0x69, 0x30, 0x89, 0xba, 0x71, 0x6c, 0xc9, 0x61, 0xb1, 0x06, 0x18, 0xb3, 0x50, 0xff, 0x92, - 0xc5, 0x1f, 0x13, 0xe6, 0xb2, 0xc1, 0x64, 0x51, 0x55, 0x94, 0x54, 0xfb, 0x42, 0xc7, 0x0c, 0x5d, - 0x6b, 0xe0, 0x8f, 0x6a, 0x9f, 0x8e, 0xd9, 0x2f, 0xaa, 0x05, 0xec, 0x89, 0xce, 0x24, 0x7c, 0xb4, - 0xdf, 0xf4, 0x4e, 0x0b, 0xa8, 0xe2, 0x3d, 0xdf, 0xf4, 0xb5, 0x6b, 0xd2, 0x81, 0xf2, 0xb2, 0x34, - 0x50, 0x6c, 0x1a, 0xd6, 0x89, 0x59, 0xf0, 0x7c, 0x7d, 0xb0, 0xe3, 0x3e, 0x35, 0x9b, 0x37, 0x0c, - 0xfc, 0xee, 0xc8, 0xaa, 0x97, 0x64, 0x78, 0xb8, 0x51, 0xac, 0x3a, 0xfe, 0xe2, 0x61, 0x48, 0x0a, - 0x89, 0xf4, 0x4f, 0xd1, 0x34, 0x93, 0x25, 0xef, 0xae, 0xa8, 0x7d, 0xfe, 0xe5, 0x52, 0xd1, 0xe0, - 0xad, 0x03, 0xaf, 0xf8, 0x33, 0xb2, 0xf0, 0xae, 0x49, 0xa6, 0xa2, 0xd5, 0x37, 0xa0, 0x3f, 0xa0, - 0x51, 0xb1, 0xf5, 0x82, 0x56, 0xe9, 0x37, 0x0d, 0xe0, 0x01, 0x78, 0x04, 0x01, 0xeb, 0x3f, 0x1a, - 0x13, 0x18, 0xe6, 0x5b, 0x1d, 0xc6, 0xa6, 0x0b, 0xaf, 0xd0, 0x14, 0x28, 0x96, 0x98, 0xce, 0x7e, - 0xcc, 0x8e, 0x87, 0x08, 0x7b, 0xa2, 0x64, 0x40, 0xb0, 0x13, 0xc8, 0x74, 0xac, 0xfa, 0xa6, 0xd4, - 0xad, 0x77, 0xc1, 0x26, 0x42, 0x55, 0x54, 0xea, 0x4d, 0x51, 0x9b, 0xa9, 0xff, 0xf8, 0x29, 0x99, - 0xb8, 0xb0, 0xd6, 0x67, 0x73, 0x89, 0x78, 0x0f, 0x9a, 0xf7, 0x60, 0x06, 0x4f, 0xe7, 0x75, 0x51, - 0x94, 0xcc, 0x23, 0x6c, 0xe6, 0x7c, 0x34, 0xc4, 0x9f, 0xa1, 0x53, 0xcf, 0xe2, 0xdf, 0xd3, 0x16, - 0x7b, 0x3b, 0x85, 0x96, 0x10, 0x19, 0xf8, 0x41, 0x41, 0x86, 0xb5, 0x54, 0xfb, 0x0c, 0x71, 0x18, - 0x22, 0x02, 0xc3, 0x01, 0xfc, 0x99, 0xd8, 0xd7, 0x26, 0x16, 0xea, 0xf4, 0xfa, 0xf5, 0x99, 0x83, - 0xe7, 0x33, 0xab, 0x33, 0x54, 0xa3, 0xaa, 0xa0, 0x5b, 0x59, 0x2f, 0xa2, 0xd4, 0xee, 0x57, 0x67, - 0x23, 0x4b, 0xab, 0x8a, 0xe2, 0x5c, 0x52, 0x34, 0x73, 0xa0, 0x40, 0x76, 0xbf, 0x9a, 0x2e, 0x49, - 0xa0, 0xd5, 0x56, 0xd3, 0xe5, 0xb9, 0xc4, 0x82, 0x2f, 0x31, 0x11, 0x8a, 0xe0, 0xeb, 0xd0, 0xac, - 0xb2, 0xab, 0x64, 0xec, 0xea, 0x8c, 0x9d, 0x1d, 0xac, 0xc2, 0x20, 0x5a, 0xfd, 0x76, 0x15, 0x1a, - 0x7e, 0x1d, 0x41, 0x0a, 0xbe, 0x0f, 0xc8, 0x14, 0xde, 0xa1, 0x67, 0xd4, 0x34, 0xc5, 0x14, 0xb3, - 0x33, 0x04, 0x61, 0x8c, 0x85, 0x4c, 0xb5, 0x8b, 0x09, 0x40, 0x72, 0x8d, 0xe8, 0x55, 0x36, 0x8c, - 0xe6, 0xc4, 0x72, 0x9f, 0xc8, 0xd4, 0xc4, 0xa7, 0x8e, 0x4d, 0x6b, 0x0d, 0xba, 0xca, 0x9b, 0x8d, - 0xef, 0x40, 0x3e, 0xd2, 0xc3, 0x30, 0x98, 0xb9, 0x04, 0x86, 0x69, 0xfd, 0xc7, 0x0f, 0x59, 0xca, - 0x66, 0xa5, 0x5c, 0x41, 0x2a, 0x48, 0xfe, 0xda, 0xa8, 0xf8, 0xeb, 0x67, 0xba, 0x0f, 0x8b, 0xef, - 0xa8, 0x9d, 0x56, 0x8d, 0xcc, 0x74, 0xa8, 0xd8, 0x69, 0xd0, 0x1e, 0xc5, 0x9f, 0x12, 0xd4, 0xc9, - 0x49, 0xd9, 0x4d, 0x29, 0x1b, 0x54, 0xa1, 0xca, 0xa5, 0x9d, 0xa6, 0x5d, 0xef, 0x18, 0x18, 0x03, - 0x90, 0x86, 0x2e, 0x66, 0x0a, 0x95, 0x2c, 0xfe, 0xcb, 0xe6, 0xf2, 0xe9, 0x67, 0x93, 0x56, 0xcd, - 0xc9, 0xb9, 0xa2, 0x94, 0x97, 0x72, 0x08, 0x62, 0x75, 0x83, 0x04, 0xc6, 0x03, 0xe4, 0x98, 0xdb, - 0x24, 0xd4, 0xcb, 0x43, 0xbd, 0xca, 0x9f, 0x57, 0x2b, 0x40, 0x95, 0x7c, 0xf6, 0x0f, 0xeb, 0xc9, - 0x52, 0x09, 0x28, 0xc2, 0x77, 0x10, 0x96, 0x7f, 0x15, 0x78, 0x7c, 0xa1, 0x8b, 0x18, 0x72, 0x88, - 0x8b, 0x5d, 0x66, 0xa2, 0x68, 0x9a, 0xa9, 0x80, 0x28, 0xcb, 0x14, 0xb3, 0xa5, 0xcd, 0x4a, 0xce, - 0xa5, 0x49, 0x06, 0x3a, 0x0e, 0x29, 0x72, 0x25, 0x97, 0xcd, 0x97, 0xf2, 0xb9, 0x4a, 0xae, 0x98, - 0x2f, 0xb1, 0x16, 0x80, 0xf2, 0x7f, 0xb7, 0x85, 0x6c, 0xb6, 0x52, 0x2e, 0xcb, 0x32, 0xdf, 0x44, - 0xae, 0x98, 0xcb, 0x95, 0xe5, 0xcd, 0x42, 0x39, 0x5b, 0x2c, 0x17, 0x4b, 0xb2, 0x2c, 0xfe, 0xfc, - 0x59, 0xeb, 0x8d, 0x74, 0x7a, 0xf9, 0xb7, 0x30, 0x00, 0x3d, 0x48, 0x23, 0x77, 0xfe, 0xc5, 0x3a, - 0x4d, 0xea, 0x02, 0x4b, 0x24, 0x67, 0x5f, 0xba, 0x69, 0x76, 0x95, 0xe1, 0xfa, 0xba, 0x4e, 0x26, - 0x02, 0xc8, 0x2f, 0xfc, 0xd6, 0xa2, 0x37, 0xa1, 0xb7, 0xf2, 0x24, 0xbf, 0xbe, 0x1e, 0x52, 0x63, - 0xe7, 0x3e, 0x4c, 0x1b, 0x0c, 0xe1, 0x04, 0x91, 0x9c, 0xe4, 0x0c, 0x14, 0x29, 0x77, 0x76, 0xee, - 0x69, 0x04, 0x7f, 0xd2, 0x74, 0x85, 0x4e, 0x83, 0x80, 0xb8, 0xb4, 0x40, 0xd7, 0xb4, 0x9c, 0x37, - 0x5a, 0x30, 0xa8, 0x8b, 0x31, 0x35, 0x24, 0x39, 0x73, 0xd7, 0xb9, 0x6e, 0x1a, 0x74, 0x2e, 0xb7, - 0xea, 0xce, 0x1b, 0xcd, 0xe2, 0x8a, 0xee, 0xed, 0x34, 0xcf, 0x97, 0x14, 0xb6, 0x77, 0xde, 0x9a, - 0x28, 0xc8, 0xcf, 0xc1, 0x72, 0x0b, 0x55, 0x52, 0xed, 0xbd, 0xa1, 0x89, 0xad, 0xfa, 0xd5, 0xe4, - 0x7a, 0xbd, 0x7e, 0xd1, 0x7e, 0xc6, 0x6f, 0x12, 0xbc, 0x90, 0x37, 0x1b, 0x72, 0xd2, 0x2c, 0x06, - 0x94, 0xaf, 0x04, 0x05, 0xb8, 0x2a, 0x64, 0x7d, 0x5d, 0x34, 0x68, 0x15, 0xb1, 0x5e, 0x47, 0xb7, - 0x8e, 0xd1, 0xc3, 0xb4, 0x2f, 0x0d, 0xcb, 0x52, 0xde, 0xd2, 0xaa, 0x4d, 0x7f, 0x23, 0xcd, 0x82, - 0x88, 0x21, 0x96, 0xda, 0x09, 0xa0, 0x7c, 0x81, 0x34, 0xe5, 0x3c, 0x61, 0x2a, 0xa0, 0x65, 0xee, - 0xe3, 0xbd, 0x35, 0x90, 0x95, 0x5c, 0x5f, 0x57, 0xd1, 0x6b, 0x04, 0xc2, 0x3a, 0x52, 0xfd, 0xba, - 0xdf, 0xa6, 0x81, 0xf3, 0x61, 0xc4, 0x69, 0xe5, 0x23, 0x1d, 0xaa, 0xa6, 0x2d, 0xa8, 0x1b, 0x4e, - 0xe9, 0x2f, 0xa4, 0xb4, 0x39, 0x90, 0x20, 0x4f, 0x5a, 0x8e, 0x15, 0x80, 0xc3, 0xd3, 0x74, 0x09, - 0x31, 0x05, 0x80, 0x52, 0xa2, 0x84, 0xbf, 0x7d, 0xf7, 0xb7, 0x9d, 0x12, 0x93, 0x62, 0xa8, 0x1e, - 0x9e, 0x03, 0xf7, 0xeb, 0xa5, 0x73, 0xd9, 0x5c, 0xe9, 0xdf, 0x21, 0x44, 0x52, 0xe9, 0xcd, 0x6c, - 0x31, 0xf7, 0xef, 0x10, 0x2a, 0xa9, 0xb4, 0xbc, 0x99, 0x0b, 0xa5, 0xf1, 0xc8, 0xe0, 0xc6, 0x48, - 0xeb, 0x14, 0x81, 0xc2, 0x6a, 0x29, 0x38, 0x75, 0x92, 0x46, 0x51, 0x0e, 0xa9, 0xe9, 0xc9, 0x36, - 0x57, 0xc5, 0x4f, 0x4c, 0x56, 0x41, 0xba, 0xa1, 0x62, 0xad, 0x13, 0xf1, 0x4b, 0x1d, 0xc3, 0x0f, - 0x9b, 0x20, 0x36, 0x47, 0xb0, 0x22, 0xb5, 0x90, 0xbf, 0x70, 0x0c, 0xd1, 0xcf, 0xd6, 0xa2, 0x17, - 0x31, 0xd6, 0xd8, 0x9a, 0x07, 0xe3, 0xc3, 0x93, 0xd1, 0x03, 0x96, 0xdc, 0x4e, 0xd8, 0xbf, 0x7f, - 0xc3, 0x3b, 0xe3, 0x4c, 0x2a, 0x78, 0xeb, 0x5e, 0x27, 0xfd, 0x42, 0x5b, 0xd9, 0xdc, 0xe6, 0x36, - 0x3d, 0x0e, 0x20, 0x56, 0xe9, 0xa9, 0x09, 0x30, 0x8a, 0xbc, 0x2a, 0x41, 0xa8, 0x7b, 0xdd, 0x5b, - 0x69, 0xd7, 0xd7, 0x9d, 0x2d, 0x79, 0xfb, 0x57, 0x34, 0xf2, 0x3d, 0x5b, 0xa6, 0x07, 0x6b, 0x85, - 0xbf, 0x66, 0x1e, 0xf5, 0xfd, 0x06, 0xe6, 0x42, 0x5e, 0xfe, 0x97, 0x84, 0xd4, 0x4d, 0xfc, 0x35, - 0x73, 0xe6, 0x92, 0xff, 0x27, 0x99, 0xfc, 0x55, 0x5d, 0x28, 0x9d, 0xac, 0x26, 0xfc, 0x4e, 0x05, - 0x6d, 0x26, 0x60, 0x1d, 0x8a, 0x45, 0xeb, 0x57, 0x0c, 0xd8, 0x5f, 0xd2, 0x62, 0xb7, 0x9d, 0x98, - 0x6e, 0x72, 0xa3, 0xa4, 0x98, 0xa6, 0xf6, 0xd6, 0xec, 0xf5, 0x41, 0x3a, 0x74, 0xd8, 0x4d, 0x04, - 0xa2, 0x86, 0xda, 0x35, 0x4c, 0x82, 0x3a, 0x2c, 0x7f, 0x69, 0xba, 0xfa, 0xa5, 0x71, 0xf1, 0x4b, - 0xd6, 0x50, 0x09, 0x22, 0x5c, 0x2a, 0x6d, 0x20, 0xdd, 0xee, 0xd7, 0x00, 0x4f, 0x2a, 0x1f, 0x44, - 0x7a, 0x1b, 0xa6, 0x28, 0xb9, 0x65, 0x1d, 0x5a, 0x16, 0x17, 0xbf, 0x34, 0x5b, 0xd1, 0x6a, 0x5e, - 0x29, 0xa7, 0x6d, 0x8a, 0x92, 0xb3, 0x2d, 0x66, 0xe9, 0x07, 0xca, 0xfd, 0xaf, 0x94, 0xe3, 0x13, - 0x20, 0x49, 0x9f, 0xf1, 0x46, 0x6c, 0x7a, 0xc3, 0x12, 0x3e, 0xc0, 0xc8, 0x78, 0x55, 0xdb, 0x6e, - 0x55, 0xff, 0x86, 0x4a, 0x41, 0xf6, 0xaa, 0xb8, 0x37, 0x32, 0xf1, 0x85, 0x07, 0x5d, 0x5a, 0x98, - 0xde, 0x14, 0x05, 0xc5, 0x28, 0x73, 0x71, 0xd9, 0x43, 0x87, 0x66, 0xcb, 0xb4, 0xd9, 0x62, 0xa8, - 0x1d, 0x67, 0xa3, 0x2d, 0x4a, 0x41, 0x5f, 0xa9, 0x98, 0x4e, 0xc3, 0xfa, 0x1e, 0x94, 0xb0, 0xfb, - 0x26, 0x2b, 0x41, 0x7b, 0xc8, 0x96, 0xe3, 0x6d, 0xd6, 0x44, 0xd5, 0x6d, 0x11, 0x0a, 0xab, 0x18, - 0xcd, 0x12, 0x8e, 0x60, 0xc5, 0xc0, 0x06, 0x3f, 0x7c, 0xf5, 0x56, 0x05, 0xea, 0x8b, 0xd2, 0x71, - 0xeb, 0xe2, 0x1c, 0xc6, 0x0d, 0x3f, 0xc0, 0xaa, 0xf6, 0xde, 0x12, 0x00, 0x36, 0x99, 0xf4, 0x95, - 0x14, 0x10, 0x5e, 0x5d, 0x7b, 0x7d, 0x9d, 0x99, 0xee, 0xb7, 0x47, 0xbc, 0x5c, 0xf6, 0x62, 0xc3, - 0x67, 0x3e, 0x22, 0x4c, 0xcd, 0x48, 0x83, 0x2e, 0x51, 0xff, 0x12, 0x93, 0x28, 0x05, 0x23, 0x1e, - 0x82, 0xe2, 0x5e, 0x43, 0x31, 0x0b, 0x0f, 0x7a, 0x7d, 0x19, 0x37, 0x6c, 0x33, 0x55, 0xa8, 0xea, - 0xe6, 0x2f, 0x83, 0xea, 0x85, 0x8b, 0xcc, 0x22, 0x9c, 0xc0, 0xa1, 0xc6, 0x12, 0x96, 0x01, 0xa0, - 0x47, 0x05, 0x16, 0x3a, 0x07, 0xbc, 0xbf, 0xd8, 0x39, 0x48, 0x8c, 0x85, 0xe2, 0xf2, 0x35, 0x08, - 0x22, 0x02, 0x72, 0x81, 0xe7, 0x53, 0xf1, 0x2b, 0x21, 0x3c, 0x3f, 0x74, 0x36, 0x7a, 0x98, 0x48, - 0xcf, 0x36, 0x71, 0x89, 0x39, 0x4c, 0xec, 0x76, 0xbb, 0xa1, 0xc4, 0x3c, 0x26, 0xb6, 0xdb, 0xed, - 0x50, 0x62, 0x01, 0x13, 0x15, 0x45, 0x09, 0x25, 0x16, 0x31, 0xb1, 0x52, 0xa9, 0x84, 0x12, 0x4b, - 0x71, 0x89, 0x65, 0x4c, 0x2c, 0x97, 0xcb, 0xa1, 0xc4, 0x36, 0x26, 0x16, 0x0a, 0x85, 0x50, 0x62, - 0x07, 0x13, 0xf3, 0xf9, 0x7c, 0x28, 0x91, 0x60, 0x62, 0x36, 0x9b, 0x0d, 0x25, 0x76, 0x31, 0x31, - 0x97, 0xcb, 0x85, 0x12, 0x2d, 0x8a, 0x67, 0x2e, 0x5c, 0xb2, 0x4f, 0x4b, 0x2a, 0xe1, 0x44, 0x8d, - 0x26, 0x96, 0x3a, 0xa1, 0x44, 0x03, 0x12, 0xe9, 0xa7, 0x1c, 0x73, 0x72, 0x41, 0x12, 0x82, 0x3f, - 0x72, 0xba, 0x92, 0x0c, 0x15, 0xb4, 0xdb, 0x2e, 0x3d, 0xf3, 0x91, 0xe4, 0x81, 0x9b, 0x5e, 0x0a, - 0xa5, 0x3b, 0xed, 0x25, 0x80, 0xdd, 0xcf, 0x66, 0x6f, 0xb4, 0x93, 0xc9, 0x48, 0x05, 0xc5, 0xab, - 0x91, 0xdd, 0x94, 0x25, 0x21, 0xf8, 0xb3, 0xbc, 0xc6, 0xe0, 0x53, 0x6d, 0xd0, 0x38, 0x60, 0xea, - 0x6a, 0x4d, 0xba, 0xe2, 0x94, 0xc5, 0xc9, 0xa1, 0x13, 0x18, 0xaf, 0xe4, 0x4e, 0xc8, 0xe9, 0x32, - 0x94, 0xab, 0x46, 0x19, 0x2a, 0x4a, 0x7e, 0xca, 0x50, 0x6c, 0x6d, 0x89, 0x30, 0x54, 0x74, 0x4c, - 0xf2, 0x71, 0x43, 0x5a, 0x88, 0x1b, 0x7c, 0xca, 0x50, 0xc5, 0x62, 0x71, 0x91, 0xa1, 0x4a, 0xa5, - 0xd2, 0x27, 0x19, 0x2a, 0xca, 0xb9, 0x94, 0xa1, 0x3a, 0x9d, 0xce, 0x22, 0x43, 0x45, 0xa7, 0x48, - 0x37, 0x6e, 0x36, 0x50, 0x86, 0x22, 0x85, 0xdc, 0x22, 0x43, 0x15, 0x48, 0x6e, 0x91, 0xa1, 0x0a, - 0x65, 0x25, 0x9e, 0xa1, 0xf2, 0x30, 0x10, 0xde, 0xbf, 0x25, 0xdc, 0x04, 0xc4, 0x8c, 0xe5, 0x26, - 0x48, 0x2f, 0x2e, 0xe1, 0x26, 0x1e, 0xea, 0x67, 0x58, 0x49, 0xce, 0x01, 0x17, 0xf9, 0x7f, 0x3e, - 0xc1, 0x4a, 0xc5, 0xac, 0x24, 0x78, 0xff, 0x3e, 0xcb, 0x47, 0x23, 0x1d, 0xd6, 0x01, 0x91, 0x93, - 0x53, 0xa8, 0xf5, 0xef, 0xf4, 0x03, 0x85, 0x89, 0x56, 0x6d, 0xf7, 0xb1, 0xcd, 0x7a, 0x37, 0xdd, - 0xb1, 0x08, 0x08, 0x7f, 0x57, 0x15, 0xa6, 0x20, 0xc5, 0x64, 0x4d, 0xed, 0x25, 0xec, 0x34, 0x3a, - 0xfd, 0x89, 0x24, 0x82, 0x8c, 0x26, 0xbf, 0x7f, 0xfb, 0x06, 0x06, 0x58, 0x99, 0xf6, 0x68, 0x98, - 0x36, 0x07, 0x86, 0x63, 0xd8, 0x99, 0x6c, 0x25, 0x27, 0x67, 0xb2, 0x72, 0x59, 0x46, 0x49, 0x0e, - 0x2d, 0xe0, 0xf2, 0xac, 0xd7, 0x3d, 0x23, 0xa0, 0xd6, 0x33, 0xac, 0x04, 0x75, 0x71, 0x08, 0xa0, - 0xf5, 0x82, 0xa5, 0xf8, 0xfb, 0xf7, 0x8f, 0x9f, 0xac, 0x90, 0x52, 0x07, 0x75, 0x53, 0xfb, 0x21, - 0xff, 0xdc, 0xd6, 0x51, 0x15, 0xdf, 0x1f, 0x69, 0xda, 0x23, 0xe8, 0x3f, 0x89, 0x64, 0x15, 0x13, - 0x25, 0xd5, 0x87, 0x91, 0x50, 0x24, 0xed, 0x47, 0xf6, 0x27, 0xfc, 0xc9, 0xfd, 0x4c, 0x4a, 0x46, - 0x90, 0xae, 0x26, 0x6b, 0x06, 0x2e, 0x79, 0xf4, 0xc5, 0x40, 0x20, 0xf4, 0x29, 0x99, 0xd2, 0x7e, - 0xe4, 0xa1, 0xa4, 0xbe, 0x55, 0x57, 0xc1, 0x1c, 0xf9, 0x5e, 0x37, 0x40, 0xd9, 0x61, 0x9d, 0xd1, - 0x7e, 0x14, 0x7e, 0x26, 0xe7, 0x73, 0x1b, 0xcf, 0x0c, 0xec, 0xe1, 0xa7, 0xb9, 0xd1, 0xf9, 0x4d, - 0x74, 0x62, 0x25, 0xa8, 0xa3, 0x11, 0xf4, 0x8b, 0xfa, 0x96, 0xdb, 0x03, 0x4e, 0xd3, 0x8e, 0xae, - 0xd5, 0xed, 0x3e, 0xd0, 0x87, 0xaa, 0xe3, 0x3a, 0x28, 0xcd, 0x09, 0xbd, 0x9e, 0x2e, 0x25, 0x25, - 0xcf, 0x58, 0x71, 0xef, 0x9a, 0xab, 0xeb, 0x7e, 0x4a, 0xa0, 0x5a, 0x1d, 0xa1, 0x99, 0x55, 0xff, - 0x05, 0x06, 0x3e, 0xe8, 0x57, 0x14, 0x23, 0xaa, 0x59, 0xb1, 0xa3, 0x28, 0x74, 0x50, 0x82, 0xbd, - 0xa3, 0x64, 0x48, 0xd7, 0x12, 0xbd, 0xfb, 0x51, 0x3b, 0xa0, 0x5d, 0x47, 0x46, 0xb6, 0xf5, 0xa2, - 0xea, 0xcd, 0x56, 0x0b, 0x87, 0x17, 0x46, 0xed, 0x0b, 0xb3, 0x89, 0x18, 0x8d, 0x9d, 0x7a, 0xc4, - 0xcc, 0xb9, 0x51, 0xfa, 0xd4, 0xc8, 0x41, 0xf7, 0x37, 0xcc, 0x33, 0x24, 0x74, 0x0c, 0x0b, 0xe0, - 0x36, 0x1c, 0xf0, 0x80, 0x9d, 0x56, 0xbb, 0x30, 0xfe, 0xb0, 0xfe, 0x11, 0x0d, 0xf7, 0x53, 0xdf, - 0xf0, 0x6b, 0xcb, 0x04, 0x58, 0x0b, 0x92, 0x82, 0xed, 0xe9, 0x4c, 0xc7, 0xb6, 0x31, 0x25, 0x72, - 0xb7, 0x17, 0x20, 0x95, 0xc6, 0x1c, 0xe0, 0xb1, 0x34, 0xbd, 0x74, 0xb2, 0x2e, 0xe2, 0xb1, 0x34, - 0xa0, 0x0a, 0x5e, 0x96, 0xa7, 0x77, 0x9b, 0x03, 0x55, 0xeb, 0x26, 0x6c, 0x18, 0x8d, 0xc0, 0x44, - 0x63, 0x95, 0x7d, 0x63, 0x21, 0x01, 0xba, 0xcd, 0xb6, 0xe7, 0xe6, 0x4a, 0x89, 0x99, 0x8c, 0x98, - 0xa2, 0x9e, 0xb2, 0xaa, 0x28, 0x26, 0x53, 0x24, 0xa8, 0x67, 0xe8, 0xe8, 0xaa, 0x4d, 0x30, 0xee, - 0x26, 0xf5, 0xc8, 0x99, 0x23, 0x64, 0x65, 0x0c, 0x45, 0x26, 0x55, 0xe4, 0xe3, 0x34, 0x05, 0x06, - 0x44, 0x4d, 0x52, 0x37, 0x9a, 0x2c, 0x25, 0x28, 0xc8, 0x7a, 0x48, 0x8d, 0xea, 0x7b, 0x6a, 0x14, - 0xa4, 0x1e, 0x99, 0xa0, 0xd5, 0x82, 0xee, 0xcb, 0x8a, 0x41, 0x6d, 0x30, 0x08, 0x13, 0xe2, 0x3e, - 0xc0, 0xa3, 0x77, 0x80, 0xa5, 0x85, 0x4b, 0x0d, 0x3f, 0x5f, 0x2d, 0xd0, 0xcb, 0x7f, 0xd9, 0xb5, - 0x82, 0x47, 0x97, 0x5f, 0xc4, 0x65, 0x8a, 0x19, 0x83, 0x28, 0x51, 0x68, 0xc9, 0x64, 0x0d, 0xf4, - 0x13, 0xe2, 0x5b, 0x31, 0xa6, 0xe2, 0x0c, 0xe8, 0x07, 0xb0, 0xec, 0x3a, 0xbd, 0xca, 0xb6, 0x43, - 0x30, 0x76, 0x28, 0x0d, 0xc4, 0xb2, 0xef, 0x55, 0x67, 0x00, 0x54, 0x15, 0x93, 0xdb, 0x1b, 0xd9, - 0xea, 0xd8, 0x50, 0xbb, 0x82, 0x0c, 0x0c, 0x62, 0x82, 0x0d, 0x4e, 0x53, 0x6b, 0xbe, 0x33, 0x30, - 0xe8, 0x20, 0x6b, 0x03, 0x12, 0x06, 0x86, 0xed, 0x20, 0xd8, 0x14, 0xe8, 0xef, 0x78, 0x8f, 0xe4, - 0x36, 0xe8, 0x56, 0x29, 0xf6, 0x88, 0x94, 0x84, 0xf1, 0x61, 0x16, 0xec, 0x96, 0x0c, 0x86, 0x2a, - 0x1a, 0x48, 0x36, 0x4e, 0xca, 0x84, 0x4b, 0x1f, 0x0a, 0x25, 0x55, 0x87, 0x56, 0x52, 0x98, 0x9e, - 0xac, 0xba, 0x72, 0x00, 0xa7, 0xbb, 0xd7, 0x2a, 0x4c, 0x02, 0x56, 0x3a, 0x39, 0x67, 0x5c, 0x17, - 0x4f, 0xcd, 0x40, 0x29, 0x4d, 0xd6, 0x1c, 0xa8, 0x83, 0x4e, 0x30, 0x30, 0x73, 0xfb, 0x64, 0x97, - 0x10, 0x13, 0xdf, 0x98, 0xae, 0x4a, 0x67, 0x5e, 0x02, 0xcc, 0x16, 0x3c, 0x7a, 0x85, 0xb6, 0xff, - 0xad, 0xa3, 0x6a, 0xa0, 0xe9, 0x26, 0x44, 0xc7, 0x1a, 0x11, 0xb1, 0xbe, 0x04, 0xba, 0xd9, 0x19, - 0x8a, 0x30, 0x50, 0x5f, 0x32, 0x67, 0x46, 0x5b, 0xcd, 0x80, 0x45, 0x67, 0x3b, 0x09, 0x5d, 0x19, - 0xab, 0x7d, 0x05, 0x4a, 0xa6, 0x47, 0x36, 0xb1, 0x1a, 0x7d, 0x18, 0x24, 0x98, 0xb1, 0x38, 0xdd, - 0x56, 0x42, 0x81, 0x32, 0xd1, 0x7b, 0xe2, 0x38, 0xfd, 0x2f, 0xd0, 0xcc, 0xa9, 0x37, 0x6c, 0xbb, - 0x47, 0x9c, 0xce, 0x20, 0xd8, 0x06, 0x1b, 0xe0, 0xd5, 0xdd, 0x90, 0x9e, 0x7e, 0xb6, 0x0d, 0x1d, - 0xc8, 0x3b, 0x1b, 0x12, 0x67, 0x60, 0x74, 0xab, 0x22, 0x94, 0x80, 0xb9, 0x8b, 0x92, 0x44, 0x4f, - 0x80, 0x9c, 0x21, 0xb4, 0x40, 0x22, 0x19, 0xa4, 0xcc, 0xa2, 0x1e, 0x01, 0xa0, 0x11, 0x3a, 0xd7, - 0xc0, 0xb6, 0x4f, 0xa6, 0x81, 0x99, 0xa1, 0x15, 0x2c, 0x85, 0xbe, 0x66, 0x03, 0x24, 0x83, 0x66, - 0xf4, 0x13, 0xe2, 0xb9, 0x21, 0x28, 0x58, 0xda, 0x15, 0xaf, 0xb4, 0x65, 0x74, 0x5f, 0x87, 0xb0, - 0x48, 0x0b, 0xbb, 0xec, 0x03, 0x5e, 0x36, 0x15, 0x18, 0xa4, 0x9b, 0x16, 0x11, 0x64, 0x4f, 0xd5, - 0x61, 0x4a, 0xbe, 0x25, 0x12, 0x49, 0x80, 0xea, 0xae, 0x11, 0x9c, 0x2e, 0xde, 0x4f, 0x83, 0xa0, - 0x82, 0x72, 0xd5, 0x65, 0x59, 0x01, 0x21, 0x60, 0xa2, 0xaf, 0xaf, 0xf3, 0xb2, 0x48, 0xc4, 0xf9, - 0xdf, 0x64, 0xd3, 0x9f, 0x3f, 0x29, 0x2d, 0xb9, 0xd1, 0x8b, 0xee, 0x56, 0x3f, 0xa6, 0x30, 0x0f, - 0xea, 0x72, 0x8e, 0xb9, 0x1c, 0x3a, 0x74, 0x36, 0x71, 0x67, 0x22, 0x7d, 0x84, 0xf7, 0x1f, 0xd0, - 0x53, 0xce, 0xbf, 0xb3, 0x67, 0xee, 0x64, 0x9e, 0x9f, 0xc7, 0x9f, 0xc6, 0x63, 0xa9, 0x61, 0x87, - 0x54, 0x72, 0x2e, 0xe1, 0x7e, 0xfe, 0x9c, 0xfe, 0x8f, 0x71, 0x9e, 0xcb, 0x78, 0xdd, 0x98, 0xe5, - 0x22, 0xb8, 0x5c, 0x9a, 0x85, 0x81, 0x89, 0x52, 0xbc, 0x6f, 0x4c, 0xfa, 0x92, 0x75, 0x97, 0xea, - 0xce, 0xd8, 0x97, 0xe9, 0xde, 0x1a, 0x21, 0x53, 0x63, 0x16, 0x05, 0x30, 0x20, 0x62, 0xbd, 0xb5, - 0x28, 0xa5, 0x0c, 0xab, 0xa1, 0x69, 0x89, 0x6f, 0xdc, 0x35, 0xad, 0x6e, 0x1c, 0xe7, 0xcf, 0x6f, - 0x49, 0x7f, 0x39, 0xc5, 0x4d, 0x0c, 0xc1, 0x4e, 0xea, 0x31, 0x98, 0x39, 0xc6, 0xa8, 0x33, 0xc0, - 0xdd, 0x09, 0xb4, 0x40, 0x29, 0x17, 0xef, 0xd0, 0xa8, 0x4d, 0x58, 0x10, 0x97, 0x95, 0x06, 0x09, - 0x13, 0x29, 0x1b, 0x08, 0xd7, 0xc8, 0x80, 0x11, 0x6f, 0x61, 0x61, 0xfe, 0xb4, 0x20, 0x68, 0x23, - 0xc0, 0xcd, 0x46, 0xdc, 0x9c, 0xa4, 0x1d, 0x73, 0xe6, 0x4e, 0xe9, 0xe0, 0x95, 0xfa, 0x50, 0x96, - 0x39, 0xe8, 0x7f, 0xff, 0x76, 0x7e, 0x90, 0x9f, 0xd1, 0xa3, 0x7c, 0x5e, 0x21, 0x4e, 0xc0, 0xbb, - 0x51, 0x20, 0x44, 0x72, 0xea, 0x40, 0xcf, 0x19, 0xab, 0xbd, 0xbe, 0xfe, 0xc5, 0x01, 0xc1, 0xac, - 0xb6, 0x30, 0xc8, 0x14, 0xd6, 0xa9, 0xff, 0xdd, 0x8c, 0x39, 0x54, 0x67, 0x0f, 0x0d, 0xc3, 0x01, - 0x6d, 0x0a, 0x87, 0x01, 0x0a, 0x2c, 0x3a, 0x14, 0x41, 0xe1, 0x52, 0x45, 0x89, 0x01, 0x59, 0x60, - 0x4f, 0xc2, 0x3b, 0x34, 0xf0, 0x86, 0x7a, 0x16, 0xf7, 0xe1, 0xe1, 0x81, 0x42, 0x8c, 0x8d, 0xad, - 0x1b, 0x42, 0x92, 0x5c, 0x58, 0xf2, 0x9b, 0xe1, 0xe5, 0xdb, 0x02, 0xcd, 0xcd, 0x1d, 0x74, 0x5a, - 0x91, 0x85, 0x98, 0xd0, 0xa5, 0x16, 0x3f, 0x68, 0x79, 0x78, 0x73, 0x76, 0x4a, 0x57, 0xdc, 0x30, - 0x49, 0x40, 0x64, 0x13, 0x8c, 0x3a, 0x01, 0xc1, 0x8d, 0x48, 0xc0, 0x74, 0xa0, 0x91, 0x28, 0x1e, - 0x8b, 0xbb, 0x1b, 0x43, 0x28, 0xc9, 0x59, 0xf3, 0x8a, 0xae, 0x0e, 0xe9, 0xda, 0xe7, 0x3a, 0xbd, - 0xbc, 0xad, 0xa3, 0x7a, 0x74, 0x5e, 0xc4, 0x8d, 0x11, 0x6b, 0x61, 0x2e, 0xe5, 0x2a, 0x30, 0x1b, - 0x24, 0xe8, 0x22, 0x2f, 0x6f, 0x48, 0x84, 0x1e, 0x5c, 0x30, 0x4c, 0x72, 0x16, 0x10, 0x48, 0x6c, - 0x02, 0x41, 0x88, 0x6b, 0x6a, 0x1b, 0x02, 0xb5, 0xe4, 0x85, 0x9e, 0x02, 0x8b, 0x66, 0xf7, 0x0b, - 0x8c, 0x85, 0xcc, 0xdb, 0xd0, 0x91, 0x98, 0x1a, 0x52, 0x2f, 0x92, 0xbc, 0xcf, 0x64, 0x3c, 0x8d, - 0x1c, 0x0e, 0x59, 0xf7, 0x82, 0x45, 0x3b, 0xe1, 0x12, 0x06, 0x45, 0x65, 0x3c, 0x4d, 0x96, 0x75, - 0xdd, 0x59, 0xda, 0x75, 0x29, 0x2e, 0xcb, 0x6d, 0x66, 0x2e, 0x85, 0x58, 0x02, 0x04, 0xd5, 0x35, - 0xee, 0x54, 0x0e, 0x89, 0xeb, 0x1d, 0x65, 0x68, 0x07, 0x4e, 0x48, 0xd4, 0xb0, 0xcf, 0x60, 0x59, - 0x4f, 0xf7, 0x34, 0x03, 0xa6, 0x87, 0x93, 0x29, 0x97, 0x0a, 0x48, 0x56, 0x9d, 0x4f, 0x4d, 0x38, - 0x1b, 0x34, 0xf9, 0xdf, 0x76, 0x32, 0x93, 0x2f, 0x61, 0xb6, 0x16, 0x9f, 0xbd, 0x81, 0xb9, 0xff, - 0xd6, 0x93, 0x99, 0x12, 0x2e, 0x48, 0x75, 0x7b, 0xdb, 0x4e, 0x89, 0x82, 0x98, 0x4a, 0x64, 0x61, - 0xcd, 0x46, 0xb7, 0xc9, 0x9b, 0x88, 0xfb, 0x48, 0x6f, 0x30, 0x19, 0x53, 0xa2, 0x24, 0x88, 0xf8, - 0x9d, 0x34, 0xd7, 0xfb, 0xab, 0xa4, 0xea, 0xfa, 0xef, 0xdf, 0xf6, 0xb6, 0xee, 0x57, 0xd0, 0xb7, - 0xc5, 0x81, 0x31, 0x42, 0x96, 0xc2, 0x1f, 0xa8, 0x02, 0xa5, 0xa5, 0x2f, 0x20, 0xc6, 0x75, 0x20, - 0x25, 0x14, 0x47, 0x00, 0x40, 0x8a, 0xad, 0x62, 0x05, 0xe6, 0x99, 0xcd, 0xd2, 0xb4, 0x14, 0x0d, - 0xc1, 0xc4, 0xf4, 0xef, 0x88, 0x0a, 0x3a, 0x2e, 0x31, 0x9f, 0x2b, 0xef, 0xa6, 0x63, 0x8a, 0xb3, - 0x51, 0x92, 0xff, 0x8d, 0x55, 0x6c, 0x82, 0xc6, 0x9f, 0xc2, 0x39, 0xa8, 0x75, 0x90, 0x15, 0xc6, - 0x04, 0xe7, 0x11, 0x3a, 0x66, 0x45, 0x4f, 0xe1, 0xfb, 0xf5, 0xdd, 0xb1, 0xb6, 0xbe, 0x3b, 0x5d, - 0x6f, 0x5b, 0xf5, 0x85, 0xbc, 0x39, 0x5d, 0x71, 0xeb, 0xaf, 0x19, 0x99, 0x7f, 0xcf, 0x38, 0x5d, - 0x3e, 0x6b, 0xac, 0x68, 0x2c, 0xcb, 0x99, 0x83, 0x2a, 0xed, 0x66, 0x67, 0xa0, 0xfa, 0xaf, 0xd0, - 0xe8, 0x9c, 0x72, 0x3b, 0x86, 0x97, 0x09, 0x36, 0x3e, 0xa4, 0x9e, 0xf5, 0x65, 0x15, 0xdd, 0xea, - 0xa5, 0x1b, 0x80, 0x49, 0x07, 0xb4, 0xc3, 0xf5, 0x75, 0x92, 0x4a, 0x79, 0x34, 0x23, 0x5b, 0xb9, - 0x22, 0x76, 0x85, 0xd4, 0xe1, 0x37, 0x29, 0x71, 0x0a, 0x27, 0x8d, 0xe3, 0xbd, 0x05, 0x90, 0x9c, - 0x38, 0x04, 0x4e, 0xfd, 0x65, 0x22, 0xa6, 0x6a, 0xf7, 0x57, 0x92, 0x5d, 0xb9, 0x54, 0xfb, 0x42, - 0x21, 0xff, 0x70, 0x7e, 0xfe, 0xfe, 0x2d, 0x7f, 0x41, 0xe8, 0xd8, 0xc6, 0x76, 0x50, 0x14, 0xbf, - 0x03, 0x01, 0x85, 0x83, 0xa9, 0xef, 0x60, 0x93, 0xdb, 0xf4, 0x2c, 0x5d, 0xb9, 0x5c, 0x13, 0x8e, - 0x76, 0x85, 0xe1, 0xc8, 0x76, 0x84, 0x36, 0x11, 0x20, 0x5d, 0x30, 0xc0, 0x8c, 0x22, 0xb6, 0x9d, - 0xc6, 0x81, 0xad, 0xae, 0x80, 0xf2, 0xcb, 0xab, 0x8f, 0xbb, 0xe9, 0x13, 0x4b, 0xc5, 0x4b, 0x76, - 0x85, 0xbf, 0x66, 0x26, 0xd5, 0xfc, 0x9d, 0xe4, 0xfc, 0x0b, 0x47, 0x23, 0xd3, 0xdd, 0xf3, 0x70, - 0xbb, 0xe1, 0x46, 0xbe, 0x02, 0x8f, 0x10, 0x8f, 0x0c, 0xb4, 0x0f, 0xeb, 0xeb, 0xac, 0x2b, 0xe4, - 0x67, 0xf0, 0x94, 0xd6, 0xa9, 0x13, 0x39, 0x78, 0x85, 0xe1, 0xe7, 0x37, 0x21, 0x2e, 0x35, 0xe5, - 0x0d, 0x63, 0x3b, 0xb9, 0x4d, 0x08, 0xbf, 0xac, 0xe9, 0xe6, 0x71, 0xd0, 0xbc, 0xa4, 0xb4, 0x69, - 0x73, 0xe8, 0x29, 0xa6, 0x7a, 0xa7, 0x68, 0x9e, 0x6d, 0x43, 0x0b, 0x83, 0x8e, 0xe7, 0x55, 0x4a, - 0xba, 0xbb, 0x11, 0xa2, 0xeb, 0x15, 0x76, 0x77, 0x66, 0x80, 0x43, 0xd4, 0xbe, 0x9e, 0xc0, 0x6d, - 0x5b, 0xaf, 0xa0, 0xd7, 0x1b, 0x27, 0x0d, 0xe6, 0xc1, 0x36, 0xfd, 0x5b, 0x4d, 0x74, 0x09, 0x5e, - 0xe7, 0x01, 0x69, 0xba, 0xe4, 0x3f, 0x9a, 0xc1, 0xe3, 0xab, 0x16, 0x75, 0x9e, 0x3a, 0xfc, 0xe4, - 0x7f, 0xd5, 0x3c, 0xda, 0x7d, 0x48, 0xa9, 0x57, 0x6d, 0x9b, 0x7b, 0xc6, 0xad, 0xdb, 0x80, 0x97, - 0xcc, 0x9d, 0xce, 0x8b, 0xcf, 0x99, 0xcc, 0x32, 0x47, 0xff, 0x6e, 0x8d, 0xb8, 0x1f, 0x5c, 0x4a, - 0x50, 0x27, 0x3d, 0x71, 0x5a, 0xde, 0x27, 0x78, 0xaf, 0xe9, 0x9e, 0x9b, 0x2c, 0x55, 0xe8, 0x7f, - 0xa8, 0x9e, 0x90, 0x29, 0xe9, 0x34, 0x8d, 0xe1, 0x10, 0x34, 0x10, 0x5c, 0x8b, 0xcc, 0x37, 0x54, - 0xbb, 0x78, 0x61, 0x6c, 0xaa, 0x2c, 0xfc, 0x01, 0x2f, 0x61, 0x6f, 0x1b, 0x8a, 0x05, 0x52, 0x98, - 0xeb, 0x88, 0x49, 0xc7, 0x9c, 0xca, 0xe0, 0x80, 0x13, 0x70, 0xf7, 0x17, 0xa6, 0x66, 0xcd, 0xb1, - 0xde, 0x66, 0x09, 0x7b, 0x95, 0x7e, 0x06, 0xfa, 0xb2, 0x67, 0x41, 0x64, 0x65, 0xca, 0x12, 0x28, - 0xe0, 0x5d, 0x7d, 0x35, 0x39, 0x9b, 0x33, 0x7b, 0xfa, 0x17, 0x1f, 0x70, 0x4b, 0x3f, 0x58, 0xd3, - 0x11, 0x81, 0x29, 0xc9, 0xf6, 0xb7, 0xf0, 0x9d, 0x13, 0xd5, 0x72, 0xf8, 0x93, 0x9e, 0x02, 0xfd, - 0x64, 0xad, 0xf8, 0xad, 0xfa, 0xcd, 0x0f, 0xac, 0xf0, 0xf7, 0xda, 0x6b, 0xa1, 0x18, 0xe1, 0x9a, - 0x18, 0x7f, 0x74, 0xbe, 0xf6, 0x01, 0xe4, 0xf9, 0xd6, 0xaf, 0x9a, 0x9e, 0x82, 0x89, 0x29, 0x62, - 0xdc, 0xcc, 0x40, 0x19, 0x13, 0x41, 0x37, 0x5c, 0xa2, 0xd8, 0xc2, 0x1b, 0x71, 0xbe, 0xc0, 0x84, - 0x73, 0xaf, 0x8d, 0x07, 0xfd, 0xd7, 0x22, 0xc2, 0x44, 0xb1, 0x31, 0x04, 0x47, 0xb5, 0xed, 0x11, - 0xa1, 0x1a, 0x35, 0x4e, 0xb0, 0x37, 0x10, 0xa3, 0x5e, 0x2d, 0x58, 0xe4, 0x50, 0x37, 0x00, 0xa8, - 0xa2, 0x17, 0xd1, 0x23, 0x4a, 0xac, 0x8d, 0x43, 0x90, 0x48, 0xf8, 0xf9, 0x1f, 0x17, 0x94, 0x6a, - 0x0b, 0xa8, 0x2c, 0x8c, 0x4c, 0xb7, 0x2a, 0x3d, 0xf5, 0x8b, 0x0a, 0x94, 0x82, 0x09, 0x63, 0xd5, - 0x18, 0xd9, 0x2c, 0xfe, 0x4a, 0xd3, 0x14, 0xb6, 0xad, 0x32, 0x86, 0x65, 0x14, 0x3f, 0xe5, 0x41, - 0x63, 0x7d, 0xfe, 0x43, 0x17, 0x04, 0x21, 0xd1, 0x02, 0x33, 0x07, 0x30, 0x50, 0x3c, 0x18, 0x13, - 0x55, 0x63, 0x27, 0x24, 0x04, 0x0c, 0xdc, 0xa6, 0xc1, 0x6b, 0x86, 0x2b, 0x0a, 0x08, 0x8d, 0x7c, - 0x61, 0x4d, 0x26, 0xa1, 0x5f, 0x87, 0x2e, 0x12, 0x8a, 0x87, 0x86, 0xc1, 0x62, 0x63, 0x70, 0x83, - 0x40, 0x78, 0xd1, 0x8d, 0x09, 0x88, 0x51, 0xc3, 0xe8, 0x62, 0x88, 0x90, 0x03, 0x16, 0x34, 0x76, - 0xe2, 0xdb, 0x77, 0xef, 0xd3, 0x02, 0x2c, 0x5e, 0xba, 0x43, 0x8f, 0x33, 0x78, 0x69, 0x5b, 0x3e, - 0x5a, 0x2b, 0x63, 0x86, 0x5c, 0xb6, 0xc7, 0x30, 0x68, 0xf3, 0x2d, 0xc4, 0x9a, 0x7e, 0xb4, 0xcf, - 0xb7, 0xa4, 0x44, 0x09, 0x48, 0x63, 0x6f, 0x44, 0xa6, 0x44, 0xbb, 0xe1, 0xeb, 0x9c, 0xb0, 0xd3, - 0x25, 0x5f, 0x0b, 0xa3, 0xf3, 0x86, 0x89, 0xde, 0xba, 0x1d, 0x71, 0x92, 0x78, 0x5c, 0x42, 0xa8, - 0xb3, 0x85, 0x4a, 0x13, 0x90, 0xc7, 0x18, 0xc3, 0x51, 0xa7, 0x06, 0x08, 0x7d, 0xde, 0x92, 0x93, - 0xde, 0x54, 0x36, 0xcc, 0x11, 0x5e, 0x1f, 0xe5, 0x55, 0xfb, 0xe2, 0x1a, 0x2a, 0xc8, 0x76, 0xf0, - 0x2b, 0x51, 0x13, 0x9c, 0x00, 0xcf, 0x25, 0x40, 0x89, 0x85, 0x84, 0x2f, 0x75, 0x37, 0x17, 0x14, - 0x91, 0x88, 0x3d, 0xe8, 0xb2, 0xc4, 0x47, 0xe6, 0xa0, 0x58, 0x90, 0x0b, 0xd4, 0x41, 0x81, 0x94, - 0x1e, 0xd9, 0xdb, 0x33, 0xb9, 0x3a, 0x9b, 0xcf, 0xab, 0x31, 0x56, 0x22, 0x8b, 0x57, 0x21, 0x21, - 0x7c, 0xa2, 0xf8, 0x86, 0x2d, 0x46, 0x7e, 0x82, 0x83, 0xde, 0x1a, 0x35, 0xfd, 0x70, 0x93, 0x2d, - 0xd0, 0x8e, 0x08, 0x08, 0x96, 0x64, 0xd4, 0xc7, 0xe4, 0x9b, 0x5e, 0x1e, 0xfd, 0x22, 0x9d, 0x44, - 0x24, 0x33, 0x5e, 0xf4, 0xd2, 0x8a, 0x5e, 0x26, 0xc0, 0xf8, 0x79, 0x01, 0x45, 0x24, 0xa2, 0x3a, - 0x4a, 0x7e, 0x37, 0xb9, 0x7e, 0xb2, 0xd8, 0x1b, 0x57, 0xa4, 0x83, 0xd1, 0x62, 0xa9, 0xd8, 0x7e, - 0x32, 0xe8, 0xab, 0x7f, 0x45, 0x4e, 0xa8, 0xb3, 0xbc, 0x9a, 0x8e, 0x82, 0x68, 0xb1, 0xb3, 0xb8, - 0x6d, 0xc6, 0xed, 0x78, 0x45, 0xba, 0x0a, 0x36, 0xe4, 0xaa, 0x4e, 0xba, 0x71, 0x78, 0xff, 0x50, - 0x1f, 0xc9, 0x07, 0x7d, 0x74, 0xe3, 0xf5, 0xff, 0xf1, 0x2e, 0x52, 0x23, 0x78, 0x55, 0x37, 0x59, - 0x78, 0xd4, 0x3f, 0xd4, 0xcb, 0x84, 0x1b, 0x6c, 0x45, 0xa8, 0xf7, 0x37, 0x6d, 0x0f, 0xd4, 0x1e, - 0x16, 0x65, 0xa9, 0xe9, 0x91, 0xce, 0x12, 0xc4, 0xda, 0x97, 0x9a, 0x18, 0xee, 0x68, 0x10, 0xa4, - 0xf5, 0x37, 0xba, 0x8c, 0xeb, 0x0e, 0xe2, 0xe2, 0x32, 0xb6, 0x64, 0x5e, 0x9d, 0x02, 0xa4, 0x20, - 0x98, 0xc5, 0xa3, 0xf1, 0xd5, 0xa9, 0xbf, 0xfc, 0xc2, 0x7a, 0x07, 0x82, 0x01, 0x0a, 0xfa, 0x2e, - 0x31, 0xa0, 0x8e, 0xaf, 0x2a, 0x1a, 0x2c, 0x0b, 0x96, 0x16, 0xb0, 0x21, 0x30, 0x10, 0xa5, 0xbe, - 0x45, 0x7e, 0xc8, 0x3f, 0xb7, 0x1c, 0xf4, 0x8b, 0x49, 0x04, 0x25, 0x63, 0xdc, 0x19, 0xa0, 0x2b, - 0x0c, 0xc2, 0xa2, 0x74, 0xc7, 0x73, 0x08, 0xdf, 0x10, 0x0f, 0x4a, 0x87, 0x24, 0xd4, 0xf8, 0xb5, - 0xf4, 0x16, 0x23, 0x01, 0xbf, 0x1c, 0xee, 0x1e, 0x0d, 0x02, 0x2d, 0x17, 0x9a, 0x98, 0xbf, 0x6a, - 0x6d, 0xd1, 0xbb, 0x41, 0x0f, 0x93, 0x72, 0x3f, 0xb7, 0xf1, 0x0f, 0xaa, 0x13, 0xe1, 0xb0, 0x43, - 0x26, 0x05, 0x12, 0x6e, 0x35, 0x58, 0x18, 0x51, 0x4f, 0xfe, 0x91, 0xfd, 0x39, 0xf7, 0x65, 0xeb, - 0xaf, 0x1a, 0x13, 0xa7, 0xaf, 0xda, 0xe2, 0x55, 0x3a, 0xde, 0x87, 0xd1, 0x60, 0x2c, 0xd0, 0x3d, - 0x29, 0xc4, 0x96, 0xf4, 0xed, 0x22, 0xbf, 0x30, 0x0f, 0x91, 0x33, 0x66, 0xe7, 0x0b, 0xf4, 0xf6, - 0x45, 0xb1, 0x27, 0x85, 0x13, 0x4c, 0xa2, 0x71, 0xce, 0xbf, 0xd5, 0xda, 0x46, 0x92, 0xa9, 0x75, - 0xc9, 0x99, 0xab, 0xa9, 0x31, 0xd5, 0x4a, 0xfe, 0xe9, 0x2a, 0x81, 0x60, 0xc7, 0xd8, 0xd1, 0x29, - 0xc5, 0x2a, 0x80, 0x99, 0x4d, 0x07, 0xaf, 0x33, 0x34, 0x2f, 0x93, 0x1e, 0x3f, 0x30, 0xf5, 0x04, - 0x19, 0x83, 0xdb, 0xaa, 0x48, 0xb8, 0x41, 0x7e, 0x36, 0x1b, 0x29, 0xaa, 0x7c, 0xb2, 0xb8, 0x1e, - 0xdc, 0x8a, 0x48, 0x26, 0x71, 0x19, 0x52, 0x75, 0x50, 0xf1, 0x99, 0xcb, 0xd9, 0x37, 0xf8, 0x70, - 0xeb, 0x82, 0x19, 0xf8, 0x4a, 0x1d, 0x4b, 0x82, 0xb6, 0x57, 0x53, 0x60, 0x6d, 0x01, 0xb6, 0x31, - 0x47, 0xf6, 0x20, 0xf1, 0x83, 0x48, 0x8a, 0xe4, 0xe9, 0xdc, 0xb8, 0x47, 0xc1, 0x92, 0x61, 0xc6, - 0x3b, 0xa9, 0x18, 0x15, 0x89, 0xde, 0xd9, 0xe3, 0xf1, 0x00, 0x99, 0x1b, 0xe2, 0xd6, 0xaf, 0xc0, - 0xe9, 0x66, 0xaa, 0x5d, 0xd4, 0xb6, 0xa2, 0xf5, 0x54, 0xdf, 0x62, 0xc2, 0x75, 0xf3, 0x57, 0x0c, - 0x64, 0x74, 0x06, 0x0b, 0xfe, 0x7d, 0x3d, 0xf1, 0x9c, 0x43, 0xe6, 0x49, 0x04, 0x13, 0xd2, 0xe2, - 0xb7, 0x45, 0x3f, 0xb4, 0xf9, 0x5b, 0xf8, 0x06, 0xab, 0x6f, 0x2c, 0x9c, 0x3c, 0xcf, 0xae, 0x6c, - 0x40, 0xfb, 0x64, 0xee, 0xd9, 0x1b, 0x24, 0x39, 0x07, 0x6d, 0x20, 0x1a, 0x13, 0xed, 0x7f, 0x50, - 0x50, 0xe8, 0x69, 0x16, 0xd7, 0x43, 0x1d, 0x33, 0xc2, 0xf7, 0x42, 0xb4, 0x08, 0xa8, 0xf2, 0x90, - 0x97, 0xca, 0xca, 0xf2, 0xdc, 0xbb, 0xa9, 0xae, 0xe3, 0x7e, 0x0f, 0x85, 0xf6, 0x31, 0x0e, 0x7e, - 0x04, 0x38, 0x06, 0x32, 0x7a, 0x30, 0x38, 0xf0, 0x8c, 0x7b, 0xa3, 0xd0, 0xf3, 0x15, 0x76, 0x37, - 0x08, 0xc2, 0x8d, 0x8c, 0x08, 0x58, 0x8b, 0xfc, 0x25, 0x48, 0x1e, 0x6c, 0x1f, 0xb4, 0x8f, 0x91, - 0x4b, 0x7d, 0x1a, 0x2c, 0x9a, 0x4a, 0xcd, 0x97, 0x28, 0x2f, 0x0e, 0xcd, 0xdf, 0x92, 0xb7, 0x13, - 0x54, 0x09, 0xa1, 0x5a, 0xc4, 0xfa, 0xba, 0xec, 0xfe, 0x26, 0x96, 0xc7, 0x76, 0xa0, 0x53, 0x14, - 0x15, 0x00, 0x77, 0x2a, 0x00, 0xd7, 0xd1, 0xb8, 0xd5, 0xe5, 0xe5, 0x17, 0xe2, 0x40, 0xd8, 0x8c, - 0x48, 0x7a, 0xfe, 0x57, 0x84, 0x55, 0x0d, 0xe9, 0x09, 0xbe, 0xb3, 0xf6, 0xb2, 0x91, 0x08, 0x16, - 0x24, 0x14, 0x96, 0x4c, 0x2c, 0x44, 0x6f, 0x3f, 0x63, 0xb3, 0x1a, 0x2f, 0x3f, 0xe3, 0x4d, 0x0b, - 0x36, 0x31, 0x7a, 0x06, 0xdd, 0x7c, 0xf4, 0x22, 0x63, 0x89, 0x3b, 0x53, 0x49, 0x1a, 0x39, 0xb0, - 0xb6, 0xb0, 0xf3, 0xc5, 0x13, 0xc8, 0x49, 0x0f, 0xe9, 0x72, 0x90, 0xf9, 0xf1, 0x1f, 0xa3, 0xbc, - 0x5c, 0x90, 0x37, 0xf0, 0xa7, 0xd7, 0x83, 0xbf, 0x05, 0x19, 0x5f, 0x0a, 0xdd, 0x36, 0xbc, 0x14, - 0x08, 0x7d, 0xa9, 0xf4, 0x30, 0xa7, 0x57, 0xa1, 0x2f, 0x3d, 0x85, 0xbe, 0xf4, 0x4a, 0x25, 0x7c, - 0xe9, 0x55, 0xb0, 0x4e, 0x36, 0x9f, 0x85, 0x97, 0xdd, 0xcd, 0xca, 0xee, 0xcf, 0x0c, 0xee, 0xea, - 0x2c, 0xd9, 0x74, 0xf3, 0x2f, 0x12, 0xc5, 0x60, 0x6f, 0xfa, 0xd1, 0x75, 0x16, 0x8c, 0x85, 0xfb, - 0xae, 0xe2, 0x2e, 0x45, 0xaf, 0x8d, 0x8e, 0xb5, 0x7a, 0xbd, 0x8e, 0xe3, 0xb4, 0x2c, 0x70, 0x71, - 0x15, 0x18, 0x92, 0xc6, 0xaf, 0x8c, 0x50, 0x73, 0x49, 0x4c, 0xe0, 0x27, 0x87, 0x92, 0x60, 0x74, - 0x3b, 0x74, 0xdb, 0xc8, 0x4b, 0x74, 0x53, 0xba, 0x69, 0x26, 0xf3, 0x9d, 0x20, 0x14, 0x9a, 0xd0, - 0xb8, 0x1d, 0x10, 0x03, 0xf0, 0x12, 0x8a, 0xdf, 0x46, 0xf5, 0xd1, 0xf2, 0x02, 0xa3, 0xdd, 0x52, - 0xf0, 0x06, 0x2c, 0x4a, 0xe3, 0x95, 0x49, 0xba, 0x67, 0xa7, 0x51, 0x5f, 0x64, 0xfa, 0x32, 0xf7, - 0x69, 0x20, 0xaf, 0xe7, 0xee, 0x75, 0x00, 0x75, 0x3f, 0x40, 0x48, 0xef, 0x76, 0x80, 0x3f, 0x51, - 0x51, 0x70, 0x83, 0x9c, 0x30, 0x9a, 0xd9, 0x87, 0x0c, 0xec, 0x34, 0xdd, 0x0e, 0xbd, 0xa5, 0x27, - 0x55, 0x1a, 0xeb, 0xbc, 0xaa, 0xc8, 0x00, 0x8a, 0x24, 0x30, 0x36, 0x7a, 0x38, 0xc1, 0x4d, 0xa7, - 0x21, 0xae, 0xb3, 0xdb, 0x09, 0xee, 0x82, 0x34, 0x79, 0x77, 0x71, 0x59, 0x62, 0xd7, 0xa3, 0xf1, - 0xd7, 0xc0, 0x65, 0x77, 0x63, 0x97, 0xa4, 0xc5, 0x82, 0xb9, 0x55, 0x05, 0x93, 0xd5, 0x15, 0x2d, - 0x2f, 0x87, 0x99, 0xfd, 0x14, 0x8a, 0xb9, 0xa5, 0xa5, 0x92, 0x8b, 0x0b, 0xa3, 0x37, 0x4f, 0xb8, - 0x65, 0x0c, 0x06, 0xcc, 0x22, 0x64, 0x40, 0x14, 0x33, 0x83, 0x1f, 0xe8, 0xab, 0xd9, 0x75, 0x3b, - 0xed, 0x18, 0xfb, 0xea, 0x94, 0x74, 0x13, 0xd9, 0xa4, 0xbb, 0x76, 0xb9, 0xc4, 0x35, 0x27, 0x96, - 0xa4, 0xd5, 0xc5, 0x73, 0xc3, 0x11, 0xf0, 0xb3, 0x72, 0x14, 0x64, 0x57, 0xac, 0xe9, 0x5b, 0x59, - 0x92, 0xdf, 0xd6, 0xea, 0x09, 0x1d, 0xfe, 0x9f, 0xa9, 0xc3, 0x4b, 0xd2, 0x07, 0x01, 0x79, 0xf2, - 0xb6, 0x5c, 0xcd, 0x26, 0x93, 0x29, 0x51, 0x68, 0x88, 0x55, 0x1d, 0x87, 0x23, 0x41, 0xcb, 0x16, - 0xe5, 0x7f, 0x53, 0x1f, 0x24, 0xf5, 0x62, 0x43, 0x45, 0x98, 0xd6, 0x58, 0x68, 0xd8, 0x10, 0xbd, - 0xf5, 0x8d, 0x29, 0x4b, 0x24, 0x3d, 0x4a, 0xe2, 0xca, 0x89, 0x62, 0xd7, 0xf9, 0x01, 0xdc, 0xf8, - 0x13, 0x2c, 0xc8, 0xa8, 0x42, 0x0b, 0x65, 0x92, 0x36, 0x2c, 0x87, 0xdb, 0x4a, 0xaa, 0xee, 0x39, - 0xff, 0xa0, 0x28, 0xdd, 0x7e, 0xc6, 0xf5, 0xb4, 0x1a, 0x4e, 0x67, 0x2d, 0xa8, 0x75, 0xf1, 0x64, - 0x34, 0x1a, 0x28, 0x2f, 0x23, 0xb1, 0x46, 0xd2, 0x60, 0xbf, 0xa6, 0xe9, 0xae, 0x86, 0xbb, 0x17, - 0x2a, 0xa7, 0xb3, 0x85, 0x34, 0xf5, 0xfb, 0x42, 0xb9, 0x43, 0x03, 0x54, 0x48, 0x3a, 0xa9, 0x3a, - 0x3a, 0x4d, 0xc1, 0x07, 0xb6, 0xf2, 0x8d, 0x41, 0x36, 0x63, 0xe5, 0xb9, 0x00, 0x3a, 0x93, 0x3a, - 0xf7, 0xed, 0xf1, 0xef, 0xf4, 0x7b, 0x98, 0x20, 0xa9, 0xff, 0x9a, 0x29, 0x73, 0xfc, 0x8b, 0x61, - 0x0e, 0x75, 0x65, 0x5b, 0x14, 0xab, 0xdf, 0x7c, 0x37, 0xa4, 0xa1, 0xe1, 0xf9, 0x8f, 0x7a, 0x6e, - 0xeb, 0xfb, 0xc0, 0xf2, 0x9c, 0x0b, 0xde, 0x19, 0x21, 0xff, 0xc3, 0xea, 0xee, 0x87, 0xf0, 0xe4, - 0x1a, 0x8b, 0xcd, 0xc7, 0x4f, 0x21, 0x2f, 0x7e, 0xb7, 0x15, 0x53, 0xa9, 0x99, 0xec, 0xba, 0x29, - 0xbf, 0xd1, 0x36, 0x73, 0xc5, 0xd2, 0x3a, 0x6e, 0x07, 0x39, 0xdb, 0x5e, 0xef, 0xc5, 0x5d, 0xd2, - 0x1e, 0xf5, 0x45, 0xe9, 0xdb, 0x8a, 0xeb, 0x2d, 0x63, 0x0f, 0x06, 0xce, 0xfe, 0xe3, 0x5b, 0x17, - 0xab, 0xfe, 0xc7, 0xb7, 0xea, 0xb7, 0x54, 0x22, 0x9b, 0x2b, 0xbb, 0x80, 0xc5, 0x9e, 0x02, 0xd2, - 0x1a, 0x96, 0x64, 0xba, 0x79, 0x9a, 0x4c, 0x7d, 0xa3, 0xfa, 0x60, 0x74, 0xbd, 0x0c, 0x57, 0x01, - 0x43, 0xb5, 0x4a, 0xef, 0xb8, 0x85, 0xe2, 0xc1, 0x07, 0xe5, 0x42, 0x07, 0xc5, 0xbe, 0xa1, 0xbf, - 0x98, 0xf6, 0xc1, 0xc7, 0x7c, 0x67, 0xa4, 0x6a, 0x18, 0x42, 0x91, 0x1e, 0xab, 0xdd, 0x64, 0x38, - 0xab, 0xa5, 0xf6, 0x41, 0x59, 0xa7, 0x07, 0x6e, 0x50, 0xad, 0xc6, 0x42, 0x13, 0xb5, 0xa7, 0xa6, - 0x6d, 0x9a, 0x9e, 0x12, 0xff, 0x25, 0xd0, 0x60, 0x62, 0x9a, 0x66, 0xd9, 0xb6, 0x2a, 0x89, 0x42, - 0x77, 0x67, 0x08, 0x62, 0x32, 0x0c, 0xe6, 0xd6, 0x44, 0x57, 0xbb, 0x28, 0x45, 0xdc, 0xee, 0xe9, - 0x11, 0x4d, 0x4f, 0x46, 0x4a, 0xe3, 0x85, 0x5f, 0x02, 0x4e, 0x1d, 0x98, 0x48, 0x00, 0xf0, 0x65, - 0xc7, 0x05, 0x47, 0xd2, 0xa6, 0x6d, 0x29, 0xc3, 0xed, 0x70, 0xc1, 0xcb, 0xd6, 0x75, 0xe3, 0x4c, - 0x94, 0x12, 0x6e, 0x2e, 0x9d, 0x6e, 0x49, 0x6e, 0xae, 0xb9, 0x10, 0x16, 0x7a, 0xbd, 0x07, 0x72, - 0x72, 0x88, 0x33, 0x4d, 0x70, 0x4f, 0xb4, 0x88, 0x92, 0x16, 0x41, 0xa4, 0x01, 0xec, 0x07, 0x2b, - 0xb2, 0xb0, 0x7f, 0xd9, 0xc2, 0x9e, 0xd3, 0xc9, 0xda, 0x33, 0xed, 0x48, 0xa9, 0xb3, 0x46, 0x53, - 0x00, 0xf9, 0x80, 0xe7, 0xb2, 0xb0, 0xd4, 0x50, 0xe9, 0x44, 0xfb, 0xa3, 0x6a, 0xc4, 0x7e, 0xb3, - 0x61, 0x4d, 0xc7, 0x7c, 0x10, 0xe4, 0xa3, 0x14, 0xee, 0xca, 0xd3, 0x47, 0x27, 0x85, 0xe8, 0x21, - 0x15, 0xb9, 0x49, 0x0b, 0x1a, 0xc9, 0xbf, 0x59, 0xc1, 0x0c, 0x2b, 0x04, 0x13, 0xf8, 0x5f, 0x0b, - 0x44, 0xdd, 0xd3, 0xc7, 0xaa, 0x65, 0xe8, 0x43, 0x8a, 0x3a, 0x49, 0xe3, 0x19, 0x7e, 0xba, 0x49, - 0x80, 0xa1, 0x27, 0x16, 0x81, 0x47, 0x3a, 0x34, 0xda, 0x44, 0x35, 0x31, 0xb4, 0x1b, 0x2b, 0x03, - 0x03, 0xd3, 0xb9, 0xf3, 0x8b, 0x49, 0xba, 0x97, 0x71, 0x78, 0xc9, 0xa6, 0x8a, 0x34, 0xd5, 0x8b, - 0xd1, 0x99, 0x14, 0x14, 0x59, 0x12, 0x6f, 0x1f, 0xb9, 0x87, 0x26, 0xc9, 0x22, 0x84, 0xfc, 0x98, - 0x08, 0xd7, 0x09, 0xe6, 0xd6, 0x6c, 0xa9, 0xb8, 0x33, 0xd7, 0xc7, 0xf0, 0x81, 0xd0, 0x3d, 0x38, - 0x7c, 0x18, 0x89, 0x27, 0x4e, 0xbd, 0x43, 0xe7, 0xbc, 0x48, 0xa5, 0xfa, 0xba, 0xed, 0xaf, 0x6e, - 0xa1, 0xfd, 0xd4, 0x04, 0x7f, 0xe8, 0x28, 0x7c, 0xd2, 0xc8, 0x3d, 0x60, 0x84, 0x4a, 0x55, 0xdf, - 0xb5, 0x08, 0xbc, 0xc2, 0xa9, 0x14, 0x85, 0xa9, 0x05, 0x36, 0x80, 0x9e, 0x06, 0xfe, 0xaf, 0xd1, - 0x08, 0x83, 0x00, 0x08, 0xd5, 0xe6, 0x38, 0x98, 0x5a, 0x0a, 0x58, 0x4a, 0xdb, 0x42, 0xc0, 0x98, - 0x85, 0xf0, 0xb5, 0x24, 0x85, 0xa4, 0x30, 0x27, 0x30, 0xc0, 0x17, 0x53, 0x5a, 0x52, 0x52, 0xeb, - 0x5f, 0xbe, 0x28, 0xb8, 0xa1, 0x12, 0xbf, 0xfb, 0xe5, 0x9b, 0x5f, 0xbf, 0x7f, 0xe3, 0xd1, 0x04, - 0x6d, 0x7d, 0x9d, 0x8f, 0x1b, 0x86, 0x6c, 0x8c, 0x98, 0x12, 0x83, 0xaf, 0x46, 0x8b, 0x35, 0x7b, - 0xa2, 0xa2, 0x3e, 0xa5, 0xa3, 0x82, 0x98, 0x9c, 0x75, 0x30, 0x76, 0x25, 0x5b, 0x35, 0x42, 0x5b, - 0x94, 0xb5, 0xb6, 0x45, 0x94, 0x97, 0x1a, 0xcd, 0xcb, 0xf1, 0x79, 0xfd, 0x70, 0x5e, 0x9e, 0xcf, - 0xd3, 0x92, 0xe2, 0x1c, 0xf1, 0xb7, 0x5c, 0x6b, 0xc3, 0x55, 0x8d, 0x41, 0xad, 0xd7, 0xe6, 0xc1, - 0x0d, 0x57, 0x6d, 0x7b, 0x51, 0xf8, 0x70, 0xf7, 0x29, 0x09, 0xb0, 0x88, 0x09, 0x7f, 0xcd, 0xf4, - 0xb4, 0xa1, 0x6f, 0xe3, 0x46, 0xb0, 0xc8, 0x8c, 0x5b, 0x5f, 0xcd, 0xd6, 0xe6, 0x50, 0x20, 0x6c, - 0xb2, 0x00, 0xe9, 0x2e, 0x27, 0x56, 0x02, 0xf3, 0x92, 0x11, 0x61, 0xb5, 0xfc, 0x56, 0x2c, 0xfe, - 0x2e, 0x26, 0x06, 0x97, 0x7e, 0x96, 0x64, 0xf5, 0xbd, 0x7e, 0xa4, 0x8f, 0x61, 0xfe, 0xac, 0xa1, - 0x3f, 0xb9, 0xa0, 0x6c, 0xc9, 0x67, 0xed, 0xb0, 0x9b, 0xd0, 0x2a, 0x74, 0x2f, 0xb3, 0xf5, 0xe1, - 0xbd, 0x4c, 0xfc, 0x5f, 0xb0, 0x01, 0xeb, 0x3a, 0x5b, 0x0c, 0xa5, 0x2e, 0x7d, 0x32, 0x4c, 0xc9, - 0xf4, 0x92, 0x1e, 0xa5, 0xbe, 0x9b, 0xf6, 0x28, 0x8d, 0xea, 0xa0, 0x65, 0x01, 0x4b, 0x7c, 0x1f, - 0x4e, 0xfe, 0x3d, 0x1c, 0x48, 0x3d, 0x18, 0x1a, 0x76, 0xb7, 0x4e, 0xe8, 0x46, 0x1d, 0xf7, 0xa3, - 0xae, 0x78, 0xbe, 0x16, 0x0f, 0x36, 0x12, 0x01, 0xed, 0xbe, 0x33, 0x5c, 0x09, 0xc5, 0xae, 0x6a, - 0xb1, 0x4d, 0x07, 0x71, 0xbe, 0xe4, 0x0a, 0x48, 0x8e, 0x84, 0x00, 0x27, 0x42, 0x32, 0x00, 0xe8, - 0xd1, 0x0b, 0x7b, 0x0b, 0x05, 0xb6, 0x45, 0xf7, 0x76, 0x1c, 0x3a, 0xb2, 0x5b, 0x1f, 0xdc, 0x84, - 0xe4, 0xdd, 0x8e, 0xf3, 0x4b, 0x1a, 0x7f, 0x80, 0xfa, 0x99, 0x8a, 0x56, 0xcb, 0xc7, 0x38, 0x0e, - 0xa3, 0x9f, 0x29, 0x3c, 0x53, 0x79, 0x0c, 0x87, 0xea, 0xdf, 0x45, 0x70, 0x80, 0x0a, 0xdb, 0x10, - 0x45, 0xcc, 0x08, 0xc3, 0x76, 0x3e, 0x47, 0xe9, 0x4f, 0xd0, 0xf4, 0x71, 0x91, 0xa4, 0x8f, 0x21, - 0x9a, 0x3e, 0xfe, 0x5d, 0x8c, 0x87, 0xff, 0x14, 0x49, 0x1f, 0x17, 0x48, 0x1a, 0xc2, 0x70, 0xf8, - 0x77, 0x31, 0x64, 0xf2, 0xb0, 0x1d, 0x96, 0x27, 0xb4, 0x45, 0xc5, 0xc4, 0xf3, 0xdb, 0xf4, 0xf2, - 0x51, 0x78, 0xc6, 0xcf, 0x1d, 0x9a, 0xdc, 0x3d, 0xb0, 0x5a, 0x5b, 0xdb, 0xb0, 0xdd, 0x1b, 0xa2, - 0xf6, 0xa8, 0x80, 0x14, 0xb2, 0xbb, 0xc2, 0xfe, 0x03, 0x55, 0xfb, 0xf8, 0x89, 0x46, 0xb4, 0x0d, - 0x13, 0x9a, 0x65, 0xfb, 0x6c, 0xe1, 0xd4, 0x50, 0x73, 0xd9, 0x5c, 0xb4, 0x87, 0xd9, 0x9c, 0x27, - 0x70, 0xbe, 0xbb, 0xd7, 0x94, 0x05, 0x5f, 0x35, 0xfc, 0x6b, 0x06, 0x92, 0x18, 0xba, 0x9d, 0xcd, - 0x6d, 0xe3, 0xde, 0x37, 0x3b, 0xfb, 0xca, 0x7a, 0x7e, 0x09, 0xca, 0x84, 0x66, 0x7f, 0xcf, 0xb0, - 0x3a, 0xd1, 0xba, 0x59, 0xac, 0x9b, 0x5d, 0x56, 0x77, 0x47, 0xb1, 0x96, 0x55, 0xcc, 0x61, 0xc5, - 0xdc, 0xb2, 0x8a, 0x0d, 0xab, 0xb3, 0xac, 0x62, 0x1e, 0x2b, 0xe6, 0x97, 0x55, 0x6c, 0xd2, 0x13, - 0xe0, 0x41, 0xdd, 0x0c, 0xcb, 0x8e, 0xc8, 0xa2, 0x23, 0x77, 0x7c, 0xe8, 0x68, 0xd8, 0x3a, 0x92, - 0x4d, 0x8d, 0x1d, 0x8a, 0x16, 0x2a, 0x25, 0x82, 0xad, 0x0e, 0xff, 0xee, 0x38, 0xd8, 0xd1, 0xb9, - 0xdb, 0x52, 0x3f, 0x1c, 0x05, 0x5b, 0x5d, 0x24, 0x24, 0x51, 0xa0, 0xa6, 0xfe, 0xf1, 0x28, 0xc4, - 0xd4, 0xbd, 0x27, 0xf7, 0xaa, 0xa6, 0x5d, 0x1b, 0x9d, 0x97, 0x47, 0x63, 0xf4, 0x01, 0x65, 0x6a, - 0x51, 0xc7, 0x1b, 0x74, 0x83, 0x7a, 0x8f, 0x00, 0xbe, 0x86, 0x3b, 0x3d, 0x43, 0x5c, 0xc3, 0x49, - 0x7f, 0x5b, 0x0c, 0xb5, 0x81, 0xd2, 0x77, 0x3b, 0x58, 0xd8, 0x17, 0x16, 0x40, 0x97, 0xef, 0xf1, - 0xd4, 0x34, 0x5d, 0x42, 0xe0, 0x01, 0xfd, 0x4e, 0x31, 0x33, 0x99, 0xdd, 0xea, 0xbd, 0xf5, 0xf1, - 0x0c, 0xb6, 0x89, 0x16, 0xa6, 0x2c, 0xea, 0x23, 0xfc, 0x14, 0x86, 0x94, 0xbf, 0x37, 0x87, 0x23, - 0xdd, 0x5f, 0x70, 0x38, 0x62, 0x43, 0x7b, 0x53, 0x7f, 0x14, 0x97, 0x78, 0xf1, 0xac, 0xf7, 0x10, - 0xba, 0xf4, 0x3d, 0xf0, 0xe1, 0x61, 0x40, 0x1b, 0xd5, 0x13, 0xe1, 0xd7, 0x8d, 0x73, 0x4c, 0x24, - 0x6b, 0xc1, 0x8d, 0xbf, 0x14, 0x78, 0x8d, 0xaa, 0x06, 0xd8, 0x17, 0xa8, 0xbd, 0x6d, 0xbb, 0xce, - 0x17, 0xf6, 0x0b, 0x60, 0x41, 0x73, 0x02, 0x9a, 0x17, 0xb2, 0x78, 0xe2, 0x0b, 0xaf, 0x73, 0xc4, - 0x9f, 0x7c, 0xae, 0x28, 0xce, 0xa9, 0x22, 0xf1, 0x2b, 0x05, 0xea, 0x92, 0xbe, 0x0d, 0xff, 0xaa, - 0xde, 0x4d, 0x6c, 0x02, 0x2a, 0x67, 0xa9, 0x6f, 0x21, 0xff, 0xa0, 0x61, 0x32, 0x4e, 0xff, 0x10, - 0x37, 0x96, 0x8c, 0x4b, 0x34, 0x86, 0xa1, 0x29, 0x7d, 0xba, 0xb3, 0x8b, 0x1b, 0xd8, 0x5b, 0xdf, - 0x52, 0xbf, 0xa2, 0x44, 0xe8, 0xbb, 0x57, 0x72, 0x79, 0x7b, 0xdb, 0xd4, 0x9c, 0xfc, 0x6b, 0x66, - 0xcc, 0x6b, 0xbc, 0x9f, 0x14, 0xef, 0x9d, 0xd3, 0xc9, 0xd4, 0x09, 0xeb, 0xc9, 0x8b, 0x01, 0x71, - 0xdf, 0x10, 0xc3, 0x6f, 0x2e, 0x39, 0x72, 0x9b, 0xe5, 0xbf, 0x66, 0x2d, 0xea, 0x12, 0x4c, 0xe3, - 0xd7, 0x48, 0x9a, 0x03, 0xc5, 0x6a, 0x62, 0xc0, 0x2b, 0xe5, 0xaa, 0x94, 0xd8, 0x10, 0xd3, 0x1d, - 0x37, 0xa9, 0x81, 0xd1, 0x9b, 0x49, 0x8f, 0x1c, 0xbf, 0x22, 0xfd, 0xde, 0xe8, 0x78, 0x17, 0xf2, - 0x51, 0xb6, 0x08, 0xa1, 0xea, 0xe9, 0x87, 0xbd, 0x64, 0x2d, 0xac, 0xb8, 0x1d, 0x58, 0x26, 0x1d, - 0x1b, 0x49, 0x0e, 0xd0, 0x69, 0x78, 0x17, 0xb0, 0xac, 0x00, 0x64, 0x2d, 0x05, 0x94, 0x0d, 0x00, - 0xed, 0x7c, 0x02, 0x50, 0x7f, 0x29, 0xa0, 0x5c, 0x00, 0xa8, 0xf9, 0x09, 0x40, 0xda, 0x52, 0x40, - 0xf9, 0x00, 0xd0, 0xae, 0x0f, 0x88, 0x13, 0x12, 0xc2, 0xaf, 0xc5, 0x01, 0x8f, 0xf1, 0x8d, 0xbb, - 0x8c, 0xbf, 0xdc, 0x3b, 0xae, 0xc5, 0x7b, 0xc6, 0xe3, 0xa0, 0xc7, 0x7a, 0xc6, 0xb5, 0x58, 0xaf, - 0xb8, 0x16, 0xf5, 0x88, 0xc3, 0x44, 0x88, 0x1e, 0x4b, 0xb4, 0x68, 0x34, 0x7e, 0x54, 0xce, 0xa9, - 0x7a, 0x08, 0x71, 0x78, 0x65, 0xb8, 0x2c, 0x5c, 0x6d, 0xe7, 0xf1, 0x90, 0x33, 0x75, 0x42, 0x35, - 0x9c, 0xd8, 0x4f, 0xee, 0x04, 0x5f, 0xdc, 0xf9, 0x6b, 0x26, 0x12, 0xdb, 0x2c, 0xe7, 0x4a, 0x25, - 0xb1, 0x5e, 0xb7, 0xa9, 0xd5, 0xba, 0x9d, 0xcf, 0x55, 0x4b, 0x85, 0x39, 0xaf, 0x5e, 0xbb, 0x73, - 0x16, 0x25, 0x68, 0xe8, 0x0e, 0x3d, 0xfa, 0x59, 0x1f, 0x01, 0xa5, 0x51, 0x3a, 0x9d, 0x16, 0x33, - 0xae, 0x33, 0xc8, 0x27, 0x14, 0x58, 0x86, 0xf4, 0xc6, 0x42, 0x07, 0x18, 0x1a, 0x43, 0xca, 0x00, - 0x73, 0xa7, 0xbb, 0xf5, 0xd7, 0x6c, 0xb4, 0x2d, 0xb6, 0x50, 0xc5, 0x16, 0x1e, 0x30, 0x22, 0x84, - 0x3e, 0x9d, 0xee, 0xed, 0x8a, 0x2c, 0xfa, 0x8c, 0x2b, 0xc5, 0xd3, 0x08, 0xf0, 0xdd, 0x16, 0xef, - 0xd1, 0x43, 0x44, 0xeb, 0x80, 0x8c, 0x80, 0xca, 0x0b, 0x05, 0xd8, 0xed, 0x40, 0x60, 0x4e, 0x7a, - 0x85, 0x62, 0xe1, 0xa2, 0x46, 0x7e, 0xd1, 0xeb, 0xe1, 0xe9, 0x1e, 0x2e, 0xe2, 0x8d, 0x43, 0xd1, - 0x25, 0x30, 0x27, 0x70, 0xc3, 0x72, 0x7e, 0xe5, 0x7d, 0x8a, 0x7f, 0xcd, 0x12, 0xa3, 0xed, 0xe1, - 0xa4, 0xea, 0x79, 0x99, 0x93, 0x1b, 0xd9, 0x39, 0x67, 0xac, 0x74, 0xe6, 0x0b, 0x46, 0xcf, 0x29, - 0xd1, 0x03, 0x73, 0xc8, 0xff, 0x6c, 0x12, 0x34, 0xc6, 0x3e, 0x9b, 0xe4, 0x49, 0x75, 0xae, 0x17, - 0x1f, 0x20, 0x48, 0x3e, 0x40, 0x30, 0x84, 0x1f, 0x8f, 0x5c, 0x77, 0x23, 0x11, 0xa5, 0x69, 0xa7, - 0x2a, 0x27, 0xff, 0x01, 0x94, 0x05, 0x6c, 0xd5, 0x8b, 0x51, 0x42, 0x9e, 0xdd, 0x50, 0x34, 0xb5, - 0xaf, 0x57, 0x51, 0xa6, 0x5b, 0x0e, 0x06, 0x26, 0xe1, 0x72, 0x88, 0x85, 0xc6, 0x29, 0xea, 0x5c, - 0x14, 0x53, 0x3d, 0x4c, 0x5a, 0xec, 0x29, 0x85, 0xc4, 0xbc, 0xbf, 0x0b, 0x8b, 0xba, 0xd1, 0x8b, - 0xf6, 0x9c, 0xe3, 0x62, 0xa3, 0xb7, 0xaa, 0x1f, 0x9c, 0x53, 0x11, 0xa6, 0x27, 0xb4, 0xe0, 0x7a, - 0x2f, 0xb7, 0x18, 0x83, 0x3e, 0x7a, 0x91, 0x93, 0x80, 0xd8, 0x02, 0x8d, 0xc4, 0x43, 0xea, 0xcc, - 0xf4, 0x98, 0xee, 0x11, 0x1d, 0x7e, 0x7e, 0xf9, 0x30, 0x87, 0x7d, 0x30, 0x7a, 0xdf, 0x52, 0x5a, - 0xea, 0x9b, 0xfd, 0xb8, 0x72, 0xfc, 0xbe, 0xa5, 0x12, 0xc3, 0xc1, 0x46, 0x16, 0x9d, 0x8a, 0x5e, - 0xf7, 0xbe, 0xa5, 0x4c, 0x7c, 0x8b, 0xe9, 0x1c, 0x05, 0xb8, 0x64, 0x94, 0xdc, 0xbc, 0xad, 0x00, - 0xd5, 0x0f, 0x10, 0x23, 0x1f, 0x21, 0x36, 0x1c, 0x84, 0x90, 0x4a, 0xf4, 0x17, 0xf9, 0xc9, 0xac, - 0xa2, 0x07, 0xfc, 0xbf, 0x8e, 0xac, 0xb0, 0x9c, 0x97, 0x60, 0xf9, 0x1f, 0x7a, 0x4c, 0x34, 0x80, - 0x07, 0x7f, 0x00, 0x44, 0x2a, 0x64, 0xfd, 0x91, 0x3d, 0xc0, 0x5b, 0xc6, 0x60, 0xd1, 0xf6, 0xfb, - 0xdf, 0xc2, 0x03, 0x05, 0xdc, 0x7b, 0x78, 0xe8, 0xc4, 0x4f, 0xcd, 0xbd, 0xbe, 0x65, 0xc6, 0x12, - 0x29, 0xcb, 0xfb, 0x33, 0x38, 0xae, 0x84, 0xf2, 0xff, 0x03, 0x12, 0xc1, 0x36, 0x3b, 0x2b, 0x87, - 0x2e, 0x8a, 0x15, 0x94, 0xff, 0x47, 0xb0, 0xfa, 0x84, 0xf7, 0x9d, 0xb9, 0x84, 0x96, 0xe9, 0xae, - 0xfe, 0xc7, 0x9d, 0xfc, 0x7b, 0x79, 0xe9, 0x2a, 0x1b, 0xff, 0x3d, 0x37, 0x6e, 0xbc, 0x3c, 0xdf, - 0x6a, 0x78, 0x49, 0x1d, 0x08, 0xed, 0xb0, 0x2d, 0x04, 0x1c, 0x29, 0xfa, 0x8b, 0x7c, 0x82, 0x2e, - 0x0d, 0xbd, 0x24, 0x3c, 0xac, 0xaf, 0xf7, 0x37, 0xcc, 0xad, 0xec, 0xfa, 0x7a, 0x77, 0xa3, 0xb3, - 0x95, 0xdd, 0x6e, 0x53, 0xc6, 0x49, 0x90, 0x74, 0x63, 0xd4, 0x55, 0x8d, 0x6b, 0xc2, 0xce, 0x56, - 0xac, 0xaf, 0x47, 0x12, 0xa8, 0xbb, 0x4d, 0xac, 0x1e, 0xe1, 0x42, 0xbe, 0xc2, 0x25, 0x10, 0x42, - 0xa0, 0xed, 0x0c, 0x45, 0xb7, 0x6d, 0x7a, 0x81, 0xaf, 0x69, 0xd0, 0x6d, 0x06, 0xe6, 0x35, 0x70, - 0xaf, 0x2b, 0xc3, 0xb6, 0x41, 0x7a, 0xae, 0xb6, 0x40, 0xe8, 0x04, 0x71, 0xcc, 0x88, 0x6d, 0x77, - 0x63, 0xfa, 0xb3, 0xea, 0x1b, 0xaa, 0xdf, 0x8e, 0x19, 0xb2, 0x40, 0x60, 0x36, 0x6c, 0xe1, 0x4e, - 0xcd, 0xc7, 0x90, 0xe3, 0x3c, 0x3e, 0x21, 0xc8, 0x11, 0x9f, 0x0f, 0x85, 0x8c, 0x72, 0xf0, 0xcf, - 0x2d, 0x9c, 0x2e, 0x5e, 0x3a, 0x8a, 0x2a, 0xfc, 0x72, 0xee, 0x71, 0x31, 0xb3, 0x98, 0xca, 0xe5, - 0x7f, 0xc9, 0xd6, 0x04, 0x9b, 0xd4, 0xbd, 0xf3, 0x0c, 0x0f, 0xe3, 0x70, 0x5b, 0x3c, 0xe6, 0xa7, - 0x98, 0x2c, 0xf4, 0xc5, 0xc3, 0x20, 0xca, 0xe7, 0x33, 0xa8, 0x74, 0x43, 0xa8, 0xec, 0xd2, 0x90, - 0x1a, 0x0e, 0x81, 0x2e, 0x6f, 0x0c, 0x6e, 0xfd, 0xe1, 0x27, 0xcc, 0x42, 0xf6, 0xf0, 0xa2, 0xee, - 0x08, 0x2c, 0x67, 0xa1, 0x58, 0x63, 0x11, 0x9e, 0x73, 0xcf, 0xef, 0xbd, 0x18, 0x26, 0xe1, 0xba, - 0xd8, 0x79, 0x0f, 0xfa, 0x56, 0x9d, 0xed, 0x72, 0xd7, 0x82, 0x93, 0x5a, 0x9a, 0xbb, 0xf5, 0x0a, - 0x66, 0x25, 0x1e, 0x35, 0x4d, 0x7a, 0x71, 0xa1, 0xde, 0xbb, 0x77, 0x31, 0x37, 0xc6, 0x27, 0xfb, - 0x9e, 0x7f, 0xa5, 0x2e, 0xd7, 0x94, 0xef, 0x75, 0xec, 0x64, 0x4d, 0x49, 0xa5, 0x92, 0x81, 0xc4, - 0x50, 0xfc, 0xe3, 0x40, 0xd4, 0xb7, 0x4b, 0x03, 0xee, 0x29, 0xf3, 0x2b, 0xe8, 0x2c, 0xfe, 0x95, - 0xf4, 0x5b, 0xeb, 0x5b, 0x62, 0x4a, 0x59, 0xb6, 0x19, 0xfc, 0x85, 0xaf, 0x07, 0x98, 0xfc, 0xf2, - 0xd1, 0x80, 0xa9, 0xfa, 0x39, 0x6c, 0xb3, 0xec, 0x38, 0xb6, 0xbb, 0xe1, 0xf0, 0x3d, 0x17, 0x94, - 0xec, 0x77, 0xc1, 0x0c, 0x05, 0xcc, 0x57, 0xee, 0x44, 0x23, 0xb1, 0xe5, 0xa5, 0xdb, 0xd0, 0xd2, - 0x17, 0xea, 0x22, 0xfe, 0xa2, 0xb1, 0x03, 0x99, 0xe1, 0x25, 0xcf, 0xdb, 0xd2, 0x08, 0xfa, 0x80, - 0xad, 0xcd, 0x6d, 0xef, 0x84, 0x43, 0x12, 0xd6, 0xc4, 0xd4, 0xb2, 0x52, 0xc4, 0x2f, 0xf5, 0xdd, - 0x53, 0xd9, 0xfc, 0x2e, 0x23, 0xc9, 0xa2, 0x88, 0xc7, 0xed, 0xb5, 0xfb, 0xf7, 0x8f, 0x47, 0xe3, - 0x13, 0x3c, 0x6a, 0x80, 0x8c, 0x0b, 0xdf, 0xc1, 0x22, 0x85, 0x0f, 0x51, 0x62, 0xcc, 0x81, 0x69, - 0x27, 0xd1, 0xd4, 0xc7, 0x07, 0x3f, 0x50, 0xdd, 0x3b, 0x2c, 0xfc, 0xed, 0x94, 0x5e, 0x0a, 0x5e, - 0x65, 0xf7, 0x85, 0xc7, 0xb8, 0xa0, 0xec, 0x3e, 0x2f, 0x3e, 0x22, 0x3b, 0xae, 0xec, 0x46, 0xf1, - 0xff, 0xf8, 0x56, 0xf5, 0x69, 0xc0, 0x7d, 0x70, 0x3b, 0xc6, 0x2f, 0x15, 0xb8, 0x93, 0xb6, 0x6e, - 0x5d, 0x98, 0x5d, 0xdf, 0x8b, 0xf4, 0xad, 0xe6, 0xef, 0xa3, 0xd3, 0x60, 0x43, 0x81, 0xa1, 0x4c, - 0xf7, 0x9b, 0x68, 0xa8, 0x60, 0x18, 0xd6, 0x5f, 0x33, 0x27, 0xad, 0x76, 0xe7, 0x18, 0xa5, 0x25, - 0xd7, 0xeb, 0xf8, 0xbc, 0x2d, 0xba, 0x2e, 0x06, 0xb1, 0xea, 0xa4, 0xf1, 0x90, 0x03, 0x98, 0x3e, - 0xee, 0x9d, 0xe7, 0x29, 0xcc, 0x4f, 0x89, 0x2c, 0x08, 0x79, 0xee, 0x37, 0xf9, 0xab, 0x46, 0x68, - 0x84, 0x75, 0xc8, 0x7d, 0xe5, 0x86, 0x5a, 0xbb, 0x35, 0x43, 0xc1, 0x7c, 0x91, 0x9c, 0x65, 0x63, - 0xc7, 0xc5, 0x0d, 0xc6, 0x94, 0xe5, 0xb8, 0x6f, 0x71, 0xd3, 0xce, 0x0f, 0x78, 0x75, 0x23, 0x32, - 0x69, 0x80, 0xac, 0x44, 0xb7, 0xee, 0x88, 0x17, 0x38, 0xea, 0x6f, 0x30, 0xe2, 0x11, 0x00, 0xe7, - 0x3b, 0x71, 0x07, 0xb5, 0xe6, 0xc0, 0xf4, 0x25, 0x3f, 0x9c, 0x9f, 0xf5, 0x99, 0xda, 0xad, 0xe2, - 0x03, 0xc6, 0x17, 0xa0, 0x91, 0xc7, 0x5e, 0xb2, 0x3f, 0xe7, 0x08, 0x83, 0x8f, 0xde, 0xa4, 0xf1, - 0x47, 0xf4, 0xa4, 0xb8, 0x46, 0xf0, 0x4e, 0x28, 0xc5, 0x22, 0x09, 0x87, 0x26, 0x26, 0x31, 0x98, - 0xc0, 0x8b, 0x4c, 0x45, 0x78, 0x32, 0x83, 0x24, 0xb6, 0xf0, 0x60, 0xad, 0x38, 0x0f, 0x90, 0xa0, - 0xc7, 0x1d, 0x89, 0xc7, 0x4f, 0x78, 0x66, 0x5e, 0xd2, 0xe1, 0x87, 0x9e, 0xb8, 0x16, 0x05, 0x11, - 0x43, 0x32, 0x44, 0x76, 0x9d, 0x02, 0x6d, 0x4c, 0xd5, 0xbb, 0x64, 0x7a, 0xd1, 0x4b, 0x88, 0xd7, - 0xad, 0xbb, 0x5d, 0x31, 0xf9, 0x5d, 0xa6, 0xc1, 0x85, 0x61, 0xa6, 0x65, 0x61, 0xaf, 0x18, 0x4a, - 0xce, 0x22, 0x64, 0x5d, 0xa6, 0xc5, 0x46, 0xf0, 0xd2, 0x04, 0x96, 0x8a, 0x67, 0x49, 0x58, 0xc6, - 0xb6, 0x58, 0xab, 0x7d, 0xa9, 0x65, 0x41, 0x03, 0xf0, 0x32, 0x6a, 0x8c, 0x3a, 0x18, 0xd2, 0xa0, - 0x6d, 0xff, 0xf8, 0x59, 0xd5, 0xbc, 0xb3, 0xe2, 0x35, 0x7a, 0xe7, 0x83, 0xe3, 0x56, 0xfc, 0x9e, - 0xff, 0xfd, 0x9b, 0x86, 0x3d, 0xd0, 0x58, 0x52, 0x28, 0x87, 0xbf, 0x5e, 0x51, 0x89, 0x1e, 0x4b, - 0x8c, 0x39, 0x1a, 0x4e, 0xaf, 0xc6, 0xf2, 0x2e, 0x28, 0xa3, 0x67, 0xc2, 0xdd, 0xa3, 0x0e, 0xc1, - 0x37, 0xf3, 0xbc, 0x9d, 0x4c, 0xbf, 0xa1, 0x82, 0xdf, 0x50, 0xfe, 0xe7, 0x36, 0xa8, 0x94, 0x55, - 0x7c, 0xa8, 0xc9, 0xf4, 0xc8, 0x55, 0x02, 0x43, 0x49, 0x92, 0x92, 0xc2, 0xb5, 0x95, 0x50, 0x80, - 0x4e, 0x1d, 0x6d, 0x84, 0xf7, 0xbe, 0x82, 0xaa, 0x17, 0x34, 0xc0, 0xbe, 0x75, 0x87, 0x85, 0x83, - 0xfc, 0x2c, 0x9f, 0x4f, 0x3f, 0x35, 0x17, 0xce, 0xcf, 0x71, 0xf9, 0xec, 0x4b, 0x6f, 0xe1, 0xfc, - 0x31, 0x9f, 0x4f, 0xbf, 0xb3, 0x16, 0xce, 0xef, 0x85, 0xf3, 0x8b, 0x35, 0x0c, 0xde, 0x71, 0x52, - 0xf5, 0x3e, 0x9e, 0xa0, 0xc5, 0xb5, 0x02, 0x98, 0x1a, 0x23, 0xed, 0x0e, 0x9d, 0xa1, 0x96, 0xc0, - 0xef, 0x6d, 0x4a, 0x44, 0xd2, 0x25, 0xd4, 0x34, 0xf6, 0x1f, 0x80, 0x8a, 0x34, 0x1e, 0x80, 0xad, - 0x6d, 0xde, 0xb7, 0x2c, 0xf9, 0xa5, 0x2d, 0x26, 0x3e, 0xd6, 0x8f, 0x6b, 0x67, 0x21, 0xf0, 0x7e, - 0xbc, 0xb4, 0xfb, 0x16, 0x0a, 0x3f, 0xce, 0xfe, 0x8c, 0xb2, 0x2f, 0x8d, 0x4f, 0x75, 0xcb, 0x7a, - 0x0c, 0xfc, 0x43, 0x96, 0x7c, 0xd9, 0xf0, 0xd3, 0xbb, 0x6e, 0x0b, 0xd8, 0xd2, 0x9f, 0x48, 0xc8, - 0xc3, 0xb4, 0x0a, 0x4a, 0x9a, 0xf8, 0x8e, 0xb9, 0xd1, 0xfd, 0xa2, 0x84, 0x41, 0xc5, 0x12, 0x36, - 0x43, 0xfb, 0x78, 0xe9, 0x25, 0xff, 0x8a, 0x7e, 0x29, 0xd2, 0xa4, 0xfb, 0x81, 0xae, 0xb5, 0xf3, - 0xd7, 0x0c, 0xa0, 0x42, 0xd9, 0x4b, 0x48, 0x6c, 0xda, 0x76, 0x82, 0xc6, 0x4c, 0xfb, 0xf1, 0x92, - 0xbf, 0xe8, 0x0a, 0xc7, 0x82, 0x24, 0xbd, 0x4f, 0xfa, 0x86, 0xe4, 0xce, 0x17, 0xef, 0x26, 0x3e, - 0x6f, 0xe7, 0x1e, 0x86, 0xc4, 0x0f, 0x51, 0xc3, 0x2f, 0xb2, 0x52, 0xe7, 0x49, 0xd2, 0x8f, 0x3c, - 0x00, 0xc1, 0x40, 0xbe, 0x2f, 0x16, 0x00, 0x71, 0x97, 0xf2, 0x62, 0x0b, 0x16, 0x6e, 0xbd, 0x00, - 0x44, 0xfc, 0x28, 0x66, 0x1f, 0x09, 0xfe, 0xb2, 0x0a, 0x3c, 0x4d, 0x9a, 0x36, 0x46, 0x8e, 0x8b, - 0xd5, 0x07, 0x64, 0x02, 0xcb, 0x64, 0x83, 0x48, 0xe2, 0x7f, 0x0a, 0xee, 0x57, 0x6f, 0xc4, 0x14, - 0xca, 0x83, 0xff, 0x14, 0xff, 0x2b, 0x54, 0xa3, 0x30, 0x79, 0xb2, 0x71, 0x61, 0x0f, 0x16, 0xe9, - 0x5a, 0xca, 0xc4, 0x2d, 0xec, 0x5f, 0x86, 0x11, 0x73, 0xb4, 0x5c, 0xfc, 0xea, 0x76, 0x4f, 0x48, - 0xd3, 0xf8, 0xe2, 0x64, 0x8d, 0x0f, 0x71, 0x17, 0x48, 0x10, 0x80, 0x41, 0x60, 0x02, 0x87, 0xaa, - 0x27, 0xc4, 0xb4, 0x8f, 0x63, 0x12, 0x2f, 0x67, 0xf3, 0xae, 0x84, 0xab, 0x47, 0x46, 0xd7, 0xbf, - 0x7c, 0x4f, 0xed, 0x26, 0xc3, 0x57, 0x7c, 0xf0, 0xc5, 0x58, 0x04, 0x38, 0x7f, 0xe9, 0x6d, 0x70, - 0x82, 0x36, 0x48, 0x43, 0x79, 0x86, 0xf1, 0xd7, 0x8e, 0x77, 0xda, 0xcf, 0xd5, 0x01, 0xaa, 0x02, - 0x5d, 0xf0, 0x6b, 0xd9, 0xba, 0x2f, 0x67, 0x30, 0x72, 0x12, 0x18, 0xb3, 0x4e, 0x59, 0x34, 0x2c, - 0x53, 0xe9, 0xbc, 0x70, 0xf3, 0x31, 0x5c, 0x16, 0x48, 0x99, 0xf4, 0x8e, 0x62, 0xbb, 0xc1, 0xdf, - 0x01, 0xe7, 0x78, 0xf0, 0x18, 0xbf, 0xb0, 0x25, 0x59, 0xab, 0x3b, 0x9e, 0x64, 0x55, 0x24, 0x55, - 0x32, 0x24, 0x0b, 0x34, 0xb3, 0xda, 0x82, 0xec, 0xd6, 0x92, 0x49, 0xab, 0xce, 0x05, 0xe1, 0x60, - 0x44, 0x78, 0x06, 0x1a, 0xfb, 0x37, 0x5e, 0x2e, 0x20, 0xb1, 0xa8, 0x70, 0x49, 0xad, 0xe3, 0x65, - 0x36, 0x92, 0x51, 0xc7, 0x9b, 0x6a, 0xe8, 0x25, 0x20, 0x02, 0xde, 0x52, 0x62, 0xa1, 0xbc, 0x4e, - 0x2a, 0x88, 0x9b, 0x1b, 0x7c, 0xa7, 0xe8, 0x5d, 0x63, 0x98, 0xc0, 0x28, 0x90, 0xc5, 0x34, 0x63, - 0x31, 0x2d, 0xb8, 0x4f, 0x84, 0xd0, 0x86, 0x36, 0xb2, 0x6e, 0x88, 0x20, 0x3b, 0xa5, 0x6e, 0x33, - 0xb5, 0x12, 0x78, 0xd9, 0x22, 0x7a, 0x4d, 0xe1, 0x42, 0x56, 0x70, 0x31, 0xf1, 0x86, 0xcc, 0xc2, - 0xe6, 0xe2, 0xb3, 0xfa, 0xd8, 0x6a, 0x7c, 0x56, 0x3b, 0x39, 0xff, 0x02, 0x23, 0x51, 0xb7, 0x80, - 0xc6, 0x21, 0x02, 0x90, 0x8c, 0x47, 0x4d, 0x4a, 0x02, 0x3c, 0xa5, 0x4e, 0x63, 0xde, 0xdd, 0x6b, - 0x06, 0x15, 0xbc, 0x61, 0x50, 0xc5, 0x3f, 0xc6, 0x3c, 0x89, 0x77, 0x1d, 0xce, 0xff, 0x05, 0x6c, - 0xed, 0x9e, 0x07, 0x0e, 0xc2, 0xe8, 0xaa, 0x42, 0xf4, 0x7a, 0x44, 0xbc, 0xd5, 0x1a, 0x9d, 0x57, - 0x12, 0x5e, 0xa5, 0xf3, 0x6c, 0xa8, 0xf4, 0x0e, 0x87, 0xda, 0xaf, 0x30, 0xb3, 0x2d, 0x4e, 0x50, - 0x7a, 0xe6, 0x18, 0xe4, 0x33, 0x2e, 0xcb, 0x92, 0x12, 0x3a, 0x7c, 0x1c, 0x99, 0x89, 0x4c, 0xaf, - 0xc2, 0x2d, 0x40, 0x7a, 0x77, 0xb9, 0xeb, 0xb4, 0xa3, 0x9b, 0x6f, 0x68, 0x3a, 0xe1, 0xd1, 0x63, - 0xdc, 0x1d, 0xe3, 0xe2, 0x06, 0x69, 0x1e, 0xa8, 0x56, 0xe8, 0x42, 0x52, 0xd0, 0x55, 0xf4, 0x6d, - 0x6e, 0xe8, 0x4d, 0x66, 0x47, 0xfd, 0x35, 0xd3, 0xe7, 0xf4, 0x56, 0xc5, 0xa4, 0xbf, 0x59, 0xe7, - 0x9a, 0x5c, 0x6e, 0xaa, 0xb0, 0xf2, 0x8b, 0xbc, 0xf1, 0x3b, 0x49, 0x91, 0xcd, 0x3d, 0x5a, 0x95, - 0x73, 0x87, 0x20, 0x82, 0xa8, 0x74, 0xe0, 0x33, 0x99, 0x8b, 0xe1, 0x4d, 0x3b, 0x5a, 0x38, 0x6c, - 0xd2, 0x2e, 0xfb, 0xd4, 0x6f, 0xa8, 0x5e, 0xf0, 0xa1, 0x5f, 0x76, 0xf0, 0x3a, 0xb4, 0xa7, 0xe1, - 0xee, 0xdc, 0x83, 0x79, 0xed, 0x5b, 0x75, 0xfe, 0x70, 0xb4, 0x11, 0x49, 0x9c, 0xf3, 0x6e, 0x04, - 0x12, 0x71, 0xa3, 0x8f, 0x72, 0x55, 0x16, 0x4c, 0x94, 0xab, 0xba, 0xf3, 0x7b, 0xaf, 0x75, 0x99, - 0xcf, 0x89, 0x5e, 0x88, 0x11, 0xfb, 0xc9, 0x87, 0x32, 0x37, 0x5a, 0x5e, 0x7e, 0xc1, 0xcd, 0x2f, - 0x44, 0xf2, 0xf3, 0x6e, 0x7e, 0xd1, 0xcd, 0x2f, 0x86, 0xf3, 0x9b, 0x5e, 0x7e, 0x96, 0xe5, 0x97, - 0xf9, 0xc6, 0xe9, 0xae, 0x82, 0xcb, 0x82, 0xe2, 0x36, 0xdf, 0x03, 0x3d, 0x74, 0xe0, 0x57, 0xc4, - 0xdb, 0x7e, 0xe8, 0x99, 0x3d, 0x4c, 0xdf, 0x06, 0xdd, 0xce, 0xac, 0xb2, 0xe7, 0xc5, 0x45, 0x9d, - 0xdd, 0x61, 0x4f, 0xaf, 0xb9, 0x65, 0x32, 0x07, 0xb8, 0x4f, 0xc7, 0x3f, 0xa0, 0xd1, 0xa1, 0x10, - 0x01, 0xad, 0x13, 0x4b, 0x24, 0x7d, 0xb3, 0x14, 0x03, 0xd2, 0xdc, 0xc4, 0x3f, 0xd0, 0x59, 0x3d, - 0x30, 0x49, 0x00, 0xa9, 0xb0, 0x44, 0x57, 0x1c, 0xac, 0xd8, 0x08, 0xc2, 0xfd, 0xee, 0x5c, 0x79, - 0x5d, 0xa1, 0x97, 0x3a, 0xd1, 0x4d, 0x06, 0xdc, 0x6c, 0xe1, 0x77, 0x84, 0xac, 0xa1, 0x73, 0xd3, - 0xd7, 0x12, 0xdf, 0x60, 0xba, 0x42, 0x27, 0xe7, 0xdf, 0xe8, 0x77, 0xae, 0x92, 0x35, 0x31, 0x1c, - 0x6f, 0x45, 0x8f, 0xd1, 0x7a, 0x71, 0x85, 0xbf, 0xe2, 0x8e, 0x7f, 0xfa, 0x87, 0x97, 0x28, 0x98, - 0xd0, 0x07, 0xa7, 0xdd, 0x0f, 0xc4, 0xbb, 0x47, 0xb7, 0xbf, 0xd1, 0x3b, 0xcd, 0x33, 0x19, 0xaf, - 0x41, 0x1a, 0xb3, 0xca, 0xb1, 0x67, 0xdb, 0xe3, 0x40, 0x36, 0x24, 0x4a, 0xd2, 0x3d, 0xee, 0x82, - 0xe5, 0xc7, 0x6a, 0xf7, 0x7b, 0x2e, 0x2f, 0x6f, 0x66, 0xf3, 0x32, 0x76, 0x86, 0x70, 0xa7, 0x9e, - 0xa4, 0x5f, 0x50, 0x83, 0xb2, 0x61, 0x36, 0xb7, 0xe9, 0x76, 0x18, 0xaa, 0x62, 0x3c, 0x82, 0xca, - 0xec, 0x28, 0x5a, 0x7d, 0x5b, 0x3c, 0xcf, 0x34, 0xc4, 0x2a, 0x7d, 0x9e, 0xd3, 0x9e, 0x81, 0x42, - 0x95, 0x4a, 0xcd, 0x09, 0x46, 0xc3, 0x7f, 0x97, 0xb7, 0x6d, 0xd0, 0x05, 0x43, 0xdf, 0xcf, 0xc0, - 0x13, 0xb4, 0xb0, 0x2a, 0xa1, 0xe7, 0xae, 0x9b, 0x16, 0xab, 0x32, 0x0d, 0xc4, 0x4b, 0x60, 0xb1, - 0x73, 0x43, 0x30, 0xf0, 0xa4, 0x6f, 0xf0, 0x11, 0x05, 0xa1, 0x87, 0xf2, 0x2c, 0x8d, 0x8a, 0x38, - 0x1a, 0x75, 0x5e, 0x18, 0xb2, 0xc0, 0x85, 0x64, 0x36, 0x59, 0x24, 0xa9, 0x5f, 0xa7, 0x8a, 0x81, - 0x99, 0x74, 0x30, 0xe7, 0xb4, 0xa0, 0x4e, 0x8f, 0xd4, 0x44, 0xa2, 0x30, 0xf5, 0x90, 0xca, 0x64, - 0x87, 0x4f, 0xfc, 0xb9, 0x9f, 0x50, 0x88, 0x3d, 0xea, 0xc7, 0x3e, 0x38, 0xf1, 0xa9, 0x93, 0x7e, - 0xfe, 0x81, 0xf2, 0x91, 0xd6, 0xa5, 0x17, 0xe5, 0x23, 0x6c, 0x01, 0x81, 0x0b, 0xa8, 0x50, 0xb0, - 0xbb, 0x3d, 0x62, 0x8f, 0x00, 0xc6, 0x7d, 0x3a, 0x47, 0x0a, 0x4f, 0x0e, 0x4f, 0x5d, 0x93, 0xc8, - 0x07, 0xa7, 0x1d, 0x17, 0x2e, 0xa7, 0xa1, 0xfe, 0x19, 0xa6, 0x4c, 0xb0, 0xbb, 0x9d, 0x88, 0xab, - 0x2a, 0xd4, 0x82, 0xab, 0xb5, 0x90, 0xa0, 0xd8, 0xce, 0x67, 0xc3, 0x50, 0xf1, 0x3c, 0x19, 0xce, - 0x4b, 0x30, 0x7c, 0x96, 0x5e, 0x1c, 0xec, 0xd0, 0xa0, 0x56, 0xef, 0x2a, 0x99, 0x3b, 0x14, 0xbb, - 0xf4, 0xf2, 0xd7, 0xbe, 0x98, 0xf4, 0xa6, 0x39, 0x49, 0x0f, 0x14, 0xbb, 0xe1, 0x38, 0x96, 0x0a, - 0x3c, 0x08, 0xb9, 0x43, 0x65, 0x2a, 0x26, 0x41, 0x54, 0x28, 0x5e, 0x12, 0x3d, 0x9f, 0xc1, 0x3c, - 0x06, 0x55, 0x58, 0xcf, 0xbd, 0x9b, 0x41, 0xf8, 0x08, 0x5e, 0x9a, 0x99, 0x81, 0xf9, 0xa6, 0x7f, - 0xa7, 0x17, 0x52, 0xc0, 0x2c, 0xcb, 0x31, 0xd5, 0x45, 0xab, 0x2f, 0xdc, 0x1a, 0x5c, 0x61, 0x97, - 0x06, 0xb3, 0xad, 0xe9, 0x76, 0x3f, 0x49, 0xd9, 0xe5, 0x5f, 0x5e, 0x42, 0x67, 0xa3, 0xe4, 0xa6, - 0x24, 0x7f, 0xd5, 0x96, 0x5d, 0x50, 0xa7, 0xcd, 0x99, 0x63, 0x2c, 0x44, 0xb6, 0x65, 0x14, 0xf4, - 0x6f, 0x94, 0x63, 0x5f, 0x84, 0x64, 0x84, 0x53, 0x5c, 0x13, 0xce, 0x57, 0xe0, 0x3d, 0x97, 0x48, - 0x70, 0x01, 0x2b, 0x77, 0xdb, 0x10, 0xbd, 0x40, 0x35, 0xcd, 0x3e, 0x99, 0xf2, 0x77, 0x9b, 0x8c, - 0xbb, 0xfa, 0x87, 0xfb, 0x64, 0xa5, 0x7b, 0xa9, 0x4d, 0x84, 0x71, 0xd0, 0xcb, 0xc7, 0xdd, 0x9a, - 0xc7, 0x7c, 0x57, 0x04, 0xdd, 0x5b, 0x1e, 0xff, 0x44, 0xee, 0x73, 0x89, 0x94, 0x72, 0x7b, 0x05, - 0x16, 0x75, 0x6c, 0x89, 0xc0, 0x01, 0xb6, 0xb8, 0xf3, 0xe6, 0x54, 0xe9, 0x2d, 0x30, 0xf6, 0x86, - 0xe7, 0xdb, 0x0c, 0x81, 0x7e, 0xfc, 0x85, 0xaa, 0x62, 0x08, 0x16, 0x26, 0xa9, 0xf5, 0x08, 0x02, - 0xa0, 0x8d, 0x45, 0x1a, 0x04, 0xad, 0x94, 0x4f, 0x31, 0x7a, 0x90, 0xd4, 0x61, 0xea, 0xdf, 0xf0, - 0xa5, 0xf5, 0x78, 0x08, 0xf3, 0xbc, 0x1b, 0xbc, 0xee, 0xb2, 0x9b, 0x1e, 0x55, 0xfb, 0x0c, 0x17, - 0x0c, 0x67, 0xab, 0x4e, 0xe3, 0x44, 0x93, 0x28, 0xbc, 0x34, 0xf7, 0x20, 0xbd, 0x2c, 0x69, 0x69, - 0xf6, 0x4d, 0x07, 0xf8, 0x55, 0x75, 0xbc, 0x33, 0x9a, 0x8d, 0x2e, 0xcb, 0xce, 0x82, 0xa9, 0x8c, - 0xd9, 0xf4, 0x97, 0x65, 0xab, 0xf4, 0x81, 0x45, 0x9c, 0xaa, 0x34, 0xd3, 0x73, 0xff, 0x6d, 0x64, - 0x25, 0x23, 0xc8, 0x4c, 0xd1, 0x37, 0x2e, 0x5b, 0xea, 0xac, 0xaf, 0x77, 0x96, 0x78, 0x32, 0xbb, - 0xeb, 0xeb, 0xdd, 0x25, 0x59, 0xa0, 0x71, 0x5a, 0x4b, 0x5d, 0x51, 0x4c, 0x23, 0x8e, 0x00, 0x8e, - 0x78, 0x1a, 0x23, 0xb0, 0x23, 0xb9, 0x11, 0xf0, 0x5c, 0xcb, 0x74, 0xe4, 0x38, 0x55, 0x59, 0xf3, - 0xf8, 0x81, 0xd3, 0x91, 0x95, 0xa5, 0x1c, 0xa0, 0x02, 0x07, 0xd4, 0xf4, 0x7f, 0xd7, 0x8d, 0x0d, - 0x95, 0x02, 0x32, 0x43, 0x03, 0x87, 0xdb, 0x2b, 0xcc, 0x2a, 0x06, 0x16, 0xc1, 0xfd, 0x1c, 0x28, - 0x86, 0x5e, 0x4b, 0x73, 0x7d, 0xdd, 0x5c, 0xde, 0x59, 0xee, 0x7a, 0x4f, 0xdf, 0xd7, 0x10, 0x36, - 0xe0, 0x7e, 0x51, 0x03, 0xee, 0x07, 0xa7, 0xc5, 0x06, 0x9f, 0xea, 0x98, 0x8b, 0x3f, 0x59, 0x93, - 0x0e, 0x53, 0x1a, 0xec, 0x25, 0xe6, 0x1f, 0x5d, 0x7b, 0xdd, 0xc5, 0xe6, 0x86, 0x4c, 0x1d, 0x49, - 0x0f, 0xa1, 0x4e, 0x83, 0x31, 0x01, 0x90, 0x4e, 0xaf, 0xdd, 0xf4, 0xfd, 0x5d, 0xff, 0xef, 0xff, - 0xf1, 0x7f, 0xa1, 0xbb, 0x6b, 0x5b, 0x5f, 0x8a, 0x7e, 0x55, 0x5f, 0x76, 0x54, 0x8a, 0x39, 0x14, - 0x4d, 0x3c, 0x2a, 0xbc, 0xc2, 0xd3, 0xed, 0x21, 0xe0, 0x98, 0xbf, 0x42, 0xde, 0x73, 0x2a, 0xce, - 0x4c, 0x50, 0xb4, 0xd9, 0x79, 0xe1, 0x24, 0x75, 0xc7, 0xe9, 0x5b, 0xd9, 0x6d, 0xb3, 0x8e, 0xf7, - 0x21, 0x81, 0x12, 0x67, 0x8b, 0x55, 0x8c, 0xf8, 0x43, 0xf8, 0x75, 0x31, 0x4b, 0x83, 0x2f, 0x60, - 0x76, 0xc2, 0x52, 0xf2, 0x25, 0xd4, 0xb3, 0xbe, 0x05, 0x90, 0x99, 0x64, 0xef, 0xc7, 0x4f, 0x79, - 0x5a, 0xc2, 0x63, 0x83, 0xd1, 0x12, 0xc1, 0x61, 0x76, 0xfc, 0x32, 0xe8, 0x02, 0xc3, 0x03, 0x00, - 0xfd, 0xba, 0x7b, 0x9a, 0xab, 0xc7, 0xc4, 0x7f, 0x87, 0xc0, 0x8a, 0xa6, 0x67, 0x12, 0xfd, 0xd4, - 0x08, 0xac, 0x54, 0xf7, 0xf2, 0xff, 0x1e, 0xdd, 0x23, 0xd8, 0xca, 0xfe, 0xfe, 0x3d, 0xda, 0x92, - 0xf1, 0xd9, 0x04, 0x05, 0x42, 0x00, 0xf3, 0xa1, 0x37, 0x17, 0xc6, 0xaa, 0xe5, 0x8c, 0x14, 0x2d, - 0x09, 0xb6, 0x13, 0xf5, 0xe7, 0x7b, 0x73, 0x99, 0x95, 0x12, 0x85, 0x1f, 0x78, 0xf2, 0xd3, 0xfc, - 0x19, 0xa1, 0x14, 0xf0, 0x61, 0xe8, 0xe6, 0x20, 0x33, 0x2a, 0x21, 0xf1, 0xec, 0x27, 0x53, 0x20, - 0x6b, 0xc4, 0xbb, 0xf2, 0x0d, 0x4f, 0x89, 0x8a, 0xc9, 0xb0, 0xef, 0x88, 0x24, 0x63, 0xef, 0xd3, - 0xf2, 0xe2, 0x1a, 0x93, 0x5c, 0x6d, 0x3c, 0xd6, 0xfe, 0xa7, 0xb5, 0x61, 0xbc, 0x42, 0xdf, 0x8b, - 0xc1, 0x73, 0xf9, 0xe1, 0x7b, 0x97, 0x42, 0xd9, 0x73, 0xe3, 0x17, 0xbd, 0x61, 0xd2, 0x89, 0x32, - 0x4b, 0x00, 0x52, 0x4a, 0x2c, 0xab, 0xfb, 0xaa, 0xb5, 0x7f, 0xd1, 0x1b, 0x20, 0x97, 0x57, 0x9e, - 0x47, 0xc9, 0x84, 0x37, 0x0e, 0xcc, 0xb8, 0x33, 0x95, 0x97, 0xc6, 0x84, 0x58, 0x9e, 0xd3, 0x1b, - 0xd7, 0xaa, 0x3a, 0x7e, 0x9c, 0x67, 0xdb, 0xbb, 0xda, 0x0e, 0xaf, 0xda, 0xe2, 0x4f, 0x60, 0x6a, - 0xa1, 0xa2, 0xba, 0xd6, 0x58, 0x56, 0xb2, 0xf5, 0xa6, 0x77, 0x42, 0x65, 0xbd, 0xef, 0xf8, 0x84, - 0x2a, 0x30, 0x9c, 0x5a, 0xfe, 0xbc, 0xf6, 0x2f, 0x46, 0x68, 0x05, 0x1f, 0xe2, 0x41, 0xef, 0x4a, - 0x82, 0xfb, 0x30, 0xcf, 0xe2, 0x5e, 0x97, 0xbb, 0x7e, 0xee, 0x58, 0x2a, 0xee, 0x12, 0x2d, 0xc9, - 0x6d, 0x99, 0x04, 0x09, 0xb2, 0x34, 0xff, 0xc8, 0xfb, 0x16, 0xfd, 0x8a, 0x32, 0xcd, 0xec, 0xaa, - 0xcc, 0xdc, 0xaa, 0xcc, 0x3c, 0x66, 0x7a, 0xdf, 0x36, 0x48, 0x2c, 0x29, 0x75, 0xbd, 0x02, 0xc2, - 0xc1, 0x8a, 0xbc, 0x1d, 0x7a, 0xd5, 0x40, 0xf0, 0xc1, 0x84, 0x25, 0xc5, 0xee, 0xc5, 0x24, 0xff, - 0x01, 0x03, 0xee, 0xde, 0x78, 0xe6, 0x4b, 0x9c, 0xe0, 0xa1, 0x93, 0x85, 0xfd, 0x2b, 0x0f, 0x6c, - 0x74, 0xf7, 0x8a, 0x55, 0x69, 0x2b, 0x5a, 0x5c, 0x8d, 0x66, 0xf3, 0x26, 0xb6, 0xfc, 0x80, 0x4c, - 0x27, 0x0b, 0xe5, 0x09, 0xde, 0xc9, 0x1f, 0x5b, 0x9c, 0x7d, 0x26, 0x28, 0xae, 0x01, 0x4a, 0x47, - 0x50, 0xbc, 0x68, 0x81, 0xf8, 0xa6, 0x96, 0xf5, 0x86, 0x7d, 0x5e, 0x62, 0x65, 0x5d, 0xfb, 0xbf, - 0x50, 0x77, 0xbc, 0xa2, 0x6e, 0x6c, 0x85, 0x97, 0xd5, 0x8d, 0xad, 0xa0, 0xa6, 0xd5, 0x6f, 0xaf, - 0xac, 0x4b, 0xf0, 0x7b, 0x00, 0xb1, 0x35, 0x5f, 0x3b, 0xf6, 0xc6, 0x64, 0x45, 0x3d, 0xfa, 0x39, - 0xa6, 0x68, 0x4d, 0xee, 0x90, 0xbd, 0xfb, 0x48, 0xef, 0xa2, 0xb4, 0xec, 0xc4, 0x82, 0xbe, 0x1a, - 0x9d, 0xbf, 0xa1, 0xdb, 0xe7, 0x02, 0xa7, 0xb5, 0xb4, 0xb8, 0x70, 0xff, 0x62, 0xd7, 0x89, 0x32, - 0x67, 0x90, 0xe7, 0xa2, 0xfe, 0xf9, 0xc3, 0xf7, 0x14, 0x11, 0xb6, 0xf6, 0xdb, 0x74, 0xc9, 0xe6, - 0xb7, 0xc9, 0x99, 0xfb, 0x70, 0x51, 0x0f, 0xe0, 0x84, 0x33, 0x7e, 0xf3, 0x67, 0xa5, 0xf8, 0x96, - 0x9c, 0x0f, 0x95, 0x10, 0xd6, 0x3e, 0x0a, 0xdd, 0xcf, 0x95, 0x5c, 0x2e, 0x9b, 0x39, 0x75, 0x3a, - 0xea, 0xf0, 0xc4, 0xd3, 0xca, 0xa8, 0x4a, 0x91, 0xef, 0xa5, 0xa4, 0x16, 0xb6, 0x19, 0x22, 0x3a, - 0x1f, 0xd9, 0xca, 0xad, 0xaf, 0xd3, 0xfb, 0x3b, 0x96, 0x16, 0x29, 0xd2, 0xbd, 0x2b, 0x74, 0xe3, - 0xae, 0xd6, 0x3d, 0x85, 0xd0, 0x69, 0x48, 0x2d, 0x29, 0x66, 0xa9, 0xc7, 0xc8, 0x73, 0x9b, 0x62, - 0x49, 0x64, 0x8d, 0x0f, 0xb6, 0x47, 0x17, 0x45, 0x3a, 0x7f, 0x61, 0x9c, 0xa7, 0xeb, 0x49, 0x68, - 0xea, 0xae, 0x18, 0xf8, 0xde, 0x94, 0x1f, 0xf3, 0xa8, 0xe2, 0x87, 0x37, 0x19, 0x38, 0x0b, 0x83, - 0x6f, 0x2f, 0x80, 0x0c, 0x0d, 0xbe, 0xcb, 0x31, 0xab, 0x46, 0xdf, 0xbb, 0x95, 0x94, 0x7d, 0xfb, - 0x91, 0xdd, 0x39, 0xe4, 0x9f, 0x5c, 0xff, 0x1b, 0xda, 0xa9, 0x9e, 0x9c, 0xe9, 0x2b, 0x16, 0x76, - 0xbc, 0xc1, 0x82, 0x6e, 0x22, 0x5f, 0x2a, 0x16, 0xf4, 0xda, 0xc1, 0x99, 0x14, 0x40, 0xf1, 0xec, - 0x66, 0x12, 0xb3, 0x2f, 0xc2, 0x6f, 0x87, 0x30, 0x9f, 0xbf, 0x3b, 0x66, 0xd4, 0x42, 0x0c, 0xc6, - 0xcc, 0x30, 0x9d, 0xf0, 0x05, 0x30, 0xfc, 0x27, 0x88, 0x20, 0x93, 0xdb, 0x6c, 0xad, 0x11, 0x6e, - 0x27, 0x84, 0xee, 0x6c, 0x82, 0xc2, 0xe7, 0x7e, 0x26, 0xef, 0xf7, 0xef, 0xac, 0xff, 0x0c, 0x19, - 0x5f, 0x70, 0x4b, 0x14, 0x6f, 0xc4, 0xcd, 0xff, 0x0c, 0x94, 0x66, 0x99, 0xee, 0x10, 0xff, 0xfe, - 0xcd, 0x82, 0x34, 0x30, 0x8f, 0xfd, 0x0d, 0x4a, 0xc0, 0xfa, 0xb8, 0x55, 0x97, 0xa3, 0xa9, 0x59, - 0xaa, 0x6a, 0x2f, 0x61, 0xab, 0x2a, 0x59, 0x7e, 0x19, 0x82, 0x6b, 0xfa, 0xeb, 0x9f, 0x53, 0xfc, - 0xd5, 0x7a, 0x24, 0x66, 0x67, 0xf1, 0x1e, 0xe3, 0xae, 0x3a, 0xfe, 0x11, 0x3d, 0xa8, 0xe5, 0xdd, - 0x64, 0xcc, 0x11, 0x59, 0x4d, 0x2a, 0x8b, 0xa6, 0xc2, 0x72, 0x3c, 0xab, 0x4b, 0xba, 0x56, 0xfb, - 0x13, 0x8c, 0xbc, 0xc3, 0x4a, 0x1f, 0xa2, 0xf3, 0x7f, 0xfe, 0xdf, 0x88, 0xce, 0xfa, 0x7a, 0x28, - 0xed, 0xff, 0xf9, 0x9b, 0x24, 0xe6, 0x94, 0x47, 0x77, 0x85, 0xb8, 0xc6, 0xcb, 0xf9, 0x98, 0x6f, - 0x98, 0x2d, 0x40, 0xf4, 0xb3, 0xa2, 0x8b, 0x77, 0x91, 0x78, 0x57, 0x86, 0xd0, 0x70, 0x0f, 0x50, - 0x30, 0x50, 0x6e, 0xb8, 0xe7, 0x57, 0x00, 0x13, 0x91, 0x16, 0x44, 0x77, 0xda, 0x63, 0x42, 0x36, - 0xa7, 0x49, 0x7a, 0xe4, 0xdf, 0x4f, 0xc1, 0x4f, 0x9a, 0x26, 0x45, 0x7f, 0x46, 0x6b, 0xaa, 0xb9, - 0x4d, 0xff, 0xe2, 0x1d, 0xb1, 0xfe, 0x2e, 0x3f, 0x46, 0x16, 0xd9, 0x60, 0x2c, 0xe0, 0x59, 0x10, - 0x41, 0x4c, 0xd9, 0x6e, 0x10, 0x8e, 0x16, 0x3e, 0xe0, 0xfd, 0x8b, 0x7d, 0x14, 0x96, 0x7e, 0x5b, - 0x93, 0xa8, 0xf4, 0xe6, 0x41, 0xc4, 0x02, 0x2f, 0x73, 0x4c, 0x6b, 0xc3, 0x39, 0xdd, 0x21, 0xc1, - 0xad, 0x01, 0xd7, 0x31, 0x19, 0x7c, 0x2d, 0x73, 0x51, 0x43, 0x61, 0xfd, 0xa1, 0x9d, 0x89, 0x2c, - 0x8b, 0xdc, 0x05, 0x99, 0x43, 0xf3, 0x92, 0x11, 0x87, 0xce, 0x42, 0x14, 0xca, 0xba, 0x77, 0x4d, - 0x9f, 0x7f, 0xfd, 0x56, 0x8d, 0x8d, 0x1d, 0x74, 0x8d, 0xe6, 0x87, 0x8f, 0xad, 0x80, 0x7d, 0xea, - 0xc4, 0x24, 0xd7, 0xa6, 0x75, 0x7b, 0xab, 0xb0, 0xb9, 0xbe, 0x6e, 0x7f, 0x2f, 0x96, 0x7f, 0xff, - 0xb6, 0xb7, 0x4a, 0x05, 0x7c, 0xae, 0x64, 0xf1, 0xb9, 0x52, 0xc2, 0xe7, 0x6c, 0x2e, 0x8f, 0x2f, - 0xb9, 0x62, 0x71, 0x5b, 0xac, 0x03, 0x6a, 0x5b, 0xa2, 0xf4, 0x56, 0xd7, 0x69, 0x25, 0x9d, 0x56, - 0xd2, 0x69, 0x25, 0x9d, 0x56, 0xd2, 0x69, 0x25, 0x9d, 0x55, 0xd2, 0xf9, 0x4a, 0xee, 0xe5, 0xa3, - 0x89, 0x04, 0xc5, 0xce, 0xbb, 0xe8, 0x74, 0x5b, 0xfc, 0x2e, 0x56, 0xa7, 0xc9, 0x94, 0xdb, 0xa5, - 0x88, 0x4b, 0x9f, 0x6e, 0x54, 0x86, 0xcb, 0xbe, 0x25, 0x53, 0xac, 0x1f, 0xec, 0xfa, 0x41, 0x59, - 0x9a, 0xe9, 0x2c, 0x0a, 0x03, 0xbf, 0xc3, 0xc8, 0x2d, 0x16, 0x43, 0xe5, 0x85, 0xdc, 0xb7, 0x12, - 0x94, 0x60, 0x13, 0xfb, 0xf7, 0x6f, 0x7f, 0x1f, 0xfc, 0xff, 0x2b, 0xee, 0x4a, 0x9b, 0xdb, 0x36, - 0xd2, 0xf4, 0xf7, 0xfd, 0x15, 0x14, 0x92, 0x58, 0x44, 0x04, 0xc9, 0x20, 0x65, 0x65, 0x3c, 0xa0, - 0x20, 0x96, 0xe3, 0x63, 0x47, 0x35, 0x8e, 0xa3, 0x8d, 0x3c, 0xc9, 0xb8, 0x54, 0xaa, 0x15, 0x49, - 0x35, 0x25, 0x94, 0x21, 0x80, 0x01, 0xa0, 0xc3, 0xa1, 0xf8, 0xdf, 0xf7, 0x3d, 0xfa, 0x04, 0xc0, - 0x43, 0xf1, 0xcc, 0x6c, 0x55, 0x62, 0x11, 0x8d, 0xee, 0x46, 0xdf, 0xdd, 0xef, 0xd1, 0xcf, 0x73, - 0x5f, 0x1e, 0x86, 0xb6, 0x66, 0x54, 0x20, 0xac, 0xe7, 0x50, 0x6b, 0x83, 0xef, 0x11, 0x06, 0xa6, - 0x10, 0x74, 0x53, 0xa2, 0x4b, 0x30, 0xff, 0x5e, 0xe0, 0xdd, 0x13, 0x34, 0xf0, 0x3d, 0x12, 0x7f, - 0x78, 0x3b, 0x35, 0x6a, 0x05, 0x43, 0x2d, 0x40, 0x89, 0x07, 0xf0, 0x35, 0x62, 0xe7, 0xf8, 0x4d, - 0x8c, 0x4f, 0xa1, 0x2f, 0x05, 0x91, 0xd4, 0xed, 0x8d, 0x93, 0x6c, 0x54, 0x7c, 0xf9, 0x48, 0x16, - 0x2a, 0xc2, 0xaa, 0x1f, 0xdf, 0xc2, 0xfa, 0x5c, 0x78, 0xc1, 0x7d, 0xb9, 0x87, 0xb8, 0x03, 0x65, - 0x89, 0x4a, 0x47, 0xd4, 0xf4, 0x62, 0x07, 0x4b, 0xde, 0x32, 0xad, 0xfb, 0x86, 0xc9, 0x48, 0x86, - 0xd5, 0x1f, 0x29, 0x91, 0xe6, 0xb5, 0xb0, 0xc0, 0xc2, 0x38, 0x81, 0xcf, 0x36, 0x62, 0x42, 0x57, - 0xf0, 0xe7, 0x0e, 0x16, 0xb4, 0x05, 0x02, 0xe7, 0x07, 0xd6, 0x03, 0xf3, 0x6e, 0x58, 0xbc, 0xa3, - 0x8a, 0x59, 0x24, 0xa8, 0x6b, 0xab, 0x15, 0x84, 0xfb, 0xa6, 0x30, 0xdf, 0xa9, 0x9e, 0x6a, 0xb0, - 0xee, 0x23, 0xce, 0x40, 0x39, 0xec, 0x1a, 0x28, 0x24, 0x98, 0x57, 0x4c, 0xca, 0xfa, 0xec, 0x99, - 0x03, 0xfd, 0x52, 0xfa, 0x7e, 0x64, 0x61, 0x13, 0xa8, 0xa3, 0x17, 0x41, 0x6f, 0x0e, 0xe5, 0xdf, - 0xa8, 0x1a, 0x38, 0xab, 0x46, 0x19, 0x64, 0x08, 0x56, 0x3f, 0xba, 0x3c, 0x25, 0x7c, 0xa1, 0x0c, - 0x96, 0x97, 0x05, 0x37, 0x2c, 0xd1, 0x42, 0x53, 0xb3, 0x3e, 0x19, 0xa2, 0x9c, 0x69, 0x4a, 0x77, - 0x76, 0x0e, 0x0f, 0x1c, 0x64, 0x48, 0x1e, 0x57, 0x41, 0xef, 0x00, 0x75, 0xf7, 0xf7, 0x4c, 0x5b, - 0x22, 0x3f, 0x86, 0x08, 0xed, 0xf4, 0x2d, 0x45, 0x70, 0x5a, 0x88, 0xdf, 0xcb, 0xf7, 0xe2, 0x6a, - 0x94, 0xc6, 0xc8, 0x11, 0x6a, 0x39, 0x29, 0xa8, 0x92, 0x2a, 0x0c, 0x75, 0x9a, 0xd4, 0x72, 0x50, - 0xb2, 0x3d, 0x5d, 0xec, 0x95, 0xb7, 0x93, 0x09, 0x0c, 0x0b, 0x15, 0x1a, 0x0e, 0x88, 0xda, 0x16, - 0xbd, 0x94, 0x83, 0xba, 0x64, 0x2a, 0xd5, 0x90, 0x02, 0x6f, 0xd2, 0x13, 0xf3, 0xad, 0xd8, 0xcb, - 0x52, 0x8c, 0xc8, 0x34, 0xb5, 0xf4, 0x74, 0x79, 0x5b, 0x48, 0xb2, 0x5a, 0x7a, 0xac, 0x38, 0xea, - 0xbb, 0x11, 0xa2, 0xc6, 0x63, 0xc0, 0x14, 0x7e, 0x19, 0x46, 0x5c, 0xb1, 0x77, 0x7b, 0x39, 0xc3, - 0x0b, 0x70, 0xd9, 0x65, 0x8d, 0xa4, 0x16, 0x04, 0x94, 0x94, 0x96, 0xfc, 0x59, 0x19, 0xe1, 0x6f, - 0xe4, 0x94, 0x95, 0xeb, 0x33, 0x91, 0x5c, 0x73, 0xe1, 0xaa, 0x4a, 0x97, 0xaa, 0x2a, 0x9e, 0xf7, - 0xc2, 0xa0, 0x05, 0x8f, 0x42, 0x0e, 0x8e, 0x10, 0x56, 0xa6, 0x50, 0x12, 0x0e, 0x6a, 0x89, 0x30, - 0x36, 0x54, 0xbb, 0x9a, 0x4f, 0xb7, 0xe6, 0xf1, 0xd6, 0x35, 0x40, 0x14, 0xb6, 0xef, 0x1b, 0xb4, - 0x5d, 0x48, 0x5a, 0x2c, 0x7a, 0x7d, 0x56, 0x9d, 0x23, 0x7f, 0x8b, 0xb9, 0x67, 0x4a, 0x8b, 0x3b, - 0x2a, 0xeb, 0x7a, 0x8c, 0x28, 0x4c, 0x31, 0xe0, 0x64, 0x04, 0xc7, 0xa9, 0x43, 0x5e, 0xf9, 0x2b, - 0x5c, 0x2a, 0xfb, 0xf2, 0x84, 0xe4, 0x50, 0xc4, 0x91, 0xd2, 0x72, 0x72, 0x66, 0x65, 0x7c, 0x2e, - 0xcb, 0xfd, 0x18, 0x6f, 0x6d, 0x75, 0x7b, 0xcf, 0x52, 0x23, 0x29, 0x53, 0x48, 0x5f, 0x86, 0x40, - 0x4d, 0xe8, 0xf9, 0xc5, 0x33, 0x0d, 0x6f, 0xd1, 0x35, 0x1f, 0xaf, 0xf2, 0xd9, 0xae, 0xf5, 0x34, - 0x2a, 0x2a, 0xff, 0x7b, 0xf7, 0xf5, 0xa7, 0xa1, 0xfb, 0x58, 0x8b, 0xfe, 0x29, 0xea, 0xc1, 0x19, - 0x54, 0x36, 0x93, 0xfc, 0x7b, 0x38, 0x1a, 0x8e, 0x22, 0xf9, 0x5b, 0x5b, 0x32, 0x30, 0x51, 0x49, - 0x16, 0x1d, 0x54, 0xf4, 0xa1, 0x23, 0x5d, 0x5b, 0xfd, 0x46, 0x56, 0xc5, 0x1a, 0xf5, 0xaa, 0x55, - 0x4b, 0xd5, 0x6a, 0x81, 0x23, 0x78, 0xa4, 0x76, 0x24, 0xcb, 0x4a, 0xf6, 0x21, 0xef, 0xa8, 0x2e, - 0x97, 0x86, 0x31, 0xa3, 0x2c, 0x82, 0x47, 0x02, 0x78, 0xbe, 0xb2, 0xb6, 0xde, 0x36, 0x57, 0x9d, - 0x3d, 0x18, 0x3c, 0x30, 0x9c, 0xa0, 0xfb, 0xdf, 0x8e, 0xa4, 0x39, 0x6c, 0xc5, 0xc9, 0x42, 0xe1, - 0x26, 0xb5, 0x09, 0x3f, 0xc6, 0xc1, 0x25, 0x91, 0xdf, 0xdc, 0xed, 0x0d, 0xc4, 0x11, 0xba, 0xbb, - 0xec, 0xee, 0xfa, 0x89, 0xe3, 0x00, 0x12, 0x8f, 0x50, 0x83, 0x01, 0x41, 0x44, 0xc4, 0xe4, 0x38, - 0x80, 0x98, 0x57, 0xbd, 0xda, 0xab, 0xb1, 0x79, 0xd5, 0x3f, 0x0f, 0xba, 0x7a, 0x34, 0x3c, 0x6e, - 0x35, 0xc8, 0x27, 0x09, 0xb5, 0xc9, 0x4e, 0x7b, 0x6f, 0xd2, 0x22, 0x73, 0x93, 0x24, 0xf8, 0x4c, - 0x08, 0xb8, 0x9b, 0x5c, 0x9f, 0x35, 0x85, 0x08, 0xb2, 0x47, 0x2b, 0xd5, 0x2c, 0xa4, 0x99, 0x54, - 0x78, 0x2a, 0x83, 0x3f, 0x74, 0x06, 0xb6, 0xd5, 0x32, 0xaf, 0xf4, 0x2c, 0xa4, 0xf7, 0x7e, 0xd0, - 0xd4, 0x5a, 0xe9, 0xf7, 0xe5, 0x43, 0xd0, 0xae, 0xb3, 0xd2, 0x31, 0x12, 0x27, 0x06, 0x6a, 0xac, - 0x4c, 0xe6, 0xbd, 0x21, 0xfe, 0x13, 0x85, 0x41, 0x4d, 0x6d, 0x65, 0x62, 0xf4, 0x31, 0x46, 0xbf, - 0x16, 0x63, 0xdf, 0x8e, 0xb1, 0x8f, 0x31, 0xf6, 0x55, 0x0c, 0x92, 0xc1, 0x7e, 0xee, 0xd9, 0x3e, - 0xe0, 0x5b, 0xa3, 0xbd, 0xbc, 0x67, 0xbf, 0xed, 0xd7, 0xdf, 0xf6, 0xed, 0xb7, 0xfb, 0xf5, 0xb7, - 0xfb, 0x30, 0xe5, 0x89, 0xc3, 0x80, 0xe0, 0x05, 0xe5, 0x6f, 0xde, 0x4c, 0x73, 0xf4, 0x04, 0x54, - 0x3e, 0x19, 0xea, 0x05, 0x3b, 0x47, 0x84, 0x08, 0xf0, 0x62, 0xac, 0xbd, 0x37, 0x68, 0xa5, 0xe9, - 0x4c, 0x35, 0x0e, 0xd1, 0x96, 0x83, 0x06, 0xd3, 0x23, 0x18, 0x19, 0x84, 0x1f, 0x13, 0x59, 0x7e, - 0x7b, 0x75, 0xdd, 0x29, 0x67, 0x70, 0x90, 0x40, 0x6c, 0xe7, 0x12, 0x31, 0xb5, 0x19, 0x5c, 0xb0, - 0x96, 0x84, 0xd0, 0x65, 0x24, 0xe6, 0x3c, 0x7e, 0x41, 0xda, 0xc6, 0x9d, 0x38, 0x84, 0x32, 0xf3, - 0x53, 0xc2, 0x74, 0xf5, 0x49, 0xc1, 0x8c, 0x36, 0x6e, 0x94, 0xbf, 0x62, 0x94, 0x57, 0x56, 0xc9, - 0x3a, 0x54, 0x8d, 0x0e, 0x0c, 0xb8, 0x4e, 0x3e, 0x81, 0x55, 0x1c, 0xcd, 0xf2, 0x0b, 0x6b, 0x6e, - 0xd2, 0xde, 0x4e, 0x20, 0x47, 0x14, 0x71, 0xc7, 0x8b, 0xe0, 0x21, 0x27, 0xf3, 0xb2, 0x9a, 0xc8, - 0x16, 0x69, 0xf9, 0x08, 0x4e, 0x1a, 0xa9, 0xcd, 0x69, 0x3e, 0xda, 0x9b, 0x3e, 0x04, 0x35, 0x87, - 0x3b, 0x77, 0x76, 0x3b, 0x6c, 0xb5, 0x0d, 0x79, 0x54, 0x1a, 0x1d, 0x37, 0x75, 0xfb, 0x75, 0xad, - 0x91, 0x75, 0xf7, 0xdf, 0xa0, 0x34, 0x41, 0xe4, 0x53, 0x82, 0x6c, 0x10, 0x67, 0xe7, 0x51, 0x69, - 0x3b, 0xfd, 0x92, 0xe3, 0x70, 0x26, 0x53, 0xb0, 0x33, 0x2e, 0xa2, 0x46, 0x62, 0x3c, 0xfc, 0x6b, - 0x39, 0xfd, 0x06, 0x23, 0x1d, 0xef, 0xb0, 0xaf, 0x62, 0xf6, 0x64, 0xcc, 0x9e, 0x13, 0x33, 0x31, - 0x31, 0xf7, 0x55, 0xcc, 0xbe, 0x8c, 0xe9, 0x3a, 0x12, 0x6b, 0x67, 0x69, 0x58, 0x6f, 0xe0, 0xb8, - 0x3d, 0x28, 0xd1, 0xaf, 0x8e, 0x07, 0x9f, 0x35, 0x27, 0x48, 0xe4, 0x28, 0xec, 0x10, 0x62, 0xf9, - 0xc4, 0xe0, 0xc1, 0x56, 0x85, 0x07, 0xf2, 0xae, 0x80, 0xe3, 0xf5, 0xcb, 0x61, 0x3f, 0x3a, 0x00, - 0xa1, 0x38, 0x55, 0x2d, 0x54, 0xb2, 0x77, 0x72, 0x0a, 0x2b, 0xfc, 0xb0, 0xeb, 0x84, 0x6e, 0xa9, - 0xe0, 0xc2, 0x12, 0x60, 0x30, 0x20, 0xb2, 0x03, 0x42, 0xe2, 0xcf, 0xe0, 0x5e, 0x82, 0x51, 0x8b, - 0x8b, 0x43, 0xd4, 0xb3, 0xc3, 0x12, 0xbd, 0x24, 0x44, 0x1e, 0xbb, 0x73, 0x7a, 0x3b, 0xdd, 0x72, - 0x17, 0x36, 0xd2, 0x7c, 0x05, 0xae, 0x60, 0xbe, 0x44, 0xab, 0x03, 0x5d, 0xaf, 0x0b, 0x79, 0x20, - 0x65, 0xbe, 0xe9, 0x43, 0x3e, 0xab, 0x5a, 0x5d, 0xea, 0xf1, 0x74, 0x62, 0xb5, 0x20, 0x3b, 0x28, - 0xee, 0x93, 0x67, 0xe2, 0xc1, 0x8e, 0x38, 0x4c, 0xb5, 0xeb, 0x23, 0x39, 0x68, 0xa7, 0x67, 0x10, - 0x78, 0x2e, 0xc1, 0x14, 0x31, 0xcb, 0x1d, 0xb1, 0xee, 0x8e, 0x05, 0xc4, 0x92, 0xcd, 0x2c, 0x6c, - 0x31, 0x0f, 0xda, 0x4e, 0x67, 0xe7, 0xfd, 0x4c, 0xf7, 0x05, 0xbc, 0x88, 0x9f, 0xe1, 0x80, 0x36, - 0x2e, 0xab, 0xa2, 0x1b, 0x06, 0xbd, 0x1f, 0xa0, 0x9e, 0x4b, 0xbe, 0x65, 0x57, 0xd9, 0x5c, 0x08, - 0x68, 0x56, 0x94, 0xe2, 0xc9, 0x5a, 0x22, 0x68, 0x29, 0xde, 0xc9, 0x83, 0x85, 0x51, 0x32, 0x37, - 0xb9, 0xf8, 0xba, 0x0d, 0x17, 0x0c, 0x6b, 0xac, 0x94, 0x48, 0x44, 0xc0, 0xe8, 0x7c, 0x3e, 0xde, - 0x6b, 0x38, 0x18, 0x28, 0x47, 0xdf, 0x9a, 0x2e, 0xe3, 0x1b, 0xd6, 0x97, 0x75, 0x6c, 0x3d, 0x16, - 0x2b, 0xbf, 0x1c, 0x45, 0x15, 0x48, 0x35, 0xc8, 0xdb, 0xbb, 0x08, 0xfe, 0x72, 0x20, 0x75, 0x61, - 0x13, 0x74, 0xd8, 0x9a, 0xe1, 0x3f, 0x88, 0x06, 0x76, 0x1b, 0xe3, 0x66, 0x54, 0xeb, 0x98, 0x96, - 0xad, 0xd7, 0xf1, 0x25, 0x65, 0x1b, 0x9f, 0x8e, 0x05, 0x2d, 0x36, 0x20, 0x57, 0x2d, 0x35, 0xd7, - 0xb9, 0x1b, 0x71, 0x2a, 0xd3, 0x12, 0x31, 0x5d, 0xde, 0x77, 0x53, 0x47, 0x87, 0x08, 0xe5, 0xa1, - 0xc1, 0xce, 0x29, 0xf1, 0x2b, 0x77, 0xf4, 0xdb, 0x74, 0x55, 0x1f, 0xc6, 0x90, 0xd5, 0xbd, 0x77, - 0xc1, 0x1d, 0xc7, 0xc6, 0x7b, 0x3f, 0x3b, 0xf1, 0x6c, 0xe7, 0x6e, 0x07, 0xa4, 0xd5, 0x1d, 0x5a, - 0x44, 0x66, 0xcc, 0xe6, 0xc2, 0xbd, 0x36, 0x75, 0x27, 0x8a, 0x18, 0x7a, 0xef, 0x1e, 0x68, 0x7a, - 0xc0, 0xaf, 0x1f, 0xaf, 0x70, 0x42, 0x80, 0xe4, 0x07, 0x87, 0xcb, 0xdb, 0x2d, 0xc4, 0xf7, 0xb6, - 0xb6, 0x6a, 0x01, 0xe3, 0x0b, 0x9d, 0xa6, 0x30, 0x93, 0x6a, 0xe8, 0x54, 0xc5, 0xb6, 0xdc, 0xd6, - 0xea, 0xd1, 0x0b, 0xec, 0x0f, 0x7a, 0x30, 0xcf, 0xc4, 0x4e, 0x0f, 0x41, 0x3a, 0x9f, 0xd2, 0x14, - 0x6d, 0x59, 0x04, 0xcb, 0xcb, 0xe8, 0x2f, 0x54, 0x87, 0xbc, 0x6f, 0x20, 0xd0, 0x4e, 0xa8, 0xe7, - 0xaf, 0xb5, 0x8a, 0x1d, 0x09, 0x82, 0x6e, 0x8c, 0xc2, 0x9d, 0x8d, 0x93, 0xda, 0x04, 0x85, 0x8c, - 0x54, 0x49, 0xed, 0xd2, 0x44, 0x42, 0x77, 0x26, 0xd8, 0x84, 0x8b, 0xbf, 0x7d, 0xc6, 0x93, 0xbe, - 0xae, 0x69, 0x43, 0xbc, 0x24, 0x43, 0x5f, 0x9e, 0x5d, 0x56, 0x83, 0x04, 0x76, 0x2e, 0x98, 0xca, - 0xa8, 0x9e, 0x62, 0xcf, 0x57, 0xf6, 0xcf, 0x71, 0xdc, 0x78, 0x35, 0x20, 0xfb, 0x31, 0x1c, 0x7d, - 0xa1, 0xcb, 0xf9, 0x67, 0x92, 0xa1, 0xdf, 0x78, 0xa0, 0xe7, 0x10, 0x25, 0x91, 0xc3, 0x62, 0x8c, - 0x6d, 0xeb, 0x43, 0x1d, 0xd0, 0x25, 0xda, 0x7a, 0x01, 0x5b, 0x2d, 0xa4, 0x1f, 0xc3, 0x5a, 0x65, - 0x57, 0x66, 0x4b, 0xd6, 0x66, 0x78, 0x63, 0x35, 0x10, 0x06, 0x44, 0x76, 0xc0, 0x76, 0x03, 0xdf, - 0x4d, 0xa4, 0xf2, 0x2a, 0xac, 0x8d, 0x5c, 0x41, 0xe4, 0xd2, 0xf2, 0xe2, 0xe2, 0x78, 0x9f, 0x1c, - 0x08, 0x3b, 0x24, 0x8a, 0x76, 0xa4, 0x7d, 0x62, 0x9b, 0x87, 0xce, 0xbf, 0x23, 0x6b, 0x3a, 0x6b, - 0xe0, 0x2d, 0xc2, 0xed, 0xa0, 0xd1, 0x0d, 0xac, 0x7e, 0xc2, 0xd6, 0xb5, 0x64, 0xd8, 0xde, 0xc0, - 0x12, 0x61, 0xcd, 0x15, 0x30, 0x8b, 0x4d, 0xe2, 0x69, 0x42, 0xf6, 0x17, 0x10, 0xb2, 0xb7, 0x60, - 0x28, 0xea, 0x4f, 0xf8, 0x73, 0x4b, 0x31, 0xf1, 0xf8, 0x68, 0xeb, 0x2c, 0x1a, 0xd4, 0x55, 0xf7, - 0xb0, 0xb3, 0xdd, 0xa3, 0xd2, 0x1d, 0x04, 0xfc, 0xae, 0x96, 0xc4, 0x83, 0x3a, 0x14, 0xff, 0x22, - 0xd8, 0x17, 0xfb, 0xbe, 0x22, 0x4c, 0xe7, 0x28, 0xb1, 0x4c, 0x8b, 0x72, 0xf8, 0x17, 0x12, 0xc4, - 0xe3, 0x38, 0xd6, 0xea, 0x9a, 0xbd, 0x9f, 0x4f, 0xde, 0x7e, 0x80, 0x23, 0x04, 0xcc, 0xec, 0x59, - 0x5e, 0x22, 0x2c, 0x00, 0xba, 0x02, 0x92, 0x4c, 0x8e, 0x1e, 0x5a, 0x77, 0xc8, 0x07, 0x09, 0x02, - 0x2f, 0x94, 0xc5, 0xe6, 0xa7, 0x42, 0x8d, 0xc9, 0x5e, 0x96, 0xdf, 0x77, 0xfd, 0xe7, 0x08, 0x2e, - 0x2b, 0xc5, 0x47, 0x2d, 0x0b, 0x0f, 0x68, 0xbb, 0x83, 0x05, 0x3d, 0xb9, 0x84, 0x0d, 0x94, 0x7f, - 0x28, 0x0e, 0x46, 0x5b, 0x7a, 0x56, 0xac, 0xb0, 0x7a, 0x9c, 0xf6, 0xc2, 0xef, 0x95, 0x47, 0xcd, - 0x60, 0xb4, 0x05, 0xc2, 0x34, 0x5d, 0x37, 0x30, 0x09, 0xe2, 0x91, 0xbf, 0xe8, 0x4a, 0x4d, 0x90, - 0xc1, 0xb5, 0x16, 0x16, 0x1b, 0xcd, 0xfe, 0x8b, 0x90, 0xe4, 0x5a, 0x24, 0x7f, 0xab, 0xf4, 0x8e, - 0x8b, 0xfc, 0x54, 0x4a, 0xf8, 0x83, 0x41, 0x6d, 0x60, 0x44, 0xb4, 0x44, 0x88, 0x68, 0x22, 0x2a, - 0xe1, 0xa2, 0x1c, 0xde, 0x97, 0xa4, 0x0d, 0xe8, 0x42, 0xbf, 0x6c, 0xcf, 0xbd, 0x3b, 0x2f, 0x42, - 0x28, 0xd5, 0xc5, 0xb6, 0x1f, 0xb5, 0x79, 0x53, 0x96, 0x89, 0xe5, 0x4a, 0x99, 0x05, 0xc8, 0xb3, - 0x0a, 0x5b, 0x53, 0x34, 0x47, 0x4a, 0x34, 0xf4, 0xa6, 0xde, 0x45, 0x9f, 0x53, 0x68, 0x59, 0xe4, - 0x93, 0x4c, 0x58, 0x8d, 0x46, 0x09, 0x07, 0x1d, 0x54, 0x4e, 0xa2, 0x9a, 0xe1, 0x1f, 0x1f, 0xdf, - 0xed, 0xbe, 0xf4, 0x16, 0xc1, 0x38, 0xbf, 0xfc, 0x12, 0x55, 0xb6, 0x23, 0xe6, 0x13, 0xb4, 0x5a, - 0x4f, 0x60, 0x67, 0xc0, 0xfe, 0xd9, 0x40, 0x07, 0x86, 0x83, 0xe9, 0x89, 0x6a, 0xb0, 0x2b, 0x18, - 0xe5, 0x42, 0x59, 0x4f, 0x94, 0x52, 0x87, 0x40, 0xff, 0x49, 0x2b, 0x66, 0x50, 0x3e, 0x49, 0xdf, - 0x65, 0x14, 0x64, 0x55, 0x0b, 0xc9, 0x47, 0xb5, 0x44, 0x69, 0x56, 0xe1, 0x89, 0x5d, 0x2b, 0x95, - 0xa4, 0xb2, 0x4c, 0xfe, 0x8d, 0x84, 0xc4, 0x47, 0xa7, 0x2b, 0x6b, 0x7c, 0x81, 0x88, 0x71, 0xcf, - 0x71, 0x13, 0x68, 0xa1, 0x88, 0x94, 0xcc, 0x04, 0x72, 0x96, 0xb1, 0x26, 0x6b, 0xfd, 0x8c, 0x79, - 0x7c, 0x54, 0x1a, 0x57, 0x24, 0x91, 0xec, 0x1f, 0xf8, 0x35, 0xed, 0x17, 0xc3, 0xa5, 0x5b, 0xc2, - 0x07, 0x16, 0x04, 0xd6, 0x91, 0x72, 0x06, 0x4b, 0x98, 0xf0, 0x24, 0x9f, 0xc5, 0x2a, 0x87, 0xd7, - 0xba, 0xdf, 0x24, 0xf9, 0x97, 0x68, 0x1b, 0xe0, 0x3c, 0xcf, 0x22, 0xd2, 0x90, 0x21, 0x45, 0x41, - 0xb6, 0x20, 0x6d, 0x99, 0x3d, 0xc4, 0x8d, 0xa6, 0x83, 0xd4, 0xed, 0xce, 0x63, 0x29, 0xae, 0x58, - 0x74, 0x66, 0x65, 0x3c, 0x6a, 0x9d, 0x48, 0x2f, 0x81, 0x9c, 0x1b, 0xac, 0x35, 0x09, 0xf9, 0x3e, - 0x65, 0x3d, 0x55, 0x30, 0x2d, 0xfe, 0x88, 0xb6, 0x7a, 0x44, 0x95, 0x69, 0x2d, 0x88, 0x0d, 0x17, - 0xcf, 0x0f, 0xa9, 0xc3, 0x0c, 0xd8, 0x45, 0x1d, 0xdd, 0x16, 0xfc, 0xe3, 0x0f, 0x2f, 0xb0, 0xfd, - 0x61, 0xc6, 0x33, 0x02, 0x41, 0xe7, 0x13, 0xf2, 0x27, 0x31, 0x53, 0x20, 0xf1, 0x17, 0x91, 0x14, - 0xf6, 0xed, 0x9c, 0x14, 0x77, 0x47, 0xa1, 0x05, 0x4a, 0xbc, 0xa0, 0x50, 0x64, 0x80, 0x84, 0x40, - 0xb4, 0x94, 0xc0, 0x64, 0x9a, 0xc2, 0x99, 0x51, 0xbe, 0x78, 0x73, 0x5b, 0x2c, 0x10, 0x23, 0x82, - 0x7c, 0x6b, 0x2f, 0x22, 0x8f, 0xbf, 0x72, 0xc9, 0x48, 0x07, 0x08, 0xd4, 0x8b, 0xae, 0xd7, 0xce, - 0x3d, 0xde, 0x2c, 0x8d, 0xb0, 0x09, 0xa1, 0x50, 0x8b, 0x45, 0xa3, 0xfc, 0xe8, 0x72, 0xe3, 0xd6, - 0x40, 0x6b, 0x0a, 0xb7, 0xd4, 0x2f, 0x1f, 0x0e, 0xc8, 0xe4, 0xe4, 0x4d, 0xc5, 0x27, 0xfe, 0x55, - 0xe4, 0x50, 0xca, 0x44, 0x75, 0x9f, 0x17, 0x9f, 0xb9, 0x3a, 0xb0, 0x40, 0x76, 0x30, 0x3e, 0xca, - 0xc3, 0xc4, 0xca, 0x04, 0xdb, 0x0c, 0x32, 0xb9, 0x7d, 0xc4, 0xdf, 0x5c, 0x6d, 0xe2, 0x69, 0x5a, - 0x9f, 0x4f, 0x27, 0xcd, 0xb3, 0x2b, 0x88, 0x84, 0xb9, 0xed, 0x79, 0xca, 0xf7, 0x64, 0x8e, 0x5a, - 0xcb, 0x68, 0x8e, 0x0b, 0x55, 0xa4, 0xca, 0xb5, 0x58, 0x0c, 0x2c, 0x70, 0x78, 0xea, 0x64, 0xd2, - 0x6d, 0x16, 0x08, 0x15, 0xaf, 0x0b, 0xbf, 0xa6, 0x03, 0x11, 0x9b, 0xfe, 0x2e, 0x11, 0xf7, 0x68, - 0x4f, 0x90, 0x13, 0x90, 0x8d, 0x91, 0xf4, 0x96, 0xe6, 0x20, 0x4e, 0x4d, 0xf2, 0xe1, 0x76, 0x5e, - 0x49, 0x9f, 0x73, 0x78, 0xf7, 0xfe, 0x0e, 0x87, 0xe6, 0xfb, 0x3b, 0x69, 0x74, 0x58, 0x3f, 0xa3, - 0x14, 0x93, 0x47, 0x2a, 0xbf, 0x0d, 0x7b, 0x10, 0xe6, 0x2b, 0x98, 0xef, 0xc2, 0xeb, 0xbf, 0xf1, - 0x28, 0x57, 0xa5, 0xf1, 0xf9, 0x9c, 0xde, 0x11, 0xd0, 0xba, 0x65, 0xa3, 0x3a, 0x4c, 0xa6, 0x28, - 0x6d, 0x77, 0xcc, 0x4d, 0x1d, 0xe4, 0xff, 0xf6, 0x46, 0x63, 0x98, 0xf0, 0xd1, 0x38, 0x1d, 0x65, - 0x74, 0xed, 0x85, 0x23, 0xa1, 0x7b, 0x3f, 0xbb, 0xc4, 0xca, 0x7c, 0xea, 0x86, 0x37, 0xfc, 0xd6, - 0x46, 0xf6, 0x35, 0xce, 0xa7, 0xaa, 0x1b, 0xba, 0x38, 0x7d, 0xd3, 0x61, 0x04, 0x23, 0x42, 0xa9, - 0xe8, 0xb5, 0xde, 0x45, 0xbc, 0x9d, 0x0a, 0x0e, 0xac, 0x43, 0x0f, 0xb6, 0x1d, 0x82, 0xa3, 0xf0, - 0x23, 0xa7, 0xd4, 0x8e, 0x3b, 0x58, 0xe1, 0x08, 0x52, 0xca, 0xf1, 0x59, 0x11, 0xa8, 0x06, 0x5b, - 0xdc, 0x48, 0x82, 0x9a, 0x9b, 0xb6, 0x30, 0xd8, 0xbf, 0x52, 0xd8, 0xc0, 0x08, 0x13, 0x1c, 0x76, - 0xb0, 0xa0, 0x4c, 0xfe, 0x10, 0xdd, 0x46, 0x97, 0x73, 0xa7, 0xce, 0x75, 0xa7, 0x36, 0xfb, 0xd3, - 0xe9, 0x68, 0x33, 0x42, 0x10, 0xd5, 0x1f, 0x13, 0x63, 0x77, 0x1f, 0xf3, 0x2d, 0x4d, 0x87, 0x64, - 0x57, 0x92, 0xd6, 0xc3, 0x9b, 0xd6, 0x56, 0xc6, 0x24, 0x1b, 0xb5, 0xb3, 0xdd, 0x08, 0xc7, 0x35, - 0x3f, 0x3b, 0xce, 0xc4, 0xb8, 0xc3, 0x35, 0x16, 0x24, 0x79, 0x15, 0x42, 0x0d, 0xe6, 0xda, 0x38, - 0x5e, 0x59, 0x37, 0x4a, 0x8b, 0x95, 0xa3, 0x1f, 0x3e, 0x73, 0x1e, 0xab, 0x76, 0x61, 0x2e, 0x09, - 0x87, 0x4d, 0xc1, 0xae, 0x1c, 0x45, 0x7b, 0x72, 0xed, 0x14, 0x3b, 0x83, 0x5d, 0x43, 0x99, 0x53, - 0x5b, 0x15, 0x71, 0x23, 0x42, 0xb8, 0x0e, 0xb5, 0x35, 0x84, 0x01, 0x6e, 0x61, 0xa5, 0x83, 0x9c, - 0x41, 0x1a, 0x55, 0x94, 0x20, 0x70, 0x36, 0x66, 0x6d, 0x3e, 0xaa, 0xe5, 0x6e, 0xcf, 0x38, 0xaf, - 0x07, 0xbd, 0xb0, 0xc5, 0x7b, 0x79, 0x49, 0xaa, 0xd2, 0x4e, 0x85, 0x0e, 0xce, 0x08, 0x24, 0xdc, - 0xe5, 0x72, 0xdc, 0xdc, 0x83, 0x14, 0x97, 0x59, 0x58, 0x10, 0x78, 0x7c, 0x46, 0x9f, 0x15, 0xed, - 0x1e, 0xde, 0xf8, 0x8a, 0x40, 0xcc, 0xa5, 0x85, 0x8d, 0x04, 0x81, 0x4d, 0x3b, 0x29, 0xf2, 0x34, - 0x85, 0x6f, 0xe7, 0xbf, 0x62, 0xc7, 0xcc, 0xc7, 0xe2, 0x7a, 0x74, 0x97, 0xe4, 0x45, 0xa4, 0xc9, - 0x7e, 0x69, 0xa6, 0xc1, 0x23, 0x91, 0x20, 0x2f, 0x94, 0xb3, 0x49, 0x3b, 0x16, 0xa7, 0x06, 0xda, - 0x3c, 0x6a, 0x42, 0xd8, 0x1d, 0xb5, 0x00, 0xd6, 0x69, 0x08, 0x9c, 0x72, 0x2d, 0x46, 0xdd, 0x7e, - 0xdf, 0xe0, 0x3e, 0x38, 0xf0, 0x73, 0x1f, 0xe0, 0x8c, 0x55, 0x4a, 0x1c, 0x49, 0xcc, 0xa8, 0x81, - 0x40, 0x67, 0xb0, 0xe7, 0x10, 0x30, 0x8a, 0xf8, 0x05, 0x62, 0x6f, 0xff, 0xe5, 0x77, 0x4c, 0xc9, - 0xf3, 0xd3, 0x2a, 0x18, 0xba, 0xf6, 0x04, 0xff, 0x52, 0x44, 0xba, 0x4d, 0x31, 0xc1, 0xb0, 0x6a, - 0xeb, 0x20, 0xe7, 0xb0, 0x70, 0x37, 0xf7, 0xbb, 0xbd, 0xc8, 0xdc, 0x11, 0xb0, 0x71, 0xdd, 0xc4, - 0x32, 0x30, 0xa7, 0x72, 0x39, 0x98, 0x53, 0xb9, 0xd8, 0x10, 0x1a, 0x0c, 0xa3, 0xae, 0x43, 0x9c, - 0x73, 0x50, 0xe6, 0xaa, 0xaf, 0x2f, 0xcd, 0x53, 0x70, 0xa5, 0xca, 0x56, 0xaa, 0x86, 0x71, 0x75, - 0xdd, 0x00, 0x96, 0x2a, 0x37, 0x00, 0x96, 0xaa, 0x0a, 0x4a, 0xc0, 0xb7, 0x40, 0x54, 0x96, 0x06, - 0xe9, 0x9b, 0x54, 0x29, 0x78, 0x47, 0xb4, 0x05, 0x39, 0xee, 0xdb, 0xf9, 0x5a, 0xe0, 0xb8, 0x45, - 0xfb, 0x97, 0xde, 0xac, 0xf9, 0xd2, 0xba, 0xd1, 0xf3, 0x69, 0x4d, 0xf7, 0x20, 0x9e, 0x9c, 0xe9, - 0xa1, 0xf0, 0xdf, 0x3d, 0x58, 0xd6, 0x17, 0xc7, 0x1e, 0x2e, 0x34, 0xb6, 0xaf, 0xa3, 0xde, 0xd7, - 0x8d, 0x1a, 0x1b, 0x15, 0xcc, 0x81, 0x04, 0x73, 0x8a, 0x46, 0x78, 0x60, 0xdf, 0xce, 0xf5, 0x2c, - 0x12, 0x0b, 0xba, 0xd7, 0x20, 0xef, 0xe5, 0x5a, 0xc9, 0x26, 0xde, 0xb2, 0x41, 0x38, 0x73, 0x98, - 0x45, 0x14, 0xa8, 0x12, 0x52, 0x74, 0xa2, 0x1f, 0x46, 0xda, 0x0a, 0xea, 0xa4, 0xa0, 0x8e, 0x6b, - 0x4b, 0xb4, 0x45, 0xcf, 0x69, 0xdb, 0xfe, 0x55, 0x9e, 0x82, 0x2c, 0xff, 0x4b, 0xd3, 0x34, 0x16, - 0x6a, 0x55, 0xc2, 0x12, 0xf9, 0x62, 0xa1, 0x94, 0xb0, 0xcc, 0xf2, 0x65, 0xec, 0x1a, 0x75, 0x6c, - 0x38, 0xf8, 0xf3, 0x40, 0xc8, 0x04, 0xba, 0xd4, 0x00, 0x41, 0x46, 0x23, 0x2c, 0x83, 0xfa, 0x7f, - 0x15, 0xe2, 0x31, 0x95, 0xdb, 0xb3, 0x28, 0x6c, 0xf5, 0x3e, 0x8d, 0xf4, 0xb3, 0xab, 0x41, 0xb5, - 0x7a, 0x2f, 0x47, 0x34, 0xa7, 0x5f, 0x5d, 0x5e, 0xaa, 0x4d, 0xa3, 0xd9, 0xab, 0x4b, 0xb1, 0x87, - 0xdb, 0x40, 0x86, 0x97, 0x21, 0x0c, 0x7f, 0x25, 0x9a, 0xf0, 0xdb, 0xfd, 0x17, 0x3f, 0x36, 0x78, - 0x17, 0xfe, 0x24, 0x38, 0x70, 0x8a, 0x08, 0xba, 0x5f, 0x89, 0x0b, 0x4c, 0x79, 0x7c, 0x25, 0x24, - 0x30, 0xe5, 0xf1, 0x95, 0x68, 0xc0, 0x94, 0xc7, 0x3a, 0x20, 0x60, 0x39, 0x91, 0xdc, 0x93, 0xdc, - 0x09, 0x0c, 0xc1, 0x54, 0x7b, 0xca, 0xa8, 0x7b, 0xe3, 0x83, 0x36, 0xda, 0xc3, 0x6c, 0x09, 0xe3, - 0xa1, 0x4d, 0x6a, 0xd8, 0xd1, 0x3a, 0x36, 0x72, 0x6d, 0xce, 0x86, 0xfc, 0x27, 0x32, 0xa4, 0xdf, - 0xe8, 0x15, 0x4d, 0x96, 0xb6, 0xd4, 0x76, 0x3e, 0xab, 0x3d, 0xee, 0x21, 0x26, 0x55, 0xb7, 0x6c, - 0x43, 0xa4, 0xc2, 0xf4, 0x04, 0x8a, 0x80, 0x3f, 0xc8, 0x42, 0xe0, 0xc2, 0xa7, 0x23, 0xdc, 0x83, - 0x01, 0x9f, 0x32, 0xb6, 0x56, 0x7b, 0x91, 0x98, 0x42, 0x61, 0xae, 0x4f, 0xd2, 0xb7, 0x75, 0xef, - 0xf6, 0x54, 0x28, 0x6b, 0x49, 0x65, 0x48, 0x39, 0xcb, 0xd8, 0x81, 0xe0, 0x9e, 0x26, 0x45, 0x09, - 0xcb, 0xb7, 0x77, 0xa4, 0x58, 0x0b, 0x3b, 0xb2, 0x39, 0xb8, 0x79, 0xb7, 0xc9, 0xdf, 0x26, 0x3b, - 0x9c, 0xa5, 0x9a, 0x74, 0x5c, 0xf9, 0x3e, 0x0e, 0xb2, 0x9d, 0x1d, 0x1f, 0xea, 0xc4, 0xcd, 0x0e, - 0xcb, 0x70, 0xf1, 0x05, 0x1a, 0x1e, 0x29, 0x23, 0x77, 0xdc, 0x4f, 0x5c, 0x17, 0x7f, 0x28, 0xf8, - 0x95, 0xed, 0xa0, 0xb2, 0x6f, 0x5c, 0x4b, 0xc5, 0x67, 0xb5, 0xf4, 0x86, 0x31, 0x2d, 0xb2, 0xe9, - 0x2e, 0xa2, 0x04, 0xfa, 0x83, 0x54, 0xdb, 0x58, 0xf1, 0xb2, 0x25, 0x69, 0xde, 0x5b, 0xf4, 0xd0, - 0x8a, 0x6b, 0xcb, 0x50, 0xc2, 0x74, 0x89, 0x69, 0xd0, 0x5f, 0x41, 0xa7, 0x43, 0xd9, 0xdb, 0xc4, - 0x36, 0x9d, 0x91, 0x9f, 0x69, 0x0b, 0x09, 0xf4, 0x15, 0xde, 0x09, 0x33, 0x64, 0x35, 0xd6, 0x0b, - 0x1f, 0x99, 0xde, 0xa4, 0x53, 0x82, 0xf3, 0x22, 0xb2, 0x5b, 0xec, 0xcc, 0xbc, 0x22, 0xc3, 0xc3, - 0xb9, 0x4d, 0x7d, 0xc3, 0xfa, 0x5a, 0x5b, 0x63, 0x05, 0x6b, 0xf3, 0x49, 0xca, 0x0e, 0x9c, 0x4e, - 0xbb, 0xa3, 0x75, 0x78, 0x22, 0x40, 0x9e, 0xef, 0x05, 0x61, 0x80, 0x97, 0xc1, 0xf5, 0xcb, 0xcb, - 0xdb, 0xc2, 0x7d, 0xeb, 0xbc, 0x3a, 0xab, 0xce, 0xed, 0xc8, 0x46, 0x1f, 0xbc, 0x2c, 0x8d, 0x89, - 0x41, 0x49, 0x9d, 0x11, 0x66, 0xf9, 0xe2, 0x8a, 0xb4, 0xb5, 0x98, 0xc6, 0x12, 0xde, 0x6d, 0x2d, - 0x7e, 0xd0, 0x5b, 0x56, 0x74, 0xf7, 0x4d, 0x4b, 0x39, 0x31, 0x82, 0x53, 0x1a, 0x1b, 0x0f, 0x2d, - 0x15, 0x27, 0x25, 0x83, 0x95, 0xb8, 0x05, 0x42, 0x7c, 0x33, 0xdd, 0xde, 0x65, 0xe3, 0x5e, 0x35, - 0xa4, 0x7b, 0x73, 0x5b, 0xa8, 0x84, 0x65, 0x43, 0xef, 0xde, 0xad, 0xb7, 0xa5, 0xad, 0xc9, 0xef, - 0x85, 0xdf, 0x97, 0xba, 0x07, 0xed, 0x2c, 0x3f, 0x6e, 0x96, 0xa3, 0xd3, 0xd2, 0x9b, 0x64, 0xfc, - 0x8b, 0x99, 0xe4, 0x3a, 0x97, 0x01, 0x3a, 0x20, 0xf1, 0xd5, 0xbc, 0x14, 0x05, 0x80, 0xa2, 0xba, - 0xb2, 0x40, 0x13, 0x03, 0xfb, 0xcd, 0xcc, 0x79, 0x35, 0xec, 0xa2, 0x61, 0x10, 0x91, 0x34, 0x41, - 0xdc, 0x94, 0x6b, 0x24, 0xae, 0x87, 0x4e, 0x9a, 0xbc, 0x77, 0xe1, 0xb7, 0xcf, 0xb4, 0xc8, 0x24, - 0x77, 0x85, 0x5b, 0xf5, 0x31, 0x73, 0xb1, 0x93, 0x72, 0x6d, 0x8d, 0x05, 0x93, 0xef, 0x6d, 0x76, - 0x69, 0x62, 0xae, 0xf9, 0x32, 0xab, 0x84, 0x6a, 0xae, 0xbb, 0x27, 0x2e, 0x4c, 0x88, 0x5c, 0xf1, - 0x90, 0xdd, 0x49, 0x98, 0xd6, 0x46, 0xad, 0xec, 0xac, 0x8c, 0xd0, 0x0b, 0x0b, 0xfa, 0x11, 0xfe, - 0x86, 0x08, 0xca, 0xa5, 0xdb, 0x3f, 0x3a, 0xab, 0x8a, 0xf3, 0x80, 0xab, 0x13, 0x85, 0x41, 0x11, - 0xa1, 0x5e, 0x37, 0xbb, 0x8c, 0x42, 0x2d, 0x0d, 0x9b, 0x5e, 0xe3, 0x58, 0xc3, 0x7a, 0x00, 0x9c, - 0xa6, 0x4a, 0x8b, 0x7a, 0x05, 0x46, 0x01, 0x8b, 0x63, 0x72, 0xcf, 0x83, 0xc3, 0x0f, 0x88, 0xc8, - 0xbb, 0x70, 0xbc, 0x88, 0x7a, 0xe1, 0xec, 0x61, 0xa0, 0x89, 0x8a, 0x56, 0x51, 0xca, 0x9c, 0x5e, - 0xdf, 0x4e, 0xa7, 0xa9, 0x20, 0xc2, 0xd6, 0xa5, 0x67, 0x31, 0xd3, 0xed, 0xf6, 0x79, 0x0c, 0x07, - 0x0b, 0xd3, 0xd2, 0xc2, 0xf6, 0x62, 0x95, 0xf5, 0xf1, 0x31, 0x43, 0xe7, 0x77, 0x87, 0x9c, 0x02, - 0xf3, 0x5f, 0x7d, 0x5a, 0x43, 0x12, 0x33, 0x3e, 0xaf, 0xc1, 0xaf, 0xd5, 0x44, 0x3d, 0x04, 0xcd, - 0x8a, 0x0b, 0xdd, 0x34, 0xc9, 0x92, 0x4a, 0xa4, 0x5f, 0x36, 0x2a, 0xfd, 0x6c, 0x55, 0xf1, 0xb3, - 0x23, 0x42, 0x26, 0xd1, 0x85, 0x7e, 0x72, 0x89, 0x4d, 0xa7, 0xf0, 0xc8, 0xd2, 0xbd, 0xa2, 0xa0, - 0xb1, 0xe4, 0x37, 0x5c, 0x97, 0x7a, 0x4f, 0x25, 0x35, 0xa2, 0x80, 0xac, 0x9e, 0x53, 0x1f, 0x25, - 0xdb, 0xd8, 0xb5, 0xb1, 0x24, 0x18, 0xab, 0x26, 0x74, 0xf1, 0xbf, 0xff, 0x17, 0x92, 0x82, 0x42, - 0x79, 0x0a, 0xe0, 0x2f, 0x67, 0x20, 0xf5, 0x1c, 0x75, 0xd0, 0x52, 0x58, 0x6a, 0x46, 0x5c, 0x97, - 0xf1, 0xc5, 0x3b, 0x82, 0x89, 0x22, 0x9d, 0xc2, 0x22, 0x44, 0x60, 0x69, 0xc4, 0x58, 0xc6, 0x09, - 0x03, 0x07, 0x01, 0xab, 0x6c, 0x3c, 0xe3, 0x96, 0x34, 0x35, 0x5d, 0xf3, 0x80, 0x72, 0xc5, 0xf6, - 0x90, 0xc1, 0xeb, 0xb2, 0xce, 0x13, 0xcc, 0x0a, 0xfc, 0x7a, 0x9d, 0x42, 0xe6, 0xe8, 0x03, 0xb4, - 0x9a, 0x3e, 0xad, 0x34, 0x22, 0x20, 0xf2, 0x34, 0xb4, 0x1f, 0x1c, 0xb0, 0x0b, 0xe5, 0xdc, 0x66, - 0x45, 0x06, 0x59, 0x50, 0x1f, 0xe0, 0x56, 0x7e, 0x9a, 0x2c, 0x3c, 0xd8, 0xb9, 0x2d, 0x14, 0x32, - 0x8a, 0x46, 0xb8, 0xd1, 0x6d, 0x1b, 0x48, 0x70, 0x15, 0x94, 0x0c, 0x36, 0x34, 0x6c, 0x88, 0xa0, - 0xa3, 0x44, 0x98, 0x8d, 0xe8, 0x9b, 0x3f, 0x42, 0xca, 0x9a, 0xb0, 0x77, 0xb1, 0x50, 0x18, 0x65, - 0xe5, 0x1a, 0xd2, 0xa8, 0xfa, 0x40, 0x36, 0x68, 0x51, 0xf0, 0xe6, 0x98, 0x31, 0x15, 0x3b, 0x63, - 0x02, 0xee, 0xca, 0x44, 0x59, 0x12, 0x8e, 0x8d, 0x1c, 0xdf, 0x2b, 0x67, 0x15, 0xd6, 0x23, 0x19, - 0xd3, 0xa4, 0x92, 0xb3, 0xe6, 0x5f, 0x39, 0xcb, 0x57, 0x96, 0xfa, 0x14, 0xbd, 0x17, 0x95, 0xba, - 0x6e, 0x8c, 0x66, 0xce, 0xa7, 0x15, 0xbb, 0xfc, 0xff, 0x29, 0xf6, 0x6b, 0xfe, 0x9e, 0x2a, 0x39, - 0x1a, 0x9c, 0x78, 0xed, 0x7a, 0x42, 0xc1, 0xe1, 0x33, 0xde, 0x93, 0x0a, 0x7c, 0x51, 0x43, 0xdd, - 0xd3, 0x56, 0x43, 0x89, 0xc2, 0xeb, 0x3c, 0x5b, 0x60, 0xbc, 0x65, 0x8d, 0x2a, 0x09, 0x79, 0xa3, - 0xa0, 0x82, 0x2e, 0x38, 0xef, 0x53, 0x28, 0xa3, 0xa8, 0x02, 0xe9, 0xcd, 0xac, 0x09, 0xc1, 0xdb, - 0x82, 0xbc, 0x7b, 0x51, 0x47, 0xde, 0x75, 0x8a, 0x49, 0x7e, 0xf6, 0xe5, 0x72, 0x00, 0x5e, 0xf8, - 0x12, 0x7a, 0xc7, 0xcc, 0xd4, 0xb4, 0x66, 0xc8, 0x5b, 0x05, 0xc9, 0xdb, 0xa9, 0x4b, 0x40, 0x5f, - 0x01, 0xd6, 0x5b, 0x36, 0xc1, 0x7a, 0x15, 0xca, 0x9a, 0xc2, 0xb0, 0x5b, 0xc9, 0xb0, 0xc2, 0xa4, - 0x58, 0x28, 0x95, 0x21, 0x1c, 0x8e, 0x21, 0xa1, 0xa0, 0xc6, 0x22, 0x06, 0x96, 0x0d, 0xf5, 0xd9, - 0x54, 0xe5, 0xa1, 0x22, 0x78, 0xdf, 0x80, 0x60, 0xa5, 0xb1, 0x82, 0xfd, 0x0f, 0x5e, 0x85, 0x66, - 0xf8, 0x28, 0x1a, 0x39, 0x51, 0x67, 0x79, 0xd1, 0x4b, 0x2a, 0x9a, 0x29, 0x87, 0x55, 0x8c, 0xdf, - 0x53, 0x45, 0x32, 0x6f, 0xd5, 0xe4, 0xf7, 0xb4, 0xad, 0x22, 0xcf, 0x8f, 0xda, 0x16, 0xd3, 0x6b, - 0xef, 0xa8, 0x9b, 0x0a, 0x9c, 0xe1, 0x82, 0xac, 0xf2, 0x30, 0x10, 0xd0, 0xc4, 0x6a, 0x15, 0x8f, - 0x17, 0x42, 0xdf, 0x49, 0x0c, 0x5d, 0x4f, 0xd7, 0xf0, 0xb0, 0x29, 0x69, 0xe3, 0xdd, 0x56, 0x1b, - 0x2f, 0xee, 0xb4, 0xdb, 0xea, 0x14, 0xf2, 0xe7, 0x27, 0x2f, 0x7c, 0x60, 0xe8, 0x9d, 0x42, 0x2f, - 0x75, 0x66, 0x5a, 0x92, 0x85, 0x43, 0x77, 0x5e, 0x78, 0x11, 0xb6, 0xbc, 0xf7, 0xf3, 0x1d, 0x92, - 0x59, 0xc2, 0x71, 0xa4, 0x73, 0x9f, 0x54, 0xd7, 0x1d, 0xf2, 0x76, 0x80, 0xaf, 0xfe, 0x03, 0x16, - 0x69, 0x79, 0x67, 0x45, 0x86, 0x2d, 0x9e, 0x34, 0xe3, 0x27, 0x65, 0xed, 0xd8, 0x02, 0x8f, 0xaf, - 0x4b, 0x73, 0x70, 0xc1, 0x2a, 0x3f, 0x3e, 0x56, 0x5f, 0x77, 0xdc, 0x6a, 0xe9, 0x85, 0x59, 0xde, - 0xb7, 0x4a, 0x01, 0x0f, 0x47, 0xaf, 0x4e, 0x8e, 0x3b, 0xd0, 0x7f, 0x37, 0xa3, 0xec, 0x92, 0xd9, - 0x9a, 0x61, 0x40, 0x8c, 0x0a, 0x31, 0x52, 0x29, 0x46, 0xb3, 0x44, 0x53, 0x06, 0x51, 0x22, 0x08, - 0x20, 0x8d, 0xa9, 0x8c, 0x77, 0xd4, 0xfe, 0x99, 0x9e, 0xfd, 0x99, 0x9e, 0x82, 0x30, 0x6c, 0xd9, - 0x63, 0x3b, 0x37, 0x3f, 0xc0, 0x71, 0x15, 0xc7, 0x45, 0x95, 0x77, 0x8e, 0xdf, 0x74, 0x2c, 0xc2, - 0x50, 0xde, 0x8b, 0x2e, 0xeb, 0xaa, 0x60, 0x7d, 0x40, 0xa2, 0xea, 0x43, 0x4f, 0x5c, 0xda, 0xc7, - 0xa4, 0xfe, 0x41, 0x48, 0xc7, 0xa4, 0x9e, 0x3e, 0x26, 0x61, 0x3f, 0x8a, 0x08, 0xa4, 0xf8, 0xf7, - 0x96, 0x6d, 0xee, 0xa4, 0xeb, 0x2f, 0x8e, 0x96, 0x6c, 0xfa, 0xd8, 0xcc, 0xeb, 0xf7, 0x7d, 0xf4, - 0xb5, 0x3f, 0xe1, 0x6d, 0x5f, 0xa1, 0x4d, 0xae, 0x54, 0x2f, 0x2a, 0x93, 0x01, 0xd6, 0x55, 0xef, - 0xfa, 0x34, 0x02, 0xb1, 0x80, 0xdb, 0xcb, 0xbf, 0x48, 0x4d, 0xb1, 0xbd, 0x23, 0x76, 0xb6, 0x2f, - 0x45, 0xea, 0x12, 0x06, 0x9c, 0x74, 0x29, 0x7c, 0x63, 0xbe, 0x00, 0x26, 0x1d, 0xd8, 0x8e, 0xb6, - 0x37, 0xd5, 0x4c, 0x9f, 0xb8, 0xaa, 0xe9, 0xed, 0x85, 0x55, 0xf2, 0xd6, 0x8e, 0xbf, 0x1f, 0x15, - 0xaa, 0x4a, 0xde, 0x78, 0xc6, 0x3c, 0x7b, 0x13, 0x6b, 0x2c, 0xe0, 0x7b, 0x4f, 0x37, 0xbc, 0xaa, - 0xbb, 0xbb, 0x4e, 0xc0, 0x28, 0xc0, 0x6a, 0x29, 0x60, 0x4b, 0xcc, 0xa3, 0xae, 0xaf, 0xe3, 0x62, - 0x49, 0xa7, 0x65, 0x56, 0x5b, 0xb1, 0x76, 0x7b, 0xd0, 0x76, 0x6b, 0x07, 0x66, 0xe8, 0x97, 0x71, - 0x5e, 0x31, 0x6f, 0xb9, 0xeb, 0x1b, 0xcb, 0x18, 0x3b, 0x81, 0x58, 0xa6, 0x15, 0xc7, 0xf7, 0x49, - 0x66, 0x19, 0x2f, 0xe5, 0x79, 0xb3, 0x1b, 0x2a, 0x24, 0xc4, 0x0b, 0x1b, 0x0c, 0x6a, 0x16, 0xe2, - 0x64, 0xf1, 0x41, 0xb4, 0x9e, 0xe6, 0x93, 0x5b, 0x34, 0x56, 0x57, 0xea, 0xe2, 0x1c, 0xe1, 0x44, - 0x83, 0x68, 0x73, 0x89, 0xae, 0x47, 0x82, 0x6e, 0x8c, 0x59, 0xb7, 0xe5, 0x09, 0x75, 0x10, 0x22, - 0x73, 0x10, 0x39, 0x90, 0x6d, 0x6c, 0x7e, 0x9d, 0x88, 0x8c, 0xbc, 0x72, 0xa4, 0x65, 0x7c, 0x56, - 0xbe, 0x63, 0xa7, 0xb1, 0xf6, 0x86, 0xa8, 0xf0, 0xa2, 0x53, 0x5d, 0xfd, 0xa9, 0xf4, 0x70, 0x55, - 0x2b, 0x48, 0x2b, 0x2c, 0xee, 0xf8, 0x9e, 0x67, 0x46, 0xbb, 0x8a, 0x0e, 0xdf, 0x68, 0x84, 0x45, - 0x34, 0x59, 0xc2, 0x9f, 0x8e, 0x65, 0x22, 0x7d, 0x19, 0x7e, 0xe7, 0x59, 0x34, 0xef, 0xf8, 0xb6, - 0xb3, 0xa9, 0x18, 0xe2, 0xca, 0x1c, 0xa8, 0xae, 0xd1, 0xb3, 0x2e, 0x90, 0x44, 0xc0, 0x5a, 0xfe, - 0xf0, 0xbe, 0xad, 0x2b, 0x71, 0x34, 0x94, 0x2c, 0xaa, 0xd0, 0xa4, 0x71, 0x91, 0xbf, 0xdf, 0x2e, - 0x3a, 0x50, 0x22, 0xc2, 0x7f, 0xec, 0x74, 0x6a, 0x67, 0x00, 0xaa, 0x13, 0xda, 0x8a, 0x54, 0xe5, - 0xd6, 0x0b, 0x0a, 0xe9, 0x2e, 0x0c, 0x33, 0x6b, 0x56, 0xb1, 0x92, 0x6e, 0xf3, 0x55, 0x43, 0x19, - 0x25, 0x5c, 0x43, 0x23, 0xa3, 0x52, 0x16, 0xf5, 0xb6, 0x36, 0xc5, 0x79, 0x73, 0x5b, 0x90, 0x19, - 0x62, 0x49, 0x69, 0x3f, 0x6a, 0xfd, 0xc5, 0x92, 0x08, 0xdf, 0x40, 0xe1, 0x76, 0x7a, 0x8b, 0x8d, - 0x3e, 0xa6, 0xba, 0xf8, 0x05, 0x74, 0x71, 0xab, 0x61, 0xcf, 0x5d, 0xbe, 0x9d, 0xe3, 0x8b, 0x2a, - 0x27, 0xaf, 0xdd, 0x3f, 0x1c, 0x1c, 0xec, 0xef, 0xf1, 0xf2, 0x1d, 0xee, 0xf5, 0x61, 0x63, 0x15, - 0x33, 0xf8, 0xd1, 0xb3, 0x45, 0x62, 0x52, 0xba, 0x35, 0xba, 0x5f, 0x1f, 0x53, 0xea, 0x4a, 0xb7, - 0xe7, 0xbd, 0x10, 0x7a, 0xbb, 0x6c, 0xaf, 0xe5, 0xd7, 0x14, 0xdc, 0xb4, 0xa0, 0x2a, 0xba, 0x2e, - 0x78, 0xd8, 0x5e, 0xf0, 0x8f, 0x9b, 0x95, 0xdb, 0x51, 0xed, 0xad, 0x2c, 0xfe, 0x8a, 0x31, 0xd7, - 0xdc, 0x28, 0x9e, 0x32, 0xe6, 0x96, 0xb2, 0xcb, 0xd4, 0x06, 0xc3, 0x73, 0x35, 0xe1, 0x97, 0xd8, - 0x54, 0xe4, 0x22, 0x3d, 0xfb, 0x70, 0x7b, 0x83, 0xca, 0x77, 0xcb, 0x31, 0xf3, 0x53, 0x7e, 0xdb, - 0xc9, 0x04, 0xc8, 0x4c, 0xa3, 0xaa, 0x03, 0x87, 0x42, 0x38, 0x74, 0xf5, 0xa5, 0x64, 0x5f, 0xe2, - 0x31, 0x00, 0x93, 0x77, 0x46, 0xfa, 0x44, 0xb6, 0x25, 0xc1, 0x66, 0xfe, 0xb3, 0x2b, 0xbd, 0x32, - 0xfa, 0xf6, 0xc2, 0xd0, 0x5a, 0xf5, 0x49, 0x8b, 0xe0, 0xf2, 0xf2, 0x5a, 0x9a, 0xe5, 0x50, 0x2d, - 0xc1, 0xbc, 0x0d, 0xe8, 0x4d, 0xe0, 0x3f, 0xb5, 0x98, 0xdb, 0x7b, 0xf6, 0x7c, 0x59, 0x7a, 0xc6, - 0x71, 0x51, 0x89, 0xd7, 0xb5, 0xac, 0x8e, 0xdd, 0x6c, 0x56, 0x55, 0x90, 0x96, 0x96, 0x5d, 0x76, - 0xc0, 0xb0, 0xdd, 0x2f, 0xac, 0x8d, 0x5c, 0xab, 0xd5, 0xa6, 0x20, 0x09, 0x54, 0x51, 0x2a, 0xa6, - 0xd5, 0x60, 0xd3, 0x95, 0xf1, 0x44, 0x6a, 0x84, 0xd4, 0x58, 0xdd, 0xf0, 0xc3, 0x69, 0xeb, 0x97, - 0x49, 0x5f, 0xb2, 0xf9, 0xa7, 0xe5, 0x00, 0xd5, 0x1f, 0xdf, 0xb6, 0x7c, 0xe0, 0xe8, 0x40, 0x2f, - 0xea, 0xf0, 0x79, 0xf2, 0xe8, 0x6f, 0x94, 0xe9, 0x03, 0xf3, 0xa6, 0x45, 0x71, 0x5d, 0xb5, 0x79, - 0x33, 0xca, 0xd8, 0xfd, 0xb6, 0xd8, 0x14, 0x2b, 0x92, 0x89, 0x9c, 0xd2, 0x10, 0x81, 0xa9, 0x50, - 0xae, 0xe0, 0x98, 0x8f, 0x38, 0x84, 0xb1, 0x3d, 0xd4, 0x60, 0x8e, 0x17, 0x11, 0x65, 0xbc, 0x0b, - 0x81, 0x28, 0xa3, 0x1a, 0xa0, 0xa2, 0x26, 0xe0, 0x2b, 0x81, 0xbc, 0x06, 0xf6, 0x21, 0x47, 0x9d, - 0x5b, 0x60, 0x18, 0xb4, 0x02, 0xa8, 0x07, 0x4b, 0xac, 0xe4, 0xf6, 0xf5, 0x4d, 0xe5, 0x07, 0xa0, - 0x1b, 0x6d, 0x0e, 0x45, 0x8b, 0xce, 0xce, 0x17, 0xb5, 0x5b, 0x8d, 0xcc, 0x21, 0x85, 0x37, 0x1b, - 0x2b, 0xba, 0xd9, 0x4d, 0x28, 0xf7, 0xe8, 0x3a, 0x5d, 0xe2, 0xd5, 0x51, 0x44, 0x84, 0xe1, 0xa6, - 0x5d, 0xf8, 0x03, 0xdb, 0x29, 0xb2, 0x6a, 0x7c, 0xec, 0xed, 0xc3, 0xd7, 0x7e, 0xab, 0x04, 0x39, - 0x6d, 0x81, 0xc7, 0x3d, 0x79, 0xf5, 0x3f, 0x16, 0xc1, 0xea, 0x4f, 0x32, 0xa8, 0xb9, 0xe5, 0x13, - 0x8d, 0x9f, 0x25, 0x1a, 0x1d, 0xca, 0xcf, 0x81, 0xaf, 0xb4, 0x39, 0xac, 0x1c, 0x87, 0x69, 0x69, - 0xea, 0xc6, 0xbb, 0x22, 0x4f, 0x6a, 0xec, 0x81, 0x65, 0xe6, 0x5d, 0x01, 0xdc, 0x73, 0x61, 0x80, - 0x7b, 0x98, 0xfb, 0x9a, 0xa1, 0xc0, 0x82, 0xb2, 0xd9, 0x48, 0x7c, 0x17, 0x8f, 0x1b, 0x09, 0xaf, - 0xdd, 0x95, 0x6e, 0x23, 0x71, 0xa5, 0xd0, 0x79, 0x9d, 0x8d, 0x2b, 0x0e, 0x44, 0x57, 0x65, 0xf8, - 0x2f, 0x2c, 0x4b, 0x10, 0x9e, 0x8c, 0xad, 0xbb, 0x51, 0x78, 0xaf, 0xa6, 0x94, 0x48, 0x04, 0xe4, - 0x1e, 0x5f, 0x71, 0x96, 0xe1, 0x62, 0x51, 0x5a, 0xd7, 0xfa, 0x5d, 0xf7, 0xd7, 0xd2, 0x5e, 0x12, - 0x99, 0xd7, 0xcd, 0x9d, 0x88, 0x7a, 0xc8, 0x2b, 0x27, 0xca, 0x72, 0x2d, 0xf4, 0x70, 0xb6, 0x0e, - 0x7a, 0x18, 0x6b, 0x18, 0x6e, 0xc5, 0xd2, 0xf4, 0xef, 0xe2, 0x0c, 0x43, 0xff, 0x58, 0x96, 0x35, - 0x17, 0x70, 0xf8, 0x26, 0xb1, 0x5e, 0xd5, 0x80, 0x87, 0xed, 0x11, 0x50, 0x83, 0x20, 0x9e, 0xdd, - 0x17, 0x0e, 0x3a, 0x1b, 0x76, 0x26, 0x8e, 0x41, 0xf2, 0x4a, 0x46, 0xc7, 0xfb, 0xd8, 0x1a, 0x5a, - 0x19, 0x36, 0x1b, 0xfa, 0x9a, 0xe1, 0xb0, 0x45, 0x4b, 0x52, 0xc3, 0x01, 0xb4, 0x44, 0x82, 0xb1, - 0x0c, 0x06, 0xef, 0x5d, 0x94, 0x06, 0x37, 0x49, 0x34, 0x0a, 0xf2, 0x2c, 0xca, 0x83, 0x71, 0x91, - 0x44, 0xad, 0xf5, 0x26, 0x62, 0x36, 0x0d, 0xcb, 0x0c, 0x3d, 0x92, 0x2c, 0x16, 0x8a, 0x5a, 0xa6, - 0x05, 0xc5, 0x75, 0xb2, 0x01, 0x8a, 0xeb, 0xe5, 0x7a, 0x14, 0xd7, 0x60, 0xd6, 0x1e, 0x07, 0xd1, - 0x97, 0x55, 0x37, 0x14, 0x34, 0x2c, 0x20, 0xe7, 0x78, 0x12, 0xf0, 0x6f, 0xc8, 0x21, 0xbe, 0x94, - 0xbf, 0xf3, 0x69, 0x3c, 0x5b, 0xf0, 0x4f, 0x18, 0x19, 0x74, 0xcf, 0x8a, 0x49, 0x98, 0x85, 0xeb, - 0x9e, 0x5f, 0xd8, 0x96, 0x75, 0xe9, 0x28, 0xb8, 0x7a, 0x0c, 0x0d, 0x78, 0xd1, 0xa8, 0x03, 0x47, - 0x67, 0x75, 0xe0, 0x68, 0xe9, 0xbd, 0xd0, 0x30, 0x2d, 0x07, 0xa3, 0xa6, 0x79, 0xbf, 0xe9, 0x0e, - 0x9c, 0x92, 0xaf, 0xef, 0xb4, 0x9b, 0x1e, 0x96, 0x78, 0xe1, 0xf0, 0xf1, 0x31, 0x3d, 0x22, 0x60, - 0x73, 0x05, 0x8b, 0x81, 0x80, 0x45, 0x2a, 0xcb, 0x98, 0xa2, 0xf0, 0xbd, 0xd7, 0xc3, 0x8c, 0xa3, - 0x8f, 0x76, 0x5b, 0xb3, 0x3c, 0xca, 0x1a, 0x99, 0x18, 0xff, 0x04, 0x7c, 0x43, 0xc8, 0xb0, 0x6e, - 0x42, 0x52, 0xcc, 0x8d, 0x1e, 0x1f, 0xb7, 0x1a, 0xe1, 0x48, 0xf3, 0x67, 0xe7, 0xd5, 0xb9, 0x54, - 0x6b, 0x9f, 0xc4, 0xcd, 0x68, 0x1d, 0x9a, 0x29, 0x0f, 0xcd, 0x11, 0x0f, 0x24, 0x72, 0x0d, 0x4f, - 0x0f, 0x19, 0x27, 0xdb, 0xda, 0xb4, 0x1c, 0xe8, 0xee, 0xb2, 0x01, 0xdd, 0x3d, 0xe0, 0xbb, 0xee, - 0x86, 0x26, 0x4e, 0xb5, 0x6e, 0xd1, 0x6c, 0xf1, 0x66, 0xeb, 0xe6, 0xb2, 0x75, 0xf3, 0xc3, 0x8a, - 0x9b, 0x2b, 0x3f, 0xaa, 0x1a, 0x0d, 0xa3, 0x24, 0xfa, 0x4a, 0xb7, 0x6e, 0xa1, 0x3a, 0xa3, 0x58, - 0xdd, 0x19, 0xd4, 0x8e, 0x3c, 0x24, 0x09, 0x53, 0x25, 0xce, 0x03, 0xf5, 0x98, 0xcf, 0x3e, 0xc5, - 0xc5, 0x02, 0xab, 0x39, 0x69, 0x22, 0x21, 0x53, 0xe3, 0x37, 0x56, 0xca, 0xc9, 0x1a, 0x54, 0x74, - 0x67, 0xe2, 0x64, 0xeb, 0x27, 0x4e, 0xa2, 0x27, 0x4e, 0xa5, 0x8a, 0x05, 0x13, 0xa7, 0x94, 0xbf, - 0x61, 0xe2, 0x64, 0x01, 0x75, 0x4a, 0x1d, 0x01, 0x1a, 0x31, 0x46, 0x28, 0x4a, 0xe5, 0x22, 0x6b, - 0xdb, 0xe8, 0xd0, 0xe8, 0x81, 0xa4, 0x1d, 0x1d, 0x9d, 0x89, 0x96, 0xb8, 0xae, 0x21, 0x72, 0x9e, - 0x19, 0x0e, 0xc6, 0x61, 0x9b, 0xd8, 0x00, 0x32, 0xc2, 0x35, 0xaa, 0x0c, 0x6f, 0x60, 0xbb, 0x4b, - 0x40, 0xb6, 0x32, 0xb6, 0x17, 0x78, 0x23, 0x3d, 0x12, 0xe0, 0x20, 0xb4, 0x85, 0xce, 0x06, 0x2a, - 0xab, 0xdd, 0xdd, 0x60, 0xd9, 0xc6, 0x8b, 0xc3, 0x0e, 0x36, 0x14, 0xdf, 0xd9, 0x62, 0xab, 0x5f, - 0xc4, 0xdd, 0x8a, 0xdd, 0x1a, 0x57, 0xca, 0xa5, 0x4b, 0x7c, 0x6d, 0xb7, 0xc6, 0xac, 0x3e, 0xad, - 0xca, 0xeb, 0x93, 0x9b, 0xd5, 0xa7, 0xe5, 0x39, 0xfd, 0x94, 0xac, 0xc8, 0x07, 0xd6, 0xed, 0x65, - 0x3b, 0x4b, 0x33, 0x9f, 0x55, 0x05, 0xba, 0x71, 0x0b, 0x74, 0xb3, 0xaa, 0x40, 0xbd, 0xfe, 0xaa, - 0x8c, 0x7a, 0x7d, 0x37, 0xa7, 0x1e, 0x9d, 0x5a, 0xa5, 0xde, 0xeb, 0x18, 0x55, 0x32, 0xf5, 0x0c, - 0x4f, 0x57, 0xd5, 0xb0, 0x74, 0x6b, 0x58, 0x26, 0xeb, 0x72, 0xfb, 0x38, 0x5b, 0x91, 0x5b, 0x35, - 0x8b, 0x96, 0x0d, 0xd8, 0x7a, 0x3e, 0x74, 0xde, 0x42, 0xf5, 0xd8, 0xd3, 0x4e, 0x5c, 0x4b, 0x87, - 0x9c, 0xa8, 0xa2, 0xaa, 0x51, 0x73, 0x71, 0x75, 0x72, 0x5f, 0xac, 0x28, 0x2f, 0x6c, 0xc9, 0x5b, - 0x4f, 0x38, 0x03, 0xb4, 0xe4, 0xff, 0x63, 0xb1, 0xaa, 0x75, 0x37, 0xda, 0xed, 0xdd, 0xab, 0x7b, - 0x57, 0xe9, 0xbb, 0x42, 0x88, 0x3f, 0x84, 0xbe, 0xa1, 0x6d, 0x9d, 0xa6, 0xe7, 0x78, 0x73, 0xd1, - 0xab, 0x3c, 0x58, 0xd0, 0x19, 0x47, 0x88, 0xfc, 0x6a, 0xf8, 0x1c, 0x0d, 0xc2, 0xb5, 0x08, 0xcc, - 0xcd, 0x49, 0x61, 0x5d, 0x0a, 0x96, 0xf7, 0x1e, 0x1b, 0xd7, 0x29, 0xbb, 0x90, 0x2d, 0xba, 0x7f, - 0xc2, 0x69, 0xd2, 0x5f, 0x71, 0xca, 0xae, 0xde, 0xfd, 0x53, 0x17, 0x86, 0x2f, 0x3f, 0xc7, 0x62, - 0x68, 0x21, 0x5b, 0xd4, 0x51, 0x2a, 0xb6, 0x15, 0x4a, 0x45, 0x1d, 0xc0, 0x35, 0x92, 0x43, 0x61, - 0x5b, 0x73, 0xb0, 0xd6, 0x93, 0x5e, 0x2c, 0x4b, 0x5a, 0xc7, 0xfb, 0xb5, 0xc0, 0x5e, 0x5b, 0x46, - 0xc4, 0xf4, 0xc1, 0xb4, 0x3a, 0x2c, 0xd5, 0xd3, 0x87, 0x4b, 0x31, 0x35, 0xf7, 0x44, 0xe8, 0xb1, - 0xde, 0x95, 0x1a, 0x98, 0xf8, 0x49, 0x15, 0x55, 0x74, 0x74, 0xad, 0x18, 0xc5, 0x9b, 0x54, 0x77, - 0x65, 0x06, 0x4f, 0xab, 0x34, 0x24, 0x8b, 0x44, 0xbd, 0x5a, 0x38, 0x3c, 0x6b, 0xa3, 0xb3, 0x31, - 0x26, 0x9b, 0xa0, 0x74, 0x7e, 0x7d, 0x9c, 0x23, 0xb0, 0x4c, 0xb7, 0x6d, 0x94, 0x97, 0x0f, 0xad, - 0x79, 0x39, 0x30, 0x55, 0x8d, 0x69, 0xa3, 0x61, 0xaa, 0x5a, 0xb3, 0x4c, 0xda, 0xb3, 0x6c, 0x60, - 0x5b, 0x35, 0xb2, 0x65, 0x78, 0x1b, 0xe8, 0x41, 0x89, 0xcd, 0x87, 0xe2, 0xf8, 0xe3, 0xa3, 0x38, - 0xda, 0xf7, 0xdd, 0x49, 0xb4, 0x58, 0xd4, 0x37, 0x78, 0x05, 0x6c, 0x45, 0x30, 0x30, 0x72, 0xf3, - 0xde, 0xa7, 0xde, 0xe7, 0xb9, 0x35, 0xd9, 0x8f, 0xcb, 0xa8, 0x6f, 0x07, 0xf4, 0x21, 0x40, 0xfe, - 0xec, 0xc1, 0x8e, 0x5e, 0x9b, 0x3c, 0x4e, 0xb1, 0x18, 0x80, 0x06, 0x8b, 0x65, 0xe1, 0x06, 0xd6, - 0xcb, 0x56, 0xea, 0xb2, 0xc9, 0x0f, 0xb3, 0x2c, 0x96, 0xef, 0xc7, 0x5b, 0x5b, 0x95, 0xfc, 0xb4, - 0x0c, 0xea, 0x53, 0x90, 0x7c, 0xe8, 0xe1, 0x43, 0x50, 0x13, 0xd5, 0x9c, 0xcf, 0xbf, 0xcf, 0x9b, - 0x0b, 0x20, 0x4e, 0x7a, 0x51, 0x9f, 0x00, 0x74, 0x9e, 0xb0, 0xc4, 0x77, 0x84, 0x0a, 0x5c, 0x20, - 0x81, 0x83, 0x52, 0xca, 0x74, 0x11, 0xfd, 0x4c, 0x5e, 0x4a, 0x57, 0x2e, 0x03, 0x08, 0x1c, 0xa2, - 0xdd, 0x07, 0xee, 0xf1, 0xc4, 0x66, 0x3f, 0x19, 0x78, 0x8f, 0x13, 0x54, 0x4a, 0x0a, 0xcf, 0x3f, - 0x8c, 0x89, 0xfe, 0x01, 0xb3, 0x87, 0xf5, 0x71, 0x11, 0x48, 0xd7, 0x6f, 0xc9, 0x9d, 0x55, 0x05, - 0x2a, 0xb5, 0x6f, 0xdc, 0x20, 0x7f, 0x4f, 0xcd, 0xef, 0x0c, 0xef, 0x39, 0x3a, 0xe5, 0x81, 0xd5, - 0x2f, 0xcf, 0x10, 0xf2, 0x39, 0xb0, 0x8e, 0x35, 0xef, 0xf3, 0x11, 0xde, 0xaa, 0x90, 0x1a, 0xd0, - 0x8e, 0xb7, 0xa3, 0xec, 0xfd, 0x3b, 0x5e, 0xa7, 0x4b, 0x6c, 0x96, 0xbe, 0xb7, 0x62, 0xc5, 0x23, - 0x3b, 0xa4, 0xc2, 0x6d, 0x85, 0xbe, 0x9a, 0x1d, 0xd7, 0x3d, 0x26, 0xd9, 0x8e, 0xaa, 0x57, 0x70, - 0x1f, 0xaa, 0x7d, 0x7c, 0xd8, 0x23, 0x62, 0x8b, 0xe3, 0x78, 0x99, 0x79, 0x14, 0x84, 0xad, 0xe3, - 0xa3, 0xfe, 0x41, 0xe8, 0xc3, 0xfc, 0x2e, 0xa0, 0x94, 0xd2, 0x77, 0xfd, 0xf8, 0x0d, 0x9c, 0xba, - 0x60, 0x09, 0x18, 0x8b, 0x0e, 0x9a, 0x5a, 0x73, 0x90, 0x65, 0x44, 0x59, 0xee, 0x29, 0x02, 0x18, - 0xc4, 0xa6, 0xea, 0xce, 0x3e, 0x58, 0xfa, 0x2e, 0x52, 0x25, 0xc9, 0x2f, 0xe3, 0x17, 0x3f, 0xc4, - 0xdd, 0x6a, 0xe8, 0x69, 0xbf, 0x71, 0xcf, 0x78, 0xc5, 0xfb, 0x3b, 0xb3, 0x63, 0x85, 0xd8, 0x38, - 0x37, 0xd2, 0x64, 0x9b, 0xd6, 0xcc, 0xaf, 0x86, 0x70, 0xb0, 0x56, 0x0a, 0x62, 0xe3, 0x63, 0x19, - 0x94, 0xdc, 0xbe, 0xf8, 0x17, 0x9b, 0x39, 0x42, 0x62, 0x94, 0xb1, 0x55, 0x1a, 0x72, 0x6d, 0xb2, - 0x84, 0x6a, 0x18, 0x98, 0xf6, 0xeb, 0xb2, 0xf9, 0x7a, 0xe2, 0xbc, 0x9e, 0x5c, 0x7f, 0x6e, 0xf8, - 0xc8, 0x4a, 0x0f, 0x18, 0x3c, 0x09, 0x13, 0x34, 0x54, 0x2d, 0x94, 0xeb, 0x4e, 0xf0, 0xdd, 0xd2, - 0x63, 0xa5, 0xa5, 0x7b, 0xac, 0x98, 0x08, 0x13, 0x43, 0x6d, 0x69, 0x18, 0x25, 0x2f, 0x94, 0xe5, - 0x5d, 0x0b, 0x9b, 0x55, 0xf1, 0x65, 0x5e, 0xda, 0xe0, 0xac, 0x99, 0xbf, 0x60, 0x60, 0x03, 0x1e, - 0x07, 0x25, 0x0e, 0x68, 0x38, 0xb1, 0x1b, 0x84, 0x31, 0x47, 0x28, 0x31, 0x99, 0xa2, 0x41, 0xd6, - 0xa1, 0x26, 0x21, 0xf2, 0xdd, 0x97, 0x2f, 0x07, 0x1d, 0x9e, 0x04, 0x1d, 0xd2, 0x47, 0x77, 0xbe, - 0x20, 0x68, 0x80, 0xe5, 0x2b, 0xd0, 0xa1, 0x1b, 0x00, 0x0c, 0x3a, 0x62, 0x4d, 0x9c, 0xb9, 0xe7, - 0x1f, 0xed, 0xf6, 0x9e, 0xfc, 0xa9, 0xd3, 0x2f, 0x70, 0x70, 0x79, 0x90, 0x58, 0x72, 0x49, 0xd6, - 0x99, 0x30, 0x93, 0x2b, 0x56, 0xcf, 0xfe, 0x28, 0x7f, 0x8e, 0xf0, 0xd5, 0x1a, 0x53, 0xf5, 0xcf, - 0x56, 0x4f, 0x6a, 0xef, 0xe9, 0xfe, 0x3f, 0x9c, 0xdb, 0x04, 0x0c, 0xec, 0x29, 0x3a, 0x1a, 0xde, - 0xe4, 0x97, 0xc9, 0xf4, 0x0b, 0x4e, 0x4b, 0x02, 0x11, 0xe0, 0xb9, 0x09, 0x67, 0x2a, 0x1e, 0x58, - 0xf0, 0x67, 0x86, 0x13, 0x2f, 0x9e, 0x1d, 0xc3, 0x18, 0x01, 0xe1, 0xea, 0x83, 0x85, 0xc6, 0x72, - 0x21, 0x9d, 0x63, 0x8c, 0x66, 0xc0, 0x66, 0x5c, 0x2e, 0x61, 0x89, 0x00, 0xf1, 0xd8, 0x5e, 0x00, - 0x4e, 0x47, 0x04, 0xee, 0x8c, 0x13, 0x9f, 0xa7, 0xfc, 0xec, 0xb8, 0x39, 0xe7, 0x4b, 0x04, 0x78, - 0xcf, 0x87, 0x7c, 0xdf, 0xe4, 0x6c, 0x76, 0x7c, 0x0e, 0x0b, 0xb9, 0x73, 0x41, 0x05, 0x82, 0xb8, - 0x50, 0xcd, 0xe0, 0xbc, 0x19, 0x74, 0xd7, 0x0c, 0x42, 0x2f, 0x52, 0x98, 0x31, 0xe6, 0x03, 0xf3, - 0x2c, 0x9a, 0x7d, 0x08, 0x60, 0x20, 0x45, 0xde, 0xb2, 0xd6, 0x42, 0xd0, 0x41, 0x21, 0xb8, 0x8d, - 0x32, 0x71, 0x9f, 0x7e, 0xa1, 0xf5, 0xe8, 0x52, 0xf5, 0xd8, 0x9e, 0x07, 0xbb, 0x17, 0x0e, 0x45, - 0x9c, 0xf9, 0xfa, 0x43, 0x38, 0x34, 0x29, 0x14, 0xab, 0xf4, 0x7b, 0xea, 0xbc, 0x83, 0xc6, 0xc1, - 0x30, 0xdf, 0x42, 0x26, 0x91, 0x60, 0x21, 0xd8, 0x1c, 0xc6, 0xbc, 0x11, 0xd4, 0x71, 0x45, 0x66, - 0x37, 0xd5, 0x7b, 0x68, 0x4d, 0xe4, 0xcf, 0xb2, 0x10, 0x46, 0x24, 0xaa, 0x98, 0x0d, 0xec, 0xc1, - 0xfe, 0x9a, 0x6a, 0xc1, 0x24, 0x52, 0x5b, 0x75, 0xcd, 0x02, 0xdf, 0xa9, 0x81, 0xe4, 0x86, 0xe2, - 0xc5, 0x6a, 0x7b, 0x14, 0x6d, 0xee, 0xe1, 0xe9, 0x31, 0x88, 0x34, 0x89, 0x06, 0x50, 0xee, 0x41, - 0x2d, 0xdf, 0xde, 0x53, 0xf2, 0xdd, 0x97, 0x04, 0x90, 0x78, 0x17, 0xd4, 0x33, 0x2b, 0xe5, 0xca, - 0x95, 0x70, 0x99, 0x62, 0x54, 0x15, 0xc8, 0xdd, 0x6b, 0x55, 0x46, 0xb8, 0xb7, 0xd7, 0x2e, 0x6d, - 0xb4, 0x19, 0x33, 0x2e, 0x51, 0x43, 0x39, 0x70, 0xda, 0x70, 0x92, 0x4d, 0x87, 0x5d, 0x37, 0xcf, - 0x4b, 0xd4, 0xca, 0x2f, 0x7c, 0x77, 0xc4, 0x21, 0xfc, 0x59, 0xa3, 0x87, 0x6d, 0x33, 0xd4, 0x52, - 0x23, 0x14, 0xdd, 0x20, 0x60, 0xcb, 0xc7, 0xa4, 0x09, 0xa9, 0xfc, 0x84, 0xe6, 0x74, 0xdd, 0x62, - 0xb6, 0x30, 0xad, 0x55, 0x0b, 0x38, 0x98, 0x39, 0x2a, 0x77, 0x03, 0x65, 0x36, 0x47, 0x3c, 0xba, - 0x58, 0xd8, 0xea, 0xf4, 0x65, 0x20, 0xb0, 0xa4, 0xe8, 0xf6, 0xdb, 0xac, 0x66, 0x0f, 0x0f, 0xc4, - 0x61, 0x32, 0x40, 0xb2, 0xe3, 0x7a, 0x55, 0xe5, 0x3b, 0x1c, 0xe3, 0x27, 0x44, 0xd5, 0xd2, 0x2d, - 0xae, 0xc6, 0xa7, 0x55, 0xd1, 0xad, 0x2c, 0x30, 0x57, 0x98, 0x22, 0xb0, 0x14, 0x4e, 0x90, 0xcb, - 0x85, 0xdb, 0x41, 0x6d, 0x34, 0x75, 0x76, 0x93, 0xc0, 0x25, 0xd1, 0x91, 0xfa, 0x28, 0xa3, 0x22, - 0x73, 0x00, 0x62, 0x97, 0xb2, 0xf4, 0x20, 0xfd, 0x4e, 0x1d, 0x8a, 0x93, 0xd0, 0xbb, 0x50, 0x4c, - 0xbb, 0x46, 0xe8, 0x64, 0x7d, 0xdd, 0xe4, 0xb5, 0xc4, 0xdd, 0xf4, 0x0a, 0x58, 0xb3, 0x91, 0x24, - 0x72, 0x0e, 0xe7, 0xc9, 0xf9, 0x75, 0x04, 0xdb, 0x32, 0xfc, 0x7f, 0x17, 0xa1, 0x85, 0x09, 0xe4, - 0x76, 0xfb, 0xe2, 0xca, 0x41, 0xe8, 0x12, 0x2c, 0xef, 0x20, 0x14, 0xe0, 0x65, 0x3e, 0x17, 0x7b, - 0xd7, 0x76, 0xb4, 0xfd, 0x1f, 0x6a, 0xf1, 0xfc, 0xc5, 0x3d, 0xb4, 0xb9, 0xe8, 0x52, 0xe0, 0x68, - 0x5c, 0x76, 0x21, 0xc1, 0x2e, 0x95, 0xc8, 0x3f, 0xc4, 0x2c, 0xb8, 0x70, 0x10, 0xb8, 0x30, 0x6d, - 0x29, 0x18, 0xf8, 0x16, 0x9b, 0x0c, 0xdd, 0x78, 0xea, 0x4c, 0x5c, 0xba, 0xdd, 0x24, 0xb4, 0x83, - 0xdd, 0xc2, 0xd0, 0x0d, 0x03, 0x97, 0xf1, 0x48, 0xe3, 0x62, 0x17, 0x81, 0x4b, 0x77, 0xa4, 0x5f, - 0x5c, 0x05, 0x2e, 0xd7, 0x91, 0x41, 0xd2, 0xe6, 0x01, 0x04, 0xc7, 0x7b, 0xfb, 0x13, 0xd7, 0xe2, - 0xe1, 0x94, 0x6c, 0x1f, 0x96, 0x15, 0xa4, 0xd7, 0x50, 0xe0, 0xd5, 0x06, 0xdc, 0x19, 0x8e, 0x48, - 0xbb, 0x17, 0x07, 0x19, 0x6f, 0x36, 0x3b, 0xb0, 0x57, 0x56, 0xf9, 0xa9, 0xcc, 0xe6, 0x07, 0xdf, - 0xd7, 0x44, 0x46, 0x13, 0x5d, 0x92, 0xd2, 0x84, 0x65, 0xd3, 0xf5, 0x60, 0x53, 0xfb, 0xbe, 0x27, - 0xb9, 0x5f, 0x9c, 0x62, 0xdf, 0x8a, 0x60, 0xe4, 0x84, 0x94, 0xa3, 0x4a, 0x7a, 0x77, 0x04, 0x49, - 0x73, 0x98, 0xda, 0xcd, 0xf8, 0x37, 0x5d, 0x94, 0xd4, 0x41, 0x0f, 0x36, 0xc0, 0xbd, 0x76, 0xf0, - 0xaf, 0x3a, 0x38, 0x01, 0x11, 0x25, 0x29, 0xf2, 0xbd, 0xd7, 0x5c, 0x82, 0xf2, 0xee, 0x63, 0xfe, - 0xcb, 0xd5, 0xb8, 0x0b, 0x23, 0x2d, 0x85, 0x91, 0x06, 0xa3, 0x4c, 0x8d, 0xb5, 0x7a, 0xae, 0x2d, - 0x57, 0x6e, 0xdb, 0x19, 0x3a, 0xbd, 0x25, 0xac, 0x9f, 0xdf, 0x8c, 0x46, 0xa3, 0xce, 0x6e, 0xef, - 0xe0, 0xbb, 0xa0, 0x83, 0xec, 0xda, 0xe8, 0x49, 0x5c, 0xec, 0x78, 0x01, 0xfe, 0xbd, 0x92, 0x7f, - 0xc7, 0xb0, 0x85, 0xe3, 0x72, 0xb4, 0xa2, 0x84, 0xa3, 0xb6, 0xf2, 0xfd, 0xfa, 0x2f, 0x29, 0x5f, - 0x18, 0x86, 0x9b, 0x95, 0xcf, 0xfa, 0xf2, 0xdf, 0x75, 0xc3, 0xda, 0xbd, 0xf5, 0x59, 0xa4, 0x70, - 0x3a, 0x31, 0xb3, 0x04, 0x86, 0x09, 0x5f, 0x9e, 0xf7, 0xe7, 0x3d, 0x10, 0xfe, 0x58, 0xf1, 0xf5, - 0x59, 0x7c, 0x41, 0xba, 0x87, 0x67, 0xcf, 0x90, 0xd1, 0x82, 0x50, 0x01, 0xed, 0xa5, 0x53, 0xde, - 0xb6, 0x17, 0xad, 0x29, 0xb4, 0x71, 0xc5, 0xa4, 0xd0, 0x99, 0xd8, 0xdc, 0x3b, 0xf6, 0x90, 0x1d, - 0x34, 0x8c, 0x86, 0x66, 0xae, 0xfc, 0xe0, 0x23, 0x58, 0x2a, 0x1f, 0x90, 0xf5, 0x94, 0xf7, 0xbe, - 0x41, 0x08, 0x62, 0x1b, 0x72, 0x11, 0xa6, 0x82, 0x3c, 0x30, 0x93, 0xba, 0xd9, 0x44, 0x9c, 0x4e, - 0x47, 0xa3, 0x30, 0xf4, 0x0c, 0x54, 0xe5, 0x8a, 0x69, 0x16, 0x33, 0xd8, 0x64, 0xe5, 0x0f, 0x43, - 0x32, 0x4c, 0xca, 0x45, 0xa5, 0x5f, 0x93, 0x55, 0xd5, 0xb2, 0x23, 0xb7, 0x4f, 0x44, 0x7e, 0xd3, - 0x83, 0x02, 0x8d, 0x22, 0xd2, 0xa2, 0x00, 0x82, 0x98, 0x33, 0x7f, 0x40, 0xbe, 0xad, 0xfc, 0xa8, - 0x16, 0xf4, 0xfa, 0x7a, 0x04, 0xdb, 0x5b, 0x0a, 0xed, 0x51, 0xde, 0x41, 0x47, 0xc2, 0xff, 0xe1, - 0xd2, 0x25, 0xfb, 0x6b, 0x08, 0xd9, 0x6a, 0xbd, 0x01, 0x7d, 0xb1, 0xba, 0x20, 0xd7, 0xce, 0x50, - 0xfa, 0x9b, 0x51, 0x7b, 0x38, 0xf9, 0x9c, 0xae, 0xcd, 0xa7, 0xf4, 0x5a, 0x97, 0x80, 0x5a, 0x3e, - 0xbf, 0xae, 0xcd, 0xe7, 0xce, 0x6b, 0x5d, 0x33, 0x6a, 0xf9, 0xfc, 0xbd, 0x99, 0x4f, 0x77, 0xce, - 0x23, 0x3e, 0x6a, 0x9b, 0x19, 0x8b, 0x5a, 0x7a, 0x9c, 0xcc, 0xce, 0x28, 0xad, 0xed, 0x0b, 0x41, - 0x15, 0xb7, 0xed, 0x0a, 0xd2, 0x70, 0x55, 0xdf, 0x13, 0x06, 0x66, 0xb0, 0x5c, 0xe0, 0xb4, 0x35, - 0xfe, 0x62, 0x04, 0x54, 0x71, 0xc1, 0xce, 0x3a, 0x59, 0xeb, 0x89, 0xa3, 0x3e, 0x36, 0x8b, 0x58, - 0x04, 0xf5, 0xb0, 0x2b, 0x64, 0x25, 0xa8, 0x85, 0x8d, 0xe3, 0x52, 0xc1, 0xc0, 0xcb, 0x57, 0xb5, - 0x2a, 0xfe, 0xe6, 0xfa, 0xd9, 0xea, 0xc3, 0x40, 0xd0, 0x7e, 0xf2, 0xa9, 0x1a, 0x73, 0x44, 0xa8, - 0x3a, 0xf3, 0x57, 0x64, 0x04, 0x77, 0xf0, 0x89, 0x9a, 0x6e, 0x4c, 0xce, 0x8c, 0xf9, 0xf2, 0x13, - 0x16, 0x59, 0x5b, 0x83, 0x2c, 0x48, 0x61, 0xd7, 0xa9, 0x7d, 0x13, 0xb6, 0x9b, 0x10, 0xcf, 0xa4, - 0x02, 0x01, 0xa6, 0xa0, 0x87, 0x7e, 0x4c, 0x61, 0xd5, 0xec, 0x22, 0xde, 0xf7, 0xda, 0x21, 0x43, - 0x6c, 0xd9, 0xfd, 0x2d, 0x4c, 0x6a, 0xf8, 0x08, 0xbb, 0x49, 0xab, 0xfe, 0x4d, 0x1f, 0xa5, 0x7c, - 0x65, 0x75, 0xac, 0x9f, 0x14, 0x46, 0xd0, 0x0b, 0xa5, 0xe2, 0xce, 0xcb, 0xf7, 0x8a, 0x28, 0x09, - 0x46, 0xd0, 0x09, 0x99, 0x09, 0xba, 0xa2, 0xa0, 0x71, 0x9c, 0x9a, 0xa0, 0x31, 0x05, 0xc1, 0xd2, - 0x52, 0x6f, 0x30, 0xfa, 0x88, 0x32, 0xeb, 0xc3, 0x47, 0xa2, 0xb3, 0xb3, 0xf3, 0x80, 0xfe, 0x3b, - 0x5f, 0x2c, 0xa4, 0xd9, 0x1b, 0xb1, 0xfd, 0x29, 0x76, 0x7c, 0xc6, 0x8d, 0x93, 0x9c, 0xd7, 0xcd, - 0xda, 0x8e, 0xbe, 0x75, 0x94, 0xa2, 0x5f, 0x77, 0xbb, 0x49, 0x60, 0x32, 0xa9, 0x6c, 0xbd, 0xb4, - 0x23, 0x0f, 0x48, 0x9e, 0xfa, 0x3f, 0x63, 0x11, 0x61, 0x2c, 0xcf, 0x0b, 0xcd, 0x3b, 0x2f, 0x16, - 0xcf, 0x51, 0x3e, 0xfc, 0x18, 0xf7, 0x2f, 0x96, 0x32, 0xa3, 0x8b, 0x3d, 0xbc, 0x6e, 0xd0, 0xb5, - 0xc1, 0x34, 0xbd, 0x10, 0x4e, 0x96, 0x71, 0x17, 0xd7, 0x52, 0x49, 0x96, 0xf3, 0xe6, 0xe7, 0x9f, - 0x4e, 0xb0, 0xb8, 0x85, 0xcf, 0x2a, 0x91, 0x77, 0xb8, 0xde, 0xf0, 0x72, 0x2f, 0x02, 0xba, 0xe8, - 0xf2, 0xfc, 0xe1, 0x06, 0xc7, 0x50, 0x3b, 0xc7, 0xf5, 0x68, 0xc2, 0xfc, 0xd6, 0x18, 0x51, 0x42, - 0x88, 0x0e, 0x1b, 0xd4, 0xa4, 0x78, 0xbf, 0xc5, 0x8f, 0xda, 0x48, 0x54, 0xe9, 0xcd, 0x82, 0x4f, - 0xc4, 0xd7, 0x13, 0xfb, 0x38, 0x8c, 0x94, 0x2d, 0xff, 0x8d, 0x0b, 0xa8, 0x2c, 0x27, 0x3e, 0x33, - 0xeb, 0x0f, 0x72, 0xfd, 0x5c, 0x25, 0xd5, 0xf5, 0xed, 0x18, 0x55, 0xfd, 0xcf, 0x5f, 0x25, 0xc5, - 0x24, 0xcf, 0xf3, 0xcf, 0x89, 0x78, 0x8e, 0xcc, 0x4f, 0xd0, 0x2c, 0x9f, 0x13, 0xd4, 0x38, 0xd4, - 0xa1, 0xba, 0x15, 0xa0, 0x5a, 0xb7, 0x7b, 0x3d, 0xd9, 0x89, 0x7b, 0x2f, 0xfd, 0xa3, 0x7d, 0x84, - 0x5a, 0xed, 0xe2, 0x67, 0xfd, 0xe0, 0x7a, 0x72, 0xd4, 0x57, 0x8f, 0xfb, 0x21, 0xee, 0x86, 0x2f, - 0x5e, 0xc4, 0xf1, 0xf5, 0x84, 0x42, 0x76, 0xe2, 0x7d, 0x0c, 0x09, 0x5f, 0x5a, 0x21, 0x90, 0x81, - 0x3a, 0x00, 0x22, 0x8c, 0x97, 0xef, 0x88, 0x56, 0x17, 0xd7, 0x25, 0xba, 0x8e, 0x5e, 0x4f, 0x16, - 0x41, 0x07, 0x41, 0xd3, 0x82, 0xce, 0x41, 0xf8, 0x1d, 0x92, 0xdf, 0x06, 0x7f, 0xed, 0x29, 0xb0, - 0xee, 0x6c, 0x5a, 0x38, 0xc0, 0xbd, 0x10, 0xf0, 0x0b, 0x69, 0x67, 0x59, 0x79, 0x8c, 0xef, 0x9d, - 0x35, 0x92, 0xa4, 0x3d, 0x90, 0xc4, 0x3c, 0x7f, 0xa0, 0xe8, 0xa5, 0x96, 0x8b, 0x73, 0xb6, 0x57, - 0x21, 0x42, 0xbb, 0x4e, 0x93, 0xe2, 0xa6, 0xf3, 0x8b, 0x18, 0xe7, 0xb9, 0x94, 0xac, 0xbb, 0xfc, - 0x7d, 0x38, 0xc8, 0x37, 0x48, 0x93, 0x0a, 0x31, 0x8d, 0x35, 0xdc, 0x9f, 0x52, 0xe0, 0xa8, 0x22, - 0x9f, 0xba, 0x60, 0xc3, 0x70, 0x06, 0x29, 0xdd, 0xa5, 0xbc, 0x28, 0xb9, 0x8c, 0xaa, 0x0e, 0xa7, - 0xfe, 0x9f, 0x2c, 0x2d, 0x7f, 0xd9, 0x14, 0xf6, 0x94, 0x38, 0xff, 0x54, 0x19, 0x82, 0x25, 0xd9, - 0x4d, 0xeb, 0xd9, 0x51, 0x9b, 0x6a, 0x4b, 0xb7, 0x37, 0xb0, 0xfd, 0xd6, 0xe6, 0xec, 0x42, 0x11, - 0xb2, 0x2d, 0x5b, 0xf3, 0x7c, 0x4b, 0x57, 0xa9, 0xf3, 0x05, 0xc3, 0x3a, 0xb2, 0xed, 0x8d, 0x21, - 0x30, 0xf2, 0x59, 0x7c, 0x73, 0x1f, 0x58, 0x01, 0x90, 0xfe, 0x9f, 0xa4, 0xe5, 0xb0, 0xa2, 0x7c, - 0x8a, 0x6f, 0xae, 0x6d, 0x44, 0xfc, 0x9e, 0xe3, 0xec, 0x65, 0x7b, 0xc4, 0x49, 0x1b, 0xfa, 0x72, - 0x8f, 0x3b, 0x52, 0xca, 0x48, 0x8c, 0xd9, 0x37, 0xb0, 0x4e, 0xdb, 0x90, 0xce, 0x33, 0x2b, 0xdc, - 0xa5, 0x60, 0x20, 0xaa, 0xae, 0xd3, 0x2a, 0x2f, 0xe0, 0xb0, 0x8b, 0xf3, 0xf6, 0xb8, 0x12, 0x37, - 0x5d, 0xef, 0x3e, 0x25, 0xba, 0x88, 0x07, 0x4f, 0xba, 0x95, 0xe1, 0x59, 0x8f, 0x95, 0x21, 0x96, - 0x42, 0xb4, 0x62, 0x46, 0x13, 0x38, 0x60, 0xee, 0xdd, 0xd1, 0x65, 0x0b, 0xfc, 0xa3, 0xba, 0xd0, - 0xfe, 0x22, 0xbc, 0x99, 0x71, 0xe7, 0x20, 0x41, 0x64, 0xd7, 0x3e, 0x17, 0x2e, 0x9c, 0x78, 0xf3, - 0x45, 0x70, 0xa5, 0x4d, 0x6f, 0x5c, 0x89, 0x30, 0x90, 0x98, 0xb6, 0x56, 0x31, 0xcb, 0x46, 0x31, - 0x83, 0x1a, 0x74, 0xf2, 0x7c, 0x16, 0xd9, 0x19, 0x07, 0x77, 0x36, 0xec, 0x2b, 0x3c, 0x2c, 0x9a, - 0x92, 0x76, 0x20, 0x1c, 0x86, 0x28, 0x11, 0xfc, 0xf5, 0xaf, 0x8e, 0xd9, 0xab, 0x5e, 0x30, 0x5a, - 0x99, 0xdb, 0x60, 0x93, 0xe1, 0xc3, 0x0f, 0xc3, 0x19, 0xc9, 0x0e, 0x3b, 0xc2, 0x77, 0x57, 0xdc, - 0xaf, 0x00, 0x51, 0xb6, 0xd1, 0x93, 0x37, 0x84, 0x44, 0x2e, 0x51, 0x69, 0x67, 0xb7, 0xaf, 0x6b, - 0x5d, 0x81, 0xd6, 0x76, 0x1a, 0x09, 0x7a, 0x09, 0xf2, 0x40, 0x4f, 0x9b, 0x61, 0x5d, 0xf5, 0xd7, - 0xa8, 0xfc, 0x4e, 0x0f, 0xaa, 0xbf, 0x08, 0x0e, 0x42, 0x58, 0xab, 0xbb, 0xeb, 0x30, 0x7f, 0xad, - 0x0d, 0x11, 0xf1, 0xa8, 0x09, 0x06, 0x48, 0x0f, 0x4d, 0xb1, 0x5c, 0x16, 0xd3, 0xe0, 0x12, 0xa8, - 0xf3, 0x97, 0x87, 0x9c, 0xba, 0xbb, 0xae, 0x86, 0x97, 0x90, 0x28, 0xa4, 0xab, 0xb9, 0x30, 0x93, - 0xd8, 0x9b, 0x91, 0x53, 0x26, 0xec, 0x6c, 0x15, 0x88, 0x14, 0xbd, 0x41, 0x72, 0xa8, 0x71, 0x73, - 0x12, 0xc5, 0x6a, 0x90, 0xc5, 0xe5, 0x19, 0x6c, 0xeb, 0xe9, 0x86, 0xdc, 0x91, 0x20, 0xfe, 0xff, - 0x63, 0x36, 0x13, 0xc5, 0xeb, 0x11, 0x82, 0x98, 0x0f, 0xb2, 0x5a, 0xe9, 0x53, 0xad, 0x4a, 0x97, - 0x55, 0x70, 0xe3, 0x23, 0xf5, 0xa2, 0x72, 0x2a, 0x86, 0x5e, 0xb6, 0xd8, 0x02, 0x53, 0x31, 0xca, - 0x18, 0xae, 0xbc, 0x0d, 0xe5, 0x43, 0xce, 0x5f, 0x41, 0xe7, 0x82, 0x24, 0xbf, 0x2d, 0xdd, 0x26, - 0x54, 0x22, 0x0f, 0x52, 0x3c, 0xd8, 0x6e, 0xc4, 0x98, 0x09, 0x76, 0xd5, 0x5b, 0x3c, 0x3c, 0xd0, - 0xe6, 0xce, 0xbf, 0x3c, 0xb2, 0x38, 0xa3, 0xc8, 0xe2, 0x4d, 0x1f, 0xc8, 0xa3, 0x1d, 0x55, 0x8e, - 0xc8, 0xdf, 0x97, 0xa9, 0xce, 0xd9, 0x43, 0x8c, 0x14, 0x66, 0xbe, 0x48, 0xd2, 0x8a, 0x58, 0x2a, - 0x5a, 0x9a, 0x9b, 0x2d, 0xd7, 0x74, 0xb1, 0x43, 0x5d, 0xcb, 0x3c, 0x6f, 0xf2, 0x3e, 0x69, 0x4a, - 0x7b, 0xe7, 0xbc, 0x4f, 0xd9, 0xbe, 0x7b, 0x50, 0xa4, 0x32, 0xc2, 0x66, 0xf8, 0xab, 0x14, 0x41, - 0xac, 0x72, 0xb7, 0x57, 0x12, 0x63, 0x78, 0xae, 0xeb, 0xaa, 0x33, 0x1e, 0x1a, 0xb2, 0xd2, 0x69, - 0x5a, 0x45, 0x4f, 0x6e, 0x83, 0xaf, 0xad, 0x65, 0x05, 0xb5, 0xac, 0xb4, 0x3b, 0x86, 0xa9, 0xad, - 0x33, 0x1b, 0x10, 0x4d, 0x75, 0x54, 0xbd, 0x2a, 0xcc, 0x39, 0x3c, 0x40, 0x42, 0x4b, 0x03, 0xe4, - 0x84, 0x6d, 0xe0, 0x5e, 0x42, 0x17, 0x78, 0xeb, 0xc6, 0x57, 0xa3, 0x94, 0x9e, 0x06, 0x2c, 0x21, - 0x67, 0x68, 0xfa, 0xcb, 0x62, 0x3a, 0x5e, 0x53, 0x78, 0x7c, 0x96, 0x9d, 0x23, 0x3f, 0x4b, 0xb7, - 0xe2, 0x78, 0x32, 0x53, 0xff, 0xb0, 0xf4, 0x35, 0x92, 0x16, 0x1c, 0xa2, 0xd2, 0xc3, 0x72, 0xb7, - 0x1a, 0xa4, 0x30, 0xf4, 0x39, 0x16, 0x6d, 0x36, 0x82, 0x2f, 0xf7, 0xec, 0xf6, 0x98, 0xb4, 0xaa, - 0x51, 0x08, 0x0b, 0xea, 0xde, 0x9f, 0x67, 0x0e, 0xf6, 0xbd, 0x5b, 0x9c, 0xaa, 0xc0, 0xd2, 0x58, - 0x40, 0xf7, 0x76, 0xa1, 0x2c, 0x1c, 0x21, 0xb7, 0x6c, 0xf5, 0x72, 0x59, 0x11, 0x65, 0xf1, 0xec, - 0x3b, 0x3c, 0x58, 0x4a, 0xd3, 0xa8, 0xda, 0xd9, 0xd4, 0x92, 0x6c, 0xd8, 0x0d, 0x9f, 0x41, 0xa7, - 0x84, 0xe5, 0x83, 0x9f, 0x4b, 0x79, 0x4f, 0xca, 0x8a, 0x33, 0xe9, 0xae, 0x5d, 0x63, 0x59, 0x86, - 0x16, 0x75, 0x94, 0xcd, 0x65, 0xab, 0xb2, 0xd9, 0xa2, 0xed, 0x15, 0xd0, 0xf1, 0x95, 0xcb, 0x84, - 0xac, 0x62, 0xe9, 0xbb, 0x2f, 0xbc, 0xaf, 0xb6, 0x78, 0xfe, 0x9b, 0x18, 0x81, 0x38, 0xa2, 0xee, - 0x54, 0x9d, 0x8d, 0x45, 0xae, 0xa7, 0x32, 0xfe, 0x48, 0x26, 0x1d, 0xe2, 0x01, 0x6b, 0x93, 0x78, - 0xe6, 0x0f, 0xd5, 0xcd, 0xbb, 0xec, 0x3c, 0x9e, 0xc9, 0x1f, 0xda, 0x9a, 0x11, 0x98, 0x31, 0xa8, - 0x63, 0x11, 0x04, 0x36, 0x74, 0xa1, 0x0e, 0x90, 0x28, 0x3a, 0xbe, 0x81, 0xec, 0xd1, 0x61, 0xb1, - 0x41, 0xbb, 0xca, 0x08, 0xc1, 0xc6, 0x8e, 0x41, 0x64, 0x05, 0xf5, 0xbc, 0x10, 0xa6, 0xdb, 0xc9, - 0x08, 0xf1, 0x87, 0xd4, 0xad, 0x1e, 0xee, 0x21, 0xdb, 0x98, 0xc8, 0x97, 0x82, 0x32, 0xe2, 0x9c, - 0xb3, 0xae, 0x01, 0x65, 0x8a, 0xab, 0x67, 0x69, 0x0a, 0xe3, 0x05, 0x3c, 0x4b, 0x7e, 0x85, 0x73, - 0x3d, 0x04, 0x28, 0xa3, 0x4a, 0x66, 0xdb, 0x79, 0xe3, 0x14, 0x75, 0xfc, 0x69, 0xd3, 0xdc, 0x29, - 0x11, 0xb9, 0x39, 0x41, 0xcd, 0x38, 0xce, 0x34, 0x0c, 0x74, 0xff, 0x24, 0x5b, 0x6a, 0x52, 0x69, - 0xdc, 0x98, 0x62, 0xe4, 0x11, 0x8b, 0x24, 0x7d, 0x49, 0x0d, 0x3c, 0x6f, 0x33, 0x2b, 0xcd, 0xa2, - 0xfa, 0x13, 0x97, 0x9e, 0x2c, 0x65, 0x7c, 0x46, 0x2b, 0xa2, 0x51, 0xc6, 0x37, 0x7c, 0x7f, 0xc6, - 0xe9, 0x6d, 0xd1, 0x6d, 0xa5, 0x9b, 0x6b, 0xbe, 0xb1, 0xdd, 0x71, 0xf8, 0xed, 0x82, 0x51, 0x28, - 0xfe, 0xf7, 0x75, 0x93, 0xb6, 0x48, 0x8d, 0x5b, 0xe4, 0x06, 0x0e, 0x3e, 0xc4, 0x2f, 0x68, 0x16, - 0x26, 0x54, 0x12, 0x38, 0x20, 0x3f, 0x84, 0x92, 0xe2, 0x83, 0x2a, 0x77, 0x4a, 0xf6, 0x46, 0xd9, - 0xea, 0x03, 0xab, 0xf4, 0x4c, 0x91, 0x31, 0xd7, 0x22, 0x83, 0x84, 0xc2, 0xf8, 0x98, 0xdf, 0x42, - 0x2f, 0x95, 0xc3, 0x7a, 0x00, 0x72, 0xbb, 0x08, 0x4b, 0xc9, 0x3a, 0x2a, 0x8f, 0x8b, 0x9c, 0xc0, - 0xe6, 0x30, 0x17, 0xb5, 0x24, 0x32, 0x2b, 0xa5, 0xb0, 0xb9, 0x28, 0xe9, 0x90, 0xa2, 0x69, 0x1a, - 0xcb, 0xdf, 0x40, 0x9c, 0xec, 0x7a, 0x90, 0x56, 0x5b, 0xc4, 0xe1, 0xfc, 0xaf, 0x48, 0x3f, 0xed, - 0xd3, 0xf8, 0xe4, 0xb3, 0xda, 0xc7, 0x66, 0x13, 0x84, 0xf8, 0x57, 0x2b, 0x12, 0xac, 0x5e, 0xa3, - 0xe2, 0x4a, 0x58, 0xd3, 0x98, 0x96, 0x7d, 0x19, 0xe8, 0xee, 0xb8, 0x3a, 0xca, 0xc0, 0x9e, 0xeb, - 0x59, 0x4e, 0x6d, 0xee, 0xf9, 0x8f, 0x8f, 0x76, 0x35, 0xaa, 0xda, 0x73, 0x09, 0xcf, 0x5d, 0x68, - 0x4c, 0xd5, 0x54, 0x90, 0x1b, 0x6a, 0xb0, 0xff, 0xa9, 0x1b, 0xf6, 0xea, 0xed, 0x8f, 0xaf, 0x3f, - 0x74, 0xbd, 0x6a, 0x34, 0x9e, 0xf0, 0x61, 0x14, 0xe4, 0x73, 0xee, 0x85, 0x73, 0x39, 0xb2, 0x3e, - 0xe6, 0xb3, 0xe0, 0x7f, 0x5f, 0xb7, 0x5d, 0x50, 0x92, 0xc3, 0x6b, 0xab, 0xab, 0xfa, 0x26, 0xf4, - 0x1d, 0xac, 0x3c, 0x1a, 0xfb, 0x5c, 0x7f, 0x8e, 0xf1, 0xec, 0x59, 0xad, 0x1d, 0x9a, 0xc5, 0x8a, - 0xab, 0xdd, 0x07, 0x24, 0x12, 0x25, 0x53, 0x13, 0x1d, 0x51, 0x4b, 0xa4, 0x7b, 0xdb, 0xe9, 0x66, - 0xdf, 0x97, 0xcf, 0xef, 0x7f, 0x83, 0x53, 0x6d, 0xfe, 0x2e, 0x79, 0x10, 0x97, 0x08, 0x63, 0x19, - 0x6e, 0xe1, 0x1a, 0xdb, 0xe5, 0xe2, 0x1e, 0x85, 0x84, 0x9d, 0xe5, 0xeb, 0x80, 0x43, 0xe2, 0x2d, - 0xc6, 0x80, 0xf4, 0x68, 0xaf, 0xd7, 0x87, 0x63, 0xcb, 0x26, 0x55, 0x05, 0x11, 0x86, 0x5b, 0x06, - 0xf2, 0x81, 0x5a, 0xf3, 0xa9, 0x8b, 0x5c, 0xa1, 0x72, 0x38, 0xae, 0x55, 0x5f, 0xba, 0xde, 0xee, - 0x6e, 0xe2, 0x05, 0x9c, 0x6e, 0x17, 0x11, 0xbf, 0xd3, 0xb8, 0xb7, 0x9b, 0x2a, 0x3d, 0xdb, 0x08, - 0x0f, 0x5e, 0x9f, 0x4b, 0x59, 0x04, 0x38, 0x45, 0x2c, 0xcb, 0x63, 0xea, 0x05, 0xa9, 0xbf, 0x69, - 0xbb, 0xf6, 0x20, 0x23, 0x39, 0x23, 0x6c, 0x47, 0x2e, 0x42, 0xbb, 0x9f, 0xdf, 0xff, 0x16, 0x4b, - 0x99, 0x9c, 0x96, 0x0f, 0x82, 0xc2, 0x1e, 0x58, 0x12, 0x36, 0x5d, 0x40, 0x94, 0x0d, 0xcc, 0x38, - 0xc7, 0x83, 0xf2, 0x75, 0x9e, 0x62, 0x21, 0xf0, 0x2b, 0x92, 0x17, 0x2c, 0x50, 0x61, 0x63, 0xa5, - 0x63, 0xa6, 0xf5, 0xc5, 0x49, 0x27, 0x63, 0x4a, 0xae, 0x02, 0xa8, 0xfd, 0x0b, 0x93, 0x0c, 0xd9, - 0x95, 0x55, 0x56, 0x92, 0xd5, 0x83, 0x7a, 0x1a, 0x56, 0x08, 0x14, 0xba, 0xee, 0xe3, 0xfb, 0xdf, - 0x1a, 0xb4, 0x1f, 0x1c, 0x81, 0xe1, 0x73, 0x09, 0x0c, 0x8e, 0x02, 0x5e, 0xc5, 0x72, 0x90, 0xbc, - 0x0a, 0xda, 0x25, 0xbe, 0xd9, 0xe4, 0xc6, 0x0b, 0x64, 0x14, 0xf4, 0x60, 0xa0, 0x5f, 0x90, 0x3f, - 0x6e, 0x95, 0xfd, 0x17, 0xcf, 0x9e, 0xa9, 0xd4, 0xa4, 0x28, 0x54, 0xea, 0x48, 0xbc, 0x77, 0x0a, - 0xcd, 0xc5, 0xef, 0x9e, 0x3d, 0x83, 0xd8, 0x10, 0x79, 0x1f, 0x7f, 0x1c, 0xf6, 0xfa, 0x07, 0xe1, - 0xb0, 0xbf, 0x1f, 0x46, 0xfd, 0x1f, 0x60, 0x87, 0xd9, 0xc2, 0x92, 0x60, 0x28, 0xe5, 0x45, 0x65, - 0xa7, 0xdf, 0x8f, 0x8f, 0xe6, 0x0b, 0x14, 0xca, 0x0f, 0x38, 0xbf, 0x50, 0xd7, 0x04, 0x3d, 0xcf, - 0xf7, 0x56, 0xeb, 0x23, 0x41, 0xed, 0x6b, 0x7c, 0x79, 0xf1, 0x04, 0xca, 0x6e, 0xc3, 0xdf, 0x73, - 0x79, 0x6c, 0xf4, 0x7b, 0xbb, 0xf1, 0x79, 0xe4, 0x30, 0x09, 0x5c, 0xac, 0x8a, 0x6e, 0x6e, 0x82, - 0x40, 0x43, 0x40, 0xbc, 0xa1, 0x17, 0xa2, 0xec, 0x78, 0x5b, 0xe5, 0xde, 0x13, 0x3a, 0x51, 0x8f, - 0x4b, 0xbe, 0x9e, 0xad, 0xca, 0x81, 0xda, 0x27, 0xc8, 0xed, 0x05, 0xfe, 0xb1, 0xf1, 0x0b, 0x04, - 0x2c, 0x4c, 0x6f, 0x84, 0x40, 0xf7, 0xec, 0xbd, 0xbd, 0x3d, 0xc9, 0x5e, 0xae, 0x48, 0x88, 0xb4, - 0xca, 0x46, 0xf3, 0x96, 0xc3, 0xae, 0x74, 0x9d, 0x4c, 0x41, 0x2a, 0xe4, 0x4b, 0x26, 0x20, 0x73, - 0x92, 0x63, 0x1e, 0xff, 0x2a, 0x7d, 0xdf, 0x06, 0x28, 0x4a, 0x60, 0x24, 0xfb, 0xf2, 0x0d, 0x82, - 0x02, 0x0c, 0x69, 0xa5, 0x7d, 0x7c, 0x74, 0x05, 0x55, 0x11, 0xcc, 0x21, 0x94, 0x1c, 0x26, 0x02, - 0xab, 0x34, 0x10, 0x16, 0x50, 0x2a, 0x3f, 0x6a, 0x8d, 0x4f, 0xd8, 0x04, 0x5a, 0x03, 0xd6, 0xa8, - 0xc6, 0x82, 0xe7, 0xd0, 0xd2, 0x59, 0x9a, 0x79, 0x01, 0x8c, 0x71, 0x39, 0xbd, 0x60, 0xe7, 0x25, - 0x19, 0x01, 0x27, 0xab, 0xc8, 0xd0, 0x8c, 0xc5, 0x83, 0xca, 0x23, 0xde, 0x09, 0xea, 0x7b, 0xc8, - 0xa7, 0x19, 0xeb, 0x26, 0x47, 0x67, 0xbf, 0xfc, 0x1e, 0x32, 0xc3, 0x09, 0x1d, 0xe0, 0xc1, 0xa1, - 0x35, 0x62, 0x85, 0xbb, 0x14, 0xc3, 0xfc, 0xaf, 0x89, 0x49, 0x59, 0x82, 0x64, 0xee, 0x05, 0xb8, - 0xc6, 0xae, 0x89, 0x77, 0x3b, 0x5b, 0x17, 0x8d, 0x3e, 0x0c, 0x87, 0x30, 0x13, 0xef, 0xbf, 0x0e, - 0x9f, 0xc3, 0x3a, 0x98, 0xcc, 0xaa, 0xa3, 0xce, 0xe1, 0x73, 0xa4, 0x6e, 0xc2, 0xbf, 0xd7, 0xd5, - 0x4d, 0x7a, 0xd4, 0xf9, 0x3f, 0x4c, 0xe6, 0xe3, 0x68, 0x05, 0x8d, 0x01, 0x00 + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xcc, 0xbd, 0xe9, 0x76, 0xe2, 0xc8, + 0xb2, 0x30, 0xfa, 0xdf, 0x4f, 0xa1, 0x52, 0xf5, 0x76, 0x41, 0x23, 0x83, 0x18, 0xcd, 0x50, 0xd8, + 0x1f, 0xc6, 0xf3, 0x6c, 0xe3, 0xb9, 0x4e, 0xad, 0x53, 0x02, 0x12, 0x90, 0x2d, 0x24, 0x59, 0x12, + 0x83, 0x4d, 0x73, 0x1e, 0xe3, 0x5b, 0xeb, 0xbe, 0xc0, 0xfd, 0x71, 0xef, 0x5b, 0xdd, 0x27, 0xb9, + 0x11, 0x99, 0x1a, 0x52, 0x42, 0x60, 0x57, 0xef, 0x3e, 0x67, 0x7d, 0xbd, 0x77, 0x19, 0x29, 0x87, + 0xc8, 0xcc, 0xc8, 0xc8, 0xc8, 0x88, 0xc8, 0xc8, 0xd0, 0xf7, 0x2f, 0xbb, 0x17, 0xcd, 0x9b, 0xc7, + 0xcb, 0x3d, 0x61, 0xe0, 0x0c, 0xb5, 0x2d, 0xe1, 0x3b, 0xfe, 0x08, 0x9a, 0xa2, 0xf7, 0xeb, 0x22, + 0xd1, 0x45, 0x4c, 0x20, 0x4a, 0x17, 0x7e, 0x86, 0xc4, 0x51, 0x04, 0x5d, 0x19, 0x92, 0xba, 0x38, + 0x56, 0xc9, 0xc4, 0x34, 0x2c, 0x47, 0x14, 0xd6, 0x3a, 0x86, 0xee, 0x10, 0xdd, 0xa9, 0x8b, 0x13, + 0xb5, 0xeb, 0x0c, 0xea, 0x5d, 0x32, 0x56, 0x3b, 0x64, 0x83, 0xbe, 0x48, 0xaa, 0xae, 0x3a, 0xaa, + 0xa2, 0x6d, 0xd8, 0x1d, 0x45, 0x23, 0xf5, 0xac, 0x34, 0x84, 0x84, 0xe1, 0x68, 0xe8, 0xbd, 0x8b, + 0x1e, 0xd0, 0xb5, 0xce, 0x40, 0xb1, 0x6c, 0x02, 0x40, 0x46, 0x4e, 0x6f, 0xa3, 0x2c, 0x86, 0x1b, + 0x73, 0x06, 0x64, 0x48, 0x36, 0x3a, 0x86, 0x66, 0x58, 0xa2, 0xe0, 0x37, 0xf7, 0x35, 0x47, 0xff, + 0xe3, 0x60, 0x78, 0x39, 0x6f, 0xc4, 0x16, 0xdd, 0xaa, 0x8a, 0x69, 0x6a, 0x64, 0x63, 0x68, 0xb4, + 0x55, 0xf8, 0x99, 0x90, 0xf6, 0x06, 0x24, 0x6c, 0x74, 0x14, 0x53, 0x69, 0x6b, 0x04, 0x6b, 0x6a, + 0xaa, 0xfe, 0x22, 0x58, 0x44, 0xab, 0x8b, 0xf6, 0x00, 0x86, 0xd3, 0x19, 0x39, 0x82, 0x0a, 0x70, + 0x60, 0x58, 0x03, 0x8b, 0xf4, 0xea, 0x62, 0x57, 0x71, 0x94, 0xaa, 0x3a, 0x54, 0xfa, 0x24, 0x33, + 0xdd, 0xc0, 0x9c, 0x5a, 0x5b, 0xb1, 0x49, 0xa9, 0x20, 0x35, 0x1a, 0x8d, 0x9d, 0x46, 0x63, 0xaf, + 0xb1, 0x07, 0x7f, 0xf1, 0xf7, 0xa0, 0xd1, 0x3c, 0xc0, 0xa7, 0xfd, 0x3e, 0xfc, 0x39, 0xd2, 0xae, + 0x6e, 0x5e, 0x3a, 0xe7, 0xcd, 0x81, 0x71, 0x82, 0x69, 0xbb, 0xb7, 0xda, 0xd1, 0xf5, 0xfe, 0x11, + 0x3e, 0x5e, 0xb1, 0xd2, 0x7d, 0x5a, 0xf6, 0x30, 0x73, 0x99, 0x79, 0xc4, 0x94, 0xbd, 0xec, 0xf1, + 0xf5, 0xde, 0xfe, 0xed, 0xc5, 0x51, 0xf6, 0x19, 0x92, 0x32, 0x97, 0x93, 0x8b, 0x69, 0xff, 0xfc, + 0x80, 0x34, 0x6e, 0xcf, 0xa6, 0x7b, 0x95, 0x83, 0x52, 0xe7, 0xaa, 0x79, 0xb2, 0x7b, 0xdf, 0x18, + 0x98, 0x8d, 0xdd, 0xa7, 0x5c, 0xaf, 0x7c, 0x79, 0xf6, 0xbc, 0xd3, 0xca, 0x5f, 0xdd, 0xcb, 0xe5, + 0xab, 0x93, 0x9c, 0x7c, 0xa2, 0x3c, 0x35, 0x73, 0xfd, 0x5e, 0xb3, 0x32, 0x68, 0xea, 0xaf, 0xc6, + 0xc8, 0x38, 0xef, 0x37, 0xae, 0xfb, 0x8f, 0x9b, 0xef, 0x67, 0xd3, 0xc6, 0xdb, 0xb9, 0x76, 0xdb, + 0xbd, 0x3a, 0xd4, 0x1e, 0xd4, 0x86, 0x76, 0x91, 0x3b, 0xdb, 0x6d, 0xec, 0x96, 0xf2, 0x7b, 0x77, + 0xaf, 0xe7, 0x87, 0x0d, 0x22, 0x37, 0x68, 0x47, 0xb4, 0xfd, 0x9b, 0x97, 0xd6, 0xe8, 0x6a, 0xd8, + 0x6c, 0x8a, 0x5b, 0x6b, 0xc2, 0x77, 0x47, 0x75, 0x34, 0xb2, 0x75, 0x7f, 0xba, 0xb7, 0xfb, 0x3d, + 0xc3, 0x9e, 0x85, 0xef, 0x76, 0xc7, 0x52, 0x4d, 0x67, 0x6b, 0xad, 0x37, 0xd2, 0x3b, 0x8e, 0x6a, + 0xe8, 0x42, 0x8f, 0x90, 0x6e, 0x5b, 0xe9, 0xbc, 0x24, 0x92, 0xb3, 0xf9, 0x58, 0xb1, 0x04, 0x98, + 0x72, 0xa3, 0x33, 0x1a, 0x02, 0xe6, 0xd3, 0x7d, 0xe2, 0xec, 0x69, 0x04, 0x1f, 0xed, 0x9d, 0xb7, + 0x1b, 0xa5, 0x7f, 0x0e, 0x73, 0x90, 0x10, 0x91, 0x7a, 0xc4, 0xe4, 0x0f, 0xf9, 0xa7, 0xa4, 0x05, + 0x45, 0x3b, 0x16, 0x51, 0x1c, 0xe2, 0x96, 0x4e, 0x88, 0xac, 0x15, 0x31, 0x59, 0xd3, 0xd2, 0xce, + 0x9b, 0xe9, 0x4e, 0x9c, 0xda, 0x51, 0xb0, 0xc5, 0xcc, 0xb3, 0x32, 0x56, 0xdc, 0x02, 0x92, 0x96, + 0xb6, 0xad, 0x4e, 0x5d, 0x54, 0x2d, 0x23, 0xfd, 0x6c, 0xe3, 0xab, 0xd2, 0xed, 0xee, 0x8d, 0x01, + 0xc6, 0xa9, 0x6a, 0xc3, 0xec, 0x13, 0x2b, 0x21, 0x6a, 0x06, 0xb4, 0x27, 0x91, 0xfa, 0xd6, 0xac, + 0x63, 0xaa, 0x9d, 0x97, 0xba, 0x4e, 0x26, 0x02, 0x96, 0x6f, 0x22, 0x01, 0x5d, 0x42, 0x0a, 0x16, + 0xfa, 0x6a, 0xd2, 0x07, 0x51, 0x9a, 0x51, 0x4a, 0xad, 0xe6, 0x4a, 0xb2, 0x34, 0x19, 0x10, 0xa2, + 0x9d, 0xaa, 0xfd, 0x81, 0xa3, 0x13, 0xdb, 0xae, 0x7e, 0xc9, 0xb2, 0x94, 0x86, 0xde, 0xd7, 0x48, + 0x35, 0xb7, 0xe9, 0x16, 0xd8, 0x55, 0x2d, 0x42, 0x31, 0x51, 0x15, 0x3b, 0x9a, 0xd1, 0x79, 0x99, + 0xa8, 0x36, 0x81, 0x8e, 0x28, 0x6f, 0xc6, 0xc8, 0xa9, 0xfe, 0x98, 0x75, 0x8c, 0xa1, 0x69, 0xe8, + 0xd0, 0xa1, 0x2a, 0xb6, 0x39, 0x52, 0xd3, 0xf7, 0x58, 0x49, 0x32, 0x4c, 0xac, 0x62, 0x57, 0x67, + 0xf3, 0xf9, 0xcf, 0x79, 0x52, 0xa2, 0x3d, 0x4b, 0x1b, 0x7a, 0x42, 0x54, 0x75, 0x13, 0xea, 0x11, + 0x1d, 0xba, 0x9c, 0x48, 0x42, 0x9f, 0x61, 0x15, 0xd0, 0x8e, 0x26, 0xb2, 0xc9, 0x50, 0x39, 0x4a, + 0xfe, 0x55, 0x58, 0x27, 0x7a, 0x9f, 0xb8, 0x45, 0x47, 0x26, 0x90, 0x27, 0xb9, 0x6c, 0x69, 0x6a, + 0x97, 0x58, 0x76, 0x02, 0xca, 0xd7, 0x70, 0x42, 0x9c, 0x8f, 0xb1, 0xec, 0x7c, 0x80, 0x65, 0x87, + 0x61, 0xd9, 0xc2, 0xc6, 0x1c, 0x63, 0xd4, 0x19, 0x50, 0x64, 0x3b, 0x2b, 0x91, 0x4d, 0x0b, 0xdb, + 0xf5, 0x6b, 0xfc, 0xb9, 0xa1, 0x75, 0x60, 0x28, 0x23, 0x33, 0xf1, 0x8d, 0x8e, 0xf0, 0x07, 0x6b, + 0x90, 0x16, 0x12, 0x7f, 0x7e, 0x93, 0x66, 0xd0, 0x59, 0x8d, 0x38, 0xd0, 0x59, 0x28, 0x75, 0x04, + 0x0b, 0xd7, 0x1a, 0x2b, 0x5a, 0x82, 0x0e, 0x4b, 0x44, 0x14, 0x42, 0x1e, 0x11, 0xeb, 0xf5, 0x60, + 0x28, 0x30, 0x92, 0xee, 0x5b, 0xcb, 0x81, 0xe1, 0xac, 0xaf, 0x27, 0x3a, 0x1a, 0x51, 0x2c, 0xbf, + 0x96, 0x93, 0x94, 0x0c, 0xfd, 0x14, 0x3a, 0x92, 0x48, 0x26, 0xe7, 0x52, 0x56, 0x96, 0x11, 0x73, + 0x00, 0xf6, 0x46, 0x1d, 0x12, 0x98, 0x14, 0x06, 0x75, 0x90, 0x86, 0xc1, 0x02, 0x9a, 0x9b, 0x03, + 0x55, 0xeb, 0x42, 0x95, 0x4f, 0x16, 0xd4, 0xdc, 0x82, 0x6b, 0xdf, 0x33, 0xee, 0x4a, 0x80, 0x25, + 0xe1, 0xbc, 0xc1, 0xd2, 0x58, 0xfb, 0x5f, 0x3d, 0x60, 0x38, 0x1b, 0x3d, 0xa5, 0x43, 0x66, 0xee, + 0xd3, 0x50, 0xd5, 0xde, 0xaa, 0xf7, 0x47, 0xc0, 0x26, 0xec, 0x1a, 0x20, 0xb0, 0x3a, 0xb2, 0xb4, + 0x04, 0xe5, 0x20, 0x98, 0x9f, 0x99, 0x18, 0xbd, 0x5e, 0xae, 0xe6, 0x71, 0x3a, 0xca, 0xe8, 0x3c, + 0x6e, 0xd2, 0x95, 0x2b, 0x07, 0x67, 0xfd, 0x06, 0xe5, 0x25, 0x8d, 0x86, 0x7e, 0xdb, 0x68, 0xd8, + 0x6c, 0x81, 0x66, 0xf1, 0xef, 0x70, 0xbf, 0xd1, 0x38, 0x78, 0x1a, 0xf6, 0x1b, 0x4b, 0xff, 0xdb, + 0x19, 0x36, 0x1a, 0xfd, 0x87, 0xc9, 0x75, 0xb3, 0xf1, 0xda, 0x79, 0x3c, 0x7e, 0x3a, 0x6a, 0xdc, + 0x3c, 0x36, 0x8f, 0x1b, 0xe7, 0x93, 0xe6, 0xbb, 0xd1, 0xd8, 0x69, 0x02, 0x53, 0x9a, 0x3c, 0x1e, + 0x1e, 0xed, 0xd8, 0x9b, 0xbb, 0x65, 0xf5, 0x62, 0xf2, 0xde, 0x1f, 0xe6, 0xcf, 0x1e, 0xce, 0xf4, + 0xf7, 0xa7, 0xe6, 0x8b, 0xa3, 0x3f, 0x77, 0xda, 0xe7, 0xa9, 0x2b, 0xed, 0xf8, 0x54, 0x39, 0xce, + 0x8f, 0xb4, 0xdb, 0x53, 0x53, 0x33, 0xef, 0x4b, 0xb7, 0xaf, 0xf7, 0xaa, 0x41, 0x5a, 0x95, 0xec, + 0xf1, 0x1b, 0x91, 0x9f, 0x6f, 0xb5, 0xe3, 0xc9, 0x93, 0x55, 0xd4, 0x6f, 0xba, 0x7b, 0xf9, 0x53, + 0xdd, 0xe9, 0x5e, 0x8e, 0x1b, 0xfd, 0x54, 0xcf, 0xc9, 0xf4, 0xda, 0xf6, 0xa9, 0x7d, 0xa0, 0x9d, + 0x9f, 0x8e, 0x06, 0xda, 0xf0, 0xea, 0xf9, 0x44, 0xdd, 0x3c, 0xbf, 0xdc, 0xdd, 0x3b, 0xea, 0x4f, + 0x6e, 0x86, 0xc0, 0xc5, 0x94, 0xd2, 0xb0, 0xab, 0xa5, 0x5a, 0x87, 0xb7, 0x3b, 0x83, 0xbd, 0xa3, + 0xee, 0xe1, 0xfe, 0x54, 0x79, 0xd9, 0xb4, 0x0b, 0x7b, 0x99, 0xb7, 0xf7, 0xc1, 0x71, 0xeb, 0xb9, + 0xb9, 0xb9, 0x73, 0x75, 0x75, 0xda, 0xdb, 0x9d, 0x18, 0xe6, 0x7e, 0x46, 0x2d, 0x29, 0xaf, 0xad, + 0x3d, 0x6d, 0x6f, 0x7f, 0xf7, 0x61, 0x5a, 0x7e, 0xba, 0xbb, 0x7f, 0x7e, 0xcb, 0x5b, 0x6f, 0xc3, + 0xc2, 0x79, 0x69, 0x5f, 0x7b, 0xba, 0x2a, 0x0c, 0x46, 0x29, 0xfd, 0xc1, 0x3e, 0x38, 0xda, 0x3d, + 0xbb, 0xda, 0xcf, 0xf7, 0x1b, 0x53, 0x25, 0x5b, 0x68, 0xf4, 0x1b, 0x96, 0x73, 0x77, 0x36, 0xe8, + 0xbd, 0xf4, 0x9f, 0x7b, 0x7b, 0x8d, 0xb6, 0xda, 0x1c, 0x4c, 0x46, 0xad, 0xa3, 0xc9, 0xde, 0x6d, + 0x73, 0x38, 0xea, 0x5e, 0x0e, 0xd4, 0xab, 0xee, 0x4d, 0xc9, 0x1a, 0x1f, 0x3d, 0x9f, 0xb6, 0xae, + 0x9f, 0xf6, 0x26, 0xbb, 0x83, 0xfd, 0xca, 0xce, 0x91, 0x6d, 0x18, 0x47, 0xc5, 0xfc, 0xcd, 0xd1, + 0xf5, 0x91, 0x71, 0x74, 0xbb, 0x5b, 0x7e, 0x79, 0x3b, 0x7f, 0x3a, 0xda, 0xbc, 0x7d, 0x6e, 0xbc, + 0x9d, 0x59, 0xd7, 0x19, 0xe5, 0x2c, 0xb3, 0x3b, 0x51, 0x2e, 0x4c, 0xe3, 0x5d, 0x19, 0x54, 0x4e, + 0x0f, 0x9a, 0xf6, 0x63, 0xee, 0xfd, 0x3c, 0xf7, 0x78, 0xf1, 0x6e, 0xe7, 0x4e, 0xf3, 0xd3, 0x57, + 0x72, 0x6e, 0x16, 0xde, 0x1f, 0x9e, 0x5f, 0xcb, 0xed, 0x87, 0x9b, 0xcc, 0xe0, 0x6c, 0xe7, 0xf4, + 0x39, 0x53, 0xcc, 0x3f, 0xee, 0x36, 0x8e, 0x5a, 0xa9, 0xcd, 0x51, 0xa9, 0x54, 0xd6, 0xf3, 0x87, + 0xa9, 0xc3, 0xeb, 0xcb, 0xee, 0x53, 0x37, 0x3b, 0xca, 0xdf, 0xbc, 0x77, 0xaf, 0x9f, 0xba, 0x77, + 0x67, 0x37, 0xbd, 0x23, 0xad, 0x78, 0xd8, 0x3b, 0xe9, 0x77, 0xb3, 0xed, 0xcd, 0xd6, 0xf8, 0xb5, + 0x5b, 0xb9, 0xaf, 0x8c, 0x4c, 0xab, 0x7b, 0x59, 0xbe, 0xba, 0xb9, 0x18, 0x12, 0xe5, 0xbd, 0x78, + 0x73, 0x79, 0x71, 0x7d, 0xac, 0xed, 0xee, 0x3e, 0x1f, 0xde, 0x3d, 0x1f, 0xc8, 0x8d, 0xf3, 0xb3, + 0xab, 0x47, 0x7b, 0x78, 0x6d, 0x9d, 0x68, 0x43, 0xf3, 0xed, 0xf5, 0x6e, 0xf3, 0x65, 0xd4, 0x3e, + 0xba, 0x6a, 0xe6, 0x0e, 0x5a, 0x47, 0x2f, 0xfb, 0xad, 0xd4, 0x99, 0x4e, 0x9a, 0xc7, 0x85, 0xf2, + 0xf1, 0xf1, 0xfe, 0x5d, 0x73, 0x70, 0xd5, 0x1b, 0x4d, 0x4e, 0xce, 0xcc, 0xdc, 0xdb, 0x6d, 0xc5, + 0x1c, 0xbe, 0x66, 0xef, 0x4e, 0x6e, 0xaf, 0x4b, 0x16, 0x71, 0xe4, 0x03, 0x53, 0x6e, 0x3d, 0xdf, + 0x3d, 0x5e, 0x5f, 0xef, 0xa7, 0x1e, 0x9e, 0x37, 0x53, 0x17, 0xea, 0x6d, 0xeb, 0x25, 0x73, 0x70, + 0xf4, 0x3e, 0xca, 0x0e, 0xd5, 0xc3, 0xa7, 0xfb, 0x69, 0xaa, 0x5f, 0x7e, 0xcc, 0x5e, 0xdf, 0xbe, + 0x38, 0x97, 0xc3, 0xd7, 0x23, 0xd5, 0xb9, 0xbe, 0x79, 0xb8, 0x3b, 0x7f, 0x7f, 0x6f, 0x3a, 0xa3, + 0xfd, 0xcb, 0x93, 0xce, 0xa1, 0xfc, 0x7e, 0xbd, 0x73, 0x90, 0x7a, 0xac, 0x64, 0x9a, 0xfa, 0x60, + 0x47, 0xc9, 0xc9, 0xe3, 0xa2, 0x71, 0xd8, 0xb3, 0xf7, 0x6e, 0xcf, 0xfa, 0x0f, 0x67, 0x97, 0x7b, + 0xbd, 0x8b, 0xe2, 0x53, 0xe7, 0x78, 0x2a, 0xef, 0x1f, 0x5d, 0xaa, 0x77, 0x6f, 0x93, 0xfe, 0x73, + 0xbb, 0x74, 0x76, 0x34, 0xba, 0x4b, 0x19, 0x4f, 0x85, 0x71, 0xee, 0xe5, 0xa5, 0x94, 0x79, 0xd7, + 0x8f, 0xa6, 0xbb, 0x27, 0x56, 0x7f, 0x74, 0x96, 0xcb, 0xbd, 0xa5, 0xda, 0xf7, 0xe5, 0xc9, 0xed, + 0xc1, 0xab, 0xba, 0xa9, 0x9c, 0x96, 0x7b, 0x57, 0xc7, 0xef, 0x13, 0xbd, 0xf9, 0x5c, 0x76, 0x8e, + 0x4c, 0xb3, 0x7b, 0x54, 0x69, 0x3f, 0xee, 0xb6, 0xee, 0x8e, 0xef, 0x9a, 0x57, 0x47, 0xba, 0x6a, + 0xde, 0xcb, 0x87, 0x6d, 0xa7, 0xa3, 0x75, 0x6e, 0x36, 0xc7, 0xcd, 0xb7, 0xd3, 0xe1, 0x83, 0xd2, + 0xba, 0xb3, 0xae, 0x5a, 0xe7, 0x67, 0x6f, 0x6d, 0xe5, 0xf8, 0x78, 0x67, 0x90, 0xbb, 0x54, 0x1f, + 0xac, 0x87, 0x76, 0xbf, 0x5b, 0x6a, 0xb4, 0x5f, 0x49, 0xa7, 0xbb, 0x7b, 0x73, 0x51, 0xd9, 0xbb, + 0xda, 0x3b, 0x22, 0xf7, 0xf2, 0xdd, 0xe5, 0xfd, 0x55, 0xa7, 0x7b, 0x55, 0xd6, 0x9c, 0xcb, 0x8b, + 0xbd, 0x51, 0x6a, 0xb3, 0xf4, 0x9a, 0x3b, 0x9a, 0xde, 0xde, 0x18, 0xc7, 0xe4, 0xde, 0xec, 0x3d, + 0x5f, 0xa9, 0x87, 0x87, 0x87, 0x45, 0x58, 0x4a, 0xbb, 0xa7, 0xcf, 0xd9, 0xf6, 0x61, 0xff, 0x6a, + 0xfa, 0x60, 0xdf, 0xc2, 0x80, 0x4e, 0x1e, 0xdb, 0xfd, 0x54, 0x73, 0x0a, 0xff, 0x2b, 0x55, 0xc8, + 0x61, 0xe7, 0x62, 0x0c, 0x2c, 0xfa, 0x38, 0xab, 0x95, 0xda, 0xb2, 0xbe, 0xbb, 0xf9, 0x7c, 0x90, + 0x6a, 0xb7, 0x1a, 0xd9, 0x6e, 0xf3, 0xe9, 0x6e, 0x3a, 0x9c, 0x94, 0x9f, 0x8e, 0x33, 0x47, 0x8f, + 0xce, 0xf4, 0xd2, 0x69, 0x1f, 0x4f, 0x35, 0xf3, 0x2a, 0x73, 0x7a, 0xf0, 0xdc, 0x7a, 0x95, 0xe5, + 0x9b, 0x61, 0xf7, 0xfc, 0xe8, 0x69, 0x6a, 0x1d, 0x10, 0x2d, 0xf5, 0x96, 0xb2, 0x9e, 0x8e, 0x2d, + 0x23, 0xa5, 0xdf, 0x0e, 0xf2, 0x97, 0xd6, 0xf9, 0xd1, 0xc1, 0xe4, 0xa4, 0x74, 0x6f, 0x3d, 0x9c, + 0x9f, 0xdd, 0xe5, 0xa6, 0x37, 0xe4, 0xfa, 0xfe, 0xb0, 0xf5, 0xdc, 0xea, 0xbc, 0x38, 0xa7, 0xc7, + 0x3d, 0x92, 0xb5, 0x3a, 0x9b, 0xb6, 0xf9, 0x36, 0x7e, 0xc9, 0xb7, 0x4b, 0x77, 0x85, 0x97, 0x42, + 0xb9, 0x65, 0xe5, 0x1b, 0xc3, 0xec, 0xe5, 0x38, 0x73, 0xa5, 0xf6, 0x06, 0xf6, 0x51, 0x6e, 0x74, + 0x36, 0xee, 0x94, 0x4b, 0xf9, 0x0b, 0xf5, 0xea, 0xea, 0xfa, 0xdc, 0x20, 0x5d, 0xf3, 0xb2, 0x77, + 0xa8, 0xb7, 0x26, 0x1d, 0xe0, 0x86, 0x29, 0x65, 0x77, 0x6f, 0xaf, 0xb4, 0xd9, 0x39, 0x79, 0xbf, + 0xe9, 0xef, 0x68, 0x57, 0xfd, 0x67, 0xf3, 0xb9, 0x7f, 0xb3, 0xab, 0x1f, 0x3b, 0x07, 0xfa, 0x43, + 0xee, 0xb5, 0x3d, 0x7c, 0x38, 0x2e, 0xed, 0x5f, 0xec, 0x9c, 0x3e, 0x6d, 0x4e, 0x6c, 0x2b, 0x75, + 0xfc, 0xf4, 0xfe, 0xa8, 0xb7, 0x9f, 0xbb, 0xed, 0x97, 0xe6, 0x68, 0xaf, 0x77, 0x2b, 0x1f, 0x8e, + 0xb5, 0xc9, 0x6b, 0xdb, 0xb9, 0xed, 0x1f, 0x6f, 0xbe, 0x5f, 0x3f, 0xec, 0x9f, 0x1f, 0xdb, 0xe3, + 0xd6, 0x54, 0x9b, 0xbc, 0xe7, 0xee, 0x1f, 0x1d, 0xa5, 0x30, 0x7d, 0xb6, 0xd4, 0x4c, 0xcf, 0x1e, + 0x69, 0xba, 0xbe, 0x7f, 0x77, 0xf9, 0x66, 0xe8, 0xe6, 0xa5, 0x7c, 0x7d, 0x5a, 0x34, 0xee, 0xce, + 0x4f, 0x5e, 0x5e, 0x7a, 0x7b, 0xda, 0x41, 0xa1, 0x63, 0xdf, 0xec, 0x9e, 0x37, 0xec, 0xfe, 0x7b, + 0x33, 0x5f, 0x3e, 0xd8, 0xec, 0xb7, 0x4e, 0xee, 0xfa, 0xad, 0xa7, 0xcd, 0x61, 0xa6, 0xb3, 0x37, + 0x3e, 0x69, 0x9c, 0x0e, 0xa7, 0x27, 0xef, 0x99, 0xcc, 0x68, 0x73, 0x50, 0x22, 0xfd, 0xc3, 0xfd, + 0xcd, 0x33, 0xeb, 0xb0, 0xf0, 0x7c, 0x6c, 0x66, 0x9e, 0xa6, 0x85, 0xd7, 0x7c, 0x4e, 0x29, 0xdf, + 0x6c, 0x66, 0xa7, 0xfa, 0xe1, 0xdd, 0x75, 0xf3, 0x40, 0xeb, 0xed, 0x3f, 0x9d, 0x3b, 0x4e, 0x37, + 0xb7, 0xdf, 0xb9, 0x55, 0x94, 0xb7, 0x12, 0xa9, 0x5c, 0xbe, 0x0c, 0x46, 0x9d, 0xb7, 0x6b, 0xd9, + 0xb8, 0x1c, 0x65, 0xdf, 0xb3, 0xef, 0x99, 0xdd, 0x9d, 0x54, 0x79, 0xa2, 0x4e, 0x1b, 0xfb, 0xdd, + 0xb3, 0xdb, 0x6c, 0x5f, 0x1f, 0xee, 0x14, 0xa6, 0x8d, 0x49, 0xa9, 0x6c, 0x4e, 0x0e, 0x3b, 0xf7, + 0xcf, 0xda, 0xbe, 0xb5, 0xa3, 0x3f, 0x4c, 0x4f, 0x9f, 0x9f, 0x4b, 0xf9, 0xdb, 0x83, 0xfe, 0xf8, + 0xfc, 0xe0, 0xee, 0xa0, 0x71, 0xbc, 0xff, 0x3e, 0xdd, 0x9f, 0xa4, 0xee, 0x8d, 0xa1, 0xbe, 0x79, + 0xd6, 0x50, 0xdb, 0x77, 0xed, 0x51, 0x49, 0x23, 0x87, 0xd7, 0x3b, 0x45, 0xbb, 0x93, 0x95, 0x7b, + 0xa7, 0x4e, 0xdb, 0xea, 0x5a, 0x99, 0xe3, 0xd7, 0xbb, 0xd2, 0xa3, 0x95, 0x32, 0xc6, 0x93, 0x7d, + 0xe7, 0xfa, 0x70, 0x6f, 0xf3, 0xac, 0xf0, 0x7e, 0x50, 0x91, 0x5f, 0xcf, 0x77, 0x4a, 0x8f, 0xd7, + 0x7b, 0x86, 0x51, 0xcc, 0xbe, 0xec, 0x1f, 0x2b, 0xed, 0xd7, 0xfc, 0x39, 0x39, 0xbc, 0x3b, 0xe9, + 0x92, 0x5e, 0x66, 0x60, 0x9f, 0xed, 0xef, 0xb7, 0x4c, 0xa7, 0x38, 0x2c, 0x3f, 0x0c, 0x8f, 0x5f, + 0x77, 0x77, 0x1b, 0xfa, 0xb5, 0xdc, 0x29, 0x64, 0xcb, 0xc3, 0xe9, 0x70, 0x6a, 0x5d, 0xbd, 0x5f, + 0x8d, 0xde, 0x2e, 0x75, 0xdb, 0xbc, 0x9e, 0xf4, 0x1a, 0x8f, 0x2f, 0xa6, 0x33, 0x78, 0xb7, 0x00, + 0x2d, 0x37, 0xd9, 0xe9, 0x79, 0xab, 0x57, 0xb8, 0x77, 0x76, 0xce, 0xce, 0x2a, 0xbb, 0x57, 0x37, + 0xd9, 0xca, 0xe8, 0x34, 0xd5, 0x6f, 0x17, 0x36, 0xfb, 0xfb, 0xa7, 0x97, 0xf9, 0xce, 0x8d, 0x5c, + 0xde, 0x2f, 0x1f, 0x15, 0xba, 0x4f, 0xd3, 0x63, 0xad, 0x90, 0x3d, 0xb0, 0xa7, 0x95, 0xfb, 0xc3, + 0xf7, 0xd3, 0x9d, 0x8b, 0xc3, 0xf7, 0xfb, 0xe7, 0xeb, 0x56, 0xe5, 0xfc, 0xb4, 0x79, 0x71, 0xbb, + 0xd3, 0xdc, 0xbf, 0x4a, 0x8d, 0x0e, 0x06, 0x3b, 0x99, 0xbb, 0xcd, 0xa7, 0xf7, 0xdb, 0xc9, 0xc9, + 0x5e, 0xeb, 0x66, 0xb8, 0x6b, 0xa9, 0xc7, 0xa9, 0x5b, 0xa4, 0xfd, 0x4c, 0x7b, 0xff, 0x61, 0xff, + 0xec, 0xf4, 0xd4, 0x7e, 0xee, 0xab, 0x0d, 0xa7, 0x60, 0x9a, 0x9b, 0x23, 0xcd, 0x9c, 0xb6, 0x73, + 0xce, 0xfb, 0x5e, 0xf9, 0xa8, 0x3c, 0x1d, 0xbc, 0x1d, 0x5e, 0xec, 0xee, 0x9c, 0xe4, 0x5b, 0x07, + 0xfd, 0xd2, 0xd5, 0x65, 0x36, 0xb7, 0xa3, 0x5e, 0xe6, 0x1f, 0xcf, 0x26, 0x39, 0x6b, 0x77, 0xdf, + 0xb9, 0xbf, 0xdd, 0x7d, 0x38, 0x4d, 0x11, 0x5b, 0x1f, 0xe7, 0x0f, 0x2b, 0x57, 0xd3, 0xd7, 0xde, + 0xb0, 0xbd, 0xab, 0xb7, 0xcf, 0x4e, 0x9f, 0x0f, 0x6e, 0xf7, 0xcd, 0xd7, 0xd7, 0xa7, 0xb6, 0x7e, + 0xdf, 0xea, 0xcb, 0xda, 0xe0, 0x7e, 0x5c, 0x99, 0xdc, 0xe6, 0x8b, 0xaf, 0x37, 0x87, 0xaf, 0x97, + 0x95, 0xf7, 0xd7, 0x5b, 0xeb, 0x74, 0xf3, 0xe5, 0xf5, 0xe4, 0xb9, 0xfc, 0xf8, 0xfc, 0xf4, 0xde, + 0x97, 0xb3, 0x66, 0xbb, 0x92, 0x7a, 0xbb, 0x2a, 0xdb, 0x0f, 0x4f, 0xe6, 0xe3, 0xf4, 0xe4, 0x40, + 0xdd, 0x3f, 0xbe, 0x39, 0xb7, 0x8f, 0x26, 0x13, 0xf3, 0xed, 0xba, 0x50, 0xe8, 0xef, 0x5d, 0xe8, + 0x77, 0x99, 0x14, 0x01, 0x42, 0xea, 0x1e, 0xee, 0x66, 0x72, 0xda, 0x55, 0x7e, 0xd4, 0x2a, 0xbe, + 0x65, 0x5f, 0xdf, 0x8f, 0xde, 0x9d, 0x87, 0xdb, 0xf3, 0xcb, 0xbd, 0x92, 0xd1, 0x7d, 0x3c, 0x96, + 0x2f, 0x5f, 0x6f, 0xd5, 0xfb, 0x63, 0xa7, 0x7f, 0x72, 0x70, 0x72, 0x76, 0x74, 0xfa, 0x58, 0x92, + 0xbb, 0x53, 0xf2, 0xf8, 0xa6, 0xb7, 0xdb, 0x29, 0x7b, 0xff, 0xe4, 0xe4, 0xf5, 0x5c, 0x97, 0xef, + 0xdf, 0x73, 0xd6, 0xa9, 0x73, 0xd6, 0xde, 0xb9, 0xba, 0xbf, 0xd4, 0x1f, 0x9d, 0xe1, 0xb1, 0x52, + 0xb8, 0x7f, 0xdd, 0xbf, 0x36, 0xda, 0x99, 0xca, 0x70, 0x38, 0x7a, 0xeb, 0x5c, 0xdd, 0x8d, 0x37, + 0xd5, 0x5e, 0xf3, 0x7c, 0xfc, 0x60, 0x69, 0x83, 0xf7, 0xfe, 0xee, 0xe9, 0xee, 0x18, 0x84, 0xf0, + 0x54, 0xf9, 0xb0, 0x38, 0x7d, 0x3e, 0xa9, 0x14, 0xca, 0x9d, 0x5d, 0xe2, 0xa4, 0xf6, 0x95, 0x87, + 0x5e, 0x2b, 0x75, 0xfa, 0x62, 0x64, 0xee, 0x9d, 0xd4, 0xb8, 0xd5, 0x79, 0x55, 0xac, 0xd7, 0xd2, + 0xcb, 0xd3, 0x4d, 0xfb, 0xa5, 0x70, 0xae, 0x9c, 0xbc, 0x9a, 0x17, 0xed, 0x97, 0xbd, 0x3d, 0xd3, + 0x56, 0x3a, 0x95, 0xd3, 0xac, 0x75, 0x7d, 0xfe, 0x70, 0xdc, 0xbf, 0x6c, 0x5b, 0xf7, 0x6f, 0xbb, + 0xdd, 0xc7, 0x67, 0x52, 0x72, 0x76, 0xae, 0x1a, 0xef, 0xce, 0x4b, 0xfb, 0xb1, 0x29, 0x4f, 0x76, + 0x49, 0xe1, 0x56, 0x3f, 0x57, 0xcd, 0xa1, 0xfe, 0x04, 0xd2, 0xca, 0x28, 0x33, 0x7a, 0xee, 0x95, + 0x4e, 0x7a, 0x9b, 0x63, 0x92, 0xcd, 0xe6, 0x0e, 0x47, 0xbd, 0x4a, 0x6e, 0x6f, 0x9c, 0xd9, 0x24, + 0xfa, 0x4e, 0x26, 0xa5, 0x5f, 0x6e, 0x9a, 0x6d, 0x10, 0x33, 0xaf, 0x8e, 0x9f, 0xda, 0xaa, 0xfc, + 0xdc, 0x6c, 0x99, 0xc6, 0x79, 0x05, 0x06, 0x7e, 0xf3, 0xf2, 0xbc, 0x79, 0x7c, 0x36, 0x31, 0xdb, + 0xf7, 0x7d, 0xc3, 0x6c, 0xb4, 0x07, 0x4e, 0xfb, 0xe2, 0xfe, 0xe5, 0xcd, 0x69, 0xec, 0xe7, 0x4f, + 0x52, 0x99, 0x57, 0x43, 0x6e, 0x35, 0x5a, 0xe7, 0xf7, 0xb9, 0x83, 0x5c, 0xfb, 0xb4, 0xa7, 0xdb, + 0x03, 0x73, 0xa7, 0xa0, 0x54, 0xba, 0xc3, 0xf7, 0xcd, 0xcc, 0xe1, 0x34, 0x93, 0xe9, 0x76, 0xf2, + 0x17, 0x0f, 0xe7, 0x4f, 0x05, 0xa0, 0xd5, 0xb7, 0x87, 0xdb, 0xbb, 0x5c, 0xf7, 0xf1, 0xda, 0xde, + 0xad, 0x6c, 0xbe, 0x9e, 0x9c, 0x6e, 0x56, 0x5e, 0x95, 0xf7, 0x11, 0x0c, 0xed, 0x28, 0x3b, 0xbe, + 0x7c, 0xb8, 0xd9, 0xcc, 0x6f, 0x16, 0xdb, 0xf7, 0xad, 0x03, 0xa3, 0xb3, 0x63, 0xf4, 0x76, 0x73, + 0xe4, 0xe8, 0xfa, 0xfd, 0x58, 0xee, 0x9c, 0x35, 0x65, 0x90, 0xd6, 0x26, 0x57, 0x72, 0xbf, 0x37, + 0x1e, 0xb5, 0xba, 0xe3, 0x6e, 0xb6, 0xd0, 0xcb, 0x8e, 0x80, 0xea, 0x4f, 0x2f, 0xf7, 0xf2, 0xc7, + 0xc7, 0x87, 0xa7, 0xa5, 0x51, 0xb3, 0x9b, 0xd1, 0x8b, 0x7a, 0xb9, 0x9b, 0x2f, 0xde, 0x5e, 0x9c, + 0x5c, 0xea, 0x25, 0x7d, 0x60, 0xc1, 0x06, 0x69, 0xdd, 0xe5, 0x95, 0x6e, 0x5e, 0x7f, 0xcf, 0xa9, + 0x37, 0xea, 0xf9, 0x69, 0x21, 0x5b, 0xd8, 0xd3, 0x49, 0xef, 0x34, 0x73, 0x7c, 0x70, 0xaa, 0xdd, + 0x3f, 0x39, 0x4f, 0xf7, 0xca, 0xab, 0xb1, 0x37, 0x28, 0x4c, 0x5b, 0xcf, 0x63, 0xfb, 0xa0, 0x9d, + 0x29, 0x0d, 0x2b, 0x96, 0xb2, 0xaf, 0xd9, 0xa7, 0xc3, 0xc2, 0xe8, 0xf0, 0xe5, 0xea, 0x5e, 0x1b, + 0x6f, 0xde, 0x64, 0x26, 0xe4, 0xe9, 0xfd, 0xf9, 0xf0, 0x90, 0x6c, 0x4e, 0x9f, 0xd4, 0xdb, 0x77, + 0xf3, 0xb8, 0x78, 0xdf, 0xb8, 0xdf, 0x39, 0xdd, 0x3d, 0x9f, 0x5c, 0x9f, 0x4c, 0x27, 0xd7, 0x8f, + 0xfa, 0xbe, 0xf1, 0x70, 0x30, 0xed, 0x28, 0x27, 0xd3, 0xf3, 0xd2, 0xee, 0x75, 0x79, 0xe7, 0x5c, + 0xcf, 0x19, 0x95, 0xf3, 0x57, 0x98, 0x61, 0x67, 0x6c, 0x29, 0xc5, 0x1b, 0xfd, 0xe8, 0xf9, 0xe1, + 0x6c, 0x47, 0x1b, 0x1e, 0xed, 0x3f, 0xe5, 0xdf, 0x2e, 0x1f, 0x1f, 0xf2, 0x67, 0x4e, 0x65, 0x5c, + 0x1c, 0x0e, 0x0f, 0x47, 0x93, 0xc7, 0xf1, 0x78, 0x7a, 0x39, 0x26, 0xd6, 0x69, 0x85, 0xb4, 0xc6, + 0xf6, 0xfb, 0xc3, 0xf9, 0xf3, 0xed, 0x83, 0xf5, 0xd2, 0x7e, 0xed, 0x1c, 0x5c, 0xdc, 0xdd, 0xe7, + 0xda, 0x7b, 0xed, 0xdd, 0x83, 0x13, 0x35, 0x7f, 0x76, 0x7a, 0x77, 0x73, 0xff, 0xfe, 0x7e, 0x7f, + 0xb8, 0x5f, 0x2c, 0xec, 0x8c, 0x32, 0x39, 0xab, 0x91, 0x7d, 0x7d, 0x31, 0x4a, 0x5a, 0xa5, 0xb7, + 0xdf, 0xbf, 0x6b, 0xef, 0x8c, 0xac, 0xde, 0xdd, 0xce, 0xfd, 0xfe, 0xbe, 0x76, 0x77, 0x9f, 0x1d, + 0xf5, 0xa7, 0x17, 0x93, 0x8e, 0x9d, 0x2a, 0xdf, 0x67, 0x32, 0xc0, 0x9f, 0x9e, 0x8e, 0x55, 0x72, + 0xaa, 0x55, 0xee, 0x1f, 0x1a, 0x65, 0x72, 0x70, 0x5a, 0xec, 0x58, 0x3b, 0x9b, 0xbd, 0xc1, 0xc5, + 0xd9, 0xdb, 0x54, 0x2b, 0xb7, 0x9f, 0xaf, 0xee, 0x0f, 0x9e, 0x77, 0xb2, 0xed, 0xfb, 0x8c, 0xf1, + 0x52, 0xba, 0xed, 0xbc, 0x12, 0xdd, 0xb6, 0x36, 0xf7, 0xcb, 0x87, 0x9b, 0x23, 0xc7, 0x1e, 0x76, + 0x5f, 0x8d, 0xc3, 0xe1, 0x7b, 0xa5, 0x62, 0x8d, 0xdf, 0xc8, 0x5e, 0xe6, 0xf2, 0x1d, 0x04, 0x84, + 0xc2, 0x70, 0x7c, 0xf7, 0x70, 0xfa, 0xfc, 0xf6, 0x58, 0x1e, 0x97, 0x9f, 0x8b, 0x0f, 0x83, 0x27, + 0x72, 0x98, 0x57, 0x2e, 0x1f, 0x36, 0x8b, 0x5d, 0x53, 0xbd, 0x28, 0x92, 0xf3, 0xcc, 0xc5, 0xfb, + 0xa4, 0x73, 0xb0, 0xf9, 0xfe, 0xd2, 0xd3, 0x9c, 0x8c, 0xdd, 0x2d, 0x92, 0xcd, 0xc7, 0xce, 0x6b, + 0xfb, 0xc2, 0x98, 0xf4, 0xae, 0xfb, 0xb9, 0xdc, 0x75, 0xb1, 0x58, 0x2e, 0x2a, 0x4e, 0x6e, 0xfc, + 0xf0, 0x50, 0xde, 0xbc, 0xcf, 0x3e, 0xca, 0xfd, 0x2b, 0x79, 0xb3, 0x52, 0xa8, 0x6c, 0x92, 0xc7, + 0x9b, 0xec, 0xde, 0xcb, 0x9b, 0xb1, 0xf7, 0x7a, 0xf6, 0x08, 0x32, 0xe0, 0x61, 0xb7, 0x7c, 0x35, + 0x3e, 0x39, 0xb0, 0xae, 0x0f, 0x4a, 0xed, 0xe3, 0xc7, 0x9b, 0xdd, 0x66, 0xf3, 0xe9, 0xf1, 0x60, + 0xef, 0xbe, 0x33, 0x2c, 0x1e, 0x64, 0x01, 0x8d, 0x39, 0xb5, 0x58, 0x78, 0xac, 0xdc, 0x3b, 0xea, + 0xce, 0xe8, 0x45, 0xbb, 0x2c, 0x6e, 0x3e, 0x3a, 0x3b, 0x4f, 0x67, 0x8d, 0x7b, 0x6d, 0x94, 0xeb, + 0x3d, 0xbe, 0xef, 0x9e, 0x6d, 0x5e, 0xa5, 0x8a, 0xfb, 0xc0, 0xc9, 0x5b, 0xf9, 0x8b, 0xf7, 0xe2, + 0x33, 0xec, 0x61, 0x47, 0x4a, 0xc7, 0x69, 0xdf, 0x5f, 0x1a, 0x93, 0xd1, 0x55, 0xff, 0xfc, 0xed, + 0x50, 0x1b, 0x9d, 0x68, 0xca, 0xa4, 0x32, 0xd1, 0xdb, 0x17, 0x43, 0x67, 0xa4, 0x3c, 0x1b, 0x99, + 0xbb, 0xd6, 0xa4, 0x02, 0x1c, 0xb9, 0x75, 0x3d, 0x39, 0xeb, 0x8c, 0x80, 0x2c, 0x9f, 0x26, 0xfb, + 0x83, 0x41, 0xc9, 0xde, 0x1c, 0xd8, 0xaf, 0x96, 0x7a, 0xdf, 0xb4, 0xfb, 0x8d, 0x9c, 0x9d, 0xd7, + 0xf7, 0x41, 0x6c, 0x2e, 0x1c, 0x6d, 0x5e, 0xa4, 0x14, 0x7b, 0x3a, 0x99, 0x3e, 0xb5, 0x9d, 0xd3, + 0x53, 0x39, 0xbf, 0x57, 0x69, 0x0f, 0x3a, 0xd7, 0xa5, 0xc7, 0xf7, 0xca, 0xf0, 0xa8, 0xbd, 0x2f, + 0xdf, 0x56, 0x4a, 0x27, 0xf2, 0xf4, 0xa0, 0xb1, 0xd9, 0x9e, 0x56, 0xde, 0x52, 0x5a, 0x2e, 0x93, + 0xd9, 0xcc, 0x3f, 0xa7, 0x0e, 0x73, 0xaa, 0xbc, 0x77, 0xd0, 0xcd, 0x6d, 0x8e, 0x1a, 0x77, 0xe7, + 0x47, 0x99, 0xfb, 0x41, 0xf3, 0x71, 0x74, 0xff, 0x7a, 0xb4, 0xab, 0x3c, 0x4e, 0x95, 0xae, 0x2d, + 0x6b, 0x9d, 0xbb, 0xfd, 0xbb, 0x54, 0xf7, 0x42, 0x3b, 0x1c, 0xee, 0x4c, 0x33, 0xaf, 0x17, 0x9b, + 0x9d, 0x52, 0x66, 0xf4, 0xf4, 0x20, 0x3b, 0xd7, 0xe4, 0xd6, 0x39, 0xbe, 0x1a, 0x97, 0x0a, 0x6f, + 0x40, 0xbe, 0x8d, 0xf1, 0x43, 0x69, 0xba, 0x4b, 0xde, 0x1b, 0x0f, 0x99, 0xf2, 0xfd, 0xb0, 0xdc, + 0xec, 0x0f, 0x32, 0x95, 0xe2, 0x45, 0xe5, 0x62, 0x6a, 0x9f, 0x37, 0x1f, 0x75, 0xfb, 0xe1, 0xfe, + 0x2a, 0xb5, 0x69, 0x36, 0xdf, 0xcb, 0x99, 0xf3, 0xb3, 0xa7, 0xe2, 0xe6, 0x53, 0xe3, 0xe8, 0x60, + 0xaf, 0x7b, 0x33, 0x49, 0x29, 0x66, 0xf9, 0x2e, 0x75, 0x94, 0x3f, 0xbf, 0xbd, 0x23, 0xb0, 0xa6, + 0x26, 0xea, 0x38, 0xa5, 0x75, 0x3a, 0xaf, 0xcf, 0xd9, 0xcd, 0xdc, 0xc3, 0xe6, 0xe3, 0xa4, 0xd8, + 0x3f, 0x6e, 0xdc, 0x5e, 0x1d, 0x3c, 0x5e, 0x5e, 0x95, 0xae, 0xde, 0xa6, 0xd7, 0xbd, 0x3e, 0x69, + 0xa6, 0xae, 0x3a, 0xc5, 0x7b, 0xbd, 0x71, 0xd6, 0x6c, 0x1c, 0xee, 0x8f, 0x4b, 0x37, 0xc7, 0x0e, + 0x71, 0xf2, 0xa6, 0x9e, 0x29, 0xe7, 0xdb, 0x85, 0xc7, 0x66, 0xe3, 0x68, 0x67, 0x9c, 0x2f, 0x1a, + 0x3d, 0xf3, 0xe6, 0xfa, 0xcd, 0x29, 0x5e, 0x3e, 0x83, 0x4c, 0x7a, 0x53, 0x3e, 0x79, 0x6c, 0xec, + 0x5d, 0x9d, 0x94, 0xf5, 0xfd, 0xfe, 0x4e, 0x07, 0xc4, 0xe2, 0xdb, 0x09, 0xd0, 0xfe, 0xeb, 0x61, + 0x6b, 0xe7, 0xc4, 0xd8, 0x3b, 0xd8, 0x3c, 0x79, 0xba, 0x3a, 0x3d, 0x33, 0x9f, 0x8d, 0xe2, 0x68, + 0xa0, 0x64, 0x2e, 0x8f, 0x72, 0x6f, 0xa3, 0x9d, 0xfb, 0x8b, 0xe6, 0x4d, 0x6b, 0xf7, 0x49, 0x79, + 0x36, 0x5f, 0xaf, 0x4a, 0xe5, 0xd4, 0x93, 0x92, 0x2d, 0x3f, 0xf7, 0x0f, 0xfa, 0x8f, 0x67, 0x37, + 0x65, 0x7d, 0x67, 0xf0, 0x7c, 0xd2, 0xd9, 0xb7, 0x4e, 0x9a, 0x8f, 0xfb, 0xa5, 0xb7, 0x93, 0xd6, + 0xd3, 0xf5, 0xe9, 0x7e, 0xd1, 0xb9, 0x2e, 0x3e, 0x9e, 0x0c, 0x6e, 0xdf, 0xdf, 0xcf, 0xef, 0xcf, + 0x8a, 0xb9, 0xe1, 0xce, 0x78, 0x74, 0x79, 0xa6, 0x9e, 0x6e, 0x4e, 0x2f, 0xa7, 0x85, 0x5b, 0xe5, + 0xba, 0xbf, 0xaf, 0x1e, 0x3f, 0x35, 0xee, 0xf6, 0xed, 0xce, 0x53, 0xee, 0xf0, 0xf6, 0x68, 0x70, + 0x7b, 0xd9, 0xd9, 0x53, 0x0e, 0x8b, 0xf7, 0xf7, 0xbb, 0xe3, 0xf1, 0x70, 0xdc, 0xbd, 0xec, 0x69, + 0xc5, 0x13, 0xa5, 0x39, 0xbe, 0x28, 0x1b, 0xd9, 0x54, 0x6f, 0xbf, 0xb9, 0xd3, 0x2e, 0x0d, 0xc6, + 0xa3, 0xd3, 0xf7, 0xb2, 0x76, 0x76, 0x7d, 0x31, 0xe9, 0x3d, 0x5f, 0x9e, 0x97, 0x55, 0xc5, 0xaa, + 0xc8, 0xd7, 0xcd, 0xa6, 0x7a, 0xdd, 0x3c, 0xb6, 0xf2, 0xa3, 0xfe, 0xeb, 0x61, 0xaf, 0x74, 0xfa, + 0xda, 0xbf, 0x7d, 0x7c, 0xb4, 0x8b, 0x83, 0xf7, 0xf1, 0xa8, 0xe2, 0x9c, 0x1d, 0x5d, 0xdc, 0x5a, + 0x99, 0xa9, 0x39, 0xbe, 0xb6, 0xcf, 0xef, 0xc6, 0xdd, 0xa7, 0x8c, 0x99, 0x1a, 0xee, 0x94, 0xf5, + 0xcd, 0xbb, 0x1c, 0x70, 0x45, 0xf9, 0x26, 0xa5, 0x5c, 0x0f, 0x2e, 0xcd, 0xf3, 0x81, 0x7d, 0xbe, + 0x7f, 0xf1, 0x3a, 0x35, 0xf6, 0x72, 0x23, 0xd9, 0x1e, 0xbd, 0xde, 0xa8, 0x66, 0x7f, 0x5a, 0x2c, + 0x1f, 0x1d, 0x37, 0xa8, 0x91, 0xa2, 0x9e, 0x14, 0x7a, 0x86, 0x35, 0x54, 0x9c, 0xc4, 0x37, 0x54, + 0xa0, 0xbe, 0x25, 0xe7, 0x55, 0xcb, 0x30, 0x9c, 0xd9, 0xc6, 0x46, 0x67, 0x23, 0x5b, 0xfd, 0x9a, + 0xcd, 0x66, 0x6b, 0xf8, 0xd8, 0xab, 0x7e, 0xed, 0xf5, 0x7a, 0xf4, 0x31, 0x57, 0x45, 0xd3, 0x10, + 0x7d, 0xcc, 0x57, 0xbf, 0xe6, 0xf3, 0x79, 0xfa, 0x58, 0xa8, 0x7e, 0x2d, 0x14, 0x0a, 0xf4, 0xb1, + 0x58, 0xfd, 0x5a, 0x2c, 0x16, 0xe9, 0x63, 0xa9, 0xfa, 0xb5, 0x54, 0x2a, 0xd1, 0xc7, 0x72, 0xf5, + 0x6b, 0xb9, 0x5c, 0xa6, 0x8f, 0xed, 0xea, 0xd7, 0x76, 0xbb, 0x4d, 0x1f, 0x3b, 0xd5, 0xaf, 0x9d, + 0x4e, 0x87, 0x3e, 0x92, 0xea, 0x57, 0x42, 0x08, 0x7d, 0xec, 0x56, 0xbf, 0x76, 0xbb, 0x5d, 0xfa, + 0x68, 0x41, 0x81, 0x3c, 0x6b, 0xad, 0x0f, 0x0d, 0x77, 0x58, 0x77, 0x34, 0x68, 0xad, 0xac, 0xd0, + 0xc7, 0xb7, 0xea, 0x57, 0xa5, 0x22, 0xc3, 0xa3, 0x03, 0x70, 0xe5, 0x34, 0x6b, 0xd7, 0xa8, 0x5a, + 0xfd, 0xb6, 0x92, 0xc8, 0x17, 0x24, 0xc1, 0xfb, 0x27, 0xa7, 0x2b, 0x49, 0x9a, 0xe7, 0xb4, 0x17, + 0x33, 0x41, 0xaf, 0x4f, 0x50, 0x08, 0x49, 0xaf, 0x8c, 0xc2, 0x0a, 0x65, 0xe5, 0x9c, 0x24, 0x04, + 0x7f, 0x16, 0xcb, 0x0d, 0x58, 0xb9, 0x62, 0x56, 0x12, 0xbc, 0x7f, 0xe1, 0x42, 0xce, 0xa0, 0xba, + 0x29, 0x9b, 0x53, 0x7c, 0x32, 0xbd, 0x27, 0xa8, 0x55, 0xca, 0xb3, 0xb4, 0xb6, 0x59, 0xcd, 0x16, + 0xcc, 0xa9, 0xc0, 0xfe, 0xc8, 0xee, 0x13, 0x96, 0x81, 0x9c, 0x0a, 0xbc, 0xca, 0xc2, 0x26, 0xfe, + 0xa5, 0xb5, 0xba, 0x55, 0xdd, 0xd0, 0x11, 0x45, 0x76, 0xdf, 0xac, 0x8a, 0x6d, 0x34, 0x8f, 0x88, + 0x98, 0x31, 0x74, 0xaa, 0x50, 0x73, 0x8e, 0x86, 0xc5, 0x19, 0xb5, 0x27, 0x6c, 0x28, 0xcc, 0x84, + 0x32, 0x54, 0x40, 0xfe, 0x1f, 0x69, 0xd4, 0x02, 0x31, 0x6f, 0x1b, 0xdd, 0xb7, 0xd9, 0x50, 0xb1, + 0xfa, 0xaa, 0x5e, 0x95, 0x6b, 0x68, 0x63, 0xea, 0x5b, 0xc6, 0x48, 0xef, 0x32, 0xd3, 0x5f, 0x95, + 0x75, 0x1b, 0x66, 0x3d, 0x59, 0xe3, 0xf5, 0xed, 0x43, 0xa2, 0x8d, 0x89, 0xa3, 0x76, 0x14, 0xe9, + 0x8e, 0x58, 0x5d, 0x45, 0x57, 0x24, 0x5b, 0xd1, 0xed, 0x0d, 0x9b, 0x58, 0x6a, 0x8f, 0x15, 0xb4, + 0xd5, 0x77, 0x52, 0xcd, 0x42, 0x2f, 0x6b, 0x61, 0x40, 0xbd, 0x64, 0xcd, 0x21, 0x53, 0x67, 0x43, + 0xd1, 0xd4, 0xbe, 0x5e, 0xed, 0x10, 0xb4, 0x27, 0xd4, 0xd0, 0x4a, 0xf8, 0xa2, 0x3a, 0x1b, 0xac, + 0x9b, 0x1d, 0x45, 0xd3, 0xd0, 0xae, 0xc3, 0x86, 0xe5, 0x66, 0x8d, 0x00, 0x36, 0xc0, 0xd7, 0x48, + 0xc7, 0xcb, 0x18, 0x1a, 0xef, 0x71, 0xa9, 0xf6, 0x62, 0xe2, 0x62, 0x29, 0xaf, 0x3d, 0xc5, 0xdc, + 0x18, 0xa8, 0xfd, 0x81, 0x86, 0xf6, 0x27, 0x77, 0xc4, 0x8e, 0x05, 0x23, 0x31, 0x15, 0x0b, 0x7a, + 0x56, 0xb3, 0x3b, 0x96, 0xa1, 0x69, 0x6d, 0xc5, 0x62, 0xa6, 0xd5, 0x6a, 0x09, 0x86, 0x13, 0xa4, + 0x85, 0x07, 0x66, 0xb7, 0x93, 0x02, 0x57, 0x97, 0x22, 0x56, 0xa2, 0xc8, 0x1f, 0x10, 0x04, 0x5f, + 0xcd, 0xca, 0xf2, 0xbf, 0x6a, 0x0c, 0x0e, 0x7d, 0x34, 0x0d, 0x5b, 0xa5, 0xf3, 0xd1, 0x53, 0xa7, + 0xa4, 0x5b, 0x33, 0x60, 0x5b, 0x65, 0xb0, 0x37, 0xda, 0x64, 0xa0, 0x8c, 0x55, 0x80, 0x8d, 0x9d, + 0x9d, 0x7f, 0x6d, 0xf7, 0x39, 0x10, 0xe3, 0x41, 0x00, 0x63, 0x3c, 0x89, 0x02, 0x79, 0xdf, 0x50, + 0xf5, 0x2e, 0x99, 0x56, 0x37, 0xb2, 0xa1, 0xb9, 0xf4, 0x4b, 0xb9, 0xf8, 0xe6, 0xb2, 0x2c, 0x62, + 0x12, 0x05, 0xd1, 0xe2, 0x3e, 0xf1, 0x79, 0x74, 0x0e, 0x3b, 0xd8, 0xb1, 0x9a, 0x61, 0x2a, 0x1d, + 0xd5, 0x79, 0x03, 0x12, 0xa1, 0x63, 0x64, 0xd0, 0xdc, 0x44, 0x21, 0x67, 0xcf, 0x4d, 0x8f, 0x86, + 0x28, 0xb5, 0xca, 0x42, 0x0e, 0xff, 0xce, 0x15, 0x49, 0xa9, 0x8e, 0x55, 0x28, 0x4d, 0xba, 0x92, + 0x39, 0x0b, 0xe3, 0xab, 0x9b, 0xe4, 0xb3, 0x67, 0x94, 0x28, 0xba, 0xa4, 0x63, 0x58, 0x94, 0x2e, + 0xd9, 0xd0, 0xdb, 0x23, 0xc7, 0x31, 0xf4, 0x19, 0x10, 0x83, 0xa6, 0xea, 0x04, 0x1a, 0xef, 0x8c, + 0x2c, 0x1b, 0x60, 0x98, 0x86, 0x8a, 0xe3, 0x98, 0xa7, 0x35, 0xa5, 0x4d, 0x34, 0x3b, 0xa0, 0x5f, + 0x53, 0xe9, 0x76, 0x55, 0xbd, 0x5f, 0x2d, 0x73, 0x9d, 0xf8, 0x8a, 0x56, 0x69, 0x5a, 0x70, 0x16, + 0xc1, 0x56, 0xdb, 0x00, 0xf0, 0xc3, 0x2a, 0xd0, 0x5b, 0x27, 0xc1, 0xba, 0xd5, 0x1e, 0x24, 0x85, + 0x94, 0x00, 0xd3, 0x9c, 0xac, 0x59, 0x14, 0xe3, 0xa5, 0x05, 0x02, 0x2e, 0x27, 0x23, 0xbd, 0xa8, + 0x4d, 0x2c, 0x00, 0xaa, 0xf7, 0x81, 0x20, 0xbb, 0xa4, 0x0a, 0xc8, 0xc2, 0x75, 0xa1, 0x6d, 0x58, + 0xda, 0x3c, 0xdd, 0xb6, 0xd4, 0x99, 0xd7, 0x25, 0x58, 0xc0, 0xf3, 0xf4, 0xc4, 0x42, 0x3b, 0x97, + 0x15, 0xed, 0x88, 0x63, 0x98, 0xd0, 0x79, 0x8d, 0xf4, 0x60, 0xc9, 0xba, 0x0d, 0xf3, 0xf3, 0xe7, + 0xb7, 0xed, 0xb4, 0x93, 0xfe, 0x14, 0x67, 0xe7, 0x69, 0xb4, 0x8d, 0xdb, 0x71, 0x76, 0x30, 0xb6, + 0x02, 0xd1, 0x62, 0x06, 0x78, 0x04, 0x3e, 0xae, 0x71, 0x6b, 0x32, 0x07, 0x1d, 0xf9, 0xa2, 0x0e, + 0xf1, 0x20, 0x41, 0x01, 0x12, 0x47, 0xc4, 0x6e, 0x78, 0xe4, 0xc5, 0xa5, 0x77, 0x55, 0xdb, 0xd4, + 0x94, 0xb7, 0xaa, 0xaa, 0xd3, 0x12, 0x94, 0xad, 0xcc, 0xd3, 0x30, 0x19, 0x61, 0x6c, 0xf4, 0x93, + 0x41, 0x1d, 0xc8, 0xee, 0xf5, 0x22, 0xf9, 0xa5, 0x50, 0x3e, 0x20, 0x5c, 0x60, 0xbd, 0x96, 0xd2, + 0x30, 0x66, 0xf7, 0xd9, 0x9b, 0xbe, 0x0d, 0x3a, 0x5f, 0x42, 0x81, 0xce, 0x5a, 0x7a, 0x30, 0xea, + 0xbb, 0x36, 0x3e, 0xda, 0xed, 0x42, 0x0e, 0xf1, 0x67, 0x6a, 0x40, 0xc0, 0xd6, 0x9b, 0x70, 0xd3, + 0xd8, 0x39, 0xdd, 0x93, 0xd2, 0x36, 0xe9, 0x3b, 0x33, 0x07, 0xcf, 0x15, 0x36, 0x5c, 0x5b, 0x30, + 0xc3, 0x67, 0xb0, 0xca, 0xe6, 0xb4, 0x8c, 0x70, 0xb3, 0xeb, 0xcf, 0x03, 0x6d, 0x84, 0x1b, 0xe8, + 0x02, 0x37, 0xe2, 0x5a, 0xd9, 0x95, 0xfc, 0xea, 0x1c, 0x53, 0x43, 0x26, 0xed, 0x41, 0x93, 0x6b, + 0xfe, 0x84, 0x33, 0x18, 0x43, 0xb5, 0xdb, 0xd5, 0xc8, 0x3c, 0xfd, 0x42, 0xde, 0x1c, 0x97, 0xaa, + 0x59, 0x06, 0xce, 0xee, 0x3c, 0x3d, 0x56, 0xb4, 0x70, 0x32, 0x9d, 0x6d, 0x37, 0x5d, 0x50, 0xb9, + 0x66, 0x6c, 0x98, 0x36, 0x20, 0x21, 0x9b, 0x1a, 0x9a, 0xe9, 0x31, 0x48, 0x40, 0x35, 0x4a, 0xdb, + 0x36, 0xb4, 0x91, 0x43, 0x18, 0xc9, 0x00, 0xb1, 0x7b, 0xa4, 0x5c, 0x44, 0x24, 0x01, 0xa7, 0x63, + 0xe5, 0xe9, 0x52, 0xc5, 0x8d, 0x9c, 0x31, 0x35, 0xe0, 0xf8, 0xe4, 0x21, 0x01, 0xbd, 0x4f, 0xce, + 0xd3, 0x84, 0x96, 0x90, 0xd2, 0x7d, 0xf7, 0xd7, 0xab, 0x23, 0x85, 0x1a, 0x8c, 0x10, 0xfa, 0xc2, + 0x02, 0x76, 0xab, 0xcf, 0x16, 0xe9, 0x6d, 0xb1, 0xab, 0x48, 0xe3, 0xd8, 0x53, 0x46, 0xde, 0x65, + 0x3a, 0x9b, 0x86, 0x19, 0x33, 0xa6, 0x38, 0xca, 0x73, 0x57, 0x88, 0xbb, 0x34, 0x68, 0xcd, 0x8d, + 0x4e, 0x4c, 0xdd, 0xa5, 0xfb, 0x57, 0x2e, 0x09, 0x28, 0xb2, 0x60, 0x60, 0xd5, 0x2c, 0xcc, 0x3f, + 0x94, 0x56, 0xbb, 0x02, 0xb7, 0xa2, 0x59, 0xde, 0x86, 0xa5, 0x74, 0xd5, 0x91, 0x5d, 0xcd, 0xe1, + 0x86, 0xec, 0xaf, 0x33, 0xda, 0x76, 0xde, 0xef, 0x79, 0xbe, 0xc8, 0x4d, 0x3f, 0x24, 0x0b, 0xc8, + 0x6b, 0x00, 0x68, 0x64, 0x89, 0x85, 0x16, 0x56, 0xae, 0xe0, 0x0e, 0x77, 0xa3, 0x23, 0xc0, 0xfe, + 0xa0, 0x87, 0x88, 0xb1, 0xc4, 0xe6, 0x4c, 0xb1, 0x60, 0xeb, 0x5b, 0x32, 0xcd, 0x1e, 0xee, 0xe8, + 0x74, 0x67, 0xa1, 0x92, 0x4b, 0xe1, 0xb4, 0xa1, 0x50, 0x1b, 0xd4, 0x48, 0xff, 0x11, 0x18, 0x36, + 0x90, 0x0a, 0xb2, 0xb6, 0x08, 0x3f, 0xed, 0x69, 0xd6, 0x6c, 0x71, 0xbf, 0xf6, 0xc9, 0xc8, 0x32, + 0xf0, 0x2c, 0x20, 0x21, 0x27, 0xf9, 0x5d, 0xc0, 0xcf, 0x16, 0xd2, 0x79, 0x7b, 0xc9, 0xc4, 0x07, + 0x5c, 0x8d, 0xe3, 0xd0, 0x40, 0x85, 0x53, 0x53, 0xc2, 0x3f, 0x0a, 0x60, 0xba, 0x2b, 0xd0, 0xd6, + 0x17, 0x1a, 0xcb, 0x96, 0xe5, 0x2e, 0xe9, 0x03, 0xad, 0xa9, 0xda, 0x2c, 0x96, 0x34, 0xe2, 0x17, + 0xe0, 0x57, 0x4d, 0x1d, 0x13, 0x3c, 0x31, 0xf5, 0xf6, 0xce, 0x82, 0x8f, 0x35, 0xba, 0xfb, 0xba, + 0xd4, 0x20, 0x07, 0x05, 0x73, 0xbb, 0x5e, 0xd1, 0x8a, 0xbf, 0x51, 0x57, 0xb8, 0x92, 0x4b, 0x86, + 0x56, 0x84, 0x22, 0x74, 0x5e, 0xf0, 0x21, 0x66, 0xc5, 0x25, 0x36, 0x20, 0x43, 0xc2, 0x3f, 0x30, + 0x06, 0xe0, 0x55, 0xb3, 0x05, 0x1a, 0xe5, 0x25, 0x8e, 0xc5, 0x25, 0x06, 0x2b, 0x7b, 0xc9, 0xbe, + 0xe5, 0xef, 0x18, 0xfc, 0xb0, 0x96, 0x2d, 0x00, 0xd8, 0x3a, 0x68, 0xf3, 0x82, 0xbb, 0xa7, 0xae, + 0xec, 0x45, 0x4f, 0x33, 0x40, 0x26, 0x40, 0xe8, 0xde, 0xe8, 0xa9, 0xd8, 0xc4, 0x4d, 0x3a, 0xad, + 0x83, 0x13, 0x2e, 0x45, 0x01, 0x51, 0x2a, 0x58, 0x29, 0x02, 0x76, 0x92, 0xb5, 0xa1, 0xaa, 0xbb, + 0x22, 0x55, 0x81, 0x92, 0x2d, 0x6e, 0x06, 0x6e, 0xc7, 0x3c, 0x02, 0x71, 0x05, 0xe6, 0xb6, 0x09, + 0xa5, 0xdd, 0xed, 0x9d, 0x6d, 0x20, 0xb1, 0xe5, 0xda, 0x58, 0xce, 0x5d, 0x14, 0xc5, 0x7f, 0x71, + 0x35, 0x82, 0x21, 0x57, 0x07, 0x28, 0xc9, 0xcc, 0x56, 0x60, 0x68, 0x90, 0x8c, 0xf4, 0x94, 0x84, + 0x70, 0x96, 0x46, 0xf9, 0x79, 0x4c, 0x56, 0x41, 0x50, 0xb8, 0xed, 0x6e, 0x41, 0xf0, 0x9d, 0x7f, + 0x08, 0xa0, 0xb4, 0xba, 0x3a, 0x1e, 0xb6, 0x2b, 0x40, 0xf8, 0x16, 0x28, 0x62, 0x20, 0x69, 0xf1, + 0xf3, 0xce, 0x1e, 0x39, 0x49, 0x46, 0x4f, 0xfe, 0x89, 0x19, 0x49, 0x8f, 0x3d, 0xd0, 0x2c, 0x4c, + 0x11, 0x36, 0x3c, 0x5d, 0xc4, 0x4c, 0xfa, 0xcf, 0x30, 0x74, 0x0f, 0xcd, 0x1b, 0x48, 0xd4, 0x7e, + 0x89, 0x58, 0x8a, 0xe6, 0x9a, 0x51, 0x25, 0x39, 0x99, 0x11, 0xfc, 0x26, 0x37, 0x68, 0x9b, 0xc9, + 0xe5, 0xc2, 0x2c, 0xa2, 0xd3, 0xf5, 0x19, 0x98, 0x71, 0x54, 0xe6, 0x13, 0xb8, 0x45, 0x50, 0x2f, + 0x19, 0x93, 0x25, 0x63, 0xc3, 0xf7, 0x8c, 0xd7, 0x1a, 0xb2, 0xed, 0x29, 0x52, 0x19, 0x92, 0x81, + 0xcb, 0xc1, 0x21, 0x25, 0x58, 0xb0, 0xd8, 0x0b, 0x68, 0x64, 0x52, 0x55, 0x46, 0x8e, 0x51, 0xe3, + 0xc5, 0xf0, 0x65, 0xfd, 0x0b, 0xf6, 0x75, 0x81, 0x2a, 0x5c, 0xae, 0x9e, 0xe0, 0x01, 0xda, 0x60, + 0x75, 0xb0, 0x00, 0x55, 0x55, 0xe6, 0x5f, 0x7b, 0x53, 0xe9, 0xab, 0xa9, 0x68, 0x13, 0xf8, 0x8b, + 0xc3, 0x82, 0x9f, 0x57, 0x0d, 0xfe, 0x8c, 0x1c, 0x15, 0x7e, 0x40, 0x76, 0x60, 0x89, 0xf0, 0xe0, + 0xa7, 0xe0, 0x43, 0x4e, 0x4a, 0xf7, 0xf4, 0x2e, 0xc8, 0x3d, 0x53, 0x77, 0x15, 0xe4, 0xca, 0x72, + 0x68, 0x07, 0xc9, 0x02, 0x73, 0x9e, 0x73, 0x60, 0xc2, 0xb5, 0x67, 0xb8, 0x7c, 0x3c, 0xb6, 0x86, + 0xbb, 0x81, 0x27, 0x7b, 0xe3, 0x76, 0x84, 0x63, 0x45, 0xa9, 0xd7, 0x2d, 0x2c, 0xa0, 0x04, 0xa3, + 0xfa, 0xcb, 0x85, 0xce, 0x2e, 0xee, 0x20, 0xac, 0xeb, 0x03, 0x32, 0x85, 0xae, 0x6b, 0xa4, 0x3b, + 0x54, 0x4c, 0x3a, 0x10, 0x2d, 0x18, 0x08, 0x3d, 0xab, 0x77, 0x07, 0xf4, 0xda, 0xb1, 0x37, 0x26, + 0xfc, 0x80, 0xd8, 0xf1, 0x37, 0x0c, 0x43, 0xd5, 0x60, 0xe3, 0xa0, 0xc3, 0x91, 0xd2, 0xec, 0xbc, + 0x5d, 0x4a, 0x9b, 0x28, 0x71, 0x53, 0xd1, 0xc9, 0x7d, 0xa0, 0xa5, 0x7d, 0x29, 0x9d, 0x76, 0xd1, + 0x1d, 0x9d, 0xbf, 0x8c, 0x8b, 0x54, 0xf6, 0x83, 0x05, 0x6b, 0x0f, 0x0d, 0xc3, 0x19, 0xcc, 0x62, + 0x37, 0x18, 0x8e, 0xf0, 0x7a, 0x52, 0x36, 0xf9, 0x67, 0xba, 0x68, 0x27, 0x05, 0xa2, 0xd8, 0x64, + 0x03, 0x64, 0x3f, 0x4a, 0x5b, 0x1b, 0x4c, 0xd0, 0xf7, 0x9b, 0x92, 0x85, 0x0d, 0x0a, 0xd9, 0x9b, + 0xd8, 0x0d, 0x97, 0x77, 0xe2, 0xec, 0x7a, 0xbb, 0x89, 0xb7, 0x04, 0x90, 0xdb, 0xe2, 0x4c, 0x43, + 0x5a, 0x94, 0xe3, 0x2e, 0x51, 0xe1, 0x42, 0x72, 0xfb, 0xd2, 0x55, 0x9d, 0x4f, 0x46, 0x65, 0x03, + 0xaf, 0xe5, 0x9e, 0x46, 0xa6, 0x35, 0xba, 0x6d, 0x6d, 0x80, 0x12, 0x34, 0xb4, 0x3d, 0xfd, 0xec, + 0x79, 0x64, 0x3b, 0x6a, 0xef, 0x6d, 0xc3, 0x5d, 0x29, 0x5e, 0xb2, 0x2f, 0x92, 0x64, 0x7d, 0x7d, + 0x2c, 0x5d, 0x29, 0xf2, 0x6c, 0x39, 0xbd, 0x89, 0x3b, 0x30, 0xdd, 0xcc, 0x37, 0x08, 0x3a, 0x0d, + 0xd8, 0xee, 0xb2, 0xb3, 0x1d, 0xe5, 0x0d, 0x86, 0x2e, 0xd1, 0x07, 0xe8, 0xb6, 0xbf, 0x95, 0xb2, + 0x3d, 0xd4, 0x1f, 0xae, 0x47, 0xf1, 0xd0, 0x7e, 0xe7, 0xe5, 0x2d, 0x48, 0x67, 0xef, 0xbc, 0xd8, + 0x4c, 0x87, 0xee, 0xf5, 0x28, 0x57, 0x0b, 0x4d, 0x2e, 0x9b, 0x61, 0xaf, 0xd1, 0x19, 0x27, 0x9c, + 0x7a, 0x94, 0x33, 0xfb, 0x64, 0x8b, 0xc1, 0x5e, 0x17, 0x2c, 0x96, 0xbc, 0x2c, 0x73, 0x90, 0x04, + 0x4f, 0x09, 0xe4, 0x29, 0x3c, 0x1f, 0x5a, 0x4d, 0x21, 0x51, 0x7a, 0x16, 0x91, 0xf5, 0x70, 0x3e, + 0x16, 0xd9, 0x4f, 0x84, 0x5c, 0xa8, 0xf2, 0xc1, 0xea, 0xa3, 0x0a, 0xe7, 0x09, 0x0a, 0x79, 0x39, + 0x10, 0xc5, 0xe8, 0x33, 0xb7, 0xa2, 0xe9, 0xfb, 0x22, 0x60, 0x0f, 0x63, 0x32, 0x37, 0x00, 0xb7, + 0x63, 0x5e, 0x9b, 0xae, 0xe6, 0x89, 0x1b, 0xe3, 0x57, 0x55, 0xef, 0x19, 0x5e, 0x01, 0x69, 0xa1, + 0xc6, 0x0a, 0x71, 0x77, 0x01, 0x3c, 0xf6, 0x1b, 0xa6, 0xbf, 0x1d, 0x4a, 0x98, 0x51, 0xda, 0xcd, + 0xd3, 0xe1, 0x79, 0x4b, 0x99, 0xad, 0xe2, 0xe5, 0xb0, 0x0b, 0x0b, 0xe2, 0x72, 0x89, 0x93, 0x42, + 0x4b, 0x21, 0x2c, 0xd0, 0xa9, 0xaa, 0x71, 0x2a, 0x30, 0xea, 0xe4, 0x31, 0x58, 0xf1, 0xc8, 0x39, + 0x1b, 0x67, 0x5e, 0x80, 0x55, 0x2e, 0xa0, 0xbc, 0xa7, 0x58, 0x12, 0x6b, 0x05, 0x53, 0x24, 0x4e, + 0xec, 0x2c, 0xda, 0x5e, 0xef, 0x67, 0x81, 0xd4, 0xee, 0x33, 0xff, 0x01, 0x08, 0x84, 0x44, 0x9f, + 0xbb, 0xe3, 0x12, 0x40, 0xd6, 0x30, 0x34, 0x47, 0x35, 0x51, 0x07, 0xf3, 0x58, 0x53, 0x28, 0x71, + 0x86, 0x26, 0x89, 0xb6, 0xaa, 0x61, 0x7f, 0x58, 0xdd, 0xe5, 0x4b, 0xbb, 0xe8, 0xee, 0x41, 0x03, + 0xa5, 0x0b, 0x2d, 0xe1, 0xf8, 0x7c, 0x8b, 0x1d, 0x3e, 0x70, 0xd6, 0xb3, 0x4f, 0x58, 0xc1, 0x78, + 0x34, 0x31, 0x9d, 0x8e, 0xc7, 0x72, 0x29, 0x90, 0x5f, 0x4b, 0x21, 0xd2, 0xf2, 0xa5, 0xd1, 0x60, + 0xec, 0x2e, 0xd5, 0x96, 0x79, 0xd1, 0xd4, 0xdd, 0xdd, 0xe9, 0xfb, 0x46, 0x85, 0x4d, 0xc3, 0x02, + 0xa3, 0x58, 0x6d, 0xe7, 0x49, 0x6f, 0x22, 0xa6, 0x63, 0xf0, 0xe8, 0xad, 0xf0, 0x6c, 0x0e, 0x35, + 0xee, 0x98, 0x02, 0xd5, 0xaa, 0xd2, 0xa3, 0xc4, 0x15, 0x83, 0x6f, 0x37, 0x6f, 0xe6, 0x31, 0x3b, + 0x51, 0x5c, 0x22, 0x69, 0x53, 0x96, 0x1b, 0x3f, 0x9e, 0x62, 0x80, 0x2e, 0x86, 0x23, 0x2e, 0x81, + 0xe9, 0xa5, 0x54, 0xe5, 0xf3, 0x92, 0xa2, 0x93, 0xc8, 0x1b, 0xee, 0x96, 0x3d, 0x07, 0xe3, 0xea, + 0x0c, 0x48, 0xe7, 0x85, 0x49, 0x93, 0xb1, 0xd4, 0x14, 0x93, 0xc5, 0xd3, 0x14, 0x7d, 0xd4, 0x38, + 0x9a, 0x07, 0xe2, 0x55, 0xba, 0x24, 0x86, 0xec, 0x22, 0x93, 0x41, 0xa5, 0x30, 0xea, 0xc5, 0xf9, + 0x88, 0x2a, 0x98, 0xbb, 0xe2, 0x02, 0x95, 0x4a, 0xc6, 0x55, 0x60, 0xd9, 0xce, 0x8c, 0x13, 0xe4, + 0xb2, 0x94, 0x55, 0x3a, 0x86, 0x02, 0xc9, 0x01, 0xb8, 0xd5, 0xf4, 0xbc, 0x44, 0x4d, 0xce, 0x25, + 0xb9, 0x85, 0x8d, 0x8a, 0xd1, 0x27, 0x48, 0x3a, 0x4c, 0xc2, 0xbc, 0xe6, 0x9c, 0x0b, 0x31, 0x82, + 0xb0, 0xf5, 0xb2, 0xb8, 0x52, 0xa1, 0x7a, 0xa0, 0x1a, 0x55, 0x72, 0xa9, 0xf5, 0x0e, 0x21, 0x27, + 0xa3, 0x1a, 0x48, 0xdc, 0xa6, 0xc8, 0xd0, 0x92, 0xb6, 0x07, 0xc6, 0x64, 0x16, 0x30, 0x20, 0x45, + 0x57, 0x87, 0xcc, 0x04, 0x89, 0xb3, 0xa2, 0xea, 0x94, 0xd9, 0x04, 0x8f, 0x42, 0x0e, 0xff, 0x58, + 0x04, 0x05, 0x48, 0x1f, 0x04, 0xb1, 0x2c, 0xc3, 0xe2, 0x60, 0x2c, 0xe0, 0xf7, 0x6b, 0x3b, 0x17, + 0x0f, 0x79, 0x9e, 0x1e, 0x1a, 0x5d, 0x65, 0xc1, 0x32, 0xe9, 0x89, 0x14, 0xde, 0xe6, 0xe7, 0x69, + 0xcf, 0x38, 0xa5, 0xdc, 0x80, 0x9d, 0x01, 0x8a, 0xf0, 0x59, 0x1c, 0xef, 0xd2, 0x29, 0x35, 0x62, + 0x65, 0xf8, 0xc7, 0x04, 0xd3, 0x0e, 0xe2, 0xf5, 0xf8, 0x82, 0xcd, 0xeb, 0xe9, 0xbc, 0xf4, 0x82, + 0x9c, 0x27, 0x24, 0x56, 0xa3, 0xc9, 0xc1, 0xb0, 0xc9, 0xa7, 0xf7, 0x73, 0x26, 0x37, 0x30, 0xd1, + 0x9f, 0xd9, 0xbe, 0xe8, 0x1e, 0x27, 0x7d, 0xd5, 0x8d, 0x2e, 0xb1, 0x7d, 0xfe, 0x5d, 0x98, 0x7f, + 0xb5, 0xa8, 0xba, 0xe6, 0x25, 0xe4, 0xe7, 0x5f, 0xf5, 0xae, 0xe6, 0xf8, 0x66, 0x66, 0xd7, 0xb6, + 0x4b, 0x0b, 0x81, 0x9c, 0x11, 0x6b, 0x52, 0x8d, 0x60, 0x2a, 0x25, 0x14, 0x11, 0x53, 0xcc, 0x88, + 0xb2, 0x68, 0xfc, 0xf8, 0x0a, 0x0c, 0x48, 0x87, 0xc6, 0x3e, 0x6b, 0x25, 0x0e, 0x80, 0x15, 0x38, + 0xba, 0x2e, 0x2e, 0x30, 0x6e, 0x9a, 0xb2, 0x40, 0x10, 0x78, 0x3c, 0xe5, 0x5b, 0xeb, 0x73, 0xe1, + 0x8d, 0x9e, 0x57, 0x0c, 0xe8, 0x06, 0x1a, 0xa8, 0xcb, 0xd9, 0x02, 0x82, 0xe3, 0xd0, 0x17, 0xa8, + 0xba, 0x21, 0x10, 0x74, 0x73, 0xe7, 0x40, 0xb8, 0xb9, 0xd4, 0x56, 0xea, 0xe2, 0x9a, 0xbd, 0x7c, + 0x60, 0x3e, 0x75, 0xab, 0x75, 0xfd, 0x3a, 0xdd, 0x59, 0x44, 0x34, 0x2a, 0x07, 0x62, 0x4a, 0xdb, + 0xd1, 0xbd, 0xf9, 0x29, 0x86, 0x9b, 0xa4, 0x79, 0xa1, 0x76, 0x43, 0xa5, 0xbd, 0xce, 0x77, 0xd5, + 0xb1, 0x57, 0x08, 0x1e, 0x39, 0x34, 0x14, 0x2a, 0x72, 0xa0, 0xe6, 0x78, 0x0a, 0x04, 0xad, 0xf2, + 0x55, 0x1d, 0xf6, 0x27, 0x1e, 0x9c, 0xb2, 0xab, 0xff, 0xcc, 0xbf, 0x6a, 0x7c, 0xed, 0x12, 0x45, + 0x62, 0xac, 0x45, 0x1b, 0x34, 0x20, 0xc5, 0x72, 0x66, 0x8b, 0x96, 0x8d, 0x4a, 0xc8, 0x88, 0x11, + 0x1c, 0x03, 0x58, 0xa4, 0x3b, 0x87, 0x26, 0x39, 0xe8, 0x74, 0x5b, 0xc2, 0x57, 0x4e, 0x49, 0x98, + 0xa7, 0x27, 0xea, 0x8c, 0xba, 0xb0, 0x6f, 0xc0, 0xde, 0x01, 0xf3, 0x81, 0xa4, 0x61, 0x02, 0x72, + 0x71, 0xed, 0x75, 0x6b, 0xd1, 0x9c, 0x8e, 0x05, 0x7d, 0xdb, 0x20, 0xdd, 0x3e, 0xb1, 0x3d, 0x71, + 0x92, 0x32, 0xee, 0xff, 0xf5, 0x42, 0xde, 0x7a, 0x16, 0xe8, 0x50, 0xb6, 0xc0, 0x58, 0xc6, 0xac, + 0x67, 0x19, 0xc3, 0x99, 0xcf, 0x16, 0x7c, 0x8e, 0x3e, 0x77, 0x8c, 0xd9, 0x6a, 0x7e, 0x18, 0xec, + 0x36, 0x9e, 0x20, 0xeb, 0xe2, 0xc3, 0xdf, 0x77, 0xbf, 0x7d, 0x5b, 0xb6, 0xef, 0xe6, 0x3c, 0xd3, + 0x63, 0xc8, 0x7e, 0xeb, 0x6d, 0x40, 0x61, 0xfa, 0x5e, 0x2e, 0x26, 0x52, 0x24, 0xc6, 0xc9, 0x1c, + 0xc1, 0xa1, 0x15, 0x1e, 0x5b, 0xf6, 0x79, 0x93, 0xc7, 0x57, 0x4a, 0xc8, 0x42, 0xa4, 0xc7, 0xb4, + 0x14, 0xad, 0xca, 0xb5, 0xcb, 0x24, 0xc4, 0x8d, 0x3e, 0xb6, 0x86, 0x8e, 0xd7, 0x15, 0x34, 0x1b, + 0x4a, 0x5f, 0x65, 0x19, 0x54, 0xc0, 0x6c, 0xf1, 0x5f, 0x12, 0x4c, 0x1c, 0xc0, 0xeb, 0xff, 0x63, + 0xf0, 0xbe, 0xca, 0x3d, 0x19, 0x00, 0xb6, 0xff, 0x41, 0x80, 0x32, 0x8e, 0x78, 0xf2, 0xcf, 0x01, + 0xec, 0xf5, 0x10, 0xe0, 0x4b, 0x0c, 0x40, 0xe9, 0xeb, 0xa4, 0xad, 0x68, 0xd1, 0x56, 0x3e, 0x86, + 0xdd, 0xeb, 0x95, 0x7b, 0xd9, 0x9e, 0x20, 0x53, 0xd8, 0x02, 0x1a, 0x36, 0xbf, 0x76, 0xda, 0xdd, + 0x36, 0x6d, 0x87, 0xd9, 0x12, 0x06, 0x54, 0xcf, 0x60, 0x8d, 0x4a, 0xbe, 0x6d, 0x55, 0xe2, 0xac, + 0xac, 0xd4, 0xa4, 0x20, 0x7c, 0xb5, 0xfa, 0x6d, 0x56, 0xc6, 0xb5, 0x2d, 0xf8, 0x9c, 0x1c, 0xd4, + 0x1c, 0x96, 0x81, 0x5d, 0x94, 0x18, 0x3e, 0x24, 0xce, 0xb0, 0x2d, 0xa5, 0x49, 0x17, 0xf6, 0x17, + 0xf6, 0x68, 0x3a, 0x20, 0x5c, 0x79, 0x2b, 0xdb, 0x55, 0x75, 0xe9, 0x98, 0xda, 0xa3, 0x36, 0x72, + 0x37, 0xce, 0x4e, 0xfe, 0xc9, 0x93, 0x86, 0x18, 0xa2, 0x8d, 0xa1, 0xee, 0x7c, 0x8c, 0x44, 0xcf, + 0xc9, 0xef, 0x3c, 0xef, 0x28, 0xf8, 0x8b, 0x06, 0x61, 0x71, 0x9c, 0x26, 0x10, 0xf8, 0x84, 0x74, + 0x0e, 0x84, 0x0a, 0x34, 0x64, 0x48, 0xbe, 0xac, 0xed, 0xa5, 0x70, 0x52, 0xe0, 0xa2, 0x84, 0x88, + 0xcb, 0x13, 0xf5, 0x44, 0xe0, 0xdd, 0xe6, 0xc8, 0x09, 0x0d, 0x9d, 0x8a, 0x35, 0x2b, 0xc5, 0x4e, + 0xee, 0x8e, 0x00, 0xbd, 0x22, 0xf0, 0x73, 0xe6, 0xed, 0xdd, 0x78, 0x48, 0xa9, 0x40, 0x5a, 0x87, + 0x30, 0xa2, 0xe3, 0x4f, 0xad, 0xfd, 0x83, 0xaf, 0xe5, 0x4e, 0x03, 0x21, 0x83, 0x76, 0x78, 0x93, + 0x5d, 0x68, 0xb3, 0xda, 0x33, 0x3a, 0x23, 0x3b, 0x38, 0xe2, 0x8d, 0x29, 0x11, 0x88, 0x14, 0xec, + 0x68, 0xca, 0x1a, 0xe9, 0x3a, 0xdd, 0xb4, 0xa0, 0x9d, 0xce, 0xcb, 0x8c, 0xeb, 0x1c, 0xaf, 0x96, + 0x47, 0xce, 0xae, 0xb8, 0x39, 0x44, 0x33, 0xd3, 0xc7, 0xad, 0x38, 0x83, 0xd1, 0xb0, 0xed, 0x1f, + 0xbc, 0xf3, 0xda, 0xd7, 0xe2, 0x0e, 0x1f, 0x32, 0xbc, 0xf3, 0x24, 0x11, 0xe9, 0xc4, 0x32, 0xfc, + 0x72, 0x02, 0x3b, 0x08, 0xab, 0xb1, 0x9d, 0x43, 0x6f, 0x07, 0xfa, 0xb2, 0x7a, 0xd4, 0x0b, 0x73, + 0x41, 0x1d, 0x51, 0x64, 0x89, 0xfe, 0x2f, 0xf9, 0x11, 0x64, 0x3a, 0x64, 0xcf, 0x7c, 0xea, 0x8a, + 0xff, 0xfc, 0x64, 0xfe, 0x9b, 0xd8, 0x88, 0x95, 0x43, 0x51, 0x8c, 0x9a, 0x7f, 0xa5, 0xd7, 0x6f, + 0x6c, 0xe1, 0x77, 0xa7, 0xa5, 0x1c, 0x74, 0x24, 0xd0, 0x98, 0xe9, 0xa9, 0x5a, 0x58, 0x77, 0xc9, + 0x86, 0xac, 0xdb, 0x54, 0x38, 0x59, 0xd1, 0xe2, 0x12, 0x8c, 0xc4, 0x81, 0xf5, 0xe1, 0xf0, 0x72, + 0x97, 0xbb, 0x32, 0x0a, 0x9e, 0x49, 0x73, 0xd0, 0x9d, 0xc5, 0xd8, 0x1a, 0xbf, 0xb6, 0x2d, 0x95, + 0x15, 0xf7, 0xa5, 0xbb, 0x5c, 0x69, 0x33, 0x56, 0xba, 0xe3, 0x6c, 0xf2, 0xed, 0xa1, 0x03, 0x55, + 0x99, 0x71, 0x96, 0x57, 0xf4, 0xca, 0xa1, 0x53, 0x7d, 0x4e, 0x80, 0x44, 0x63, 0xc1, 0x9c, 0x0a, + 0x5b, 0xbc, 0x48, 0xcf, 0x7b, 0x6b, 0x14, 0x22, 0x46, 0xac, 0xb0, 0x19, 0x7a, 0xe1, 0x48, 0x6a, + 0x61, 0x65, 0x85, 0x8d, 0x41, 0xc5, 0x10, 0x93, 0xdb, 0xe8, 0x8e, 0x5c, 0x87, 0x0e, 0x3c, 0x16, + 0xf2, 0xe6, 0x12, 0xc9, 0x03, 0xef, 0xf0, 0x6c, 0x2c, 0x72, 0x34, 0xdf, 0x35, 0x67, 0x91, 0x56, + 0xf2, 0x5d, 0x46, 0xc8, 0x4c, 0xd9, 0x59, 0x52, 0x7f, 0x65, 0xbd, 0x88, 0x4d, 0x88, 0x29, 0xac, + 0x7e, 0x22, 0xd1, 0x34, 0xd5, 0xb4, 0x55, 0x7b, 0xb9, 0x0a, 0x9c, 0x4f, 0xae, 0xb2, 0xf2, 0xba, + 0x26, 0x6d, 0x2a, 0xd9, 0x6e, 0xd8, 0xcc, 0x0a, 0x20, 0x05, 0x76, 0xf8, 0xb8, 0xd4, 0x5c, 0x38, + 0x19, 0x5f, 0xbc, 0x63, 0xaa, 0x65, 0x7d, 0x28, 0x26, 0x57, 0xa9, 0xef, 0x73, 0x06, 0x6f, 0x16, + 0x12, 0x4d, 0xfd, 0xd3, 0x33, 0xc8, 0xa2, 0x47, 0xc3, 0x9e, 0xc3, 0x85, 0x67, 0xb0, 0xda, 0xc8, + 0x52, 0x1b, 0x79, 0xec, 0x49, 0xea, 0x12, 0x4f, 0x10, 0x84, 0xa5, 0xcf, 0xc2, 0xb6, 0x4f, 0x57, + 0x3a, 0x2f, 0x7b, 0x74, 0x8f, 0x65, 0x3c, 0x2d, 0x24, 0x9b, 0xe3, 0xca, 0x14, 0x99, 0x8b, 0x07, + 0xcd, 0x87, 0xd6, 0xba, 0x5d, 0xc9, 0x7b, 0xee, 0x12, 0x8d, 0x3d, 0x4f, 0xbd, 0x31, 0xe0, 0x01, + 0x07, 0x47, 0xd9, 0xdc, 0xb1, 0x47, 0xd4, 0x89, 0xc3, 0x9f, 0xc8, 0x0e, 0xcc, 0xe3, 0xdc, 0x83, + 0xe2, 0x36, 0xc9, 0x7c, 0x4b, 0xb0, 0x5b, 0xfc, 0x2c, 0x05, 0xf9, 0x32, 0xa7, 0xc4, 0x60, 0xf2, + 0x52, 0xfc, 0x17, 0x22, 0xf3, 0xec, 0x8d, 0x2f, 0x4f, 0xb9, 0x0a, 0x53, 0x5e, 0xd2, 0x08, 0x2a, + 0xac, 0xdf, 0xf0, 0x55, 0xa2, 0x44, 0xb1, 0x40, 0x0e, 0xb3, 0x55, 0x67, 0x09, 0x2b, 0xa8, 0x73, + 0x19, 0x4a, 0x03, 0x07, 0xa9, 0xc9, 0x40, 0x75, 0xc8, 0x06, 0xf0, 0x73, 0xba, 0xf5, 0x20, 0xfb, + 0x99, 0x33, 0x01, 0x6c, 0xc1, 0x68, 0x94, 0x86, 0x64, 0x0e, 0x79, 0x51, 0xb9, 0xa8, 0xb0, 0x44, + 0xa3, 0xf2, 0x38, 0x09, 0xa7, 0x20, 0xd0, 0xe7, 0x90, 0x3b, 0x44, 0xd9, 0x85, 0xdf, 0xf6, 0x2f, + 0x82, 0x46, 0x2c, 0xc8, 0xa1, 0xd2, 0xc1, 0x16, 0xc3, 0x0d, 0x1a, 0x05, 0x50, 0x26, 0x73, 0xce, + 0x22, 0x9c, 0x9d, 0x39, 0xfa, 0xcd, 0xa2, 0xd6, 0x54, 0x1f, 0x05, 0x11, 0xf6, 0xb6, 0x0a, 0xd5, + 0x9f, 0x63, 0x7d, 0xfe, 0x56, 0xb9, 0xe0, 0x6c, 0x12, 0x72, 0x28, 0x89, 0x65, 0x8a, 0xc5, 0x7f, + 0x8e, 0x29, 0x2e, 0x13, 0x2e, 0xe8, 0x76, 0x16, 0x4d, 0xfc, 0xbb, 0x1c, 0x34, 0x9e, 0x63, 0xce, + 0xbf, 0x3a, 0xce, 0x2c, 0xc6, 0x91, 0xaa, 0xa3, 0x2d, 0x52, 0x32, 0xea, 0x27, 0xee, 0x1c, 0x51, + 0xaf, 0x23, 0x53, 0xe2, 0x5f, 0xb4, 0xf0, 0x1b, 0x99, 0xf1, 0x1c, 0xa3, 0xb6, 0x28, 0xf4, 0x14, + 0x90, 0x54, 0xbb, 0xea, 0x98, 0x95, 0x9f, 0x2d, 0x9c, 0x2c, 0x04, 0x79, 0x9f, 0xb1, 0x32, 0x5b, + 0xae, 0x02, 0x8f, 0xb3, 0x05, 0xd4, 0x94, 0x0b, 0x3c, 0x6d, 0xe4, 0xc0, 0xdc, 0xea, 0x4e, 0xad, + 0xa7, 0x10, 0xc7, 0x88, 0x49, 0xde, 0xe4, 0x7b, 0x9a, 0xf2, 0xf2, 0x22, 0xee, 0xce, 0x1d, 0xa1, + 0x1f, 0xd0, 0xa6, 0x22, 0x58, 0x58, 0xc4, 0x2d, 0x57, 0xc0, 0xee, 0x87, 0xb1, 0xc4, 0xa3, 0xe6, + 0xa3, 0xc3, 0x9c, 0x18, 0x3d, 0x86, 0x17, 0x12, 0x75, 0x10, 0x7f, 0x88, 0xf5, 0x53, 0xe2, 0x92, + 0xb0, 0x2b, 0x3f, 0x67, 0x9f, 0x54, 0x89, 0x3e, 0xbb, 0x40, 0xb2, 0xfc, 0x31, 0x51, 0x79, 0x51, + 0x06, 0xe1, 0xb4, 0xa6, 0x45, 0x7f, 0x93, 0x9c, 0x5d, 0x0b, 0x3c, 0x44, 0x63, 0x56, 0x01, 0xf6, + 0xb8, 0xa7, 0x12, 0xad, 0xbb, 0xb0, 0x14, 0x82, 0x9c, 0xb8, 0xc4, 0x18, 0x44, 0x2c, 0x78, 0xee, + 0xb9, 0xe4, 0x51, 0x94, 0xc3, 0x62, 0x3b, 0x43, 0xd2, 0xe2, 0xac, 0x2d, 0x42, 0x64, 0xfa, 0xcf, + 0x02, 0x82, 0x5d, 0xb5, 0x28, 0x06, 0xcd, 0xa5, 0xb8, 0x09, 0x0a, 0xc4, 0x64, 0x55, 0xd7, 0xf1, + 0xcc, 0xc3, 0x04, 0x86, 0xc8, 0xbc, 0x56, 0xa4, 0x55, 0xa5, 0x01, 0x6f, 0xe1, 0xd2, 0xcb, 0x54, + 0x40, 0xc6, 0x6a, 0x85, 0x85, 0x21, 0xba, 0x06, 0x36, 0x32, 0x5c, 0x18, 0x3d, 0x53, 0xcd, 0x23, + 0xbe, 0x1b, 0xc2, 0x86, 0x80, 0xba, 0x78, 0x72, 0x8e, 0x45, 0x60, 0x25, 0x28, 0x71, 0x23, 0xcc, + 0xc5, 0x10, 0xd2, 0x22, 0x1c, 0xdc, 0x81, 0xfc, 0x43, 0x10, 0x6a, 0x1e, 0x8c, 0x31, 0xbb, 0x2e, + 0x13, 0xdc, 0x41, 0x88, 0x0a, 0x48, 0xc6, 0x22, 0x94, 0xd0, 0x28, 0x5f, 0x8c, 0xd0, 0x1d, 0x67, + 0xd5, 0x9d, 0xa7, 0x15, 0x53, 0xc5, 0x21, 0xb9, 0x4d, 0x6e, 0xc2, 0x98, 0xab, 0x55, 0xb6, 0x0c, + 0xc3, 0x4b, 0xcc, 0xef, 0x37, 0xba, 0x5c, 0x51, 0x2c, 0x78, 0xf2, 0x56, 0xd6, 0x95, 0xb7, 0x42, + 0xc2, 0x3a, 0x9e, 0x93, 0xfb, 0x98, 0x42, 0x42, 0x0a, 0x79, 0xcc, 0x32, 0x0f, 0x8a, 0xb0, 0x47, + 0xc5, 0x6c, 0x71, 0x17, 0x8f, 0x39, 0x7b, 0xf9, 0xa4, 0xb0, 0x1b, 0xf5, 0x53, 0x0c, 0xf9, 0x50, + 0xd3, 0x04, 0xce, 0xd4, 0xb9, 0x19, 0x7b, 0xa8, 0xed, 0x76, 0x73, 0x16, 0x38, 0xcf, 0xb8, 0x0e, + 0x8f, 0x98, 0x4a, 0xdd, 0xfa, 0xfc, 0xae, 0x2f, 0x71, 0xf2, 0x93, 0x3d, 0x7f, 0xeb, 0x0d, 0xe6, + 0x0d, 0xd9, 0xb6, 0x23, 0x1a, 0x93, 0xdd, 0xf7, 0xfd, 0xbb, 0x98, 0x7d, 0x95, 0xc2, 0x9e, 0x51, + 0x69, 0x85, 0x39, 0x06, 0xfb, 0xef, 0xe8, 0x1e, 0xaa, 0x76, 0x3f, 0xe5, 0x45, 0x19, 0xb1, 0xf0, + 0x2e, 0xe2, 0x30, 0x4c, 0x87, 0x38, 0x9f, 0x3a, 0x99, 0xc0, 0x50, 0x3c, 0xcf, 0xd8, 0x2e, 0xe9, + 0x29, 0x23, 0xcd, 0x41, 0x57, 0x6c, 0x7f, 0xf4, 0x25, 0x5f, 0xd2, 0x4c, 0x4f, 0x03, 0x29, 0x96, + 0xf3, 0xd4, 0x2c, 0x14, 0x42, 0x92, 0x30, 0x2d, 0xe6, 0x0b, 0x60, 0xd5, 0x60, 0xcf, 0x41, 0x5a, + 0xf0, 0x8d, 0xac, 0xd4, 0x86, 0xdf, 0xb1, 0x41, 0x64, 0x9c, 0x06, 0xd2, 0xe9, 0x22, 0x61, 0x77, + 0x79, 0x7f, 0x6b, 0xbf, 0x3c, 0x40, 0x8f, 0x9e, 0x8e, 0xf2, 0xc5, 0x7c, 0x07, 0x79, 0x89, 0x0a, + 0x7d, 0x14, 0x0d, 0xee, 0x91, 0x36, 0x25, 0x59, 0xa6, 0x1e, 0x70, 0x5a, 0xaf, 0x14, 0x9f, 0x4a, + 0x53, 0x62, 0xcb, 0x46, 0x13, 0x61, 0x8a, 0x6c, 0xc7, 0x5e, 0x74, 0x35, 0x0d, 0x34, 0x67, 0x28, + 0x31, 0xb1, 0x16, 0x9c, 0xc9, 0x17, 0x1c, 0x56, 0x15, 0x90, 0xf4, 0x16, 0x1d, 0xe5, 0xba, 0xbc, + 0xaf, 0x7f, 0xe0, 0x1c, 0xec, 0x1f, 0x58, 0xf0, 0x4e, 0xc8, 0x3d, 0xeb, 0x9d, 0x79, 0x41, 0x64, + 0xe3, 0x4f, 0xd5, 0x3d, 0xaa, 0x89, 0x88, 0x7e, 0x9c, 0x1b, 0x3e, 0x3d, 0x0f, 0x96, 0xd2, 0xc8, + 0x77, 0x8c, 0x65, 0x7e, 0x35, 0xbe, 0xa7, 0x43, 0x74, 0x00, 0x16, 0x19, 0x77, 0x06, 0x2f, 0x5a, + 0x48, 0x5c, 0x45, 0xea, 0xa1, 0x6e, 0xc6, 0xae, 0x64, 0xcb, 0xf9, 0xc0, 0xf0, 0xfa, 0xfe, 0xfc, + 0x66, 0x57, 0x58, 0xa8, 0x2f, 0xb3, 0xda, 0x81, 0x57, 0xd8, 0x86, 0xbb, 0x26, 0x68, 0x2f, 0x19, + 0x03, 0x77, 0xfb, 0xca, 0x5e, 0x62, 0x10, 0x15, 0x58, 0x1c, 0x23, 0x83, 0xf6, 0x65, 0x20, 0x57, + 0x28, 0x72, 0xa1, 0x42, 0x43, 0xde, 0xf8, 0xf1, 0x31, 0x06, 0x22, 0xcf, 0x5f, 0x38, 0x93, 0x2c, + 0x3b, 0x0c, 0x8c, 0xba, 0xb3, 0xfe, 0x2d, 0xe5, 0x27, 0x07, 0xd3, 0x1e, 0xf4, 0x20, 0xb4, 0xd4, + 0x79, 0x55, 0x84, 0xf3, 0x9d, 0xce, 0x7d, 0x60, 0xb9, 0x5a, 0x34, 0x66, 0x72, 0xc3, 0x9d, 0x2d, + 0xca, 0x2f, 0xf3, 0x90, 0x63, 0x00, 0xc5, 0xed, 0x7f, 0x2d, 0xe0, 0x27, 0x9c, 0x1b, 0x74, 0x78, + 0xa5, 0x4a, 0xef, 0x03, 0xf1, 0xbc, 0x28, 0xfc, 0x7a, 0x9f, 0x11, 0x6a, 0xc3, 0xd6, 0x71, 0x46, + 0x06, 0x51, 0x90, 0x6c, 0x05, 0x54, 0xdc, 0x29, 0x09, 0x66, 0xa9, 0x18, 0xa0, 0x2e, 0x1b, 0x6c, + 0xb1, 0xd5, 0xa8, 0xb8, 0x1a, 0xf6, 0xbd, 0x00, 0xf2, 0x83, 0xe9, 0xc9, 0x33, 0x1d, 0x3f, 0xbe, + 0x3d, 0x18, 0x82, 0xe1, 0x14, 0x8a, 0xb3, 0x45, 0xc5, 0xc6, 0xdd, 0x10, 0x0a, 0x45, 0x74, 0xfa, + 0xa6, 0xd7, 0xb9, 0x96, 0xe5, 0x2d, 0x49, 0x77, 0xc9, 0x40, 0x58, 0x40, 0x92, 0x77, 0x80, 0xca, + 0x0d, 0xc9, 0xa3, 0xc1, 0xe2, 0xa2, 0x63, 0x49, 0x75, 0x63, 0xf3, 0xf3, 0x96, 0x4d, 0xba, 0x12, + 0x83, 0xa9, 0xa6, 0xeb, 0x32, 0x44, 0x8b, 0x6c, 0x5b, 0x1b, 0x44, 0x6f, 0x91, 0x7c, 0x66, 0xc3, + 0x69, 0x7b, 0xf6, 0x44, 0xfe, 0xc0, 0x35, 0x6d, 0x82, 0xd0, 0x42, 0x37, 0xd5, 0xd9, 0x27, 0xae, + 0x3c, 0xc8, 0x0b, 0xfa, 0x45, 0x2d, 0x72, 0x31, 0x65, 0xb5, 0x80, 0x5d, 0xb4, 0xa3, 0xfa, 0x6c, + 0x96, 0xdd, 0x59, 0xe8, 0xd3, 0xc1, 0xe1, 0x89, 0x2b, 0x67, 0x8b, 0x71, 0xbb, 0x19, 0x4e, 0xa5, + 0xa5, 0x85, 0xb4, 0xcd, 0x78, 0x55, 0x2c, 0x93, 0xdd, 0xf4, 0xd6, 0x6b, 0x25, 0xf0, 0x46, 0x03, + 0x71, 0x01, 0x6b, 0x48, 0xbe, 0xef, 0x8d, 0x41, 0x01, 0xc4, 0x1a, 0x1e, 0x02, 0x33, 0x6a, 0x1a, + 0x64, 0x33, 0x5f, 0x8c, 0xf1, 0x64, 0x2e, 0xfc, 0x47, 0xd9, 0x62, 0x74, 0xe8, 0x0b, 0x02, 0x50, + 0xbc, 0x19, 0xcc, 0x23, 0x55, 0xd6, 0xb1, 0x6a, 0xdf, 0x52, 0xde, 0xa8, 0x2f, 0x8e, 0xeb, 0x48, + 0x11, 0x9f, 0x3c, 0x4f, 0x6b, 0x6d, 0x6d, 0x43, 0xfb, 0x78, 0xde, 0x43, 0xec, 0x9f, 0xd5, 0xb2, + 0x97, 0x0c, 0x33, 0xe0, 0xea, 0xa5, 0xb0, 0x08, 0x93, 0xf7, 0x97, 0x6d, 0xa1, 0xfc, 0xaf, 0xb8, + 0x7b, 0x4d, 0x9a, 0x6a, 0x3b, 0x8b, 0x2a, 0xf2, 0x87, 0x73, 0xef, 0x2e, 0x08, 0xdf, 0xb1, 0x93, + 0xfa, 0xb7, 0xc5, 0xdc, 0x6f, 0xd1, 0x6c, 0xe7, 0x68, 0x16, 0xe3, 0xcd, 0xba, 0xf4, 0x24, 0x66, + 0x91, 0x60, 0xa3, 0x32, 0xeb, 0xe7, 0xbd, 0x44, 0xa3, 0xe4, 0x19, 0xe3, 0x13, 0x5d, 0xe3, 0xdd, + 0xa6, 0xe5, 0x38, 0xa3, 0x52, 0xc8, 0x7d, 0xd2, 0x33, 0xd1, 0xd1, 0x61, 0x85, 0xf7, 0x52, 0x26, + 0xf5, 0x93, 0xee, 0x2c, 0xf6, 0xdc, 0x7b, 0xee, 0xf9, 0x49, 0x53, 0xdf, 0x6b, 0xc6, 0xf1, 0x81, + 0xfb, 0x3a, 0x89, 0x1f, 0x1d, 0x4d, 0xb1, 0xed, 0x3f, 0xeb, 0xde, 0x8d, 0x97, 0x9f, 0x49, 0x89, + 0x42, 0x5f, 0x59, 0x24, 0xae, 0x0d, 0xdc, 0x14, 0xbc, 0x3e, 0xf0, 0x8c, 0x87, 0x4b, 0xf4, 0xf9, + 0x0f, 0x97, 0x18, 0xa3, 0xd8, 0xc7, 0x66, 0x46, 0x55, 0xfc, 0x45, 0x4b, 0x37, 0xed, 0x76, 0x80, + 0x86, 0xc8, 0x3e, 0xbe, 0xca, 0x76, 0x1a, 0xae, 0x29, 0xb9, 0xaf, 0x74, 0x16, 0x67, 0xbc, 0x03, + 0xa3, 0xef, 0x54, 0x89, 0xe2, 0x4c, 0x8c, 0x43, 0xe5, 0x9c, 0xf9, 0xa9, 0x0b, 0x3e, 0xa8, 0xa5, + 0xe8, 0x73, 0x9d, 0x8f, 0x73, 0xde, 0xe6, 0xe6, 0x3a, 0xbf, 0xe3, 0x62, 0x10, 0x62, 0xc6, 0x51, + 0x2e, 0x2c, 0xe6, 0xb3, 0xee, 0x05, 0xb5, 0xd1, 0x51, 0x7e, 0x65, 0xf5, 0x48, 0x81, 0x48, 0x7d, + 0x9a, 0xea, 0xdd, 0x82, 0xf0, 0x56, 0xbe, 0x7f, 0xad, 0x3b, 0x4e, 0xbf, 0xc2, 0x0a, 0x2b, 0x35, + 0xbf, 0x45, 0xbd, 0xee, 0xef, 0xf2, 0x2b, 0x68, 0x09, 0x36, 0x97, 0x71, 0xcc, 0x01, 0x63, 0x29, + 0x56, 0x3e, 0x8e, 0x4a, 0x6f, 0x81, 0x37, 0xc7, 0x9c, 0x5e, 0x72, 0x88, 0x19, 0x0d, 0x24, 0x2f, + 0x92, 0x5b, 0x58, 0x70, 0x0e, 0xdd, 0xd4, 0x8a, 0xbb, 0xe4, 0xc1, 0x6b, 0xa9, 0xb8, 0x98, 0xe9, + 0xa9, 0x43, 0x44, 0xb3, 0xf2, 0xd6, 0x7d, 0x94, 0xe3, 0xc7, 0x70, 0x8b, 0x78, 0x33, 0xc4, 0xaa, + 0x83, 0xa0, 0xbf, 0x89, 0xdf, 0xb8, 0xb1, 0x2f, 0x18, 0x7b, 0x16, 0x3c, 0xae, 0x97, 0xd4, 0x73, + 0x4f, 0x8d, 0x62, 0xf3, 0x70, 0x39, 0x54, 0x01, 0xa3, 0x1d, 0x32, 0x30, 0x34, 0xea, 0x07, 0x3b, + 0x30, 0x26, 0x7a, 0x72, 0xf5, 0xb2, 0x46, 0xb1, 0x42, 0xa5, 0xd7, 0x41, 0xb9, 0x3b, 0x23, 0x54, + 0x80, 0x8e, 0x53, 0xfa, 0xf1, 0x08, 0x48, 0xf2, 0x4e, 0x2c, 0x56, 0xb8, 0x8d, 0xae, 0x72, 0x53, + 0x67, 0xfe, 0x8f, 0x42, 0x70, 0xf2, 0xe5, 0x36, 0x2e, 0xfc, 0x13, 0x67, 0x61, 0x38, 0x1c, 0x81, + 0x5f, 0x6d, 0xde, 0xc8, 0xe2, 0x64, 0x62, 0x16, 0x14, 0x92, 0x3e, 0x93, 0xee, 0x7f, 0x2d, 0x4a, + 0xac, 0x1e, 0x4f, 0xe1, 0x6f, 0x2c, 0x72, 0x9e, 0x28, 0x41, 0xa2, 0x87, 0xc4, 0x20, 0xc5, 0x6e, + 0xdb, 0xa1, 0x57, 0xec, 0x43, 0x48, 0x09, 0x0b, 0x9a, 0x8d, 0x48, 0xad, 0x12, 0x73, 0x4f, 0x8d, + 0x93, 0x04, 0x78, 0xe1, 0x8a, 0xbb, 0x43, 0x69, 0xbd, 0xf3, 0x4d, 0xf5, 0x97, 0xf4, 0x2e, 0x0d, + 0x1b, 0x2c, 0x89, 0x74, 0x71, 0x31, 0x0d, 0xfb, 0xe9, 0xa6, 0xe2, 0xdf, 0x10, 0xda, 0xf8, 0xe6, + 0x87, 0x25, 0xcf, 0x7a, 0x51, 0x72, 0xa5, 0xfe, 0xb8, 0xd3, 0x00, 0xd3, 0xc8, 0x85, 0x20, 0x44, + 0xd5, 0x59, 0xd0, 0xf8, 0x15, 0xcb, 0xbb, 0x60, 0x8e, 0x7e, 0x76, 0xe9, 0x01, 0xe8, 0xe6, 0x8c, + 0x13, 0xf0, 0x37, 0xb8, 0x72, 0xab, 0x4e, 0x6d, 0xda, 0xbe, 0x11, 0x81, 0x29, 0x20, 0x9c, 0x03, + 0x81, 0x17, 0xb8, 0x61, 0xe6, 0x07, 0x73, 0x88, 0xcb, 0x75, 0xfd, 0x2b, 0x22, 0xfe, 0x22, 0xb1, + 0x05, 0x99, 0x73, 0xc0, 0x22, 0xe7, 0xb0, 0xdb, 0x81, 0xbf, 0x5d, 0x3a, 0xb7, 0x68, 0x97, 0x5c, + 0x0e, 0x6d, 0xe1, 0x8e, 0x22, 0x07, 0x73, 0x90, 0x9c, 0xff, 0xaf, 0x21, 0x10, 0x9c, 0x22, 0xc0, + 0xd2, 0x16, 0x60, 0x83, 0x11, 0x60, 0x9a, 0x84, 0x84, 0x27, 0x3b, 0xe8, 0x24, 0x39, 0xe3, 0x9c, + 0x10, 0x18, 0xa4, 0x54, 0x8c, 0x63, 0xd0, 0x6a, 0xa7, 0x20, 0xaf, 0x0d, 0x1f, 0x3e, 0xef, 0xe8, + 0x98, 0xc3, 0xcb, 0xe3, 0x33, 0xfe, 0xb6, 0x26, 0xcb, 0x29, 0x07, 0x7e, 0x41, 0x6e, 0xfc, 0x87, + 0x32, 0x73, 0xcf, 0x65, 0xa5, 0x2e, 0x3b, 0xc3, 0xf0, 0x8a, 0x5b, 0xd1, 0x48, 0x1e, 0x0d, 0x1f, + 0xfe, 0x48, 0xdc, 0x1e, 0x7f, 0xb6, 0x72, 0x11, 0xcd, 0x64, 0x49, 0x37, 0xd5, 0x57, 0x07, 0xf2, + 0x9b, 0x68, 0x2a, 0x9e, 0x7d, 0xc2, 0x1d, 0x75, 0xd1, 0x61, 0xd6, 0x3b, 0xc9, 0x95, 0xa2, 0x27, + 0xbb, 0x9c, 0x3b, 0xee, 0x47, 0xce, 0xab, 0x79, 0x3c, 0xfe, 0x5b, 0xd5, 0xed, 0x02, 0x16, 0x80, + 0x0e, 0x32, 0x6c, 0x9d, 0x53, 0x47, 0xe8, 0xcf, 0x0e, 0xb9, 0x94, 0xaf, 0xc4, 0xcf, 0x49, 0xb6, + 0x94, 0x2e, 0xfd, 0x2b, 0x12, 0x10, 0xa3, 0xe0, 0xce, 0x8a, 0xe7, 0x78, 0xc2, 0xfb, 0xd3, 0x72, + 0x1a, 0x1c, 0x73, 0x40, 0xa1, 0x4b, 0x34, 0xfe, 0xf0, 0x9f, 0x73, 0x68, 0x89, 0xb0, 0x82, 0xc5, + 0x9e, 0x06, 0x37, 0x7d, 0x73, 0xdc, 0xe4, 0x7c, 0xa2, 0xff, 0x85, 0x74, 0xae, 0x1c, 0x3f, 0x80, + 0x15, 0x8d, 0x94, 0x0a, 0x71, 0x8d, 0x6c, 0xa2, 0x5f, 0xcd, 0xef, 0x21, 0x38, 0xf0, 0xb8, 0x96, + 0xe9, 0x89, 0xc5, 0xc2, 0x62, 0xc8, 0x15, 0x68, 0xc7, 0x97, 0xdd, 0x00, 0xb5, 0xf7, 0x41, 0x0c, + 0xfa, 0xcc, 0x4d, 0x50, 0xff, 0x46, 0x5c, 0xc4, 0x9b, 0x78, 0xc9, 0xc5, 0x50, 0xea, 0x6e, 0xed, + 0xba, 0xff, 0x70, 0xde, 0x17, 0xf1, 0x3e, 0x09, 0xd9, 0x42, 0xe8, 0xa2, 0xdc, 0xf2, 0x35, 0xf5, + 0xb9, 0xcb, 0x62, 0x8b, 0x87, 0x30, 0x28, 0xce, 0x26, 0x3f, 0xba, 0xc9, 0x26, 0xc7, 0x82, 0x9f, + 0xf9, 0x66, 0xf8, 0xb9, 0x7f, 0xae, 0x11, 0x8c, 0x3b, 0x74, 0xd2, 0x83, 0x3c, 0x25, 0xb9, 0x18, + 0xc9, 0x83, 0x8b, 0xe2, 0xf1, 0x99, 0x33, 0x4b, 0xf7, 0x64, 0x59, 0xf2, 0x8f, 0x9e, 0x22, 0x58, + 0x8d, 0x39, 0xed, 0xf3, 0xd6, 0xef, 0x12, 0x99, 0xdd, 0x3f, 0x03, 0x0e, 0xcc, 0xb8, 0x1c, 0x81, + 0x94, 0x7d, 0x4d, 0x7f, 0x51, 0x38, 0xf7, 0x2f, 0x14, 0x4f, 0x99, 0xb3, 0xca, 0x1c, 0x43, 0x1d, + 0xd3, 0x08, 0xc7, 0xc2, 0xf7, 0x8c, 0x1b, 0xf9, 0x1d, 0x03, 0x08, 0xc1, 0x0f, 0xf0, 0x12, 0x41, + 0xed, 0xd6, 0xc5, 0xce, 0x58, 0x14, 0xa8, 0x76, 0x53, 0x17, 0xdd, 0x4b, 0xaa, 0xe2, 0x16, 0xc6, + 0x5f, 0x86, 0x7e, 0x08, 0x18, 0x3d, 0x5c, 0xb8, 0x3d, 0x4a, 0xa7, 0xd3, 0xdf, 0x33, 0x50, 0x7e, + 0x4b, 0x58, 0xfb, 0xae, 0x1b, 0x6e, 0xe8, 0x64, 0x0a, 0x20, 0x52, 0x51, 0xa0, 0x6d, 0xc1, 0xbb, + 0xc7, 0xf6, 0xc5, 0xad, 0xb5, 0x96, 0x61, 0x59, 0x6f, 0x92, 0x07, 0x4a, 0xd0, 0x09, 0xe9, 0xda, + 0xc2, 0xb1, 0x32, 0x56, 0x5a, 0x14, 0xce, 0x17, 0x06, 0xf9, 0x7b, 0xc6, 0x07, 0x1c, 0x74, 0xad, + 0xdd, 0x17, 0xb7, 0xdc, 0x86, 0x69, 0xda, 0x9a, 0xdb, 0x9c, 0x1b, 0xed, 0x46, 0xa4, 0x85, 0x60, + 0x81, 0x8b, 0x6e, 0xbe, 0x9b, 0x8d, 0x37, 0xeb, 0x17, 0x53, 0x81, 0x80, 0xb1, 0x1e, 0xa6, 0xb2, + 0xe5, 0x2a, 0xac, 0xd1, 0x36, 0xd8, 0x4e, 0x62, 0x4c, 0x10, 0x9e, 0xa1, 0x03, 0xd6, 0x3a, 0x2f, + 0x08, 0xb4, 0xdf, 0xd7, 0x08, 0x4d, 0x4d, 0x24, 0x7d, 0xfc, 0x38, 0x7d, 0x0d, 0x3a, 0xa4, 0x7a, + 0xaf, 0x34, 0xc8, 0x8c, 0xb8, 0xb5, 0xfe, 0x75, 0x4a, 0xe4, 0x72, 0xaf, 0x06, 0xa8, 0x56, 0xb7, + 0xbe, 0x9b, 0x5c, 0x2f, 0xd8, 0xa5, 0x61, 0x71, 0x8b, 0xc2, 0xf9, 0x9e, 0x31, 0x61, 0x30, 0xac, + 0xb9, 0xa0, 0x0f, 0x41, 0x17, 0xce, 0x35, 0x51, 0x58, 0x8b, 0x74, 0xe0, 0x5c, 0x83, 0xd6, 0xe3, + 0x5b, 0xcc, 0x29, 0xb9, 0xda, 0xd2, 0x06, 0x31, 0x06, 0x36, 0x6d, 0x70, 0x6d, 0x55, 0x8b, 0xad, + 0x37, 0xbd, 0xb3, 0x30, 0x66, 0x4c, 0x8c, 0x6d, 0x74, 0x0d, 0x5b, 0xcd, 0x66, 0x4b, 0xcb, 0x5b, + 0xc5, 0xaa, 0x1f, 0x8d, 0xb2, 0x65, 0x2d, 0x8e, 0xf2, 0xd4, 0x75, 0xe1, 0x5e, 0x3a, 0xd6, 0x42, + 0x56, 0x5e, 0xde, 0xea, 0xda, 0x25, 0x21, 0x2f, 0x1f, 0x35, 0x7b, 0xb4, 0x30, 0xce, 0x23, 0xd8, + 0x5a, 0x97, 0x8f, 0x53, 0x2e, 0xad, 0x18, 0x27, 0x56, 0xfd, 0x70, 0x36, 0x71, 0x2f, 0x88, 0x99, + 0x50, 0x4c, 0x5e, 0x3e, 0xa7, 0xb9, 0xee, 0xf2, 0x56, 0x69, 0xd5, 0xb5, 0xf8, 0x76, 0xbd, 0x56, + 0xbe, 0x4d, 0x60, 0x73, 0x30, 0x26, 0x69, 0xd8, 0x4d, 0xa9, 0x1f, 0x50, 0x9a, 0x7e, 0xf8, 0xa0, + 0x4f, 0x9c, 0xdb, 0xeb, 0xd3, 0x84, 0x98, 0xb1, 0x89, 0x83, 0x01, 0xa5, 0x6c, 0x31, 0xf9, 0x0d, + 0x3b, 0xb0, 0x16, 0x43, 0xc7, 0xab, 0xa8, 0xaa, 0x69, 0xe8, 0x3d, 0xb5, 0x1f, 0xdf, 0x03, 0x7e, + 0x2d, 0x75, 0x86, 0x8b, 0x2b, 0xa9, 0x73, 0x06, 0xdd, 0x4f, 0x7c, 0x91, 0x97, 0x0e, 0x3d, 0xef, + 0x0f, 0x7d, 0x2d, 0x66, 0x01, 0x35, 0x05, 0xac, 0x1f, 0x69, 0x9a, 0xe3, 0x0c, 0xb4, 0x75, 0x26, + 0x7d, 0xe0, 0x02, 0xf7, 0x7b, 0x3f, 0xe8, 0xc2, 0x84, 0xee, 0x58, 0xde, 0x67, 0x00, 0x10, 0x40, + 0x88, 0x29, 0xb0, 0x6d, 0xc3, 0xe7, 0x5b, 0xe1, 0xfd, 0x05, 0xf9, 0x33, 0x42, 0x8b, 0x60, 0x4a, + 0xe0, 0x22, 0x19, 0xf1, 0x03, 0xed, 0x6b, 0x37, 0xf8, 0x6d, 0x0b, 0xe4, 0x17, 0x6b, 0x2e, 0xbc, + 0xd8, 0xb0, 0x2d, 0x08, 0x56, 0x42, 0x61, 0xd4, 0x5b, 0xc8, 0x8c, 0xd4, 0x62, 0xfa, 0x45, 0x2f, + 0x58, 0xa8, 0x30, 0x7e, 0xe0, 0xbb, 0x74, 0x17, 0xa1, 0xe3, 0x64, 0x79, 0x30, 0x28, 0xda, 0x38, + 0xfd, 0x86, 0x00, 0x24, 0x12, 0x07, 0x52, 0xb0, 0x6d, 0x43, 0xa7, 0x45, 0xeb, 0x22, 0xfb, 0xa2, + 0xc0, 0x8d, 0xa5, 0xa8, 0x5a, 0xc2, 0x19, 0xa8, 0x36, 0xe4, 0xc1, 0x2e, 0x52, 0x17, 0x73, 0xc5, + 0x22, 0xf4, 0x10, 0x04, 0x91, 0xba, 0x98, 0x15, 0x05, 0x3e, 0x94, 0x3f, 0xe8, 0xbf, 0xda, 0x08, + 0xde, 0xb2, 0xb9, 0xb2, 0x18, 0xd7, 0x1f, 0x77, 0x6b, 0x0f, 0x98, 0xb2, 0xb7, 0x29, 0x30, 0x6d, + 0x20, 0x5c, 0x98, 0x89, 0x03, 0x58, 0x96, 0xe5, 0x06, 0x13, 0xe6, 0xfe, 0xa8, 0xf4, 0x06, 0x12, + 0x1d, 0x92, 0x77, 0x89, 0x03, 0x31, 0x87, 0xdf, 0x2a, 0x50, 0xda, 0x78, 0x69, 0xac, 0xad, 0x29, + 0xfa, 0x0b, 0x02, 0x60, 0x25, 0x17, 0x00, 0x70, 0xfd, 0xf3, 0x23, 0x98, 0x78, 0xfd, 0xa6, 0xf4, + 0xc8, 0x5c, 0xa8, 0x45, 0x8e, 0x94, 0xdd, 0x8d, 0x56, 0xe4, 0xc8, 0xc6, 0xfd, 0x76, 0x84, 0x57, + 0x08, 0xb6, 0x21, 0xec, 0x7e, 0x64, 0xe3, 0xc1, 0x82, 0xf4, 0x06, 0x8a, 0xb8, 0x84, 0x72, 0x38, + 0x95, 0x13, 0xc5, 0x51, 0xf1, 0x77, 0xa7, 0xf3, 0x70, 0xa1, 0x03, 0xc1, 0x44, 0xe2, 0xdd, 0xac, + 0x43, 0x36, 0xb5, 0xdc, 0x74, 0xb3, 0x0f, 0x4b, 0xc8, 0x48, 0x6d, 0x74, 0x5a, 0xf3, 0xc5, 0x0a, + 0x4c, 0x30, 0xce, 0xaa, 0x1c, 0x3f, 0xab, 0x32, 0x76, 0x96, 0x98, 0x80, 0x5d, 0xfd, 0x6d, 0xe5, + 0xf4, 0xfa, 0xe4, 0xfb, 0xe1, 0xbd, 0x1d, 0x50, 0xa6, 0x85, 0x1c, 0xbd, 0x10, 0x24, 0x0b, 0xd9, + 0x0a, 0xbb, 0xbb, 0x24, 0xe4, 0xd9, 0x25, 0xa6, 0x9e, 0x50, 0xcc, 0xb1, 0xcb, 0x47, 0x42, 0xa9, + 0x8c, 0x65, 0xe0, 0xa1, 0xec, 0xde, 0x97, 0x12, 0x71, 0x63, 0x0a, 0xcd, 0x25, 0x46, 0xaf, 0xf2, + 0xe7, 0x29, 0xb8, 0xdf, 0x2c, 0x6e, 0x1d, 0x8e, 0x60, 0xd9, 0x63, 0xee, 0xe2, 0x82, 0xb7, 0xd9, + 0x84, 0xac, 0x85, 0x67, 0x64, 0x35, 0xe6, 0x17, 0x10, 0xdf, 0x5a, 0x44, 0xfc, 0x5a, 0x08, 0xf3, + 0xad, 0x15, 0x98, 0xa7, 0x88, 0x07, 0x69, 0x72, 0x09, 0xe2, 0xd7, 0xbc, 0xf5, 0x24, 0xff, 0x37, + 0xe0, 0xfe, 0xab, 0xa2, 0x28, 0x82, 0xec, 0xa2, 0x33, 0x0e, 0x9b, 0x6b, 0x71, 0xe8, 0x6c, 0x29, + 0x8e, 0xeb, 0x23, 0xba, 0x0c, 0xab, 0xe3, 0x38, 0x32, 0x47, 0x92, 0xfd, 0x1d, 0xac, 0xde, 0x7d, + 0x84, 0xd5, 0xbb, 0xff, 0x51, 0xac, 0x7e, 0x1e, 0x3f, 0x77, 0x08, 0x3b, 0xc3, 0xef, 0x18, 0xf1, + 0x58, 0x7a, 0xf9, 0x27, 0x68, 0xef, 0xe4, 0x23, 0x2c, 0x9d, 0x7c, 0x02, 0x4b, 0x95, 0xac, 0x8b, + 0xa7, 0x6c, 0x45, 0x5e, 0x86, 0xaa, 0x52, 0xb1, 0x28, 0xff, 0x43, 0x08, 0x3a, 0x21, 0xda, 0x58, + 0xd5, 0x33, 0x37, 0x64, 0x08, 0x12, 0x38, 0x12, 0xd3, 0xd2, 0xe5, 0xe9, 0x5e, 0xc4, 0x0b, 0x71, + 0x64, 0x2b, 0x9e, 0xb8, 0x7e, 0x0b, 0x6b, 0xd7, 0x01, 0xda, 0xe3, 0x79, 0xe5, 0x75, 0xbf, 0xfd, + 0x11, 0xde, 0xe8, 0x1e, 0xe8, 0x51, 0xd7, 0xda, 0x3f, 0xb0, 0x07, 0xae, 0xc0, 0xd8, 0x35, 0x30, + 0x49, 0xec, 0x89, 0x4e, 0xb4, 0x65, 0xa8, 0xea, 0xff, 0x13, 0x6b, 0xee, 0xe0, 0x23, 0x6a, 0xfa, + 0x5d, 0xbc, 0xc4, 0xaf, 0xba, 0xbf, 0x83, 0x97, 0x38, 0xb4, 0xac, 0x1d, 0x58, 0x84, 0xe8, 0x1f, + 0x61, 0xa6, 0xbd, 0x82, 0x60, 0xd6, 0x3e, 0x8b, 0x99, 0x9d, 0x0f, 0x36, 0x57, 0x17, 0x31, 0x6b, + 0x7f, 0x0f, 0x33, 0x8b, 0x88, 0x59, 0xfb, 0xf7, 0x30, 0xb3, 0x03, 0xf0, 0x3c, 0xbc, 0xac, 0x45, + 0x11, 0x13, 0xc1, 0xcf, 0x64, 0x05, 0x7e, 0x68, 0xfe, 0x40, 0x6d, 0xa3, 0xa4, 0xf8, 0x69, 0x5c, + 0xdd, 0x7f, 0x80, 0xab, 0xfb, 0xff, 0x93, 0x30, 0x75, 0x8f, 0xa7, 0x96, 0x4b, 0x51, 0xe5, 0xe3, + 0xa0, 0xad, 0x68, 0x7f, 0x87, 0xe7, 0xac, 0x71, 0x68, 0x69, 0xc4, 0xa1, 0x85, 0x17, 0xbe, 0x15, + 0x0d, 0x7d, 0x9a, 0xa9, 0xa0, 0x9d, 0xa6, 0xe3, 0x8c, 0x11, 0xb7, 0xe5, 0x7f, 0x44, 0xdc, 0xa6, + 0xe8, 0x58, 0x5b, 0x81, 0x8f, 0x36, 0xeb, 0xcb, 0x32, 0x74, 0xd0, 0x6b, 0x39, 0xd1, 0x09, 0x80, + 0xc4, 0x40, 0x97, 0xf9, 0x66, 0x36, 0x13, 0x22, 0x0a, 0x75, 0xf0, 0x1f, 0xe8, 0x8a, 0x02, 0xfd, + 0x7c, 0x5c, 0x5d, 0x04, 0x46, 0xe6, 0xcb, 0xbb, 0x8b, 0xf7, 0x41, 0x49, 0x97, 0x93, 0xea, 0xb8, + 0xb1, 0xc4, 0x42, 0x56, 0xc2, 0x90, 0x2f, 0x3c, 0x26, 0xb3, 0x0c, 0xba, 0x57, 0x65, 0x6b, 0x59, + 0x03, 0x6b, 0xd1, 0x16, 0x3a, 0xe5, 0x50, 0x0b, 0x8f, 0x44, 0xd3, 0x8c, 0xc9, 0xf2, 0xee, 0x7b, + 0x35, 0xb6, 0x7c, 0x9d, 0xe6, 0xa3, 0x21, 0x80, 0xae, 0xcc, 0x37, 0x70, 0xaf, 0x58, 0x43, 0x81, + 0xe2, 0x7f, 0xf5, 0x30, 0x68, 0xb5, 0xcf, 0x0f, 0x03, 0xff, 0xe3, 0x5b, 0x61, 0x0d, 0xac, 0x80, + 0xdf, 0x8b, 0x37, 0x99, 0x01, 0x74, 0x01, 0x2f, 0x46, 0x45, 0xc7, 0x21, 0xcb, 0x91, 0x49, 0xde, + 0xd1, 0x00, 0xe8, 0xaa, 0x21, 0x70, 0xd3, 0xf0, 0xbd, 0x6d, 0x7d, 0x66, 0x0c, 0xa0, 0x02, 0xf0, + 0x63, 0xb8, 0x54, 0x41, 0xab, 0x5b, 0x31, 0x04, 0x79, 0xf9, 0x10, 0xe2, 0x7a, 0x1f, 0x82, 0x8d, + 0xac, 0x73, 0x05, 0x6c, 0x19, 0x61, 0x7f, 0x92, 0x48, 0x11, 0x72, 0xa7, 0xcc, 0xc1, 0x6e, 0xbe, + 0x29, 0xfa, 0x6a, 0xc4, 0xd0, 0x0a, 0x9f, 0x9d, 0x5b, 0xb9, 0x8c, 0x98, 0xe1, 0xe0, 0xd3, 0xfd, + 0x70, 0x55, 0xe7, 0x59, 0x85, 0x4f, 0x52, 0xa8, 0xa5, 0x77, 0xf9, 0xa5, 0xab, 0xe8, 0x5d, 0x63, + 0xf8, 0x29, 0xed, 0xc2, 0x31, 0x04, 0x2a, 0xfd, 0xa2, 0x66, 0x21, 0x19, 0x74, 0x61, 0x52, 0x05, + 0x4f, 0xea, 0x63, 0xff, 0xa8, 0x42, 0x27, 0x99, 0x23, 0xcb, 0xd4, 0xc8, 0x92, 0x8b, 0xd7, 0x1b, + 0xd9, 0x2c, 0x35, 0x6e, 0xac, 0x5d, 0x2f, 0xd9, 0xb3, 0x3a, 0xb6, 0x26, 0x86, 0x6d, 0x66, 0x90, + 0x22, 0x8b, 0x9c, 0xa1, 0x56, 0x98, 0x4e, 0x6d, 0x78, 0xe5, 0xed, 0x67, 0xcc, 0xc8, 0xde, 0xd2, + 0x0c, 0x87, 0xee, 0x34, 0xf8, 0x25, 0xbe, 0x0d, 0x8b, 0xb2, 0x54, 0xfa, 0xd8, 0x0f, 0x1e, 0xdb, + 0xc1, 0xe3, 0x04, 0x1f, 0xb7, 0xb2, 0x81, 0xcd, 0x68, 0x2d, 0xd2, 0x6a, 0x36, 0xb6, 0xd5, 0xb8, + 0x46, 0xb3, 0xe1, 0x46, 0xd7, 0x3e, 0x6c, 0x35, 0x17, 0x6f, 0x1e, 0x84, 0x46, 0x73, 0xc1, 0x76, + 0xfc, 0x51, 0xab, 0xb9, 0xcf, 0x0c, 0x75, 0x8d, 0x6b, 0x35, 0xbf, 0x68, 0x1f, 0xf3, 0x8d, 0x61, + 0x2c, 0x9e, 0xa1, 0x30, 0x10, 0xbd, 0x8e, 0x9c, 0x32, 0xeb, 0x5a, 0x60, 0x15, 0x63, 0x76, 0x0e, + 0x32, 0x9d, 0x30, 0xb3, 0x57, 0xd8, 0xea, 0xe5, 0x46, 0xf2, 0x0e, 0x9b, 0xbc, 0x98, 0xe8, 0x14, + 0xb2, 0x5e, 0x7a, 0x32, 0x85, 0x07, 0xac, 0xe3, 0xed, 0x7a, 0x74, 0x8f, 0x8a, 0xd9, 0x46, 0x5f, + 0xc8, 0x5b, 0xd7, 0x98, 0xe8, 0xb4, 0xf0, 0x1e, 0x1e, 0xe9, 0xa3, 0x88, 0x81, 0x47, 0x87, 0xde, + 0xb7, 0x23, 0xeb, 0xa2, 0x01, 0xab, 0x9c, 0xda, 0x39, 0x34, 0xa2, 0xf7, 0x9d, 0x41, 0x5d, 0x2c, + 0x47, 0x28, 0x08, 0xdb, 0xd1, 0x7b, 0xa1, 0xd9, 0x64, 0x17, 0x6e, 0xb9, 0xee, 0x52, 0x3b, 0x0a, + 0x99, 0xba, 0xe6, 0xd7, 0xb0, 0x4d, 0xcf, 0xbb, 0xc2, 0xcc, 0x86, 0x92, 0xaf, 0xb8, 0x06, 0xe7, + 0x8f, 0x90, 0xc9, 0x50, 0x89, 0x5e, 0x59, 0xc8, 0x57, 0x3e, 0x85, 0x31, 0xb7, 0x07, 0x14, 0x63, + 0xed, 0x3c, 0xc3, 0x18, 0x95, 0xa0, 0x04, 0x00, 0x43, 0x1c, 0x87, 0xf8, 0xd3, 0xb1, 0xe6, 0x01, + 0x9f, 0xf8, 0xe3, 0x62, 0xd2, 0x09, 0x2f, 0x29, 0xb0, 0xb0, 0x9b, 0x42, 0x0f, 0x96, 0xbb, 0x8f, + 0x79, 0x1e, 0xdd, 0x6b, 0x9c, 0xab, 0x4e, 0x5d, 0x6c, 0xd1, 0x70, 0xe0, 0x81, 0x48, 0xf7, 0x8d, + 0xc5, 0x07, 0xa7, 0x62, 0x8b, 0x24, 0xba, 0xde, 0x65, 0xc8, 0x37, 0x60, 0xe1, 0x51, 0xe7, 0xa1, + 0xa5, 0x25, 0x16, 0x09, 0x24, 0x88, 0xa4, 0xc2, 0xaf, 0x5b, 0x4c, 0xd5, 0x5d, 0xfb, 0x23, 0xc3, + 0x6d, 0xb9, 0xe7, 0x91, 0x49, 0x14, 0x5d, 0x7e, 0xa8, 0x72, 0xcf, 0x18, 0x9d, 0x65, 0x25, 0xd7, + 0xa2, 0x1c, 0xc4, 0xeb, 0x86, 0x3f, 0x19, 0xf8, 0x12, 0x46, 0x0c, 0x1e, 0xab, 0xd1, 0x8f, 0x02, + 0xe3, 0x3c, 0xf9, 0x93, 0xcd, 0x5c, 0x63, 0xa8, 0xb7, 0x30, 0x37, 0x2b, 0xf8, 0xdd, 0xd3, 0x4b, + 0x86, 0x7c, 0x6a, 0x9c, 0x5f, 0x00, 0xc4, 0x99, 0x0d, 0x43, 0x7a, 0x9e, 0xe7, 0x3e, 0x07, 0x19, + 0xee, 0x91, 0x59, 0x3a, 0x9d, 0x16, 0x16, 0x44, 0x76, 0xda, 0x87, 0x58, 0x11, 0x7e, 0x2d, 0x62, + 0x78, 0xf6, 0xe2, 0x1d, 0xba, 0x26, 0x44, 0x97, 0xc0, 0x63, 0x88, 0x9a, 0x4d, 0x31, 0xcb, 0xe7, + 0xb7, 0x96, 0xd5, 0x07, 0x00, 0x1d, 0x40, 0x5c, 0x7a, 0xe0, 0x0c, 0xdd, 0x03, 0x80, 0x25, 0x2b, + 0x80, 0x9d, 0xf4, 0x94, 0x95, 0xe8, 0x12, 0xf8, 0xfd, 0xde, 0xb8, 0x14, 0x6d, 0xef, 0x02, 0x83, + 0xaa, 0xeb, 0x23, 0x4d, 0x93, 0xb0, 0x63, 0x5a, 0xcb, 0x81, 0x7d, 0xa5, 0x4f, 0xd2, 0x16, 0x19, + 0x1a, 0x63, 0x72, 0xe4, 0x90, 0x61, 0x42, 0x9c, 0x68, 0x04, 0xe7, 0x60, 0x2a, 0x26, 0x61, 0xe3, + 0x79, 0x1d, 0x11, 0xdb, 0x39, 0xb6, 0x0d, 0x3d, 0x31, 0xb3, 0x86, 0xd8, 0xe9, 0xea, 0x17, 0x39, + 0xfc, 0x75, 0x57, 0x7e, 0xca, 0xa4, 0x5c, 0x51, 0x96, 0xf8, 0x04, 0x6c, 0x0e, 0x46, 0xb8, 0xb6, + 0x7c, 0x88, 0x94, 0xbc, 0xf2, 0x9b, 0x4b, 0x16, 0x79, 0xcc, 0x3c, 0x21, 0xd5, 0xed, 0x81, 0xf4, + 0xd6, 0x71, 0x3e, 0xb2, 0x27, 0xf7, 0xa6, 0x62, 0x1c, 0xd3, 0x05, 0xd1, 0x99, 0x02, 0xc1, 0x8f, + 0x79, 0xb8, 0x7c, 0x97, 0xc1, 0x13, 0x86, 0xee, 0xc9, 0xc6, 0xd2, 0x75, 0xed, 0x82, 0xc5, 0x83, + 0xff, 0x60, 0x8d, 0xaf, 0xf1, 0x8b, 0xfc, 0x37, 0xd6, 0x38, 0x73, 0x40, 0x5d, 0xb1, 0xc4, 0xbd, + 0x02, 0x52, 0xff, 0xa8, 0x9b, 0x10, 0x99, 0xbb, 0xa1, 0x2d, 0x26, 0xd3, 0xb4, 0x63, 0xf8, 0xad, + 0x60, 0xfc, 0x70, 0x30, 0x64, 0x28, 0xc0, 0xbc, 0x19, 0x94, 0xb6, 0x36, 0xb2, 0xea, 0xdf, 0x96, + 0x16, 0x67, 0xb3, 0xec, 0xd7, 0xf8, 0xef, 0x65, 0x1c, 0x1c, 0xf1, 0x2d, 0xed, 0x10, 0x3b, 0x92, + 0x4a, 0x88, 0xe8, 0x7a, 0x86, 0x43, 0x70, 0xd7, 0x60, 0xd8, 0x9d, 0xdc, 0x3b, 0x08, 0xf4, 0x78, + 0x50, 0x94, 0x05, 0xb9, 0x68, 0xfa, 0x07, 0x39, 0xd0, 0xfe, 0xc3, 0xff, 0x1c, 0xef, 0x89, 0x92, + 0xb6, 0xeb, 0x47, 0x11, 0xa2, 0x63, 0x17, 0x73, 0x5e, 0x5f, 0xd8, 0x7b, 0x30, 0xa0, 0xa0, 0xcc, + 0x25, 0xaa, 0xd7, 0x5e, 0xb7, 0x98, 0xcf, 0x23, 0xbd, 0x5d, 0x41, 0xa7, 0x2d, 0xbb, 0x9f, 0x6f, + 0x94, 0x6b, 0xe1, 0x9d, 0x89, 0x96, 0x69, 0x1b, 0x53, 0x57, 0x8a, 0xe9, 0x69, 0x4e, 0x5d, 0xf4, + 0x8b, 0x86, 0xac, 0x0b, 0xac, 0x81, 0xfd, 0xa9, 0x47, 0x07, 0x61, 0x5b, 0x80, 0xef, 0x4a, 0x89, + 0x32, 0x8c, 0x37, 0x6e, 0x6f, 0xc0, 0x2e, 0xda, 0x83, 0x6e, 0xca, 0xbb, 0xa2, 0xb0, 0xd8, 0x49, + 0x81, 0x52, 0x01, 0xf4, 0xb4, 0x9c, 0xcb, 0x95, 0x96, 0xf6, 0x73, 0x8d, 0xef, 0x28, 0x2d, 0xc9, + 0xeb, 0xff, 0xbf, 0xdd, 0xcb, 0xb5, 0x68, 0x37, 0x83, 0x5e, 0x66, 0x63, 0x7b, 0x49, 0x3b, 0x58, + 0x29, 0xe4, 0x6a, 0x91, 0xe5, 0x1f, 0x8f, 0x49, 0x5a, 0xf2, 0x13, 0x1d, 0x5c, 0xfb, 0x3c, 0x1e, + 0x83, 0x0e, 0xe6, 0x96, 0x74, 0x10, 0x96, 0x4b, 0xa5, 0x94, 0xff, 0xdc, 0x54, 0xd3, 0x82, 0x2b, + 0x3b, 0xb8, 0xf6, 0xbb, 0x13, 0x1d, 0x74, 0xf0, 0xce, 0x58, 0x4e, 0x8e, 0x95, 0x72, 0xbe, 0xf0, + 0xb9, 0x1e, 0x62, 0xc1, 0xff, 0x36, 0x52, 0xdc, 0x87, 0x2d, 0x6e, 0xd9, 0x34, 0x43, 0xcb, 0xc5, + 0xcf, 0xd1, 0x21, 0x2d, 0xf9, 0x4f, 0xd1, 0x61, 0xf4, 0x6c, 0x8d, 0x32, 0x04, 0x39, 0xc6, 0x6c, + 0x16, 0x65, 0xbe, 0xfc, 0x61, 0xf8, 0x1a, 0x2f, 0xe8, 0xc2, 0x20, 0xc9, 0x3b, 0xf1, 0x64, 0xdd, + 0x7c, 0xae, 0xf8, 0xf1, 0x31, 0x37, 0xaf, 0x39, 0xb8, 0xc7, 0x73, 0x26, 0x41, 0xab, 0xd3, 0x4a, + 0xdb, 0x1b, 0x2d, 0xe3, 0x9a, 0x25, 0x3f, 0x73, 0xf6, 0xfd, 0x8f, 0xda, 0x26, 0x3f, 0x79, 0xf4, + 0xcd, 0x6c, 0x76, 0xc1, 0xb8, 0xa8, 0x08, 0x10, 0xa0, 0x37, 0x64, 0xc5, 0x73, 0xe5, 0x02, 0x1b, + 0x87, 0x15, 0x67, 0xc4, 0xe3, 0xd0, 0x93, 0xfd, 0xcd, 0x09, 0xe2, 0xe7, 0x87, 0x76, 0x81, 0xca, + 0xbb, 0x74, 0xa7, 0x2b, 0xc8, 0x95, 0x4f, 0x4f, 0x50, 0xd0, 0x81, 0x23, 0xdc, 0x9c, 0x6c, 0xd5, + 0x79, 0x8b, 0x3d, 0x94, 0xe1, 0x26, 0xc9, 0x2f, 0xf8, 0xbb, 0x3e, 0x0a, 0xf2, 0xff, 0xac, 0x8f, + 0xc2, 0x32, 0x5b, 0x33, 0x8f, 0x75, 0x8a, 0xb9, 0xac, 0x3f, 0x51, 0xaa, 0x37, 0xb4, 0xa5, 0x07, + 0xd5, 0xb4, 0x56, 0x2e, 0x6a, 0x85, 0x77, 0xb7, 0x9e, 0x95, 0x33, 0x16, 0xf2, 0x7f, 0xfa, 0xcd, + 0x63, 0x8f, 0x66, 0x36, 0xf6, 0x44, 0x88, 0xb7, 0xdc, 0x8f, 0x6c, 0x50, 0x37, 0xa8, 0x6d, 0xe3, + 0xf7, 0x96, 0xce, 0x5a, 0xbc, 0x83, 0xc1, 0xef, 0x58, 0xb1, 0xdd, 0xf9, 0x58, 0xfb, 0xdb, 0x13, + 0x12, 0x99, 0x8f, 0x1c, 0xd0, 0x31, 0x1b, 0x8f, 0x90, 0x5d, 0x3d, 0x11, 0xf9, 0xc8, 0xa2, 0xe1, + 0xe6, 0x61, 0x6d, 0xf5, 0x44, 0x78, 0xee, 0x51, 0xbf, 0xc9, 0xc4, 0x9a, 0xb9, 0x0f, 0x38, 0x98, + 0x3b, 0x0f, 0xb9, 0x7f, 0x86, 0x87, 0xc9, 0xff, 0x8d, 0x1c, 0xec, 0x13, 0x13, 0x91, 0x17, 0xb7, + 0xdc, 0x79, 0xc8, 0xad, 0x9e, 0x87, 0xc2, 0xdf, 0x5e, 0x10, 0x32, 0x29, 0xff, 0xad, 0x05, 0x91, + 0xff, 0xe4, 0x82, 0xc8, 0x7f, 0x66, 0x41, 0xe4, 0xb3, 0xff, 0x47, 0xaf, 0x87, 0x42, 0xb0, 0x1e, + 0xf2, 0xcb, 0xe6, 0xa1, 0x37, 0x35, 0xcc, 0x40, 0x87, 0x71, 0xef, 0x42, 0x53, 0x3d, 0x2d, 0x24, + 0x57, 0x41, 0x86, 0x1c, 0x15, 0xa9, 0x0c, 0x4e, 0x78, 0x8e, 0xf7, 0xe8, 0x73, 0x8d, 0x5b, 0x1f, + 0x70, 0x54, 0x80, 0xed, 0xee, 0x85, 0x5b, 0x4d, 0x0a, 0x38, 0x58, 0xbc, 0xc1, 0xf4, 0xd1, 0x26, + 0x2f, 0x7c, 0x6f, 0x35, 0x4e, 0x1e, 0x0a, 0xcd, 0xde, 0x05, 0x1d, 0x40, 0x22, 0x2b, 0xd1, 0x53, + 0x38, 0xf7, 0xea, 0xd3, 0x6f, 0x89, 0x6a, 0x6b, 0xe1, 0x51, 0x67, 0x23, 0x42, 0xda, 0x87, 0x83, + 0xce, 0x17, 0xda, 0xdc, 0xa0, 0xd7, 0x96, 0x4d, 0x93, 0x37, 0xe8, 0xac, 0x37, 0xe8, 0xdc, 0xd2, + 0x41, 0xe7, 0xc4, 0x45, 0x59, 0x3f, 0x6e, 0xd0, 0xb9, 0x4f, 0x0f, 0x7a, 0x6d, 0x95, 0x08, 0x0d, + 0x3d, 0xcb, 0xfd, 0xce, 0xa0, 0x99, 0x92, 0x5c, 0xe8, 0x7c, 0x30, 0xd5, 0xfc, 0xa0, 0x73, 0xde, + 0xa0, 0xf3, 0x91, 0x41, 0xaf, 0x05, 0xa3, 0xce, 0x2f, 0x4e, 0x75, 0xdc, 0xa0, 0xf3, 0x4b, 0x06, + 0xfd, 0x29, 0xc5, 0x66, 0xa9, 0x46, 0x8c, 0xdd, 0x68, 0x91, 0xfe, 0x10, 0x23, 0x89, 0x8b, 0xbc, + 0x3b, 0x6a, 0x8c, 0xb5, 0xc7, 0xbd, 0x80, 0x11, 0x55, 0xc2, 0x23, 0xec, 0x8e, 0xdd, 0xc9, 0xe0, + 0xd8, 0x1d, 0xfb, 0x80, 0x91, 0xb8, 0xb5, 0xac, 0x68, 0x6e, 0xb9, 0xf5, 0xcf, 0x76, 0x17, 0x8e, + 0x65, 0xc3, 0x1b, 0x27, 0xd1, 0x59, 0xd0, 0x65, 0x2a, 0xcd, 0x5d, 0x13, 0x40, 0x90, 0x60, 0xbb, + 0x03, 0x88, 0x31, 0x61, 0x6f, 0xdd, 0x04, 0x17, 0xf3, 0x43, 0xae, 0x88, 0x8e, 0xe3, 0xa1, 0x9d, + 0x5d, 0x54, 0x08, 0xf8, 0x1b, 0x65, 0x78, 0xa5, 0x62, 0xba, 0xe8, 0x79, 0x5c, 0xc9, 0xe9, 0x6c, + 0xc0, 0xe7, 0xd2, 0x9b, 0x40, 0xfd, 0x7a, 0xdb, 0x36, 0x6b, 0xcc, 0x41, 0x19, 0xcd, 0x5f, 0xd4, + 0xad, 0x93, 0x7e, 0xff, 0xcb, 0x27, 0x27, 0x97, 0x84, 0x68, 0x81, 0xc8, 0xb0, 0x2f, 0x2d, 0xec, + 0xf4, 0x87, 0xd8, 0x36, 0x5f, 0x35, 0x71, 0xc5, 0xc1, 0x46, 0x57, 0xdc, 0x72, 0x01, 0x71, 0x47, + 0x1a, 0xcb, 0x0c, 0x6a, 0xec, 0x26, 0x4d, 0xbc, 0xd1, 0x3c, 0xd6, 0x9e, 0xb6, 0xb6, 0xc4, 0x68, + 0x4e, 0xe7, 0x3f, 0xf9, 0x4d, 0x58, 0x62, 0x31, 0x77, 0xb3, 0x63, 0xc4, 0x0b, 0xde, 0xee, 0xf5, + 0x39, 0xb3, 0xd7, 0xda, 0x27, 0x0d, 0xe6, 0x0b, 0xf6, 0x72, 0xda, 0x89, 0x88, 0xad, 0xca, 0x55, + 0xb1, 0xc3, 0x56, 0x70, 0x86, 0x3e, 0x24, 0xa3, 0x80, 0x9e, 0x97, 0xed, 0x1e, 0xe6, 0x47, 0x44, + 0xbd, 0xd4, 0x5d, 0x97, 0x7e, 0xfb, 0xd0, 0x70, 0xf9, 0x82, 0x5b, 0xc7, 0x73, 0x24, 0x0f, 0x8a, + 0x68, 0xaa, 0xfe, 0xc2, 0x9f, 0xdf, 0x18, 0x26, 0xd1, 0x6f, 0x94, 0x76, 0x62, 0xb9, 0x13, 0xb9, + 0xb7, 0xe5, 0xc4, 0x3a, 0x91, 0x33, 0x6f, 0xe0, 0x78, 0xf7, 0xf5, 0x85, 0x46, 0xd7, 0x16, 0x5a, + 0xcd, 0x7e, 0xc2, 0x75, 0x7d, 0xb1, 0x51, 0xd7, 0x66, 0xbc, 0xf6, 0xc9, 0x66, 0x17, 0x5a, 0xcd, + 0x2d, 0xbd, 0xa2, 0xe0, 0x6f, 0x35, 0xb1, 0x57, 0x31, 0xfc, 0xd5, 0xff, 0x37, 0x47, 0x9b, 0x5f, + 0x36, 0x5a, 0x9f, 0xd7, 0xc7, 0x5e, 0x74, 0x61, 0xe4, 0xb3, 0xb6, 0xda, 0x51, 0xdf, 0xfd, 0x1e, + 0x4a, 0xf8, 0xa4, 0x9c, 0x5d, 0xe5, 0x51, 0xd0, 0xa4, 0x1a, 0xb6, 0x01, 0x5b, 0x7b, 0xf8, 0x11, + 0x9c, 0x1b, 0xcc, 0xc2, 0x8b, 0x5b, 0xc9, 0xc5, 0x6a, 0x7e, 0x98, 0xb1, 0x55, 0xf7, 0x2d, 0x22, + 0x75, 0xf0, 0x66, 0xa5, 0xbf, 0x20, 0xe8, 0x55, 0xf1, 0x18, 0x1a, 0x0c, 0x8e, 0x38, 0x04, 0xfa, + 0x31, 0x9a, 0xcf, 0x5e, 0x22, 0x11, 0x68, 0x10, 0x22, 0x86, 0x2f, 0x3c, 0x47, 0x59, 0x8b, 0x1c, + 0x33, 0xf8, 0x9d, 0x18, 0xf6, 0xd9, 0x49, 0xeb, 0xb0, 0xef, 0xd5, 0x9f, 0xa8, 0xa2, 0xa0, 0x68, + 0x8e, 0xeb, 0x07, 0x8f, 0xd6, 0x9e, 0x2a, 0xfd, 0xa8, 0x47, 0xc6, 0xd4, 0xfb, 0xb5, 0xb6, 0x62, + 0x93, 0x52, 0x41, 0x52, 0xef, 0x76, 0x2e, 0xae, 0x27, 0xf2, 0xc9, 0x41, 0xdf, 0x68, 0xc0, 0x7f, + 0xe7, 0xad, 0xdb, 0xc1, 0xde, 0x6d, 0x1f, 0x9e, 0x76, 0x64, 0x7c, 0xdf, 0x6f, 0x36, 0x1e, 0xe1, + 0xa7, 0x59, 0xdc, 0x1f, 0xf5, 0x8a, 0x98, 0xd0, 0x78, 0x38, 0x6f, 0x5d, 0xcb, 0x47, 0x0d, 0xcb, + 0x2e, 0x74, 0x4a, 0x57, 0x98, 0x70, 0xad, 0x5f, 0xdd, 0x66, 0x77, 0xa0, 0xcc, 0xf4, 0x79, 0x32, + 0x2e, 0x3f, 0x5e, 0xdd, 0x62, 0xe2, 0x71, 0x67, 0x6f, 0xf0, 0xd4, 0x99, 0x34, 0x1a, 0xbb, 0xf6, + 0x19, 0xbc, 0x6e, 0xee, 0x36, 0x3a, 0xdd, 0xf1, 0xeb, 0x01, 0x56, 0xd8, 0x69, 0xb7, 0x6e, 0xaf, + 0x77, 0xee, 0x9a, 0x83, 0x1b, 0xed, 0xb1, 0xd2, 0xde, 0x35, 0x1a, 0x93, 0xdd, 0xb3, 0xf3, 0xfb, + 0x4d, 0xbd, 0xa2, 0x4f, 0x9a, 0xaa, 0xf9, 0xe6, 0x5c, 0x9d, 0x17, 0x9e, 0xca, 0x4e, 0xdb, 0xba, + 0x39, 0x1c, 0xee, 0x0e, 0xf7, 0x0b, 0xc6, 0xe5, 0xfb, 0x9b, 0xd6, 0x9d, 0x5c, 0xbf, 0x9a, 0xd9, + 0x56, 0xab, 0xab, 0xdf, 0x65, 0xce, 0x47, 0x4f, 0xa3, 0xf7, 0x57, 0x62, 0x35, 0x76, 0xde, 0xa6, + 0x0f, 0xef, 0xfa, 0xce, 0x24, 0xaf, 0xf6, 0x5f, 0xc8, 0xfe, 0x5e, 0xef, 0xe1, 0xed, 0x76, 0x34, + 0x38, 0xc9, 0xbc, 0xed, 0x9f, 0xc9, 0xcd, 0xe9, 0x71, 0xef, 0xed, 0xf5, 0xe1, 0x69, 0xef, 0xa2, + 0x53, 0xca, 0xb4, 0xac, 0x4a, 0xa6, 0xdd, 0xdb, 0x1c, 0x1d, 0x35, 0x8b, 0xe7, 0x93, 0xee, 0xa6, + 0x61, 0x9d, 0x8d, 0x1b, 0x97, 0x74, 0x2c, 0x7b, 0xda, 0xfe, 0xcd, 0x4b, 0x6b, 0x74, 0x35, 0x6c, + 0x36, 0x61, 0x21, 0x2c, 0xfa, 0xe5, 0x8e, 0xc3, 0x9c, 0x2b, 0xe4, 0xa6, 0x12, 0xbb, 0xa7, 0xba, + 0x17, 0x6f, 0x79, 0xda, 0xe1, 0x0f, 0xa0, 0xe8, 0x86, 0xda, 0x03, 0xba, 0x1e, 0xac, 0x3c, 0x09, + 0x8b, 0x81, 0x12, 0xa1, 0xc0, 0x23, 0x1d, 0x18, 0xa4, 0xde, 0x21, 0x02, 0x9e, 0x41, 0xfc, 0x26, + 0x2c, 0xef, 0x58, 0x0f, 0x57, 0x67, 0xc2, 0x3f, 0xcd, 0x63, 0x8a, 0x89, 0x98, 0x94, 0xc4, 0xff, + 0xb4, 0x89, 0x86, 0x6e, 0x30, 0x5b, 0xb7, 0x34, 0x89, 0x5e, 0xb6, 0x8b, 0xb9, 0xa3, 0x13, 0xd7, + 0x06, 0x15, 0x25, 0x70, 0xd5, 0x86, 0xa5, 0x89, 0x8e, 0xde, 0xa3, 0x72, 0x04, 0x1b, 0x7f, 0xdb, + 0x30, 0x9c, 0x08, 0x50, 0xff, 0x4c, 0x96, 0x22, 0x97, 0x17, 0xfc, 0x06, 0xe2, 0xd6, 0x19, 0xa8, + 0x10, 0xc2, 0x44, 0x75, 0x06, 0x6e, 0x0e, 0x3b, 0xa1, 0x57, 0x2c, 0x07, 0xd7, 0x04, 0x2c, 0xe2, + 0x72, 0xa1, 0x06, 0x6b, 0x63, 0x7f, 0x4f, 0xde, 0xab, 0xb9, 0x9b, 0xcb, 0x9a, 0xd0, 0x7e, 0x13, + 0x1a, 0xaa, 0xd5, 0x31, 0x0c, 0xe3, 0x45, 0x25, 0xf4, 0x56, 0xac, 0x33, 0x20, 0xc2, 0x77, 0x45, + 0xa0, 0x47, 0x98, 0xe2, 0xc0, 0x71, 0x4c, 0xbb, 0x9a, 0xc9, 0xe0, 0x39, 0x61, 0x1a, 0x74, 0xa8, + 0x8e, 0x31, 0xb2, 0x6c, 0x92, 0x46, 0x27, 0x16, 0x33, 0x03, 0x62, 0x8b, 0x62, 0x01, 0x5e, 0xea, + 0xe2, 0x7f, 0xba, 0x97, 0x46, 0xd6, 0xe8, 0x7d, 0xc3, 0x8e, 0x31, 0x1c, 0x8e, 0x74, 0x6a, 0x99, + 0x51, 0xb6, 0x96, 0x6d, 0x63, 0x3a, 0xbb, 0xaa, 0xf5, 0xef, 0xf2, 0x82, 0x65, 0x57, 0xbb, 0x3e, + 0xcb, 0x0c, 0xf0, 0x2b, 0x54, 0xe2, 0x16, 0xed, 0xb6, 0xea, 0x92, 0x8a, 0xbd, 0x40, 0xdd, 0xfa, + 0x22, 0x75, 0xbb, 0x8e, 0x40, 0xde, 0x41, 0xf2, 0x92, 0xcf, 0x5c, 0x8a, 0x9f, 0xa5, 0x5a, 0x94, + 0x02, 0xfc, 0xa1, 0x2c, 0x52, 0x7e, 0xbc, 0xb4, 0x3c, 0xd4, 0xc6, 0x78, 0x2c, 0xb0, 0x16, 0xc5, + 0xa1, 0xdf, 0x6f, 0x96, 0xef, 0xf6, 0x71, 0x31, 0x02, 0x0c, 0x3e, 0xc7, 0x8e, 0x2c, 0xea, 0x52, + 0x8e, 0x17, 0x4d, 0x17, 0xa7, 0x2a, 0x82, 0xf0, 0xc1, 0xa8, 0x4f, 0x22, 0x17, 0x07, 0x91, 0x48, + 0xd7, 0x7c, 0x30, 0x1a, 0x30, 0x89, 0xed, 0x80, 0x37, 0xe0, 0xbf, 0x35, 0xe1, 0xc6, 0x10, 0x46, + 0x36, 0x11, 0xda, 0x23, 0x55, 0xc3, 0x68, 0xb7, 0x02, 0x61, 0x3b, 0xb7, 0x44, 0x53, 0x51, 0x4e, + 0x82, 0xa6, 0x2d, 0x90, 0x60, 0xdd, 0xdb, 0xe4, 0x02, 0xec, 0x37, 0xb0, 0x22, 0x59, 0xdd, 0x47, + 0x63, 0x24, 0x74, 0xa0, 0x8c, 0x45, 0x9c, 0x91, 0xa5, 0x0b, 0xe8, 0x42, 0x45, 0x80, 0x8b, 0xab, + 0x43, 0x42, 0x4f, 0x77, 0x91, 0xb6, 0x31, 0x3c, 0x86, 0x8d, 0x77, 0x6a, 0x91, 0xaa, 0xf1, 0x73, + 0x34, 0x80, 0x7c, 0xfa, 0x8c, 0x42, 0x29, 0xde, 0xf7, 0x05, 0x62, 0xb5, 0x74, 0x62, 0xa5, 0xd7, + 0xd8, 0x8a, 0x5a, 0x98, 0xac, 0x90, 0x83, 0x90, 0x73, 0x6a, 0x58, 0x54, 0x22, 0xb9, 0xf0, 0x7a, + 0x65, 0x50, 0x8f, 0xcf, 0x15, 0x4b, 0x7e, 0xb1, 0x7e, 0x8e, 0xaf, 0x3f, 0xd2, 0xf1, 0x9a, 0xb7, + 0x45, 0x97, 0xba, 0x0f, 0x87, 0x5b, 0xdc, 0x6b, 0xc1, 0xea, 0x5e, 0xdb, 0x37, 0x2c, 0x18, 0xbe, + 0xed, 0x08, 0x26, 0xb1, 0xd0, 0xfb, 0x0b, 0x69, 0x55, 0x12, 0x54, 0x50, 0x22, 0xf0, 0x0b, 0x76, + 0xb8, 0xe8, 0x08, 0x0d, 0xf4, 0x01, 0x78, 0xa0, 0xf8, 0x30, 0x7a, 0x3d, 0x77, 0xd8, 0x80, 0x96, + 0x21, 0x22, 0xc1, 0x86, 0xd5, 0x0b, 0xac, 0x70, 0x32, 0x20, 0x3a, 0x8d, 0x3a, 0x01, 0xb8, 0x00, + 0x34, 0xa7, 0x17, 0x5c, 0x78, 0xd5, 0x60, 0xda, 0x11, 0x67, 0x62, 0xcc, 0x44, 0x2f, 0x0c, 0x4b, + 0x4e, 0x06, 0x93, 0xbf, 0xe6, 0xcf, 0xfe, 0x77, 0xf7, 0x76, 0xf1, 0xda, 0x18, 0x50, 0xaf, 0x19, + 0x1d, 0xd5, 0x94, 0x26, 0xf7, 0x12, 0xef, 0xa0, 0x20, 0x4d, 0x6c, 0xa9, 0x83, 0xb7, 0xc1, 0x24, + 0x6a, 0xc6, 0xb1, 0x25, 0x87, 0xf9, 0x1a, 0xa0, 0xcf, 0x42, 0xfd, 0x4b, 0x16, 0x7f, 0x4c, 0x58, + 0xcb, 0x06, 0xe3, 0x45, 0x55, 0x51, 0x52, 0xed, 0x0b, 0x1d, 0x33, 0x74, 0xad, 0x81, 0x3f, 0xaa, + 0x7d, 0x3a, 0x66, 0xbf, 0x28, 0x16, 0xb0, 0x27, 0xba, 0x92, 0xf0, 0xd1, 0x7e, 0xd3, 0x3b, 0x2d, + 0xc0, 0x8a, 0xf7, 0x7c, 0xd3, 0xd7, 0xae, 0x49, 0x07, 0xca, 0xcb, 0xd2, 0x40, 0xb1, 0xa9, 0x5b, + 0x27, 0x66, 0xc1, 0xf3, 0xf5, 0xc1, 0x8e, 0xfb, 0xd4, 0x6c, 0xde, 0x30, 0xf0, 0xbb, 0x23, 0xab, + 0x5e, 0x92, 0xe1, 0xe1, 0x46, 0xb1, 0xea, 0xf8, 0x8b, 0x97, 0x21, 0x29, 0x24, 0xd2, 0x3f, 0x45, + 0xd5, 0x4c, 0x96, 0xbc, 0x58, 0x51, 0xfb, 0xfc, 0xcb, 0xa5, 0xa2, 0xc1, 0x5b, 0x07, 0x5e, 0xf1, + 0x67, 0x64, 0x61, 0xac, 0x49, 0x26, 0xa2, 0xd5, 0x37, 0x60, 0x3c, 0x20, 0x51, 0xb1, 0xfd, 0x82, + 0x56, 0xe9, 0x37, 0x0d, 0xa0, 0x01, 0x78, 0x04, 0x06, 0xeb, 0x3f, 0x1a, 0x13, 0x98, 0xe6, 0x5b, + 0x1d, 0xe6, 0xa6, 0x0b, 0xaf, 0xd0, 0x14, 0x08, 0x96, 0x98, 0xce, 0x7e, 0xcc, 0x8e, 0xd7, 0x11, + 0xf6, 0x44, 0xd1, 0x80, 0x60, 0x27, 0x90, 0xe9, 0x58, 0xf5, 0x4d, 0xa9, 0x5b, 0xef, 0x82, 0x4e, + 0x84, 0xa2, 0xa8, 0xd4, 0x9b, 0xa2, 0x34, 0x53, 0xff, 0xf1, 0x53, 0x32, 0x71, 0x63, 0xad, 0xcf, + 0xe6, 0x12, 0xf1, 0x1e, 0x34, 0xef, 0xc1, 0x0c, 0x9e, 0xce, 0xeb, 0xa2, 0x28, 0x99, 0x47, 0xd8, + 0xcc, 0xf9, 0x68, 0x88, 0x3f, 0x43, 0xa7, 0x9e, 0xc5, 0xbf, 0xa7, 0x2d, 0xf6, 0x76, 0x0a, 0x2d, + 0x61, 0x67, 0xe0, 0x07, 0x19, 0x19, 0xd6, 0x52, 0xed, 0x33, 0xec, 0xc3, 0x10, 0x3b, 0x30, 0x1c, + 0xc0, 0x9f, 0x89, 0x7d, 0x6d, 0x62, 0xa1, 0x4e, 0xaf, 0x5f, 0x9f, 0x39, 0x78, 0x3f, 0xb3, 0x3a, + 0x43, 0x31, 0xaa, 0x0a, 0xb2, 0x95, 0xf5, 0x22, 0x4a, 0xed, 0x7e, 0x75, 0x36, 0xb2, 0xb4, 0xaa, + 0x28, 0xce, 0x25, 0x45, 0x33, 0x07, 0x0a, 0x64, 0xf7, 0xab, 0xe9, 0x92, 0x04, 0x52, 0x6d, 0x35, + 0x5d, 0x9e, 0x4b, 0xcc, 0xf9, 0x12, 0x13, 0xa1, 0x08, 0xbe, 0x0e, 0xcd, 0x2a, 0x0b, 0x25, 0x63, + 0x57, 0x67, 0xec, 0xee, 0x60, 0x15, 0x26, 0xd1, 0xea, 0xb7, 0xab, 0xd0, 0xf0, 0xeb, 0x08, 0x52, + 0xf0, 0x7d, 0x40, 0xa6, 0xf0, 0x0e, 0x23, 0xa3, 0xaa, 0x29, 0xa6, 0x98, 0x9d, 0x21, 0x30, 0x63, + 0x2c, 0x64, 0xaa, 0x5d, 0x4c, 0x00, 0x94, 0x6b, 0x44, 0xaf, 0xb2, 0x69, 0x34, 0x27, 0x96, 0xfb, + 0x44, 0xa6, 0x26, 0x3e, 0x75, 0x6c, 0x5a, 0x6b, 0xd0, 0x55, 0xde, 0x6c, 0x7c, 0x07, 0xf4, 0x91, + 0x1e, 0xba, 0xc1, 0xcc, 0x25, 0x50, 0x4c, 0xeb, 0x3f, 0x7e, 0xc8, 0x52, 0x36, 0x2b, 0xe5, 0x0a, + 0x52, 0x41, 0xf2, 0xf7, 0x46, 0xc5, 0xdf, 0x3f, 0xd3, 0x7d, 0xd8, 0x7c, 0x47, 0xed, 0xb4, 0x6a, + 0x64, 0xa6, 0x43, 0xc5, 0x4e, 0x83, 0xf4, 0x28, 0xfe, 0x94, 0xa0, 0x4e, 0x4e, 0xca, 0x6e, 0x4a, + 0xd9, 0xa0, 0x0a, 0x15, 0x2e, 0xed, 0x34, 0x1d, 0x7a, 0xc7, 0x40, 0x1f, 0x80, 0x34, 0x0c, 0x31, + 0x53, 0xa8, 0x64, 0xf1, 0x5f, 0x36, 0x97, 0x4f, 0x3f, 0x9b, 0xb4, 0x6a, 0x4e, 0xce, 0x15, 0xa5, + 0xbc, 0x94, 0x43, 0x10, 0xab, 0x1b, 0x24, 0x30, 0x1f, 0xc0, 0xc7, 0xdc, 0x26, 0xa1, 0x5e, 0x1e, + 0xea, 0x55, 0x7e, 0xbf, 0x5a, 0x01, 0xaa, 0xe4, 0xb3, 0xbf, 0x59, 0x4f, 0x96, 0x4a, 0x80, 0x11, + 0x7e, 0x80, 0xb0, 0xfd, 0xab, 0x40, 0xe3, 0x0b, 0x43, 0x44, 0x97, 0x43, 0xdc, 0xec, 0x32, 0x13, + 0x45, 0xd3, 0x4c, 0x05, 0x58, 0x59, 0xa6, 0x98, 0x2d, 0x6d, 0x56, 0x72, 0x2e, 0x4e, 0x32, 0x30, + 0x70, 0x48, 0x91, 0x2b, 0xb9, 0x6c, 0xbe, 0x94, 0xcf, 0x55, 0x72, 0xc5, 0x7c, 0x89, 0xb5, 0x00, + 0x98, 0xff, 0xbb, 0x2d, 0x64, 0xb3, 0x95, 0x72, 0x59, 0x96, 0xf9, 0x26, 0x72, 0xc5, 0x5c, 0xae, + 0x2c, 0x6f, 0x16, 0xca, 0xd9, 0x62, 0xb9, 0x58, 0x92, 0x65, 0xf1, 0xe7, 0xcf, 0x5a, 0x6f, 0xa4, + 0xd3, 0xe0, 0xdf, 0xc2, 0x00, 0xe4, 0x20, 0x8d, 0xdc, 0xf9, 0x81, 0x75, 0x9a, 0xd4, 0x04, 0x96, + 0x48, 0xce, 0xbe, 0x74, 0xd3, 0x2c, 0x94, 0xe1, 0xfa, 0xba, 0x4e, 0x26, 0x02, 0xf0, 0x2f, 0xfc, + 0xd6, 0xa2, 0xb7, 0xa0, 0xb7, 0xf2, 0x24, 0xbf, 0xbe, 0x1e, 0x12, 0x63, 0xe7, 0x3e, 0x4c, 0x1b, + 0x14, 0xe1, 0x04, 0x91, 0x9c, 0xe4, 0x0c, 0x04, 0x29, 0x77, 0x75, 0xee, 0x69, 0x04, 0x7f, 0xd2, + 0x74, 0x87, 0x4e, 0x03, 0x83, 0xb8, 0xb4, 0x40, 0xd6, 0xb4, 0x9c, 0x37, 0x5a, 0x30, 0xa8, 0x8b, + 0x3e, 0x35, 0x24, 0x39, 0x73, 0xf7, 0xb9, 0x6e, 0x1a, 0x64, 0x2e, 0xb7, 0xea, 0xce, 0x1b, 0xcd, + 0xe2, 0x8a, 0xee, 0xed, 0x34, 0xcf, 0x97, 0x14, 0xb6, 0x77, 0xde, 0x9a, 0xc8, 0xc8, 0xcf, 0x41, + 0x73, 0x0b, 0x55, 0x52, 0xed, 0xbd, 0xa1, 0x89, 0xad, 0xfa, 0xd5, 0xe4, 0x7a, 0xbd, 0x7e, 0xd1, + 0x7e, 0xc6, 0x6f, 0x12, 0xbc, 0x90, 0x37, 0x1b, 0x72, 0xd2, 0xcc, 0x07, 0x94, 0xaf, 0x04, 0x05, + 0xb8, 0x2a, 0x64, 0x7d, 0x5d, 0x34, 0x68, 0x15, 0xb1, 0x5e, 0x47, 0xb3, 0x8e, 0xd1, 0xc3, 0xb4, + 0x2f, 0x0d, 0xcb, 0x52, 0xde, 0xd2, 0xaa, 0x4d, 0x7f, 0x23, 0xcd, 0x02, 0x8b, 0x21, 0x96, 0xda, + 0x09, 0xa0, 0x7c, 0x81, 0x34, 0xe5, 0x3c, 0x61, 0x2a, 0x20, 0x65, 0xee, 0x63, 0xdc, 0x1a, 0xc8, + 0x4a, 0xae, 0xaf, 0xab, 0x68, 0x35, 0x02, 0x66, 0x1d, 0xa9, 0x7e, 0xdd, 0x6f, 0x53, 0xc7, 0xf9, + 0x70, 0xc7, 0x69, 0xe5, 0x23, 0x1d, 0xaa, 0xa6, 0x2d, 0xa8, 0x1b, 0x4e, 0xe9, 0x2f, 0xa4, 0xb4, + 0x39, 0x90, 0xc0, 0x4f, 0x5a, 0x8e, 0x15, 0x80, 0xc3, 0xdb, 0x74, 0x09, 0x31, 0x05, 0x80, 0x52, + 0xa2, 0x84, 0xbf, 0x7d, 0xf7, 0xb7, 0x9d, 0x12, 0x93, 0x62, 0xa8, 0x1e, 0xde, 0x03, 0xf7, 0xeb, + 0xa5, 0x73, 0xd9, 0x5c, 0xe9, 0xcf, 0x50, 0x47, 0x52, 0xe9, 0xcd, 0x6c, 0x31, 0xf7, 0x67, 0xa8, + 0x2b, 0xa9, 0xb4, 0xbc, 0x99, 0x0b, 0xa5, 0xf1, 0x9d, 0xc1, 0x83, 0x91, 0xd6, 0x29, 0x02, 0x85, + 0xdd, 0x52, 0x70, 0xea, 0x24, 0x8d, 0xac, 0x1c, 0x52, 0xd3, 0x93, 0x6d, 0xae, 0x8a, 0x9f, 0x98, + 0xac, 0x02, 0x77, 0x43, 0xc1, 0x5a, 0x27, 0xe2, 0x97, 0x3a, 0xba, 0x1f, 0x36, 0x81, 0x6d, 0x8e, + 0x60, 0x47, 0x6a, 0x21, 0x7d, 0xe1, 0x1c, 0xa2, 0x9d, 0xad, 0x45, 0x03, 0x31, 0xd6, 0xd8, 0x9e, + 0x07, 0xf3, 0xc3, 0xa3, 0xd1, 0x03, 0x96, 0xdc, 0x4e, 0xd8, 0x7f, 0xfd, 0x05, 0xef, 0x8c, 0x32, + 0x29, 0xe3, 0xad, 0x7b, 0x83, 0xf4, 0x0b, 0x6d, 0x65, 0x73, 0x9b, 0xdb, 0xf4, 0x3a, 0x80, 0x58, + 0xa5, 0xb7, 0x26, 0x40, 0x29, 0xf2, 0xaa, 0x04, 0xae, 0xee, 0x75, 0x6f, 0xa7, 0x5d, 0x5f, 0x77, + 0xb6, 0xe4, 0xed, 0x5f, 0x51, 0xcf, 0xf7, 0x6c, 0x99, 0x5e, 0xac, 0x15, 0xfe, 0x98, 0x79, 0xd8, + 0xf7, 0x1b, 0x98, 0x0b, 0x79, 0xf9, 0x5f, 0x12, 0x62, 0x37, 0xf1, 0xc7, 0xcc, 0x99, 0x4b, 0xfe, + 0x9f, 0x64, 0xf2, 0x57, 0x75, 0xa1, 0x74, 0xb2, 0x9a, 0xf0, 0x07, 0x15, 0xb4, 0x99, 0x80, 0x7d, + 0x28, 0xb6, 0x5b, 0xbf, 0x62, 0xc0, 0xfe, 0x92, 0x16, 0x87, 0xed, 0xc4, 0x0c, 0x93, 0x9b, 0x25, + 0xc5, 0x34, 0xb5, 0xb7, 0x66, 0xaf, 0x0f, 0xdc, 0xa1, 0xc3, 0x22, 0x11, 0x88, 0x1a, 0x4a, 0xd7, + 0xb0, 0x08, 0xea, 0xb0, 0xfd, 0xa5, 0xe9, 0xee, 0x97, 0xc6, 0xcd, 0x2f, 0x59, 0x43, 0x21, 0x88, + 0x70, 0xa9, 0xb4, 0x81, 0x74, 0xbb, 0x5f, 0x83, 0x7e, 0x52, 0xfe, 0x20, 0xd2, 0x68, 0x98, 0xa2, + 0xe4, 0x96, 0x75, 0x68, 0x59, 0xdc, 0xfc, 0xd2, 0x6c, 0x47, 0xab, 0x79, 0xa5, 0x9c, 0xb6, 0x29, + 0x4a, 0xce, 0xb6, 0x98, 0xa5, 0x1f, 0x28, 0xf7, 0xbf, 0x52, 0x8e, 0x4f, 0xd0, 0x49, 0xfa, 0x8c, + 0x11, 0xb1, 0x69, 0x84, 0x25, 0x7c, 0x80, 0x99, 0xf1, 0xaa, 0xb6, 0xdd, 0xaa, 0x7e, 0x84, 0x4a, + 0x41, 0xf6, 0xaa, 0xb8, 0x11, 0x99, 0xf8, 0xc2, 0x83, 0x2e, 0x2d, 0x4c, 0x23, 0x45, 0x41, 0x31, + 0x4a, 0x5c, 0x5c, 0xf6, 0xd0, 0xa1, 0xd9, 0x32, 0x6d, 0xb6, 0x18, 0x6a, 0xc7, 0xd9, 0x68, 0x8b, + 0x52, 0x30, 0x56, 0xca, 0xa6, 0xd3, 0xb0, 0xbf, 0x07, 0x25, 0xec, 0xbe, 0xc9, 0x4a, 0xd0, 0x11, + 0xb2, 0xed, 0x78, 0x9b, 0x35, 0x51, 0x75, 0x5b, 0x84, 0xc2, 0x2a, 0x7a, 0xb3, 0x84, 0x3d, 0x58, + 0xd1, 0xb1, 0xc1, 0x77, 0x5f, 0xbd, 0x55, 0x01, 0xfb, 0xa2, 0x74, 0xdc, 0xba, 0x38, 0x87, 0x79, + 0xc3, 0x0f, 0xb0, 0xaa, 0xbd, 0xb7, 0x04, 0x80, 0x4d, 0x26, 0x7d, 0x21, 0x05, 0x98, 0x57, 0xd7, + 0x5e, 0x5f, 0x67, 0xaa, 0xfb, 0xed, 0x11, 0xcf, 0x97, 0x3d, 0xdf, 0xf0, 0x99, 0xdf, 0x11, 0x26, + 0x66, 0xa4, 0x41, 0x96, 0xa8, 0x7f, 0x89, 0x49, 0x94, 0x82, 0x19, 0x0f, 0x41, 0x71, 0xc3, 0x50, + 0xcc, 0xc2, 0x93, 0x5e, 0x5f, 0x46, 0x0d, 0xdb, 0x4c, 0x14, 0xaa, 0xba, 0xf9, 0xcb, 0xa0, 0x7a, + 0xee, 0x22, 0xb3, 0x08, 0x25, 0x70, 0x5d, 0x63, 0x09, 0xcb, 0x00, 0xd0, 0xab, 0x02, 0x0b, 0x83, + 0x03, 0xda, 0x5f, 0x1c, 0x1c, 0x24, 0xc6, 0x42, 0x71, 0xe9, 0x1a, 0x18, 0x11, 0x01, 0xbe, 0xc0, + 0xd3, 0xa9, 0xf8, 0x95, 0x10, 0x9e, 0x1e, 0x3a, 0x1b, 0x3d, 0x4c, 0xa4, 0x77, 0x9b, 0xb8, 0xc4, + 0x1c, 0x26, 0x76, 0xbb, 0xdd, 0x50, 0x62, 0x1e, 0x13, 0xdb, 0xed, 0x76, 0x28, 0xb1, 0x80, 0x89, + 0x8a, 0xa2, 0x84, 0x12, 0x8b, 0x98, 0x58, 0xa9, 0x54, 0x42, 0x89, 0xa5, 0xb8, 0xc4, 0x32, 0x26, + 0x96, 0xcb, 0xe5, 0x50, 0x62, 0x1b, 0x13, 0x0b, 0x85, 0x42, 0x28, 0xb1, 0x83, 0x89, 0xf9, 0x7c, + 0x3e, 0x94, 0x48, 0x30, 0x31, 0x9b, 0xcd, 0x86, 0x12, 0xbb, 0x98, 0x98, 0xcb, 0xe5, 0x42, 0x89, + 0x16, 0xed, 0x67, 0x2e, 0x5c, 0xb2, 0x4f, 0x4b, 0x2a, 0xe1, 0x44, 0x8d, 0x26, 0x96, 0x3a, 0xa1, + 0x44, 0x03, 0x12, 0xe9, 0xa7, 0x1c, 0x73, 0x72, 0x41, 0x12, 0x82, 0x3f, 0x72, 0xba, 0x92, 0x0c, + 0x15, 0xb4, 0xdb, 0x2e, 0x3e, 0xf3, 0x91, 0xe4, 0x81, 0x9b, 0x5e, 0x0a, 0xa5, 0x3b, 0xed, 0x25, + 0x80, 0xdd, 0xcf, 0x66, 0x6f, 0xb4, 0x93, 0xc9, 0x48, 0x05, 0xc5, 0xab, 0x91, 0xdd, 0x94, 0x25, + 0x21, 0xf8, 0xb3, 0xbc, 0xc6, 0xe0, 0x53, 0x6d, 0x50, 0x3f, 0x60, 0x6a, 0x6a, 0x4d, 0xba, 0xec, + 0x94, 0xf9, 0xc9, 0xa1, 0x11, 0x18, 0x43, 0x72, 0x27, 0xe4, 0x74, 0x19, 0xca, 0x55, 0xa3, 0x04, + 0x15, 0x45, 0x3f, 0x25, 0x28, 0xb6, 0xb7, 0x44, 0x08, 0x2a, 0x3a, 0x27, 0xf9, 0xb8, 0x29, 0x2d, + 0xc4, 0x4d, 0x3e, 0x25, 0xa8, 0x62, 0xb1, 0xb8, 0x48, 0x50, 0xa5, 0x52, 0xe9, 0x93, 0x04, 0x15, + 0xa5, 0x5c, 0x4a, 0x50, 0x9d, 0x4e, 0x67, 0x91, 0xa0, 0xa2, 0x4b, 0xa4, 0x1b, 0xb7, 0x1a, 0x28, + 0x41, 0x91, 0x42, 0x6e, 0x91, 0xa0, 0x0a, 0x24, 0xb7, 0x48, 0x50, 0x85, 0xb2, 0x12, 0x4f, 0x50, + 0x79, 0x98, 0x08, 0xef, 0xdf, 0x12, 0x6a, 0x02, 0x64, 0xc6, 0x52, 0x13, 0xa4, 0x17, 0x97, 0x50, + 0x13, 0x0f, 0xf5, 0x33, 0xa4, 0x24, 0xe7, 0x80, 0x8a, 0xfc, 0x3f, 0x9f, 0x20, 0xa5, 0x62, 0x56, + 0x12, 0xbc, 0x7f, 0x9f, 0xa5, 0xa3, 0x91, 0x0e, 0xfb, 0x80, 0xc8, 0xf1, 0x29, 0x94, 0xfa, 0x77, + 0xfa, 0x81, 0xc0, 0x44, 0xab, 0xb6, 0xfb, 0xd8, 0x66, 0xbd, 0x9b, 0xee, 0x58, 0x04, 0x98, 0xbf, + 0x2b, 0x0a, 0x53, 0x90, 0x62, 0xb2, 0xa6, 0xf6, 0x12, 0x76, 0x1a, 0x8d, 0xfe, 0x44, 0x12, 0x81, + 0x47, 0x93, 0xbf, 0xfe, 0xf2, 0x15, 0x0c, 0xd0, 0x32, 0xed, 0xd1, 0x30, 0x6d, 0x0e, 0x0c, 0xc7, + 0xb0, 0x33, 0xd9, 0x4a, 0x4e, 0xce, 0x64, 0xe5, 0xb2, 0x8c, 0x9c, 0x1c, 0x5a, 0xc0, 0xed, 0x59, + 0xaf, 0x7b, 0x4a, 0x40, 0xad, 0x67, 0x58, 0x09, 0x6a, 0xe2, 0x10, 0x40, 0xea, 0x05, 0x4d, 0xf1, + 0xaf, 0xbf, 0x7e, 0xfc, 0x64, 0x85, 0x94, 0x3a, 0x88, 0x9b, 0xda, 0x0f, 0xf9, 0xe7, 0xb6, 0x8e, + 0xa2, 0xf8, 0xfe, 0x48, 0xd3, 0x1e, 0x41, 0xfe, 0x49, 0x24, 0xab, 0x98, 0x28, 0xa9, 0x3e, 0x8c, + 0x84, 0x22, 0x69, 0x3f, 0xb2, 0x3f, 0xe1, 0x4f, 0xee, 0x67, 0x52, 0x32, 0x82, 0x74, 0x35, 0x59, + 0x33, 0x70, 0xcb, 0xa3, 0x2f, 0x06, 0x02, 0xa1, 0x4f, 0xc9, 0x94, 0xf6, 0x23, 0x0f, 0x25, 0xf5, + 0xad, 0xba, 0x0a, 0xea, 0xc8, 0xf7, 0xba, 0x01, 0xc2, 0x0e, 0x1b, 0x8c, 0xf6, 0xa3, 0xf0, 0x33, + 0x39, 0x9f, 0xdb, 0x78, 0x67, 0x60, 0x0f, 0x3f, 0xcd, 0x8d, 0xc6, 0x6f, 0xa2, 0x13, 0x2b, 0x41, + 0x0d, 0x8d, 0x20, 0x5f, 0xd4, 0xb7, 0xdc, 0x11, 0x70, 0x92, 0x76, 0x74, 0xaf, 0x6e, 0xf7, 0x01, + 0x3f, 0x54, 0x1c, 0xd7, 0x41, 0x68, 0x4e, 0xe8, 0xf5, 0x74, 0x29, 0x29, 0x79, 0xca, 0x8a, 0x1b, + 0x6b, 0xae, 0xae, 0xfb, 0x29, 0x81, 0x68, 0x75, 0x84, 0x6a, 0x56, 0xfd, 0x17, 0x28, 0xf8, 0x20, + 0x5f, 0xd1, 0x1e, 0x51, 0xc9, 0x8a, 0x5d, 0x45, 0xa1, 0x93, 0x12, 0x9c, 0x1d, 0x25, 0x43, 0xb2, + 0x96, 0xe8, 0xc5, 0x47, 0xed, 0x80, 0x74, 0x1d, 0x99, 0xd9, 0xd6, 0x8b, 0xaa, 0x37, 0x5b, 0x2d, + 0x9c, 0x5e, 0x98, 0xb5, 0x2f, 0x4c, 0x27, 0x62, 0x38, 0x76, 0xea, 0x11, 0x35, 0xe7, 0x46, 0xe9, + 0x53, 0x25, 0x07, 0xcd, 0xdf, 0xb0, 0xce, 0x10, 0xd1, 0x31, 0x24, 0x80, 0xc7, 0x70, 0x40, 0x03, + 0x76, 0x5a, 0xed, 0xc2, 0xfc, 0xc3, 0xfe, 0x47, 0x34, 0x3c, 0x4f, 0x7d, 0xc3, 0xaf, 0x2d, 0x13, + 0x20, 0x2d, 0x48, 0x0a, 0x8e, 0xa7, 0x33, 0x1d, 0xdb, 0xc6, 0x94, 0x48, 0x6c, 0x2f, 0xe8, 0x54, + 0x1a, 0x73, 0x80, 0xc6, 0xd2, 0x34, 0xe8, 0x64, 0x5d, 0xc4, 0x6b, 0x69, 0x80, 0x15, 0x0c, 0x96, + 0xa7, 0x77, 0x9b, 0x03, 0x55, 0xeb, 0x26, 0x6c, 0x98, 0x8d, 0x40, 0x45, 0x63, 0x95, 0x7d, 0x65, + 0x21, 0x01, 0xb2, 0xcd, 0xb6, 0x67, 0xe6, 0x4a, 0x89, 0x99, 0x8c, 0x98, 0xa2, 0x96, 0xb2, 0xaa, + 0x28, 0x26, 0x53, 0x24, 0xa8, 0x67, 0xe8, 0x68, 0xaa, 0x4d, 0x30, 0xea, 0x26, 0xf5, 0xc8, 0x9d, + 0x23, 0x24, 0x65, 0x74, 0x45, 0x26, 0x55, 0xa4, 0xe3, 0x34, 0x05, 0x06, 0x48, 0x4d, 0x52, 0x33, + 0x9a, 0x2c, 0x25, 0x28, 0xc8, 0x7a, 0x48, 0x8c, 0xea, 0x7b, 0x62, 0x14, 0xa4, 0x1e, 0x99, 0x20, + 0xd5, 0x82, 0xec, 0xcb, 0x8a, 0x41, 0x6d, 0x50, 0x08, 0x13, 0xe2, 0x3e, 0xc0, 0xa3, 0x31, 0xc0, + 0xd2, 0xc2, 0xa5, 0x86, 0x9f, 0xaf, 0x16, 0x68, 0xf0, 0x5f, 0x16, 0x56, 0xf0, 0xe8, 0xf2, 0x8b, + 0xb8, 0x4c, 0x30, 0x63, 0x10, 0x25, 0x0a, 0x2d, 0x99, 0xac, 0x81, 0x7c, 0x42, 0x7c, 0x2d, 0xc6, + 0x54, 0x9c, 0x01, 0xfd, 0x00, 0x96, 0x5d, 0xa7, 0xa1, 0x6c, 0x3b, 0x04, 0x7d, 0x87, 0xd2, 0x80, + 0x2c, 0xfb, 0x5e, 0x75, 0x06, 0x80, 0x55, 0x31, 0xb9, 0xbd, 0x91, 0xad, 0x8e, 0x0d, 0xb5, 0x2b, + 0xc8, 0x40, 0x20, 0x26, 0xe8, 0xe0, 0x34, 0xb5, 0xe6, 0x1b, 0x03, 0x83, 0x01, 0xb2, 0x36, 0x20, + 0x61, 0x60, 0xd8, 0x0e, 0x82, 0x4d, 0x81, 0xfc, 0x8e, 0x71, 0x24, 0xb7, 0x41, 0xb6, 0x4a, 0xb1, + 0x47, 0xc4, 0x24, 0xcc, 0x0f, 0xd3, 0x60, 0xb7, 0x64, 0x50, 0x54, 0x51, 0x41, 0xb2, 0x71, 0x51, + 0x26, 0x5c, 0xfc, 0x50, 0x28, 0xa9, 0x3a, 0xb4, 0x92, 0xc2, 0xf4, 0x64, 0xd5, 0xe5, 0x03, 0xb8, + 0xdc, 0xbd, 0x56, 0x61, 0x11, 0xb0, 0xd2, 0xc9, 0x39, 0xa3, 0xba, 0x78, 0x6c, 0x06, 0x42, 0x69, + 0xb2, 0xe6, 0x40, 0x1d, 0x34, 0x82, 0x81, 0x9a, 0xdb, 0x27, 0xbb, 0x84, 0x98, 0xf8, 0xc6, 0x64, + 0x55, 0xba, 0xf2, 0x12, 0xa0, 0xb6, 0xe0, 0xd5, 0x2b, 0xd4, 0xfd, 0x6f, 0x1d, 0x55, 0x03, 0x49, + 0x37, 0x21, 0x3a, 0xd6, 0x88, 0x88, 0xf5, 0x25, 0xd0, 0xcd, 0xce, 0x50, 0x84, 0x89, 0xfa, 0x92, + 0x39, 0x33, 0xda, 0x6a, 0x06, 0x34, 0x3a, 0xdb, 0x49, 0xe8, 0xca, 0x58, 0xed, 0x2b, 0x50, 0x32, + 0x3d, 0xb2, 0x89, 0xd5, 0xe8, 0xc3, 0x24, 0xc1, 0x8a, 0xc5, 0xe5, 0xb6, 0x12, 0x0a, 0x94, 0x89, + 0xc6, 0x89, 0xe3, 0xe4, 0xbf, 0x40, 0x32, 0xa7, 0xd6, 0xb0, 0xed, 0x1e, 0x71, 0x3a, 0x83, 0xe0, + 0x18, 0x6c, 0x80, 0xa1, 0xbb, 0x21, 0x3d, 0xfd, 0x6c, 0x1b, 0x3a, 0xa0, 0x77, 0x36, 0x24, 0xce, + 0xc0, 0xe8, 0x56, 0x45, 0x28, 0x01, 0x6b, 0x17, 0x39, 0x89, 0x9e, 0x00, 0x3e, 0x43, 0x68, 0x81, + 0x44, 0x32, 0x48, 0x99, 0x45, 0x2d, 0x02, 0x80, 0x23, 0x34, 0xae, 0x81, 0x6e, 0x9f, 0x4c, 0x03, + 0x31, 0x43, 0x2b, 0x58, 0x0a, 0x6d, 0xcd, 0x06, 0x70, 0x06, 0xcd, 0xe8, 0x27, 0xc4, 0x73, 0x43, + 0x50, 0xb0, 0xb4, 0xcb, 0x5e, 0x69, 0xcb, 0x68, 0xbe, 0x0e, 0xf5, 0x22, 0x2d, 0xec, 0xb2, 0x0f, + 0x78, 0xd9, 0x94, 0x61, 0x90, 0x6e, 0x5a, 0x44, 0x90, 0x3d, 0x55, 0x87, 0x25, 0xf9, 0x96, 0x48, + 0x24, 0x01, 0xaa, 0xbb, 0x47, 0x70, 0xb2, 0x78, 0x3f, 0x0d, 0x8c, 0x0a, 0xca, 0x55, 0x97, 0x65, + 0x05, 0x88, 0x80, 0x85, 0xbe, 0xbe, 0xce, 0xf3, 0x22, 0x11, 0xd7, 0x7f, 0x93, 0x2d, 0x7f, 0xfe, + 0xa6, 0xb4, 0xe4, 0x7a, 0x2f, 0xba, 0x47, 0xfd, 0x98, 0xc2, 0x2c, 0xa8, 0xcb, 0x29, 0xe6, 0x72, + 0xe8, 0xd0, 0xd5, 0xc4, 0xdd, 0x89, 0xf4, 0x3b, 0xbc, 0xff, 0x80, 0x96, 0x72, 0xfe, 0x9d, 0x3d, + 0x73, 0x37, 0xf3, 0xfc, 0x3c, 0xfe, 0x36, 0x1e, 0x4b, 0x0d, 0x1b, 0xa4, 0x92, 0x73, 0x09, 0xcf, + 0xf3, 0xe7, 0xf4, 0x7f, 0x8c, 0xf2, 0x5c, 0xc2, 0xeb, 0xc6, 0x6c, 0x17, 0x41, 0x70, 0x69, 0xe6, + 0x06, 0x26, 0x4a, 0xf1, 0xb6, 0x31, 0xe9, 0x4b, 0xd6, 0xdd, 0xaa, 0x3b, 0x63, 0x9f, 0xa7, 0x7b, + 0x7b, 0x84, 0x4c, 0x95, 0x59, 0x64, 0xc0, 0xd0, 0x11, 0xeb, 0xad, 0x45, 0x31, 0x65, 0x58, 0x0d, + 0x4d, 0x4b, 0x7c, 0xe3, 0xc2, 0xb4, 0xba, 0x7e, 0x9c, 0x3f, 0xbf, 0x25, 0xfd, 0xed, 0x14, 0x0f, + 0x31, 0x04, 0x3b, 0xa9, 0xc7, 0xf4, 0xcc, 0x31, 0x46, 0x9d, 0x01, 0x9e, 0x4e, 0xa0, 0x06, 0x4a, + 0xa9, 0x78, 0x87, 0x7a, 0x6d, 0xc2, 0x86, 0xb8, 0xac, 0x34, 0x70, 0x98, 0x48, 0xd9, 0x80, 0xb9, + 0x46, 0x26, 0x8c, 0x78, 0x1b, 0x0b, 0xb3, 0xa7, 0x05, 0x4e, 0x1b, 0x41, 0xdf, 0x6c, 0xec, 0x9b, + 0x93, 0xb4, 0x63, 0xee, 0xdc, 0x29, 0x1d, 0x0c, 0xa9, 0x0f, 0x65, 0x99, 0x81, 0xfe, 0xaf, 0xbf, + 0x9c, 0x1f, 0xe4, 0x67, 0xf4, 0x2a, 0x9f, 0x57, 0x88, 0x63, 0xf0, 0xae, 0x17, 0x08, 0x91, 0x9c, + 0x3a, 0xe0, 0x73, 0xc6, 0x6a, 0xaf, 0xaf, 0x7f, 0x71, 0x80, 0x31, 0xab, 0x2d, 0x74, 0x32, 0x85, + 0x7d, 0xea, 0x3f, 0x9b, 0x31, 0x97, 0xea, 0xec, 0xa1, 0x61, 0x38, 0x20, 0x4d, 0xe1, 0x34, 0x40, + 0x81, 0x45, 0x83, 0x22, 0x08, 0x5c, 0xaa, 0x28, 0x31, 0x20, 0x0b, 0xe4, 0x49, 0x78, 0x83, 0x06, + 0x46, 0xa8, 0x67, 0x7e, 0x1f, 0x5e, 0x3f, 0x90, 0x89, 0xb1, 0xb9, 0x75, 0x5d, 0x48, 0x92, 0x0b, + 0x5b, 0x7e, 0x33, 0xbc, 0x7d, 0x5b, 0x20, 0xb9, 0xb9, 0x93, 0x4e, 0x2b, 0x32, 0x17, 0x13, 0xba, + 0xd5, 0xe2, 0x07, 0x2d, 0x0f, 0x6f, 0xce, 0x4e, 0xe9, 0x8e, 0x1b, 0x46, 0x09, 0xb0, 0x6c, 0x82, + 0x5e, 0x27, 0xc0, 0xb8, 0xb1, 0x13, 0xb0, 0x1c, 0xa8, 0x27, 0x8a, 0x47, 0xe2, 0xee, 0xc1, 0x10, + 0x72, 0x72, 0xd6, 0xbc, 0xa2, 0xab, 0x43, 0xba, 0xf7, 0xb9, 0x46, 0x2f, 0xef, 0xe8, 0xa8, 0x1e, + 0x5d, 0x17, 0x71, 0x73, 0xc4, 0x5a, 0x98, 0x4b, 0xb9, 0x0a, 0xac, 0x06, 0x09, 0x86, 0xc8, 0xf3, + 0x1b, 0x12, 0xc1, 0x07, 0xe7, 0x0c, 0x93, 0x9c, 0x05, 0x08, 0x12, 0x9b, 0x80, 0x10, 0xe2, 0xaa, + 0xda, 0x86, 0x40, 0x35, 0x79, 0xa1, 0xa7, 0xc0, 0xa6, 0xd9, 0xfd, 0x02, 0x73, 0x21, 0xf3, 0x3a, + 0x74, 0xc4, 0xa7, 0x86, 0xd4, 0x8b, 0x24, 0xef, 0x13, 0x19, 0x8f, 0x23, 0x87, 0xeb, 0xac, 0x1b, + 0x60, 0xd1, 0x4e, 0xb8, 0x88, 0x41, 0x56, 0x19, 0x8f, 0x93, 0x65, 0x43, 0x77, 0x96, 0x0e, 0x5d, + 0x8a, 0xcb, 0x72, 0x9b, 0x99, 0x4b, 0x21, 0x92, 0x00, 0x46, 0x75, 0x8d, 0x27, 0x95, 0x43, 0xe2, + 0x5a, 0x47, 0x59, 0xb7, 0x03, 0x23, 0x24, 0x4a, 0xd8, 0x67, 0xb0, 0xad, 0xa7, 0x7b, 0x9a, 0x01, + 0xcb, 0xc3, 0xc9, 0x94, 0x4b, 0x05, 0x44, 0xab, 0xce, 0xa7, 0x26, 0x9c, 0x0d, 0x9a, 0xfc, 0xa7, + 0x9d, 0xcc, 0xe4, 0x4b, 0x98, 0xad, 0xc5, 0x67, 0x6f, 0x60, 0xee, 0x9f, 0x7a, 0x32, 0x53, 0xc2, + 0x0d, 0xa9, 0x6e, 0x6f, 0xdb, 0x29, 0x51, 0x10, 0x53, 0x89, 0x2c, 0xec, 0xd9, 0x68, 0x36, 0x79, + 0x13, 0xf1, 0x1c, 0xe9, 0x0d, 0x16, 0x63, 0x4a, 0x94, 0x04, 0x11, 0xbf, 0x93, 0xe6, 0x5a, 0x7f, + 0x95, 0x54, 0x5d, 0xff, 0xeb, 0x2f, 0x7b, 0x5b, 0xf7, 0x2b, 0xe8, 0xdb, 0xe2, 0xc0, 0x18, 0x21, + 0x49, 0xe1, 0x0f, 0x54, 0x81, 0xd2, 0xd2, 0x17, 0x60, 0xe3, 0x3a, 0xa0, 0x12, 0x8a, 0x23, 0x00, + 0x40, 0xc5, 0x56, 0xb1, 0x02, 0xeb, 0xcc, 0x66, 0x69, 0x5a, 0x8a, 0xba, 0x60, 0x62, 0xfa, 0x77, + 0xec, 0x0a, 0x1a, 0x2e, 0x31, 0x9f, 0x2b, 0xef, 0xa6, 0x63, 0x8a, 0xb3, 0x51, 0x92, 0xff, 0xc4, + 0x2a, 0x36, 0x41, 0xe5, 0x4f, 0xe1, 0x0c, 0xd4, 0x3a, 0xf0, 0x0a, 0x63, 0x82, 0xeb, 0x08, 0x0d, + 0xb3, 0xa2, 0x27, 0xf0, 0xfd, 0xfa, 0xee, 0x58, 0x5b, 0xdf, 0x9d, 0xae, 0x77, 0xac, 0xfa, 0x42, + 0xde, 0x9c, 0xae, 0xb8, 0xf5, 0xc7, 0x8c, 0xcc, 0xbf, 0x67, 0x9c, 0x2e, 0x9f, 0x35, 0x56, 0x34, + 0x96, 0xe5, 0xcc, 0x41, 0x94, 0x76, 0xb3, 0x33, 0x50, 0xfd, 0x57, 0x68, 0x76, 0x4e, 0xb9, 0x13, + 0xc3, 0xcb, 0x04, 0x9b, 0x1f, 0x52, 0xcf, 0xfa, 0xbc, 0x8a, 0x1e, 0xf5, 0xd2, 0x03, 0xc0, 0xa4, + 0x03, 0xd2, 0xe1, 0xfa, 0x3a, 0x49, 0xa5, 0x3c, 0x9c, 0x91, 0xad, 0x5c, 0x11, 0x87, 0x42, 0xea, + 0xf0, 0x9b, 0x94, 0x38, 0x81, 0x93, 0xfa, 0xf1, 0xde, 0x02, 0x48, 0x8e, 0x1d, 0x02, 0xa5, 0xfe, + 0x32, 0xb1, 0xa7, 0x6a, 0xf7, 0x57, 0x92, 0x85, 0x5c, 0xaa, 0x7d, 0xa1, 0x90, 0x7f, 0x38, 0x3f, + 0xff, 0xfa, 0x4b, 0xfe, 0x82, 0xd0, 0xb1, 0x8d, 0xed, 0xa0, 0x28, 0x7e, 0x07, 0x02, 0x0a, 0x07, + 0x4b, 0xdf, 0xc1, 0x26, 0xb7, 0xe9, 0x5d, 0xba, 0x72, 0xb9, 0x26, 0x1c, 0xed, 0x0a, 0xc3, 0x91, + 0xed, 0x08, 0x6d, 0x22, 0x40, 0xba, 0x60, 0x80, 0x1a, 0x45, 0x6c, 0x3b, 0x8d, 0x13, 0x5b, 0x5d, + 0x01, 0xe5, 0x97, 0x57, 0x1f, 0x4f, 0xd3, 0x27, 0x96, 0x8a, 0x41, 0x76, 0x85, 0x3f, 0x66, 0x26, + 0x95, 0xfc, 0x9d, 0xe4, 0xfc, 0x0b, 0x87, 0x23, 0xd3, 0x3d, 0xf3, 0x70, 0x87, 0xe1, 0x7a, 0xbe, + 0x02, 0x8d, 0x10, 0x0f, 0x0d, 0x74, 0x0c, 0xeb, 0xeb, 0x6c, 0x28, 0xe4, 0x67, 0xf0, 0x94, 0xd6, + 0xa9, 0x11, 0x39, 0x78, 0x85, 0xe9, 0xe7, 0x0f, 0x21, 0x2e, 0x35, 0xe5, 0x0d, 0x7d, 0x3b, 0xb9, + 0x43, 0x08, 0xbf, 0xac, 0xe9, 0xe6, 0x71, 0xd0, 0xbc, 0xa4, 0xb4, 0x69, 0x73, 0xdd, 0x53, 0x4c, + 0xf5, 0x4e, 0xd1, 0x3c, 0xdd, 0x86, 0x16, 0x06, 0x19, 0xcf, 0xab, 0x94, 0x74, 0x4f, 0x23, 0x44, + 0xd7, 0x2a, 0xec, 0x9e, 0xcc, 0x00, 0x85, 0xa8, 0x7d, 0x3d, 0x81, 0xc7, 0xb6, 0x5e, 0x41, 0x6f, + 0x34, 0x4e, 0x1a, 0xd4, 0x83, 0x6d, 0xfa, 0xb7, 0x9a, 0xe8, 0x12, 0x0c, 0xe7, 0x01, 0x69, 0xba, + 0xe4, 0x3f, 0x9a, 0xc1, 0xe3, 0xab, 0x16, 0x35, 0x9e, 0x3a, 0xfc, 0xe2, 0x7f, 0xd5, 0x3c, 0xdc, + 0x7d, 0x88, 0xa9, 0x57, 0x6d, 0x9b, 0x7b, 0xc6, 0xa3, 0xdb, 0x80, 0x96, 0xcc, 0x9d, 0xce, 0x8b, + 0x4f, 0x99, 0x4c, 0x33, 0x47, 0xfb, 0x6e, 0x8d, 0xb8, 0x1f, 0x5c, 0x4a, 0x50, 0x23, 0x3d, 0x71, + 0x5a, 0xde, 0x27, 0x78, 0xaf, 0xe9, 0x99, 0x9b, 0x2c, 0x55, 0xe8, 0x7f, 0x28, 0x9e, 0x90, 0x29, + 0xe9, 0x34, 0x8d, 0xe1, 0x10, 0x24, 0x10, 0xdc, 0x8b, 0xcc, 0x37, 0x14, 0xbb, 0x78, 0x66, 0x6c, + 0xaa, 0xcc, 0xfd, 0x01, 0x83, 0xb0, 0xb7, 0x0d, 0xc5, 0x02, 0x2e, 0xcc, 0x0d, 0xc4, 0xa4, 0x73, + 0x4e, 0x79, 0x70, 0x40, 0x09, 0x78, 0xfa, 0x0b, 0x4b, 0xb3, 0xe6, 0x58, 0x6f, 0xb3, 0x84, 0xbd, + 0x4a, 0x3e, 0x03, 0x79, 0xd9, 0xd3, 0x20, 0xb2, 0x32, 0x25, 0x09, 0x64, 0xf0, 0xae, 0xbc, 0x9a, + 0x9c, 0xcd, 0x99, 0x3e, 0xfd, 0x8b, 0x77, 0xb8, 0xa5, 0x1f, 0xac, 0xe9, 0x88, 0x40, 0x94, 0x64, + 0xfb, 0x5b, 0x38, 0xe6, 0x44, 0xb5, 0x1c, 0xfe, 0xa4, 0xa7, 0x40, 0x3f, 0x59, 0x2b, 0x7e, 0xab, + 0x7e, 0xf3, 0x1d, 0x2b, 0xfc, 0xb3, 0xf6, 0x5a, 0xc8, 0x47, 0xb8, 0x26, 0xc6, 0x5f, 0x9d, 0xaf, + 0x7d, 0x00, 0x79, 0xbe, 0xf5, 0xab, 0xa6, 0xa7, 0x60, 0x61, 0x8a, 0xe8, 0x37, 0x33, 0x50, 0xc6, + 0x44, 0xd0, 0x0d, 0x17, 0x29, 0xb6, 0xf0, 0x46, 0x9c, 0x2f, 0xb0, 0xe0, 0xdc, 0xb0, 0xf1, 0x20, + 0xff, 0x5a, 0x44, 0x98, 0x28, 0x36, 0xba, 0xe0, 0xa8, 0xb6, 0x3d, 0x22, 0x54, 0xa2, 0xc6, 0x05, + 0xf6, 0x06, 0x6c, 0xd4, 0xab, 0x05, 0x9b, 0x1c, 0xca, 0x06, 0x00, 0x55, 0xf4, 0x3c, 0x7a, 0x44, + 0x89, 0xb5, 0x71, 0x08, 0x1c, 0x09, 0x3f, 0xff, 0xe3, 0x82, 0x52, 0x6d, 0x01, 0x85, 0x85, 0x91, + 0xe9, 0x56, 0xa5, 0xb7, 0x7e, 0x51, 0x80, 0x52, 0x30, 0x61, 0xac, 0x1a, 0x23, 0x9b, 0xf9, 0x5f, + 0x69, 0x9a, 0xc2, 0x8e, 0x55, 0xc6, 0xb0, 0x8d, 0xe2, 0xa7, 0x3c, 0xa8, 0xaf, 0x8f, 0xf0, 0x1f, + 0xba, 0x20, 0x08, 0x89, 0x16, 0xe8, 0x39, 0xd0, 0x05, 0xc5, 0x03, 0x32, 0x51, 0x35, 0x76, 0x45, + 0x42, 0x40, 0xcf, 0x6d, 0xea, 0xbd, 0x66, 0xb8, 0xbc, 0x80, 0x50, 0xd7, 0x17, 0xd6, 0x66, 0x12, + 0x06, 0x76, 0xe8, 0xf6, 0x42, 0xf1, 0xfa, 0x61, 0x30, 0xe7, 0x18, 0x3c, 0x21, 0x10, 0x5e, 0x74, + 0x63, 0x02, 0x7c, 0xd4, 0x30, 0xba, 0xe8, 0x23, 0xe4, 0x80, 0x0a, 0x8d, 0xa3, 0xf8, 0xf6, 0xdd, + 0xfb, 0xb6, 0x00, 0x73, 0x98, 0xee, 0xd0, 0xfb, 0x0c, 0x5e, 0xda, 0x56, 0xd0, 0xaf, 0x95, 0x5e, + 0x43, 0x2e, 0xe1, 0xa3, 0x23, 0xb4, 0xf9, 0x16, 0x22, 0x4e, 0xdf, 0xdf, 0xe7, 0x5b, 0x52, 0xa2, + 0x28, 0xa4, 0xde, 0x37, 0x22, 0x13, 0xa3, 0x5d, 0x07, 0x76, 0x8e, 0xdd, 0xe9, 0x92, 0x2f, 0x87, + 0xd1, 0x95, 0xc3, 0x98, 0x6f, 0xdd, 0x8e, 0x98, 0x49, 0x3c, 0x3a, 0x21, 0xd4, 0xdc, 0x42, 0xf9, + 0x09, 0x70, 0x64, 0xf4, 0xe2, 0xa8, 0x53, 0x15, 0x84, 0x3e, 0x6f, 0xc9, 0x49, 0x6f, 0x31, 0x1b, + 0xe6, 0x08, 0x03, 0x48, 0x79, 0xd5, 0xbe, 0xb8, 0xaa, 0x0a, 0x12, 0x1e, 0xfc, 0x4a, 0x54, 0x09, + 0x27, 0x40, 0x75, 0x09, 0x10, 0x63, 0x21, 0xe1, 0x4b, 0xdd, 0xcd, 0x05, 0x51, 0x24, 0xa2, 0x11, + 0xba, 0x44, 0xf1, 0x91, 0x42, 0x28, 0x16, 0xe4, 0x02, 0x35, 0x51, 0x20, 0xaa, 0x47, 0xf6, 0xf6, + 0x4c, 0xae, 0xce, 0xe6, 0xf3, 0x6a, 0x8c, 0x9e, 0xc8, 0x3c, 0x56, 0x48, 0xa8, 0x3f, 0xd1, 0xfe, + 0x86, 0x75, 0x46, 0x7e, 0x89, 0x83, 0xe4, 0x1a, 0x55, 0xfe, 0xf0, 0x98, 0x2d, 0x90, 0x8f, 0x08, + 0xb0, 0x96, 0x64, 0xd4, 0xca, 0xe4, 0x2b, 0x5f, 0x1e, 0xfe, 0x22, 0x83, 0xc4, 0x4e, 0x66, 0x3c, + 0xff, 0xa5, 0x15, 0xa3, 0x4c, 0x80, 0xfa, 0xf3, 0x02, 0xa2, 0x48, 0x44, 0x78, 0x94, 0xfc, 0x61, + 0x72, 0xe3, 0x64, 0xde, 0x37, 0x2e, 0x53, 0x07, 0xb5, 0xc5, 0x52, 0xb1, 0xfd, 0x64, 0x30, 0x56, + 0x3f, 0x48, 0x4e, 0x68, 0xb0, 0xbc, 0xa0, 0x8e, 0xac, 0x68, 0x71, 0xb0, 0x78, 0x70, 0xc6, 0x9d, + 0x79, 0x45, 0x86, 0x0a, 0x5a, 0xe4, 0xaa, 0x41, 0xba, 0x9e, 0x78, 0xff, 0xd0, 0x18, 0xc9, 0x07, + 0x63, 0x74, 0x3d, 0xf6, 0xff, 0xf1, 0x21, 0x52, 0x35, 0x78, 0xd5, 0x30, 0x99, 0x83, 0xd4, 0x3f, + 0x34, 0xca, 0x84, 0xeb, 0x6e, 0x45, 0xa8, 0xfd, 0x37, 0x6d, 0x0f, 0xd4, 0x1e, 0x16, 0x65, 0xa9, + 0xe9, 0x91, 0xce, 0x12, 0xc4, 0xda, 0x97, 0x9a, 0x18, 0x1e, 0x68, 0xe0, 0xa6, 0xf5, 0x37, 0x86, + 0x8c, 0x3b, 0x0f, 0xf6, 0xc5, 0x25, 0x6c, 0xc9, 0xbc, 0x3a, 0x05, 0x48, 0x81, 0x3b, 0x8b, 0x87, + 0xe3, 0xab, 0x53, 0x7f, 0x03, 0x86, 0x1d, 0x0f, 0x18, 0x03, 0x14, 0xf4, 0x8d, 0x62, 0x80, 0x1d, + 0x5f, 0x58, 0x34, 0x58, 0x16, 0x6c, 0x2e, 0xa0, 0x45, 0xa0, 0x2b, 0x4a, 0x7d, 0x8b, 0xfc, 0x90, + 0x7f, 0x6e, 0x39, 0x68, 0x19, 0x93, 0x08, 0xb2, 0xc6, 0xb8, 0x5b, 0x40, 0x57, 0xe8, 0x86, 0x45, + 0xf1, 0x8e, 0x37, 0x11, 0xbe, 0x61, 0x3f, 0x28, 0x1e, 0x92, 0x50, 0xe3, 0xd7, 0xd2, 0x38, 0x46, + 0x02, 0x7e, 0x3b, 0xdc, 0xbd, 0x1c, 0x04, 0x72, 0x2e, 0x34, 0x31, 0x7f, 0xd5, 0xda, 0xa2, 0x17, + 0x43, 0x0f, 0x93, 0x72, 0x3f, 0xb7, 0xf1, 0x0f, 0x0a, 0x14, 0x61, 0xc7, 0x43, 0xc6, 0x05, 0x12, + 0x6e, 0x35, 0xd8, 0x1a, 0x51, 0x52, 0xfe, 0x91, 0xfd, 0x39, 0xf7, 0x79, 0xeb, 0xaf, 0x1a, 0x63, + 0xa7, 0xaf, 0xda, 0x62, 0x30, 0x1d, 0xef, 0xd3, 0x68, 0x30, 0x17, 0x68, 0xa0, 0x14, 0x62, 0x4b, + 0xfa, 0x9a, 0x91, 0x5f, 0x98, 0x87, 0xc8, 0xa9, 0xb3, 0xf3, 0x05, 0x7c, 0xfb, 0xac, 0xd8, 0xe3, + 0xc2, 0x09, 0xc6, 0xd1, 0x38, 0xf3, 0xdf, 0x6a, 0x79, 0x23, 0xc9, 0x04, 0xbb, 0xe4, 0xcc, 0x95, + 0xd5, 0x98, 0x70, 0x25, 0xff, 0x74, 0xc5, 0x40, 0xd0, 0x64, 0xec, 0xe8, 0x92, 0x62, 0x15, 0x40, + 0xd1, 0xa6, 0x93, 0xd7, 0x19, 0x9a, 0x97, 0x49, 0x8f, 0x1e, 0x98, 0x80, 0x82, 0x84, 0xc1, 0x1d, + 0x56, 0x24, 0x5c, 0x37, 0x3f, 0x9b, 0xcd, 0x14, 0x15, 0x3f, 0x99, 0x67, 0x0f, 0x1e, 0x46, 0x24, + 0x93, 0xb8, 0x0d, 0xa9, 0x3a, 0x08, 0xf9, 0xcc, 0xe8, 0xec, 0xab, 0x7c, 0x78, 0x78, 0xc1, 0x54, + 0x7c, 0xa5, 0x8e, 0x25, 0x41, 0xde, 0xab, 0x29, 0xb0, 0xb7, 0x00, 0xd9, 0x98, 0x23, 0x7b, 0x90, + 0xf8, 0x41, 0x24, 0x45, 0xf2, 0xa4, 0x6e, 0x3c, 0xa5, 0x60, 0xc9, 0xb0, 0xe2, 0x9d, 0x54, 0x8c, + 0x90, 0x44, 0xa3, 0xf6, 0x78, 0x34, 0x40, 0xe6, 0x86, 0xb8, 0xf5, 0x2b, 0x30, 0xbb, 0x99, 0x6a, + 0x17, 0xe5, 0xad, 0x68, 0x3d, 0xd5, 0xd7, 0x99, 0x70, 0xdf, 0xfc, 0x15, 0x03, 0x19, 0xcd, 0xc1, + 0x82, 0x1f, 0xb1, 0x27, 0x9e, 0x72, 0xc8, 0x3c, 0x89, 0x60, 0x42, 0x72, 0xfc, 0xb6, 0xe8, 0x3b, + 0x37, 0x7f, 0x0b, 0xc7, 0xb0, 0xfa, 0xc6, 0x1c, 0xca, 0xf3, 0x2c, 0x68, 0x03, 0x6a, 0x28, 0x73, + 0x4f, 0xe3, 0x20, 0xc9, 0x39, 0x8a, 0x03, 0x51, 0xb7, 0x68, 0xff, 0x9b, 0x82, 0x42, 0x4f, 0xb3, + 0xb8, 0x21, 0xea, 0x98, 0x11, 0x0e, 0x0d, 0xd1, 0x22, 0x20, 0xcd, 0x43, 0x5e, 0x2a, 0x2b, 0xcb, + 0x73, 0x2f, 0x58, 0x5d, 0xc7, 0xfd, 0x24, 0x0a, 0x73, 0xcd, 0x8d, 0x6b, 0x20, 0x02, 0x1d, 0x9d, + 0x19, 0x3d, 0x20, 0x1c, 0x7c, 0x46, 0xbf, 0x51, 0xf0, 0xf9, 0x8a, 0x1b, 0x1f, 0x04, 0x01, 0x47, + 0x26, 0x05, 0x54, 0x46, 0x3e, 0x12, 0x92, 0x07, 0xdc, 0x87, 0x1d, 0xf4, 0xc9, 0x9d, 0x01, 0xea, + 0x32, 0x9a, 0x4a, 0xcd, 0x97, 0x08, 0x30, 0x0e, 0xcd, 0xdf, 0x92, 0xb7, 0x13, 0x54, 0x10, 0xa1, + 0x92, 0xc4, 0xfa, 0xba, 0xec, 0xfe, 0x26, 0x96, 0x7b, 0x78, 0xa0, 0x69, 0x14, 0x85, 0x00, 0x77, + 0x39, 0x00, 0xe5, 0x51, 0xef, 0xd5, 0xe5, 0xe5, 0x17, 0xbc, 0x41, 0xd8, 0xaa, 0x48, 0x7a, 0x56, + 0x58, 0x84, 0x55, 0x0d, 0xc9, 0x0a, 0xbe, 0xc9, 0xf6, 0xb2, 0x91, 0x08, 0x36, 0x25, 0x64, 0x98, + 0x8c, 0x35, 0x44, 0x63, 0xa0, 0xb1, 0x95, 0x8d, 0x21, 0xd0, 0x78, 0x05, 0x83, 0x2d, 0x8e, 0x9e, + 0x41, 0x8f, 0x20, 0x3d, 0xff, 0x58, 0xe2, 0xae, 0x56, 0x92, 0x46, 0x2a, 0xac, 0x2d, 0x9c, 0x7f, + 0xf1, 0x08, 0x72, 0xd2, 0x43, 0xba, 0x25, 0x64, 0x7e, 0xfc, 0xc7, 0x28, 0x2f, 0x17, 0xe4, 0x0d, + 0xfc, 0xe9, 0xf5, 0xe0, 0x6f, 0x41, 0xc6, 0x97, 0x42, 0xb7, 0x0d, 0x2f, 0x05, 0x42, 0x5f, 0x2a, + 0x3d, 0xcc, 0xe9, 0x55, 0xe8, 0x4b, 0x4f, 0xa1, 0x2f, 0xbd, 0x52, 0x09, 0x5f, 0x7a, 0x15, 0xac, + 0x93, 0xcd, 0x67, 0xe1, 0x65, 0x77, 0xb3, 0xb2, 0xfb, 0x33, 0x83, 0x67, 0x3b, 0x4b, 0x8e, 0xde, + 0xfc, 0x70, 0xa2, 0xe8, 0xf2, 0x4d, 0x3f, 0xbd, 0xce, 0x5c, 0xb2, 0xf0, 0xf4, 0x55, 0xdc, 0xa5, + 0xdd, 0x6b, 0xa3, 0x79, 0xad, 0x5e, 0xaf, 0xe3, 0x3c, 0x2d, 0x73, 0x5f, 0x5c, 0x05, 0x86, 0xa4, + 0xf1, 0x5b, 0x23, 0x54, 0x69, 0x12, 0x13, 0xf8, 0xe1, 0xa1, 0x24, 0xa8, 0xde, 0x0e, 0x3d, 0x3c, + 0xf2, 0x12, 0xdd, 0x94, 0x6e, 0x9a, 0xf1, 0x7d, 0x27, 0x70, 0x88, 0x26, 0xd4, 0x7b, 0x07, 0x58, + 0x01, 0xbc, 0x84, 0xbc, 0xb8, 0x51, 0x84, 0xb4, 0x3c, 0xf7, 0x68, 0xb7, 0x14, 0xbc, 0x01, 0x8d, + 0x52, 0xaf, 0x65, 0x92, 0xee, 0xd9, 0x69, 0x94, 0x19, 0x99, 0xcc, 0xcc, 0x7d, 0x20, 0xc8, 0x1b, + 0xb9, 0x1b, 0x14, 0xa0, 0xee, 0xbb, 0x09, 0xe9, 0xdd, 0x0e, 0xd0, 0x27, 0x0a, 0x0b, 0xae, 0xab, + 0x13, 0xfa, 0x34, 0xfb, 0x90, 0x81, 0x9c, 0xa6, 0xdb, 0xa1, 0xb7, 0xf4, 0xa4, 0x4a, 0x3d, 0x9e, + 0x57, 0x15, 0x19, 0x40, 0x91, 0x04, 0x7a, 0x48, 0x0f, 0x27, 0x78, 0xf4, 0x34, 0xc4, 0xbd, 0x76, + 0x3b, 0xc1, 0x85, 0x49, 0x93, 0x77, 0x17, 0xb7, 0x26, 0x16, 0x24, 0x8d, 0x0f, 0x06, 0x97, 0xdd, + 0x8d, 0xdd, 0x96, 0x16, 0x0b, 0xe6, 0x56, 0x15, 0x4c, 0x56, 0x57, 0xb4, 0xbc, 0x1c, 0x66, 0xf6, + 0x53, 0x5d, 0xcc, 0x2d, 0x2d, 0x95, 0x5c, 0xdc, 0x1c, 0xbd, 0x75, 0xc2, 0x6d, 0x65, 0x30, 0x61, + 0x16, 0x21, 0x03, 0xa2, 0x98, 0x19, 0xfc, 0x4c, 0x5f, 0xcd, 0xae, 0xdb, 0x69, 0xc7, 0xd8, 0x57, + 0xa7, 0xa4, 0x9b, 0xc8, 0x26, 0xdd, 0xfd, 0xcb, 0x45, 0xae, 0x39, 0xb1, 0x24, 0xad, 0x2e, 0x9e, + 0x1b, 0x8e, 0x80, 0x1f, 0x97, 0xa3, 0x20, 0xbb, 0x62, 0x4d, 0xdf, 0xca, 0x92, 0xfc, 0xb6, 0x56, + 0x4f, 0xe8, 0xf0, 0xff, 0x4c, 0x1d, 0x5e, 0x92, 0x3e, 0x08, 0xc8, 0x93, 0xb7, 0xe5, 0x6a, 0x36, + 0x99, 0x4c, 0x89, 0x42, 0x43, 0xac, 0xea, 0x38, 0x1d, 0x09, 0x5a, 0xb6, 0x28, 0xff, 0x49, 0x2d, + 0x91, 0xd4, 0x96, 0x0d, 0x15, 0x61, 0x59, 0x63, 0xa1, 0x61, 0x43, 0xf4, 0xf6, 0x38, 0x26, 0x30, + 0x91, 0xf4, 0x28, 0x89, 0xbb, 0x27, 0x32, 0x5e, 0xe7, 0x07, 0x50, 0xe3, 0x4f, 0x50, 0x23, 0xa3, + 0x42, 0x2d, 0x94, 0x49, 0xda, 0xb0, 0x25, 0x6e, 0x2b, 0xa9, 0xba, 0x67, 0x02, 0x84, 0xa2, 0xf4, + 0x10, 0x1a, 0xf7, 0xd4, 0x6a, 0x38, 0x9d, 0xb5, 0xa0, 0xd6, 0xc5, 0x93, 0xd1, 0x68, 0xa0, 0xbc, + 0x8c, 0xc4, 0x1a, 0x49, 0x83, 0x12, 0x9b, 0xa6, 0x67, 0x1b, 0xee, 0x89, 0xa8, 0x9c, 0xce, 0x16, + 0xd2, 0xd4, 0xfa, 0x0b, 0xe5, 0x0e, 0x0d, 0x10, 0x23, 0xe9, 0xa2, 0xea, 0xe8, 0x34, 0x05, 0x1f, + 0xd8, 0xee, 0x37, 0x06, 0xe6, 0x8c, 0x95, 0xe7, 0x02, 0xc8, 0x4d, 0xea, 0xdc, 0xd7, 0xca, 0xbf, + 0xd3, 0xaf, 0x62, 0x22, 0xab, 0xfe, 0x63, 0xa6, 0xcc, 0xe9, 0x0f, 0xba, 0x3b, 0xd4, 0x95, 0x6d, + 0x51, 0xac, 0x7e, 0xf3, 0xcd, 0x91, 0x86, 0x86, 0xf7, 0x40, 0xea, 0xb9, 0xad, 0xef, 0x03, 0xcb, + 0x33, 0x32, 0x78, 0x77, 0x85, 0xfc, 0x0f, 0xac, 0xbb, 0x1f, 0xc4, 0x93, 0x6b, 0xcc, 0x47, 0x1f, + 0x3f, 0x89, 0xbc, 0xf8, 0xfd, 0x56, 0x4c, 0xa5, 0xda, 0xb2, 0x6b, 0xae, 0xfc, 0xc6, 0x1a, 0xcd, + 0x15, 0x4b, 0xeb, 0x78, 0x2e, 0xe4, 0x6c, 0x7b, 0x08, 0x10, 0x77, 0x49, 0x7b, 0xd4, 0x17, 0xa5, + 0x6f, 0x2b, 0xe2, 0x5c, 0xc6, 0xde, 0x10, 0x9c, 0xfd, 0xc7, 0xb7, 0x2e, 0x56, 0xfd, 0x8f, 0x6f, + 0xd5, 0x6f, 0xa9, 0x44, 0x36, 0x57, 0x76, 0x01, 0x8b, 0x3d, 0x05, 0x18, 0x36, 0xec, 0xcc, 0xf4, + 0x14, 0x35, 0x99, 0xfa, 0x46, 0xc5, 0xc2, 0xe8, 0xa6, 0x19, 0xae, 0x02, 0xfa, 0x6a, 0x95, 0x06, + 0xbb, 0x85, 0xe2, 0xc1, 0x97, 0xe5, 0x42, 0x37, 0xc6, 0xbe, 0xa1, 0xe1, 0x98, 0x0d, 0xc2, 0xef, + 0xfa, 0xce, 0x48, 0xd5, 0xd0, 0x99, 0x22, 0x3d, 0x56, 0xbb, 0xc9, 0x48, 0x5e, 0x4b, 0xed, 0x83, + 0xd4, 0x4e, 0xef, 0xde, 0xa0, 0x7c, 0x8d, 0xa5, 0x26, 0x6a, 0x4f, 0x4d, 0xdb, 0x34, 0x3d, 0x25, + 0xfe, 0x4b, 0xa0, 0x7e, 0xc5, 0x34, 0xcd, 0xb2, 0x6d, 0x55, 0x12, 0x85, 0xee, 0xce, 0x10, 0x78, + 0x65, 0x04, 0xce, 0xad, 0x89, 0x66, 0x77, 0x51, 0x8a, 0x98, 0xe0, 0xd3, 0x23, 0x9a, 0x9e, 0x8c, + 0x16, 0xc7, 0xe8, 0x5f, 0x02, 0xae, 0x20, 0x58, 0x4f, 0x00, 0xf2, 0x65, 0xc7, 0x03, 0x48, 0xd2, + 0xa6, 0x6d, 0x29, 0xc3, 0xed, 0x70, 0xc9, 0xcb, 0xd6, 0x75, 0xe3, 0x4c, 0x94, 0x12, 0x6e, 0x2e, + 0x5d, 0x76, 0x49, 0x6e, 0xcd, 0xb9, 0x20, 0x16, 0x87, 0xbe, 0x07, 0x0c, 0x73, 0x88, 0x4b, 0x4e, + 0x70, 0x2f, 0xb8, 0x88, 0x92, 0x16, 0xed, 0x4b, 0x03, 0x08, 0x11, 0xf6, 0x66, 0x61, 0xff, 0xb2, + 0x85, 0xc3, 0xa7, 0xcb, 0xb6, 0x67, 0xda, 0xd1, 0x62, 0x67, 0x8d, 0xa6, 0x00, 0xac, 0x02, 0x2f, + 0x6a, 0x61, 0xb1, 0xa1, 0xd2, 0x59, 0x18, 0x94, 0xaa, 0x11, 0xfb, 0xcd, 0x86, 0xfd, 0x1d, 0x0b, + 0x00, 0x53, 0x1f, 0xa5, 0xf0, 0x9c, 0x9e, 0x3e, 0x3a, 0x29, 0xec, 0x22, 0x22, 0x93, 0x5b, 0xc0, + 0x20, 0x9e, 0xfc, 0xc9, 0x0a, 0x66, 0x58, 0x21, 0x58, 0xcc, 0xff, 0x5a, 0xc4, 0xed, 0x9e, 0x3e, + 0x56, 0x2d, 0x43, 0x1f, 0xd2, 0xee, 0x93, 0x34, 0x5e, 0xeb, 0xa7, 0xe7, 0x06, 0xe8, 0x8d, 0x62, + 0x11, 0x78, 0xa4, 0x53, 0xa4, 0x4d, 0x54, 0x13, 0xbd, 0xbd, 0x69, 0x6d, 0x20, 0x66, 0xba, 0x92, + 0x7e, 0x31, 0xbe, 0xf7, 0x32, 0x0e, 0x6f, 0xe0, 0x54, 0xb4, 0xa6, 0x92, 0x32, 0xda, 0x97, 0x82, + 0x22, 0x4b, 0x7c, 0xf0, 0x23, 0xb1, 0x69, 0x92, 0xcc, 0x6b, 0xc8, 0xf7, 0x93, 0x70, 0x0d, 0x63, + 0x6e, 0xcd, 0x96, 0x8a, 0xa7, 0x75, 0x7d, 0x74, 0x29, 0x08, 0xc5, 0xc6, 0xe1, 0x5d, 0x4b, 0x3c, + 0xe6, 0xea, 0x5d, 0x44, 0xe7, 0x19, 0x2c, 0x95, 0xe0, 0x6d, 0x7f, 0xaf, 0x0b, 0x9d, 0xb1, 0x26, + 0xf8, 0x8b, 0x48, 0xe1, 0xdb, 0x47, 0xee, 0xa5, 0x23, 0x14, 0xb1, 0xfa, 0xae, 0x8e, 0xe0, 0x15, + 0x4e, 0xa5, 0x28, 0x4c, 0x2d, 0xd0, 0x0a, 0xf4, 0x34, 0xac, 0x84, 0x1a, 0xf5, 0x3a, 0x08, 0x80, + 0x50, 0xd9, 0x8e, 0x83, 0xa9, 0xa5, 0x80, 0xb0, 0xb4, 0x2d, 0x04, 0x8c, 0x59, 0x08, 0x5f, 0x4b, + 0x52, 0x48, 0x0a, 0x33, 0x0c, 0x03, 0x7c, 0x31, 0xa5, 0x25, 0x25, 0xb5, 0xfe, 0xe5, 0x8b, 0x82, + 0x87, 0x2c, 0xf1, 0x27, 0x62, 0xbe, 0x42, 0xf6, 0xd7, 0x5f, 0x78, 0x5d, 0x41, 0x5b, 0x5f, 0xe7, + 0x7d, 0x89, 0x21, 0x1b, 0xbd, 0xa8, 0xc4, 0xe0, 0x4b, 0xd2, 0x62, 0xcd, 0x9e, 0xa8, 0x28, 0x5d, + 0xe9, 0x28, 0x2e, 0x26, 0x67, 0x1d, 0xf4, 0x67, 0xc9, 0x56, 0x8d, 0xd0, 0xb1, 0x65, 0xad, 0x6d, + 0x11, 0xe5, 0xa5, 0x46, 0xf3, 0x72, 0x7c, 0x5e, 0x3f, 0x9c, 0x97, 0xe7, 0xf3, 0xb4, 0xa4, 0x38, + 0xc7, 0xfe, 0x5b, 0xae, 0xfe, 0xe1, 0x4a, 0xca, 0x20, 0xe7, 0x6b, 0xf3, 0x20, 0xea, 0x55, 0xdb, + 0x5e, 0xe4, 0x43, 0x5c, 0x8c, 0x25, 0x01, 0xb6, 0x34, 0xe1, 0x8f, 0x99, 0x9e, 0x36, 0xf4, 0x6d, + 0x3c, 0x1c, 0x16, 0x99, 0xba, 0xeb, 0x4b, 0xdd, 0xda, 0x1c, 0x0a, 0x84, 0x95, 0x18, 0x40, 0xdd, + 0xe5, 0xc4, 0x4a, 0x60, 0x5e, 0x32, 0xc2, 0xb7, 0x96, 0x47, 0xca, 0xe2, 0xe3, 0x33, 0x31, 0xb8, + 0xf4, 0x53, 0x25, 0xab, 0x63, 0xfd, 0x91, 0x3e, 0xba, 0xfe, 0xb3, 0x86, 0x7e, 0x27, 0x68, 0xd9, + 0x92, 0x4f, 0xdd, 0xe1, 0x30, 0xa1, 0x55, 0x18, 0x5e, 0x66, 0xeb, 0xc3, 0x58, 0x4d, 0xfc, 0x5f, + 0xd0, 0x0a, 0xeb, 0x3a, 0xdb, 0x1a, 0xa5, 0x2e, 0x7d, 0x32, 0x4c, 0xc9, 0xf4, 0x92, 0x1e, 0xa5, + 0xbe, 0x9b, 0xf6, 0x28, 0x8d, 0xea, 0x20, 0x73, 0x01, 0x49, 0x7c, 0x1f, 0x4e, 0xfe, 0x1c, 0x0e, + 0xa4, 0x1e, 0x4c, 0x0d, 0x8b, 0xb7, 0x13, 0x8a, 0xb2, 0xe3, 0x7e, 0xe8, 0x15, 0xef, 0xdc, 0xe2, + 0x65, 0x47, 0x22, 0xa0, 0x26, 0x78, 0x86, 0xbb, 0xa2, 0xd8, 0x55, 0x2d, 0x76, 0x10, 0x21, 0xce, + 0x97, 0x84, 0x85, 0xe4, 0x50, 0x08, 0x70, 0x22, 0x28, 0x03, 0x80, 0x1e, 0xbe, 0x70, 0xb4, 0x50, + 0x60, 0x5b, 0x74, 0x23, 0xe6, 0xd0, 0x99, 0xdd, 0xfa, 0x20, 0x3a, 0x92, 0x17, 0x31, 0xe7, 0x97, + 0x34, 0xfe, 0xa0, 0xeb, 0x67, 0x2a, 0xea, 0x30, 0x1f, 0xf7, 0x71, 0x18, 0xfd, 0x74, 0xe1, 0x99, + 0xca, 0xf7, 0x70, 0xa8, 0xfe, 0xdd, 0x0e, 0x0e, 0x50, 0x7c, 0x1b, 0x22, 0x8b, 0x19, 0xa1, 0x2b, + 0xcf, 0xe7, 0x30, 0xfd, 0x09, 0x9c, 0x3e, 0x2e, 0xa2, 0xf4, 0x31, 0x84, 0xd3, 0xc7, 0xbf, 0xdb, + 0xe3, 0xe1, 0x3f, 0x85, 0xd2, 0xc7, 0x05, 0x94, 0x86, 0x7a, 0x38, 0xfc, 0xbb, 0x3d, 0x64, 0xfc, + 0xb0, 0x1d, 0xe6, 0x27, 0xb4, 0x45, 0xc5, 0xc4, 0x3b, 0xdd, 0x34, 0x20, 0x29, 0x3c, 0xe3, 0x27, + 0x10, 0x4d, 0x2e, 0x36, 0xac, 0xd6, 0xd6, 0x36, 0x6c, 0x37, 0x6a, 0xd4, 0x1e, 0x65, 0x90, 0x42, + 0x76, 0x57, 0xd8, 0x7f, 0xa0, 0x42, 0x20, 0xbf, 0xd0, 0x88, 0xb6, 0x61, 0x42, 0xb3, 0xec, 0xec, + 0x2d, 0x9c, 0x1a, 0x6a, 0x2e, 0x9b, 0x8b, 0x8e, 0x30, 0x9b, 0xf3, 0x18, 0xce, 0x77, 0x37, 0x74, + 0x59, 0xf0, 0xa5, 0xc3, 0x3f, 0x66, 0xc0, 0x89, 0x61, 0xd8, 0xd9, 0xdc, 0x36, 0x9e, 0x87, 0xb3, + 0xfb, 0xb0, 0x6c, 0xe4, 0x97, 0x20, 0x52, 0x68, 0xf6, 0xf7, 0x0c, 0xab, 0x13, 0xad, 0x9b, 0xc5, + 0xba, 0xd9, 0x65, 0x75, 0x77, 0x14, 0x6b, 0x59, 0xc5, 0x1c, 0x56, 0xcc, 0x2d, 0xab, 0xd8, 0xb0, + 0x3a, 0xcb, 0x2a, 0xe6, 0xb1, 0x62, 0x7e, 0x59, 0xc5, 0x26, 0xbd, 0x15, 0x1e, 0xd4, 0xcd, 0xb0, + 0xec, 0x08, 0x2f, 0x3a, 0x72, 0xe7, 0x87, 0xce, 0x86, 0xad, 0x23, 0xda, 0xd4, 0xd8, 0xa9, 0x68, + 0xa1, 0x58, 0x22, 0xd8, 0xea, 0xf0, 0xef, 0xce, 0x83, 0x1d, 0x5d, 0xbb, 0x2d, 0xf5, 0xc3, 0x59, + 0xb0, 0xd5, 0x45, 0x44, 0x12, 0x05, 0x6a, 0xea, 0x1f, 0xcf, 0x42, 0x4c, 0xdd, 0x7b, 0x72, 0xaf, + 0x6a, 0xda, 0xb5, 0xd1, 0x79, 0x79, 0x34, 0x46, 0x1f, 0x60, 0xa6, 0x16, 0x35, 0xc5, 0xc1, 0x30, + 0xa8, 0x31, 0x09, 0xe0, 0x6b, 0x78, 0xf6, 0x33, 0xc4, 0x3d, 0x9c, 0xf4, 0xb7, 0xc5, 0x50, 0x1b, + 0xc8, 0x7d, 0xb7, 0x83, 0x8d, 0x7d, 0x61, 0x03, 0x74, 0xe9, 0x1e, 0x6f, 0x52, 0xd3, 0x2d, 0x04, + 0x1e, 0xd0, 0x0c, 0x15, 0xb3, 0x92, 0x59, 0xa4, 0xef, 0xad, 0x8f, 0x57, 0xb0, 0x4d, 0xb4, 0x30, + 0x66, 0x51, 0x1e, 0xe1, 0x97, 0x30, 0xa4, 0xfc, 0xbd, 0x35, 0x1c, 0x19, 0xfe, 0x82, 0x09, 0x12, + 0x1b, 0xda, 0x9b, 0xfa, 0xb3, 0xb8, 0xc4, 0xaa, 0x67, 0xbd, 0x87, 0xba, 0x4b, 0xdf, 0x03, 0x9b, + 0x1e, 0x3a, 0xb9, 0x51, 0x39, 0x11, 0x7e, 0x5d, 0xdf, 0xc7, 0x44, 0xb2, 0x16, 0x44, 0x01, 0xa6, + 0xc0, 0x6b, 0x54, 0x34, 0xc0, 0xb1, 0x40, 0xed, 0x6d, 0xdb, 0x35, 0xc5, 0xb0, 0x5f, 0x00, 0x0b, + 0x92, 0x13, 0xe0, 0xbc, 0x90, 0xc5, 0x5b, 0x60, 0x18, 0xe2, 0x11, 0x7f, 0xf2, 0xb9, 0xa2, 0x38, + 0xa7, 0x82, 0xc4, 0xaf, 0x14, 0x88, 0x4b, 0xfa, 0x36, 0xfc, 0xab, 0x7a, 0xd1, 0xd9, 0x04, 0x14, + 0xce, 0x52, 0xdf, 0x42, 0xe6, 0x42, 0xc3, 0x64, 0x94, 0xfe, 0x61, 0xdf, 0x58, 0x32, 0x6e, 0xd1, + 0xe8, 0x9a, 0xa6, 0xf4, 0xe9, 0x69, 0x2f, 0x1e, 0x6a, 0x6f, 0x7d, 0x4b, 0xfd, 0x8a, 0x22, 0xa1, + 0xef, 0x86, 0xe9, 0xf2, 0xce, 0xbb, 0xa9, 0x6a, 0xf9, 0xc7, 0xcc, 0x98, 0xd7, 0x78, 0xc3, 0x29, + 0xc6, 0xa2, 0xd3, 0xc9, 0xd4, 0x09, 0xcb, 0xc9, 0x8b, 0x4e, 0x72, 0xdf, 0xb0, 0x87, 0xdf, 0x5c, + 0x74, 0xe4, 0x36, 0xcb, 0x7f, 0xcc, 0x5a, 0xd4, 0x40, 0x98, 0xc6, 0x2f, 0x94, 0x34, 0x07, 0x8a, + 0xd5, 0x44, 0x27, 0x58, 0x4a, 0x55, 0x29, 0xb1, 0x21, 0xa6, 0x3b, 0x6e, 0x52, 0x03, 0x3d, 0x3a, + 0x93, 0x1e, 0x3a, 0x7e, 0x45, 0xc6, 0xbd, 0xd1, 0xf1, 0x82, 0xf4, 0x51, 0xb2, 0x08, 0x75, 0xd5, + 0x93, 0x0f, 0x7b, 0xc9, 0x5a, 0x58, 0x70, 0x3b, 0xb0, 0x4c, 0x3a, 0x37, 0x92, 0x1c, 0x74, 0xa7, + 0xe1, 0x05, 0x65, 0x59, 0x01, 0xc8, 0x5a, 0x0a, 0x28, 0x1b, 0x00, 0xda, 0xf9, 0x04, 0xa0, 0xfe, + 0x52, 0x40, 0xb9, 0x00, 0x50, 0xf3, 0x13, 0x80, 0xb4, 0xa5, 0x80, 0xf2, 0x01, 0xa0, 0x5d, 0x1f, + 0x10, 0xc7, 0x24, 0x84, 0x5f, 0x8b, 0x13, 0x1e, 0x63, 0x2c, 0x77, 0x09, 0x7f, 0xb9, 0xb9, 0x5c, + 0x8b, 0x37, 0x95, 0xc7, 0x41, 0x8f, 0xb5, 0x94, 0x6b, 0xb1, 0x56, 0x72, 0x2d, 0x6a, 0x21, 0x87, + 0x85, 0x10, 0xbd, 0xaa, 0x68, 0x51, 0x0f, 0xfd, 0x28, 0x9f, 0x53, 0xf5, 0x50, 0xc7, 0xe1, 0x95, + 0xf5, 0x65, 0x21, 0xdc, 0x9d, 0x47, 0x43, 0xce, 0xd4, 0x09, 0xd5, 0x70, 0x62, 0x3f, 0xc3, 0x13, + 0x7c, 0x85, 0xe7, 0x8f, 0x99, 0x48, 0x6c, 0xb3, 0x9c, 0x2b, 0x95, 0xc4, 0x7a, 0xdd, 0xa6, 0x6a, + 0xeb, 0x76, 0x3e, 0x57, 0x2d, 0x15, 0xe6, 0xbc, 0x78, 0xed, 0xae, 0x59, 0xe4, 0xa0, 0xa1, 0xb8, + 0x7a, 0xf4, 0x53, 0x3f, 0x02, 0x72, 0xa3, 0x74, 0x3a, 0x2d, 0x66, 0x5c, 0xd3, 0x90, 0x8f, 0x28, + 0xd0, 0x0c, 0x69, 0x14, 0x43, 0x07, 0x08, 0x1a, 0xdd, 0xcc, 0xa0, 0xe7, 0x4e, 0x77, 0xeb, 0x8f, + 0xd9, 0x68, 0x5b, 0x6c, 0xa1, 0x88, 0x2d, 0x3c, 0xa0, 0x97, 0x08, 0x7d, 0x3a, 0xdd, 0xdb, 0x15, + 0x99, 0x47, 0x1a, 0x57, 0x8a, 0xc7, 0x11, 0xf4, 0x77, 0x5b, 0xbc, 0x47, 0x6b, 0x11, 0xad, 0x03, + 0x3c, 0x02, 0x2a, 0x2f, 0x14, 0x60, 0x11, 0x83, 0x40, 0x9d, 0xf4, 0x0a, 0xc5, 0xc2, 0x45, 0x89, + 0xfc, 0xa2, 0xd7, 0xc3, 0x1b, 0x3f, 0x9c, 0x17, 0x1c, 0xd7, 0x45, 0x17, 0xc1, 0x1c, 0xc3, 0x0d, + 0xf3, 0xf9, 0x95, 0x31, 0x16, 0xff, 0x98, 0x25, 0x46, 0xdb, 0xc3, 0x49, 0xd5, 0xb3, 0x39, 0x27, + 0x37, 0xb2, 0x73, 0x4e, 0x59, 0xe9, 0xcc, 0x17, 0x94, 0x9e, 0x53, 0xa2, 0x07, 0xea, 0x90, 0xff, + 0x29, 0x25, 0x68, 0x8c, 0x7d, 0x4a, 0xc9, 0xe3, 0xea, 0xdc, 0x28, 0x3e, 0xe8, 0x20, 0xf9, 0xa0, + 0x83, 0xa1, 0xfe, 0xf1, 0x9d, 0xeb, 0x6e, 0x24, 0xa2, 0x38, 0xed, 0x54, 0xe5, 0xe4, 0x3f, 0xd0, + 0x65, 0x01, 0x5b, 0xf5, 0xfc, 0x96, 0x90, 0x66, 0x37, 0x14, 0x4d, 0xed, 0xeb, 0x55, 0xe4, 0xe9, + 0x96, 0x83, 0xce, 0x4a, 0xb8, 0x1d, 0x62, 0xa1, 0x71, 0x8a, 0x9a, 0x1a, 0xc5, 0x54, 0x0f, 0x93, + 0x16, 0x47, 0x4a, 0x21, 0x31, 0x5b, 0xf0, 0xc2, 0xa6, 0x6e, 0xf4, 0xa2, 0x23, 0xe7, 0xa8, 0xd8, + 0xe8, 0xad, 0x1a, 0x07, 0x67, 0x60, 0x84, 0xe5, 0x09, 0x2d, 0xb8, 0x96, 0xcc, 0x2d, 0x46, 0xa0, + 0x8f, 0x9e, 0x37, 0x25, 0x74, 0x6c, 0x01, 0x47, 0xe2, 0x21, 0x35, 0x6c, 0x7a, 0x44, 0xf7, 0x88, + 0xb6, 0x3f, 0xbf, 0x7c, 0x98, 0xc2, 0x3e, 0x98, 0xbd, 0x6f, 0x29, 0x2d, 0xf5, 0xcd, 0x7e, 0x5c, + 0x39, 0x7f, 0xdf, 0x52, 0x89, 0xe1, 0x60, 0x23, 0x8b, 0xf6, 0x45, 0x6f, 0x78, 0xdf, 0x52, 0x26, + 0xbe, 0xc5, 0x0c, 0x8e, 0x02, 0x5c, 0x32, 0x4b, 0x6e, 0xde, 0x56, 0xd0, 0xd5, 0x0f, 0x3a, 0x46, + 0x3e, 0xea, 0xd8, 0x70, 0x10, 0xea, 0x54, 0xa2, 0xbf, 0x48, 0x4f, 0x66, 0x15, 0xed, 0xe1, 0xff, + 0x7e, 0x67, 0x85, 0xe5, 0xb4, 0x04, 0xdb, 0xff, 0xd0, 0x23, 0xa2, 0x01, 0x3c, 0xf8, 0x13, 0x20, + 0x52, 0x26, 0xeb, 0xcf, 0xec, 0x01, 0x46, 0x1e, 0x83, 0x4d, 0xdb, 0x1f, 0x7f, 0x0b, 0x2f, 0x19, + 0x70, 0xef, 0xe1, 0xa9, 0x13, 0x3f, 0xb5, 0xf6, 0xfa, 0x96, 0x19, 0x8b, 0xa4, 0x2c, 0x6f, 0xcf, + 0xe0, 0xa8, 0x12, 0xca, 0xff, 0x0f, 0x70, 0x04, 0xdb, 0xec, 0xac, 0x9c, 0xba, 0x68, 0xaf, 0xa0, + 0xfc, 0x3f, 0xd2, 0xab, 0x4f, 0x18, 0xe2, 0x99, 0x49, 0x68, 0x99, 0xec, 0xea, 0x7f, 0xf0, 0xc9, + 0x8f, 0xd5, 0x4b, 0x77, 0xd9, 0xf8, 0x6f, 0xbc, 0x71, 0xf3, 0xe5, 0xd9, 0x56, 0xc3, 0x5b, 0xea, + 0x40, 0x68, 0x87, 0x75, 0x21, 0xa0, 0x48, 0xd1, 0xdf, 0xe4, 0x13, 0x74, 0x6b, 0xe8, 0x25, 0xe1, + 0x61, 0x7d, 0xbd, 0xbf, 0x61, 0x6e, 0x65, 0xd7, 0xd7, 0xbb, 0x1b, 0x9d, 0xad, 0xec, 0x76, 0x9b, + 0x12, 0x4e, 0x82, 0xa4, 0x1b, 0xa3, 0xae, 0x6a, 0x5c, 0x13, 0x76, 0xdf, 0x62, 0x7d, 0x3d, 0x92, + 0x40, 0xcd, 0x6d, 0x62, 0xf5, 0x08, 0x37, 0xf2, 0x15, 0x26, 0x81, 0x50, 0x07, 0xda, 0xce, 0x50, + 0x74, 0xdb, 0xa6, 0x41, 0x7d, 0x4d, 0x83, 0x9e, 0x38, 0x30, 0xab, 0x81, 0x1b, 0xc2, 0x0c, 0xdb, + 0x06, 0xee, 0xb9, 0x5a, 0x03, 0xa1, 0x0b, 0xc4, 0x31, 0x23, 0xba, 0xdd, 0x8d, 0xe9, 0xaf, 0xaa, + 0x6f, 0x28, 0x7e, 0x3b, 0x66, 0x48, 0x03, 0x81, 0xd5, 0xb0, 0x85, 0xa7, 0x36, 0x1f, 0x43, 0x8e, + 0xb3, 0xf8, 0x84, 0x20, 0x47, 0x6c, 0x3e, 0x14, 0x32, 0xf2, 0xc1, 0xdf, 0xd7, 0x70, 0xba, 0x18, + 0x88, 0x14, 0x45, 0xf8, 0xe5, 0xd4, 0xe3, 0xf6, 0xcc, 0x62, 0x22, 0x97, 0xff, 0x75, 0x5b, 0x13, + 0x74, 0x52, 0x37, 0x0e, 0x1a, 0x5e, 0xd0, 0xe1, 0x4e, 0x7b, 0xcc, 0x4f, 0x11, 0x59, 0xe8, 0x2b, + 0x88, 0x81, 0xdf, 0xcf, 0x67, 0xba, 0xd2, 0x0d, 0x75, 0x65, 0x97, 0x3a, 0xd9, 0x70, 0x1d, 0xe8, + 0xf2, 0xca, 0xe0, 0xd6, 0x6f, 0x7e, 0xd6, 0x2c, 0xa4, 0x0f, 0x2f, 0xca, 0x8e, 0x40, 0x72, 0x16, + 0xb2, 0x35, 0xe6, 0xf3, 0x39, 0xf7, 0xec, 0xde, 0x8b, 0x4e, 0x13, 0xae, 0x89, 0x9d, 0xb7, 0xa0, + 0x6f, 0xd5, 0xd9, 0x99, 0x77, 0x2d, 0xb8, 0xbd, 0xa5, 0xb9, 0x07, 0xb1, 0xa0, 0x56, 0xe2, 0xf5, + 0xd3, 0xa4, 0xe7, 0x29, 0xea, 0xbd, 0x7b, 0xc1, 0xba, 0xd1, 0x67, 0xd9, 0xb7, 0xfc, 0x2b, 0x75, + 0xb9, 0xa6, 0x7c, 0xaf, 0xe3, 0x20, 0x6b, 0x4a, 0x2a, 0x95, 0x0c, 0x8c, 0xef, 0x0a, 0x02, 0x08, + 0x18, 0x88, 0xe2, 0xdf, 0x18, 0xa2, 0xa6, 0x5e, 0xea, 0x93, 0x4f, 0xd7, 0x82, 0x82, 0xb6, 0xe3, + 0x5f, 0x49, 0xbf, 0xf1, 0xbe, 0x85, 0x75, 0x97, 0x9c, 0x14, 0x7f, 0xe1, 0xeb, 0x41, 0xc7, 0x7e, + 0xf9, 0xbd, 0x82, 0x95, 0xfb, 0xb9, 0xce, 0x67, 0x93, 0xec, 0xca, 0xb6, 0x7b, 0x00, 0xf1, 0x3d, + 0x17, 0x14, 0xed, 0x77, 0x41, 0x2d, 0x85, 0x91, 0xac, 0x3c, 0xa7, 0x46, 0xe4, 0xcb, 0x4b, 0x0f, + 0xa9, 0xa5, 0x2f, 0xd4, 0x64, 0xfc, 0x45, 0x63, 0x97, 0x36, 0xc3, 0x5b, 0xa0, 0x77, 0xc4, 0x11, + 0x0c, 0x02, 0x5b, 0x9b, 0xdb, 0xde, 0x2d, 0x88, 0x24, 0xec, 0x91, 0xa9, 0x65, 0xa5, 0x88, 0x5f, + 0xea, 0xbb, 0x27, 0xc2, 0xf9, 0x63, 0x46, 0x9c, 0x45, 0x3b, 0x1e, 0x77, 0x12, 0xef, 0xc7, 0x28, + 0x8f, 0x7a, 0x2f, 0x78, 0xd8, 0x00, 0x9e, 0x17, 0x8e, 0xd3, 0x22, 0x85, 0x2f, 0x5a, 0xa2, 0x47, + 0x82, 0x69, 0x27, 0x51, 0xf5, 0xc7, 0x07, 0xdf, 0x99, 0xdd, 0xbb, 0x50, 0xfc, 0xed, 0x94, 0x06, + 0x0e, 0xaf, 0xb2, 0x98, 0xe2, 0x31, 0x26, 0x29, 0xbb, 0xcf, 0xb3, 0x93, 0xc8, 0x61, 0x2c, 0x8b, + 0x3a, 0xfe, 0x1f, 0xdf, 0xaa, 0x3e, 0x0e, 0xb8, 0x8f, 0x72, 0xc7, 0xd8, 0xa9, 0x02, 0xf3, 0xd2, + 0xd6, 0xad, 0x0b, 0xb3, 0xeb, 0x5b, 0x95, 0xbe, 0xd5, 0xfc, 0x53, 0x76, 0xea, 0x8e, 0x28, 0xb0, + 0x2e, 0xd3, 0xf3, 0x27, 0xea, 0x4c, 0x18, 0x86, 0xf5, 0xc7, 0xcc, 0x49, 0xab, 0xdd, 0x39, 0xfa, + 0x71, 0xc9, 0xf5, 0x3a, 0x3e, 0x6f, 0x8b, 0xae, 0xc9, 0x41, 0xac, 0x3a, 0x69, 0xbc, 0x08, 0x01, + 0xaa, 0x90, 0x1b, 0x17, 0x3d, 0x85, 0xf9, 0x29, 0x91, 0xb9, 0x29, 0xcf, 0xfd, 0x26, 0x7f, 0xd5, + 0x08, 0xf5, 0xc1, 0x0e, 0x99, 0xb3, 0x5c, 0x67, 0x6c, 0xb7, 0x66, 0xc8, 0xdd, 0x2f, 0x92, 0xb3, + 0x6c, 0xee, 0x38, 0xcf, 0xc2, 0x98, 0xb2, 0x1c, 0xf5, 0x2d, 0x1e, 0xe2, 0xf9, 0x2e, 0xb1, 0xae, + 0xcf, 0x26, 0x75, 0xa1, 0x95, 0xe8, 0x51, 0x1e, 0xf1, 0x5c, 0x4b, 0xfd, 0x03, 0x47, 0xbc, 0x26, + 0xe0, 0x7c, 0x27, 0xee, 0xa4, 0xd6, 0x1c, 0x58, 0xce, 0xe4, 0x87, 0xf3, 0xb3, 0x3e, 0x53, 0xbb, + 0x55, 0x7c, 0x40, 0xef, 0x03, 0x54, 0xfa, 0xd8, 0x4b, 0xf6, 0xe7, 0x1c, 0x61, 0xf0, 0xfe, 0x9d, + 0xd4, 0x3b, 0x89, 0xde, 0x26, 0xd7, 0x08, 0xc6, 0x8d, 0x52, 0x2c, 0x92, 0x70, 0x68, 0x62, 0x12, + 0x5d, 0x0d, 0x3c, 0xdf, 0x55, 0x84, 0x27, 0x33, 0x48, 0x62, 0x0b, 0x2f, 0xdf, 0x8a, 0xf3, 0xa0, + 0x13, 0xf4, 0x4a, 0x24, 0xf1, 0xe8, 0x09, 0xef, 0xd5, 0x4b, 0x3a, 0xfc, 0xd0, 0x5b, 0xd9, 0xa2, + 0x20, 0xa2, 0xc3, 0x86, 0xc8, 0x42, 0x2e, 0xd0, 0xc6, 0x54, 0xbd, 0x4b, 0xa6, 0x17, 0xbd, 0x84, + 0x78, 0xdd, 0xba, 0xdb, 0x15, 0x93, 0xdf, 0x65, 0xea, 0x7e, 0x18, 0x26, 0x5a, 0xe6, 0x18, 0x8b, + 0xce, 0xe6, 0xcc, 0x87, 0xd6, 0x25, 0x5a, 0x6c, 0x04, 0x03, 0x2b, 0xb0, 0x54, 0xbc, 0x6f, 0xc2, + 0x32, 0xb6, 0xc5, 0x5a, 0xed, 0x4b, 0x2d, 0x0b, 0x12, 0x81, 0x97, 0x51, 0x63, 0xd8, 0x41, 0x77, + 0x07, 0x6d, 0xfb, 0xc7, 0xcf, 0xaa, 0xe6, 0xdd, 0x27, 0xaf, 0xd1, 0xb8, 0x10, 0x8e, 0x5b, 0xf1, + 0x7b, 0xfe, 0xaf, 0xbf, 0xa8, 0x4b, 0x04, 0xf5, 0x36, 0x85, 0x72, 0xf8, 0xeb, 0x15, 0x95, 0xe8, + 0xd5, 0xc5, 0x98, 0xeb, 0xe3, 0x34, 0x7c, 0x96, 0x17, 0xc4, 0x8c, 0xde, 0x1b, 0x77, 0xaf, 0x43, + 0x04, 0xdf, 0xd5, 0xf3, 0x4e, 0x36, 0xfd, 0x86, 0x0a, 0x7e, 0x43, 0xf9, 0x9f, 0xdb, 0x20, 0x62, + 0x56, 0xf1, 0xa1, 0x26, 0xd3, 0x6b, 0x59, 0x09, 0x74, 0x34, 0x49, 0x4a, 0x0a, 0xd7, 0x56, 0x42, + 0x01, 0x3c, 0x75, 0xb4, 0x11, 0xc6, 0x86, 0x05, 0xd1, 0x2f, 0x68, 0x80, 0x7d, 0x0f, 0x0f, 0x0b, + 0x07, 0xf9, 0x59, 0x3e, 0x9f, 0x7e, 0x8e, 0x2e, 0x9c, 0x9f, 0xe3, 0xf2, 0xd9, 0xd7, 0xe0, 0xc2, + 0xf9, 0x63, 0x3e, 0x9f, 0x7e, 0x8b, 0x2d, 0x9c, 0xdf, 0x0b, 0xe7, 0x17, 0x6b, 0xe8, 0xda, 0xe3, + 0xa4, 0xea, 0x7d, 0xbc, 0x65, 0x8b, 0x9b, 0x05, 0x10, 0x35, 0xfa, 0xe1, 0x1d, 0x3a, 0x43, 0x2d, + 0x81, 0xdf, 0xe4, 0x94, 0x88, 0xa4, 0x4b, 0x28, 0x79, 0xec, 0x3f, 0x00, 0x16, 0xa9, 0x93, 0x00, + 0xdb, 0xeb, 0xbc, 0xef, 0x5d, 0xf2, 0x5b, 0x5d, 0x8c, 0x07, 0xad, 0xef, 0xf9, 0xce, 0x9c, 0xe4, + 0x7d, 0x8f, 0x6a, 0xf7, 0x2d, 0xe4, 0xa0, 0x9c, 0xfd, 0x19, 0x25, 0x5f, 0xea, 0xc1, 0xea, 0x96, + 0xf5, 0x08, 0xf8, 0x87, 0x2c, 0xf9, 0xbc, 0xe1, 0xa7, 0x17, 0x92, 0x0b, 0xc8, 0xd2, 0x5f, 0x48, + 0x48, 0xc3, 0xb4, 0x0a, 0x72, 0x9a, 0xf8, 0x81, 0xb9, 0xfe, 0xff, 0xa2, 0x84, 0x6e, 0xc7, 0x12, + 0x36, 0x43, 0xc7, 0x78, 0xe9, 0x25, 0xff, 0x8a, 0x7e, 0x4d, 0xd2, 0xa4, 0xe7, 0x83, 0xae, 0xf6, + 0xf3, 0xc7, 0x0c, 0xa0, 0x42, 0xd9, 0x4b, 0x48, 0x6c, 0xda, 0x76, 0x82, 0x7a, 0x55, 0xfb, 0xee, + 0x94, 0xbf, 0xe8, 0x0e, 0xc7, 0x5c, 0x28, 0xbd, 0xcf, 0xfe, 0x86, 0xf8, 0xce, 0x17, 0x2f, 0x5a, + 0x9f, 0x77, 0x92, 0x0f, 0x53, 0xe2, 0x3b, 0xb0, 0xe1, 0x57, 0x5b, 0xa9, 0x31, 0x25, 0xe9, 0x7b, + 0x22, 0x00, 0x63, 0x20, 0xdf, 0x17, 0x0b, 0x00, 0xbb, 0x4b, 0x79, 0xbe, 0x06, 0x0b, 0x91, 0x31, + 0xa0, 0x23, 0xbe, 0x9f, 0xb3, 0xdf, 0x09, 0x3e, 0xa0, 0x05, 0xde, 0x38, 0x4d, 0x1b, 0x23, 0xc7, + 0xed, 0xd5, 0x07, 0x68, 0x02, 0x4d, 0x65, 0x83, 0x48, 0xe2, 0x7f, 0x09, 0xee, 0x97, 0x71, 0xc4, + 0x14, 0xf2, 0x83, 0xff, 0x12, 0xff, 0x1d, 0xac, 0x51, 0x98, 0x3c, 0xda, 0x38, 0x37, 0x08, 0x8b, + 0x74, 0x2d, 0x65, 0xe2, 0x16, 0xf6, 0x03, 0x66, 0xc4, 0x5c, 0x3f, 0x17, 0xbf, 0xba, 0xc3, 0x13, + 0xd2, 0xd4, 0x03, 0x39, 0x59, 0xe3, 0x9d, 0xe0, 0x05, 0x12, 0x38, 0x64, 0x10, 0x58, 0xc0, 0xa1, + 0xea, 0x09, 0x31, 0xed, 0xf7, 0x31, 0x89, 0x01, 0xdc, 0xbc, 0xb0, 0x71, 0xf5, 0xc8, 0xec, 0xfa, + 0x01, 0xfa, 0xd4, 0x6e, 0x32, 0x1c, 0x06, 0x84, 0x2f, 0xc6, 0x7c, 0xc4, 0xf9, 0xc0, 0xb8, 0xc1, + 0x2d, 0xdb, 0x20, 0x0d, 0xf9, 0x19, 0x7a, 0x68, 0x3b, 0xde, 0x8d, 0x40, 0x57, 0x06, 0xa8, 0x0a, + 0x74, 0xc3, 0xaf, 0x65, 0xeb, 0x3e, 0x9f, 0x41, 0xbf, 0x4a, 0x20, 0xcc, 0x3a, 0x25, 0xd1, 0x30, + 0x4f, 0xa5, 0xeb, 0xc2, 0xcd, 0x47, 0x67, 0x5a, 0x40, 0x65, 0xd2, 0xbb, 0xae, 0xed, 0xba, 0x87, + 0x07, 0x94, 0xe3, 0xc1, 0x63, 0xf4, 0xc2, 0xb6, 0x64, 0xad, 0xee, 0x78, 0x9c, 0x55, 0x91, 0x54, + 0xc9, 0x90, 0x2c, 0x10, 0xcd, 0x6a, 0x0b, 0xbc, 0x5b, 0x4b, 0x26, 0xad, 0x3a, 0xe7, 0x96, 0x83, + 0x3e, 0xe3, 0x19, 0x68, 0xec, 0x4f, 0x0c, 0x40, 0x20, 0x31, 0xbf, 0x71, 0x49, 0xad, 0x63, 0xc0, + 0x1b, 0xc9, 0xa8, 0x63, 0x34, 0x1b, 0x1a, 0x28, 0x44, 0xc0, 0x48, 0x26, 0x16, 0xf2, 0xeb, 0xa4, + 0x82, 0x7d, 0x73, 0x5d, 0xf3, 0x14, 0xbd, 0x6b, 0x0c, 0x13, 0xe8, 0x15, 0xb2, 0x98, 0x66, 0x2c, + 0xa6, 0x05, 0x31, 0x47, 0x08, 0x6d, 0x68, 0x23, 0xeb, 0x3a, 0x10, 0xb2, 0x9b, 0xec, 0x36, 0x93, + 0x2b, 0x81, 0x96, 0x2d, 0xa2, 0xd7, 0x14, 0xce, 0x85, 0x05, 0x37, 0x13, 0x6f, 0xca, 0x2c, 0x6c, + 0x2e, 0x3e, 0xab, 0x8f, 0xad, 0xc6, 0x67, 0xb5, 0x93, 0xf3, 0x2f, 0x30, 0x13, 0x75, 0x0b, 0x70, + 0x1c, 0x42, 0x00, 0xc9, 0x78, 0xd8, 0xa4, 0x28, 0xc0, 0x9b, 0xec, 0xd4, 0x2b, 0xde, 0x0d, 0x45, + 0xa8, 0x60, 0x14, 0x42, 0x15, 0xff, 0x18, 0xf3, 0x24, 0xc6, 0x43, 0x9c, 0xff, 0x0b, 0xc8, 0xda, + 0xbd, 0x33, 0x1c, 0xb8, 0xd8, 0x55, 0x85, 0x68, 0x08, 0x45, 0x8c, 0x7c, 0x8d, 0xc6, 0x2c, 0x09, + 0xc3, 0xed, 0x3c, 0x1b, 0x2a, 0x8d, 0xf3, 0x50, 0xfb, 0x15, 0x26, 0xb6, 0xc5, 0x05, 0x4a, 0xef, + 0x25, 0x03, 0x7f, 0xc6, 0x6d, 0x59, 0x52, 0x42, 0x17, 0x94, 0x23, 0x2b, 0x91, 0xc9, 0x55, 0x78, + 0x24, 0x48, 0xe3, 0x9b, 0xbb, 0x46, 0x3c, 0x7a, 0x18, 0x87, 0xaa, 0x14, 0x5e, 0x4f, 0xc6, 0xd3, + 0x32, 0xce, 0xa7, 0x90, 0xe6, 0x81, 0x68, 0x85, 0x26, 0x25, 0x05, 0x4d, 0x47, 0xdf, 0xe6, 0x86, + 0xde, 0x64, 0x7a, 0xd5, 0x1f, 0x33, 0x7d, 0x4e, 0x23, 0x2f, 0x26, 0xfd, 0xc3, 0x3b, 0x57, 0x05, + 0x73, 0x53, 0x85, 0x95, 0x5f, 0xed, 0x8d, 0x3f, 0x59, 0x8a, 0x1c, 0xf6, 0xd1, 0xaa, 0x9c, 0x79, + 0x04, 0x3b, 0x88, 0x42, 0x07, 0x3e, 0x93, 0xb9, 0x18, 0x3e, 0xc4, 0xa3, 0x85, 0xc3, 0x2a, 0xee, + 0xb2, 0xcf, 0x01, 0x87, 0xea, 0x05, 0x1f, 0x03, 0x66, 0x97, 0xb3, 0x43, 0x67, 0x1c, 0xee, 0x49, + 0x3e, 0xa8, 0xdb, 0xbe, 0x96, 0xe7, 0x4f, 0x47, 0x1b, 0x3b, 0x89, 0x6b, 0xde, 0xf5, 0x48, 0x22, + 0xae, 0x37, 0x52, 0xae, 0xca, 0x9c, 0x8b, 0x72, 0x55, 0x77, 0x7d, 0xef, 0xb5, 0x2e, 0xf3, 0x39, + 0xd1, 0x73, 0x39, 0x62, 0x3f, 0xf9, 0x50, 0xe6, 0x46, 0xcb, 0xcb, 0x2f, 0xb8, 0xf9, 0x85, 0x48, + 0x7e, 0xde, 0xcd, 0x2f, 0xba, 0xf9, 0xc5, 0x70, 0x7e, 0xd3, 0xcb, 0xcf, 0xb2, 0xfc, 0x32, 0xdf, + 0x38, 0x3d, 0x65, 0x70, 0x49, 0x50, 0xdc, 0xe6, 0x47, 0xa0, 0x87, 0x2e, 0x05, 0x8b, 0x18, 0x11, + 0x88, 0xde, 0xea, 0xc3, 0xf4, 0x6d, 0x90, 0xed, 0xcc, 0x2a, 0x7b, 0x5e, 0xdc, 0xd4, 0x59, 0x9c, + 0x7b, 0x1a, 0x0a, 0x97, 0xf1, 0x1c, 0xa0, 0x3e, 0x1d, 0xff, 0x80, 0x44, 0x87, 0x4c, 0x04, 0xa4, + 0x4e, 0x2c, 0x91, 0xf4, 0xd5, 0x54, 0x74, 0x50, 0x73, 0x13, 0x7f, 0x43, 0x66, 0xf5, 0xc0, 0x24, + 0x01, 0xa4, 0xc2, 0x12, 0x5d, 0x76, 0xb0, 0xe2, 0x60, 0x08, 0xcf, 0xbf, 0x73, 0xe5, 0x75, 0x85, + 0x06, 0x7e, 0xa2, 0x87, 0x0e, 0x78, 0xf8, 0xc2, 0x9f, 0x10, 0x59, 0x43, 0xe7, 0xa6, 0xaf, 0x25, + 0xbe, 0xc1, 0x72, 0x85, 0x41, 0xce, 0xbf, 0xd1, 0x6f, 0x61, 0x25, 0x6b, 0x62, 0xd8, 0xff, 0x8a, + 0x5e, 0xb5, 0xf5, 0x1c, 0x0d, 0x7f, 0xc5, 0x5d, 0x10, 0xf5, 0xaf, 0x37, 0x51, 0x30, 0xa1, 0x8f, + 0x52, 0xbb, 0x1f, 0x91, 0x77, 0xaf, 0x77, 0x7f, 0xa3, 0x71, 0xcf, 0x33, 0x19, 0xaf, 0x41, 0xea, + 0xce, 0xca, 0x91, 0x67, 0xdb, 0xa3, 0x40, 0x36, 0x25, 0x4a, 0xd2, 0xbd, 0x10, 0x83, 0xe5, 0xc7, + 0x6a, 0xf7, 0x7b, 0x2e, 0x2f, 0x6f, 0x66, 0xf3, 0x32, 0x0e, 0x86, 0x70, 0xf7, 0xa2, 0xa4, 0x5f, + 0x50, 0x83, 0x92, 0x61, 0x36, 0xb7, 0xe9, 0x0e, 0x18, 0xaa, 0xa2, 0x7f, 0x82, 0xca, 0xf4, 0x28, + 0x5a, 0x7d, 0x5b, 0x3c, 0xcf, 0x34, 0xc4, 0x2a, 0x7d, 0x9e, 0xd3, 0x91, 0x81, 0x40, 0x95, 0x4a, + 0xcd, 0x09, 0xfa, 0xca, 0x7f, 0x97, 0xb7, 0x6d, 0x90, 0x05, 0x43, 0xdf, 0xd8, 0xc0, 0x4b, 0xb6, + 0xb0, 0x2b, 0xa1, 0x25, 0xaf, 0x9b, 0x16, 0xab, 0x32, 0x75, 0xcc, 0x4b, 0x60, 0xb1, 0x73, 0x43, + 0x30, 0xf0, 0x36, 0x70, 0xf0, 0xa1, 0x05, 0xa1, 0x87, 0xfc, 0x2c, 0x8d, 0x82, 0x38, 0x2a, 0x75, + 0xbe, 0x93, 0xb2, 0xc0, 0x39, 0x69, 0x36, 0x99, 0x7f, 0xa9, 0x5f, 0xa9, 0x8a, 0xae, 0x9a, 0x74, + 0x36, 0xe7, 0xac, 0xa4, 0xce, 0xae, 0xdd, 0x44, 0x1c, 0x33, 0xf5, 0x90, 0xd4, 0x64, 0x87, 0xaf, + 0x05, 0xba, 0x5f, 0x5a, 0x88, 0xbd, 0x0f, 0xc8, 0xbe, 0x4b, 0xf1, 0xa9, 0xeb, 0x80, 0xfe, 0xbd, + 0xf3, 0x91, 0xd6, 0xa5, 0xf1, 0xf4, 0x11, 0xb6, 0x80, 0xc0, 0x05, 0x94, 0x29, 0x58, 0x08, 0x90, + 0xd8, 0x7b, 0x82, 0x71, 0x5f, 0xd8, 0x91, 0xc2, 0xeb, 0xc3, 0x93, 0xd8, 0x24, 0xf2, 0xc1, 0x95, + 0xc8, 0x85, 0x18, 0x36, 0xd4, 0x46, 0xc3, 0xe4, 0x09, 0x16, 0x02, 0x8a, 0xb8, 0xd2, 0x42, 0x2d, + 0x88, 0xc0, 0x85, 0x28, 0xc5, 0x76, 0x3e, 0xeb, 0x99, 0x8a, 0x97, 0xce, 0x70, 0x69, 0x82, 0xee, + 0xb3, 0x34, 0xbe, 0xb0, 0x43, 0xfd, 0x5c, 0xbd, 0x88, 0x33, 0x77, 0xc8, 0x79, 0x69, 0x8c, 0xd8, + 0xbe, 0x98, 0xf4, 0x56, 0x3a, 0x49, 0x0f, 0x14, 0xbb, 0xe1, 0x38, 0x96, 0x0a, 0x64, 0x08, 0xb9, + 0x43, 0x65, 0x2a, 0x26, 0x81, 0x5b, 0x28, 0x5e, 0x12, 0xbd, 0xc0, 0xc1, 0x8c, 0x06, 0x55, 0xd8, + 0xd2, 0xbd, 0x00, 0x22, 0xbc, 0x5b, 0x2f, 0xcd, 0xcc, 0xc0, 0x92, 0xd3, 0xbf, 0xd3, 0xb8, 0x15, + 0xb0, 0xd0, 0x72, 0x4c, 0x7a, 0xd1, 0xea, 0x0b, 0xc1, 0x85, 0x2b, 0x2c, 0xb6, 0x30, 0x3b, 0xad, + 0x6e, 0xf7, 0x93, 0x94, 0x5e, 0xfe, 0xe5, 0x25, 0x74, 0x36, 0x4a, 0x6e, 0x4a, 0xf2, 0x57, 0x6d, + 0x59, 0x1c, 0x3b, 0x6d, 0xce, 0x6c, 0x65, 0x21, 0xb4, 0x2d, 0xc3, 0xa0, 0x1f, 0x78, 0x8e, 0x7d, + 0x38, 0x92, 0x21, 0x4e, 0x71, 0xb5, 0x38, 0x5f, 0x86, 0xf7, 0xac, 0x22, 0x41, 0x9c, 0x56, 0x2e, + 0x28, 0x11, 0x8d, 0xb3, 0x9a, 0x66, 0x5f, 0x56, 0xf9, 0xbb, 0x4d, 0xc6, 0x45, 0x08, 0xe2, 0xbe, + 0x6c, 0xe9, 0xc6, 0xbe, 0x89, 0x10, 0x0e, 0x5a, 0xfa, 0xb8, 0xe0, 0x7a, 0xcc, 0x7c, 0x45, 0xd0, + 0xc2, 0xe5, 0xd1, 0x4f, 0x24, 0xec, 0x4b, 0xa4, 0x94, 0x3b, 0x2a, 0x50, 0xaa, 0x63, 0x4b, 0x04, + 0x36, 0xb0, 0xc5, 0xc3, 0x38, 0xa7, 0x4a, 0x83, 0xc5, 0xd8, 0x1b, 0x9e, 0xb9, 0x33, 0x04, 0xfa, + 0xf1, 0x17, 0x4a, 0x8b, 0x21, 0x58, 0x98, 0xa4, 0xd6, 0x23, 0x1d, 0x00, 0x81, 0x2c, 0xd2, 0x20, + 0x08, 0xa6, 0x7c, 0x8a, 0xd1, 0x83, 0xa4, 0x0e, 0x93, 0x00, 0x87, 0x2f, 0xad, 0xc7, 0x43, 0x58, + 0xe7, 0xdd, 0xe0, 0x75, 0x97, 0x05, 0x84, 0x54, 0xed, 0x33, 0xdc, 0x33, 0x9c, 0xad, 0x3a, 0x75, + 0x1d, 0x4d, 0x22, 0xff, 0xd2, 0xdc, 0xdb, 0xf6, 0xb2, 0xa4, 0xa5, 0xd9, 0xa7, 0x1f, 0xe0, 0x57, + 0xd5, 0x31, 0xb4, 0x34, 0x9b, 0x5d, 0x96, 0x9d, 0x05, 0x6d, 0x19, 0xb3, 0xe9, 0x2f, 0xcb, 0x56, + 0xe9, 0x03, 0x73, 0x42, 0x55, 0x69, 0xa6, 0x67, 0x01, 0xdc, 0xc8, 0x4a, 0x46, 0x90, 0x99, 0xa2, + 0x6f, 0x5c, 0xb6, 0xd4, 0x59, 0x5f, 0xef, 0x2c, 0x31, 0x66, 0x76, 0xd7, 0xd7, 0xbb, 0x4b, 0xb2, + 0x40, 0xe8, 0xb4, 0x96, 0x5a, 0xa3, 0x98, 0x50, 0x1c, 0x01, 0x1c, 0x31, 0x36, 0x46, 0x60, 0x47, + 0x72, 0x23, 0xe0, 0xb9, 0x96, 0xe9, 0xcc, 0x71, 0xd2, 0xb2, 0xe6, 0xd1, 0x03, 0x27, 0x26, 0x2b, + 0x4b, 0x29, 0x40, 0x05, 0x0a, 0xa8, 0xe9, 0x7f, 0xd6, 0x8d, 0x0d, 0x95, 0x02, 0x32, 0x43, 0x13, + 0x87, 0x27, 0x2e, 0x4c, 0x31, 0x06, 0x12, 0xc1, 0x23, 0x1e, 0x28, 0x86, 0x86, 0x4b, 0x73, 0x7d, + 0xdd, 0x5c, 0x3e, 0x58, 0x2e, 0x0a, 0xa8, 0x6f, 0x6e, 0x08, 0xeb, 0x70, 0xbf, 0xa8, 0x0e, 0xf7, + 0x83, 0x13, 0x64, 0x83, 0x2f, 0x7a, 0xcc, 0xc5, 0x9f, 0xac, 0x49, 0x87, 0xc9, 0x0d, 0xf6, 0x12, + 0x0d, 0x90, 0x6e, 0xbf, 0xee, 0x66, 0x73, 0x43, 0xa6, 0x8e, 0xa4, 0x87, 0xba, 0x4e, 0xfd, 0x33, + 0x01, 0x90, 0x4e, 0xa3, 0x73, 0xfa, 0x26, 0xaf, 0xff, 0xef, 0x7f, 0xff, 0xdf, 0x68, 0xf1, 0xda, + 0xd6, 0x97, 0x76, 0xbf, 0xaa, 0x2f, 0xbb, 0x4b, 0xc5, 0x6c, 0x8a, 0x26, 0xde, 0x27, 0x5e, 0x61, + 0xec, 0xf6, 0x3a, 0xe0, 0x98, 0xbf, 0x42, 0x16, 0x74, 0xca, 0xce, 0x4c, 0x90, 0xb5, 0xd9, 0xa5, + 0xe2, 0x24, 0xb5, 0xc8, 0xe9, 0x5b, 0xd9, 0x6d, 0xb3, 0x8e, 0x61, 0x93, 0x40, 0x8e, 0xb3, 0xc5, + 0x2a, 0x3a, 0x01, 0x22, 0xfc, 0xba, 0x98, 0xa5, 0xfe, 0x18, 0xb0, 0x3a, 0x61, 0x2b, 0xf9, 0x12, + 0x1a, 0x59, 0xdf, 0x02, 0xc8, 0x8c, 0xb3, 0xf7, 0xe3, 0x97, 0x3c, 0x2d, 0xe1, 0x91, 0xc1, 0x68, + 0x09, 0xe3, 0x30, 0x3b, 0x7e, 0x19, 0xb4, 0x82, 0xe1, 0x9d, 0x80, 0x7e, 0xdd, 0xbd, 0xee, 0xd5, + 0x63, 0xec, 0xbf, 0x43, 0x60, 0x47, 0xd3, 0x33, 0x89, 0x7e, 0x6a, 0x04, 0x8a, 0xaa, 0xfb, 0x8d, + 0x80, 0x1e, 0x3d, 0x27, 0xd8, 0xca, 0xfe, 0xf5, 0xd7, 0x68, 0x4b, 0xc6, 0x67, 0x13, 0x64, 0x08, + 0x01, 0x34, 0x88, 0xde, 0x5c, 0x18, 0xab, 0x96, 0x33, 0x52, 0xb4, 0x24, 0xa8, 0x4f, 0xd4, 0xa4, + 0xef, 0xad, 0x65, 0x56, 0x4a, 0x14, 0x7e, 0xe0, 0xd5, 0x50, 0xf3, 0x67, 0x04, 0x53, 0x40, 0x87, + 0xa1, 0x00, 0x43, 0x66, 0x94, 0x43, 0xe2, 0xe5, 0x50, 0x26, 0x43, 0xd6, 0x88, 0x17, 0x19, 0x0e, + 0xaf, 0x91, 0x8a, 0xc9, 0xb0, 0xf9, 0x88, 0x24, 0x63, 0xc3, 0x6e, 0x79, 0xae, 0x8e, 0x49, 0xae, + 0x36, 0xde, 0x7d, 0xff, 0xdd, 0xda, 0x30, 0x5f, 0xa1, 0xcf, 0xca, 0xe0, 0xe5, 0xfd, 0x70, 0x78, + 0xa6, 0x50, 0xf6, 0xdc, 0xf8, 0x45, 0x03, 0x51, 0x3a, 0x51, 0x62, 0x09, 0x40, 0x4a, 0x89, 0x65, + 0x75, 0x5f, 0xb5, 0xf6, 0x2f, 0x1a, 0x28, 0x72, 0x79, 0xe5, 0x79, 0x14, 0x4d, 0x18, 0x96, 0x60, + 0xc6, 0x5d, 0xba, 0xbc, 0x34, 0x26, 0xc4, 0xf2, 0xec, 0xde, 0xb8, 0x57, 0xd5, 0xf1, 0x1b, 0x3e, + 0xdb, 0x5e, 0x04, 0x3c, 0x8c, 0xc8, 0xc5, 0x5f, 0xd1, 0xd4, 0x42, 0x45, 0x75, 0xad, 0xb1, 0xac, + 0x64, 0xeb, 0x4d, 0xef, 0x84, 0xca, 0x7a, 0x9f, 0xfb, 0x09, 0x55, 0x60, 0x7d, 0x6a, 0xf9, 0xeb, + 0xda, 0x8f, 0x9e, 0xd0, 0x0a, 0xbe, 0xd7, 0x83, 0x06, 0x96, 0x04, 0xf7, 0xfd, 0x9e, 0xc5, 0xf3, + 0x2e, 0x77, 0xff, 0xdc, 0xb1, 0x54, 0x3c, 0x28, 0x5a, 0x92, 0xdb, 0x32, 0x09, 0x22, 0x64, 0x69, + 0xfe, 0x91, 0xf7, 0xc9, 0xfa, 0x15, 0x65, 0x9a, 0xd9, 0x55, 0x99, 0xb9, 0x55, 0x99, 0x79, 0xcc, + 0xf4, 0x3e, 0x81, 0x90, 0x58, 0x52, 0xea, 0x7a, 0x05, 0x84, 0x83, 0x15, 0x79, 0x3b, 0x34, 0x1e, + 0x41, 0xf0, 0x5d, 0x85, 0x25, 0xc5, 0xee, 0xc5, 0x24, 0xff, 0x9d, 0x03, 0x2e, 0xbc, 0x3c, 0x33, + 0x27, 0x4e, 0xf0, 0x1e, 0xca, 0xc2, 0x11, 0x96, 0x07, 0x36, 0x7a, 0x80, 0xc5, 0xaa, 0xb4, 0x15, + 0x2d, 0xae, 0x46, 0xb3, 0x79, 0x13, 0x5b, 0x7e, 0x40, 0xa6, 0x93, 0x85, 0xf2, 0x04, 0x43, 0xf7, + 0xc7, 0x16, 0x67, 0x5f, 0x13, 0x8a, 0x6b, 0x80, 0xe2, 0x11, 0x04, 0x2f, 0x5a, 0x20, 0xbe, 0xa9, + 0x65, 0xa3, 0x61, 0x5f, 0xa1, 0x58, 0x59, 0xd7, 0xfe, 0x37, 0xea, 0x8e, 0x57, 0xd4, 0x8d, 0xad, + 0xf0, 0xb2, 0xba, 0xb1, 0x15, 0xd8, 0xb4, 0xfa, 0xed, 0x95, 0x75, 0x09, 0x7e, 0x36, 0x20, 0xb6, + 0xe6, 0x6b, 0xc7, 0xde, 0x98, 0xac, 0xa8, 0x47, 0xbf, 0xda, 0x14, 0xad, 0xc9, 0xdd, 0xc2, 0x77, + 0x1f, 0x69, 0xc8, 0x4a, 0xcb, 0x4e, 0x2c, 0xc8, 0xab, 0xd1, 0xf5, 0x1b, 0x0a, 0x52, 0x17, 0xd8, + 0xad, 0xa5, 0xc5, 0x8d, 0xfb, 0x17, 0x8b, 0x3a, 0xca, 0xec, 0x41, 0x9e, 0x95, 0xfa, 0xe7, 0x0f, + 0xdf, 0x58, 0x44, 0xd8, 0xde, 0x6f, 0xd3, 0x2d, 0x9b, 0x3f, 0x39, 0x67, 0x16, 0xc4, 0x45, 0x39, + 0x80, 0x63, 0xce, 0xf8, 0x69, 0xa0, 0x95, 0xec, 0x5b, 0x72, 0x3e, 0x14, 0x42, 0x58, 0xfb, 0xc8, + 0x74, 0x3f, 0x57, 0x72, 0x39, 0x6f, 0xe6, 0xc4, 0xe9, 0xa8, 0xcd, 0x13, 0xaf, 0x33, 0xa3, 0x28, + 0x45, 0xbe, 0x97, 0x92, 0x5a, 0x58, 0x67, 0x88, 0xc8, 0x7c, 0x64, 0x2b, 0xb7, 0xbe, 0x4e, 0x83, + 0x7c, 0x2c, 0x2d, 0x52, 0xa4, 0xc7, 0x57, 0x68, 0xc9, 0x5d, 0x2d, 0x7b, 0x0a, 0xa1, 0x0b, 0x92, + 0x5a, 0x52, 0xcc, 0x52, 0xa3, 0x91, 0x67, 0x39, 0xc5, 0x92, 0x48, 0x1a, 0x1f, 0x9c, 0x90, 0x2e, + 0xb2, 0x74, 0x3e, 0xae, 0x9c, 0x27, 0xeb, 0x49, 0xa8, 0xea, 0xae, 0x98, 0xf8, 0xde, 0x94, 0x9f, + 0xf3, 0xa8, 0xe0, 0x87, 0xa1, 0x0e, 0x9c, 0x85, 0xc9, 0xb7, 0x17, 0x40, 0x86, 0x26, 0xdf, 0xa5, + 0x98, 0x55, 0xb3, 0xef, 0x05, 0x2f, 0x65, 0x9f, 0x88, 0x64, 0x81, 0x89, 0xfc, 0xab, 0xed, 0x7f, + 0x43, 0x3a, 0xd5, 0x93, 0x33, 0x7d, 0xc5, 0xc6, 0x8e, 0x21, 0x2e, 0xe8, 0x39, 0xf2, 0xa5, 0x62, + 0xc1, 0xa8, 0x1d, 0x5c, 0x49, 0x01, 0x14, 0x4f, 0x6f, 0x26, 0x31, 0x47, 0x23, 0xfc, 0x89, 0x08, + 0x33, 0xfb, 0xbb, 0x73, 0x46, 0x35, 0xc4, 0x60, 0xce, 0x0c, 0xd3, 0x09, 0x47, 0x89, 0xe1, 0xbf, + 0x54, 0x04, 0x99, 0xdc, 0x79, 0x6b, 0x8d, 0x70, 0x87, 0x21, 0xf4, 0x70, 0x13, 0x04, 0x3e, 0xf7, + 0x6b, 0x7a, 0x7f, 0xfd, 0x95, 0xf5, 0x9f, 0x21, 0xe3, 0x0b, 0x9e, 0x8a, 0x62, 0xe0, 0xdc, 0xfc, + 0xcf, 0x40, 0x68, 0x96, 0xe9, 0x21, 0xf1, 0x5f, 0x7f, 0x31, 0x3f, 0x0d, 0xcc, 0x63, 0x7f, 0x83, + 0x12, 0xb0, 0x3f, 0x6e, 0xd5, 0xe5, 0x68, 0x6a, 0x96, 0x8a, 0xda, 0x4b, 0xc8, 0xaa, 0x4a, 0x96, + 0x47, 0x4b, 0x70, 0x55, 0x7f, 0xfd, 0x73, 0x82, 0xbf, 0x5a, 0x8f, 0xb8, 0xf1, 0x2c, 0x86, 0x3b, + 0xee, 0xaa, 0xe3, 0x1f, 0xd1, 0xbb, 0x5b, 0x5e, 0xc0, 0x63, 0x0e, 0xc9, 0x6a, 0x52, 0x59, 0x54, + 0x15, 0x96, 0xf7, 0xb3, 0xba, 0x64, 0x68, 0xb5, 0xdf, 0xe9, 0x91, 0x77, 0x7f, 0xe9, 0xc3, 0xee, + 0xfc, 0x5f, 0xff, 0x0f, 0x76, 0x67, 0x7d, 0x3d, 0x94, 0xf6, 0xff, 0xfe, 0x4d, 0x14, 0x73, 0xc2, + 0xa3, 0xbb, 0x43, 0x5c, 0x63, 0x08, 0x3f, 0x66, 0x1e, 0x66, 0x1b, 0x10, 0xfd, 0xfa, 0xe8, 0x62, + 0xb0, 0x12, 0x2f, 0xa6, 0x08, 0xf5, 0xf8, 0x00, 0x01, 0x03, 0xf9, 0x86, 0x7b, 0xa5, 0x05, 0x7a, + 0x22, 0xd2, 0x82, 0x68, 0x4e, 0x7b, 0x4c, 0xc8, 0xe6, 0x34, 0x49, 0x03, 0x02, 0xf8, 0x29, 0xf8, + 0xe5, 0xd3, 0xa4, 0xe8, 0xaf, 0x68, 0x4d, 0x35, 0xb7, 0xe9, 0x5f, 0x0c, 0x25, 0xeb, 0x1f, 0xf4, + 0xa3, 0x73, 0x91, 0x0d, 0xca, 0x02, 0x5e, 0x0f, 0x11, 0xc4, 0x94, 0xed, 0xfa, 0xe1, 0x68, 0xe1, + 0x3b, 0xdf, 0xbf, 0xd8, 0xb7, 0x63, 0xe9, 0x27, 0x38, 0x89, 0x4a, 0xe3, 0x13, 0x62, 0x2f, 0x30, + 0xe6, 0x63, 0x5a, 0x1b, 0xce, 0xe9, 0x21, 0x09, 0x9e, 0x0e, 0xb8, 0x86, 0xc9, 0xe0, 0xa3, 0x9a, + 0x8b, 0x12, 0x0a, 0x1b, 0x0f, 0x1d, 0x4c, 0x64, 0x5b, 0xe4, 0xe2, 0x68, 0x0e, 0xcd, 0x4b, 0x86, + 0x1c, 0xba, 0x0a, 0x91, 0x29, 0xeb, 0x5e, 0x2c, 0x3f, 0x3f, 0x46, 0x57, 0x8d, 0xcd, 0x1d, 0x0c, + 0x8d, 0xe6, 0x87, 0x6f, 0xb2, 0x80, 0x7e, 0xea, 0xc4, 0x24, 0xd7, 0xa6, 0x75, 0x7b, 0xab, 0xb0, + 0xb9, 0xbe, 0x6e, 0x7f, 0x2f, 0x96, 0xff, 0xfa, 0xcb, 0xde, 0x2a, 0x15, 0xf0, 0xb9, 0x92, 0xc5, + 0xe7, 0x4a, 0x09, 0x9f, 0xb3, 0xb9, 0x3c, 0xbe, 0xe4, 0x8a, 0xc5, 0x6d, 0xb1, 0x0e, 0x5d, 0xdb, + 0x12, 0xa5, 0xb7, 0xba, 0x4e, 0x2b, 0xe9, 0xb4, 0x92, 0x4e, 0x2b, 0xe9, 0xb4, 0x92, 0x4e, 0x2b, + 0xe9, 0xac, 0x92, 0xce, 0x57, 0x72, 0x63, 0x94, 0x26, 0x12, 0xb4, 0x77, 0x5e, 0x3c, 0xd4, 0x6d, + 0xf1, 0xbb, 0x58, 0x9d, 0x26, 0x53, 0xee, 0x90, 0x22, 0x56, 0x7d, 0x7a, 0x56, 0x19, 0x2e, 0xfb, + 0x96, 0x4c, 0xb1, 0x71, 0xb0, 0x18, 0x85, 0xb2, 0x34, 0xd3, 0x99, 0x23, 0x06, 0x7e, 0xae, 0x91, + 0xdb, 0x2c, 0x86, 0xca, 0x0b, 0xb9, 0x6f, 0x25, 0x28, 0xc2, 0x26, 0xf6, 0xff, 0x5f, 0xdc, 0x95, + 0x36, 0xb7, 0x6d, 0xa4, 0xe9, 0xef, 0xfb, 0x2b, 0x28, 0x24, 0xb1, 0x88, 0x08, 0x92, 0x41, 0xca, + 0xf2, 0x38, 0xa0, 0x20, 0x96, 0xe3, 0x63, 0x47, 0x35, 0x8e, 0xa3, 0x8d, 0x3c, 0xc9, 0xb8, 0x5c, + 0xaa, 0x15, 0x49, 0x35, 0x25, 0x94, 0x21, 0x80, 0x01, 0xa0, 0xc3, 0xa1, 0xf8, 0xdf, 0xf7, 0x3d, + 0xfa, 0x04, 0xc0, 0x43, 0x71, 0x66, 0xb6, 0x2a, 0xb1, 0x88, 0x46, 0x77, 0xa3, 0xef, 0xee, 0xf7, + 0xe8, 0xe7, 0x79, 0x78, 0xd0, 0xa6, 0xf0, 0xbb, 0xf2, 0x30, 0xb4, 0x35, 0xa3, 0x02, 0xd1, 0x3f, + 0x87, 0x5a, 0x1b, 0x7c, 0x87, 0x38, 0x31, 0x85, 0xa0, 0xcb, 0x13, 0x5d, 0x62, 0x03, 0xf0, 0x02, + 0xef, 0x8e, 0x10, 0x84, 0xef, 0x90, 0x1f, 0xc4, 0xdb, 0xa9, 0x31, 0x30, 0x18, 0x06, 0x02, 0x4a, + 0x3c, 0x80, 0xaf, 0x11, 0x89, 0xc7, 0x6f, 0x62, 0x7c, 0x0a, 0x7d, 0x29, 0x88, 0xcb, 0x6e, 0x6f, + 0x9c, 0x64, 0xa3, 0xe2, 0xcb, 0x07, 0x32, 0x52, 0x11, 0xa4, 0xfd, 0xf8, 0x06, 0xd6, 0xe7, 0xc2, + 0x0b, 0xee, 0xca, 0x3d, 0xc4, 0x22, 0x28, 0x4b, 0x54, 0x3a, 0xa2, 0xa6, 0x17, 0x3b, 0x58, 0xd2, + 0x9b, 0x69, 0xed, 0x37, 0x4c, 0x46, 0xb2, 0xad, 0xfe, 0x48, 0x89, 0x34, 0xfd, 0x85, 0x85, 0x28, + 0xc6, 0x09, 0x7c, 0x36, 0x13, 0x13, 0xe8, 0x82, 0x3f, 0x77, 0x20, 0xa3, 0x2d, 0xa4, 0x38, 0x3f, + 0xb0, 0x1e, 0x98, 0x9e, 0xc3, 0xa2, 0x27, 0x55, 0x04, 0x24, 0x41, 0x5d, 0x5b, 0xad, 0x90, 0xde, + 0x37, 0x45, 0x03, 0x4f, 0xf5, 0x54, 0x83, 0x75, 0x1f, 0xa1, 0x07, 0xca, 0x61, 0xd7, 0x60, 0x25, + 0xc1, 0xbc, 0x62, 0xee, 0xd6, 0x27, 0x4f, 0x1c, 0x6c, 0x98, 0xd2, 0xf7, 0x23, 0x0b, 0xae, 0x40, + 0x1d, 0xbd, 0x08, 0xa0, 0x73, 0x28, 0xff, 0x46, 0xd5, 0xc0, 0x59, 0x35, 0xca, 0x20, 0x43, 0x4c, + 0xfb, 0xd1, 0xc5, 0x29, 0x01, 0x10, 0x65, 0xb0, 0xbc, 0x2c, 0xb8, 0x61, 0x89, 0x3d, 0x9a, 0x9a, + 0xf5, 0xd1, 0x48, 0xe6, 0xcc, 0x66, 0xba, 0xb3, 0x73, 0x78, 0xe0, 0xc0, 0x47, 0xf2, 0xb8, 0x0a, + 0x7a, 0x07, 0xa8, 0xbb, 0xbf, 0x63, 0x76, 0x13, 0xf9, 0x31, 0x04, 0x72, 0xa7, 0x6f, 0x29, 0x1e, + 0xd4, 0x42, 0xfc, 0x5e, 0xbe, 0x13, 0x97, 0xa3, 0x34, 0x46, 0x2a, 0x51, 0xcb, 0x4f, 0x41, 0x95, + 0x54, 0x41, 0xad, 0xd3, 0xa4, 0x96, 0x83, 0x92, 0x4d, 0xea, 0x62, 0xaf, 0xbc, 0x99, 0x4c, 0x60, + 0x58, 0xa8, 0xd0, 0x70, 0x40, 0x0c, 0xb8, 0xe8, 0xb8, 0x1c, 0xd4, 0x25, 0x53, 0xa9, 0x86, 0x14, + 0x78, 0xb9, 0x9e, 0x08, 0x72, 0xc5, 0x5e, 0x96, 0x62, 0x44, 0x66, 0xb3, 0xa5, 0xa7, 0x8b, 0x9b, + 0x42, 0x72, 0xda, 0xd2, 0x63, 0xc5, 0x51, 0xdf, 0x8e, 0x10, 0x5c, 0x1e, 0x03, 0xa6, 0xf0, 0xcb, + 0x10, 0xe7, 0x8a, 0xbd, 0x9b, 0x8b, 0x19, 0xde, 0x89, 0xcb, 0x2e, 0x6a, 0x5c, 0xb6, 0x20, 0xa0, + 0xa4, 0xb4, 0xe4, 0xcf, 0xca, 0x08, 0x7f, 0x23, 0xf5, 0xac, 0x5c, 0x9f, 0x89, 0x0b, 0x9b, 0x0b, + 0x57, 0x55, 0xba, 0x54, 0x55, 0xf1, 0xb4, 0x17, 0x06, 0x2d, 0x10, 0x15, 0x72, 0x70, 0x84, 0xb0, + 0x32, 0x85, 0x92, 0x97, 0x50, 0x4b, 0x84, 0xb1, 0x61, 0xe4, 0xd5, 0xb4, 0xbb, 0x35, 0xa7, 0xb7, + 0xae, 0xc1, 0xa6, 0xb0, 0xdd, 0xdf, 0xa0, 0xed, 0x42, 0xd2, 0x62, 0xd1, 0xeb, 0x4f, 0xd5, 0x19, + 0xd2, 0xbc, 0x98, 0xab, 0xa7, 0xb4, 0xb8, 0xa3, 0xb2, 0xae, 0xc7, 0xc0, 0xc3, 0x14, 0x03, 0x4e, + 0x46, 0x70, 0x9c, 0x3a, 0xe4, 0x95, 0xbf, 0xc2, 0xa5, 0xb2, 0x2f, 0x4f, 0x48, 0x0e, 0x93, 0x1c, + 0x29, 0x2d, 0x27, 0x9f, 0xac, 0x8c, 0xcf, 0x64, 0xb9, 0x1f, 0xe2, 0xad, 0xad, 0x6e, 0xef, 0x49, + 0x6a, 0x24, 0x65, 0x0a, 0xe9, 0xcb, 0x10, 0xa8, 0x09, 0x3d, 0x3f, 0x7b, 0xa2, 0x11, 0x2f, 0xba, + 0xe6, 0xe3, 0x55, 0x3e, 0xdb, 0xb5, 0x9e, 0x46, 0x45, 0xe5, 0x7f, 0xef, 0xbe, 0xfe, 0x38, 0x74, + 0x1f, 0x6b, 0xd1, 0x3f, 0x46, 0x3d, 0x38, 0x83, 0xca, 0x66, 0x92, 0x7f, 0x0f, 0x47, 0xc3, 0x51, + 0x24, 0x7f, 0x6b, 0x4b, 0x06, 0x26, 0x2a, 0xc9, 0xa2, 0x83, 0x8a, 0x3e, 0xf4, 0xa5, 0x6b, 0xab, + 0xdf, 0xc8, 0xaa, 0x58, 0xa3, 0x5e, 0xb5, 0x6a, 0xa9, 0x5a, 0x2d, 0x70, 0x04, 0x8f, 0xd4, 0x8e, + 0x64, 0x59, 0xc9, 0xde, 0xe7, 0x1d, 0xd5, 0xe5, 0xd2, 0x30, 0x66, 0x94, 0x45, 0xf0, 0x48, 0x38, + 0xd0, 0x97, 0xd6, 0xd6, 0xdb, 0xe6, 0xad, 0xb3, 0x07, 0x83, 0x07, 0x86, 0x13, 0x74, 0xff, 0x9b, + 0x91, 0x34, 0x87, 0xad, 0x38, 0x59, 0x28, 0x60, 0xa5, 0x36, 0xe1, 0xc7, 0xf8, 0xb8, 0x24, 0xf2, + 0x9b, 0xbb, 0xbd, 0x81, 0x38, 0x42, 0x8f, 0x97, 0xdd, 0x5d, 0x3f, 0x71, 0x7c, 0x40, 0xe2, 0x11, + 0x6a, 0x30, 0x20, 0x88, 0xf8, 0x9a, 0x1c, 0x1f, 0x10, 0xf3, 0xaa, 0x57, 0x7b, 0x35, 0x36, 0xaf, + 0xfa, 0x67, 0x41, 0x57, 0x8f, 0x86, 0x87, 0xad, 0x06, 0x47, 0x25, 0xc1, 0x3a, 0xd9, 0x69, 0xef, + 0x4c, 0x5a, 0x24, 0x78, 0x92, 0x3c, 0xa0, 0x09, 0xe1, 0x7b, 0x93, 0xf7, 0xb3, 0x66, 0x1a, 0x41, + 0x92, 0x69, 0xa5, 0x9a, 0x85, 0x34, 0x93, 0x0a, 0x4f, 0x65, 0xf0, 0x87, 0xce, 0xc0, 0xb6, 0x5a, + 0xe6, 0xa5, 0x9e, 0x85, 0xf4, 0xde, 0x0f, 0x9a, 0x5a, 0x2b, 0xfd, 0xbe, 0xbc, 0x0f, 0xda, 0x75, + 0x56, 0x3a, 0x46, 0xe2, 0xc4, 0x40, 0x8d, 0x95, 0xc9, 0xbc, 0x37, 0xc4, 0x7f, 0xa2, 0x30, 0xa8, + 0xa9, 0xad, 0x4c, 0x8c, 0x3e, 0xc6, 0xe8, 0xd7, 0x62, 0xec, 0xdb, 0x31, 0xf6, 0x31, 0xc6, 0xbe, + 0x8a, 0x41, 0x32, 0xd8, 0xcf, 0x3d, 0xdb, 0x0f, 0x7c, 0x6b, 0xb4, 0x97, 0xf7, 0xec, 0xb7, 0xfd, + 0xfa, 0xdb, 0xbe, 0xfd, 0x76, 0xbf, 0xfe, 0x76, 0x1f, 0xa6, 0x3c, 0x51, 0x1d, 0x10, 0xfe, 0xa0, + 0xfc, 0xcd, 0x9b, 0x69, 0x8e, 0xce, 0x80, 0xca, 0x2d, 0x43, 0xbd, 0x60, 0xff, 0x88, 0x10, 0x31, + 0x5f, 0x8c, 0xb5, 0xf7, 0x1a, 0xad, 0x34, 0x9d, 0xa9, 0x06, 0x27, 0xda, 0x72, 0x00, 0x62, 0x7a, + 0x84, 0x2c, 0x83, 0xf8, 0x64, 0x22, 0xcb, 0x6f, 0x2e, 0xaf, 0x3a, 0xe5, 0x0c, 0x0e, 0x12, 0x08, + 0x00, 0x5d, 0x22, 0xf4, 0x36, 0xa3, 0x0f, 0xd6, 0x92, 0x10, 0xe0, 0x8c, 0x84, 0xa6, 0xc7, 0x2f, + 0x48, 0xf3, 0xb8, 0x13, 0x87, 0x80, 0x67, 0x7e, 0x4a, 0x98, 0xd5, 0x3e, 0x29, 0x98, 0xf8, 0xc6, + 0x8d, 0xf2, 0x03, 0x46, 0x79, 0x69, 0x95, 0xac, 0x43, 0xd5, 0xe8, 0xc0, 0x80, 0xeb, 0xe4, 0x13, + 0x58, 0xc5, 0xd1, 0x32, 0xbf, 0xb0, 0xe6, 0x26, 0xed, 0xed, 0x04, 0x7c, 0x44, 0x11, 0x77, 0xbc, + 0x08, 0x1e, 0x72, 0x32, 0x2f, 0xab, 0x89, 0x6c, 0x71, 0x9b, 0x8f, 0xe0, 0xa4, 0x91, 0xda, 0xd4, + 0xe7, 0xa3, 0xbd, 0xe9, 0x7d, 0x50, 0xf3, 0xb9, 0x73, 0x67, 0xb7, 0x43, 0x6a, 0xdb, 0x90, 0x47, + 0xa5, 0xd1, 0x71, 0x53, 0xcf, 0x5f, 0xd7, 0x1a, 0x59, 0xf7, 0x00, 0x0e, 0x4a, 0x13, 0x44, 0x6e, + 0x25, 0x48, 0x1a, 0xf1, 0xe9, 0x2c, 0x2a, 0x6d, 0xbf, 0x5f, 0xf2, 0x1d, 0xce, 0x64, 0x0a, 0xf6, + 0xc7, 0x45, 0x58, 0x49, 0x8c, 0x87, 0x7f, 0x2d, 0xbf, 0xdf, 0x60, 0xa4, 0xe3, 0x1d, 0xf6, 0x55, + 0xcc, 0x9e, 0x8c, 0xd9, 0x73, 0x62, 0x26, 0x26, 0xe6, 0xbe, 0x8a, 0xd9, 0x97, 0x31, 0x5d, 0x5f, + 0x62, 0xed, 0x2f, 0x0d, 0xeb, 0x0d, 0x1c, 0xb7, 0x07, 0x25, 0xba, 0xd6, 0xf1, 0xe0, 0xb3, 0xe6, + 0x04, 0x89, 0x1c, 0x85, 0x1d, 0x42, 0x64, 0xa0, 0x18, 0x3c, 0xd8, 0xaa, 0xf0, 0x40, 0xde, 0x15, + 0x70, 0xbc, 0x7e, 0x31, 0xec, 0x47, 0x07, 0x20, 0x14, 0xa7, 0xaa, 0x85, 0x4a, 0x76, 0x50, 0x4e, + 0x61, 0x85, 0x1f, 0x76, 0x9d, 0xd0, 0x2d, 0x15, 0x5c, 0x58, 0x02, 0x0c, 0x06, 0x44, 0x76, 0x40, + 0x48, 0x34, 0x1b, 0xdc, 0x4b, 0x30, 0x6a, 0x71, 0x71, 0x88, 0x7a, 0x76, 0x58, 0xa2, 0x97, 0x84, + 0xc8, 0x63, 0x8f, 0x4e, 0x6f, 0xa7, 0x5b, 0xee, 0xc2, 0x46, 0x9a, 0xaf, 0x00, 0x1e, 0xcc, 0x97, + 0x68, 0x75, 0xa0, 0xeb, 0x75, 0x21, 0x0f, 0xa4, 0xcc, 0x37, 0xbd, 0xcf, 0x67, 0x55, 0xab, 0x57, + 0x3d, 0x9e, 0x4e, 0xac, 0x16, 0x64, 0x1f, 0xc5, 0x7d, 0x72, 0x4e, 0x3c, 0xd8, 0x11, 0x87, 0xa9, + 0xf6, 0x7e, 0x24, 0x1f, 0xed, 0xf4, 0x13, 0x04, 0x9e, 0x49, 0xb4, 0x45, 0xcc, 0x72, 0x47, 0xac, + 0xbb, 0x66, 0x01, 0xb1, 0x64, 0x33, 0x0b, 0x5b, 0xcc, 0x83, 0xb6, 0xd3, 0xd9, 0x79, 0x3f, 0xd3, + 0x95, 0x01, 0x2f, 0xe2, 0x67, 0x38, 0xa0, 0x8d, 0xcb, 0xaa, 0xe8, 0x86, 0x41, 0xef, 0x39, 0xd4, + 0x73, 0xc9, 0xb7, 0xec, 0x2a, 0x9b, 0x3b, 0x01, 0xcd, 0x8a, 0x52, 0x3c, 0x59, 0x4b, 0x44, 0x35, + 0xc5, 0x6b, 0x7a, 0xb0, 0x30, 0x4a, 0x82, 0x27, 0x17, 0x84, 0xb7, 0xe1, 0x82, 0x61, 0x8d, 0x95, + 0x12, 0xf9, 0x0a, 0x18, 0xbc, 0xcf, 0xc7, 0xab, 0x0d, 0x07, 0x03, 0xe5, 0xeb, 0x5b, 0xd3, 0x65, + 0x7c, 0xc3, 0xfa, 0xb2, 0x8e, 0xad, 0xc7, 0x62, 0xe5, 0x97, 0xa3, 0xa8, 0x02, 0xa9, 0x06, 0xe9, + 0x7d, 0x17, 0xc1, 0xdf, 0x0e, 0xa4, 0x2e, 0x6c, 0x82, 0x3e, 0x5b, 0x33, 0xfc, 0x07, 0x01, 0xc2, + 0x6e, 0x62, 0xdc, 0x8c, 0x6a, 0x1d, 0xd3, 0xb2, 0xf5, 0x3a, 0xee, 0xa4, 0x6c, 0xe3, 0xd3, 0xb1, + 0xa0, 0xc5, 0x06, 0xe4, 0xad, 0xa5, 0xe6, 0x3a, 0x77, 0x23, 0x4e, 0x65, 0x5a, 0x22, 0xa6, 0xcb, + 0xfb, 0x6e, 0xea, 0xe8, 0x10, 0xa1, 0x3c, 0x34, 0xd8, 0x39, 0x25, 0x7e, 0xe5, 0x96, 0x7e, 0x9b, + 0xae, 0xea, 0xc3, 0x18, 0xb2, 0xba, 0xf7, 0x36, 0xb8, 0xe5, 0xd8, 0x78, 0xf5, 0x67, 0x27, 0x9e, + 0xed, 0xdc, 0xee, 0x80, 0xb4, 0xba, 0x43, 0x8b, 0xc8, 0x8c, 0x49, 0x5f, 0xb8, 0xd7, 0xa6, 0xee, + 0x44, 0x11, 0x43, 0xef, 0xed, 0x3d, 0x4d, 0x0f, 0xf8, 0xf5, 0xe3, 0x25, 0x4e, 0x08, 0x90, 0xfc, + 0xe0, 0x70, 0x79, 0xb3, 0x85, 0x20, 0xe0, 0xd6, 0x56, 0x2d, 0x60, 0x7c, 0xa1, 0xdf, 0x14, 0x66, + 0x52, 0x0d, 0x9d, 0xaa, 0xd8, 0x96, 0xdb, 0x5a, 0x3d, 0x7a, 0x81, 0xfd, 0x41, 0x0f, 0xe6, 0x99, + 0xd8, 0xe9, 0x21, 0x8a, 0xe7, 0x63, 0x9a, 0xa2, 0x2d, 0x8b, 0x60, 0x79, 0x19, 0xfd, 0x85, 0xea, + 0x90, 0x77, 0x0d, 0x88, 0xda, 0x09, 0xf5, 0xfc, 0x95, 0x56, 0xb1, 0x23, 0x8f, 0xd0, 0xb5, 0x51, + 0xb8, 0xb3, 0x71, 0x52, 0x9b, 0xa0, 0x90, 0xb8, 0x2a, 0xa9, 0xdd, 0x9b, 0x48, 0xe8, 0xda, 0x04, + 0x9b, 0x70, 0xf1, 0xb7, 0xcf, 0xa0, 0xd3, 0x57, 0x35, 0x6d, 0x88, 0x97, 0x64, 0xe8, 0xcb, 0xb3, + 0xcb, 0x6a, 0x90, 0xc0, 0xce, 0x05, 0x53, 0x19, 0xd5, 0x53, 0xec, 0xf9, 0xca, 0xfe, 0x39, 0x8e, + 0x1b, 0xaf, 0x06, 0x64, 0x3f, 0x86, 0xa3, 0x2f, 0x74, 0x39, 0xff, 0x4c, 0x32, 0x74, 0x1d, 0x0f, + 0xf4, 0x1c, 0xa2, 0x24, 0x72, 0x58, 0x8c, 0xb1, 0x6d, 0xf1, 0x8a, 0x19, 0x7a, 0x45, 0x5b, 0x2f, + 0x60, 0xab, 0x85, 0xf4, 0x63, 0x58, 0xab, 0xec, 0xca, 0x6c, 0xc9, 0xda, 0x0c, 0xaf, 0xad, 0x06, + 0xc2, 0x80, 0xc8, 0x0e, 0xd8, 0x6e, 0x40, 0xbe, 0x89, 0x54, 0xde, 0x8e, 0xb5, 0xc1, 0x2c, 0x88, + 0x83, 0x5a, 0xde, 0x65, 0x1c, 0xef, 0x33, 0x26, 0x33, 0x89, 0xa2, 0x1d, 0x69, 0x9f, 0xd8, 0xe6, + 0xa1, 0xf3, 0xef, 0xc8, 0x9a, 0xce, 0x1a, 0x78, 0xb1, 0x70, 0x3b, 0x68, 0x74, 0x03, 0xab, 0x9f, + 0xb0, 0x75, 0x2d, 0x19, 0xb6, 0x37, 0xb0, 0x44, 0x58, 0x73, 0x0b, 0xcc, 0xa2, 0x9c, 0x78, 0x9c, + 0x90, 0xfd, 0x05, 0x84, 0xec, 0x2d, 0x18, 0x8a, 0xfa, 0x13, 0xfe, 0xdc, 0x52, 0x4c, 0x3c, 0x3c, + 0xd8, 0x3a, 0x8b, 0x06, 0xc3, 0xd5, 0x1d, 0xec, 0x6c, 0x77, 0xa8, 0x74, 0x07, 0x01, 0xbf, 0xab, + 0x25, 0xf1, 0xa0, 0x8e, 0xd7, 0xbf, 0x08, 0xf6, 0xc5, 0xbe, 0xaf, 0x78, 0xd5, 0x39, 0x4a, 0x2c, + 0xd3, 0xa2, 0x1c, 0xfe, 0x85, 0x04, 0xf1, 0x38, 0x8e, 0xb5, 0xba, 0x66, 0xef, 0xe7, 0x93, 0x37, + 0xef, 0xe1, 0x08, 0x01, 0x33, 0x7b, 0x96, 0x97, 0x88, 0x14, 0x80, 0xae, 0x80, 0x24, 0x93, 0xa3, + 0x87, 0xd6, 0x2d, 0xd2, 0x46, 0x82, 0xc0, 0x0b, 0x65, 0xb1, 0x69, 0xac, 0x50, 0x63, 0xb2, 0x97, + 0xe5, 0x77, 0x5d, 0xff, 0x29, 0xa2, 0xcf, 0x4a, 0xf1, 0x51, 0xcb, 0xc2, 0x03, 0xda, 0xee, 0x60, + 0x41, 0x4f, 0x2e, 0x60, 0x03, 0xe5, 0x1f, 0x8a, 0xaa, 0xd1, 0x96, 0x9e, 0x15, 0x79, 0xac, 0x1e, + 0xa7, 0xbd, 0xf0, 0x7b, 0xe5, 0x51, 0x33, 0x18, 0x6d, 0x81, 0x30, 0x4d, 0x37, 0x0e, 0x4c, 0x82, + 0x78, 0xe4, 0x2f, 0xba, 0x52, 0x13, 0x64, 0x80, 0xaf, 0x85, 0x45, 0x5a, 0xb3, 0xff, 0x2c, 0x24, + 0xb9, 0x16, 0x39, 0xe2, 0x2a, 0xbd, 0xe3, 0x22, 0x8d, 0x95, 0x12, 0xfe, 0x60, 0x50, 0x1b, 0x64, + 0x11, 0x2d, 0x11, 0x22, 0xc0, 0x88, 0x4a, 0xb8, 0x28, 0x87, 0x77, 0x25, 0x69, 0x03, 0xba, 0xd0, + 0x2f, 0xdb, 0x73, 0xef, 0xd6, 0x8b, 0x10, 0x68, 0x75, 0xb1, 0xed, 0x47, 0x6d, 0xde, 0x94, 0x65, + 0x62, 0xb9, 0x52, 0x66, 0x01, 0xd2, 0xb1, 0xc2, 0xd6, 0x14, 0xcd, 0x91, 0x39, 0x0d, 0x1d, 0xaa, + 0x77, 0xd1, 0xed, 0x14, 0x5a, 0x16, 0x69, 0x27, 0x13, 0x56, 0xa3, 0x51, 0xc2, 0x41, 0x07, 0x95, + 0x93, 0xa8, 0x66, 0xf8, 0xe7, 0x87, 0xb7, 0xbb, 0x2f, 0xbc, 0x45, 0x30, 0xce, 0x2f, 0xbe, 0x44, + 0x95, 0xed, 0x88, 0xf9, 0x08, 0xad, 0xd6, 0x23, 0x28, 0x1c, 0xb0, 0x7f, 0x36, 0xd0, 0x81, 0xe1, + 0x60, 0x7a, 0xa4, 0x1a, 0xec, 0x12, 0x46, 0xb9, 0x50, 0xd6, 0x13, 0xa5, 0xd4, 0x21, 0x66, 0x00, + 0xd2, 0x8a, 0x19, 0xe0, 0x4f, 0xd2, 0x77, 0x19, 0x05, 0x59, 0xd5, 0xc2, 0x04, 0x52, 0x2d, 0x51, + 0x9a, 0x55, 0x78, 0x62, 0xd7, 0x4a, 0x25, 0xa9, 0x2c, 0x93, 0x7f, 0x23, 0x21, 0x01, 0xd4, 0xe9, + 0xd6, 0x1a, 0xdf, 0x21, 0x62, 0x60, 0x74, 0xdc, 0x04, 0x5a, 0x98, 0x24, 0x25, 0x7d, 0x81, 0x9c, + 0x65, 0xac, 0xc9, 0x5a, 0x3f, 0x63, 0x1e, 0x1e, 0x94, 0xc6, 0x15, 0xb9, 0x26, 0xfb, 0x07, 0x7e, + 0x4d, 0xfb, 0xc5, 0x78, 0xea, 0x96, 0xf0, 0x81, 0x05, 0x81, 0x75, 0xa4, 0x9c, 0xc1, 0x12, 0x26, + 0x3c, 0x49, 0x7a, 0xb1, 0xca, 0xe1, 0xb5, 0xee, 0x37, 0x49, 0xfe, 0x25, 0xda, 0x06, 0x38, 0xcf, + 0xb3, 0x88, 0x34, 0x64, 0xc8, 0x63, 0x90, 0x2d, 0x48, 0x5b, 0x66, 0x0f, 0x71, 0xa3, 0xe9, 0x20, + 0x75, 0xbb, 0xf3, 0x58, 0x8a, 0x4b, 0x16, 0x9d, 0x59, 0x19, 0x8f, 0x5a, 0x27, 0xd2, 0x4b, 0x20, + 0x31, 0x07, 0x6b, 0x4d, 0x42, 0xbe, 0x52, 0x59, 0x4f, 0x15, 0x4c, 0x8b, 0x3f, 0xa2, 0xad, 0x1e, + 0x31, 0x6a, 0x5a, 0x0b, 0x62, 0xc3, 0xc5, 0xf3, 0x7d, 0xea, 0x10, 0x08, 0x76, 0x51, 0x47, 0xb7, + 0x05, 0xff, 0xf8, 0xc3, 0x73, 0x6c, 0x7f, 0x98, 0xf1, 0x0c, 0x4a, 0xd0, 0xf9, 0x88, 0x34, 0x4b, + 0x4c, 0x28, 0x48, 0x2c, 0x47, 0x24, 0x85, 0x7d, 0x3b, 0x27, 0xc5, 0xdd, 0x51, 0x68, 0x41, 0x16, + 0x2f, 0x28, 0x14, 0x89, 0x22, 0x21, 0x10, 0x2d, 0x25, 0x30, 0x99, 0xa6, 0x70, 0x66, 0x94, 0x2f, + 0x5e, 0xdf, 0x14, 0x0b, 0x84, 0x8d, 0x20, 0xdf, 0xda, 0xf3, 0xc8, 0xe3, 0xaf, 0x5c, 0x30, 0xf8, + 0x01, 0x02, 0xf8, 0xa2, 0xf7, 0xb5, 0x73, 0x95, 0x37, 0x4b, 0x23, 0x6c, 0x42, 0x28, 0xd4, 0x62, + 0xd1, 0x28, 0x3f, 0xba, 0xdc, 0xb8, 0x35, 0xd0, 0x9a, 0xc2, 0x2d, 0xf5, 0xcb, 0x87, 0x03, 0x32, + 0xf9, 0x79, 0x53, 0xf1, 0x89, 0xa6, 0x15, 0x99, 0x96, 0x32, 0x51, 0xdd, 0xe5, 0xc5, 0x67, 0xae, + 0x0e, 0x2c, 0x90, 0x1d, 0x8c, 0x8f, 0xf2, 0x30, 0x71, 0x37, 0xc1, 0x36, 0x83, 0x84, 0x6f, 0x1f, + 0xf0, 0x37, 0x57, 0x9b, 0xd8, 0x9c, 0xd6, 0xe7, 0xd3, 0x49, 0xf3, 0xec, 0x12, 0x22, 0x61, 0x6e, + 0x7b, 0x9e, 0xf2, 0x3d, 0x99, 0xa3, 0xd6, 0x32, 0x9a, 0xe3, 0x42, 0x15, 0xa9, 0x72, 0x2d, 0x16, + 0x03, 0x0b, 0x3d, 0x9e, 0x3a, 0x99, 0x74, 0x9b, 0x05, 0x62, 0xc9, 0xeb, 0xc2, 0xaf, 0xe9, 0x40, + 0x04, 0xaf, 0xbf, 0x4d, 0xc4, 0x1d, 0xda, 0x13, 0xe4, 0x04, 0x64, 0x63, 0x24, 0xbd, 0xa5, 0x39, + 0x88, 0x53, 0x93, 0x7c, 0xb8, 0x9d, 0x57, 0xd2, 0xe7, 0x1c, 0xde, 0xbd, 0xbb, 0xc5, 0xa1, 0xf9, + 0xee, 0x56, 0x1a, 0x1d, 0xd6, 0xcf, 0x28, 0x45, 0xf7, 0x91, 0xca, 0x6f, 0xc3, 0x1e, 0x84, 0xf9, + 0x0a, 0x26, 0xc5, 0xf0, 0xfa, 0xaf, 0x3d, 0xca, 0x55, 0x69, 0x7c, 0x3e, 0xa7, 0xb7, 0x84, 0xc4, + 0x6e, 0xd9, 0xa8, 0x0e, 0x93, 0x29, 0x4a, 0xdb, 0x1d, 0x73, 0x59, 0x07, 0x69, 0xc2, 0xbd, 0xd1, + 0x18, 0x26, 0x7c, 0x34, 0x4e, 0x47, 0x19, 0xdd, 0x7c, 0xe1, 0x48, 0xe8, 0xe1, 0xcf, 0x2e, 0xb1, + 0x32, 0x9f, 0xba, 0xe1, 0x0d, 0xbf, 0xb5, 0x91, 0x7d, 0x8d, 0xf3, 0xa9, 0xea, 0x86, 0x2e, 0x4e, + 0xdf, 0x74, 0x18, 0xc1, 0x88, 0x50, 0x2a, 0x7a, 0xad, 0x77, 0x11, 0x6f, 0xa7, 0x82, 0x03, 0xeb, + 0xd0, 0x83, 0x6d, 0x87, 0x10, 0x2a, 0xfc, 0xc8, 0x29, 0xb5, 0xe3, 0x0e, 0x56, 0x38, 0x82, 0x94, + 0x72, 0x7c, 0x56, 0x3c, 0xab, 0xc1, 0x16, 0x37, 0x92, 0xa0, 0xe6, 0xa6, 0x2d, 0x0c, 0xf6, 0xaf, + 0x14, 0x36, 0x30, 0x42, 0x0c, 0x87, 0x1d, 0x2c, 0x28, 0x93, 0x3f, 0x44, 0xb7, 0xd1, 0xe5, 0xdc, + 0xa9, 0x73, 0xdd, 0xa9, 0xcd, 0xfe, 0x74, 0x3a, 0xda, 0x8c, 0x10, 0x84, 0xfd, 0xc7, 0xc4, 0xd8, + 0xdd, 0xc7, 0x7c, 0x51, 0xd3, 0xe1, 0xe2, 0x95, 0xdc, 0xf6, 0xf0, 0xa6, 0xb5, 0x95, 0x31, 0xc9, + 0x46, 0xed, 0x6c, 0x37, 0xc2, 0x71, 0xcd, 0xcf, 0x8e, 0x33, 0x31, 0xee, 0x70, 0x8d, 0x05, 0x49, + 0x5e, 0x85, 0x50, 0x83, 0xb9, 0x36, 0x8e, 0x57, 0xd6, 0x8d, 0xd2, 0x62, 0xe5, 0xe8, 0x87, 0xcf, + 0xd4, 0xc8, 0xaa, 0x5d, 0x98, 0x6c, 0xc2, 0xa1, 0x5b, 0xb0, 0x2b, 0x47, 0xd1, 0x1e, 0x5d, 0x3b, + 0x45, 0xdf, 0x60, 0xd7, 0x50, 0xe6, 0xd4, 0x56, 0x45, 0xdc, 0x88, 0x10, 0xc1, 0x43, 0x6d, 0x0d, + 0x61, 0x80, 0x5b, 0x58, 0xe9, 0x80, 0x69, 0x90, 0x46, 0x15, 0x25, 0x08, 0x9c, 0x8d, 0x59, 0x9b, + 0x8f, 0x6a, 0xb9, 0xdb, 0x33, 0xce, 0xeb, 0x41, 0x2f, 0x6c, 0xf1, 0x5e, 0x5e, 0x92, 0xaa, 0xb4, + 0x53, 0xa1, 0x83, 0x33, 0x62, 0x0b, 0x77, 0xb9, 0x1c, 0xd7, 0x77, 0x20, 0xc5, 0x65, 0x16, 0x1c, + 0x04, 0x1e, 0x9f, 0xd1, 0x67, 0x45, 0xbb, 0x87, 0x37, 0xbe, 0x22, 0x10, 0x86, 0x69, 0x61, 0x83, + 0x41, 0x60, 0xd3, 0x4e, 0x8a, 0x3c, 0x4d, 0xe1, 0xdb, 0xf9, 0xaf, 0xd8, 0x31, 0xf3, 0xb1, 0xb8, + 0x1a, 0xdd, 0x26, 0x79, 0x11, 0x69, 0x4e, 0x60, 0x9a, 0x69, 0xf0, 0x48, 0x5c, 0xc9, 0x0b, 0xe5, + 0x6c, 0xd2, 0x0e, 0xcf, 0xa9, 0xb1, 0x37, 0x8f, 0x9a, 0xa8, 0x76, 0x47, 0x2d, 0x18, 0x76, 0x1a, + 0x15, 0xa7, 0x5c, 0x0b, 0x5b, 0xb7, 0xdf, 0x37, 0xd0, 0x0f, 0x0e, 0x22, 0xdd, 0x7b, 0x38, 0x63, + 0x95, 0x12, 0x5a, 0x12, 0x33, 0x6a, 0x80, 0xd2, 0x19, 0x38, 0x3a, 0xc4, 0x90, 0x22, 0xfa, 0x81, + 0xd8, 0xdb, 0x7f, 0xf1, 0x1d, 0xf3, 0xf6, 0xfc, 0xb4, 0x0a, 0x99, 0xae, 0x3d, 0xc1, 0x5f, 0x0a, + 0x52, 0xb7, 0x29, 0x4c, 0x18, 0x56, 0x6d, 0x1d, 0x0a, 0x1d, 0x16, 0xee, 0xfa, 0x6e, 0xb7, 0x17, + 0x99, 0x3b, 0x02, 0x36, 0xd4, 0x9b, 0x58, 0x86, 0xef, 0x54, 0x2e, 0xc7, 0x77, 0x2a, 0x17, 0x1b, + 0xa2, 0x85, 0x61, 0xd4, 0x75, 0x20, 0x74, 0x0e, 0xf0, 0x5c, 0xf5, 0xf5, 0xa5, 0x79, 0x0c, 0xd4, + 0x54, 0xd9, 0x4a, 0xe4, 0x30, 0xae, 0xae, 0x1a, 0x58, 0x53, 0xe5, 0x06, 0x58, 0x53, 0x55, 0x41, + 0x09, 0xf8, 0x16, 0x88, 0xca, 0xd2, 0x80, 0x7f, 0x93, 0x2a, 0x05, 0xaf, 0x89, 0xb6, 0x80, 0xc9, + 0x7d, 0x3b, 0x5f, 0x8b, 0x25, 0xb7, 0x68, 0xff, 0xd2, 0xeb, 0x35, 0x5f, 0x5a, 0x37, 0x7a, 0x3e, + 0xae, 0xe9, 0x1e, 0x84, 0x98, 0x33, 0x3d, 0x14, 0xfe, 0xbb, 0x07, 0xcb, 0xfa, 0xe2, 0xd8, 0xc3, + 0x85, 0xc6, 0xf6, 0x55, 0xd4, 0xfb, 0xba, 0x51, 0x63, 0x03, 0x85, 0x39, 0x28, 0x61, 0x4e, 0xd1, + 0x08, 0x22, 0xec, 0xdb, 0xb9, 0x9e, 0x45, 0x62, 0x41, 0xf7, 0x1a, 0xe4, 0xd5, 0x5c, 0x2b, 0xd9, + 0xc4, 0x5b, 0x36, 0x08, 0x67, 0x0e, 0xef, 0x88, 0xc2, 0x59, 0x42, 0x1e, 0x4f, 0xf4, 0xc3, 0x48, + 0x5b, 0x71, 0x9e, 0x14, 0xfa, 0x71, 0x6d, 0x89, 0xb6, 0x38, 0x3c, 0x6d, 0xdb, 0xbf, 0xca, 0x53, + 0x90, 0xe5, 0x7f, 0x69, 0x9a, 0xc6, 0x42, 0xad, 0x4a, 0x58, 0x22, 0xad, 0x2c, 0x94, 0x12, 0x96, + 0x59, 0xbe, 0x8f, 0x5d, 0x63, 0x98, 0x0d, 0x07, 0x7f, 0x1e, 0x1b, 0x99, 0x80, 0x97, 0x1a, 0xb8, + 0xc8, 0x68, 0x84, 0x65, 0x9c, 0xff, 0xaf, 0x02, 0x41, 0xa6, 0x72, 0x7b, 0x16, 0xd3, 0xad, 0xde, + 0xa7, 0x91, 0xa5, 0x76, 0x35, 0xce, 0x56, 0xef, 0xc5, 0x88, 0xe6, 0xf4, 0xcb, 0x8b, 0x0b, 0xb5, + 0x69, 0x34, 0x7b, 0x75, 0x29, 0x1c, 0x71, 0x1b, 0xee, 0xf0, 0x32, 0xd0, 0xe1, 0xaf, 0x04, 0x18, + 0x7e, 0xb3, 0xff, 0xec, 0xc7, 0x06, 0x15, 0xc3, 0x9f, 0xc4, 0x0b, 0x4e, 0x11, 0x54, 0xf7, 0x2b, + 0xa1, 0x82, 0x29, 0x8f, 0xaf, 0x44, 0x09, 0xa6, 0x3c, 0xbe, 0x12, 0x20, 0x98, 0xf2, 0x58, 0x87, + 0x0d, 0x2c, 0x27, 0x92, 0x7b, 0x92, 0x3b, 0x81, 0x21, 0x98, 0x6a, 0x4f, 0x19, 0x75, 0x75, 0x7c, + 0xd0, 0xc6, 0x8d, 0x98, 0x2d, 0xa1, 0x45, 0xb4, 0x99, 0x0f, 0x3b, 0x5a, 0xc7, 0x46, 0xae, 0xcd, + 0xd9, 0x90, 0xff, 0x44, 0x86, 0x1b, 0x1c, 0xbd, 0xa2, 0xc9, 0xd2, 0x96, 0xda, 0xce, 0x67, 0xb5, + 0xc7, 0x3d, 0x84, 0xa5, 0xea, 0x96, 0x6d, 0xa0, 0x54, 0x98, 0x9e, 0x70, 0x11, 0xf0, 0x07, 0x59, + 0x08, 0x5c, 0x44, 0x75, 0x44, 0x7c, 0x30, 0xf8, 0x53, 0xc6, 0xd6, 0x6a, 0x2f, 0x12, 0x53, 0x28, + 0xcc, 0xd5, 0x49, 0xfa, 0xa6, 0xee, 0xdd, 0x9e, 0x0a, 0x65, 0x2d, 0xa9, 0x0c, 0x73, 0x67, 0x19, + 0x3b, 0xa8, 0xdc, 0xd3, 0xa4, 0x28, 0x61, 0xf9, 0xf6, 0x8e, 0x14, 0xb5, 0x61, 0x47, 0x36, 0x07, + 0x37, 0xef, 0x36, 0xf9, 0xdb, 0x64, 0x87, 0xb3, 0x54, 0x73, 0x93, 0x2b, 0xdf, 0xc7, 0x41, 0xb6, + 0xb3, 0xe3, 0x43, 0x9d, 0xb8, 0xd9, 0x61, 0x19, 0x2e, 0xbe, 0x40, 0xc3, 0x23, 0xaf, 0xe4, 0x8e, + 0xfb, 0x89, 0xab, 0xe2, 0x0f, 0x85, 0xc0, 0xb2, 0x1d, 0x54, 0xf6, 0x8d, 0x6b, 0xa9, 0xf8, 0xac, + 0x96, 0xde, 0x30, 0xa6, 0x45, 0x36, 0xdd, 0x45, 0xe0, 0x40, 0x7f, 0x90, 0x6a, 0x1b, 0x2b, 0x5e, + 0xb6, 0x24, 0xcd, 0x7b, 0x8b, 0x1e, 0x5a, 0x91, 0x71, 0x19, 0xa0, 0xba, 0x2e, 0x71, 0x11, 0xfa, + 0x2b, 0x18, 0x76, 0x28, 0x7b, 0x9b, 0xeb, 0xa6, 0x33, 0xf2, 0x33, 0x6d, 0x21, 0x81, 0xbe, 0xc2, + 0x3b, 0x61, 0x86, 0xbf, 0xc6, 0x7a, 0xe1, 0x23, 0x15, 0x9c, 0x74, 0x4a, 0x70, 0x5e, 0x44, 0x76, + 0x8b, 0x7d, 0x32, 0xaf, 0xc8, 0xf0, 0x70, 0x66, 0xb3, 0xe1, 0xb0, 0xbe, 0xd6, 0xd6, 0x58, 0xc1, + 0xda, 0x7c, 0x92, 0xb2, 0x03, 0xa7, 0xd3, 0xee, 0x68, 0x1d, 0x9e, 0x08, 0x90, 0xe7, 0x7b, 0x41, + 0x18, 0xe0, 0x65, 0x70, 0xfd, 0xf2, 0xe2, 0xa6, 0x70, 0xdf, 0x3a, 0xaf, 0x3e, 0x55, 0x67, 0x76, + 0x64, 0xa3, 0x0f, 0x5e, 0x96, 0xc6, 0xc4, 0xa0, 0xa4, 0xce, 0x08, 0xb3, 0x7c, 0x71, 0x45, 0xda, + 0x5a, 0x4c, 0x63, 0x09, 0xef, 0xb6, 0x16, 0x3f, 0xe8, 0x2d, 0x2b, 0xba, 0xfb, 0xa6, 0xa5, 0x9c, + 0x18, 0xc1, 0x29, 0x8d, 0x0d, 0x89, 0x96, 0x8a, 0x93, 0x92, 0xf1, 0x4a, 0xdc, 0x02, 0x21, 0xc4, + 0x99, 0x6e, 0xef, 0xb2, 0x71, 0xaf, 0x1a, 0xd2, 0xbd, 0xbe, 0x29, 0x54, 0xc2, 0xb2, 0xa1, 0x77, + 0xef, 0xd6, 0xdb, 0xd2, 0xd6, 0xe4, 0xf7, 0xc2, 0xef, 0x4b, 0xdd, 0x83, 0x76, 0x96, 0x1f, 0x36, + 0xcb, 0xd1, 0x69, 0xe9, 0x4d, 0x32, 0xfe, 0xc5, 0x4c, 0x72, 0x9d, 0xcb, 0x00, 0x1d, 0x90, 0xf8, + 0x6a, 0x5e, 0x8a, 0x02, 0x40, 0x51, 0x5d, 0x5a, 0xc0, 0x89, 0x81, 0xfd, 0x66, 0xe6, 0xbc, 0x1a, + 0x76, 0xd1, 0x30, 0x88, 0xe0, 0x9a, 0x20, 0x6e, 0xca, 0x35, 0x12, 0xd7, 0x43, 0x27, 0x4d, 0xde, + 0x3b, 0xf7, 0xdb, 0x67, 0x5a, 0x64, 0x92, 0xbb, 0xc2, 0xad, 0xfa, 0x98, 0xb9, 0xd8, 0x49, 0xb9, + 0xb6, 0xc6, 0x82, 0xc9, 0xf7, 0x26, 0xbb, 0x30, 0x31, 0xd7, 0x7c, 0x99, 0x55, 0x42, 0x35, 0xd7, + 0xdd, 0x13, 0x17, 0x29, 0x44, 0xae, 0x78, 0x48, 0xf8, 0x24, 0x4c, 0x6b, 0xa3, 0x56, 0x76, 0x56, + 0x46, 0xe8, 0x85, 0x05, 0xfd, 0x08, 0x7f, 0x43, 0xc4, 0xe5, 0xd2, 0xed, 0x1f, 0x7d, 0xaa, 0x8a, + 0xb3, 0x80, 0xab, 0x13, 0x85, 0x41, 0x11, 0xa1, 0x5e, 0x37, 0xbb, 0x88, 0x42, 0x2d, 0x0d, 0x9b, + 0x5e, 0xe3, 0x58, 0xc3, 0x7a, 0x00, 0x9c, 0xa6, 0x4a, 0x8b, 0x8d, 0x05, 0x46, 0x01, 0x8b, 0x63, + 0x72, 0xcf, 0x83, 0xc3, 0x0f, 0x88, 0xc8, 0xbb, 0x70, 0xbc, 0x88, 0x7a, 0xe1, 0xec, 0x7e, 0xa0, + 0xb9, 0x8b, 0x56, 0xb1, 0xcc, 0x9c, 0x5e, 0xdd, 0x4c, 0xa7, 0x20, 0xe6, 0x12, 0xa9, 0xeb, 0xd2, + 0xc3, 0x98, 0xe9, 0x77, 0xfb, 0x40, 0x86, 0xa3, 0x85, 0xc9, 0x6b, 0x61, 0x7f, 0xb1, 0x0a, 0xfb, + 0xf0, 0x90, 0xa1, 0xf7, 0xbb, 0x43, 0x58, 0x41, 0x1f, 0x58, 0x7d, 0x5e, 0x23, 0x6a, 0x33, 0x3e, + 0xb2, 0xe1, 0xcf, 0xd5, 0xfc, 0x3d, 0x84, 0xd8, 0x8a, 0x8b, 0xdd, 0x34, 0xc9, 0x92, 0x4a, 0xa4, + 0x5f, 0x36, 0xab, 0xc1, 0x6c, 0x55, 0x15, 0xb2, 0x23, 0x42, 0x28, 0xd1, 0x05, 0xff, 0x33, 0xa5, + 0x36, 0x9d, 0xc3, 0x23, 0x4c, 0xf7, 0x8e, 0x42, 0xc9, 0x92, 0x9f, 0x71, 0x5d, 0xeb, 0x3d, 0x9d, + 0xd6, 0xc8, 0x04, 0xb2, 0x8e, 0x4e, 0x9d, 0x94, 0x90, 0x63, 0xd7, 0xc8, 0x12, 0x65, 0xac, 0xda, + 0x10, 0x02, 0x40, 0xff, 0x6f, 0x24, 0x0e, 0x85, 0xf2, 0x38, 0xc0, 0x9f, 0xce, 0x40, 0xfc, 0x39, + 0xea, 0xa0, 0xc9, 0xb0, 0x34, 0xe4, 0xb9, 0x2e, 0x1d, 0x8c, 0x77, 0x04, 0x53, 0x46, 0xba, 0x87, + 0x45, 0x08, 0xc7, 0xd2, 0x8c, 0xb2, 0x8c, 0x31, 0x06, 0xce, 0x04, 0x56, 0xe9, 0x78, 0xf2, 0x2d, + 0x69, 0x70, 0xba, 0xf1, 0x01, 0x25, 0x8b, 0xed, 0xc1, 0x83, 0x37, 0x67, 0x9d, 0x27, 0x98, 0x20, + 0xf4, 0xf9, 0x3a, 0xc3, 0xcc, 0xd1, 0x7b, 0x68, 0x39, 0x7d, 0x72, 0x69, 0xc6, 0x40, 0x64, 0x6a, + 0x68, 0x43, 0x38, 0x6d, 0x17, 0xca, 0xd3, 0xcd, 0x8e, 0x0d, 0x92, 0xa1, 0x3e, 0xce, 0xad, 0xfc, + 0x3a, 0xd9, 0x7b, 0xa8, 0x93, 0x5b, 0x48, 0x66, 0x34, 0xef, 0x70, 0xb3, 0xfb, 0x36, 0x10, 0xe9, + 0x2a, 0x28, 0x1d, 0xec, 0x70, 0xd8, 0x1c, 0x41, 0x47, 0xc9, 0x34, 0x1b, 0x91, 0x3e, 0x7f, 0x80, + 0x94, 0x35, 0xe9, 0xef, 0x7c, 0xa1, 0x70, 0xcb, 0xca, 0x35, 0xc4, 0x52, 0x8d, 0x41, 0x6d, 0x20, + 0xa4, 0xf0, 0xd5, 0x31, 0x23, 0x2d, 0x76, 0xc6, 0x04, 0xe7, 0x95, 0x89, 0xb2, 0x64, 0x6c, 0x1b, + 0x35, 0xda, 0x57, 0xce, 0x32, 0xac, 0x4b, 0x32, 0xa6, 0x49, 0x26, 0x67, 0xd1, 0x5f, 0x3c, 0xf3, + 0xd7, 0x14, 0xfe, 0x14, 0xfd, 0x1a, 0x95, 0x22, 0x6f, 0x8c, 0x06, 0xd0, 0xc7, 0x96, 0xbe, 0xfc, + 0x7f, 0x2c, 0xfd, 0x2b, 0xfe, 0xa8, 0xaa, 0x00, 0x5a, 0xa4, 0xe4, 0xc2, 0xf6, 0x98, 0xf2, 0xc3, + 0xa7, 0xbc, 0x47, 0x96, 0xfb, 0xbc, 0x86, 0xce, 0xa7, 0x4d, 0x8b, 0x12, 0xad, 0xd7, 0x79, 0xb6, + 0x40, 0x7b, 0xcb, 0x1a, 0xc5, 0x12, 0xf2, 0x4d, 0x41, 0x35, 0x5d, 0x10, 0xdf, 0xc7, 0x50, 0x4d, + 0x51, 0x15, 0xd2, 0xeb, 0x59, 0x13, 0xaa, 0xb7, 0x05, 0xa1, 0xf7, 0xbc, 0x8e, 0xd0, 0xeb, 0x14, + 0x93, 0x9c, 0xf1, 0xcb, 0xe5, 0x40, 0xbd, 0xf0, 0x25, 0x74, 0xa1, 0x99, 0xa9, 0xd9, 0xce, 0xd0, + 0xb8, 0x0a, 0xba, 0xb7, 0x53, 0x17, 0x93, 0xbe, 0x02, 0xd4, 0xb7, 0x6c, 0x82, 0xfa, 0x2a, 0x34, + 0x36, 0x85, 0x75, 0xb7, 0x92, 0x99, 0x85, 0xc9, 0xb4, 0x50, 0x74, 0x43, 0xcc, 0x1c, 0x43, 0x5e, + 0x41, 0x8d, 0x45, 0xcc, 0x2d, 0x1b, 0x2a, 0xbd, 0xa9, 0xca, 0x43, 0x45, 0x15, 0xbf, 0x01, 0x31, + 0x4b, 0x73, 0x59, 0xfb, 0x1f, 0xbc, 0x30, 0xcd, 0x20, 0x53, 0x34, 0x74, 0xa2, 0xce, 0xf2, 0xb2, + 0x97, 0x54, 0x36, 0x53, 0x10, 0xab, 0x1c, 0xbf, 0xa7, 0x8a, 0xaf, 0xde, 0xaa, 0xca, 0xef, 0x69, + 0x5b, 0x4d, 0x9e, 0x1e, 0xb5, 0x2e, 0xb1, 0x57, 0xde, 0x51, 0x37, 0x15, 0x38, 0xdd, 0x05, 0x19, + 0xef, 0x61, 0x28, 0xa0, 0x25, 0xd6, 0x2a, 0x1f, 0x2f, 0x8f, 0xbe, 0x9b, 0x1a, 0x7a, 0x9f, 0xae, + 0xeb, 0x61, 0x6b, 0xd2, 0xc6, 0xbc, 0xad, 0x36, 0x66, 0xdc, 0x89, 0xb7, 0xf5, 0x61, 0xe5, 0x6b, + 0xa6, 0x31, 0x7c, 0x63, 0xe8, 0x9d, 0x42, 0x5f, 0x75, 0x66, 0x5a, 0xe8, 0x85, 0xf3, 0x79, 0x5e, + 0x78, 0x11, 0xb6, 0xbf, 0xf7, 0xf3, 0x2d, 0x52, 0x61, 0xc2, 0xa9, 0xa5, 0x73, 0x97, 0x54, 0x57, + 0x1d, 0x72, 0x8c, 0x80, 0x0f, 0xff, 0x13, 0x96, 0x6f, 0x79, 0xbd, 0x45, 0x86, 0x2d, 0x1e, 0x39, + 0xf7, 0x27, 0x65, 0xed, 0x78, 0x03, 0x8f, 0xaf, 0x4a, 0x73, 0xc0, 0xc1, 0x7a, 0x3f, 0x3c, 0x54, + 0x5f, 0x7d, 0x34, 0x6b, 0xeb, 0x8f, 0x59, 0xde, 0xb7, 0x4a, 0x02, 0x0f, 0x47, 0x2f, 0x4f, 0x8e, + 0x3b, 0xd0, 0x95, 0xd7, 0xa3, 0xec, 0x82, 0xf9, 0x9f, 0x61, 0x6c, 0x8c, 0x0a, 0x31, 0x52, 0x29, + 0x46, 0xb3, 0x44, 0xd3, 0x0e, 0x51, 0x22, 0x08, 0x20, 0x15, 0xab, 0x8c, 0x77, 0xb4, 0xe4, 0x3b, + 0x3d, 0xfb, 0x3b, 0x3d, 0x85, 0x7b, 0xd8, 0xb6, 0x0b, 0x77, 0xae, 0x9f, 0xc3, 0x09, 0x17, 0xc7, + 0x48, 0x95, 0x77, 0x8e, 0x5f, 0x77, 0x2c, 0xda, 0x51, 0xde, 0xa9, 0x2e, 0xea, 0xda, 0x63, 0x7d, + 0x94, 0xa2, 0x36, 0x80, 0x1e, 0xb9, 0xb0, 0x0f, 0x54, 0xfd, 0x83, 0x90, 0x0e, 0x54, 0x3d, 0x7d, + 0xa0, 0xc2, 0xfe, 0x14, 0x11, 0x08, 0xfe, 0xef, 0x2c, 0x73, 0xde, 0x49, 0xd7, 0x5f, 0x1c, 0x2d, + 0x3b, 0x17, 0x50, 0x6b, 0xaf, 0x3f, 0x1b, 0xa0, 0x83, 0xfe, 0x09, 0x1f, 0x0d, 0x14, 0x4a, 0xe5, + 0x4a, 0x9d, 0xa4, 0xb2, 0x33, 0x60, 0x6d, 0xf5, 0xc9, 0x80, 0x07, 0x23, 0x96, 0x71, 0x7b, 0xf9, + 0x27, 0xa9, 0x35, 0xb6, 0x77, 0xc4, 0xce, 0xf6, 0x85, 0x48, 0x5d, 0xe6, 0x81, 0x93, 0x2e, 0x85, + 0x6f, 0x4c, 0x3c, 0xc0, 0xec, 0x05, 0xdb, 0xd1, 0xf6, 0xa6, 0xfa, 0xec, 0x13, 0x57, 0xa1, 0xbd, + 0xbd, 0xb0, 0x8b, 0xde, 0xde, 0xfd, 0x77, 0xa3, 0x42, 0x55, 0xca, 0x1b, 0xcf, 0x98, 0xb2, 0x6f, + 0x62, 0x8d, 0x08, 0x7c, 0xef, 0x99, 0xd6, 0x57, 0xd5, 0x77, 0x57, 0x0e, 0x18, 0x0b, 0x58, 0x33, + 0x05, 0x8a, 0x89, 0x99, 0xd4, 0x15, 0x7d, 0x5c, 0x32, 0xe9, 0xed, 0xcc, 0xfa, 0x2e, 0x56, 0x8b, + 0x0f, 0xda, 0xae, 0xfb, 0xc0, 0x7c, 0xfd, 0x32, 0xce, 0x2b, 0x66, 0x44, 0x77, 0x9d, 0x6a, 0x19, + 0x9c, 0x27, 0x10, 0xcb, 0xd4, 0xe9, 0xf8, 0x3e, 0xc9, 0x2c, 0xab, 0xa7, 0x3c, 0x9a, 0x76, 0x43, + 0x85, 0xa2, 0x78, 0x6e, 0xa3, 0x48, 0xcd, 0x42, 0x9c, 0x34, 0x3e, 0xc8, 0xe4, 0xd3, 0x7c, 0x72, + 0x83, 0x56, 0xee, 0x4a, 0xdd, 0xb8, 0x23, 0x8c, 0x69, 0x90, 0x87, 0x2e, 0xd0, 0x67, 0x49, 0xd0, + 0x55, 0x33, 0xeb, 0x9a, 0x3d, 0x01, 0x16, 0x42, 0x64, 0x0e, 0x22, 0xcf, 0xb3, 0x8d, 0xed, 0xb6, + 0x13, 0x91, 0x91, 0x3b, 0x8f, 0x34, 0xa9, 0xcf, 0xca, 0xb7, 0xec, 0x6d, 0xd6, 0xde, 0x10, 0x15, + 0xde, 0x90, 0xaa, 0xeb, 0x4d, 0x95, 0x02, 0xaf, 0x6a, 0x05, 0x78, 0x85, 0xf5, 0x1e, 0xdf, 0xcb, + 0xe9, 0xd1, 0xae, 0xdc, 0xa3, 0x57, 0x06, 0x9f, 0x11, 0xcd, 0x9d, 0xf8, 0xb7, 0x63, 0xd9, 0x57, + 0x5f, 0x84, 0xdf, 0x79, 0x16, 0x85, 0x3c, 0xbd, 0xee, 0x6c, 0x2a, 0xb9, 0xb8, 0x62, 0x0a, 0x2a, + 0x7b, 0xf4, 0xf4, 0x0b, 0x24, 0xb3, 0xb0, 0x16, 0x59, 0xbc, 0x6f, 0xeb, 0x2a, 0x20, 0x8d, 0x45, + 0x8b, 0x0a, 0x38, 0x69, 0x9a, 0x94, 0x05, 0x68, 0x97, 0x35, 0x28, 0x15, 0x03, 0x48, 0x76, 0x3a, + 0xb5, 0xe3, 0x01, 0xd7, 0x0b, 0x8d, 0x4d, 0xba, 0x86, 0xeb, 0x25, 0x8b, 0x74, 0x17, 0xc6, 0x9b, + 0x35, 0xc3, 0x58, 0xcd, 0xb7, 0xf9, 0x12, 0xa2, 0xcc, 0x1a, 0xae, 0xa9, 0x52, 0x02, 0x5b, 0x16, + 0xcd, 0x36, 0x37, 0x25, 0x7a, 0x7d, 0x53, 0x90, 0x2d, 0x63, 0x59, 0x89, 0x3f, 0x68, 0x2d, 0xc8, + 0xb2, 0x18, 0xdf, 0x40, 0x09, 0x77, 0x7a, 0x8b, 0x4d, 0xbf, 0xa8, 0xfa, 0xfb, 0x19, 0xf4, 0x77, + 0xab, 0x89, 0xd0, 0x5d, 0xd5, 0x9d, 0x33, 0x8e, 0x2a, 0x2c, 0x2f, 0xe9, 0xcf, 0x0f, 0x0e, 0xf6, + 0xf7, 0x78, 0x55, 0x0f, 0xf7, 0xfa, 0xb0, 0xef, 0x8a, 0x19, 0xfc, 0xe8, 0xd9, 0x32, 0x35, 0xa9, + 0xef, 0x1a, 0x43, 0x41, 0x1f, 0x65, 0xea, 0xea, 0xbb, 0xa7, 0xbd, 0x10, 0x7a, 0xbe, 0x5c, 0x52, + 0xd3, 0xaf, 0x29, 0xb9, 0x69, 0x46, 0x55, 0x76, 0x5d, 0xf2, 0xb0, 0xbd, 0xe4, 0x1f, 0x36, 0x2b, + 0xb8, 0xa3, 0x25, 0x5c, 0x5d, 0xfe, 0x15, 0xa3, 0xaf, 0xb9, 0x7d, 0x3c, 0x66, 0xf4, 0x2d, 0x25, + 0xaf, 0x69, 0x8c, 0x88, 0xa7, 0x7a, 0x0d, 0x58, 0x62, 0xa2, 0x91, 0x4b, 0xf7, 0xec, 0xfd, 0xcd, + 0x35, 0xea, 0xf2, 0x2d, 0x3f, 0xcf, 0x8f, 0xf9, 0x4d, 0x27, 0x13, 0x20, 0x61, 0x8d, 0xaa, 0x0e, + 0x1c, 0x1e, 0xe1, 0x60, 0xd6, 0x97, 0xba, 0x81, 0x12, 0x8f, 0x08, 0x98, 0xbc, 0x33, 0xd2, 0xa7, + 0xb6, 0x2d, 0x89, 0x5d, 0xf3, 0x9f, 0x5d, 0xff, 0x95, 0x0d, 0xb9, 0x17, 0x86, 0xd6, 0x5e, 0x40, + 0x6a, 0x08, 0x97, 0xf9, 0xd7, 0x52, 0x54, 0x87, 0x6a, 0x61, 0xe6, 0xcd, 0x41, 0x6f, 0x0d, 0xff, + 0xa9, 0x25, 0xde, 0xde, 0xcc, 0xe7, 0xcb, 0xd2, 0x33, 0x2c, 0x8c, 0x4a, 0xbc, 0xae, 0x65, 0x75, + 0xec, 0x66, 0xb3, 0xaa, 0x82, 0xb4, 0xb4, 0xec, 0xb2, 0x93, 0x87, 0xed, 0xcd, 0x61, 0x6d, 0xef, + 0x5a, 0x3b, 0x37, 0x05, 0x89, 0xa1, 0x8a, 0x52, 0x31, 0xad, 0x06, 0x9b, 0x2e, 0x93, 0x27, 0x52, + 0xa7, 0xa4, 0x86, 0xeb, 0x86, 0x1f, 0x4e, 0x5b, 0xbf, 0x4c, 0xba, 0x96, 0xcd, 0x3f, 0x2d, 0x07, + 0xa8, 0xfe, 0xf8, 0xb6, 0xe5, 0x52, 0x47, 0x47, 0x7e, 0x51, 0x47, 0xe3, 0x93, 0xc2, 0x81, 0xd1, + 0xcd, 0x0f, 0xcc, 0x9b, 0x16, 0x3d, 0x78, 0xd5, 0xe6, 0x1c, 0x29, 0x63, 0xf7, 0xdb, 0x62, 0x53, + 0xac, 0x48, 0x26, 0x72, 0x4a, 0x43, 0x14, 0xa9, 0x42, 0x79, 0x96, 0x63, 0x3e, 0xe2, 0x10, 0xc6, + 0xf6, 0x50, 0x63, 0x43, 0x9e, 0x47, 0x94, 0xf1, 0x2e, 0x04, 0xa2, 0x34, 0x6b, 0x70, 0x8f, 0x9a, + 0xf8, 0xb1, 0x84, 0x19, 0x1b, 0xd8, 0x47, 0x1f, 0x75, 0x9a, 0x81, 0x61, 0xd0, 0x0a, 0xc9, 0x1e, + 0x2c, 0x31, 0xba, 0xdb, 0xb7, 0x41, 0x95, 0x5b, 0x81, 0x6e, 0xb4, 0x39, 0x14, 0x2d, 0xfa, 0x74, + 0xb6, 0xa8, 0x5d, 0x92, 0x64, 0x96, 0xaa, 0xd2, 0x61, 0xa9, 0x2a, 0x09, 0x22, 0x0b, 0xaf, 0x8d, + 0x13, 0x8a, 0x3e, 0xfa, 0x65, 0x97, 0x78, 0x2f, 0x15, 0xe1, 0x66, 0xb8, 0xa1, 0x17, 0xfe, 0xc0, + 0xf6, 0xb8, 0xac, 0x1a, 0x9f, 0x7e, 0x73, 0xff, 0xd7, 0x7e, 0xb9, 0x04, 0x29, 0x6f, 0x81, 0x07, + 0x44, 0x89, 0x32, 0x10, 0x8b, 0x60, 0x75, 0x01, 0x18, 0x42, 0xdd, 0x72, 0xbf, 0xc6, 0x42, 0x10, + 0x69, 0x0f, 0xe5, 0xe7, 0x20, 0x65, 0xda, 0x94, 0x59, 0x8e, 0x6f, 0xb6, 0xb4, 0xaa, 0xe3, 0xb5, + 0x94, 0x47, 0x75, 0xc4, 0xc0, 0xb2, 0x28, 0xaf, 0xc0, 0x08, 0x3a, 0x37, 0x18, 0x41, 0xcc, 0xbc, + 0xcd, 0xa8, 0x63, 0x41, 0xd9, 0x6c, 0x32, 0xbe, 0xf6, 0xc7, 0x4d, 0x26, 0x9c, 0x26, 0x13, 0x44, + 0x3c, 0xe5, 0x34, 0x19, 0x57, 0x11, 0xbd, 0xe6, 0xd9, 0xaa, 0xe3, 0x60, 0x83, 0x55, 0x86, 0x7b, + 0xc3, 0x32, 0x41, 0xe1, 0xc9, 0xda, 0xba, 0x94, 0x85, 0x17, 0x7a, 0x4a, 0x09, 0x81, 0x40, 0x7e, + 0xf9, 0x15, 0x67, 0x19, 0x2e, 0x16, 0xa5, 0x85, 0x27, 0xe0, 0xfa, 0xdd, 0x96, 0xf6, 0xe2, 0xc9, + 0x1c, 0x73, 0xee, 0x94, 0xd5, 0x93, 0x43, 0x79, 0x6f, 0x96, 0x6b, 0x31, 0x8f, 0xb3, 0x75, 0x98, + 0xc7, 0x58, 0xc3, 0x70, 0x2b, 0x96, 0x3e, 0x07, 0x2e, 0xc0, 0x31, 0xf4, 0x96, 0x65, 0xd2, 0x73, + 0x91, 0x8e, 0xaf, 0x13, 0xeb, 0x55, 0x0d, 0xf1, 0xd8, 0x1e, 0x0f, 0x35, 0xec, 0xe3, 0xd9, 0x5d, + 0xe1, 0xc0, 0xc2, 0x61, 0xd7, 0xe2, 0x88, 0x24, 0x77, 0x68, 0xf4, 0xf8, 0x8f, 0xad, 0x81, 0x96, + 0x61, 0xb3, 0xa1, 0x93, 0x1b, 0x0e, 0x62, 0x34, 0x61, 0x35, 0x3c, 0x4f, 0x4b, 0x24, 0x37, 0xcb, + 0x60, 0x28, 0xdf, 0x46, 0x69, 0x70, 0x9d, 0x44, 0xa3, 0x20, 0xcf, 0xa2, 0x3c, 0x18, 0x17, 0x49, + 0xd4, 0x5a, 0x6f, 0x62, 0x85, 0xd3, 0x78, 0xd0, 0xd0, 0x23, 0xc9, 0x62, 0xa1, 0x68, 0x6d, 0x5a, + 0xe0, 0x63, 0x27, 0x1b, 0xc0, 0xc7, 0x5e, 0xac, 0x87, 0x8f, 0x0d, 0x66, 0xed, 0x71, 0x10, 0xf6, + 0x59, 0x75, 0x43, 0x41, 0xc3, 0x02, 0x72, 0x8e, 0x27, 0x01, 0xff, 0x86, 0x1c, 0xe2, 0x0b, 0xf9, + 0x3b, 0x9f, 0xc6, 0xb3, 0x05, 0xff, 0x84, 0x91, 0x41, 0x17, 0xbc, 0x98, 0x10, 0x5a, 0xb8, 0xf7, + 0x02, 0x0a, 0xdb, 0xa4, 0x2f, 0x3d, 0x14, 0x57, 0x8f, 0xa1, 0x01, 0x2f, 0x28, 0x75, 0xc4, 0xea, + 0xac, 0x8e, 0x58, 0x2d, 0xdd, 0x26, 0x1a, 0x36, 0xed, 0x60, 0xd4, 0xf4, 0x2b, 0x68, 0xfa, 0x21, + 0xa7, 0xe4, 0x64, 0x3c, 0xed, 0xa6, 0x87, 0x25, 0xde, 0x74, 0x7c, 0x78, 0x48, 0x8f, 0x08, 0x51, + 0x5d, 0xe1, 0x71, 0x20, 0x52, 0x92, 0xca, 0x32, 0xa6, 0x28, 0x7c, 0xe1, 0xf6, 0x30, 0xe3, 0xe8, + 0xa3, 0xdd, 0xd6, 0x2c, 0x8f, 0xb2, 0x46, 0x26, 0xc6, 0x31, 0x02, 0xdf, 0x10, 0x24, 0xad, 0x9b, + 0x90, 0x34, 0x7d, 0xa3, 0x87, 0x87, 0xad, 0x46, 0x38, 0x52, 0x0e, 0xda, 0x79, 0x75, 0x2e, 0xd4, + 0x4a, 0x28, 0x01, 0x3b, 0x5a, 0x87, 0x66, 0xca, 0x43, 0x73, 0xc4, 0x03, 0x89, 0x7c, 0xd2, 0xd3, + 0x43, 0x06, 0xe8, 0xb6, 0xb6, 0x37, 0x07, 0x33, 0xbc, 0x6c, 0x60, 0x86, 0x0f, 0xf8, 0x92, 0xbd, + 0xa1, 0xa8, 0x53, 0xad, 0x5b, 0x34, 0x5b, 0xbc, 0xd9, 0xba, 0xb9, 0x6c, 0xdd, 0xfc, 0xb0, 0xe2, + 0xe6, 0xca, 0x8f, 0xaa, 0x46, 0xc3, 0x28, 0x8d, 0x40, 0xa5, 0x5b, 0xb7, 0x50, 0x9d, 0x51, 0xac, + 0xee, 0x0c, 0x6a, 0x47, 0x1e, 0x92, 0x04, 0xe6, 0x12, 0xe7, 0x81, 0x7a, 0xcc, 0x67, 0x1f, 0xe3, + 0x62, 0x81, 0xd5, 0x9c, 0x34, 0x21, 0x98, 0xa9, 0xf1, 0x1b, 0x2b, 0xe5, 0x64, 0x0d, 0x1c, 0xbb, + 0x33, 0x71, 0xb2, 0xf5, 0x13, 0x27, 0xd1, 0x13, 0xa7, 0x52, 0xc5, 0x82, 0x89, 0x53, 0xca, 0xdf, + 0x30, 0x71, 0xb2, 0x80, 0x3a, 0xa5, 0x0e, 0x3d, 0x8d, 0xe0, 0x26, 0x14, 0xa5, 0x72, 0x21, 0xbd, + 0x6d, 0x58, 0x6a, 0x74, 0x7d, 0xd2, 0x1e, 0x96, 0xce, 0x44, 0x4b, 0x5c, 0x9f, 0x14, 0x39, 0xcf, + 0x0c, 0xff, 0xe3, 0xb0, 0x4d, 0xc0, 0x00, 0x69, 0xe2, 0x0a, 0x15, 0x8f, 0xd7, 0xb0, 0xf9, 0x25, + 0x20, 0x89, 0x19, 0x9b, 0x0e, 0xbc, 0x91, 0xae, 0x10, 0x70, 0x64, 0xda, 0x42, 0x2f, 0x07, 0x95, + 0xd5, 0xee, 0x6e, 0xb0, 0x6c, 0x1b, 0xc6, 0x61, 0x07, 0x1b, 0x8a, 0xef, 0x6c, 0xb8, 0xd5, 0x2f, + 0xe2, 0x76, 0xc5, 0xde, 0x8d, 0x2b, 0xe5, 0xd2, 0x25, 0xbe, 0xb6, 0x77, 0x63, 0x56, 0x1f, 0x57, + 0xe5, 0xf5, 0xd1, 0xcd, 0xea, 0xe3, 0xf2, 0x9c, 0x7e, 0x4a, 0x56, 0xe4, 0x03, 0xeb, 0xf6, 0xb2, + 0x9d, 0xa5, 0x99, 0xcf, 0xaa, 0x02, 0x5d, 0xbb, 0x05, 0xba, 0x5e, 0x55, 0xa0, 0x5e, 0x7f, 0x55, + 0x46, 0xbd, 0xbe, 0x9b, 0x53, 0x8f, 0xce, 0xb7, 0x52, 0x6f, 0x76, 0x8c, 0xda, 0x9c, 0x7a, 0x86, + 0xa7, 0xab, 0x6a, 0x58, 0xba, 0x35, 0x2c, 0x93, 0x75, 0xb9, 0x7d, 0x98, 0xad, 0xc8, 0xad, 0x9a, + 0x45, 0xcb, 0x06, 0x6c, 0x3d, 0x1f, 0x3a, 0x7d, 0xa1, 0x7a, 0xed, 0x71, 0xe7, 0xaf, 0xa5, 0x43, + 0x4e, 0x54, 0x51, 0xd5, 0xa8, 0xb9, 0xb8, 0x3c, 0xb9, 0x2b, 0x56, 0x94, 0x17, 0xb6, 0xe4, 0xad, + 0x47, 0x9c, 0x01, 0x5a, 0xf2, 0xff, 0xb1, 0x58, 0xd5, 0xba, 0x1b, 0xed, 0xf6, 0xee, 0x9d, 0xc1, + 0xcb, 0xf4, 0x6d, 0x21, 0xc4, 0x1f, 0x42, 0x5f, 0x0d, 0xb7, 0x4e, 0xda, 0x73, 0xbc, 0x32, 0xe9, + 0x55, 0x1e, 0x2c, 0xe8, 0x0c, 0x60, 0x44, 0x0e, 0x3d, 0x7c, 0xaa, 0x06, 0x31, 0x5c, 0x04, 0xe6, + 0xca, 0xa6, 0xb0, 0x6e, 0x23, 0xcb, 0x0b, 0x97, 0x8d, 0x7b, 0x9c, 0x5d, 0xc8, 0x16, 0xfd, 0x4e, + 0xe1, 0x34, 0xe9, 0xaf, 0x38, 0x73, 0x57, 0x6f, 0xff, 0xa5, 0x0b, 0xc3, 0xb7, 0xae, 0x63, 0x31, + 0xb4, 0x20, 0x35, 0xea, 0xf0, 0x18, 0xdb, 0x0a, 0x1e, 0xa3, 0x8e, 0x1c, 0x1b, 0xc9, 0xa1, 0xb0, + 0xad, 0xf9, 0x5f, 0xeb, 0x49, 0xcf, 0x97, 0x25, 0xad, 0x03, 0x0d, 0x5b, 0x28, 0xb3, 0x2d, 0x23, + 0x62, 0x7a, 0x6f, 0x5a, 0x1d, 0x96, 0xea, 0xe9, 0xfd, 0x85, 0x98, 0x9a, 0x0b, 0x2a, 0xf4, 0x58, + 0xef, 0x4a, 0x8d, 0x88, 0xfc, 0xa8, 0x8a, 0x2a, 0x2a, 0xbc, 0x56, 0x70, 0xe4, 0x4d, 0xaa, 0xbb, + 0x32, 0x83, 0xc7, 0x55, 0x1a, 0x92, 0x45, 0xa2, 0x5e, 0x2d, 0x1c, 0x9e, 0xb5, 0xd1, 0xd9, 0x18, + 0x93, 0x4d, 0x34, 0x3c, 0xbf, 0x3e, 0xce, 0x11, 0xd1, 0xa6, 0xdb, 0x36, 0xca, 0xcb, 0xfb, 0xd6, + 0xbc, 0x1c, 0x7c, 0xac, 0xc6, 0xb4, 0xd1, 0xf8, 0x58, 0xad, 0x59, 0x26, 0xed, 0x59, 0x36, 0x40, + 0xb5, 0x1a, 0xd9, 0x32, 0xae, 0x0e, 0xf4, 0xa0, 0x04, 0x05, 0x44, 0xc1, 0xfd, 0xe1, 0x41, 0x1c, + 0xed, 0xfb, 0xee, 0x24, 0x5a, 0x2c, 0xea, 0x1b, 0xbc, 0x42, 0xd4, 0x22, 0xfc, 0x19, 0xb9, 0x79, + 0xef, 0x53, 0xef, 0xf3, 0xdc, 0x9a, 0xec, 0xc7, 0x65, 0xd4, 0xb7, 0x03, 0xfa, 0x10, 0x20, 0x7f, + 0xf6, 0x60, 0x47, 0xaf, 0x4d, 0x1e, 0xa7, 0x58, 0x8c, 0x7c, 0x83, 0xc5, 0xb2, 0x00, 0x0b, 0xeb, + 0x65, 0x2b, 0x75, 0xd9, 0xe4, 0x87, 0x59, 0x16, 0xcb, 0xf7, 0xe3, 0xad, 0xad, 0x4a, 0x7e, 0x5a, + 0x06, 0xf5, 0x29, 0x48, 0x3e, 0xf4, 0xf0, 0x21, 0xa8, 0x89, 0x6a, 0xce, 0xe7, 0xdf, 0xe5, 0xcd, + 0x05, 0x10, 0x27, 0xbd, 0xa8, 0x4f, 0x00, 0x3a, 0x4f, 0x58, 0xa2, 0x3d, 0x62, 0x14, 0x2e, 0x90, + 0x39, 0x42, 0xa9, 0x6f, 0xba, 0x28, 0x8f, 0xca, 0xdb, 0xf0, 0xca, 0x0d, 0x01, 0x11, 0x4b, 0xb4, + 0x4b, 0xc2, 0x1d, 0x9e, 0xd8, 0xec, 0x27, 0x83, 0x2b, 0x72, 0x82, 0xea, 0x4b, 0xe1, 0xf9, 0x87, + 0x31, 0xf1, 0x4e, 0x60, 0xf6, 0xb0, 0x3e, 0x2e, 0x02, 0xe9, 0x73, 0x2e, 0x79, 0xbb, 0xaa, 0x40, + 0xa5, 0xf6, 0x8d, 0xff, 0xe5, 0xef, 0xa9, 0xf9, 0x9d, 0xe1, 0x05, 0x4b, 0xa7, 0x3c, 0xb0, 0xfa, + 0xe5, 0x19, 0x62, 0x4d, 0x07, 0xd6, 0xb1, 0xe6, 0x5d, 0x3e, 0xc2, 0xeb, 0x1c, 0x52, 0x57, 0xda, + 0xf1, 0x76, 0x94, 0x0f, 0xc1, 0x8e, 0xd7, 0xe9, 0x12, 0x93, 0xa6, 0xef, 0xad, 0x58, 0xf1, 0xc8, + 0x96, 0xa9, 0x00, 0x63, 0xa1, 0xaf, 0x66, 0xc7, 0x75, 0x57, 0x4d, 0xb6, 0xc6, 0xea, 0x15, 0xdc, + 0x87, 0x6a, 0x1f, 0x1f, 0xf6, 0x88, 0x51, 0xe3, 0x38, 0x5e, 0x66, 0x64, 0x05, 0x61, 0xeb, 0xf8, + 0xa8, 0x7f, 0x10, 0xfa, 0x30, 0xbf, 0x0b, 0x28, 0xa5, 0x74, 0x9a, 0x3f, 0x7e, 0x0d, 0xa7, 0x2e, + 0x58, 0x02, 0xc6, 0xa2, 0x83, 0x06, 0xdb, 0x1c, 0x64, 0x19, 0x51, 0x96, 0x7b, 0x8a, 0x79, 0x06, + 0x41, 0xb1, 0xba, 0xb3, 0xf7, 0x96, 0x66, 0x8c, 0x94, 0x4e, 0xf2, 0xcb, 0xf8, 0xc5, 0xf7, 0x71, + 0xb7, 0x1a, 0x7a, 0xda, 0x61, 0xdd, 0x33, 0xee, 0xf8, 0xfe, 0xce, 0xec, 0x58, 0x41, 0x45, 0xce, + 0x8d, 0x34, 0xd9, 0xa6, 0x5f, 0xf3, 0xab, 0x21, 0x1c, 0xac, 0x95, 0x2a, 0xd9, 0x38, 0x77, 0x06, + 0x25, 0xb7, 0x2f, 0xfe, 0xc5, 0x66, 0x8e, 0x90, 0x91, 0x65, 0x6c, 0x95, 0x86, 0xdc, 0xa7, 0x2c, + 0xa1, 0x1a, 0x06, 0xa6, 0xfd, 0xba, 0x6c, 0xbe, 0x9e, 0x38, 0xaf, 0x27, 0x57, 0x9f, 0x1b, 0xce, + 0xb9, 0xd2, 0xab, 0x06, 0x4f, 0xc2, 0x84, 0x49, 0x55, 0x0b, 0xe5, 0xba, 0x13, 0x6e, 0xb8, 0xf4, + 0x82, 0x69, 0xe9, 0x1e, 0x2b, 0x26, 0xe2, 0xd3, 0x50, 0x5b, 0x1a, 0x36, 0xcb, 0x73, 0x65, 0xc1, + 0xd7, 0xc2, 0x66, 0x55, 0x7c, 0x99, 0x97, 0x36, 0x2a, 0x6c, 0xe6, 0x2f, 0x18, 0x51, 0x81, 0xc7, + 0x41, 0x89, 0x03, 0x1a, 0x4e, 0xec, 0x06, 0xda, 0xcc, 0x11, 0x4a, 0x4c, 0xa6, 0x68, 0xd1, 0x75, + 0x38, 0x51, 0x88, 0xf8, 0xf7, 0xc5, 0x8b, 0x41, 0x87, 0x27, 0x41, 0x87, 0x34, 0xd7, 0x9d, 0x2f, + 0x88, 0x56, 0x60, 0xf9, 0x1c, 0x74, 0xe8, 0xea, 0x01, 0xa3, 0x9d, 0x58, 0x13, 0x67, 0xee, 0xf9, + 0x47, 0xbb, 0xbd, 0x47, 0x7f, 0xea, 0xf4, 0x0b, 0x1c, 0x5c, 0xee, 0x25, 0x88, 0x5d, 0x92, 0x75, + 0x26, 0xcc, 0x22, 0x8b, 0xd5, 0xb3, 0x3f, 0xca, 0x9f, 0x23, 0x60, 0xb7, 0xc6, 0x54, 0xfd, 0xb3, + 0xd5, 0x93, 0x7a, 0x7e, 0x02, 0x1e, 0x80, 0x73, 0x9b, 0x80, 0x81, 0x3d, 0x45, 0xa7, 0xc6, 0xeb, + 0xfc, 0x22, 0x99, 0x7e, 0xc1, 0x69, 0x49, 0xe8, 0x05, 0x3c, 0x37, 0xe1, 0x4c, 0xc5, 0x03, 0x0b, + 0xfe, 0xcc, 0x70, 0xe2, 0xc5, 0xb3, 0x63, 0x18, 0x23, 0x20, 0x5c, 0xbd, 0xb7, 0x60, 0x60, 0xce, + 0xa5, 0xbf, 0x8d, 0xd1, 0x0c, 0xd8, 0x6c, 0xcf, 0x25, 0x2c, 0x11, 0x20, 0x1e, 0xdb, 0x0b, 0xc0, + 0xe9, 0x88, 0x50, 0xa5, 0x71, 0xe2, 0xf3, 0x94, 0x9f, 0x1d, 0x37, 0xe7, 0x7c, 0x89, 0xc8, 0xf2, + 0xf9, 0x90, 0x2f, 0xba, 0x7c, 0x9a, 0x1d, 0x9f, 0xc1, 0x42, 0xee, 0xdc, 0x8c, 0x81, 0x20, 0x2e, + 0x54, 0x33, 0x38, 0x6f, 0x06, 0xdd, 0x36, 0x83, 0xd0, 0x6b, 0x15, 0x66, 0x8c, 0xf9, 0xc0, 0x3c, + 0x8b, 0x66, 0xef, 0x03, 0x18, 0x48, 0x91, 0xb7, 0xac, 0xb5, 0x10, 0xed, 0x50, 0x08, 0x6e, 0xa3, + 0x4c, 0xdc, 0xa5, 0x5f, 0x68, 0x3d, 0xba, 0x50, 0x3d, 0xb6, 0xe7, 0xc1, 0xee, 0x85, 0x43, 0x11, + 0x67, 0xbe, 0xfe, 0x10, 0x0e, 0x4d, 0x0a, 0xc5, 0x2a, 0xfd, 0x9e, 0x3a, 0xef, 0xa0, 0x71, 0x30, + 0xcc, 0xb7, 0x20, 0x51, 0x24, 0x4a, 0x09, 0x36, 0x87, 0x31, 0x84, 0x04, 0x75, 0x40, 0x93, 0xd9, + 0x75, 0xf5, 0x0e, 0x5a, 0x13, 0x89, 0xbb, 0x2c, 0x68, 0x13, 0x09, 0x67, 0x66, 0x23, 0x8a, 0xb0, + 0x5f, 0xa8, 0x5a, 0x30, 0x89, 0x50, 0x57, 0xdd, 0xef, 0xc0, 0x77, 0x6a, 0x20, 0xb9, 0xa1, 0x78, + 0xa3, 0xdb, 0x1e, 0x45, 0x9b, 0x7b, 0x92, 0x7a, 0x8c, 0x5e, 0x4d, 0xa2, 0x01, 0x94, 0x7b, 0x50, + 0xcb, 0xb7, 0xf7, 0x98, 0x7c, 0xf7, 0x25, 0xf9, 0x24, 0x5e, 0x42, 0xf5, 0xcc, 0x4a, 0xb9, 0x72, + 0x25, 0x5c, 0xa6, 0x18, 0x55, 0x05, 0x72, 0xf7, 0x5a, 0x95, 0x11, 0xee, 0xed, 0xb5, 0xdb, 0x22, + 0x6d, 0x66, 0x8f, 0x0b, 0xd4, 0x50, 0x0e, 0x9c, 0x36, 0x9c, 0x64, 0xd3, 0x61, 0xd7, 0xcd, 0xf3, + 0x02, 0x35, 0xf6, 0x0b, 0xdf, 0x1d, 0x71, 0x88, 0xbb, 0xd6, 0xe8, 0x61, 0xdb, 0x60, 0xb5, 0xd4, + 0x5c, 0x45, 0x57, 0x17, 0xd8, 0x46, 0x32, 0x69, 0x62, 0x39, 0x3f, 0xa2, 0x39, 0x5d, 0xcf, 0x9a, + 0x2d, 0x4c, 0x6b, 0xd5, 0x02, 0x0e, 0x66, 0x8e, 0x02, 0xde, 0x60, 0xa8, 0xcd, 0x11, 0x08, 0x2f, + 0x16, 0xb6, 0x72, 0x7d, 0x19, 0xfa, 0x2c, 0x29, 0xba, 0xfd, 0x36, 0xfb, 0xda, 0xfd, 0x3d, 0x91, + 0xa7, 0x0c, 0x90, 0x68, 0xb9, 0x5e, 0x55, 0xf9, 0x0e, 0xc7, 0xf8, 0x09, 0x71, 0xc4, 0x74, 0x8b, + 0xcb, 0xf1, 0x69, 0x55, 0x74, 0x2b, 0x0b, 0x45, 0x16, 0xa6, 0x08, 0x2c, 0x85, 0x13, 0x24, 0x91, + 0xe1, 0x76, 0x50, 0x1b, 0x4d, 0x9d, 0x56, 0x25, 0x70, 0xd9, 0x7b, 0xa4, 0x3e, 0xca, 0xa8, 0xc8, + 0x1c, 0x64, 0xda, 0xa5, 0xf4, 0x40, 0xc8, 0xfb, 0x53, 0xc7, 0x00, 0x25, 0xd8, 0x30, 0x14, 0xd3, + 0xae, 0x10, 0xb3, 0x59, 0xdf, 0x73, 0x79, 0x25, 0x01, 0x3f, 0xbd, 0x02, 0xd6, 0x6c, 0x64, 0xa7, + 0x9c, 0xc3, 0x79, 0x72, 0x7e, 0x15, 0xc1, 0xb6, 0x0c, 0xff, 0xdf, 0x46, 0x68, 0x8b, 0x02, 0xb9, + 0xdd, 0xbe, 0x31, 0x73, 0x10, 0xba, 0xe4, 0xce, 0x3b, 0x88, 0x41, 0x78, 0x91, 0xcf, 0xc5, 0xde, + 0x95, 0x1d, 0x6d, 0xff, 0x79, 0x2d, 0x9e, 0xbf, 0xb8, 0x83, 0x36, 0x17, 0x5d, 0x0a, 0x1c, 0x8d, + 0xcb, 0x2e, 0x24, 0xd8, 0xa5, 0x12, 0xf9, 0x87, 0x98, 0x05, 0x17, 0x0e, 0x02, 0x17, 0xa6, 0x2d, + 0x05, 0x23, 0xee, 0x62, 0x93, 0xa1, 0x1b, 0x50, 0x9d, 0x02, 0x4c, 0xb7, 0x9b, 0xc4, 0x94, 0xb0, + 0x5b, 0x18, 0xba, 0x61, 0xe0, 0x52, 0x2d, 0x69, 0x40, 0xee, 0x22, 0x70, 0x79, 0x96, 0xf4, 0x8b, + 0xcb, 0xc0, 0x25, 0x59, 0x32, 0x10, 0xde, 0x3c, 0x80, 0xe0, 0x78, 0x6f, 0x7f, 0xe2, 0x4a, 0xdc, + 0x9f, 0x92, 0xed, 0xc3, 0xb2, 0x82, 0xf4, 0x1a, 0x0a, 0xbc, 0xda, 0x80, 0xfb, 0x84, 0x23, 0xd2, + 0xee, 0xc5, 0x41, 0xc6, 0x9b, 0xcd, 0x0e, 0xec, 0x95, 0x55, 0x7e, 0x2a, 0xb3, 0x79, 0xee, 0xfb, + 0x9a, 0x41, 0x69, 0xa2, 0x4b, 0x52, 0x9a, 0xb0, 0x6c, 0xba, 0x1e, 0xe5, 0x6a, 0xdf, 0xf7, 0x24, + 0xe9, 0x8c, 0x53, 0xec, 0x1b, 0x11, 0x8c, 0x9c, 0x90, 0x72, 0x54, 0x49, 0x67, 0x90, 0x20, 0x69, + 0x0e, 0x53, 0xbb, 0x19, 0xff, 0xae, 0x8b, 0x92, 0x3a, 0xb0, 0xc5, 0x06, 0x31, 0xd8, 0x0e, 0xfe, + 0x55, 0x07, 0x27, 0x20, 0xa2, 0x24, 0x45, 0xbe, 0xf7, 0x8a, 0x4b, 0x50, 0xde, 0x7e, 0xc8, 0x7f, + 0xb9, 0x1c, 0x77, 0x61, 0xa4, 0xa5, 0x30, 0xd2, 0x60, 0x94, 0xa9, 0xb1, 0x56, 0xcf, 0xb5, 0xe5, + 0xae, 0x6f, 0x3b, 0x35, 0xa8, 0xb7, 0x84, 0x6e, 0xf4, 0x9b, 0xd1, 0x68, 0xd4, 0xd9, 0xed, 0x1d, + 0x7c, 0x17, 0x74, 0x90, 0xd9, 0x1b, 0xbd, 0x93, 0x8b, 0x1d, 0x2f, 0xc0, 0xbf, 0x97, 0xf2, 0xef, + 0x18, 0xb6, 0x70, 0x5c, 0x8e, 0x56, 0x94, 0x70, 0xd4, 0x56, 0xbe, 0x5f, 0xff, 0x92, 0xf2, 0x85, + 0x61, 0xb8, 0x59, 0xf9, 0xac, 0x2f, 0xff, 0x43, 0x37, 0xac, 0xdd, 0x5b, 0x9f, 0x45, 0x0a, 0xa7, + 0x13, 0x33, 0x4b, 0x60, 0x98, 0xf0, 0xad, 0x7d, 0x7f, 0xde, 0x03, 0xe1, 0x8f, 0x15, 0x5f, 0x9f, + 0xc5, 0x17, 0xe4, 0x99, 0x78, 0xf2, 0x04, 0xa9, 0x34, 0x08, 0x8e, 0xd0, 0x5e, 0x3a, 0xe5, 0x35, + 0x7f, 0xd1, 0x9a, 0x42, 0x1b, 0x57, 0x4c, 0x0a, 0x9d, 0x89, 0x4d, 0xfa, 0x63, 0x0f, 0xd9, 0x41, + 0xc3, 0x68, 0x68, 0xe6, 0xca, 0x73, 0x1f, 0x51, 0x5a, 0xf9, 0x80, 0xac, 0xa7, 0xbc, 0xf7, 0x0d, + 0x62, 0x1f, 0xdb, 0x58, 0x8f, 0x30, 0x15, 0xe4, 0x81, 0x99, 0xd4, 0xcd, 0x26, 0xe2, 0x74, 0x3a, + 0x1a, 0x85, 0xa1, 0x67, 0x30, 0x32, 0x57, 0x4c, 0xb3, 0x98, 0x51, 0x2e, 0x2b, 0x7f, 0x18, 0x92, + 0x61, 0x52, 0x2e, 0x2a, 0xfd, 0x9a, 0xac, 0xaa, 0x96, 0x1d, 0xb9, 0x7d, 0x22, 0xe4, 0x9c, 0x1e, + 0x14, 0x68, 0x14, 0x91, 0x16, 0x05, 0x10, 0xc4, 0x9c, 0xf9, 0x03, 0xf2, 0x6d, 0xe5, 0x47, 0xb5, + 0xa0, 0x57, 0x57, 0x23, 0xd8, 0xde, 0x52, 0x68, 0x8f, 0xf2, 0x16, 0x3a, 0x12, 0xfe, 0x0f, 0x97, + 0x2e, 0xd9, 0x5f, 0xc3, 0x04, 0x57, 0xeb, 0x0d, 0xe8, 0x8b, 0xd5, 0x05, 0xb9, 0x72, 0x86, 0xd2, + 0xdf, 0x8d, 0xda, 0xc3, 0xc9, 0xe7, 0x74, 0x6d, 0x3e, 0xa5, 0xd7, 0xba, 0x04, 0xd4, 0xf2, 0xf9, + 0x75, 0x6d, 0x3e, 0xb7, 0x5e, 0xeb, 0x9a, 0x51, 0xcb, 0xe7, 0x1f, 0xcd, 0x7c, 0xba, 0x73, 0x1e, + 0xf1, 0x51, 0xdb, 0xcc, 0x58, 0xd4, 0xd2, 0xe3, 0x64, 0x76, 0x46, 0x69, 0x6d, 0x5f, 0x08, 0xaa, + 0xb8, 0x6d, 0x57, 0x90, 0x86, 0xab, 0xfa, 0x9e, 0x30, 0x30, 0x83, 0xe5, 0x1c, 0xa7, 0xad, 0xf1, + 0x2e, 0x23, 0x84, 0x8c, 0x73, 0x76, 0xeb, 0xc9, 0x5a, 0x4f, 0x1c, 0xf5, 0xb1, 0x59, 0xc4, 0x22, + 0xa8, 0x87, 0x5d, 0x22, 0x1d, 0x42, 0x2d, 0x6c, 0x1c, 0x97, 0x0a, 0x7f, 0x5e, 0xbe, 0xaa, 0x55, + 0xf1, 0x37, 0xd7, 0x4f, 0x57, 0x1f, 0x06, 0x82, 0xf6, 0x93, 0x4f, 0xd5, 0x98, 0x23, 0x42, 0xd5, + 0x99, 0xbf, 0x22, 0x23, 0xb8, 0x83, 0x4f, 0xd4, 0x74, 0x63, 0x72, 0x66, 0xcc, 0x97, 0x9f, 0xb0, + 0xc8, 0xda, 0x1a, 0x64, 0x41, 0x0a, 0xbb, 0x4e, 0xed, 0x9b, 0xb0, 0xdd, 0x84, 0x78, 0x26, 0x15, + 0x88, 0x6c, 0x05, 0x3d, 0xf4, 0x63, 0x0a, 0xab, 0x66, 0x17, 0x81, 0xc6, 0xd7, 0x0e, 0x19, 0xa2, + 0xe9, 0xee, 0x6f, 0x61, 0x52, 0x43, 0x84, 0xd8, 0x4d, 0x5a, 0xf5, 0x6f, 0xfa, 0x28, 0xe5, 0x2b, + 0xab, 0x63, 0xfd, 0xa4, 0x30, 0x82, 0x5e, 0x28, 0x15, 0x69, 0x5f, 0xbe, 0x57, 0x44, 0x49, 0x30, + 0x82, 0x4e, 0xc8, 0x4c, 0xd0, 0x25, 0x05, 0x8d, 0xe3, 0xd4, 0x04, 0x8d, 0x29, 0x08, 0x96, 0x96, + 0x7a, 0x83, 0xd1, 0x47, 0x94, 0x59, 0x1f, 0x3e, 0x12, 0x7d, 0xfa, 0x74, 0x16, 0xd0, 0x7f, 0x67, + 0x8b, 0x85, 0x34, 0x7b, 0x23, 0xa9, 0x00, 0xc5, 0x8e, 0x3f, 0x71, 0xe3, 0x24, 0x67, 0x75, 0xb3, + 0xb6, 0xa3, 0x6f, 0x1d, 0xa5, 0xe8, 0x1a, 0xde, 0x6e, 0x12, 0x98, 0x4c, 0x2a, 0x5b, 0x2f, 0xed, + 0xc8, 0x03, 0xc5, 0x75, 0xf5, 0xe1, 0x32, 0xfd, 0x53, 0x16, 0x11, 0x06, 0x11, 0x3d, 0xd7, 0x9c, + 0xf7, 0x62, 0xf1, 0x14, 0xe5, 0xc3, 0x0f, 0x71, 0xff, 0x7c, 0x29, 0x25, 0xbb, 0xd8, 0xc3, 0x6b, + 0x0b, 0x5d, 0x1b, 0xc5, 0xd3, 0x0b, 0xe1, 0x64, 0x19, 0x77, 0x71, 0x2d, 0x95, 0x2c, 0x3d, 0xaf, + 0x7f, 0xfe, 0xe9, 0x04, 0x8b, 0x5b, 0xf8, 0xac, 0x12, 0x79, 0x8b, 0xeb, 0x0d, 0x2f, 0xf7, 0x22, + 0xa0, 0xbb, 0x33, 0x4f, 0xef, 0xaf, 0x71, 0x0c, 0xb5, 0x93, 0x6b, 0x8f, 0x26, 0x4c, 0xac, 0x8d, + 0x11, 0x25, 0x76, 0xe9, 0xb0, 0xc1, 0x89, 0x8a, 0x57, 0x66, 0xfc, 0xa8, 0x8d, 0xbd, 0x95, 0xde, + 0x2c, 0xf8, 0x44, 0x7c, 0x35, 0xb1, 0x8f, 0xc3, 0xc8, 0x15, 0xf3, 0xdf, 0xb8, 0x80, 0xca, 0x72, + 0xe2, 0x33, 0xd3, 0x0d, 0x21, 0xc9, 0xd0, 0x65, 0x52, 0x5d, 0xdd, 0x8c, 0x51, 0xd5, 0xff, 0xf4, + 0x65, 0x52, 0x4c, 0xf2, 0x3c, 0xff, 0x9c, 0x88, 0xa7, 0x48, 0x39, 0x05, 0xcd, 0xf2, 0x39, 0x41, + 0x8d, 0x43, 0x1d, 0x23, 0x5c, 0x21, 0xb9, 0x75, 0xbb, 0x57, 0x93, 0x9d, 0xb8, 0xf7, 0xc2, 0x3f, + 0xda, 0x47, 0x8c, 0xd7, 0x2e, 0x7e, 0xd6, 0x0f, 0xae, 0x26, 0x47, 0x7d, 0xf5, 0xb8, 0x1f, 0xe2, + 0x6e, 0xf8, 0xec, 0x59, 0x1c, 0x5f, 0x4d, 0x28, 0x64, 0x27, 0xde, 0xc7, 0x90, 0xf0, 0x85, 0x15, + 0x02, 0x19, 0xa8, 0x03, 0x20, 0xe2, 0x87, 0xf9, 0x8e, 0x68, 0x75, 0x7e, 0x55, 0xa2, 0x9f, 0xe9, + 0xd5, 0x64, 0x11, 0x74, 0x10, 0xad, 0x2d, 0xe8, 0x1c, 0x84, 0xdf, 0x21, 0xeb, 0x6e, 0xf0, 0x43, + 0x4f, 0xa1, 0x84, 0x67, 0xd3, 0xc2, 0x41, 0x0c, 0x86, 0x80, 0x5f, 0x48, 0x3b, 0xcb, 0xca, 0x63, + 0x7c, 0xef, 0xac, 0x91, 0x24, 0xed, 0x81, 0x24, 0xe6, 0xf9, 0x03, 0xc5, 0x6b, 0xb5, 0x5c, 0x9c, + 0xb3, 0xfd, 0x0f, 0x11, 0x53, 0x76, 0x9a, 0x14, 0xd7, 0x9d, 0x5f, 0xc4, 0x38, 0xcf, 0xa5, 0x64, + 0xdd, 0xe5, 0xef, 0xc3, 0x41, 0xbe, 0xc1, 0xd6, 0x54, 0x88, 0x69, 0xac, 0x71, 0x06, 0x95, 0x02, + 0x47, 0x15, 0xf9, 0xd4, 0x45, 0x39, 0x86, 0x33, 0x48, 0xe9, 0x2e, 0xe5, 0x45, 0xc9, 0x65, 0x54, + 0x75, 0x38, 0xf5, 0xff, 0x64, 0x69, 0xf9, 0xcb, 0xa6, 0xb0, 0xa7, 0x44, 0x36, 0xa8, 0xca, 0x10, + 0x2c, 0xc9, 0x6e, 0x5a, 0xcf, 0x8e, 0xda, 0x54, 0x5b, 0xba, 0xbd, 0x81, 0xed, 0xd3, 0x36, 0x67, + 0x17, 0x8a, 0x90, 0x6d, 0xd9, 0x9a, 0x60, 0x5c, 0xba, 0x4a, 0x9d, 0x2d, 0x18, 0x4f, 0x92, 0x6d, + 0x6f, 0x8c, 0xbd, 0x91, 0xcf, 0xe2, 0xeb, 0xbb, 0xc0, 0x0a, 0x80, 0xf4, 0xff, 0x22, 0x2d, 0x87, + 0x15, 0xe5, 0x63, 0x7c, 0x7d, 0x65, 0x43, 0xf1, 0xf7, 0x1c, 0xd7, 0x2f, 0xdb, 0x3f, 0x4e, 0xda, + 0xd0, 0x97, 0x7b, 0xe3, 0x91, 0x52, 0x46, 0x82, 0xdb, 0xbe, 0x86, 0x75, 0xda, 0xc6, 0x92, 0x9e, + 0x59, 0xe1, 0x2e, 0xf7, 0x03, 0x71, 0x84, 0x9d, 0x56, 0x79, 0x01, 0x87, 0x5d, 0x9c, 0xb7, 0xc7, + 0x95, 0xb8, 0xee, 0x7a, 0x77, 0x29, 0xf1, 0x54, 0xdc, 0x7b, 0xd2, 0xad, 0x0c, 0xcf, 0x7a, 0xac, + 0x0c, 0xb1, 0x14, 0xa2, 0x15, 0x53, 0xa9, 0xa0, 0x4f, 0xda, 0x2d, 0x5d, 0xd6, 0xc0, 0x3f, 0xaa, + 0x0b, 0xed, 0x2f, 0xc2, 0x9b, 0x19, 0x77, 0x0e, 0x32, 0x53, 0x76, 0xed, 0x73, 0xe1, 0xc2, 0x89, + 0x37, 0x5f, 0x04, 0x97, 0xda, 0xf4, 0xc6, 0x95, 0x08, 0x03, 0x09, 0xa6, 0x6b, 0x15, 0xb3, 0x6c, + 0x14, 0x33, 0xa8, 0x61, 0x36, 0xcf, 0x67, 0x91, 0x9d, 0x71, 0x70, 0x6b, 0xe3, 0xcd, 0xc2, 0xc3, + 0xa2, 0x29, 0x69, 0x07, 0xc2, 0xa1, 0xa6, 0x12, 0xc1, 0x0f, 0x3f, 0x38, 0x66, 0xaf, 0x7a, 0xc1, + 0x68, 0x65, 0x6e, 0xc3, 0x6b, 0x86, 0x0f, 0xdf, 0x0f, 0x67, 0x24, 0x3b, 0xec, 0x08, 0xdf, 0x5d, + 0x71, 0xbf, 0x02, 0xbd, 0xd9, 0x86, 0x6d, 0xde, 0x10, 0x8b, 0xb9, 0x44, 0xa5, 0x9d, 0xdd, 0xbe, + 0xae, 0x75, 0x05, 0x5a, 0xdb, 0x69, 0x24, 0xe8, 0x25, 0xc8, 0x03, 0x3d, 0x6d, 0x86, 0x75, 0xd5, + 0x5f, 0xa3, 0xf2, 0x3b, 0x3d, 0xa8, 0xfe, 0x22, 0x38, 0x08, 0x61, 0xad, 0xee, 0xae, 0x03, 0x1b, + 0xb6, 0x36, 0x44, 0x04, 0xc2, 0x26, 0xfc, 0x21, 0x3d, 0x34, 0xc5, 0x72, 0x59, 0x4c, 0xa3, 0x5a, + 0xa0, 0xce, 0x5f, 0x1e, 0x72, 0xea, 0x8e, 0xbd, 0x1a, 0xd7, 0x42, 0xc2, 0x9f, 0xae, 0x26, 0xe1, + 0x4c, 0x62, 0x6f, 0x46, 0x2e, 0x9a, 0xb0, 0xb3, 0x55, 0x20, 0x52, 0xf4, 0x06, 0xc9, 0xa1, 0x06, + 0xec, 0x49, 0x14, 0x9d, 0x42, 0x16, 0x97, 0x9f, 0x60, 0x5b, 0x4f, 0x37, 0x24, 0xad, 0x04, 0xf1, + 0xff, 0x9f, 0xb3, 0x99, 0x28, 0x5e, 0x8d, 0x10, 0x3d, 0x7d, 0x90, 0xd5, 0x4a, 0x9f, 0x6a, 0x55, + 0xba, 0xac, 0x82, 0x1b, 0x1f, 0x39, 0x1f, 0x95, 0xfb, 0x31, 0xf4, 0xb2, 0x45, 0x53, 0x98, 0x8a, + 0x51, 0xc6, 0x38, 0xe9, 0x6d, 0xf0, 0x22, 0x72, 0xfe, 0x0a, 0x3a, 0x17, 0x24, 0xf9, 0x4d, 0xe9, + 0x36, 0xa1, 0x12, 0x79, 0x90, 0x5b, 0xc2, 0x76, 0x38, 0xc6, 0x4c, 0xb0, 0xab, 0xde, 0xe0, 0xe1, + 0x81, 0x36, 0x77, 0xfe, 0xe5, 0x91, 0xc5, 0x19, 0x45, 0x16, 0x6f, 0x7a, 0x4f, 0xbe, 0xef, 0xa8, + 0x72, 0x44, 0xe2, 0xc0, 0x4c, 0x75, 0xce, 0x1e, 0x82, 0xb3, 0x30, 0xe5, 0x46, 0x92, 0x56, 0x44, + 0x8f, 0xd1, 0xd2, 0xdc, 0x6c, 0xb9, 0xa6, 0x6b, 0x20, 0xea, 0x8a, 0xe7, 0x59, 0x93, 0x70, 0x4a, + 0x19, 0xae, 0x7b, 0xce, 0x79, 0x9f, 0xb2, 0x7d, 0x7b, 0xaf, 0xd8, 0x6c, 0x84, 0x4d, 0x2d, 0x58, + 0x29, 0x66, 0x5a, 0xe5, 0x98, 0xaf, 0x24, 0xc6, 0xf0, 0x4c, 0xd7, 0x55, 0x67, 0x3c, 0x34, 0x2c, + 0xa9, 0xd3, 0xb4, 0x8a, 0x1e, 0xdd, 0x06, 0x5f, 0x5b, 0xcb, 0x0a, 0x6a, 0x59, 0x69, 0x77, 0x0c, + 0x53, 0x5b, 0x67, 0x36, 0x20, 0x8c, 0xeb, 0xa8, 0x7a, 0x59, 0x98, 0x73, 0x78, 0x80, 0x4c, 0x9a, + 0x06, 0x41, 0x0a, 0xdb, 0xc0, 0xbd, 0xd8, 0x2e, 0xf0, 0x92, 0x8e, 0xaf, 0x46, 0x29, 0x3d, 0x0d, + 0x58, 0x42, 0xce, 0xd0, 0xf4, 0x97, 0xc5, 0x74, 0xbc, 0xa6, 0xf0, 0xf8, 0x53, 0x76, 0x86, 0xc4, + 0x30, 0xdd, 0x8a, 0xe3, 0xc9, 0x4c, 0xfd, 0xc3, 0xd2, 0xd7, 0x10, 0x5e, 0x70, 0x88, 0x4a, 0x0f, + 0xcb, 0xdd, 0x6a, 0x90, 0xc2, 0xd0, 0xe7, 0x58, 0xb4, 0xd9, 0x08, 0xbe, 0x0b, 0xb4, 0xdb, 0x63, + 0xb6, 0xac, 0x46, 0x21, 0x2c, 0x8c, 0x7d, 0x7f, 0x9e, 0x39, 0xa0, 0xfb, 0x6e, 0x71, 0xaa, 0x02, + 0x4b, 0x63, 0x21, 0xec, 0xdb, 0x85, 0xb2, 0x00, 0x8c, 0xdc, 0xb2, 0xd5, 0xcb, 0x65, 0x45, 0x94, + 0xc5, 0xb3, 0x6f, 0xfc, 0x60, 0x29, 0x4d, 0xa3, 0x6a, 0x67, 0x53, 0x4b, 0xb2, 0x61, 0x87, 0x7d, + 0xe9, 0x43, 0x6d, 0x79, 0xeb, 0xe7, 0x52, 0xde, 0x93, 0xb2, 0xe2, 0x4c, 0x3a, 0x6f, 0xd7, 0xe8, + 0x9d, 0xa1, 0x45, 0x1d, 0x65, 0x73, 0xd9, 0xaa, 0x6c, 0xb6, 0xf8, 0x82, 0x05, 0x74, 0x7c, 0xe5, + 0x52, 0x30, 0xab, 0x58, 0xfa, 0x96, 0x0c, 0xef, 0xab, 0x2d, 0x77, 0x04, 0x4c, 0x8c, 0x40, 0x1c, + 0x51, 0x77, 0xaa, 0xce, 0xc6, 0x22, 0xd7, 0x53, 0x19, 0x7f, 0x24, 0x93, 0x0e, 0x81, 0x88, 0xb5, + 0x49, 0x3c, 0xf3, 0x87, 0xea, 0xce, 0x5e, 0x76, 0x16, 0xcf, 0xe4, 0x0f, 0x6d, 0xcd, 0x08, 0xcc, + 0x18, 0xd4, 0xb1, 0x08, 0x7b, 0x1b, 0xba, 0x50, 0x07, 0x48, 0xf8, 0x1e, 0xdf, 0x60, 0x05, 0xe9, + 0xb0, 0xd8, 0xc0, 0x6c, 0x65, 0x84, 0x9c, 0x63, 0xc7, 0x20, 0x96, 0x84, 0x7a, 0x5e, 0x88, 0x0f, + 0xee, 0x64, 0x84, 0xc0, 0x47, 0xea, 0xfe, 0x8f, 0xf4, 0x72, 0xb7, 0xce, 0x64, 0x7c, 0x7d, 0x28, + 0x23, 0xb2, 0x3b, 0xeb, 0xc2, 0x50, 0xa6, 0x48, 0x82, 0x96, 0xa6, 0x30, 0x5e, 0xc0, 0xb3, 0xe4, + 0x57, 0x38, 0xd7, 0x43, 0x80, 0x32, 0xaa, 0x64, 0xb6, 0x9d, 0x37, 0x4e, 0x51, 0xc7, 0x9f, 0x36, + 0xcd, 0x9d, 0x12, 0x0a, 0x9c, 0x13, 0xd4, 0x8c, 0xe3, 0xcc, 0xff, 0x40, 0x37, 0x55, 0xb2, 0xa5, + 0x26, 0x95, 0xc6, 0xdd, 0x2a, 0x46, 0x38, 0xb1, 0xd8, 0xd9, 0x97, 0xd4, 0xc0, 0xf3, 0x36, 0xb3, + 0xd2, 0x2c, 0xaa, 0x3f, 0x71, 0x3d, 0xca, 0x52, 0xc6, 0x67, 0xb4, 0x22, 0x1a, 0x65, 0x7c, 0xc3, + 0xf7, 0x67, 0x9c, 0xde, 0x14, 0xdd, 0x56, 0x9e, 0xbb, 0xe6, 0x1b, 0xdb, 0x1d, 0x87, 0xdf, 0x2e, + 0x18, 0xd9, 0xe2, 0x7f, 0x5f, 0x35, 0xf9, 0x92, 0xd4, 0xb8, 0x45, 0x52, 0xe2, 0xe0, 0x7d, 0xfc, + 0x8c, 0x66, 0x61, 0x42, 0x25, 0x81, 0x03, 0xf2, 0x7d, 0x28, 0xb9, 0x45, 0xa8, 0x72, 0xa7, 0x64, + 0x6f, 0x94, 0xad, 0x3e, 0xb0, 0x4a, 0xcf, 0xdc, 0x1c, 0x73, 0x2d, 0x32, 0x48, 0x78, 0x8d, 0x0f, + 0xf9, 0x0d, 0xf4, 0x52, 0x39, 0xac, 0x07, 0x20, 0xa9, 0x8c, 0xb0, 0x94, 0xac, 0xa3, 0xf2, 0xb8, + 0xc8, 0x09, 0xe5, 0x0e, 0x73, 0x51, 0x4b, 0x22, 0xd3, 0x61, 0x0a, 0x9b, 0x04, 0x93, 0x0e, 0x29, + 0x9a, 0x1f, 0xb2, 0xfc, 0x0d, 0xc4, 0xc9, 0xae, 0x07, 0x69, 0xb5, 0x45, 0x1c, 0xce, 0xff, 0x8a, + 0x6d, 0xd4, 0x3e, 0x8d, 0x4f, 0x3e, 0xab, 0x7d, 0x6c, 0x36, 0x41, 0x6e, 0x01, 0xb5, 0x22, 0xc1, + 0xea, 0x35, 0x2a, 0x2e, 0x85, 0x35, 0x8d, 0x69, 0xd9, 0x97, 0x81, 0xee, 0x8e, 0xab, 0xa3, 0x0c, + 0xec, 0xb9, 0x9e, 0xe5, 0xd4, 0xe6, 0x9e, 0xff, 0xf0, 0x60, 0x57, 0xa3, 0xaa, 0x3d, 0x97, 0xf0, + 0xdc, 0x85, 0xc6, 0x54, 0x4d, 0x05, 0xb9, 0xa1, 0x06, 0xfb, 0x5f, 0xba, 0x61, 0x2f, 0xdf, 0xfc, + 0xf8, 0xea, 0x7d, 0xd7, 0xab, 0x46, 0xe3, 0x09, 0x1f, 0x46, 0x41, 0x3e, 0xe7, 0x5e, 0x38, 0x93, + 0x23, 0xeb, 0x43, 0x3e, 0x0b, 0xfe, 0xf7, 0x55, 0xdb, 0x55, 0x26, 0x39, 0xbc, 0xb6, 0xba, 0xaa, + 0x6f, 0x42, 0xdf, 0x01, 0xe9, 0xa3, 0xb1, 0xcf, 0xf5, 0xe7, 0x18, 0x4f, 0x9e, 0xd4, 0xda, 0xa1, + 0x59, 0xac, 0xb8, 0xda, 0xbd, 0x47, 0x06, 0x53, 0x32, 0x35, 0xd1, 0x11, 0xb5, 0x44, 0x9e, 0xb9, + 0x9d, 0x6e, 0xf6, 0x7d, 0xf9, 0xf4, 0xee, 0x37, 0x38, 0xd5, 0xe6, 0x6f, 0x93, 0x7b, 0x71, 0x81, + 0xf8, 0x99, 0xe1, 0x16, 0xae, 0xb1, 0x5d, 0x2e, 0xee, 0x51, 0x48, 0x98, 0x5d, 0xbe, 0x0e, 0x38, + 0x24, 0xc2, 0x64, 0x0c, 0x48, 0x8f, 0xf6, 0x7a, 0x7d, 0x38, 0xb6, 0x6c, 0x52, 0x55, 0x10, 0x61, + 0xb8, 0x65, 0x20, 0x1f, 0xa8, 0x35, 0x9f, 0xba, 0xc8, 0x15, 0x2a, 0x87, 0xe3, 0x5a, 0xf5, 0xa5, + 0xeb, 0xed, 0xee, 0x26, 0x5e, 0xc0, 0xe9, 0x76, 0x11, 0x6a, 0x3c, 0x8d, 0x7b, 0xbb, 0xa9, 0xd2, + 0xb3, 0x8d, 0xf0, 0xe0, 0xf5, 0xb9, 0x94, 0x45, 0x80, 0x53, 0xc4, 0xb2, 0x3c, 0xa6, 0x5e, 0x90, + 0xfa, 0x9b, 0xb6, 0x6b, 0x0f, 0x32, 0x92, 0x33, 0xc2, 0x76, 0xe4, 0x22, 0x98, 0xfd, 0xf9, 0xdd, + 0x6f, 0xb1, 0x94, 0xc9, 0x69, 0xf9, 0x20, 0x0c, 0xee, 0x81, 0x25, 0x61, 0xd3, 0x55, 0x45, 0xd9, + 0xc0, 0x0c, 0xb0, 0x3c, 0x28, 0x5f, 0xe5, 0x29, 0x16, 0x02, 0xbf, 0x22, 0x09, 0xc9, 0x02, 0x15, + 0x36, 0x56, 0x3a, 0x66, 0x5a, 0x5f, 0x9c, 0x74, 0x32, 0xa6, 0x24, 0x49, 0x80, 0xda, 0x3f, 0x33, + 0xc9, 0x90, 0xd6, 0x59, 0x65, 0x25, 0xe9, 0x44, 0xa8, 0xa7, 0x61, 0x85, 0x40, 0xa1, 0xeb, 0x2e, + 0xbe, 0xfb, 0xad, 0xc1, 0x37, 0xc2, 0x11, 0x18, 0xb7, 0x97, 0x50, 0xe8, 0x28, 0xe0, 0x65, 0x2c, + 0x07, 0xc9, 0xcb, 0xa0, 0x5d, 0xe2, 0x9b, 0x4d, 0xae, 0xbd, 0x40, 0x46, 0x41, 0x0f, 0x06, 0xfa, + 0x05, 0xf9, 0xe3, 0x56, 0xd9, 0x7f, 0xf6, 0xe4, 0x89, 0x4a, 0x4d, 0x8a, 0x42, 0xa5, 0x8e, 0xc4, + 0x1b, 0xaa, 0xd0, 0x5c, 0xfc, 0xee, 0xc9, 0x13, 0x88, 0x0d, 0x91, 0xf7, 0xf1, 0xc7, 0x61, 0xaf, + 0x7f, 0x10, 0x0e, 0xfb, 0xfb, 0x61, 0xd4, 0x7f, 0x0e, 0x3b, 0xcc, 0x16, 0x96, 0x04, 0x43, 0x29, + 0x2f, 0x2a, 0x3b, 0xfd, 0x7e, 0x78, 0x30, 0x5f, 0xa0, 0x50, 0x7e, 0xc0, 0xf9, 0x85, 0xba, 0x26, + 0xe8, 0x79, 0xbe, 0xe1, 0x5a, 0x1f, 0x09, 0x6a, 0x5f, 0xe3, 0x6b, 0x8e, 0x27, 0x50, 0x76, 0x1b, + 0x77, 0x9f, 0xcb, 0x63, 0xc3, 0xee, 0xdb, 0x8d, 0xcf, 0x23, 0x87, 0xd9, 0xe7, 0x62, 0x55, 0x74, + 0x73, 0x13, 0x04, 0x1a, 0x02, 0xe2, 0x0d, 0xbd, 0x10, 0x65, 0xc7, 0x9b, 0x2a, 0xf7, 0x1e, 0xd1, + 0x89, 0x7a, 0x5c, 0xf2, 0x65, 0x6e, 0x55, 0x0e, 0xd4, 0x3e, 0x41, 0x6e, 0xcf, 0xf0, 0x8f, 0x8d, + 0x7f, 0x20, 0x60, 0x61, 0x7a, 0x2d, 0x04, 0xba, 0x67, 0xef, 0xed, 0xed, 0x49, 0xda, 0x74, 0xc5, + 0x7e, 0xa4, 0x55, 0x36, 0x9a, 0x30, 0x1d, 0x76, 0xa5, 0xab, 0x64, 0x0a, 0x52, 0x21, 0x5f, 0x32, + 0x01, 0x99, 0x93, 0x1c, 0xf3, 0xf8, 0x57, 0xe9, 0xfb, 0x36, 0xe8, 0x51, 0x02, 0x23, 0xd9, 0x97, + 0x6f, 0x10, 0x4e, 0x60, 0x48, 0x2b, 0xed, 0xc3, 0x83, 0x2b, 0xa8, 0x8a, 0x60, 0x0e, 0xa1, 0xe4, + 0x30, 0x11, 0x58, 0xa5, 0x81, 0xb0, 0x80, 0x52, 0xf9, 0x51, 0x6b, 0x7c, 0x82, 0x35, 0xd0, 0x1a, + 0xb0, 0x46, 0x35, 0x16, 0x3c, 0x87, 0x96, 0xce, 0xd2, 0xcc, 0x0b, 0x60, 0x8c, 0xcb, 0xe9, 0x05, + 0x3b, 0x2f, 0xc9, 0x08, 0x38, 0x59, 0x45, 0x86, 0x66, 0x2c, 0x1e, 0x54, 0x1e, 0x11, 0x5e, 0x50, + 0xdf, 0x43, 0x3e, 0xcd, 0x58, 0xd7, 0x39, 0x3a, 0xfb, 0xe5, 0x77, 0x90, 0x19, 0x4e, 0xe8, 0x00, + 0x0f, 0x0e, 0xad, 0x11, 0x2b, 0xdc, 0xa5, 0x98, 0x5f, 0x60, 0x4d, 0x4c, 0xca, 0x12, 0x24, 0x73, + 0x2f, 0xc0, 0x35, 0x76, 0x4d, 0xbc, 0x9b, 0xd9, 0xba, 0x68, 0xf4, 0x61, 0x38, 0x84, 0x99, 0x78, + 0xff, 0x75, 0xf8, 0x14, 0xd6, 0xc1, 0x64, 0x56, 0x1d, 0x75, 0x0e, 0x9f, 0x22, 0x67, 0x14, 0xfe, + 0xbd, 0xaa, 0xae, 0xd3, 0xa3, 0xce, 0xff, 0x01, 0xfa, 0xdd, 0xa1, 0xd7, 0xa5, 0x8d, 0x01, 0x00 }; From cb579ecc6281a3fa18f5b1d128138d33f12a1549 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Fri, 14 Jul 2023 11:07:35 +0200 Subject: [PATCH 45/70] Broadcast change. --- wled00/led.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/wled00/led.cpp b/wled00/led.cpp index 4c5af70d6..9879bde74 100644 --- a/wled00/led.cpp +++ b/wled00/led.cpp @@ -104,6 +104,7 @@ void stateUpdated(byte callMode) { if (stateChanged) currentPreset = 0; //something changed, so we are no longer in the preset if (callMode != CALL_MODE_NOTIFICATION && callMode != CALL_MODE_NO_NOTIFY) notify(callMode); + if (bri != briOld && nodeBroadcastEnabled) sendSysInfoUDP(); // update on state //set flag to update ws and mqtt interfaceUpdateCallMode = callMode; From 0b956c66c12ba46613508d00f69a8c8f21e7ce80 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Fri, 14 Jul 2023 13:07:33 +0200 Subject: [PATCH 46/70] changelog update --- CHANGELOG.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2900d9f5..3d792e73b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,27 @@ ## WLED changelog -#### Build 2306180 +#### Build 2307130 +- larger `oappend()` stack buffer (3.5k) for ESP32 +- Preset cycle bugfix (#3262) +- Rotary encoder ALT fix for large LED count (#3276) +- effect updates (2D Plasmaball), `blur()` speedup +- On/Off toggle from nodes view (may show unknow device type on older versions) (#3291) +- various fixes and improvements (ABL, crashes when changing presets with different segments) +#### Build 2306270 +- ESP-NOW remote support (#3237) +- Pixel Magic tool (display pixel art) (#3249) +- Websocket (peek) fallback when connection cannot be established, WS retries (#3267) +- Add WiFi network scan RPC command to Improv Serial (#3271) +- Longer (custom option available) segment name for ESP32 +- various fixes and improvements + +#### Build 2306210 +- 0.14.0-b3 release +- respect global I2C in all usermods (no local initilaisation of I2C bus) +- Multi relay usermod compile-time enabled option (-D MULTI_RELAY_ENABLED=true|false) + +#### Build 2306180 - Added client-side option for applying effect defaults from metadata - Improved ESP8266 stability by reducing WebSocket response resends - Updated ESP8266 core to 3.1.2 From f1e1bd41b92e2a902061e746306599982dd54657 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Fri, 14 Jul 2023 15:58:03 +0200 Subject: [PATCH 47/70] Slight optimisation in BusDigial::getPixelColor() --- wled00/bus_manager.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index c0d4e7e2e..e05483f5b 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -228,18 +228,18 @@ uint32_t BusDigital::getPixelColor(uint16_t pix) { if (_reversed) pix = _len - pix -1; else pix += _skip; uint8_t co = _colorOrderMap.getPixelColorOrder(pix+_start, _colorOrder); + uint32_t c = restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, (_type==TYPE_WS2812_1CH_X3) ? IC_INDEX_WS2812_1CH_3X(pix) : pix, co), _bri); if (_type == TYPE_WS2812_1CH_X3) { // map to correct IC, each controls 3 LEDs - uint16_t pOld = pix; - pix = IC_INDEX_WS2812_1CH_3X(pix); - uint32_t c = PolyBus::getPixelColor(_busPtr, _iType, pix, co); - switch (pOld % 3) { // get only the single channel - case 0: c = RGBW32(G(c), G(c), G(c), G(c)); break; - case 1: c = RGBW32(R(c), R(c), R(c), R(c)); break; - case 2: c = RGBW32(B(c), B(c), B(c), B(c)); break; + uint8_t r = R(c); + uint8_t g = _reversed ? B(c) : G(c); // should G and B be switched if _reversed? + uint8_t b = _reversed ? G(c) : B(c); + switch (pix % 3) { // get only the single channel + case 0: c = RGBW32(g, g, g, g); break; + case 1: c = RGBW32(r, r, r, r); break; + case 2: c = RGBW32(b, b, b, b); break; } - return c; } - return restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, pix, co), _bri); + return c; } } From a97609e9202a0958885f234affb4734daa74d5fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 15 Jul 2023 20:10:32 +0200 Subject: [PATCH 48/70] Bump semver from 5.7.1 to 5.7.2 (#3289) Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2. - [Release notes](https://github.com/npm/node-semver/releases) - [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md) - [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2) --- updated-dependencies: - dependency-name: semver dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a11554735..c4fe9b1c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1409,9 +1409,9 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" }, "semver-diff": { "version": "2.1.0", From 82e01f7b17d456bf5e7d7d16a6dd90166d78c981 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Mon, 17 Jul 2023 16:15:17 +0200 Subject: [PATCH 49/70] Fixed ABL calculation. --- wled00/FX_fcn.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 3518e223b..5f6fa79f8 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1208,10 +1208,10 @@ uint8_t WS2812FX::estimateCurrentAndLimitBri() { uint8_t newBri = _brightness; if (powerSum * _brightness / 255 > powerBudget) { //scale brightness down to stay in current limit - float scale = (float)powerBudget / (float)powerSum; + float scale = (float)(powerBudget * 255) / (float)(powerSum * _brightness); uint16_t scaleI = scale * 255; uint8_t scaleB = (scaleI > 255) ? 255 : scaleI; - newBri = scale8(_brightness, scaleB); + newBri = scale8(_brightness, scaleB) + 1; } currentMilliamps = (powerSum * newBri) / 255; currentMilliamps += MA_FOR_ESP; //add power of ESP back to estimate From abfb8bbc3464440e08119198658494037734a95d Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Mon, 17 Jul 2023 17:06:04 +0200 Subject: [PATCH 50/70] Fix (almost good) for unbuffered ABL calculations. --- wled00/FX_fcn.cpp | 3 +-- wled00/bus_manager.cpp | 7 +++++-- wled00/bus_manager.h | 15 +++++++-------- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 5f6fa79f8..43d2aa4e8 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1230,8 +1230,7 @@ void WS2812FX::show(void) { unsigned long microsStart = micros(); #endif - uint8_t busBrightness = estimateCurrentAndLimitBri(); - busses.setBrightness(busBrightness); + busses.setBrightness(estimateCurrentAndLimitBri()); #ifdef WLED_DEBUG sumCurrent += micros() - microsStart; #endif diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index e05483f5b..d798906b8 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -153,7 +153,10 @@ void BusDigital::show() { PolyBus::applyPostAdjustments(_busPtr, _iType); } PolyBus::show(_busPtr, _iType); - PolyBus::setBrightness(_busPtr, _iType, 255); // restore full brightness at bus level (setting unscaled pixel color) + // looks like the following causes periodic miscalculations in ABL when not using double buffering + // when we no longer restore full brightness at busl level we only get a single frame with incorrect brightness + // when turning WLED off otherwise ABL calculations are OK + //PolyBus::setBrightness(_busPtr, _iType, 255); // restore full brightness at bus level (setting unscaled pixel color) } bool BusDigital::canShow() { @@ -228,7 +231,7 @@ uint32_t BusDigital::getPixelColor(uint16_t pix) { if (_reversed) pix = _len - pix -1; else pix += _skip; uint8_t co = _colorOrderMap.getPixelColorOrder(pix+_start, _colorOrder); - uint32_t c = restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, (_type==TYPE_WS2812_1CH_X3) ? IC_INDEX_WS2812_1CH_3X(pix) : pix, co), _bri); + uint32_t c = restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, (_type==TYPE_WS2812_1CH_X3) ? IC_INDEX_WS2812_1CH_3X(pix) : pix, co)); if (_type == TYPE_WS2812_1CH_X3) { // map to correct IC, each controls 3 LEDs uint8_t r = R(c); uint8_t g = _reversed ? B(c) : G(c); // should G and B be switched if _reversed? diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index 8ca1bcc29..5b48e7c25 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -224,14 +224,13 @@ class BusDigital : public Bus { const ColorOrderMap &_colorOrderMap; bool buffering; // temporary until we figure out why comparison "_data != nullptr" causes severe FPS drop - inline uint32_t restoreColorLossy(uint32_t c, uint_fast8_t _restaurationBri) { - if (_bri == 255) return c; - uint8_t* chan = (uint8_t*) &c; - - for (uint_fast8_t i=0; i<4; i++) - { - uint_fast16_t val = chan[i]; - chan[i] = ((val << 8) + _restaurationBri) / (_restaurationBri + 1); //adding _bri slighly improves recovery / stops degradation on re-scale + inline uint32_t restoreColorLossy(uint32_t c) { + if (_bri < 255) { + uint8_t* chan = (uint8_t*) &c; + for (uint_fast8_t i=0; i<4; i++) { + uint_fast16_t val = chan[i]; + chan[i] = ((val << 8) + _bri) / (_bri + 1); //adding _bri slighly improves recovery / stops degradation on re-scale + } } return c; } From d8f9a9a03cf61505b6b0bf2d3ed9e77a702bf031 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Mon, 17 Jul 2023 20:38:34 +0200 Subject: [PATCH 51/70] Minor correction (slider names) "Time delay" is actually "speed" - bigger values make the effect run faster. --- wled00/FX.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 8c7bf38d3..533da32bd 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -6840,7 +6840,7 @@ uint16_t mode_freqmatrix(void) { // Freqmatrix. By Andreas Plesch return FRAMETIME; } // mode_freqmatrix() -static const char _data_FX_MODE_FREQMATRIX[] PROGMEM = "Freqmatrix@Time delay,Sound effect,Low bin,High bin,Sensivity;;;1f;m12=3,si=0"; // Corner, Beatsin +static const char _data_FX_MODE_FREQMATRIX[] PROGMEM = "Freqmatrix@Speed,Sound effect,Low bin,High bin,Sensivity;;;1f;m12=3,si=0"; // Corner, Beatsin ////////////////////// @@ -6944,7 +6944,7 @@ uint16_t mode_freqwave(void) { // Freqwave. By Andreas Pleschun return FRAMETIME; } // mode_freqwave() -static const char _data_FX_MODE_FREQWAVE[] PROGMEM = "Freqwave@Time delay,Sound effect,Low bin,High bin,Pre-amp;;;1f;m12=2,si=0"; // Circle, Beatsin +static const char _data_FX_MODE_FREQWAVE[] PROGMEM = "Freqwave@Speed,Sound effect,Low bin,High bin,Pre-amp;;;1f;m12=2,si=0"; // Circle, Beatsin /////////////////////// From 0928060c75bbdd2e911480f441c63f18926f96fb Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Tue, 18 Jul 2023 11:29:08 +0200 Subject: [PATCH 52/70] blur bugfix turns out that fastLED 3.6.0 has an explicit uint32_t operator that returns RGBA, however 3.5.0 does not have this and the conversion returned only the "red" component". --- wled00/FX_2Dfcn.cpp | 8 ++++---- wled00/FX_fcn.cpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/wled00/FX_2Dfcn.cpp b/wled00/FX_2Dfcn.cpp index 778a28f9a..28c35fa47 100644 --- a/wled00/FX_2Dfcn.cpp +++ b/wled00/FX_2Dfcn.cpp @@ -341,7 +341,7 @@ void Segment::blurRow(uint16_t row, fract8 blur_amount) { CRGB carryover = CRGB::Black; for (uint_fast16_t x = 0; x < cols; x++) { CRGB cur = getPixelColorXY(x, row); - uint32_t before = uint32_t(cur); // remember color before blur + CRGB before = cur; // remember color before blur CRGB part = cur; part.nscale8(seep); cur.nscale8(keep); @@ -350,7 +350,7 @@ void Segment::blurRow(uint16_t row, fract8 blur_amount) { CRGB prev = CRGB(getPixelColorXY(x-1, row)) + part; setPixelColorXY(x-1, row, prev); } - if (before != uint32_t(cur)) // optimization: only set pixel if color has changed + if (before != cur) // optimization: only set pixel if color has changed setPixelColorXY(x, row, cur); carryover = part; } @@ -369,7 +369,7 @@ void Segment::blurCol(uint16_t col, fract8 blur_amount) { for (uint_fast16_t y = 0; y < rows; y++) { CRGB cur = getPixelColorXY(col, y); CRGB part = cur; - uint32_t before = uint32_t(cur); // remember color before blur + CRGB before = cur; // remember color before blur part.nscale8(seep); cur.nscale8(keep); cur += carryover; @@ -377,7 +377,7 @@ void Segment::blurCol(uint16_t col, fract8 blur_amount) { CRGB prev = CRGB(getPixelColorXY(col, y-1)) + part; setPixelColorXY(col, y-1, prev); } - if (before != uint32_t(cur)) // optimization: only set pixel if color has changed + if (before != cur) // optimization: only set pixel if color has changed setPixelColorXY(col, y, cur); carryover = part; } diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 4224f2545..8d91c0568 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -921,7 +921,7 @@ void Segment::blur(uint8_t blur_amount) { CRGB cur = CRGB(getPixelColor(i)); CRGB part = cur; - uint32_t before = uint32_t(cur); // remember color before blur + CRGB before = cur; // remember color before blur part.nscale8(seep); cur.nscale8(keep); cur += carryover; @@ -932,7 +932,7 @@ void Segment::blur(uint8_t blur_amount) uint8_t b = B(c); setPixelColor((uint16_t)(i-1), qadd8(r, part.red), qadd8(g, part.green), qadd8(b, part.blue)); } - if (before != uint32_t(cur)) // optimization: only set pixel if color has changed + if (before != cur) // optimization: only set pixel if color has changed setPixelColor((uint16_t)i,cur.red, cur.green, cur.blue); carryover = part; } From ebb4628e663d71f00b73a6b496eaf3a43f4106a3 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Mon, 17 Jul 2023 20:38:34 +0200 Subject: [PATCH 53/70] Minor correction (slider names) "Time delay" is actually "speed" - bigger values make the effect run faster. --- wled00/FX.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 7bcd93958..be8998bc7 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -6808,7 +6808,7 @@ uint16_t mode_freqmatrix(void) { // Freqmatrix. By Andreas Plesch return FRAMETIME; } // mode_freqmatrix() -static const char _data_FX_MODE_FREQMATRIX[] PROGMEM = "Freqmatrix@Time delay,Sound effect,Low bin,High bin,Sensivity;;;1f;m12=3,si=0"; // Corner, Beatsin +static const char _data_FX_MODE_FREQMATRIX[] PROGMEM = "Freqmatrix@Speed,Sound effect,Low bin,High bin,Sensivity;;;1f;m12=3,si=0"; // Corner, Beatsin ////////////////////// @@ -6911,7 +6911,7 @@ uint16_t mode_freqwave(void) { // Freqwave. By Andreas Pleschun return FRAMETIME; } // mode_freqwave() -static const char _data_FX_MODE_FREQWAVE[] PROGMEM = "Freqwave@Time delay,Sound effect,Low bin,High bin,Pre-amp;;;1f;m12=2,si=0"; // Circle, Beatsin +static const char _data_FX_MODE_FREQWAVE[] PROGMEM = "Freqwave@Speed,Sound effect,Low bin,High bin,Pre-amp;;;1f;m12=2,si=0"; // Circle, Beatsin /////////////////////// From 5ef7cd7bddaafd5ed5de3533574d9b3f7d070bb1 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Tue, 18 Jul 2023 11:29:08 +0200 Subject: [PATCH 54/70] blur bugfix turns out that fastLED 3.6.0 has an explicit uint32_t operator that returns RGBA, however 3.5.0 does not have this and the conversion returned only the "red" component". --- wled00/FX_2Dfcn.cpp | 8 ++++---- wled00/FX_fcn.cpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/wled00/FX_2Dfcn.cpp b/wled00/FX_2Dfcn.cpp index 417d04844..71000e904 100644 --- a/wled00/FX_2Dfcn.cpp +++ b/wled00/FX_2Dfcn.cpp @@ -340,7 +340,7 @@ void Segment::blurRow(uint16_t row, fract8 blur_amount) { CRGB carryover = CRGB::Black; for (uint_fast16_t x = 0; x < cols; x++) { CRGB cur = getPixelColorXY(x, row); - uint32_t before = uint32_t(cur); // remember color before blur + CRGB before = cur; // remember color before blur CRGB part = cur; part.nscale8(seep); cur.nscale8(keep); @@ -349,7 +349,7 @@ void Segment::blurRow(uint16_t row, fract8 blur_amount) { CRGB prev = CRGB(getPixelColorXY(x-1, row)) + part; setPixelColorXY(x-1, row, prev); } - if (before != uint32_t(cur)) // optimization: only set pixel if color has changed + if (before != cur) // optimization: only set pixel if color has changed setPixelColorXY(x, row, cur); carryover = part; } @@ -369,7 +369,7 @@ void Segment::blurCol(uint16_t col, fract8 blur_amount) { for (uint_fast16_t y = 0; y < rows; y++) { CRGB cur = getPixelColorXY(col, y); CRGB part = cur; - uint32_t before = uint32_t(cur); // remember color before blur + CRGB before = cur; // remember color before blur part.nscale8(seep); cur.nscale8(keep); cur += carryover; @@ -377,7 +377,7 @@ void Segment::blurCol(uint16_t col, fract8 blur_amount) { CRGB prev = CRGB(getPixelColorXY(col, y-1)) + part; setPixelColorXY(col, y-1, prev); } - if (before != uint32_t(cur)) // optimization: only set pixel if color has changed + if (before != cur) // optimization: only set pixel if color has changed setPixelColorXY(col, y, cur); carryover = part; } diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 43d2aa4e8..e23051a4d 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -911,7 +911,7 @@ void Segment::blur(uint8_t blur_amount) { CRGB cur = CRGB(getPixelColor(i)); CRGB part = cur; - uint32_t before = uint32_t(cur); // remember color before blur + CRGB before = cur; // remember color before blur part.nscale8(seep); cur.nscale8(keep); cur += carryover; @@ -922,7 +922,7 @@ void Segment::blur(uint8_t blur_amount) uint8_t b = B(c); setPixelColor((uint16_t)(i-1), qadd8(r, part.red), qadd8(g, part.green), qadd8(b, part.blue)); } - if (before != uint32_t(cur)) // optimization: only set pixel if color has changed + if (before != cur) // optimization: only set pixel if color has changed setPixelColor((uint16_t)i,cur.red, cur.green, cur.blue); carryover = part; } From 7d4fe341f1a660d15c0c696701f948c1d7b7128b Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Tue, 18 Jul 2023 17:21:45 +0100 Subject: [PATCH 55/70] Remove direct setup for I2C from ES8388 driver --- usermods/audioreactive/audio_reactive.h | 2 +- usermods/audioreactive/audio_source.h | 37 +------------------------ 2 files changed, 2 insertions(+), 37 deletions(-) diff --git a/usermods/audioreactive/audio_reactive.h b/usermods/audioreactive/audio_reactive.h index b0964d4b9..357e612c3 100644 --- a/usermods/audioreactive/audio_reactive.h +++ b/usermods/audioreactive/audio_reactive.h @@ -1153,7 +1153,7 @@ class AudioReactive : public Usermod { DEBUGSR_PRINTLN(F("AR: ES8388 Source")); audioSource = new ES8388Source(SAMPLE_RATE, BLOCK_SIZE); delay(100); - if (audioSource) audioSource->initialize(sdaPin, sclPin, i2swsPin, i2ssdPin, i2sckPin, mclkPin); + if (audioSource) audioSource->initialize(i2swsPin, i2ssdPin, i2sckPin, mclkPin); break; #if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32S3) diff --git a/usermods/audioreactive/audio_source.h b/usermods/audioreactive/audio_source.h index c230dcc03..0ba24e8bf 100644 --- a/usermods/audioreactive/audio_source.h +++ b/usermods/audioreactive/audio_source.h @@ -433,13 +433,6 @@ public: */ class ES8388Source : public I2SSource { private: - // I2C initialization functions for ES8388 - void _es8388I2cBegin() { - bool i2c_initialized = Wire.begin(pin_ES8388_SDA, pin_ES8388_SCL, 100000U); - if (i2c_initialized == false) { - DEBUGSR_PRINTLN(F("AR: ES8388 failed to initialize I2C bus driver.")); - } - } void _es8388I2cWrite(uint8_t reg, uint8_t val) { #ifndef ES8388_ADDR @@ -464,7 +457,6 @@ class ES8388Source : public I2SSource { // Registries are decimal, settings are binary as that's how everything is listed in the docs // ...which makes it easier to reference the docs. // - _es8388I2cBegin(); _es8388I2cWrite( 8,0b00000000); // I2S to slave _es8388I2cWrite( 2,0b11110011); // Power down DEM and STM _es8388I2cWrite(43,0b10000000); // Set same LRCK @@ -534,49 +526,22 @@ class ES8388Source : public I2SSource { _config.channel_format = I2S_CHANNEL_FMT_ONLY_LEFT; }; - void initialize(int8_t sdaPin, int8_t sclPin, int8_t i2swsPin, int8_t i2ssdPin, int8_t i2sckPin, int8_t mclkPin) { - - // BUG: "use global I2C pins" are valid as -1, and -1 is seen as invalid here. - // Workaround: Set I2C pins here, which will also set them globally. - // Bug also exists in ES7243. - - // check that pins are valid - if ((sdaPin < 0) || (sclPin < 0)) { - DEBUGSR_PRINTF("\nAR: invalid ES8388 I2C pins: SDA=%d, SCL=%d\n", sdaPin, sclPin); - return; - } + void initialize(int8_t i2swsPin, int8_t i2ssdPin, int8_t i2sckPin, int8_t mclkPin) { if ((i2sckPin < 0) || (mclkPin < 0)) { DEBUGSR_PRINTF("\nAR: invalid I2S pin: SCK=%d, MCLK=%d\n", i2sckPin, mclkPin); return; } - // Reserve SDA and SCL pins of the I2C interface - PinManagerPinType es8388Pins[2] = { { sdaPin, true }, { sclPin, true } }; - if (!pinManager.allocateMultiplePins(es8388Pins, 2, PinOwner::HW_I2C)) { - pinManager.deallocateMultiplePins(es8388Pins, 2, PinOwner::HW_I2C); - DEBUGSR_PRINTF("\nAR: Failed to allocate ES8388 I2C pins: SDA=%d, SCL=%d\n", sdaPin, sclPin); - return; - } - - pin_ES8388_SDA = sdaPin; - pin_ES8388_SCL = sclPin; - // First route mclk, then configure ADC over I2C, then configure I2S _es8388InitAdc(); I2SSource::initialize(i2swsPin, i2ssdPin, i2sckPin, mclkPin); } void deinitialize() { - // Release SDA and SCL pins of the I2C interface - PinManagerPinType es8388Pins[2] = { { pin_ES8388_SDA, true }, { pin_ES8388_SCL, true } }; - pinManager.deallocateMultiplePins(es8388Pins, 2, PinOwner::HW_I2C); I2SSource::deinitialize(); } - private: - int8_t pin_ES8388_SDA; - int8_t pin_ES8388_SCL; }; #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 2, 0) From 7dcbb409a92918735752a01192e67c300686288e Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Tue, 18 Jul 2023 23:33:28 +0200 Subject: [PATCH 56/70] Trying to solve ABL bug. (no more pulsing) --- wled00/FX_fcn.cpp | 18 ++++-- wled00/bus_manager.cpp | 34 ++++++----- wled00/bus_manager.h | 15 +++-- wled00/bus_wrapper.h | 130 ++++++++++++++++++++--------------------- wled00/wled.h | 2 +- 5 files changed, 107 insertions(+), 92 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index e23051a4d..b139bb371 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1230,7 +1230,9 @@ void WS2812FX::show(void) { unsigned long microsStart = micros(); #endif - busses.setBrightness(estimateCurrentAndLimitBri()); + uint8_t newBri = estimateCurrentAndLimitBri(); + if (newBri < _brightness) busses.setBrightness(newBri, true); // "repaint" all pixels + #ifdef WLED_DEBUG sumCurrent += micros() - microsStart; #endif @@ -1240,6 +1242,9 @@ void WS2812FX::show(void) { // See https://github.com/Makuna/NeoPixelBus/wiki/ESP32-NeoMethods#neoesp32rmt-methods busses.show(); + // return bus brightness to original value + if (newBri < _brightness) busses.setBrightness(_brightness); + #ifdef WLED_DEBUG sumMicros += micros() - microsStart; if (++calls == 100) { @@ -1320,11 +1325,16 @@ void WS2812FX::setBrightness(uint8_t b, bool direct) { } } if (direct) { - // would be dangerous if applied immediately (could exceed ABL), but will not output until the next show() - busses.setBrightness(b); + // setting brightness with NeoPixelBusLg has no effect on already painted pixels, + // so we need to force an update to existing buffer + // that would be dangerous if applied immediately (could exceed ABL), but will not output until the next show() + busses.setBrightness(b, true); } else { + // setting brightness with NeoPixelBusLg has no effect on already painted pixels, + // so we need to redraw whole canvas for the change of brightness to take effect + busses.setBrightness(b); unsigned long t = millis(); - if (_segments[0].next_time > t + 22 && t - _lastShow > MIN_SHOW_DELAY) show(); //apply brightness change immediately if no refresh soon + if (_segments[0].next_time > t + 22 && t - _lastShow > MIN_SHOW_DELAY) trigger(); //apply brightness change immediately if no refresh soon } } diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index d798906b8..92aa06fce 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -101,7 +101,9 @@ BusDigital::BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com) : Bus(bc.type, bc.start, bc.autoWhite, bc.count, bc.reversed, (bc.refreshReq || bc.type == TYPE_TM1814)) , _skip(bc.skipAmount) //sacrificial pixels , _colorOrder(bc.colorOrder) +, _prevBri(255) , _colorOrderMap(com) +, _dirty(false) { if (!IS_DIGITAL(bc.type) || !bc.count) return; if (!pinManager.allocatePin(bc.pins[0], true, PinOwner::BusDigital)) return; @@ -118,7 +120,7 @@ BusDigital::BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com) _iType = PolyBus::getI(bc.type, _pins, nr); if (_iType == I_NONE) return; if (bc.doubleBuffer && !allocData(bc.count * (Bus::hasWhite(_type) + 3*Bus::hasRGB(_type)))) return; //warning: hardcoded channel count - buffering = bc.doubleBuffer; + _buffering = bc.doubleBuffer; uint16_t lenToCreate = bc.count; if (bc.type == TYPE_WS2812_1CH_X3) lenToCreate = NUM_ICS_WS2812_1CH_3X(bc.count); // only needs a third of "RGB" LEDs for NeoPixelBus _busPtr = PolyBus::create(_iType, _pins, lenToCreate + _skip, nr, _frequencykHz); @@ -128,8 +130,7 @@ BusDigital::BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com) void BusDigital::show() { if (!_valid) return; - PolyBus::setBrightness(_busPtr, _iType, _bri); - if (buffering) { // should be _data != nullptr, but that causes ~20% FPS drop + if (_buffering) { // should be _data != nullptr, but that causes ~20% FPS drop size_t channels = Bus::hasWhite(_type) + 3*Bus::hasRGB(_type); for (size_t i=0; i<_len; i++) { size_t offset = i*channels; @@ -149,14 +150,9 @@ void BusDigital::show() { else pix += _skip; PolyBus::setPixelColor(_busPtr, _iType, pix, c, co); } - } else { - PolyBus::applyPostAdjustments(_busPtr, _iType); } - PolyBus::show(_busPtr, _iType); - // looks like the following causes periodic miscalculations in ABL when not using double buffering - // when we no longer restore full brightness at busl level we only get a single frame with incorrect brightness - // when turning WLED off otherwise ABL calculations are OK - //PolyBus::setBrightness(_busPtr, _iType, 255); // restore full brightness at bus level (setting unscaled pixel color) + PolyBus::show(_busPtr, _iType, !_buffering); // may be faster if buffer consistency is not important + _dirty = false; } bool BusDigital::canShow() { @@ -164,7 +160,7 @@ bool BusDigital::canShow() { return PolyBus::canShow(_busPtr, _iType); } -void BusDigital::setBrightness(uint8_t b) { +void BusDigital::setBrightness(uint8_t b, bool updateNPBBuffer) { //Fix for turning off onboard LED breaking bus #ifdef LED_BUILTIN if (_bri == 0 && b > 0) { @@ -172,6 +168,12 @@ void BusDigital::setBrightness(uint8_t b) { } #endif Bus::setBrightness(b); + PolyBus::setBrightness(_busPtr, _iType, b); + if (!_buffering && updateNPBBuffer) { + PolyBus::applyPostAdjustments(_busPtr, _iType); + _dirty = true; + _prevBri = b; + } } //If LEDs are skipped, it is possible to use the first as a status LED. @@ -187,7 +189,7 @@ void IRAM_ATTR BusDigital::setPixelColor(uint16_t pix, uint32_t c) { if (!_valid) return; if (Bus::hasWhite(_type)) c = autoWhiteCalc(c); if (_cct >= 1900) c = colorBalanceFromKelvin(_cct, c); //color correction from CCT - if (buffering) { // should be _data != nullptr, but that causes ~20% FPS drop + if (_buffering) { // should be _data != nullptr, but that causes ~20% FPS drop size_t channels = Bus::hasWhite(_type) + 3*Bus::hasRGB(_type); size_t offset = pix*channels; if (Bus::hasRGB(_type)) { @@ -203,7 +205,7 @@ void IRAM_ATTR BusDigital::setPixelColor(uint16_t pix, uint32_t c) { if (_type == TYPE_WS2812_1CH_X3) { // map to correct IC, each controls 3 LEDs uint16_t pOld = pix; pix = IC_INDEX_WS2812_1CH_3X(pix); - uint32_t cOld = PolyBus::getPixelColor(_busPtr, _iType, pix, co); + uint32_t cOld = restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, pix, co)); switch (pOld % 3) { // change only the single channel (TODO: this can cause loss because of get/set) case 0: c = RGBW32(R(cOld), W(c) , B(cOld), 0); break; case 1: c = RGBW32(W(c) , G(cOld), B(cOld), 0); break; @@ -217,7 +219,7 @@ void IRAM_ATTR BusDigital::setPixelColor(uint16_t pix, uint32_t c) { // returns original color if global buffering is enabled, else returns lossly restored color from bus uint32_t BusDigital::getPixelColor(uint16_t pix) { if (!_valid) return 0; - if (buffering) { // should be _data != nullptr, but that causes ~20% FPS drop + if (_buffering) { // should be _data != nullptr, but that causes ~20% FPS drop size_t channels = Bus::hasWhite(_type) + 3*Bus::hasRGB(_type); size_t offset = pix*channels; uint32_t c; @@ -578,9 +580,9 @@ void IRAM_ATTR BusManager::setPixelColor(uint16_t pix, uint32_t c) { } } -void BusManager::setBrightness(uint8_t b) { +void BusManager::setBrightness(uint8_t b, bool updateBuffer) { for (uint8_t i = 0; i < numBusses; i++) { - busses[i]->setBrightness(b); + busses[i]->setBrightness(b, updateBuffer); } } diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index 5b48e7c25..e92d4b6e2 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -124,7 +124,7 @@ class Bus { virtual void setStatusPixel(uint32_t c) {} virtual void setPixelColor(uint16_t pix, uint32_t c) = 0; virtual uint32_t getPixelColor(uint16_t pix) { return 0; } - virtual void setBrightness(uint8_t b) { _bri = b; }; + virtual void setBrightness(uint8_t b, bool updateBuffer = false) { _bri = b; }; virtual void cleanup() = 0; virtual uint8_t getPins(uint8_t* pinArray) { return 0; } virtual uint16_t getLength() { return _len; } @@ -202,7 +202,7 @@ class BusDigital : public Bus { void show(); bool canShow(); - void setBrightness(uint8_t b); + void setBrightness(uint8_t b, bool updateBuffer = false); void setStatusPixel(uint32_t c); void setPixelColor(uint16_t pix, uint32_t c); void setColorOrder(uint8_t colorOrder); @@ -219,17 +219,20 @@ class BusDigital : public Bus { uint8_t _colorOrder; uint8_t _pins[2]; uint8_t _iType; + uint8_t _prevBri; uint16_t _frequencykHz; void * _busPtr; const ColorOrderMap &_colorOrderMap; - bool buffering; // temporary until we figure out why comparison "_data != nullptr" causes severe FPS drop + bool _buffering; // temporary until we figure out why comparison "_data != nullptr" causes severe FPS drop + bool _dirty; inline uint32_t restoreColorLossy(uint32_t c) { - if (_bri < 255) { + uint8_t restoreBri = _dirty ? _prevBri : _bri; + if (restoreBri < 255) { uint8_t* chan = (uint8_t*) &c; for (uint_fast8_t i=0; i<4; i++) { uint_fast16_t val = chan[i]; - chan[i] = ((val << 8) + _bri) / (_bri + 1); //adding _bri slighly improves recovery / stops degradation on re-scale + chan[i] = ((val << 8) + restoreBri) / (restoreBri + 1); //adding _bri slighly improves recovery / stops degradation on re-scale } } return c; @@ -317,7 +320,7 @@ class BusManager { bool canAllShow(); void setStatusPixel(uint32_t c); void setPixelColor(uint16_t pix, uint32_t c); - void setBrightness(uint8_t b); + void setBrightness(uint8_t b, bool updateBuffer = false); void setSegmentCCT(int16_t cct, bool allowWBCorrection = false); uint32_t getPixelColor(uint16_t pix); diff --git a/wled00/bus_wrapper.h b/wled00/bus_wrapper.h index 9807c54bf..8b6ee660f 100644 --- a/wled00/bus_wrapper.h +++ b/wled00/bus_wrapper.h @@ -496,101 +496,101 @@ class PolyBus { return busPtr; } - static void show(void* busPtr, uint8_t busType) { + static void show(void* busPtr, uint8_t busType, bool consistent = true) { switch (busType) { case I_NONE: break; #ifdef ESP8266 - case I_8266_U0_NEO_3: (static_cast(busPtr))->Show(); break; - case I_8266_U1_NEO_3: (static_cast(busPtr))->Show(); break; - case I_8266_DM_NEO_3: (static_cast(busPtr))->Show(); break; - case I_8266_BB_NEO_3: (static_cast(busPtr))->Show(); break; - case I_8266_U0_NEO_4: (static_cast(busPtr))->Show(); break; - case I_8266_U1_NEO_4: (static_cast(busPtr))->Show(); break; - case I_8266_DM_NEO_4: (static_cast(busPtr))->Show(); break; - case I_8266_BB_NEO_4: (static_cast(busPtr))->Show(); break; - case I_8266_U0_400_3: (static_cast(busPtr))->Show(); break; - case I_8266_U1_400_3: (static_cast(busPtr))->Show(); break; - case I_8266_DM_400_3: (static_cast(busPtr))->Show(); break; - case I_8266_BB_400_3: (static_cast(busPtr))->Show(); break; - case I_8266_U0_TM1_4: (static_cast(busPtr))->Show(); break; - case I_8266_U1_TM1_4: (static_cast(busPtr))->Show(); break; - case I_8266_DM_TM1_4: (static_cast(busPtr))->Show(); break; - case I_8266_BB_TM1_4: (static_cast(busPtr))->Show(); break; - case I_8266_U0_TM2_3: (static_cast(busPtr))->Show(); break; - case I_8266_U1_TM2_3: (static_cast(busPtr))->Show(); break; - case I_8266_DM_TM2_3: (static_cast(busPtr))->Show(); break; - case I_8266_BB_TM2_3: (static_cast(busPtr))->Show(); break; - case I_8266_U0_UCS_3: (static_cast(busPtr))->Show(); break; - case I_8266_U1_UCS_3: (static_cast(busPtr))->Show(); break; - case I_8266_DM_UCS_3: (static_cast(busPtr))->Show(); break; - case I_8266_BB_UCS_3: (static_cast(busPtr))->Show(); break; - case I_8266_U0_UCS_4: (static_cast(busPtr))->Show(); break; - case I_8266_U1_UCS_4: (static_cast(busPtr))->Show(); break; - case I_8266_DM_UCS_4: (static_cast(busPtr))->Show(); break; - case I_8266_BB_UCS_4: (static_cast(busPtr))->Show(); break; + case I_8266_U0_NEO_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_U1_NEO_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_DM_NEO_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_BB_NEO_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_U0_NEO_4: (static_cast(busPtr))->Show(consistent); break; + case I_8266_U1_NEO_4: (static_cast(busPtr))->Show(consistent); break; + case I_8266_DM_NEO_4: (static_cast(busPtr))->Show(consistent); break; + case I_8266_BB_NEO_4: (static_cast(busPtr))->Show(consistent); break; + case I_8266_U0_400_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_U1_400_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_DM_400_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_BB_400_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_U0_TM1_4: (static_cast(busPtr))->Show(consistent); break; + case I_8266_U1_TM1_4: (static_cast(busPtr))->Show(consistent); break; + case I_8266_DM_TM1_4: (static_cast(busPtr))->Show(consistent); break; + case I_8266_BB_TM1_4: (static_cast(busPtr))->Show(consistent); break; + case I_8266_U0_TM2_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_U1_TM2_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_DM_TM2_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_BB_TM2_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_U0_UCS_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_U1_UCS_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_DM_UCS_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_BB_UCS_3: (static_cast(busPtr))->Show(consistent); break; + case I_8266_U0_UCS_4: (static_cast(busPtr))->Show(consistent); break; + case I_8266_U1_UCS_4: (static_cast(busPtr))->Show(consistent); break; + case I_8266_DM_UCS_4: (static_cast(busPtr))->Show(consistent); break; + case I_8266_BB_UCS_4: (static_cast(busPtr))->Show(consistent); break; #endif #ifdef ARDUINO_ARCH_ESP32 - case I_32_RN_NEO_3: (static_cast(busPtr))->Show(); break; + case I_32_RN_NEO_3: (static_cast(busPtr))->Show(consistent); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_NEO_3: (static_cast(busPtr))->Show(); break; + case I_32_I0_NEO_3: (static_cast(busPtr))->Show(consistent); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_NEO_3: (static_cast(busPtr))->Show(); break; + case I_32_I1_NEO_3: (static_cast(busPtr))->Show(consistent); break; #endif -// case I_32_BB_NEO_3: (static_cast(busPtr))->Show(); break; - case I_32_RN_NEO_4: (static_cast(busPtr))->Show(); break; +// case I_32_BB_NEO_3: (static_cast(busPtr))->Show(consistent); break; + case I_32_RN_NEO_4: (static_cast(busPtr))->Show(consistent); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_NEO_4: (static_cast(busPtr))->Show(); break; + case I_32_I0_NEO_4: (static_cast(busPtr))->Show(consistent); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_NEO_4: (static_cast(busPtr))->Show(); break; + case I_32_I1_NEO_4: (static_cast(busPtr))->Show(consistent); break; #endif -// case I_32_BB_NEO_4: (static_cast(busPtr))->Show(); break; - case I_32_RN_400_3: (static_cast(busPtr))->Show(); break; +// case I_32_BB_NEO_4: (static_cast(busPtr))->Show(consistent); break; + case I_32_RN_400_3: (static_cast(busPtr))->Show(consistent); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_400_3: (static_cast(busPtr))->Show(); break; + case I_32_I0_400_3: (static_cast(busPtr))->Show(consistent); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_400_3: (static_cast(busPtr))->Show(); break; + case I_32_I1_400_3: (static_cast(busPtr))->Show(consistent); break; #endif -// case I_32_BB_400_3: (static_cast(busPtr))->Show(); break; - case I_32_RN_TM1_4: (static_cast(busPtr))->Show(); break; - case I_32_RN_TM2_3: (static_cast(busPtr))->Show(); break; +// case I_32_BB_400_3: (static_cast(busPtr))->Show(consistent); break; + case I_32_RN_TM1_4: (static_cast(busPtr))->Show(consistent); break; + case I_32_RN_TM2_3: (static_cast(busPtr))->Show(consistent); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_TM1_4: (static_cast(busPtr))->Show(); break; - case I_32_I0_TM2_3: (static_cast(busPtr))->Show(); break; + case I_32_I0_TM1_4: (static_cast(busPtr))->Show(consistent); break; + case I_32_I0_TM2_3: (static_cast(busPtr))->Show(consistent); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_TM1_4: (static_cast(busPtr))->Show(); break; - case I_32_I1_TM2_3: (static_cast(busPtr))->Show(); break; + case I_32_I1_TM1_4: (static_cast(busPtr))->Show(consistent); break; + case I_32_I1_TM2_3: (static_cast(busPtr))->Show(consistent); break; #endif - case I_32_RN_UCS_3: (static_cast(busPtr))->Show(); break; + case I_32_RN_UCS_3: (static_cast(busPtr))->Show(consistent); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_UCS_3: (static_cast(busPtr))->Show(); break; + case I_32_I0_UCS_3: (static_cast(busPtr))->Show(consistent); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_UCS_3: (static_cast(busPtr))->Show(); break; + case I_32_I1_UCS_3: (static_cast(busPtr))->Show(consistent); break; #endif -// case I_32_BB_UCS_3: (static_cast(busPtr))->Show(); break; - case I_32_RN_UCS_4: (static_cast(busPtr))->Show(); break; +// case I_32_BB_UCS_3: (static_cast(busPtr))->Show(consistent); break; + case I_32_RN_UCS_4: (static_cast(busPtr))->Show(consistent); break; #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_UCS_4: (static_cast(busPtr))->Show(); break; + case I_32_I0_UCS_4: (static_cast(busPtr))->Show(consistent); break; #endif #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_UCS_4: (static_cast(busPtr))->Show(); break; + case I_32_I1_UCS_4: (static_cast(busPtr))->Show(consistent); break; #endif -// case I_32_BB_UCS_4: (static_cast(busPtr))->Show(); break; +// case I_32_BB_UCS_4: (static_cast(busPtr))->Show(consistent); break; #endif - case I_HS_DOT_3: (static_cast(busPtr))->Show(); break; - case I_SS_DOT_3: (static_cast(busPtr))->Show(); break; - case I_HS_LPD_3: (static_cast(busPtr))->Show(); break; - case I_SS_LPD_3: (static_cast(busPtr))->Show(); break; - case I_HS_LPO_3: (static_cast(busPtr))->Show(); break; - case I_SS_LPO_3: (static_cast(busPtr))->Show(); break; - case I_HS_WS1_3: (static_cast(busPtr))->Show(); break; - case I_SS_WS1_3: (static_cast(busPtr))->Show(); break; - case I_HS_P98_3: (static_cast(busPtr))->Show(); break; - case I_SS_P98_3: (static_cast(busPtr))->Show(); break; + case I_HS_DOT_3: (static_cast(busPtr))->Show(consistent); break; + case I_SS_DOT_3: (static_cast(busPtr))->Show(consistent); break; + case I_HS_LPD_3: (static_cast(busPtr))->Show(consistent); break; + case I_SS_LPD_3: (static_cast(busPtr))->Show(consistent); break; + case I_HS_LPO_3: (static_cast(busPtr))->Show(consistent); break; + case I_SS_LPO_3: (static_cast(busPtr))->Show(consistent); break; + case I_HS_WS1_3: (static_cast(busPtr))->Show(consistent); break; + case I_SS_WS1_3: (static_cast(busPtr))->Show(consistent); break; + case I_HS_P98_3: (static_cast(busPtr))->Show(consistent); break; + case I_SS_P98_3: (static_cast(busPtr))->Show(consistent); break; } } diff --git a/wled00/wled.h b/wled00/wled.h index 0415a0cc1..e2cbf93d8 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2307130 +#define VERSION 2307180 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From 5b9630cf463738b7bce6abba2499e58ff3419aef Mon Sep 17 00:00:00 2001 From: cschwinne Date: Wed, 19 Jul 2023 13:50:09 +0200 Subject: [PATCH 57/70] Repaint NPB buffer on brightness updates --- wled00/FX_fcn.cpp | 10 ++++++++-- wled00/bus_manager.cpp | 23 +++++++++++++---------- wled00/bus_manager.h | 5 +---- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index b139bb371..d7e47ae18 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1082,6 +1082,11 @@ void WS2812FX::service() { // last condition ensures all solid segments are updated at the same time if (seg.isActive() && (nowUp > seg.next_time || _triggered || (doShow && seg.mode == FX_MODE_STATIC))) { + if (!doShow) { + // returning bus brightness to its original value is done here, as to not interfere with asyncronous show() + // TODO if it is safe, prefer to restore brightness in show() + busses.setBrightness(_brightness, true); // "repaint" all pixels if brightness has changed + } doShow = true; uint16_t delay = FRAMETIME; @@ -1242,8 +1247,9 @@ void WS2812FX::show(void) { // See https://github.com/Makuna/NeoPixelBus/wiki/ESP32-NeoMethods#neoesp32rmt-methods busses.show(); - // return bus brightness to original value - if (newBri < _brightness) busses.setBrightness(_brightness); + // returning bus brightness to its original value is done in the next frame, as to not interfere with asyncronous show() + // TODO if it is safe, prefer to restore brightness here + //if (newBri < _brightness) busses.setBrightness(_brightness, true); #ifdef WLED_DEBUG sumMicros += micros() - microsStart; diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index 92aa06fce..34efe7d88 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -101,9 +101,7 @@ BusDigital::BusDigital(BusConfig &bc, uint8_t nr, const ColorOrderMap &com) : Bus(bc.type, bc.start, bc.autoWhite, bc.count, bc.reversed, (bc.refreshReq || bc.type == TYPE_TM1814)) , _skip(bc.skipAmount) //sacrificial pixels , _colorOrder(bc.colorOrder) -, _prevBri(255) , _colorOrderMap(com) -, _dirty(false) { if (!IS_DIGITAL(bc.type) || !bc.count) return; if (!pinManager.allocatePin(bc.pins[0], true, PinOwner::BusDigital)) return; @@ -151,8 +149,7 @@ void BusDigital::show() { PolyBus::setPixelColor(_busPtr, _iType, pix, c, co); } } - PolyBus::show(_busPtr, _iType, !_buffering); // may be faster if buffer consistency is not important - _dirty = false; + PolyBus::show(_busPtr, _iType, !_buffering); // faster if buffer consistency is not important } bool BusDigital::canShow() { @@ -161,18 +158,24 @@ bool BusDigital::canShow() { } void BusDigital::setBrightness(uint8_t b, bool updateNPBBuffer) { + if (_bri == b) return; //Fix for turning off onboard LED breaking bus #ifdef LED_BUILTIN - if (_bri == 0 && b > 0) { + if (_bri == 0) { // && b > 0, covered by guard if above if (_pins[0] == LED_BUILTIN || _pins[1] == LED_BUILTIN) reinit(); } #endif + uint8_t prevBri = _bri; Bus::setBrightness(b); PolyBus::setBrightness(_busPtr, _iType, b); if (!_buffering && updateNPBBuffer) { - PolyBus::applyPostAdjustments(_busPtr, _iType); - _dirty = true; - _prevBri = b; + uint16_t hwLen = _len; + if (_type == TYPE_WS2812_1CH_X3) hwLen = NUM_ICS_WS2812_1CH_3X(_len); // only needs a third of "RGB" LEDs for NeoPixelBus + for (uint_fast16_t i = 0; i < hwLen; i++) { + // use 0 as color order, actual order does not matter here as we just update the channel values as-is + uint32_t c = restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, i, 0),prevBri); + PolyBus::setPixelColor(_busPtr, _iType, i, c, 0); + } } } @@ -205,7 +208,7 @@ void IRAM_ATTR BusDigital::setPixelColor(uint16_t pix, uint32_t c) { if (_type == TYPE_WS2812_1CH_X3) { // map to correct IC, each controls 3 LEDs uint16_t pOld = pix; pix = IC_INDEX_WS2812_1CH_3X(pix); - uint32_t cOld = restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, pix, co)); + uint32_t cOld = restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, pix, co),_bri); switch (pOld % 3) { // change only the single channel (TODO: this can cause loss because of get/set) case 0: c = RGBW32(R(cOld), W(c) , B(cOld), 0); break; case 1: c = RGBW32(W(c) , G(cOld), B(cOld), 0); break; @@ -233,7 +236,7 @@ uint32_t BusDigital::getPixelColor(uint16_t pix) { if (_reversed) pix = _len - pix -1; else pix += _skip; uint8_t co = _colorOrderMap.getPixelColorOrder(pix+_start, _colorOrder); - uint32_t c = restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, (_type==TYPE_WS2812_1CH_X3) ? IC_INDEX_WS2812_1CH_3X(pix) : pix, co)); + uint32_t c = restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, (_type==TYPE_WS2812_1CH_X3) ? IC_INDEX_WS2812_1CH_3X(pix) : pix, co),_bri); if (_type == TYPE_WS2812_1CH_X3) { // map to correct IC, each controls 3 LEDs uint8_t r = R(c); uint8_t g = _reversed ? B(c) : G(c); // should G and B be switched if _reversed? diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index e92d4b6e2..e46ac1753 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -219,15 +219,12 @@ class BusDigital : public Bus { uint8_t _colorOrder; uint8_t _pins[2]; uint8_t _iType; - uint8_t _prevBri; uint16_t _frequencykHz; void * _busPtr; const ColorOrderMap &_colorOrderMap; bool _buffering; // temporary until we figure out why comparison "_data != nullptr" causes severe FPS drop - bool _dirty; - inline uint32_t restoreColorLossy(uint32_t c) { - uint8_t restoreBri = _dirty ? _prevBri : _bri; + inline uint32_t restoreColorLossy(uint32_t c, uint8_t restoreBri) { if (restoreBri < 255) { uint8_t* chan = (uint8_t*) &c; for (uint_fast8_t i=0; i<4; i++) { From 0cf50e8000ae3bc604b0117768f96772f2d46dff Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Wed, 19 Jul 2023 16:06:41 +0200 Subject: [PATCH 58/70] FX Fireworks optimisation --- wled00/FX.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index be8998bc7..b457e094f 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1212,19 +1212,21 @@ uint16_t mode_fireworks() { bool valid1 = (SEGENV.aux0 < width*height); bool valid2 = (SEGENV.aux1 < width*height); + uint8_t x = SEGENV.aux0%width, y = SEGENV.aux0/width; // 2D coordinates stored in upper and lower byte uint32_t sv1 = 0, sv2 = 0; - if (valid1) sv1 = SEGMENT.is2D() ? SEGMENT.getPixelColorXY(SEGENV.aux0%width, SEGENV.aux0/width) : SEGMENT.getPixelColor(SEGENV.aux0); // get spark color - if (valid2) sv2 = SEGMENT.is2D() ? SEGMENT.getPixelColorXY(SEGENV.aux1%width, SEGENV.aux1/width) : SEGMENT.getPixelColor(SEGENV.aux1); + if (valid1) sv1 = SEGMENT.is2D() ? SEGMENT.getPixelColorXY(x, y) : SEGMENT.getPixelColor(SEGENV.aux0); // get spark color + if (valid2) sv2 = SEGMENT.is2D() ? SEGMENT.getPixelColorXY(x, y) : SEGMENT.getPixelColor(SEGENV.aux1); if (!SEGENV.step) SEGMENT.blur(16); - if (valid1) { if (SEGMENT.is2D()) SEGMENT.setPixelColorXY(SEGENV.aux0%width, SEGENV.aux0/width, sv1); else SEGMENT.setPixelColor(SEGENV.aux0, sv1); } // restore spark color after blur - if (valid2) { if (SEGMENT.is2D()) SEGMENT.setPixelColorXY(SEGENV.aux1%width, SEGENV.aux1/width, sv2); else SEGMENT.setPixelColor(SEGENV.aux1, sv2); } // restore old spark color after blur + if (valid1) { if (SEGMENT.is2D()) SEGMENT.setPixelColorXY(x, y, sv1); else SEGMENT.setPixelColor(SEGENV.aux0, sv1); } // restore spark color after blur + if (valid2) { if (SEGMENT.is2D()) SEGMENT.setPixelColorXY(x, y, sv2); else SEGMENT.setPixelColor(SEGENV.aux1, sv2); } // restore old spark color after blur for (int i=0; i> 1)) == 0) { uint16_t index = random16(width*height); - uint16_t j = index % width, k = index / width; + x = index % width; + y = index / width; uint32_t col = SEGMENT.color_from_palette(random8(), false, false, 0); - if (SEGMENT.is2D()) SEGMENT.setPixelColorXY(j, k, col); + if (SEGMENT.is2D()) SEGMENT.setPixelColorXY(x, y, col); else SEGMENT.setPixelColor(index, col); SEGENV.aux1 = SEGENV.aux0; // old spark SEGENV.aux0 = index; // remember where spark occured From 2fce15db94d389740e58b2224b40365819fe3544 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Wed, 19 Jul 2023 16:22:34 +0200 Subject: [PATCH 59/70] Restore brightness immediately after show() --- wled00/FX_fcn.cpp | 14 +++---- wled00/bus_wrapper.h | 98 -------------------------------------------- 2 files changed, 6 insertions(+), 106 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index d7e47ae18..ce845ce38 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1082,11 +1082,6 @@ void WS2812FX::service() { // last condition ensures all solid segments are updated at the same time if (seg.isActive() && (nowUp > seg.next_time || _triggered || (doShow && seg.mode == FX_MODE_STATIC))) { - if (!doShow) { - // returning bus brightness to its original value is done here, as to not interfere with asyncronous show() - // TODO if it is safe, prefer to restore brightness in show() - busses.setBrightness(_brightness, true); // "repaint" all pixels if brightness has changed - } doShow = true; uint16_t delay = FRAMETIME; @@ -1247,9 +1242,10 @@ void WS2812FX::show(void) { // See https://github.com/Makuna/NeoPixelBus/wiki/ESP32-NeoMethods#neoesp32rmt-methods busses.show(); - // returning bus brightness to its original value is done in the next frame, as to not interfere with asyncronous show() - // TODO if it is safe, prefer to restore brightness here - //if (newBri < _brightness) busses.setBrightness(_brightness, true); + // restore bus brightness to its original value + // this is done right after show, so this is only OK if LED updates are completed before show() returns + // or async show has a separate buffer (ESP32 RMT and I2S are ok) + if (newBri < _brightness) busses.setBrightness(_brightness, true); #ifdef WLED_DEBUG sumMicros += micros() - microsStart; @@ -1321,6 +1317,8 @@ void WS2812FX::setCCT(uint16_t k) { } } +// direct=true either expects the caller to call show() themselves (realtime modes) or be ok waiting for the next frame for the change to apply +// direct=false immediately triggers an effect redraw void WS2812FX::setBrightness(uint8_t b, bool direct) { if (gammaCorrectBri) b = gamma8(b); if (_brightness == b) return; diff --git a/wled00/bus_wrapper.h b/wled00/bus_wrapper.h index 8b6ee660f..72b4435e5 100644 --- a/wled00/bus_wrapper.h +++ b/wled00/bus_wrapper.h @@ -911,104 +911,6 @@ class PolyBus { } } - static void applyPostAdjustments(void* busPtr, uint8_t busType) { - switch (busType) { - case I_NONE: break; - #ifdef ESP8266 - case I_8266_U0_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U0_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_U1_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_DM_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_8266_BB_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif - #ifdef ARDUINO_ARCH_ESP32 - case I_32_RN_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif - #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_NEO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif -// case I_32_BB_NEO_3: (static_cast(busPtr))->SetLuminance(b); (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif - #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif -// case I_32_BB_NEO_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif - #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif -// case I_32_BB_400_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_I0_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif - #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_TM1_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_I1_TM2_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif - case I_32_RN_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif - #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif -// case I_32_BB_UCS_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_32_RN_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #ifndef WLED_NO_I2S0_PIXELBUS - case I_32_I0_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif - #ifndef WLED_NO_I2S1_PIXELBUS - case I_32_I1_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif -// case I_32_BB_UCS_4: (static_cast(busPtr))->ApplyPostAdjustments(); break; - #endif - case I_HS_DOT_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_DOT_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_HS_LPD_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_LPD_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_HS_LPO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_LPO_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_HS_WS1_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_WS1_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_HS_P98_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - case I_SS_P98_3: (static_cast(busPtr))->ApplyPostAdjustments(); break; - } - } - static uint32_t getPixelColor(void* busPtr, uint8_t busType, uint16_t pix, uint8_t co) { RgbwColor col(0,0,0,0); switch (busType) { From 8ccf349458d3b044dac74f215a63ec2db5f83ef8 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Wed, 19 Jul 2023 17:25:25 +0200 Subject: [PATCH 60/70] Always repaint NPB buffer on brightness change Fix bus re-init causing full brightness (every show() now attempts to set the brightness, bus will ignore this if it stays the same) --- wled00/FX_fcn.cpp | 17 ++++++----------- wled00/bus_manager.cpp | 26 +++++++++++++++----------- wled00/bus_manager.h | 6 +++--- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index ce845ce38..74d61cb4b 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1231,7 +1231,7 @@ void WS2812FX::show(void) { #endif uint8_t newBri = estimateCurrentAndLimitBri(); - if (newBri < _brightness) busses.setBrightness(newBri, true); // "repaint" all pixels + busses.setBrightness(newBri); // "repaints" all pixels if brightness changed #ifdef WLED_DEBUG sumCurrent += micros() - microsStart; @@ -1245,7 +1245,7 @@ void WS2812FX::show(void) { // restore bus brightness to its original value // this is done right after show, so this is only OK if LED updates are completed before show() returns // or async show has a separate buffer (ESP32 RMT and I2S are ok) - if (newBri < _brightness) busses.setBrightness(_brightness, true); + if (newBri < _brightness) busses.setBrightness(_brightness); #ifdef WLED_DEBUG sumMicros += micros() - microsStart; @@ -1328,15 +1328,10 @@ void WS2812FX::setBrightness(uint8_t b, bool direct) { seg.freeze = false; } } - if (direct) { - // setting brightness with NeoPixelBusLg has no effect on already painted pixels, - // so we need to force an update to existing buffer - // that would be dangerous if applied immediately (could exceed ABL), but will not output until the next show() - busses.setBrightness(b, true); - } else { - // setting brightness with NeoPixelBusLg has no effect on already painted pixels, - // so we need to redraw whole canvas for the change of brightness to take effect - busses.setBrightness(b); + // setting brightness with NeoPixelBusLg has no effect on already painted pixels, + // so we need to force an update to existing buffer + busses.setBrightness(b); + if (!direct) { unsigned long t = millis(); if (_segments[0].next_time > t + 22 && t - _lastShow > MIN_SHOW_DELAY) trigger(); //apply brightness change immediately if no refresh soon } diff --git a/wled00/bus_manager.cpp b/wled00/bus_manager.cpp index 34efe7d88..7ea44b158 100644 --- a/wled00/bus_manager.cpp +++ b/wled00/bus_manager.cpp @@ -157,7 +157,7 @@ bool BusDigital::canShow() { return PolyBus::canShow(_busPtr, _iType); } -void BusDigital::setBrightness(uint8_t b, bool updateNPBBuffer) { +void BusDigital::setBrightness(uint8_t b) { if (_bri == b) return; //Fix for turning off onboard LED breaking bus #ifdef LED_BUILTIN @@ -168,14 +168,18 @@ void BusDigital::setBrightness(uint8_t b, bool updateNPBBuffer) { uint8_t prevBri = _bri; Bus::setBrightness(b); PolyBus::setBrightness(_busPtr, _iType, b); - if (!_buffering && updateNPBBuffer) { - uint16_t hwLen = _len; - if (_type == TYPE_WS2812_1CH_X3) hwLen = NUM_ICS_WS2812_1CH_3X(_len); // only needs a third of "RGB" LEDs for NeoPixelBus - for (uint_fast16_t i = 0; i < hwLen; i++) { - // use 0 as color order, actual order does not matter here as we just update the channel values as-is - uint32_t c = restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, i, 0),prevBri); - PolyBus::setPixelColor(_busPtr, _iType, i, c, 0); - } + + if (_buffering) return; + + // must update/repaint every LED in the NeoPixelBus buffer to the new brightness + // the only case where repainting is unnecessary is when all pixels are set after the brightness change but before the next show + // (which we can't rely on) + uint16_t hwLen = _len; + if (_type == TYPE_WS2812_1CH_X3) hwLen = NUM_ICS_WS2812_1CH_3X(_len); // only needs a third of "RGB" LEDs for NeoPixelBus + for (uint_fast16_t i = 0; i < hwLen; i++) { + // use 0 as color order, actual order does not matter here as we just update the channel values as-is + uint32_t c = restoreColorLossy(PolyBus::getPixelColor(_busPtr, _iType, i, 0),prevBri); + PolyBus::setPixelColor(_busPtr, _iType, i, c, 0); } } @@ -583,9 +587,9 @@ void IRAM_ATTR BusManager::setPixelColor(uint16_t pix, uint32_t c) { } } -void BusManager::setBrightness(uint8_t b, bool updateBuffer) { +void BusManager::setBrightness(uint8_t b) { for (uint8_t i = 0; i < numBusses; i++) { - busses[i]->setBrightness(b, updateBuffer); + busses[i]->setBrightness(b); } } diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index e46ac1753..4249c880e 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -124,7 +124,7 @@ class Bus { virtual void setStatusPixel(uint32_t c) {} virtual void setPixelColor(uint16_t pix, uint32_t c) = 0; virtual uint32_t getPixelColor(uint16_t pix) { return 0; } - virtual void setBrightness(uint8_t b, bool updateBuffer = false) { _bri = b; }; + virtual void setBrightness(uint8_t b) { _bri = b; }; virtual void cleanup() = 0; virtual uint8_t getPins(uint8_t* pinArray) { return 0; } virtual uint16_t getLength() { return _len; } @@ -202,7 +202,7 @@ class BusDigital : public Bus { void show(); bool canShow(); - void setBrightness(uint8_t b, bool updateBuffer = false); + void setBrightness(uint8_t b); void setStatusPixel(uint32_t c); void setPixelColor(uint16_t pix, uint32_t c); void setColorOrder(uint8_t colorOrder); @@ -317,7 +317,7 @@ class BusManager { bool canAllShow(); void setStatusPixel(uint32_t c); void setPixelColor(uint16_t pix, uint32_t c); - void setBrightness(uint8_t b, bool updateBuffer = false); + void setBrightness(uint8_t b); void setSegmentCCT(int16_t cct, bool allowWBCorrection = false); uint32_t getPixelColor(uint16_t pix); From e3ee48b52ebf898aa2fc5a2ffbcf507670ff2c82 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Wed, 19 Jul 2023 18:02:57 +0200 Subject: [PATCH 61/70] Deallocate relay, button and IR pins prior to reallocation in JSON config parser (#3294) --- wled00/cfg.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index 15ef0e1f0..3eac1c565 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -197,6 +197,9 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { disablePullUp = !pull; JsonArray hw_btn_ins = btn_obj[F("ins")]; if (!hw_btn_ins.isNull()) { + for (uint8_t b = 0; b < WLED_MAX_BUTTONS; b++) { // deallocate existing button pins + pinManager.deallocatePin(btnPin[b], PinOwner::Button); // does nothing if trying to deallocate a pin with PinOwner != Button + } uint8_t s = 0; for (JsonObject btn : hw_btn_ins) { CJSON(buttonType[s], btn["type"]); @@ -264,6 +267,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { int hw_ir_pin = hw["ir"]["pin"] | -2; // 4 if (hw_ir_pin > -2) { + pinManager.deallocatePin(irPin, PinOwner::IR); if (pinManager.allocatePin(hw_ir_pin, false, PinOwner::IR)) { irPin = hw_ir_pin; } else { @@ -276,6 +280,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { JsonObject relay = hw[F("relay")]; int hw_relay_pin = relay["pin"] | -2; if (hw_relay_pin > -2) { + pinManager.deallocatePin(rlyPin, PinOwner::Relay); if (pinManager.allocatePin(hw_relay_pin,true, PinOwner::Relay)) { rlyPin = hw_relay_pin; pinMode(rlyPin, OUTPUT); From aa54d65f636cdde3c878b4f1d6f2fe443a1e9861 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 20 Jul 2023 21:39:25 +0200 Subject: [PATCH 62/70] upgrade -S3/-S2/-C3 to platform 5.3.0 platform 5.3.0 = arduino-esp32 v2.0.6 + esp-idf v4.4.3 --> you will need new bootloader files for arduino-esp32 v2.0.6 --> coredumps are supported now, if you leave 64Kb of flash at the end of your partitions file (see example in wled_esp32_8MB.csv) --- platformio.ini | 12 ++++-------- tools/WLED_ESP32_16MB_9MB_FS.csv | 8 ++++++++ tools/WLED_ESP32_8MB.csv | 3 ++- 3 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 tools/WLED_ESP32_16MB_9MB_FS.csv diff --git a/platformio.ini b/platformio.ini index d3b71d3c4..430263b71 100644 --- a/platformio.ini +++ b/platformio.ini @@ -249,9 +249,8 @@ lib_deps = ;; ;; please note that you can NOT update existing ESP32 installs with a "V4" build. Also updating by OTA will not work properly. ;; You need to completely erase your device (esptool erase_flash) first, then install the "V4" build from VSCode+platformio. -platform = espressif32@5.2.0 +platform = espressif32@5.3.0 platform_packages = - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5 ; required for platform version < 5.3.0, remove this line when upgrading to platform >=5.3.0 build_flags = -g -Wshadow=compatible-local ;; emit warning in case a local variable "shadows" another local one -DARDUINO_ARCH_ESP32 -DESP32 @@ -265,9 +264,8 @@ lib_deps = [esp32s2] ;; generic definitions for all ESP32-S2 boards -platform = espressif32@5.2.0 +platform = espressif32@5.3.0 platform_packages = - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5 ; required for platform version < 5.3.0, remove this line when upgrading to platform >=5.3.0 build_flags = -g -DARDUINO_ARCH_ESP32 -DARDUINO_ARCH_ESP32S2 @@ -285,9 +283,8 @@ lib_deps = [esp32c3] ;; generic definitions for all ESP32-C3 boards -platform = espressif32@5.2.0 +platform = espressif32@5.3.0 platform_packages = - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5 ; required for platform version < 5.3.0, remove this line when upgrading to platform >=5.3.0 build_flags = -g -DARDUINO_ARCH_ESP32 -DARDUINO_ARCH_ESP32C3 @@ -304,9 +301,8 @@ lib_deps = [esp32s3] ;; generic definitions for all ESP32-S3 boards -platform = espressif32@5.2.0 +platform = espressif32@5.3.0 platform_packages = - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5 ; required for platform version < 5.3.0, remove this line when upgrading to platform >=5.3.0 build_flags = -g -DESP32 -DARDUINO_ARCH_ESP32 diff --git a/tools/WLED_ESP32_16MB_9MB_FS.csv b/tools/WLED_ESP32_16MB_9MB_FS.csv new file mode 100644 index 000000000..f2f3f7783 --- /dev/null +++ b/tools/WLED_ESP32_16MB_9MB_FS.csv @@ -0,0 +1,8 @@ +# Name, Type, SubType, Offset, Size, Flags +nvs, data, nvs, 0x9000, 0x5000, +otadata, data, ota, 0xe000, 0x2000, +app0, app, ota_0, 0x10000, 0x300000, +app1, app, ota_1, 0x310000,0x300000, +spiffs, data, spiffs, 0x610000,0x9E0000, +coredump, data, coredump,,64K +# to create/use ffat, see https://github.com/marcmerlin/esp32_fatfsimage \ No newline at end of file diff --git a/tools/WLED_ESP32_8MB.csv b/tools/WLED_ESP32_8MB.csv index 5e930b89a..3cf3afc34 100644 --- a/tools/WLED_ESP32_8MB.csv +++ b/tools/WLED_ESP32_8MB.csv @@ -3,4 +3,5 @@ nvs, data, nvs, 0x9000, 0x5000, otadata, data, ota, 0xe000, 0x2000, app0, app, ota_0, 0x10000, 0x200000, app1, app, ota_1, 0x210000,0x200000, -spiffs, data, spiffs, 0x410000,0x3F0000, \ No newline at end of file +spiffs, data, spiffs, 0x410000,0x3E0000, +coredump, data, coredump,,64K From 2db966ba476a5eb73b2587a0ceba675674d68bc0 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 20 Jul 2023 22:09:14 +0200 Subject: [PATCH 63/70] Improvements for -S3 with PSRAM qio_opi: PSRAM 8MB or 16MB qio_qspi: PSRAM 2MB or 4MB fun fact: _opi and _qspi modes both require a special bootloader. --- platformio.ini | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/platformio.ini b/platformio.ini index 430263b71..c939a73bd 100644 --- a/platformio.ini +++ b/platformio.ini @@ -446,6 +446,7 @@ board_build.flash_mode = qio upload_speed = 460800 build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} ${esp32s2.build_flags} #-D WLED_RELEASE_NAME=S2_saola + ;-DLOLIN_WIFI_FIX ;; try this in case Wifi does not work -DARDUINO_USB_CDC_ON_BOOT=1 lib_deps = ${esp32s2.lib_deps} @@ -458,6 +459,7 @@ board = esp32-c3-devkitm-1 board_build.partitions = tools/WLED_ESP32_4MB_1MB_FS.csv build_flags = ${common.build_flags} ${esp32c3.build_flags} #-D WLED_RELEASE_NAME=ESP32-C3 -D WLED_WATCHDOG_TIMEOUT=0 + -DLOLIN_WIFI_FIX ; seems to work much better with this -DARDUINO_USB_CDC_ON_BOOT=1 ;; for virtual CDC USB ;-DARDUINO_USB_CDC_ON_BOOT=0 ;; for serial-to-USB chip upload_speed = 460800 @@ -474,7 +476,7 @@ build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} ${esp32s3.build_flags} -D CONFIG_LITTLEFS_FOR_IDF_3_2 -D WLED_WATCHDOG_TIMEOUT=0 -D ARDUINO_USB_CDC_ON_BOOT=0 ;; -D ARDUINO_USB_MODE=1 ;; for boards with serial-to-USB chip - ;-D ARDUINO_USB_CDC_ON_BOOT=1 ;; -D ARDUINO_USB_MODE=0 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB") + ;-D ARDUINO_USB_CDC_ON_BOOT=1 ;; -D ARDUINO_USB_MODE=1 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB") ;-D WLED_DEBUG lib_deps = ${esp32s3.lib_deps} board_build.partitions = tools/WLED_ESP32_8MB.csv @@ -483,19 +485,18 @@ board_build.flash_mode = qio ; board_build.flash_mode = dio ;; try this if you have problems at startup monitor_filters = esp32_exception_decoder -[env:esp32s3dev_8MB_PSRAM] -;; ESP32-TinyS3 development board, with 8MB FLASH and 8MB PSRAM (memory_type: qio_opi, qio_qspi, or opi_opi) -;board = um_tinys3 ; -> needs workaround from https://github.com/Aircoookie/WLED/pull/2905#issuecomment-1328049860 -;board = esp32s3box ; -> error: 'esp32_adc2gpio' was not declared in this scope -board = esp32-s3-devkitc-1 ; -> compiles, but does not support PSRAM +[env:esp32s3dev_8MB_PSRAM_opi] +;; ESP32-S3 development board, with 8MB FLASH and >= 8MB PSRAM (memory_type: qio_opi) +board = esp32-s3-devkitc-1 ;; generic dev board; the next line adds PSRAM support +board_build.arduino.memory_type = qio_opi ;; use with PSRAM: 8MB or 16MB platform = ${esp32s3.platform} platform_packages = ${esp32s3.platform_packages} upload_speed = 921600 build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} ${esp32s3.build_flags} -D CONFIG_LITTLEFS_FOR_IDF_3_2 -D WLED_WATCHDOG_TIMEOUT=0 - ;-D ARDUINO_USB_CDC_ON_BOOT=0 ;; -D ARDUINO_USB_MODE=1 ;; for boards with serial-to-USB chip - -D ARDUINO_USB_CDC_ON_BOOT=1 ;; -D ARDUINO_USB_MODE=0 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB") + ;-D ARDUINO_USB_CDC_ON_BOOT=0 ;; -D ARDUINO_USB_MODE=1 ;; for boards with serial-to-USB chip + -D ARDUINO_USB_CDC_ON_BOOT=1 -D ARDUINO_USB_MODE=1 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB") ; -D WLED_RELEASE_NAME=ESP32-S3_PSRAM -D WLED_USE_PSRAM -DBOARD_HAS_PSRAM ; tells WLED that PSRAM shall be used lib_deps = ${esp32s3.lib_deps} @@ -504,6 +505,13 @@ board_build.f_flash = 80000000L board_build.flash_mode = qio monitor_filters = esp32_exception_decoder +[env:esp32s3dev_8MB_PSRAM_qspi] +;; ESP32-TinyS3 development board, with 8MB FLASH and PSRAM (memory_type: qio_qspi) +extends = env:esp32s3dev_8MB_PSRAM_opi +;board = um_tinys3 ; -> needs workaround from https://github.com/Aircoookie/WLED/pull/2905#issuecomment-1328049860 +board = esp32-s3-devkitc-1 ;; generic dev board; the next line adds PSRAM support +board_build.arduino.memory_type = qio_qspi ;; use with PSRAM: 2MB or 4MB + [env:esp8285_4CH_MagicHome] board = esp8285 platform = ${common.platform_wled_default} From 050489dd80e6a713048d7fbb89ccaf4a13de6705 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 20 Jul 2023 22:09:48 +0200 Subject: [PATCH 64/70] allow Lolin Wifi Fix on -S3 --- wled00/wled.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wled00/wled.cpp b/wled00/wled.cpp index e51fc37bb..3a0cf4672 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -536,7 +536,7 @@ void WLED::initAP(bool resetAP) DEBUG_PRINTLN(apSSID); WiFi.softAPConfig(IPAddress(4, 3, 2, 1), IPAddress(4, 3, 2, 1), IPAddress(255, 255, 255, 0)); WiFi.softAP(apSSID, apPass, apChannel, apHide); - #if defined(LOLIN_WIFI_FIX) && (defined(ARDUINO_ARCH_ESP32C3) || defined(ARDUINO_ARCH_ESP32S2)) + #if defined(LOLIN_WIFI_FIX) && (defined(ARDUINO_ARCH_ESP32C3) || defined(ARDUINO_ARCH_ESP32S2) || defined(ARDUINO_ARCH_ESP32S3)) WiFi.setTxPower(WIFI_POWER_8_5dBm); #endif @@ -714,7 +714,7 @@ void WLED::initConnection() WiFi.begin(clientSSID, clientPass); #ifdef ARDUINO_ARCH_ESP32 - #if defined(LOLIN_WIFI_FIX) && (defined(ARDUINO_ARCH_ESP32C3) || defined(ARDUINO_ARCH_ESP32S2)) + #if defined(LOLIN_WIFI_FIX) && (defined(ARDUINO_ARCH_ESP32C3) || defined(ARDUINO_ARCH_ESP32S2) || defined(ARDUINO_ARCH_ESP32S3)) WiFi.setTxPower(WIFI_POWER_8_5dBm); #endif WiFi.setSleep(!noWifiSleep); From f8e766ffc0565f575bae819bd31057f3ae5a50bc Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 20 Jul 2023 22:21:02 +0200 Subject: [PATCH 65/70] add -S3 PSRAM (qio_opi) to nightly builds --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index c939a73bd..abba37bdd 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,7 +11,7 @@ # CI binaries ; default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, esp32dev, esp32_eth # ESP32 variant builds are temporarily excluded from CI due to toolchain issues on the GitHub Actions Linux environment -default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, esp32dev, esp32_eth, lolin_s2_mini, esp32c3dev, esp32s3dev_8MB +default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, esp32dev, esp32_eth, lolin_s2_mini, esp32c3dev, esp32s3dev_8MB, esp32s3dev_8MB_PSRAM_opi # Release binaries ; default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, esp32dev, esp32_eth, lolin_s2_mini, esp32c3dev, esp32s3dev_8MB From c8fdf3731a1c9b4b8557cb77174b0c66851e4200 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 20 Jul 2023 22:36:47 +0200 Subject: [PATCH 66/70] upgrade to FastLED 3.6.0 changes from 3.50 to 3.6.0: * bugfixes * removed "register" keyword * some speedups * explicit bool() and uint32_t() operators, see https://github.com/FastLED/FastLED/issues/819 FX.cpp: bugfix for "wled00/FX.cpp:4906:36: error: cannot convert 'CRGB' to 'uint32_t' {aka 'unsigned int'} in initialization" --- platformio.ini | 4 ++-- wled00/FX.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/platformio.ini b/platformio.ini index abba37bdd..73da6250d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -175,7 +175,7 @@ upload_speed = 115200 # ------------------------------------------------------------------------------ lib_compat_mode = strict lib_deps = - fastled/FastLED @ 3.5.0 + fastled/FastLED @ 3.6.0 IRremoteESP8266 @ 2.8.2 makuna/NeoPixelBus @ 2.7.5 https://github.com/Aircoookie/ESPAsyncWebServer.git @ ~2.0.7 @@ -201,7 +201,7 @@ build_flags = -DESP8266 -DFP_IN_IROM ;-Wno-deprecated-declarations - -Wno-register ;; leaves some warnings when compiling C files: command-line option '-Wno-register' is valid for C++/ObjC++ but not for C + ;-Wno-register ;; leaves some warnings when compiling C files: command-line option '-Wno-register' is valid for C++/ObjC++ but not for C ;-Dregister= # remove warnings in C++17 due to use of deprecated register keyword by the FastLED library ;; warning: this can be dangerous -Wno-misleading-indentation ; NONOSDK22x_190703 = 2.2.2-dev(38a443e) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index b457e094f..9ed567109 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -4903,7 +4903,7 @@ uint16_t mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired by https: } // i,j // Rules of Life - uint32_t col = prevLeds[XY(x,y)]; + uint32_t col = uint32_t(prevLeds[XY(x,y)]) & 0x00FFFFFF; // uint32_t operator returns RGBA, we want RGBW -> cut off "alpha" byte uint32_t bgc = RGBW32(backgroundColor.r, backgroundColor.g, backgroundColor.b, 0); if ((col != bgc) && (neighbors < 2)) SEGMENT.setPixelColorXY(x,y, bgc); // Loneliness else if ((col != bgc) && (neighbors > 3)) SEGMENT.setPixelColorXY(x,y, bgc); // Overpopulation From 1ecb4fedccb17e5024dde5fb582a26bedec71028 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Fri, 21 Jul 2023 16:09:01 +0200 Subject: [PATCH 67/70] 2D Drift: minor optimization moving "t/20" out of the main loop gives some speedup. --- wled00/FX.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 533da32bd..f8f374572 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -4759,11 +4759,12 @@ uint16_t mode_2DDrift() { // By: Stepko https://editor.soulmateli const uint16_t maxDim = MAX(cols, rows)/2; unsigned long t = millis() / (32 - (SEGMENT.speed>>3)); + unsigned long t_20 = t/20; // softhack007: pre-calculating this gives about 10% speedup for (float i = 1; i < maxDim; i += 0.25) { float angle = radians(t * (maxDim - i)); uint16_t myX = (cols>>1) + (uint16_t)(sin_t(angle) * i) + (cols%2); uint16_t myY = (rows>>1) + (uint16_t)(cos_t(angle) * i) + (rows%2); - SEGMENT.setPixelColorXY(myX, myY, ColorFromPalette(SEGPALETTE, (i * 20) + (t / 20), 255, LINEARBLEND)); + SEGMENT.setPixelColorXY(myX, myY, ColorFromPalette(SEGPALETTE, (i * 20) + t_20, 255, LINEARBLEND)); } SEGMENT.blur(SEGMENT.intensity>>3); From b67235a7e5cda4e41bd7aecda3696a8ad326e27a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Jul 2023 16:29:21 +0200 Subject: [PATCH 68/70] Bump certifi from 2022.12.7 to 2023.7.22 (#3301) Bumps [certifi](https://github.com/certifi/python-certifi) from 2022.12.7 to 2023.7.22. - [Commits](https://github.com/certifi/python-certifi/compare/2022.12.07...2023.07.22) --- updated-dependencies: - dependency-name: certifi dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index bc536ed07..17eca159a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,7 +12,7 @@ anyio==3.6.2 # via starlette bottle==0.12.25 # via platformio -certifi==2022.12.7 +certifi==2023.7.22 # via requests charset-normalizer==3.1.0 # via requests From 0ccadb246fd86cbe432950f26339cc162a246ffb Mon Sep 17 00:00:00 2001 From: Aiden Date: Thu, 27 Jul 2023 05:35:52 -0400 Subject: [PATCH 69/70] Add WireGuard VPN usermod (#3270) * added wireguard VPN usermod * add example PIO override & edit readme * add contact information and improve usermod performance --- usermods/wireguard/platformio_override.ini | 22 ++++ usermods/wireguard/readme.md | 19 +++ usermods/wireguard/wireguard.h | 127 +++++++++++++++++++++ wled00/const.h | 1 + wled00/usermods_list.cpp | 8 ++ 5 files changed, 177 insertions(+) create mode 100644 usermods/wireguard/platformio_override.ini create mode 100644 usermods/wireguard/readme.md create mode 100644 usermods/wireguard/wireguard.h diff --git a/usermods/wireguard/platformio_override.ini b/usermods/wireguard/platformio_override.ini new file mode 100644 index 000000000..fc0ae5fc9 --- /dev/null +++ b/usermods/wireguard/platformio_override.ini @@ -0,0 +1,22 @@ +# Example PlatformIO Project Configuration Override for WireGuard +# ------------------------------------------------------------------------------ +# Copy to platformio_override.ini to activate. +# ------------------------------------------------------------------------------ +# Please visit documentation: https://docs.platformio.org/page/projectconf.html + +[platformio] +default_envs = WLED_ESP32-WireGuard + +[env:WLED_ESP32-WireGuard] +board = esp32dev +platform = ${esp32.platform} +platform_packages = ${esp32.platform_packages} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags_esp32} + -D WLED_RELEASE_NAME=ESP32-WireGuard + -D USERMOD_WIREGUARD +lib_deps = ${esp32.lib_deps} + https://github.com/kienvu58/WireGuard-ESP32-Arduino.git +monitor_filters = esp32_exception_decoder +board_build.partitions = ${esp32.default_partitions} +upload_speed = 921600 \ No newline at end of file diff --git a/usermods/wireguard/readme.md b/usermods/wireguard/readme.md new file mode 100644 index 000000000..071bea9f9 --- /dev/null +++ b/usermods/wireguard/readme.md @@ -0,0 +1,19 @@ +# WireGuard VPN + +This usermod will connect your WLED instance to a remote WireGuard subnet. + +Configuration is performed via the Usermod menu. There are no parameters to set in code! + +## Installation + +Copy the `platformio_override.ini` file to the root project directory, review the build options, and select the `WLED_ESP32-WireGuard` environment. + + +## Author + +Aiden Vigue [vigue.me](https://vigue.me) +[@acvigue](https://github.com/acvigue) +aiden@vigue.me + + + diff --git a/usermods/wireguard/wireguard.h b/usermods/wireguard/wireguard.h new file mode 100644 index 000000000..a83b9fe78 --- /dev/null +++ b/usermods/wireguard/wireguard.h @@ -0,0 +1,127 @@ +#pragma once + +#include + +#include "wled.h" + +class WireguardUsermod : public Usermod { + public: + void setup() { configTzTime(posix_tz, ntpServerName); } + + void connected() { + if (wg.is_initialized()) { + wg.end(); + } + } + + void loop() { + if (millis() - lastTime > 5000) { + if (is_enabled && WLED_CONNECTED) { + if (!wg.is_initialized()) { + struct tm timeinfo; + if (getLocalTime(&timeinfo, 0)) { + if (strlen(preshared_key) < 1) { + wg.begin(local_ip, private_key, endpoint_address, public_key, endpoint_port, NULL); + } else { + wg.begin(local_ip, private_key, endpoint_address, public_key, endpoint_port, preshared_key); + } + } + } + } + + lastTime = millis(); + } + } + + void addToJsonInfo(JsonObject& root) { + JsonObject user = root["u"]; + if (user.isNull()) user = root.createNestedObject("u"); + + JsonArray infoArr = user.createNestedArray(F("WireGuard")); + String uiDomString; + + struct tm timeinfo; + if (!getLocalTime(&timeinfo, 0)) { + uiDomString = "Time out of sync!"; + } else { + if (wg.is_initialized()) { + uiDomString = "netif up!"; + } else { + uiDomString = "netif down :("; + } + } + if (is_enabled) infoArr.add(uiDomString); + } + + void appendConfigData() { + oappend(SET_F("addInfo('WireGuard:host',1,'Server Hostname');")); // 0 is field type, 1 is actual field + oappend(SET_F("addInfo('WireGuard:port',1,'Server Port');")); // 0 is field type, 1 is actual field + oappend(SET_F("addInfo('WireGuard:ip',1,'Device IP');")); // 0 is field type, 1 is actual field + oappend(SET_F("addInfo('WireGuard:psk',1,'Pre Shared Key (optional)');")); // 0 is field type, 1 is actual field + oappend(SET_F("addInfo('WireGuard:pem',1,'Private Key');")); // 0 is field type, 1 is actual field + oappend(SET_F("addInfo('WireGuard:pub',1,'Public Key');")); // 0 is field type, 1 is actual field + oappend(SET_F("addInfo('WireGuard:tz',1,'POSIX timezone string');")); // 0 is field type, 1 is actual field + } + + void addToConfig(JsonObject& root) { + JsonObject top = root.createNestedObject(F("WireGuard")); + top[F("host")] = endpoint_address; + top[F("port")] = endpoint_port; + top[F("ip")] = local_ip.toString(); + top[F("psk")] = preshared_key; + top[F("pem")] = private_key; + top[F("pub")] = public_key; + top[F("tz")] = posix_tz; + } + + bool readFromConfig(JsonObject& root) { + JsonObject top = root[F("WireGuard")]; + + if (top["host"].isNull() || top["port"].isNull() || top["ip"].isNull() || top["pem"].isNull() || top["pub"].isNull() || top["tz"].isNull()) { + is_enabled = false; + return false; + } else { + const char* host = top["host"]; + strncpy(endpoint_address, host, 100); + + const char* ip_s = top["ip"]; + uint8_t ip[4]; + sscanf(ip_s, "%u.%u.%u.%u", &ip[0], &ip[1], &ip[2], &ip[3]); + local_ip = IPAddress(ip[0], ip[1], ip[2], ip[3]); + + const char* pem = top["pem"]; + strncpy(private_key, pem, 45); + + const char* pub = top["pub"]; + strncpy(public_key, pub, 45); + + const char* tz = top["tz"]; + strncpy(posix_tz, tz, 150); + + endpoint_port = top["port"]; + + if (!top["psk"].isNull()) { + const char* psk = top["psk"]; + strncpy(preshared_key, psk, 45); + } + + is_enabled = true; + } + + return is_enabled; + } + + uint16_t getId() { return USERMOD_ID_WIREGUARD; } + + private: + WireGuard wg; + char preshared_key[45]; + char private_key[45]; + IPAddress local_ip; + char public_key[45]; + char endpoint_address[100]; + char posix_tz[150]; + int endpoint_port = 0; + bool is_enabled = false; + unsigned long lastTime = 0; +}; \ No newline at end of file diff --git a/wled00/const.h b/wled00/const.h index 91f3fde53..aa256ebe0 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -148,6 +148,7 @@ #define USERMOD_ID_PWM_OUTPUTS 38 //Usermod "usermod_pwm_outputs.h #define USERMOD_ID_SHT 39 //Usermod "usermod_sht.h #define USERMOD_ID_KLIPPER 40 // Usermod Klipper percentage +#define USERMOD_ID_WIREGUARD 41 //Usermod "wireguard.h" //Access point behavior #define AP_BEHAVIOR_BOOT_NO_CONN 0 //Open AP when no connection after boot diff --git a/wled00/usermods_list.cpp b/wled00/usermods_list.cpp index 07847502c..c099658a5 100644 --- a/wled00/usermods_list.cpp +++ b/wled00/usermods_list.cpp @@ -133,6 +133,10 @@ #include "../usermods/wizlights/wizlights.h" #endif +#ifdef USERMOD_WIREGUARD + #include "../usermods/wireguard/wireguard.h" +#endif + #ifdef USERMOD_WORDCLOCK #include "../usermods/usermod_v2_word_clock/usermod_v2_word_clock.h" #endif @@ -306,6 +310,10 @@ void registerUsermods() usermods.add(new WizLightsUsermod()); #endif + #ifdef USERMOD_WIREGUARD + usermods.add(new WireguardUsermod()); + #endif + #ifdef USERMOD_WORDCLOCK usermods.add(new WordClockUsermod()); #endif From 1ed817932b91118087c15fdcf1b1d13dd15f22bc Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 30 Jul 2023 21:42:05 +0200 Subject: [PATCH 70/70] esp-now remote: reduce number of exported functions too many global variables and functions ... this makes stuff 'static' that can remain at file scope --- wled00/remote.cpp | 20 ++++++++++---------- wled00/wled.cpp | 2 ++ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/wled00/remote.cpp b/wled00/remote.cpp index c3ae5ecb2..0a833d6e9 100644 --- a/wled00/remote.cpp +++ b/wled00/remote.cpp @@ -44,21 +44,21 @@ static int brightnessBeforeNightMode = NIGHT_MODE_DEACTIVATED; static message_structure incoming; // Pulled from the IR Remote logic but reduced to 10 steps with a constant of 3 -const byte brightnessSteps[] = { +static const byte brightnessSteps[] = { 6, 9, 14, 22, 33, 50, 75, 113, 170, 255 }; -const size_t numBrightnessSteps = sizeof(brightnessSteps) / sizeof(uint8_t); +static const size_t numBrightnessSteps = sizeof(brightnessSteps) / sizeof(uint8_t); -bool nightModeActive() { +static bool nightModeActive() { return brightnessBeforeNightMode != NIGHT_MODE_DEACTIVATED; } -void activateNightMode() { +static void activateNightMode() { brightnessBeforeNightMode = bri; bri = NIGHT_MODE_BRIGHTNESS; } -bool resetNightMode() { +static bool resetNightMode() { if (!nightModeActive()) { return false; } @@ -68,7 +68,7 @@ bool resetNightMode() { } // increment `bri` to the next `brightnessSteps` value -void brightnessUp() { +static void brightnessUp() { if (nightModeActive()) { return; } // dumb incremental search is efficient enough for so few items for (uint8_t index = 0; index < numBrightnessSteps; ++index) { @@ -80,7 +80,7 @@ void brightnessUp() { } // decrement `bri` to the next `brightnessSteps` value -void brightnessDown() { +static void brightnessDown() { if (nightModeActive()) { return; } // dumb incremental search is efficient enough for so few items for (int index = numBrightnessSteps - 1; index >= 0; --index) { @@ -91,7 +91,7 @@ void brightnessDown() { } } -void setOn() { +static void setOn() { if (resetNightMode()) { stateUpdated(CALL_MODE_BUTTON); } @@ -100,7 +100,7 @@ void setOn() { } } -void setOff() { +static void setOff() { if (resetNightMode()) { stateUpdated(CALL_MODE_BUTTON); } @@ -109,7 +109,7 @@ void setOff() { } } -void presetWithFallback(uint8_t presetID, uint8_t effectID, uint8_t paletteID) { +static void presetWithFallback(uint8_t presetID, uint8_t effectID, uint8_t paletteID) { applyPresetWithFallback(presetID, CALL_MODE_BUTTON_PRESET, effectID, paletteID); } diff --git a/wled00/wled.cpp b/wled00/wled.cpp index 3a0cf4672..1c1ee9767 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -54,7 +54,9 @@ void WLED::loop() handleIR(); // 2nd call to function needed for ESP32 to return valid results -- should be good for ESP8266, too #endif handleConnection(); + #ifndef WLED_DISABLE_ESPNOW handleRemote(); + #endif handleSerial(); handleImprovWifiScan(); handleNotifications();