From 8dd17451495fa96cc87fe6f9a145d7c041b35e86 Mon Sep 17 00:00:00 2001 From: Maximilian Mewes Date: Thu, 5 Jan 2023 19:48:53 +0100 Subject: [PATCH 001/441] =?UTF-8?q?Add=20base=20battery=20=F0=9F=94=8B=20c?= =?UTF-8?q?lass,=20Add=20Lipo,=20Lion=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- usermods/Battery/battery.h | 149 +++++++++++++++++ usermods/Battery/battery_defaults.h | 11 +- usermods/Battery/lion.h | 37 +++++ usermods/Battery/lipo.h | 51 ++++++ usermods/Battery/usermod_v2_Battery.h | 221 +++++--------------------- 5 files changed, 290 insertions(+), 179 deletions(-) create mode 100644 usermods/Battery/battery.h create mode 100644 usermods/Battery/lion.h create mode 100644 usermods/Battery/lipo.h diff --git a/usermods/Battery/battery.h b/usermods/Battery/battery.h new file mode 100644 index 00000000..f3daf05c --- /dev/null +++ b/usermods/Battery/battery.h @@ -0,0 +1,149 @@ +#ifndef UMBBattery_h +#define UMBBattery_h + +#include "battery_defaults.h" + +/** + * Battery base class + * all other battery classes should inherit from this + */ +class Battery +{ + private: + + protected: + float minVoltage = USERMOD_BATTERY_MIN_VOLTAGE; + float maxVoltage = USERMOD_BATTERY_MAX_VOLTAGE; + unsigned int capacity = USERMOD_BATTERY_TOTAL_CAPACITY; // current capacity + float voltage = this->maxVoltage; // current voltage + int8_t level = 100; // current level + float calibration = USERMOD_BATTERY_CALIBRATION; // offset or calibration value to fine tune the calculated voltage + + float linearMapping(float v, float min, float max, float oMin = 0.0f, float oMax = 100.0f) + { + return (v-min) * (oMax-oMin) / (max-min) + oMin; + } + + public: + Battery() + { + + } + + /** + * Corresponding battery curves + * calculates the capacity in % (0-100) with given voltage and possible voltage range + */ + virtual float mapVoltage(float v, float min, float max) = 0; + // { + // example implementation, linear mapping + // return (v-min) * 100 / (max-min); + // }; + + virtual void calculateAndSetLevel(float voltage) = 0; + + + + /* + * + * Getter and Setter + * + */ + + /* + * Get lowest configured battery voltage + */ + virtual float getMinVoltage() + { + return this->minVoltage; + } + + /* + * Set lowest battery voltage + * can't be below 0 volt + */ + virtual void setMinVoltage(float voltage) + { + this->minVoltage = max(0.0f, voltage); + } + + /* + * Get highest configured battery voltage + */ + virtual float getMaxVoltage() + { + return this->maxVoltage; + } + + /* + * Set highest battery voltage + * can't be below minVoltage + */ + virtual void setMaxVoltage(float voltage) + { + #ifdef USERMOD_BATTERY_USE_LIPO + this->maxVoltage = max(getMinVoltage()+0.7f, voltage); + #else + this->maxVoltage = max(getMinVoltage()+1.0f, voltage); + #endif + } + + /* + * Get the capacity of all cells in parralel sumed up + * unit: mAh + */ + unsigned int getCapacity() + { + return this->capacity; + } + + void setCapacity(unsigned int capacity) + { + this->capacity = capacity; + } + + float getVoltage() + { + return this->voltage; + } + + /** + * check if voltage is within specified voltage range, allow 10% over/under voltage + */ + void setVoltage(float voltage) + { + this->voltage = ( (voltage < this->getMinVoltage() * 0.85f) || (voltage > this->getMaxVoltage() * 1.1f) ) + ? -1.0f + : voltage; + } + + float getLevel() + { + return this->level; + } + + void setLevel(float level) + { + this->level = constrain(level, 0.0f, 110.0f);; + } + + /* + * Get the configured calibration value + * a offset value to fine-tune the calculated voltage. + */ + virtual float getCalibration() + { + return calibration; + } + + /* + * Set the voltage calibration offset value + * a offset value to fine-tune the calculated voltage. + */ + virtual void setCalibration(float offset) + { + calibration = offset; + } +}; + +#endif \ No newline at end of file diff --git a/usermods/Battery/battery_defaults.h b/usermods/Battery/battery_defaults.h index c682cb45..73f14f62 100644 --- a/usermods/Battery/battery_defaults.h +++ b/usermods/Battery/battery_defaults.h @@ -14,6 +14,15 @@ #define USERMOD_BATTERY_MEASUREMENT_INTERVAL 30000 #endif + +/* Default Battery Type + * 1 = Lipo + * 2 = Lion + */ +#ifndef USERMOB_BATTERY_DEFAULT_TYPE + #define USERMOB_BATTERY_DEFAULT_TYPE 1 +#endif + // default for 18650 battery // https://batterybro.com/blogs/18650-wholesale-battery-reviews/18852515-when-to-recycle-18650-batteries-and-how-to-start-a-collection-center-in-your-vape-shop // Discharge voltage: 2.5 volt + .1 for personal safety @@ -69,4 +78,4 @@ #ifndef USERMOD_BATTERY_LOW_POWER_INDICATOR_DURATION #define USERMOD_BATTERY_LOW_POWER_INDICATOR_DURATION 5 -#endif \ No newline at end of file +#endif diff --git a/usermods/Battery/lion.h b/usermods/Battery/lion.h new file mode 100644 index 00000000..e8d78cc7 --- /dev/null +++ b/usermods/Battery/lion.h @@ -0,0 +1,37 @@ +#ifndef UMBLion_h +#define UMBLion_h + +#include "battery_defaults.h" +#include "battery.h" + +/** + * Lion Battery + * + */ +class Lion : public Battery +{ + private: + + public: + Lion() : Battery() + { + + } + + float mapVoltage(float v, float min, float max) override + { + return 0.0f; + }; + + void calculateAndSetLevel(float voltage) override + { + + }; + + virtual void setMaxVoltage(float voltage) override + { + this->maxVoltage = max(getMinVoltage()+1.0f, voltage); + } +}; + +#endif \ No newline at end of file diff --git a/usermods/Battery/lipo.h b/usermods/Battery/lipo.h new file mode 100644 index 00000000..4e9b0be7 --- /dev/null +++ b/usermods/Battery/lipo.h @@ -0,0 +1,51 @@ +#ifndef UMBLipo_h +#define UMBLipo_h + +#include "battery_defaults.h" +#include "battery.h" + +/** + * Lipo Battery + * + */ +class Lipo : public Battery +{ + private: + + public: + Lipo() : Battery() + { + + } + + /** + * LiPo batteries have a differnt dischargin curve, see + * https://blog.ampow.com/lipo-voltage-chart/ + */ + float mapVoltage(float v, float min, float max) override + { + float lvl = 0.0f; + lvl = this->linearMapping(v, min, max); // basic mapping + + if (lvl < 40.0f) + lvl = this->linearMapping(lvl, 0, 40, 0, 12); // last 45% -> drops very quickly + else { + if (lvl < 90.0f) + lvl = this->linearMapping(lvl, 40, 90, 12, 95); // 90% ... 40% -> almost linear drop + else // level > 90% + lvl = this->linearMapping(lvl, 90, 105, 95, 100); // highest 15% -> drop slowly + } + }; + + void calculateAndSetLevel(float voltage) override + { + this->setLevel(this->mapVoltage(voltage, this->getMinVoltage(), this->getMaxVoltage())); + }; + + virtual void setMaxVoltage(float voltage) override + { + this->maxVoltage = max(getMinVoltage()+0.7f, voltage); + } +}; + +#endif \ No newline at end of file diff --git a/usermods/Battery/usermod_v2_Battery.h b/usermods/Battery/usermod_v2_Battery.h index ac34a7e4..4c77ca5d 100644 --- a/usermods/Battery/usermod_v2_Battery.h +++ b/usermods/Battery/usermod_v2_Battery.h @@ -2,6 +2,9 @@ #include "wled.h" #include "battery_defaults.h" +#include "battery.h" +#include "lion.h" +#include "lipo.h" /* * Usermod by Maximilian Mewes @@ -15,28 +18,12 @@ class UsermodBattery : public Usermod private: // battery pin can be defined in my_config.h int8_t batteryPin = USERMOD_BATTERY_MEASUREMENT_PIN; + // Battery object + Battery* bat; // how often to read the battery voltage unsigned long readingInterval = USERMOD_BATTERY_MEASUREMENT_INTERVAL; unsigned long nextReadTime = 0; unsigned long lastReadTime = 0; - // battery min. voltage - float minBatteryVoltage = USERMOD_BATTERY_MIN_VOLTAGE; - // battery max. voltage - float maxBatteryVoltage = USERMOD_BATTERY_MAX_VOLTAGE; - // all battery cells summed up - unsigned int totalBatteryCapacity = USERMOD_BATTERY_TOTAL_CAPACITY; - // raw analog reading - float rawValue = 0.0f; - // calculated voltage - float voltage = maxBatteryVoltage; - // mapped battery level based on voltage - int8_t batteryLevel = 100; - // offset or calibration value to fine tune the calculated voltage - float calibration = USERMOD_BATTERY_CALIBRATION; - - // time left estimation feature - // bool calculateTimeLeftEnabled = USERMOD_BATTERY_CALCULATE_TIME_LEFT_ENABLED; - // float estimatedTimeLeft = 0.0; // auto shutdown/shutoff/master off feature bool autoOffEnabled = USERMOD_BATTERY_AUTO_OFF_ENABLED; @@ -63,14 +50,6 @@ class UsermodBattery : public Usermod static const char _preset[]; static const char _duration[]; static const char _init[]; - - - // custom map function - // https://forum.arduino.cc/t/floating-point-using-map-function/348113/2 - double mapf(double x, double in_min, double in_max, double out_min, double out_max) - { - return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; - } float dot2round(float x) { @@ -94,8 +73,8 @@ class UsermodBattery : public Usermod { if (!lowPowerIndicatorEnabled) return; if (batteryPin < 0) return; // no measurement - if (lowPowerIndicationDone && lowPowerIndicatorReactivationThreshold <= batteryLevel) lowPowerIndicationDone = false; - if (lowPowerIndicatorThreshold <= batteryLevel) return; + if (lowPowerIndicationDone && lowPowerIndicatorReactivationThreshold <= bat->getLevel()) lowPowerIndicationDone = false; + if (lowPowerIndicatorThreshold <= bat->getLevel()) return; if (lowPowerIndicationDone) return; if (lowPowerActivationTime <= 1) { lowPowerActivationTime = millis(); @@ -139,6 +118,16 @@ class UsermodBattery : public Usermod pinMode(batteryPin, INPUT); #endif + // this could also be handled with a factory class but for only 2 types now it should be sufficient + if(USERMOB_BATTERY_DEFAULT_TYPE == 1) { + bat = new Lipo(); + } else + if(USERMOB_BATTERY_DEFAULT_TYPE == 2) { + bat = new Lion(); + } else { + bat = new Lipo(); + } + nextReadTime = millis() + readingInterval; lastReadTime = millis(); @@ -174,8 +163,9 @@ class UsermodBattery : public Usermod if (batteryPin < 0) return; // nothing to read - initializing = false; - + initializing = false; + float voltage = -1.0f; + float rawValue = 0.0f; #ifdef ARDUINO_ARCH_ESP32 // use calibrated millivolts analogread on esp32 (150 mV ~ 2450 mV) rawValue = analogReadMilliVolts(batteryPin); @@ -188,40 +178,15 @@ class UsermodBattery : public Usermod rawValue = analogRead(batteryPin); // calculate the voltage - voltage = ((rawValue / getAdcPrecision()) * maxBatteryVoltage) + calibration; + voltage = ((rawValue / getAdcPrecision()) * bat->getMaxVoltage()) + bat->getCalibration(); #endif - // check if voltage is within specified voltage range, allow 10% over/under voltage - voltage = ((voltage < minBatteryVoltage * 0.85f) || (voltage > maxBatteryVoltage * 1.1f)) ? -1.0f : voltage; + bat->setVoltage(voltage); // translate battery voltage into percentage - /* - the standard "map" function doesn't work - https://www.arduino.cc/reference/en/language/functions/math/map/ notes and warnings at the bottom - */ - #ifdef USERMOD_BATTERY_USE_LIPO - batteryLevel = mapf(voltage, minBatteryVoltage, maxBatteryVoltage, 0, 100); // basic mapping - // LiPo batteries have a differnt dischargin curve, see - // https://blog.ampow.com/lipo-voltage-chart/ - if (batteryLevel < 40.0f) - batteryLevel = mapf(batteryLevel, 0, 40, 0, 12); // last 45% -> drops very quickly - else { - if (batteryLevel < 90.0f) - batteryLevel = mapf(batteryLevel, 40, 90, 12, 95); // 90% ... 40% -> almost linear drop - else // level > 90% - batteryLevel = mapf(batteryLevel, 90, 105, 95, 100); // highest 15% -> drop slowly - } - #else - batteryLevel = mapf(voltage, minBatteryVoltage, maxBatteryVoltage, 0, 100); - #endif - if (voltage > -1.0f) batteryLevel = constrain(batteryLevel, 0.0f, 110.0f); - - // if (calculateTimeLeftEnabled) { - // float currentBatteryCapacity = totalBatteryCapacity; - // estimatedTimeLeft = (currentBatteryCapacity/strip.currentMilliamps)*60; - // } + bat->calculateAndSetLevel(voltage); // Auto off -- Master power off - if (autoOffEnabled && (autoOffThreshold >= batteryLevel)) + if (autoOffEnabled && (autoOffThreshold >= bat->getLevel())) turnOff(); // SmartHome stuff @@ -254,16 +219,6 @@ class UsermodBattery : public Usermod // info modal display names JsonArray infoPercentage = user.createNestedArray(F("Battery level")); JsonArray infoVoltage = user.createNestedArray(F("Battery voltage")); - // if (calculateTimeLeftEnabled) - // { - // JsonArray infoEstimatedTimeLeft = user.createNestedArray(F("Estimated time left")); - // if (initializing) { - // infoEstimatedTimeLeft.add(FPSTR(_init)); - // } else { - // infoEstimatedTimeLeft.add(estimatedTimeLeft); - // infoEstimatedTimeLeft.add(F(" min")); - // } - // } JsonArray infoNextUpdate = user.createNestedArray(F("Next update")); infoNextUpdate.add((nextReadTime - millis()) / 1000); @@ -275,17 +230,17 @@ class UsermodBattery : public Usermod return; } - if (batteryLevel < 0) { + if (bat->getLevel() < 0) { infoPercentage.add(F("invalid")); } else { - infoPercentage.add(batteryLevel); + infoPercentage.add(bat->getLevel()); } infoPercentage.add(F(" %")); - if (voltage < 0) { + if (bat->getVoltage() < 0) { infoVoltage.add(F("invalid")); } else { - infoVoltage.add(dot2round(voltage)); + infoVoltage.add(dot2round(bat->getVoltage())); } infoVoltage.add(F(" V")); } @@ -298,7 +253,7 @@ class UsermodBattery : public Usermod /* void addToJsonState(JsonObject& root) { - + // TBD } */ @@ -310,6 +265,7 @@ class UsermodBattery : public Usermod /* void readFromJsonState(JsonObject& root) { + // TBD } */ @@ -356,18 +312,17 @@ class UsermodBattery : public Usermod battery[F("pin")] = batteryPin; #endif - // battery[F("time-left")] = calculateTimeLeftEnabled; - battery[F("min-voltage")] = minBatteryVoltage; - battery[F("max-voltage")] = maxBatteryVoltage; - battery[F("capacity")] = totalBatteryCapacity; - battery[F("calibration")] = calibration; + battery[F("min-voltage")] = bat->getMinVoltage(); + battery[F("max-voltage")] = bat->getMaxVoltage(); + battery[F("capacity")] = bat->getCapacity(); + battery[F("calibration")] = bat->getCalibration(); battery[FPSTR(_readInterval)] = readingInterval; - JsonObject ao = battery.createNestedObject(F("auto-off")); // auto off section + JsonObject ao = battery.createNestedObject(F("auto-off")); // auto off section ao[FPSTR(_enabled)] = autoOffEnabled; ao[FPSTR(_threshold)] = autoOffThreshold; - JsonObject lp = battery.createNestedObject(F("indicator")); // low power section + JsonObject lp = battery.createNestedObject(F("indicator")); // low power section lp[FPSTR(_enabled)] = lowPowerIndicatorEnabled; lp[FPSTR(_preset)] = lowPowerIndicatorPreset; // dropdown trickery (String)lowPowerIndicatorPreset; lp[FPSTR(_threshold)] = lowPowerIndicatorThreshold; @@ -432,11 +387,11 @@ class UsermodBattery : public Usermod #ifdef ARDUINO_ARCH_ESP32 newBatteryPin = battery[F("pin")] | newBatteryPin; #endif - // calculateTimeLeftEnabled = battery[F("time-left")] | calculateTimeLeftEnabled; - setMinBatteryVoltage(battery[F("min-voltage")] | minBatteryVoltage); - setMaxBatteryVoltage(battery[F("max-voltage")] | maxBatteryVoltage); - setTotalBatteryCapacity(battery[F("capacity")] | totalBatteryCapacity); - setCalibration(battery[F("calibration")] | calibration); + + bat->setMinVoltage(battery[F("min-voltage")] | bat->getMinVoltage()); + bat->setMaxVoltage(battery[F("max-voltage")] | bat->getMaxVoltage()); + bat->setCapacity(battery[F("capacity")] | bat->getCapacity()); + bat->setCalibration(battery[F("calibration")] | bat->getCalibration()); setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval); JsonObject ao = battery[F("auto-off")]; @@ -479,7 +434,8 @@ class UsermodBattery : public Usermod } /* - * Generate a preset sample for low power indication + * TBD: Generate a preset sample for low power indication + * a button on the config page would be cool, currently not possible */ void generateExamplePreset() { @@ -539,60 +495,6 @@ class UsermodBattery : public Usermod readingInterval = max((unsigned long)3000, newReadingInterval); } - - /* - * Get lowest configured battery voltage - */ - float getMinBatteryVoltage() - { - return minBatteryVoltage; - } - - /* - * Set lowest battery voltage - * can't be below 0 volt - */ - void setMinBatteryVoltage(float voltage) - { - minBatteryVoltage = max(0.0f, voltage); - } - - /* - * Get highest configured battery voltage - */ - float getMaxBatteryVoltage() - { - return maxBatteryVoltage; - } - - /* - * Set highest battery voltage - * can't be below minBatteryVoltage - */ - void setMaxBatteryVoltage(float voltage) - { - #ifdef USERMOD_BATTERY_USE_LIPO - maxBatteryVoltage = max(getMinBatteryVoltage()+0.7f, voltage); - #else - maxBatteryVoltage = max(getMinBatteryVoltage()+1.0f, voltage); - #endif - } - - - /* - * Get the capacity of all cells in parralel sumed up - * unit: mAh - */ - unsigned int getTotalBatteryCapacity() - { - return totalBatteryCapacity; - } - - void setTotalBatteryCapacity(unsigned int capacity) - { - totalBatteryCapacity = capacity; - } - /* * Get the choosen adc precision * esp8266 = 10bit resolution = 1024.0f @@ -609,43 +511,6 @@ class UsermodBattery : public Usermod #endif } - /* - * Get the calculated voltage - * formula: (adc pin value / adc precision * max voltage) + calibration - */ - float getVoltage() - { - return voltage; - } - - /* - * Get the mapped battery level (0 - 100) based on voltage - * important: voltage can drop when a load is applied, so its only an estimate - */ - int8_t getBatteryLevel() - { - return batteryLevel; - } - - /* - * Get the configured calibration value - * a offset value to fine-tune the calculated voltage. - */ - float getCalibration() - { - return calibration; - } - - /* - * Set the voltage calibration offset value - * a offset value to fine-tune the calculated voltage. - */ - void setCalibration(float offset) - { - calibration = offset; - } - - /* * Get auto-off feature enabled status * is auto-off enabled, true/false From 4c8b490c89635a647b9b7e30a519b8a358a1fc47 Mon Sep 17 00:00:00 2001 From: Maximilian Mewes Date: Thu, 5 Jan 2023 20:38:55 +0100 Subject: [PATCH 002/441] minor changes --- usermods/Battery/battery.h | 6 +----- usermods/Battery/battery_defaults.h | 7 +------ usermods/Battery/lion.h | 4 ++-- usermods/Battery/lipo.h | 2 ++ usermods/Battery/usermod_v2_Battery.h | 18 ++++++++++++++---- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/usermods/Battery/battery.h b/usermods/Battery/battery.h index f3daf05c..c678f775 100644 --- a/usermods/Battery/battery.h +++ b/usermods/Battery/battery.h @@ -81,11 +81,7 @@ class Battery */ virtual void setMaxVoltage(float voltage) { - #ifdef USERMOD_BATTERY_USE_LIPO - this->maxVoltage = max(getMinVoltage()+0.7f, voltage); - #else - this->maxVoltage = max(getMinVoltage()+1.0f, voltage); - #endif + this->maxVoltage = max(getMinVoltage()+.5f, voltage); } /* diff --git a/usermods/Battery/battery_defaults.h b/usermods/Battery/battery_defaults.h index 73f14f62..4a04ac35 100644 --- a/usermods/Battery/battery_defaults.h +++ b/usermods/Battery/battery_defaults.h @@ -27,7 +27,7 @@ // https://batterybro.com/blogs/18650-wholesale-battery-reviews/18852515-when-to-recycle-18650-batteries-and-how-to-start-a-collection-center-in-your-vape-shop // Discharge voltage: 2.5 volt + .1 for personal safety #ifndef USERMOD_BATTERY_MIN_VOLTAGE - #ifdef USERMOD_BATTERY_USE_LIPO + #if USERMOB_BATTERY_DEFAULT_TYPE == 1 // LiPo "1S" Batteries should not be dischared below 3V !! #define USERMOD_BATTERY_MIN_VOLTAGE 3.2f #else @@ -49,11 +49,6 @@ #define USERMOD_BATTERY_CALIBRATION 0 #endif -// calculate remaining time / the time that is left before the battery runs out of power -// #ifndef USERMOD_BATTERY_CALCULATE_TIME_LEFT_ENABLED -// #define USERMOD_BATTERY_CALCULATE_TIME_LEFT_ENABLED false -// #endif - // auto-off feature #ifndef USERMOD_BATTERY_AUTO_OFF_ENABLED #define USERMOD_BATTERY_AUTO_OFF_ENABLED true diff --git a/usermods/Battery/lion.h b/usermods/Battery/lion.h index e8d78cc7..69095ac0 100644 --- a/usermods/Battery/lion.h +++ b/usermods/Battery/lion.h @@ -20,12 +20,12 @@ class Lion : public Battery float mapVoltage(float v, float min, float max) override { - return 0.0f; + return this->linearMapping(v, min, max); // basic mapping }; void calculateAndSetLevel(float voltage) override { - + this->setLevel(this->mapVoltage(voltage, this->getMinVoltage(), this->getMaxVoltage())); }; virtual void setMaxVoltage(float voltage) override diff --git a/usermods/Battery/lipo.h b/usermods/Battery/lipo.h index 4e9b0be7..92ede8f8 100644 --- a/usermods/Battery/lipo.h +++ b/usermods/Battery/lipo.h @@ -35,6 +35,8 @@ class Lipo : public Battery else // level > 90% lvl = this->linearMapping(lvl, 90, 105, 95, 100); // highest 15% -> drop slowly } + + return lvl; }; void calculateAndSetLevel(float voltage) override diff --git a/usermods/Battery/usermod_v2_Battery.h b/usermods/Battery/usermod_v2_Battery.h index 4c77ca5d..87b73ec6 100644 --- a/usermods/Battery/usermod_v2_Battery.h +++ b/usermods/Battery/usermod_v2_Battery.h @@ -18,8 +18,11 @@ class UsermodBattery : public Usermod private: // battery pin can be defined in my_config.h int8_t batteryPin = USERMOD_BATTERY_MEASUREMENT_PIN; + + int8_t batteryType = USERMOB_BATTERY_DEFAULT_TYPE; // Battery object Battery* bat; + // how often to read the battery voltage unsigned long readingInterval = USERMOD_BATTERY_MEASUREMENT_INTERVAL; unsigned long nextReadTime = 0; @@ -118,14 +121,14 @@ class UsermodBattery : public Usermod pinMode(batteryPin, INPUT); #endif - // this could also be handled with a factory class but for only 2 types now it should be sufficient - if(USERMOB_BATTERY_DEFAULT_TYPE == 1) { + // this could also be handled with a factory class but for only 2 types it should be sufficient for now + if(batteryType == 1) { bat = new Lipo(); } else - if(USERMOB_BATTERY_DEFAULT_TYPE == 2) { + if(batteryType == 2) { bat = new Lion(); } else { - bat = new Lipo(); + bat = new Lipo(); // in the future one could create a nullObject } nextReadTime = millis() + readingInterval; @@ -317,6 +320,10 @@ class UsermodBattery : public Usermod battery[F("capacity")] = bat->getCapacity(); battery[F("calibration")] = bat->getCalibration(); battery[FPSTR(_readInterval)] = readingInterval; + + // JsonArray type = battery[F("Type")]; + // type[0] = 1; + // type[1] = 2; JsonObject ao = battery.createNestedObject(F("auto-off")); // auto off section ao[FPSTR(_enabled)] = autoOffEnabled; @@ -393,6 +400,9 @@ class UsermodBattery : public Usermod bat->setCapacity(battery[F("capacity")] | bat->getCapacity()); bat->setCalibration(battery[F("calibration")] | bat->getCalibration()); setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval); + + // JsonArray type = battery[F("Type")]; + // batteryType = type["bt"] | batteryType; JsonObject ao = battery[F("auto-off")]; setAutoOffEnabled(ao[FPSTR(_enabled)] | autoOffEnabled); From 85d59945a0ffaaa8907ce69cc1cb3f7548de2775 Mon Sep 17 00:00:00 2001 From: Maximilian Mewes Date: Fri, 6 Jan 2023 00:19:16 +0100 Subject: [PATCH 003/441] =?UTF-8?q?runtime=20exception=20fix=20?= =?UTF-8?q?=F0=9F=90=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- usermods/Battery/usermod_v2_Battery.h | 38 ++++++++++++++++----------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/usermods/Battery/usermod_v2_Battery.h b/usermods/Battery/usermod_v2_Battery.h index 87b73ec6..f9bfc96f 100644 --- a/usermods/Battery/usermod_v2_Battery.h +++ b/usermods/Battery/usermod_v2_Battery.h @@ -20,9 +20,15 @@ class UsermodBattery : public Usermod int8_t batteryPin = USERMOD_BATTERY_MEASUREMENT_PIN; int8_t batteryType = USERMOB_BATTERY_DEFAULT_TYPE; - // Battery object - Battery* bat; - + + float minVoltage = USERMOD_BATTERY_MIN_VOLTAGE; + float maxVoltage = USERMOD_BATTERY_MAX_VOLTAGE; + unsigned int capacity = USERMOD_BATTERY_TOTAL_CAPACITY; // current capacity + float voltage = this->maxVoltage; // current voltage + int8_t level = 100; // current level + float calibration = USERMOD_BATTERY_CALIBRATION; // offset or calibration value to fine tune the calculated voltage + Battery* bat = nullptr; + // how often to read the battery voltage unsigned long readingInterval = USERMOD_BATTERY_MEASUREMENT_INTERVAL; unsigned long nextReadTime = 0; @@ -121,7 +127,7 @@ class UsermodBattery : public Usermod pinMode(batteryPin, INPUT); #endif - // this could also be handled with a factory class but for only 2 types it should be sufficient for now + //this could also be handled with a factory class but for only 2 types it should be sufficient for now if(batteryType == 1) { bat = new Lipo(); } else @@ -315,15 +321,13 @@ class UsermodBattery : public Usermod battery[F("pin")] = batteryPin; #endif - battery[F("min-voltage")] = bat->getMinVoltage(); - battery[F("max-voltage")] = bat->getMaxVoltage(); - battery[F("capacity")] = bat->getCapacity(); - battery[F("calibration")] = bat->getCalibration(); + if(bat) { + battery[F("min-voltage")] = bat->getMinVoltage(); + battery[F("max-voltage")] = bat->getMaxVoltage(); + battery[F("capacity")] = bat->getCapacity(); + battery[F("calibration")] = bat->getCalibration(); + } battery[FPSTR(_readInterval)] = readingInterval; - - // JsonArray type = battery[F("Type")]; - // type[0] = 1; - // type[1] = 2; JsonObject ao = battery.createNestedObject(F("auto-off")); // auto off section ao[FPSTR(_enabled)] = autoOffEnabled; @@ -395,10 +399,12 @@ class UsermodBattery : public Usermod newBatteryPin = battery[F("pin")] | newBatteryPin; #endif - bat->setMinVoltage(battery[F("min-voltage")] | bat->getMinVoltage()); - bat->setMaxVoltage(battery[F("max-voltage")] | bat->getMaxVoltage()); - bat->setCapacity(battery[F("capacity")] | bat->getCapacity()); - bat->setCalibration(battery[F("calibration")] | bat->getCalibration()); + if(bat) { + bat->setMinVoltage(battery[F("min-voltage")] | bat->getMinVoltage()); + bat->setMaxVoltage(battery[F("max-voltage")] | bat->getMaxVoltage()); + bat->setCapacity(battery[F("capacity")] | bat->getCapacity()); + bat->setCalibration(battery[F("calibration")] | bat->getCalibration()); + } setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval); // JsonArray type = battery[F("Type")]; From 375907144966e37e9a8dad3efc92343fec892052 Mon Sep 17 00:00:00 2001 From: Maximilian Mewes Date: Fri, 6 Jan 2023 17:00:29 +0100 Subject: [PATCH 004/441] =?UTF-8?q?Fix=20previous=20bug=20again=20?= =?UTF-8?q?=F0=9F=90=9B,=20Add=20Type=20Dropdown=20to=20config=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- usermods/Battery/battery.h | 21 +++-- usermods/Battery/battery_defaults.h | 111 +++++++++++++++++++------- usermods/Battery/lion.h | 8 +- usermods/Battery/lipo.h | 10 ++- usermods/Battery/unkown.h | 36 +++++++++ usermods/Battery/usermod_v2_Battery.h | 62 +++++++------- 6 files changed, 178 insertions(+), 70 deletions(-) create mode 100644 usermods/Battery/unkown.h diff --git a/usermods/Battery/battery.h b/usermods/Battery/battery.h index c678f775..ad3fb270 100644 --- a/usermods/Battery/battery.h +++ b/usermods/Battery/battery.h @@ -12,12 +12,12 @@ class Battery private: protected: - float minVoltage = USERMOD_BATTERY_MIN_VOLTAGE; - float maxVoltage = USERMOD_BATTERY_MAX_VOLTAGE; - unsigned int capacity = USERMOD_BATTERY_TOTAL_CAPACITY; // current capacity - float voltage = this->maxVoltage; // current voltage - int8_t level = 100; // current level - float calibration = USERMOD_BATTERY_CALIBRATION; // offset or calibration value to fine tune the calculated voltage + float minVoltage; + float maxVoltage; + unsigned int capacity; + float voltage; + int8_t level = 100; + float calibration; // offset or calibration value to fine tune the calculated voltage float linearMapping(float v, float min, float max, float oMin = 0.0f, float oMax = 100.0f) { @@ -30,6 +30,15 @@ class Battery } + virtual void update(batteryConfig cfg) + { + if(cfg.minVoltage) this->setMinVoltage(cfg.minVoltage); + if(cfg.maxVoltage) this->setMaxVoltage(cfg.maxVoltage); + if(cfg.calibration) this->setCapacity(cfg.calibration); + if(cfg.level) this->setLevel(cfg.level); + if(cfg.calibration) this->setCalibration(cfg.calibration); + } + /** * Corresponding battery curves * calculates the capacity in % (0-100) with given voltage and possible voltage range diff --git a/usermods/Battery/battery_defaults.h b/usermods/Battery/battery_defaults.h index 4a04ac35..f4060ca6 100644 --- a/usermods/Battery/battery_defaults.h +++ b/usermods/Battery/battery_defaults.h @@ -1,3 +1,6 @@ +#ifndef UMBDefaults_h +#define UMBDefaults_h + // pin defaults // for the esp32 it is best to use the ADC1: GPIO32 - GPIO39 // https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/adc.html @@ -16,38 +19,70 @@ /* Default Battery Type + * 0 = unkown * 1 = Lipo * 2 = Lion */ -#ifndef USERMOB_BATTERY_DEFAULT_TYPE - #define USERMOB_BATTERY_DEFAULT_TYPE 1 +#ifndef USERMOD_BATTERY_DEFAULT_TYPE + #define USERMOD_BATTERY_DEFAULT_TYPE 0 +#endif +/* + * + * Unkown 'Battery' defaults + * + */ +#ifndef USERMOD_BATTERY_UNKOWN_MIN_VOLTAGE + #define USERMOD_BATTERY_UNKOWN_MIN_VOLTAGE 3.3f +#endif +#ifndef USERMOD_BATTERY_UNKOWN_MAX_VOLTAGE + #define USERMOD_BATTERY_UNKOWN_MAX_VOLTAGE 4.2f +#endif +#ifndef USERMOD_BATTERY_UNKOWN_CAPACITY + #define USERMOD_BATTERY_UNKOWN_CAPACITY 2500 +#endif +#ifndef USERMOD_BATTERY_UNKOWN_CALIBRATION + // offset or calibration value to fine tune the calculated voltage + #define USERMOD_BATTERY_UNKOWN_CALIBRATION 0 +#endif +/* + * + * Lithium polymer (Li-Po) defaults + * + */ +#ifndef USERMOD_BATTERY_LIPO_MIN_VOLTAGE + // LiPo "1S" Batteries should not be dischared below 3V !! + #define USERMOD_BATTERY_LIPO_MIN_VOLTAGE 3.2f +#endif +#ifndef USERMOD_BATTERY_LIPO_MAX_VOLTAGE + #define USERMOD_BATTERY_LIPO_MAX_VOLTAGE 4.2f +#endif +#ifndef USERMOD_BATTERY_LIPO_CAPACITY + #define USERMOD_BATTERY_LIPO_CAPACITY 5000 +#endif +#ifndef USERMOD_BATTERY_LIPO_CALIBRATION + #define USERMOD_BATTERY_LIPO_CALIBRATION 0 +#endif +/* + * + * Lithium-ion (Li-Ion) defaults + * + */ +#ifndef USERMOD_BATTERY_LION_MIN_VOLTAGE + // default for 18650 battery + #define USERMOD_BATTERY_LION_MIN_VOLTAGE 2.6f +#endif +#ifndef USERMOD_BATTERY_LION_MAX_VOLTAGE + #define USERMOD_BATTERY_LION_MAX_VOLTAGE 4.2f +#endif +#ifndef USERMOD_BATTERY_LION_CAPACITY + // a common capacity for single 18650 battery cells is between 2500 and 3600 mAh + #define USERMOD_BATTERY_LION_CAPACITY 3100 +#endif +#ifndef USERMOD_BATTERY_LION_CALIBRATION + // offset or calibration value to fine tune the calculated voltage + #define USERMOD_BATTERY_LION_CALIBRATION 0 #endif -// default for 18650 battery -// https://batterybro.com/blogs/18650-wholesale-battery-reviews/18852515-when-to-recycle-18650-batteries-and-how-to-start-a-collection-center-in-your-vape-shop -// Discharge voltage: 2.5 volt + .1 for personal safety -#ifndef USERMOD_BATTERY_MIN_VOLTAGE - #if USERMOB_BATTERY_DEFAULT_TYPE == 1 - // LiPo "1S" Batteries should not be dischared below 3V !! - #define USERMOD_BATTERY_MIN_VOLTAGE 3.2f - #else - #define USERMOD_BATTERY_MIN_VOLTAGE 2.6f - #endif -#endif - -#ifndef USERMOD_BATTERY_MAX_VOLTAGE - #define USERMOD_BATTERY_MAX_VOLTAGE 4.2f -#endif - -// a common capacity for single 18650 battery cells is between 2500 and 3600 mAh -#ifndef USERMOD_BATTERY_TOTAL_CAPACITY - #define USERMOD_BATTERY_TOTAL_CAPACITY 3100 -#endif - -// offset or calibration value to fine tune the calculated voltage -#ifndef USERMOD_BATTERY_CALIBRATION - #define USERMOD_BATTERY_CALIBRATION 0 -#endif // auto-off feature #ifndef USERMOD_BATTERY_AUTO_OFF_ENABLED @@ -74,3 +109,25 @@ #ifndef USERMOD_BATTERY_LOW_POWER_INDICATOR_DURATION #define USERMOD_BATTERY_LOW_POWER_INDICATOR_DURATION 5 #endif + +typedef enum +{ + unknown=0, + lipo=1, + lion=2 +} batteryType; + +// used for initial configuration after boot +typedef struct bconfig_t +{ + batteryType type; + float minVoltage; + float maxVoltage; + unsigned int capacity; // current capacity + float voltage; // current voltage + int8_t level; // current level + float calibration; // offset or calibration value to fine tune the calculated voltage +} batteryConfig; + + +#endif \ No newline at end of file diff --git a/usermods/Battery/lion.h b/usermods/Battery/lion.h index 69095ac0..4016af7e 100644 --- a/usermods/Battery/lion.h +++ b/usermods/Battery/lion.h @@ -13,9 +13,13 @@ class Lion : public Battery private: public: - Lion() : Battery() + Lion() { - + this->setMinVoltage(USERMOD_BATTERY_LION_MIN_VOLTAGE); + this->setMaxVoltage(USERMOD_BATTERY_LION_MAX_VOLTAGE); + this->setCapacity(USERMOD_BATTERY_LION_CAPACITY); + this->setVoltage(this->getVoltage()); + this->setCalibration(USERMOD_BATTERY_LION_CALIBRATION); } float mapVoltage(float v, float min, float max) override diff --git a/usermods/Battery/lipo.h b/usermods/Battery/lipo.h index 92ede8f8..03eed7b8 100644 --- a/usermods/Battery/lipo.h +++ b/usermods/Battery/lipo.h @@ -5,7 +5,7 @@ #include "battery.h" /** - * Lipo Battery + * Lipo Battery * */ class Lipo : public Battery @@ -13,9 +13,13 @@ class Lipo : public Battery private: public: - Lipo() : Battery() + Lipo() { - + this->setMinVoltage(USERMOD_BATTERY_LIPO_MIN_VOLTAGE); + this->setMaxVoltage(USERMOD_BATTERY_LIPO_MAX_VOLTAGE); + this->setCapacity(USERMOD_BATTERY_LIPO_CAPACITY); + this->setVoltage(this->getVoltage()); + this->setCalibration(USERMOD_BATTERY_LIPO_CALIBRATION); } /** diff --git a/usermods/Battery/unkown.h b/usermods/Battery/unkown.h new file mode 100644 index 00000000..63b2674f --- /dev/null +++ b/usermods/Battery/unkown.h @@ -0,0 +1,36 @@ +#ifndef UMBUnkown_h +#define UMBUnkown_h + +#include "battery_defaults.h" +#include "battery.h" + +/** + * Lion Battery + * + */ +class Unkown : public Battery +{ + private: + + public: + Unkown() + { + this->setMinVoltage(USERMOD_BATTERY_UNKOWN_MIN_VOLTAGE); + this->setMaxVoltage(USERMOD_BATTERY_UNKOWN_MAX_VOLTAGE); + this->setCapacity(USERMOD_BATTERY_UNKOWN_CAPACITY); + this->setVoltage(this->getVoltage()); + this->setCalibration(USERMOD_BATTERY_UNKOWN_CALIBRATION); + } + + float mapVoltage(float v, float min, float max) override + { + return this->linearMapping(v, min, max); // basic mapping + }; + + void calculateAndSetLevel(float voltage) override + { + this->setLevel(this->mapVoltage(voltage, this->getMinVoltage(), this->getMaxVoltage())); + }; +}; + +#endif \ No newline at end of file diff --git a/usermods/Battery/usermod_v2_Battery.h b/usermods/Battery/usermod_v2_Battery.h index f9bfc96f..ab2ab908 100644 --- a/usermods/Battery/usermod_v2_Battery.h +++ b/usermods/Battery/usermod_v2_Battery.h @@ -3,6 +3,7 @@ #include "wled.h" #include "battery_defaults.h" #include "battery.h" +#include "unkown.h" #include "lion.h" #include "lipo.h" @@ -18,16 +19,9 @@ class UsermodBattery : public Usermod private: // battery pin can be defined in my_config.h int8_t batteryPin = USERMOD_BATTERY_MEASUREMENT_PIN; - - int8_t batteryType = USERMOB_BATTERY_DEFAULT_TYPE; - - float minVoltage = USERMOD_BATTERY_MIN_VOLTAGE; - float maxVoltage = USERMOD_BATTERY_MAX_VOLTAGE; - unsigned int capacity = USERMOD_BATTERY_TOTAL_CAPACITY; // current capacity - float voltage = this->maxVoltage; // current voltage - int8_t level = 100; // current level - float calibration = USERMOD_BATTERY_CALIBRATION; // offset or calibration value to fine tune the calculated voltage + Battery* bat = nullptr; + batteryConfig bcfg; // how often to read the battery voltage unsigned long readingInterval = USERMOD_BATTERY_MEASUREMENT_INTERVAL; @@ -127,16 +121,17 @@ class UsermodBattery : public Usermod pinMode(batteryPin, INPUT); #endif - //this could also be handled with a factory class but for only 2 types it should be sufficient for now - if(batteryType == 1) { - bat = new Lipo(); - } else - if(batteryType == 2) { - bat = new Lion(); - } else { - bat = new Lipo(); // in the future one could create a nullObject - } + //this could also be handled with a factory class but for only 2 types it should be sufficient for now + if(bcfg.type == (batteryType)lipo) { + bat = new Lipo(); + } else + if(bcfg.type == (batteryType)lion) { + bat = new Lion(); + } else { + bat = new Unkown(); // nullObject + } + bat->update(bcfg); nextReadTime = millis() + readingInterval; lastReadTime = millis(); @@ -321,12 +316,11 @@ class UsermodBattery : public Usermod battery[F("pin")] = batteryPin; #endif - if(bat) { - battery[F("min-voltage")] = bat->getMinVoltage(); - battery[F("max-voltage")] = bat->getMaxVoltage(); - battery[F("capacity")] = bat->getCapacity(); - battery[F("calibration")] = bat->getCalibration(); - } + battery[F("type")] = (String)bcfg.type; + battery[F("min-voltage")] = bat->getMinVoltage(); + battery[F("max-voltage")] = bat->getMaxVoltage(); + battery[F("capacity")] = bat->getCapacity(); + battery[F("calibration")] = bat->getCalibration(); battery[FPSTR(_readInterval)] = readingInterval; JsonObject ao = battery.createNestedObject(F("auto-off")); // auto off section @@ -344,6 +338,11 @@ class UsermodBattery : public Usermod void appendConfigData() { + oappend(SET_F("td=addDropdown('Battery', 'type');")); + oappend(SET_F("addOption(td, 'Unkown', '0');")); + oappend(SET_F("addOption(td, 'LiPo', '1');")); + oappend(SET_F("addOption(td, 'LiOn', '2');")); + oappend(SET_F("addInfo('Battery:type',1,'requires reboot');")); oappend(SET_F("addInfo('Battery:min-voltage', 1, 'v');")); oappend(SET_F("addInfo('Battery:max-voltage', 1, 'v');")); oappend(SET_F("addInfo('Battery:capacity', 1, 'mAh');")); @@ -399,16 +398,15 @@ class UsermodBattery : public Usermod newBatteryPin = battery[F("pin")] | newBatteryPin; #endif - if(bat) { - bat->setMinVoltage(battery[F("min-voltage")] | bat->getMinVoltage()); - bat->setMaxVoltage(battery[F("max-voltage")] | bat->getMaxVoltage()); - bat->setCapacity(battery[F("capacity")] | bat->getCapacity()); - bat->setCalibration(battery[F("calibration")] | bat->getCalibration()); - } + getJsonValue(battery[F("type")], bcfg.type); + getJsonValue(battery[F("min-voltage")], bcfg.minVoltage); + getJsonValue(battery[F("max-voltage")], bcfg.maxVoltage); + getJsonValue(battery[F("capacity")], bcfg.capacity); + getJsonValue(battery[F("calibration")], bcfg.calibration); setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval); // JsonArray type = battery[F("Type")]; - // batteryType = type["bt"] | batteryType; + // batteryType = type["bt"] | btype; JsonObject ao = battery[F("auto-off")]; setAutoOffEnabled(ao[FPSTR(_enabled)] | autoOffEnabled); @@ -446,7 +444,7 @@ class UsermodBattery : public Usermod } #endif - return !battery[FPSTR(_readInterval)].isNull(); + return !battery[F("min-voltage")].isNull(); } /* From 8ba5dfe447ac73111ff2a244be44a6ec08389417 Mon Sep 17 00:00:00 2001 From: Maximilian Mewes Date: Fri, 6 Jan 2023 19:07:39 +0100 Subject: [PATCH 005/441] =?UTF-8?q?Another=20Bugfx=20=F0=9F=A7=91=E2=80=8D?= =?UTF-8?q?=F0=9F=94=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- usermods/Battery/battery.h | 9 +-------- usermods/Battery/lion.h | 9 +++++++++ usermods/Battery/lipo.h | 9 +++++++++ usermods/Battery/usermod_v2_Battery.h | 11 ++++++----- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/usermods/Battery/battery.h b/usermods/Battery/battery.h index ad3fb270..3a792aad 100644 --- a/usermods/Battery/battery.h +++ b/usermods/Battery/battery.h @@ -30,14 +30,7 @@ class Battery } - virtual void update(batteryConfig cfg) - { - if(cfg.minVoltage) this->setMinVoltage(cfg.minVoltage); - if(cfg.maxVoltage) this->setMaxVoltage(cfg.maxVoltage); - if(cfg.calibration) this->setCapacity(cfg.calibration); - if(cfg.level) this->setLevel(cfg.level); - if(cfg.calibration) this->setCalibration(cfg.calibration); - } + virtual void update(batteryConfig cfg) = 0; /** * Corresponding battery curves diff --git a/usermods/Battery/lion.h b/usermods/Battery/lion.h index 4016af7e..17a4b359 100644 --- a/usermods/Battery/lion.h +++ b/usermods/Battery/lion.h @@ -22,6 +22,15 @@ class Lion : public Battery this->setCalibration(USERMOD_BATTERY_LION_CALIBRATION); } + void update(batteryConfig cfg) + { + if(cfg.minVoltage) this->setMinVoltage(cfg.minVoltage); + if(cfg.maxVoltage) this->setMaxVoltage(cfg.maxVoltage); + if(cfg.calibration) this->setCapacity(cfg.calibration); + if(cfg.level) this->setLevel(cfg.level); + if(cfg.calibration) this->setCalibration(cfg.calibration); + } + float mapVoltage(float v, float min, float max) override { return this->linearMapping(v, min, max); // basic mapping diff --git a/usermods/Battery/lipo.h b/usermods/Battery/lipo.h index 03eed7b8..dcd44567 100644 --- a/usermods/Battery/lipo.h +++ b/usermods/Battery/lipo.h @@ -22,6 +22,15 @@ class Lipo : public Battery this->setCalibration(USERMOD_BATTERY_LIPO_CALIBRATION); } + void update(batteryConfig cfg) + { + if(cfg.minVoltage) this->setMinVoltage(cfg.minVoltage); + if(cfg.maxVoltage) this->setMaxVoltage(cfg.maxVoltage); + if(cfg.calibration) this->setCapacity(cfg.calibration); + if(cfg.level) this->setLevel(cfg.level); + if(cfg.calibration) this->setCalibration(cfg.calibration); + } + /** * LiPo batteries have a differnt dischargin curve, see * https://blog.ampow.com/lipo-voltage-chart/ diff --git a/usermods/Battery/usermod_v2_Battery.h b/usermods/Battery/usermod_v2_Battery.h index ab2ab908..5cf6ac79 100644 --- a/usermods/Battery/usermod_v2_Battery.h +++ b/usermods/Battery/usermod_v2_Battery.h @@ -132,6 +132,7 @@ class UsermodBattery : public Usermod } bat->update(bcfg); + nextReadTime = millis() + readingInterval; lastReadTime = millis(); @@ -316,7 +317,7 @@ class UsermodBattery : public Usermod battery[F("pin")] = batteryPin; #endif - battery[F("type")] = (String)bcfg.type; + battery[F("type")] = (String)bcfg.type; // has to be a String otherwise it won't get converted to a Dropdown battery[F("min-voltage")] = bat->getMinVoltage(); battery[F("max-voltage")] = bat->getMaxVoltage(); battery[F("capacity")] = bat->getCapacity(); @@ -404,9 +405,6 @@ class UsermodBattery : public Usermod getJsonValue(battery[F("capacity")], bcfg.capacity); getJsonValue(battery[F("calibration")], bcfg.calibration); setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval); - - // JsonArray type = battery[F("Type")]; - // batteryType = type["bt"] | btype; JsonObject ao = battery[F("auto-off")]; setAutoOffEnabled(ao[FPSTR(_enabled)] | autoOffEnabled); @@ -444,7 +442,10 @@ class UsermodBattery : public Usermod } #endif - return !battery[F("min-voltage")].isNull(); + if(initDone) + bat->update(bcfg); + + return !battery[FPSTR(_readInterval)].isNull(); } /* From d16f9efeecd9f182a150354479f885eb9e2d9bee Mon Sep 17 00:00:00 2001 From: Maximilian Mewes Date: Fri, 6 Jan 2023 19:09:12 +0100 Subject: [PATCH 006/441] =?UTF-8?q?Added=20forgotten=20file=20=F0=9F=98=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- usermods/Battery/unkown.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/usermods/Battery/unkown.h b/usermods/Battery/unkown.h index 63b2674f..f36c3195 100644 --- a/usermods/Battery/unkown.h +++ b/usermods/Battery/unkown.h @@ -22,6 +22,14 @@ class Unkown : public Battery this->setCalibration(USERMOD_BATTERY_UNKOWN_CALIBRATION); } + void update(batteryConfig cfg) + { + if(cfg.minVoltage) this->setMinVoltage(cfg.minVoltage); else this->setMinVoltage(USERMOD_BATTERY_UNKOWN_MIN_VOLTAGE); + if(cfg.maxVoltage) this->setMaxVoltage(cfg.maxVoltage); else this->setMaxVoltage(USERMOD_BATTERY_UNKOWN_MAX_VOLTAGE); + if(cfg.calibration) this->setCapacity(cfg.calibration); else this->setCapacity(USERMOD_BATTERY_UNKOWN_CAPACITY); + if(cfg.calibration) this->setCalibration(cfg.calibration); else this->setCalibration(USERMOD_BATTERY_UNKOWN_CALIBRATION); + } + float mapVoltage(float v, float min, float max) override { return this->linearMapping(v, min, max); // basic mapping From bb82bf762fd4becdf6dc1ed92b4e97eb03e18aed Mon Sep 17 00:00:00 2001 From: Maximilian Mewes Date: Thu, 12 Jan 2023 21:50:46 +0100 Subject: [PATCH 007/441] Update Readme, my_config type config options with examples --- usermods/Battery/battery_defaults.h | 2 ++ usermods/Battery/readme.md | 16 +++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/usermods/Battery/battery_defaults.h b/usermods/Battery/battery_defaults.h index f4060ca6..fbdaf487 100644 --- a/usermods/Battery/battery_defaults.h +++ b/usermods/Battery/battery_defaults.h @@ -1,6 +1,8 @@ #ifndef UMBDefaults_h #define UMBDefaults_h +#include "wled.h" + // pin defaults // for the esp32 it is best to use the ADC1: GPIO32 - GPIO39 // https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/adc.html diff --git a/usermods/Battery/readme.md b/usermods/Battery/readme.md index d55573ab..1ca22976 100644 --- a/usermods/Battery/readme.md +++ b/usermods/Battery/readme.md @@ -36,13 +36,12 @@ define `USERMOD_BATTERY` in `wled00/my_config.h` | Name | Unit | Description | | ----------------------------------------------- | ----------- |-------------------------------------------------------------------------------------- | | `USERMOD_BATTERY` | | define this (in `my_config.h`) to have this usermod included wled00\usermods_list.cpp | -| `USERMOD_BATTERY_USE_LIPO` | | define this (in `my_config.h`) if you use LiPo rechargeables (1S) | | `USERMOD_BATTERY_MEASUREMENT_PIN` | | defaults to A0 on ESP8266 and GPIO35 on ESP32 | | `USERMOD_BATTERY_MEASUREMENT_INTERVAL` | ms | battery check interval. defaults to 30 seconds | -| `USERMOD_BATTERY_MIN_VOLTAGE` | v | minimum battery voltage. default is 2.6 (18650 battery standard) | -| `USERMOD_BATTERY_MAX_VOLTAGE` | v | maximum battery voltage. default is 4.2 (18650 battery standard) | -| `USERMOD_BATTERY_TOTAL_CAPACITY` | mAh | the capacity of all cells in parralel sumed up | -| `USERMOD_BATTERY_CALIBRATION` | | offset / calibration number, fine tune the measured voltage by the microcontroller | +| `USERMOD_BATTERY_{TYPE}_MIN_VOLTAGE` | v | minimum battery voltage. default is 2.6 (18650 battery standard) | +| `USERMOD_BATTERY_{TYPE}_MAX_VOLTAGE` | v | maximum battery voltage. default is 4.2 (18650 battery standard) | +| `USERMOD_BATTERY_{TYPE}_TOTAL_CAPACITY` | mAh | the capacity of all cells in parralel sumed up | +| `USERMOD_BATTERY_{TYPE}_CALIBRATION` | | offset / calibration number, fine tune the measured voltage by the microcontroller | | Auto-Off | --- | --- | | `USERMOD_BATTERY_AUTO_OFF_ENABLED` | true/false | enables auto-off | | `USERMOD_BATTERY_AUTO_OFF_THRESHOLD` | % (0-100) | when this threshold is reached master power turns off | @@ -54,6 +53,13 @@ define `USERMOD_BATTERY` in `wled00/my_config.h` All parameters can be configured at runtime via the Usermods settings page. +**NOTICE:** Each Battery type can be pre-configured individualy (in `my_config.h`) + +| Name | Alias | `my_config.h` example | +| --------------- | ------------- | ------------------------------------- | +| Lithium Polymer | lipo (Li-Po) | `USERMOD_BATTERY_lipo_MIN_VOLTAGE` | +| Lithium Ionen | lion (Li-Ion) | `USERMOD_BATTERY_lion_TOTAL_CAPACITY` | + ## ⚠️ Important - Make sure you know your battery specifications! All batteries are **NOT** the same! From f97b79bc16a5027d35219e015162c7b58e154ef9 Mon Sep 17 00:00:00 2001 From: Maximilian Mewes Date: Sat, 21 Jan 2023 00:39:51 +0100 Subject: [PATCH 008/441] Exposing the Battery state to JSON API - Part 1 --- usermods/Battery/battery_defaults.h | 9 +-- usermods/Battery/usermod_v2_Battery.h | 99 +++++++++++++++------------ 2 files changed, 62 insertions(+), 46 deletions(-) diff --git a/usermods/Battery/battery_defaults.h b/usermods/Battery/battery_defaults.h index fbdaf487..092e3dd3 100644 --- a/usermods/Battery/battery_defaults.h +++ b/usermods/Battery/battery_defaults.h @@ -34,6 +34,7 @@ * */ #ifndef USERMOD_BATTERY_UNKOWN_MIN_VOLTAGE + // Extra save defaults #define USERMOD_BATTERY_UNKOWN_MIN_VOLTAGE 3.3f #endif #ifndef USERMOD_BATTERY_UNKOWN_MAX_VOLTAGE @@ -125,10 +126,10 @@ typedef struct bconfig_t batteryType type; float minVoltage; float maxVoltage; - unsigned int capacity; // current capacity - float voltage; // current voltage - int8_t level; // current level - float calibration; // offset or calibration value to fine tune the calculated voltage + unsigned int capacity; // current capacity + float voltage; // current voltage + int8_t level; // current level + float calibration; // offset or calibration value to fine tune the calculated voltage } batteryConfig; diff --git a/usermods/Battery/usermod_v2_Battery.h b/usermods/Battery/usermod_v2_Battery.h index bf123a79..390bd96b 100644 --- a/usermods/Battery/usermod_v2_Battery.h +++ b/usermods/Battery/usermod_v2_Battery.h @@ -30,17 +30,17 @@ class UsermodBattery : public Usermod // auto shutdown/shutoff/master off feature bool autoOffEnabled = USERMOD_BATTERY_AUTO_OFF_ENABLED; - int8_t autoOffThreshold = USERMOD_BATTERY_AUTO_OFF_THRESHOLD; + uint8_t autoOffThreshold = USERMOD_BATTERY_AUTO_OFF_THRESHOLD; // low power indicator feature bool lowPowerIndicatorEnabled = USERMOD_BATTERY_LOW_POWER_INDICATOR_ENABLED; - int8_t lowPowerIndicatorPreset = USERMOD_BATTERY_LOW_POWER_INDICATOR_PRESET; - int8_t lowPowerIndicatorThreshold = USERMOD_BATTERY_LOW_POWER_INDICATOR_THRESHOLD; - int8_t lowPowerIndicatorReactivationThreshold = lowPowerIndicatorThreshold+10; - int8_t lowPowerIndicatorDuration = USERMOD_BATTERY_LOW_POWER_INDICATOR_DURATION; + uint8_t lowPowerIndicatorPreset = USERMOD_BATTERY_LOW_POWER_INDICATOR_PRESET; + uint8_t lowPowerIndicatorThreshold = USERMOD_BATTERY_LOW_POWER_INDICATOR_THRESHOLD; + uint8_t lowPowerIndicatorReactivationThreshold = lowPowerIndicatorThreshold+10; + uint8_t lowPowerIndicatorDuration = USERMOD_BATTERY_LOW_POWER_INDICATOR_DURATION; bool lowPowerIndicationDone = false; unsigned long lowPowerActivationTime = 0; // used temporary during active time - int8_t lastPreset = 0; + uint8_t lastPreset = 0; bool initDone = false; bool initializing = true; @@ -128,7 +128,7 @@ class UsermodBattery : public Usermod if(bcfg.type == (batteryType)lion) { bat = new Lion(); } else { - bat = new Unkown(); // nullObject + bat = new Unkown(); // nullObject pattern } bat->update(bcfg); @@ -181,7 +181,6 @@ class UsermodBattery : public Usermod #else // read battery raw input rawValue = analogRead(batteryPin); - // calculate the voltage voltage = ((rawValue / getAdcPrecision()) * bat->getMaxVoltage()) + bat->getCalibration(); #endif @@ -252,17 +251,42 @@ class UsermodBattery : public Usermod infoVoltage.add(F(" V")); } + void addBatteryToJsonObject(JsonObject& battery, bool forJsonState) + { + if(forJsonState) { battery[F("type")] = bcfg.type; } else {battery[F("type")] = (String)bcfg.type; } // has to be a String otherwise it won't get converted to a Dropdown + battery[F("min-voltage")] = bat->getMinVoltage(); + battery[F("max-voltage")] = bat->getMaxVoltage(); + battery[F("capacity")] = bat->getCapacity(); + battery[F("calibration")] = bat->getCalibration(); + battery[FPSTR(_readInterval)] = readingInterval; + + JsonObject ao = battery.createNestedObject(F("auto-off")); // auto off section + ao[FPSTR(_enabled)] = autoOffEnabled; + ao[FPSTR(_threshold)] = autoOffThreshold; + + JsonObject lp = battery.createNestedObject(F("indicator")); // low power section + lp[FPSTR(_enabled)] = lowPowerIndicatorEnabled; + lp[FPSTR(_preset)] = lowPowerIndicatorPreset; // dropdown trickery (String)lowPowerIndicatorPreset; + lp[FPSTR(_threshold)] = lowPowerIndicatorThreshold; + lp[FPSTR(_duration)] = lowPowerIndicatorDuration; + } /* * addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object). * Values in the state object may be modified by connected clients */ - /* void addToJsonState(JsonObject& root) { - // TBD + JsonObject battery = root.createNestedObject(FPSTR(_name)); + + if (battery.isNull()) { + battery = root.createNestedObject(FPSTR(_name)); + } + + addBatteryToJsonObject(battery, true); + + DEBUG_PRINTLN(F("Battery state exposed in JSON API.")); } - */ /* @@ -314,48 +338,39 @@ class UsermodBattery : public Usermod */ void addToConfig(JsonObject& root) { - JsonObject battery = root.createNestedObject(FPSTR(_name)); // usermodname + JsonObject battery = root.createNestedObject(FPSTR(_name)); + + if (battery.isNull()) { + battery = root.createNestedObject(FPSTR(_name)); + } + #ifdef ARDUINO_ARCH_ESP32 battery[F("pin")] = batteryPin; #endif - - battery[F("type")] = (String)bcfg.type; // has to be a String otherwise it won't get converted to a Dropdown - battery[F("min-voltage")] = bat->getMinVoltage(); - battery[F("max-voltage")] = bat->getMaxVoltage(); - battery[F("capacity")] = bat->getCapacity(); - battery[F("calibration")] = bat->getCalibration(); - battery[FPSTR(_readInterval)] = readingInterval; - JsonObject ao = battery.createNestedObject(F("auto-off")); // auto off section - ao[FPSTR(_enabled)] = autoOffEnabled; - ao[FPSTR(_threshold)] = autoOffThreshold; - - JsonObject lp = battery.createNestedObject(F("indicator")); // low power section - lp[FPSTR(_enabled)] = lowPowerIndicatorEnabled; - lp[FPSTR(_preset)] = lowPowerIndicatorPreset; // dropdown trickery (String)lowPowerIndicatorPreset; - lp[FPSTR(_threshold)] = lowPowerIndicatorThreshold; - lp[FPSTR(_duration)] = lowPowerIndicatorDuration; + addBatteryToJsonObject(battery, false); DEBUG_PRINTLN(F("Battery config saved.")); } void appendConfigData() { - oappend(SET_F("td=addDropdown('Battery', 'type');")); - oappend(SET_F("addOption(td, 'Unkown', '0');")); - oappend(SET_F("addOption(td, 'LiPo', '1');")); - oappend(SET_F("addOption(td, 'LiOn', '2');")); - oappend(SET_F("addInfo('Battery:type',1,'requires reboot');")); - oappend(SET_F("addInfo('Battery:min-voltage', 1, 'v');")); - oappend(SET_F("addInfo('Battery:max-voltage', 1, 'v');")); - oappend(SET_F("addInfo('Battery:capacity', 1, 'mAh');")); - oappend(SET_F("addInfo('Battery:interval', 1, 'ms');")); - oappend(SET_F("addInfo('Battery:auto-off:threshold', 1, '%');")); - oappend(SET_F("addInfo('Battery:indicator:threshold', 1, '%');")); - oappend(SET_F("addInfo('Battery:indicator:duration', 1, 's');")); + // Total: 501 Bytes + oappend(SET_F("td=addDropdown('Battery', 'type');")); // 35 Bytes + oappend(SET_F("addOption(td, 'Unkown', '0');")); // 30 Bytes + oappend(SET_F("addOption(td, 'LiPo', '1');")); // 28 Bytes + oappend(SET_F("addOption(td, 'LiOn', '2');")); // 28 Bytes + oappend(SET_F("addInfo('Battery:type',1,'requires reboot');")); // 81 Bytes + oappend(SET_F("addInfo('Battery:min-voltage', 1, 'v');")); // 40 Bytes + oappend(SET_F("addInfo('Battery:max-voltage', 1, 'v');")); // 40 Bytes + oappend(SET_F("addInfo('Battery:capacity', 1, 'mAh');")); // 39 Bytes + oappend(SET_F("addInfo('Battery:interval', 1, 'ms');")); // 38 Bytes + oappend(SET_F("addInfo('Battery:auto-off:threshold', 1, '%');")); // 47 Bytes + oappend(SET_F("addInfo('Battery:indicator:threshold', 1, '%');")); // 48 Bytes + oappend(SET_F("addInfo('Battery:indicator:duration', 1, 's');")); // 47 Bytes - // cannot quite get this mf to work. its exeeding some buffer limit i think - // what i wanted is a list of all presets to select one from + // this option list would exeed the oappend() buffer + // a list of all presets to select one from // oappend(SET_F("bd=addDropdown('Battery:low-power-indicator', 'preset');")); // the loop generates: oappend(SET_F("addOption(bd, 'preset name', preset id);")); // for(int8_t i=1; i < 42; i++) { From f78f8b6b127203295cc0e22965c51a1f71415915 Mon Sep 17 00:00:00 2001 From: Maximilian Mewes Date: Sat, 21 Jan 2023 01:44:50 +0100 Subject: [PATCH 009/441] Exposing the Battery state to JSON API - Part 2 --- usermods/Battery/usermod_v2_Battery.h | 59 +++++++++++++++------------ 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/usermods/Battery/usermod_v2_Battery.h b/usermods/Battery/usermod_v2_Battery.h index 390bd96b..bd4d7778 100644 --- a/usermods/Battery/usermod_v2_Battery.h +++ b/usermods/Battery/usermod_v2_Battery.h @@ -271,6 +271,30 @@ class UsermodBattery : public Usermod lp[FPSTR(_duration)] = lowPowerIndicatorDuration; } + void getUsermodConfigFromJsonObject(JsonObject& battery) + { + getJsonValue(battery[F("type")], bcfg.type); + getJsonValue(battery[F("min-voltage")], bcfg.minVoltage); + getJsonValue(battery[F("max-voltage")], bcfg.maxVoltage); + getJsonValue(battery[F("capacity")], bcfg.capacity); + getJsonValue(battery[F("calibration")], bcfg.calibration); + setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval); + + JsonObject ao = battery[F("auto-off")]; + setAutoOffEnabled(ao[FPSTR(_enabled)] | autoOffEnabled); + setAutoOffThreshold(ao[FPSTR(_threshold)] | autoOffThreshold); + + JsonObject lp = battery[F("indicator")]; + setLowPowerIndicatorEnabled(lp[FPSTR(_enabled)] | lowPowerIndicatorEnabled); + setLowPowerIndicatorPreset(lp[FPSTR(_preset)] | lowPowerIndicatorPreset); + setLowPowerIndicatorThreshold(lp[FPSTR(_threshold)] | lowPowerIndicatorThreshold); + lowPowerIndicatorReactivationThreshold = lowPowerIndicatorThreshold+10; + setLowPowerIndicatorDuration(lp[FPSTR(_duration)] | lowPowerIndicatorDuration); + + if(initDone) + bat->update(bcfg); + } + /* * addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object). * Values in the state object may be modified by connected clients @@ -296,7 +320,15 @@ class UsermodBattery : public Usermod /* void readFromJsonState(JsonObject& root) { - // TBD + if (!initDone) return; // prevent crash on boot applyPreset() + + JsonObject battery = root[FPSTR(_name)]; + + if (!battery.isNull()) { + getUsermodConfigFromJsonObject(battery); + + DEBUG_PRINTLN(F("Battery state read from JSON API.")); + } } */ @@ -416,25 +448,7 @@ class UsermodBattery : public Usermod newBatteryPin = battery[F("pin")] | newBatteryPin; #endif - getJsonValue(battery[F("type")], bcfg.type); - getJsonValue(battery[F("min-voltage")], bcfg.minVoltage); - getJsonValue(battery[F("max-voltage")], bcfg.maxVoltage); - getJsonValue(battery[F("capacity")], bcfg.capacity); - getJsonValue(battery[F("calibration")], bcfg.calibration); - setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval); - - JsonObject ao = battery[F("auto-off")]; - setAutoOffEnabled(ao[FPSTR(_enabled)] | autoOffEnabled); - setAutoOffThreshold(ao[FPSTR(_threshold)] | autoOffThreshold); - - JsonObject lp = battery[F("indicator")]; - setLowPowerIndicatorEnabled(lp[FPSTR(_enabled)] | lowPowerIndicatorEnabled); - setLowPowerIndicatorPreset(lp[FPSTR(_preset)] | lowPowerIndicatorPreset); // dropdown trickery (int)lp["preset"] - setLowPowerIndicatorThreshold(lp[FPSTR(_threshold)] | lowPowerIndicatorThreshold); - lowPowerIndicatorReactivationThreshold = lowPowerIndicatorThreshold+10; - setLowPowerIndicatorDuration(lp[FPSTR(_duration)] | lowPowerIndicatorDuration); - - DEBUG_PRINT(FPSTR(_name)); + getUsermodConfigFromJsonObject(battery); #ifdef ARDUINO_ARCH_ESP32 if (!initDone) @@ -459,9 +473,6 @@ class UsermodBattery : public Usermod } #endif - if(initDone) - bat->update(bcfg); - return !battery[FPSTR(_readInterval)].isNull(); } @@ -578,7 +589,6 @@ class UsermodBattery : public Usermod autoOffThreshold = lowPowerIndicatorEnabled /*&& autoOffEnabled*/ ? min(lowPowerIndicatorThreshold-1, (int)autoOffThreshold) : autoOffThreshold; } - /* * Get low-power-indicator feature enabled status * is the low-power-indicator enabled, true/false @@ -648,7 +658,6 @@ class UsermodBattery : public Usermod lowPowerIndicatorDuration = duration; } - /* * Get low-power-indicator status when the indication is done thsi returns true */ From c16462a0ce956b5a40bdfeb5db6c227c6e2a7cd7 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Fri, 30 Jun 2023 23:59:29 +0200 Subject: [PATCH 010/441] Experimental GIF support --- platformio.ini | 2 + wled00/FX.cpp | 12 +++++ wled00/FX.h | 2 +- wled00/fcn_declare.h | 11 ++++- wled00/image_loader.cpp | 104 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 wled00/image_loader.cpp diff --git a/platformio.ini b/platformio.ini index d3b71d3c..1fd4d1aa 100644 --- a/platformio.ini +++ b/platformio.ini @@ -240,6 +240,8 @@ default_partitions = tools/WLED_ESP32_4MB_1MB_FS.csv lib_deps = https://github.com/lorol/LITTLEFS.git https://github.com/pbolduc/AsyncTCP.git @ 1.2.0 + bitbank2/AnimatedGIF@^1.4.7 + pixelmatix/GifDecoder@^1.1.0 ${env.lib_deps} diff --git a/wled00/FX.cpp b/wled00/FX.cpp index f5fefd5b..2db036e8 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -4189,6 +4189,16 @@ uint16_t mode_washing_machine(void) { static const char _data_FX_MODE_WASHING_MACHINE[] PROGMEM = "Washing Machine@!,!;;!"; +/* + Image effect + Draws a .gif image from filesystem on the matrix/strip +*/ +uint16_t mode_image(void) { + renderImageToSegment(SEGMENT); + return FRAMETIME; +} +static const char _data_FX_MODE_IMAGE[] PROGMEM = "Image@;;;12"; + /* Blends random colors across palette Modified, originally by Mark Kriegsman https://gist.github.com/kriegsman/1f7ccbbfa492a73c015e @@ -7734,6 +7744,8 @@ void WS2812FX::setupEffectData() { addEffect(FX_MODE_DANCING_SHADOWS, &mode_dancing_shadows, _data_FX_MODE_DANCING_SHADOWS); addEffect(FX_MODE_WASHING_MACHINE, &mode_washing_machine, _data_FX_MODE_WASHING_MACHINE); + addEffect(FX_MODE_IMAGE, &mode_image, _data_FX_MODE_IMAGE); + addEffect(FX_MODE_BLENDS, &mode_blends, _data_FX_MODE_BLENDS); addEffect(FX_MODE_TV_SIMULATOR, &mode_tv_simulator, _data_FX_MODE_TV_SIMULATOR); addEffect(FX_MODE_DYNAMIC_SMOOTH, &mode_dynamic_smooth, _data_FX_MODE_DYNAMIC_SMOOTH); diff --git a/wled00/FX.h b/wled00/FX.h index 19b1fc4a..045e3fc1 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -242,7 +242,7 @@ #define FX_MODE_CHUNCHUN 111 #define FX_MODE_DANCING_SHADOWS 112 #define FX_MODE_WASHING_MACHINE 113 -// #define FX_MODE_CANDY_CANE 114 // removed in 0.14! +#define FX_MODE_IMAGE 114 // was Candy Cane #define FX_MODE_BLENDS 115 #define FX_MODE_TV_SIMULATOR 116 #define FX_MODE_DYNAMIC_SMOOTH 117 // candidate for removal (check3 in dynamic) diff --git a/wled00/fcn_declare.h b/wled00/fcn_declare.h index c67fdbf3..72d589d4 100644 --- a/wled00/fcn_declare.h +++ b/wled00/fcn_declare.h @@ -5,6 +5,8 @@ * All globally accessible functions are declared here */ +#include "FX.h" + //alexa.cpp #ifndef WLED_DISABLE_ALEXA void onAlexaChange(EspalexaDevice* dev); @@ -103,6 +105,14 @@ void onHueConnect(void* arg, AsyncClient* client); void sendHuePoll(); void onHueData(void* arg, AsyncClient* client, void *data, size_t len); +//image_loader.cpp +bool fileSeekCallback(unsigned long position); +unsigned long filePositionCallback(void); +int fileReadCallback(void); +int fileReadBlockCallback(void * buffer, int numberOfBytes); +int fileSizeCallback(void); +bool renderImageToSegment(Segment &seg); + //improv.cpp enum ImprovRPCType { Command_Wifi = 0x01, @@ -140,7 +150,6 @@ void handleIR(); #include "ESPAsyncWebServer.h" #include "src/dependencies/json/ArduinoJson-v6.h" #include "src/dependencies/json/AsyncJson-v6.h" -#include "FX.h" bool deserializeSegment(JsonObject elem, byte it, byte presetId = 0); bool deserializeState(JsonObject root, byte callMode = CALL_MODE_DIRECT_CHANGE, byte presetId = 0); diff --git a/wled00/image_loader.cpp b/wled00/image_loader.cpp new file mode 100644 index 00000000..b26f6fe1 --- /dev/null +++ b/wled00/image_loader.cpp @@ -0,0 +1,104 @@ +#include "GifDecoder.h" +#include "wled.h" + +File file; +char lastFilename[34] = "/"; +GifDecoder<64, 64, 12, true> decoder; +bool gifDecodeFailed = false; +long lastFrameDisplayTime = 0, currentFrameDelay = 0; + +bool fileSeekCallback(unsigned long position) { + return file.seek(position); +} + +unsigned long filePositionCallback(void) { + return file.position(); +} + +int fileReadCallback(void) { + return file.read(); +} + +int fileReadBlockCallback(void * buffer, int numberOfBytes) { + return file.read((uint8_t*)buffer, numberOfBytes); +} + +int fileSizeCallback(void) { + return file.size(); +} + +bool openGif(const char *filename) { + file = WLED_FS.open(filename, "r"); + + if (!file) return false; + return true; +} + +Segment* activeSeg; +uint16_t gifWidth, gifHeight; +uint16_t fillPixX, fillPixY; + +void screenClearCallback(void) { + activeSeg->fill(0); +} + +void updateScreenCallback(void) {} + +void drawPixelCallback(int16_t x, int16_t y, uint8_t red, uint8_t green, uint8_t blue) { + // simple nearest-neighbor scaling + int16_t outY = y * activeSeg->height() / gifHeight; + int16_t outX = x * activeSeg->width() / gifWidth; + // set multiple pixels if upscaling + for (int16_t i = 0; i < (activeSeg->width()+(gifWidth-1)) / gifWidth; i++) { + for (int16_t j = 0; j < (activeSeg->height()+(gifHeight-1)) / gifHeight; j++) { + activeSeg->setPixelColorXY(outX + i, outY + j, red, green, blue); + } + } +} + +// renders an image (.gif only; .bmp and .fseq to be added soon) from FS to a segment +bool renderImageToSegment(Segment &seg) { + if (!seg.name) return false; + activeSeg = &seg; + + if (strncmp(lastFilename +1, seg.name, 32) != 0) { + Serial.println("segname changed"); + strncpy(lastFilename +1, seg.name, 32); + gifDecodeFailed = false; + if (strcmp(lastFilename + strlen(lastFilename) - 4, ".gif") != 0) { + //DEBUG_PRINTLN(F("Image file not found or not a .gif")); + gifDecodeFailed = true; + return false; + } + if (file) file.close(); + Serial.print("opening gif: "); + Serial.println(openGif(lastFilename)); + if (!file) { gifDecodeFailed = true; return false; } + decoder.setScreenClearCallback(screenClearCallback); + decoder.setUpdateScreenCallback(updateScreenCallback); + decoder.setDrawPixelCallback(drawPixelCallback); + decoder.setFileSeekCallback(fileSeekCallback); + decoder.setFilePositionCallback(filePositionCallback); + decoder.setFileReadCallback(fileReadCallback); + decoder.setFileReadBlockCallback(fileReadBlockCallback); + decoder.setFileSizeCallback(fileSizeCallback); + Serial.println("Starting decoding"); + if(decoder.startDecoding() < 0) { gifDecodeFailed = true; return false; } + Serial.println("Decoding started"); + } + + if (gifDecodeFailed) return false; + if (!file) { gifDecodeFailed = true; return false; } + + if((millis() - lastFrameDisplayTime) > currentFrameDelay) { + decoder.getSize(&gifWidth, &gifHeight); + fillPixX = (seg.width()+(gifWidth-1)) / gifWidth; + fillPixY = (seg.height()+(gifHeight-1)) / gifHeight; + Serial.println("decoding frame"); + int result = decoder.decodeFrame(false); + if (result < 0) { gifDecodeFailed = true; return false; } + currentFrameDelay = decoder.getFrameDelay_ms(); + lastFrameDisplayTime = millis(); + } + return true; +} \ No newline at end of file From 7119999df8055d6bbca9d0bba459ecb1aea57346 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Sat, 1 Jul 2023 13:20:10 +0200 Subject: [PATCH 011/441] Gamma and speed control --- wled00/FX.cpp | 7 ++++++- wled00/image_loader.cpp | 19 ++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 2db036e8..abdbe5da 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -4194,10 +4194,15 @@ static const char _data_FX_MODE_WASHING_MACHINE[] PROGMEM = "Washing Machine@!,! Draws a .gif image from filesystem on the matrix/strip */ uint16_t mode_image(void) { + SEGMENT.setUpLeds(); // temporary per-segment buffering renderImageToSegment(SEGMENT); + for (uint16_t i = 0; i < SEGLEN; i++) { + SEGMENT.setPixelColor(i, SEGMENT.getPixelColor(i)); // temporary, refresh all LEDs for lossy ABL + } + return FRAMETIME; } -static const char _data_FX_MODE_IMAGE[] PROGMEM = "Image@;;;12"; +static const char _data_FX_MODE_IMAGE[] PROGMEM = "Image@!,;;;12;sx=128"; /* Blends random colors across palette diff --git a/wled00/image_loader.cpp b/wled00/image_loader.cpp index b26f6fe1..ad4ca075 100644 --- a/wled00/image_loader.cpp +++ b/wled00/image_loader.cpp @@ -3,7 +3,7 @@ File file; char lastFilename[34] = "/"; -GifDecoder<64, 64, 12, true> decoder; +GifDecoder<64,64,12,true> decoder; bool gifDecodeFailed = false; long lastFrameDisplayTime = 0, currentFrameDelay = 0; @@ -51,7 +51,7 @@ void drawPixelCallback(int16_t x, int16_t y, uint8_t red, uint8_t green, uint8_t // set multiple pixels if upscaling for (int16_t i = 0; i < (activeSeg->width()+(gifWidth-1)) / gifWidth; i++) { for (int16_t j = 0; j < (activeSeg->height()+(gifHeight-1)) / gifHeight; j++) { - activeSeg->setPixelColorXY(outX + i, outY + j, red, green, blue); + activeSeg->setPixelColorXY(outX + i, outY + j, gamma8(red), gamma8(green), gamma8(blue)); } } } @@ -62,7 +62,7 @@ bool renderImageToSegment(Segment &seg) { activeSeg = &seg; if (strncmp(lastFilename +1, seg.name, 32) != 0) { - Serial.println("segname changed"); + //Serial.println("segname changed"); strncpy(lastFilename +1, seg.name, 32); gifDecodeFailed = false; if (strcmp(lastFilename + strlen(lastFilename) - 4, ".gif") != 0) { @@ -71,9 +71,11 @@ bool renderImageToSegment(Segment &seg) { return false; } if (file) file.close(); - Serial.print("opening gif: "); - Serial.println(openGif(lastFilename)); + //Serial.print("opening gif: "); + //Serial.println(openGif(lastFilename)); + openGif(lastFilename); if (!file) { gifDecodeFailed = true; return false; } + //decoder = new GifDecoder<64,64,12,true>(); decoder.setScreenClearCallback(screenClearCallback); decoder.setUpdateScreenCallback(updateScreenCallback); decoder.setDrawPixelCallback(drawPixelCallback); @@ -90,11 +92,14 @@ bool renderImageToSegment(Segment &seg) { if (gifDecodeFailed) return false; if (!file) { gifDecodeFailed = true; return false; } - if((millis() - lastFrameDisplayTime) > currentFrameDelay) { + // speed 0 = half speed, 128 = normal, 255 = as fast as possible + // TODO: 0 = 4x slow, 64 = 2x slow, 128 = normal, 192 = 2x fast, 255 = 4x fast + uint32_t wait = currentFrameDelay * 2 - seg.speed * currentFrameDelay / 128; + + if((millis() - lastFrameDisplayTime) > wait) { decoder.getSize(&gifWidth, &gifHeight); fillPixX = (seg.width()+(gifWidth-1)) / gifWidth; fillPixY = (seg.height()+(gifHeight-1)) / gifHeight; - Serial.println("decoding frame"); int result = decoder.decodeFrame(false); if (result < 0) { gifDecodeFailed = true; return false; } currentFrameDelay = decoder.getFrameDelay_ms(); From ed69692f08d25b3334df7eea5bab07d17a2c5e55 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Sat, 1 Jul 2023 15:36:41 +0200 Subject: [PATCH 012/441] Dynamic --- wled00/image_loader.cpp | 44 +++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/wled00/image_loader.cpp b/wled00/image_loader.cpp index ad4ca075..af907548 100644 --- a/wled00/image_loader.cpp +++ b/wled00/image_loader.cpp @@ -3,7 +3,7 @@ File file; char lastFilename[34] = "/"; -GifDecoder<64,64,12,true> decoder; +GifDecoder<320,320,12,true>* decoder; bool gifDecodeFailed = false; long lastFrameDisplayTime = 0, currentFrameDelay = 0; @@ -75,35 +75,45 @@ bool renderImageToSegment(Segment &seg) { //Serial.println(openGif(lastFilename)); openGif(lastFilename); if (!file) { gifDecodeFailed = true; return false; } - //decoder = new GifDecoder<64,64,12,true>(); - decoder.setScreenClearCallback(screenClearCallback); - decoder.setUpdateScreenCallback(updateScreenCallback); - decoder.setDrawPixelCallback(drawPixelCallback); - decoder.setFileSeekCallback(fileSeekCallback); - decoder.setFilePositionCallback(filePositionCallback); - decoder.setFileReadCallback(fileReadCallback); - decoder.setFileReadBlockCallback(fileReadBlockCallback); - decoder.setFileSizeCallback(fileSizeCallback); + if (!decoder) decoder = new GifDecoder<320,320,12,true>(); + decoder->setScreenClearCallback(screenClearCallback); + decoder->setUpdateScreenCallback(updateScreenCallback); + decoder->setDrawPixelCallback(drawPixelCallback); + decoder->setFileSeekCallback(fileSeekCallback); + decoder->setFilePositionCallback(filePositionCallback); + decoder->setFileReadCallback(fileReadCallback); + decoder->setFileReadBlockCallback(fileReadBlockCallback); + decoder->setFileSizeCallback(fileSizeCallback); Serial.println("Starting decoding"); - if(decoder.startDecoding() < 0) { gifDecodeFailed = true; return false; } + if(decoder->startDecoding() < 0) { gifDecodeFailed = true; return false; } Serial.println("Decoding started"); } if (gifDecodeFailed) return false; - if (!file) { gifDecodeFailed = true; return false; } + if (!file || !decoder) { gifDecodeFailed = true; return false; } - // speed 0 = half speed, 128 = normal, 255 = as fast as possible + // speed 0 = half speed, 128 = normal, 255 = full FX FPS // TODO: 0 = 4x slow, 64 = 2x slow, 128 = normal, 192 = 2x fast, 255 = 4x fast uint32_t wait = currentFrameDelay * 2 - seg.speed * currentFrameDelay / 128; - if((millis() - lastFrameDisplayTime) > wait) { - decoder.getSize(&gifWidth, &gifHeight); + if((millis() - lastFrameDisplayTime) >= wait) { + decoder->getSize(&gifWidth, &gifHeight); fillPixX = (seg.width()+(gifWidth-1)) / gifWidth; fillPixY = (seg.height()+(gifHeight-1)) / gifHeight; - int result = decoder.decodeFrame(false); + int result = decoder->decodeFrame(false); if (result < 0) { gifDecodeFailed = true; return false; } - currentFrameDelay = decoder.getFrameDelay_ms(); + long lastFrameDelay = currentFrameDelay; + currentFrameDelay = decoder->getFrameDelay_ms(); + long tooSlowBy = (millis() - lastFrameDisplayTime) - wait; // if last frame was longer than intended, compensate + currentFrameDelay -= tooSlowBy; + //currentFrameDelay -= LASTFRAMEDELAY; lastFrameDisplayTime = millis(); } return true; +} + +void endPlayback() { + if (file) file.close(); + delete decoder; + gifDecodeFailed = false; } \ No newline at end of file From 2f9c126d34ecc2f1c69c56824aa96000c37f30d4 Mon Sep 17 00:00:00 2001 From: Aircoookie <21045690+Aircoookie@users.noreply.github.com> Date: Mon, 31 Jul 2023 18:13:03 +0200 Subject: [PATCH 013/441] GIF Error codes --- wled00/fcn_declare.h | 4 +++- wled00/image_loader.cpp | 45 ++++++++++++++++++++++++++--------------- wled00/wled.h | 2 ++ 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/wled00/fcn_declare.h b/wled00/fcn_declare.h index 72d589d4..df793a5a 100644 --- a/wled00/fcn_declare.h +++ b/wled00/fcn_declare.h @@ -106,12 +106,14 @@ void sendHuePoll(); void onHueData(void* arg, AsyncClient* client, void *data, size_t len); //image_loader.cpp +#ifndef WLED_DISABLE_GIF bool fileSeekCallback(unsigned long position); unsigned long filePositionCallback(void); int fileReadCallback(void); int fileReadBlockCallback(void * buffer, int numberOfBytes); int fileSizeCallback(void); -bool renderImageToSegment(Segment &seg); +byte renderImageToSegment(Segment &seg); +#endif //improv.cpp enum ImprovRPCType { diff --git a/wled00/image_loader.cpp b/wled00/image_loader.cpp index af907548..038a7d0b 100644 --- a/wled00/image_loader.cpp +++ b/wled00/image_loader.cpp @@ -1,3 +1,5 @@ +#ifndef WLED_DISABLE_GIF + #include "GifDecoder.h" #include "wled.h" @@ -56,26 +58,34 @@ void drawPixelCallback(int16_t x, int16_t y, uint8_t red, uint8_t green, uint8_t } } +#define IMAGE_ERROR_NONE 0 +#define IMAGE_ERROR_NO_NAME 1 +#define IMAGE_ERROR_SEG_LIMIT 2 +#define IMAGE_ERROR_UNSUPPORTED_FORMAT 3 +#define IMAGE_ERROR_FILE_MISSING 4 +#define IMAGE_ERROR_DECODER_ALLOC 5 +#define IMAGE_ERROR_GIF_DECODE 6 +#define IMAGE_ERROR_FRAME_DECODE 7 +#define IMAGE_ERROR_PREV 255 + // renders an image (.gif only; .bmp and .fseq to be added soon) from FS to a segment -bool renderImageToSegment(Segment &seg) { - if (!seg.name) return false; +byte renderImageToSegment(Segment &seg) { + if (!seg.name) return IMAGE_ERROR_NO_NAME; + if (activeSeg && activeSeg != &seg) return IMAGE_ERROR_SEG_LIMIT; // only one segment at a time activeSeg = &seg; - if (strncmp(lastFilename +1, seg.name, 32) != 0) { - //Serial.println("segname changed"); + if (strncmp(lastFilename +1, seg.name, 32) != 0) { // segment name changed, load new image strncpy(lastFilename +1, seg.name, 32); gifDecodeFailed = false; if (strcmp(lastFilename + strlen(lastFilename) - 4, ".gif") != 0) { - //DEBUG_PRINTLN(F("Image file not found or not a .gif")); gifDecodeFailed = true; - return false; + return IMAGE_ERROR_UNSUPPORTED_FORMAT; } if (file) file.close(); - //Serial.print("opening gif: "); - //Serial.println(openGif(lastFilename)); openGif(lastFilename); - if (!file) { gifDecodeFailed = true; return false; } + if (!file) { gifDecodeFailed = true; return IMAGE_ERROR_FILE_MISSING; } if (!decoder) decoder = new GifDecoder<320,320,12,true>(); + if (!decoder) { gifDecodeFailed = true; return IMAGE_ERROR_DECODER_ALLOC; } decoder->setScreenClearCallback(screenClearCallback); decoder->setUpdateScreenCallback(updateScreenCallback); decoder->setDrawPixelCallback(drawPixelCallback); @@ -85,12 +95,13 @@ bool renderImageToSegment(Segment &seg) { decoder->setFileReadBlockCallback(fileReadBlockCallback); decoder->setFileSizeCallback(fileSizeCallback); Serial.println("Starting decoding"); - if(decoder->startDecoding() < 0) { gifDecodeFailed = true; return false; } + if(decoder->startDecoding() < 0) { gifDecodeFailed = true; return IMAGE_ERROR_GIF_DECODE; } Serial.println("Decoding started"); } - if (gifDecodeFailed) return false; - if (!file || !decoder) { gifDecodeFailed = true; return false; } + if (gifDecodeFailed) return IMAGE_ERROR_PREV; + if (!file) { gifDecodeFailed = true; return IMAGE_ERROR_FILE_MISSING; } + if (!decoder) { gifDecodeFailed = true; return IMAGE_ERROR_DECODER_ALLOC; } // speed 0 = half speed, 128 = normal, 255 = full FX FPS // TODO: 0 = 4x slow, 64 = 2x slow, 128 = normal, 192 = 2x fast, 255 = 4x fast @@ -101,19 +112,21 @@ bool renderImageToSegment(Segment &seg) { fillPixX = (seg.width()+(gifWidth-1)) / gifWidth; fillPixY = (seg.height()+(gifHeight-1)) / gifHeight; int result = decoder->decodeFrame(false); - if (result < 0) { gifDecodeFailed = true; return false; } + if (result < 0) { gifDecodeFailed = true; return IMAGE_ERROR_FRAME_DECODE; } long lastFrameDelay = currentFrameDelay; currentFrameDelay = decoder->getFrameDelay_ms(); long tooSlowBy = (millis() - lastFrameDisplayTime) - wait; // if last frame was longer than intended, compensate currentFrameDelay -= tooSlowBy; - //currentFrameDelay -= LASTFRAMEDELAY; lastFrameDisplayTime = millis(); } return true; } -void endPlayback() { +void endImagePlayback() { if (file) file.close(); delete decoder; gifDecodeFailed = false; -} \ No newline at end of file + activeSeg = nullptr; +} + +#endif \ No newline at end of file diff --git a/wled00/wled.h b/wled00/wled.h index 152110b2..74360e00 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -78,6 +78,8 @@ #ifndef WLED_DISABLE_ESPNOW #include #endif + #undef WLED_DISABLE_GIF + #define WLED_DISABLE_GIF #else // ESP32 #include // ensure we have the correct "Serial" on new MCUs (depends on ARDUINO_USB_MODE and ARDUINO_USB_CDC_ON_BOOT) #include From 6be5360bdd44f13d73d235afc3e1944bd5d4cde8 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Tue, 1 Aug 2023 00:48:18 +0200 Subject: [PATCH 014/441] Remove temp workaround --- wled00/FX.cpp | 5 ----- wled00/image_loader.cpp | 1 + 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index db7c4037..58eb73ec 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -4192,12 +4192,7 @@ static const char _data_FX_MODE_WASHING_MACHINE[] PROGMEM = "Washing Machine@!,! Draws a .gif image from filesystem on the matrix/strip */ uint16_t mode_image(void) { - SEGMENT.setUpLeds(); // temporary per-segment buffering renderImageToSegment(SEGMENT); - for (uint16_t i = 0; i < SEGLEN; i++) { - SEGMENT.setPixelColor(i, SEGMENT.getPixelColor(i)); // temporary, refresh all LEDs for lossy ABL - } - return FRAMETIME; } static const char _data_FX_MODE_IMAGE[] PROGMEM = "Image@!,;;;12;sx=128"; diff --git a/wled00/image_loader.cpp b/wled00/image_loader.cpp index 038a7d0b..500fbc2d 100644 --- a/wled00/image_loader.cpp +++ b/wled00/image_loader.cpp @@ -127,6 +127,7 @@ void endImagePlayback() { delete decoder; gifDecodeFailed = false; activeSeg = nullptr; + lastFilename[0] = '\0'; } #endif \ No newline at end of file From b8c61b52366a567d57860ada080c30ced9725777 Mon Sep 17 00:00:00 2001 From: Maximilian Mewes Date: Sat, 9 Sep 2023 21:01:55 +0200 Subject: [PATCH 015/441] =?UTF-8?q?Move=20battery=20types=20to=20a=20separ?= =?UTF-8?q?ate=20folder=20=F0=9F=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- usermods/Battery/battery.h | 17 +---- usermods/Battery/battery_defaults.h | 16 +--- usermods/Battery/{ => types}/lion.h | 6 +- usermods/Battery/{ => types}/lipo.h | 14 ++-- usermods/Battery/{ => types}/unkown.h | 6 +- usermods/Battery/usermod_v2_Battery.h | 105 ++++++-------------------- 6 files changed, 37 insertions(+), 127 deletions(-) rename usermods/Battery/{ => types}/lion.h (87%) rename usermods/Battery/{ => types}/lipo.h (82%) rename usermods/Battery/{ => types}/unkown.h (83%) diff --git a/usermods/Battery/battery.h b/usermods/Battery/battery.h index 3a792aad..8a8042ff 100644 --- a/usermods/Battery/battery.h +++ b/usermods/Battery/battery.h @@ -14,7 +14,6 @@ class Battery protected: float minVoltage; float maxVoltage; - unsigned int capacity; float voltage; int8_t level = 100; float calibration; // offset or calibration value to fine tune the calculated voltage @@ -34,7 +33,7 @@ class Battery /** * Corresponding battery curves - * calculates the capacity in % (0-100) with given voltage and possible voltage range + * calculates the level in % (0-100) with given voltage and possible voltage range */ virtual float mapVoltage(float v, float min, float max) = 0; // { @@ -86,20 +85,6 @@ class Battery this->maxVoltage = max(getMinVoltage()+.5f, voltage); } - /* - * Get the capacity of all cells in parralel sumed up - * unit: mAh - */ - unsigned int getCapacity() - { - return this->capacity; - } - - void setCapacity(unsigned int capacity) - { - this->capacity = capacity; - } - float getVoltage() { return this->voltage; diff --git a/usermods/Battery/battery_defaults.h b/usermods/Battery/battery_defaults.h index 66800968..199ee343 100644 --- a/usermods/Battery/battery_defaults.h +++ b/usermods/Battery/battery_defaults.h @@ -40,9 +40,6 @@ #ifndef USERMOD_BATTERY_UNKOWN_MAX_VOLTAGE #define USERMOD_BATTERY_UNKOWN_MAX_VOLTAGE 4.2f #endif -#ifndef USERMOD_BATTERY_UNKOWN_CAPACITY - #define USERMOD_BATTERY_UNKOWN_CAPACITY 2500 -#endif #ifndef USERMOD_BATTERY_UNKOWN_CALIBRATION // offset or calibration value to fine tune the calculated voltage #define USERMOD_BATTERY_UNKOWN_CALIBRATION 0 @@ -59,9 +56,6 @@ #ifndef USERMOD_BATTERY_LIPO_MAX_VOLTAGE #define USERMOD_BATTERY_LIPO_MAX_VOLTAGE 4.2f #endif -#ifndef USERMOD_BATTERY_LIPO_CAPACITY - #define USERMOD_BATTERY_LIPO_CAPACITY 5000 -#endif #ifndef USERMOD_BATTERY_LIPO_CALIBRATION #define USERMOD_BATTERY_LIPO_CALIBRATION 0 #endif @@ -77,10 +71,6 @@ #ifndef USERMOD_BATTERY_LION_MAX_VOLTAGE #define USERMOD_BATTERY_LION_MAX_VOLTAGE 4.2f #endif -#ifndef USERMOD_BATTERY_LION_CAPACITY - // a common capacity for single 18650 battery cells is between 2500 and 3600 mAh - #define USERMOD_BATTERY_LION_CAPACITY 3100 -#endif #ifndef USERMOD_BATTERY_LION_CALIBRATION // offset or calibration value to fine tune the calculated voltage #define USERMOD_BATTERY_LION_CALIBRATION 0 @@ -109,11 +99,6 @@ #define USERMOD_BATTERY_CALIBRATION 0 #endif -// calculate remaining time / the time that is left before the battery runs out of power -// #ifndef USERMOD_BATTERY_CALCULATE_TIME_LEFT_ENABLED -// #define USERMOD_BATTERY_CALCULATE_TIME_LEFT_ENABLED false -// #endif - // auto-off feature #ifndef USERMOD_BATTERY_AUTO_OFF_ENABLED #define USERMOD_BATTERY_AUTO_OFF_ENABLED true @@ -157,6 +142,7 @@ typedef struct bconfig_t float voltage; // current voltage int8_t level; // current level float calibration; // offset or calibration value to fine tune the calculated voltage + float voltageMultiplier; } batteryConfig; diff --git a/usermods/Battery/lion.h b/usermods/Battery/types/lion.h similarity index 87% rename from usermods/Battery/lion.h rename to usermods/Battery/types/lion.h index 17a4b359..2ff54a1e 100644 --- a/usermods/Battery/lion.h +++ b/usermods/Battery/types/lion.h @@ -1,8 +1,8 @@ #ifndef UMBLion_h #define UMBLion_h -#include "battery_defaults.h" -#include "battery.h" +#include "../battery_defaults.h" +#include "../battery.h" /** * Lion Battery @@ -17,7 +17,6 @@ class Lion : public Battery { this->setMinVoltage(USERMOD_BATTERY_LION_MIN_VOLTAGE); this->setMaxVoltage(USERMOD_BATTERY_LION_MAX_VOLTAGE); - this->setCapacity(USERMOD_BATTERY_LION_CAPACITY); this->setVoltage(this->getVoltage()); this->setCalibration(USERMOD_BATTERY_LION_CALIBRATION); } @@ -26,7 +25,6 @@ class Lion : public Battery { if(cfg.minVoltage) this->setMinVoltage(cfg.minVoltage); if(cfg.maxVoltage) this->setMaxVoltage(cfg.maxVoltage); - if(cfg.calibration) this->setCapacity(cfg.calibration); if(cfg.level) this->setLevel(cfg.level); if(cfg.calibration) this->setCalibration(cfg.calibration); } diff --git a/usermods/Battery/lipo.h b/usermods/Battery/types/lipo.h similarity index 82% rename from usermods/Battery/lipo.h rename to usermods/Battery/types/lipo.h index dcd44567..264d3251 100644 --- a/usermods/Battery/lipo.h +++ b/usermods/Battery/types/lipo.h @@ -1,8 +1,8 @@ #ifndef UMBLipo_h #define UMBLipo_h -#include "battery_defaults.h" -#include "battery.h" +#include "../battery_defaults.h" +#include "../battery.h" /** * Lipo Battery @@ -17,7 +17,6 @@ class Lipo : public Battery { this->setMinVoltage(USERMOD_BATTERY_LIPO_MIN_VOLTAGE); this->setMaxVoltage(USERMOD_BATTERY_LIPO_MAX_VOLTAGE); - this->setCapacity(USERMOD_BATTERY_LIPO_CAPACITY); this->setVoltage(this->getVoltage()); this->setCalibration(USERMOD_BATTERY_LIPO_CALIBRATION); } @@ -26,13 +25,12 @@ class Lipo : public Battery { if(cfg.minVoltage) this->setMinVoltage(cfg.minVoltage); if(cfg.maxVoltage) this->setMaxVoltage(cfg.maxVoltage); - if(cfg.calibration) this->setCapacity(cfg.calibration); if(cfg.level) this->setLevel(cfg.level); if(cfg.calibration) this->setCalibration(cfg.calibration); } /** - * LiPo batteries have a differnt dischargin curve, see + * LiPo batteries have a differnt discharge curve, see * https://blog.ampow.com/lipo-voltage-chart/ */ float mapVoltage(float v, float min, float max) override @@ -41,12 +39,12 @@ class Lipo : public Battery lvl = this->linearMapping(v, min, max); // basic mapping if (lvl < 40.0f) - lvl = this->linearMapping(lvl, 0, 40, 0, 12); // last 45% -> drops very quickly + lvl = this->linearMapping(lvl, 0, 40, 0, 12); // last 45% -> drops very quickly else { if (lvl < 90.0f) - lvl = this->linearMapping(lvl, 40, 90, 12, 95); // 90% ... 40% -> almost linear drop + lvl = this->linearMapping(lvl, 40, 90, 12, 95); // 90% ... 40% -> almost linear drop else // level > 90% - lvl = this->linearMapping(lvl, 90, 105, 95, 100); // highest 15% -> drop slowly + lvl = this->linearMapping(lvl, 90, 105, 95, 100); // highest 15% -> drop slowly } return lvl; diff --git a/usermods/Battery/unkown.h b/usermods/Battery/types/unkown.h similarity index 83% rename from usermods/Battery/unkown.h rename to usermods/Battery/types/unkown.h index f36c3195..2b38da96 100644 --- a/usermods/Battery/unkown.h +++ b/usermods/Battery/types/unkown.h @@ -1,8 +1,8 @@ #ifndef UMBUnkown_h #define UMBUnkown_h -#include "battery_defaults.h" -#include "battery.h" +#include "../battery_defaults.h" +#include "../battery.h" /** * Lion Battery @@ -17,7 +17,6 @@ class Unkown : public Battery { this->setMinVoltage(USERMOD_BATTERY_UNKOWN_MIN_VOLTAGE); this->setMaxVoltage(USERMOD_BATTERY_UNKOWN_MAX_VOLTAGE); - this->setCapacity(USERMOD_BATTERY_UNKOWN_CAPACITY); this->setVoltage(this->getVoltage()); this->setCalibration(USERMOD_BATTERY_UNKOWN_CALIBRATION); } @@ -26,7 +25,6 @@ class Unkown : public Battery { if(cfg.minVoltage) this->setMinVoltage(cfg.minVoltage); else this->setMinVoltage(USERMOD_BATTERY_UNKOWN_MIN_VOLTAGE); if(cfg.maxVoltage) this->setMaxVoltage(cfg.maxVoltage); else this->setMaxVoltage(USERMOD_BATTERY_UNKOWN_MAX_VOLTAGE); - if(cfg.calibration) this->setCapacity(cfg.calibration); else this->setCapacity(USERMOD_BATTERY_UNKOWN_CAPACITY); if(cfg.calibration) this->setCalibration(cfg.calibration); else this->setCalibration(USERMOD_BATTERY_UNKOWN_CALIBRATION); } diff --git a/usermods/Battery/usermod_v2_Battery.h b/usermods/Battery/usermod_v2_Battery.h index 7f6738e1..a91331cb 100644 --- a/usermods/Battery/usermod_v2_Battery.h +++ b/usermods/Battery/usermod_v2_Battery.h @@ -3,9 +3,9 @@ #include "wled.h" #include "battery_defaults.h" #include "battery.h" -#include "unkown.h" -#include "lion.h" -#include "lipo.h" +#include "types/unkown.h" +#include "types/lion.h" +#include "types/lipo.h" /* * Usermod by Maximilian Mewes @@ -28,7 +28,7 @@ class UsermodBattery : public Usermod unsigned long nextReadTime = 0; unsigned long lastReadTime = 0; // battery min. voltage - float minBatteryVoltage = USERMOD_BATTERY_MIN_VOLTAGE; + float minBatteryVoltage = 3.3f; // battery max. voltage float maxBatteryVoltage = USERMOD_BATTERY_MAX_VOLTAGE; // all battery cells summed up @@ -39,16 +39,10 @@ class UsermodBattery : public Usermod float voltage = maxBatteryVoltage; // between 0 and 1, to control strength of voltage smoothing filter float alpha = 0.05f; - // multiplier for the voltage divider that is in place between ADC pin and battery, default will be 2 but might be adapted to readout voltages over ~5v ESP32 or ~6.6v ESP8266 - float voltageMultiplier = USERMOD_BATTERY_VOLTAGE_MULTIPLIER; // mapped battery level based on voltage int8_t batteryLevel = 100; // offset or calibration value to fine tune the calculated voltage float calibration = USERMOD_BATTERY_CALIBRATION; - - // time left estimation feature - // bool calculateTimeLeftEnabled = USERMOD_BATTERY_CALCULATE_TIME_LEFT_ENABLED; - // float estimatedTimeLeft = 0.0; // auto shutdown/shutoff/master off feature bool autoOffEnabled = USERMOD_BATTERY_AUTO_OFF_ENABLED; @@ -114,18 +108,22 @@ class UsermodBattery : public Usermod } } - float readVoltage() - { - #ifdef ARDUINO_ARCH_ESP32 - // use calibrated millivolts analogread on esp32 (150 mV ~ 2450 mV default attentuation) and divide by 1000 to get from milivolts to volts and multiply by voltage multiplier and apply calibration value - return (analogReadMilliVolts(batteryPin) / 1000.0f) * voltageMultiplier + calibration; - #else - // use analog read on esp8266 ( 0V ~ 1V no attenuation options) and divide by ADC precision 1023 and multiply by voltage multiplier and apply calibration value - return (analogRead(batteryPin) / 1023.0f) * voltageMultiplier + calibration; - #endif - } + // float readVoltage() + // { + // #ifdef ARDUINO_ARCH_ESP32 + // // use calibrated millivolts analogread on esp32 (150 mV ~ 2450 mV default attentuation) and divide by 1000 to get from milivolts to volts and multiply by voltage multiplier and apply calibration value + // return (analogReadMilliVolts(batteryPin) / 1000.0f) * voltageMultiplier + calibration; + // #else + // // use analog read on esp8266 ( 0V ~ 1V no attenuation options) and divide by ADC precision 1023 and multiply by voltage multiplier and apply calibration value + // return (analogRead(batteryPin) / 1023.0f) * voltageMultiplier + calibration; + // #endif + // } public: + UsermodBattery() + { + bat = new Unkown(); + } //Functions called by WLED /* @@ -152,14 +150,13 @@ class UsermodBattery : public Usermod } #else //ESP8266 boards have only one analog input pin A0 pinMode(batteryPin, INPUT); - voltage = readVoltage(); + // voltage = readVoltage(); #endif //this could also be handled with a factory class but for only 2 types it should be sufficient for now if(bcfg.type == (batteryType)lipo) { bat = new Lipo(); - } else - if(bcfg.type == (batteryType)lion) { + } else if(bcfg.type == (batteryType)lion) { bat = new Lion(); } else { bat = new Unkown(); // nullObject pattern @@ -218,14 +215,8 @@ class UsermodBattery : public Usermod // calculate the voltage voltage = ((rawValue / getAdcPrecision()) * bat->getMaxVoltage()) + bat->getCalibration(); #endif - // initializing = false; - - // rawValue = readVoltage(); - // // filter with exponential smoothing because ADC in esp32 is fluctuating too much for a good single readout - // voltage = voltage + alpha * (rawValue - voltage); - - // check if voltage is within specified voltage range, allow 10% over/under voltage - removed cause this just makes it hard for people to troubleshoot as the voltage in the web gui will say invalid instead of displaying a voltage - //voltage = ((voltage < minBatteryVoltage * 0.85f) || (voltage > maxBatteryVoltage * 1.1f)) ? -1.0f : voltage; + // filter with exponential smoothing because ADC in esp32 is fluctuating too much for a good single readout + voltage = voltage + alpha * (rawValue - voltage); bat->setVoltage(voltage); // translate battery voltage into percentage @@ -298,7 +289,6 @@ class UsermodBattery : public Usermod if(forJsonState) { battery[F("type")] = bcfg.type; } else {battery[F("type")] = (String)bcfg.type; } // has to be a String otherwise it won't get converted to a Dropdown battery[F("min-voltage")] = bat->getMinVoltage(); battery[F("max-voltage")] = bat->getMaxVoltage(); - battery[F("capacity")] = bat->getCapacity(); battery[F("calibration")] = bat->getCalibration(); battery[FPSTR(_readInterval)] = readingInterval; @@ -318,8 +308,8 @@ class UsermodBattery : public Usermod getJsonValue(battery[F("type")], bcfg.type); getJsonValue(battery[F("min-voltage")], bcfg.minVoltage); getJsonValue(battery[F("max-voltage")], bcfg.maxVoltage); - getJsonValue(battery[F("capacity")], bcfg.capacity); getJsonValue(battery[F("calibration")], bcfg.calibration); + setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval); JsonObject ao = battery[F("auto-off")]; @@ -421,26 +411,18 @@ class UsermodBattery : public Usermod #ifdef ARDUINO_ARCH_ESP32 battery[F("pin")] = batteryPin; #endif - - // battery[F("time-left")] = calculateTimeLeftEnabled; - battery[F("min-voltage")] = minBatteryVoltage; - battery[F("max-voltage")] = maxBatteryVoltage; - battery[F("capacity")] = totalBatteryCapacity; - battery[F("calibration")] = calibration; - battery[F("voltage-multiplier")] = voltageMultiplier; - battery[FPSTR(_readInterval)] = readingInterval; addBatteryToJsonObject(battery, false); // read voltage in case calibration or voltage multiplier changed to see immediate effect - voltage = readVoltage(); + // voltage = readVoltage(); DEBUG_PRINTLN(F("Battery config saved.")); } void appendConfigData() { - // Total: 501 Bytes + // Total: 462 Bytes oappend(SET_F("td=addDropdown('Battery', 'type');")); // 35 Bytes oappend(SET_F("addOption(td, 'Unkown', '0');")); // 30 Bytes oappend(SET_F("addOption(td, 'LiPo', '1');")); // 28 Bytes @@ -448,7 +430,6 @@ class UsermodBattery : public Usermod oappend(SET_F("addInfo('Battery:type',1,'requires reboot');")); // 81 Bytes oappend(SET_F("addInfo('Battery:min-voltage', 1, 'v');")); // 40 Bytes oappend(SET_F("addInfo('Battery:max-voltage', 1, 'v');")); // 40 Bytes - oappend(SET_F("addInfo('Battery:capacity', 1, 'mAh');")); // 39 Bytes oappend(SET_F("addInfo('Battery:interval', 1, 'ms');")); // 38 Bytes oappend(SET_F("addInfo('Battery:auto-off:threshold', 1, '%');")); // 47 Bytes oappend(SET_F("addInfo('Battery:indicator:threshold', 1, '%');")); // 48 Bytes @@ -503,9 +484,7 @@ class UsermodBattery : public Usermod // calculateTimeLeftEnabled = battery[F("time-left")] | calculateTimeLeftEnabled; setMinBatteryVoltage(battery[F("min-voltage")] | minBatteryVoltage); setMaxBatteryVoltage(battery[F("max-voltage")] | maxBatteryVoltage); - setTotalBatteryCapacity(battery[F("capacity")] | totalBatteryCapacity); setCalibration(battery[F("calibration")] | calibration); - setVoltageMultiplier(battery[F("voltage-multiplier")] | voltageMultiplier); setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval); getUsermodConfigFromJsonObject(battery); @@ -655,22 +634,6 @@ class UsermodBattery : public Usermod } - /* - * Get the capacity of all cells in parralel sumed up - * unit: mAh - */ - unsigned int getTotalBatteryCapacity() - { - return totalBatteryCapacity; - } - - void setTotalBatteryCapacity(unsigned int capacity) - { - totalBatteryCapacity = capacity; - } - - - /* * Get the calculated voltage * formula: (adc pin value / adc precision * max voltage) + calibration @@ -707,24 +670,6 @@ class UsermodBattery : public Usermod calibration = offset; } - /* - * Set the voltage multiplier value - * A multiplier that may need adjusting for different voltage divider setups - */ - void setVoltageMultiplier(float multiplier) - { - voltageMultiplier = multiplier; - } - - /* - * Get the voltage multiplier value - * A multiplier that may need adjusting for different voltage divider setups - */ - float getVoltageMultiplier() - { - return voltageMultiplier; - } - /* * Get auto-off feature enabled status * is auto-off enabled, true/false From a9d6a1592412a6f901afecc1e9e4e8934ef46b13 Mon Sep 17 00:00:00 2001 From: Maximilian Mewes Date: Sat, 9 Sep 2023 21:50:30 +0200 Subject: [PATCH 016/441] Update Classes --- usermods/Battery/battery.h | 23 ++- usermods/Battery/battery_defaults.h | 25 +--- usermods/Battery/types/lion.h | 3 +- usermods/Battery/types/lipo.h | 3 +- usermods/Battery/types/unkown.h | 4 +- usermods/Battery/usermod_v2_Battery.h | 208 ++++++++++---------------- 6 files changed, 111 insertions(+), 155 deletions(-) diff --git a/usermods/Battery/battery.h b/usermods/Battery/battery.h index 8a8042ff..4cdfb035 100644 --- a/usermods/Battery/battery.h +++ b/usermods/Battery/battery.h @@ -17,6 +17,7 @@ class Battery float voltage; int8_t level = 100; float calibration; // offset or calibration value to fine tune the calculated voltage + float voltageMultiplier; // ratio for the voltage divider float linearMapping(float v, float min, float max, float oMin = 0.0f, float oMax = 100.0f) { @@ -26,7 +27,9 @@ class Battery public: Battery() { - + this->setVoltage(this->getVoltage()); + this->setVoltageMultiplier(USERMOD_BATTERY_VOLTAGE_MULTIPLIER); + this->setCalibration(USERMOD_BATTERY_CALIBRATION); } virtual void update(batteryConfig cfg) = 0; @@ -127,6 +130,24 @@ class Battery { calibration = offset; } + + /* + * Get the configured calibration value + * a value to set the voltage divider ratio + */ + virtual float getVoltageMultiplier() + { + return voltageMultiplier; + } + + /* + * Set the voltage multiplier value + * a value to set the voltage divider ratio. + */ + virtual void setVoltageMultiplier(float multiplier) + { + voltageMultiplier = voltageMultiplier; + } }; #endif \ No newline at end of file diff --git a/usermods/Battery/battery_defaults.h b/usermods/Battery/battery_defaults.h index 199ee343..6d0a95dc 100644 --- a/usermods/Battery/battery_defaults.h +++ b/usermods/Battery/battery_defaults.h @@ -40,10 +40,7 @@ #ifndef USERMOD_BATTERY_UNKOWN_MAX_VOLTAGE #define USERMOD_BATTERY_UNKOWN_MAX_VOLTAGE 4.2f #endif -#ifndef USERMOD_BATTERY_UNKOWN_CALIBRATION - // offset or calibration value to fine tune the calculated voltage - #define USERMOD_BATTERY_UNKOWN_CALIBRATION 0 -#endif + /* * * Lithium polymer (Li-Po) defaults @@ -56,9 +53,7 @@ #ifndef USERMOD_BATTERY_LIPO_MAX_VOLTAGE #define USERMOD_BATTERY_LIPO_MAX_VOLTAGE 4.2f #endif -#ifndef USERMOD_BATTERY_LIPO_CALIBRATION - #define USERMOD_BATTERY_LIPO_CALIBRATION 0 -#endif + /* * * Lithium-ion (Li-Ion) defaults @@ -71,12 +66,8 @@ #ifndef USERMOD_BATTERY_LION_MAX_VOLTAGE #define USERMOD_BATTERY_LION_MAX_VOLTAGE 4.2f #endif -#ifndef USERMOD_BATTERY_LION_CALIBRATION - // offset or calibration value to fine tune the calculated voltage - #define USERMOD_BATTERY_LION_CALIBRATION 0 -#endif -//the default ratio for the voltage divider +// the default ratio for the voltage divider #ifndef USERMOD_BATTERY_VOLTAGE_MULTIPLIER #ifdef ARDUINO_ARCH_ESP32 #define USERMOD_BATTERY_VOLTAGE_MULTIPLIER 2.0f @@ -85,13 +76,8 @@ #endif #endif -#ifndef USERMOD_BATTERY_MAX_VOLTAGE - #define USERMOD_BATTERY_MAX_VOLTAGE 4.2f -#endif - -// a common capacity for single 18650 battery cells is between 2500 and 3600 mAh -#ifndef USERMOD_BATTERY_TOTAL_CAPACITY - #define USERMOD_BATTERY_TOTAL_CAPACITY 3100 +#ifndef USERMOD_BATTERY_AVERAGING_ALPHA + #define USERMOD_BATTERY_AVERAGING_ALPHA 0.1f #endif // offset or calibration value to fine tune the calculated voltage @@ -138,7 +124,6 @@ typedef struct bconfig_t batteryType type; float minVoltage; float maxVoltage; - unsigned int capacity; // current capacity float voltage; // current voltage int8_t level; // current level float calibration; // offset or calibration value to fine tune the calculated voltage diff --git a/usermods/Battery/types/lion.h b/usermods/Battery/types/lion.h index 2ff54a1e..0d232538 100644 --- a/usermods/Battery/types/lion.h +++ b/usermods/Battery/types/lion.h @@ -14,11 +14,10 @@ class Lion : public Battery public: Lion() + : Battery() { this->setMinVoltage(USERMOD_BATTERY_LION_MIN_VOLTAGE); this->setMaxVoltage(USERMOD_BATTERY_LION_MAX_VOLTAGE); - this->setVoltage(this->getVoltage()); - this->setCalibration(USERMOD_BATTERY_LION_CALIBRATION); } void update(batteryConfig cfg) diff --git a/usermods/Battery/types/lipo.h b/usermods/Battery/types/lipo.h index 264d3251..f65ab12c 100644 --- a/usermods/Battery/types/lipo.h +++ b/usermods/Battery/types/lipo.h @@ -14,11 +14,10 @@ class Lipo : public Battery public: Lipo() + : Battery() { this->setMinVoltage(USERMOD_BATTERY_LIPO_MIN_VOLTAGE); this->setMaxVoltage(USERMOD_BATTERY_LIPO_MAX_VOLTAGE); - this->setVoltage(this->getVoltage()); - this->setCalibration(USERMOD_BATTERY_LIPO_CALIBRATION); } void update(batteryConfig cfg) diff --git a/usermods/Battery/types/unkown.h b/usermods/Battery/types/unkown.h index 2b38da96..edf22004 100644 --- a/usermods/Battery/types/unkown.h +++ b/usermods/Battery/types/unkown.h @@ -14,18 +14,16 @@ class Unkown : public Battery public: Unkown() + : Battery() { this->setMinVoltage(USERMOD_BATTERY_UNKOWN_MIN_VOLTAGE); this->setMaxVoltage(USERMOD_BATTERY_UNKOWN_MAX_VOLTAGE); - this->setVoltage(this->getVoltage()); - this->setCalibration(USERMOD_BATTERY_UNKOWN_CALIBRATION); } void update(batteryConfig cfg) { if(cfg.minVoltage) this->setMinVoltage(cfg.minVoltage); else this->setMinVoltage(USERMOD_BATTERY_UNKOWN_MIN_VOLTAGE); if(cfg.maxVoltage) this->setMaxVoltage(cfg.maxVoltage); else this->setMaxVoltage(USERMOD_BATTERY_UNKOWN_MAX_VOLTAGE); - if(cfg.calibration) this->setCalibration(cfg.calibration); else this->setCalibration(USERMOD_BATTERY_UNKOWN_CALIBRATION); } float mapVoltage(float v, float min, float max) override diff --git a/usermods/Battery/usermod_v2_Battery.h b/usermods/Battery/usermod_v2_Battery.h index a91331cb..9b980d55 100644 --- a/usermods/Battery/usermod_v2_Battery.h +++ b/usermods/Battery/usermod_v2_Battery.h @@ -20,27 +20,15 @@ class UsermodBattery : public Usermod // battery pin can be defined in my_config.h int8_t batteryPin = USERMOD_BATTERY_MEASUREMENT_PIN; - Battery* bat = nullptr; - batteryConfig bcfg; + Battery* bat = new Unkown(); + batteryConfig cfg; // how often to read the battery voltage unsigned long readingInterval = USERMOD_BATTERY_MEASUREMENT_INTERVAL; unsigned long nextReadTime = 0; unsigned long lastReadTime = 0; - // battery min. voltage - float minBatteryVoltage = 3.3f; - // battery max. voltage - float maxBatteryVoltage = USERMOD_BATTERY_MAX_VOLTAGE; - // all battery cells summed up - unsigned int totalBatteryCapacity = USERMOD_BATTERY_TOTAL_CAPACITY; - // raw analog reading - float rawValue = 0.0f; - // calculated voltage - float voltage = maxBatteryVoltage; // between 0 and 1, to control strength of voltage smoothing filter - float alpha = 0.05f; - // mapped battery level based on voltage - int8_t batteryLevel = 100; + float alpha = USERMOD_BATTERY_AVERAGING_ALPHA; // offset or calibration value to fine tune the calculated voltage float calibration = USERMOD_BATTERY_CALIBRATION; @@ -70,13 +58,16 @@ class UsermodBattery : public Usermod static const char _duration[]; static const char _init[]; + /** + * Helper for rounding floating point values + */ float dot2round(float x) { float nx = (int)(x * 100 + .5); return (float)(nx / 100); } - /* + /** * Turn off all leds */ void turnOff() @@ -85,7 +76,7 @@ class UsermodBattery : public Usermod stateUpdated(CALL_MODE_DIRECT_CHANGE); } - /* + /** * Indicate low power by activating a configured preset for a given time and then switching back to the preset that was selected previously */ void lowPowerIndicator() @@ -108,25 +99,24 @@ class UsermodBattery : public Usermod } } - // float readVoltage() - // { - // #ifdef ARDUINO_ARCH_ESP32 - // // use calibrated millivolts analogread on esp32 (150 mV ~ 2450 mV default attentuation) and divide by 1000 to get from milivolts to volts and multiply by voltage multiplier and apply calibration value - // return (analogReadMilliVolts(batteryPin) / 1000.0f) * voltageMultiplier + calibration; - // #else - // // use analog read on esp8266 ( 0V ~ 1V no attenuation options) and divide by ADC precision 1023 and multiply by voltage multiplier and apply calibration value - // return (analogRead(batteryPin) / 1023.0f) * voltageMultiplier + calibration; - // #endif - // } + /** + * read the battery voltage in different ways depending on the architecture + */ + float readVoltage() + { + #ifdef ARDUINO_ARCH_ESP32 + // use calibrated millivolts analogread on esp32 (150 mV ~ 2450 mV default attentuation) and divide by 1000 to get from milivolts to volts and multiply by voltage multiplier and apply calibration value + return (analogReadMilliVolts(batteryPin) / 1000.0f) * bat->getVoltageMultiplier() + bat->getCalibration(); + #else + // use analog read on esp8266 ( 0V ~ 1V no attenuation options) and divide by ADC precision 1023 and multiply by voltage multiplier and apply calibration value + return (analogRead(batteryPin) / 1023.0f) * bat->getVoltageMultiplier() + bat->getCalibration(); + #endif + } public: - UsermodBattery() - { - bat = new Unkown(); - } //Functions called by WLED - /* + /** * setup() is called once at boot. WiFi is not yet connected at this point. * You can use it to initialize variables, sensors or similar. */ @@ -153,16 +143,15 @@ class UsermodBattery : public Usermod // voltage = readVoltage(); #endif - //this could also be handled with a factory class but for only 2 types it should be sufficient for now - if(bcfg.type == (batteryType)lipo) { + // plug in the right battery type + if(cfg.type == (batteryType)lipo) { bat = new Lipo(); - } else if(bcfg.type == (batteryType)lion) { + } else if(cfg.type == (batteryType)lion) { bat = new Lion(); - } else { - bat = new Unkown(); // nullObject pattern } - bat->update(bcfg); + // update the choosen battery type with configured values + bat->update(cfg); nextReadTime = millis() + readingInterval; lastReadTime = millis(); @@ -171,7 +160,7 @@ class UsermodBattery : public Usermod } - /* + /** * connected() is called every time the WiFi is (re)connected * Use it to initialize network interfaces */ @@ -199,28 +188,15 @@ class UsermodBattery : public Usermod if (batteryPin < 0) return; // nothing to read - initializing = false; - float voltage = -1.0f; - float rawValue = 0.0f; -#ifdef ARDUINO_ARCH_ESP32 - // use calibrated millivolts analogread on esp32 (150 mV ~ 2450 mV) - rawValue = analogReadMilliVolts(batteryPin); - // calculate the voltage - voltage = (rawValue / 1000.0f) + calibration; - // usually a voltage divider (50%) is used on ESP32, so we need to multiply by 2 - voltage *= 2.0f; -#else - // read battery raw input - rawValue = analogRead(batteryPin); - // calculate the voltage - voltage = ((rawValue / getAdcPrecision()) * bat->getMaxVoltage()) + bat->getCalibration(); -#endif - // filter with exponential smoothing because ADC in esp32 is fluctuating too much for a good single readout - voltage = voltage + alpha * (rawValue - voltage); + initializing = false; + float rawValue = readVoltage(); - bat->setVoltage(voltage); + // filter with exponential smoothing because ADC in esp32 is fluctuating too much for a good single readout + float filteredVoltage = bat->getVoltage() + alpha * (rawValue - bat->getVoltage()); + + bat->setVoltage(filteredVoltage); // translate battery voltage into percentage - bat->calculateAndSetLevel(voltage); + bat->calculateAndSetLevel(filteredVoltage); // Auto off -- Master power off if (autoOffEnabled && (autoOffThreshold >= bat->getLevel())) @@ -232,13 +208,13 @@ class UsermodBattery : public Usermod if (WLED_MQTT_CONNECTED) { char buf[64]; // buffer for snprintf() snprintf_P(buf, 63, PSTR("%s/voltage"), mqttDeviceTopic); - mqtt->publish(buf, 0, false, String(voltage).c_str()); + mqtt->publish(buf, 0, false, String(bat->getVoltage()).c_str()); } #endif } - /* + /** * addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API. * Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI. * Below it is shown how this could be used for e.g. a light sensor @@ -286,7 +262,7 @@ class UsermodBattery : public Usermod void addBatteryToJsonObject(JsonObject& battery, bool forJsonState) { - if(forJsonState) { battery[F("type")] = bcfg.type; } else {battery[F("type")] = (String)bcfg.type; } // has to be a String otherwise it won't get converted to a Dropdown + if(forJsonState) { battery[F("type")] = cfg.type; } else {battery[F("type")] = (String)cfg.type; } // has to be a String otherwise it won't get converted to a Dropdown battery[F("min-voltage")] = bat->getMinVoltage(); battery[F("max-voltage")] = bat->getMaxVoltage(); battery[F("calibration")] = bat->getCalibration(); @@ -305,10 +281,10 @@ class UsermodBattery : public Usermod void getUsermodConfigFromJsonObject(JsonObject& battery) { - getJsonValue(battery[F("type")], bcfg.type); - getJsonValue(battery[F("min-voltage")], bcfg.minVoltage); - getJsonValue(battery[F("max-voltage")], bcfg.maxVoltage); - getJsonValue(battery[F("calibration")], bcfg.calibration); + getJsonValue(battery[F("type")], cfg.type); + getJsonValue(battery[F("min-voltage")], cfg.minVoltage); + getJsonValue(battery[F("max-voltage")], cfg.maxVoltage); + getJsonValue(battery[F("calibration")], cfg.calibration); setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval); @@ -324,10 +300,10 @@ class UsermodBattery : public Usermod setLowPowerIndicatorDuration(lp[FPSTR(_duration)] | lowPowerIndicatorDuration); if(initDone) - bat->update(bcfg); + bat->update(cfg); } - /* + /** * addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object). * Values in the state object may be modified by connected clients */ @@ -345,7 +321,7 @@ class UsermodBattery : public Usermod } - /* + /** * readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object). * Values in the state object may be modified by connected clients */ @@ -365,7 +341,7 @@ class UsermodBattery : public Usermod */ - /* + /** * addToConfig() can be used to add custom persistent settings to the cfg.json file in the "um" (usermod) object. * It will be called by WLED when settings are actually saved (for example, LED settings are saved) * If you want to force saving the current state, use serializeConfig() in your loop(). @@ -449,7 +425,7 @@ class UsermodBattery : public Usermod } - /* + /** * readFromConfig() can be used to read back the custom settings you added with addToConfig(). * This is called by WLED when settings are loaded (currently this only happens immediately after boot, or after saving on the Usermod Settings page) * @@ -482,8 +458,8 @@ class UsermodBattery : public Usermod newBatteryPin = battery[F("pin")] | newBatteryPin; #endif // calculateTimeLeftEnabled = battery[F("time-left")] | calculateTimeLeftEnabled; - setMinBatteryVoltage(battery[F("min-voltage")] | minBatteryVoltage); - setMaxBatteryVoltage(battery[F("max-voltage")] | maxBatteryVoltage); + setMinBatteryVoltage(battery[F("min-voltage")] | bat->getMinVoltage()); + setMaxBatteryVoltage(battery[F("max-voltage")] | bat->getMaxVoltage()); setCalibration(battery[F("calibration")] | calibration); setReadingInterval(battery[FPSTR(_readInterval)] | readingInterval); @@ -515,7 +491,7 @@ class UsermodBattery : public Usermod return !battery[FPSTR(_readInterval)].isNull(); } - /* + /** * TBD: Generate a preset sample for low power indication * a button on the config page would be cool, currently not possible */ @@ -554,7 +530,7 @@ class UsermodBattery : public Usermod * */ - /* + /** * getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!). * This could be used in the future for the system to determine whether your usermod is installed. */ @@ -569,7 +545,7 @@ class UsermodBattery : public Usermod return readingInterval; } - /* + /** * minimum repetition is 3000ms (3s) */ void setReadingInterval(unsigned long newReadingInterval) @@ -577,100 +553,78 @@ class UsermodBattery : public Usermod readingInterval = max((unsigned long)3000, newReadingInterval); } - /* - * Get the choosen adc precision - * esp8266 = 10bit resolution = 1024.0f - * esp32 = 12bit resolution = 4095.0f - */ - float getAdcPrecision() - { - #ifdef ARDUINO_ARCH_ESP32 - // esp32 - return 4096.0f; - #else - // esp8266 - return 1024.0f; - #endif - } - - /* - - /* + /** * Get lowest configured battery voltage */ float getMinBatteryVoltage() { - return minBatteryVoltage; + return bat->getMinVoltage(); } - /* + /** * Set lowest battery voltage - * can't be below 0 volt + * cant be below 0 volt */ void setMinBatteryVoltage(float voltage) { - minBatteryVoltage = max(0.0f, voltage); + bat->setMinVoltage(voltage); } - /* + /** * Get highest configured battery voltage */ float getMaxBatteryVoltage() { - return maxBatteryVoltage; + return bat->getMaxVoltage(); } - /* + /** * Set highest battery voltage * can't be below minBatteryVoltage */ void setMaxBatteryVoltage(float voltage) { - #ifdef USERMOD_BATTERY_USE_LIPO - maxBatteryVoltage = max(getMinBatteryVoltage()+0.7f, voltage); - #else - maxBatteryVoltage = max(getMinBatteryVoltage()+1.0f, voltage); - #endif + bat->setMaxVoltage(voltage); } - /* + /** * Get the calculated voltage * formula: (adc pin value / adc precision * max voltage) + calibration */ float getVoltage() { - return voltage; + return bat->getVoltage(); } - /* + /** * Get the mapped battery level (0 - 100) based on voltage * important: voltage can drop when a load is applied, so its only an estimate */ int8_t getBatteryLevel() { - return batteryLevel; + return bat->getLevel(); } - /* + /** * Get the configured calibration value * a offset value to fine-tune the calculated voltage. */ float getCalibration() { - return calibration; + return bat->getCalibration(); } - /* + /** * Set the voltage calibration offset value * a offset value to fine-tune the calculated voltage. */ void setCalibration(float offset) { - calibration = offset; + bat->setCalibration(offset); } - /* + /** * Get auto-off feature enabled status * is auto-off enabled, true/false */ @@ -679,7 +633,7 @@ class UsermodBattery : public Usermod return autoOffEnabled; } - /* + /** * Set auto-off feature status */ void setAutoOffEnabled(bool enabled) @@ -687,7 +641,7 @@ class UsermodBattery : public Usermod autoOffEnabled = enabled; } - /* + /** * Get auto-off threshold in percent (0-100) */ int8_t getAutoOffThreshold() @@ -695,7 +649,7 @@ class UsermodBattery : public Usermod return autoOffThreshold; } - /* + /** * Set auto-off threshold in percent (0-100) */ void setAutoOffThreshold(int8_t threshold) @@ -705,7 +659,7 @@ class UsermodBattery : public Usermod autoOffThreshold = lowPowerIndicatorEnabled /*&& autoOffEnabled*/ ? min(lowPowerIndicatorThreshold-1, (int)autoOffThreshold) : autoOffThreshold; } - /* + /** * Get low-power-indicator feature enabled status * is the low-power-indicator enabled, true/false */ @@ -714,7 +668,7 @@ class UsermodBattery : public Usermod return lowPowerIndicatorEnabled; } - /* + /** * Set low-power-indicator feature status */ void setLowPowerIndicatorEnabled(bool enabled) @@ -722,7 +676,7 @@ class UsermodBattery : public Usermod lowPowerIndicatorEnabled = enabled; } - /* + /** * Get low-power-indicator preset to activate when low power is detected */ int8_t getLowPowerIndicatorPreset() @@ -730,7 +684,7 @@ class UsermodBattery : public Usermod return lowPowerIndicatorPreset; } - /* + /** * Set low-power-indicator preset to activate when low power is detected */ void setLowPowerIndicatorPreset(int8_t presetId) @@ -748,7 +702,7 @@ class UsermodBattery : public Usermod return lowPowerIndicatorThreshold; } - /* + /** * Set low-power-indicator threshold in percent (0-100) */ void setLowPowerIndicatorThreshold(int8_t threshold) @@ -758,7 +712,7 @@ class UsermodBattery : public Usermod lowPowerIndicatorThreshold = autoOffEnabled /*&& lowPowerIndicatorEnabled*/ ? max(autoOffThreshold+1, (int)lowPowerIndicatorThreshold) : max(5, (int)lowPowerIndicatorThreshold); } - /* + /** * Get low-power-indicator duration in seconds */ int8_t getLowPowerIndicatorDuration() @@ -766,7 +720,7 @@ class UsermodBattery : public Usermod return lowPowerIndicatorDuration; } - /* + /** * Set low-power-indicator duration in seconds */ void setLowPowerIndicatorDuration(int8_t duration) @@ -774,7 +728,7 @@ class UsermodBattery : public Usermod lowPowerIndicatorDuration = duration; } - /* + /** * Get low-power-indicator status when the indication is done thsi returns true */ bool getLowPowerIndicatorDone() From 26ab1bfd4f54d2107aba37c4e9819f8fbdce00d1 Mon Sep 17 00:00:00 2001 From: skinnyquiver Date: Mon, 4 Dec 2023 19:17:15 -0600 Subject: [PATCH 017/441] [Feat] Adds new esp32s3dev_16MB_PSRAM_opi dev board to work with LilyGo T7_s3 ESP32-S3-WROOM-1-N16R8 --- platformio.ini | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/platformio.ini b/platformio.ini index f3caa585..b7cd1068 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,8 +11,8 @@ # 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, esp32dev_audioreactive, lolin_s2_mini, esp32c3dev, esp32s3dev_8MB, esp32s3dev_8MB_PSRAM_opi - +default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, esp32dev, esp32_eth, esp32dev_audioreactive, lolin_s2_mini, esp32c3dev, esp32s3dev_8MB, esp32s3dev_8MB_PSRAM_opi, esp32s3dev_16MB_PSRAM_opi +; default_envs = esp32s3dev_16MB_PSRAM_opi # Release binaries ; default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, esp32dev, esp32_eth, lolin_s2_mini, esp32c3dev, esp32s3dev_8MB @@ -524,6 +524,29 @@ board_build.f_flash = 80000000L board_build.flash_mode = qio monitor_filters = esp32_exception_decoder +[env:esp32s3dev_16MB_PSRAM_opi] +board = esp32-s3-devkitc-1 +board_build.arduino.memory_type = qio_opi +platform = ${esp32s3.platform} +platform_packages = ${esp32s3.platform_packages} +upload_speed = 921600 +framework = arduino + +# Configure options for the N16R8V variant +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=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 + -D BOARD_HAS_PSRAM +lib_deps = ${esp32s3.lib_deps} +board_build.partitions = tools/WLED_ESP32_16MB.CSV +board_upload.flash_size = 16MB +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 From aeb9e2ad9fd79f1352475185a2927025c6192836 Mon Sep 17 00:00:00 2001 From: skinnyquiver Date: Mon, 4 Dec 2023 19:24:35 -0600 Subject: [PATCH 018/441] [fix] Removes additional default envs line --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index b7cd1068..fd5a2770 100644 --- a/platformio.ini +++ b/platformio.ini @@ -12,7 +12,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, esp32dev_audioreactive, lolin_s2_mini, esp32c3dev, esp32s3dev_8MB, esp32s3dev_8MB_PSRAM_opi, esp32s3dev_16MB_PSRAM_opi -; default_envs = esp32s3dev_16MB_PSRAM_opi + # Release binaries ; default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, esp32dev, esp32_eth, lolin_s2_mini, esp32c3dev, esp32s3dev_8MB From 90d696d8263a8d47a8b73962dc794b11ee709b87 Mon Sep 17 00:00:00 2001 From: David Rasch Date: Tue, 5 Dec 2023 10:54:32 -0500 Subject: [PATCH 019/441] fix(esp32c3-2mb): correct flash size for c3 board with only 2MB --- platformio.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/platformio.ini b/platformio.ini index f3caa585..7d65ac07 100644 --- a/platformio.ini +++ b/platformio.ini @@ -642,6 +642,8 @@ upload_speed = 115200 lib_deps = ${esp32c3.lib_deps} board_build.partitions = tools/WLED_ESP32_2MB_noOTA.csv board_build.flash_mode = dio +board_upload.flash_size = 2MB +board_upload.maximum_size = 2097152 [env:wemos_shield_esp32] board = esp32dev From 84802d9065789d8f2938648ecbf617780e5a6e82 Mon Sep 17 00:00:00 2001 From: skinnyquiver Date: Tue, 5 Dec 2023 10:36:31 -0600 Subject: [PATCH 020/441] [fix] Uses extends as per softhack007 comment --- platformio.ini | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/platformio.ini b/platformio.ini index fd5a2770..21ca6ea9 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, esp32dev_audioreactive, lolin_s2_mini, esp32c3dev, esp32s3dev_8MB, esp32s3dev_8MB_PSRAM_opi, esp32s3dev_16MB_PSRAM_opi +default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, esp32dev, esp32_eth, esp32dev_audioreactive, 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 @@ -42,6 +42,7 @@ default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, esp32dev, esp32_eth, esp32d ; default_envs = esp32s2_saola ; default_envs = esp32c3dev ; default_envs = lolin_s2_mini +; default_envs = esp32s3dev_16MB_PSRAM_opi src_dir = ./wled00 data_dir = ./wled00/data @@ -525,27 +526,9 @@ board_build.flash_mode = qio monitor_filters = esp32_exception_decoder [env:esp32s3dev_16MB_PSRAM_opi] -board = esp32-s3-devkitc-1 -board_build.arduino.memory_type = qio_opi -platform = ${esp32s3.platform} -platform_packages = ${esp32s3.platform_packages} -upload_speed = 921600 -framework = arduino - -# Configure options for the N16R8V variant -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=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 - -D BOARD_HAS_PSRAM -lib_deps = ${esp32s3.lib_deps} -board_build.partitions = tools/WLED_ESP32_16MB.CSV +extends = env:esp32s3dev_8MB_PSRAM_opi +board_build.partitions = tools/WLED_ESP32_16MB.csv board_upload.flash_size = 16MB -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) From 809a294f9d80463b8073d30c5c4978ae2924c9cd Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Fri, 22 Dec 2023 15:43:31 +0100 Subject: [PATCH 021/441] Fix Pixel Magic button. --- wled00/data/index.htm | 2 +- wled00/html_ui.h | 2665 ++++++++++++++++++++--------------------- 2 files changed, 1333 insertions(+), 1334 deletions(-) diff --git a/wled00/data/index.htm b/wled00/data/index.htm index e6ce0489..7665a6e5 100644 --- a/wled00/data/index.htm +++ b/wled00/data/index.htm @@ -200,7 +200,7 @@
- +
diff --git a/wled00/html_ui.h b/wled00/html_ui.h index 94186957..ededcc1e 100644 --- a/wled00/html_ui.h +++ b/wled00/html_ui.h @@ -7,9 +7,9 @@ */ // Autogenerated from wled00/data/index.htm, do not edit!! -const uint16_t PAGE_index_L = 32025; +const uint16_t PAGE_index_L = 32008; const uint8_t PAGE_index[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xcc, 0xbd, 0xe9, 0x76, 0xe2, 0xca, + 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, 0x8d, 0x0c, 0x62, 0x34, 0x43, 0x61, 0x5f, 0x8c, 0xe7, 0xd9, 0xc6, 0x73, 0xdd, 0x5a, 0xb7, 0x04, 0x24, 0x20, 0x5b, 0x48, 0xb2, 0x24, 0x06, 0x9b, 0xe2, 0x3e, 0x46, 0xaf, 0xd5, 0x2f, 0xd0, 0x3f, 0xba, 0xdf, 0xaa, 0x9f, 0xa4, 0x23, @@ -680,1335 +680,1334 @@ const uint8_t PAGE_index[] PROGMEM = { 0x09, 0xf5, 0x92, 0x21, 0x9f, 0x1a, 0xe7, 0x17, 0x1a, 0xe2, 0xcc, 0x86, 0x21, 0x3d, 0xcf, 0x73, 0x9f, 0x83, 0x0c, 0xf7, 0xc8, 0x2c, 0x9d, 0x4e, 0x0b, 0x0b, 0x22, 0x3b, 0x85, 0x61, 0x41, 0x84, 0xe7, 0xb7, 0xb8, 0x88, 0xfd, 0x99, 0x1e, 0x87, 0x53, 0x97, 0x07, 0x8e, 0xcc, 0x63, 0x48, 0x9b, - 0x4d, 0x34, 0xcb, 0x5f, 0x3c, 0x6c, 0xb8, 0xc4, 0x48, 0x51, 0x67, 0x4a, 0x5f, 0xed, 0xdc, 0x80, - 0x90, 0x18, 0x73, 0xea, 0x10, 0xa1, 0x7a, 0xff, 0x98, 0xc5, 0xa3, 0xfa, 0xb5, 0xbf, 0xd1, 0xf7, - 0x07, 0x47, 0x10, 0x1d, 0x98, 0xba, 0xf4, 0xc0, 0x19, 0xba, 0x47, 0x10, 0x4b, 0xa0, 0x61, 0x67, - 0x4d, 0x65, 0x25, 0xba, 0x08, 0xff, 0x3a, 0x34, 0xee, 0x9a, 0xb2, 0x77, 0x81, 0x45, 0xd6, 0xf5, - 0x91, 0xa6, 0x49, 0x08, 0x98, 0xd6, 0x72, 0x60, 0x67, 0xeb, 0x93, 0xb4, 0x45, 0x86, 0xc6, 0x98, - 0x1c, 0x39, 0x64, 0x98, 0x10, 0x27, 0x1a, 0x41, 0x2a, 0x98, 0x8a, 0x49, 0xd8, 0xfa, 0x5e, 0x47, - 0xc4, 0x76, 0x8e, 0x6d, 0x43, 0x4f, 0xcc, 0xac, 0x21, 0x02, 0x5d, 0xfd, 0x22, 0x87, 0xbf, 0x38, - 0xcb, 0x13, 0x8d, 0x94, 0x2b, 0xca, 0x12, 0x9f, 0x80, 0xdd, 0xc1, 0x08, 0xd7, 0x56, 0x23, 0x5c, - 0xce, 0x6f, 0x2e, 0x61, 0x33, 0x11, 0x7a, 0xdf, 0x03, 0xb9, 0xb1, 0xe3, 0xd8, 0x22, 0x7f, 0x36, - 0x12, 0x63, 0xca, 0xee, 0x4d, 0xc5, 0x38, 0x7e, 0xdf, 0x65, 0x5c, 0x0a, 0x3f, 0x2c, 0xe2, 0x72, - 0xfc, 0x35, 0xd6, 0xa0, 0x30, 0x74, 0x0f, 0x55, 0x96, 0xb2, 0x14, 0xb7, 0x59, 0xf4, 0x39, 0xf8, - 0xf7, 0xd9, 0x0b, 0xf3, 0x7d, 0x5d, 0xc1, 0x5d, 0xbc, 0x02, 0x52, 0xff, 0xa8, 0x9b, 0x10, 0x99, - 0xa7, 0xa3, 0x2d, 0x26, 0xd3, 0x14, 0x30, 0xfc, 0x70, 0x31, 0x7e, 0xc5, 0x18, 0x32, 0x14, 0xd8, - 0x37, 0x58, 0x2b, 0x6d, 0x6d, 0x64, 0xd5, 0xbf, 0x2d, 0x2d, 0xce, 0xa6, 0xd7, 0xaf, 0xf1, 0x3f, - 0xcb, 0xb3, 0x38, 0xaa, 0x5b, 0x0a, 0x10, 0x5b, 0x98, 0x09, 0x11, 0xbd, 0xde, 0x70, 0x08, 0xee, - 0xba, 0x0f, 0x7b, 0xb2, 0x7b, 0x67, 0x90, 0x1e, 0xfb, 0x8b, 0x52, 0x83, 0x8b, 0xa6, 0x7f, 0x90, - 0xf9, 0xed, 0x3f, 0xfc, 0xff, 0xc3, 0xf6, 0x02, 0xfd, 0xda, 0x0e, 0xd1, 0xb1, 0x8b, 0x39, 0x0f, - 0x16, 0xf6, 0x1e, 0x0c, 0x28, 0x28, 0x73, 0x89, 0x9a, 0xbd, 0x07, 0x16, 0x73, 0xb7, 0xa4, 0x17, - 0x3b, 0xe8, 0xb4, 0x65, 0xf7, 0xf3, 0x8d, 0x72, 0x2d, 0x4c, 0xb5, 0xb4, 0x4c, 0xdb, 0x98, 0xba, - 0x02, 0x54, 0x4f, 0x73, 0xea, 0xa2, 0x5f, 0x34, 0x64, 0xd8, 0x60, 0x1d, 0xec, 0x4f, 0x3d, 0x3a, - 0x08, 0x9b, 0x21, 0x7c, 0x2f, 0x4e, 0x14, 0x9f, 0xbc, 0x71, 0x7b, 0x03, 0x76, 0xd1, 0x1e, 0x80, - 0x29, 0xef, 0x8a, 0xc2, 0x22, 0x90, 0x02, 0xa5, 0x02, 0x80, 0xb4, 0x9c, 0xcb, 0x95, 0x96, 0xc2, - 0xb9, 0xc6, 0x03, 0x4a, 0x4b, 0xf2, 0xa6, 0x87, 0xbf, 0x0c, 0xe5, 0x5a, 0x14, 0xcc, 0x00, 0xca, - 0x6c, 0x2c, 0x94, 0x14, 0xc0, 0x4a, 0x21, 0xe7, 0x03, 0xb8, 0xb6, 0x0a, 0x93, 0xb4, 0xe4, 0x27, - 0x00, 0x5c, 0xfb, 0x3c, 0x1e, 0x03, 0x00, 0x73, 0x4b, 0x00, 0x84, 0xe5, 0x52, 0x29, 0xe5, 0x3f, - 0x37, 0xd5, 0xb4, 0xe0, 0x4a, 0x00, 0xd7, 0xfe, 0xea, 0x44, 0x07, 0x00, 0xde, 0x19, 0xcb, 0xc9, - 0xb1, 0x52, 0xce, 0x17, 0x3e, 0x07, 0x21, 0x16, 0xfc, 0x1f, 0x23, 0xc5, 0x7d, 0xd8, 0xdb, 0x96, - 0x4d, 0x33, 0xf4, 0x5c, 0xfc, 0x1c, 0x1d, 0xd2, 0x92, 0xff, 0x14, 0x1d, 0x46, 0x8f, 0xf5, 0x28, - 0x43, 0x90, 0x63, 0x2c, 0x76, 0x51, 0xe6, 0xcb, 0x9f, 0xc3, 0xaf, 0xf1, 0x32, 0x36, 0x0c, 0x92, - 0xbc, 0x13, 0x4f, 0xcc, 0xce, 0xe7, 0x8a, 0x1f, 0x9f, 0xb0, 0xf3, 0x4a, 0x8b, 0x7b, 0x32, 0x68, - 0x12, 0x34, 0x78, 0xad, 0x34, 0xfb, 0xd1, 0x32, 0xae, 0x45, 0xf4, 0x33, 0xc7, 0xee, 0xff, 0xa8, - 0x59, 0xf4, 0x93, 0xa7, 0xee, 0xcc, 0x5c, 0x18, 0x8c, 0x8b, 0xca, 0x00, 0x01, 0x7a, 0x43, 0x06, - 0x44, 0x57, 0x2e, 0xb0, 0x71, 0x58, 0x71, 0xf6, 0x43, 0x0e, 0x3d, 0xd9, 0xbf, 0x38, 0x41, 0xfc, - 0xfc, 0x50, 0x10, 0xa8, 0xa8, 0x4d, 0x77, 0xba, 0x82, 0x5c, 0xf9, 0xf4, 0x04, 0x05, 0x00, 0x1c, - 0xe1, 0xe6, 0x64, 0xab, 0xce, 0x5b, 0xec, 0x79, 0x10, 0x37, 0x49, 0x7e, 0xc1, 0xbf, 0xea, 0x1e, - 0x21, 0xff, 0xaf, 0x75, 0x8f, 0x58, 0x66, 0xe6, 0xe6, 0xb1, 0x4e, 0x31, 0x97, 0xf5, 0x27, 0x4a, - 0xf5, 0x86, 0xb6, 0xf4, 0x8c, 0x9c, 0xd6, 0xca, 0x45, 0x0f, 0x00, 0xdc, 0xad, 0x67, 0xe5, 0x8c, - 0x85, 0x74, 0x82, 0xbf, 0x78, 0xe2, 0xd2, 0xcc, 0xc6, 0x1e, 0x46, 0xf1, 0x87, 0x06, 0x23, 0xdb, - 0x31, 0x86, 0xd4, 0xac, 0xf2, 0xd7, 0x96, 0xce, 0x5a, 0xbc, 0x6f, 0xc3, 0x5f, 0x31, 0xa0, 0xbb, - 0xf3, 0xb1, 0xf6, 0xb7, 0x27, 0x24, 0x32, 0x1f, 0x39, 0xa0, 0x63, 0x36, 0x1e, 0x21, 0xbb, 0x7a, - 0x22, 0xf2, 0x91, 0x45, 0xc3, 0xcd, 0xc3, 0xda, 0xea, 0x89, 0xf0, 0x3c, 0xb3, 0xfe, 0x22, 0x13, - 0x6b, 0xe6, 0x3e, 0xe0, 0x60, 0xee, 0x3c, 0xe4, 0xfe, 0x19, 0x1e, 0x26, 0xff, 0x0f, 0x72, 0xb0, - 0x4f, 0x4c, 0x44, 0x5e, 0xdc, 0x72, 0xe7, 0x21, 0xb7, 0x7a, 0x1e, 0x0a, 0x7f, 0x7b, 0x41, 0xc8, - 0xa4, 0xfc, 0xb7, 0x16, 0x44, 0xfe, 0x93, 0x0b, 0x22, 0xff, 0x99, 0x05, 0x91, 0xcf, 0xfe, 0x6f, - 0xbd, 0x1e, 0x0a, 0xc1, 0x7a, 0xc8, 0x2f, 0x9b, 0x87, 0xde, 0xd4, 0x30, 0x03, 0x1d, 0xc6, 0xbd, - 0x86, 0x4d, 0xf5, 0xb4, 0x90, 0x5c, 0x05, 0x19, 0x72, 0x54, 0xa4, 0x32, 0x38, 0xe1, 0x39, 0xde, - 0x99, 0xd0, 0xb5, 0xab, 0x7d, 0xc0, 0x51, 0xa1, 0x6d, 0x77, 0x2f, 0xdc, 0x6a, 0xd2, 0x86, 0x83, - 0xc5, 0x1b, 0x4c, 0x1f, 0xed, 0xf2, 0xc2, 0x77, 0x94, 0xe3, 0xe4, 0xa1, 0xd0, 0xec, 0x5d, 0xd0, - 0x01, 0x24, 0xb2, 0x12, 0x3d, 0x00, 0x74, 0x6f, 0x5d, 0xfd, 0x25, 0x51, 0x6d, 0x2d, 0x3c, 0xea, - 0x6c, 0x44, 0x48, 0xfb, 0x70, 0xd0, 0xf9, 0x42, 0x9b, 0x1b, 0xf4, 0xda, 0xb2, 0x69, 0xf2, 0x06, - 0x9d, 0xf5, 0x06, 0x9d, 0x5b, 0x3a, 0xe8, 0x9c, 0xb8, 0x28, 0xeb, 0xc7, 0x0d, 0x3a, 0xf7, 0xe9, - 0x41, 0xaf, 0xad, 0x12, 0xa1, 0x01, 0xb2, 0xdc, 0x5f, 0x19, 0x34, 0x53, 0x92, 0x0b, 0x9d, 0x0f, - 0xa6, 0x9a, 0x1f, 0x74, 0xce, 0x1b, 0x74, 0x3e, 0x32, 0xe8, 0xb5, 0x60, 0xd4, 0xf9, 0xc5, 0xa9, - 0x8e, 0x1b, 0x74, 0x7e, 0xc9, 0xa0, 0x3f, 0xa5, 0xd8, 0x2c, 0xd5, 0x88, 0x11, 0x8c, 0x16, 0xe9, - 0x0f, 0x31, 0xac, 0xf9, 0x47, 0xd6, 0x1e, 0xf7, 0xee, 0x47, 0x54, 0x09, 0x8f, 0xb0, 0x3b, 0x76, - 0x1d, 0x84, 0x63, 0x77, 0xec, 0x6b, 0x4a, 0xe2, 0xd6, 0xb2, 0xa2, 0xb9, 0xe5, 0x26, 0x47, 0xdb, - 0x5d, 0x38, 0x96, 0x0d, 0x6f, 0x9c, 0x44, 0x67, 0x01, 0xc8, 0x54, 0x9a, 0xbb, 0x26, 0x80, 0x20, - 0xc1, 0x76, 0x07, 0x10, 0x63, 0x3d, 0xdf, 0xba, 0x09, 0x62, 0x02, 0x84, 0xbc, 0x20, 0x1d, 0xc7, - 0x43, 0x3b, 0xbb, 0x23, 0x11, 0xf0, 0x37, 0xca, 0xf0, 0x4a, 0xc5, 0x74, 0xd1, 0x73, 0xf6, 0x92, - 0xd3, 0xd9, 0x80, 0xcf, 0xa5, 0x37, 0x81, 0xfa, 0xf5, 0xb6, 0x6d, 0xd6, 0x98, 0x6f, 0x34, 0x9a, - 0xbf, 0xa8, 0x47, 0x29, 0xfd, 0x18, 0x99, 0x4f, 0x4e, 0x2e, 0x09, 0xd1, 0x02, 0x91, 0x61, 0x5f, - 0x5a, 0x08, 0xf4, 0x87, 0xd8, 0x36, 0x5f, 0x35, 0x71, 0xc5, 0x99, 0x4a, 0x57, 0xdc, 0x72, 0x1b, - 0xe2, 0x4e, 0x53, 0x96, 0x19, 0xd4, 0xd8, 0x25, 0x9e, 0x78, 0x83, 0x5a, 0xac, 0x3d, 0x6d, 0x6d, - 0x89, 0xbd, 0x9e, 0xce, 0x7f, 0xf2, 0x9b, 0xb0, 0xc4, 0x58, 0xef, 0x66, 0xc7, 0x88, 0x17, 0xbc, - 0xdd, 0xeb, 0x73, 0x66, 0xaf, 0xb5, 0x4f, 0xda, 0xea, 0x17, 0x4c, 0xf5, 0x14, 0x88, 0x88, 0xad, - 0xca, 0x55, 0xb1, 0xc3, 0x06, 0x78, 0x86, 0x3e, 0x24, 0xa3, 0x80, 0x9e, 0x97, 0xed, 0x1e, 0xe6, - 0x47, 0x44, 0xbd, 0xd4, 0x53, 0x98, 0x7e, 0x88, 0xd1, 0x70, 0xf9, 0x82, 0x5b, 0xc7, 0xf3, 0x61, - 0x0f, 0x8a, 0x68, 0xaa, 0xfe, 0xc2, 0x1f, 0x1d, 0x19, 0x26, 0xd1, 0x6f, 0x94, 0x76, 0x62, 0xb9, - 0xff, 0xba, 0xb7, 0xe5, 0xc4, 0xfa, 0xaf, 0x33, 0x47, 0xe4, 0x78, 0xcf, 0xf9, 0x85, 0x4e, 0xd7, - 0x16, 0x7a, 0xcd, 0x7e, 0xc2, 0x6b, 0x7e, 0xb1, 0x53, 0xd7, 0x68, 0xbc, 0xf6, 0xc9, 0x6e, 0x17, - 0x7a, 0xcd, 0x2d, 0xbd, 0x1d, 0xe1, 0x6f, 0x35, 0xb1, 0xb7, 0x40, 0xfc, 0xd5, 0xff, 0x37, 0x47, - 0x9b, 0x5f, 0x36, 0x5a, 0x9f, 0xd7, 0xc7, 0xde, 0xb1, 0x61, 0xe4, 0xb3, 0xb6, 0xfa, 0x8e, 0x80, - 0xfb, 0x71, 0x96, 0xf0, 0x21, 0x3d, 0xbb, 0x45, 0xa4, 0xa0, 0x49, 0x35, 0x6c, 0x03, 0xb6, 0xf6, - 0xf0, 0x8b, 0x3c, 0x37, 0x98, 0x85, 0x77, 0xc6, 0x92, 0x8b, 0xd5, 0xfc, 0x08, 0x67, 0xab, 0xae, - 0x7a, 0x44, 0xea, 0xe0, 0xa5, 0x4e, 0x7f, 0x41, 0xd0, 0x5b, 0xea, 0x31, 0x34, 0x18, 0x9c, 0x6d, - 0x08, 0xf4, 0xcb, 0x38, 0x9f, 0xbd, 0xbf, 0x22, 0xd0, 0xf8, 0x47, 0x0c, 0x5f, 0x78, 0x80, 0xb2, - 0x16, 0x39, 0x5f, 0xf0, 0x81, 0x18, 0xf6, 0xd9, 0x21, 0xef, 0xb0, 0xef, 0xd5, 0x9f, 0xa8, 0xa2, - 0xa0, 0x68, 0x8e, 0xeb, 0x82, 0x8f, 0xd6, 0x9e, 0x2a, 0xfd, 0xc2, 0x48, 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, 0x45, 0x3c, 0x1b, 0x8b, 0xba, 0x04, 0x8f, 0xc3, 0x9c, 0x2b, 0xe4, 0x21, 0x13, - 0xbb, 0xa7, 0xba, 0x77, 0x7e, 0x79, 0xda, 0xe1, 0x4f, 0x9e, 0xe8, 0x86, 0xda, 0x03, 0xba, 0x1e, - 0xac, 0x3c, 0x02, 0x8b, 0x69, 0x25, 0x42, 0x81, 0x47, 0x3a, 0x30, 0x48, 0xbd, 0x43, 0x04, 0x3c, - 0x83, 0xf8, 0x8b, 0x6d, 0x79, 0xe7, 0x79, 0xb8, 0x3a, 0x13, 0xfe, 0x31, 0x1e, 0x53, 0x4c, 0xc4, - 0xa4, 0x24, 0xfe, 0x97, 0x4d, 0x34, 0xf4, 0xc0, 0xd9, 0xba, 0xa5, 0x49, 0xf4, 0x9e, 0x5f, 0xcc, - 0xf5, 0xa0, 0xb8, 0x3e, 0xa8, 0x28, 0x81, 0xab, 0x36, 0x2c, 0x4d, 0x74, 0xf4, 0x1e, 0x95, 0x23, - 0xd8, 0xf8, 0xdb, 0x86, 0xe1, 0x44, 0x1a, 0xf5, 0x8f, 0x83, 0x29, 0x72, 0x79, 0xc1, 0x6f, 0x20, - 0x6e, 0x9d, 0x81, 0x0a, 0x21, 0x4c, 0x54, 0x67, 0xe0, 0xe6, 0x30, 0xe7, 0x00, 0xc5, 0x72, 0x70, - 0x4d, 0xc0, 0x22, 0x2e, 0x17, 0x6a, 0xb0, 0x36, 0xf6, 0xf7, 0xe4, 0xbd, 0x9a, 0xbb, 0xb9, 0xac, - 0x09, 0xed, 0x37, 0xa1, 0xa1, 0x5a, 0x1d, 0xc3, 0x30, 0x5e, 0x54, 0x42, 0x2f, 0xe4, 0x3a, 0x03, - 0x22, 0x7c, 0x57, 0x04, 0x7a, 0x76, 0x29, 0x0e, 0x1c, 0xc7, 0xb4, 0xab, 0x99, 0x0c, 0x1e, 0x10, - 0xa6, 0x41, 0x87, 0xea, 0x18, 0x23, 0xcb, 0x26, 0x69, 0xf4, 0x9f, 0x31, 0x33, 0x20, 0xb6, 0x28, - 0x16, 0xe0, 0xa5, 0x2e, 0xfe, 0x97, 0x7b, 0x5f, 0x65, 0x8d, 0x5e, 0x75, 0xec, 0x18, 0xc3, 0xe1, - 0x48, 0xa7, 0x96, 0x19, 0x65, 0x6b, 0xd9, 0x36, 0xa6, 0xb3, 0x5b, 0x62, 0xff, 0x2e, 0x2f, 0x58, - 0x76, 0xab, 0xec, 0xb3, 0xcc, 0x00, 0x3f, 0x89, 0x25, 0x6e, 0x51, 0xb0, 0x55, 0x97, 0x54, 0xec, - 0x05, 0xea, 0xd6, 0x17, 0xa9, 0xdb, 0xf5, 0x41, 0xf2, 0x0e, 0xaf, 0x97, 0x7c, 0x73, 0x53, 0xfc, - 0x2c, 0xd5, 0xa2, 0x14, 0xe0, 0x0f, 0x65, 0x91, 0xf2, 0xe3, 0xa5, 0xe5, 0xa1, 0x36, 0xc6, 0x63, - 0x81, 0xb5, 0x28, 0x0e, 0x7d, 0xb8, 0x59, 0xbe, 0x0b, 0xe3, 0x62, 0xf0, 0x19, 0x7c, 0x8e, 0x1d, - 0x59, 0xd4, 0x9b, 0x1d, 0xef, 0xb8, 0x2e, 0x4e, 0x55, 0x04, 0xe1, 0x83, 0x51, 0x9f, 0x44, 0x0e, - 0xd3, 0x91, 0x48, 0xd7, 0xfc, 0x66, 0x34, 0x60, 0x12, 0xdb, 0x01, 0x6f, 0xc0, 0x7f, 0x6b, 0xc2, - 0x8d, 0x21, 0x8c, 0x6c, 0x22, 0xb4, 0x47, 0xaa, 0x86, 0xa1, 0x77, 0x05, 0xc2, 0x76, 0x6e, 0x89, - 0xa6, 0xa2, 0x9c, 0x04, 0x5d, 0x5b, 0x20, 0xc1, 0xba, 0x17, 0xd9, 0x05, 0xd8, 0x6f, 0x60, 0x45, - 0xb2, 0xba, 0x8f, 0xc6, 0x48, 0xe8, 0x40, 0x19, 0x8b, 0x38, 0x23, 0x4b, 0x17, 0xd0, 0x7b, 0x8b, - 0x00, 0x17, 0x57, 0x87, 0x84, 0x9e, 0xee, 0x22, 0x6d, 0x63, 0x64, 0x0e, 0x1b, 0xaf, 0xf3, 0x22, - 0x55, 0xe3, 0xb7, 0x71, 0x00, 0xf9, 0xf4, 0x19, 0x85, 0x52, 0xbc, 0x6a, 0x0c, 0xc4, 0x6a, 0xe9, - 0xc4, 0x4a, 0xaf, 0xb1, 0x15, 0xb5, 0x30, 0x59, 0x21, 0xdf, 0x24, 0xe7, 0xd4, 0xb0, 0xa8, 0x44, - 0x72, 0xe1, 0x41, 0x65, 0x50, 0x67, 0xd3, 0x15, 0x4b, 0x7e, 0xb1, 0x7e, 0x8e, 0xaf, 0x3f, 0xd2, - 0xf1, 0x86, 0xb9, 0x45, 0x97, 0xba, 0xdf, 0x0e, 0xb7, 0xb8, 0xd7, 0x82, 0xd5, 0xbd, 0xb6, 0x6f, - 0x58, 0x30, 0x7c, 0xdb, 0x11, 0x4c, 0x62, 0xa1, 0xe3, 0x19, 0xd2, 0xaa, 0x24, 0xa8, 0xa0, 0x44, - 0xe0, 0xe7, 0xf4, 0x70, 0xd1, 0x11, 0x1a, 0x63, 0x04, 0xf0, 0x40, 0xf1, 0x61, 0xf4, 0x7a, 0xee, - 0xb0, 0x01, 0x2d, 0x43, 0x44, 0x82, 0x0d, 0xab, 0x17, 0x58, 0xe1, 0x64, 0x40, 0x74, 0x1a, 0xf0, - 0x02, 0x70, 0x01, 0x68, 0x4e, 0x2f, 0x78, 0x0f, 0xab, 0xc1, 0xb4, 0x23, 0xce, 0xc4, 0x98, 0x89, - 0x5e, 0x18, 0x96, 0x9c, 0x0c, 0x26, 0x7f, 0xcd, 0x9f, 0xfd, 0xef, 0xee, 0xc5, 0xe6, 0xb5, 0x31, - 0xa0, 0x5e, 0x33, 0x3a, 0xaa, 0x29, 0x4d, 0xee, 0x25, 0xde, 0x33, 0x41, 0x9a, 0xd8, 0x52, 0x07, - 0x2f, 0xa2, 0x49, 0xd4, 0x8c, 0x63, 0x4b, 0x0e, 0x73, 0x32, 0x40, 0x67, 0x85, 0xfa, 0x97, 0x2c, - 0xfe, 0x98, 0xb0, 0x96, 0x0d, 0xc6, 0x8b, 0xaa, 0xa2, 0xa4, 0xda, 0x17, 0x3a, 0x66, 0xe8, 0x5a, - 0x03, 0x7f, 0x54, 0xfb, 0x74, 0xcc, 0x7e, 0x51, 0x2c, 0x60, 0x4f, 0x74, 0x25, 0xe1, 0xa3, 0xfd, - 0xa6, 0x77, 0x5a, 0x80, 0x15, 0xef, 0xf9, 0xa6, 0xaf, 0x5d, 0x93, 0x0e, 0x94, 0x97, 0xa5, 0x81, - 0x62, 0x53, 0x8f, 0x52, 0xcc, 0x82, 0xe7, 0xeb, 0x83, 0x1d, 0xf7, 0xa9, 0xd9, 0xbc, 0x61, 0xcd, - 0xef, 0x8e, 0xac, 0x7a, 0x49, 0x86, 0x87, 0x1b, 0xc5, 0xaa, 0xe3, 0x2f, 0xde, 0xc3, 0xa4, 0x2d, - 0x91, 0xfe, 0x29, 0xaa, 0x66, 0xb2, 0xe4, 0x85, 0xa9, 0xda, 0xe7, 0x5f, 0x2e, 0x15, 0x0d, 0xde, - 0x3a, 0xf0, 0x8a, 0x3f, 0x23, 0x0b, 0xc3, 0x5c, 0x32, 0x11, 0xad, 0xbe, 0x01, 0xe3, 0x01, 0x89, - 0x8a, 0xed, 0x17, 0xb4, 0x4a, 0xbf, 0x69, 0x00, 0x0d, 0xc0, 0x23, 0x30, 0x58, 0xff, 0xd1, 0x98, - 0xc0, 0x34, 0xdf, 0xea, 0x30, 0x37, 0x5d, 0x78, 0x85, 0xae, 0x40, 0xb0, 0xc4, 0x74, 0xf6, 0x63, - 0x76, 0x3c, 0x40, 0xd8, 0x13, 0x45, 0x03, 0x36, 0x3b, 0x81, 0x4c, 0xc7, 0xaa, 0x6f, 0x4a, 0xdd, - 0x7a, 0x17, 0x74, 0x22, 0x14, 0x45, 0xa5, 0xde, 0x14, 0xa5, 0x99, 0xfa, 0x8f, 0x9f, 0x92, 0x89, - 0x1b, 0x6b, 0x7d, 0x36, 0x97, 0x88, 0xf7, 0xa0, 0x79, 0x0f, 0x66, 0xf0, 0x74, 0x5e, 0x17, 0x45, - 0xc9, 0x3c, 0xc2, 0x6e, 0xce, 0x47, 0x43, 0xfc, 0x19, 0x3a, 0xf5, 0x2c, 0xfe, 0x3d, 0x6d, 0xb1, - 0xb7, 0x53, 0xe8, 0x09, 0x81, 0x81, 0x1f, 0x64, 0x64, 0x58, 0x4b, 0xb5, 0xcf, 0x10, 0x86, 0x21, - 0x02, 0x30, 0x1c, 0xc0, 0x9f, 0x89, 0x7d, 0x6d, 0x62, 0xa1, 0x4e, 0xaf, 0x5f, 0x9f, 0x39, 0x78, - 0x35, 0xb4, 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, 0xef, 0x13, 0x13, 0xa1, 0x08, 0xbe, 0x0e, 0xcd, 0x2a, - 0x8b, 0x62, 0x63, 0x57, 0x67, 0xec, 0xda, 0x62, 0x15, 0x26, 0xd1, 0xea, 0xb7, 0xab, 0xd0, 0xf1, - 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, 0xa6, 0xa8, 0x5d, 0xdb, 0xb0, 0xb0, 0x1d, 0x80, 0x06, 0x54, 0xd4, 0xfa, - 0x8f, 0x1f, 0xb2, 0x94, 0xcd, 0x4a, 0xb9, 0x82, 0x54, 0x90, 0xfc, 0x5d, 0x52, 0xf1, 0x77, 0xd2, - 0x74, 0x1f, 0xb6, 0xe1, 0x51, 0x3b, 0xad, 0x1a, 0x99, 0xe9, 0x50, 0xb1, 0xd3, 0x20, 0x47, 0x8a, - 0x3f, 0x25, 0xa8, 0x93, 0x93, 0xb2, 0x9b, 0x52, 0x36, 0xa8, 0x42, 0xc5, 0x4c, 0x3b, 0x4d, 0x91, - 0xd0, 0x31, 0xd0, 0x1b, 0x20, 0x0d, 0x83, 0xcd, 0x14, 0x2a, 0x59, 0xfc, 0x97, 0xcd, 0xe5, 0xd3, - 0xcf, 0x26, 0xad, 0x9a, 0x93, 0x73, 0x45, 0x29, 0x2f, 0xe5, 0xb0, 0x89, 0xd5, 0x1d, 0x12, 0x98, - 0x19, 0xe0, 0x68, 0x6e, 0x97, 0x50, 0xaf, 0x00, 0x55, 0xf2, 0xd9, 0xbf, 0x58, 0x4f, 0x96, 0x4a, - 0x30, 0xb4, 0x8f, 0x21, 0x2d, 0x66, 0x4b, 0xf8, 0x6f, 0xb3, 0x92, 0xf3, 0x20, 0xc5, 0x0f, 0x1d, - 0x64, 0x3f, 0x51, 0x33, 0x9b, 0xad, 0xe0, 0xbf, 0x72, 0x59, 0x96, 0x59, 0xd5, 0x9f, 0xb5, 0xde, - 0x48, 0xa7, 0xb1, 0xc0, 0x85, 0x01, 0x48, 0x22, 0x1a, 0xb9, 0xf3, 0xa3, 0xea, 0x34, 0xa9, 0x11, - 0x2a, 0x91, 0x9c, 0x7d, 0xe9, 0xa6, 0x59, 0x1c, 0xc3, 0xf5, 0x75, 0x9d, 0x4c, 0x04, 0xe0, 0x20, - 0xf8, 0xe9, 0x45, 0x6f, 0x49, 0x6d, 0xe5, 0x49, 0x7e, 0x7d, 0x3d, 0x24, 0x48, 0xce, 0xfd, 0x36, - 0x6d, 0x50, 0x45, 0x13, 0x44, 0x72, 0x92, 0x33, 0x10, 0x65, 0xdc, 0xf5, 0xb1, 0xa7, 0x11, 0xfc, - 0x49, 0xd3, 0x3d, 0x32, 0x0d, 0x4b, 0xf4, 0xd2, 0x02, 0x69, 0xcf, 0x72, 0xde, 0x68, 0xc1, 0xa0, - 0x2e, 0x7a, 0xb5, 0x90, 0xe4, 0xcc, 0xdd, 0x69, 0xba, 0x69, 0x90, 0x7a, 0xdc, 0xaa, 0x3b, 0x6f, - 0x34, 0x8b, 0x2b, 0xba, 0xb7, 0xd3, 0x3c, 0x5f, 0x52, 0xd8, 0xde, 0x79, 0x6b, 0x22, 0x2b, 0x3d, - 0x07, 0xdd, 0x29, 0x54, 0x49, 0xb5, 0xf7, 0x86, 0x26, 0xf6, 0xea, 0x57, 0x93, 0xeb, 0xf5, 0xfa, - 0x45, 0xfb, 0x19, 0x3f, 0x51, 0xf0, 0x42, 0xde, 0x6c, 0xc8, 0x49, 0x33, 0x07, 0x50, 0xbe, 0x12, - 0x14, 0xe0, 0xaa, 0x90, 0xf5, 0x75, 0xd1, 0xa0, 0x55, 0xc4, 0x7a, 0x1d, 0x0d, 0x2b, 0x46, 0x0f, - 0xd3, 0xbe, 0x34, 0x2c, 0x4b, 0x79, 0x4b, 0xab, 0x36, 0xfd, 0x8d, 0x74, 0x0b, 0x8b, 0x9c, 0x58, - 0x6a, 0x27, 0x68, 0xe5, 0x0b, 0xa4, 0x29, 0xe7, 0x09, 0x53, 0x01, 0x39, 0x6f, 0x1f, 0x83, 0xd6, - 0x40, 0x56, 0x72, 0x7d, 0x5d, 0x45, 0xbb, 0x0d, 0xb0, 0xcb, 0x48, 0xf5, 0xeb, 0x7e, 0x9b, 0x7a, - 0xcd, 0x87, 0x01, 0xa7, 0x95, 0x8f, 0x74, 0xa8, 0x9a, 0xb6, 0xa0, 0x6e, 0x38, 0xa5, 0xbf, 0x90, - 0xd2, 0xe6, 0x9a, 0x84, 0x15, 0xdd, 0x72, 0xac, 0xa0, 0x39, 0xbc, 0x4a, 0x97, 0x10, 0x53, 0xd0, - 0x50, 0x4a, 0x94, 0xf0, 0xb7, 0xef, 0xfe, 0xb6, 0x53, 0x62, 0x52, 0x0c, 0xd5, 0xc3, 0x4b, 0xe0, - 0x7e, 0xbd, 0x74, 0x2e, 0x9b, 0x2b, 0xfd, 0x19, 0x02, 0x24, 0x95, 0xde, 0xcc, 0x16, 0x73, 0x7f, - 0x86, 0x40, 0x49, 0xa5, 0xe5, 0xcd, 0x5c, 0x28, 0x8d, 0x07, 0x06, 0x8f, 0x26, 0x5a, 0xa7, 0xd8, - 0x28, 0xec, 0x57, 0x82, 0x53, 0x27, 0x69, 0x64, 0xa6, 0x90, 0x9a, 0x9e, 0x6c, 0x73, 0x55, 0xfc, - 0xc4, 0x64, 0x15, 0xf8, 0x0b, 0x8a, 0xb6, 0x3a, 0x11, 0xbf, 0xd4, 0xd1, 0xf3, 0xaf, 0x09, 0x8c, - 0x6b, 0x04, 0x7b, 0x42, 0x0b, 0xe9, 0x0b, 0xe7, 0x10, 0x2d, 0x5d, 0x2d, 0x1a, 0x85, 0xb1, 0xc6, - 0x76, 0x1d, 0x98, 0x1f, 0x1e, 0x8d, 0x5e, 0x63, 0xc9, 0xed, 0x84, 0xfd, 0xfb, 0x37, 0xbc, 0x33, - 0xca, 0xa4, 0xac, 0xaf, 0xee, 0x0d, 0xd2, 0x2f, 0xb4, 0x95, 0xcd, 0x6d, 0x6e, 0xd3, 0xbb, 0x00, - 0x62, 0x95, 0x5e, 0x99, 0x00, 0xb5, 0xc4, 0xab, 0x12, 0xf8, 0xb9, 0xd7, 0xbd, 0xbd, 0x6e, 0x7d, - 0xdd, 0xd9, 0x92, 0xb7, 0x7f, 0x45, 0xdd, 0xde, 0xb3, 0x65, 0x7a, 0xab, 0x56, 0xf8, 0x63, 0xe6, - 0x61, 0xdf, 0xef, 0x60, 0x2e, 0xe4, 0xe5, 0x7f, 0x49, 0x88, 0xdd, 0xc4, 0x1f, 0x33, 0x67, 0x2e, - 0xf9, 0x7f, 0x92, 0xc9, 0x5f, 0xd5, 0x85, 0xd2, 0xc9, 0x6a, 0xc2, 0x1f, 0x54, 0xd0, 0x67, 0x02, - 0x76, 0x82, 0x58, 0xb0, 0x7e, 0xc5, 0x34, 0xfb, 0x4b, 0x5a, 0x1c, 0xb6, 0x13, 0x33, 0x4c, 0x6e, - 0x96, 0x14, 0xd3, 0xd4, 0xde, 0x9a, 0xbd, 0x3e, 0x70, 0x87, 0x0e, 0x0b, 0x43, 0x20, 0x6a, 0x28, - 0xdf, 0xc2, 0x22, 0xa8, 0xc3, 0x06, 0x94, 0xa6, 0xfb, 0x4f, 0x1a, 0xb7, 0x9f, 0x64, 0x0d, 0xc5, - 0x10, 0xc2, 0xa5, 0xd2, 0x0e, 0xd2, 0xed, 0x7e, 0x0d, 0xe0, 0xa4, 0xfc, 0x41, 0xa4, 0xa1, 0x30, - 0x45, 0xc9, 0x2d, 0xeb, 0xd0, 0xb2, 0xb8, 0xfd, 0xa4, 0xd9, 0x9e, 0x52, 0xf3, 0x4a, 0x39, 0x6d, - 0x53, 0x94, 0x9c, 0x6d, 0x31, 0x4b, 0xbf, 0x57, 0xee, 0x7f, 0xb4, 0x1c, 0x9f, 0x00, 0x48, 0xfa, - 0x8c, 0xe1, 0xb0, 0x69, 0x78, 0x25, 0x7c, 0x80, 0x99, 0xf1, 0xaa, 0xb6, 0xdd, 0xaa, 0x7e, 0x78, - 0x4a, 0x41, 0xf6, 0xaa, 0xb8, 0xe1, 0x98, 0xf8, 0xc2, 0x83, 0x2e, 0x2d, 0x4c, 0xfd, 0x62, 0xa1, - 0x18, 0x25, 0x2e, 0x2e, 0x7b, 0xe8, 0xd0, 0x6c, 0x99, 0x76, 0x5b, 0x0c, 0xf5, 0xe3, 0x6c, 0xb4, - 0x45, 0x29, 0x18, 0x2b, 0xe5, 0xbf, 0x69, 0xd8, 0x61, 0x83, 0x12, 0x76, 0xdf, 0x64, 0x25, 0xe8, - 0x08, 0xd9, 0x86, 0xb8, 0xcd, 0xba, 0xa8, 0xba, 0x3d, 0x42, 0x61, 0x15, 0xfd, 0x49, 0xc2, 0xce, - 0xa3, 0xe8, 0x5a, 0xe0, 0x7b, 0x8e, 0xde, 0xaa, 0x80, 0x7d, 0x51, 0x3a, 0x6e, 0x5d, 0x9c, 0xc3, - 0xbc, 0xe1, 0xf7, 0x58, 0xd5, 0xde, 0x5b, 0x02, 0x9a, 0x4d, 0x26, 0x7d, 0x31, 0x01, 0x98, 0x57, - 0xd7, 0x5e, 0x5f, 0x67, 0xca, 0xf3, 0xed, 0x11, 0xcf, 0x97, 0x3d, 0xc7, 0xf0, 0x99, 0x0f, 0x08, - 0xdb, 0xe8, 0xd3, 0xb0, 0x9b, 0xd7, 0xbf, 0xc4, 0x24, 0x4a, 0xc1, 0x8c, 0x87, 0x5a, 0x71, 0x63, - 0x50, 0xcc, 0xc2, 0x93, 0x5e, 0x5f, 0x46, 0x0d, 0xdb, 0x4c, 0x18, 0xa9, 0xba, 0xf9, 0xcb, 0x5a, - 0xf5, 0x1c, 0x36, 0x66, 0x11, 0x4a, 0xe0, 0x40, 0x63, 0x09, 0xcb, 0x1a, 0xa0, 0xf7, 0x04, 0x16, - 0x06, 0x07, 0xb4, 0xbf, 0x38, 0x38, 0x48, 0x8c, 0x6d, 0xc5, 0xa5, 0x6b, 0x60, 0x44, 0x04, 0xf8, - 0x02, 0x4f, 0xa7, 0xe2, 0x57, 0x42, 0x78, 0x7a, 0xe8, 0x6c, 0xf4, 0x30, 0x91, 0x5e, 0x6c, 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, 0x2f, 0x3b, 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, 0xa2, 0xbd, 0xd1, 0x4e, 0x26, 0x23, 0x15, 0x14, 0xaf, 0x46, 0x76, 0x53, - 0x96, 0x84, 0xe0, 0xcf, 0xf2, 0x1a, 0x83, 0x4f, 0xf5, 0x41, 0x3d, 0x71, 0xa9, 0xb1, 0x33, 0xe9, - 0xb2, 0x53, 0xe6, 0xa9, 0x86, 0x66, 0x58, 0x8c, 0xc7, 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, 0x4f, 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, 0x9f, 0x21, 0x25, 0x39, 0x07, 0x54, 0xe4, 0xff, 0xf9, 0x04, 0x29, 0x15, - 0xb3, 0x92, 0xe0, 0xfd, 0xfb, 0x2c, 0x1d, 0x8d, 0x74, 0xd8, 0x07, 0x44, 0x8e, 0x4f, 0xa1, 0x19, - 0x6b, 0xa7, 0x1f, 0x08, 0x4c, 0xb4, 0x6a, 0xbb, 0x8f, 0x7d, 0xd6, 0xbb, 0xe9, 0x8e, 0x45, 0x80, - 0xf9, 0xbb, 0xa2, 0x30, 0x6d, 0x52, 0x4c, 0xd6, 0xd4, 0x5e, 0xc2, 0x4e, 0xa3, 0xd9, 0x9d, 0x48, - 0x22, 0xf0, 0x68, 0xf2, 0xfb, 0xb7, 0xaf, 0x37, 0x80, 0x9e, 0x67, 0x8f, 0x86, 0x69, 0x73, 0x00, - 0xea, 0xbf, 0x9d, 0xc9, 0x56, 0x72, 0x72, 0x26, 0x2b, 0x97, 0x65, 0xe4, 0xe4, 0xd0, 0x03, 0x6e, - 0xcf, 0x7a, 0xdd, 0x53, 0x02, 0x6a, 0x3d, 0xc3, 0x4a, 0x50, 0x23, 0x83, 0x00, 0x52, 0x2f, 0x68, - 0x68, 0xbf, 0x7f, 0xff, 0xf8, 0xc9, 0x0a, 0x29, 0x75, 0x10, 0x37, 0xb5, 0x1f, 0xf2, 0xcf, 0x6d, - 0x1d, 0x45, 0xf1, 0xfd, 0x91, 0xa6, 0x3d, 0x82, 0xfc, 0x93, 0x48, 0x56, 0x31, 0x51, 0x32, 0xfc, - 0x36, 0x12, 0x8a, 0xa4, 0xfd, 0xc8, 0xfe, 0x84, 0x3f, 0xb9, 0x9f, 0x49, 0x49, 0x0d, 0xd2, 0x0d, - 0x00, 0x13, 0xb7, 0x3c, 0xfa, 0xa2, 0x62, 0x23, 0xf4, 0x29, 0x99, 0xd2, 0x7e, 0xe4, 0xa1, 0xa4, - 0xbe, 0x55, 0x37, 0x40, 0x1d, 0xf9, 0x5e, 0x57, 0x41, 0xd8, 0x61, 0x83, 0xd1, 0x7e, 0x14, 0x7e, - 0x26, 0xe7, 0x73, 0x1b, 0xbd, 0xf6, 0xf7, 0xf0, 0x4b, 0xdd, 0x68, 0x7e, 0x26, 0x3a, 0xb1, 0x12, - 0xd4, 0xd4, 0x07, 0xf2, 0x45, 0x7d, 0xcb, 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, - 0x40, 0x73, 0x75, 0xdd, 0x4f, 0x09, 0x44, 0xab, 0x23, 0xd4, 0xb8, 0xea, 0xbf, 0x40, 0xc5, 0x06, - 0xf9, 0x8a, 0x42, 0x44, 0x25, 0x2b, 0x76, 0x0b, 0x84, 0x4e, 0x4a, 0x70, 0x7a, 0x93, 0x0c, 0xc9, - 0x5a, 0xa2, 0x17, 0x1c, 0xb5, 0x03, 0xd2, 0x75, 0x64, 0x66, 0x5b, 0x2f, 0xaa, 0xde, 0x6c, 0xb5, - 0x70, 0x7a, 0x61, 0xd6, 0xbe, 0x30, 0x9d, 0x88, 0xe1, 0xd8, 0xa9, 0x47, 0xd4, 0x9c, 0x1b, 0xa5, - 0x4f, 0x95, 0x1c, 0x34, 0x40, 0xc3, 0x3a, 0x43, 0x44, 0xc7, 0x90, 0x00, 0x1e, 0x84, 0x01, 0x0d, - 0xd8, 0x69, 0xb5, 0x0b, 0xf3, 0x0f, 0xfb, 0x1f, 0xd1, 0xf0, 0x44, 0xf3, 0x0d, 0x3f, 0xbe, 0x4c, - 0x80, 0xb4, 0x20, 0x29, 0x38, 0x20, 0xce, 0x80, 0x72, 0x8e, 0x29, 0x91, 0xc0, 0x5e, 0x00, 0x54, - 0x1a, 0x73, 0x80, 0xc6, 0xd2, 0x34, 0xe2, 0x64, 0x5d, 0xc4, 0x3b, 0x69, 0x80, 0x15, 0x8c, 0x94, - 0xa7, 0x77, 0x9b, 0x03, 0x55, 0xeb, 0x26, 0x6c, 0x98, 0x8d, 0x40, 0x45, 0x63, 0x95, 0x7d, 0x65, - 0x21, 0x01, 0xb2, 0xcd, 0xb6, 0x67, 0x68, 0x4a, 0x89, 0x99, 0x8c, 0x98, 0xa2, 0xb6, 0xaa, 0xaa, - 0x28, 0x26, 0x53, 0x24, 0xa8, 0x67, 0xe8, 0x68, 0x2c, 0x4d, 0x30, 0xea, 0x26, 0xf5, 0xc8, 0x75, - 0x1f, 0x24, 0x65, 0x74, 0x06, 0x26, 0x55, 0xa4, 0xe3, 0x34, 0x6d, 0x0c, 0x90, 0x9a, 0xa4, 0x86, - 0x2c, 0x59, 0x4a, 0xd0, 0x26, 0xeb, 0x21, 0x31, 0xaa, 0xef, 0x89, 0x51, 0x90, 0x7a, 0x64, 0x82, - 0x54, 0x0b, 0xb2, 0x2f, 0x2b, 0x06, 0xb5, 0x41, 0x21, 0x4c, 0x88, 0xfb, 0xd0, 0x1e, 0x0d, 0x00, - 0x96, 0x16, 0x2e, 0x35, 0xfc, 0x9a, 0xb5, 0x40, 0x23, 0xff, 0xb2, 0x98, 0x82, 0x47, 0x97, 0x5f, - 0xc4, 0x65, 0x82, 0x19, 0x6b, 0x51, 0xa2, 0xad, 0x25, 0x93, 0x35, 0x90, 0x4f, 0x88, 0xaf, 0xc5, - 0x98, 0x8a, 0x33, 0xa0, 0xdf, 0xc3, 0xb2, 0xeb, 0x34, 0x8e, 0x6d, 0x87, 0xa0, 0xf7, 0x4e, 0x1a, - 0x90, 0x65, 0xdf, 0xab, 0xce, 0x00, 0xb0, 0x2a, 0x26, 0xb7, 0x37, 0xb2, 0xd5, 0xb1, 0xa1, 0x76, - 0x05, 0x19, 0x08, 0xc4, 0x04, 0x1d, 0x9c, 0xa6, 0xd6, 0x7c, 0x73, 0x5c, 0x30, 0x40, 0xd6, 0x07, - 0x24, 0x0c, 0x0c, 0xdb, 0xc1, 0x66, 0x53, 0x20, 0xbf, 0x63, 0x10, 0xc9, 0x6d, 0x90, 0xad, 0x52, - 0xec, 0x11, 0x31, 0x09, 0xf3, 0xc3, 0x34, 0xd8, 0x2d, 0x19, 0x14, 0x55, 0x54, 0x90, 0x6c, 0x5c, - 0x94, 0x09, 0x17, 0x3f, 0xb4, 0x95, 0x54, 0x1d, 0x7a, 0x49, 0x61, 0x7a, 0xb2, 0xea, 0xf2, 0x01, - 0x5c, 0xee, 0x5e, 0xaf, 0xb0, 0x08, 0x58, 0xe9, 0xe4, 0x9c, 0x51, 0x5d, 0x3c, 0x36, 0x03, 0xa1, - 0x34, 0x59, 0x73, 0xa0, 0x0e, 0x9a, 0xa1, 0x40, 0xcd, 0xed, 0x93, 0x5d, 0x42, 0x4c, 0x7c, 0x63, - 0xb2, 0x2a, 0x5d, 0x79, 0x09, 0x50, 0x5b, 0xf0, 0xd6, 0x13, 0xea, 0xfe, 0xb7, 0x8e, 0xaa, 0x81, - 0xa4, 0x9b, 0x10, 0x1d, 0x6b, 0x44, 0xc4, 0xfa, 0x92, 0xd6, 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, 0xb2, 0x15, 0x28, - 0x13, 0x0d, 0x12, 0xc7, 0xc9, 0x7f, 0x81, 0x64, 0x4e, 0xed, 0x51, 0xdb, 0x3d, 0xe2, 0x74, 0x06, - 0xc1, 0x41, 0xd4, 0x00, 0xe3, 0x76, 0x43, 0x7a, 0xfa, 0xd9, 0x36, 0x74, 0x40, 0xef, 0x6c, 0x48, - 0x9c, 0x81, 0xd1, 0xad, 0x8a, 0x50, 0x02, 0xd6, 0x2e, 0x72, 0x12, 0x3d, 0x01, 0x7c, 0x86, 0xd0, - 0x02, 0x89, 0x64, 0x90, 0x32, 0x8b, 0x5a, 0x04, 0x00, 0x47, 0x68, 0xd4, 0x02, 0xdd, 0x3e, 0x99, - 0x06, 0x62, 0x86, 0x5e, 0xb0, 0x14, 0x5a, 0x7b, 0x0d, 0xe0, 0x0c, 0x9a, 0xd1, 0x4f, 0x88, 0xe7, - 0x86, 0xa0, 0x60, 0x69, 0x97, 0xbd, 0xd2, 0x9e, 0xd1, 0x80, 0x1c, 0x82, 0x22, 0x2d, 0xec, 0xb2, - 0xaf, 0x77, 0xd9, 0x94, 0x61, 0x90, 0x6e, 0x5a, 0xc4, 0x26, 0x7b, 0xaa, 0x0e, 0x4b, 0xf2, 0x2d, - 0x91, 0x48, 0x42, 0xab, 0xee, 0x1e, 0xc1, 0xc9, 0xe2, 0xfd, 0x34, 0x30, 0x2a, 0x28, 0x57, 0x5d, - 0x96, 0x15, 0x20, 0x02, 0x16, 0xfa, 0xfa, 0x3a, 0xcf, 0x8b, 0x44, 0x5c, 0xff, 0x4d, 0xb6, 0xfc, - 0xf9, 0x6b, 0xd2, 0x92, 0xeb, 0x3f, 0xe8, 0x1e, 0xb6, 0x63, 0x0a, 0xb3, 0x61, 0x2e, 0xa7, 0x98, - 0xcb, 0xa1, 0x43, 0x57, 0x13, 0x77, 0x21, 0xd2, 0x07, 0x78, 0xff, 0x01, 0x6d, 0xd5, 0xfc, 0x3b, - 0x7b, 0xe6, 0x2e, 0xc5, 0xf9, 0x79, 0xfc, 0x45, 0x38, 0x96, 0x1a, 0x36, 0x48, 0x25, 0xe7, 0x12, - 0x9e, 0xa8, 0xcf, 0xe9, 0xff, 0x18, 0xe5, 0xb9, 0x84, 0xd7, 0x8d, 0xd9, 0x2e, 0x82, 0xc8, 0xd2, - 0xcc, 0x11, 0x4b, 0x94, 0xe2, 0x6d, 0x63, 0xd2, 0x97, 0xac, 0xbb, 0x55, 0x77, 0xc6, 0x3e, 0x4f, - 0xf7, 0xf6, 0x08, 0x99, 0x2a, 0xb3, 0xc8, 0x80, 0x01, 0x10, 0xeb, 0xad, 0x45, 0x31, 0x65, 0x58, - 0x0d, 0x4d, 0x4b, 0x7c, 0xe3, 0x62, 0xb4, 0xba, 0x9e, 0x94, 0x3f, 0xbf, 0x25, 0xfd, 0xed, 0x14, - 0x8f, 0x11, 0x04, 0x3b, 0xa9, 0xc7, 0x40, 0xe6, 0x18, 0xa3, 0xce, 0x00, 0xcf, 0x07, 0x50, 0x03, - 0xa5, 0x54, 0xbc, 0x43, 0xfd, 0x26, 0x61, 0x43, 0x5c, 0x56, 0x1a, 0x38, 0x4c, 0xa4, 0x6c, 0xc0, - 0x5c, 0x23, 0x13, 0x46, 0xbc, 0x8d, 0x85, 0xd9, 0xd3, 0x02, 0xb7, 0x89, 0x00, 0x36, 0x1b, 0x61, - 0x73, 0x92, 0x76, 0xcc, 0xad, 0x37, 0xa5, 0x83, 0xf1, 0xf4, 0xa1, 0x2c, 0x33, 0x91, 0xff, 0xfe, - 0xed, 0xfc, 0x20, 0x3f, 0xa3, 0x97, 0xe9, 0xbc, 0x42, 0x1c, 0x83, 0x77, 0xfd, 0x30, 0x88, 0xe4, - 0xd4, 0x01, 0x9f, 0x33, 0x56, 0x7b, 0x7d, 0xfd, 0x8b, 0x03, 0x8c, 0x59, 0x6d, 0xa1, 0x9b, 0x27, - 0xec, 0x53, 0xff, 0xd5, 0x8c, 0xb9, 0xd6, 0x66, 0x0f, 0x0d, 0xc3, 0x01, 0x69, 0x0a, 0xa7, 0x01, - 0x0a, 0x2c, 0x1a, 0x14, 0x41, 0xe0, 0x52, 0x45, 0x89, 0x35, 0xb2, 0x40, 0x9e, 0x84, 0x37, 0x68, - 0x60, 0x78, 0x7a, 0xe6, 0x79, 0xe1, 0xc1, 0x81, 0x4c, 0x8c, 0xcd, 0xad, 0xeb, 0xc4, 0x91, 0x5c, - 0xd8, 0xf2, 0x9b, 0xe1, 0xed, 0xdb, 0x02, 0xc9, 0xcd, 0x9d, 0x74, 0x5a, 0x91, 0x39, 0x79, 0xd0, - 0xad, 0x16, 0xbf, 0x6f, 0x79, 0x78, 0x73, 0x76, 0x4a, 0x77, 0xdc, 0x30, 0x4a, 0x80, 0x65, 0x13, - 0xf4, 0xfb, 0x00, 0xc6, 0x8d, 0x40, 0xc0, 0x72, 0xa0, 0xbe, 0x20, 0x1e, 0x89, 0xbb, 0x47, 0x33, - 0xc8, 0xc9, 0x59, 0xf7, 0x8a, 0xae, 0x0e, 0xe9, 0xde, 0xe7, 0x1a, 0xbd, 0xbc, 0xc3, 0x9b, 0x7a, - 0x74, 0x5d, 0xc4, 0xcd, 0x11, 0xeb, 0x61, 0x2e, 0xe5, 0x2a, 0xb0, 0x1a, 0x24, 0x18, 0x22, 0xcf, - 0x6f, 0x48, 0x04, 0x1f, 0x9c, 0x3b, 0x4a, 0x72, 0x16, 0x20, 0x48, 0x6c, 0x02, 0x42, 0x88, 0xab, - 0x6a, 0x1b, 0x02, 0xd5, 0xe4, 0x85, 0x9e, 0x02, 0x9b, 0x66, 0xf7, 0x0b, 0xcc, 0x85, 0xcc, 0xeb, - 0xd0, 0x11, 0xaf, 0x16, 0x52, 0x2f, 0x92, 0xbc, 0x4f, 0x64, 0x3c, 0x8e, 0x1c, 0x0e, 0x58, 0x37, - 0xba, 0xa2, 0x9d, 0x70, 0x11, 0x83, 0xac, 0x32, 0x1e, 0x27, 0xcb, 0x86, 0xee, 0x2c, 0x1d, 0xba, - 0x14, 0x97, 0xe5, 0x76, 0x33, 0x97, 0x42, 0x24, 0x01, 0x8c, 0xea, 0x1a, 0xcf, 0x0a, 0x87, 0xc4, - 0xb5, 0x8e, 0x32, 0xb0, 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, 0x24, 0xe7, 0x0d, 0x16, 0x63, 0x4a, 0x94, 0x04, 0x11, 0x3f, 0x92, 0xe6, 0x5a, 0x7f, - 0x95, 0x54, 0x5d, 0xff, 0xfd, 0xdb, 0xde, 0xd6, 0xfd, 0x0a, 0xfa, 0xb6, 0x38, 0x30, 0x46, 0x48, - 0x52, 0xf8, 0x03, 0x55, 0xa0, 0xb4, 0xf4, 0x05, 0xd8, 0xb8, 0x0e, 0xa8, 0x84, 0xe2, 0xd8, 0x00, - 0xa0, 0x62, 0xab, 0x58, 0x81, 0x75, 0x66, 0xb3, 0x34, 0x2d, 0x45, 0x9d, 0x20, 0x31, 0xfd, 0x3b, - 0x82, 0x82, 0x86, 0x4b, 0xcc, 0xe7, 0xca, 0xbb, 0xe9, 0x98, 0xe2, 0x6c, 0x94, 0xe4, 0x3f, 0xb1, - 0x8a, 0x4d, 0x50, 0xf9, 0x53, 0x38, 0x03, 0xb5, 0x0e, 0xbc, 0xc2, 0x98, 0xe0, 0x3a, 0x42, 0xc3, - 0xac, 0xe8, 0x09, 0x7c, 0xbf, 0xbe, 0x3b, 0xd6, 0xd6, 0x77, 0xa7, 0xeb, 0x1d, 0x6c, 0xbe, 0x90, - 0x37, 0xa7, 0x2b, 0x6e, 0xfd, 0x31, 0x23, 0xf3, 0xef, 0x19, 0xa7, 0xcb, 0x67, 0x8d, 0x15, 0x8d, - 0x65, 0x39, 0x73, 0x10, 0xa5, 0xdd, 0xec, 0x0c, 0x54, 0xff, 0x15, 0x9a, 0x9d, 0x53, 0xee, 0xcc, - 0xee, 0x32, 0xc1, 0xe6, 0x87, 0xd4, 0xb3, 0x3e, 0xaf, 0xa2, 0x87, 0xad, 0xf4, 0x08, 0x2e, 0xe9, - 0x80, 0x74, 0xb8, 0xbe, 0x4e, 0x52, 0x29, 0x0f, 0x67, 0x64, 0x2b, 0x57, 0xc4, 0xa1, 0x90, 0x3a, - 0xfc, 0x26, 0x25, 0x4e, 0xe0, 0xa4, 0x9e, 0xb4, 0xb7, 0xd0, 0x24, 0xc7, 0x0e, 0x81, 0x52, 0x7f, - 0x99, 0x08, 0xa9, 0xda, 0xfd, 0x95, 0x64, 0xf1, 0x96, 0x6a, 0x5f, 0x68, 0xcb, 0x3f, 0x9c, 0x9f, - 0xbf, 0x7f, 0xcb, 0x5f, 0xb0, 0x75, 0xec, 0x63, 0x3b, 0x28, 0x8a, 0x1f, 0x81, 0x80, 0xc2, 0xc1, - 0xd2, 0x77, 0xb0, 0xcb, 0x6d, 0x7a, 0x9b, 0xad, 0x5c, 0xae, 0x09, 0x47, 0xbb, 0xc2, 0x70, 0x64, - 0x3b, 0x42, 0x9b, 0x08, 0x90, 0x2e, 0x18, 0xa0, 0x46, 0x11, 0xdb, 0x4e, 0xe3, 0xc4, 0x56, 0x57, - 0xb4, 0xf2, 0xcb, 0xab, 0x8f, 0xe7, 0xd9, 0x13, 0x4b, 0xc5, 0x08, 0xbb, 0xc2, 0x1f, 0x33, 0x93, - 0x4a, 0xfe, 0x4e, 0x72, 0xfe, 0x85, 0xc3, 0x91, 0xe9, 0x9e, 0x79, 0xb8, 0xc3, 0x70, 0x7d, 0x4f, - 0x81, 0x46, 0x88, 0x87, 0x06, 0x3a, 0x86, 0xf5, 0x75, 0x36, 0x14, 0xf2, 0x33, 0x78, 0x4a, 0xeb, - 0xd4, 0x88, 0x1c, 0xbc, 0xc2, 0xf4, 0xf3, 0x87, 0x10, 0x97, 0x9a, 0xf2, 0x86, 0xde, 0x95, 0xdc, - 0x21, 0x84, 0x5f, 0xd6, 0x74, 0xf3, 0xb8, 0xd6, 0xbc, 0xa4, 0xb4, 0x69, 0x73, 0xe0, 0x29, 0xa6, - 0x7a, 0xa7, 0x68, 0x9e, 0x6e, 0x43, 0x0b, 0x83, 0x8c, 0xe7, 0x55, 0x4a, 0xba, 0xa7, 0x11, 0xa2, - 0x6b, 0x15, 0x76, 0x4f, 0x66, 0x80, 0x42, 0xd4, 0xbe, 0x9e, 0xc0, 0x83, 0x53, 0xaf, 0xa0, 0x37, - 0x1a, 0x27, 0x0d, 0xea, 0xc1, 0x36, 0xfd, 0x5b, 0x4d, 0x74, 0x09, 0xc6, 0xf2, 0x80, 0x34, 0x5d, - 0xf2, 0x1f, 0xcd, 0xe0, 0xf1, 0x55, 0x8b, 0x1a, 0x4f, 0x1d, 0x7e, 0xf1, 0xbf, 0x6a, 0x1e, 0xee, - 0x3e, 0xc4, 0xd4, 0xab, 0xb6, 0xcd, 0x3d, 0xe3, 0xe1, 0x69, 0x40, 0x4b, 0xe6, 0x4e, 0xe7, 0xc5, - 0xa7, 0x4c, 0xa6, 0x99, 0xa3, 0x7d, 0xb7, 0x46, 0xdc, 0xaf, 0x2d, 0x25, 0xa8, 0x91, 0x9e, 0x38, - 0x2d, 0xef, 0x8b, 0xbc, 0xd7, 0xf4, 0xcc, 0x4d, 0x96, 0x2a, 0xf4, 0x3f, 0x14, 0x4f, 0xc8, 0x94, - 0x74, 0x9a, 0xc6, 0x70, 0x08, 0x12, 0x08, 0xee, 0x45, 0xe6, 0x1b, 0x8a, 0x5d, 0x3c, 0x33, 0x36, - 0x55, 0xe6, 0x80, 0x80, 0x11, 0xd8, 0xdb, 0x86, 0x62, 0x01, 0x17, 0xe6, 0x06, 0x62, 0xd2, 0x39, - 0xa7, 0x3c, 0x38, 0xa0, 0x04, 0x3c, 0x7f, 0x85, 0xa5, 0x59, 0x73, 0xac, 0xb7, 0x59, 0xc2, 0x5e, - 0x25, 0x9f, 0x81, 0xbc, 0xec, 0x69, 0x10, 0x59, 0x99, 0x92, 0x04, 0x32, 0x78, 0x57, 0x5e, 0x4d, - 0xce, 0xe6, 0x4c, 0x9f, 0xfe, 0xc5, 0xbb, 0xbc, 0xd2, 0xaf, 0xd5, 0x74, 0x44, 0x20, 0x4a, 0xb2, - 0xfd, 0x2d, 0x1c, 0x69, 0xa2, 0x5a, 0x0e, 0x7f, 0xcf, 0x53, 0xa0, 0xdf, 0xab, 0x15, 0xbf, 0x55, - 0xbf, 0xf9, 0xae, 0x0d, 0xfe, 0x69, 0x77, 0x2d, 0xe4, 0xa5, 0x5b, 0x13, 0xe3, 0x2f, 0xaf, 0xd7, - 0x3e, 0x68, 0x79, 0xbe, 0xf5, 0xab, 0xa6, 0xa7, 0x60, 0x61, 0x8a, 0xe8, 0xb9, 0x32, 0x50, 0xc6, - 0x44, 0xd0, 0x0d, 0x17, 0x29, 0xb6, 0xf0, 0x46, 0x9c, 0x2f, 0xb0, 0xe0, 0xdc, 0x98, 0xf1, 0x20, - 0xff, 0x5a, 0x44, 0x98, 0x28, 0x36, 0x3a, 0xc1, 0xa8, 0xb6, 0x3d, 0x22, 0x54, 0xa2, 0xc6, 0x05, - 0xf6, 0x06, 0x6c, 0xd4, 0xab, 0x05, 0x9b, 0x1c, 0xca, 0x06, 0xd0, 0xaa, 0xe8, 0xf9, 0xd4, 0x88, - 0x12, 0xeb, 0xe3, 0x10, 0x38, 0x12, 0x7e, 0xfb, 0xc7, 0x6d, 0x4a, 0xb5, 0x05, 0x14, 0x16, 0x46, - 0xa6, 0x5b, 0x95, 0xde, 0xbb, 0x45, 0x01, 0x4a, 0xc1, 0x84, 0xb1, 0x6a, 0x8c, 0x6c, 0xe6, 0x01, - 0xa5, 0x69, 0x0a, 0x3b, 0x56, 0x19, 0xc3, 0x36, 0x8a, 0xdf, 0xf1, 0xa0, 0xde, 0x36, 0xc2, 0x7f, - 0xea, 0x82, 0x20, 0x24, 0x5a, 0xa0, 0xe7, 0x00, 0x08, 0x8a, 0xd7, 0xc8, 0x44, 0xd5, 0xd8, 0x25, - 0x05, 0x01, 0x7d, 0xa7, 0xa9, 0xff, 0x98, 0xe1, 0xf2, 0x02, 0x42, 0x9d, 0x4f, 0x58, 0x9f, 0x49, - 0x18, 0xd8, 0xa1, 0x0b, 0x85, 0xe2, 0xc1, 0x61, 0x30, 0xf7, 0x14, 0x3c, 0x21, 0x10, 0x5e, 0x74, - 0x63, 0x02, 0x7c, 0xd4, 0x30, 0xba, 0xe8, 0xa5, 0xe3, 0x80, 0x0a, 0x8d, 0xa3, 0xf8, 0xf6, 0xdd, - 0xfb, 0xb0, 0x00, 0x73, 0x59, 0xee, 0xd0, 0x1b, 0x05, 0x5e, 0xda, 0x56, 0x00, 0xd7, 0x4a, 0xbf, - 0x1d, 0x97, 0xf0, 0xd1, 0x15, 0xd9, 0x7c, 0x0b, 0x11, 0xa7, 0xef, 0x71, 0xf3, 0x2d, 0x29, 0x51, - 0x14, 0x52, 0xff, 0x17, 0x91, 0x89, 0xd1, 0xae, 0x0b, 0x39, 0xc7, 0xee, 0x74, 0xc9, 0x97, 0xc3, - 0xe8, 0xca, 0x61, 0xcc, 0xb7, 0x6e, 0x47, 0xcc, 0x24, 0x1e, 0x9d, 0x10, 0x6a, 0x6e, 0xa1, 0xfc, - 0x04, 0x38, 0x32, 0xfa, 0x51, 0xd4, 0xa9, 0x0a, 0x42, 0x9f, 0xb7, 0xe4, 0xa4, 0xb7, 0x98, 0x0d, - 0x73, 0x84, 0xd1, 0xa3, 0xbc, 0x6a, 0x5f, 0x5c, 0x55, 0x05, 0x09, 0x0f, 0x7e, 0x25, 0xaa, 0x84, - 0x13, 0xa0, 0xba, 0x04, 0x88, 0xb1, 0x90, 0xf0, 0xa5, 0xee, 0xe6, 0x82, 0x28, 0x12, 0xd1, 0x08, - 0x5d, 0xa2, 0xf8, 0x48, 0x21, 0x14, 0x0b, 0x72, 0x81, 0x9a, 0x28, 0x10, 0xd5, 0x23, 0x7b, 0x7b, - 0x26, 0x57, 0x67, 0xf3, 0x79, 0x35, 0x46, 0x4f, 0x64, 0x3e, 0x23, 0x24, 0x04, 0x4f, 0x14, 0xde, - 0xb0, 0xce, 0xc8, 0x2f, 0x71, 0x90, 0x5c, 0xa3, 0xca, 0x1f, 0x1e, 0xb3, 0x05, 0xf2, 0x11, 0x01, - 0xd6, 0x92, 0x8c, 0x5a, 0x99, 0x7c, 0xe5, 0xcb, 0xc3, 0x5f, 0x64, 0x90, 0x08, 0x64, 0xc6, 0xf3, - 0x20, 0x5a, 0x31, 0xca, 0x04, 0xa8, 0x3f, 0x2f, 0x20, 0x8a, 0x44, 0x84, 0x47, 0xc9, 0x1f, 0x26, - 0x37, 0x4e, 0xe6, 0xff, 0xe2, 0x32, 0x75, 0x50, 0x5b, 0x2c, 0x15, 0xfb, 0x4f, 0x06, 0x63, 0xf5, - 0x23, 0xe4, 0x84, 0x06, 0xcb, 0x0b, 0xea, 0xc8, 0x8a, 0x16, 0x07, 0x8b, 0x07, 0x67, 0xdc, 0x99, - 0x57, 0x64, 0xa8, 0xa0, 0x45, 0xae, 0x1a, 0xa4, 0xeb, 0x0b, 0xf7, 0x0f, 0x8d, 0x91, 0x7c, 0x30, - 0x46, 0xd7, 0x67, 0xfe, 0x1f, 0x1f, 0x22, 0x55, 0x83, 0x57, 0x0d, 0x93, 0xb9, 0x28, 0xfd, 0x43, - 0xa3, 0x4c, 0xb8, 0x0e, 0x4f, 0x84, 0xda, 0x7f, 0xd3, 0xf6, 0x40, 0xed, 0x61, 0x51, 0x96, 0x9a, - 0x1e, 0xe9, 0x2c, 0x41, 0xac, 0x7d, 0xa9, 0x89, 0xe1, 0x81, 0x06, 0x8e, 0x52, 0x7f, 0x63, 0xc8, - 0xb8, 0xf3, 0x20, 0x2c, 0x2e, 0x61, 0x4b, 0xe6, 0xd5, 0x29, 0xb4, 0x14, 0xb8, 0xb3, 0x78, 0x38, - 0xbe, 0x3a, 0xf5, 0x37, 0x60, 0xd8, 0xf1, 0x80, 0x31, 0x40, 0x41, 0xdf, 0x28, 0x06, 0xd8, 0xf1, - 0x85, 0x45, 0x83, 0x65, 0xa1, 0xcf, 0x51, 0x82, 0xba, 0xa2, 0xd4, 0xb7, 0xc8, 0x0f, 0xf9, 0xe7, - 0x96, 0x83, 0x96, 0x31, 0x89, 0x20, 0x6b, 0x8c, 0xbb, 0x87, 0x73, 0x85, 0x8e, 0x50, 0x14, 0xef, - 0x78, 0x17, 0xe0, 0x1b, 0xc2, 0x41, 0xf1, 0x90, 0x84, 0x1a, 0xbf, 0x96, 0x86, 0x10, 0x12, 0xf0, - 0xc3, 0xe1, 0xee, 0xf5, 0x1c, 0x90, 0x73, 0xa1, 0x8b, 0xf9, 0xab, 0xd6, 0x16, 0xbd, 0x00, 0x7a, - 0x98, 0x94, 0xfb, 0xb9, 0x8d, 0x7f, 0x50, 0xa0, 0x08, 0xbb, 0xfe, 0x31, 0x2e, 0x90, 0x70, 0xab, - 0xc1, 0xd6, 0x88, 0x92, 0xf2, 0x8f, 0xec, 0xcf, 0xb9, 0xcf, 0x5b, 0x7f, 0xd5, 0x18, 0x3b, 0x7d, - 0xd5, 0x16, 0xc3, 0xd9, 0x78, 0xdf, 0x45, 0x83, 0xb9, 0x40, 0x03, 0xa5, 0x10, 0x5b, 0xd2, 0xd7, - 0x8c, 0xfc, 0xc2, 0x7c, 0x8b, 0x9c, 0x3a, 0x3b, 0x5f, 0xc0, 0xb7, 0xcf, 0x8a, 0x3d, 0x2e, 0x9c, - 0x60, 0x1c, 0x8d, 0x33, 0xff, 0xad, 0x96, 0x37, 0x92, 0x4c, 0xb0, 0x4b, 0xce, 0x5c, 0x59, 0x8d, - 0x09, 0x57, 0xf2, 0x4f, 0x57, 0x0c, 0x04, 0x4d, 0xc6, 0x8e, 0x2e, 0x29, 0x56, 0x01, 0x14, 0x6d, - 0x3a, 0x79, 0x9d, 0xa1, 0x79, 0x99, 0xf4, 0xe8, 0x81, 0x09, 0x28, 0x48, 0x18, 0xdc, 0x61, 0x45, - 0xc2, 0x75, 0xb4, 0xb3, 0xd9, 0x4c, 0x51, 0xf1, 0x93, 0x79, 0xf6, 0xe0, 0x61, 0x44, 0x32, 0x89, - 0xdb, 0x90, 0xaa, 0x83, 0x90, 0xcf, 0x8c, 0xce, 0xbe, 0xca, 0x87, 0x87, 0x17, 0x4c, 0xc5, 0x57, - 0xea, 0x58, 0x12, 0xe4, 0xbd, 0x9a, 0x02, 0x7b, 0x0b, 0x90, 0x8d, 0x39, 0xb2, 0x07, 0x89, 0x1f, - 0x44, 0x52, 0x24, 0x4f, 0xea, 0xc6, 0x53, 0x0a, 0x96, 0x0c, 0x2b, 0xde, 0x49, 0xc5, 0x08, 0x49, - 0x34, 0x6e, 0x8e, 0x47, 0x03, 0x64, 0x6e, 0x88, 0x5b, 0xbf, 0x02, 0xb3, 0x9b, 0xa9, 0x76, 0x51, - 0xde, 0x8a, 0xd6, 0x53, 0x7d, 0x9d, 0x09, 0xf7, 0xcd, 0x5f, 0x31, 0x2d, 0xa3, 0x39, 0x58, 0xf0, - 0x63, 0xe6, 0xc4, 0x53, 0x0e, 0x99, 0x27, 0xb1, 0x99, 0x90, 0x1c, 0xbf, 0x2d, 0xfa, 0xee, 0xc5, - 0xdf, 0xc2, 0xe1, 0xa3, 0xbe, 0x31, 0x97, 0xee, 0x3c, 0x0b, 0x9b, 0x80, 0x1a, 0xca, 0xdc, 0xd3, - 0x38, 0x48, 0x72, 0x8e, 0xe2, 0x40, 0xd4, 0x31, 0xd9, 0xff, 0xa0, 0xa0, 0xd0, 0xd3, 0x2c, 0x6e, - 0x88, 0x3a, 0x66, 0x84, 0x83, 0x33, 0xb4, 0x08, 0x48, 0xf3, 0x90, 0x97, 0xca, 0xca, 0xf2, 0xdc, - 0x8b, 0x54, 0xd7, 0x71, 0xbf, 0x87, 0xc2, 0x9c, 0x63, 0xe3, 0x3a, 0x88, 0xb4, 0x8e, 0xee, 0x84, - 0x5e, 0x23, 0x5c, 0xfb, 0x8c, 0x7e, 0xa3, 0xcd, 0xe7, 0x2b, 0x6e, 0x84, 0x0e, 0x6c, 0x38, 0x32, - 0x29, 0xa0, 0x32, 0xf2, 0xb1, 0x88, 0xbc, 0xc6, 0xfd, 0xb6, 0x03, 0x98, 0xdc, 0x19, 0xa0, 0x4e, - 0x9b, 0xa9, 0xd4, 0x7c, 0x89, 0x00, 0xe3, 0xd0, 0xfc, 0x2d, 0x79, 0x3b, 0x41, 0x05, 0x11, 0x2a, - 0x49, 0xac, 0xaf, 0xcb, 0xee, 0x6f, 0x62, 0xb9, 0x87, 0x07, 0x9a, 0x46, 0x51, 0x08, 0x70, 0x97, - 0x03, 0x50, 0x1e, 0xf5, 0x1f, 0x5d, 0x5e, 0x7e, 0xc1, 0x1b, 0x84, 0xad, 0x8a, 0xa4, 0x67, 0x85, - 0xc5, 0xb6, 0xaa, 0x21, 0x59, 0xc1, 0x37, 0xd9, 0x5e, 0x36, 0x12, 0xc1, 0xa6, 0x84, 0x0c, 0x93, - 0xb1, 0x86, 0x68, 0xf8, 0x31, 0xb6, 0xb2, 0x31, 0xfa, 0x18, 0xaf, 0x60, 0xb0, 0xc5, 0xd1, 0x33, - 0xe8, 0x11, 0xa4, 0xe7, 0xa1, 0x4a, 0xdc, 0xd5, 0x4a, 0xd2, 0x48, 0x85, 0xb5, 0x85, 0xf3, 0x2f, - 0x1e, 0x41, 0x4e, 0x7a, 0x48, 0xb7, 0x84, 0xcc, 0x8f, 0xff, 0x1c, 0xe5, 0xe5, 0x82, 0xbc, 0x81, - 0x3f, 0xbd, 0x1e, 0xfc, 0x2d, 0xc8, 0xf8, 0x52, 0xe8, 0xb6, 0xe1, 0xa5, 0x40, 0xe8, 0x4b, 0xa5, - 0x87, 0x39, 0xbd, 0x0a, 0x7d, 0xe9, 0x29, 0xf4, 0xa5, 0x57, 0x2a, 0xe1, 0x4b, 0xaf, 0x82, 0x75, - 0xb2, 0xf9, 0x2c, 0xbc, 0xec, 0x6e, 0x56, 0x76, 0x7f, 0x66, 0xf0, 0x6c, 0x67, 0xc9, 0xd1, 0x9b, - 0x1f, 0x4b, 0x14, 0x9d, 0xae, 0xe9, 0x77, 0xd7, 0x99, 0x4b, 0x16, 0x9e, 0xbe, 0x8a, 0xbb, 0x14, - 0xbc, 0x36, 0x9a, 0xd7, 0xea, 0xf5, 0x3a, 0xce, 0xd3, 0x32, 0xf7, 0xc5, 0x55, 0xcd, 0x90, 0x34, - 0x7e, 0x68, 0x84, 0x2a, 0x4d, 0x62, 0x02, 0xbf, 0x3a, 0x94, 0x04, 0xd5, 0xdb, 0xa1, 0x87, 0x47, - 0x5e, 0xa2, 0x9b, 0xd2, 0x4d, 0x33, 0xbe, 0xef, 0x04, 0x2e, 0xc9, 0x84, 0x7a, 0xef, 0x00, 0x2b, - 0x80, 0x97, 0x90, 0x1f, 0x35, 0x8a, 0x90, 0x96, 0xe7, 0xa0, 0xec, 0x96, 0x82, 0x37, 0xa0, 0x51, - 0xea, 0x37, 0x4c, 0xd2, 0x3d, 0x3b, 0x8d, 0x32, 0x23, 0x93, 0x99, 0xb9, 0xaf, 0x03, 0x79, 0x23, - 0x77, 0xaf, 0xe5, 0xd7, 0x7d, 0x37, 0x21, 0xbd, 0xdb, 0x01, 0xfa, 0x44, 0x61, 0xc1, 0x75, 0x75, - 0x42, 0xaf, 0x62, 0xbf, 0x65, 0x20, 0xa7, 0xe9, 0x76, 0xe8, 0x2d, 0x3d, 0xa9, 0x52, 0x9f, 0xe3, - 0x55, 0x45, 0x06, 0x50, 0x24, 0x81, 0x3e, 0xca, 0xc3, 0x09, 0x1e, 0x3d, 0x0d, 0x71, 0xaf, 0xdd, - 0x4e, 0x70, 0x81, 0xca, 0xe4, 0xdd, 0xc5, 0xad, 0x89, 0x85, 0x29, 0xe3, 0xc3, 0xb1, 0x65, 0x77, - 0x63, 0xb7, 0xa5, 0xc5, 0x82, 0xb9, 0x55, 0x05, 0x93, 0xd5, 0x15, 0x3d, 0x2f, 0x6f, 0x33, 0xfb, - 0x29, 0x10, 0x73, 0x4b, 0x4b, 0x25, 0x17, 0x37, 0x47, 0x6f, 0x9d, 0x70, 0x5b, 0x19, 0x4c, 0x98, - 0x45, 0xc8, 0x80, 0x28, 0x66, 0x06, 0xbf, 0xd1, 0x57, 0xb3, 0xeb, 0x76, 0xda, 0x31, 0xf6, 0xd5, - 0x29, 0xe9, 0x26, 0xb2, 0x49, 0x77, 0xff, 0x72, 0x91, 0x6b, 0x4e, 0x2c, 0x49, 0xab, 0x8b, 0xe7, - 0x86, 0x23, 0xe0, 0x97, 0xe5, 0x68, 0x93, 0x5d, 0xb1, 0xa6, 0x6f, 0x65, 0x49, 0x7e, 0x5b, 0xab, - 0x27, 0x74, 0xf8, 0x7f, 0xa6, 0x0e, 0x2f, 0x49, 0xbf, 0x09, 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, 0xf5, 0x60, 0xd4, 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, 0xc6, 0xdc, 0xd7, 0xca, 0xbf, - 0xd3, 0x4f, 0x62, 0x22, 0xab, 0xfe, 0x63, 0xa6, 0xcc, 0xe9, 0x0f, 0xba, 0x3b, 0xd4, 0x95, 0x6d, - 0x51, 0xac, 0x7e, 0xf3, 0xcd, 0x91, 0x86, 0x86, 0x37, 0x31, 0xea, 0xb9, 0xad, 0xef, 0x03, 0xcb, - 0x33, 0x32, 0x78, 0xb7, 0x75, 0xfc, 0xaf, 0xab, 0xbb, 0x5f, 0xc3, 0x93, 0x6b, 0xcc, 0x4b, 0x1e, - 0xbf, 0x87, 0xbc, 0xf8, 0xf1, 0x56, 0x4c, 0xa5, 0xda, 0xb2, 0x6b, 0xae, 0xfc, 0xc6, 0x3a, 0xcd, - 0x15, 0x4b, 0xeb, 0x78, 0x2e, 0xe4, 0x6c, 0x7b, 0x08, 0x10, 0x77, 0x49, 0x7b, 0xd4, 0x17, 0xa5, - 0x6f, 0x2b, 0x42, 0x4c, 0xc6, 0xde, 0xd1, 0x9b, 0xfd, 0xe7, 0xb7, 0x2e, 0x56, 0xfd, 0xcf, 0x6f, - 0xd5, 0x6f, 0xa9, 0x44, 0x36, 0x57, 0x76, 0x1b, 0x16, 0x7b, 0x0a, 0x30, 0x6c, 0xd8, 0x99, 0xe9, - 0x29, 0x6a, 0x32, 0xf5, 0x8d, 0x8a, 0x85, 0xd1, 0x4d, 0x33, 0x5c, 0x05, 0xf4, 0xd5, 0x2a, 0x8d, - 0x74, 0x0b, 0xc5, 0x83, 0xcf, 0xca, 0x85, 0xee, 0x6c, 0x7d, 0x43, 0xc3, 0x31, 0x1b, 0x84, 0x0f, - 0xfa, 0xce, 0x48, 0xd5, 0xd0, 0x99, 0x22, 0x3d, 0x56, 0xbb, 0xc9, 0x48, 0x5e, 0x4b, 0xed, 0x83, - 0xd4, 0x4e, 0x6f, 0xbf, 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, 0xa4, 0x9d, 0x5b, 0x13, 0xcd, 0xee, 0xa2, 0x14, 0x31, 0xc1, 0xa7, 0x47, 0x34, 0x3d, 0x19, - 0x2d, 0x7e, 0x43, 0x0b, 0x03, 0x33, 0xc6, 0xcc, 0x48, 0x1e, 0xc6, 0xe6, 0x12, 0x70, 0x75, 0xc1, - 0x5a, 0x83, 0xee, 0x5e, 0x76, 0xbc, 0xce, 0x48, 0xda, 0xb4, 0x2d, 0x65, 0xb8, 0x1d, 0x2e, 0x79, - 0xd9, 0xba, 0x6e, 0x9c, 0x89, 0x52, 0xc2, 0xcd, 0xa5, 0x4b, 0x32, 0xc9, 0xad, 0x47, 0xb7, 0x89, - 0x45, 0xb4, 0xec, 0x01, 0x33, 0x1d, 0xe2, 0x72, 0x14, 0xdc, 0xeb, 0x27, 0xa2, 0xa4, 0x45, 0x61, - 0x69, 0x00, 0x91, 0xc2, 0xbe, 0x2d, 0xec, 0x5f, 0xb6, 0x10, 0x5c, 0xba, 0xa4, 0x7b, 0xa6, 0x1d, - 0x2d, 0x76, 0xd6, 0x68, 0x0a, 0xc0, 0x46, 0xf0, 0x1a, 0x15, 0x16, 0x1b, 0x2a, 0x9d, 0x85, 0x41, - 0xa9, 0x1a, 0xb1, 0xdf, 0x6c, 0xd8, 0xfb, 0xb1, 0x00, 0x30, 0xfc, 0x51, 0x0a, 0xcf, 0xf0, 0xe9, - 0xa3, 0x93, 0x42, 0x10, 0x11, 0xd1, 0xdc, 0xe2, 0x06, 0xd1, 0xe5, 0x4f, 0x56, 0x30, 0xc3, 0x0a, - 0xc1, 0x42, 0xff, 0xd7, 0x22, 0xde, 0xf7, 0xf4, 0xb1, 0x6a, 0x19, 0xfa, 0x90, 0x82, 0x4f, 0xd2, - 0x78, 0xe9, 0x9e, 0x9e, 0x29, 0xa0, 0xa7, 0x8a, 0x45, 0xe0, 0x91, 0x4e, 0x9f, 0x36, 0x51, 0x4d, - 0xf4, 0x04, 0xa7, 0xb5, 0x81, 0xd0, 0xe9, 0x2a, 0xfb, 0xc5, 0x78, 0xe2, 0xcb, 0x38, 0xbc, 0xb9, - 0x53, 0xb1, 0x9b, 0x4a, 0xd1, 0x68, 0x7b, 0x0a, 0x8a, 0x2c, 0xf1, 0xcf, 0x8f, 0x44, 0x8e, 0x49, - 0x32, 0x8f, 0x22, 0xdf, 0x87, 0xc2, 0x35, 0x9a, 0xb9, 0x35, 0x5b, 0x2a, 0x9e, 0xe4, 0xf5, 0xd1, - 0xdd, 0x20, 0x14, 0xb9, 0x86, 0x77, 0x3b, 0xf1, 0x18, 0xaf, 0x77, 0x4d, 0x9c, 0x67, 0xbe, 0x54, - 0xba, 0xb7, 0xfd, 0x7d, 0x30, 0x74, 0xfe, 0x9a, 0xe0, 0xaf, 0x09, 0x85, 0xef, 0x06, 0xb9, 0x57, - 0x82, 0x50, 0xfc, 0xea, 0xbb, 0xfa, 0x83, 0x57, 0x38, 0x95, 0xa2, 0x6d, 0x6a, 0x81, 0xc6, 0xa0, - 0xa7, 0x61, 0x95, 0xd4, 0xa8, 0x47, 0x42, 0xd0, 0x08, 0x95, 0xfb, 0xb8, 0x36, 0xb5, 0x14, 0x10, - 0x96, 0xb6, 0x85, 0x0d, 0x63, 0x16, 0xb6, 0xaf, 0x25, 0x69, 0x4b, 0x0a, 0x33, 0x1a, 0x43, 0xfb, - 0x62, 0x4a, 0x4b, 0x4a, 0x46, 0xfd, 0xcb, 0x17, 0x05, 0x0f, 0x60, 0xe2, 0x4f, 0xcb, 0x7c, 0x65, - 0xed, 0xf7, 0x6f, 0xbc, 0xca, 0xa0, 0xad, 0xaf, 0xf3, 0x7e, 0xc6, 0x90, 0x8d, 0x1e, 0x56, 0x62, - 0xf0, 0x89, 0x69, 0xb1, 0x66, 0x4f, 0x54, 0x94, 0xbc, 0x74, 0x14, 0x25, 0x93, 0xb3, 0x0e, 0xfa, - 0xba, 0x64, 0xab, 0x6a, 0xe8, 0x48, 0xb3, 0xd6, 0xb6, 0x88, 0xf2, 0x52, 0xa3, 0x79, 0x39, 0x3e, - 0xaf, 0x1f, 0xce, 0xcb, 0xf3, 0x79, 0x5a, 0x52, 0x9c, 0x23, 0xfc, 0x96, 0xab, 0x9b, 0xb8, 0x52, - 0x34, 0xe8, 0x00, 0xda, 0x3c, 0x88, 0x49, 0xd5, 0xb6, 0x17, 0x79, 0x14, 0x17, 0x01, 0x49, 0x80, - 0xed, 0x4e, 0xf8, 0x63, 0xa6, 0xa7, 0x0d, 0x7d, 0x1b, 0x0f, 0x8e, 0x45, 0xa6, 0x0a, 0xfb, 0x12, - 0xb9, 0x36, 0x87, 0x02, 0x61, 0x05, 0x07, 0x50, 0x77, 0x39, 0xb1, 0x12, 0x98, 0x97, 0x8c, 0xf0, - 0xb4, 0xe5, 0x71, 0xac, 0xf8, 0xe8, 0x49, 0xac, 0x5d, 0xfa, 0x0d, 0x93, 0xd5, 0x91, 0xf8, 0x48, - 0x1f, 0xaf, 0x05, 0xb0, 0x8e, 0xfe, 0x4a, 0x48, 0xb1, 0x25, 0xdf, 0xc0, 0xc3, 0x61, 0x42, 0xaf, - 0x30, 0xbc, 0xcc, 0xd6, 0x87, 0x91, 0x94, 0xf8, 0xbf, 0xa0, 0x31, 0xd6, 0x75, 0xb6, 0x6d, 0x4a, - 0x5d, 0xfa, 0x64, 0x98, 0x92, 0xe9, 0x25, 0x3d, 0x4a, 0x7d, 0x37, 0xed, 0x51, 0x1a, 0xd5, 0x41, - 0x1e, 0x03, 0x92, 0xf8, 0x3e, 0x9c, 0xfc, 0x39, 0x1c, 0x48, 0x3d, 0x98, 0x1a, 0x16, 0x0d, 0x27, - 0x14, 0x03, 0xc7, 0xfd, 0x02, 0x2c, 0xde, 0x88, 0xc5, 0xab, 0x88, 0x44, 0x40, 0x2d, 0xf1, 0x0c, - 0x77, 0x4c, 0xb1, 0xab, 0x5a, 0xec, 0x90, 0x42, 0x9c, 0x2f, 0x09, 0xda, 0xc8, 0xa1, 0x10, 0xda, - 0x89, 0xa0, 0x0c, 0x1a, 0xf4, 0xf0, 0x85, 0xa3, 0x85, 0x02, 0xdb, 0xa2, 0x1b, 0xcf, 0x86, 0xce, - 0xec, 0xd6, 0x07, 0xb1, 0x8b, 0xbc, 0x78, 0x36, 0xbf, 0xa4, 0xf1, 0x07, 0xa0, 0x9f, 0xa9, 0xa8, - 0xdf, 0x7c, 0x0c, 0xe3, 0x30, 0xfa, 0x4d, 0xc3, 0x33, 0x95, 0x87, 0x70, 0xa8, 0xfe, 0x5d, 0x00, - 0x07, 0x28, 0xda, 0x0d, 0x91, 0xc5, 0x8c, 0xd0, 0xcd, 0xe7, 0x73, 0x98, 0xfe, 0x04, 0x4e, 0x1f, - 0x17, 0x51, 0xfa, 0x18, 0xc2, 0xe9, 0xe3, 0xdf, 0x85, 0x78, 0xf8, 0x4f, 0xa1, 0xf4, 0x71, 0x01, - 0xa5, 0x21, 0x08, 0x87, 0x7f, 0x17, 0x42, 0xc6, 0x0f, 0xdb, 0x61, 0x7e, 0x42, 0x7b, 0x54, 0x4c, - 0xbc, 0x71, 0x4d, 0xc3, 0x85, 0xc2, 0x33, 0x7e, 0x1b, 0xd1, 0xe4, 0x22, 0xb7, 0x6a, 0x6d, 0x6d, - 0xc3, 0x76, 0x63, 0x3a, 0xed, 0x51, 0x06, 0x29, 0x64, 0x77, 0x85, 0xfd, 0x07, 0x2a, 0x20, 0xf2, - 0x0b, 0x8d, 0x68, 0x1b, 0x26, 0x74, 0xcb, 0xce, 0xe5, 0xc2, 0xa9, 0xa1, 0xee, 0xb2, 0xb9, 0xe8, - 0x08, 0xb3, 0x39, 0x8f, 0xe1, 0x7c, 0x77, 0x03, 0x8b, 0x05, 0x9f, 0x40, 0xfc, 0x63, 0x06, 0x9c, - 0x18, 0x86, 0x9d, 0xcd, 0x6d, 0xe3, 0x59, 0x39, 0xbb, 0xad, 0xca, 0x46, 0x4e, 0xe3, 0xa5, 0xdb, - 0xdf, 0x33, 0xac, 0x4e, 0xb4, 0x6e, 0x16, 0xeb, 0x66, 0x97, 0xd5, 0xdd, 0x51, 0xac, 0x65, 0x15, - 0x73, 0x58, 0x31, 0xb7, 0xac, 0x62, 0xc3, 0xea, 0x2c, 0xab, 0x98, 0xc7, 0x8a, 0xf9, 0x65, 0x15, - 0x9b, 0xf4, 0xce, 0x76, 0x50, 0x37, 0xc3, 0xb2, 0x23, 0xbc, 0xe8, 0xc8, 0x9d, 0x1f, 0x3a, 0x1b, - 0xb6, 0x8e, 0x68, 0x53, 0x63, 0xa7, 0xa2, 0x85, 0x62, 0x89, 0x60, 0xab, 0xc3, 0xbf, 0x3b, 0x0f, - 0x76, 0x74, 0xed, 0xb6, 0xd4, 0x0f, 0x67, 0xc1, 0x56, 0x17, 0x11, 0x49, 0x14, 0xa8, 0xa9, 0x7f, - 0x3c, 0x0b, 0x31, 0x75, 0xef, 0xc9, 0xbd, 0xaa, 0x69, 0xd7, 0x46, 0xe7, 0xe5, 0xd1, 0x18, 0x7d, - 0x80, 0x99, 0x5a, 0xd4, 0x4c, 0x07, 0xc3, 0xa0, 0x86, 0x26, 0x68, 0x5f, 0xc3, 0x73, 0xa1, 0x21, - 0xee, 0xe1, 0xa4, 0xbf, 0x2d, 0x86, 0xfa, 0x80, 0x5c, 0x63, 0x3b, 0xd8, 0xd8, 0x17, 0x36, 0x40, - 0x97, 0xee, 0xf1, 0x9e, 0x33, 0xdd, 0x42, 0xe0, 0x01, 0x4d, 0x54, 0x31, 0x2b, 0x99, 0xc5, 0xe1, - 0xde, 0xfa, 0x78, 0x05, 0xdb, 0x44, 0x0b, 0x63, 0x16, 0xe5, 0x11, 0x7e, 0x09, 0x43, 0xca, 0xdf, - 0x5b, 0xc3, 0x91, 0xe1, 0x2f, 0x98, 0x27, 0xb1, 0xa3, 0xbd, 0xa9, 0x3f, 0x8b, 0x4b, 0x2c, 0x7e, - 0xd6, 0x7b, 0x08, 0x5c, 0xfa, 0x1e, 0xd8, 0xfb, 0xd0, 0x01, 0x8e, 0xca, 0x89, 0xf0, 0xeb, 0xfa, - 0x45, 0x26, 0x92, 0xb5, 0x20, 0x46, 0x2f, 0x6d, 0xbc, 0x46, 0x45, 0x03, 0x1c, 0x0b, 0xd4, 0xde, - 0xb6, 0x5d, 0x33, 0x0d, 0xfb, 0x85, 0x66, 0x41, 0x72, 0x02, 0x9c, 0x17, 0xb2, 0x78, 0x43, 0x0c, - 0x03, 0x30, 0xe2, 0x4f, 0x3e, 0x57, 0x14, 0xe7, 0x54, 0x90, 0xf8, 0x95, 0x02, 0x71, 0x49, 0xdf, - 0x86, 0x7f, 0x55, 0x2f, 0x76, 0x9a, 0x80, 0xc2, 0x59, 0xea, 0x5b, 0xc8, 0x94, 0x68, 0x98, 0x8c, - 0xd2, 0x3f, 0x84, 0x8d, 0x25, 0xe3, 0x16, 0x8d, 0x6e, 0x6b, 0x4a, 0x9f, 0x9e, 0x04, 0xe3, 0x81, - 0xf7, 0xd6, 0xb7, 0xd4, 0xaf, 0x28, 0x12, 0xfa, 0x6e, 0x10, 0x2d, 0xef, 0x2c, 0x9c, 0xaa, 0x9d, - 0xb0, 0x43, 0xcf, 0x6b, 0xbc, 0x51, 0x15, 0x23, 0xc5, 0xe9, 0x64, 0xea, 0x84, 0xe5, 0xe4, 0x45, - 0x07, 0xba, 0x6f, 0x08, 0xe1, 0x37, 0x17, 0x1d, 0xb9, 0xcd, 0xf2, 0x1f, 0xb3, 0x16, 0x35, 0x1e, - 0xa6, 0xf1, 0xd3, 0x25, 0xcd, 0x81, 0x62, 0x35, 0xd1, 0x41, 0x96, 0x52, 0x55, 0x4a, 0x6c, 0x88, - 0xe9, 0x8e, 0x9b, 0xd4, 0x40, 0x6f, 0xcf, 0xa4, 0x87, 0x8e, 0x5f, 0x91, 0x71, 0x6f, 0x74, 0xbc, - 0x10, 0x7a, 0x94, 0x2c, 0x42, 0xa0, 0x7a, 0xf2, 0x61, 0x2f, 0x59, 0x0b, 0x0b, 0x6e, 0x07, 0x96, - 0x49, 0xe7, 0x46, 0x92, 0x03, 0x70, 0x1a, 0x5e, 0xc8, 0x94, 0x15, 0x0d, 0x59, 0x4b, 0x1b, 0xca, - 0x06, 0x0d, 0xed, 0x7c, 0xa2, 0xa1, 0xfe, 0xd2, 0x86, 0x72, 0x41, 0x43, 0xcd, 0x4f, 0x34, 0xa4, - 0x2d, 0x6d, 0x28, 0x1f, 0x34, 0xb4, 0xeb, 0x37, 0xc4, 0x31, 0x09, 0xe1, 0xd7, 0xe2, 0x84, 0xc7, - 0x18, 0xd2, 0x5d, 0xc2, 0x5f, 0x6e, 0x4a, 0xd7, 0xe2, 0xcd, 0xe8, 0x71, 0xad, 0xc7, 0x5a, 0xd1, - 0xb5, 0x58, 0x0b, 0xba, 0x16, 0xb5, 0x9e, 0xc3, 0x42, 0x88, 0x5e, 0x63, 0xb4, 0xa8, 0xf7, 0x7e, - 0x94, 0xcf, 0xa9, 0x7a, 0x08, 0x70, 0x78, 0x65, 0xb0, 0x2c, 0x04, 0xa3, 0xf3, 0x68, 0xc8, 0x99, - 0x3a, 0xa1, 0x1a, 0x4e, 0xec, 0xf7, 0x79, 0x82, 0xcf, 0xf3, 0xfc, 0x31, 0x13, 0x89, 0x6d, 0x96, - 0x73, 0xa5, 0x92, 0x58, 0xaf, 0xdb, 0x54, 0x6d, 0xdd, 0xce, 0xe7, 0xaa, 0xa5, 0xc2, 0x9c, 0x17, - 0xaf, 0xdd, 0x35, 0x8b, 0x1c, 0x34, 0x14, 0xf5, 0x8e, 0x7e, 0x03, 0x48, 0x40, 0x6e, 0x94, 0x4e, - 0xa7, 0xc5, 0x8c, 0x6b, 0x36, 0xf2, 0x11, 0x05, 0x9a, 0x21, 0x8d, 0x31, 0xe8, 0x00, 0x41, 0xa3, - 0x0b, 0x1a, 0x40, 0xee, 0x74, 0xb7, 0xfe, 0x98, 0x8d, 0xb6, 0xc5, 0x16, 0x8a, 0xd8, 0xc2, 0x03, - 0x7a, 0x90, 0xd0, 0xa7, 0xd3, 0xbd, 0x5d, 0x91, 0x79, 0xab, 0x71, 0xa5, 0x78, 0x1c, 0x01, 0xbc, - 0xdb, 0xe2, 0x3d, 0x5a, 0x92, 0x68, 0x1d, 0xe0, 0x11, 0x50, 0x79, 0xa1, 0x00, 0x8b, 0xe7, 0x03, - 0xea, 0xa4, 0x57, 0x28, 0xb6, 0x5d, 0x94, 0xc8, 0x2f, 0x7a, 0x3d, 0xbc, 0x0d, 0xc4, 0x79, 0xc8, - 0x71, 0x20, 0xba, 0x08, 0xe6, 0x18, 0x6e, 0x98, 0xcf, 0xaf, 0x8c, 0x80, 0xf8, 0xc7, 0x2c, 0x31, - 0xda, 0x1e, 0x4e, 0xaa, 0x9e, 0x3d, 0x3a, 0xb9, 0x91, 0x9d, 0x73, 0xca, 0x4a, 0x67, 0xbe, 0xa0, - 0xf4, 0x9c, 0x12, 0x3d, 0x50, 0x87, 0xfc, 0x6f, 0x2c, 0x41, 0x67, 0xec, 0x1b, 0x4b, 0x1e, 0x57, - 0xe7, 0x46, 0xf1, 0x01, 0x80, 0xe4, 0x03, 0x00, 0x43, 0xf0, 0xf1, 0xc0, 0x75, 0x37, 0x12, 0x51, - 0x9c, 0x76, 0xaa, 0x72, 0xf2, 0x1f, 0x00, 0x59, 0xc0, 0x5e, 0x3d, 0x9f, 0x26, 0xa4, 0xd9, 0x0d, - 0x45, 0x53, 0xfb, 0x7a, 0x15, 0x79, 0xba, 0xe5, 0xa0, 0x23, 0x13, 0x6e, 0x87, 0x58, 0x68, 0x9c, - 0xa2, 0x66, 0x48, 0x31, 0xd5, 0xc3, 0xa4, 0xc5, 0x91, 0xd2, 0x96, 0x98, 0x9d, 0x78, 0x61, 0x53, - 0x37, 0x7a, 0xd1, 0x91, 0x73, 0x54, 0x6c, 0xf4, 0x56, 0x8d, 0x83, 0x33, 0x3e, 0xc2, 0xf2, 0x84, - 0x1e, 0x5c, 0x2b, 0xe7, 0x16, 0x23, 0xd0, 0x47, 0xcf, 0xd3, 0x12, 0x00, 0x5b, 0xc0, 0x91, 0x78, - 0x48, 0x8d, 0x9e, 0x1e, 0xd1, 0x3d, 0xa2, 0x5d, 0xd0, 0x2f, 0x1f, 0xa6, 0xb0, 0x0f, 0x66, 0xef, - 0x5b, 0x4a, 0x4b, 0x7d, 0xb3, 0x1f, 0x57, 0xce, 0xdf, 0xb7, 0x54, 0x62, 0x38, 0xd8, 0xc8, 0xa2, - 0xed, 0xd1, 0x1b, 0xde, 0xb7, 0x94, 0x89, 0x6f, 0x31, 0x83, 0xa3, 0x0d, 0x2e, 0x99, 0x25, 0x37, - 0x6f, 0x2b, 0x00, 0xf5, 0x03, 0xc0, 0xc8, 0x47, 0x80, 0x0d, 0x07, 0x21, 0xa0, 0x12, 0xfd, 0x45, - 0x7a, 0x32, 0xab, 0x68, 0x2b, 0xff, 0xf7, 0x81, 0x15, 0x96, 0xd3, 0x12, 0x6c, 0xff, 0x43, 0x8f, - 0x88, 0x06, 0xf0, 0xe0, 0x4f, 0x80, 0x48, 0x99, 0xac, 0x3f, 0xb3, 0x07, 0x18, 0x17, 0x0c, 0x36, - 0x6d, 0x7f, 0xfc, 0x2d, 0xbc, 0x80, 0xc0, 0xbd, 0x87, 0xa7, 0x4e, 0xfc, 0xd4, 0xda, 0xeb, 0x5b, - 0x66, 0x2c, 0x92, 0xb2, 0xbc, 0x3d, 0x83, 0xa3, 0x4a, 0x28, 0xff, 0xbf, 0x80, 0x23, 0xd8, 0x66, - 0x67, 0xe5, 0xd4, 0x45, 0xa1, 0x82, 0xf2, 0xff, 0x08, 0x54, 0x9f, 0x30, 0xd2, 0x33, 0x93, 0xd0, - 0x32, 0xd9, 0xd5, 0xff, 0x0e, 0x93, 0x1f, 0x49, 0x97, 0xee, 0xb2, 0xf1, 0x1f, 0x7f, 0xe3, 0xe6, - 0xcb, 0xb3, 0xad, 0x86, 0xb7, 0xd4, 0x81, 0xd0, 0x0e, 0xeb, 0x42, 0x40, 0x91, 0xa2, 0xbf, 0xc9, - 0x27, 0xe8, 0xd6, 0xd0, 0x4b, 0xc2, 0xc3, 0xfa, 0x7a, 0x7f, 0xc3, 0xdc, 0xca, 0xae, 0xaf, 0x77, - 0x37, 0x3a, 0x5b, 0xd9, 0xed, 0x36, 0x25, 0x9c, 0x04, 0x49, 0x37, 0x46, 0x5d, 0xd5, 0xb8, 0x26, - 0xec, 0x2e, 0xc6, 0xfa, 0x7a, 0x24, 0x81, 0x9a, 0xdb, 0xc4, 0xea, 0x11, 0x6e, 0xe4, 0x2b, 0x4c, - 0x02, 0x21, 0x00, 0xda, 0xce, 0x50, 0x74, 0xfb, 0xa6, 0x21, 0x77, 0x4d, 0x83, 0x9e, 0x46, 0x30, - 0xab, 0x81, 0x1b, 0x60, 0x0c, 0xfb, 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, 0x27, 0x3a, 0x1f, 0xb7, 0x1c, 0x67, 0xf1, 0x09, 0xb5, 0x1c, 0xb1, 0xf9, 0xd0, 0x96, 0x91, - 0x0f, 0xfe, 0x75, 0x0d, 0xa7, 0x8b, 0x61, 0x42, 0x51, 0x84, 0x5f, 0x4e, 0x3d, 0x2e, 0x64, 0x16, - 0x13, 0xb9, 0xfc, 0xcf, 0xde, 0x9a, 0xa0, 0x93, 0xba, 0x51, 0xca, 0xf0, 0xf2, 0x0e, 0x77, 0x12, - 0x64, 0x7e, 0x8a, 0xc8, 0x42, 0x9f, 0x47, 0x0c, 0x7c, 0x82, 0x3e, 0x03, 0x4a, 0x37, 0x04, 0xca, - 0x2e, 0x75, 0xc0, 0xe1, 0x00, 0xe8, 0xf2, 0xca, 0xe0, 0xd6, 0x5f, 0xfc, 0xda, 0x58, 0x48, 0x1f, - 0x5e, 0x94, 0x1d, 0x81, 0xe4, 0x2c, 0x64, 0x6b, 0xcc, 0x1f, 0x74, 0xee, 0xd9, 0xbd, 0x17, 0x1d, - 0x2a, 0x5c, 0x13, 0x3b, 0x6f, 0x41, 0xdf, 0xaa, 0xb3, 0xf3, 0xf0, 0x5a, 0x70, 0xb3, 0x4b, 0x73, - 0x0f, 0x69, 0x41, 0xad, 0xc4, 0xab, 0xa9, 0x49, 0xcf, 0x8b, 0xd4, 0x7b, 0xf7, 0x42, 0x69, 0xa3, - 0x3f, 0xb3, 0x6f, 0xf9, 0x57, 0xea, 0x72, 0x4d, 0xf9, 0x5e, 0xc7, 0x41, 0xd6, 0x94, 0x54, 0x2a, - 0x19, 0x18, 0xdf, 0x15, 0x6c, 0x20, 0x60, 0x20, 0x8a, 0x7f, 0x9b, 0x88, 0x9a, 0x7a, 0xa9, 0xbf, - 0x3e, 0x5d, 0x0b, 0x0a, 0xda, 0x8e, 0x7f, 0x25, 0xfd, 0xce, 0xfb, 0x16, 0xd6, 0x5d, 0x72, 0x8a, - 0xfc, 0x85, 0xaf, 0x07, 0x80, 0xfd, 0xf2, 0xa1, 0x82, 0x95, 0xfb, 0x39, 0xe0, 0xb3, 0x49, 0x76, - 0x9d, 0xdb, 0x3d, 0x80, 0xf8, 0x9e, 0x0b, 0x8a, 0xf6, 0xbb, 0xa0, 0x96, 0xc2, 0x48, 0x96, 0xf5, - 0x0e, 0xdc, 0x92, 0x0b, 0x09, 0xe4, 0x55, 0x92, 0xd1, 0xf6, 0xed, 0xba, 0xd9, 0x26, 0x7d, 0x30, - 0xfa, 0xa6, 0xbc, 0xf4, 0x94, 0x5b, 0xfa, 0x42, 0xed, 0xca, 0x5f, 0x34, 0x76, 0xeb, 0x33, 0xbc, - 0x4f, 0xf2, 0xcd, 0xb3, 0x91, 0x22, 0x48, 0x73, 0xdb, 0xbb, 0x46, 0x91, 0x84, 0x8d, 0x34, 0xb5, - 0xac, 0x14, 0xf1, 0x4b, 0x7d, 0xf7, 0xe4, 0xbc, 0x00, 0x22, 0x6b, 0x71, 0x74, 0x71, 0x47, 0xf9, - 0x7e, 0x98, 0xf1, 0xa8, 0xfb, 0x83, 0x87, 0x32, 0x60, 0x8c, 0xe1, 0x40, 0x2f, 0x52, 0xf8, 0xa6, - 0x26, 0xba, 0x34, 0x98, 0x76, 0x12, 0xed, 0x03, 0xf8, 0xe0, 0x7b, 0xc3, 0x7b, 0x37, 0x92, 0xbf, - 0x9d, 0xd2, 0xd8, 0xdf, 0x55, 0x16, 0x16, 0x3c, 0xc6, 0x6e, 0x65, 0xf7, 0x79, 0x9e, 0x13, 0x39, - 0xcd, 0x65, 0x81, 0xc3, 0xff, 0xf3, 0x5b, 0xd5, 0xc7, 0x01, 0xf7, 0x49, 0xef, 0x18, 0x63, 0x56, - 0x60, 0x83, 0xda, 0xba, 0x75, 0xdb, 0xec, 0xfa, 0xa6, 0xa7, 0x6f, 0x35, 0xff, 0x98, 0x9e, 0xfa, - 0x33, 0x0a, 0x0c, 0x64, 0x7a, 0x48, 0x45, 0xbd, 0x11, 0xc3, 0x6d, 0xfd, 0x31, 0x73, 0xd2, 0x6a, - 0x77, 0x8e, 0x8e, 0x60, 0x72, 0xbd, 0x8e, 0xcf, 0xdb, 0xa2, 0x6b, 0x97, 0x10, 0xab, 0x4e, 0x1a, - 0x6f, 0x52, 0x80, 0xbe, 0xe4, 0x86, 0x36, 0x4f, 0x61, 0x7e, 0x4a, 0x64, 0x7e, 0xce, 0x73, 0xbf, - 0xcb, 0x5f, 0x35, 0x42, 0x9d, 0xb8, 0x43, 0x36, 0x2f, 0xd7, 0x9b, 0xdb, 0xad, 0x19, 0xf2, 0x17, - 0x8c, 0xe4, 0x2c, 0x9b, 0x3b, 0xce, 0x35, 0x31, 0xa6, 0x2c, 0x47, 0x7d, 0x8b, 0x27, 0x7d, 0xbe, - 0x4f, 0xad, 0xeb, 0xf4, 0x49, 0x7d, 0x70, 0x25, 0x7a, 0xde, 0x47, 0x3c, 0xdf, 0x54, 0xff, 0x54, - 0x12, 0xef, 0x19, 0x38, 0xdf, 0x89, 0x3b, 0xa9, 0x35, 0x07, 0xd6, 0x3c, 0xf9, 0xe1, 0xfc, 0xac, - 0xcf, 0xd4, 0x6e, 0x15, 0x1f, 0xd0, 0x7d, 0x01, 0x35, 0x43, 0xf6, 0x92, 0xfd, 0x39, 0xc7, 0x36, - 0x78, 0x07, 0x51, 0xea, 0xde, 0x44, 0xaf, 0xa3, 0x6b, 0x04, 0x03, 0x4f, 0x29, 0x16, 0x49, 0x38, - 0x34, 0x31, 0x89, 0xbe, 0x0a, 0x9e, 0xf3, 0x2b, 0xb6, 0x27, 0xb3, 0x96, 0xc4, 0x16, 0xde, 0xde, - 0x15, 0xe7, 0x01, 0x10, 0xf4, 0x4e, 0x25, 0xf1, 0xe8, 0x09, 0x2f, 0xe6, 0x4b, 0x3a, 0xfc, 0xd0, - 0x6b, 0xdd, 0xa2, 0x20, 0xa2, 0xc7, 0x87, 0xc8, 0x62, 0x36, 0xd0, 0xce, 0x54, 0xbd, 0x4b, 0xa6, - 0x17, 0xbd, 0x84, 0x78, 0xdd, 0xba, 0xdb, 0x15, 0x93, 0xdf, 0x65, 0xea, 0xbf, 0x18, 0x26, 0x5a, - 0xe6, 0x59, 0x8b, 0xde, 0xea, 0xcc, 0x09, 0xd7, 0x25, 0x5a, 0xec, 0x04, 0x23, 0x33, 0xb0, 0x54, - 0xbc, 0xb0, 0xc2, 0x32, 0xb6, 0xc5, 0x5a, 0xed, 0x4b, 0x2d, 0x0b, 0x62, 0x83, 0x97, 0x51, 0x63, - 0xd8, 0x41, 0x7f, 0x09, 0x6d, 0xfb, 0xc7, 0xcf, 0xaa, 0xe6, 0x5d, 0x48, 0xaf, 0xd1, 0xc0, 0x12, - 0x8e, 0x5b, 0xf1, 0x7b, 0xfe, 0xf7, 0x6f, 0xea, 0x53, 0x41, 0xdd, 0x55, 0xa1, 0x1c, 0xfe, 0x7a, - 0x45, 0x25, 0x7a, 0xf7, 0x31, 0xe6, 0xfe, 0x39, 0x8d, 0xbf, 0xe5, 0x45, 0x41, 0xa3, 0x17, 0xcf, - 0xdd, 0xfb, 0x14, 0xc1, 0xa7, 0xf1, 0xbc, 0xe3, 0x4f, 0xbf, 0xa3, 0x82, 0xdf, 0x51, 0xfe, 0xe7, - 0x36, 0xc8, 0xa1, 0x55, 0x7c, 0xa8, 0xc9, 0xf4, 0x5e, 0x57, 0x02, 0x3d, 0x55, 0x92, 0x92, 0xc2, - 0xf5, 0x95, 0x50, 0x00, 0x4f, 0x1d, 0x6d, 0x84, 0xe1, 0x5d, 0x41, 0x3e, 0x0c, 0x3a, 0x60, 0x9f, - 0xb4, 0xc3, 0xc2, 0x41, 0x7e, 0x96, 0xcf, 0xa7, 0x5f, 0x94, 0x0b, 0xe7, 0xe7, 0xb8, 0x7c, 0xf6, - 0x41, 0xb7, 0x70, 0xfe, 0x98, 0xcf, 0xa7, 0x9f, 0x53, 0x0b, 0xe7, 0xf7, 0xc2, 0xf9, 0xc5, 0x1a, - 0xfa, 0x06, 0x39, 0xa9, 0x7a, 0x1f, 0xaf, 0xe9, 0xe2, 0x8e, 0x02, 0x44, 0x8d, 0x8e, 0x7c, 0x87, - 0xce, 0x50, 0x4b, 0xe0, 0x67, 0x35, 0x25, 0x22, 0xe9, 0x12, 0x8a, 0x27, 0xfb, 0x0f, 0x80, 0x45, - 0xea, 0x49, 0xc0, 0x36, 0x44, 0xef, 0x93, 0x95, 0xfc, 0x7e, 0x18, 0xe3, 0x82, 0xeb, 0xbb, 0xce, - 0x33, 0x2f, 0x7b, 0xdf, 0x25, 0xdb, 0x7d, 0x0b, 0x79, 0x38, 0x67, 0x7f, 0x46, 0xc9, 0x97, 0xba, - 0xc0, 0xba, 0x65, 0x3d, 0x02, 0xfe, 0x21, 0x4b, 0x3e, 0x6f, 0xf8, 0xe9, 0xc5, 0xf4, 0x02, 0xb2, - 0xf4, 0x17, 0x12, 0xd2, 0x30, 0xad, 0x82, 0x9c, 0x26, 0x7e, 0x60, 0xee, 0x05, 0x02, 0x51, 0x42, - 0xbf, 0x65, 0x09, 0xbb, 0xa1, 0x63, 0xbc, 0xf4, 0x92, 0x7f, 0x45, 0x3f, 0x08, 0x69, 0xd2, 0x43, - 0x44, 0x57, 0x45, 0xfa, 0x63, 0x06, 0xad, 0x42, 0xd9, 0x4b, 0x48, 0x6c, 0xda, 0x76, 0x82, 0xba, - 0x65, 0xfb, 0xfe, 0x98, 0xbf, 0xe8, 0x36, 0xc8, 0x7c, 0x30, 0xbd, 0x8f, 0x06, 0x87, 0xf8, 0xce, - 0x17, 0x2f, 0xdc, 0x9f, 0x77, 0xdc, 0x0f, 0x53, 0xe2, 0x7b, 0xc0, 0xe1, 0x17, 0x57, 0xa9, 0xc5, - 0x25, 0xe9, 0xbb, 0x2b, 0x00, 0x63, 0x20, 0xdf, 0x17, 0x0b, 0x00, 0xbb, 0x4b, 0x79, 0x0e, 0x09, - 0x0b, 0xa1, 0x35, 0x00, 0x10, 0xdf, 0x51, 0xda, 0x07, 0x82, 0x8f, 0x88, 0x81, 0x57, 0x56, 0xd3, - 0xc6, 0xc8, 0x71, 0xa1, 0xfa, 0x00, 0x4d, 0xb0, 0x41, 0x6f, 0x10, 0x49, 0xfc, 0x6f, 0xc1, 0xfd, - 0xb8, 0x8d, 0x98, 0x42, 0x7e, 0xf0, 0xdf, 0xe2, 0xbf, 0x83, 0x35, 0xda, 0x26, 0x8f, 0x36, 0xce, - 0x57, 0xc2, 0x22, 0x5d, 0x4b, 0x99, 0xb8, 0x85, 0xfd, 0x88, 0x1b, 0x31, 0xf7, 0xd7, 0xc5, 0xaf, - 0xee, 0xf0, 0x84, 0x34, 0x75, 0x61, 0x4e, 0xd6, 0x78, 0x2f, 0x7a, 0x81, 0x04, 0x5e, 0x1b, 0x04, - 0x16, 0x70, 0xa8, 0x7a, 0x42, 0x4c, 0xfb, 0x30, 0x26, 0x31, 0x02, 0x9c, 0x17, 0x77, 0xae, 0x1e, - 0x99, 0x5d, 0x3f, 0xc2, 0x9f, 0xda, 0x4d, 0x86, 0xe3, 0x88, 0xf0, 0xc5, 0x98, 0x93, 0x39, 0x1f, - 0xdb, 0x36, 0xb8, 0xa6, 0x1b, 0xa4, 0x21, 0x3f, 0x43, 0x17, 0x6f, 0xc7, 0xbb, 0x52, 0xe8, 0xca, - 0x00, 0x55, 0x81, 0x6e, 0xf8, 0xb5, 0x6c, 0xdd, 0xe7, 0x33, 0xe8, 0x98, 0x09, 0x84, 0x59, 0xa7, - 0x24, 0x1a, 0xe6, 0xa9, 0x74, 0x5d, 0xb8, 0xf9, 0xe8, 0x8d, 0x0b, 0xa8, 0x4c, 0x7a, 0xf7, 0xbd, - 0x5d, 0xff, 0xf2, 0x80, 0x72, 0xbc, 0xf6, 0x18, 0xbd, 0xb0, 0x2d, 0x59, 0xab, 0x3b, 0x1e, 0x67, - 0x55, 0x24, 0x43, 0x52, 0x25, 0x0b, 0xe4, 0xb7, 0xda, 0x02, 0xef, 0xd6, 0x92, 0x49, 0xab, 0xce, - 0xf9, 0xee, 0xa0, 0xd3, 0x79, 0x06, 0x3a, 0xfb, 0x13, 0x23, 0x18, 0x48, 0xcc, 0xf1, 0x5c, 0x32, - 0xea, 0x18, 0x31, 0x47, 0x52, 0xeb, 0x18, 0x0e, 0x87, 0x46, 0x1a, 0x11, 0x30, 0x14, 0x8a, 0x85, - 0xfc, 0x3a, 0xa9, 0x20, 0x6c, 0xae, 0x6f, 0x9f, 0xa2, 0x77, 0x8d, 0x61, 0x02, 0x5d, 0x47, 0x16, - 0xd3, 0xd4, 0xc5, 0xb4, 0x20, 0x68, 0x09, 0xa1, 0x1d, 0x6d, 0x64, 0x5d, 0x0f, 0x44, 0x76, 0x15, - 0xde, 0x66, 0xc2, 0x27, 0xd0, 0xb2, 0x45, 0xf4, 0x9a, 0xc2, 0xf9, 0xb9, 0xe0, 0x66, 0xe2, 0x4d, - 0x99, 0x85, 0xdd, 0xc5, 0x67, 0xf5, 0xb1, 0xd7, 0xf8, 0xac, 0x76, 0x72, 0xfe, 0x05, 0x66, 0xa2, - 0x6e, 0x01, 0x8e, 0x43, 0x08, 0x20, 0x19, 0x0f, 0x9b, 0x14, 0x05, 0x78, 0x15, 0x9e, 0xba, 0xd5, - 0xbb, 0xb1, 0x0c, 0x15, 0x0c, 0x63, 0x68, 0xe0, 0x1f, 0x75, 0x9e, 0xc4, 0x80, 0x8a, 0xf3, 0x7f, - 0x01, 0x59, 0xbb, 0x97, 0x8e, 0x03, 0x1f, 0xbd, 0xaa, 0x10, 0x8d, 0xc1, 0x88, 0xc1, 0xab, 0xd1, - 0xe2, 0x25, 0x61, 0xbc, 0x9e, 0x67, 0x43, 0xa5, 0x81, 0x22, 0x6a, 0xbf, 0xc2, 0xc4, 0xb6, 0xb8, - 0x40, 0xe9, 0xc5, 0x66, 0xe0, 0xcf, 0xb8, 0x2d, 0x4b, 0x4a, 0xe8, 0x86, 0x73, 0x64, 0x25, 0x32, - 0xb9, 0x0a, 0xcf, 0x0d, 0x69, 0x88, 0x72, 0xd7, 0xd2, 0x47, 0x4f, 0xec, 0x50, 0xdf, 0xc2, 0xfb, - 0xcd, 0x78, 0xa4, 0xc6, 0x39, 0x25, 0xd2, 0x3c, 0x10, 0xad, 0xd0, 0xee, 0xa4, 0xa0, 0x7d, 0xe9, - 0xdb, 0xdc, 0xd0, 0x9b, 0x4c, 0xf9, 0xfa, 0x63, 0xa6, 0xcf, 0x69, 0xe8, 0xc6, 0xa4, 0x7f, 0xc2, - 0xe7, 0xea, 0x69, 0x6e, 0xaa, 0xb0, 0xf2, 0xc3, 0xbb, 0xf1, 0xc7, 0x4f, 0x91, 0x13, 0x41, 0x5a, - 0x95, 0xb3, 0xa1, 0x20, 0x80, 0x28, 0x74, 0xe0, 0x33, 0x99, 0x8b, 0xe1, 0x93, 0x3e, 0x5a, 0x38, - 0xac, 0x07, 0x2f, 0xfb, 0xa2, 0x6f, 0xa8, 0x5e, 0xf0, 0x3d, 0x5f, 0x76, 0xbb, 0x3b, 0x74, 0x10, - 0xe2, 0x1e, 0xf7, 0x83, 0x4e, 0xee, 0xab, 0x82, 0xfe, 0x74, 0xb4, 0x11, 0x48, 0x5c, 0xf3, 0xae, - 0xdb, 0x12, 0x71, 0x5d, 0x96, 0x72, 0x55, 0xe6, 0x81, 0x94, 0xab, 0xba, 0xeb, 0x7b, 0xaf, 0x75, - 0x99, 0xcf, 0x89, 0x9e, 0x5f, 0x12, 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, 0xce, 0xe9, 0x51, 0x84, 0x4b, 0x82, 0xe2, 0x36, 0x3f, 0x02, 0x3d, 0x74, 0xab, 0x58, - 0xc4, 0x90, 0x42, 0xf4, 0x5a, 0x20, 0xa6, 0x6f, 0x83, 0x6c, 0x67, 0x56, 0xd9, 0xf3, 0xe2, 0xa6, - 0xce, 0x42, 0xd5, 0xd3, 0x58, 0xba, 0x8c, 0xe7, 0x00, 0xf5, 0xe9, 0xf8, 0x07, 0x24, 0x3a, 0x64, - 0x22, 0x20, 0x75, 0x62, 0x89, 0xa4, 0xaf, 0xcb, 0xa2, 0x17, 0x9b, 0x9b, 0xf8, 0x17, 0x64, 0x56, - 0xaf, 0x99, 0x24, 0x34, 0xa9, 0xb0, 0x44, 0x97, 0x1d, 0xac, 0x38, 0x3d, 0xc2, 0x43, 0xf2, 0x5c, - 0x79, 0x5d, 0xa1, 0x91, 0xa3, 0xe8, 0xc9, 0x04, 0x9e, 0xd0, 0xf0, 0xc7, 0x48, 0xd6, 0xd0, 0xb9, - 0xe9, 0x6b, 0x89, 0x6f, 0xb0, 0x5c, 0x61, 0x90, 0xf3, 0x6f, 0xf4, 0x73, 0x56, 0xc9, 0x9a, 0x18, - 0x76, 0xd2, 0xa2, 0x77, 0x75, 0x3d, 0x6f, 0xc4, 0x5f, 0x71, 0x37, 0x4c, 0xfd, 0xfb, 0x51, 0xb4, - 0x99, 0xd0, 0x77, 0xa5, 0xdd, 0x0f, 0xc0, 0xbb, 0xf7, 0xc3, 0xbf, 0xd1, 0xd0, 0xe5, 0x99, 0x8c, - 0xd7, 0x21, 0xf5, 0x87, 0xe5, 0xc8, 0xb3, 0xed, 0x51, 0x20, 0x9b, 0x12, 0x25, 0xe9, 0xde, 0xa8, - 0xc1, 0xf2, 0x63, 0xb5, 0xfb, 0x3d, 0x97, 0x97, 0x37, 0xb3, 0x79, 0x19, 0x07, 0x43, 0xb8, 0x8b, - 0x55, 0xd2, 0x2f, 0xa8, 0x41, 0xc9, 0x30, 0x9b, 0xdb, 0x74, 0x07, 0x0c, 0x55, 0xd1, 0x89, 0x41, - 0x65, 0x7a, 0x14, 0xad, 0xbe, 0x2d, 0x9e, 0x67, 0x1a, 0x62, 0x95, 0x3e, 0xcf, 0xe9, 0xc8, 0x40, - 0xa0, 0x4a, 0xa5, 0xe6, 0x04, 0x9d, 0xed, 0xbf, 0xcb, 0xdb, 0x36, 0xc8, 0x82, 0xa1, 0xcf, 0x64, - 0xe0, 0x2d, 0x5d, 0xd8, 0x95, 0xd0, 0xdc, 0xd7, 0x4d, 0x8b, 0x55, 0x99, 0x7a, 0xef, 0x25, 0xb0, - 0xd8, 0xb9, 0x21, 0x18, 0x78, 0x9d, 0x38, 0xf8, 0x56, 0x82, 0xd0, 0x43, 0x7e, 0x96, 0x46, 0x41, - 0x1c, 0x95, 0x3a, 0xdf, 0xcb, 0x59, 0xe0, 0x3c, 0x39, 0x9b, 0xcc, 0x09, 0xd5, 0xaf, 0x54, 0x45, - 0x7f, 0x4e, 0x3a, 0x9b, 0x73, 0x56, 0x52, 0x67, 0xf7, 0x76, 0x22, 0xde, 0x9b, 0x7a, 0x48, 0x6a, - 0xb2, 0xc3, 0xf7, 0x0a, 0xdd, 0x8f, 0x25, 0xc4, 0x5e, 0x28, 0x64, 0x9f, 0x96, 0xf8, 0xd4, 0x7d, - 0x42, 0xff, 0xe2, 0xfa, 0x48, 0xeb, 0xd2, 0x90, 0xf8, 0xd8, 0xb6, 0x80, 0x8d, 0x0b, 0x28, 0x53, - 0xb0, 0x18, 0x22, 0xb1, 0x17, 0x0d, 0xe3, 0x3e, 0x92, 0x23, 0x85, 0xd7, 0x87, 0x27, 0xb1, 0x49, - 0xe4, 0x83, 0x3b, 0x95, 0x0b, 0x41, 0x70, 0xa8, 0x21, 0x87, 0xc9, 0x13, 0x2c, 0x86, 0x14, 0x71, - 0xa5, 0x85, 0x5a, 0x10, 0xc2, 0x0b, 0x51, 0x8a, 0xfd, 0x7c, 0xd6, 0x7d, 0x15, 0x6f, 0xad, 0xe1, - 0xd2, 0x04, 0xdd, 0x67, 0x69, 0x80, 0x62, 0x87, 0x3a, 0xc3, 0x7a, 0x21, 0x6b, 0xee, 0x90, 0xf3, - 0xd2, 0x20, 0xb3, 0x7d, 0x31, 0xe9, 0xad, 0x74, 0x92, 0x1e, 0x28, 0x76, 0xc3, 0x71, 0x2c, 0x15, - 0xc8, 0x10, 0x72, 0x87, 0xca, 0x54, 0x4c, 0x02, 0xb7, 0x50, 0xbc, 0x24, 0x7a, 0x03, 0x84, 0x19, - 0x0d, 0xaa, 0xb0, 0xa5, 0x7b, 0x11, 0x48, 0x78, 0xdf, 0x5f, 0x9a, 0x99, 0x81, 0x25, 0xa7, 0x7f, - 0xa7, 0x81, 0x2f, 0x60, 0xa1, 0xe5, 0x98, 0xf4, 0xa2, 0xd5, 0x17, 0xa2, 0x13, 0x57, 0x58, 0x70, - 0x62, 0x76, 0xa4, 0xdd, 0xee, 0x27, 0x29, 0xbd, 0xfc, 0xcb, 0x4b, 0xe8, 0x6c, 0x94, 0xdc, 0x94, - 0xe4, 0xaf, 0xda, 0xb2, 0x40, 0x78, 0xda, 0x9c, 0x19, 0xd4, 0x42, 0x68, 0x5b, 0x86, 0x41, 0x3f, - 0x72, 0x1d, 0xfb, 0xf6, 0x23, 0x43, 0x9c, 0xe2, 0x6a, 0x71, 0xbe, 0x0c, 0xef, 0x59, 0x45, 0x82, - 0x40, 0xaf, 0x5c, 0x54, 0x23, 0x1a, 0xa8, 0x35, 0xcd, 0x3e, 0x8e, 0xf2, 0x77, 0xbb, 0x8c, 0x0b, - 0x31, 0xc4, 0x7d, 0x9c, 0xd2, 0x0d, 0x9e, 0x13, 0x21, 0x1c, 0x34, 0x07, 0x72, 0xd1, 0xf9, 0x98, - 0xf9, 0x8a, 0xa0, 0x85, 0xcb, 0xa3, 0x9f, 0x48, 0xdc, 0x98, 0x48, 0x29, 0x77, 0x54, 0xa0, 0x54, - 0xc7, 0x96, 0x08, 0x6c, 0x60, 0x8b, 0x27, 0x76, 0x4e, 0x95, 0x46, 0x9b, 0xb1, 0x37, 0x3c, 0x9b, - 0x68, 0xa8, 0xe9, 0xc7, 0x5f, 0x28, 0x2d, 0x86, 0xda, 0xc2, 0x24, 0xa3, 0x1e, 0x01, 0x00, 0x04, - 0xb2, 0x48, 0x87, 0x20, 0x98, 0xf2, 0x29, 0x46, 0x0f, 0x92, 0x3a, 0x4c, 0x02, 0x1c, 0xbe, 0xb4, - 0x1e, 0x0f, 0x61, 0x9d, 0x77, 0x83, 0xd7, 0x5d, 0x16, 0x51, 0x52, 0xb5, 0xcf, 0x70, 0xcf, 0x70, - 0xb6, 0xea, 0xd4, 0xbf, 0x34, 0x89, 0xfc, 0x4b, 0x73, 0xaf, 0xeb, 0xcb, 0x92, 0x96, 0x66, 0x5f, - 0x6f, 0x80, 0x5f, 0x55, 0xc7, 0xd8, 0xd4, 0x6c, 0x76, 0x59, 0x76, 0x16, 0xb4, 0x65, 0xcc, 0xa6, - 0xbf, 0x2c, 0xdb, 0xa0, 0x0f, 0xcc, 0x53, 0xd5, 0xa0, 0x99, 0x9e, 0x05, 0x70, 0x23, 0x2b, 0xa9, - 0x41, 0x66, 0x8a, 0xbe, 0x71, 0xd9, 0x52, 0x67, 0x7d, 0xbd, 0xb3, 0xc4, 0xe2, 0xd9, 0x5d, 0x5f, - 0xef, 0x2e, 0xc9, 0x02, 0xa1, 0xd3, 0x5a, 0x6a, 0x8d, 0x62, 0x42, 0x71, 0xa4, 0xe1, 0x88, 0xb1, - 0x31, 0xd2, 0x76, 0x24, 0x37, 0xd2, 0x3c, 0xd7, 0x33, 0x9d, 0x39, 0x4e, 0x5a, 0xd6, 0x3c, 0x7a, - 0xe0, 0xc4, 0x64, 0x65, 0x29, 0x05, 0x18, 0x40, 0x01, 0x35, 0xfd, 0xcf, 0xba, 0xba, 0x61, 0xd0, - 0x86, 0xcc, 0xd0, 0xc4, 0xe1, 0xb1, 0x0c, 0x53, 0x8c, 0x81, 0x44, 0xf0, 0x1c, 0x08, 0x8a, 0xa1, - 0xe1, 0xd2, 0x5c, 0x5f, 0x37, 0x97, 0x0f, 0x96, 0x0b, 0x23, 0xea, 0x9b, 0x1b, 0xc2, 0x3a, 0xdc, - 0x2f, 0xaa, 0xc3, 0xfd, 0xe0, 0x04, 0xd9, 0xe0, 0xa3, 0x1c, 0x73, 0xf1, 0x27, 0xeb, 0xd2, 0x61, - 0x72, 0x83, 0xbd, 0x44, 0x03, 0xa4, 0xdb, 0xaf, 0xbb, 0xd9, 0xdc, 0x90, 0xa9, 0x23, 0xe9, 0x21, - 0xd0, 0xa9, 0x13, 0x27, 0x34, 0xa4, 0xd3, 0xf0, 0x9e, 0xbe, 0xc9, 0xeb, 0xff, 0xfd, 0x3f, 0xfe, - 0x2f, 0xb4, 0x78, 0x6d, 0xeb, 0x4b, 0xc1, 0xaf, 0xea, 0xcb, 0x2e, 0x63, 0x31, 0x9b, 0xa2, 0x89, - 0x17, 0x92, 0x57, 0xdc, 0xea, 0xf2, 0x00, 0x70, 0xcc, 0x5f, 0x21, 0x33, 0x3b, 0x65, 0x67, 0x26, - 0xc8, 0xda, 0xec, 0x56, 0x72, 0x92, 0x5a, 0xe4, 0xf4, 0xad, 0xec, 0xb6, 0x59, 0xc7, 0xb8, 0x4b, - 0x20, 0xc7, 0xd9, 0x62, 0x15, 0x3d, 0x05, 0xb1, 0xfd, 0xba, 0x98, 0xa5, 0x4e, 0x1b, 0xb0, 0x3a, - 0x61, 0x2b, 0xf9, 0x12, 0x1a, 0x59, 0xdf, 0x82, 0x96, 0x19, 0x67, 0xef, 0xc7, 0x2f, 0x79, 0x5a, - 0xc2, 0x23, 0x83, 0xd1, 0x12, 0xc6, 0x61, 0x76, 0xfc, 0x32, 0x68, 0x05, 0xc3, 0x8b, 0x03, 0xfd, - 0xba, 0x7b, 0x5f, 0xac, 0xc7, 0xd8, 0x7f, 0x87, 0xc0, 0x8e, 0xa6, 0x67, 0x12, 0xfd, 0xd4, 0x08, - 0x14, 0x55, 0xf7, 0x23, 0x03, 0x3d, 0x7a, 0x98, 0xb0, 0x95, 0xfd, 0xfd, 0x7b, 0xb4, 0x25, 0xe3, - 0xb3, 0x09, 0x32, 0x84, 0x00, 0x1a, 0x44, 0x6f, 0x2e, 0x8c, 0x55, 0xcb, 0x19, 0x29, 0x5a, 0x12, - 0xd4, 0x27, 0x6a, 0xd2, 0xf7, 0xd6, 0x32, 0x2b, 0x25, 0x0a, 0x3f, 0xf0, 0x6e, 0xa9, 0xf9, 0x33, - 0x82, 0x29, 0xa0, 0xc3, 0x50, 0x84, 0x22, 0x33, 0xca, 0x21, 0xf1, 0x76, 0x29, 0x93, 0x21, 0x6b, - 0xc4, 0x0b, 0x2d, 0x87, 0xf7, 0x50, 0xc5, 0x64, 0xd8, 0x7c, 0x44, 0x92, 0xb1, 0x71, 0xbb, 0x3c, - 0x7f, 0xc8, 0x24, 0x57, 0x1b, 0x2f, 0xcf, 0xff, 0xd5, 0xda, 0x30, 0x5f, 0xa1, 0x2f, 0xc3, 0xe0, - 0xed, 0xff, 0x70, 0x7c, 0xa7, 0x50, 0xf6, 0xdc, 0xf8, 0x45, 0x23, 0x59, 0x3a, 0x51, 0x62, 0x09, - 0x9a, 0x94, 0x12, 0xcb, 0xea, 0xbe, 0x6a, 0xed, 0x5f, 0x34, 0xd2, 0xe4, 0xf2, 0xca, 0xf3, 0x28, - 0x9a, 0x30, 0xae, 0xc1, 0x8c, 0xbb, 0xb5, 0x79, 0x69, 0x4c, 0x88, 0xe5, 0xd9, 0xbd, 0x71, 0xaf, - 0xaa, 0xe3, 0x67, 0x78, 0xb6, 0xbd, 0x10, 0x7a, 0x18, 0xd2, 0x8b, 0xbf, 0xe3, 0xa9, 0x85, 0x8a, - 0xea, 0x5a, 0x63, 0x59, 0xc9, 0xd6, 0x9b, 0xde, 0x09, 0x95, 0xf5, 0xbe, 0xd8, 0x13, 0xaa, 0xc0, - 0x60, 0x6a, 0xf9, 0xeb, 0xda, 0x0f, 0xbf, 0xd0, 0x0a, 0x3e, 0xb9, 0x83, 0x06, 0x96, 0x04, 0xf7, - 0x09, 0x9e, 0xc5, 0x43, 0x31, 0x77, 0xff, 0xdc, 0xc1, 0x33, 0xa5, 0xa5, 0xb9, 0x2d, 0x93, 0x20, - 0x42, 0x96, 0xe6, 0x1f, 0x79, 0x5f, 0x9d, 0x5f, 0x51, 0xa6, 0x99, 0x5d, 0x95, 0x99, 0x5b, 0x95, - 0x99, 0xc7, 0x4c, 0xef, 0x1b, 0x0a, 0x89, 0x25, 0xa5, 0xae, 0x57, 0xb4, 0x70, 0xb0, 0x22, 0x6f, - 0x87, 0x06, 0x34, 0x08, 0x3e, 0xcc, 0xb0, 0xa4, 0xd8, 0xbd, 0x98, 0xe4, 0x3f, 0x94, 0xc0, 0xc5, - 0xa7, 0x67, 0xe6, 0xc4, 0x09, 0x5e, 0x56, 0x59, 0x38, 0xc2, 0xf2, 0x9a, 0x8d, 0x1e, 0x60, 0xb1, - 0x2a, 0x6d, 0x45, 0x8b, 0xab, 0xd1, 0x6c, 0xde, 0xc4, 0x96, 0x1f, 0x90, 0xe9, 0x64, 0xa1, 0x3c, - 0xc1, 0xd8, 0xff, 0xb1, 0xc5, 0xd9, 0x07, 0x81, 0xe2, 0x3a, 0xa0, 0x78, 0x04, 0xc1, 0x8b, 0x16, - 0x88, 0xef, 0x6a, 0xd9, 0x68, 0xd8, 0x67, 0x2c, 0x56, 0xd6, 0xb5, 0xff, 0x8d, 0xba, 0xe3, 0x15, - 0x75, 0x63, 0x2b, 0xbc, 0xac, 0xee, 0x6c, 0x05, 0x36, 0xad, 0x7e, 0x7b, 0x65, 0x5d, 0x82, 0xdf, - 0x1d, 0x88, 0xad, 0xf9, 0xda, 0xb1, 0x37, 0x26, 0x2b, 0xea, 0xd1, 0x0f, 0x2f, 0x45, 0x6b, 0x72, - 0xd7, 0xf8, 0xdd, 0x47, 0x1a, 0xf3, 0xd2, 0xb2, 0x13, 0x0b, 0xf2, 0x6a, 0x74, 0xfd, 0x86, 0xa2, - 0xdc, 0x05, 0x76, 0x6b, 0x69, 0x71, 0xe3, 0xfe, 0xc5, 0xc2, 0x96, 0x32, 0x7b, 0x90, 0x67, 0xa5, - 0xfe, 0xf9, 0xc3, 0x37, 0x16, 0x11, 0xb6, 0xf7, 0xdb, 0x74, 0xcb, 0xe6, 0x8f, 0xd7, 0x99, 0x05, - 0x71, 0x51, 0x0e, 0xe0, 0x98, 0x33, 0x7e, 0x5b, 0x68, 0x25, 0xfb, 0x96, 0x9c, 0x0f, 0x85, 0x10, - 0xd6, 0x3f, 0x32, 0xdd, 0xcf, 0x95, 0x5c, 0xce, 0x9b, 0x39, 0x71, 0x3a, 0x6a, 0xf3, 0xc4, 0xfb, - 0xd0, 0x28, 0x4a, 0x91, 0xef, 0xa5, 0xa4, 0x16, 0xd6, 0x19, 0x22, 0x32, 0x1f, 0xd9, 0xca, 0xad, - 0xaf, 0xd3, 0x28, 0x21, 0x2b, 0x8a, 0xe4, 0xb1, 0x48, 0xee, 0xe7, 0x6a, 0xd1, 0x53, 0x08, 0x5d, - 0xa2, 0xd4, 0x92, 0x62, 0x96, 0xda, 0x8c, 0x3c, 0xc3, 0x29, 0x96, 0x44, 0xca, 0xf8, 0xe0, 0x80, - 0x74, 0x91, 0xa3, 0xf3, 0x71, 0xe9, 0x3c, 0x51, 0x4f, 0x42, 0x4d, 0x77, 0xc5, 0xbc, 0xf7, 0xa6, - 0xfc, 0x94, 0x47, 0xe5, 0x3e, 0x0c, 0x95, 0xe0, 0x2c, 0xcc, 0xbd, 0xbd, 0xd0, 0x64, 0x68, 0xee, - 0x5d, 0x82, 0x59, 0x35, 0xf9, 0x5e, 0xf0, 0x53, 0xf6, 0x91, 0x47, 0x16, 0xd8, 0xc8, 0xbf, 0x1a, - 0xff, 0x37, 0x84, 0x53, 0x3d, 0x39, 0xd3, 0x57, 0xec, 0xeb, 0x18, 0x22, 0x83, 0x1e, 0x23, 0x5f, - 0x2a, 0x16, 0x8c, 0xda, 0xc1, 0x85, 0x14, 0xb4, 0xe2, 0xa9, 0xcd, 0x24, 0xe6, 0x64, 0x84, 0x3f, - 0x10, 0x61, 0x56, 0x7f, 0x77, 0xce, 0xa8, 0x82, 0x18, 0xcc, 0x99, 0x61, 0x3a, 0xe1, 0x28, 0x33, - 0xfc, 0x97, 0x8e, 0x20, 0x93, 0x3b, 0x6e, 0xad, 0x11, 0xee, 0x2c, 0x84, 0x9e, 0x6d, 0x82, 0xbc, - 0xe7, 0x7e, 0x0f, 0xef, 0xf7, 0xef, 0xac, 0xff, 0x0c, 0x19, 0x5f, 0xf0, 0x50, 0x14, 0x03, 0xef, - 0xe6, 0x7f, 0x06, 0x32, 0xb3, 0x4c, 0xcf, 0x88, 0x7f, 0xff, 0x66, 0x6e, 0x1a, 0x98, 0xc7, 0xfe, - 0x06, 0x25, 0x60, 0x7b, 0xdc, 0xaa, 0xcb, 0xd1, 0xd4, 0x2c, 0x95, 0xb4, 0x97, 0x90, 0x55, 0x95, - 0x2c, 0x8f, 0xb6, 0xe0, 0x6a, 0xfe, 0xfa, 0xe7, 0xe4, 0x7e, 0xa3, 0x1e, 0x71, 0xf5, 0x59, 0x0c, - 0x97, 0xdc, 0x55, 0xc7, 0x3f, 0xa2, 0xf7, 0xbb, 0xbc, 0x80, 0xc9, 0x1c, 0x92, 0x8d, 0xa4, 0xb2, - 0xa8, 0x29, 0x2c, 0x87, 0xb3, 0xba, 0x64, 0x68, 0xb5, 0xbf, 0x02, 0x91, 0x77, 0xc7, 0xe9, 0x43, - 0x70, 0xfe, 0xcf, 0xff, 0x1b, 0xc1, 0x59, 0x5f, 0x0f, 0xa5, 0xfd, 0x3f, 0x7f, 0x13, 0xc5, 0x9c, - 0xec, 0xe8, 0x6e, 0x10, 0xd7, 0x18, 0x02, 0x90, 0x59, 0x87, 0xd9, 0xfe, 0x43, 0xbf, 0x1f, 0xba, - 0x18, 0xec, 0xc4, 0x8b, 0x49, 0x42, 0x1d, 0x3e, 0x40, 0xbe, 0x40, 0xbe, 0xe1, 0x5e, 0x7b, 0x01, - 0x48, 0x44, 0x5a, 0x10, 0xad, 0x69, 0x8f, 0x09, 0xd9, 0x9c, 0x26, 0x69, 0x40, 0x01, 0x3f, 0x05, - 0xbf, 0x5d, 0x9a, 0x14, 0xfd, 0x15, 0xad, 0xa9, 0xe6, 0x36, 0xfd, 0x8b, 0xa1, 0x68, 0xfd, 0x73, - 0x7e, 0x74, 0x40, 0xb2, 0x41, 0x57, 0xc0, 0x2b, 0x24, 0x82, 0x98, 0xb2, 0x5d, 0x37, 0x1c, 0x2d, - 0x7c, 0x2f, 0xfc, 0x17, 0xfb, 0xfa, 0x2b, 0xfd, 0x88, 0x26, 0x51, 0x69, 0x7c, 0x43, 0x84, 0x02, - 0x63, 0x46, 0xa6, 0xb5, 0xe1, 0x9c, 0x9e, 0x91, 0xe0, 0xe1, 0x80, 0x6b, 0x97, 0x0c, 0x3e, 0x8b, - 0xb9, 0x28, 0xa0, 0xb0, 0xf1, 0xd0, 0xc1, 0x44, 0x76, 0x45, 0x2e, 0x0e, 0xe7, 0xd0, 0xbc, 0x64, - 0xc8, 0x41, 0x25, 0xc0, 0x13, 0xb0, 0xd8, 0xf7, 0x05, 0x61, 0x61, 0xd0, 0x43, 0x70, 0xdd, 0x0f, - 0x0e, 0xe8, 0x07, 0xf8, 0xc5, 0x13, 0xe6, 0xad, 0xc0, 0x31, 0x87, 0x06, 0x7f, 0x62, 0x13, 0x0c, - 0xe3, 0xa7, 0x75, 0xc2, 0x57, 0x62, 0x40, 0x87, 0x75, 0x62, 0x92, 0x6b, 0xd3, 0xba, 0xbd, 0x55, - 0xd8, 0x5c, 0x5f, 0xb7, 0xbf, 0x17, 0xcb, 0xbf, 0x7f, 0xdb, 0x5b, 0xa5, 0x02, 0x3e, 0x57, 0xb2, - 0xf8, 0x5c, 0x29, 0xe1, 0x73, 0x36, 0x97, 0xc7, 0x97, 0x5c, 0xb1, 0xb8, 0x2d, 0xd6, 0x01, 0xfe, - 0x2d, 0x51, 0x7a, 0xab, 0xeb, 0xb4, 0x92, 0x4e, 0x2b, 0xe9, 0xb4, 0x92, 0x4e, 0x2b, 0xe9, 0xb4, - 0x92, 0xce, 0x2a, 0xe9, 0x7c, 0x25, 0x37, 0x10, 0x6a, 0x22, 0x41, 0xa1, 0xf3, 0x82, 0xae, 0x6e, - 0x8b, 0xdf, 0xc5, 0xea, 0x34, 0x99, 0x72, 0x87, 0x19, 0xb1, 0xfc, 0xd3, 0xf3, 0xcc, 0x70, 0xd9, - 0xb7, 0x64, 0x8a, 0x8d, 0x83, 0x05, 0x42, 0x94, 0xa5, 0x99, 0xce, 0x9c, 0x35, 0xaa, 0x5f, 0x64, - 0xde, 0x72, 0x3a, 0x54, 0x5e, 0xc8, 0x7d, 0x2b, 0x41, 0xb1, 0x3a, 0xb1, 0x7f, 0xff, 0xf6, 0x8f, - 0xcb, 0x27, 0xf6, 0x77, 0x99, 0xb7, 0x9e, 0x12, 0x0c, 0x31, 0xba, 0xed, 0x5b, 0x8c, 0x27, 0x18, - 0x8c, 0xc6, 0x22, 0xf4, 0x16, 0xc6, 0xff, 0x57, 0xdc, 0x95, 0x3f, 0xb7, 0x6d, 0x64, 0xe9, 0xdf, - 0xf7, 0xaf, 0xa0, 0x90, 0xc4, 0x02, 0x22, 0x48, 0x06, 0x29, 0xcb, 0xe3, 0x80, 0x82, 0x58, 0x8e, - 0x8f, 0x1d, 0xd5, 0x38, 0x8e, 0x36, 0xf2, 0x24, 0xe3, 0x72, 0xa9, 0x56, 0x24, 0xd5, 0x94, 0x58, - 0x86, 0x00, 0x06, 0x80, 0x0e, 0x87, 0xe2, 0xff, 0xbe, 0xef, 0xe8, 0x13, 0x00, 0x0f, 0xc5, 0x99, - 0xd9, 0xaa, 0xc4, 0x22, 0x1a, 0xdd, 0x8d, 0xbe, 0xfb, 0xbd, 0xd7, 0xaf, 0xbf, 0xcf, 0x27, 0xca, - 0x01, 0x2f, 0xf4, 0xee, 0x08, 0xa6, 0xf8, 0x0e, 0x49, 0x48, 0xbc, 0x9d, 0x1a, 0xcd, 0x83, 0xa1, - 0x39, 0xa0, 0xc4, 0x7d, 0xf8, 0x1a, 0x31, 0x85, 0xfc, 0x26, 0x46, 0xa7, 0xd0, 0xe1, 0x82, 0x08, - 0xf3, 0xf6, 0x46, 0xd3, 0x6c, 0x58, 0x7c, 0xf9, 0x40, 0x07, 0x59, 0x84, 0x9b, 0x3f, 0xba, 0x81, - 0x45, 0xbc, 0xf0, 0xc2, 0xbb, 0x72, 0x0f, 0x41, 0x0d, 0xca, 0x12, 0x0d, 0x93, 0x68, 0x0d, 0xc6, - 0xb5, 0x58, 0x72, 0xa8, 0x69, 0x0b, 0x39, 0xcc, 0x58, 0x3a, 0x7f, 0xfd, 0x91, 0x12, 0x69, 0x8e, - 0x0d, 0x0b, 0xb6, 0x8c, 0x13, 0x04, 0x7c, 0x94, 0x4c, 0xe8, 0x0d, 0xc1, 0xdc, 0xc1, 0xa5, 0xb6, - 0xe0, 0xe8, 0x82, 0xd0, 0x7a, 0x60, 0x0e, 0x10, 0x8b, 0x85, 0x54, 0xb1, 0x9c, 0x84, 0x75, 0x8b, - 0xb6, 0x82, 0x93, 0xdf, 0x14, 0x72, 0x3c, 0xd5, 0xf3, 0x11, 0x36, 0x07, 0xc4, 0x30, 0x28, 0x07, - 0xbe, 0x01, 0x64, 0x82, 0xc9, 0xc7, 0x14, 0xad, 0x4f, 0x9e, 0x38, 0x00, 0x34, 0x65, 0x10, 0xc4, - 0x16, 0xee, 0x81, 0x12, 0xcf, 0x08, 0x05, 0x74, 0x20, 0xff, 0xc6, 0x55, 0xdf, 0x59, 0x5a, 0xca, - 0x30, 0x43, 0xe0, 0xfc, 0xe1, 0xc5, 0x29, 0xa1, 0x1c, 0x65, 0xb0, 0x06, 0x2d, 0xb8, 0x61, 0x89, - 0x24, 0x9a, 0x9a, 0xf5, 0xd1, 0x70, 0xe9, 0x4c, 0x5a, 0xba, 0xb3, 0x73, 0x78, 0xe0, 0x60, 0x54, - 0xf2, 0xb8, 0x0a, 0xbb, 0x07, 0x68, 0xdf, 0xbf, 0x63, 0x0a, 0x15, 0xf9, 0x31, 0x44, 0x8b, 0xa7, - 0x6f, 0x29, 0xba, 0xd3, 0x42, 0xfc, 0x5e, 0xbe, 0x13, 0x97, 0xc3, 0x14, 0xa4, 0x0d, 0xc7, 0x97, - 0x41, 0x95, 0x54, 0xe1, 0xb9, 0xd3, 0xfe, 0x2b, 0x07, 0x25, 0x1f, 0xbb, 0x8b, 0xbd, 0xf2, 0x66, - 0x3c, 0x86, 0x61, 0xa1, 0x42, 0xa3, 0x3e, 0x11, 0xdd, 0xa2, 0x07, 0x74, 0x58, 0xd7, 0x5e, 0xa5, - 0xa9, 0x52, 0xe0, 0x2d, 0x7d, 0xe2, 0xc1, 0x15, 0x7b, 0x59, 0x8a, 0x11, 0x99, 0xb4, 0x96, 0x9e, - 0x2e, 0x6e, 0x0a, 0x49, 0x5d, 0x4b, 0x8f, 0x15, 0x47, 0x7d, 0x3b, 0x44, 0x04, 0x7b, 0x0c, 0x98, - 0xc0, 0x2f, 0xc3, 0x8f, 0x2b, 0xf6, 0x6e, 0x2e, 0x66, 0x78, 0xb9, 0x2e, 0xbb, 0xa8, 0x51, 0xd6, - 0x82, 0x12, 0x93, 0xd2, 0xbe, 0x30, 0x2b, 0x63, 0xfc, 0x8d, 0x0c, 0xb3, 0x72, 0x11, 0x27, 0xca, - 0x6b, 0x2e, 0x5c, 0x55, 0xe9, 0x52, 0x55, 0xc5, 0xd3, 0x6e, 0x14, 0xb6, 0x60, 0x5d, 0xc8, 0xc1, - 0x11, 0xc1, 0xca, 0x14, 0x49, 0xf2, 0x43, 0xad, 0x35, 0x26, 0x86, 0x78, 0x57, 0xb3, 0xeb, 0xd6, - 0x1c, 0xe3, 0x7c, 0x03, 0x72, 0x61, 0xbb, 0xc8, 0x41, 0xdb, 0x45, 0x64, 0xe9, 0xa2, 0xd7, 0x9f, - 0xaa, 0x33, 0xe4, 0x92, 0x31, 0x77, 0x58, 0x69, 0x07, 0x40, 0x83, 0x5e, 0x97, 0xd1, 0x8d, 0x29, - 0x06, 0x88, 0x4f, 0x20, 0x73, 0x1d, 0xf2, 0xf6, 0x50, 0xe1, 0x52, 0xd9, 0x93, 0x62, 0x94, 0x43, - 0x57, 0x47, 0x86, 0xcd, 0xf1, 0x27, 0x2b, 0xe3, 0x33, 0x59, 0xee, 0x87, 0x64, 0x6b, 0xcb, 0xef, - 0x3e, 0x49, 0x8d, 0x36, 0x4d, 0x21, 0x3d, 0x19, 0x02, 0x35, 0xa1, 0xe7, 0x67, 0x4f, 0x34, 0x74, - 0x86, 0x6f, 0x3e, 0x5e, 0xe5, 0xb3, 0x5d, 0xeb, 0x69, 0x58, 0x54, 0xc1, 0xf7, 0xee, 0xeb, 0x8f, - 0x03, 0xf7, 0xb1, 0x16, 0xfd, 0x63, 0xdc, 0x05, 0x41, 0x55, 0x36, 0x93, 0xfc, 0x7b, 0x38, 0x1c, - 0x0c, 0x63, 0xf9, 0x5b, 0x9f, 0x76, 0x60, 0xa2, 0x92, 0x4e, 0x7d, 0xd0, 0x18, 0x88, 0xfe, 0x76, - 0x6d, 0xf5, 0x1b, 0x5a, 0x15, 0x6b, 0xd4, 0xab, 0x56, 0x2d, 0x55, 0xab, 0x05, 0x8e, 0xe0, 0xa1, - 0xda, 0xa5, 0xac, 0x93, 0xb4, 0xf7, 0x79, 0x47, 0x75, 0xb9, 0x3c, 0x3c, 0x33, 0x06, 0x25, 0x78, - 0x24, 0xb0, 0xe9, 0x4b, 0x6b, 0x7f, 0x6e, 0xf3, 0xe8, 0xd9, 0x83, 0xc1, 0x03, 0xc3, 0x09, 0xba, - 0xff, 0xcd, 0x50, 0x1e, 0x99, 0xad, 0x10, 0x3f, 0x14, 0x7a, 0x53, 0x9b, 0x82, 0x64, 0xfc, 0x60, - 0x72, 0xf9, 0xcd, 0xdd, 0x6e, 0x5f, 0x1c, 0xa1, 0x57, 0xcc, 0xee, 0x6e, 0x90, 0x3b, 0x7e, 0x22, - 0xc9, 0x10, 0xad, 0x1c, 0x10, 0x44, 0xa4, 0x50, 0x8e, 0x9f, 0x88, 0x79, 0xd5, 0xad, 0xbd, 0x1a, - 0x99, 0x57, 0xbd, 0xb3, 0xd0, 0xd7, 0xa3, 0xe1, 0x61, 0xab, 0x41, 0x84, 0x49, 0xd8, 0x51, 0x76, - 0xda, 0x3b, 0x93, 0x16, 0x59, 0xa4, 0x24, 0xd9, 0x68, 0x4e, 0x20, 0xe2, 0xe4, 0x46, 0xad, 0xe9, - 0x4c, 0x90, 0x4b, 0x5a, 0x99, 0x6f, 0x21, 0xcd, 0xb8, 0x42, 0xd1, 0x0d, 0xfe, 0x90, 0xa0, 0x6c, - 0x9b, 0x6e, 0x5e, 0xea, 0x59, 0x48, 0xef, 0x83, 0xb0, 0x69, 0xd9, 0xd2, 0xef, 0xcb, 0xfb, 0xb0, - 0xdd, 0xae, 0xa5, 0x63, 0x4c, 0x9d, 0x18, 0x68, 0xd5, 0x32, 0x99, 0x77, 0x07, 0xf8, 0x4f, 0x1c, - 0x85, 0x35, 0xd3, 0x96, 0x89, 0xd1, 0xc3, 0x18, 0xbd, 0x5a, 0x8c, 0x7d, 0x3b, 0xc6, 0x3e, 0xc6, - 0xd8, 0x57, 0x31, 0x48, 0x51, 0xfb, 0xb9, 0x6b, 0x3b, 0x94, 0x6f, 0x0d, 0xf7, 0xf2, 0xae, 0xfd, - 0xb6, 0x57, 0x7f, 0xdb, 0xb3, 0xdf, 0xee, 0xd7, 0xdf, 0xee, 0xc3, 0x94, 0x27, 0x3e, 0x05, 0x02, - 0x39, 0x94, 0xbf, 0x79, 0x33, 0x9d, 0xa2, 0xc3, 0xa0, 0x72, 0xdd, 0x50, 0x2f, 0xd8, 0x87, 0x22, - 0x42, 0xf0, 0x18, 0x73, 0x22, 0x7c, 0x8d, 0x27, 0x39, 0x9d, 0x89, 0x46, 0x39, 0xda, 0x72, 0x90, - 0x66, 0xba, 0x04, 0x51, 0x83, 0x20, 0x68, 0x22, 0xcb, 0x6f, 0x2e, 0xaf, 0x3a, 0xe5, 0x0c, 0x04, - 0x09, 0x44, 0x99, 0x2e, 0x11, 0xdf, 0x9b, 0x21, 0x0e, 0x6b, 0x49, 0x08, 0xb9, 0x46, 0xe2, 0xdf, - 0xe3, 0x17, 0xe4, 0x11, 0xba, 0x13, 0x87, 0x10, 0x6c, 0x7e, 0x9a, 0x32, 0x79, 0xfd, 0xb4, 0x60, - 0x76, 0x1d, 0x37, 0xca, 0x0f, 0x18, 0xe5, 0xa5, 0x55, 0xb2, 0x0e, 0x55, 0xa3, 0x03, 0x03, 0xae, - 0x93, 0x8f, 0x61, 0x15, 0xc7, 0xd3, 0xfb, 0x85, 0x35, 0x37, 0x69, 0x6f, 0x27, 0x04, 0x25, 0x8a, - 0xb8, 0xe3, 0xc5, 0xf0, 0x30, 0xa5, 0x23, 0x68, 0x35, 0x91, 0x2d, 0x0a, 0xf3, 0x21, 0x48, 0x1a, - 0xa9, 0xcd, 0x70, 0x3e, 0xdc, 0x9b, 0xdc, 0x87, 0x35, 0xbf, 0x3c, 0x77, 0x76, 0x3b, 0xcc, 0xb9, - 0x0d, 0xa5, 0x55, 0x1e, 0x4c, 0x6e, 0xea, 0x1d, 0xec, 0x9e, 0x58, 0xd6, 0xbd, 0x84, 0xc3, 0xd2, - 0x04, 0x91, 0xeb, 0x09, 0x32, 0x53, 0x7c, 0x3a, 0x8b, 0x4b, 0xdb, 0x37, 0x98, 0xfc, 0x8b, 0x33, - 0x99, 0x82, 0x7d, 0x76, 0x11, 0xbb, 0x12, 0xe3, 0xe1, 0x5f, 0xcb, 0x37, 0x38, 0x1c, 0xea, 0x78, - 0x87, 0x3d, 0x15, 0xb3, 0x2b, 0x63, 0x76, 0x9d, 0x98, 0xb9, 0x89, 0xb9, 0xaf, 0x62, 0xf6, 0x64, - 0x4c, 0xd7, 0xdf, 0x58, 0xfb, 0x54, 0xc3, 0x7a, 0x03, 0xe2, 0x76, 0xbf, 0x44, 0xf7, 0x3b, 0x1e, - 0x7c, 0xd6, 0x9c, 0x20, 0xbd, 0xa4, 0xb0, 0x43, 0x88, 0x71, 0x14, 0x83, 0xfb, 0x5b, 0x15, 0x0a, - 0xe4, 0xbe, 0x00, 0xf1, 0xfa, 0xc5, 0xa0, 0x17, 0x1f, 0x80, 0xe6, 0x9c, 0xaa, 0x16, 0x2a, 0xd9, - 0x89, 0x39, 0x85, 0x15, 0x7e, 0xe0, 0x3b, 0xa1, 0x5b, 0x2a, 0xb8, 0xb0, 0xb4, 0x1c, 0x0c, 0x88, - 0xed, 0x80, 0x88, 0xb8, 0x3c, 0xb8, 0x97, 0x60, 0xd4, 0xe2, 0xe2, 0x10, 0x77, 0xed, 0xb0, 0xa9, - 0x5e, 0x12, 0x62, 0x8f, 0xbd, 0x3e, 0xbd, 0x1d, 0xbf, 0xdc, 0x85, 0x8d, 0x74, 0xba, 0x02, 0xdd, - 0x70, 0xba, 0xc4, 0xf4, 0x03, 0x5d, 0xaf, 0x0b, 0x79, 0x20, 0x15, 0xc3, 0xc9, 0x7d, 0x3e, 0xab, - 0x5a, 0x3d, 0xef, 0x51, 0x3a, 0xb1, 0x5a, 0x90, 0xfd, 0x18, 0xf7, 0xc9, 0x81, 0xf1, 0x60, 0x47, - 0x1c, 0xa6, 0xda, 0x43, 0x92, 0xfc, 0xb8, 0xd3, 0x4f, 0x10, 0x78, 0x26, 0x21, 0x1d, 0x31, 0xcb, - 0x1d, 0xb1, 0xee, 0x2a, 0x06, 0xc4, 0x92, 0xcd, 0x2c, 0x6c, 0x5d, 0x10, 0xda, 0x4e, 0x67, 0xe7, - 0xfd, 0x4c, 0xd7, 0x0a, 0xbc, 0x98, 0x9f, 0x41, 0x40, 0x1b, 0x95, 0x55, 0xe1, 0x47, 0x61, 0xf7, - 0x39, 0xd4, 0x73, 0xc9, 0xb7, 0xec, 0x2a, 0x9b, 0x7b, 0x03, 0xcd, 0x8a, 0x52, 0x3c, 0x55, 0x4b, - 0xad, 0x1a, 0x6a, 0x47, 0x57, 0x73, 0xce, 0x56, 0x77, 0xd1, 0xb0, 0xc6, 0x49, 0x89, 0x84, 0x08, - 0x8c, 0x0e, 0x18, 0xe0, 0xd5, 0x87, 0x83, 0xbe, 0xf2, 0x05, 0xae, 0x19, 0x3b, 0xbe, 0x61, 0x83, - 0x5a, 0xc7, 0x36, 0x74, 0xb1, 0x75, 0xcc, 0xb1, 0x64, 0x81, 0x46, 0x83, 0xfc, 0xc1, 0x0b, 0x28, - 0x06, 0xee, 0x46, 0xb8, 0x25, 0x14, 0xb0, 0x58, 0xfb, 0xe3, 0xf0, 0x6f, 0x07, 0xd2, 0x7a, 0x36, - 0x43, 0x27, 0xaf, 0x4b, 0xfc, 0xe7, 0x06, 0x04, 0xb9, 0x49, 0x82, 0x3b, 0x53, 0xad, 0x97, 0x5a, - 0xf6, 0x61, 0xc7, 0xff, 0x14, 0xb3, 0xb9, 0x35, 0xbb, 0x35, 0x34, 0x5f, 0x9f, 0xdc, 0xbb, 0xd4, - 0xc4, 0xe7, 0x3e, 0xc5, 0x79, 0x4d, 0xeb, 0xc5, 0xed, 0xf2, 0x8e, 0xbc, 0x75, 0xac, 0x8e, 0x50, - 0x1e, 0x1a, 0xf9, 0x9c, 0x12, 0xbf, 0x72, 0x45, 0xbf, 0x4d, 0xbf, 0xa1, 0x8f, 0x89, 0xd5, 0xd7, - 0x57, 0xe1, 0x15, 0xc7, 0xe6, 0x23, 0xc5, 0x4b, 0xbc, 0xd9, 0x9a, 0x78, 0x3b, 0xb4, 0xa2, 0x5c, - 0x32, 0xcd, 0x0c, 0x77, 0xe1, 0xad, 0x3b, 0x6b, 0xc4, 0xc0, 0x7b, 0x7b, 0x4f, 0x73, 0x05, 0x7e, - 0xfd, 0x78, 0x89, 0xb3, 0xa3, 0x24, 0x70, 0xa5, 0xc9, 0x16, 0xc2, 0x8e, 0x5b, 0xfb, 0x36, 0x1e, - 0x99, 0xa2, 0xa3, 0x15, 0x66, 0x52, 0x0d, 0x9c, 0xaa, 0xd8, 0x47, 0xbd, 0xb5, 0x7a, 0x74, 0x43, - 0xfb, 0x83, 0x1e, 0x4c, 0x3a, 0xb1, 0xd3, 0x45, 0xdc, 0xd0, 0xc7, 0x34, 0x45, 0x5b, 0x16, 0xe1, - 0xf2, 0x32, 0x06, 0x0b, 0xd5, 0x21, 0xef, 0x1a, 0xa0, 0xb8, 0x33, 0xea, 0xf9, 0x6b, 0x6d, 0x93, - 0x47, 0xe6, 0xa2, 0x91, 0xb1, 0xd0, 0xf3, 0x69, 0xa6, 0x3e, 0xb3, 0x42, 0xaa, 0xac, 0xbc, 0x76, - 0xd1, 0x22, 0xa7, 0x7b, 0x16, 0x7c, 0xe6, 0x8b, 0xbf, 0x03, 0x86, 0xb9, 0xbe, 0xae, 0xd9, 0x4f, - 0xbc, 0x69, 0x86, 0xce, 0x3f, 0xbb, 0x6c, 0x38, 0x09, 0xed, 0x5c, 0x30, 0x95, 0x31, 0x56, 0x25, - 0x5e, 0xa0, 0x0e, 0x4c, 0x8f, 0x93, 0xc6, 0xab, 0x3e, 0x1d, 0x38, 0x83, 0x1c, 0x0c, 0x5d, 0xce, - 0x3f, 0xa7, 0x19, 0xfa, 0x9a, 0x87, 0x7a, 0x52, 0x51, 0x12, 0x39, 0x2c, 0x8e, 0xb1, 0x6d, 0x83, - 0xa0, 0x8f, 0x61, 0x89, 0xf5, 0x02, 0xf6, 0x5d, 0x48, 0x7f, 0x1c, 0x2c, 0x9c, 0xca, 0x6c, 0xc9, - 0xda, 0x0c, 0x46, 0x56, 0x03, 0x61, 0x40, 0x6c, 0x07, 0x6c, 0x37, 0x80, 0xe4, 0x44, 0x2a, 0xef, - 0xdc, 0xda, 0x10, 0x19, 0xc4, 0x7a, 0x2d, 0x6f, 0x48, 0x8e, 0xf6, 0x19, 0x05, 0x9a, 0xf4, 0xd2, - 0x8e, 0x3c, 0xd0, 0xd8, 0xe6, 0xa1, 0xf3, 0xef, 0xc8, 0x9a, 0x04, 0x0f, 0xbc, 0xae, 0xb8, 0x1d, - 0x36, 0xba, 0x81, 0x0d, 0x56, 0xd8, 0xba, 0x96, 0x42, 0xdb, 0xed, 0x5b, 0xfa, 0xac, 0xb9, 0x36, - 0x66, 0x91, 0x5c, 0x3c, 0x4e, 0xe3, 0xfe, 0x02, 0x1a, 0xf7, 0x16, 0x0c, 0x45, 0xfd, 0x89, 0x60, - 0x6e, 0x59, 0x29, 0x1e, 0x1e, 0x6c, 0x03, 0x46, 0x83, 0x53, 0xeb, 0x0e, 0xb6, 0xb9, 0x3b, 0x34, - 0xd3, 0x83, 0xb6, 0xef, 0x6b, 0xb5, 0x3c, 0xac, 0x33, 0x04, 0x2c, 0xc2, 0x7d, 0xb1, 0x1f, 0x28, - 0x26, 0x77, 0x8e, 0x92, 0xc8, 0xb4, 0xa8, 0x94, 0x7f, 0x21, 0xad, 0x3c, 0x49, 0x12, 0x6d, 0xbb, - 0xd9, 0xfb, 0xf9, 0xe4, 0xcd, 0x7b, 0x90, 0x27, 0x60, 0x66, 0xcf, 0xf2, 0x12, 0xf1, 0x07, 0xd0, - 0x77, 0x90, 0x14, 0x74, 0x74, 0xe9, 0xba, 0x45, 0xa2, 0x4a, 0xc6, 0xf6, 0xb4, 0x89, 0xb3, 0xd0, - 0x7c, 0xb2, 0x97, 0xe5, 0x77, 0x7e, 0xf0, 0x14, 0xf1, 0x6e, 0xa5, 0x2e, 0xa9, 0x15, 0xe3, 0x3e, - 0xed, 0x7d, 0xb0, 0x92, 0x4e, 0x2f, 0x60, 0x37, 0xe5, 0x1f, 0x8a, 0x1c, 0xd2, 0x56, 0xa5, 0x15, - 0x5d, 0xad, 0x1e, 0xa7, 0xdd, 0xe8, 0x7b, 0xe5, 0x82, 0xd3, 0x1f, 0x6e, 0x81, 0x66, 0x4d, 0x57, - 0x14, 0x4c, 0x82, 0x64, 0x18, 0x2c, 0x7c, 0x69, 0x16, 0x32, 0x50, 0xdb, 0xc2, 0xa2, 0xc9, 0xd9, - 0x7f, 0x16, 0x91, 0x92, 0x8b, 0xac, 0x74, 0x95, 0xde, 0x7e, 0x91, 0x38, 0x4b, 0x69, 0x82, 0x30, - 0xa8, 0x0d, 0x5e, 0x89, 0x56, 0x0f, 0x11, 0xb6, 0x44, 0x25, 0x5c, 0x94, 0x83, 0xbb, 0x92, 0x4c, - 0x03, 0x3e, 0xf4, 0xcb, 0xf6, 0xdc, 0xbb, 0xf5, 0x62, 0x84, 0x76, 0x5d, 0x6c, 0x07, 0x71, 0x9b, - 0xfb, 0x65, 0x39, 0xb5, 0x7c, 0x2f, 0xb3, 0x10, 0x09, 0x60, 0x61, 0xaf, 0x8a, 0xe7, 0xc8, 0xd5, - 0x86, 0x1e, 0xd8, 0xbb, 0xe8, 0xa7, 0x0a, 0x2d, 0x8b, 0x44, 0x97, 0x53, 0xb6, 0xa9, 0x51, 0xc2, - 0x7e, 0x07, 0x2d, 0x95, 0x68, 0x73, 0xf8, 0xe7, 0x87, 0xb7, 0xbb, 0x2f, 0xbc, 0x45, 0x38, 0xca, - 0x2f, 0xbe, 0xc4, 0x95, 0xed, 0xb9, 0xf9, 0x08, 0x13, 0xd7, 0x23, 0x48, 0x23, 0xb0, 0x7f, 0x36, - 0x30, 0x88, 0xe1, 0x60, 0x7a, 0xa4, 0x4d, 0xec, 0x12, 0x46, 0xb9, 0x50, 0xe7, 0x2d, 0xca, 0xc2, - 0x43, 0x5c, 0x04, 0x64, 0x22, 0x33, 0x70, 0xa2, 0x64, 0xfc, 0x32, 0xd6, 0xb2, 0xaa, 0x85, 0x7b, - 0xa4, 0x5a, 0x62, 0x41, 0xab, 0x50, 0x7c, 0xd7, 0x16, 0x26, 0x69, 0x39, 0x93, 0x7f, 0x63, 0x21, - 0x21, 0xdb, 0xe9, 0x9a, 0x1b, 0x5f, 0x3a, 0x62, 0x28, 0x76, 0xdc, 0x04, 0x5a, 0xb8, 0x2b, 0x25, - 0x61, 0x82, 0x9c, 0x65, 0x6c, 0xd6, 0x5a, 0x3f, 0x63, 0x1e, 0x1e, 0x94, 0xf9, 0x15, 0xd9, 0x2d, - 0x7b, 0x07, 0x41, 0xcd, 0x14, 0xc6, 0x08, 0xee, 0x96, 0x26, 0x82, 0x05, 0x81, 0x75, 0xa4, 0x9c, - 0xc1, 0x12, 0x26, 0x3c, 0x49, 0xb3, 0xb1, 0xca, 0x43, 0xb6, 0xee, 0x68, 0x49, 0x0e, 0x29, 0xfa, - 0xd4, 0x70, 0x9e, 0x67, 0x31, 0x99, 0xcb, 0x90, 0x39, 0x21, 0x5b, 0x90, 0xe9, 0xcc, 0x1e, 0xe2, - 0xc6, 0xec, 0x41, 0x06, 0x7a, 0xe7, 0xb1, 0x14, 0x97, 0xac, 0x47, 0xb3, 0xf9, 0x1e, 0x4d, 0x50, - 0x64, 0xa4, 0x40, 0x2a, 0x10, 0x36, 0xa1, 0x44, 0x7c, 0x07, 0xb3, 0x9e, 0x2a, 0x9c, 0x14, 0x7f, - 0xc4, 0x5b, 0x5d, 0xe2, 0xf0, 0xb4, 0x16, 0xc4, 0x86, 0x4f, 0xe8, 0xfb, 0xd4, 0xa1, 0x2c, 0xf4, - 0xd1, 0x60, 0xb7, 0x05, 0xff, 0x04, 0x83, 0x73, 0x6c, 0x7f, 0x98, 0xf1, 0x0c, 0x75, 0xd0, 0xf9, - 0x88, 0xc4, 0x4e, 0x4c, 0x61, 0x48, 0xbc, 0x4a, 0xa4, 0x92, 0x7d, 0x3b, 0x27, 0x2b, 0xde, 0x51, - 0x64, 0x81, 0x24, 0x2f, 0x28, 0x14, 0xa9, 0x29, 0x21, 0x10, 0xcf, 0x56, 0x60, 0x32, 0x4d, 0x40, - 0x58, 0x93, 0x2f, 0x5e, 0xdf, 0x14, 0x0b, 0x04, 0xa3, 0x20, 0x67, 0xdc, 0xf3, 0xd8, 0xe3, 0xaf, - 0x5c, 0x30, 0xa4, 0x02, 0xc2, 0x02, 0xa3, 0xbb, 0xb6, 0x73, 0xf7, 0x37, 0x4b, 0x63, 0x6c, 0x42, - 0x28, 0xd4, 0x62, 0xd1, 0x28, 0x3f, 0xfa, 0xe8, 0xb8, 0x35, 0xd0, 0x66, 0xc3, 0x2d, 0xf5, 0x2b, - 0x00, 0x69, 0x99, 0x1c, 0xc3, 0xa9, 0xf8, 0x44, 0x0c, 0x8b, 0xdc, 0x4e, 0x99, 0xa8, 0xee, 0xf2, - 0xe2, 0x33, 0x57, 0x07, 0x16, 0xc8, 0x0e, 0xc6, 0x47, 0xe5, 0x98, 0xd8, 0xa2, 0x60, 0x9b, 0x41, - 0x8a, 0xb9, 0x0f, 0xf8, 0x9b, 0xab, 0x4d, 0xfc, 0x51, 0xeb, 0xf3, 0xe9, 0xa4, 0x79, 0x76, 0x09, - 0x91, 0x30, 0xb7, 0x3d, 0x4f, 0x39, 0xab, 0xcc, 0xd1, 0x84, 0x19, 0xcf, 0x71, 0xa1, 0x8a, 0x55, - 0xb9, 0x16, 0x8b, 0xbe, 0x85, 0x57, 0x4f, 0x9d, 0x4c, 0x86, 0xce, 0x02, 0xd1, 0xeb, 0x75, 0xe1, - 0xd7, 0x74, 0x20, 0xc2, 0xe5, 0xdf, 0x4e, 0xc5, 0x1d, 0x1e, 0x2e, 0xc8, 0x09, 0xc8, 0xc7, 0x97, - 0xf4, 0x96, 0xe6, 0x20, 0x4e, 0x4d, 0x72, 0xfa, 0x76, 0x5e, 0x49, 0x27, 0x75, 0x78, 0xf7, 0xee, - 0x16, 0x87, 0xe6, 0xbb, 0x5b, 0x79, 0x02, 0xb1, 0x7e, 0x46, 0x29, 0x82, 0x91, 0x54, 0x7e, 0x1b, - 0xf6, 0x20, 0xcc, 0x57, 0x30, 0x0d, 0x87, 0xd7, 0x7b, 0xed, 0x51, 0xae, 0xca, 0xfc, 0xf3, 0x39, - 0xbd, 0x25, 0xec, 0x77, 0xeb, 0x54, 0xeb, 0x70, 0x3a, 0x41, 0xd5, 0xbb, 0x63, 0x6e, 0xf7, 0x20, - 0x31, 0xb9, 0x37, 0x1c, 0xc1, 0x84, 0x8f, 0x47, 0xe9, 0x30, 0xa3, 0xab, 0x32, 0x1c, 0x09, 0xaf, - 0x04, 0xb0, 0x0f, 0xad, 0xcc, 0xa7, 0x7e, 0x54, 0x87, 0xdf, 0xda, 0xe8, 0x44, 0x8e, 0xf3, 0xa9, - 0xea, 0x47, 0x63, 0x9c, 0xbe, 0xe9, 0x61, 0x82, 0x11, 0xa1, 0x54, 0xf4, 0x5a, 0xef, 0x22, 0xde, - 0x4e, 0x05, 0x02, 0xeb, 0xc0, 0x83, 0x6d, 0x87, 0x70, 0x2f, 0x82, 0xd8, 0x29, 0xb5, 0xe3, 0x3f, - 0x56, 0x38, 0x5a, 0x95, 0xf2, 0x94, 0x56, 0xcc, 0xae, 0xe1, 0x16, 0x37, 0x92, 0xa0, 0xe6, 0xa6, - 0x2d, 0x0c, 0xf6, 0xaf, 0x14, 0x36, 0x30, 0xc2, 0x28, 0x87, 0x1d, 0x2c, 0x2c, 0xa7, 0x7f, 0x08, - 0xbf, 0xd1, 0xe5, 0xdc, 0xa9, 0x73, 0xdd, 0xa9, 0xcd, 0xfe, 0x74, 0x3a, 0xda, 0x8c, 0x10, 0x24, - 0x1a, 0xc0, 0xc4, 0xd8, 0xdd, 0xc7, 0x7c, 0xb3, 0xd3, 0x61, 0xff, 0xe5, 0xc2, 0xe3, 0x32, 0xd2, - 0xda, 0xca, 0x98, 0x64, 0xa3, 0x76, 0xb6, 0x1b, 0xe1, 0xb8, 0xe6, 0x98, 0xc7, 0x99, 0x18, 0xff, - 0xb9, 0xc6, 0x82, 0x24, 0xef, 0x4e, 0xa8, 0xc1, 0x5c, 0x1b, 0xc7, 0x2b, 0xeb, 0x46, 0x69, 0xb1, - 0x72, 0xf4, 0x23, 0x60, 0x32, 0x66, 0xd5, 0x2e, 0x4c, 0x6f, 0xe1, 0x10, 0x3c, 0xd8, 0x95, 0xa3, - 0x68, 0x8f, 0xae, 0x9d, 0x22, 0x8c, 0xb0, 0x6b, 0x28, 0x73, 0x6a, 0xab, 0x22, 0x6e, 0x44, 0x88, - 0x0b, 0xa2, 0xb6, 0x86, 0x28, 0xc4, 0x2d, 0xac, 0x74, 0x20, 0x3a, 0xc8, 0xbc, 0x8a, 0x1a, 0x04, - 0xce, 0xc6, 0xac, 0xcd, 0xa9, 0xb5, 0xdc, 0xed, 0x1a, 0x6f, 0xf7, 0xb0, 0x1b, 0xb5, 0xb8, 0x3b, - 0x2f, 0x49, 0x55, 0xda, 0xa9, 0xd0, 0x23, 0x1a, 0x11, 0x8b, 0x7d, 0x2e, 0xc7, 0xf5, 0x1d, 0x68, - 0x71, 0x99, 0x85, 0x1f, 0x81, 0xe2, 0x33, 0x7a, 0xb9, 0x68, 0x7f, 0xf2, 0xc6, 0x57, 0x04, 0x82, - 0x3b, 0x2d, 0x6c, 0xf4, 0x08, 0x6c, 0xda, 0x71, 0x91, 0xa7, 0x29, 0x7c, 0x3b, 0xff, 0x15, 0x3b, - 0x66, 0x3e, 0x12, 0x57, 0xc3, 0xdb, 0x69, 0x5e, 0xc4, 0x9a, 0x85, 0x98, 0x66, 0x1a, 0x3c, 0x12, - 0x3b, 0xf3, 0x42, 0xb9, 0xa7, 0xb4, 0x83, 0x7e, 0x6a, 0x44, 0xcf, 0xa3, 0x26, 0x56, 0xde, 0x51, - 0x0b, 0x32, 0x9e, 0xc6, 0xda, 0x29, 0xd7, 0x82, 0xe1, 0xed, 0xf7, 0x0c, 0x56, 0x84, 0x83, 0x73, - 0xf7, 0x1e, 0x64, 0xac, 0x52, 0x02, 0x56, 0x62, 0x46, 0x0d, 0xa8, 0x3b, 0x03, 0x72, 0x87, 0xc8, - 0x54, 0x44, 0x78, 0x90, 0x78, 0xfb, 0x2f, 0xbe, 0x63, 0xa6, 0xa0, 0x9f, 0x56, 0xe1, 0xdd, 0xb5, - 0x27, 0xf8, 0x4b, 0xa1, 0xef, 0x36, 0x05, 0x1f, 0xc3, 0xaa, 0xad, 0xc3, 0xb6, 0xc3, 0xc2, 0x5d, - 0xdf, 0xed, 0x76, 0x63, 0x73, 0xa9, 0xc0, 0x06, 0x90, 0x13, 0xcb, 0x50, 0xa3, 0xca, 0xe5, 0xa8, - 0x51, 0xe5, 0x62, 0x43, 0x0c, 0x32, 0x8c, 0xba, 0x0e, 0xda, 0xce, 0x81, 0xb3, 0xab, 0xbe, 0xbe, - 0x34, 0x8f, 0x01, 0xb0, 0x2a, 0x5b, 0xa9, 0x23, 0x46, 0xd5, 0x55, 0x03, 0xc1, 0xaa, 0xdc, 0x00, - 0xc1, 0xaa, 0x2a, 0x28, 0x01, 0x5f, 0x1b, 0x51, 0x59, 0x1a, 0x48, 0x71, 0x32, 0xa5, 0xe0, 0xbd, - 0xd2, 0x16, 0x88, 0xba, 0x6f, 0xe7, 0x6b, 0x11, 0xea, 0x16, 0xed, 0x5f, 0x7a, 0xbd, 0xe6, 0x4b, - 0xeb, 0x46, 0xcf, 0xc7, 0x35, 0xdd, 0x83, 0xc0, 0x75, 0xa6, 0x87, 0xa2, 0x7f, 0xf7, 0x60, 0x59, - 0x5f, 0x1c, 0x7b, 0xb8, 0xd0, 0xd8, 0xbe, 0x8a, 0xbb, 0x5f, 0x37, 0x6a, 0x6c, 0xf8, 0x31, 0x07, - 0x7b, 0xcc, 0x29, 0x1a, 0x01, 0x8f, 0x7d, 0x3b, 0xd7, 0xb3, 0x48, 0x2c, 0xe8, 0x22, 0x84, 0xbc, - 0xcb, 0x6b, 0x25, 0x1b, 0x7b, 0xcb, 0x06, 0xe1, 0xcc, 0x61, 0x3a, 0x51, 0xe8, 0x4d, 0xc8, 0x1c, - 0x8a, 0x4e, 0x19, 0x69, 0x2b, 0x7a, 0x94, 0xc2, 0x54, 0xae, 0x2d, 0xd1, 0x16, 0x6b, 0xa8, 0xed, - 0x08, 0xa0, 0xf2, 0x14, 0xe4, 0x06, 0xb0, 0x34, 0x4d, 0x63, 0xa1, 0x56, 0x25, 0x2c, 0x91, 0xc8, - 0x16, 0x4a, 0x09, 0xcb, 0x2c, 0x5f, 0xe0, 0xae, 0x71, 0xda, 0x46, 0xfd, 0x3f, 0x8f, 0xb8, 0x4c, - 0x70, 0x4e, 0x0d, 0xb4, 0x65, 0x3c, 0x91, 0x65, 0xf6, 0x80, 0xaf, 0x82, 0x56, 0xa6, 0x72, 0x7b, - 0x16, 0xb7, 0xae, 0xde, 0xa7, 0x91, 0x17, 0x77, 0x35, 0x7a, 0x57, 0xf7, 0xc5, 0x90, 0xe6, 0xf4, - 0xcb, 0x8b, 0x0b, 0xb5, 0x69, 0x34, 0x7b, 0x75, 0x29, 0xc8, 0x71, 0x1b, 0x9a, 0xf1, 0x32, 0x28, - 0xe3, 0xaf, 0x84, 0x2d, 0x7e, 0xb3, 0xff, 0xec, 0xc7, 0x06, 0xc1, 0xc3, 0x9f, 0x44, 0x21, 0x4e, - 0x11, 0xaa, 0xf7, 0x2b, 0x01, 0x88, 0x29, 0x8f, 0xaf, 0xc4, 0x1e, 0xa6, 0x3c, 0xbe, 0x12, 0x76, - 0x98, 0xf2, 0x58, 0x87, 0x38, 0x2c, 0x27, 0x92, 0x2b, 0xc9, 0x9d, 0xc0, 0x10, 0x4c, 0xb5, 0xdb, - 0x8c, 0xba, 0x6b, 0xde, 0x6f, 0x63, 0x63, 0xcc, 0x96, 0x10, 0x31, 0xda, 0x5c, 0x8b, 0x1d, 0x6d, - 0x63, 0x23, 0x5f, 0xe8, 0x6c, 0xc0, 0x7f, 0x62, 0xc3, 0x46, 0x8e, 0x6e, 0xd4, 0xfd, 0x9a, 0x57, - 0x1e, 0x81, 0xfa, 0xe0, 0x0b, 0xe2, 0x9f, 0x19, 0x82, 0x56, 0x51, 0x49, 0x67, 0x6a, 0xc3, 0x2e, - 0xee, 0x3c, 0xee, 0x21, 0xce, 0x95, 0x5f, 0xb6, 0xa1, 0x5c, 0x61, 0x36, 0x04, 0xb4, 0x80, 0x3f, - 0xe8, 0x04, 0xc1, 0xc5, 0x71, 0x47, 0x08, 0x09, 0x03, 0x68, 0x65, 0x0e, 0x66, 0xed, 0x45, 0x64, - 0x02, 0x85, 0xbd, 0x3a, 0x49, 0xdf, 0xd4, 0xdd, 0xe5, 0x53, 0xa1, 0x4e, 0x53, 0x2a, 0xc3, 0x25, - 0x5a, 0x26, 0x0e, 0x16, 0xf8, 0x64, 0x5a, 0x94, 0xb0, 0xbc, 0x7b, 0x47, 0x8a, 0x6c, 0xb1, 0x23, - 0x9b, 0x8b, 0x9b, 0x7f, 0x9b, 0x9c, 0x73, 0xb2, 0xc3, 0x59, 0xaa, 0xd9, 0xd2, 0x95, 0x37, 0x65, - 0x3f, 0xdb, 0xd9, 0x09, 0xa0, 0x4e, 0xdc, 0x2d, 0xb0, 0x4c, 0x17, 0x5f, 0xa0, 0x63, 0x90, 0xe9, - 0x72, 0xc7, 0xfd, 0xc4, 0x55, 0xf1, 0x87, 0x82, 0x74, 0xd9, 0x0e, 0x2b, 0xfb, 0x0a, 0xb7, 0x34, - 0x8c, 0x56, 0x4b, 0xaf, 0x2c, 0xd3, 0x22, 0x9c, 0xee, 0x22, 0x5c, 0x61, 0xd0, 0x4f, 0xf5, 0x81, - 0x2c, 0xde, 0xde, 0x24, 0xcb, 0x7c, 0x8b, 0x9d, 0x5a, 0xd1, 0x83, 0x19, 0x78, 0x3c, 0x9f, 0xd8, - 0x11, 0x83, 0x15, 0xbc, 0x3e, 0x94, 0xbd, 0xcd, 0xb0, 0xd3, 0x19, 0x06, 0x99, 0x3e, 0x41, 0x81, - 0xbe, 0xc2, 0x13, 0x21, 0xc3, 0x9a, 0x63, 0xbd, 0x08, 0x90, 0x9c, 0x4e, 0x7a, 0x30, 0x38, 0x2f, - 0x62, 0xbb, 0xc5, 0x3e, 0x99, 0x57, 0x74, 0x30, 0x71, 0x66, 0x73, 0xf0, 0xb0, 0x3d, 0xd7, 0xb6, - 0x68, 0xc1, 0xda, 0x7d, 0x92, 0xb2, 0x4b, 0xa8, 0xd3, 0xee, 0x78, 0x94, 0x3c, 0x16, 0xa0, 0xef, - 0x77, 0xc3, 0x28, 0xc4, 0xdb, 0xe5, 0xfa, 0xe5, 0xc5, 0x4d, 0xe1, 0xbe, 0x75, 0x5e, 0x7d, 0xaa, - 0xce, 0xec, 0xc8, 0xc6, 0x5e, 0xbc, 0x2c, 0x8d, 0x89, 0x41, 0x49, 0x9d, 0x11, 0x66, 0x79, 0xf7, - 0x8a, 0xb4, 0xb5, 0x98, 0xe6, 0xd8, 0xdc, 0x6f, 0x2d, 0x7e, 0xd8, 0x5d, 0x56, 0x74, 0xf7, 0x4d, - 0x4b, 0x39, 0x31, 0x82, 0x53, 0x1a, 0x1b, 0x63, 0x2d, 0x15, 0x27, 0x25, 0x03, 0xa0, 0xb8, 0x05, - 0x42, 0xcc, 0x34, 0xdd, 0xde, 0x65, 0xe3, 0xa2, 0x36, 0xa4, 0x7b, 0x7d, 0x53, 0xa8, 0x84, 0x65, - 0xc3, 0x2e, 0xef, 0xd7, 0xdb, 0xd2, 0xb6, 0xf4, 0x77, 0xa3, 0xef, 0x4b, 0xdd, 0x83, 0x76, 0x96, - 0x1f, 0x36, 0xcb, 0xd1, 0x69, 0xe9, 0x4d, 0x32, 0xfe, 0xc5, 0x4c, 0x72, 0x9d, 0x4b, 0x1f, 0xbd, - 0x95, 0xf8, 0xae, 0x5f, 0x8a, 0x0a, 0x42, 0x51, 0x5d, 0x5a, 0x70, 0x8d, 0xa1, 0xfd, 0x66, 0xe6, - 0xbc, 0x1a, 0xf8, 0x78, 0x70, 0x88, 0x90, 0x9e, 0xa0, 0x8e, 0xca, 0x35, 0x14, 0xd7, 0x4b, 0x27, - 0x4d, 0xde, 0x3d, 0x0f, 0xda, 0x67, 0x5a, 0x6c, 0x92, 0xbb, 0xca, 0xaf, 0xfa, 0x98, 0xb9, 0x29, - 0x4a, 0xb9, 0xb6, 0xc6, 0x82, 0xc9, 0xf7, 0x26, 0xbb, 0x30, 0x31, 0xd7, 0x7c, 0x99, 0x4d, 0x46, - 0x35, 0x3f, 0xdf, 0x13, 0x17, 0x7a, 0x44, 0xae, 0x78, 0x48, 0x33, 0x25, 0x4c, 0x6b, 0xa3, 0xd5, - 0x76, 0x56, 0xc6, 0xe8, 0xb2, 0x05, 0xfd, 0x08, 0x7f, 0x23, 0x04, 0xfa, 0xd2, 0xed, 0x1f, 0x7f, - 0xaa, 0x8a, 0xb3, 0x90, 0xab, 0x13, 0x47, 0x61, 0x11, 0xa3, 0xdd, 0x37, 0xbb, 0x88, 0x23, 0xad, - 0x2d, 0x9b, 0x5e, 0xe3, 0x58, 0x83, 0x7a, 0x00, 0x48, 0x5b, 0xa5, 0xc5, 0x01, 0x03, 0xa3, 0x80, - 0xd5, 0x35, 0xb9, 0x27, 0x82, 0x70, 0x04, 0x2a, 0xf4, 0x2e, 0x88, 0x1f, 0x71, 0x37, 0x9a, 0xdd, - 0xf7, 0x35, 0x63, 0xd2, 0x2a, 0x6e, 0x9b, 0xd3, 0xab, 0x9b, 0xc9, 0x04, 0xd4, 0x60, 0xa2, 0x99, - 0x5d, 0x2a, 0xac, 0x99, 0x7e, 0xb7, 0x05, 0x36, 0x1c, 0x2d, 0x4c, 0xa7, 0x0b, 0xfb, 0x8b, 0x55, - 0xd8, 0x87, 0x87, 0x0c, 0xfd, 0xe9, 0x1d, 0x9a, 0x0c, 0xfa, 0xc0, 0x6a, 0x79, 0x8e, 0x08, 0xd5, - 0x58, 0xa4, 0xc3, 0x9f, 0xab, 0x59, 0x83, 0x08, 0x27, 0x16, 0x17, 0xbb, 0xc9, 0x34, 0x9b, 0x56, - 0x22, 0xfd, 0xb2, 0x59, 0x0d, 0x66, 0xab, 0xaa, 0x90, 0x1d, 0x11, 0xe4, 0x89, 0x2e, 0xf8, 0x9f, - 0x29, 0xb5, 0xe9, 0x1c, 0x1e, 0x61, 0xba, 0x77, 0x14, 0xec, 0x96, 0xfc, 0x8c, 0xeb, 0xac, 0xef, - 0xe9, 0xb4, 0x46, 0x67, 0x90, 0x75, 0x74, 0xea, 0xa4, 0x94, 0x20, 0xbb, 0x46, 0x96, 0xaa, 0x63, - 0xd5, 0x86, 0x20, 0x05, 0x7a, 0x7f, 0x23, 0x75, 0x29, 0x92, 0xe2, 0x00, 0x7f, 0x3a, 0x03, 0xf5, - 0xe8, 0xa8, 0x83, 0x47, 0x8a, 0xa5, 0xa1, 0xf3, 0x75, 0x49, 0x68, 0xbc, 0x23, 0x98, 0x32, 0xd2, - 0x97, 0x2c, 0x46, 0x7c, 0x97, 0x66, 0x94, 0x65, 0x3c, 0x35, 0x20, 0x13, 0x58, 0xa5, 0xe3, 0xc9, - 0xb7, 0xa4, 0xc1, 0xe9, 0x0e, 0x09, 0x94, 0x2c, 0xb1, 0x07, 0x0f, 0x5e, 0xc5, 0x75, 0x9e, 0x60, - 0x82, 0xd0, 0xe7, 0xeb, 0xbc, 0x36, 0x47, 0xef, 0xa1, 0xe5, 0xb4, 0xe4, 0xd2, 0x8c, 0x81, 0x78, - 0xd8, 0xd0, 0x86, 0x20, 0x8d, 0x17, 0xca, 0x2d, 0xce, 0x8e, 0x0d, 0x9a, 0xa3, 0x16, 0xf7, 0x56, - 0x7e, 0x9d, 0xce, 0x83, 0xa8, 0x93, 0x5b, 0xa8, 0x6d, 0x34, 0x13, 0x72, 0xb3, 0xfb, 0x36, 0x50, - 0xf9, 0x2a, 0x28, 0x1d, 0xec, 0x70, 0xd8, 0x1c, 0x61, 0x47, 0xe9, 0x3c, 0x1b, 0xd1, 0x50, 0x7f, - 0x80, 0x94, 0x35, 0xed, 0xf0, 0x7c, 0xa1, 0x80, 0xd0, 0xca, 0x35, 0x74, 0x56, 0x8d, 0x41, 0x6d, - 0x30, 0xa9, 0xf0, 0xd5, 0x31, 0x43, 0x37, 0x76, 0x46, 0x84, 0x0f, 0x96, 0x89, 0xb2, 0x64, 0xb0, - 0x1c, 0x35, 0xda, 0x57, 0xce, 0x32, 0xac, 0xcb, 0x74, 0x44, 0x93, 0x4c, 0xce, 0xa2, 0xbf, 0x78, - 0xe6, 0xaf, 0x29, 0xfc, 0x29, 0x3a, 0x41, 0x2a, 0x43, 0xdf, 0x08, 0x0f, 0x48, 0x1f, 0x5b, 0xfa, - 0xf2, 0xff, 0xb1, 0xf4, 0xaf, 0xf8, 0xa3, 0xaa, 0x02, 0x78, 0x62, 0x25, 0x17, 0xb6, 0xc7, 0x94, - 0x1f, 0x3e, 0xe5, 0x3d, 0xb2, 0xdc, 0xe7, 0x35, 0xb8, 0x3f, 0x7d, 0xf4, 0x28, 0xe1, 0x7f, 0x9d, - 0x67, 0x0b, 0x05, 0xb8, 0xac, 0x11, 0x3b, 0x21, 0xcb, 0x15, 0x54, 0xd3, 0x45, 0x05, 0x7e, 0x0c, - 0xc1, 0x15, 0x55, 0x21, 0xbd, 0x9e, 0x35, 0xb1, 0x7f, 0x5b, 0x20, 0x7f, 0xcf, 0xeb, 0x90, 0xbf, - 0x4e, 0x31, 0xc9, 0x73, 0xbf, 0x5c, 0x8e, 0xfc, 0x0b, 0x5f, 0x42, 0x17, 0x9b, 0x99, 0x9a, 0xed, - 0x8c, 0xb5, 0xab, 0xb0, 0x80, 0x3b, 0x75, 0x35, 0xe9, 0x2b, 0x50, 0x82, 0xcb, 0x26, 0x4a, 0xb0, - 0x82, 0x77, 0x53, 0xe0, 0x79, 0x2b, 0xf9, 0x60, 0x98, 0xc2, 0x0b, 0x55, 0x37, 0x04, 0xe1, 0x31, - 0x94, 0x19, 0xd4, 0x58, 0xc4, 0x17, 0xb3, 0xa1, 0x51, 0x9c, 0xaa, 0x3c, 0x50, 0xe4, 0xf5, 0x1b, - 0xd0, 0xc1, 0x34, 0x97, 0xb5, 0xff, 0xc1, 0x1b, 0xd8, 0x8c, 0x5a, 0x45, 0x43, 0x27, 0xee, 0x2c, - 0x2f, 0x7b, 0x49, 0x65, 0x33, 0x05, 0xb1, 0xca, 0xf1, 0x7b, 0x2a, 0x0b, 0x61, 0x57, 0xe5, 0xf7, - 0xb4, 0xad, 0x26, 0x4f, 0x8f, 0x5a, 0x97, 0xd8, 0x2b, 0xef, 0xc8, 0x4f, 0x05, 0x4e, 0x77, 0x41, - 0x87, 0xfb, 0x30, 0x14, 0xf0, 0xa4, 0xd6, 0x2a, 0x1f, 0x2f, 0x8f, 0x81, 0x9b, 0x1a, 0x7a, 0x9f, - 0x2e, 0x00, 0x62, 0x6b, 0xd2, 0xc6, 0xbc, 0xad, 0x36, 0x66, 0xdc, 0x89, 0xb7, 0xb5, 0xb0, 0xf2, - 0x35, 0xd3, 0x18, 0xbe, 0x31, 0xf0, 0x4e, 0xa1, 0xaf, 0x3a, 0x33, 0xad, 0xf4, 0x82, 0x7c, 0x9e, - 0x17, 0x5e, 0x8c, 0xed, 0xef, 0xfd, 0x7c, 0x8b, 0x04, 0x9c, 0x20, 0xb5, 0x74, 0xee, 0xa6, 0xd5, - 0x55, 0x87, 0x1c, 0x27, 0xe0, 0xc3, 0xff, 0x84, 0xe5, 0x5b, 0xde, 0x85, 0x91, 0x61, 0x8b, 0x47, - 0xce, 0xfd, 0x71, 0x59, 0x13, 0x6f, 0xe0, 0xf1, 0x55, 0x69, 0x04, 0x1c, 0xac, 0xf7, 0xc3, 0x43, - 0xf5, 0xd5, 0xa2, 0x59, 0x5b, 0x7f, 0xcc, 0xf2, 0x9e, 0x55, 0x12, 0x78, 0x38, 0x7a, 0x79, 0x72, - 0xdc, 0x81, 0xae, 0xbc, 0x1e, 0x66, 0x17, 0xcc, 0x48, 0x0d, 0x63, 0x63, 0x58, 0x88, 0xa1, 0x4a, - 0x31, 0x9c, 0x4d, 0x35, 0xd9, 0x11, 0x25, 0x82, 0x00, 0x32, 0xc1, 0xca, 0x78, 0x47, 0x4b, 0xbe, - 0xd3, 0xb5, 0xbf, 0xd3, 0x55, 0x40, 0x8a, 0x6d, 0xbb, 0x70, 0xe7, 0xfa, 0x39, 0x48, 0xb8, 0x38, - 0x46, 0xaa, 0xbc, 0x73, 0xfc, 0xba, 0x63, 0x91, 0x9d, 0xf2, 0x4e, 0x75, 0x51, 0xb7, 0x2e, 0x6b, - 0x51, 0x8a, 0xda, 0x00, 0x7a, 0xe4, 0xc2, 0x16, 0xa8, 0x7a, 0x07, 0x11, 0x09, 0x54, 0x5d, 0x2d, - 0x50, 0x61, 0x7f, 0x8a, 0x18, 0x14, 0xff, 0x77, 0xd6, 0x71, 0xdf, 0x89, 0x1f, 0x2c, 0x8e, 0x96, - 0xc9, 0x05, 0xd4, 0xda, 0xeb, 0x65, 0x03, 0xf4, 0xe6, 0x3f, 0x61, 0xd1, 0x40, 0xc1, 0x5e, 0xae, - 0xb4, 0x59, 0xaa, 0x73, 0x08, 0xac, 0xad, 0x96, 0x0c, 0x78, 0x30, 0x62, 0x19, 0xb7, 0x97, 0x7f, - 0x92, 0x5a, 0x63, 0x7b, 0x47, 0xec, 0x6c, 0x5f, 0x88, 0xd4, 0xe5, 0x3b, 0x38, 0xf1, 0x29, 0x7c, - 0x63, 0xba, 0x03, 0xe6, 0x4c, 0xd8, 0x8e, 0xb7, 0x37, 0xb5, 0x77, 0x9f, 0xb8, 0x06, 0xef, 0xed, - 0x85, 0x5d, 0xf4, 0xf6, 0xee, 0xbf, 0x1b, 0x16, 0xaa, 0x52, 0xde, 0x68, 0xc6, 0x44, 0x81, 0x63, - 0x6b, 0x44, 0xe0, 0x7b, 0xcf, 0xb4, 0xbe, 0xaa, 0xbe, 0xbb, 0x72, 0xc0, 0x58, 0xc0, 0x9a, 0x29, - 0x94, 0x4d, 0xcc, 0xa4, 0x6e, 0x08, 0xe4, 0x92, 0x49, 0xf7, 0x68, 0xb6, 0x77, 0xb1, 0xd9, 0xbc, - 0xdf, 0x76, 0x37, 0x08, 0xe6, 0xeb, 0x97, 0x51, 0x5e, 0x31, 0x47, 0xbb, 0xeb, 0x74, 0xcb, 0x68, - 0x3f, 0xa1, 0x58, 0x66, 0x6e, 0xc7, 0xf7, 0xd3, 0xcc, 0x3a, 0x15, 0x95, 0xa2, 0xa9, 0x1f, 0x29, - 0x58, 0xc6, 0x73, 0x1b, 0x96, 0x6a, 0x16, 0xe1, 0xa4, 0x09, 0x40, 0x27, 0x9f, 0xe4, 0xe3, 0x1b, - 0x3c, 0x05, 0xaf, 0xd4, 0xf5, 0x3c, 0x02, 0xad, 0x06, 0x7d, 0xe8, 0x02, 0x7d, 0x9a, 0x04, 0xdd, - 0x4b, 0xb3, 0x2e, 0xee, 0x13, 0x02, 0x22, 0x44, 0xe6, 0x20, 0xf2, 0x4c, 0xdb, 0xf8, 0x5c, 0x77, - 0x2c, 0x32, 0x72, 0xf7, 0x91, 0x47, 0xee, 0xb3, 0xf2, 0x2d, 0x7b, 0xa3, 0xb5, 0x37, 0x44, 0x85, - 0xd7, 0xa9, 0xea, 0x76, 0x55, 0x65, 0xc0, 0xab, 0x5a, 0x11, 0x63, 0x61, 0xbd, 0xc7, 0xf7, 0x72, - 0x7a, 0xb4, 0x1b, 0xf7, 0xe8, 0x95, 0x01, 0x7c, 0xc4, 0xe3, 0x50, 0xfc, 0xdb, 0xb1, 0xce, 0x5f, - 0x5f, 0x44, 0xdf, 0x79, 0x16, 0xa9, 0x3d, 0xbd, 0xee, 0x6c, 0xaa, 0xb9, 0xb8, 0x6a, 0x0a, 0x1a, - 0x7b, 0xf4, 0xf4, 0x0b, 0x25, 0x9f, 0xb1, 0x56, 0x59, 0xbc, 0x6f, 0xeb, 0x26, 0x20, 0x0d, 0x6e, - 0x8b, 0x06, 0x38, 0x79, 0x74, 0x29, 0x0b, 0xd0, 0xae, 0x6b, 0x50, 0x2a, 0x46, 0xa4, 0xec, 0x74, - 0x6a, 0xe2, 0x01, 0xd7, 0x0b, 0x0f, 0xa3, 0x74, 0x0d, 0xd7, 0x6b, 0x16, 0xe9, 0x2e, 0x8c, 0x37, - 0x6b, 0x86, 0xb1, 0x99, 0x6f, 0xf3, 0x25, 0x44, 0x1d, 0x7b, 0xb8, 0x47, 0x99, 0x12, 0x29, 0xb3, - 0x68, 0xb6, 0xb9, 0x29, 0xd1, 0xeb, 0x9b, 0x82, 0xce, 0x3a, 0x96, 0x95, 0xf8, 0x83, 0xb6, 0x82, - 0x2c, 0x8b, 0xf1, 0x0d, 0x94, 0x70, 0xa7, 0xbb, 0xd8, 0xf4, 0x8b, 0xaa, 0xbf, 0x9f, 0x41, 0x7f, - 0xb7, 0x1e, 0x21, 0xba, 0xab, 0xba, 0x23, 0xe3, 0xa8, 0xc2, 0xf2, 0x92, 0xfe, 0xfc, 0xe0, 0x60, - 0x7f, 0x8f, 0x57, 0xf5, 0x68, 0xaf, 0x07, 0xfb, 0xae, 0x98, 0xc1, 0x8f, 0xae, 0xad, 0x53, 0x93, - 0xf9, 0xae, 0x31, 0x14, 0xb4, 0x28, 0x53, 0x37, 0xdf, 0x3d, 0xed, 0x46, 0xd0, 0xf3, 0xe5, 0x92, - 0x9a, 0x7e, 0x4d, 0xc9, 0x4d, 0x33, 0xaa, 0xb2, 0xeb, 0x92, 0x47, 0xed, 0x25, 0xff, 0xb0, 0x59, - 0xc1, 0x1d, 0x2b, 0xe1, 0xea, 0xf2, 0xaf, 0x18, 0x7d, 0xcd, 0xed, 0xe3, 0x31, 0xa3, 0x6f, 0x29, - 0x65, 0x4e, 0x63, 0x44, 0x3c, 0xd5, 0x6b, 0xc0, 0x92, 0x23, 0x1c, 0xb9, 0x74, 0xcf, 0xde, 0xdf, - 0x5c, 0xa3, 0x2d, 0xdf, 0xf2, 0x03, 0xfd, 0x98, 0xdf, 0x74, 0x32, 0x01, 0x1a, 0xd6, 0xb0, 0xea, - 0x80, 0xf0, 0x08, 0x82, 0x59, 0x4f, 0xda, 0x06, 0x4a, 0x14, 0x11, 0x30, 0x79, 0x67, 0xa8, 0xa5, - 0xb6, 0x2d, 0x09, 0x86, 0xf3, 0x9f, 0x5d, 0xff, 0xd5, 0x19, 0x73, 0x37, 0x8a, 0xac, 0xbd, 0x80, - 0xcc, 0x10, 0x2e, 0xdf, 0xb0, 0x65, 0xa8, 0x8e, 0xd4, 0xc2, 0xcc, 0x9b, 0x83, 0xde, 0x1a, 0xfe, - 0x53, 0x4b, 0xbc, 0xbd, 0x99, 0xcf, 0x97, 0xa5, 0x67, 0xa0, 0x19, 0x95, 0x78, 0x5d, 0xcb, 0xea, - 0xd8, 0xcd, 0x66, 0x55, 0x05, 0x69, 0x69, 0xd9, 0x65, 0x92, 0x87, 0xed, 0xed, 0x61, 0x6d, 0xef, - 0xda, 0x3a, 0x37, 0x01, 0x8d, 0xa1, 0x8a, 0x53, 0x31, 0xa9, 0xfa, 0x9b, 0x2e, 0x93, 0x27, 0xd2, - 0xa6, 0xa4, 0x86, 0xeb, 0x86, 0x1f, 0x4e, 0x5b, 0xbf, 0x4c, 0xb6, 0x96, 0xcd, 0x3f, 0x2d, 0x07, - 0xa8, 0xfe, 0xf8, 0xb6, 0xe5, 0x72, 0x47, 0x22, 0xbf, 0xa8, 0xc3, 0xfb, 0x49, 0xe5, 0xc0, 0xd8, - 0xe6, 0xfb, 0xe6, 0x4d, 0x8b, 0x1d, 0xbc, 0x6a, 0x73, 0x9e, 0x94, 0xb1, 0x7b, 0x6d, 0xb1, 0x29, - 0x56, 0x2c, 0x13, 0x39, 0xa5, 0x21, 0x62, 0x56, 0xa1, 0x3c, 0xcf, 0x31, 0x1f, 0x71, 0x08, 0x63, - 0x7b, 0xa0, 0xc1, 0x26, 0xcf, 0x63, 0xca, 0x78, 0x17, 0x02, 0x51, 0x9b, 0x35, 0x48, 0x4a, 0x4d, - 0x40, 0x5a, 0x02, 0xa1, 0x0d, 0x6d, 0xd1, 0x47, 0x49, 0x33, 0x30, 0x0c, 0x5a, 0x31, 0xde, 0xc3, - 0x25, 0x87, 0xf2, 0xf6, 0xd5, 0x51, 0xe5, 0x76, 0xa0, 0x1b, 0x6d, 0x0e, 0x45, 0x8b, 0x3f, 0x9d, - 0x2d, 0x6a, 0x37, 0x2a, 0x99, 0x1b, 0xab, 0x74, 0xb8, 0xb1, 0x4a, 0xc2, 0xdc, 0xc2, 0x3b, 0xe6, - 0x04, 0xcb, 0x8f, 0x7e, 0xdb, 0x25, 0x5e, 0x62, 0x45, 0x00, 0x1b, 0x6e, 0xe8, 0x45, 0xd0, 0xb7, - 0x3d, 0x32, 0xab, 0xc6, 0xa7, 0xdf, 0xdc, 0xff, 0xb5, 0x5f, 0x2e, 0x41, 0xcb, 0x5b, 0xa0, 0x80, - 0x28, 0x21, 0x09, 0x12, 0x11, 0xae, 0x2e, 0x00, 0x63, 0xb2, 0x5b, 0xee, 0xd9, 0x58, 0x08, 0x62, - 0x01, 0xa2, 0xfc, 0x1c, 0xe8, 0x4d, 0x9b, 0xa8, 0xcb, 0xf1, 0xdd, 0x96, 0xa7, 0xee, 0x78, 0x6d, - 0xe5, 0x51, 0x1d, 0xd1, 0xb7, 0x4e, 0x94, 0x57, 0xa0, 0x0e, 0x9d, 0x1b, 0xd4, 0x21, 0xe6, 0xfb, - 0x66, 0x18, 0xb3, 0xb0, 0x6c, 0x36, 0x19, 0x5f, 0x0b, 0xe4, 0x26, 0x13, 0x4e, 0x93, 0x09, 0x62, - 0xb2, 0x72, 0x9a, 0x8c, 0xab, 0x88, 0x5e, 0xf5, 0x7c, 0xaa, 0xe3, 0xa0, 0x8d, 0x55, 0x86, 0xcc, - 0xc3, 0x3a, 0x82, 0x42, 0xc9, 0xda, 0xba, 0xb4, 0x85, 0x17, 0x7e, 0x4a, 0x89, 0x97, 0x40, 0x7e, - 0xfb, 0x15, 0x67, 0x19, 0x2d, 0x16, 0xa5, 0x05, 0x3e, 0xe0, 0xfa, 0xe5, 0x96, 0xf6, 0xe2, 0xc9, - 0xcc, 0x76, 0xee, 0x94, 0xd5, 0x93, 0x43, 0x79, 0x77, 0x96, 0x6b, 0x41, 0x94, 0xb3, 0x75, 0x20, - 0xca, 0x58, 0xc3, 0x68, 0x2b, 0x91, 0x3e, 0x09, 0x2e, 0x62, 0x32, 0xf4, 0x96, 0x75, 0xa4, 0xe7, - 0x42, 0x27, 0x5f, 0x4f, 0xad, 0x57, 0x35, 0x08, 0x65, 0x7b, 0x3c, 0xd4, 0xc0, 0x94, 0x67, 0x77, - 0x85, 0x83, 0x33, 0x87, 0x5d, 0x8b, 0x23, 0x92, 0xdc, 0xa5, 0xf1, 0x46, 0x40, 0x62, 0x0d, 0xb4, - 0x0c, 0x9b, 0x0d, 0x9d, 0xe0, 0x70, 0x10, 0xe3, 0x11, 0x56, 0xc3, 0x33, 0xb5, 0x44, 0xb6, 0xb4, - 0x0c, 0x86, 0xf2, 0x6d, 0x9c, 0x86, 0xd7, 0xd3, 0x78, 0x18, 0xe2, 0x25, 0x8c, 0x70, 0x54, 0x4c, - 0xe3, 0xd6, 0x7a, 0x13, 0x17, 0x9d, 0x06, 0x98, 0x86, 0x1e, 0xc9, 0x17, 0x0b, 0xc5, 0x93, 0xd3, - 0x82, 0x47, 0x3b, 0xde, 0x00, 0x8f, 0xf6, 0x62, 0x3d, 0x1e, 0x6d, 0x38, 0x6b, 0x8f, 0x83, 0x38, - 0xd2, 0xaa, 0x1b, 0x0a, 0x1a, 0x16, 0x90, 0x73, 0x32, 0x0e, 0xf9, 0x37, 0xe4, 0x90, 0x5c, 0xc8, - 0xdf, 0xf9, 0x24, 0x99, 0x2d, 0xf8, 0x27, 0x8c, 0x0c, 0xba, 0x00, 0xc6, 0x34, 0xd4, 0xc2, 0xbd, - 0x37, 0x50, 0xd8, 0x47, 0xfa, 0xd2, 0x83, 0x71, 0xf5, 0x18, 0xea, 0xf3, 0x82, 0x52, 0x87, 0xc0, - 0xce, 0xea, 0x10, 0xd8, 0xd2, 0x6d, 0xa2, 0x71, 0xa6, 0x1d, 0x0e, 0x9b, 0x7e, 0x05, 0x4d, 0x3f, - 0xe5, 0x94, 0x9c, 0x90, 0x27, 0x7e, 0x7a, 0x58, 0xe2, 0x4d, 0xc8, 0x87, 0x87, 0xf4, 0x88, 0x20, - 0xda, 0x15, 0x78, 0x07, 0xc2, 0x2a, 0xa9, 0x2c, 0x13, 0x8a, 0xc2, 0x17, 0x72, 0x0f, 0x33, 0x8e, - 0x3e, 0xdc, 0x6d, 0xcd, 0xf2, 0x28, 0x6b, 0x64, 0x62, 0x1c, 0x23, 0xf0, 0x4d, 0xdf, 0x86, 0xb7, - 0xe2, 0x84, 0x64, 0xe9, 0x1b, 0x3e, 0x3c, 0x6c, 0x35, 0xc2, 0x91, 0xe8, 0xd0, 0xce, 0xab, 0x73, - 0xa1, 0x56, 0x42, 0x89, 0xee, 0xd1, 0x3a, 0x34, 0x53, 0x1e, 0x9a, 0x43, 0x1e, 0x48, 0xe4, 0xb3, - 0x9e, 0x1e, 0x32, 0xe2, 0xb7, 0xb5, 0xbd, 0x39, 0x20, 0xe4, 0x65, 0x03, 0x84, 0xbc, 0xcf, 0x37, - 0xf2, 0x0d, 0xb4, 0x96, 0x6a, 0xdd, 0xa2, 0xd9, 0xe2, 0xcd, 0xd6, 0x9d, 0xca, 0xd6, 0x9d, 0x1e, - 0x56, 0xdc, 0x5c, 0xd3, 0xa3, 0xaa, 0xd1, 0x30, 0xca, 0x22, 0x50, 0xe9, 0xd6, 0x2d, 0x54, 0x67, - 0x14, 0xab, 0x3b, 0x03, 0xdb, 0x31, 0xe7, 0x21, 0x49, 0xc8, 0x2f, 0xc9, 0x34, 0x54, 0x8f, 0xf9, - 0xec, 0x63, 0x52, 0x2c, 0xb0, 0x9a, 0xe3, 0x26, 0xa6, 0x33, 0x35, 0x7e, 0x63, 0xa5, 0x1c, 0xaf, - 0xc1, 0x77, 0x77, 0x26, 0x4e, 0xb6, 0x7e, 0xe2, 0xe4, 0x7a, 0xe2, 0x54, 0xaa, 0x58, 0x30, 0x71, - 0x4a, 0xf9, 0x1b, 0x26, 0x4e, 0x16, 0x52, 0xa7, 0xd4, 0xb1, 0xac, 0x11, 0x09, 0x85, 0xa2, 0x54, - 0x2e, 0x46, 0xb8, 0x8d, 0x73, 0x8d, 0xae, 0x4f, 0xda, 0x03, 0xd3, 0x99, 0x68, 0xb9, 0xeb, 0x93, - 0x22, 0xe7, 0x99, 0x61, 0x9d, 0x1c, 0xb4, 0x29, 0x18, 0xa0, 0x4d, 0x5c, 0xa1, 0xe1, 0xf1, 0x1a, - 0x36, 0xbf, 0x29, 0x68, 0x62, 0xe6, 0x4c, 0x07, 0xde, 0x48, 0x57, 0x08, 0x10, 0x99, 0xb6, 0xd0, - 0xcb, 0x41, 0x65, 0xb5, 0xbb, 0x1b, 0x2e, 0xdb, 0x86, 0x71, 0xd8, 0xc1, 0x86, 0x12, 0x38, 0x1b, - 0x6e, 0xf5, 0x8b, 0xb8, 0x5d, 0xb1, 0x77, 0xe3, 0x4a, 0xb9, 0x74, 0x89, 0xaf, 0xed, 0xdd, 0x98, - 0xd5, 0xc7, 0x55, 0x79, 0x7d, 0x74, 0xb3, 0xfa, 0xb8, 0x3c, 0xa7, 0x9f, 0xa6, 0x2b, 0xf2, 0x81, - 0x75, 0x7b, 0xd9, 0xce, 0xd2, 0xcc, 0x67, 0x55, 0x81, 0xae, 0xdd, 0x02, 0x5d, 0xaf, 0x2a, 0x50, - 0xb7, 0xb7, 0x2a, 0xa3, 0x6e, 0xcf, 0xcd, 0xa9, 0x4b, 0xf2, 0xad, 0xb4, 0x9b, 0x1d, 0xa3, 0x35, - 0xa7, 0x9e, 0xe1, 0xe9, 0xaa, 0x1a, 0x96, 0x6e, 0x0d, 0xcb, 0xe9, 0xba, 0xdc, 0x3e, 0xcc, 0x56, - 0xe4, 0x56, 0xcd, 0xe2, 0x65, 0x03, 0xb6, 0x9e, 0x0f, 0x49, 0x5f, 0x68, 0x5e, 0x7b, 0x9c, 0xfc, - 0xb5, 0x74, 0xc8, 0x89, 0x2a, 0xae, 0x1a, 0x35, 0x17, 0x97, 0x27, 0x77, 0xc5, 0x8a, 0xf2, 0xc2, - 0x96, 0xbc, 0xf5, 0x08, 0x19, 0xa0, 0x25, 0xff, 0x1f, 0x8b, 0x55, 0xad, 0xbb, 0xd1, 0x6e, 0xef, - 0xde, 0x29, 0xbc, 0x4c, 0xdf, 0x16, 0x42, 0xfc, 0x21, 0xf4, 0xd5, 0x71, 0x4b, 0xd2, 0x9e, 0xe3, - 0x95, 0x4a, 0xaf, 0xf2, 0x60, 0x41, 0x67, 0xb4, 0x23, 0x72, 0xe8, 0x61, 0xa9, 0x1a, 0xd4, 0x70, - 0x11, 0x9a, 0x2b, 0x9d, 0xc2, 0xba, 0xad, 0x2c, 0x2f, 0x64, 0x36, 0xee, 0x79, 0xfa, 0x90, 0x2d, - 0xfa, 0xa5, 0x82, 0x34, 0x19, 0xac, 0x90, 0xb9, 0xab, 0xb7, 0xff, 0xd2, 0x85, 0xe1, 0x5b, 0xd9, - 0x89, 0x18, 0x58, 0x18, 0x1c, 0x75, 0x3c, 0x8d, 0x6d, 0x85, 0xa7, 0x51, 0xc7, 0xa2, 0x8d, 0xe5, - 0x50, 0xd8, 0xd6, 0x84, 0xb2, 0xf5, 0xa4, 0xe7, 0xcb, 0x92, 0xd6, 0x91, 0x8b, 0x2d, 0xdc, 0xda, - 0x96, 0x11, 0x31, 0xb9, 0x37, 0xad, 0x0e, 0x4b, 0xf5, 0xe4, 0xfe, 0x42, 0x4c, 0xcc, 0x05, 0x16, - 0x7a, 0xac, 0x77, 0xa5, 0x86, 0x58, 0x7e, 0x54, 0x45, 0x15, 0xb7, 0x5e, 0x2b, 0xda, 0xf2, 0x26, - 0xd5, 0x5d, 0x99, 0xc1, 0xe3, 0x2a, 0x0d, 0xc9, 0x62, 0x51, 0xaf, 0x16, 0x0e, 0xcf, 0xda, 0xe8, - 0x6c, 0x8c, 0xc9, 0x26, 0x74, 0x5e, 0x50, 0x1f, 0xe7, 0x08, 0x7f, 0xe3, 0xb7, 0x8d, 0xf2, 0xf2, - 0xbe, 0x35, 0x2f, 0x07, 0x4c, 0xab, 0x31, 0x6d, 0x34, 0x98, 0x56, 0x6b, 0x96, 0xd3, 0xf6, 0x2c, - 0x1b, 0x08, 0x5c, 0x8d, 0x6c, 0x19, 0x84, 0x07, 0x7a, 0x50, 0x22, 0x08, 0xa2, 0xe2, 0xfe, 0xf0, - 0x20, 0x8e, 0xf6, 0x03, 0x77, 0x12, 0x2d, 0x16, 0xf5, 0x0d, 0x5e, 0xc1, 0x6f, 0x11, 0x58, 0x8d, - 0xdc, 0xbc, 0xf7, 0xa9, 0xf7, 0x79, 0x6e, 0x8d, 0xf7, 0x93, 0x32, 0xee, 0xd9, 0x01, 0x3d, 0x08, - 0x90, 0x3f, 0xbb, 0xb0, 0xa3, 0xd7, 0x26, 0x8f, 0x53, 0x2c, 0x86, 0xc9, 0xc1, 0x62, 0x59, 0xe8, - 0x86, 0xf5, 0xb2, 0x95, 0xba, 0x6c, 0xf2, 0xc3, 0xac, 0x8b, 0xe5, 0xfb, 0xc9, 0xd6, 0x56, 0x25, - 0x3f, 0x2d, 0x83, 0x7a, 0x14, 0x24, 0x1f, 0xba, 0xf8, 0x10, 0xd6, 0x54, 0x35, 0xe7, 0xf3, 0xef, - 0xf2, 0xe6, 0x02, 0x88, 0x93, 0x5e, 0xd4, 0x27, 0x00, 0xc9, 0x13, 0x96, 0x6a, 0x8f, 0x80, 0x86, - 0x0b, 0xa4, 0xa2, 0x50, 0xe6, 0x1b, 0x1f, 0xf5, 0x51, 0x79, 0x5b, 0x5e, 0xb9, 0x21, 0x20, 0xa2, - 0x89, 0x76, 0x49, 0xb8, 0x43, 0x89, 0xcd, 0x7e, 0x32, 0xb8, 0x23, 0x27, 0x68, 0xbe, 0x14, 0x5e, - 0x70, 0x98, 0x10, 0x91, 0x05, 0x66, 0x0f, 0xeb, 0xe3, 0x22, 0x94, 0x3e, 0xe9, 0x92, 0x08, 0xac, - 0x0a, 0x55, 0xea, 0xc0, 0xf8, 0x5f, 0xfe, 0x9e, 0x9a, 0xdf, 0x19, 0x5e, 0xc0, 0x74, 0xca, 0x03, - 0xab, 0x5f, 0x9e, 0x21, 0x7a, 0x75, 0x68, 0x89, 0x35, 0xef, 0xf2, 0x21, 0x5e, 0xf7, 0x90, 0xb6, - 0xd2, 0x8e, 0xb7, 0xa3, 0x7c, 0x08, 0x76, 0xbc, 0x8e, 0x4f, 0xd4, 0x9c, 0x81, 0xb7, 0x62, 0xc5, - 0xa3, 0xb3, 0x4c, 0x05, 0x41, 0x0b, 0x7d, 0x35, 0x3b, 0xae, 0xbb, 0x6a, 0xf2, 0x69, 0xac, 0x5e, - 0xc1, 0x03, 0xa8, 0xf6, 0xf1, 0x61, 0x97, 0x28, 0x3a, 0x8e, 0x93, 0x65, 0x87, 0xac, 0xa0, 0x6c, - 0x1d, 0x1f, 0xf5, 0x0e, 0xa2, 0x00, 0xe6, 0x77, 0x01, 0xa5, 0x94, 0x4e, 0xf5, 0xc7, 0xaf, 0x41, - 0xea, 0x82, 0x25, 0x60, 0x24, 0x3a, 0x78, 0x60, 0x9b, 0x83, 0x2e, 0x23, 0xca, 0x72, 0x4f, 0x51, - 0xd9, 0x20, 0x82, 0x96, 0x3f, 0x7b, 0x6f, 0x59, 0xc6, 0xc8, 0xe8, 0xa4, 0x59, 0xbf, 0xf1, 0x9d, - 0x5f, 0x0d, 0x3c, 0xed, 0xb0, 0xee, 0x19, 0x77, 0xfd, 0x60, 0x67, 0x76, 0xac, 0x70, 0x25, 0xe7, - 0x46, 0x9b, 0x6c, 0xb3, 0xaf, 0x05, 0xd5, 0x00, 0x04, 0x6b, 0x65, 0x4a, 0x36, 0xce, 0x9d, 0x61, - 0xc9, 0xed, 0x8b, 0x7f, 0xb1, 0x99, 0x63, 0xa4, 0x78, 0x19, 0x59, 0xa5, 0x21, 0xf7, 0x29, 0x4b, - 0xa9, 0x86, 0x81, 0x69, 0xbf, 0x2e, 0x9b, 0xaf, 0xc7, 0xce, 0xeb, 0xf1, 0xd5, 0xe7, 0x86, 0x73, - 0xae, 0xf4, 0xaa, 0x41, 0x49, 0x98, 0x00, 0xac, 0x6a, 0xa1, 0x5c, 0x77, 0x42, 0x22, 0x97, 0x5e, - 0x30, 0x2d, 0xdd, 0x63, 0xc5, 0x44, 0xfc, 0x1a, 0x6a, 0x4b, 0x43, 0x8f, 0x79, 0xae, 0x4e, 0xf0, - 0xb5, 0xb2, 0x59, 0x15, 0x5f, 0xe6, 0xa5, 0x0d, 0x21, 0x9b, 0x05, 0x0b, 0x46, 0x5c, 0xe0, 0x71, - 0x50, 0xe2, 0x80, 0x06, 0x89, 0xdd, 0xe0, 0xa0, 0x39, 0x4a, 0x89, 0xc9, 0x14, 0x4f, 0x74, 0x1d, - 0x92, 0x15, 0x62, 0x12, 0x7e, 0xf1, 0xa2, 0xdf, 0xe1, 0x49, 0xd0, 0x21, 0xcb, 0x75, 0xe7, 0x0b, - 0xa2, 0x19, 0x58, 0x3e, 0x07, 0x1d, 0xba, 0x7a, 0xc0, 0x68, 0x28, 0xd6, 0xc4, 0x99, 0x7b, 0xc1, - 0xd1, 0x6e, 0xf7, 0xd1, 0x9f, 0x3a, 0xfd, 0x02, 0x82, 0xcb, 0xbd, 0x44, 0xbc, 0x9b, 0x66, 0x9d, - 0x31, 0xd3, 0xd2, 0x62, 0xf5, 0xec, 0x8f, 0xf2, 0xe7, 0x08, 0x05, 0xae, 0x31, 0x55, 0xff, 0x6c, - 0xf5, 0xa4, 0x9d, 0x9f, 0x80, 0x09, 0x40, 0x6e, 0x13, 0x30, 0xb0, 0x27, 0xe8, 0xd4, 0x78, 0x9d, - 0x5f, 0x4c, 0x27, 0x5f, 0x70, 0x5a, 0x12, 0xba, 0x01, 0xcf, 0x4d, 0x90, 0xa9, 0x78, 0x60, 0xc1, - 0x9f, 0x19, 0x4e, 0xbc, 0x64, 0x76, 0x0c, 0x63, 0x04, 0x94, 0xab, 0xf7, 0x16, 0x4c, 0xcc, 0xb9, - 0xf4, 0xb7, 0x31, 0x96, 0x01, 0x9b, 0x3e, 0xba, 0x84, 0x25, 0x02, 0xd4, 0x63, 0x7b, 0x01, 0x38, - 0x1d, 0x12, 0x4e, 0x35, 0x4e, 0x7c, 0x9e, 0xf2, 0xb3, 0xe3, 0xe6, 0x9c, 0x2f, 0x11, 0xab, 0x3e, - 0x1f, 0xf0, 0x45, 0x98, 0x4f, 0xb3, 0xe3, 0x33, 0x58, 0xc8, 0x9d, 0x9b, 0x33, 0x10, 0xc4, 0x85, - 0x6a, 0x06, 0xe7, 0xcd, 0xa0, 0xdb, 0x66, 0x10, 0x7a, 0xad, 0xc2, 0x8c, 0x31, 0x1f, 0x98, 0x67, - 0xf1, 0xec, 0x7d, 0x08, 0x03, 0x29, 0xf6, 0x96, 0xb5, 0x16, 0x42, 0x23, 0x0a, 0xc1, 0x6d, 0x94, - 0x89, 0xbb, 0xf4, 0x0b, 0xad, 0x47, 0x17, 0xaa, 0xc7, 0xf6, 0x3c, 0xd8, 0xbd, 0x70, 0x28, 0xe2, - 0xcc, 0xd7, 0x1f, 0xc2, 0xa1, 0x49, 0xa1, 0x58, 0xa5, 0xdf, 0x53, 0xe7, 0x1d, 0x34, 0x0e, 0x86, - 0x05, 0x16, 0x64, 0x8a, 0x44, 0x31, 0xc1, 0xe6, 0x30, 0x07, 0x21, 0x61, 0x1d, 0xf0, 0x64, 0x76, - 0x5d, 0xbd, 0x83, 0xd6, 0x44, 0x26, 0x30, 0x0b, 0xfa, 0x24, 0x58, 0x10, 0xdc, 0x99, 0x8d, 0x38, - 0xc2, 0x7e, 0xa1, 0x6a, 0xc1, 0x24, 0x86, 0x5e, 0x75, 0xbf, 0x03, 0xdf, 0xa9, 0x81, 0xe4, 0x86, - 0xe2, 0x8d, 0x6f, 0x7b, 0x14, 0x6d, 0xee, 0x49, 0xea, 0x31, 0xd4, 0x35, 0xa9, 0x06, 0x50, 0xee, - 0x7e, 0x2d, 0xdf, 0xee, 0x63, 0xf2, 0xdd, 0x97, 0x6c, 0x96, 0x78, 0x49, 0xd5, 0x33, 0x2b, 0xe5, - 0xca, 0x95, 0x70, 0x99, 0x61, 0x54, 0x15, 0xc8, 0xdd, 0x6b, 0x55, 0x46, 0xb8, 0xb7, 0xd7, 0x6e, - 0x8b, 0xb4, 0x1d, 0x7b, 0x5c, 0xa0, 0x85, 0xb2, 0xef, 0xb4, 0xe1, 0x38, 0x9b, 0x0c, 0x7c, 0x37, - 0xcf, 0x0b, 0xb4, 0xd8, 0x2f, 0x02, 0x77, 0xc4, 0x41, 0x11, 0x9b, 0x3d, 0x6c, 0x1f, 0x58, 0x2d, - 0x3d, 0xae, 0xa2, 0xab, 0x0b, 0x7c, 0x46, 0x32, 0x6e, 0x02, 0x3f, 0x3f, 0xa2, 0x39, 0x5d, 0xcf, - 0x9a, 0x2d, 0x4c, 0x6b, 0xd5, 0x02, 0x04, 0x33, 0xc7, 0x00, 0x6f, 0x30, 0xd6, 0xe6, 0x08, 0x94, - 0x97, 0x08, 0xdb, 0xb8, 0xbe, 0x0c, 0xaa, 0x96, 0x0c, 0xdd, 0x41, 0xdb, 0xf9, 0xda, 0xfd, 0x3d, - 0xb1, 0xb1, 0xf4, 0x91, 0xb9, 0xb9, 0x5e, 0x55, 0xf9, 0x0e, 0xc7, 0xf8, 0x09, 0x91, 0xce, 0xf8, - 0xc5, 0xe5, 0xe8, 0xb4, 0x2a, 0xfc, 0xca, 0x82, 0x9c, 0x85, 0x29, 0x02, 0x4b, 0xe1, 0x18, 0x59, - 0x69, 0xb8, 0x1d, 0xd4, 0x46, 0x53, 0xe7, 0x69, 0x09, 0x5d, 0x3a, 0x20, 0x69, 0x8f, 0xb2, 0xd0, - 0xe7, 0x6d, 0x18, 0xdb, 0xa5, 0x7c, 0x43, 0x48, 0x24, 0x54, 0x07, 0x0c, 0x25, 0x58, 0x31, 0x54, - 0xd3, 0xae, 0x10, 0xe0, 0x59, 0xdf, 0x73, 0x79, 0x25, 0xd1, 0x41, 0xbd, 0x02, 0xd6, 0x6c, 0xa4, - 0xbb, 0x9c, 0x83, 0x3c, 0x39, 0xbf, 0x8a, 0x61, 0x5b, 0x86, 0xff, 0x6f, 0x63, 0x3c, 0x8b, 0x02, - 0xbd, 0xdd, 0xbe, 0x31, 0x73, 0x10, 0xb9, 0x6c, 0xd1, 0x3b, 0x88, 0x51, 0x78, 0x91, 0xcf, 0xc5, - 0xde, 0x95, 0x1d, 0x6d, 0xff, 0x79, 0x2d, 0x5e, 0xb0, 0xb8, 0x83, 0x36, 0x17, 0x3e, 0x05, 0x0e, - 0x47, 0xa5, 0x0f, 0x09, 0x76, 0xa9, 0x44, 0xc1, 0x21, 0x66, 0xc1, 0x85, 0x83, 0xc0, 0x85, 0x69, - 0x4b, 0xc1, 0xf0, 0xbc, 0xd8, 0x64, 0xe8, 0x06, 0x54, 0xe7, 0x14, 0xd3, 0xed, 0x26, 0x31, 0x27, - 0xec, 0x16, 0x86, 0x6e, 0xe8, 0xbb, 0xdc, 0x4d, 0x1a, 0xbd, 0xbb, 0x08, 0x5d, 0xe2, 0x26, 0xfd, - 0xe2, 0x32, 0x74, 0x59, 0x9b, 0x0c, 0xde, 0x37, 0x0f, 0x20, 0x10, 0xef, 0xed, 0x4f, 0x5c, 0x89, - 0xfb, 0x53, 0x3a, 0xfb, 0xb0, 0x4e, 0x41, 0xba, 0x0d, 0x03, 0x5e, 0x6d, 0xc0, 0x7d, 0xc2, 0x11, - 0x69, 0xf7, 0x62, 0x3f, 0xe3, 0xcd, 0x66, 0x07, 0xf6, 0xca, 0x2a, 0x3f, 0x95, 0xd9, 0x3c, 0x0f, - 0x02, 0x4d, 0xc9, 0x34, 0xd6, 0x25, 0x29, 0x4d, 0x58, 0x36, 0x59, 0x8f, 0x82, 0xb5, 0x1f, 0x78, - 0x92, 0xc5, 0xc6, 0x29, 0xf6, 0x8d, 0x08, 0x87, 0x4e, 0x48, 0x39, 0xac, 0xa4, 0x33, 0x48, 0x98, - 0x37, 0x87, 0xa9, 0xdd, 0x8c, 0x7f, 0xd7, 0x45, 0x49, 0x1d, 0x8c, 0x63, 0x03, 0x2f, 0x6c, 0x07, - 0xff, 0xaa, 0x83, 0x73, 0x50, 0x51, 0xa6, 0x45, 0xbe, 0xf7, 0x8a, 0x4b, 0x50, 0xde, 0x7e, 0xc8, - 0x7f, 0xb9, 0x1c, 0xf9, 0x30, 0xd2, 0x52, 0x18, 0x69, 0x30, 0xca, 0xd4, 0x58, 0xab, 0xe7, 0xda, - 0x72, 0x17, 0xb8, 0x9d, 0x6b, 0xd4, 0x5b, 0xc2, 0x5f, 0xfa, 0xcd, 0x70, 0x38, 0xec, 0xec, 0x76, - 0x0f, 0xbe, 0x0b, 0x3b, 0x48, 0x15, 0x8e, 0xde, 0xc9, 0xc5, 0x8e, 0x17, 0xe2, 0xdf, 0x4b, 0xf9, - 0x77, 0x04, 0x5b, 0x38, 0x2e, 0x47, 0x2b, 0x4a, 0x38, 0x6c, 0x2b, 0xdf, 0xaf, 0x7f, 0x49, 0xf9, - 0xa2, 0x28, 0xda, 0xac, 0x7c, 0xd6, 0x97, 0xff, 0xa1, 0x1b, 0xd6, 0xee, 0xad, 0xcf, 0x22, 0x05, - 0xe9, 0xc4, 0xcc, 0x12, 0x18, 0x26, 0x7c, 0xab, 0x3f, 0x98, 0x77, 0x41, 0xf9, 0x63, 0xc3, 0xd7, - 0x67, 0xf1, 0x05, 0x49, 0x29, 0x9e, 0x3c, 0x41, 0x72, 0x0e, 0x82, 0x2b, 0xb4, 0x97, 0x4e, 0x09, - 0x03, 0x20, 0x5a, 0x53, 0xe8, 0xc3, 0x15, 0x93, 0x42, 0x67, 0x62, 0xd3, 0x08, 0xd9, 0x43, 0xb6, - 0xdf, 0x38, 0x34, 0x34, 0x73, 0xe5, 0x79, 0x80, 0x90, 0xae, 0x2c, 0x20, 0xeb, 0x29, 0xef, 0x7d, - 0x83, 0x40, 0xc9, 0x36, 0x16, 0x24, 0x4c, 0x05, 0x29, 0x30, 0x93, 0xb9, 0xd9, 0x44, 0x9c, 0x4c, - 0x86, 0xc3, 0x28, 0xf2, 0x0c, 0x86, 0xe6, 0x8a, 0x69, 0x96, 0x30, 0x0a, 0x66, 0x15, 0x0c, 0x22, - 0x3a, 0x98, 0x94, 0x8b, 0x4a, 0xaf, 0xa6, 0xab, 0xaa, 0x65, 0x47, 0x6e, 0x9f, 0x08, 0x49, 0xa7, - 0x07, 0x05, 0x1e, 0x8a, 0xc8, 0x13, 0x05, 0x50, 0xc4, 0x9c, 0xf9, 0x03, 0xfa, 0x6d, 0x15, 0xc4, - 0xb5, 0xa0, 0x57, 0x57, 0x43, 0xd8, 0xde, 0x52, 0x68, 0x8f, 0xf2, 0x16, 0x3a, 0x12, 0xfe, 0x8f, - 0x96, 0x2e, 0xd9, 0x5f, 0x43, 0x2d, 0x57, 0xeb, 0x0d, 0xe8, 0x8b, 0xd5, 0x05, 0xb9, 0x72, 0x86, - 0xd2, 0xdf, 0x8d, 0xd9, 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, 0xfc, 0x39, - 0x8f, 0xf8, 0xb8, 0x6d, 0x66, 0x2c, 0x6a, 0xe9, 0x71, 0x32, 0x3b, 0xa3, 0xb4, 0xb6, 0x2f, 0x84, - 0x55, 0xd2, 0xb6, 0x2b, 0xc8, 0x83, 0xab, 0xfa, 0x9e, 0xd0, 0x37, 0x83, 0xe5, 0x1c, 0xa7, 0xad, - 0xf1, 0x2e, 0x23, 0x04, 0x8d, 0x73, 0x76, 0xeb, 0xc9, 0x5a, 0x25, 0x8e, 0xfa, 0xd8, 0x2c, 0x12, - 0x11, 0xd6, 0xc3, 0x2e, 0x91, 0x3b, 0xa1, 0x16, 0x36, 0x4a, 0x4a, 0x05, 0x56, 0x2f, 0x5f, 0xd5, - 0xaa, 0xf8, 0x9b, 0xeb, 0xa7, 0xab, 0x85, 0x81, 0xb0, 0x5d, 0xf2, 0xa9, 0x1a, 0x73, 0x44, 0xa8, - 0x3a, 0xf3, 0x57, 0x64, 0x04, 0x77, 0xf0, 0x89, 0x9a, 0x6d, 0x4c, 0xce, 0x8c, 0xf9, 0x72, 0x09, - 0x8b, 0x4e, 0x5b, 0xc3, 0x2c, 0x4c, 0x61, 0xd7, 0xa9, 0x7d, 0x13, 0xb6, 0x9b, 0x08, 0x65, 0x52, - 0x81, 0xc8, 0x57, 0xd0, 0x43, 0x3f, 0xa6, 0xb0, 0x6a, 0xfa, 0x88, 0x4a, 0xbe, 0x76, 0xc8, 0x10, - 0xef, 0x77, 0x6f, 0x0b, 0x93, 0x1a, 0x66, 0x45, 0x3f, 0x6f, 0xb5, 0xbf, 0x69, 0x51, 0x2a, 0x50, - 0xa7, 0x8e, 0x75, 0x49, 0x61, 0x08, 0xbd, 0x50, 0x2a, 0x16, 0xc0, 0xe9, 0x5e, 0x11, 0xe7, 0xe1, - 0x10, 0x3a, 0x21, 0x33, 0x41, 0x97, 0x14, 0x34, 0x4a, 0x52, 0x13, 0x34, 0xa2, 0xa0, 0x3b, 0xd8, - 0xdc, 0x6a, 0x0d, 0x46, 0x1f, 0x51, 0xc7, 0xfa, 0xf0, 0x91, 0xf8, 0xd3, 0xa7, 0xb3, 0x90, 0xfe, - 0x3b, 0x5b, 0x2c, 0xe4, 0xb1, 0x37, 0x32, 0x10, 0x50, 0xec, 0xe4, 0x13, 0x37, 0x4e, 0x7e, 0x56, - 0x3f, 0xd6, 0x76, 0xec, 0xad, 0xc3, 0x14, 0x5d, 0xc3, 0xdb, 0x8f, 0x04, 0xc6, 0xe3, 0xca, 0xb6, - 0x4b, 0x3b, 0xfa, 0x40, 0x71, 0x5d, 0x7d, 0xb8, 0x4c, 0xff, 0xd4, 0x89, 0x08, 0x83, 0x8c, 0x9e, - 0x23, 0x37, 0x4f, 0xfc, 0xf4, 0x29, 0x0e, 0xf1, 0xa7, 0xa8, 0x1f, 0x7e, 0x48, 0x7a, 0xe7, 0x4b, - 0x39, 0xde, 0xc5, 0x1e, 0x5e, 0x5b, 0xf0, 0x6d, 0x94, 0x4f, 0x2f, 0x02, 0xc9, 0x32, 0xf1, 0x71, - 0x2d, 0x95, 0x94, 0x3e, 0xaf, 0x7f, 0xfe, 0xe9, 0x04, 0x8b, 0x5b, 0x04, 0x6c, 0x12, 0x79, 0x8b, - 0xeb, 0x0d, 0x2f, 0xf7, 0x22, 0xa4, 0xbb, 0x33, 0x4f, 0xef, 0xaf, 0x71, 0x0c, 0xb5, 0xb3, 0x75, - 0x0f, 0xc7, 0xcc, 0xd4, 0x8d, 0x11, 0x25, 0xb6, 0xe9, 0xa0, 0x41, 0xb2, 0x8a, 0x57, 0x66, 0x82, - 0xb8, 0x8d, 0x0e, 0x96, 0xde, 0x2c, 0x58, 0x22, 0xbe, 0x1a, 0xdb, 0xe2, 0x30, 0x12, 0xcb, 0xfc, - 0x37, 0x2e, 0xa0, 0xb2, 0x9c, 0xf8, 0xcc, 0xdc, 0x44, 0xc8, 0x48, 0x74, 0x39, 0xad, 0xae, 0x6e, - 0x46, 0x68, 0xea, 0x7f, 0xfa, 0x72, 0x5a, 0x8c, 0xf3, 0x3c, 0xff, 0x3c, 0x15, 0x4f, 0x91, 0xc4, - 0x0a, 0x9a, 0xe5, 0xf3, 0x14, 0x2d, 0x0e, 0x16, 0x78, 0x37, 0x69, 0xba, 0x0a, 0xe9, 0xcd, 0xf7, - 0xaf, 0xc6, 0x3b, 0x49, 0xf7, 0x45, 0x70, 0xb4, 0x8f, 0x18, 0xb0, 0x3e, 0x7e, 0x36, 0x08, 0xaf, - 0xc6, 0x47, 0x3d, 0xf5, 0xb8, 0x1f, 0xe1, 0x6e, 0xf8, 0xec, 0x59, 0x92, 0x5c, 0x8d, 0x29, 0x64, - 0x27, 0xd9, 0xc7, 0x90, 0xe8, 0x85, 0x15, 0x02, 0x19, 0x28, 0x01, 0x10, 0xf1, 0xc5, 0x02, 0x47, - 0xb5, 0x3a, 0xbf, 0x2a, 0xd1, 0xcf, 0xf4, 0x6a, 0xbc, 0x08, 0x3b, 0x88, 0xe6, 0x16, 0x76, 0x0e, - 0xa2, 0xef, 0x90, 0xc6, 0x37, 0xfc, 0xa1, 0x2b, 0x51, 0xc4, 0x41, 0x68, 0x2c, 0x1c, 0x44, 0x61, - 0x08, 0xf8, 0x85, 0xac, 0xb3, 0x6c, 0x3c, 0xc6, 0xf7, 0xce, 0x1a, 0x49, 0xda, 0x1e, 0x68, 0x62, - 0x5e, 0x20, 0x59, 0xa5, 0x3a, 0x62, 0xb9, 0x3a, 0x67, 0xfb, 0x1f, 0x22, 0xe6, 0xec, 0x64, 0x5a, - 0x5c, 0x77, 0x7e, 0x11, 0xa3, 0x3c, 0x97, 0x9a, 0xb5, 0xcf, 0xdf, 0x07, 0x41, 0xbe, 0x41, 0xed, - 0x54, 0x88, 0x49, 0xa2, 0x71, 0x08, 0x95, 0x01, 0x47, 0x15, 0xf9, 0xd4, 0x45, 0x41, 0x06, 0x19, - 0xa4, 0x74, 0x97, 0xf2, 0xa2, 0xe4, 0x32, 0xaa, 0x3a, 0x9c, 0x06, 0x7f, 0xb2, 0xb4, 0xfc, 0x65, - 0x53, 0xd8, 0x53, 0xa2, 0x2f, 0x54, 0x65, 0x08, 0x97, 0x64, 0x37, 0xa9, 0x67, 0x47, 0x6d, 0xaa, - 0x4f, 0xba, 0xbd, 0xbe, 0xed, 0xd3, 0x36, 0x67, 0x17, 0x8a, 0x88, 0xcf, 0xb2, 0x35, 0x63, 0xb9, - 0x74, 0x95, 0x3a, 0x5b, 0x30, 0xde, 0x24, 0x9f, 0xbd, 0x31, 0xf6, 0x46, 0x3e, 0x4b, 0xae, 0xef, - 0x42, 0x2b, 0x00, 0xd2, 0xff, 0x8b, 0xac, 0x1c, 0x56, 0x94, 0x8f, 0xc9, 0xf5, 0x95, 0x8d, 0xdb, - 0xdf, 0x75, 0x5c, 0xbf, 0x6c, 0xff, 0x38, 0x79, 0x86, 0xbe, 0xdc, 0x1b, 0x8f, 0x8c, 0x32, 0x12, - 0xfc, 0xf6, 0x35, 0xac, 0xd3, 0x36, 0xd6, 0xf4, 0xcc, 0x0a, 0x77, 0x89, 0x22, 0x88, 0x50, 0xec, - 0xb4, 0xca, 0x0b, 0x10, 0x76, 0x71, 0xde, 0x1e, 0x57, 0xe2, 0xda, 0xf7, 0xee, 0x52, 0x22, 0xb5, - 0xb8, 0xf7, 0xa4, 0x5b, 0x19, 0xca, 0x7a, 0x6c, 0x0c, 0xb1, 0x0c, 0xa2, 0x15, 0xf3, 0xae, 0xa0, - 0x4f, 0xda, 0x2d, 0x5d, 0xd6, 0xc0, 0x3f, 0x86, 0x89, 0xcd, 0x7c, 0x11, 0xde, 0xcc, 0xb8, 0x73, - 0x90, 0xeb, 0xd2, 0xb7, 0xe5, 0xc2, 0x85, 0x13, 0x6f, 0xbe, 0x08, 0x2f, 0xf5, 0xd1, 0x1b, 0x57, - 0x22, 0x0a, 0x25, 0xd8, 0xae, 0x55, 0xcc, 0xb2, 0x51, 0xcc, 0xb0, 0x86, 0xe9, 0x3c, 0x9f, 0xc5, - 0x76, 0xc6, 0xe1, 0xad, 0x8d, 0x47, 0x0b, 0x0f, 0x8b, 0xa6, 0xa6, 0x1d, 0x0a, 0x87, 0xc7, 0x4a, - 0x84, 0x3f, 0xfc, 0xe0, 0x1c, 0x7b, 0xd5, 0x0b, 0x46, 0x2b, 0x73, 0x1b, 0x9e, 0x33, 0x7c, 0xf8, - 0x7e, 0x30, 0x23, 0xdd, 0x61, 0x47, 0x04, 0xee, 0x8a, 0xfb, 0x15, 0xe8, 0xce, 0x36, 0xac, 0xf3, - 0x86, 0x58, 0xcd, 0x25, 0x1a, 0xed, 0xec, 0xf6, 0x75, 0x4f, 0x57, 0xa0, 0xb5, 0x9d, 0x46, 0x82, - 0x5e, 0x82, 0x3c, 0xd0, 0xd3, 0x66, 0x50, 0x37, 0xfd, 0x35, 0x2a, 0xbf, 0xd3, 0x85, 0xea, 0x2f, - 0xc2, 0x83, 0x08, 0xd6, 0x6a, 0x7f, 0x1d, 0x18, 0xb1, 0xb5, 0x21, 0x22, 0x50, 0x36, 0xe1, 0x13, - 0xe9, 0xa1, 0x29, 0x96, 0xeb, 0x62, 0x1a, 0xd5, 0x02, 0x6d, 0xfe, 0x52, 0xc8, 0xa9, 0x3b, 0xf6, - 0x6a, 0x5c, 0x0b, 0x09, 0x8f, 0xba, 0x9a, 0xd6, 0x73, 0x9a, 0x78, 0x33, 0x72, 0xd1, 0x84, 0x9d, - 0xad, 0x02, 0x95, 0xa2, 0xdb, 0x9f, 0x1e, 0x6a, 0xc0, 0x9e, 0xa9, 0xa2, 0x5b, 0xc8, 0x92, 0xf2, - 0xd3, 0xf4, 0x2c, 0x4c, 0x37, 0xa4, 0xc1, 0x04, 0xf5, 0xff, 0x9f, 0xb3, 0x99, 0x28, 0x5e, 0x0d, - 0x11, 0x5d, 0xbd, 0x9f, 0xd5, 0x4a, 0x9f, 0x6a, 0x53, 0xba, 0xac, 0x82, 0x1b, 0x1f, 0x59, 0x24, - 0x95, 0xfb, 0x31, 0xf4, 0xb2, 0x45, 0x7c, 0x98, 0x8a, 0x61, 0xc6, 0x38, 0xea, 0x6d, 0xf0, 0x22, - 0x72, 0xfe, 0x0a, 0x92, 0x0b, 0xa6, 0xf9, 0x4d, 0xe9, 0x36, 0xa1, 0x52, 0x79, 0x90, 0x7b, 0xc2, - 0x76, 0x38, 0xc6, 0x4c, 0xb0, 0xab, 0xde, 0xa0, 0xf0, 0x40, 0x9b, 0x3b, 0xff, 0xf2, 0xe8, 0xc4, - 0x19, 0x55, 0x16, 0x6f, 0x72, 0x4f, 0xbe, 0xef, 0x68, 0x72, 0x44, 0x96, 0xc1, 0x4c, 0x75, 0xce, - 0x1e, 0x82, 0xb3, 0x30, 0x3f, 0xc7, 0x34, 0xad, 0x88, 0x4f, 0xa3, 0xa5, 0xb9, 0xf9, 0xe4, 0x9a, - 0xae, 0x81, 0xa8, 0x2b, 0x9e, 0x67, 0x4d, 0x76, 0x2a, 0x75, 0x70, 0xdd, 0x75, 0xe4, 0x7d, 0xca, - 0xf6, 0xed, 0xbd, 0xa2, 0xbe, 0x11, 0x36, 0x0f, 0x61, 0xa5, 0xb8, 0x6e, 0x95, 0x63, 0xbe, 0xd2, - 0x18, 0xa3, 0x33, 0x5d, 0x57, 0x9d, 0xf1, 0xc0, 0xf0, 0xae, 0x4e, 0xd2, 0x2a, 0x7e, 0x74, 0x1b, - 0x7c, 0x6d, 0x2d, 0x2b, 0xa8, 0x65, 0xa5, 0xdd, 0x31, 0x4c, 0x6d, 0x9d, 0xd9, 0x80, 0x30, 0xaf, - 0xc3, 0xea, 0x65, 0x61, 0xe4, 0xf0, 0x10, 0xb9, 0x39, 0x0d, 0x82, 0x14, 0xb6, 0x81, 0x7b, 0xb1, - 0x5d, 0xe0, 0x25, 0x9d, 0x40, 0x8d, 0x52, 0x7a, 0xea, 0xb3, 0x86, 0x9c, 0xe1, 0xd1, 0x5f, 0x96, - 0x90, 0x78, 0x4d, 0xe1, 0xc9, 0xa7, 0xec, 0x0c, 0x59, 0x64, 0xfc, 0x8a, 0xe3, 0xc9, 0x4c, 0x83, - 0xc3, 0x32, 0xd0, 0x10, 0x5f, 0x20, 0x44, 0xa5, 0x87, 0xe5, 0x6e, 0xd5, 0x4f, 0x61, 0xe8, 0x73, - 0x2c, 0xda, 0x6c, 0x04, 0xdf, 0x05, 0xda, 0xed, 0x32, 0xb5, 0x56, 0xa3, 0x10, 0x16, 0x06, 0x7f, - 0x30, 0xcf, 0x1c, 0x50, 0x7e, 0xb7, 0x38, 0x55, 0x81, 0xa5, 0xb1, 0x10, 0xf8, 0xed, 0x42, 0x59, - 0x00, 0x46, 0x6e, 0xd9, 0xea, 0xe5, 0xb2, 0x22, 0xca, 0xe2, 0xd9, 0x37, 0x7e, 0xb0, 0x94, 0xa6, - 0x51, 0xb5, 0xb3, 0xa9, 0xa5, 0xd9, 0xb0, 0xc3, 0xbe, 0xf4, 0xa1, 0xb6, 0xbc, 0xf5, 0x73, 0xa9, - 0xef, 0x49, 0x5d, 0x71, 0x26, 0x9d, 0xb7, 0x6b, 0x7c, 0xd1, 0xd0, 0xa2, 0x8e, 0xb1, 0xb9, 0x6c, - 0x35, 0x36, 0x5b, 0x0c, 0xc4, 0x02, 0x3a, 0xbe, 0x72, 0x49, 0x9d, 0x55, 0x2c, 0x7d, 0x4b, 0x86, - 0xf7, 0xd5, 0x96, 0x3b, 0x02, 0x26, 0x46, 0x28, 0x8e, 0xa8, 0x3b, 0x55, 0x67, 0x63, 0x91, 0xeb, - 0xa9, 0x8c, 0x3f, 0x92, 0x49, 0x87, 0x40, 0xc5, 0xfa, 0x48, 0x3c, 0x0b, 0x06, 0xea, 0xce, 0x5e, - 0x76, 0x96, 0xcc, 0xe4, 0x0f, 0x7d, 0x9a, 0x11, 0x9a, 0x31, 0xa8, 0x63, 0x11, 0x36, 0x37, 0x74, - 0xa1, 0x0e, 0x90, 0xf0, 0x3d, 0x81, 0xc1, 0x0a, 0xd2, 0x61, 0x89, 0x81, 0xd9, 0xca, 0x08, 0x39, - 0xc7, 0x8e, 0x41, 0x2c, 0x0a, 0xf5, 0xbc, 0x10, 0x3f, 0xdc, 0xc9, 0x08, 0x81, 0x8f, 0xd4, 0xfd, - 0x1f, 0xe9, 0xe5, 0x6e, 0xc9, 0x64, 0x7c, 0x7d, 0x28, 0x23, 0x66, 0x3c, 0xeb, 0xc2, 0x50, 0xa6, - 0x18, 0x85, 0x96, 0xa6, 0x30, 0x5e, 0xc0, 0xb3, 0xe9, 0xaf, 0x20, 0xd7, 0x43, 0x80, 0x3a, 0x54, - 0xc9, 0xec, 0x73, 0xde, 0x24, 0x45, 0x1b, 0x7f, 0xda, 0x3c, 0xee, 0x94, 0x50, 0xe1, 0x9c, 0xa0, - 0x76, 0x38, 0xce, 0xfc, 0x10, 0x74, 0x53, 0x25, 0x5b, 0x7a, 0xa4, 0xd2, 0xb8, 0x5b, 0xc5, 0x08, - 0x27, 0x16, 0xdd, 0xfb, 0x92, 0x1a, 0x78, 0xde, 0x66, 0xa7, 0x34, 0x8b, 0xea, 0x4f, 0x5c, 0x8f, - 0xb2, 0x8c, 0xf1, 0x19, 0xad, 0x88, 0xc6, 0x18, 0xdf, 0xf0, 0xfd, 0x19, 0xa5, 0x37, 0x85, 0xdf, - 0x4a, 0x8a, 0xd7, 0x7c, 0x63, 0xbb, 0xe3, 0xf0, 0xdb, 0x05, 0x23, 0x5b, 0xfc, 0xef, 0xab, 0x26, - 0xc1, 0x92, 0x1a, 0xb7, 0x48, 0x73, 0x1c, 0xbe, 0x4f, 0x9e, 0xd1, 0x2c, 0x9c, 0x52, 0x49, 0x40, - 0x40, 0xbe, 0x8f, 0x24, 0xf7, 0x08, 0x55, 0xee, 0x94, 0xce, 0x1b, 0x65, 0xab, 0xf7, 0xad, 0xd2, - 0x33, 0x77, 0xc7, 0x5c, 0xab, 0x0c, 0x12, 0x5e, 0xe3, 0x43, 0x7e, 0x03, 0xbd, 0x54, 0x0e, 0xea, - 0x01, 0x48, 0x3a, 0x23, 0x2c, 0x23, 0xeb, 0xb0, 0x3c, 0x2e, 0x72, 0x42, 0xb9, 0xc3, 0x5c, 0xd4, - 0x92, 0xc8, 0xdc, 0x99, 0xc2, 0x66, 0xcc, 0x24, 0x21, 0x45, 0x93, 0x49, 0x96, 0xbf, 0x81, 0x3a, - 0xe9, 0x7b, 0x90, 0x56, 0x9f, 0x88, 0x83, 0xfc, 0xaf, 0xa8, 0x49, 0x6d, 0x69, 0x7c, 0xfc, 0x59, - 0xed, 0x63, 0xb3, 0x31, 0x72, 0x0f, 0xa8, 0x15, 0x09, 0x56, 0xaf, 0x61, 0x71, 0x29, 0xac, 0x69, - 0x4c, 0xcb, 0xbe, 0x0c, 0x74, 0x77, 0x5c, 0x1d, 0xa5, 0x6f, 0xcf, 0xf5, 0x2c, 0xa7, 0x36, 0xf7, - 0x82, 0x87, 0x07, 0xbb, 0x1a, 0x55, 0xed, 0xb9, 0x84, 0x67, 0x1f, 0x1a, 0x53, 0x35, 0x15, 0xe4, - 0x86, 0x16, 0xec, 0x7f, 0xe9, 0x86, 0xbd, 0x7c, 0xf3, 0xe3, 0xab, 0xf7, 0xbe, 0x57, 0x0d, 0x47, - 0x63, 0x16, 0x46, 0x41, 0x3f, 0xe7, 0x5e, 0x38, 0x93, 0x23, 0xeb, 0x43, 0x3e, 0x0b, 0xff, 0xf7, - 0x55, 0xdb, 0x55, 0x26, 0x39, 0xbc, 0xb6, 0x7c, 0xd5, 0x37, 0x51, 0xe0, 0x80, 0xf4, 0xd1, 0xd8, - 0xe7, 0xfa, 0x73, 0x8c, 0x27, 0x4f, 0x6a, 0xed, 0xd0, 0x2c, 0x56, 0x52, 0xed, 0xde, 0x23, 0xdd, - 0x29, 0x1d, 0x35, 0x91, 0x88, 0x5a, 0x22, 0x29, 0xdd, 0x8e, 0x9f, 0x7d, 0x5f, 0x3e, 0xbd, 0xfb, - 0x0d, 0xa4, 0xda, 0xfc, 0xed, 0xf4, 0x5e, 0x5c, 0x20, 0xbe, 0x66, 0xb4, 0x85, 0x6b, 0xac, 0xcf, - 0xc5, 0x3d, 0x8a, 0x08, 0xb3, 0x2b, 0xd0, 0x01, 0x87, 0xc4, 0xae, 0x8c, 0x01, 0xe9, 0xd1, 0x5e, - 0xb7, 0x07, 0x62, 0xcb, 0x26, 0x55, 0x05, 0x15, 0x86, 0x5b, 0x06, 0xf2, 0x81, 0x5a, 0xb3, 0xd4, - 0x45, 0xae, 0x50, 0x39, 0x88, 0x6b, 0xd5, 0x17, 0xdf, 0xdb, 0xdd, 0x9d, 0x7a, 0x21, 0xa7, 0xdb, - 0x45, 0x28, 0xf2, 0x34, 0xe9, 0xee, 0xa6, 0xca, 0xce, 0x36, 0x44, 0xc1, 0xeb, 0x73, 0x29, 0x8b, - 0x00, 0x52, 0xc4, 0xb2, 0x3c, 0x26, 0x5e, 0x98, 0x06, 0x9b, 0xb6, 0x6b, 0x17, 0x32, 0x92, 0x33, - 0xc2, 0x76, 0xe4, 0x22, 0x18, 0xfe, 0xf9, 0xdd, 0x6f, 0x89, 0xd4, 0xc9, 0x69, 0xf9, 0x20, 0x8c, - 0xee, 0xbe, 0xa5, 0x61, 0xd3, 0x55, 0x45, 0xd9, 0xc0, 0x0c, 0xc0, 0xdc, 0x2f, 0x5f, 0xe5, 0x29, - 0x16, 0x02, 0xbf, 0x22, 0x19, 0xcc, 0x42, 0x15, 0x36, 0x52, 0x36, 0x66, 0x5a, 0x5f, 0x9c, 0x74, - 0x32, 0xa6, 0x24, 0x51, 0x80, 0xda, 0x3f, 0x33, 0xc9, 0x90, 0x03, 0x5a, 0x65, 0x25, 0xe9, 0x46, - 0xa8, 0xa7, 0x61, 0x85, 0x40, 0xa5, 0xeb, 0x2e, 0xb9, 0xfb, 0xad, 0xc1, 0x47, 0xc2, 0x11, 0x18, - 0xd7, 0x97, 0x50, 0xe8, 0x28, 0xe0, 0x65, 0x22, 0x07, 0xc9, 0xcb, 0xb0, 0x5d, 0xe3, 0x9b, 0x8d, - 0xaf, 0xbd, 0x50, 0x46, 0x41, 0x0f, 0x06, 0xfa, 0x05, 0xf9, 0xe3, 0x56, 0xd9, 0x7b, 0xf6, 0xe4, - 0x89, 0x4a, 0x4d, 0x86, 0x42, 0x65, 0x8e, 0xc4, 0x1b, 0xaa, 0xd0, 0x5c, 0xfc, 0xee, 0xc9, 0x13, - 0x88, 0x0d, 0x91, 0xf7, 0xf1, 0xc7, 0x61, 0xb7, 0x77, 0x10, 0x0d, 0x7a, 0xfb, 0x51, 0xdc, 0x7b, - 0x0e, 0x3b, 0xcc, 0x16, 0x96, 0x04, 0x43, 0x29, 0x2f, 0x2a, 0x3b, 0xfd, 0x7e, 0x78, 0x30, 0x5f, - 0xa0, 0x50, 0x7e, 0xc0, 0xf9, 0x85, 0xb6, 0x26, 0xe8, 0x79, 0xbe, 0xe1, 0x5a, 0x1f, 0x09, 0x6a, - 0x5f, 0xe3, 0x6b, 0x8e, 0x27, 0x50, 0x76, 0x1b, 0x97, 0x9f, 0xcb, 0x63, 0xc3, 0xf2, 0xdb, 0x8d, - 0xcf, 0x23, 0x87, 0xe9, 0xea, 0x12, 0x55, 0x74, 0x73, 0x13, 0x04, 0x1a, 0x02, 0xe2, 0x0d, 0xbc, - 0x08, 0x75, 0xc7, 0x9b, 0x2a, 0xf7, 0x1e, 0xd1, 0x89, 0x7a, 0x5c, 0xf2, 0x65, 0x6e, 0x55, 0x0e, - 0xb4, 0x3e, 0x41, 0x6e, 0xcf, 0xf0, 0x8f, 0x8d, 0x7f, 0x20, 0x60, 0x61, 0x7a, 0x2d, 0x04, 0xba, - 0x67, 0xef, 0xed, 0xed, 0xb1, 0x53, 0xc7, 0x96, 0x62, 0x47, 0xd2, 0x26, 0x1b, 0xcd, 0xae, 0x0e, - 0xbb, 0xd2, 0xd5, 0x74, 0x02, 0x5a, 0x21, 0x5f, 0x32, 0x01, 0x9d, 0x93, 0x1c, 0xf3, 0xf8, 0x57, - 0x19, 0x04, 0x36, 0xe8, 0xd1, 0x14, 0x46, 0x72, 0x20, 0xdf, 0x20, 0x9c, 0xc0, 0x80, 0x56, 0xda, - 0x87, 0x07, 0x57, 0x51, 0x15, 0xe1, 0x1c, 0x42, 0xc9, 0x61, 0x22, 0xb4, 0x4a, 0x03, 0x61, 0x21, - 0xa5, 0x0a, 0xe2, 0xd6, 0xf8, 0x04, 0x6b, 0xa0, 0x2d, 0x60, 0x8d, 0x6a, 0x2c, 0x78, 0x0e, 0x2d, - 0x9d, 0xa5, 0x99, 0x17, 0xc2, 0x18, 0x97, 0xd3, 0x0b, 0x76, 0x5e, 0xd2, 0x11, 0x70, 0xb2, 0x8a, - 0x0c, 0x8f, 0xb1, 0x78, 0x50, 0x79, 0x44, 0x88, 0x41, 0x7d, 0x0f, 0xf9, 0x34, 0x63, 0x5d, 0xe7, - 0xe8, 0xec, 0x97, 0xdf, 0x41, 0x66, 0x38, 0xa1, 0x43, 0x14, 0x1c, 0x5a, 0x23, 0x56, 0xb8, 0x4b, - 0x31, 0xff, 0xc0, 0x9a, 0x98, 0x94, 0x25, 0x68, 0xe6, 0x5e, 0x88, 0x6b, 0xec, 0x9a, 0x78, 0x37, - 0xb3, 0x75, 0xd1, 0xe8, 0xc3, 0x20, 0x84, 0x99, 0x78, 0xff, 0x75, 0xf8, 0x14, 0xd6, 0xc1, 0xe9, - 0xac, 0x3a, 0xea, 0x1c, 0x3e, 0x45, 0x4e, 0x29, 0xfc, 0x7b, 0x55, 0x5d, 0xa7, 0x47, 0x9d, 0xff, - 0x03, 0x7f, 0x28, 0x02, 0xca, 0x46, 0x8e, 0x01, 0x00 + 0x4d, 0x34, 0xcb, 0xe7, 0x37, 0x98, 0xd5, 0xc7, 0x00, 0xe6, 0x74, 0xa8, 0xf4, 0xd5, 0x4e, 0x7a, + 0xe0, 0x0c, 0xdd, 0x93, 0x80, 0x25, 0x4b, 0x61, 0x2d, 0x74, 0xf8, 0xb2, 0xc0, 0xce, 0xfe, 0x31, + 0x80, 0x3a, 0x30, 0x9f, 0x9f, 0x84, 0x26, 0x5b, 0x56, 0xfe, 0x7d, 0x68, 0xdc, 0x85, 0x66, 0xef, + 0x02, 0xdf, 0xac, 0xeb, 0x23, 0x4d, 0x93, 0x10, 0x30, 0xad, 0xe5, 0xc0, 0x76, 0xd7, 0x27, 0x69, + 0x8b, 0x0c, 0x8d, 0x31, 0x39, 0x72, 0xc8, 0x30, 0x21, 0x4e, 0x34, 0x82, 0xa4, 0x31, 0x15, 0x93, + 0xb0, 0x1f, 0xbe, 0x8e, 0x88, 0xed, 0x1c, 0xdb, 0x86, 0x9e, 0x98, 0x59, 0x43, 0x04, 0xba, 0xfa, + 0x45, 0x0e, 0x7f, 0x86, 0x96, 0xa7, 0x24, 0x29, 0x57, 0x94, 0x25, 0x3e, 0x01, 0xbb, 0x83, 0x11, + 0xae, 0x2d, 0x1f, 0x22, 0xa5, 0xfa, 0xfc, 0xe6, 0x12, 0xde, 0x13, 0x59, 0x04, 0x7b, 0x20, 0x4c, + 0x76, 0x1c, 0x5b, 0xe4, 0x0f, 0x4c, 0x62, 0xec, 0xdb, 0xbd, 0xa9, 0x18, 0xb7, 0x09, 0x74, 0x19, + 0xeb, 0xc2, 0xaf, 0x8d, 0xb8, 0xdb, 0xc0, 0x1a, 0x6b, 0x50, 0x18, 0xba, 0x27, 0x2d, 0x4b, 0xf9, + 0x8c, 0xdb, 0x2c, 0x3a, 0x22, 0xfc, 0xfb, 0x3c, 0x87, 0x39, 0xc4, 0xae, 0x60, 0x39, 0x5e, 0x01, + 0xa9, 0x7f, 0xd4, 0x4d, 0x88, 0xcc, 0xfd, 0xd1, 0x16, 0x93, 0x69, 0x0a, 0x18, 0x7e, 0xcd, 0x18, + 0x3f, 0x6d, 0x0c, 0x19, 0x0a, 0x6c, 0x26, 0xac, 0x95, 0xb6, 0x36, 0xb2, 0xea, 0xdf, 0x96, 0x16, + 0x67, 0xd3, 0xeb, 0xd7, 0xf8, 0x9f, 0x65, 0x64, 0x1c, 0xd5, 0x2d, 0x05, 0x88, 0x1d, 0x91, 0x25, + 0x44, 0x74, 0x85, 0xc3, 0x21, 0xb8, 0xcc, 0x20, 0xec, 0xde, 0xee, 0x1d, 0x4c, 0x7a, 0x3c, 0x31, + 0x4a, 0x0d, 0x2e, 0x9a, 0xfe, 0x41, 0x8e, 0xb8, 0xff, 0xf0, 0xff, 0x0f, 0x2f, 0x0c, 0x94, 0x6e, + 0x3b, 0x44, 0xc7, 0x2e, 0xe6, 0x3c, 0x58, 0xd8, 0x7b, 0x30, 0xa0, 0xa0, 0xcc, 0x25, 0xaa, 0xfb, + 0x1e, 0x58, 0xcc, 0x07, 0x93, 0xde, 0xf6, 0xa0, 0xd3, 0x96, 0xdd, 0xcf, 0x37, 0xca, 0xb5, 0x30, + 0xd5, 0xd2, 0x32, 0x6d, 0x63, 0xea, 0x4a, 0x55, 0x3d, 0xcd, 0xa9, 0x8b, 0x7e, 0xd1, 0x90, 0xb5, + 0x83, 0x75, 0xb0, 0x3f, 0xf5, 0xe8, 0x20, 0x6c, 0x9b, 0xf0, 0x5d, 0x3b, 0x51, 0xa6, 0xf2, 0xc6, + 0xed, 0x0d, 0xd8, 0x45, 0x7b, 0x00, 0xa6, 0xbc, 0x2b, 0x0a, 0x8b, 0x40, 0x0a, 0x94, 0x0a, 0x00, + 0xd2, 0x72, 0x2e, 0x57, 0x5a, 0x0a, 0xe7, 0x1a, 0x0f, 0x28, 0x2d, 0xc9, 0xdb, 0x23, 0xfe, 0x32, + 0x94, 0x6b, 0x51, 0x30, 0x03, 0x28, 0xb3, 0xb1, 0x50, 0x52, 0x00, 0x2b, 0x85, 0x9c, 0x0f, 0xe0, + 0xda, 0x2a, 0x4c, 0xd2, 0x92, 0x9f, 0x00, 0x70, 0xed, 0xf3, 0x78, 0x0c, 0x00, 0xcc, 0x2d, 0x01, + 0x10, 0x96, 0x4b, 0xa5, 0x94, 0xff, 0xdc, 0x54, 0xd3, 0x82, 0x2b, 0x01, 0x5c, 0xfb, 0xab, 0x13, + 0x1d, 0x00, 0x78, 0x67, 0x2c, 0x27, 0xc7, 0x4a, 0x39, 0x5f, 0xf8, 0x1c, 0x84, 0x58, 0xf0, 0x7f, + 0x8c, 0x14, 0xf7, 0x61, 0x6f, 0x5b, 0x36, 0xcd, 0xd0, 0x73, 0xf1, 0x73, 0x74, 0x48, 0x4b, 0xfe, + 0x53, 0x74, 0x18, 0x3d, 0xeb, 0xa3, 0x0c, 0x41, 0x8e, 0x31, 0xe3, 0x45, 0x99, 0x2f, 0x7f, 0x38, + 0xbf, 0xc6, 0x0b, 0xde, 0x30, 0x48, 0xf2, 0x4e, 0x3c, 0xd9, 0x3b, 0x9f, 0x2b, 0x7e, 0x7c, 0xec, + 0xce, 0x6b, 0x32, 0xee, 0x71, 0xa1, 0x49, 0xd0, 0x0a, 0xb6, 0xd2, 0x16, 0x48, 0xcb, 0xb8, 0x66, + 0xd2, 0xcf, 0x9c, 0xc5, 0xff, 0xa3, 0xb6, 0xd2, 0x4f, 0x1e, 0xc5, 0x33, 0x1b, 0x62, 0x30, 0x2e, + 0x2a, 0x03, 0x04, 0xe8, 0x0d, 0x59, 0x15, 0x5d, 0xb9, 0xc0, 0xc6, 0x61, 0xc5, 0x19, 0x15, 0x39, + 0xf4, 0x64, 0xff, 0xe2, 0x04, 0xf1, 0xf3, 0x43, 0x41, 0xa0, 0xf2, 0x37, 0x93, 0x3b, 0xe5, 0xca, + 0xa7, 0x27, 0x28, 0x00, 0xe0, 0x08, 0x37, 0x27, 0x5b, 0x75, 0xde, 0x62, 0x0f, 0x89, 0xb8, 0x49, + 0xf2, 0x0b, 0xfe, 0x55, 0x9f, 0x09, 0xf9, 0x7f, 0xad, 0xcf, 0xc4, 0x32, 0xdb, 0x37, 0x8f, 0x75, + 0x8a, 0xb9, 0xac, 0x3f, 0x51, 0xaa, 0x37, 0xb4, 0xa5, 0x07, 0xe7, 0xb4, 0x56, 0x2e, 0x7a, 0x2a, + 0xe0, 0x6e, 0x3d, 0x2b, 0x67, 0x2c, 0xe4, 0x8f, 0xf5, 0x17, 0x8f, 0x61, 0x9a, 0xd9, 0xd8, 0x13, + 0x2a, 0xfe, 0x24, 0x61, 0x64, 0x3b, 0xc6, 0x90, 0xda, 0x5a, 0xfe, 0xda, 0xd2, 0x59, 0x8b, 0x77, + 0x78, 0xf8, 0x2b, 0x56, 0x75, 0x77, 0x3e, 0xd6, 0xfe, 0xf6, 0x84, 0x44, 0xe6, 0x23, 0x07, 0x74, + 0xcc, 0xc6, 0x23, 0x64, 0x57, 0x4f, 0x44, 0x3e, 0xb2, 0x68, 0xb8, 0x79, 0x58, 0x5b, 0x3d, 0x11, + 0x9e, 0xbb, 0xd6, 0x5f, 0x64, 0x62, 0xcd, 0xdc, 0x07, 0x1c, 0xcc, 0x9d, 0x87, 0xdc, 0x3f, 0xc3, + 0xc3, 0xe4, 0xff, 0x41, 0x0e, 0xf6, 0x89, 0x89, 0xc8, 0x8b, 0x5b, 0xee, 0x3c, 0xe4, 0x56, 0xcf, + 0x43, 0xe1, 0x6f, 0x2f, 0x08, 0x99, 0x94, 0xff, 0xd6, 0x82, 0xc8, 0x7f, 0x72, 0x41, 0xe4, 0x3f, + 0xb3, 0x20, 0xf2, 0xd9, 0xff, 0xad, 0xd7, 0x43, 0x21, 0x58, 0x0f, 0xf9, 0x65, 0xf3, 0xd0, 0x9b, + 0x1a, 0x66, 0xa0, 0xc3, 0xb8, 0x77, 0xb3, 0xa9, 0x9e, 0x16, 0x92, 0xab, 0x20, 0x43, 0x8e, 0x8a, + 0x54, 0x06, 0x27, 0x3c, 0xc7, 0x7b, 0x18, 0xba, 0xc6, 0xb6, 0x0f, 0x38, 0x2a, 0xb4, 0xed, 0xee, + 0x85, 0x5b, 0x4d, 0xda, 0x70, 0xb0, 0x78, 0x83, 0xe9, 0xa3, 0x5d, 0x5e, 0xf8, 0xde, 0x73, 0x9c, + 0x3c, 0x14, 0x9a, 0xbd, 0x0b, 0x3a, 0x80, 0x44, 0x56, 0xa2, 0xa7, 0x82, 0xee, 0x55, 0xac, 0xbf, + 0x24, 0xaa, 0xad, 0x85, 0x47, 0x9d, 0x8d, 0x08, 0x69, 0x1f, 0x0e, 0x3a, 0x5f, 0x68, 0x73, 0x83, + 0x5e, 0x5b, 0x36, 0x4d, 0xde, 0xa0, 0xb3, 0xde, 0xa0, 0x73, 0x4b, 0x07, 0x9d, 0x13, 0x17, 0x65, + 0xfd, 0xb8, 0x41, 0xe7, 0x3e, 0x3d, 0xe8, 0xb5, 0x55, 0x22, 0x34, 0x40, 0x96, 0xfb, 0x2b, 0x83, + 0x66, 0x4a, 0x72, 0xa1, 0xf3, 0xc1, 0x54, 0xf3, 0x83, 0xce, 0x79, 0x83, 0xce, 0x47, 0x06, 0xbd, + 0x16, 0x8c, 0x3a, 0xbf, 0x38, 0xd5, 0x71, 0x83, 0xce, 0x2f, 0x19, 0xf4, 0xa7, 0x14, 0x9b, 0xa5, + 0x1a, 0x31, 0x82, 0xd1, 0x22, 0xfd, 0x21, 0xc6, 0x3a, 0xff, 0xc8, 0xda, 0xe3, 0x5e, 0x08, 0x89, + 0x2a, 0xe1, 0x11, 0x76, 0xc7, 0xee, 0x88, 0x70, 0xec, 0x8e, 0x7d, 0x62, 0x49, 0xdc, 0x5a, 0x56, + 0x34, 0xb7, 0xdc, 0x0e, 0x69, 0xbb, 0x0b, 0xc7, 0xb2, 0xe1, 0x8d, 0x93, 0xe8, 0x2c, 0x00, 0x99, + 0x4a, 0x73, 0xd7, 0x04, 0x10, 0x24, 0xd8, 0xee, 0x00, 0x62, 0x4c, 0xea, 0x5b, 0x37, 0x41, 0xa0, + 0x80, 0x90, 0x6b, 0xa4, 0xe3, 0x78, 0x68, 0x67, 0x17, 0x27, 0x02, 0xfe, 0x46, 0x19, 0x5e, 0xa9, + 0x98, 0x2e, 0x7a, 0x1e, 0x60, 0x72, 0x3a, 0x1b, 0xf0, 0xb9, 0xf4, 0x26, 0x50, 0xbf, 0xde, 0xb6, + 0xcd, 0x1a, 0x73, 0x98, 0x46, 0xf3, 0x17, 0x75, 0x33, 0xa5, 0x5f, 0x28, 0xf3, 0xc9, 0xc9, 0x25, + 0x21, 0x5a, 0x20, 0x32, 0xec, 0x4b, 0x0b, 0x81, 0xfe, 0x10, 0xdb, 0xe6, 0xab, 0x26, 0xae, 0x38, + 0x68, 0xe9, 0x8a, 0x5b, 0x6e, 0x43, 0xdc, 0x11, 0xcb, 0x32, 0x83, 0x1a, 0xbb, 0xd9, 0x13, 0x6f, + 0x50, 0x8b, 0xb5, 0xa7, 0xad, 0x2d, 0x31, 0xe2, 0xd3, 0xf9, 0x4f, 0x7e, 0x13, 0x96, 0x58, 0xf0, + 0xdd, 0xec, 0x18, 0xf1, 0x82, 0xb7, 0x7b, 0x7d, 0xce, 0xec, 0xb5, 0xf6, 0x49, 0x03, 0xfe, 0x82, + 0xfd, 0x9e, 0x02, 0x11, 0xb1, 0x55, 0xb9, 0x2a, 0x76, 0xd8, 0x2a, 0xcf, 0xd0, 0x87, 0x64, 0x14, + 0xd0, 0xf3, 0xb2, 0xdd, 0xc3, 0xfc, 0x88, 0xa8, 0x97, 0xba, 0x0f, 0xd3, 0xaf, 0x33, 0x1a, 0x2e, + 0x5f, 0x70, 0xeb, 0x78, 0x8e, 0xed, 0x41, 0x11, 0x4d, 0xd5, 0x5f, 0xf8, 0xf3, 0x24, 0xc3, 0x24, + 0xfa, 0x8d, 0xd2, 0x4e, 0x2c, 0x77, 0x6a, 0xf7, 0xb6, 0x9c, 0x58, 0xa7, 0x76, 0xe6, 0x9d, 0x1c, + 0xef, 0x4e, 0xbf, 0xd0, 0xe9, 0xda, 0x42, 0xaf, 0xd9, 0x4f, 0xb8, 0xd2, 0x2f, 0x76, 0xea, 0x1a, + 0x8d, 0xd7, 0x3e, 0xd9, 0xed, 0x42, 0xaf, 0xb9, 0xa5, 0x57, 0x26, 0xfc, 0xad, 0x26, 0xf6, 0x6a, + 0x88, 0xbf, 0xfa, 0xff, 0xe6, 0x68, 0xf3, 0xcb, 0x46, 0xeb, 0xf3, 0xfa, 0xd8, 0x8b, 0x37, 0x8c, + 0x7c, 0xd6, 0x56, 0x5f, 0x1c, 0x70, 0xbf, 0xd8, 0x12, 0x3e, 0xb9, 0x67, 0x57, 0x8b, 0x14, 0x34, + 0xa9, 0x86, 0x6d, 0xc0, 0xd6, 0x1e, 0x7e, 0xa6, 0xe7, 0x06, 0xb3, 0xf0, 0x22, 0x59, 0x72, 0xb1, + 0x9a, 0x1f, 0xf6, 0x6c, 0xd5, 0xfd, 0x8f, 0x48, 0x1d, 0xbc, 0xe9, 0xe9, 0x2f, 0x08, 0x7a, 0x75, + 0x3d, 0x86, 0x06, 0x83, 0xb3, 0x0d, 0x81, 0x7e, 0x2e, 0xe7, 0xb3, 0x97, 0x5a, 0x04, 0x1a, 0x14, + 0x89, 0xe1, 0x0b, 0x0f, 0x50, 0xd6, 0x22, 0xe7, 0x0b, 0x3e, 0x10, 0xc3, 0x3e, 0x3b, 0xf9, 0x1d, + 0xf6, 0xbd, 0xfa, 0x13, 0x55, 0x14, 0x14, 0xcd, 0x71, 0xfd, 0xf2, 0xd1, 0xda, 0x53, 0xa5, 0x9f, + 0x1d, 0xc9, 0x98, 0x7a, 0xbf, 0xd6, 0x56, 0x6c, 0x52, 0x2a, 0x48, 0xea, 0xdd, 0xce, 0xc5, 0xf5, + 0x44, 0x3e, 0x39, 0xe8, 0x1b, 0x0d, 0xf8, 0xef, 0xbc, 0x75, 0x3b, 0xd8, 0xbb, 0xed, 0xc3, 0xd3, + 0x8e, 0x8c, 0xef, 0xfb, 0xcd, 0xc6, 0x23, 0xfc, 0x34, 0x8b, 0xfb, 0xa3, 0x5e, 0x11, 0x13, 0x1a, + 0x0f, 0xe7, 0xad, 0x6b, 0xf9, 0xa8, 0x61, 0xd9, 0x85, 0x4e, 0xe9, 0x0a, 0x13, 0xae, 0xf5, 0xab, + 0xdb, 0xec, 0x0e, 0x94, 0x99, 0x3e, 0x4f, 0xc6, 0xe5, 0xc7, 0xab, 0x5b, 0x4c, 0x3c, 0xee, 0xec, + 0x0d, 0x9e, 0x3a, 0x93, 0x46, 0x63, 0xd7, 0x3e, 0x83, 0xd7, 0xcd, 0xdd, 0x46, 0xa7, 0x3b, 0x7e, + 0x3d, 0xc0, 0x0a, 0x3b, 0xed, 0xd6, 0xed, 0xf5, 0xce, 0x5d, 0x73, 0x70, 0xa3, 0x3d, 0x56, 0xda, + 0xbb, 0x46, 0x63, 0xb2, 0x7b, 0x76, 0x7e, 0xbf, 0xa9, 0x57, 0xf4, 0x49, 0x53, 0x35, 0xdf, 0x9c, + 0xab, 0xf3, 0xc2, 0x53, 0xd9, 0x69, 0x5b, 0x37, 0x87, 0xc3, 0xdd, 0xe1, 0x7e, 0xc1, 0xb8, 0x7c, + 0x7f, 0xd3, 0xba, 0x93, 0xeb, 0x57, 0x33, 0xdb, 0x6a, 0x75, 0xf5, 0xbb, 0xcc, 0xf9, 0xe8, 0x69, + 0xf4, 0xfe, 0x4a, 0xac, 0xc6, 0xce, 0xdb, 0xf4, 0xe1, 0x5d, 0xdf, 0x99, 0xe4, 0xd5, 0xfe, 0x0b, + 0xd9, 0xdf, 0xeb, 0x3d, 0xbc, 0xdd, 0x8e, 0x06, 0x27, 0x99, 0xb7, 0xfd, 0x33, 0xb9, 0x39, 0x3d, + 0xee, 0xbd, 0xbd, 0x3e, 0x3c, 0xed, 0x5d, 0x74, 0x4a, 0x99, 0x96, 0x55, 0xc9, 0xb4, 0x7b, 0x9b, + 0xa3, 0xa3, 0x66, 0xf1, 0x7c, 0xd2, 0xdd, 0x34, 0xac, 0xb3, 0x71, 0xe3, 0x92, 0x8e, 0x65, 0x4f, + 0xdb, 0xbf, 0x79, 0x69, 0x8d, 0xae, 0x86, 0xcd, 0x26, 0x2c, 0x84, 0x45, 0x3f, 0xe1, 0x71, 0x98, + 0x73, 0x85, 0xdc, 0x66, 0x62, 0xf7, 0x54, 0xf7, 0x22, 0x30, 0x4f, 0x3b, 0xfc, 0xc9, 0x13, 0xdd, + 0x50, 0x7b, 0x40, 0xd7, 0x83, 0x95, 0x47, 0x60, 0x31, 0xad, 0x44, 0x28, 0xf0, 0x48, 0x07, 0x06, + 0xa9, 0x77, 0x88, 0x80, 0x67, 0x10, 0x7f, 0xb1, 0x2d, 0xef, 0x3c, 0x0f, 0x57, 0x67, 0xc2, 0x3f, + 0xc6, 0x63, 0x8a, 0x89, 0x98, 0x94, 0xc4, 0xff, 0xb2, 0x89, 0x86, 0x6e, 0x39, 0x5b, 0xb7, 0x34, + 0x89, 0x5e, 0xfe, 0x8b, 0xb9, 0x33, 0x14, 0xd7, 0x07, 0x15, 0x25, 0x70, 0xd5, 0x86, 0xa5, 0x89, + 0x8e, 0xde, 0xa3, 0x72, 0x04, 0x1b, 0x7f, 0xdb, 0x30, 0x9c, 0x48, 0xa3, 0xfe, 0x19, 0x31, 0x45, + 0x2e, 0x2f, 0xf8, 0x0d, 0xc4, 0xad, 0x33, 0x50, 0x21, 0x84, 0x89, 0xea, 0x0c, 0xdc, 0x1c, 0xe6, + 0x31, 0xa0, 0x58, 0x0e, 0xae, 0x09, 0x58, 0xc4, 0xe5, 0x42, 0x0d, 0xd6, 0xc6, 0xfe, 0x9e, 0xbc, + 0x57, 0x73, 0x37, 0x97, 0x35, 0xa1, 0xfd, 0x26, 0x34, 0x54, 0xab, 0x63, 0x18, 0xc6, 0x8b, 0x4a, + 0xe8, 0x2d, 0x5d, 0x67, 0x40, 0x84, 0xef, 0x8a, 0x40, 0xcf, 0x2e, 0xc5, 0x81, 0xe3, 0x98, 0x76, + 0x35, 0x93, 0xc1, 0x03, 0xc2, 0x34, 0xe8, 0x50, 0x1d, 0x63, 0x64, 0xd9, 0x24, 0x8d, 0x4e, 0x35, + 0x66, 0x06, 0xc4, 0x16, 0xc5, 0x02, 0xbc, 0xd4, 0xc5, 0xff, 0x72, 0x2f, 0xb1, 0xac, 0xd1, 0xfb, + 0x8f, 0x1d, 0x63, 0x38, 0x1c, 0xe9, 0xd4, 0x32, 0xa3, 0x6c, 0x2d, 0xdb, 0xc6, 0x74, 0x76, 0x75, + 0xec, 0xdf, 0xe5, 0x05, 0xcb, 0xae, 0x9a, 0x7d, 0x96, 0x19, 0xe0, 0x77, 0xb2, 0xc4, 0x2d, 0x0a, + 0xb6, 0xea, 0x92, 0x8a, 0xbd, 0x40, 0xdd, 0xfa, 0x22, 0x75, 0xbb, 0x8e, 0x49, 0xde, 0x89, 0xf6, + 0x92, 0x0f, 0x71, 0x8a, 0x9f, 0xa5, 0x5a, 0x94, 0x02, 0xfc, 0xa1, 0x2c, 0x52, 0x7e, 0xbc, 0xb4, + 0x3c, 0xd4, 0xc6, 0x78, 0x2c, 0xb0, 0x16, 0xc5, 0xa1, 0x0f, 0x37, 0xcb, 0x77, 0x61, 0x5c, 0x8c, + 0x48, 0x83, 0xcf, 0xb1, 0x23, 0x8b, 0xba, 0xb8, 0xe3, 0xc5, 0xd7, 0xc5, 0xa9, 0x8a, 0x20, 0x7c, + 0x30, 0xea, 0x93, 0xc8, 0x45, 0x46, 0x24, 0xd2, 0x35, 0xbf, 0x19, 0x0d, 0x98, 0xc4, 0x76, 0xc0, + 0x1b, 0xf0, 0xdf, 0x9a, 0x70, 0x63, 0x08, 0x23, 0x9b, 0x08, 0xed, 0x91, 0xaa, 0x61, 0x3c, 0x5e, + 0x81, 0xb0, 0x9d, 0x5b, 0xa2, 0xa9, 0x28, 0x27, 0x41, 0xd7, 0x16, 0x48, 0xb0, 0xee, 0xed, 0x76, + 0x01, 0xf6, 0x1b, 0x58, 0x91, 0xac, 0xee, 0xa3, 0x31, 0x12, 0x3a, 0x50, 0xc6, 0x22, 0xce, 0xc8, + 0xd2, 0x05, 0x74, 0xe9, 0x22, 0xc0, 0xc5, 0xd5, 0x21, 0xa1, 0xa7, 0xbb, 0x48, 0xdb, 0x18, 0xae, + 0xc3, 0xc6, 0x3b, 0xbe, 0x48, 0xd5, 0xf8, 0xc1, 0x1c, 0x40, 0x3e, 0x7d, 0x46, 0xa1, 0x14, 0xef, + 0x1f, 0x03, 0xb1, 0x5a, 0x3a, 0xb1, 0xd2, 0x6b, 0x6c, 0x45, 0x2d, 0x4c, 0x56, 0xc8, 0x61, 0xc9, + 0x39, 0x35, 0x2c, 0x2a, 0x91, 0x5c, 0x78, 0x50, 0x19, 0xd4, 0x03, 0x75, 0xc5, 0x92, 0x5f, 0xac, + 0x9f, 0xe3, 0xeb, 0x8f, 0x74, 0xbc, 0x76, 0x6e, 0xd1, 0xa5, 0xee, 0xb7, 0xc3, 0x2d, 0xee, 0xb5, + 0x60, 0x75, 0xaf, 0xed, 0x1b, 0x16, 0x0c, 0xdf, 0x76, 0x04, 0x93, 0x58, 0xe8, 0x8d, 0x86, 0xb4, + 0x2a, 0x09, 0x2a, 0x28, 0x11, 0xf8, 0x8d, 0x3d, 0x5c, 0x74, 0x84, 0x06, 0x1e, 0x01, 0x3c, 0x50, + 0x7c, 0x18, 0xbd, 0x9e, 0x3b, 0x6c, 0x40, 0xcb, 0x10, 0x91, 0x60, 0xc3, 0xea, 0x05, 0x56, 0x38, + 0x19, 0x10, 0x9d, 0x46, 0xc1, 0x00, 0x5c, 0x00, 0x9a, 0xd3, 0x0b, 0x2e, 0xc5, 0x6a, 0x30, 0xed, + 0x88, 0x33, 0x31, 0x66, 0xa2, 0x17, 0x86, 0x25, 0x27, 0x83, 0xc9, 0x5f, 0xf3, 0x67, 0xff, 0xbb, + 0x7b, 0xdb, 0x79, 0x6d, 0x0c, 0xa8, 0xd7, 0x8c, 0x8e, 0x6a, 0x4a, 0x93, 0x7b, 0x89, 0xf7, 0x4c, + 0x90, 0x26, 0xb6, 0xd4, 0xc1, 0xdb, 0x69, 0x12, 0x35, 0xe3, 0xd8, 0x92, 0xc3, 0x9c, 0x0c, 0xd0, + 0x59, 0xa1, 0xfe, 0x25, 0x8b, 0x3f, 0x26, 0xac, 0x65, 0x83, 0xf1, 0xa2, 0xaa, 0x28, 0xa9, 0xf6, + 0x85, 0x8e, 0x19, 0xba, 0xd6, 0xc0, 0x1f, 0xd5, 0x3e, 0x1d, 0xb3, 0x5f, 0x14, 0x0b, 0xd8, 0x13, + 0x5d, 0x49, 0xf8, 0x68, 0xbf, 0xe9, 0x9d, 0x16, 0x60, 0xc5, 0x7b, 0xbe, 0xe9, 0x6b, 0xd7, 0xa4, + 0x03, 0xe5, 0x65, 0x69, 0xa0, 0xd8, 0xd4, 0xcd, 0x14, 0xb3, 0xe0, 0xf9, 0xfa, 0x60, 0xc7, 0x7d, + 0x6a, 0x36, 0x6f, 0x58, 0xf3, 0xbb, 0x23, 0xab, 0x5e, 0x92, 0xe1, 0xe1, 0x46, 0xb1, 0xea, 0xf8, + 0x8b, 0x97, 0x33, 0x69, 0x4b, 0xa4, 0x7f, 0x8a, 0xaa, 0x99, 0x2c, 0x79, 0xb1, 0xab, 0xf6, 0xf9, + 0x97, 0x4b, 0x45, 0x83, 0xb7, 0x0e, 0xbc, 0xe2, 0xcf, 0xc8, 0xc2, 0xd8, 0x97, 0x4c, 0x44, 0xab, + 0x6f, 0xc0, 0x78, 0x40, 0xa2, 0x62, 0xfb, 0x05, 0xad, 0xd2, 0x6f, 0x1a, 0x40, 0x03, 0xf0, 0x08, + 0x0c, 0xd6, 0x7f, 0x34, 0x26, 0x30, 0xcd, 0xb7, 0x3a, 0xcc, 0x4d, 0x17, 0x5e, 0xa1, 0x2b, 0x10, + 0x2c, 0x31, 0x9d, 0xfd, 0x98, 0x1d, 0x0f, 0x10, 0xf6, 0x44, 0xd1, 0x80, 0xcd, 0x4e, 0x20, 0xd3, + 0xb1, 0xea, 0x9b, 0x52, 0xb7, 0xde, 0x05, 0x9d, 0x08, 0x45, 0x51, 0xa9, 0x37, 0x45, 0x69, 0xa6, + 0xfe, 0xe3, 0xa7, 0x64, 0xe2, 0xc6, 0x5a, 0x9f, 0xcd, 0x25, 0xe2, 0x3d, 0x68, 0xde, 0x83, 0x19, + 0x3c, 0x9d, 0xd7, 0x45, 0x51, 0x32, 0x8f, 0xb0, 0x9b, 0xf3, 0xd1, 0x10, 0x7f, 0x86, 0x4e, 0x3d, + 0x8b, 0x7f, 0x4f, 0x5b, 0xec, 0xed, 0x14, 0x7a, 0x42, 0x60, 0xe0, 0x07, 0x19, 0x19, 0xd6, 0x52, + 0xed, 0x33, 0x84, 0x61, 0x88, 0x00, 0x0c, 0x07, 0xf0, 0x67, 0x62, 0x5f, 0x9b, 0x58, 0xa8, 0xd3, + 0xeb, 0xd7, 0x67, 0x0e, 0xde, 0x17, 0xad, 0xce, 0x50, 0x8c, 0xaa, 0x82, 0x6c, 0x65, 0xbd, 0x88, + 0x52, 0xbb, 0x5f, 0x9d, 0x8d, 0x2c, 0xad, 0x2a, 0x8a, 0x73, 0x49, 0xd1, 0xcc, 0x81, 0x02, 0xd9, + 0xfd, 0x6a, 0xba, 0x24, 0x81, 0x54, 0x5b, 0x4d, 0x97, 0xe7, 0x12, 0x73, 0x06, 0xc5, 0x44, 0x28, + 0x82, 0xaf, 0x43, 0xb3, 0xca, 0x42, 0xdb, 0xd8, 0xd5, 0x19, 0xbb, 0xcb, 0x58, 0x85, 0x49, 0xb4, + 0xfa, 0xed, 0x2a, 0x74, 0xfc, 0x3a, 0x82, 0x14, 0x7c, 0x1f, 0x90, 0x29, 0xbc, 0xc3, 0xc8, 0xa8, + 0x6a, 0x8a, 0x29, 0x66, 0x67, 0x08, 0xcc, 0x18, 0x0b, 0x99, 0x6a, 0x17, 0x13, 0x00, 0xe5, 0x1a, + 0xd1, 0xab, 0x6c, 0x1a, 0xcd, 0x89, 0xe5, 0x3e, 0x91, 0xa9, 0x89, 0x4f, 0x1d, 0x9b, 0xd6, 0x1a, + 0x74, 0x95, 0x37, 0x1b, 0xdf, 0x01, 0x7d, 0xa4, 0x87, 0x29, 0x6a, 0xd7, 0x36, 0x2c, 0x6c, 0x07, + 0xa0, 0x01, 0x15, 0xb5, 0xfe, 0xe3, 0x87, 0x2c, 0x65, 0xb3, 0x52, 0xae, 0x20, 0x15, 0x24, 0x7f, + 0x97, 0x54, 0xfc, 0x9d, 0x34, 0xdd, 0x87, 0x6d, 0x78, 0xd4, 0x4e, 0xab, 0x46, 0x66, 0x3a, 0x54, + 0xec, 0x34, 0xc8, 0x91, 0xe2, 0x4f, 0x09, 0xea, 0xe4, 0xa4, 0xec, 0xa6, 0x94, 0x0d, 0xaa, 0x50, + 0x31, 0xd3, 0x4e, 0x53, 0x24, 0x74, 0x0c, 0xf4, 0x06, 0x48, 0xc3, 0x60, 0x33, 0x85, 0x4a, 0x16, + 0xff, 0x65, 0x73, 0xf9, 0xf4, 0xb3, 0x49, 0xab, 0xe6, 0xe4, 0x5c, 0x51, 0xca, 0x4b, 0x39, 0x6c, + 0x62, 0x75, 0x87, 0x04, 0x66, 0x06, 0x38, 0x9a, 0xdb, 0x25, 0xd4, 0x2b, 0x40, 0x95, 0x7c, 0xf6, + 0x2f, 0xd6, 0x93, 0xa5, 0x12, 0x0c, 0xed, 0x63, 0x48, 0x8b, 0xd9, 0x12, 0xfe, 0xdb, 0xac, 0xe4, + 0x3c, 0x48, 0xf1, 0xeb, 0x07, 0xd9, 0x4f, 0xd4, 0xcc, 0x66, 0x2b, 0xf8, 0xaf, 0x5c, 0x96, 0x65, + 0x56, 0xf5, 0x67, 0xad, 0x37, 0xd2, 0x69, 0x80, 0x70, 0x61, 0x00, 0x92, 0x88, 0x46, 0xee, 0xfc, + 0x50, 0x3b, 0x4d, 0x6a, 0x84, 0x4a, 0x24, 0x67, 0x5f, 0xba, 0x69, 0x16, 0xdc, 0x70, 0x7d, 0x5d, + 0x27, 0x13, 0x01, 0x38, 0x08, 0x7e, 0x8f, 0xd1, 0x5b, 0x52, 0x5b, 0x79, 0x92, 0x5f, 0x5f, 0x0f, + 0x09, 0x92, 0x73, 0xbf, 0x4d, 0x1b, 0x54, 0xd1, 0x04, 0x91, 0x9c, 0xe4, 0x0c, 0x44, 0x19, 0x77, + 0x7d, 0xec, 0x69, 0x04, 0x7f, 0xd2, 0x74, 0x8f, 0x4c, 0xc3, 0x12, 0xbd, 0xb4, 0x40, 0xda, 0xb3, + 0x9c, 0x37, 0x5a, 0x30, 0xa8, 0x8b, 0x5e, 0x2d, 0x24, 0x39, 0x73, 0x77, 0x9a, 0x6e, 0x1a, 0xa4, + 0x1e, 0xb7, 0xea, 0xce, 0x1b, 0xcd, 0xe2, 0x8a, 0xee, 0xed, 0x34, 0xcf, 0x97, 0x14, 0xb6, 0x77, + 0xde, 0x9a, 0xc8, 0x4a, 0xcf, 0x41, 0x77, 0x0a, 0x55, 0x52, 0xed, 0xbd, 0xa1, 0x89, 0xbd, 0xfa, + 0xd5, 0xe4, 0x7a, 0xbd, 0x7e, 0xd1, 0x7e, 0xc6, 0xef, 0x16, 0xbc, 0x90, 0x37, 0x1b, 0x72, 0xd2, + 0xcc, 0x2b, 0x94, 0xaf, 0x04, 0x05, 0xb8, 0x2a, 0x64, 0x7d, 0x5d, 0x34, 0x68, 0x15, 0xb1, 0x5e, + 0x47, 0xc3, 0x8a, 0xd1, 0xc3, 0xb4, 0x2f, 0x0d, 0xcb, 0x52, 0xde, 0xd2, 0xaa, 0x4d, 0x7f, 0x23, + 0xdd, 0xc2, 0x22, 0x27, 0x96, 0xda, 0x09, 0x5a, 0xf9, 0x02, 0x69, 0xca, 0x79, 0xc2, 0x54, 0x40, + 0xce, 0xdb, 0xc7, 0x48, 0x36, 0x90, 0x95, 0x5c, 0x5f, 0x57, 0xd1, 0x6e, 0x03, 0xec, 0x32, 0x52, + 0xfd, 0xba, 0xdf, 0xa6, 0xae, 0xf4, 0x61, 0xc0, 0x69, 0xe5, 0x23, 0x1d, 0xaa, 0xa6, 0x2d, 0xa8, + 0x1b, 0x4e, 0xe9, 0x2f, 0xa4, 0xb4, 0xb9, 0x26, 0x61, 0x45, 0xb7, 0x1c, 0x2b, 0x68, 0x0e, 0xef, + 0xd7, 0x25, 0xc4, 0x14, 0x34, 0x94, 0x12, 0x25, 0xfc, 0xed, 0xbb, 0xbf, 0xed, 0x94, 0x98, 0x14, + 0x43, 0xf5, 0xf0, 0x66, 0xb8, 0x5f, 0x2f, 0x9d, 0xcb, 0xe6, 0x4a, 0x7f, 0x86, 0x00, 0x49, 0xa5, + 0x37, 0xb3, 0xc5, 0xdc, 0x9f, 0x21, 0x50, 0x52, 0x69, 0x79, 0x33, 0x17, 0x4a, 0xe3, 0x81, 0xc1, + 0xa3, 0x89, 0xd6, 0x29, 0x36, 0x0a, 0xfb, 0x95, 0xe0, 0xd4, 0x49, 0x1a, 0x99, 0x29, 0xa4, 0xa6, + 0x27, 0xdb, 0x5c, 0x15, 0x3f, 0x31, 0x59, 0x05, 0xfe, 0x82, 0xa2, 0xad, 0x4e, 0xc4, 0x2f, 0x75, + 0xf4, 0xfc, 0x6b, 0x02, 0xe3, 0x1a, 0xc1, 0x9e, 0xd0, 0x42, 0xfa, 0xc2, 0x39, 0x44, 0x4b, 0x57, + 0x8b, 0x86, 0x66, 0xac, 0xb1, 0x5d, 0x07, 0xe6, 0x87, 0x47, 0xa3, 0xd7, 0x58, 0x72, 0x3b, 0x61, + 0xff, 0xfe, 0x0d, 0xef, 0x8c, 0x32, 0x29, 0xeb, 0xab, 0x7b, 0x83, 0xf4, 0x0b, 0x6d, 0x65, 0x73, + 0x9b, 0xdb, 0xf4, 0x82, 0x80, 0x58, 0xa5, 0xf7, 0x28, 0x40, 0x2d, 0xf1, 0xaa, 0x04, 0xce, 0xef, + 0x75, 0x6f, 0xaf, 0x5b, 0x5f, 0x77, 0xb6, 0xe4, 0xed, 0x5f, 0x51, 0x5f, 0xf8, 0x6c, 0x99, 0x5e, + 0xb5, 0x15, 0xfe, 0x98, 0x79, 0xd8, 0xf7, 0x3b, 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, 0xf4, 0x99, 0x80, 0x9d, 0x20, 0x16, 0xac, 0x5f, 0x31, 0xcd, 0xfe, 0x92, 0x16, 0x87, + 0xed, 0xc4, 0x0c, 0x93, 0x9b, 0x25, 0xc5, 0x34, 0xb5, 0xb7, 0x66, 0xaf, 0x0f, 0xdc, 0xa1, 0xc3, + 0x62, 0x13, 0x88, 0x1a, 0xca, 0xb7, 0xb0, 0x08, 0xea, 0xb0, 0x01, 0xa5, 0xe9, 0xfe, 0x93, 0xc6, + 0xed, 0x27, 0x59, 0x43, 0x31, 0x84, 0x70, 0xa9, 0xb4, 0x83, 0x74, 0xbb, 0x5f, 0x03, 0x38, 0x29, + 0x7f, 0x10, 0x69, 0x7c, 0x4c, 0x51, 0x72, 0xcb, 0x3a, 0xb4, 0x2c, 0x6e, 0x3f, 0x69, 0xb6, 0xa7, + 0xd4, 0xbc, 0x52, 0x4e, 0xdb, 0x14, 0x25, 0x67, 0x5b, 0xcc, 0xd2, 0x8f, 0x98, 0xfb, 0x5f, 0x32, + 0xc7, 0x27, 0x00, 0x92, 0x3e, 0x63, 0x8c, 0x6c, 0x1a, 0x73, 0x09, 0x1f, 0x60, 0x66, 0xbc, 0xaa, + 0x6d, 0xb7, 0xaa, 0x1f, 0xb3, 0x52, 0x90, 0xbd, 0x2a, 0x6e, 0x8c, 0x26, 0xbe, 0xf0, 0xa0, 0x4b, + 0x0b, 0x53, 0x67, 0x59, 0x28, 0x46, 0x89, 0x8b, 0xcb, 0x1e, 0x3a, 0x34, 0x5b, 0xa6, 0xdd, 0x16, + 0x43, 0xfd, 0x38, 0x1b, 0x6d, 0x51, 0x0a, 0xc6, 0x4a, 0xf9, 0x6f, 0x1a, 0x76, 0xd8, 0xa0, 0x84, + 0xdd, 0x37, 0x59, 0x09, 0x3a, 0x42, 0xb6, 0x21, 0x6e, 0xb3, 0x2e, 0xaa, 0x6e, 0x8f, 0x50, 0x58, + 0x45, 0x7f, 0x92, 0xb0, 0xf3, 0x28, 0xba, 0x16, 0xf8, 0x9e, 0xa3, 0xb7, 0x2a, 0x60, 0x5f, 0x94, + 0x8e, 0x5b, 0x17, 0xe7, 0x30, 0x6f, 0xf8, 0x91, 0x56, 0xb5, 0xf7, 0x96, 0x80, 0x66, 0x93, 0x49, + 0x5f, 0x4c, 0x00, 0xe6, 0xd5, 0xb5, 0xd7, 0xd7, 0x99, 0xf2, 0x7c, 0x7b, 0xc4, 0xf3, 0x65, 0xcf, + 0x5b, 0x7c, 0xe6, 0x03, 0xc2, 0x36, 0xfa, 0x34, 0xec, 0xe6, 0xf5, 0x2f, 0x31, 0x89, 0x52, 0x30, + 0xe3, 0xa1, 0x56, 0xdc, 0xc0, 0x14, 0xb3, 0xf0, 0xa4, 0xd7, 0x97, 0x51, 0xc3, 0x36, 0x13, 0x46, + 0xaa, 0x6e, 0xfe, 0xb2, 0x56, 0x3d, 0x87, 0x8d, 0x59, 0x84, 0x12, 0x38, 0xd0, 0x58, 0xc2, 0xb2, + 0x06, 0xe8, 0xe5, 0x81, 0x85, 0xc1, 0x01, 0xed, 0x2f, 0x0e, 0x0e, 0x12, 0x63, 0x5b, 0x71, 0xe9, + 0x1a, 0x18, 0x11, 0x01, 0xbe, 0xc0, 0xd3, 0xa9, 0xf8, 0x95, 0x10, 0x9e, 0x1e, 0x3a, 0x1b, 0x3d, + 0x4c, 0xa4, 0xb7, 0x9d, 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, 0x85, 0x33, 0x17, 0x2e, 0xd9, 0xa7, 0x25, 0x95, 0x70, + 0xa2, 0x46, 0x13, 0x4b, 0x9d, 0x50, 0xa2, 0x01, 0x89, 0xf4, 0x73, 0x8f, 0x39, 0xb9, 0x20, 0x09, + 0xc1, 0x1f, 0x39, 0x5d, 0x49, 0x86, 0x0a, 0xda, 0x6d, 0x17, 0x9f, 0xf9, 0x48, 0xf2, 0xc0, 0x4d, + 0x2f, 0x85, 0xd2, 0x9d, 0xf6, 0x92, 0x86, 0xdd, 0x4f, 0x6b, 0x6f, 0xb4, 0x93, 0xc9, 0x48, 0x05, + 0xc5, 0xab, 0x91, 0xdd, 0x94, 0x25, 0x21, 0xf8, 0xb3, 0xbc, 0xc6, 0xe0, 0x53, 0x7d, 0x50, 0x4f, + 0x5c, 0x6a, 0xec, 0x4c, 0xba, 0xec, 0x94, 0x79, 0xaa, 0xa1, 0x19, 0x16, 0x83, 0x74, 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, 0xdf, 0xea, 0x67, 0x48, 0x49, 0xce, 0x01, 0x15, 0xf9, + 0x7f, 0x3e, 0x41, 0x4a, 0xc5, 0xac, 0x24, 0x78, 0xff, 0x3e, 0x4b, 0x47, 0x23, 0x1d, 0xf6, 0x01, + 0x91, 0xe3, 0x53, 0x68, 0xc6, 0xda, 0xe9, 0x07, 0x02, 0x13, 0xad, 0xda, 0xee, 0x63, 0x9f, 0xf5, + 0x6e, 0xba, 0x63, 0x11, 0x60, 0xfe, 0xae, 0x28, 0x4c, 0x9b, 0x14, 0x93, 0x35, 0xb5, 0x97, 0xb0, + 0xd3, 0x68, 0x76, 0x27, 0x92, 0x08, 0x3c, 0x9a, 0xfc, 0xfe, 0xed, 0xeb, 0x0d, 0xa0, 0xe7, 0xd9, + 0xa3, 0x61, 0xda, 0x1c, 0x80, 0xfa, 0x6f, 0x67, 0xb2, 0x95, 0x9c, 0x9c, 0xc9, 0xca, 0x65, 0x19, + 0x39, 0x39, 0xf4, 0x80, 0xdb, 0xb3, 0x5e, 0xf7, 0x94, 0x80, 0x5a, 0xcf, 0xb0, 0x12, 0xd4, 0xc8, + 0x20, 0x80, 0xd4, 0x0b, 0x1a, 0xda, 0xef, 0xdf, 0x3f, 0x7e, 0xb2, 0x42, 0x4a, 0x1d, 0xc4, 0x4d, + 0xed, 0x87, 0xfc, 0x73, 0x5b, 0x47, 0x51, 0x7c, 0x7f, 0xa4, 0x69, 0x8f, 0x20, 0xff, 0x24, 0x92, + 0x55, 0x4c, 0x94, 0x0c, 0xbf, 0x8d, 0x84, 0x22, 0x69, 0x3f, 0xb2, 0x3f, 0xe1, 0x4f, 0xee, 0x67, + 0x52, 0x52, 0x83, 0x74, 0x03, 0xc0, 0xc4, 0x2d, 0x8f, 0xbe, 0xa8, 0xd8, 0x08, 0x7d, 0x4a, 0xa6, + 0xb4, 0x1f, 0x79, 0x28, 0xa9, 0x6f, 0xd5, 0x0d, 0x50, 0x47, 0xbe, 0xd7, 0x55, 0x10, 0x76, 0xd8, + 0x60, 0xb4, 0x1f, 0x85, 0x9f, 0xc9, 0xf9, 0xdc, 0x46, 0xaf, 0xfd, 0x3d, 0xfc, 0x7c, 0x37, 0x9a, + 0x9f, 0x89, 0x4e, 0xac, 0x04, 0x35, 0xf5, 0x81, 0x7c, 0x51, 0xdf, 0x72, 0x47, 0xc0, 0x49, 0xda, + 0xd1, 0xbd, 0xba, 0xdd, 0x87, 0x8e, 0xa9, 0x38, 0xae, 0x83, 0xd0, 0x9c, 0xd0, 0xeb, 0xe9, 0x52, + 0x52, 0xf2, 0x94, 0x15, 0x37, 0xfa, 0x5c, 0x5d, 0xf7, 0x53, 0x02, 0xd1, 0xea, 0x08, 0x35, 0xae, + 0xfa, 0x2f, 0x50, 0xb1, 0x41, 0xbe, 0xa2, 0x10, 0x51, 0xc9, 0x8a, 0xdd, 0x02, 0xa1, 0x93, 0x12, + 0x9c, 0xde, 0x24, 0x43, 0xb2, 0x96, 0xe8, 0x45, 0x4c, 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, 0x0d, 0xd0, 0xb0, 0xce, 0x10, 0xd1, 0x31, 0x24, + 0x80, 0x07, 0x61, 0x40, 0x03, 0x76, 0x5a, 0xed, 0xc2, 0xfc, 0xc3, 0xfe, 0x47, 0x34, 0x3c, 0xd1, + 0x7c, 0xc3, 0x2f, 0x32, 0x13, 0x20, 0x2d, 0x48, 0x0a, 0x0e, 0x88, 0x33, 0xa0, 0x9c, 0x63, 0x4a, + 0x24, 0xda, 0x17, 0x00, 0x95, 0xc6, 0x1c, 0xa0, 0xb1, 0x34, 0x0d, 0x43, 0x59, 0x17, 0xf1, 0xa2, + 0x1a, 0x60, 0x05, 0xc3, 0xe7, 0xe9, 0xdd, 0xe6, 0x40, 0xd5, 0xba, 0x09, 0x1b, 0x66, 0x23, 0x50, + 0xd1, 0x58, 0x65, 0x5f, 0x59, 0x48, 0x80, 0x6c, 0xb3, 0xed, 0x19, 0x9a, 0x52, 0x62, 0x26, 0x23, + 0xa6, 0xa8, 0xad, 0xaa, 0x2a, 0x8a, 0xc9, 0x14, 0x09, 0xea, 0x19, 0x3a, 0x1a, 0x4b, 0x13, 0x8c, + 0xba, 0x49, 0x3d, 0x72, 0xdd, 0x07, 0x49, 0x19, 0x9d, 0x81, 0x49, 0x15, 0xe9, 0x38, 0x4d, 0x1b, + 0x03, 0xa4, 0x26, 0xa9, 0x21, 0x4b, 0x96, 0x12, 0xb4, 0xc9, 0x7a, 0x48, 0x8c, 0xea, 0x7b, 0x62, + 0x14, 0xa4, 0x1e, 0x99, 0x20, 0xd5, 0x82, 0xec, 0xcb, 0x8a, 0x41, 0x6d, 0x50, 0x08, 0x13, 0xe2, + 0x3e, 0xb4, 0x47, 0xa3, 0x82, 0xa5, 0x85, 0x4b, 0x0d, 0x3f, 0x71, 0x2d, 0xd0, 0x70, 0xc0, 0x2c, + 0xd0, 0xe0, 0xd1, 0xe5, 0x17, 0x71, 0x99, 0x60, 0xc6, 0x5a, 0x94, 0x68, 0x6b, 0xc9, 0x64, 0x0d, + 0xe4, 0x13, 0xe2, 0x6b, 0x31, 0xa6, 0xe2, 0x0c, 0xe8, 0x47, 0xb2, 0xec, 0x3a, 0x0d, 0x6e, 0xdb, + 0x21, 0xe8, 0xbd, 0x93, 0x06, 0x64, 0xd9, 0xf7, 0xaa, 0x33, 0x00, 0xac, 0x8a, 0xc9, 0xed, 0x8d, + 0x6c, 0x75, 0x6c, 0xa8, 0x5d, 0x41, 0x06, 0x02, 0x31, 0x41, 0x07, 0xa7, 0xa9, 0x35, 0xdf, 0x1c, + 0x17, 0x0c, 0x90, 0xf5, 0x01, 0x09, 0x03, 0xc3, 0x76, 0xb0, 0xd9, 0x14, 0xc8, 0xef, 0x18, 0x59, + 0x72, 0x1b, 0x64, 0xab, 0x14, 0x7b, 0x44, 0x4c, 0xc2, 0xfc, 0x30, 0x0d, 0x76, 0x4b, 0x06, 0x45, + 0x15, 0x15, 0x24, 0x1b, 0x17, 0x65, 0xc2, 0xc5, 0x0f, 0x6d, 0x25, 0x55, 0x87, 0x5e, 0x52, 0x98, + 0x9e, 0xac, 0xba, 0x7c, 0x00, 0x97, 0xbb, 0xd7, 0x2b, 0x2c, 0x02, 0x56, 0x3a, 0x39, 0x67, 0x54, + 0x17, 0x8f, 0xcd, 0x40, 0x28, 0x4d, 0xd6, 0x1c, 0xa8, 0x83, 0x66, 0x28, 0x50, 0x73, 0xfb, 0x64, + 0x97, 0x10, 0x13, 0xdf, 0x98, 0xac, 0x4a, 0x57, 0x5e, 0x02, 0xd4, 0x16, 0xbc, 0xf5, 0x84, 0xba, + 0xff, 0xad, 0xa3, 0x6a, 0x20, 0xe9, 0x26, 0x44, 0xc7, 0x1a, 0x11, 0xb1, 0xbe, 0xa4, 0x75, 0xb3, + 0x33, 0x14, 0x61, 0xa2, 0xbe, 0x64, 0xce, 0x8c, 0xb6, 0x9a, 0x01, 0x8d, 0xce, 0x76, 0x12, 0xba, + 0x32, 0x56, 0xfb, 0x0a, 0x94, 0x4c, 0x8f, 0x6c, 0x62, 0x35, 0xfa, 0x30, 0x49, 0xb0, 0x62, 0x71, + 0xb9, 0xad, 0x6c, 0x05, 0xca, 0x44, 0x23, 0xc7, 0x71, 0xf2, 0x5f, 0x20, 0x99, 0x53, 0x7b, 0xd4, + 0x76, 0x8f, 0x38, 0x9d, 0x41, 0x70, 0x10, 0x35, 0xc0, 0x60, 0xde, 0x90, 0x9e, 0x7e, 0xb6, 0x0d, + 0x1d, 0xd0, 0x3b, 0x1b, 0x12, 0x67, 0x60, 0x74, 0xab, 0x22, 0x94, 0x80, 0xb5, 0x8b, 0x9c, 0x44, + 0x4f, 0x00, 0x9f, 0x21, 0xb4, 0x40, 0x22, 0x19, 0xa4, 0xcc, 0xa2, 0x16, 0x01, 0xc0, 0x11, 0x1a, + 0xb5, 0x40, 0xb7, 0x4f, 0xa6, 0x81, 0x98, 0xa1, 0x17, 0x2c, 0x85, 0xd6, 0x5e, 0x03, 0x38, 0x83, + 0x66, 0xf4, 0x13, 0xe2, 0xb9, 0x21, 0x28, 0x58, 0xda, 0x65, 0xaf, 0xb4, 0x67, 0x34, 0x20, 0x87, + 0xa0, 0x48, 0x0b, 0xbb, 0xec, 0x93, 0x5e, 0x36, 0x65, 0x18, 0xa4, 0x9b, 0x16, 0xb1, 0xc9, 0x9e, + 0xaa, 0xc3, 0x92, 0x7c, 0x4b, 0x24, 0x92, 0xd0, 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, 0xee, 0xb4, 0xe4, 0xfa, 0x0f, 0xba, 0x87, 0xed, 0x98, 0xc2, + 0x6c, 0x98, 0xcb, 0x29, 0xe6, 0x72, 0xe8, 0xd0, 0xd5, 0xc4, 0xdd, 0x92, 0xf4, 0x01, 0xde, 0x7f, + 0x40, 0x5b, 0x35, 0xff, 0xce, 0x9e, 0xb9, 0x4b, 0x71, 0x7e, 0x1e, 0x7f, 0x11, 0x8e, 0xa5, 0x86, + 0x0d, 0x52, 0xc9, 0xb9, 0x84, 0x27, 0xea, 0x73, 0xfa, 0x3f, 0x46, 0x79, 0x2e, 0xe1, 0x75, 0x63, + 0xb6, 0x8b, 0x20, 0xdc, 0x34, 0x73, 0xc4, 0x12, 0xa5, 0x78, 0xdb, 0x98, 0xf4, 0x25, 0xeb, 0x6e, + 0xd5, 0x9d, 0xb1, 0xcf, 0xd3, 0xbd, 0x3d, 0x42, 0xa6, 0xca, 0x2c, 0x32, 0x60, 0x00, 0xc4, 0x7a, + 0x6b, 0x51, 0x4c, 0x19, 0x56, 0x43, 0xd3, 0x12, 0xdf, 0xb8, 0xc0, 0xad, 0xae, 0x27, 0xe5, 0xcf, + 0x6f, 0x49, 0x7f, 0x3b, 0xc5, 0x63, 0x04, 0xc1, 0x4e, 0xea, 0x31, 0x90, 0x39, 0xc6, 0xa8, 0x33, + 0xc0, 0xf3, 0x01, 0xd4, 0x40, 0x29, 0x15, 0xef, 0x50, 0xbf, 0x49, 0xd8, 0x10, 0x97, 0x95, 0x06, + 0x0e, 0x13, 0x29, 0x1b, 0x30, 0xd7, 0xc8, 0x84, 0x11, 0x6f, 0x63, 0x61, 0xf6, 0xb4, 0xc0, 0x6d, + 0x22, 0x80, 0xcd, 0x46, 0xd8, 0x9c, 0xa4, 0x1d, 0x73, 0xeb, 0x4d, 0xe9, 0x60, 0x90, 0x7d, 0x28, + 0xcb, 0x4c, 0xe4, 0xbf, 0x7f, 0x3b, 0x3f, 0xc8, 0xcf, 0xe8, 0x65, 0x3a, 0xaf, 0x10, 0xc7, 0xe0, + 0x5d, 0x3f, 0x0c, 0x22, 0x39, 0x75, 0xc0, 0xe7, 0x8c, 0xd5, 0x5e, 0x5f, 0xff, 0xe2, 0x00, 0x63, + 0x56, 0x5b, 0xe8, 0xe6, 0x09, 0xfb, 0xd4, 0x7f, 0x35, 0x63, 0xae, 0xb5, 0xd9, 0x43, 0xc3, 0x70, + 0x40, 0x9a, 0xc2, 0x69, 0x80, 0x02, 0x8b, 0x06, 0x45, 0x10, 0xb8, 0x54, 0x51, 0x62, 0x8d, 0x2c, + 0x90, 0x27, 0xe1, 0x0d, 0x1a, 0x18, 0xb3, 0x9e, 0x79, 0x5e, 0x78, 0x70, 0x20, 0x13, 0x63, 0x73, + 0xeb, 0x3a, 0x71, 0x24, 0x17, 0xb6, 0xfc, 0x66, 0x78, 0xfb, 0xb6, 0x40, 0x72, 0x73, 0x27, 0x9d, + 0x56, 0x64, 0x4e, 0x1e, 0x74, 0xab, 0xc5, 0x8f, 0x5e, 0x1e, 0xde, 0x9c, 0x9d, 0xd2, 0x1d, 0x37, + 0x8c, 0x12, 0x60, 0xd9, 0x04, 0xfd, 0x3e, 0x80, 0x71, 0x23, 0x10, 0xb0, 0x1c, 0xa8, 0x2f, 0x88, + 0x47, 0xe2, 0xee, 0xd1, 0x0c, 0x72, 0x72, 0xd6, 0xbd, 0xa2, 0xab, 0x43, 0xba, 0xf7, 0xb9, 0x46, + 0x2f, 0xef, 0xf0, 0xa6, 0x1e, 0x5d, 0x17, 0x71, 0x73, 0xc4, 0x7a, 0x98, 0x4b, 0xb9, 0x0a, 0xac, + 0x06, 0x09, 0x86, 0xc8, 0xf3, 0x1b, 0x12, 0xc1, 0x07, 0xe7, 0x8e, 0x92, 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, 0xab, 0x85, 0xd4, 0x8b, 0x24, 0xef, 0x13, 0x19, 0x8f, + 0x23, 0x87, 0x03, 0xd6, 0x0d, 0xb9, 0x68, 0x27, 0x5c, 0xc4, 0x20, 0xab, 0x8c, 0xc7, 0xc9, 0xb2, + 0xa1, 0x3b, 0x4b, 0x87, 0x2e, 0xc5, 0x65, 0xb9, 0xdd, 0xcc, 0xa5, 0x10, 0x49, 0x00, 0xa3, 0xba, + 0xc6, 0xb3, 0xc2, 0x21, 0x71, 0xad, 0xa3, 0x0c, 0xec, 0xc0, 0x08, 0x89, 0x12, 0xf6, 0x19, 0x6c, + 0xeb, 0xe9, 0x9e, 0x66, 0xc0, 0xf2, 0x70, 0x32, 0xe5, 0x52, 0x01, 0xd1, 0xaa, 0xf3, 0xa9, 0x09, + 0x67, 0x83, 0x26, 0xff, 0x69, 0x27, 0x33, 0xf9, 0x12, 0x66, 0x6b, 0xf1, 0xd9, 0x1b, 0x98, 0xfb, + 0xa7, 0x9e, 0xcc, 0x94, 0x70, 0x43, 0xaa, 0xdb, 0xdb, 0x76, 0x4a, 0x14, 0xc4, 0x54, 0x22, 0x0b, + 0x7b, 0x36, 0x9a, 0x4d, 0xde, 0x44, 0x3c, 0xc9, 0x79, 0x83, 0xc5, 0x98, 0x12, 0x25, 0x41, 0xc4, + 0x2f, 0xa7, 0xb9, 0xd6, 0x5f, 0x25, 0x55, 0xd7, 0x7f, 0xff, 0xb6, 0xb7, 0x75, 0xbf, 0x82, 0xbe, + 0x2d, 0x0e, 0x8c, 0x11, 0x92, 0x14, 0xfe, 0x40, 0x15, 0x28, 0x2d, 0x7d, 0x01, 0x36, 0xae, 0x03, + 0x2a, 0xa1, 0x38, 0x36, 0x00, 0xa8, 0xd8, 0x2a, 0x56, 0x60, 0x9d, 0xd9, 0x2c, 0x4d, 0x4b, 0x51, + 0x27, 0x48, 0x4c, 0xff, 0x8e, 0xa0, 0xa0, 0xe1, 0x12, 0xf3, 0xb9, 0xf2, 0x6e, 0x3a, 0xa6, 0x38, + 0x1b, 0x25, 0xf9, 0x4f, 0xac, 0x62, 0x13, 0x54, 0xfe, 0x14, 0xce, 0x40, 0xad, 0x03, 0xaf, 0x30, + 0x26, 0xb8, 0x8e, 0xd0, 0x30, 0x2b, 0x7a, 0x02, 0xdf, 0xaf, 0xef, 0x8e, 0xb5, 0xf5, 0xdd, 0xe9, + 0x7a, 0x07, 0x9b, 0x2f, 0xe4, 0xcd, 0xe9, 0x8a, 0x5b, 0x7f, 0xcc, 0xc8, 0xfc, 0x7b, 0xc6, 0xe9, + 0xf2, 0x59, 0x63, 0x45, 0x63, 0x59, 0xce, 0x1c, 0x44, 0x69, 0x37, 0x3b, 0x03, 0xd5, 0x7f, 0x85, + 0x66, 0xe7, 0x94, 0x3b, 0xb3, 0xbb, 0x4c, 0xb0, 0xf9, 0x21, 0xf5, 0xac, 0xcf, 0xab, 0xe8, 0x61, + 0x2b, 0x3d, 0x82, 0x4b, 0x3a, 0x20, 0x1d, 0xae, 0xaf, 0x93, 0x54, 0xca, 0xc3, 0x19, 0xd9, 0xca, + 0x15, 0x71, 0x28, 0xa4, 0x0e, 0xbf, 0x49, 0x89, 0x13, 0x38, 0xa9, 0x27, 0xed, 0x2d, 0x34, 0xc9, + 0xb1, 0x43, 0xa0, 0xd4, 0x5f, 0x26, 0x42, 0xaa, 0x76, 0x7f, 0x25, 0x59, 0x10, 0xa6, 0xda, 0x17, + 0xda, 0xf2, 0x0f, 0xe7, 0xe7, 0xef, 0xdf, 0xf2, 0x17, 0x6c, 0x1d, 0xfb, 0xd8, 0x0e, 0x8a, 0xe2, + 0x97, 0x21, 0xa0, 0x70, 0xb0, 0xf4, 0x1d, 0xec, 0x72, 0x9b, 0xde, 0x66, 0x2b, 0x97, 0x6b, 0xc2, + 0xd1, 0xae, 0x30, 0x1c, 0xd9, 0x8e, 0xd0, 0x26, 0x02, 0xa4, 0x0b, 0x06, 0xa8, 0x51, 0xc4, 0xb6, + 0xd3, 0x38, 0xb1, 0xd5, 0x15, 0xad, 0xfc, 0xf2, 0xea, 0xe3, 0x79, 0xf6, 0xc4, 0x52, 0x31, 0xec, + 0xae, 0xf0, 0xc7, 0xcc, 0xa4, 0x92, 0xbf, 0x93, 0x9c, 0x7f, 0xe1, 0x70, 0x64, 0xba, 0x67, 0x1e, + 0xee, 0x30, 0x5c, 0xdf, 0x53, 0xa0, 0x11, 0xe2, 0xa1, 0x81, 0x8e, 0x61, 0x7d, 0x9d, 0x0d, 0x85, + 0xfc, 0x0c, 0x9e, 0xd2, 0x3a, 0x35, 0x22, 0x07, 0xaf, 0x30, 0xfd, 0xfc, 0x21, 0xc4, 0xa5, 0xa6, + 0xbc, 0xa1, 0x77, 0x25, 0x77, 0x08, 0xe1, 0x97, 0x35, 0xdd, 0x3c, 0xae, 0x35, 0x2f, 0x29, 0x6d, + 0xda, 0x1c, 0x78, 0x8a, 0xa9, 0xde, 0x29, 0x9a, 0xa7, 0xdb, 0xd0, 0xc2, 0x20, 0xe3, 0x79, 0x95, + 0x92, 0xee, 0x69, 0x84, 0xe8, 0x5a, 0x85, 0xdd, 0x93, 0x19, 0xa0, 0x10, 0xb5, 0xaf, 0x27, 0xf0, + 0xe0, 0xd4, 0x2b, 0xe8, 0x8d, 0xc6, 0x49, 0x83, 0x7a, 0xb0, 0x4d, 0xff, 0x56, 0x13, 0x5d, 0x82, + 0x01, 0x3e, 0x20, 0x4d, 0x97, 0xfc, 0x47, 0x33, 0x78, 0x7c, 0xd5, 0xa2, 0xc6, 0x53, 0x87, 0x5f, + 0xfc, 0xaf, 0x9a, 0x87, 0xbb, 0x0f, 0x31, 0xf5, 0xaa, 0x6d, 0x73, 0xcf, 0x78, 0x78, 0x1a, 0xd0, + 0x92, 0xb9, 0xd3, 0x79, 0xf1, 0x29, 0x93, 0x69, 0xe6, 0x68, 0xdf, 0xad, 0x11, 0xf7, 0x13, 0x4c, + 0x09, 0x6a, 0xa4, 0x27, 0x4e, 0xcb, 0xfb, 0x4c, 0xef, 0x35, 0x3d, 0x73, 0x93, 0xa5, 0x0a, 0xfd, + 0x0f, 0xc5, 0x13, 0x32, 0x25, 0x9d, 0xa6, 0x31, 0x1c, 0x82, 0x04, 0x82, 0x7b, 0x91, 0xf9, 0x86, + 0x62, 0x17, 0xcf, 0x8c, 0x4d, 0x95, 0x39, 0x20, 0x60, 0x58, 0xf6, 0xb6, 0xa1, 0x58, 0xc0, 0x85, + 0xb9, 0x81, 0x98, 0x74, 0xce, 0x29, 0x0f, 0x0e, 0x28, 0x01, 0xcf, 0x5f, 0x61, 0x69, 0xd6, 0x1c, + 0xeb, 0x6d, 0x96, 0xb0, 0x57, 0xc9, 0x67, 0x20, 0x2f, 0x7b, 0x1a, 0x44, 0x56, 0xa6, 0x24, 0x81, + 0x0c, 0xde, 0x95, 0x57, 0x93, 0xb3, 0x39, 0xd3, 0xa7, 0x7f, 0xf1, 0x2e, 0xaf, 0xf4, 0x13, 0x36, + 0x1d, 0x11, 0x88, 0x92, 0x6c, 0x7f, 0x0b, 0x87, 0x9f, 0xa8, 0x96, 0xc3, 0x1f, 0xf9, 0x14, 0xe8, + 0x47, 0x6c, 0xc5, 0x6f, 0xd5, 0x6f, 0xbe, 0x6b, 0x83, 0x7f, 0xda, 0x5d, 0x0b, 0x79, 0xe9, 0xd6, + 0xc4, 0xf8, 0xcb, 0xeb, 0xb5, 0x0f, 0x5a, 0x9e, 0x6f, 0xfd, 0xaa, 0xe9, 0x29, 0x58, 0x98, 0x22, + 0x7a, 0xae, 0x0c, 0x94, 0x31, 0x11, 0x74, 0xc3, 0x45, 0x8a, 0x2d, 0xbc, 0x11, 0xe7, 0x0b, 0x2c, + 0x38, 0x37, 0x90, 0x3c, 0xc8, 0xbf, 0x16, 0x11, 0x26, 0x8a, 0x8d, 0x4e, 0x30, 0xaa, 0x6d, 0x8f, + 0x08, 0x95, 0xa8, 0x71, 0x81, 0xbd, 0x01, 0x1b, 0xf5, 0x6a, 0xc1, 0x26, 0x87, 0xb2, 0x01, 0xb4, + 0x2a, 0x7a, 0x3e, 0x35, 0xa2, 0xc4, 0xfa, 0x38, 0x04, 0x8e, 0x84, 0x1f, 0x04, 0x72, 0x9b, 0x52, + 0x6d, 0x01, 0x85, 0x85, 0x91, 0xe9, 0x56, 0xa5, 0xf7, 0x6e, 0x51, 0x80, 0x52, 0x30, 0x61, 0xac, + 0x1a, 0x23, 0x9b, 0x79, 0x40, 0x69, 0x9a, 0xc2, 0x8e, 0x55, 0xc6, 0xb0, 0x8d, 0xe2, 0xc7, 0x3d, + 0xa8, 0xb7, 0xcd, 0x7f, 0xea, 0x82, 0x20, 0x24, 0x5a, 0xa0, 0xe6, 0x00, 0x04, 0x8a, 0xd7, 0xc6, + 0x44, 0xd5, 0xd8, 0x1d, 0x05, 0x01, 0x5d, 0xa7, 0xa9, 0xfb, 0x98, 0xe1, 0xb2, 0x02, 0x42, 0x7d, + 0x4f, 0x58, 0x97, 0x49, 0x18, 0xd7, 0xa1, 0x0b, 0x84, 0xe2, 0x81, 0x61, 0x30, 0xef, 0x14, 0x3c, + 0x20, 0x10, 0x5e, 0x74, 0x63, 0x02, 0x6c, 0xd4, 0x30, 0xba, 0xe8, 0xa4, 0xe3, 0x80, 0x06, 0x8d, + 0x83, 0xf8, 0xf6, 0xdd, 0xfb, 0xd8, 0x00, 0xf3, 0x58, 0xee, 0xd0, 0x0b, 0x05, 0x5e, 0xda, 0x96, + 0x0f, 0xd6, 0x4a, 0xaf, 0x1d, 0x97, 0xec, 0xd1, 0x11, 0xd9, 0x7c, 0x0b, 0x91, 0xa6, 0xef, 0x6f, + 0xf3, 0x2d, 0x29, 0x51, 0x04, 0x52, 0xef, 0x17, 0x91, 0x09, 0xd1, 0xae, 0x03, 0x39, 0xc7, 0xec, + 0x74, 0xc9, 0x97, 0xc2, 0xe8, 0xba, 0x61, 0xac, 0xb7, 0x6e, 0x47, 0x8c, 0x24, 0x1e, 0x95, 0x10, + 0x6a, 0x6c, 0xa1, 0xdc, 0x04, 0xf8, 0x31, 0x7a, 0x51, 0xd4, 0xa9, 0x02, 0x42, 0x9f, 0xb7, 0xe4, + 0xa4, 0xb7, 0x94, 0x0d, 0x73, 0x84, 0x01, 0xa5, 0xbc, 0x6a, 0x5f, 0x5c, 0x45, 0x05, 0xc9, 0x0e, + 0x7e, 0x25, 0xaa, 0x82, 0x13, 0xa0, 0xb9, 0x04, 0x08, 0xb1, 0x90, 0xf0, 0xa5, 0xee, 0xe6, 0x82, + 0x20, 0x12, 0xd1, 0x07, 0x5d, 0x92, 0xf8, 0x48, 0x1d, 0x14, 0x0b, 0x72, 0x81, 0x1a, 0x28, 0x10, + 0xd3, 0x23, 0x7b, 0x7b, 0x26, 0x57, 0x67, 0xf3, 0x79, 0x35, 0x46, 0x4b, 0x64, 0x1e, 0x23, 0x24, + 0x04, 0x4f, 0x14, 0xde, 0xb0, 0xc6, 0xc8, 0x2f, 0x70, 0x90, 0x5b, 0xa3, 0xaa, 0x1f, 0x1e, 0xb2, + 0x05, 0xd2, 0x11, 0x01, 0xc6, 0x92, 0x8c, 0xda, 0x98, 0x7c, 0xd5, 0xcb, 0xc3, 0x5f, 0x64, 0x90, + 0x08, 0x64, 0xc6, 0xf3, 0x1f, 0x5a, 0x31, 0xca, 0x04, 0x28, 0x3f, 0x2f, 0x20, 0x88, 0x44, 0x44, + 0x47, 0xc9, 0x1f, 0x26, 0x37, 0x4e, 0xe6, 0xfd, 0xe2, 0xb2, 0x74, 0x50, 0x5a, 0x2c, 0x15, 0xfb, + 0x4f, 0x06, 0x63, 0xf5, 0x83, 0xe6, 0x84, 0x06, 0xcb, 0x8b, 0xe9, 0xc8, 0x88, 0x16, 0x07, 0x8b, + 0xc7, 0x66, 0xdc, 0x89, 0x57, 0x64, 0xa8, 0xa0, 0x43, 0xae, 0x1a, 0xa4, 0xeb, 0x09, 0xf7, 0x0f, + 0x8d, 0x91, 0x7c, 0x30, 0x46, 0xd7, 0x63, 0xfe, 0x1f, 0x1f, 0x22, 0x55, 0x82, 0x57, 0x0d, 0x93, + 0x39, 0x28, 0xfd, 0x43, 0xa3, 0x4c, 0xb8, 0xee, 0x4e, 0x84, 0x5a, 0x7f, 0xd3, 0xf6, 0x40, 0xed, + 0x61, 0x51, 0x96, 0x9a, 0x1e, 0xe9, 0x2c, 0x41, 0xac, 0x7d, 0xa9, 0x89, 0xe1, 0x81, 0x06, 0x6e, + 0x52, 0x7f, 0x63, 0xc8, 0xb8, 0xef, 0x20, 0x2c, 0x2e, 0x61, 0x4b, 0xe6, 0xd5, 0x29, 0xb4, 0x14, + 0x38, 0xb3, 0x78, 0x38, 0xbe, 0x3a, 0xf5, 0xb7, 0x5f, 0xd8, 0xef, 0x80, 0x31, 0x40, 0x41, 0xdf, + 0x24, 0x06, 0xd8, 0xf1, 0x45, 0x45, 0x83, 0x65, 0xa1, 0xc7, 0x51, 0x82, 0x3a, 0xa2, 0xd4, 0xb7, + 0xc8, 0x0f, 0xf9, 0xe7, 0x96, 0x83, 0x76, 0x31, 0x89, 0x20, 0x67, 0x8c, 0xbb, 0x85, 0x73, 0x85, + 0x6e, 0x50, 0x14, 0xef, 0x78, 0x13, 0xe0, 0x1b, 0xc2, 0x41, 0xf1, 0x90, 0x84, 0x1a, 0xbf, 0x96, + 0x06, 0x10, 0x12, 0xf0, 0x5b, 0xe2, 0xee, 0xe5, 0x1c, 0x90, 0x72, 0xa1, 0x8b, 0xf9, 0xab, 0xd6, + 0x16, 0xbd, 0x98, 0x7a, 0x98, 0x94, 0xfb, 0xb9, 0x8d, 0x7f, 0x50, 0x9c, 0x08, 0x3b, 0xfe, 0x31, + 0x2e, 0x90, 0x70, 0xab, 0xc1, 0xc6, 0x88, 0x72, 0xf2, 0x8f, 0xec, 0xcf, 0xb9, 0xcf, 0x5b, 0x7f, + 0xd5, 0x18, 0x3b, 0x7d, 0xd5, 0x16, 0x83, 0xd9, 0x78, 0x9f, 0x4a, 0x83, 0xb9, 0x40, 0xf3, 0xa4, + 0x10, 0x5b, 0xd2, 0xd7, 0x8b, 0xfc, 0xc2, 0x7c, 0x8b, 0x9c, 0x32, 0x3b, 0x5f, 0xc0, 0xb7, 0xcf, + 0x8a, 0x3d, 0x2e, 0x9c, 0x60, 0x1c, 0x8d, 0x33, 0xfe, 0xad, 0x96, 0x36, 0x92, 0x4c, 0xac, 0x4b, + 0xce, 0x5c, 0x49, 0x8d, 0x89, 0x56, 0xf2, 0x4f, 0x57, 0x08, 0x04, 0x3d, 0xc6, 0x8e, 0x2e, 0x29, + 0x56, 0x01, 0xd4, 0x6c, 0x3a, 0x79, 0x9d, 0xa1, 0x79, 0x99, 0xf4, 0xe8, 0x81, 0x89, 0x27, 0x48, + 0x18, 0xdc, 0x51, 0x45, 0xc2, 0x75, 0xb3, 0xb3, 0xd9, 0x4c, 0x51, 0xe1, 0x93, 0xf9, 0xf5, 0xe0, + 0x51, 0x44, 0x32, 0x89, 0xdb, 0x90, 0xaa, 0x83, 0x88, 0xcf, 0x4c, 0xce, 0xbe, 0xc2, 0x87, 0x47, + 0x17, 0x4c, 0xc1, 0x57, 0xea, 0x58, 0x12, 0xa4, 0xbd, 0x9a, 0x02, 0x7b, 0x0b, 0x90, 0x8d, 0x39, + 0xb2, 0x07, 0x89, 0x1f, 0x44, 0x52, 0x24, 0x4f, 0xe6, 0xc6, 0x33, 0x0a, 0x96, 0x0c, 0x2b, 0xde, + 0x49, 0xc5, 0x88, 0x48, 0x34, 0x6a, 0x8e, 0x47, 0x03, 0x64, 0x6e, 0x88, 0x5b, 0xbf, 0x02, 0xa3, + 0x9b, 0xa9, 0x76, 0x51, 0xda, 0x8a, 0xd6, 0x53, 0x7d, 0x8d, 0x09, 0xf7, 0xcd, 0x5f, 0x31, 0x2d, + 0xa3, 0x31, 0x58, 0xf0, 0x23, 0xe6, 0xc4, 0x53, 0x0e, 0x99, 0x27, 0xb1, 0x99, 0x90, 0x14, 0xbf, + 0x2d, 0xfa, 0xce, 0xc5, 0xdf, 0xc2, 0xc1, 0xa3, 0xbe, 0x31, 0x87, 0xee, 0x3c, 0x0b, 0x9a, 0x80, + 0xfa, 0xc9, 0xdc, 0xd3, 0x37, 0x48, 0x72, 0x0e, 0xd2, 0x40, 0xd4, 0x2b, 0xd9, 0xff, 0xc4, 0xa0, + 0xd0, 0xd3, 0x2c, 0x6e, 0x84, 0x3a, 0x66, 0x84, 0x23, 0x33, 0xb4, 0x08, 0x88, 0xf2, 0x90, 0x97, + 0xca, 0xca, 0xf2, 0xdc, 0x8b, 0x5d, 0xd7, 0x71, 0xbf, 0x90, 0x42, 0xc7, 0x18, 0xd7, 0x7e, 0xa4, + 0x71, 0x74, 0x25, 0xf4, 0xda, 0xe0, 0x9a, 0x67, 0xd4, 0x1b, 0x6d, 0x3d, 0x5f, 0x61, 0xd1, 0x39, + 0xb0, 0xdd, 0xc8, 0x8c, 0x80, 0xb6, 0xc8, 0x87, 0x21, 0xf2, 0xda, 0xf6, 0x9b, 0xf6, 0x21, 0x72, + 0xb1, 0x4f, 0xdd, 0x35, 0x53, 0xa9, 0xf9, 0x12, 0xe1, 0xc5, 0xa1, 0xf9, 0x5b, 0xf2, 0x76, 0x82, + 0x0a, 0x21, 0x54, 0x8a, 0x58, 0x5f, 0x97, 0xdd, 0xdf, 0xc4, 0x72, 0xdf, 0x0e, 0x34, 0x8a, 0xa2, + 0x00, 0xe0, 0x2e, 0x05, 0xa0, 0x3a, 0xea, 0x39, 0xba, 0xbc, 0xfc, 0x82, 0x1f, 0x08, 0x5b, 0x11, + 0x49, 0xcf, 0xfe, 0x8a, 0x6d, 0x55, 0x43, 0x72, 0x82, 0x6f, 0xac, 0xbd, 0x6c, 0x24, 0x82, 0x0d, + 0x09, 0x99, 0x25, 0x63, 0x0b, 0xd1, 0xc0, 0x63, 0x6c, 0x55, 0x63, 0xdc, 0x31, 0x5e, 0xb5, 0x60, + 0x0b, 0xa3, 0x67, 0xd0, 0xc3, 0x47, 0xcf, 0x37, 0x95, 0xb8, 0x2b, 0x95, 0xa4, 0x91, 0x02, 0x6b, + 0x0b, 0x27, 0x5f, 0x3c, 0x82, 0x9c, 0xf4, 0x90, 0x6e, 0x07, 0x99, 0x1f, 0xff, 0x39, 0xca, 0xcb, + 0x05, 0x79, 0x03, 0x7f, 0x7a, 0x3d, 0xf8, 0x5b, 0x90, 0xf1, 0xa5, 0xd0, 0x6d, 0xc3, 0x4b, 0x81, + 0xd0, 0x97, 0x4a, 0x0f, 0x73, 0x7a, 0x15, 0xfa, 0xd2, 0x53, 0xe8, 0x4b, 0xaf, 0x54, 0xc2, 0x97, + 0x5e, 0x05, 0xeb, 0x64, 0xf3, 0x59, 0x78, 0xd9, 0xdd, 0xac, 0xec, 0xfe, 0xcc, 0xe0, 0xa9, 0xce, + 0x92, 0x43, 0x37, 0x3f, 0xb4, 0x28, 0xba, 0x5b, 0xd3, 0xcf, 0xb0, 0x33, 0x67, 0x2c, 0x3c, 0x77, + 0x15, 0x77, 0x29, 0x78, 0x6d, 0x34, 0xac, 0xd5, 0xeb, 0x75, 0x9c, 0xa7, 0x65, 0x8e, 0x8b, 0xab, + 0x9a, 0x21, 0x69, 0xfc, 0xee, 0x08, 0x55, 0x97, 0xc4, 0x04, 0x7e, 0x84, 0x28, 0x09, 0x4a, 0xb7, + 0x43, 0x8f, 0x8d, 0xbc, 0x44, 0x37, 0xa5, 0x9b, 0x66, 0x3c, 0xdf, 0x09, 0x9c, 0x91, 0x09, 0xf5, + 0xdb, 0x01, 0x36, 0x00, 0x2f, 0x21, 0x0f, 0x6a, 0x14, 0x1f, 0x2d, 0xcf, 0x35, 0xd9, 0x2d, 0x05, + 0x6f, 0x40, 0xa2, 0xd4, 0x63, 0x98, 0xa4, 0x7b, 0x76, 0x1a, 0xe5, 0x45, 0x26, 0x2f, 0x73, 0x1f, + 0x0b, 0xf2, 0x46, 0xee, 0x5e, 0xc8, 0xaf, 0xfb, 0x0e, 0x42, 0x7a, 0xb7, 0x03, 0xf4, 0x89, 0x82, + 0x82, 0xeb, 0xe4, 0x84, 0xfe, 0xc4, 0x7e, 0xcb, 0x40, 0x4e, 0xd3, 0xed, 0xd0, 0x5b, 0x7a, 0x52, + 0xa5, 0xde, 0xc6, 0xab, 0x8a, 0x0c, 0xa0, 0x48, 0x02, 0xbd, 0x93, 0x87, 0x13, 0x3c, 0x74, 0x1a, + 0xe2, 0x3e, 0xbb, 0x9d, 0xe0, 0x42, 0x94, 0xc9, 0xbb, 0x8b, 0xdb, 0x12, 0x0b, 0x50, 0xc6, 0x07, + 0x62, 0xcb, 0xee, 0xc6, 0x6e, 0x49, 0x8b, 0x05, 0x73, 0xab, 0x0a, 0x26, 0xab, 0x2b, 0x7a, 0x5e, + 0xde, 0x66, 0xf6, 0x53, 0x20, 0xe6, 0x96, 0x96, 0x4a, 0x2e, 0x6e, 0x8c, 0xde, 0x3a, 0xe1, 0xb6, + 0x31, 0x98, 0x30, 0x8b, 0x90, 0x01, 0x51, 0xcc, 0x0c, 0x7e, 0xb2, 0xaf, 0x66, 0xd7, 0xed, 0xb4, + 0x63, 0xec, 0xab, 0x53, 0xd2, 0x4d, 0x64, 0x93, 0xee, 0xde, 0xe5, 0x22, 0xd7, 0x9c, 0x58, 0x92, + 0x56, 0x17, 0xcf, 0x0d, 0x47, 0xc0, 0x0f, 0xcd, 0xd1, 0x26, 0xbb, 0x62, 0x4d, 0xdf, 0xca, 0x92, + 0xfc, 0xb6, 0x56, 0x4f, 0xe8, 0xf0, 0xff, 0x4c, 0x1d, 0x5e, 0x92, 0x7e, 0x13, 0x90, 0x27, 0x6f, + 0xcb, 0xd5, 0x6c, 0x32, 0x99, 0x12, 0x85, 0x86, 0x58, 0xd5, 0x71, 0x3a, 0x12, 0xb4, 0x6c, 0x51, + 0xfe, 0x93, 0xda, 0x20, 0xa9, 0x15, 0x1b, 0x2a, 0xc2, 0xb2, 0xc6, 0x42, 0xc3, 0x86, 0xe8, 0xed, + 0x6f, 0x4c, 0x58, 0x22, 0xe9, 0x51, 0x12, 0x77, 0x4e, 0x64, 0xbb, 0xce, 0x0f, 0xa0, 0xc6, 0x9f, + 0xa0, 0x41, 0x46, 0x05, 0x5a, 0x28, 0x93, 0xb4, 0x61, 0x3b, 0xdc, 0x56, 0x52, 0x75, 0xcf, 0xf8, + 0x07, 0x45, 0xe9, 0xf1, 0x33, 0xee, 0xa7, 0xd5, 0x70, 0x3a, 0xeb, 0xc1, 0xa8, 0x8b, 0x27, 0xa3, + 0xd1, 0x40, 0x79, 0x19, 0x89, 0x35, 0x92, 0x06, 0xfd, 0x35, 0x4d, 0x4f, 0x35, 0xdc, 0xb3, 0x50, + 0x39, 0x9d, 0x2d, 0xa4, 0xa9, 0xdd, 0x17, 0xca, 0x1d, 0x1a, 0x20, 0x42, 0xd2, 0x45, 0xd5, 0xd1, + 0x69, 0x0a, 0x3e, 0xb0, 0x9d, 0x6f, 0x0c, 0xbc, 0x19, 0x2b, 0xcf, 0x05, 0x90, 0x99, 0x8c, 0xb9, + 0xaf, 0x8f, 0x7f, 0xa7, 0x5f, 0xc8, 0x04, 0x4e, 0xfd, 0xc7, 0x4c, 0x99, 0xe3, 0x5f, 0x74, 0x73, + 0xa8, 0x2b, 0xdb, 0xa2, 0x58, 0xfd, 0xe6, 0x9b, 0x21, 0x0d, 0x0d, 0x6f, 0x60, 0xd4, 0x73, 0x5b, + 0xdf, 0x07, 0x96, 0x67, 0x5c, 0xf0, 0x6e, 0xe9, 0xf8, 0x9f, 0x5a, 0x77, 0x3f, 0x8d, 0x27, 0xd7, + 0x98, 0x77, 0x3c, 0x7e, 0x1c, 0x79, 0xf1, 0x4b, 0xae, 0x98, 0x4a, 0xd5, 0x64, 0xd7, 0x4c, 0xf9, + 0x8d, 0xf6, 0x99, 0x2b, 0x96, 0xd6, 0xf1, 0x38, 0xc8, 0xd9, 0xf6, 0x46, 0x2f, 0xee, 0x92, 0xf6, + 0xa8, 0x2f, 0x4a, 0xdf, 0x56, 0x44, 0x96, 0x8c, 0xbd, 0x9a, 0x37, 0xfb, 0xcf, 0x6f, 0x5d, 0xac, + 0xfa, 0x9f, 0xdf, 0xaa, 0xdf, 0x52, 0x89, 0x6c, 0xae, 0xec, 0x36, 0x2c, 0xf6, 0x14, 0xe0, 0xd6, + 0xb0, 0x25, 0xd3, 0xc3, 0xd3, 0x64, 0xea, 0x1b, 0x95, 0x07, 0xa3, 0xfb, 0x65, 0xb8, 0x0a, 0x28, + 0xaa, 0x55, 0x1a, 0xf5, 0x16, 0x8a, 0x07, 0x9f, 0x98, 0x0b, 0x5d, 0xd5, 0xfa, 0x86, 0xf6, 0x62, + 0x3a, 0x06, 0x1f, 0xf2, 0x9d, 0x91, 0xaa, 0xa1, 0x0b, 0x45, 0x7a, 0xac, 0x76, 0x93, 0xe1, 0xac, + 0x96, 0xda, 0x07, 0x61, 0x9d, 0x5e, 0x79, 0x41, 0xb1, 0x1a, 0x0b, 0x4d, 0xd4, 0x9e, 0x9a, 0xb6, + 0x69, 0x7a, 0x4a, 0xfc, 0x97, 0x40, 0x9d, 0x89, 0x69, 0x9a, 0x65, 0xdb, 0xaa, 0x24, 0x0a, 0xdd, + 0x9d, 0x21, 0xb0, 0xc9, 0x70, 0x33, 0xb7, 0x26, 0x9a, 0xda, 0x45, 0x29, 0x62, 0x76, 0x4f, 0x8f, + 0x68, 0x7a, 0x32, 0x52, 0xfa, 0x86, 0x96, 0x05, 0x2e, 0x8c, 0x79, 0xe1, 0x2c, 0x8c, 0xc6, 0x25, + 0xe0, 0xaa, 0x82, 0x35, 0x06, 0x7d, 0xbd, 0xec, 0xb8, 0x3d, 0x91, 0xb4, 0x69, 0x5b, 0xca, 0x70, + 0x3b, 0x5c, 0xf0, 0xb2, 0x75, 0xdd, 0x38, 0x13, 0xa5, 0x84, 0x9b, 0x4b, 0x57, 0x62, 0x92, 0x5b, + 0x86, 0x6e, 0x0b, 0x0b, 0x08, 0xd9, 0x03, 0x16, 0x3a, 0xc4, 0x45, 0x28, 0xb8, 0xd7, 0x4d, 0x44, + 0x49, 0x8b, 0x00, 0xd2, 0x00, 0xca, 0x84, 0xcd, 0x5a, 0xd8, 0xbf, 0x6c, 0x21, 0xa8, 0x74, 0x1d, + 0xf7, 0x4c, 0x3b, 0x52, 0xea, 0xac, 0xd1, 0x14, 0x80, 0x75, 0xe0, 0xa5, 0x29, 0x2c, 0x35, 0x54, + 0x3a, 0xd1, 0xf1, 0xa8, 0x1a, 0xb1, 0xdf, 0x6c, 0xd8, 0xee, 0x31, 0x1f, 0x78, 0xfc, 0x28, 0x85, + 0x07, 0xf6, 0xf4, 0xd1, 0x49, 0x21, 0x78, 0x88, 0x60, 0x6e, 0x3d, 0x83, 0xb0, 0xf2, 0x27, 0x2b, + 0x98, 0x61, 0x85, 0x60, 0x6d, 0xff, 0x6b, 0x01, 0xdf, 0x7b, 0xfa, 0x58, 0xb5, 0x0c, 0x7d, 0x48, + 0x41, 0x27, 0x69, 0xbc, 0x60, 0x4f, 0xcf, 0x0f, 0xd0, 0x2b, 0xc5, 0x22, 0xf0, 0x48, 0x67, 0x4d, + 0x9b, 0xa8, 0x26, 0x7a, 0x7d, 0x63, 0x65, 0xa0, 0x6d, 0xba, 0xac, 0x7e, 0x31, 0x26, 0xf8, 0x32, + 0x0e, 0xef, 0xe6, 0x54, 0xc6, 0xa6, 0x22, 0x33, 0xda, 0x99, 0x82, 0x22, 0x4b, 0x5c, 0xf1, 0x23, + 0x41, 0x62, 0x92, 0xcc, 0x79, 0xc8, 0x77, 0x97, 0x70, 0xed, 0x63, 0x6e, 0xcd, 0x96, 0x8a, 0x87, + 0x76, 0x7d, 0xf4, 0x2c, 0x08, 0x05, 0xa9, 0xe1, 0x3d, 0x4c, 0x3c, 0x4e, 0xeb, 0xdd, 0x08, 0xe7, + 0xb9, 0x2d, 0x15, 0xe5, 0x6d, 0x7f, 0xe3, 0x0b, 0x1d, 0xb5, 0x26, 0xf8, 0x1b, 0x41, 0xe1, 0x6b, + 0x40, 0xee, 0xed, 0x1f, 0x94, 0xb7, 0xfa, 0xae, 0xb2, 0xe0, 0x15, 0x4e, 0xa5, 0x68, 0x9b, 0x5a, + 0xa0, 0x1e, 0xe8, 0x69, 0x58, 0x1a, 0x35, 0xea, 0x7c, 0x10, 0x34, 0x42, 0x05, 0x3d, 0xae, 0x4d, + 0x2d, 0x05, 0x24, 0xa5, 0x6d, 0x61, 0xc3, 0x98, 0x85, 0xed, 0x6b, 0x49, 0xda, 0x92, 0xc2, 0xec, + 0xc3, 0xd0, 0xbe, 0x98, 0xd2, 0x92, 0x92, 0x51, 0xff, 0xf2, 0x45, 0xc1, 0xb3, 0x96, 0xf8, 0x83, + 0x31, 0x5f, 0x33, 0xfb, 0xfd, 0x1b, 0x6f, 0x2d, 0x68, 0xeb, 0xeb, 0xbc, 0x4b, 0x31, 0x64, 0xa3, + 0x33, 0x95, 0x18, 0x7c, 0x62, 0x5a, 0xac, 0xd9, 0x13, 0x15, 0x45, 0x2d, 0x1d, 0x65, 0xc7, 0xe4, + 0xac, 0x83, 0x6e, 0x2d, 0xd9, 0xaa, 0x1a, 0x3a, 0xbd, 0xac, 0xb5, 0x2d, 0xa2, 0xbc, 0xd4, 0x68, + 0x5e, 0x8e, 0xcf, 0xeb, 0x87, 0xf3, 0xf2, 0x7c, 0x9e, 0x96, 0x14, 0xe7, 0x08, 0xbf, 0xe5, 0x2a, + 0x22, 0xae, 0xd4, 0x0c, 0x12, 0xbf, 0x36, 0x0f, 0xc2, 0x4f, 0xb5, 0xed, 0x45, 0xbe, 0xc4, 0x05, + 0x3b, 0x12, 0x60, 0x7f, 0x13, 0xfe, 0x98, 0xe9, 0x69, 0x43, 0xdf, 0xc6, 0x33, 0x62, 0x91, 0xe9, + 0xbd, 0xbe, 0x04, 0xae, 0xcd, 0xa1, 0x40, 0x58, 0x9b, 0x01, 0xd4, 0x5d, 0x4e, 0xac, 0x04, 0xe6, + 0x25, 0x23, 0x7c, 0x6c, 0x79, 0xc8, 0x2a, 0x3e, 0x50, 0x12, 0x6b, 0x97, 0x7e, 0xc3, 0x64, 0x75, + 0xd0, 0x3d, 0xd2, 0xc7, 0x1b, 0x00, 0xac, 0xa3, 0xbf, 0x12, 0x3d, 0x6c, 0xc9, 0x37, 0xf0, 0x70, + 0x98, 0xd0, 0x2b, 0x0c, 0x2f, 0xb3, 0xf5, 0x61, 0xd0, 0x24, 0xfe, 0x2f, 0xa8, 0x87, 0x75, 0x9d, + 0xed, 0x93, 0x52, 0x97, 0x3e, 0x19, 0xa6, 0x64, 0x7a, 0x49, 0x8f, 0x52, 0xdf, 0x4d, 0x7b, 0x94, + 0x46, 0x75, 0x10, 0xc0, 0x80, 0x24, 0xbe, 0x0f, 0x27, 0x7f, 0x0e, 0x07, 0x52, 0x0f, 0xa6, 0x86, + 0x05, 0xbe, 0x09, 0x85, 0xbb, 0x71, 0xbf, 0x00, 0x8b, 0x97, 0x5f, 0xf1, 0xd6, 0x21, 0x11, 0x50, + 0x25, 0x3c, 0xc3, 0x4d, 0x52, 0xec, 0xaa, 0x16, 0x3b, 0x8f, 0x10, 0xe7, 0x4b, 0xe2, 0x33, 0x72, + 0x28, 0x84, 0x76, 0x22, 0x28, 0x83, 0x06, 0x3d, 0x7c, 0xe1, 0x68, 0xa1, 0xc0, 0xb6, 0xe8, 0x86, + 0xae, 0xa1, 0x33, 0xbb, 0xf5, 0x41, 0x98, 0x22, 0x2f, 0x74, 0xcd, 0x2f, 0x69, 0xfc, 0x01, 0xe8, + 0x67, 0x2a, 0x2a, 0x34, 0x1f, 0xc3, 0x38, 0x8c, 0x7e, 0xd3, 0xf0, 0x4c, 0xe5, 0x21, 0x1c, 0xaa, + 0x7f, 0x17, 0xc0, 0x01, 0xca, 0x72, 0x43, 0x64, 0x31, 0x23, 0xf4, 0xe8, 0xf9, 0x1c, 0xa6, 0x3f, + 0x81, 0xd3, 0xc7, 0x45, 0x94, 0x3e, 0x86, 0x70, 0xfa, 0xf8, 0x77, 0x21, 0x1e, 0xfe, 0x53, 0x28, + 0x7d, 0x5c, 0x40, 0x69, 0x08, 0xc2, 0xe1, 0xdf, 0x85, 0x90, 0xf1, 0xc3, 0x76, 0x98, 0x9f, 0xd0, + 0x1e, 0x15, 0x13, 0x2f, 0x57, 0xd3, 0xc8, 0xa0, 0xf0, 0x8c, 0xdf, 0x46, 0x34, 0xb9, 0x20, 0xad, + 0x5a, 0x5b, 0xdb, 0xb0, 0xdd, 0xf0, 0x4d, 0x7b, 0x94, 0x41, 0x0a, 0xd9, 0x5d, 0x61, 0xff, 0x81, + 0x4a, 0x84, 0xfc, 0x42, 0x23, 0xda, 0x86, 0x09, 0xdd, 0xb2, 0x23, 0xb8, 0x70, 0x6a, 0xa8, 0xbb, + 0x6c, 0x2e, 0x3a, 0xc2, 0x6c, 0xce, 0x63, 0x38, 0xdf, 0xdd, 0x18, 0x62, 0xc1, 0x27, 0x10, 0xff, + 0x98, 0x01, 0x27, 0x86, 0x61, 0x67, 0x73, 0xdb, 0x78, 0x2c, 0xce, 0x2e, 0xa6, 0xb2, 0x91, 0x5f, + 0x82, 0x30, 0xa1, 0xd9, 0xdf, 0x33, 0xac, 0x4e, 0xb4, 0x6e, 0x16, 0xeb, 0x66, 0x97, 0xd5, 0xdd, + 0x51, 0xac, 0x65, 0x15, 0x73, 0x58, 0x31, 0xb7, 0xac, 0x62, 0xc3, 0xea, 0x2c, 0xab, 0x98, 0xc7, + 0x8a, 0xf9, 0x65, 0x15, 0x9b, 0xf4, 0x7a, 0x76, 0x50, 0x37, 0xc3, 0xb2, 0x23, 0xbc, 0xe8, 0xc8, + 0x9d, 0x1f, 0x3a, 0x1b, 0xb6, 0x8e, 0x68, 0x53, 0x63, 0xa7, 0xa2, 0x85, 0x42, 0x89, 0x60, 0xab, + 0xc3, 0xbf, 0x3b, 0x0f, 0x76, 0x74, 0xed, 0xb6, 0xd4, 0x0f, 0x67, 0xc1, 0x56, 0x17, 0x11, 0x49, + 0x14, 0xa8, 0xa9, 0x7f, 0x3c, 0x0b, 0x31, 0x75, 0xef, 0xc9, 0xbd, 0xaa, 0x69, 0xd7, 0x46, 0xe7, + 0xe5, 0xd1, 0x18, 0x7d, 0x80, 0x99, 0x5a, 0xd4, 0x26, 0x07, 0xc3, 0xa0, 0x86, 0x25, 0x68, 0x5f, + 0xc3, 0x43, 0xa0, 0x21, 0xee, 0xe1, 0xa4, 0xbf, 0x2d, 0x86, 0xfa, 0x80, 0x5c, 0x63, 0x3b, 0xd8, + 0xd8, 0x17, 0x36, 0x40, 0x97, 0xee, 0xf1, 0x4a, 0x33, 0xdd, 0x42, 0xe0, 0x01, 0x4d, 0x52, 0x31, + 0x2b, 0x99, 0x85, 0xdc, 0xde, 0xfa, 0x78, 0x05, 0xdb, 0x44, 0x0b, 0x63, 0x16, 0xe5, 0x11, 0x7e, + 0x09, 0x43, 0xca, 0xdf, 0x5b, 0xc3, 0x91, 0xe1, 0x2f, 0xd8, 0x22, 0xb1, 0xa3, 0xbd, 0xa9, 0x3f, + 0x8b, 0x4b, 0x0c, 0x7c, 0xd6, 0x7b, 0x08, 0x5c, 0xfa, 0x1e, 0x98, 0xf7, 0xd0, 0xd7, 0x8d, 0xca, + 0x89, 0xf0, 0xeb, 0xba, 0x40, 0x26, 0x92, 0xb5, 0x20, 0x1c, 0x2f, 0x6d, 0xbc, 0x46, 0x45, 0x03, + 0x1c, 0x0b, 0xd4, 0xde, 0xb6, 0x5d, 0xbb, 0x0c, 0xfb, 0x85, 0x66, 0x41, 0x72, 0x02, 0x9c, 0x17, + 0xb2, 0x78, 0x19, 0x0c, 0x63, 0x2d, 0xe2, 0x4f, 0x3e, 0x57, 0x14, 0xe7, 0x54, 0x90, 0xf8, 0x95, + 0x02, 0x71, 0x49, 0xdf, 0x86, 0x7f, 0x55, 0x2f, 0x4c, 0x9a, 0x80, 0xc2, 0x59, 0xea, 0x5b, 0xc8, + 0x74, 0x68, 0x98, 0x8c, 0xd2, 0x3f, 0x84, 0x8d, 0x25, 0xe3, 0x16, 0x8d, 0x1e, 0x6a, 0x4a, 0x9f, + 0x1e, 0xfa, 0xe2, 0xd9, 0xf6, 0xd6, 0xb7, 0xd4, 0xaf, 0x28, 0x12, 0xfa, 0x6e, 0xbc, 0x2c, 0xef, + 0xd8, 0x9b, 0x6a, 0x9a, 0xb0, 0x43, 0xcf, 0x6b, 0xbc, 0x09, 0x15, 0x83, 0xc2, 0xe9, 0x64, 0xea, + 0x84, 0xe5, 0xe4, 0x45, 0x5f, 0xb9, 0x6f, 0x08, 0xe1, 0x37, 0x17, 0x1d, 0xb9, 0xcd, 0xf2, 0x1f, + 0xb3, 0x16, 0xb5, 0x16, 0xa6, 0xf1, 0xd3, 0x25, 0xcd, 0x81, 0x62, 0x35, 0xd1, 0x17, 0x96, 0x52, + 0x55, 0x4a, 0x6c, 0x88, 0xe9, 0x8e, 0x9b, 0xd4, 0x40, 0xc7, 0xce, 0xa4, 0x87, 0x8e, 0x5f, 0x91, + 0x71, 0x6f, 0x74, 0xbc, 0x68, 0x79, 0x94, 0x2c, 0x42, 0xa0, 0x7a, 0xf2, 0x61, 0x2f, 0x59, 0x0b, + 0x0b, 0x6e, 0x07, 0x96, 0x49, 0xe7, 0x46, 0x92, 0x03, 0x70, 0x1a, 0x5e, 0x74, 0x94, 0x15, 0x0d, + 0x59, 0x4b, 0x1b, 0xca, 0x06, 0x0d, 0xed, 0x7c, 0xa2, 0xa1, 0xfe, 0xd2, 0x86, 0x72, 0x41, 0x43, + 0xcd, 0x4f, 0x34, 0xa4, 0x2d, 0x6d, 0x28, 0x1f, 0x34, 0xb4, 0xeb, 0x37, 0xc4, 0x31, 0x09, 0xe1, + 0xd7, 0xe2, 0x84, 0xc7, 0x98, 0xcd, 0x5d, 0xc2, 0x5f, 0x6e, 0x38, 0xd7, 0xe2, 0x8d, 0xe6, 0x71, + 0xad, 0xc7, 0x1a, 0xcd, 0xb5, 0x58, 0x83, 0xb9, 0x16, 0x35, 0x96, 0xc3, 0x42, 0x88, 0xde, 0x58, + 0xb4, 0xa8, 0xa3, 0x7e, 0x94, 0xcf, 0xa9, 0x7a, 0x08, 0x70, 0x78, 0x65, 0xb0, 0x2c, 0xc4, 0x9d, + 0xf3, 0x68, 0xc8, 0x99, 0x3a, 0xa1, 0x1a, 0x4e, 0xec, 0xf7, 0x79, 0x82, 0xcf, 0xf3, 0xfc, 0x31, + 0x13, 0x89, 0x6d, 0x96, 0x73, 0xa5, 0x92, 0x58, 0xaf, 0xdb, 0x54, 0x6b, 0xdd, 0xce, 0xe7, 0xaa, + 0xa5, 0xc2, 0x9c, 0x17, 0xaf, 0xdd, 0x35, 0x8b, 0x1c, 0x34, 0x14, 0xe0, 0x8e, 0x7e, 0x03, 0x48, + 0x40, 0x6e, 0x94, 0x4e, 0xa7, 0xc5, 0x8c, 0x6b, 0x27, 0xf2, 0x11, 0x05, 0x9a, 0x21, 0x0d, 0x27, + 0xe8, 0x00, 0x41, 0xa3, 0xb7, 0x19, 0x40, 0xee, 0x74, 0xb7, 0xfe, 0x98, 0x8d, 0xb6, 0xc5, 0x16, + 0x8a, 0xd8, 0xc2, 0x03, 0x3a, 0x8b, 0xd0, 0xa7, 0xd3, 0xbd, 0x5d, 0x91, 0x39, 0xa6, 0x71, 0xa5, + 0x78, 0x1c, 0x01, 0xbc, 0xdb, 0xe2, 0x3d, 0x1a, 0x8f, 0x68, 0x1d, 0xe0, 0x11, 0x50, 0x79, 0xa1, + 0x00, 0x0b, 0xdd, 0x03, 0xea, 0xa4, 0x57, 0x28, 0xb6, 0x5d, 0x94, 0xc8, 0x2f, 0x7a, 0x3d, 0xbc, + 0xf8, 0xc3, 0x39, 0xc3, 0x71, 0x20, 0xba, 0x08, 0xe6, 0x18, 0x6e, 0x98, 0xcf, 0xaf, 0x0c, 0x76, + 0xf8, 0xc7, 0x2c, 0x31, 0xda, 0x1e, 0x4e, 0xaa, 0x9e, 0x01, 0x3a, 0xb9, 0x91, 0x9d, 0x73, 0xca, + 0x4a, 0x67, 0xbe, 0xa0, 0xf4, 0x9c, 0x12, 0x3d, 0x50, 0x87, 0xfc, 0x6f, 0x2c, 0x41, 0x67, 0xec, + 0x1b, 0x4b, 0x1e, 0x57, 0xe7, 0x46, 0xf1, 0x01, 0x80, 0xe4, 0x03, 0x00, 0x43, 0xf0, 0xf1, 0xc0, + 0x75, 0x37, 0x12, 0x51, 0x9c, 0x76, 0xaa, 0x72, 0xf2, 0x1f, 0x00, 0x59, 0xc0, 0x5e, 0x3d, 0xf7, + 0x25, 0xa4, 0xd9, 0x0d, 0x45, 0x53, 0xfb, 0x7a, 0x15, 0x79, 0xba, 0xe5, 0xa0, 0xcf, 0x12, 0x6e, + 0x87, 0x58, 0x68, 0x9c, 0xa2, 0x76, 0x47, 0x31, 0xd5, 0xc3, 0xa4, 0xc5, 0x91, 0xd2, 0x96, 0x98, + 0x61, 0x78, 0x61, 0x53, 0x37, 0x7a, 0xd1, 0x91, 0x73, 0x54, 0x6c, 0xf4, 0x56, 0x8d, 0x83, 0xb3, + 0x37, 0xc2, 0xf2, 0x84, 0x1e, 0x5c, 0xc3, 0xe6, 0x16, 0x23, 0xd0, 0x47, 0xcf, 0xa9, 0x12, 0x00, + 0x5b, 0xc0, 0x91, 0x78, 0x48, 0xed, 0x9c, 0x1e, 0xd1, 0x3d, 0xa2, 0x2d, 0xd0, 0x2f, 0x1f, 0xa6, + 0xb0, 0x0f, 0x66, 0xef, 0x5b, 0x4a, 0x4b, 0x7d, 0xb3, 0x1f, 0x57, 0xce, 0xdf, 0xb7, 0x54, 0x62, + 0x38, 0xd8, 0xc8, 0xa2, 0xbd, 0xd1, 0x1b, 0xde, 0xb7, 0x94, 0x89, 0x6f, 0x31, 0x83, 0xa3, 0x0d, + 0x2e, 0x99, 0x25, 0x37, 0x6f, 0x2b, 0x00, 0xf5, 0x03, 0xc0, 0xc8, 0x47, 0x80, 0x0d, 0x07, 0x21, + 0xa0, 0x12, 0xfd, 0x45, 0x7a, 0x32, 0xab, 0x68, 0x1c, 0xff, 0xf7, 0x81, 0x15, 0x96, 0xd3, 0x12, + 0x6c, 0xff, 0x43, 0x8f, 0x88, 0x06, 0xf0, 0xe0, 0x4f, 0x80, 0x48, 0x99, 0xac, 0x3f, 0xb3, 0x07, + 0x18, 0x02, 0x0c, 0x36, 0x6d, 0x7f, 0xfc, 0x2d, 0xbc, 0x6b, 0xc0, 0xbd, 0x87, 0xa7, 0x4e, 0xfc, + 0xd4, 0xda, 0xeb, 0x5b, 0x66, 0x2c, 0x92, 0xb2, 0xbc, 0x3d, 0x83, 0xa3, 0x4a, 0x28, 0xff, 0xbf, + 0x80, 0x23, 0xd8, 0x66, 0x67, 0xe5, 0xd4, 0x45, 0xa1, 0x82, 0xf2, 0xff, 0x08, 0x54, 0x9f, 0x30, + 0xcc, 0x33, 0x93, 0xd0, 0x32, 0xd9, 0xd5, 0xff, 0xe4, 0x92, 0x1f, 0x34, 0x97, 0xee, 0xb2, 0xf1, + 0x1f, 0x7f, 0xe3, 0xe6, 0xcb, 0xb3, 0xad, 0x86, 0xb7, 0xd4, 0x81, 0xd0, 0x0e, 0xeb, 0x42, 0x40, + 0x91, 0xa2, 0xbf, 0xc9, 0x27, 0xe8, 0xd6, 0xd0, 0x4b, 0xc2, 0xc3, 0xfa, 0x7a, 0x7f, 0xc3, 0xdc, + 0xca, 0xae, 0xaf, 0x77, 0x37, 0x3a, 0x5b, 0xd9, 0xed, 0x36, 0x25, 0x9c, 0x04, 0x49, 0x37, 0x46, + 0x5d, 0xd5, 0xb8, 0x26, 0xec, 0xda, 0xc5, 0xfa, 0x7a, 0x24, 0x81, 0x9a, 0xdb, 0xc4, 0xea, 0x11, + 0x6e, 0xe4, 0x2b, 0x4c, 0x02, 0x21, 0x00, 0xda, 0xce, 0x50, 0x74, 0xfb, 0xa6, 0xd1, 0x75, 0x4d, + 0x83, 0x9e, 0x40, 0x30, 0xab, 0x81, 0x1b, 0x4b, 0x0c, 0xfb, 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, 0x87, 0x38, 0x1f, 0xb7, 0x1c, 0x67, 0xf1, 0x09, 0xb5, 0x1c, 0xb1, + 0xf9, 0xd0, 0x96, 0x91, 0x0f, 0xfe, 0x75, 0x0d, 0xa7, 0x8b, 0x11, 0x41, 0x51, 0x84, 0x5f, 0x4e, + 0x3d, 0x2e, 0x64, 0x16, 0x13, 0xb9, 0xfc, 0xcf, 0xde, 0x9a, 0xa0, 0x93, 0xba, 0x01, 0xc9, 0xf0, + 0x9e, 0x0e, 0x77, 0xfa, 0x63, 0x7e, 0x8a, 0xc8, 0x42, 0x9f, 0x47, 0x0c, 0x1c, 0x80, 0x3e, 0x03, + 0x4a, 0x37, 0x04, 0xca, 0x2e, 0xf5, 0xb6, 0xe1, 0x00, 0xe8, 0xf2, 0xca, 0xe0, 0xd6, 0x5f, 0xfc, + 0xb0, 0x58, 0x48, 0x1f, 0x5e, 0x94, 0x1d, 0x81, 0xe4, 0x2c, 0x64, 0x6b, 0xcc, 0xf9, 0x73, 0xee, + 0xd9, 0xbd, 0x17, 0x3d, 0x28, 0x5c, 0x13, 0x3b, 0x6f, 0x41, 0xdf, 0xaa, 0xb3, 0x03, 0xf0, 0x5a, + 0x70, 0x89, 0x4b, 0x73, 0x4f, 0x65, 0x41, 0xad, 0xc4, 0x5b, 0xa8, 0x49, 0xcf, 0x65, 0xd4, 0x7b, + 0xf7, 0xa2, 0x66, 0xa3, 0xeb, 0xb2, 0x6f, 0xf9, 0x57, 0xea, 0x72, 0x4d, 0xf9, 0x5e, 0xc7, 0x41, + 0xd6, 0x94, 0x54, 0x2a, 0x19, 0x18, 0xdf, 0x15, 0x6c, 0x20, 0x60, 0x20, 0x8a, 0x7f, 0x71, 0x88, + 0x9a, 0x7a, 0xa9, 0x6b, 0x3e, 0x5d, 0x0b, 0x0a, 0xda, 0x8e, 0x7f, 0x25, 0xfd, 0xce, 0xfb, 0x16, + 0xd6, 0x5d, 0x72, 0x6c, 0xfc, 0x85, 0xaf, 0x07, 0x80, 0xfd, 0xf2, 0xa1, 0x82, 0x95, 0xfb, 0x39, + 0xe0, 0xb3, 0x49, 0x76, 0x73, 0xdb, 0x3d, 0x80, 0xf8, 0x9e, 0x0b, 0x8a, 0xf6, 0xbb, 0xa0, 0x96, + 0xc2, 0x48, 0x96, 0xf5, 0x0e, 0xdc, 0x92, 0x8b, 0xfe, 0xe3, 0x55, 0x92, 0xd1, 0xf6, 0xed, 0xfa, + 0xd4, 0x26, 0x7d, 0x30, 0xfa, 0xa6, 0xbc, 0xf4, 0x58, 0x5b, 0xfa, 0x42, 0xed, 0xca, 0x5f, 0x34, + 0x76, 0xc1, 0x33, 0xbc, 0x4f, 0xf2, 0xcd, 0xb3, 0x91, 0x22, 0x48, 0x73, 0xdb, 0xbb, 0x31, 0x91, + 0x84, 0x8d, 0x34, 0xb5, 0xac, 0x14, 0xf1, 0x4b, 0x7d, 0xf7, 0xe4, 0xbc, 0x00, 0x22, 0x6b, 0x71, + 0x74, 0x71, 0x67, 0xf7, 0x7e, 0x44, 0xf1, 0xa8, 0xbf, 0x83, 0x87, 0x32, 0x60, 0x8c, 0xe1, 0x98, + 0x2e, 0x52, 0xf8, 0x52, 0x26, 0xfa, 0x30, 0x98, 0x76, 0x12, 0xed, 0x03, 0xf8, 0xe0, 0x3b, 0xbe, + 0x7b, 0x97, 0x8f, 0xbf, 0x9d, 0xd2, 0x30, 0xdf, 0x55, 0x16, 0x01, 0x3c, 0xc6, 0x6e, 0x65, 0xf7, + 0x79, 0x9e, 0x13, 0x39, 0xc1, 0x65, 0x31, 0xc2, 0xff, 0xf3, 0x5b, 0xd5, 0xc7, 0x01, 0xf7, 0x49, + 0xef, 0x18, 0x63, 0x56, 0x60, 0x83, 0xda, 0xba, 0x75, 0xdb, 0xec, 0xfa, 0xa6, 0xa7, 0x6f, 0x35, + 0xff, 0x5c, 0x9e, 0x3a, 0x2f, 0x0a, 0x0c, 0x64, 0x7a, 0x48, 0x45, 0x5d, 0x0f, 0xc3, 0x6d, 0xfd, + 0x31, 0x73, 0xd2, 0x6a, 0x77, 0x8e, 0x5e, 0x5f, 0x72, 0xbd, 0x8e, 0xcf, 0xdb, 0xa2, 0x6b, 0x97, + 0x10, 0xab, 0x4e, 0x1a, 0x2f, 0x4d, 0x80, 0xbe, 0xe4, 0x46, 0x31, 0x4f, 0x61, 0x7e, 0x4a, 0x64, + 0x4e, 0xcd, 0x73, 0xbf, 0xcb, 0x5f, 0x35, 0x42, 0x3d, 0xb6, 0x43, 0x36, 0x2f, 0xd7, 0x75, 0xdb, + 0xad, 0x19, 0x72, 0x0e, 0x8c, 0xe4, 0x2c, 0x9b, 0x3b, 0xce, 0x0f, 0x31, 0xa6, 0x2c, 0x47, 0x7d, + 0x8b, 0x27, 0x7d, 0xbe, 0x03, 0xad, 0xeb, 0xe1, 0x49, 0x1d, 0x6e, 0x25, 0x7a, 0xde, 0x47, 0x3c, + 0x47, 0x54, 0xff, 0x54, 0x12, 0xaf, 0x14, 0x38, 0xdf, 0x89, 0x3b, 0xa9, 0x35, 0x07, 0xd6, 0x3c, + 0xf9, 0xe1, 0xfc, 0xac, 0xcf, 0xd4, 0x6e, 0x15, 0x1f, 0xd0, 0x5f, 0x01, 0x35, 0x43, 0xf6, 0x92, + 0xfd, 0x39, 0xc7, 0x36, 0x78, 0x6f, 0x50, 0xea, 0xcf, 0x44, 0x6f, 0x9e, 0x6b, 0x04, 0x63, 0x4c, + 0x29, 0x16, 0x49, 0x38, 0x34, 0x31, 0x89, 0xce, 0x09, 0x9e, 0xa7, 0x2b, 0xb6, 0x27, 0xb3, 0x96, + 0xc4, 0x16, 0x5e, 0xd4, 0x15, 0xe7, 0x01, 0x10, 0xf4, 0xfa, 0x24, 0xf1, 0xe8, 0x09, 0xef, 0xe0, + 0x4b, 0x3a, 0xfc, 0xd0, 0x1b, 0xdc, 0xa2, 0x20, 0xa2, 0x8b, 0x87, 0xc8, 0xc2, 0x33, 0xd0, 0xce, + 0x54, 0xbd, 0x4b, 0xa6, 0x17, 0xbd, 0x84, 0x78, 0xdd, 0xba, 0xdb, 0x15, 0x93, 0xdf, 0x65, 0xea, + 0xac, 0x18, 0x26, 0x5a, 0xe6, 0x46, 0x8b, 0xae, 0xe9, 0xcc, 0xe3, 0xd6, 0x25, 0x5a, 0xec, 0x04, + 0x83, 0x30, 0xb0, 0x54, 0xbc, 0x9b, 0xc2, 0x32, 0xb6, 0xc5, 0x5a, 0xed, 0x4b, 0x2d, 0x0b, 0x62, + 0x83, 0x97, 0x51, 0x63, 0xd8, 0x41, 0x17, 0x09, 0x6d, 0xfb, 0xc7, 0xcf, 0xaa, 0xe6, 0xdd, 0x3d, + 0xaf, 0xd1, 0x18, 0x12, 0x8e, 0x5b, 0xf1, 0x7b, 0xfe, 0xf7, 0x6f, 0xea, 0x46, 0x41, 0x7d, 0x53, + 0xa1, 0x1c, 0xfe, 0x7a, 0x45, 0x25, 0x7a, 0xcd, 0x31, 0xe6, 0xaa, 0x39, 0x0d, 0xb5, 0xe5, 0x05, + 0x3c, 0xa3, 0x77, 0xcc, 0xdd, 0xab, 0x13, 0xc1, 0x57, 0xf0, 0xbc, 0xe3, 0x4f, 0xbf, 0xa3, 0x82, + 0xdf, 0x51, 0xfe, 0xe7, 0x36, 0xc8, 0xa1, 0x55, 0x7c, 0xa8, 0xc9, 0xf4, 0x0a, 0x57, 0x02, 0x5d, + 0x53, 0x92, 0x92, 0xc2, 0xf5, 0x95, 0x50, 0x00, 0x4f, 0x1d, 0x6d, 0x84, 0x91, 0x5c, 0x41, 0x3e, + 0x0c, 0x3a, 0x60, 0x5f, 0xaf, 0xc3, 0xc2, 0x41, 0x7e, 0x96, 0xcf, 0xa7, 0x1f, 0x8f, 0x0b, 0xe7, + 0xe7, 0xb8, 0x7c, 0xf6, 0xed, 0xb6, 0x70, 0xfe, 0x98, 0xcf, 0xa7, 0x5f, 0x4e, 0x0b, 0xe7, 0xf7, + 0xc2, 0xf9, 0xc5, 0x1a, 0x3a, 0x03, 0x39, 0xa9, 0x7a, 0x1f, 0x6f, 0xe4, 0xe2, 0x8e, 0x02, 0x44, + 0x8d, 0x9e, 0x7b, 0x87, 0xce, 0x50, 0x4b, 0xe0, 0x17, 0x34, 0x25, 0x22, 0xe9, 0x12, 0x8a, 0x27, + 0xfb, 0x0f, 0x80, 0x45, 0xea, 0x44, 0xc0, 0x36, 0x44, 0xef, 0xeb, 0x94, 0xfc, 0x7e, 0x18, 0xe3, + 0x6f, 0xeb, 0xfb, 0xc9, 0x33, 0x97, 0x7a, 0xdf, 0xff, 0xda, 0x7d, 0x0b, 0xb9, 0x33, 0x67, 0x7f, + 0x46, 0xc9, 0x97, 0xfa, 0xbb, 0xba, 0x65, 0x3d, 0x02, 0xfe, 0x21, 0x4b, 0x3e, 0x6f, 0xf8, 0xe9, + 0x85, 0xef, 0x02, 0xb2, 0xf4, 0x17, 0x12, 0xd2, 0x30, 0xad, 0x82, 0x9c, 0x26, 0x7e, 0x60, 0xee, + 0x6d, 0x01, 0x51, 0x42, 0x27, 0x65, 0x09, 0xbb, 0xa1, 0x63, 0xbc, 0xf4, 0x92, 0x7f, 0x45, 0xbf, + 0xfd, 0x68, 0xd2, 0x43, 0x44, 0x57, 0x45, 0xfa, 0x63, 0x06, 0xad, 0x42, 0xd9, 0x4b, 0x48, 0x6c, + 0xda, 0x76, 0x82, 0xfa, 0x60, 0xfb, 0xfe, 0x97, 0xbf, 0xe8, 0x36, 0xc8, 0x9c, 0x2e, 0xbd, 0x8f, + 0x06, 0x87, 0xf8, 0xce, 0x17, 0x2f, 0xb2, 0x9f, 0x77, 0xdc, 0x0f, 0x53, 0xe2, 0xbb, 0xbc, 0xe1, + 0xc7, 0x55, 0xa9, 0xc5, 0x25, 0xe9, 0xbb, 0x2b, 0x00, 0x63, 0x20, 0xdf, 0x17, 0x0b, 0x00, 0xbb, + 0x4b, 0x79, 0x0e, 0x09, 0x0b, 0x51, 0x34, 0x00, 0x10, 0xdf, 0x2b, 0xda, 0x07, 0x82, 0x0f, 0x7e, + 0x81, 0xb7, 0x53, 0xd3, 0xc6, 0xc8, 0x71, 0xa1, 0xfa, 0x00, 0x4d, 0xb0, 0x41, 0x6f, 0x10, 0x49, + 0xfc, 0x6f, 0xc1, 0xfd, 0x8e, 0x8d, 0x98, 0x42, 0x7e, 0xf0, 0xdf, 0xe2, 0xbf, 0x83, 0x35, 0xda, + 0x26, 0x8f, 0x36, 0xce, 0x57, 0xc2, 0x22, 0x5d, 0x4b, 0x99, 0xb8, 0x85, 0xfd, 0xe0, 0x1a, 0x31, + 0x57, 0xd5, 0xc5, 0xaf, 0xee, 0xf0, 0x84, 0x34, 0xf5, 0x57, 0x4e, 0xd6, 0x78, 0x97, 0x79, 0x81, + 0x04, 0x5e, 0x1b, 0x04, 0x16, 0x70, 0xa8, 0x7a, 0x42, 0x4c, 0xfb, 0x30, 0x26, 0x31, 0xd8, 0x9b, + 0x17, 0x62, 0xae, 0x1e, 0x99, 0x5d, 0x3f, 0x98, 0x9f, 0xda, 0x4d, 0x86, 0x43, 0x86, 0xf0, 0xc5, + 0x98, 0x47, 0x39, 0x1f, 0xc6, 0x36, 0xb8, 0x91, 0x1b, 0xa4, 0x21, 0x3f, 0x43, 0x7f, 0x6e, 0xc7, + 0xbb, 0x3d, 0xe8, 0xca, 0x00, 0x55, 0x81, 0x6e, 0xf8, 0xb5, 0x6c, 0xdd, 0xe7, 0x33, 0xe8, 0x89, + 0x09, 0x84, 0x59, 0xa7, 0x24, 0x1a, 0xe6, 0xa9, 0x74, 0x5d, 0xb8, 0xf9, 0xe8, 0x7e, 0x0b, 0xa8, + 0x4c, 0x7a, 0x57, 0xbb, 0x5d, 0x67, 0xf2, 0x80, 0x72, 0xbc, 0xf6, 0x18, 0xbd, 0xb0, 0x2d, 0x59, + 0xab, 0x3b, 0x1e, 0x67, 0x55, 0x24, 0x43, 0x52, 0x25, 0x0b, 0xe4, 0xb7, 0xda, 0x02, 0xef, 0xd6, + 0x92, 0x49, 0xab, 0xce, 0x79, 0xee, 0xa0, 0x87, 0x79, 0x06, 0x3a, 0xfb, 0x13, 0x83, 0x15, 0x48, + 0xcc, 0xcb, 0x5c, 0x32, 0xea, 0x18, 0x1c, 0x47, 0x52, 0xeb, 0x18, 0xf9, 0x86, 0x06, 0x15, 0x11, + 0x30, 0xea, 0x89, 0x85, 0xfc, 0x3a, 0xa9, 0x20, 0x6c, 0xae, 0x33, 0x9f, 0xa2, 0x77, 0x8d, 0x61, + 0x02, 0x5d, 0x47, 0x16, 0xd3, 0xd4, 0xc5, 0xb4, 0x20, 0x3e, 0x09, 0xa1, 0x1d, 0x6d, 0x64, 0x5d, + 0x97, 0x43, 0x76, 0xeb, 0xdd, 0x66, 0xc2, 0x27, 0xd0, 0xb2, 0x45, 0xf4, 0x9a, 0xc2, 0xf9, 0xb9, + 0xe0, 0x66, 0xe2, 0x4d, 0x99, 0x85, 0xdd, 0xc5, 0x67, 0xf5, 0xb1, 0xd7, 0xf8, 0xac, 0x76, 0x72, + 0xfe, 0x05, 0x66, 0xa2, 0x6e, 0x01, 0x8e, 0x43, 0x08, 0x20, 0x19, 0x0f, 0x9b, 0x14, 0x05, 0x78, + 0xeb, 0x9d, 0xfa, 0xd0, 0xbb, 0x61, 0x0b, 0x15, 0x8c, 0x58, 0x68, 0xe0, 0x1f, 0x75, 0x9e, 0xc4, + 0xd8, 0x89, 0xf3, 0x7f, 0x01, 0x59, 0xbb, 0xf7, 0x8b, 0x03, 0xb7, 0xbc, 0xaa, 0x10, 0x0d, 0xb7, + 0x88, 0x71, 0xaa, 0xd1, 0xe2, 0x25, 0x61, 0x68, 0x9e, 0x67, 0x43, 0xa5, 0x31, 0x21, 0x6a, 0xbf, + 0xc2, 0xc4, 0xb6, 0xb8, 0x40, 0xe9, 0x1d, 0x66, 0xe0, 0xcf, 0xb8, 0x2d, 0x4b, 0x4a, 0xe8, 0x32, + 0x73, 0x64, 0x25, 0x32, 0xb9, 0x0a, 0xcf, 0x0d, 0x69, 0x34, 0x72, 0xd7, 0xd2, 0x47, 0x4f, 0xec, + 0x50, 0xdf, 0xc2, 0xab, 0xcc, 0x78, 0xa4, 0xc6, 0xf9, 0x21, 0xd2, 0x3c, 0x10, 0xad, 0xd0, 0xee, + 0xa4, 0xa0, 0x7d, 0xe9, 0xdb, 0xdc, 0xd0, 0x9b, 0x4c, 0xf9, 0xfa, 0x63, 0xa6, 0xcf, 0x69, 0x94, + 0xc6, 0xa4, 0x7f, 0xc2, 0xe7, 0xea, 0x69, 0x6e, 0xaa, 0xb0, 0xf2, 0x1b, 0xbb, 0xf1, 0xc7, 0x4f, + 0x91, 0x13, 0x41, 0x5a, 0x95, 0xb3, 0xa1, 0x20, 0x80, 0x28, 0x74, 0xe0, 0x33, 0x99, 0x8b, 0xe1, + 0x93, 0x3e, 0x5a, 0x38, 0xac, 0x07, 0x2f, 0xfb, 0x78, 0x6f, 0xa8, 0x5e, 0xf0, 0xe9, 0x5e, 0x76, + 0x91, 0x3b, 0x74, 0x10, 0xe2, 0x1e, 0xf7, 0x83, 0x4e, 0xee, 0xab, 0x82, 0xfe, 0x74, 0xb4, 0x11, + 0x48, 0x5c, 0xf3, 0xae, 0xdb, 0x12, 0x71, 0x5d, 0x96, 0x72, 0x55, 0xe6, 0x81, 0x94, 0xab, 0xba, + 0xeb, 0x7b, 0xaf, 0x75, 0x99, 0xcf, 0x89, 0x9e, 0x5f, 0x12, 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, 0xce, 0xe9, 0x51, 0x84, 0x4b, 0x82, 0xe2, 0x36, 0x3f, 0x02, + 0x3d, 0x74, 0x81, 0x58, 0xc4, 0xe8, 0x41, 0xf4, 0x0e, 0x20, 0xa6, 0x6f, 0x83, 0x6c, 0x67, 0x56, + 0xd9, 0xf3, 0xe2, 0xa6, 0xce, 0xa2, 0xd2, 0xd3, 0xb0, 0xb9, 0x8c, 0xe7, 0x00, 0xf5, 0xe9, 0xf8, + 0x07, 0x24, 0x3a, 0x64, 0x22, 0x20, 0x75, 0x62, 0x89, 0xa4, 0xaf, 0xcb, 0xa2, 0x17, 0x9b, 0x9b, + 0xf8, 0x17, 0x64, 0x56, 0xaf, 0x99, 0x24, 0x34, 0xa9, 0xb0, 0x44, 0x97, 0x1d, 0xac, 0x38, 0x3d, + 0xc2, 0x43, 0xf2, 0x5c, 0x79, 0x5d, 0xa1, 0x41, 0xa2, 0xe8, 0xc9, 0x04, 0x9e, 0xd0, 0xf0, 0xc7, + 0x48, 0xd6, 0xd0, 0xb9, 0xe9, 0x6b, 0x89, 0x6f, 0xb0, 0x5c, 0x61, 0x90, 0xf3, 0x6f, 0xf4, 0xcb, + 0x55, 0xc9, 0x9a, 0x18, 0x76, 0xd2, 0xa2, 0xd7, 0x72, 0x3d, 0x67, 0xc4, 0x5f, 0x71, 0xd7, 0x49, + 0xfd, 0xcb, 0x50, 0xb4, 0x99, 0xd0, 0x27, 0xa4, 0xdd, 0x6f, 0xbd, 0xbb, 0x57, 0xc1, 0xbf, 0xd1, + 0x28, 0xe5, 0x99, 0x8c, 0xd7, 0x21, 0xf5, 0x81, 0xe5, 0xc8, 0xb3, 0xed, 0x51, 0x20, 0x9b, 0x12, + 0x25, 0xe9, 0x5e, 0x9f, 0xc1, 0xf2, 0x63, 0xb5, 0xfb, 0x3d, 0x97, 0x97, 0x37, 0xb3, 0x79, 0x19, + 0x07, 0x43, 0xb8, 0x5b, 0x54, 0xd2, 0x2f, 0xa8, 0x41, 0xc9, 0x30, 0x9b, 0xdb, 0x74, 0x07, 0x0c, + 0x55, 0xd1, 0x89, 0x41, 0x65, 0x7a, 0x14, 0xad, 0xbe, 0x2d, 0x9e, 0x67, 0x1a, 0x62, 0x95, 0x3e, + 0xcf, 0xe9, 0xc8, 0x40, 0xa0, 0x4a, 0xa5, 0xe6, 0x04, 0xbd, 0xeb, 0xbf, 0xcb, 0xdb, 0x36, 0xc8, + 0x82, 0xa1, 0x2f, 0x62, 0xe0, 0x8d, 0x5c, 0xd8, 0x95, 0xd0, 0xdc, 0xd7, 0x4d, 0x8b, 0x55, 0x99, + 0x7a, 0xef, 0x25, 0xb0, 0xd8, 0xb9, 0x21, 0x18, 0x78, 0x73, 0x38, 0xf8, 0x2c, 0x82, 0xd0, 0x43, + 0x7e, 0x96, 0x46, 0x41, 0x1c, 0x95, 0x3a, 0xcf, 0xad, 0x59, 0xe0, 0xfc, 0x38, 0x9b, 0xcc, 0xfd, + 0xd4, 0xaf, 0x53, 0x45, 0x6f, 0x4e, 0x3a, 0x99, 0x73, 0x5a, 0x50, 0xa7, 0x57, 0x74, 0x22, 0xae, + 0x9b, 0x7a, 0x48, 0x64, 0xb2, 0xc3, 0x37, 0x08, 0xdd, 0x8f, 0x22, 0xc4, 0x5e, 0x1d, 0x64, 0x9f, + 0x90, 0xf8, 0xd4, 0xcd, 0x41, 0xff, 0x82, 0xfa, 0x48, 0xeb, 0xd2, 0xd0, 0xf7, 0xd8, 0xb6, 0x80, + 0x8d, 0x0b, 0x28, 0x50, 0xb0, 0x58, 0x21, 0xb1, 0x57, 0x0a, 0xe3, 0x3e, 0x86, 0x23, 0x85, 0x17, + 0x87, 0x27, 0xae, 0x49, 0xe4, 0x83, 0xdb, 0x93, 0x0b, 0xc1, 0x6e, 0xa8, 0x15, 0x87, 0x09, 0x13, + 0x2c, 0x56, 0x14, 0x71, 0x45, 0x85, 0x5a, 0x10, 0xaa, 0x0b, 0x11, 0x8a, 0xfd, 0x7c, 0xd6, 0x77, + 0x15, 0xef, 0xa7, 0xe1, 0xba, 0x04, 0xc5, 0x67, 0x69, 0x20, 0x62, 0x87, 0x7a, 0xc2, 0x7a, 0xa1, + 0x69, 0xee, 0x90, 0xed, 0xd2, 0x60, 0xb2, 0x7d, 0x31, 0xe9, 0x2d, 0x73, 0x92, 0x1e, 0x28, 0x76, + 0xc3, 0x71, 0x2c, 0x15, 0x68, 0x10, 0x72, 0x87, 0xca, 0x54, 0x4c, 0x02, 0xab, 0x50, 0xbc, 0x24, + 0x7a, 0xdf, 0x83, 0x59, 0x0c, 0xaa, 0xb0, 0x9f, 0x7b, 0x91, 0x46, 0x78, 0xb7, 0x5f, 0x9a, 0x99, + 0x81, 0xf5, 0xa6, 0x7f, 0xa7, 0x01, 0x2e, 0x60, 0x95, 0xe5, 0x98, 0xe8, 0xa2, 0xd5, 0x17, 0xa2, + 0x10, 0x57, 0x58, 0x10, 0x62, 0x76, 0x9e, 0xdd, 0xee, 0x27, 0x29, 0xb9, 0xfc, 0xcb, 0x4b, 0xe8, + 0x6c, 0x94, 0xdc, 0x94, 0xe4, 0xaf, 0xda, 0xb2, 0x80, 0x77, 0xda, 0x9c, 0x59, 0xd3, 0x42, 0x68, + 0x5b, 0x86, 0x41, 0x3f, 0x42, 0x1d, 0xfb, 0xc6, 0x23, 0x43, 0x9c, 0xe2, 0xaa, 0x70, 0xbe, 0x00, + 0xef, 0x99, 0x44, 0x82, 0x80, 0xae, 0x5c, 0xf4, 0x22, 0x1a, 0x90, 0x35, 0xcd, 0x3e, 0x82, 0xf2, + 0x77, 0xbb, 0x8c, 0x0b, 0x25, 0xc4, 0x7d, 0x84, 0xd2, 0x0d, 0x92, 0x13, 0x21, 0x1c, 0xb4, 0x05, + 0x72, 0x51, 0xf8, 0x98, 0xed, 0x8a, 0xa0, 0x79, 0xcb, 0xa3, 0x9f, 0x48, 0x7c, 0x98, 0x48, 0x29, + 0x77, 0x54, 0xa0, 0x51, 0xc7, 0x96, 0x08, 0x0c, 0x60, 0x8b, 0xc7, 0x75, 0x4e, 0x95, 0x46, 0x95, + 0xb1, 0x37, 0x3c, 0x83, 0x68, 0xa8, 0xe9, 0xc7, 0x5f, 0x28, 0x2a, 0x86, 0xda, 0xc2, 0x24, 0xa3, + 0x1e, 0x01, 0x00, 0xa4, 0xb1, 0x48, 0x87, 0x20, 0x95, 0xf2, 0x29, 0x46, 0x0f, 0x92, 0x3a, 0x4c, + 0xfc, 0x1b, 0xbe, 0xb4, 0x1e, 0x0f, 0x61, 0x9d, 0x77, 0x83, 0xd7, 0x5d, 0x16, 0x39, 0x52, 0xb5, + 0xcf, 0x70, 0xc3, 0x70, 0xb6, 0xea, 0xd4, 0xb9, 0x34, 0x89, 0xcc, 0x4b, 0x73, 0x2f, 0xe6, 0xcb, + 0x92, 0x96, 0x66, 0x5f, 0x69, 0x80, 0x5f, 0x55, 0xc7, 0x18, 0xd4, 0x6c, 0x76, 0x59, 0x76, 0x16, + 0x54, 0x65, 0xcc, 0xa6, 0xbf, 0x2c, 0xdb, 0xa0, 0x0f, 0xcc, 0x4d, 0xd5, 0xa0, 0x99, 0x9e, 0xf9, + 0x6f, 0x23, 0x2b, 0xa9, 0x41, 0x66, 0x8a, 0xbe, 0x71, 0xd9, 0x52, 0x67, 0x7d, 0xbd, 0xb3, 0xc4, + 0xdc, 0xd9, 0x5d, 0x5f, 0xef, 0x2e, 0xc9, 0x02, 0x89, 0xd3, 0x5a, 0x6a, 0x8a, 0x62, 0x12, 0x71, + 0xa4, 0xe1, 0x88, 0xa5, 0x31, 0xd2, 0x76, 0x24, 0x37, 0xd2, 0x3c, 0xd7, 0x33, 0x9d, 0x39, 0x4e, + 0x54, 0xd6, 0x3c, 0x7a, 0xe0, 0x64, 0x64, 0x65, 0x29, 0x05, 0x18, 0x40, 0x01, 0x35, 0xfd, 0xcf, + 0xba, 0xba, 0x61, 0xd0, 0x86, 0xcc, 0xd0, 0xc4, 0xe1, 0x99, 0x0c, 0xd3, 0x8a, 0x81, 0x44, 0xf0, + 0x10, 0x08, 0x8a, 0xa1, 0xd5, 0xd2, 0x5c, 0x5f, 0x37, 0x97, 0x0f, 0x96, 0x0b, 0x17, 0xea, 0xdb, + 0x1a, 0xc2, 0x0a, 0xdc, 0x2f, 0xaa, 0xc0, 0xfd, 0xe0, 0xa4, 0xd8, 0xe0, 0xe3, 0x1b, 0x73, 0xf1, + 0x27, 0xeb, 0xd2, 0x61, 0x42, 0x83, 0xbd, 0x44, 0xfd, 0xa3, 0x7b, 0xaf, 0xbb, 0xd9, 0xdc, 0x90, + 0xa9, 0x23, 0xe9, 0x21, 0xd0, 0xa9, 0x07, 0x27, 0x34, 0xa4, 0xd3, 0x30, 0x9e, 0xbe, 0xbd, 0xeb, + 0xff, 0xfd, 0x3f, 0xfe, 0x2f, 0x34, 0x77, 0x6d, 0xeb, 0x4b, 0xc1, 0xaf, 0xea, 0xcb, 0xae, 0x5e, + 0x31, 0x83, 0xa2, 0x89, 0x57, 0x8f, 0x57, 0xdc, 0xe1, 0xf2, 0x00, 0x70, 0xcc, 0x5f, 0x21, 0x1b, + 0x3b, 0x65, 0x67, 0x26, 0x08, 0xda, 0xec, 0xfe, 0x71, 0x92, 0x9a, 0xe3, 0xf4, 0xad, 0xec, 0xb6, + 0x59, 0xc7, 0xf8, 0x4a, 0x20, 0xc4, 0xd9, 0x62, 0x15, 0xdd, 0x04, 0xb1, 0xfd, 0xba, 0x98, 0xa5, + 0x1e, 0x1b, 0xb0, 0x3a, 0x61, 0x2b, 0xf9, 0x12, 0x1a, 0x59, 0xdf, 0x82, 0x96, 0x19, 0x67, 0xef, + 0xc7, 0x2f, 0x79, 0x5a, 0xc2, 0x23, 0x83, 0xd1, 0x12, 0xc6, 0x61, 0x76, 0xfc, 0x32, 0x68, 0x02, + 0xc3, 0x5b, 0x03, 0xfd, 0xba, 0x7b, 0x3b, 0xac, 0xc7, 0xd8, 0x7f, 0x87, 0xc0, 0x8e, 0xa6, 0x67, + 0x12, 0xfd, 0xd4, 0x08, 0xb4, 0x54, 0xf7, 0x63, 0x02, 0x3d, 0x7a, 0x92, 0xb0, 0x95, 0xfd, 0xfd, + 0x7b, 0xb4, 0x25, 0xe3, 0xb3, 0x09, 0x02, 0x84, 0x00, 0xea, 0x43, 0x6f, 0x2e, 0x8c, 0x55, 0xcb, + 0x19, 0x29, 0x5a, 0x12, 0x74, 0x27, 0x6a, 0xcf, 0xf7, 0xd6, 0x32, 0x2b, 0x25, 0x0a, 0x3f, 0xf0, + 0x26, 0xa9, 0xf9, 0x33, 0x82, 0x29, 0xa0, 0xc3, 0x50, 0x24, 0x22, 0x33, 0xca, 0x21, 0xf1, 0x2e, + 0x29, 0x13, 0x20, 0x6b, 0xc4, 0x0b, 0x21, 0x87, 0xb7, 0x4e, 0xc5, 0x64, 0xd8, 0x76, 0x44, 0x92, + 0xb1, 0xf1, 0xb9, 0x3c, 0x67, 0xc8, 0x24, 0x57, 0x1b, 0xaf, 0xc9, 0xff, 0xd5, 0xda, 0x30, 0x5f, + 0xa1, 0x2f, 0xc0, 0xe0, 0x3d, 0xff, 0x70, 0x1c, 0xa7, 0x50, 0xf6, 0xdc, 0xf8, 0x45, 0x23, 0x56, + 0x3a, 0x51, 0x62, 0x09, 0x9a, 0x94, 0x12, 0xcb, 0xea, 0xbe, 0x6a, 0xed, 0x5f, 0x34, 0xa2, 0xe4, + 0xf2, 0xca, 0xf3, 0x28, 0x9a, 0x30, 0x82, 0xc1, 0x8c, 0xbb, 0xa3, 0x79, 0x69, 0x4c, 0x88, 0xe5, + 0x19, 0xbd, 0x71, 0xaf, 0xaa, 0xe3, 0xe7, 0x76, 0xb6, 0xbd, 0x50, 0x79, 0x18, 0xba, 0x8b, 0xbf, + 0xd1, 0xa9, 0x85, 0x8a, 0xea, 0x5a, 0x63, 0x59, 0xc9, 0xd6, 0x9b, 0xde, 0x09, 0x95, 0xf5, 0xbe, + 0xcc, 0x13, 0xaa, 0xc0, 0x60, 0x6a, 0xf9, 0xeb, 0xda, 0x0f, 0xb4, 0xd0, 0x0a, 0x3e, 0xad, 0x83, + 0xd6, 0x95, 0x04, 0xf7, 0xa9, 0x9d, 0xc5, 0x13, 0x31, 0x77, 0xff, 0xdc, 0xc1, 0x03, 0xa5, 0xa5, + 0xb9, 0x2d, 0x93, 0x20, 0x42, 0x96, 0xe6, 0x1f, 0x79, 0x5f, 0x97, 0x5f, 0x51, 0xa6, 0x99, 0x5d, + 0x95, 0x99, 0x5b, 0x95, 0x99, 0xc7, 0x4c, 0xef, 0x5b, 0x09, 0x89, 0x25, 0xa5, 0xae, 0x57, 0xb4, + 0x70, 0xb0, 0x22, 0x6f, 0x87, 0x86, 0x2e, 0x08, 0x3e, 0xc0, 0xb0, 0xa4, 0xd8, 0xbd, 0x98, 0xe4, + 0x3f, 0x88, 0xc0, 0xc5, 0xa1, 0x67, 0xb6, 0xc4, 0x09, 0xde, 0x54, 0x59, 0x38, 0xbf, 0xf2, 0x9a, + 0x8d, 0x9e, 0x5e, 0xb1, 0x2a, 0x6d, 0x45, 0x8b, 0xab, 0xd1, 0x6c, 0xde, 0xc4, 0x96, 0x1f, 0x90, + 0xe9, 0x64, 0xa1, 0x3c, 0xc1, 0x18, 0xff, 0xb1, 0xc5, 0xd9, 0x87, 0x7f, 0xe2, 0x3a, 0xa0, 0x78, + 0x04, 0xc1, 0x8b, 0x16, 0x88, 0xef, 0x6a, 0xd9, 0x68, 0xd8, 0xe7, 0x2a, 0x56, 0xd6, 0xb5, 0xff, + 0x8d, 0xba, 0xe3, 0x15, 0x75, 0x63, 0x2b, 0xbc, 0xac, 0xee, 0x6c, 0x05, 0x36, 0xad, 0x7e, 0x7b, + 0x65, 0x5d, 0x82, 0xdf, 0x17, 0x88, 0xad, 0xf9, 0xda, 0xb1, 0x37, 0x26, 0x2b, 0xea, 0xd1, 0x0f, + 0x2c, 0x45, 0x6b, 0x72, 0x97, 0xf6, 0xdd, 0x47, 0x1a, 0xdb, 0xd2, 0xb2, 0x13, 0x0b, 0xf2, 0x6a, + 0x74, 0xfd, 0x86, 0xa2, 0xd9, 0x05, 0x46, 0x6b, 0x69, 0x71, 0xe3, 0xfe, 0xc5, 0xc2, 0x93, 0x32, + 0x63, 0x90, 0x67, 0xa2, 0xfe, 0xf9, 0xc3, 0xb7, 0x14, 0x11, 0xb6, 0xf7, 0xdb, 0x74, 0xcb, 0xe6, + 0xcf, 0xd6, 0x99, 0xf9, 0x70, 0x51, 0x0e, 0xe0, 0x98, 0x33, 0x7e, 0x43, 0x68, 0x25, 0xfb, 0x96, + 0x9c, 0x0f, 0x85, 0x10, 0xd6, 0x3f, 0x32, 0xdd, 0xcf, 0x95, 0x5c, 0xce, 0x9b, 0x39, 0x71, 0x3a, + 0x6a, 0xf0, 0xc4, 0xdb, 0xcf, 0x28, 0x4a, 0x91, 0xef, 0xa5, 0xa4, 0x16, 0xd6, 0x19, 0x22, 0x32, + 0x1f, 0xd9, 0xca, 0xad, 0xaf, 0xd3, 0x78, 0x20, 0x2b, 0x8a, 0xe4, 0xb1, 0x48, 0xee, 0xe7, 0x6a, + 0xd1, 0x53, 0x08, 0xdd, 0xa0, 0xd4, 0x92, 0x62, 0x96, 0x1a, 0x8c, 0x3c, 0xab, 0x29, 0x96, 0x44, + 0xca, 0xf8, 0xe0, 0x74, 0x74, 0x91, 0xa3, 0xf3, 0xf1, 0xe7, 0x3c, 0x51, 0x4f, 0x42, 0x4d, 0x77, + 0xc5, 0xbc, 0xf7, 0xa6, 0xfc, 0x94, 0x47, 0xe5, 0x3e, 0x0c, 0x8c, 0xe0, 0x2c, 0xcc, 0xbd, 0xbd, + 0xd0, 0x64, 0x68, 0xee, 0x5d, 0x82, 0x59, 0x35, 0xf9, 0x5e, 0x90, 0x53, 0xf6, 0x31, 0x47, 0x16, + 0xc2, 0xc8, 0xbf, 0x08, 0xff, 0x37, 0x84, 0x53, 0x3d, 0x39, 0xd3, 0x57, 0xec, 0xeb, 0x18, 0x10, + 0x83, 0x9e, 0x21, 0x5f, 0x2a, 0x16, 0x8c, 0xda, 0xc1, 0x85, 0x14, 0xb4, 0xe2, 0xa9, 0xcd, 0x24, + 0xe6, 0x58, 0x84, 0x3f, 0x0d, 0x61, 0x26, 0x7f, 0x77, 0xce, 0xa8, 0x82, 0x18, 0xcc, 0x99, 0x61, + 0x3a, 0xe1, 0x78, 0x32, 0xfc, 0x17, 0x8d, 0x20, 0x93, 0x3b, 0x6b, 0xad, 0x11, 0xee, 0x20, 0x84, + 0x1e, 0x6c, 0x82, 0xbc, 0xe7, 0x7e, 0xf7, 0xee, 0xf7, 0xef, 0xac, 0xff, 0x0c, 0x19, 0x5f, 0xf0, + 0x44, 0x14, 0x03, 0xec, 0xe6, 0x7f, 0x06, 0x32, 0xb3, 0x4c, 0x0f, 0x88, 0x7f, 0xff, 0x66, 0x3e, + 0x1a, 0x98, 0xc7, 0xfe, 0x06, 0x25, 0x60, 0x7b, 0xdc, 0xaa, 0xcb, 0xd1, 0xd4, 0x2c, 0x95, 0xb4, + 0x97, 0x90, 0x55, 0x95, 0x2c, 0x8f, 0xad, 0xe0, 0x6a, 0xfe, 0xfa, 0xe7, 0xe4, 0x7e, 0xa3, 0x1e, + 0xf1, 0xf3, 0x59, 0x0c, 0x8b, 0xdc, 0x55, 0xc7, 0x3f, 0xa2, 0x97, 0xbb, 0xbc, 0xc0, 0xc8, 0x1c, + 0x92, 0x8d, 0xa4, 0xb2, 0xa8, 0x29, 0x2c, 0x87, 0xb3, 0xba, 0x64, 0x68, 0xb5, 0xbf, 0x02, 0x91, + 0x77, 0xc1, 0xe9, 0x43, 0x70, 0xfe, 0xcf, 0xff, 0x1b, 0xc1, 0x59, 0x5f, 0x0f, 0xa5, 0xfd, 0x3f, + 0x7f, 0x13, 0xc5, 0x9c, 0xec, 0xe8, 0x6e, 0x10, 0xd7, 0x18, 0xeb, 0x8f, 0x99, 0x86, 0xd9, 0xfe, + 0x43, 0xbf, 0x13, 0xba, 0x18, 0xda, 0xc4, 0x8b, 0x40, 0x42, 0xbd, 0x3d, 0x40, 0xbe, 0x40, 0xbe, + 0xe1, 0xde, 0x79, 0x01, 0x48, 0x44, 0x5a, 0x10, 0xad, 0x69, 0x8f, 0x09, 0xd9, 0x9c, 0x26, 0x69, + 0x04, 0x01, 0x3f, 0x05, 0xbf, 0x51, 0x9a, 0x14, 0xfd, 0x15, 0xad, 0xa9, 0xe6, 0x36, 0xfd, 0x8b, + 0x21, 0x67, 0xfd, 0x43, 0x7e, 0xf4, 0x3e, 0xb2, 0x41, 0x57, 0xc0, 0xfb, 0x23, 0x82, 0x98, 0xb2, + 0x5d, 0x1f, 0x1c, 0x2d, 0x7c, 0x29, 0xfc, 0x17, 0xfb, 0xca, 0x2b, 0xfd, 0x58, 0x26, 0x51, 0x69, + 0x20, 0x43, 0x84, 0x02, 0x63, 0x43, 0xa6, 0xb5, 0xe1, 0x9c, 0x1e, 0x90, 0xe0, 0xc9, 0x80, 0x6b, + 0x97, 0x0c, 0x3e, 0x7f, 0xb9, 0x28, 0xa0, 0xb0, 0xf1, 0xd0, 0xc1, 0x44, 0x76, 0x45, 0x2e, 0xde, + 0xe6, 0xd0, 0xbc, 0x64, 0xc8, 0x41, 0x25, 0xc0, 0x13, 0xb0, 0xd8, 0x77, 0x04, 0x61, 0x61, 0xd0, + 0x13, 0x70, 0xdd, 0x0f, 0x03, 0xe8, 0x07, 0xf2, 0xc5, 0xe3, 0xe5, 0xad, 0xc0, 0x2b, 0x87, 0x86, + 0x79, 0x62, 0x13, 0x0c, 0xe3, 0xa7, 0x75, 0xc2, 0xf7, 0x61, 0x40, 0x87, 0x75, 0x62, 0x92, 0x6b, + 0xd3, 0xba, 0xbd, 0x55, 0xd8, 0x5c, 0x5f, 0xb7, 0xbf, 0x17, 0xcb, 0xbf, 0x7f, 0xdb, 0x5b, 0xa5, + 0x02, 0x3e, 0x57, 0xb2, 0xf8, 0x5c, 0x29, 0xe1, 0x73, 0x36, 0x97, 0xc7, 0x97, 0x5c, 0xb1, 0xb8, + 0x2d, 0xd6, 0x01, 0xfe, 0x2d, 0x51, 0x7a, 0xab, 0xeb, 0xb4, 0x92, 0x4e, 0x2b, 0xe9, 0xb4, 0x92, + 0x4e, 0x2b, 0xe9, 0xb4, 0x92, 0xce, 0x2a, 0xe9, 0x7c, 0x25, 0x37, 0xe0, 0x69, 0x22, 0x41, 0xa1, + 0xf3, 0x82, 0xab, 0x6e, 0x8b, 0xdf, 0xc5, 0xea, 0x34, 0x99, 0x72, 0x87, 0x19, 0x31, 0xfb, 0xd3, + 0xc3, 0xcc, 0x70, 0xd9, 0xb7, 0x64, 0x8a, 0x8d, 0x83, 0x85, 0x3c, 0x94, 0xa5, 0x99, 0xce, 0x3c, + 0x35, 0xaa, 0x5f, 0x64, 0xde, 0x72, 0x3a, 0x54, 0x5e, 0xc8, 0x7d, 0x2b, 0x41, 0xb1, 0x3a, 0xb1, + 0x7f, 0xff, 0xf6, 0xcf, 0xca, 0x27, 0xf6, 0x77, 0x99, 0xb7, 0x9e, 0x12, 0x0c, 0x25, 0xba, 0xed, + 0x5b, 0x8c, 0x27, 0x18, 0x7a, 0xc6, 0x22, 0xf4, 0x0a, 0x46, 0x82, 0x7e, 0x5a, 0x40, 0x94, 0xc4, + 0xff, 0xaf, 0xb8, 0x2b, 0x7f, 0x6e, 0xdb, 0xc8, 0xd2, 0xbf, 0xef, 0x5f, 0x41, 0x21, 0x89, 0x05, + 0x44, 0x90, 0x0c, 0x52, 0x96, 0xc7, 0x01, 0x05, 0xb1, 0x1c, 0x1f, 0x3b, 0xaa, 0x71, 0x1c, 0x6d, + 0xe4, 0x49, 0xc6, 0xe5, 0x52, 0xad, 0x48, 0xaa, 0x29, 0xb1, 0x0c, 0x01, 0x0c, 0x00, 0x1d, 0x0e, + 0xc5, 0xff, 0x7d, 0xdf, 0xd1, 0x27, 0x00, 0x1e, 0x8a, 0x33, 0xb3, 0x55, 0x89, 0x45, 0x34, 0xba, + 0x1b, 0xaf, 0xef, 0x7e, 0xaf, 0x5f, 0x7f, 0xdf, 0x1d, 0xc1, 0x11, 0xdf, 0x21, 0xd9, 0x88, 0xb7, + 0x53, 0xa3, 0x73, 0x30, 0x74, 0x06, 0x94, 0xb8, 0x0f, 0x5f, 0x23, 0x46, 0x90, 0xdf, 0xc4, 0xe8, + 0x14, 0x1a, 0x5c, 0x10, 0x31, 0xde, 0xde, 0x68, 0x9a, 0x0d, 0x8b, 0x2f, 0x1f, 0xe8, 0x14, 0x8b, + 0xf0, 0xf1, 0x47, 0x37, 0x30, 0x89, 0x17, 0x5e, 0x78, 0x57, 0xee, 0x21, 0xa0, 0x41, 0x59, 0xa2, + 0x61, 0x12, 0xad, 0xc1, 0x38, 0x17, 0x4b, 0xae, 0x34, 0x6d, 0x1f, 0x87, 0x11, 0x4b, 0x87, 0xaf, + 0x3f, 0x52, 0x22, 0xcd, 0xa5, 0x61, 0x01, 0x94, 0x71, 0x82, 0x80, 0xcf, 0x91, 0x09, 0xb6, 0x21, + 0x98, 0x3b, 0xf8, 0xd3, 0x16, 0xf0, 0x5c, 0x10, 0x5a, 0x0f, 0xcc, 0xf5, 0x61, 0xb1, 0x8d, 0x2a, + 0x36, 0x93, 0xb0, 0x6e, 0xd1, 0x56, 0xb0, 0xf1, 0x9b, 0x42, 0x8b, 0xa7, 0x7a, 0x3c, 0xc2, 0xe2, + 0x80, 0x00, 0x06, 0xe5, 0xc0, 0x37, 0xf0, 0x4b, 0x30, 0xf8, 0x98, 0x8a, 0xf5, 0xc9, 0x13, 0x07, + 0x6e, 0xa6, 0x0c, 0x82, 0xd8, 0x02, 0x3d, 0x50, 0xdb, 0x33, 0x82, 0xfb, 0x1c, 0xc8, 0xbf, 0x71, + 0xd5, 0x77, 0xa6, 0x96, 0x32, 0xcc, 0x10, 0x20, 0x7f, 0x78, 0x71, 0x4a, 0x98, 0x46, 0x19, 0xcc, + 0x41, 0x0b, 0xae, 0x58, 0x22, 0x83, 0xa6, 0x6a, 0x7d, 0x34, 0x2c, 0x3a, 0x93, 0x93, 0xee, 0xec, + 0x1c, 0x1e, 0x38, 0x68, 0x94, 0xdc, 0xaf, 0xc2, 0xee, 0x01, 0xda, 0xf7, 0xef, 0x98, 0x2a, 0x45, + 0x7e, 0x0c, 0x51, 0xe1, 0xe9, 0x5b, 0x8a, 0xd6, 0xb4, 0x10, 0xbf, 0x97, 0xef, 0xc4, 0xe5, 0x30, + 0x85, 0xdd, 0x86, 0xe3, 0xc8, 0xa0, 0x24, 0x55, 0xb8, 0xed, 0xb4, 0xfe, 0xca, 0x4e, 0xc9, 0x67, + 0xee, 0x62, 0xaf, 0xbc, 0x19, 0x8f, 0xa1, 0x5b, 0xa8, 0xd0, 0xa8, 0x4f, 0x84, 0xb6, 0xe8, 0xfe, + 0x1c, 0xd6, 0xb5, 0x57, 0x69, 0xaa, 0x14, 0x78, 0x45, 0x9f, 0xf8, 0x6e, 0xc5, 0x5e, 0x96, 0x62, + 0x44, 0x26, 0xa7, 0xa5, 0xa7, 0x8b, 0x9b, 0x42, 0x52, 0xd4, 0xd2, 0x63, 0xc5, 0x51, 0xdf, 0x0e, + 0x11, 0xa9, 0x1e, 0x03, 0x26, 0xf0, 0xcb, 0xf0, 0xe0, 0x8a, 0xbd, 0x9b, 0x8b, 0x19, 0xde, 0xac, + 0xcb, 0x2e, 0x6a, 0xd4, 0xb4, 0xa0, 0xc4, 0xa4, 0xb4, 0x2e, 0xcc, 0xca, 0x18, 0x7f, 0x23, 0x93, + 0xac, 0x9c, 0xc4, 0x89, 0xda, 0x9a, 0x85, 0xab, 0x2a, 0x2d, 0x55, 0x55, 0x3c, 0xed, 0x46, 0x61, + 0x0b, 0xd0, 0x85, 0xec, 0x1c, 0x11, 0xcc, 0x4c, 0x91, 0x24, 0x39, 0xd4, 0x5a, 0x63, 0x62, 0x08, + 0x76, 0x35, 0x8b, 0x6e, 0xcd, 0x2b, 0xce, 0x37, 0x08, 0x17, 0xb6, 0x7f, 0x1c, 0xd4, 0x5d, 0x44, + 0x96, 0x2e, 0x7a, 0xfd, 0xa9, 0x3a, 0x43, 0xce, 0x18, 0x73, 0x81, 0x95, 0x56, 0x00, 0x34, 0xe8, + 0x75, 0x19, 0xc5, 0x98, 0x62, 0xc0, 0xf6, 0x09, 0xf6, 0x5c, 0x87, 0xbc, 0x3c, 0x54, 0x38, 0x55, + 0xf6, 0xe4, 0x36, 0xca, 0xa1, 0xa5, 0x23, 0xc3, 0xe6, 0xf8, 0x93, 0x95, 0xf1, 0x99, 0x94, 0xfb, + 0x21, 0xd9, 0xda, 0xf2, 0xbb, 0x4f, 0x52, 0xa3, 0x4d, 0x53, 0x48, 0x4f, 0x86, 0x40, 0x49, 0xe8, + 0xf9, 0xd9, 0x13, 0x8d, 0x9b, 0xe1, 0x9b, 0x8f, 0x57, 0xf9, 0x6c, 0xd7, 0x7a, 0x1a, 0x16, 0x55, + 0xf0, 0xbd, 0xfb, 0xfa, 0xe3, 0xc0, 0x7d, 0xac, 0x45, 0xff, 0x18, 0x77, 0x61, 0xa3, 0x2a, 0xab, + 0x49, 0xfe, 0x3d, 0x1c, 0x0e, 0x86, 0xb1, 0xfc, 0xad, 0x4f, 0x3b, 0x30, 0x51, 0x49, 0xa7, 0x3e, + 0x68, 0x0c, 0x44, 0x67, 0xbb, 0xb6, 0xf2, 0x0d, 0xad, 0x82, 0x35, 0xca, 0x55, 0x2b, 0x96, 0x2a, + 0xd5, 0x02, 0x7b, 0xf0, 0x50, 0xad, 0x52, 0xd6, 0x49, 0xda, 0xfb, 0xbc, 0xa3, 0x9a, 0x5c, 0x1e, + 0x9e, 0x19, 0x83, 0x12, 0x3c, 0x12, 0xa8, 0xf4, 0xa5, 0xb5, 0x3e, 0xb7, 0xb9, 0xf3, 0xec, 0x41, + 0xe7, 0x81, 0xee, 0x04, 0xcd, 0xff, 0x66, 0x28, 0x8f, 0xcc, 0x56, 0x6c, 0x3f, 0x14, 0x56, 0x53, + 0x9b, 0x82, 0x64, 0x9c, 0x60, 0x72, 0xf9, 0xcd, 0xdd, 0x6e, 0x5f, 0x1c, 0xa1, 0x4b, 0xcc, 0xee, + 0x6e, 0x90, 0x3b, 0x4e, 0x22, 0xc9, 0x10, 0xad, 0x1c, 0x10, 0x44, 0xe4, 0x4f, 0x8e, 0x93, 0x88, + 0x79, 0xd5, 0xad, 0xbd, 0x1a, 0x99, 0x57, 0xbd, 0xb3, 0xd0, 0xd7, 0xbd, 0xe1, 0x61, 0xab, 0x41, + 0x78, 0x49, 0x48, 0x51, 0x76, 0xda, 0x3b, 0x93, 0x16, 0xd9, 0xa2, 0x24, 0xa9, 0x68, 0x4e, 0x60, + 0xe1, 0xe4, 0x43, 0xad, 0x69, 0x4b, 0x90, 0x33, 0x5a, 0x99, 0x6f, 0x21, 0xcd, 0xb8, 0xc2, 0xad, + 0x1b, 0xfc, 0xa1, 0x8d, 0xb2, 0x6d, 0xba, 0x79, 0xa9, 0x47, 0x21, 0xbd, 0x0f, 0xc2, 0xa6, 0x65, + 0x4b, 0xbf, 0x2f, 0xef, 0xc3, 0x76, 0xbb, 0x96, 0x8e, 0x31, 0x75, 0x62, 0xa0, 0x55, 0xcb, 0x64, + 0xde, 0x1d, 0xe0, 0x3f, 0x71, 0x14, 0xd6, 0x4c, 0x5b, 0x26, 0x46, 0x0f, 0x63, 0xf4, 0x6a, 0x31, + 0xf6, 0xed, 0x18, 0xfb, 0x18, 0x63, 0x5f, 0xc5, 0x20, 0x45, 0xed, 0xe7, 0xae, 0xed, 0x4d, 0xbe, + 0x35, 0xdc, 0xcb, 0xbb, 0xf6, 0xdb, 0x5e, 0xfd, 0x6d, 0xcf, 0x7e, 0xbb, 0x5f, 0x7f, 0xbb, 0x0f, + 0x43, 0x9e, 0x78, 0x13, 0x08, 0xd2, 0x50, 0xfe, 0xe6, 0xc5, 0x74, 0x8a, 0xde, 0x82, 0xca, 0x6f, + 0x43, 0xbd, 0x60, 0x07, 0x8a, 0x08, 0x91, 0x63, 0xcc, 0x89, 0xf0, 0x35, 0x9e, 0xe4, 0x74, 0x26, + 0x1a, 0xe0, 0x68, 0xcb, 0x81, 0x99, 0xe9, 0x12, 0x3e, 0x0d, 0x42, 0x9e, 0x89, 0x2c, 0xbf, 0xb9, + 0xbc, 0xea, 0x94, 0x33, 0xd8, 0x48, 0x20, 0x9e, 0x74, 0x89, 0x38, 0xde, 0x0c, 0x68, 0x58, 0x4b, + 0x42, 0xb0, 0x35, 0x12, 0xe7, 0x1e, 0xbf, 0x20, 0xcf, 0xcf, 0x9d, 0x38, 0x04, 0x5f, 0xf3, 0xd3, + 0x94, 0x49, 0xea, 0xa7, 0x05, 0xb3, 0xe8, 0xb8, 0x51, 0x7e, 0xc0, 0x28, 0x2f, 0x2d, 0xc9, 0x3a, + 0x54, 0x8c, 0x0e, 0x74, 0xb8, 0x4e, 0x3e, 0x86, 0x59, 0x1c, 0x8f, 0xee, 0x17, 0xd6, 0xd8, 0xa4, + 0xb5, 0x9d, 0xd0, 0x93, 0x28, 0xe2, 0x8e, 0x17, 0xc3, 0xc3, 0x94, 0x8e, 0xa0, 0xd5, 0x40, 0xb6, + 0xa8, 0xca, 0x87, 0xb0, 0xd3, 0x48, 0x6d, 0x26, 0xf3, 0xe1, 0xde, 0xe4, 0x3e, 0xac, 0x39, 0xe5, + 0xb9, 0xa3, 0xdb, 0x61, 0xc8, 0x6d, 0x28, 0xad, 0xf2, 0x60, 0x72, 0x53, 0xd7, 0x60, 0xf7, 0xc4, + 0xb2, 0xee, 0x22, 0x1c, 0x96, 0x26, 0x88, 0xfc, 0x4e, 0x90, 0x81, 0xe2, 0xd3, 0x59, 0x5c, 0xda, + 0x8e, 0xc1, 0xe4, 0x5c, 0x9c, 0xc9, 0x14, 0xec, 0xb0, 0x8b, 0x48, 0x95, 0x18, 0x0f, 0xff, 0x5a, + 0x8e, 0xc1, 0xe1, 0x50, 0xc7, 0x3b, 0xec, 0xa9, 0x98, 0x5d, 0x19, 0xb3, 0xeb, 0xc4, 0xcc, 0x4d, + 0xcc, 0x7d, 0x15, 0xb3, 0x27, 0x63, 0xba, 0xce, 0xc6, 0xda, 0xa1, 0x1a, 0xe6, 0x1b, 0xd8, 0x6e, + 0xf7, 0x4b, 0xf4, 0xbd, 0xe3, 0xce, 0x67, 0x8d, 0x09, 0xd2, 0x4b, 0x0a, 0x3b, 0x84, 0x98, 0x45, + 0x31, 0xb8, 0xbf, 0x55, 0xe1, 0x86, 0xdc, 0x17, 0xb0, 0xbd, 0x7e, 0x31, 0xe8, 0xc5, 0x07, 0xa0, + 0x39, 0xa7, 0xaa, 0x86, 0x4a, 0xf6, 0x60, 0x4e, 0x61, 0x86, 0x1f, 0xf8, 0x4e, 0xe8, 0x96, 0x0a, + 0x2e, 0x2c, 0x2d, 0x07, 0x03, 0x62, 0x3b, 0x20, 0x22, 0xce, 0x0e, 0x6e, 0x25, 0xe8, 0xb5, 0x38, + 0x39, 0xc4, 0x5d, 0x3b, 0x6c, 0xaa, 0xa7, 0x84, 0xd8, 0x63, 0x97, 0x4f, 0x6f, 0xc7, 0x2f, 0x77, + 0x61, 0x21, 0x9d, 0xae, 0xc0, 0x32, 0x9c, 0x2e, 0x31, 0xfd, 0x40, 0xd3, 0x6b, 0x21, 0x0f, 0xa4, + 0x62, 0x38, 0xb9, 0xcf, 0x67, 0x55, 0xab, 0xdb, 0x3d, 0xee, 0x4e, 0xac, 0x1a, 0x64, 0x27, 0xc6, + 0x7d, 0xf2, 0x5e, 0x3c, 0xd8, 0x11, 0x87, 0xa9, 0x76, 0x8f, 0x24, 0x27, 0xee, 0xf4, 0x13, 0x04, + 0x9e, 0x49, 0x00, 0x47, 0xcc, 0x72, 0x47, 0xac, 0xbb, 0x87, 0x01, 0xb1, 0x64, 0x35, 0x0b, 0x5b, + 0x17, 0x84, 0xba, 0xd3, 0xd9, 0x79, 0x3f, 0xd3, 0x9d, 0x02, 0x2f, 0xe6, 0x67, 0xd8, 0xa0, 0x8d, + 0xca, 0xaa, 0xf0, 0xa3, 0xb0, 0xfb, 0x1c, 0xca, 0xb9, 0xe4, 0x5b, 0x76, 0x91, 0xcd, 0xa5, 0x81, + 0x66, 0x41, 0x29, 0x9e, 0x2a, 0xa5, 0x56, 0x0d, 0xb5, 0x97, 0xab, 0x39, 0x67, 0xab, 0xbb, 0x68, + 0x58, 0xfd, 0xa4, 0x44, 0xe2, 0x03, 0x46, 0x03, 0x0c, 0xf0, 0xde, 0xc3, 0x41, 0x5f, 0x39, 0x02, + 0xd7, 0x8c, 0x1d, 0xdf, 0xb0, 0x41, 0xad, 0x63, 0x1b, 0xba, 0xd8, 0x3a, 0xe6, 0x58, 0xb2, 0x40, + 0xa3, 0x41, 0x9e, 0xe0, 0x05, 0x88, 0x81, 0xab, 0x11, 0x2e, 0x09, 0x05, 0x4c, 0xd6, 0xfe, 0x38, + 0xfc, 0xdb, 0x81, 0xb4, 0x9e, 0xcd, 0xd0, 0xc3, 0xeb, 0x12, 0xff, 0xb9, 0x81, 0x8d, 0xdc, 0x24, + 0xc1, 0x95, 0xa9, 0xd6, 0x4a, 0x2d, 0xeb, 0xb0, 0xe3, 0x7c, 0x8a, 0xd9, 0xdc, 0x9a, 0xd5, 0x1a, + 0xaa, 0xaf, 0x4f, 0xbe, 0x5d, 0x6a, 0xe0, 0x73, 0x9b, 0xe2, 0xb8, 0xa6, 0xf9, 0xe2, 0x76, 0x79, + 0x43, 0xde, 0x3a, 0x56, 0x47, 0x90, 0x87, 0x7a, 0x3e, 0xa7, 0xc4, 0xaf, 0x5c, 0xd1, 0x6f, 0xd3, + 0x6e, 0xe8, 0x63, 0x62, 0xb5, 0xf5, 0x55, 0x78, 0xc5, 0xb1, 0xf9, 0x48, 0xf1, 0x12, 0xaf, 0xb5, + 0x26, 0xde, 0x0e, 0xcd, 0x28, 0x97, 0x4c, 0x27, 0xc3, 0x4d, 0x78, 0xeb, 0x8e, 0x1a, 0x31, 0xf0, + 0xde, 0xde, 0xd3, 0x58, 0x81, 0x5f, 0x3f, 0x5e, 0xe2, 0xe8, 0x28, 0x09, 0x59, 0x69, 0xb2, 0x85, + 0x00, 0xe3, 0xd6, 0xba, 0x8d, 0x47, 0xa6, 0xe8, 0x65, 0x85, 0x99, 0x54, 0x03, 0xa7, 0x28, 0xf6, + 0x51, 0x6f, 0xad, 0x1c, 0xdd, 0xd0, 0xfe, 0xa0, 0x07, 0x83, 0x4e, 0xec, 0x74, 0x11, 0x25, 0xf4, + 0x31, 0x55, 0xd1, 0x96, 0x45, 0xb8, 0x5c, 0xc6, 0x60, 0xa1, 0x1a, 0xe4, 0x5d, 0x03, 0x02, 0x77, + 0x46, 0x2d, 0x7f, 0xad, 0x6d, 0xf2, 0xc8, 0x50, 0x34, 0x32, 0x16, 0x7a, 0x3e, 0xcd, 0xd4, 0x67, + 0x56, 0x48, 0x89, 0x95, 0xd7, 0x6e, 0x59, 0xe4, 0x74, 0xc9, 0x82, 0xcf, 0x7c, 0xf1, 0x77, 0xc0, + 0x80, 0xd6, 0xd7, 0x35, 0xfb, 0x89, 0x37, 0xcd, 0xd0, 0xf9, 0x67, 0x97, 0x0d, 0x27, 0xa1, 0x9d, + 0x0b, 0xa6, 0x32, 0xc6, 0xaa, 0xc4, 0x0b, 0xd4, 0x81, 0xe9, 0x71, 0xd2, 0x78, 0xd5, 0xa7, 0x03, + 0x67, 0xd8, 0x07, 0x43, 0x93, 0xf3, 0xcf, 0x69, 0x86, 0x8e, 0xe6, 0xa1, 0x1e, 0x54, 0x94, 0x44, + 0x76, 0x8b, 0x63, 0xac, 0xdb, 0x20, 0xe8, 0x63, 0x58, 0x62, 0xbd, 0x80, 0x75, 0x17, 0xd2, 0x1f, + 0x07, 0x0b, 0xa7, 0x30, 0x5b, 0xb2, 0x34, 0x83, 0x91, 0x55, 0x41, 0x18, 0x10, 0xdb, 0x01, 0xdb, + 0x0d, 0x14, 0x39, 0x91, 0xca, 0x0b, 0xb7, 0x36, 0x3e, 0x06, 0xb1, 0x5b, 0xcb, 0xeb, 0x91, 0xa3, + 0x7d, 0xf2, 0x38, 0xec, 0x90, 0x5e, 0xda, 0x91, 0x07, 0x1a, 0xdb, 0xdc, 0x75, 0xfe, 0x1d, 0x59, + 0xd3, 0xc6, 0x03, 0xef, 0x2a, 0x6e, 0x87, 0x8d, 0x66, 0x60, 0x83, 0x15, 0xd6, 0xae, 0xa5, 0xd0, + 0x76, 0xfb, 0x96, 0x3e, 0x6b, 0xee, 0x8c, 0x59, 0x74, 0x16, 0x8f, 0xd3, 0xb8, 0xbf, 0x80, 0xc6, + 0xbd, 0x05, 0x5d, 0x51, 0x7f, 0x22, 0x98, 0x5b, 0x56, 0x8a, 0x87, 0x07, 0xdb, 0x80, 0xd1, 0xe0, + 0xce, 0xba, 0x83, 0x65, 0xee, 0x0e, 0xcd, 0xf4, 0xa0, 0xed, 0xfb, 0x5a, 0x2d, 0x0f, 0xeb, 0x5c, + 0x00, 0x8b, 0x70, 0x5f, 0xec, 0x07, 0x8a, 0xb1, 0x9d, 0xa3, 0x24, 0x32, 0x2d, 0x2a, 0xe5, 0x5f, + 0x48, 0x2b, 0x4f, 0x92, 0x44, 0xdb, 0x6e, 0xf6, 0x7e, 0x3e, 0x79, 0xf3, 0x1e, 0xf6, 0x13, 0x30, + 0xb2, 0x67, 0x79, 0x89, 0xe0, 0x03, 0xe8, 0x3b, 0x48, 0x0a, 0x3a, 0xba, 0x74, 0xdd, 0x22, 0x21, + 0x25, 0x03, 0x7a, 0xda, 0x04, 0x59, 0x68, 0x3e, 0xd9, 0xcb, 0xf2, 0x3b, 0x3f, 0x78, 0x8a, 0xe8, + 0xb6, 0x52, 0x97, 0xd4, 0x8a, 0x71, 0x9f, 0xd6, 0x3e, 0x98, 0x49, 0xa7, 0x17, 0xb0, 0x9a, 0xf2, + 0x0f, 0x45, 0x02, 0x69, 0xab, 0xd2, 0x8a, 0x96, 0x56, 0xf7, 0xd3, 0x6e, 0xf4, 0xbd, 0x72, 0xc1, + 0xe9, 0x0f, 0xb7, 0x40, 0xb3, 0xa6, 0xfb, 0x09, 0x26, 0x41, 0x32, 0x0c, 0x16, 0xbe, 0x34, 0x0b, + 0x19, 0x60, 0x6d, 0x61, 0xd1, 0xe1, 0xec, 0x3f, 0x8b, 0x48, 0xc9, 0x45, 0xf6, 0xb9, 0x4a, 0x2f, + 0xbf, 0x48, 0x90, 0xa5, 0x34, 0x41, 0xe8, 0xd4, 0x06, 0xac, 0x44, 0xab, 0x87, 0x88, 0x59, 0xa2, + 0x12, 0x2e, 0xca, 0xc1, 0x5d, 0x49, 0xa6, 0x01, 0x1f, 0xda, 0x65, 0x7b, 0xee, 0xdd, 0x7a, 0x31, + 0x62, 0xb9, 0x2e, 0xb6, 0x83, 0xb8, 0xcd, 0xfd, 0xb2, 0x9c, 0x5a, 0xbe, 0x97, 0x59, 0x88, 0x44, + 0xaf, 0xb0, 0x56, 0xc5, 0x73, 0xe4, 0x64, 0x43, 0xf7, 0xeb, 0x5d, 0x74, 0x52, 0x85, 0x9a, 0x45, + 0x42, 0xcb, 0x29, 0xdb, 0xd4, 0x28, 0x61, 0xbf, 0x83, 0x96, 0x4a, 0xb4, 0x39, 0xfc, 0xf3, 0xc3, + 0xdb, 0xdd, 0x17, 0xde, 0x22, 0x1c, 0xe5, 0x17, 0x5f, 0xe2, 0xca, 0xf6, 0xdc, 0x7c, 0x84, 0x89, + 0xeb, 0x11, 0xf4, 0x10, 0xd8, 0x3e, 0x1b, 0x18, 0xc4, 0xb0, 0x33, 0x3d, 0xd2, 0x26, 0x76, 0x09, + 0xbd, 0x5c, 0xa8, 0xf3, 0x16, 0x65, 0xe1, 0x21, 0xd6, 0x01, 0x32, 0x91, 0x19, 0x2c, 0x51, 0x32, + 0x7e, 0x19, 0x6b, 0x59, 0xd5, 0xc2, 0x32, 0x52, 0x2d, 0xb1, 0xa0, 0x55, 0xb8, 0x7d, 0xd7, 0x16, + 0x26, 0x69, 0x39, 0x93, 0x7f, 0x63, 0x21, 0x01, 0xda, 0xe9, 0x8e, 0x1b, 0xdf, 0x38, 0x62, 0xe0, + 0x75, 0x5c, 0x04, 0x5a, 0x38, 0x2a, 0x25, 0x35, 0x82, 0x1c, 0x65, 0x6c, 0xd6, 0x5a, 0x3f, 0x62, + 0x1e, 0x1e, 0x94, 0xf9, 0x15, 0x59, 0x2c, 0x7b, 0x07, 0x41, 0xcd, 0x14, 0xc6, 0x78, 0xed, 0x96, + 0x26, 0x82, 0x82, 0xc0, 0x3c, 0x52, 0xce, 0x60, 0x0a, 0x13, 0x9e, 0x24, 0xd4, 0x58, 0xe5, 0x21, + 0x5b, 0x77, 0xb4, 0x24, 0x87, 0x14, 0x7d, 0x6a, 0x38, 0xcf, 0xb3, 0x98, 0xcc, 0x65, 0xc8, 0x91, + 0x90, 0x2d, 0xc8, 0x74, 0x66, 0x77, 0x71, 0x63, 0xf6, 0x20, 0x03, 0xbd, 0xf3, 0x58, 0x8a, 0x4b, + 0xd6, 0xa3, 0xd9, 0x7c, 0x8f, 0x26, 0x28, 0x32, 0x52, 0x20, 0xe9, 0x07, 0x9b, 0x50, 0x22, 0xbe, + 0x80, 0x59, 0x4f, 0x15, 0x4e, 0x8a, 0x3f, 0xe2, 0xad, 0x2e, 0x71, 0x75, 0x5a, 0x13, 0x62, 0xc3, + 0x27, 0xf4, 0x7d, 0xea, 0x50, 0x13, 0xfa, 0x68, 0xb0, 0xdb, 0x82, 0x7f, 0x82, 0xc1, 0x39, 0xd6, + 0x3f, 0x8c, 0x78, 0xc6, 0x39, 0xe8, 0x7c, 0x44, 0x02, 0x27, 0xa6, 0x2a, 0x24, 0x02, 0x25, 0x52, + 0xc9, 0xbe, 0x9d, 0x93, 0x15, 0xef, 0x28, 0xb2, 0x50, 0x91, 0x17, 0x14, 0x8a, 0x14, 0x94, 0x10, + 0x88, 0x67, 0x2b, 0x30, 0x98, 0x26, 0xb0, 0x59, 0x93, 0x2f, 0x5e, 0xdf, 0x14, 0x0b, 0x44, 0xa2, + 0x20, 0x67, 0xdc, 0xf3, 0xd8, 0xe3, 0xaf, 0x5c, 0x30, 0x9e, 0x02, 0xc2, 0x01, 0xa3, 0xaf, 0xb6, + 0x73, 0xf1, 0x37, 0x4b, 0x63, 0xac, 0x42, 0x10, 0x6a, 0xb1, 0x68, 0xc8, 0x8f, 0x3e, 0x3a, 0x6e, + 0x09, 0xb4, 0xd9, 0x70, 0x4b, 0xfd, 0x0a, 0x60, 0xb7, 0x4c, 0x5e, 0xe1, 0x24, 0x3e, 0x11, 0xc0, + 0x22, 0x89, 0x53, 0x26, 0xaa, 0xbb, 0xbc, 0xf8, 0xcc, 0xc5, 0x81, 0x09, 0xb2, 0x83, 0xf1, 0x51, + 0x39, 0x26, 0x5a, 0x28, 0x58, 0x66, 0x90, 0x4a, 0xee, 0x03, 0xfe, 0xe6, 0x62, 0x13, 0x51, 0xd4, + 0xfa, 0x7c, 0x3a, 0x69, 0x9e, 0x5d, 0x42, 0x24, 0xcc, 0x6d, 0xcf, 0x53, 0xce, 0x2a, 0x73, 0x34, + 0x61, 0xc6, 0x73, 0x9c, 0xa8, 0x62, 0x25, 0xd7, 0x62, 0xd1, 0xb7, 0xd0, 0xe9, 0xa9, 0x91, 0xc9, + 0xd0, 0x59, 0x20, 0x56, 0xbd, 0x16, 0x7e, 0x4d, 0x03, 0x22, 0x38, 0xfe, 0xed, 0x54, 0xdc, 0xe1, + 0xe1, 0x82, 0x1c, 0x80, 0x7c, 0x7c, 0x49, 0x6f, 0x69, 0x0c, 0xe2, 0xd0, 0x24, 0xa7, 0x6f, 0xe7, + 0x95, 0x74, 0x52, 0x87, 0x77, 0xef, 0x6e, 0xb1, 0x6b, 0xbe, 0xbb, 0x95, 0x27, 0x10, 0xeb, 0x47, + 0x94, 0xa2, 0x12, 0x49, 0xe5, 0xb7, 0x61, 0x0d, 0xc2, 0x7c, 0x05, 0x13, 0x6e, 0x78, 0xbd, 0xd7, + 0x1e, 0xe5, 0xaa, 0xcc, 0x3f, 0x9f, 0xd3, 0x5b, 0x42, 0x7a, 0xb7, 0x4e, 0xb5, 0x0e, 0xa7, 0x13, + 0x54, 0xbd, 0x3b, 0xe6, 0x6a, 0x0f, 0x12, 0x90, 0x7b, 0xc3, 0x11, 0x0c, 0xf8, 0x78, 0x94, 0x0e, + 0x33, 0xba, 0x27, 0xc3, 0x91, 0xf0, 0x3e, 0x00, 0xfb, 0xd0, 0xca, 0x7c, 0xea, 0x47, 0x75, 0xf8, + 0xad, 0x8d, 0x4e, 0xe4, 0x38, 0x9f, 0xaa, 0x7e, 0x34, 0xc6, 0xe9, 0x9b, 0x1e, 0x26, 0x18, 0x11, + 0xa4, 0xa2, 0xd7, 0x7a, 0x15, 0xf1, 0x76, 0x2a, 0xd8, 0xb0, 0x0e, 0x3c, 0x58, 0x76, 0x08, 0xf4, + 0x22, 0x88, 0x1d, 0xa9, 0x1d, 0xff, 0xb1, 0xc2, 0xd1, 0xaa, 0x94, 0xa7, 0xb4, 0x62, 0x70, 0x0d, + 0xb7, 0xb8, 0x92, 0x04, 0x55, 0x37, 0x2d, 0x61, 0xb0, 0x7e, 0xa5, 0xb0, 0x80, 0x11, 0x28, 0x39, + 0xac, 0x60, 0x61, 0x39, 0xfd, 0x43, 0xf8, 0x8d, 0x26, 0xe7, 0x46, 0x9d, 0xeb, 0x46, 0x6d, 0xb6, + 0xa7, 0xd3, 0xd0, 0xa6, 0x87, 0x20, 0xad, 0x00, 0x26, 0xc6, 0xe6, 0x3e, 0xe6, 0x6b, 0x9d, 0x0e, + 0xcb, 0x2f, 0x0b, 0x8f, 0xd3, 0x48, 0x6b, 0x2d, 0x63, 0x92, 0x8d, 0xea, 0xd9, 0xae, 0x84, 0xe3, + 0x9a, 0x63, 0x1e, 0x67, 0x62, 0xfc, 0xe7, 0x1a, 0x13, 0x92, 0xbc, 0x3b, 0xa1, 0x3a, 0x73, 0xad, + 0x1f, 0xaf, 0x2c, 0x1b, 0xa5, 0xc5, 0xc2, 0xd1, 0x8f, 0x80, 0x49, 0x97, 0x55, 0xbd, 0x30, 0x99, + 0x85, 0x43, 0xe7, 0x60, 0x17, 0x8e, 0xa2, 0x3d, 0xba, 0x74, 0x8a, 0x1e, 0xc2, 0x2e, 0xa1, 0xcc, + 0xa9, 0xad, 0x88, 0xb8, 0x10, 0x21, 0x28, 0x88, 0x5a, 0x1a, 0xa2, 0x10, 0x97, 0xb0, 0xd2, 0xc1, + 0xe7, 0x20, 0xf3, 0x2a, 0x6a, 0x10, 0x38, 0x1a, 0xb3, 0x36, 0xa7, 0xd6, 0x72, 0xb7, 0x6b, 0xbc, + 0xdd, 0xc3, 0x6e, 0xd4, 0xe2, 0xee, 0xbc, 0x24, 0x55, 0x69, 0xa7, 0x42, 0x8f, 0x68, 0x84, 0x2b, + 0xf6, 0x59, 0x8e, 0xeb, 0x3b, 0xd0, 0xe2, 0x32, 0x0b, 0x3c, 0x02, 0xb7, 0xcf, 0xe8, 0xe5, 0xa2, + 0xfd, 0xc9, 0x1b, 0x5f, 0x11, 0x88, 0xec, 0xb4, 0xb0, 0xa1, 0x23, 0xb0, 0x6a, 0xc7, 0x45, 0x9e, + 0xa6, 0xf0, 0xed, 0xfc, 0x57, 0x6c, 0x98, 0xf9, 0x48, 0x5c, 0x0d, 0x6f, 0xa7, 0x79, 0x11, 0x6b, + 0xb6, 0x61, 0x1a, 0x69, 0xf0, 0x48, 0x2c, 0xcc, 0x0b, 0xe5, 0x9e, 0xd2, 0x8e, 0xf8, 0xa9, 0xe1, + 0x3c, 0x8f, 0x9a, 0x40, 0x79, 0x47, 0x2d, 0xb0, 0x78, 0x1a, 0x68, 0xa7, 0x5c, 0x8b, 0x84, 0xb7, + 0xdf, 0x33, 0x40, 0x11, 0x0e, 0xc8, 0xdd, 0x7b, 0xd8, 0x63, 0x95, 0x12, 0xad, 0x12, 0x33, 0x6a, + 0xe0, 0xdc, 0x19, 0x84, 0x3b, 0x84, 0xa5, 0x22, 0x82, 0x83, 0xc4, 0xdb, 0x7f, 0xf1, 0x1d, 0x73, + 0x02, 0xfd, 0xb4, 0x0a, 0xec, 0xae, 0x3d, 0xc1, 0x5f, 0x8a, 0x7b, 0xb7, 0x29, 0xf2, 0x18, 0x16, + 0x6d, 0x1d, 0xb0, 0x1d, 0x0a, 0x77, 0x7d, 0xb7, 0xdb, 0x8d, 0xcd, 0xa5, 0x02, 0x1b, 0x3d, 0x4e, + 0x2c, 0x83, 0x8c, 0x2a, 0x97, 0x43, 0x46, 0x95, 0x8b, 0x0d, 0x01, 0xc8, 0x30, 0xea, 0x3a, 0x5c, + 0x3b, 0x07, 0xcb, 0xae, 0xfa, 0x7a, 0x69, 0x1e, 0x83, 0x5e, 0x55, 0xb6, 0x72, 0x45, 0x8c, 0xaa, + 0xab, 0x06, 0x7c, 0x55, 0xb9, 0x01, 0x7c, 0x55, 0x55, 0x50, 0x02, 0xbe, 0x36, 0xa2, 0xb2, 0x34, + 0x78, 0xe2, 0x64, 0x4a, 0xc1, 0x4b, 0xa5, 0x2d, 0xf8, 0x74, 0xdf, 0xce, 0xd7, 0xc2, 0xd3, 0x2d, + 0xda, 0xbf, 0xf4, 0x7a, 0xcd, 0x97, 0xd6, 0xf5, 0x9e, 0x8f, 0x6b, 0x9a, 0x07, 0x51, 0xeb, 0x4c, + 0x0b, 0x45, 0xff, 0xee, 0xce, 0xb2, 0x5e, 0x1c, 0xbb, 0xbb, 0x50, 0xdf, 0xbe, 0x8a, 0xbb, 0x5f, + 0xd7, 0x6b, 0x6c, 0xec, 0x31, 0x07, 0x78, 0xcc, 0x11, 0x8d, 0x50, 0xc7, 0xbe, 0x9d, 0xeb, 0x51, + 0x24, 0x16, 0x74, 0x11, 0x42, 0x5e, 0xe4, 0xb5, 0x92, 0x8d, 0xbd, 0x65, 0x9d, 0x70, 0xe6, 0x50, + 0x9b, 0x28, 0xe8, 0x26, 0xe4, 0x08, 0x45, 0xa7, 0x8c, 0xb4, 0x15, 0x3a, 0x4a, 0x01, 0x2a, 0xd7, + 0xa6, 0x68, 0x8b, 0x1f, 0xd4, 0x76, 0x04, 0x50, 0x79, 0x0a, 0x72, 0x03, 0x58, 0x9a, 0xa6, 0x31, + 0x51, 0x2b, 0x09, 0x4b, 0x24, 0xac, 0x05, 0x29, 0x61, 0x9a, 0xe5, 0xdb, 0xdb, 0x35, 0xee, 0xda, + 0xa8, 0xff, 0xe7, 0xe1, 0x96, 0x09, 0xcb, 0xa9, 0x01, 0xb5, 0x8c, 0x27, 0xb2, 0x4c, 0x1d, 0xf0, + 0x55, 0xb8, 0xca, 0x24, 0xb7, 0x67, 0x71, 0xe8, 0xea, 0x75, 0x1a, 0xf9, 0x6f, 0x57, 0x43, 0x77, + 0x75, 0x5f, 0x0c, 0x69, 0x4c, 0xbf, 0xbc, 0xb8, 0x50, 0x8b, 0x46, 0xb3, 0x55, 0x97, 0x22, 0x1c, + 0xb7, 0x41, 0x19, 0x2f, 0xc3, 0x31, 0xfe, 0x4a, 0xcc, 0xe2, 0x37, 0xfb, 0xcf, 0x7e, 0x6c, 0xb0, + 0x3b, 0xfc, 0x49, 0x08, 0xe2, 0x14, 0x71, 0x7a, 0xbf, 0x12, 0x7d, 0x98, 0xf2, 0xf8, 0x4a, 0xe0, + 0x61, 0xca, 0xe3, 0x2b, 0x31, 0x87, 0x29, 0x8f, 0x75, 0x70, 0xc3, 0x72, 0x20, 0xb9, 0x3b, 0xb9, + 0x13, 0xe8, 0x82, 0xa9, 0x76, 0x9b, 0x51, 0x17, 0xcd, 0xfb, 0x6d, 0xbc, 0x8b, 0xd9, 0x12, 0xca, + 0x45, 0x9b, 0x55, 0xb1, 0xa3, 0x6d, 0x6c, 0xe4, 0x0b, 0x9d, 0x0d, 0xf8, 0x4f, 0x6c, 0x58, 0xc7, + 0xd1, 0x8d, 0xba, 0x5f, 0xf3, 0xca, 0x23, 0x44, 0x1f, 0x7c, 0x41, 0xdc, 0x33, 0x43, 0xd0, 0x2a, + 0x2a, 0xe9, 0x4c, 0x6d, 0x58, 0xc4, 0x9d, 0xc7, 0x3d, 0x04, 0xb9, 0xf2, 0xcb, 0x36, 0x88, 0x2b, + 0xcc, 0x86, 0x50, 0x16, 0xf0, 0x07, 0x9d, 0x20, 0xb8, 0x20, 0xee, 0x88, 0x1f, 0x61, 0xd0, 0xac, + 0xcc, 0xc1, 0xac, 0x3d, 0x89, 0x4c, 0x40, 0xd8, 0xab, 0x93, 0xf4, 0x4d, 0xdd, 0x5d, 0x3e, 0x15, + 0xea, 0x34, 0xa5, 0x32, 0xac, 0xa1, 0x65, 0xe2, 0x00, 0x81, 0x4f, 0xa6, 0x45, 0x09, 0xd3, 0xbb, + 0x77, 0xa4, 0x68, 0x15, 0x3b, 0xb2, 0xba, 0xb8, 0xfa, 0xb7, 0xc9, 0x39, 0x27, 0x3b, 0x9c, 0xa5, + 0x9a, 0x15, 0x5d, 0x79, 0x53, 0xf6, 0xb3, 0x9d, 0x9d, 0x00, 0xca, 0xc4, 0xcd, 0x02, 0xd3, 0x74, + 0xf1, 0x05, 0x1a, 0x06, 0x39, 0x2d, 0x77, 0xdc, 0x4f, 0x5c, 0x15, 0x7f, 0x28, 0x3c, 0x97, 0xed, + 0xb0, 0xb2, 0xaf, 0x70, 0x4b, 0xc3, 0x68, 0xb5, 0xf4, 0xca, 0x32, 0x4d, 0xc2, 0xe9, 0x2e, 0x62, + 0x15, 0x06, 0xfd, 0x54, 0x1f, 0xc8, 0xe2, 0xed, 0x4d, 0xb2, 0xcc, 0xb7, 0xd8, 0xa9, 0x15, 0x19, + 0x98, 0xc1, 0xc6, 0xf3, 0x89, 0x0a, 0x31, 0x58, 0x41, 0xea, 0x43, 0xd9, 0xdb, 0xf4, 0x3a, 0x9d, + 0x61, 0x90, 0xe9, 0x13, 0x14, 0x68, 0x2b, 0x3c, 0x11, 0x32, 0x94, 0x39, 0xd6, 0x8b, 0x00, 0xa9, + 0xe8, 0xa4, 0x07, 0x83, 0xf3, 0x22, 0xb6, 0x6b, 0xec, 0x93, 0x79, 0x45, 0x07, 0x13, 0x67, 0x36, + 0x01, 0x0f, 0xdb, 0x73, 0x6d, 0x8b, 0x16, 0xcc, 0xdd, 0x27, 0x29, 0xbb, 0x84, 0x3a, 0xf5, 0x8e, + 0x47, 0xc9, 0x63, 0x01, 0xfa, 0x7e, 0x37, 0x8c, 0x42, 0xbc, 0x5d, 0xae, 0x5f, 0x5e, 0xdc, 0x14, + 0xee, 0x5b, 0xe7, 0xd5, 0xa7, 0xea, 0xcc, 0x8e, 0x6c, 0xec, 0xc5, 0xcb, 0xd2, 0x98, 0x18, 0x94, + 0xd4, 0xe9, 0x61, 0x96, 0x77, 0xaf, 0x48, 0x5b, 0xc5, 0x34, 0xc7, 0xe6, 0x7e, 0xab, 0xf8, 0x61, + 0x77, 0x99, 0xe8, 0xee, 0x9b, 0x16, 0x39, 0x31, 0x82, 0x23, 0x8d, 0x0d, 0xb0, 0x96, 0x8a, 0x93, + 0x92, 0xd1, 0x4f, 0x5c, 0x81, 0x10, 0x30, 0x4d, 0xd7, 0x77, 0xd9, 0xb8, 0xa8, 0x0d, 0xe9, 0x5e, + 0xdf, 0x14, 0x2a, 0x61, 0xd9, 0xb0, 0xcb, 0xfb, 0xf5, 0xba, 0xb4, 0x2d, 0xfd, 0xdd, 0xe8, 0xfb, + 0x52, 0xb7, 0xa0, 0x9d, 0xe5, 0x87, 0xcd, 0x72, 0x74, 0x6a, 0x7a, 0x93, 0x8c, 0x7f, 0x31, 0x83, + 0x5c, 0xe7, 0xd2, 0x47, 0x6f, 0x25, 0xbe, 0xeb, 0x97, 0xa2, 0x82, 0x50, 0x54, 0x97, 0x16, 0x56, + 0x63, 0x68, 0xbf, 0x99, 0x39, 0xaf, 0x06, 0x3e, 0x1e, 0x1c, 0x22, 0x9e, 0x27, 0xa8, 0xa3, 0x72, + 0x0e, 0xc5, 0xf9, 0xd2, 0x49, 0x93, 0x77, 0xcf, 0x83, 0xf6, 0x91, 0x16, 0x9b, 0xe4, 0xae, 0xf2, + 0xab, 0x3e, 0x66, 0x6e, 0x8a, 0x52, 0xae, 0xad, 0xb1, 0x60, 0xf0, 0xbd, 0xc9, 0x2e, 0x4c, 0xcc, + 0x35, 0x5f, 0x66, 0x93, 0x51, 0xcd, 0xcf, 0xf7, 0xc4, 0xc5, 0x1d, 0x91, 0x33, 0x1e, 0x72, 0x4c, + 0x09, 0x53, 0xdb, 0x68, 0xb5, 0x9d, 0x95, 0x31, 0xba, 0x6c, 0x41, 0x3b, 0xc2, 0xdf, 0x08, 0x51, + 0xbe, 0x74, 0xfd, 0xc7, 0x9f, 0xaa, 0xe2, 0x2c, 0xe4, 0xe2, 0xc4, 0x51, 0x58, 0xc4, 0x68, 0xf7, + 0xcd, 0x2e, 0xe2, 0x48, 0x6b, 0xcb, 0xa6, 0xd5, 0x38, 0xd6, 0xa0, 0x1e, 0x00, 0xbb, 0xad, 0xd2, + 0x22, 0x80, 0x81, 0x5e, 0xc0, 0xea, 0x9a, 0x5c, 0x13, 0x61, 0x73, 0x04, 0x2a, 0xf4, 0x2e, 0x6c, + 0x3f, 0xe2, 0x6e, 0x34, 0xbb, 0xef, 0x6b, 0xba, 0xa4, 0x55, 0xc4, 0x36, 0xa7, 0x57, 0x37, 0x93, + 0x49, 0x2a, 0x88, 0x51, 0x76, 0xe9, 0x5e, 0xcd, 0x34, 0xbb, 0xbd, 0x5f, 0xc3, 0xce, 0xc2, 0xbc, + 0xb9, 0xb0, 0xbc, 0x58, 0xb2, 0x3e, 0x3c, 0x64, 0xe8, 0x4e, 0xef, 0x50, 0x64, 0x60, 0xfe, 0xab, + 0x77, 0x73, 0x48, 0xa5, 0xc6, 0xfb, 0x39, 0xf8, 0xb5, 0x9a, 0x2e, 0x88, 0x00, 0x62, 0x71, 0xa2, + 0x9b, 0x4c, 0xb3, 0x69, 0x25, 0xd2, 0x2f, 0x1b, 0x49, 0x3f, 0x5b, 0x25, 0x7e, 0x76, 0x44, 0x50, + 0x27, 0x5a, 0xe8, 0x47, 0x4b, 0x6c, 0x1a, 0x85, 0x7b, 0x96, 0x6e, 0x15, 0x85, 0xb5, 0x25, 0xbf, + 0xe1, 0x3a, 0xe9, 0x7b, 0x2a, 0xa9, 0x51, 0x15, 0x64, 0xf1, 0x9c, 0xf2, 0x28, 0xdd, 0xc7, 0x2e, + 0x8d, 0xa5, 0xe1, 0x58, 0x25, 0x21, 0x24, 0x81, 0xde, 0xdf, 0x48, 0x4b, 0x8a, 0xe4, 0x2e, 0x80, + 0xbf, 0x9c, 0x81, 0x56, 0x74, 0xd4, 0xc1, 0x93, 0xc4, 0x52, 0x53, 0xf6, 0xba, 0xbc, 0x33, 0xde, + 0x11, 0x0c, 0x14, 0xe9, 0x41, 0x16, 0x23, 0xa4, 0x4b, 0x23, 0xc6, 0x32, 0x66, 0x1a, 0xd8, 0x08, + 0x58, 0xb2, 0xf1, 0x88, 0x5b, 0x52, 0xd5, 0x74, 0x71, 0x04, 0xe4, 0x4a, 0xec, 0x2e, 0x83, 0xf7, + 0x6f, 0x9d, 0x27, 0x18, 0x15, 0xf8, 0xf5, 0x3a, 0x91, 0xcd, 0xd1, 0x7b, 0xa8, 0x35, 0xbd, 0x5b, + 0x69, 0x44, 0x40, 0xfc, 0x6b, 0xa8, 0x3f, 0xd8, 0x80, 0x17, 0xca, 0x13, 0xce, 0x8a, 0x0c, 0xba, + 0xa2, 0xde, 0xe0, 0xad, 0xfc, 0x34, 0x9d, 0x00, 0x61, 0xe3, 0xb6, 0x10, 0xd9, 0x28, 0x9e, 0xe3, + 0x46, 0xb3, 0x6d, 0xa0, 0xe1, 0x55, 0x20, 0x19, 0x2c, 0x68, 0x58, 0x11, 0x61, 0x47, 0xa9, 0x38, + 0x1b, 0xf1, 0x4b, 0x7f, 0x80, 0x94, 0x35, 0x65, 0xf0, 0x7c, 0xa1, 0x40, 0xcf, 0xca, 0x35, 0xd4, + 0x55, 0xf5, 0x8e, 0x6c, 0xe0, 0xa7, 0xe0, 0xcd, 0x31, 0x83, 0x34, 0x76, 0x46, 0x84, 0x04, 0x96, + 0x89, 0xb2, 0x24, 0x60, 0x1c, 0xd9, 0xbf, 0x57, 0x8e, 0x2a, 0x2c, 0xc7, 0x74, 0x44, 0x83, 0x4a, + 0x8e, 0x9a, 0xbf, 0x72, 0x94, 0xaf, 0x94, 0xfa, 0x14, 0x5d, 0x1d, 0x95, 0x39, 0x6f, 0x84, 0xc7, + 0xa0, 0x8f, 0x13, 0xbb, 0xfc, 0xff, 0x11, 0xfb, 0x15, 0x7f, 0x4f, 0x49, 0x8e, 0x07, 0x52, 0x3c, + 0x77, 0x3d, 0x42, 0x70, 0xf8, 0x8c, 0xf7, 0x28, 0x81, 0xcf, 0x6b, 0x30, 0x7e, 0xfa, 0x54, 0x51, + 0xc2, 0xfa, 0x3a, 0xcf, 0x16, 0xba, 0x6f, 0x59, 0x23, 0x6c, 0x42, 0xf6, 0x2a, 0x28, 0xa0, 0x8b, + 0xf6, 0xfb, 0x18, 0xe2, 0x2a, 0x2a, 0x40, 0x7a, 0x3d, 0x6b, 0x62, 0xfa, 0xb6, 0x40, 0xf9, 0x9e, + 0xd7, 0xa1, 0x7c, 0x1d, 0x31, 0xc9, 0x29, 0xbf, 0x5c, 0x8e, 0xe8, 0x0b, 0x5f, 0x42, 0xef, 0x99, + 0x99, 0x1a, 0xd6, 0x8c, 0xa1, 0xab, 0x30, 0x7e, 0x3b, 0x75, 0x0d, 0xe8, 0x2b, 0xd0, 0x7f, 0xcb, + 0x26, 0xfa, 0xaf, 0x82, 0x6d, 0x53, 0xa0, 0x78, 0x2b, 0x79, 0x5e, 0x98, 0x9a, 0x0b, 0xb5, 0x32, + 0xc4, 0xd7, 0x31, 0x54, 0x18, 0x54, 0x59, 0xc4, 0x03, 0xb3, 0xa1, 0xbd, 0x9b, 0x8a, 0x3c, 0x50, + 0x0c, 0xf4, 0x1b, 0xd0, 0xbc, 0x34, 0x66, 0xb0, 0xff, 0xc1, 0xbb, 0xd5, 0x8c, 0x47, 0x45, 0x3d, + 0x27, 0xee, 0x2c, 0x17, 0xbd, 0x24, 0xd1, 0x8c, 0x1c, 0x96, 0x18, 0xbf, 0xa7, 0x52, 0x06, 0xbb, + 0x24, 0xbf, 0xa7, 0x6d, 0x05, 0x79, 0x7a, 0xd4, 0x36, 0x99, 0x5e, 0x79, 0x47, 0x7e, 0x2a, 0x70, + 0x84, 0x0b, 0x3a, 0xb5, 0x87, 0x8e, 0x80, 0x47, 0xb0, 0x96, 0x78, 0x3c, 0x11, 0x06, 0x4e, 0x62, + 0x68, 0x7a, 0xba, 0xd8, 0x87, 0x55, 0x49, 0x0b, 0xef, 0xb6, 0x5a, 0x78, 0x71, 0xa5, 0xdd, 0x56, + 0xbb, 0x90, 0x3f, 0x3f, 0x78, 0xe1, 0x03, 0x03, 0xef, 0x14, 0x5a, 0xa9, 0x33, 0xd3, 0x9a, 0x2c, + 0x6c, 0xba, 0xf3, 0xc2, 0x8b, 0xb1, 0xe6, 0xbd, 0x9f, 0x6f, 0x91, 0x52, 0x13, 0xb6, 0x23, 0x9d, + 0xbb, 0x69, 0x75, 0xd5, 0x21, 0x6f, 0x08, 0xf8, 0xea, 0x3f, 0x61, 0x92, 0x96, 0x17, 0x5c, 0x64, + 0xd8, 0xe2, 0x51, 0x23, 0x7e, 0x5c, 0xd6, 0xb6, 0x2d, 0xf0, 0xf8, 0xaa, 0x34, 0x1b, 0x17, 0x2c, + 0xf2, 0xc3, 0x43, 0xf5, 0x75, 0xdb, 0xad, 0x96, 0x56, 0x98, 0xe5, 0x3d, 0x4b, 0x0a, 0x78, 0x38, + 0x7a, 0x79, 0x72, 0xdc, 0x81, 0xf6, 0xbb, 0x1e, 0x66, 0x17, 0x4c, 0x27, 0x0d, 0x1d, 0x62, 0x58, + 0x88, 0xa1, 0x4a, 0x31, 0x9c, 0x4d, 0x35, 0x71, 0x11, 0x25, 0x82, 0x00, 0xb2, 0xa8, 0xca, 0x78, + 0x47, 0xed, 0x9f, 0xe9, 0xda, 0x9f, 0xe9, 0x2a, 0x4c, 0xc4, 0x96, 0x35, 0xb6, 0x73, 0xfd, 0x1c, + 0xb6, 0xab, 0xd8, 0x2f, 0xaa, 0xbc, 0x73, 0xfc, 0xba, 0x63, 0xd1, 0x96, 0xf2, 0x5a, 0x74, 0x51, + 0x37, 0x15, 0xeb, 0x0d, 0x12, 0x15, 0x1f, 0x5a, 0xe2, 0xc2, 0xde, 0x26, 0xf5, 0x0e, 0x22, 0xda, + 0x26, 0x75, 0xf5, 0x36, 0x09, 0xdb, 0x51, 0xc4, 0xa0, 0xc5, 0xbf, 0xb3, 0xce, 0xee, 0x4e, 0xfc, + 0x60, 0x71, 0xb4, 0x64, 0xd1, 0xc7, 0x6a, 0x5e, 0xbf, 0xee, 0xa3, 0x63, 0xfe, 0x09, 0x2f, 0xfb, + 0x0a, 0xbe, 0x72, 0xa5, 0xf9, 0x51, 0x1d, 0x29, 0x60, 0x59, 0xf5, 0xaa, 0x4f, 0x3d, 0x10, 0x05, + 0xdc, 0x5e, 0xfe, 0x45, 0xaa, 0x8a, 0xed, 0x1d, 0xb1, 0xb3, 0x7d, 0x21, 0x52, 0x97, 0xb6, 0xe0, + 0xc4, 0xa7, 0xf0, 0x8d, 0x59, 0x0b, 0x98, 0xfa, 0x60, 0x3b, 0xde, 0xde, 0xd4, 0x72, 0x7d, 0xe2, + 0x9a, 0xae, 0xb7, 0x17, 0x96, 0xe4, 0xad, 0x0d, 0x7f, 0x37, 0x2c, 0x54, 0x91, 0xbc, 0xd1, 0x8c, + 0xd9, 0xfe, 0xc6, 0x56, 0x5f, 0xc0, 0xf7, 0x9e, 0xae, 0x78, 0x55, 0x76, 0x77, 0x9e, 0x80, 0x5e, + 0x80, 0xc5, 0x52, 0x48, 0x99, 0x98, 0x47, 0xdd, 0x9e, 0xc7, 0x62, 0x49, 0x2f, 0x67, 0x36, 0x5b, + 0xb1, 0xf5, 0xbb, 0xdf, 0x76, 0xc5, 0x07, 0x46, 0xe8, 0x97, 0x51, 0x5e, 0x31, 0xb1, 0xba, 0xeb, + 0x3b, 0xcb, 0xa0, 0x3d, 0xa1, 0x58, 0x66, 0x35, 0xc7, 0xf7, 0xd3, 0xcc, 0x3a, 0xdc, 0x94, 0xfb, + 0x4d, 0x3f, 0x52, 0xd0, 0x8a, 0xe7, 0x36, 0xba, 0xd4, 0x2c, 0xc2, 0xc1, 0x12, 0x80, 0x6a, 0x3d, + 0xc9, 0xc7, 0x37, 0x78, 0x98, 0x5d, 0xa9, 0x5b, 0x76, 0x04, 0x3c, 0x0d, 0xaa, 0xcd, 0x05, 0xba, + 0x26, 0x09, 0xba, 0x5e, 0x66, 0xdd, 0xbf, 0x27, 0x18, 0x43, 0x88, 0xcc, 0x41, 0xe4, 0x60, 0xb6, + 0xf1, 0xf1, 0xec, 0x58, 0x64, 0xe4, 0xb5, 0x23, 0x4f, 0xce, 0x67, 0xe5, 0x5b, 0x76, 0x2a, 0x6b, + 0xaf, 0x88, 0x0a, 0x6f, 0x45, 0xd5, 0xcd, 0xa3, 0xca, 0x0e, 0x57, 0xb5, 0xa2, 0xbe, 0xc2, 0xe4, + 0x8e, 0xef, 0x79, 0x64, 0xb4, 0x9b, 0xe8, 0xf0, 0x8d, 0x86, 0x6c, 0xc4, 0x23, 0x4d, 0xf8, 0xd3, + 0xb1, 0x8e, 0x50, 0x5f, 0x44, 0xdf, 0x79, 0x16, 0x0f, 0x3d, 0xbe, 0xed, 0x6c, 0xaa, 0x86, 0xb8, + 0x3a, 0x07, 0x9a, 0x6b, 0xf4, 0xa8, 0x0b, 0x25, 0x1d, 0xb1, 0xd6, 0x3f, 0xbc, 0x6f, 0xeb, 0x46, + 0x1c, 0x8d, 0x4d, 0x8b, 0x26, 0x34, 0x79, 0xf8, 0xc8, 0xdf, 0x6f, 0x57, 0x1d, 0x28, 0x11, 0x01, + 0x4a, 0x76, 0x3a, 0xb5, 0x3d, 0x00, 0x95, 0x09, 0xcf, 0x92, 0x54, 0xe1, 0xd6, 0x2b, 0x0a, 0xe9, + 0x2e, 0x74, 0x33, 0x6b, 0x54, 0xb1, 0x91, 0x6e, 0xf3, 0x59, 0x43, 0x1d, 0x5a, 0xb8, 0x07, 0x91, + 0x0c, 0x73, 0x59, 0xd4, 0xeb, 0xda, 0x88, 0xf3, 0xfa, 0xa6, 0xa0, 0x63, 0x8a, 0x25, 0xd2, 0x7e, + 0xd0, 0xf6, 0x8b, 0x25, 0x11, 0xbe, 0x01, 0xe1, 0x76, 0xba, 0x8b, 0x8d, 0x3e, 0xa6, 0x9a, 0xf8, + 0x19, 0x34, 0x71, 0xeb, 0xc1, 0x9f, 0x3b, 0x7d, 0x3b, 0xdb, 0x17, 0x25, 0x27, 0xcf, 0xdd, 0xcf, + 0x0f, 0x0e, 0xf6, 0xf7, 0x78, 0xfa, 0x8e, 0xf6, 0x7a, 0xb0, 0xb0, 0x8a, 0x19, 0xfc, 0xe8, 0xda, + 0x2a, 0x31, 0x19, 0xdd, 0x1a, 0xcd, 0xaf, 0xb7, 0x29, 0x75, 0xa3, 0xdb, 0xd3, 0x6e, 0x04, 0xad, + 0x5d, 0xb6, 0x97, 0xf2, 0x6b, 0x04, 0x37, 0x35, 0xa8, 0x44, 0xd7, 0x82, 0x47, 0xed, 0x82, 0x7f, + 0xd8, 0x4c, 0x6e, 0xc7, 0xb4, 0xb7, 0x52, 0xfc, 0x15, 0x7d, 0xae, 0xb9, 0x50, 0x3c, 0xa6, 0xcf, + 0x2d, 0xe5, 0xb8, 0xa9, 0x75, 0x86, 0xa7, 0x6a, 0xc0, 0x2f, 0x39, 0x73, 0x91, 0x93, 0xf4, 0xec, + 0xfd, 0xcd, 0x35, 0x1a, 0xdf, 0x2d, 0xc7, 0xcd, 0x8f, 0xf9, 0x4d, 0x27, 0x13, 0xa0, 0x33, 0x0d, + 0xab, 0x0e, 0x6c, 0x0a, 0x61, 0xd3, 0xd5, 0x93, 0x9a, 0x7d, 0x89, 0xdb, 0x00, 0x4c, 0xde, 0x19, + 0xea, 0x1d, 0xd9, 0x96, 0x44, 0xaf, 0xf9, 0xcf, 0xce, 0xf4, 0xea, 0x50, 0xb8, 0x1b, 0x45, 0xd6, + 0xac, 0x4f, 0x56, 0x04, 0x97, 0x1d, 0xd8, 0xb2, 0x2c, 0x47, 0x6a, 0x0a, 0xe6, 0x65, 0x40, 0x2f, + 0x02, 0xff, 0xa9, 0xc9, 0xdc, 0x5e, 0xb3, 0xe7, 0xcb, 0xd2, 0x33, 0x32, 0x8c, 0x4a, 0xbc, 0xae, + 0x66, 0x75, 0xec, 0x66, 0xb5, 0x2a, 0x41, 0x5a, 0x6a, 0x76, 0xd9, 0x06, 0xc3, 0x76, 0xcf, 0xb0, + 0x16, 0x72, 0x6d, 0x56, 0x9b, 0x80, 0x26, 0x50, 0xc5, 0xa9, 0x98, 0x54, 0xfd, 0x4d, 0x67, 0xc6, + 0x13, 0x69, 0x11, 0x52, 0x7d, 0x75, 0xc3, 0x0f, 0xa7, 0xad, 0x5f, 0x26, 0x7b, 0xc9, 0xe6, 0x9f, + 0x96, 0x1d, 0x54, 0x7f, 0x7c, 0xdb, 0xf2, 0x91, 0xa3, 0x0d, 0xbd, 0xa8, 0xe3, 0xf1, 0xc9, 0xad, + 0xbf, 0x31, 0xa6, 0xf7, 0xcd, 0x9b, 0x16, 0xc3, 0x75, 0xd5, 0xe6, 0xed, 0x28, 0x63, 0xf7, 0xda, + 0x62, 0x53, 0xac, 0x58, 0x26, 0x72, 0xa4, 0x21, 0x1a, 0x55, 0xa1, 0x5c, 0xc5, 0x31, 0x1f, 0x71, + 0x08, 0x7d, 0x7b, 0xa0, 0xd1, 0x21, 0xcf, 0x63, 0xca, 0x78, 0x17, 0x02, 0x51, 0x47, 0x35, 0xd0, + 0x47, 0x4d, 0x04, 0x59, 0x42, 0x8d, 0x0d, 0xed, 0x4d, 0x8e, 0xda, 0xb7, 0x40, 0x37, 0x68, 0x45, + 0x64, 0x0f, 0x97, 0x9c, 0xa2, 0xdb, 0x77, 0x3d, 0x95, 0x9f, 0x80, 0xae, 0xb4, 0x39, 0x88, 0x16, + 0x7f, 0x3a, 0x5b, 0xd4, 0xae, 0x40, 0x32, 0x93, 0x55, 0xe9, 0x30, 0x59, 0x95, 0x04, 0x92, 0x85, + 0x97, 0xc2, 0x09, 0x44, 0x1f, 0x1d, 0xad, 0x4b, 0xbc, 0x75, 0x8a, 0x88, 0x33, 0x5c, 0xd1, 0x8b, + 0xa0, 0x6f, 0xbb, 0x50, 0x56, 0x8d, 0x4f, 0xbf, 0xb9, 0xff, 0x6b, 0xbf, 0x5c, 0x82, 0x0e, 0xb7, + 0xc0, 0xad, 0xa0, 0xc4, 0x10, 0x48, 0x44, 0xb8, 0x5a, 0x00, 0x46, 0x50, 0xb7, 0xfc, 0xa9, 0x51, + 0x08, 0xe2, 0xec, 0xa1, 0xfc, 0x1c, 0xac, 0x4c, 0x9b, 0x56, 0xcb, 0x71, 0xb6, 0x96, 0xc7, 0xe4, + 0x78, 0xcf, 0xe4, 0x51, 0x0d, 0xd1, 0xb7, 0x8e, 0x80, 0x57, 0xc0, 0x04, 0x9d, 0x1b, 0x98, 0x20, + 0x66, 0xe7, 0x66, 0xdc, 0xb1, 0xb0, 0x6c, 0x56, 0x19, 0xdf, 0xe3, 0xe3, 0x2a, 0x13, 0x4e, 0x95, + 0x09, 0xe2, 0x9d, 0x72, 0xaa, 0x8c, 0x8b, 0x88, 0x6e, 0xf0, 0x7c, 0x0c, 0xe3, 0xc0, 0x83, 0x55, + 0x86, 0x7a, 0xc3, 0x3a, 0x33, 0xc2, 0x3d, 0xb4, 0x75, 0xcb, 0x0a, 0x6f, 0xe8, 0x94, 0x12, 0xe0, + 0x80, 0x1c, 0xed, 0x2b, 0xce, 0x32, 0x5a, 0x2c, 0x4a, 0x0b, 0x2d, 0xc0, 0x75, 0xa4, 0x2d, 0xed, + 0xc9, 0x93, 0x79, 0xe8, 0xdc, 0x21, 0xab, 0x07, 0x87, 0x72, 0xc7, 0x2c, 0xd7, 0xa2, 0x1e, 0x67, + 0xeb, 0x50, 0x8f, 0xb1, 0x84, 0xd1, 0x56, 0x22, 0x9d, 0x08, 0x5c, 0x88, 0x63, 0x68, 0x2d, 0xeb, + 0x0c, 0xce, 0xc5, 0x3a, 0xbe, 0x9e, 0x5a, 0xaf, 0x6a, 0x98, 0xc7, 0x76, 0x7f, 0xa8, 0xa1, 0x1f, + 0xcf, 0xee, 0x0a, 0x07, 0x18, 0x0e, 0x9b, 0x16, 0x7b, 0x24, 0xf9, 0x37, 0xa3, 0x0b, 0x7f, 0x62, + 0x75, 0xb4, 0x0c, 0xab, 0x0d, 0xbd, 0xd6, 0xb0, 0x13, 0xe3, 0x99, 0x53, 0xc3, 0x95, 0xb4, 0x44, + 0x6e, 0xb3, 0x0c, 0xba, 0xf2, 0x6d, 0x9c, 0x86, 0xd7, 0xd3, 0x78, 0x18, 0xe2, 0xad, 0x89, 0x70, + 0x54, 0x4c, 0xe3, 0xd6, 0x72, 0x13, 0x73, 0x9c, 0x46, 0x84, 0x86, 0x16, 0xc9, 0x17, 0x0b, 0xc5, + 0x6a, 0xd3, 0x02, 0x20, 0x3b, 0xde, 0x00, 0x40, 0xf6, 0x62, 0x3d, 0x80, 0x6c, 0x38, 0x6b, 0x8f, + 0x83, 0xc0, 0xcf, 0xaa, 0x19, 0x0a, 0xea, 0x16, 0x90, 0x73, 0x32, 0x0e, 0xf9, 0x37, 0xe4, 0x90, + 0x5c, 0xc8, 0xdf, 0xf9, 0x24, 0x99, 0x2d, 0xf8, 0x27, 0xf4, 0x0c, 0xba, 0xb1, 0xc5, 0xa4, 0xd1, + 0xc2, 0x75, 0xf4, 0x2f, 0xec, 0x33, 0x78, 0xe9, 0x72, 0xb8, 0xba, 0x0f, 0xf5, 0x79, 0x42, 0xa9, + 0x63, 0x56, 0x67, 0x75, 0xcc, 0x6a, 0xe9, 0xe7, 0xd0, 0x38, 0x84, 0x0e, 0x87, 0x4d, 0x47, 0x80, + 0xa6, 0x63, 0x71, 0x4a, 0x5e, 0xc3, 0x13, 0x3f, 0x3d, 0x2c, 0xf1, 0xea, 0xe2, 0xc3, 0x43, 0x7a, + 0x44, 0x98, 0xea, 0x0a, 0x6d, 0x03, 0x71, 0x90, 0x54, 0x96, 0x09, 0x45, 0xe1, 0x1b, 0xb4, 0x87, + 0x19, 0x47, 0x1f, 0xee, 0xb6, 0x66, 0x79, 0x94, 0x35, 0x32, 0x31, 0x9e, 0x0c, 0xf8, 0xa6, 0x6f, + 0xe3, 0x51, 0x71, 0x42, 0x32, 0xe1, 0x0d, 0x1f, 0x1e, 0xb6, 0x1a, 0xe1, 0x48, 0x4b, 0x68, 0xe7, + 0xd5, 0xb9, 0x50, 0x33, 0xa1, 0x84, 0xe3, 0x68, 0xed, 0x9a, 0x29, 0x77, 0xcd, 0x21, 0x77, 0x24, + 0x72, 0x32, 0x4f, 0x0f, 0x19, 0xa2, 0xdb, 0x5a, 0xde, 0x1c, 0xd4, 0xf0, 0xb2, 0x81, 0x1a, 0xde, + 0xe7, 0x2b, 0xf4, 0x06, 0x0b, 0x4b, 0xd5, 0x6e, 0xd1, 0xac, 0xf1, 0x66, 0xed, 0x4e, 0x65, 0xed, + 0x4e, 0x0f, 0x2b, 0xae, 0xae, 0xe9, 0x51, 0xd5, 0xa8, 0x18, 0xa5, 0xfb, 0x57, 0xba, 0x76, 0x0b, + 0xd5, 0x18, 0xc5, 0xea, 0xc6, 0xc0, 0x7a, 0xcc, 0xb9, 0x4b, 0x12, 0x54, 0x4b, 0x32, 0x0d, 0xd5, + 0x63, 0x3e, 0xfb, 0x98, 0x14, 0x0b, 0x2c, 0xe6, 0xb8, 0x09, 0xc2, 0x4c, 0x95, 0xdf, 0x98, 0x29, + 0xc7, 0x6b, 0x00, 0xd9, 0x9d, 0x81, 0x93, 0xad, 0x1f, 0x38, 0xb9, 0x1e, 0x38, 0x95, 0x12, 0x0b, + 0x06, 0x4e, 0x29, 0x7f, 0xc3, 0xc0, 0xc9, 0x42, 0x6a, 0x94, 0x3a, 0xf8, 0x34, 0x42, 0x97, 0x50, + 0x94, 0xca, 0x05, 0xf5, 0xb6, 0x81, 0xa9, 0xd1, 0x57, 0x49, 0xbb, 0x4c, 0x3a, 0x03, 0x2d, 0x77, + 0x9d, 0x48, 0xe4, 0x38, 0x33, 0x1c, 0x91, 0x83, 0x36, 0x05, 0x03, 0xb4, 0x89, 0x2b, 0x34, 0x2e, + 0x5e, 0xc3, 0xe2, 0x37, 0x05, 0x2d, 0xcc, 0x9c, 0xd2, 0xc0, 0x1b, 0xe9, 0xbb, 0x00, 0x5b, 0xa6, + 0x2d, 0x74, 0x4b, 0x50, 0x59, 0xed, 0xee, 0x86, 0xcb, 0x96, 0x61, 0xec, 0x76, 0xb0, 0xa0, 0x04, + 0xce, 0x82, 0x5b, 0xfd, 0x22, 0x6e, 0x57, 0xac, 0xdd, 0x38, 0x53, 0x2e, 0x9d, 0xe2, 0x6b, 0x6b, + 0x37, 0x66, 0xf5, 0x71, 0x55, 0x5e, 0x1f, 0xdd, 0xac, 0x3e, 0x2e, 0xcf, 0xe9, 0xa7, 0xe9, 0x8a, + 0x7c, 0x60, 0xde, 0x5e, 0xb6, 0xb2, 0x34, 0xf3, 0x59, 0x25, 0xd0, 0xb5, 0x2b, 0xd0, 0xf5, 0x2a, + 0x81, 0xba, 0xbd, 0x55, 0x19, 0x75, 0x7b, 0x6e, 0x4e, 0x5d, 0xda, 0xdf, 0x4a, 0x0b, 0xd9, 0x31, + 0x1a, 0x6f, 0xea, 0x19, 0x9e, 0xae, 0x2a, 0x61, 0xe9, 0x96, 0xb0, 0x9c, 0xae, 0xcb, 0xed, 0xc3, + 0x6c, 0x45, 0x6e, 0xd5, 0x2c, 0x5e, 0xd6, 0x61, 0xeb, 0xf9, 0xd0, 0xee, 0x0b, 0x0d, 0x69, 0x8f, + 0xdb, 0x7f, 0x2d, 0xed, 0x72, 0xa2, 0x8a, 0xab, 0x46, 0xc9, 0xc5, 0xe5, 0xc9, 0x5d, 0xb1, 0x42, + 0x5e, 0x58, 0x92, 0xb7, 0x1e, 0xb1, 0x07, 0x68, 0xc9, 0xff, 0xc7, 0x62, 0x55, 0xed, 0x6e, 0xb4, + 0xda, 0xbb, 0x97, 0x00, 0x2f, 0xd3, 0xb7, 0x85, 0x10, 0x7f, 0x08, 0x7d, 0xd7, 0xdb, 0xda, 0x69, + 0xcf, 0xf1, 0x0e, 0xa4, 0x57, 0x79, 0x30, 0xa1, 0x33, 0x3c, 0x11, 0x79, 0xe0, 0xf0, 0xae, 0x1a, + 0xd4, 0x70, 0x11, 0x9a, 0x3b, 0x98, 0xc2, 0xba, 0x5e, 0x2c, 0x6f, 0x50, 0x36, 0x2e, 0x66, 0xfa, + 0x90, 0x2d, 0x3a, 0x92, 0xc2, 0x6e, 0x32, 0x58, 0xb1, 0xe7, 0xae, 0xde, 0xfe, 0x4b, 0x0b, 0xc3, + 0xd7, 0xa8, 0x13, 0x31, 0xb0, 0x40, 0x33, 0xea, 0x00, 0x18, 0xdb, 0x0a, 0x00, 0xa3, 0x0e, 0x1e, + 0x1b, 0xcb, 0xae, 0xb0, 0xad, 0xe9, 0x5f, 0xeb, 0x49, 0xcf, 0x97, 0x25, 0xad, 0x43, 0x0d, 0x5b, + 0x40, 0xb3, 0x2d, 0x3d, 0x62, 0x72, 0x6f, 0x6a, 0x1d, 0xa6, 0xea, 0xc9, 0xfd, 0x85, 0x98, 0x98, + 0x1b, 0x27, 0xf4, 0x58, 0x6f, 0x4a, 0x8d, 0x89, 0xfc, 0xa8, 0x82, 0x2a, 0x26, 0xbc, 0x56, 0x78, + 0xe4, 0x4d, 0x8a, 0xbb, 0x32, 0x83, 0xc7, 0x15, 0x1a, 0x92, 0xc5, 0xa2, 0x5e, 0x2c, 0xec, 0x9e, + 0xb5, 0xde, 0xd9, 0xe8, 0x93, 0x4d, 0xac, 0xbb, 0xa0, 0xde, 0xcf, 0x11, 0xaf, 0xc6, 0x6f, 0xeb, + 0xe5, 0xe5, 0x7d, 0x6b, 0x5e, 0x0e, 0xfa, 0x55, 0x63, 0xd8, 0x68, 0xf4, 0xab, 0xd6, 0x2c, 0xa7, + 0xed, 0x59, 0x36, 0x20, 0xb3, 0x1a, 0xd9, 0x32, 0x6a, 0x0e, 0xb4, 0xa0, 0x84, 0xfc, 0x43, 0xc5, + 0xfd, 0xe1, 0x41, 0x1c, 0xed, 0x07, 0xee, 0x20, 0x5a, 0x2c, 0xea, 0x0b, 0xbc, 0xc2, 0xcb, 0x22, + 0x74, 0x19, 0xb9, 0x78, 0xef, 0x53, 0xeb, 0xf3, 0xd8, 0x1a, 0xef, 0x27, 0x65, 0xdc, 0xb3, 0x03, + 0x7a, 0x10, 0x20, 0x7f, 0x76, 0x61, 0x45, 0xaf, 0x0d, 0x1e, 0x47, 0x2c, 0xc6, 0xb5, 0x41, 0xb1, + 0x2c, 0x38, 0xc2, 0xba, 0x6c, 0xa5, 0x96, 0x4d, 0x7e, 0x98, 0x75, 0xb1, 0x7c, 0x3f, 0xd9, 0xda, + 0xaa, 0xe4, 0xa7, 0x65, 0x50, 0x8f, 0x82, 0xe4, 0x43, 0x17, 0x1f, 0xc2, 0x9a, 0xaa, 0xe6, 0x7c, + 0xfe, 0x5d, 0xde, 0x9c, 0x00, 0x71, 0xd0, 0x8b, 0xfa, 0x00, 0xa0, 0xfd, 0x84, 0xa5, 0xda, 0x23, + 0x02, 0xe1, 0x02, 0xb9, 0x23, 0x94, 0xf9, 0xc6, 0x47, 0x7d, 0x54, 0x5e, 0x6f, 0x57, 0xce, 0x05, + 0x08, 0x41, 0xa2, 0x1d, 0x0d, 0xee, 0x70, 0xc7, 0x66, 0x3f, 0x19, 0xa0, 0x90, 0x13, 0x34, 0x5f, + 0x0a, 0x2f, 0x38, 0x4c, 0x88, 0x79, 0x02, 0xb3, 0x87, 0xf9, 0x71, 0x11, 0x4a, 0x27, 0x72, 0x49, + 0xdb, 0x55, 0x85, 0x2a, 0x75, 0x60, 0x1c, 0x26, 0x7f, 0x4f, 0xcd, 0xef, 0x0c, 0x6f, 0x4c, 0x3a, + 0xf2, 0xc0, 0xec, 0x97, 0x67, 0x08, 0x37, 0x1d, 0x5a, 0xdb, 0x9a, 0x77, 0xf9, 0x10, 0xef, 0x67, + 0x48, 0x5b, 0x69, 0xc7, 0xdb, 0x51, 0x9e, 0x01, 0x3b, 0x5e, 0xc7, 0x27, 0x22, 0xcd, 0xc0, 0x5b, + 0x31, 0xe3, 0xd1, 0x89, 0xa5, 0xc2, 0x8c, 0x85, 0xb6, 0x9a, 0x1d, 0xd7, 0x7d, 0x2b, 0xf9, 0xc4, + 0x55, 0xcf, 0xe0, 0x01, 0x14, 0xfb, 0xf8, 0xb0, 0x4b, 0x9c, 0x1a, 0xc7, 0xc9, 0xb2, 0x83, 0x54, + 0x50, 0xb6, 0x8e, 0x8f, 0x7a, 0x07, 0x51, 0x00, 0xe3, 0xbb, 0x00, 0x29, 0xa5, 0x17, 0xfc, 0xf1, + 0x6b, 0xd8, 0x75, 0xc1, 0x14, 0x30, 0x12, 0x1d, 0x3c, 0x94, 0xcd, 0x41, 0x97, 0x11, 0x65, 0xb9, + 0xa7, 0xb8, 0x67, 0x10, 0xf2, 0xca, 0x9f, 0xbd, 0xb7, 0x2c, 0x63, 0x64, 0x74, 0xd2, 0x1c, 0xdd, + 0xf8, 0xce, 0xaf, 0x06, 0x9e, 0xf6, 0x30, 0xf7, 0x8c, 0x7f, 0x7d, 0xb0, 0x33, 0x3b, 0x56, 0x40, + 0x90, 0x73, 0xa3, 0x4d, 0xb6, 0xd9, 0xd7, 0x82, 0x6a, 0x00, 0x1b, 0x6b, 0x65, 0x4a, 0x36, 0xde, + 0x98, 0x61, 0xc9, 0xf5, 0x8b, 0x7f, 0xb1, 0x9a, 0x63, 0xe4, 0x64, 0x19, 0x59, 0xd2, 0x90, 0x13, + 0x94, 0xa5, 0x54, 0x43, 0xc7, 0xb4, 0x5f, 0x97, 0xcd, 0xd7, 0x63, 0xe7, 0xf5, 0xf8, 0xea, 0x73, + 0xc3, 0x9b, 0x56, 0xfa, 0xca, 0xe0, 0x4e, 0x98, 0x10, 0xa7, 0x6a, 0xa1, 0x5c, 0x76, 0x82, 0x0e, + 0x97, 0xbe, 0x2d, 0x2d, 0xcd, 0x63, 0xc5, 0x44, 0xc0, 0x19, 0xaa, 0x4b, 0x43, 0x66, 0x79, 0xae, + 0xce, 0xe8, 0xb5, 0xb2, 0x59, 0x15, 0x5f, 0xe6, 0xa5, 0x8d, 0xf9, 0x9a, 0x05, 0x0b, 0x86, 0x48, + 0xe0, 0x7e, 0x50, 0x62, 0x87, 0x86, 0x1d, 0xbb, 0x01, 0x2e, 0x73, 0x94, 0x12, 0x93, 0x29, 0x1e, + 0xdd, 0x3a, 0xac, 0x28, 0xc4, 0xfb, 0xfb, 0xe2, 0x45, 0xbf, 0xc3, 0x83, 0xa0, 0x43, 0x96, 0xeb, + 0xce, 0x17, 0x84, 0x1f, 0xb0, 0xbc, 0x0a, 0x3a, 0x74, 0x57, 0x80, 0xe1, 0x4b, 0xac, 0x81, 0x33, + 0xf7, 0x82, 0xa3, 0xdd, 0xee, 0xa3, 0x3f, 0x75, 0xfa, 0x05, 0x36, 0x2e, 0xf7, 0x12, 0xa2, 0x6e, + 0x9a, 0x75, 0xc6, 0x4c, 0x22, 0x8b, 0xc5, 0xb3, 0x3f, 0xca, 0x9f, 0x23, 0xd8, 0xb6, 0xc6, 0x50, + 0xfd, 0xb3, 0xc5, 0x93, 0x76, 0x7e, 0x42, 0x12, 0x80, 0x7d, 0x9b, 0x80, 0x8e, 0x3d, 0x41, 0x97, + 0xc4, 0xeb, 0xfc, 0x62, 0x3a, 0xf9, 0x82, 0xc3, 0x92, 0xe0, 0x08, 0x78, 0x6c, 0xc2, 0x9e, 0x8a, + 0x3b, 0x16, 0xfc, 0x99, 0xe1, 0xc0, 0x4b, 0x66, 0xc7, 0xd0, 0x47, 0x40, 0xb9, 0x7a, 0x6f, 0xe1, + 0xba, 0x9c, 0x4b, 0x37, 0x1a, 0x63, 0x19, 0xb0, 0xc9, 0x9e, 0x4b, 0x98, 0x22, 0x40, 0x3d, 0xb6, + 0x27, 0x80, 0xd3, 0x21, 0x01, 0x4b, 0xe3, 0xc0, 0xe7, 0x21, 0x3f, 0x3b, 0x6e, 0x8e, 0xf9, 0x12, + 0xc1, 0xe5, 0xf3, 0x01, 0xdf, 0x5c, 0xf9, 0x34, 0x3b, 0x3e, 0x83, 0x89, 0xdc, 0xb9, 0xea, 0x02, + 0x41, 0x2c, 0x54, 0x33, 0x38, 0x6f, 0x06, 0xdd, 0x36, 0x83, 0xd0, 0xdf, 0x14, 0x46, 0x8c, 0xf9, + 0xc0, 0x3c, 0x8b, 0x67, 0xef, 0x43, 0xe8, 0x48, 0xb1, 0xb7, 0xac, 0xb6, 0x10, 0xcb, 0x50, 0x08, + 0xae, 0xa3, 0x4c, 0xdc, 0xa5, 0x5f, 0x68, 0x3e, 0xba, 0x50, 0x2d, 0xb6, 0xe7, 0xc1, 0xea, 0x85, + 0x5d, 0x11, 0x47, 0xbe, 0xfe, 0x10, 0x76, 0x4d, 0x0a, 0xc5, 0x22, 0xfd, 0x9e, 0x3a, 0xef, 0xa0, + 0x72, 0x30, 0x2c, 0xb0, 0x30, 0x4e, 0x24, 0xec, 0x08, 0x56, 0x87, 0x39, 0x08, 0x09, 0xeb, 0x08, + 0x25, 0xb3, 0xeb, 0xea, 0x1d, 0xd4, 0x26, 0x52, 0x77, 0x59, 0x58, 0x25, 0xc1, 0x82, 0xf0, 0xc9, + 0x6c, 0x88, 0x10, 0xf6, 0xec, 0x54, 0x13, 0x26, 0xf1, 0xe9, 0xaa, 0x0b, 0x19, 0xf8, 0x4e, 0x75, + 0x24, 0x37, 0x14, 0xaf, 0x68, 0xdb, 0xbd, 0x68, 0x73, 0x5f, 0x50, 0x8f, 0xb1, 0xa9, 0x49, 0x35, + 0x00, 0xb9, 0xfb, 0xb5, 0x7c, 0xbb, 0x8f, 0xc9, 0x77, 0x5f, 0x72, 0x4f, 0xe2, 0xad, 0x52, 0xcf, + 0xcc, 0x94, 0x2b, 0x67, 0xc2, 0x65, 0x86, 0x51, 0x25, 0x90, 0xbb, 0xd6, 0xaa, 0x8c, 0x70, 0x6d, + 0xaf, 0x5d, 0xef, 0x68, 0x3b, 0xf6, 0xb8, 0x40, 0x0b, 0x65, 0xdf, 0xa9, 0xc3, 0x71, 0x36, 0x19, + 0xf8, 0x6e, 0x9e, 0x17, 0x68, 0xb1, 0x5f, 0x04, 0x6e, 0x8f, 0x03, 0x11, 0x9b, 0x2d, 0x6c, 0x1f, + 0x58, 0x2d, 0x3d, 0xae, 0xa2, 0xbb, 0x06, 0x7c, 0x46, 0x32, 0x6e, 0x22, 0x35, 0x3f, 0xa2, 0x3a, + 0x5d, 0x07, 0x9a, 0x2d, 0x4c, 0x6b, 0x95, 0x02, 0x36, 0x66, 0x8e, 0x01, 0xde, 0x80, 0xa2, 0xcd, + 0x11, 0xd9, 0x2e, 0x11, 0xb6, 0x71, 0x7d, 0x19, 0xb6, 0x2c, 0x19, 0xba, 0x83, 0xb6, 0xf3, 0xb5, + 0xfb, 0x7b, 0xa2, 0x4f, 0xe9, 0x23, 0xcf, 0x72, 0xbd, 0xa8, 0xf2, 0x1d, 0xf6, 0xf1, 0x13, 0x62, + 0x89, 0xf1, 0x8b, 0xcb, 0xd1, 0x69, 0x55, 0xf8, 0x95, 0x85, 0x11, 0x0b, 0x43, 0x04, 0xa6, 0xc2, + 0x31, 0xd2, 0xc8, 0x70, 0x3d, 0xa8, 0x85, 0xa6, 0x4e, 0xac, 0x12, 0xba, 0xfc, 0x3d, 0xd2, 0x1e, + 0x65, 0xc1, 0xc5, 0xdb, 0xb8, 0xb3, 0x4b, 0x09, 0x82, 0x90, 0xf9, 0xa7, 0x8e, 0xf0, 0x49, 0x38, + 0x60, 0xa8, 0xa6, 0x5d, 0x21, 0x22, 0xb3, 0xbe, 0x98, 0xf2, 0x4a, 0xc2, 0x79, 0x7a, 0x05, 0xcc, + 0xd9, 0xc8, 0x4f, 0x39, 0x87, 0xfd, 0xe4, 0xfc, 0x2a, 0x86, 0x65, 0x19, 0xfe, 0xbf, 0x8d, 0xf1, + 0x2c, 0x0a, 0xf4, 0x76, 0xfb, 0x8a, 0xcb, 0x41, 0xe4, 0x72, 0x3b, 0xef, 0x20, 0xa8, 0xe0, 0x45, + 0x3e, 0x17, 0x7b, 0x57, 0x76, 0xb4, 0xfd, 0xe7, 0xb5, 0x78, 0xc1, 0xe2, 0x0e, 0xea, 0x5c, 0xf8, + 0x14, 0x38, 0x1c, 0x95, 0x3e, 0x24, 0xd8, 0x25, 0x89, 0x82, 0x43, 0xcc, 0x82, 0x85, 0x83, 0xc0, + 0x85, 0xa9, 0x4b, 0xc1, 0x78, 0xba, 0x58, 0x65, 0xe8, 0xf0, 0x53, 0x27, 0x01, 0xd3, 0xf5, 0x26, + 0x41, 0x22, 0xec, 0x1a, 0x86, 0x66, 0xe8, 0xbb, 0x64, 0x4b, 0x1a, 0x6e, 0xbb, 0x08, 0x5d, 0xa6, + 0x25, 0xfd, 0xe2, 0x32, 0x74, 0x69, 0x96, 0x0c, 0x40, 0x37, 0x77, 0x20, 0xd8, 0xde, 0xdb, 0x9f, + 0xb8, 0x12, 0xf7, 0xa7, 0x74, 0xf6, 0x61, 0x9d, 0x82, 0x74, 0x1b, 0x06, 0xbc, 0x5a, 0x87, 0xfb, + 0x84, 0x3d, 0xd2, 0x6e, 0xc5, 0x7e, 0xc6, 0x8b, 0xcd, 0x0e, 0xac, 0x95, 0x55, 0x7e, 0x2a, 0xb3, + 0x79, 0x1e, 0x04, 0x9a, 0x43, 0x69, 0xac, 0x25, 0x29, 0x4d, 0x58, 0x36, 0x59, 0x0f, 0x5b, 0xb5, + 0x1f, 0x78, 0x92, 0x76, 0xc6, 0x11, 0xfb, 0x46, 0x84, 0x43, 0x27, 0xa4, 0x1c, 0x56, 0xd2, 0x0f, + 0x24, 0xcc, 0x9b, 0xdd, 0xd4, 0xae, 0xc6, 0xbf, 0x6b, 0x51, 0x52, 0x07, 0x94, 0xd8, 0xe0, 0x01, + 0xdb, 0xc1, 0xbf, 0xea, 0xe0, 0x1c, 0x54, 0x94, 0x69, 0x91, 0xef, 0xbd, 0x62, 0x09, 0xca, 0xdb, + 0x0f, 0xf9, 0x2f, 0x97, 0x23, 0x1f, 0x7a, 0x5a, 0x0a, 0x3d, 0x0d, 0x7a, 0x99, 0xea, 0x6b, 0xf5, + 0x5c, 0x5b, 0x2e, 0xef, 0xb6, 0x93, 0x83, 0x7a, 0x4b, 0x08, 0x47, 0xbf, 0x19, 0x0e, 0x87, 0x9d, + 0xdd, 0xee, 0xc1, 0x77, 0x61, 0x07, 0x89, 0xbd, 0xd1, 0xe7, 0xb8, 0xd8, 0xf1, 0x42, 0xfc, 0x7b, + 0x29, 0xff, 0x8e, 0x60, 0x09, 0xc7, 0xe9, 0x68, 0x85, 0x84, 0xc3, 0x36, 0xf9, 0x7e, 0xfd, 0x4b, + 0xe4, 0x8b, 0xa2, 0x68, 0x33, 0xf9, 0xac, 0x2f, 0xff, 0x43, 0x57, 0xac, 0xdd, 0x5a, 0x9f, 0x45, + 0x0a, 0xbb, 0x13, 0x33, 0x4a, 0xa0, 0x9b, 0xf0, 0x35, 0xfc, 0x60, 0xde, 0x05, 0xe5, 0x8f, 0x0d, + 0x5f, 0x9f, 0xc5, 0x17, 0x64, 0x91, 0x78, 0xf2, 0x04, 0xd9, 0x34, 0x08, 0x5f, 0xd0, 0x9e, 0x3a, + 0xe5, 0xbd, 0x7d, 0xd1, 0x9a, 0x42, 0x1f, 0xae, 0x98, 0x14, 0x3a, 0x13, 0x9b, 0xf7, 0xc7, 0xee, + 0xb2, 0xfd, 0xc6, 0xa1, 0xa1, 0x19, 0x2b, 0xcf, 0x03, 0xc4, 0x60, 0xe5, 0x0d, 0xb2, 0x1e, 0xf2, + 0xde, 0x37, 0x88, 0x6c, 0x6c, 0x83, 0x37, 0xc2, 0x50, 0x90, 0x1b, 0x66, 0x32, 0x37, 0x9b, 0x88, + 0x93, 0xc9, 0x70, 0x18, 0x45, 0x9e, 0x01, 0xbd, 0x5c, 0x31, 0xcc, 0x12, 0x86, 0xad, 0xac, 0x82, + 0x41, 0x44, 0x07, 0x93, 0x72, 0x52, 0xe9, 0xd5, 0x74, 0x55, 0x35, 0xed, 0xc8, 0xe5, 0x13, 0x31, + 0xe4, 0x74, 0xa7, 0xc0, 0x43, 0x11, 0x79, 0xa2, 0x00, 0x8a, 0x98, 0x33, 0x7e, 0x40, 0xbf, 0xad, + 0x82, 0xb8, 0x16, 0xf4, 0xea, 0x6a, 0x08, 0xcb, 0x5b, 0x0a, 0xf5, 0x51, 0xde, 0x42, 0x43, 0xc2, + 0xff, 0xd1, 0xd2, 0x29, 0xfb, 0x6b, 0xb8, 0xe0, 0x6a, 0xad, 0x01, 0x6d, 0xb1, 0x5a, 0x90, 0x2b, + 0xa7, 0x2b, 0xfd, 0xdd, 0x98, 0x3d, 0x9c, 0x7c, 0x4e, 0xd7, 0xe6, 0x53, 0x7a, 0xad, 0x53, 0x40, + 0x2d, 0x9f, 0x5f, 0xd7, 0xe6, 0x73, 0xeb, 0xb5, 0xce, 0x19, 0xb5, 0x7c, 0xfe, 0xd1, 0xcc, 0xc7, + 0x9f, 0x73, 0x8f, 0x8f, 0xdb, 0x46, 0xc6, 0xa2, 0x96, 0x1e, 0x07, 0xb3, 0xd3, 0x4b, 0x6b, 0xeb, + 0x42, 0x58, 0x25, 0x6d, 0xab, 0x82, 0x3c, 0xb8, 0xaa, 0xaf, 0x09, 0x7d, 0xd3, 0x59, 0xce, 0x71, + 0xd8, 0x1a, 0xcf, 0x32, 0x82, 0xbc, 0x38, 0x67, 0xb7, 0x9e, 0xac, 0x75, 0xc7, 0x51, 0xef, 0x9b, + 0x45, 0x22, 0xc2, 0x7a, 0xd8, 0x25, 0x92, 0x1d, 0xd4, 0xc2, 0x46, 0x49, 0xa9, 0xd0, 0xe5, 0xe5, + 0xab, 0x5a, 0x11, 0x7f, 0x73, 0x3d, 0x72, 0xf5, 0x66, 0x20, 0x6c, 0xdf, 0xf9, 0x54, 0x8d, 0x31, + 0x22, 0x54, 0x99, 0xf9, 0x2b, 0x32, 0x82, 0xdb, 0xf9, 0x44, 0xcd, 0x36, 0x26, 0x47, 0xc6, 0x7c, + 0xf9, 0x0e, 0x8b, 0x4e, 0x5b, 0xc3, 0x2c, 0x4c, 0x61, 0xd5, 0xa9, 0x7d, 0x13, 0x96, 0x9b, 0x08, + 0xf7, 0xa4, 0x02, 0xa1, 0xaa, 0xa0, 0x85, 0x7e, 0x4c, 0x61, 0xd6, 0xf4, 0x11, 0x46, 0x7c, 0x6d, + 0x97, 0x21, 0xa2, 0xee, 0xde, 0x16, 0x26, 0x35, 0x54, 0x88, 0x7e, 0xde, 0x6a, 0x7f, 0xd3, 0x5b, + 0xa9, 0x40, 0x9d, 0x3a, 0xd6, 0x77, 0x0a, 0x43, 0x68, 0x85, 0x52, 0xd1, 0xf6, 0x4d, 0xf7, 0x8a, + 0x38, 0x0f, 0x87, 0xd0, 0x08, 0x99, 0x09, 0xba, 0xa4, 0xa0, 0x51, 0x92, 0x9a, 0xa0, 0x11, 0x05, + 0xdd, 0xc1, 0xe2, 0x56, 0xab, 0x30, 0xfa, 0x88, 0x3a, 0xd6, 0x87, 0x8f, 0xc4, 0x9f, 0x3e, 0x9d, + 0x85, 0xf4, 0xdf, 0xd9, 0x62, 0x21, 0x8f, 0xbd, 0x91, 0x32, 0x80, 0x62, 0x27, 0x9f, 0xb8, 0x72, + 0xf2, 0xb3, 0xfa, 0xb1, 0xb6, 0x63, 0x6f, 0x1d, 0xa6, 0xe8, 0x01, 0xde, 0x7e, 0x24, 0x30, 0x1e, + 0x57, 0xb6, 0x5d, 0xda, 0xd1, 0x07, 0x8a, 0xeb, 0xea, 0xc3, 0x65, 0xfa, 0xa7, 0x4e, 0x44, 0x18, + 0x15, 0xf4, 0x5c, 0x53, 0xde, 0x8b, 0xc5, 0x53, 0xd4, 0x0f, 0x3f, 0x24, 0xbd, 0xf3, 0xa5, 0xa4, + 0xec, 0x62, 0x0f, 0x2f, 0x26, 0xf8, 0x36, 0x2c, 0xa7, 0x17, 0xc1, 0xce, 0x32, 0xf1, 0x71, 0x2e, + 0x95, 0x1c, 0x3c, 0xaf, 0x7f, 0xfe, 0xe9, 0x04, 0xc5, 0x2d, 0x02, 0x36, 0x89, 0xbc, 0xc5, 0xf9, + 0x86, 0xa7, 0x7b, 0x11, 0xd2, 0x95, 0x98, 0xa7, 0xf7, 0xd7, 0xd8, 0x87, 0xda, 0xe9, 0xb5, 0x87, + 0x63, 0xa6, 0xd6, 0xc6, 0x88, 0x12, 0x8c, 0x74, 0xd0, 0x60, 0x45, 0xc5, 0x9b, 0x30, 0x41, 0xdc, + 0xc6, 0xdf, 0x4a, 0x6f, 0x16, 0xbc, 0x23, 0xbe, 0x1a, 0xdb, 0xdb, 0x61, 0x64, 0x82, 0xf9, 0x6f, + 0x9c, 0x40, 0xa5, 0x9c, 0xf8, 0xcc, 0x64, 0x42, 0x48, 0x21, 0x74, 0x39, 0xad, 0xae, 0x6e, 0x46, + 0x68, 0xea, 0x7f, 0xfa, 0x72, 0x5a, 0x8c, 0xf3, 0x3c, 0xff, 0x3c, 0x15, 0x4f, 0x91, 0x75, 0x0a, + 0xaa, 0xe5, 0xf3, 0x14, 0x2d, 0x0e, 0x16, 0xda, 0x36, 0x69, 0xba, 0x0a, 0x9a, 0xcd, 0xf7, 0xaf, + 0xc6, 0x3b, 0x49, 0xf7, 0x45, 0x70, 0xb4, 0x8f, 0xa0, 0xad, 0x3e, 0x7e, 0x36, 0x08, 0xaf, 0xc6, + 0x47, 0x3d, 0xf5, 0xb8, 0x1f, 0xe1, 0x6a, 0xf8, 0xec, 0x59, 0x92, 0x5c, 0x8d, 0x29, 0x64, 0x27, + 0xd9, 0xc7, 0x90, 0xe8, 0x85, 0x15, 0x02, 0x19, 0xa8, 0x0d, 0x20, 0x02, 0x82, 0x05, 0x8e, 0x6a, + 0x75, 0x7e, 0x55, 0xa2, 0x93, 0xe9, 0xd5, 0x78, 0x11, 0x76, 0x10, 0x7e, 0x2d, 0xec, 0x1c, 0x44, + 0xdf, 0x21, 0xef, 0x6e, 0xf8, 0x43, 0x57, 0xc2, 0x7e, 0xc3, 0xa6, 0xb1, 0x70, 0x20, 0x80, 0x21, + 0xe0, 0x17, 0xb2, 0xce, 0xb2, 0xf1, 0x18, 0xdf, 0x3b, 0x73, 0x24, 0x69, 0x7b, 0xa0, 0x89, 0x79, + 0x81, 0xa4, 0x81, 0xea, 0x88, 0xe5, 0xea, 0x9c, 0xed, 0x7f, 0x88, 0x20, 0xb1, 0x93, 0x69, 0x71, + 0xdd, 0xf9, 0x45, 0x8c, 0xf2, 0x5c, 0x6a, 0xd6, 0x3e, 0x7f, 0x1f, 0x36, 0xf2, 0x0d, 0x2e, 0xa6, + 0x42, 0x4c, 0x12, 0x0d, 0x1c, 0xa8, 0x0c, 0x38, 0x4a, 0xe4, 0x53, 0x17, 0xb6, 0x18, 0xf6, 0x20, + 0xa5, 0x3b, 0x95, 0x17, 0x25, 0xcb, 0xa8, 0xca, 0x70, 0x1a, 0xfc, 0x49, 0x69, 0xf9, 0xcb, 0x46, + 0xd8, 0x53, 0xe2, 0x1b, 0x54, 0x32, 0x84, 0x4b, 0xb2, 0x9b, 0xd4, 0xb3, 0xa3, 0x3a, 0xd5, 0x27, + 0xdd, 0x5e, 0xdf, 0xf6, 0x69, 0x9b, 0xb3, 0x0b, 0x45, 0xc4, 0x67, 0xd9, 0x9a, 0x62, 0x5c, 0xba, + 0x4a, 0x9d, 0x2d, 0x18, 0x20, 0x92, 0xcf, 0xde, 0x18, 0x2c, 0x23, 0x9f, 0x25, 0xd7, 0x77, 0xa1, + 0x15, 0x00, 0xe9, 0xff, 0x45, 0x56, 0x0e, 0x2b, 0xca, 0xc7, 0xe4, 0xfa, 0xca, 0x06, 0xda, 0xef, + 0x3a, 0xae, 0x5f, 0xb6, 0x7f, 0x9c, 0x3c, 0x43, 0x5f, 0xee, 0x8d, 0x47, 0x46, 0x19, 0x89, 0x56, + 0xfb, 0x1a, 0xe6, 0x69, 0x1b, 0x1c, 0x7a, 0x66, 0x85, 0xbb, 0xcc, 0x0e, 0xc4, 0x00, 0x76, 0x5a, + 0xe5, 0x05, 0x6c, 0x76, 0x71, 0xdc, 0x1e, 0x57, 0xe2, 0xda, 0xf7, 0xee, 0x52, 0x62, 0xa1, 0xb8, + 0xf7, 0xa4, 0x5b, 0x19, 0xee, 0xf5, 0xd8, 0x18, 0x62, 0x19, 0x44, 0x2b, 0x26, 0x4a, 0x41, 0x9f, + 0xb4, 0x5b, 0xba, 0x96, 0x81, 0x7f, 0x0c, 0x75, 0x9a, 0xf9, 0x22, 0xbc, 0x99, 0x71, 0xe3, 0x20, + 0x39, 0xa5, 0x6f, 0xef, 0x0b, 0x17, 0x4e, 0xbc, 0xf9, 0x22, 0xbc, 0xd4, 0x47, 0x6f, 0x5c, 0x88, + 0x28, 0x94, 0xe8, 0xb8, 0x96, 0x98, 0x65, 0x43, 0xcc, 0xb0, 0x06, 0xc2, 0x3c, 0x9f, 0xc5, 0x76, + 0xc6, 0xe1, 0xad, 0x0d, 0x20, 0x0b, 0x0f, 0x8b, 0xa6, 0xa6, 0x1d, 0x0a, 0x87, 0x78, 0x4a, 0x84, + 0x3f, 0xfc, 0xe0, 0x1c, 0x7b, 0xd5, 0x05, 0xa3, 0x99, 0xb9, 0x0d, 0x80, 0x19, 0x3e, 0x7c, 0x3f, + 0x98, 0x91, 0xee, 0xb0, 0x23, 0x02, 0x77, 0xc6, 0xfd, 0x0a, 0x38, 0x66, 0x1b, 0x87, 0x79, 0x43, + 0x70, 0xe5, 0x12, 0x8d, 0x76, 0x76, 0xfd, 0xba, 0xa7, 0x2b, 0x50, 0xdb, 0x4e, 0x25, 0x41, 0x2b, + 0x41, 0x1e, 0xe8, 0x69, 0x33, 0xa8, 0x9b, 0xfe, 0x1a, 0x85, 0xdf, 0xe9, 0x42, 0xf1, 0x17, 0xe1, + 0x41, 0x04, 0x73, 0xb5, 0xbf, 0x0e, 0x3d, 0xd8, 0x5a, 0x10, 0x11, 0xd9, 0x9a, 0x00, 0x85, 0x74, + 0xd7, 0x14, 0xcb, 0x75, 0x31, 0x0d, 0x43, 0x81, 0x36, 0x7f, 0xb9, 0xc9, 0xa9, 0x3b, 0xf6, 0x6a, + 0x20, 0x0a, 0x89, 0x67, 0xba, 0x9a, 0x87, 0x73, 0x9a, 0x78, 0x33, 0x72, 0xd1, 0x84, 0x95, 0xad, + 0x02, 0x95, 0xa2, 0xdb, 0x9f, 0x1e, 0x6a, 0x84, 0x9d, 0xa9, 0xe2, 0x47, 0xc8, 0x92, 0xf2, 0xd3, + 0xf4, 0x2c, 0x4c, 0x37, 0xe4, 0xad, 0x04, 0xf5, 0xff, 0x9f, 0xb3, 0x99, 0x28, 0x5e, 0x0d, 0x11, + 0x0e, 0xbd, 0x9f, 0xd5, 0xa4, 0x4f, 0xb5, 0x29, 0x5d, 0x16, 0xc1, 0x8d, 0x8f, 0xb4, 0x8f, 0xca, + 0xfd, 0x18, 0x5a, 0xd9, 0x62, 0x2a, 0x4c, 0xc5, 0x30, 0x63, 0xe0, 0xf3, 0x36, 0x3c, 0x10, 0x39, + 0x7e, 0x05, 0xed, 0x0b, 0xa6, 0xf9, 0x4d, 0xe9, 0x56, 0xa1, 0x52, 0x79, 0x90, 0x2c, 0xc2, 0x76, + 0x38, 0xc6, 0x4c, 0xb0, 0xa9, 0xde, 0xe0, 0xe6, 0x81, 0x16, 0x77, 0xfe, 0xe5, 0xd1, 0x89, 0x33, + 0xaa, 0x2c, 0xde, 0xe4, 0x9e, 0x7c, 0xdf, 0xd1, 0xe4, 0x88, 0xb4, 0x80, 0x99, 0x6a, 0x9c, 0x3d, + 0x44, 0x53, 0x61, 0x42, 0x8d, 0x69, 0x5a, 0x11, 0x01, 0x46, 0x4b, 0x75, 0xf3, 0xc9, 0x35, 0x5d, + 0x01, 0x51, 0x17, 0x38, 0xcf, 0x9a, 0x74, 0x52, 0xea, 0xe0, 0xba, 0xeb, 0xec, 0xf7, 0x29, 0xdb, + 0xb7, 0xf7, 0x8a, 0xab, 0x46, 0xd8, 0xc4, 0x81, 0x95, 0x22, 0xa7, 0x55, 0x8e, 0xf9, 0x4a, 0x63, + 0x8c, 0xce, 0x74, 0x59, 0x75, 0xc6, 0x03, 0x43, 0x94, 0x3a, 0x49, 0xab, 0xf8, 0xd1, 0x75, 0xf0, + 0xb5, 0xa5, 0xac, 0xa0, 0x94, 0x95, 0x76, 0xc7, 0x30, 0xa5, 0x75, 0x46, 0x03, 0xe2, 0xb2, 0x0e, + 0xab, 0x97, 0x85, 0xd9, 0x87, 0x87, 0x48, 0xa6, 0x69, 0x20, 0x9f, 0xb0, 0x0e, 0xdc, 0xeb, 0xea, + 0x02, 0xef, 0xe7, 0x04, 0xaa, 0x97, 0xd2, 0x53, 0x9f, 0x35, 0xe4, 0x0c, 0x8f, 0xfe, 0xb2, 0x84, + 0xb6, 0xd7, 0x14, 0x9e, 0x7c, 0xca, 0xce, 0x90, 0xf6, 0xc5, 0xaf, 0x38, 0x9e, 0xcc, 0x34, 0x38, + 0x2c, 0x03, 0x8d, 0xc9, 0x05, 0x9b, 0xa8, 0xf4, 0xb0, 0xdc, 0xad, 0xfa, 0x29, 0x74, 0x7d, 0x8e, + 0x45, 0x8b, 0x8d, 0xe0, 0x6b, 0x40, 0xbb, 0x5d, 0xe6, 0xc2, 0x6a, 0x08, 0x61, 0x81, 0xe6, 0x07, + 0xf3, 0xcc, 0x41, 0xd1, 0x77, 0xc5, 0xa9, 0x0a, 0x94, 0xc6, 0x82, 0xcc, 0xb7, 0x85, 0xb2, 0x10, + 0x87, 0x5c, 0xd9, 0xea, 0x72, 0x59, 0x11, 0xa5, 0x78, 0xf6, 0x6d, 0x1f, 0x94, 0xd2, 0x54, 0xaa, + 0x76, 0x36, 0xb5, 0x34, 0x1b, 0x76, 0xd8, 0x97, 0x3e, 0xd4, 0x96, 0xb7, 0x7e, 0x2e, 0xf5, 0x3d, + 0xa9, 0x2b, 0xce, 0xa4, 0xf3, 0x76, 0x8d, 0xe0, 0x19, 0x6a, 0xd4, 0x31, 0x36, 0x97, 0xad, 0xc6, + 0x66, 0x8b, 0x32, 0x58, 0x40, 0xc3, 0x57, 0x2e, 0x0b, 0xb3, 0x8a, 0xa5, 0x6f, 0xc9, 0xf0, 0xba, + 0xda, 0x72, 0x47, 0xc0, 0xc4, 0x08, 0xc5, 0x11, 0x35, 0xa7, 0x6a, 0x6c, 0x14, 0xb9, 0x9e, 0xca, + 0xf8, 0x23, 0x99, 0x74, 0x88, 0x2c, 0xac, 0x8f, 0xc4, 0xb3, 0x60, 0xa0, 0xee, 0xe8, 0x65, 0x67, + 0xc9, 0x4c, 0xfe, 0xd0, 0xa7, 0x19, 0xa1, 0xe9, 0x83, 0x3a, 0x16, 0x81, 0x69, 0x43, 0x13, 0xea, + 0x00, 0x89, 0xb7, 0x13, 0x18, 0x70, 0x1f, 0x1d, 0x96, 0x18, 0x5c, 0xac, 0x8c, 0xb0, 0x6e, 0xec, + 0x18, 0x44, 0x7b, 0x50, 0xcf, 0x0b, 0x01, 0xbf, 0x9d, 0x8c, 0x10, 0xa9, 0x48, 0xdd, 0xff, 0x91, + 0x5e, 0xee, 0xd6, 0x9e, 0x8c, 0xaf, 0x0f, 0x65, 0x44, 0x65, 0x67, 0x5d, 0x18, 0xca, 0x14, 0x05, + 0xd0, 0xd2, 0x14, 0xc6, 0x0b, 0x78, 0x36, 0xfd, 0x15, 0xf6, 0xf5, 0x10, 0xa0, 0x0e, 0x55, 0x32, + 0xfb, 0x9c, 0x37, 0x49, 0xd1, 0xc6, 0x9f, 0x36, 0x8f, 0x3b, 0x25, 0xb6, 0x37, 0x27, 0xa8, 0x1d, + 0x8e, 0x33, 0xa1, 0x03, 0xdd, 0x54, 0xc9, 0x96, 0x1e, 0xa9, 0x34, 0xee, 0x56, 0x31, 0x46, 0x89, + 0xc5, 0xcf, 0xbe, 0xa4, 0x04, 0x9e, 0xb7, 0xd9, 0x29, 0xcd, 0xa2, 0xfa, 0x13, 0xd7, 0xa3, 0x2c, + 0x63, 0x7c, 0x46, 0x33, 0xa2, 0x31, 0xc6, 0x37, 0x7c, 0x7f, 0x46, 0xe9, 0x4d, 0xe1, 0xb7, 0xb2, + 0xd8, 0x35, 0xdf, 0xd8, 0xee, 0x38, 0xfc, 0x76, 0xc1, 0x78, 0x15, 0xff, 0xfb, 0xaa, 0xc9, 0x88, + 0xa4, 0xfa, 0x2d, 0xf2, 0x12, 0x87, 0xef, 0x93, 0x67, 0x34, 0x0a, 0xa7, 0x24, 0x09, 0x6c, 0x90, + 0xef, 0x23, 0x49, 0x16, 0x42, 0x85, 0x3b, 0xa5, 0xf3, 0x46, 0x59, 0xeb, 0x7d, 0x4b, 0x7a, 0x26, + 0xdb, 0x98, 0x6b, 0x95, 0x41, 0x82, 0x66, 0x7c, 0xc8, 0x6f, 0xa0, 0x95, 0xca, 0x41, 0x3d, 0x00, + 0x59, 0x62, 0x84, 0x65, 0x64, 0x1d, 0x96, 0xc7, 0x45, 0x4e, 0xb0, 0x74, 0x98, 0x8b, 0x9a, 0x12, + 0x99, 0xec, 0x52, 0xd8, 0x14, 0x97, 0xb4, 0x49, 0xd1, 0xec, 0x8f, 0xe5, 0x6f, 0xa0, 0x4e, 0xfa, + 0x1e, 0xa4, 0xd5, 0x27, 0xe2, 0xb0, 0xff, 0x57, 0x5c, 0xa2, 0xf6, 0x6e, 0x7c, 0xfc, 0x59, 0xad, + 0x63, 0xb3, 0x31, 0x92, 0x05, 0xa8, 0x19, 0x09, 0x66, 0xaf, 0x61, 0x71, 0x29, 0xac, 0x61, 0x4c, + 0xd3, 0xbe, 0x0c, 0x74, 0x57, 0x5c, 0x1d, 0xa5, 0x6f, 0x8f, 0xf5, 0x2c, 0xa7, 0x3a, 0xf7, 0x82, + 0x87, 0x07, 0xbb, 0x18, 0x55, 0xed, 0xb9, 0x84, 0x67, 0x1f, 0x2a, 0x53, 0x55, 0x15, 0xe4, 0x86, + 0x16, 0xec, 0x7f, 0xe9, 0x8a, 0xbd, 0x7c, 0xf3, 0xe3, 0xab, 0xf7, 0xbe, 0x57, 0x0d, 0x47, 0x63, + 0xde, 0x8c, 0x82, 0x7e, 0xce, 0xad, 0x70, 0x26, 0x7b, 0xd6, 0x87, 0x7c, 0x16, 0xfe, 0xef, 0xab, + 0xb6, 0xab, 0x4c, 0xb2, 0x7b, 0x6d, 0xf9, 0xaa, 0x6d, 0xa2, 0xc0, 0x41, 0xd5, 0xa3, 0xbe, 0xcf, + 0xe5, 0xe7, 0x18, 0x4f, 0x9e, 0xd4, 0xea, 0xa1, 0x29, 0x56, 0x52, 0xed, 0xde, 0x23, 0x3f, 0x29, + 0x1d, 0x35, 0xd1, 0x16, 0xb5, 0x44, 0x16, 0xb9, 0x1d, 0x3f, 0xfb, 0xbe, 0x7c, 0x7a, 0xf7, 0x1b, + 0xec, 0x6a, 0xf3, 0xb7, 0xd3, 0x7b, 0x71, 0x81, 0x80, 0x98, 0xd1, 0x16, 0xce, 0xb1, 0x3e, 0x8b, + 0x7b, 0x14, 0x11, 0xca, 0x56, 0xa0, 0x03, 0x0e, 0x89, 0x0e, 0x19, 0x03, 0xd2, 0xa3, 0xbd, 0x6e, + 0x0f, 0xb6, 0x2d, 0x9b, 0x14, 0x15, 0x54, 0x18, 0xae, 0x19, 0xc8, 0x07, 0x4a, 0xcd, 0xbb, 0x2e, + 0x72, 0x85, 0xca, 0x61, 0xbb, 0x56, 0x7d, 0xf1, 0xbd, 0xdd, 0xdd, 0xa9, 0x17, 0x72, 0xba, 0x5d, + 0xc4, 0x0e, 0x4f, 0x93, 0xee, 0x6e, 0xaa, 0xec, 0x6c, 0x43, 0xdc, 0x78, 0x7d, 0x2e, 0xa5, 0x08, + 0xb0, 0x8b, 0x58, 0x96, 0xc7, 0xc4, 0x0b, 0xd3, 0x60, 0xd3, 0x7a, 0xed, 0x42, 0x46, 0x72, 0x44, + 0xd8, 0x8e, 0x5c, 0x84, 0x9b, 0x3f, 0xbf, 0xfb, 0x2d, 0x91, 0x3a, 0x39, 0x4d, 0x1f, 0x04, 0xaa, + 0xdd, 0xb7, 0x34, 0x6c, 0xba, 0xaa, 0x28, 0x2b, 0x98, 0x11, 0x93, 0xfb, 0xe5, 0xab, 0x3c, 0x45, + 0x21, 0xf0, 0x2b, 0x92, 0x72, 0x2c, 0x54, 0x61, 0x23, 0x65, 0x63, 0xa6, 0xf9, 0xc5, 0x49, 0x27, + 0x63, 0x4a, 0xd6, 0x03, 0x28, 0xfd, 0x33, 0x93, 0x0c, 0x49, 0x9b, 0x55, 0x56, 0x92, 0x1f, 0x84, + 0x5a, 0x1a, 0x66, 0x08, 0x54, 0xba, 0xee, 0x92, 0xbb, 0xdf, 0x1a, 0x04, 0x22, 0x1c, 0x81, 0x81, + 0x78, 0x09, 0x36, 0x8e, 0x02, 0x5e, 0x26, 0xb2, 0x93, 0xbc, 0x0c, 0xdb, 0x35, 0xbe, 0xd9, 0xf8, + 0xda, 0x0b, 0x65, 0x14, 0xf4, 0x60, 0xa0, 0x5f, 0x90, 0x3f, 0x2e, 0x95, 0xbd, 0x67, 0x4f, 0x9e, + 0xa8, 0xd4, 0x64, 0x28, 0x54, 0xe6, 0x48, 0xbc, 0xa1, 0x0a, 0xd5, 0xc5, 0xef, 0x9e, 0x3c, 0x81, + 0xd8, 0x10, 0x79, 0x1f, 0x7f, 0x1c, 0x76, 0x7b, 0x07, 0xd1, 0xa0, 0xb7, 0x1f, 0xc5, 0xbd, 0xe7, + 0xb0, 0xc2, 0x6c, 0xa1, 0x24, 0x18, 0x4a, 0x79, 0x91, 0xec, 0xf4, 0xfb, 0xe1, 0xc1, 0x7c, 0x81, + 0x42, 0xf9, 0x01, 0xc7, 0x17, 0xda, 0x9a, 0xa0, 0xe5, 0xf9, 0x86, 0x6b, 0xbd, 0x27, 0xa8, 0x75, + 0x8d, 0xaf, 0x39, 0x9e, 0x80, 0xec, 0x36, 0x90, 0x3e, 0xcb, 0x63, 0xe3, 0xe8, 0xdb, 0x95, 0xcf, + 0x3d, 0x87, 0xf9, 0xe5, 0x12, 0x25, 0xba, 0xb9, 0x09, 0x02, 0x15, 0x01, 0xf1, 0x06, 0x5e, 0x84, + 0xba, 0xe3, 0x4d, 0x95, 0x7b, 0x8f, 0x68, 0x44, 0xdd, 0x2f, 0xf9, 0x22, 0xb7, 0x92, 0x03, 0xad, + 0x4f, 0x90, 0xdb, 0x33, 0xfc, 0x63, 0x23, 0x1d, 0x08, 0x98, 0x98, 0x5e, 0x0b, 0x81, 0xee, 0xd9, + 0x7b, 0x7b, 0x7b, 0xec, 0xd4, 0xb1, 0xa5, 0xe8, 0x8c, 0xb4, 0xc9, 0x46, 0xd3, 0xa1, 0xc3, 0xaa, + 0x74, 0x35, 0x9d, 0x80, 0x56, 0xc8, 0x97, 0x4c, 0x40, 0xe7, 0x24, 0xc7, 0x3c, 0xfe, 0x55, 0x06, + 0x81, 0x0d, 0x65, 0x34, 0x85, 0x9e, 0x1c, 0xc8, 0x37, 0x08, 0x1f, 0x30, 0xa0, 0x99, 0xf6, 0xe1, + 0xc1, 0x55, 0x54, 0x45, 0x38, 0x87, 0x50, 0x72, 0x98, 0x08, 0x2d, 0x69, 0x20, 0x2c, 0xa4, 0x54, + 0x41, 0xdc, 0x1a, 0x9f, 0x50, 0x0c, 0xb4, 0x05, 0xac, 0x51, 0x8c, 0x05, 0x8f, 0xa1, 0xa5, 0xa3, + 0x34, 0xf3, 0x42, 0xe8, 0xe3, 0x72, 0x78, 0xc1, 0xca, 0x4b, 0x3a, 0x02, 0x0e, 0x56, 0x91, 0xe1, + 0x31, 0x16, 0x77, 0x2a, 0x8f, 0x18, 0x2c, 0xa8, 0xed, 0x21, 0x9f, 0x66, 0xac, 0xeb, 0x1c, 0x9d, + 0xfd, 0xf2, 0x3b, 0xc8, 0x0c, 0x07, 0x74, 0x88, 0x1b, 0x87, 0xd6, 0x88, 0x15, 0xae, 0x52, 0x4c, + 0x18, 0xb0, 0x26, 0x26, 0x65, 0x09, 0x9a, 0xb9, 0x17, 0xe2, 0x1c, 0xbb, 0x26, 0xde, 0xcd, 0x6c, + 0x5d, 0x34, 0xfa, 0x30, 0x6c, 0xc2, 0x4c, 0xbc, 0xff, 0x3a, 0x7c, 0x0a, 0xf3, 0xe0, 0x74, 0x56, + 0x1d, 0x75, 0x0e, 0x9f, 0x22, 0x09, 0x14, 0xfe, 0xbd, 0xaa, 0xae, 0xd3, 0xa3, 0xce, 0xff, 0x01, + 0x95, 0x74, 0x9f, 0xea, 0xf4, 0x8d, 0x01, 0x00 }; From 1900686bc43b2275ca9432e7c73548934ea47c55 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Fri, 22 Dec 2023 15:49:51 +0100 Subject: [PATCH 022/441] Bump --- CHANGELOG.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- wled00/improv.cpp | 2 +- wled00/wled.h | 2 +- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d050caef..7e6fc3c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ ## WLED changelog +#### Build 2312220 +- Version bump: 0.14.1-b2 +- Fix for Pixel Magic button + +#### Build 2311280 +- Bugfixes (#3593, #3490, #3573, #3517, #3561, #3555, #3541, #3536, #3515, #3522, #3533, #3508) + #### Build 2311160 - Version bump: 0.14.1-b1 - Bugfixes (#3526, #3502, #3496, #3484, #3487, #3445, #3466, #3296, #3382, #3312) diff --git a/package-lock.json b/package-lock.json index a421b467..71f73fef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wled", - "version": "0.14.1-b1", + "version": "0.14.1-b2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 16981212..c4faddc7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wled", - "version": "0.14.1-b1", + "version": "0.14.1-b2", "description": "Tools for WLED project", "main": "tools/cdata.js", "directories": { diff --git a/wled00/improv.cpp b/wled00/improv.cpp index bc260e07..0f4081f2 100644 --- a/wled00/improv.cpp +++ b/wled00/improv.cpp @@ -210,7 +210,7 @@ void sendImprovInfoResponse() { //Use serverDescription if it has been changed from the default "WLED", else mDNS name bool useMdnsName = (strcmp(serverDescription, "WLED") == 0 && strlen(cmDNS) > 0); char vString[20]; - sprintf_P(vString, PSTR("0.14.1-b1/%i"), VERSION); + sprintf_P(vString, PSTR("0.14.1-b2/%i"), VERSION); const char *str[4] = {"WLED", vString, bString, useMdnsName ? cmDNS : serverDescription}; sendImprovRPCResult(ImprovRPCType::Request_Info, 4, str); diff --git a/wled00/wled.h b/wled00/wled.h index 0f8052e8..0cd91585 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2311280 +#define VERSION 2312220 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From 5ab012163e5878e5bd67719762fe7e72d8030435 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 22 Dec 2023 23:28:58 +0100 Subject: [PATCH 023/441] workaround for #3601 if case of invalid or impossible sunset/sunrise results, retry with the previous day. max 3 days back, to prevent infinite loops and far-away results. --- wled00/ntp.cpp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/wled00/ntp.cpp b/wled00/ntp.cpp index 3d15c8c2..4e90766c 100644 --- a/wled00/ntp.cpp +++ b/wled00/ntp.cpp @@ -448,7 +448,7 @@ void checkTimers() #define ZENITH -0.83 // get sunrise (or sunset) time (in minutes) for a given day at a given geo location -int getSunriseUTC(int year, int month, int day, float lat, float lon, bool sunset=false) { +static int getSunriseUTC(int year, int month, int day, float lat, float lon, bool sunset=false) { //1. first calculate the day of the year float N1 = 275 * month / 9; float N2 = (month + 9) / 12; @@ -509,7 +509,18 @@ void calculateSunriseAndSunset() { tim_0.tm_sec = 0; tim_0.tm_isdst = 0; - int minUTC = getSunriseUTC(year(localTime), month(localTime), day(localTime), latitude, longitude); + // Due to math instability, its possible to get a bad sunrise/sunset = 00:00 (see issue #3601) + // So in case we get 00:00, try to use the sunset/sunrise of previous day. Max 3 days back, this worked well in all cases I tried. + // When latitude = 66,6 (N or S), the functions sometimes returns 2147483647, so "unexpected large" is another condition for retry + int minUTC = 0; + int retryCount = 0; + do { + time_t theDay = localTime - retryCount * 86400; // one day back = 86400 seconds + minUTC = getSunriseUTC(year(theDay), month(theDay), day(theDay), latitude, longitude, false); + DEBUG_PRINT(F("* sunrise (minutes from UTC) = ")); DEBUG_PRINTLN(minUTC); + retryCount ++; + } while ((minUTC == 0 || abs(minUTC) > 2*24*60) && (retryCount <= 3)); + if (minUTC) { // there is a sunrise if (minUTC < 0) minUTC += 24*60; // add a day if negative @@ -521,7 +532,14 @@ void calculateSunriseAndSunset() { sunrise = 0; } - minUTC = getSunriseUTC(year(localTime), month(localTime), day(localTime), latitude, longitude, true); + retryCount = 0; + do { + time_t theDay = localTime - retryCount * 86400; // one day back = 86400 seconds + minUTC = getSunriseUTC(year(theDay), month(theDay), day(theDay), latitude, longitude, true); + DEBUG_PRINT(F("* sunset (minutes from UTC) = ")); DEBUG_PRINTLN(minUTC); + retryCount ++; + } while ((minUTC == 0 || abs(minUTC) > 2*24*60) && (retryCount <= 3)); + if (minUTC) { // there is a sunset if (minUTC < 0) minUTC += 24*60; // add a day if negative From 72e864b013170825c3a1aadd7d5b90dc01ebb477 Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 23 Dec 2023 13:13:10 +0100 Subject: [PATCH 024/441] sunrise/sunset: fix for ambiguous error value sunset = 0 is a valid result, as the function result is in UTC and not local time . Example: local time is UTC-8, local sunrise = 08:00am => getSunriseUTC() = 0. So we cannot use "0" for "invalid". Using UINT16_MAX resolves the problem, and even allows to simplify calculateSunriseAndSunset() a bit. --- wled00/ntp.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/wled00/ntp.cpp b/wled00/ntp.cpp index 4e90766c..2e95eae2 100644 --- a/wled00/ntp.cpp +++ b/wled00/ntp.cpp @@ -447,7 +447,7 @@ void checkTimers() } #define ZENITH -0.83 -// get sunrise (or sunset) time (in minutes) for a given day at a given geo location +// get sunrise (or sunset) time (in minutes) for a given day at a given geo location. Returns >= INT16_MAX in case of "no sunset" static int getSunriseUTC(int year, int month, int day, float lat, float lon, bool sunset=false) { //1. first calculate the day of the year float N1 = 275 * month / 9; @@ -482,8 +482,8 @@ static int getSunriseUTC(int year, int month, int day, float lat, float lon, boo //7a. calculate the Sun's local hour angle float cosH = (sinf(DEG_TO_RAD*ZENITH) - (sinDec * sinf(DEG_TO_RAD*lat))) / (cosDec * cosf(DEG_TO_RAD*lat)); - if ((cosH > 1.0f) && !sunset) return 0; // the sun never rises on this location (on the specified date) - if ((cosH < -1.0f) && sunset) return 0; // the sun never sets on this location (on the specified date) + if ((cosH > 1.0f) && !sunset) return INT16_MAX; // the sun never rises on this location (on the specified date) + if ((cosH < -1.0f) && sunset) return INT16_MAX; // the sun never sets on this location (on the specified date) //7b. finish calculating H and convert into hours float H = sunset ? RAD_TO_DEG*acosf(cosH) : 360 - RAD_TO_DEG*acosf(cosH); @@ -499,6 +499,7 @@ static int getSunriseUTC(int year, int month, int day, float lat, float lon, boo return UT*60; } +#define SUNSET_MAX (24*60) // 1day = max expected absolute value for sun offset in minutes // calculate sunrise and sunset (if longitude and latitude are set) void calculateSunriseAndSunset() { if ((int)(longitude*10.) || (int)(latitude*10.)) { @@ -509,9 +510,9 @@ void calculateSunriseAndSunset() { tim_0.tm_sec = 0; tim_0.tm_isdst = 0; - // Due to math instability, its possible to get a bad sunrise/sunset = 00:00 (see issue #3601) - // So in case we get 00:00, try to use the sunset/sunrise of previous day. Max 3 days back, this worked well in all cases I tried. - // When latitude = 66,6 (N or S), the functions sometimes returns 2147483647, so "unexpected large" is another condition for retry + // Due to limited accuracy, its possible to get a bad sunrise/sunset displayed as "00:00" (see issue #3601) + // So in case of invalid result, we try to use the sunset/sunrise of previous day. Max 3 days back, this worked well in all cases I tried. + // When latitude = 66,6 (N or S), the functions sometimes returns 2147483647, so this "unexpected large" is another condition for retry int minUTC = 0; int retryCount = 0; do { @@ -519,9 +520,9 @@ void calculateSunriseAndSunset() { minUTC = getSunriseUTC(year(theDay), month(theDay), day(theDay), latitude, longitude, false); DEBUG_PRINT(F("* sunrise (minutes from UTC) = ")); DEBUG_PRINTLN(minUTC); retryCount ++; - } while ((minUTC == 0 || abs(minUTC) > 2*24*60) && (retryCount <= 3)); + } while ((abs(minUTC) > SUNSET_MAX) && (retryCount <= 3)); - if (minUTC) { + if (abs(minUTC) <= SUNSET_MAX) { // there is a sunrise if (minUTC < 0) minUTC += 24*60; // add a day if negative tim_0.tm_hour = minUTC / 60; @@ -538,9 +539,9 @@ void calculateSunriseAndSunset() { minUTC = getSunriseUTC(year(theDay), month(theDay), day(theDay), latitude, longitude, true); DEBUG_PRINT(F("* sunset (minutes from UTC) = ")); DEBUG_PRINTLN(minUTC); retryCount ++; - } while ((minUTC == 0 || abs(minUTC) > 2*24*60) && (retryCount <= 3)); + } while ((abs(minUTC) > SUNSET_MAX) && (retryCount <= 3)); - if (minUTC) { + if (abs(minUTC) <= SUNSET_MAX) { // there is a sunset if (minUTC < 0) minUTC += 24*60; // add a day if negative tim_0.tm_hour = minUTC / 60; From 5f62b4a89dac944417b268a8b9fd6a90b1efb7b9 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Sat, 23 Dec 2023 20:58:55 +0100 Subject: [PATCH 025/441] Fix for #2922 --- wled00/cfg.cpp | 4 +- wled00/data/settings_wifi.htm | 1 + wled00/html_settings.h | 324 +++++++++++++++++----------------- wled00/set.cpp | 1 + wled00/wled.cpp | 2 +- wled00/wled.h | 1 + wled00/xml.cpp | 1 + 7 files changed, 170 insertions(+), 164 deletions(-) diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index becc601b..ad02ef19 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -74,7 +74,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { noWifiSleep = doc[F("wifi")][F("sleep")] | !noWifiSleep; // inverted noWifiSleep = !noWifiSleep; - //int wifi_phy = doc[F("wifi")][F("phy")]; //force phy mode n? + force802_3g = doc[F("wifi")][F("phy")] | force802_3g; //force phy mode g? JsonObject hw = doc[F("hw")]; @@ -682,7 +682,7 @@ void serializeConfig() { JsonObject wifi = doc.createNestedObject("wifi"); wifi[F("sleep")] = !noWifiSleep; - //wifi[F("phy")] = 1; + wifi[F("phy")] = (int)force802_3g; #ifdef WLED_USE_ETHERNET JsonObject ethernet = doc.createNestedObject("eth"); diff --git a/wled00/data/settings_wifi.htm b/wled00/data/settings_wifi.htm index b8ab6aff..bfc53035 100644 --- a/wled00/data/settings_wifi.htm +++ b/wled00/data/settings_wifi.htm @@ -189,6 +189,7 @@
AP IP: Not active

Experimental

+ Force 802.11g mode (ESP8266 only):
Disable WiFi sleep:
Can help with connectivity issues.
Do not enable if WiFi is working correctly, increases power consumption.
diff --git a/wled00/html_settings.h b/wled00/html_settings.h index e9a8d934..50678ca3 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -8,7 +8,7 @@ // Autogenerated from wled00/data/style.css, do not edit!! const uint16_t PAGE_settingsCss_length = 888; const uint8_t PAGE_settingsCss[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x56, 0x51, 0x8b, 0xab, 0x38, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x56, 0x51, 0x8b, 0xab, 0x38, 0x14, 0xfe, 0x2b, 0x2e, 0x65, 0x60, 0x2e, 0x54, 0x51, 0xab, 0x9d, 0xde, 0xc8, 0xc2, 0xb2, 0xef, 0xf7, 0x6d, 0x58, 0x16, 0x96, 0x79, 0x88, 0xe6, 0x58, 0x43, 0x63, 0x22, 0x49, 0xbc, 0xb5, 0x23, 0xfe, 0xf7, 0x4d, 0xa2, 0x8e, 0xb6, 0x23, 0x73, 0x5f, 0x2e, 0xa5, 0x25, 0xe6, 0xc4, 0xe4, 0x3b, @@ -70,7 +70,7 @@ const uint8_t PAGE_settingsCss[] PROGMEM = { // Autogenerated from wled00/data/settings.htm, do not edit!! const uint16_t PAGE_settings_length = 1115; const uint8_t PAGE_settings[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x56, 0xdb, 0x52, 0xe3, 0x46, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x56, 0xdb, 0x52, 0xe3, 0x46, 0x10, 0x7d, 0xf7, 0x57, 0x0c, 0xb3, 0x15, 0x56, 0x2a, 0x64, 0xf9, 0x42, 0x2a, 0x95, 0xc8, 0x96, 0xa9, 0x2c, 0x97, 0x0d, 0x29, 0xa8, 0xa5, 0x02, 0x2c, 0x49, 0x25, 0x79, 0x18, 0x6b, 0x5a, 0xd6, 0x2c, 0xd2, 0x8c, 0x6a, 0xa6, 0x65, 0x70, 0xbc, 0xfc, 0x7b, 0x7a, 0x64, 0x63, 0x60, 0xe1, 0x21, @@ -144,164 +144,166 @@ const uint8_t PAGE_settings[] PROGMEM = { // Autogenerated from wled00/data/settings_wifi.htm, do not edit!! -const uint16_t PAGE_settings_wifi_length = 2378; +const uint16_t PAGE_settings_wifi_length = 2410; const uint8_t PAGE_settings_wifi[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xb5, 0x58, 0xff, 0x53, 0xdb, 0x3a, - 0x12, 0xff, 0x3d, 0x7f, 0x85, 0xd0, 0xdd, 0x30, 0xf6, 0xe0, 0x38, 0x09, 0x69, 0xfb, 0x7a, 0x21, - 0x4e, 0x0f, 0x42, 0x5e, 0xe1, 0x1e, 0x85, 0x5c, 0xc3, 0x95, 0xb9, 0xe1, 0x3a, 0xef, 0x19, 0x5b, - 0x49, 0x54, 0x1c, 0xc9, 0xcf, 0x92, 0x13, 0x18, 0xc8, 0xff, 0x7e, 0xbb, 0x92, 0x9d, 0xc4, 0x01, - 0xda, 0x9b, 0x0e, 0x37, 0x9d, 0x29, 0xb6, 0xbc, 0xda, 0xfd, 0xec, 0xb7, 0x8f, 0x56, 0xe9, 0xee, - 0x1c, 0x5f, 0xf4, 0x2f, 0xff, 0x3d, 0x1c, 0x90, 0xa9, 0x9e, 0x25, 0xbd, 0x2e, 0xfe, 0x4f, 0x92, - 0x50, 0x4c, 0x02, 0xca, 0x04, 0x85, 0x77, 0x16, 0xc6, 0xbd, 0xee, 0x8c, 0xe9, 0x90, 0x44, 0xd3, - 0x30, 0x53, 0x4c, 0x07, 0x34, 0xd7, 0xe3, 0xfa, 0x7b, 0x5a, 0xac, 0xd6, 0x22, 0x29, 0x34, 0x13, - 0xb0, 0xbc, 0xe0, 0xb1, 0x9e, 0x06, 0x31, 0x9b, 0xf3, 0x88, 0xd5, 0xcd, 0x8b, 0xc7, 0x05, 0xd7, - 0x3c, 0x4c, 0xea, 0x2a, 0x0a, 0x13, 0x16, 0xb4, 0xbc, 0x59, 0x78, 0xc7, 0x67, 0xf9, 0x6c, 0xf5, - 0x9e, 0x2b, 0x96, 0x99, 0x97, 0xf0, 0x06, 0xde, 0x85, 0xa4, 0xa4, 0x26, 0xc2, 0x19, 0x0b, 0xe8, - 0x9c, 0xb3, 0x45, 0x2a, 0x33, 0x0d, 0x56, 0x34, 0xd7, 0x09, 0xeb, 0x5d, 0xf1, 0x5f, 0x39, 0x19, - 0x31, 0xad, 0xb9, 0x98, 0xa8, 0x6e, 0xc3, 0x2e, 0x76, 0x55, 0x94, 0xf1, 0x54, 0xf7, 0x6a, 0xf3, - 0x30, 0x23, 0x89, 0x8c, 0x78, 0xea, 0xc5, 0x41, 0x2c, 0xa3, 0x7c, 0x06, 0x80, 0x3c, 0x58, 0x08, - 0x76, 0x5a, 0xf8, 0x27, 0xcd, 0xa4, 0x96, 0x01, 0x9d, 0x6a, 0x9d, 0x76, 0xa8, 0x07, 0xf6, 0xc4, - 0x99, 0x94, 0xa9, 0x0a, 0x9a, 0x5e, 0x9a, 0xb1, 0x11, 0xbc, 0x8e, 0x46, 0xa7, 0xc7, 0x01, 0xa5, - 0x07, 0xe3, 0x5c, 0x44, 0x9a, 0x4b, 0x41, 0x26, 0xa7, 0xb1, 0xa3, 0xdd, 0x87, 0x8c, 0xe9, 0x3c, - 0x13, 0x24, 0xf6, 0x27, 0x4c, 0x0f, 0x12, 0x86, 0x6a, 0x8f, 0xee, 0xcd, 0xa7, 0xe5, 0x4a, 0x34, - 0x1a, 0x54, 0x24, 0xa3, 0x8c, 0x85, 0x9a, 0x15, 0xc2, 0x15, 0xc1, 0x13, 0xc7, 0x7d, 0x58, 0x70, - 0x11, 0xcb, 0x85, 0x2f, 0x53, 0x26, 0x1c, 0x83, 0x47, 0x75, 0x1a, 0x8d, 0x5b, 0x21, 0xfd, 0x45, - 0xc2, 0xd0, 0x4a, 0x63, 0x0c, 0xbb, 0xf3, 0x8c, 0xa9, 0x86, 0x2a, 0x7c, 0x6d, 0xfc, 0x65, 0xc1, - 0xc7, 0xbc, 0x5e, 0xbe, 0xd2, 0x0d, 0x85, 0x47, 0x5b, 0x0a, 0x01, 0xe4, 0xbf, 0x3e, 0x9f, 0x39, - 0xb4, 0xb1, 0x16, 0xf6, 0xe8, 0xef, 0x8a, 0x25, 0xe3, 0xcd, 0x5d, 0xe7, 0xb0, 0x0b, 0x72, 0xa6, - 0x34, 0xd1, 0x01, 0xba, 0x49, 0x31, 0x1e, 0xd4, 0x3d, 0xd0, 0x7e, 0xcc, 0x15, 0xe6, 0x21, 0x0e, - 0x76, 0x9a, 0x9e, 0xf6, 0x35, 0xbb, 0xd3, 0xfd, 0x32, 0xb7, 0x18, 0x24, 0x01, 0x2a, 0x7d, 0xdf, - 0xa7, 0xde, 0x98, 0xe9, 0x68, 0xba, 0xb6, 0xf6, 0x4d, 0x49, 0xd1, 0x10, 0x4c, 0x53, 0xd7, 0xf5, - 0xf5, 0x14, 0x70, 0xe8, 0xa0, 0xa7, 0x7d, 0x5c, 0x75, 0x36, 0x56, 0x2e, 0x6e, 0xbe, 0xb1, 0x48, - 0xfb, 0xa1, 0x52, 0x7c, 0x22, 0x9c, 0x87, 0xa5, 0xf7, 0x00, 0x5b, 0x16, 0x32, 0xbb, 0x55, 0x9d, - 0xeb, 0xaf, 0x4b, 0x4f, 0xbb, 0x7e, 0xf9, 0xee, 0x2b, 0x48, 0xbc, 0xe3, 0x68, 0x8f, 0xb9, 0x41, - 0x8f, 0xf9, 0x19, 0xec, 0xa8, 0x6b, 0xf3, 0xc7, 0xf5, 0x33, 0x16, 0xe7, 0x11, 0x2b, 0x3f, 0x3a, - 0x1a, 0x64, 0x67, 0xcc, 0x1a, 0x84, 0xef, 0x71, 0x10, 0x04, 0xcc, 0x3c, 0xb8, 0x8f, 0x8f, 0xda, - 0x4f, 0x73, 0x35, 0x75, 0x98, 0x0b, 0xba, 0xbd, 0xeb, 0xaf, 0x25, 0x14, 0x16, 0xf4, 0x1e, 0xf8, - 0xd8, 0x69, 0x1a, 0xd1, 0x84, 0x89, 0x89, 0x9e, 0xee, 0xee, 0xae, 0x4a, 0xa2, 0xdb, 0x6a, 0xba, - 0x45, 0x2a, 0x57, 0x6b, 0x7b, 0x7b, 0xde, 0x5c, 0xf2, 0x98, 0x40, 0x54, 0x2f, 0xf9, 0x8c, 0xc9, - 0x5c, 0x3b, 0xe7, 0x5e, 0x8b, 0xb5, 0xdd, 0x83, 0x8d, 0x4a, 0x3a, 0x48, 0x98, 0x26, 0xc2, 0x06, - 0xb4, 0x3f, 0x82, 0x70, 0x82, 0x0d, 0xe1, 0x3e, 0xe0, 0xaa, 0x0e, 0xa0, 0x44, 0x28, 0xa4, 0x01, - 0xfc, 0x37, 0x71, 0x06, 0x45, 0x87, 0x5a, 0x67, 0xfc, 0x26, 0xd7, 0xcc, 0xa1, 0x3c, 0xa6, 0x9e, - 0xd9, 0xe2, 0x6d, 0x7f, 0xc1, 0x56, 0x78, 0xe9, 0x9b, 0x14, 0xd0, 0x8e, 0x62, 0x82, 0xdf, 0x2f, - 0x1d, 0x17, 0x04, 0x36, 0x2b, 0x59, 0xf8, 0xf3, 0x30, 0xc9, 0xd9, 0xc1, 0x58, 0x66, 0x0e, 0x22, - 0x60, 0x80, 0x8f, 0x75, 0xb5, 0x1f, 0x4d, 0x79, 0x12, 0x67, 0x4c, 0x14, 0x7e, 0x1f, 0xb0, 0xbd, - 0x3d, 0x17, 0x22, 0xcb, 0x66, 0x72, 0xce, 0xfa, 0xf8, 0xcd, 0x59, 0xcb, 0x5c, 0xb3, 0xaf, 0xee, - 0x4a, 0x81, 0x04, 0x05, 0xb2, 0x5b, 0xc6, 0xeb, 0x40, 0xc2, 0xbe, 0xa2, 0x86, 0xb8, 0x71, 0x4e, - 0xa6, 0x58, 0x5a, 0xe8, 0xf5, 0x16, 0x4c, 0x83, 0x83, 0x7a, 0xec, 0x5a, 0x7e, 0xb5, 0x79, 0xf1, - 0x78, 0xa5, 0xb0, 0xfe, 0xf8, 0xeb, 0xc3, 0xea, 0xdb, 0x92, 0x38, 0xc5, 0x1b, 0xe6, 0x7a, 0x49, - 0xe2, 0xa3, 0x99, 0xfb, 0xc7, 0x7a, 0x2b, 0x24, 0xac, 0xf0, 0x6b, 0x77, 0x77, 0xdb, 0x8c, 0x0d, - 0x2e, 0xc3, 0x48, 0xae, 0x1e, 0x31, 0x66, 0x61, 0x0a, 0x7d, 0x11, 0x5b, 0xd7, 0xb8, 0xbb, 0xb4, - 0x90, 0x65, 0x15, 0xb2, 0x7c, 0x1e, 0x32, 0xdd, 0xe9, 0x63, 0xff, 0xc8, 0x6a, 0x1f, 0x5c, 0x40, - 0x0d, 0x65, 0xa4, 0xa8, 0x54, 0xd3, 0x0c, 0x55, 0x23, 0xd2, 0xf5, 0x04, 0x04, 0x34, 0x4d, 0xc2, - 0x88, 0x5d, 0x71, 0x3d, 0x45, 0x02, 0xd8, 0x6c, 0xac, 0xd6, 0x73, 0x8d, 0x45, 0x97, 0x1b, 0xed, - 0x09, 0xd9, 0x2c, 0xaa, 0xa6, 0x52, 0x4b, 0x3b, 0xfa, 0xf1, 0xd1, 0x40, 0xda, 0x09, 0xb4, 0x8d, - 0x42, 0x51, 0xa7, 0x07, 0x36, 0xc1, 0xe8, 0x12, 0x17, 0x69, 0x8e, 0x15, 0xc6, 0x7c, 0x7d, 0x9f, - 0x02, 0x89, 0xa2, 0x21, 0x88, 0xbd, 0x0f, 0xb1, 0x43, 0x3d, 0xf0, 0x64, 0xc9, 0xd5, 0x3e, 0x57, - 0xbd, 0x06, 0x66, 0xb6, 0xc9, 0xa5, 0x5e, 0x7b, 0xdf, 0x85, 0xcf, 0xc6, 0x46, 0xb0, 0x51, 0x55, - 0x9e, 0xae, 0x38, 0xc6, 0x36, 0x30, 0x27, 0x32, 0x8c, 0xff, 0x31, 0xc2, 0xa6, 0x04, 0xea, 0xb0, - 0xf0, 0x85, 0x2d, 0x7a, 0xc3, 0xcf, 0x00, 0x49, 0x6c, 0x27, 0x2c, 0x8b, 0x28, 0xf6, 0xe5, 0xf6, - 0x3a, 0x02, 0x87, 0xd8, 0x23, 0xf2, 0xc6, 0xb7, 0x70, 0x1e, 0x96, 0x0a, 0x9e, 0x08, 0x86, 0xea, - 0x5e, 0x80, 0x0a, 0xe8, 0xee, 0xd8, 0xbf, 0x91, 0xf1, 0x7d, 0x25, 0x0b, 0x02, 0xe5, 0xc3, 0x38, - 0x1e, 0xcc, 0x21, 0xc6, 0x67, 0x5c, 0x41, 0xa8, 0x59, 0xe6, 0x50, 0x84, 0x49, 0x3d, 0x07, 0x88, - 0xe3, 0xe1, 0x23, 0xd3, 0x5f, 0x1c, 0x77, 0xf9, 0xbc, 0x1c, 0xcb, 0x32, 0x99, 0x01, 0x3c, 0x90, - 0xc3, 0x8a, 0x91, 0x09, 0x14, 0xbe, 0x9c, 0x38, 0x74, 0x80, 0xeb, 0xa4, 0xf0, 0x17, 0xc8, 0x90, - 0x8c, 0x79, 0xc2, 0x8c, 0x1b, 0x70, 0x9a, 0x01, 0x65, 0xd1, 0xb3, 0x62, 0x5d, 0x8e, 0x09, 0x6c, - 0x1c, 0xf3, 0x49, 0x9e, 0x85, 0x26, 0x40, 0xd6, 0x0d, 0x32, 0x0e, 0x39, 0xd2, 0xfc, 0x7f, 0xc4, - 0xa9, 0x88, 0xe4, 0x2c, 0x85, 0x38, 0x31, 0x92, 0x86, 0x13, 0x46, 0xe2, 0x50, 0x87, 0x3b, 0x40, - 0xd2, 0x1b, 0x31, 0x1d, 0xad, 0xea, 0xa0, 0xa0, 0x78, 0x38, 0xc7, 0x8c, 0x32, 0xac, 0x06, 0x8a, - 0x96, 0x3b, 0x34, 0x80, 0x5a, 0x30, 0x67, 0x5b, 0x24, 0x13, 0xd7, 0x1c, 0x77, 0x4d, 0xcf, 0x31, - 0xe7, 0x60, 0x80, 0xd2, 0xc9, 0x48, 0xcb, 0x0c, 0xd4, 0xe3, 0xe9, 0x75, 0xaa, 0xd9, 0x0c, 0x23, - 0x10, 0x9d, 0xa6, 0xc0, 0xd3, 0x8f, 0x8f, 0x85, 0x18, 0xec, 0x9e, 0xa5, 0x80, 0xfc, 0x57, 0xd0, - 0x47, 0x3e, 0xc9, 0x98, 0xf9, 0x64, 0x98, 0xb0, 0x50, 0x31, 0x02, 0x11, 0x81, 0x4a, 0xbf, 0x3a, - 0x1b, 0x1c, 0x93, 0xd3, 0x21, 0x60, 0xf3, 0x2a, 0x1a, 0x55, 0x55, 0xa3, 0x67, 0xb4, 0xb9, 0x50, - 0x7a, 0x89, 0x62, 0x0f, 0xb6, 0x22, 0x01, 0x5a, 0xa8, 0xa7, 0x58, 0x71, 0x9e, 0x40, 0x56, 0x4e, - 0x60, 0x2c, 0x70, 0x5a, 0x50, 0x59, 0x90, 0x26, 0x65, 0x4a, 0x88, 0x36, 0xa8, 0xfb, 0xa1, 0xde, - 0xea, 0x18, 0x76, 0x6d, 0xba, 0xbe, 0x4a, 0x13, 0xae, 0xcd, 0xea, 0x41, 0x49, 0x51, 0xbd, 0xfd, - 0xdd, 0x5d, 0x67, 0x75, 0x82, 0xaf, 0xbd, 0xf5, 0x0a, 0x6f, 0xad, 0x17, 0xda, 0x9f, 0x4a, 0xa5, - 0xd1, 0xd4, 0x1e, 0x30, 0x18, 0xce, 0x0d, 0x1f, 0x68, 0x87, 0xee, 0xd9, 0xc7, 0x0e, 0xa5, 0xee, - 0x1e, 0x28, 0xdd, 0x13, 0xd7, 0xcd, 0xaf, 0xee, 0xb2, 0xa8, 0xd5, 0x27, 0x67, 0x65, 0x43, 0xc1, - 0x91, 0xf5, 0x21, 0x0d, 0x5a, 0xe0, 0xea, 0x4e, 0xcb, 0xb8, 0x0b, 0xa6, 0x63, 0x7f, 0x34, 0xf6, - 0x43, 0x93, 0x91, 0xe0, 0xe9, 0x16, 0x3c, 0x99, 0x21, 0x9a, 0xeb, 0xa4, 0x15, 0x22, 0xab, 0x79, - 0x00, 0xa1, 0x7f, 0x28, 0xe1, 0x03, 0x08, 0x40, 0x61, 0x10, 0x1b, 0x4c, 0x7a, 0x59, 0xeb, 0x36, - 0x8a, 0x09, 0xa6, 0xab, 0xf4, 0x3d, 0x0c, 0x34, 0x7f, 0xe7, 0x33, 0x84, 0x4c, 0xf2, 0x2c, 0x81, - 0x1e, 0xc1, 0x25, 0x3f, 0x52, 0x40, 0x43, 0x07, 0x20, 0x68, 0x04, 0xba, 0x0d, 0x3b, 0x90, 0x61, - 0xc9, 0x43, 0x25, 0xa2, 0x33, 0xc0, 0x21, 0x70, 0x00, 0xf4, 0xba, 0xc0, 0xd5, 0xb3, 0x1a, 0xc1, - 0x5e, 0xc7, 0xa7, 0xdf, 0x15, 0x25, 0xb6, 0xdb, 0x47, 0x63, 0x4a, 0x60, 0x52, 0x9b, 0x4a, 0xf8, - 0x92, 0x42, 0x98, 0x40, 0x34, 0xe6, 0x73, 0x12, 0x25, 0x70, 0x14, 0x03, 0x47, 0x48, 0xc0, 0xb6, - 0xa8, 0xae, 0x4d, 0x59, 0x92, 0x1e, 0xd1, 0x5e, 0xad, 0x0b, 0xad, 0xa6, 0xc1, 0x2b, 0xcb, 0x26, - 0xf6, 0x85, 0x82, 0xd5, 0x08, 0x52, 0x79, 0x1b, 0xd0, 0x13, 0x34, 0xfb, 0xa1, 0xdb, 0xb0, 0x1f, - 0x00, 0x1a, 0xa8, 0xe8, 0x3d, 0xbf, 0xa7, 0xb6, 0xda, 0x74, 0x84, 0x9b, 0x8e, 0xc2, 0xe8, 0x76, - 0xbd, 0xaf, 0xb2, 0x43, 0xe5, 0x37, 0x33, 0x0e, 0x18, 0x47, 0xe1, 0x9c, 0x91, 0x5d, 0x02, 0x3c, - 0x29, 0x80, 0xce, 0xd7, 0xc2, 0xd3, 0x0c, 0x70, 0x59, 0x4b, 0xd3, 0x7d, 0x3b, 0x15, 0x42, 0x3a, - 0xf2, 0x14, 0x02, 0xb3, 0x0f, 0x4b, 0xed, 0x5e, 0xb1, 0x83, 0x68, 0x49, 0xd8, 0x1d, 0xb4, 0x34, - 0xf6, 0x63, 0xc1, 0xd7, 0x20, 0xd3, 0x5e, 0x99, 0xab, 0x55, 0x11, 0x62, 0xdc, 0xcc, 0x20, 0xb4, - 0xf6, 0xef, 0x1c, 0xa1, 0x22, 0xfb, 0x6d, 0x40, 0x05, 0xeb, 0xe7, 0x56, 0x99, 0x89, 0x2e, 0x71, - 0x0c, 0x33, 0x12, 0x06, 0x4d, 0x74, 0x8f, 0x26, 0x85, 0xd4, 0xd8, 0xfa, 0x88, 0xc0, 0xed, 0xa0, - 0x78, 0xd7, 0x90, 0x32, 0xd9, 0x20, 0x64, 0x52, 0xd0, 0x71, 0x39, 0xea, 0xe2, 0xe3, 0x8a, 0x7d, - 0x03, 0xda, 0xde, 0xa7, 0xc6, 0x4e, 0x69, 0x26, 0x85, 0x94, 0xc0, 0x43, 0xfc, 0x54, 0x5b, 0xf9, - 0x65, 0xad, 0x69, 0x58, 0xd1, 0xf4, 0xae, 0x6d, 0x35, 0x8d, 0x34, 0xf0, 0x46, 0x04, 0x5d, 0x4c, - 0xe0, 0x2c, 0xc7, 0xb0, 0x86, 0x9a, 0x34, 0x7d, 0xf3, 0x8f, 0x40, 0xa9, 0x90, 0xe3, 0x93, 0xfe, - 0xb0, 0x02, 0xb6, 0x50, 0x77, 0xda, 0xa4, 0x85, 0x25, 0x91, 0xcf, 0x6e, 0x58, 0x46, 0xcb, 0xfa, - 0x80, 0xd2, 0x9a, 0x71, 0x11, 0xd0, 0xa6, 0x31, 0x17, 0xd0, 0xfd, 0xb7, 0x6f, 0x29, 0xc9, 0xd8, - 0x9f, 0x39, 0x87, 0xf1, 0xac, 0x47, 0x7c, 0xb2, 0xa5, 0xa7, 0xf5, 0x4a, 0x7a, 0xf6, 0x5f, 0x49, - 0x4f, 0xfb, 0xa7, 0xf4, 0x6c, 0x84, 0x72, 0x02, 0x13, 0xfe, 0x22, 0xbc, 0xef, 0xd4, 0x36, 0x82, - 0x66, 0x75, 0x7f, 0xfc, 0xe9, 0x98, 0xd5, 0xaa, 0x7a, 0x5e, 0x29, 0x66, 0x1f, 0x5f, 0x29, 0x66, - 0x1f, 0x7f, 0x3e, 0x66, 0xb5, 0x22, 0x68, 0xd0, 0xd9, 0xd0, 0x87, 0x20, 0xa5, 0x6e, 0x3b, 0x4f, - 0xe2, 0x36, 0xfa, 0x1f, 0xe2, 0x56, 0xfb, 0x2e, 0xd0, 0x42, 0x4f, 0xeb, 0x95, 0xf4, 0xec, 0xbf, - 0x92, 0x9e, 0xf6, 0xcf, 0xe9, 0xc1, 0x00, 0xcd, 0x8e, 0xcf, 0x47, 0x04, 0xa6, 0x13, 0xb8, 0x0d, - 0xaa, 0xb2, 0x75, 0x2d, 0xd1, 0x60, 0xd7, 0x0a, 0x49, 0x50, 0xc0, 0x36, 0xae, 0xb9, 0xd9, 0x36, - 0x1a, 0x85, 0xed, 0x5a, 0x85, 0x6e, 0x0a, 0x6e, 0xf8, 0xf4, 0x84, 0x65, 0x88, 0x19, 0x29, 0x12, - 0xdc, 0xdf, 0x4f, 0x38, 0x9c, 0xf7, 0x40, 0x11, 0x1d, 0xd2, 0x55, 0x69, 0x28, 0x56, 0x28, 0x79, - 0x0a, 0xe7, 0xc0, 0xf9, 0x9a, 0xd4, 0x58, 0x0c, 0x27, 0x11, 0x08, 0x18, 0x80, 0x05, 0xdd, 0x9a, - 0x39, 0x87, 0x91, 0xc3, 0x28, 0x42, 0xa0, 0x43, 0xc9, 0x85, 0x36, 0x4c, 0x5b, 0x3b, 0x1c, 0x12, - 0xa4, 0xc7, 0x67, 0xb1, 0x1f, 0x0e, 0x5f, 0xe4, 0x47, 0x0b, 0xf8, 0xf0, 0x29, 0x2d, 0x9a, 0x76, - 0x3b, 0xe1, 0x31, 0xd8, 0x1a, 0x1a, 0xa9, 0x0e, 0xa9, 0x6c, 0x8f, 0xa6, 0x2c, 0xba, 0xbd, 0x91, - 0x77, 0x2b, 0x15, 0x27, 0x96, 0x00, 0x11, 0x48, 0x49, 0x96, 0x4f, 0xc1, 0xe0, 0xd5, 0xd9, 0xfd, - 0x1e, 0xbb, 0x16, 0xca, 0x86, 0x36, 0x53, 0x1b, 0xec, 0x0a, 0x4a, 0x35, 0x0c, 0x49, 0x90, 0x45, - 0xc7, 0x7f, 0x78, 0xef, 0xbd, 0x6b, 0x2f, 0xdd, 0x47, 0x38, 0x33, 0x88, 0xf9, 0x71, 0x22, 0xa0, - 0x03, 0x63, 0x02, 0x2c, 0x40, 0xa2, 0x7d, 0xf2, 0xde, 0xfc, 0x7e, 0x02, 0xa3, 0x04, 0xcb, 0x54, - 0x09, 0x6b, 0x23, 0x62, 0xc4, 0x1c, 0x65, 0x78, 0xa7, 0x13, 0x2c, 0xe9, 0x54, 0x8b, 0xe8, 0xb0, - 0xff, 0x42, 0x11, 0xdd, 0x95, 0x55, 0xd4, 0x2a, 0xab, 0xa8, 0xd5, 0xde, 0x2a, 0x22, 0x70, 0x1d, - 0x1d, 0x54, 0x98, 0x58, 0x73, 0x33, 0x2a, 0x75, 0xc2, 0x01, 0xdf, 0xb5, 0x77, 0x20, 0x62, 0x47, - 0x7d, 0x28, 0x45, 0x4c, 0x75, 0x99, 0x69, 0xfc, 0x10, 0x8e, 0x71, 0x06, 0xbc, 0x91, 0x12, 0x12, - 0x6a, 0x65, 0xb7, 0xf7, 0xb4, 0x68, 0xef, 0x98, 0xab, 0x8d, 0xe2, 0xd8, 0x12, 0xab, 0x15, 0x72, - 0x90, 0xbd, 0xc3, 0x04, 0x28, 0x53, 0xbd, 0xa4, 0x08, 0xce, 0xaa, 0x73, 0x36, 0x07, 0x6b, 0x0e, - 0x1e, 0xa1, 0x19, 0x83, 0xf9, 0x78, 0x06, 0x83, 0x22, 0x8b, 0xdd, 0xd5, 0x0e, 0x9c, 0x96, 0x8c, - 0x0b, 0xa5, 0x63, 0xcf, 0x97, 0x2b, 0x56, 0x2b, 0x4e, 0x6c, 0x73, 0xb6, 0x55, 0xaa, 0x83, 0xbb, - 0x94, 0x65, 0x1c, 0x7f, 0x96, 0x81, 0xa2, 0x37, 0x05, 0x7a, 0x6c, 0xef, 0x65, 0x36, 0xf6, 0x2a, - 0x61, 0x2c, 0xfd, 0x41, 0x45, 0x5d, 0x8d, 0x6c, 0xea, 0xba, 0xbc, 0x57, 0xeb, 0x83, 0x5d, 0x9c, - 0x94, 0xc8, 0x02, 0x66, 0xd9, 0x55, 0xd4, 0xe6, 0x1c, 0x72, 0xce, 0x95, 0xca, 0x99, 0xf2, 0x4d, - 0x92, 0x8f, 0xed, 0x50, 0xc0, 0x84, 0xb1, 0xc4, 0xc7, 0xd6, 0x18, 0x57, 0x04, 0x4f, 0x77, 0x1c, - 0x4e, 0x22, 0x99, 0x81, 0xbb, 0x3a, 0xb9, 0xf7, 0x08, 0x17, 0xf8, 0xeb, 0x91, 0x62, 0x8a, 0xa4, - 0x72, 0x01, 0xb1, 0xc0, 0xdb, 0x47, 0x3e, 0x33, 0xde, 0xfb, 0xdd, 0x06, 0x37, 0x43, 0x9a, 0x1d, - 0xf1, 0xe0, 0xce, 0x1e, 0x53, 0xe3, 0xd5, 0x15, 0xa4, 0x3a, 0xc1, 0x32, 0xfa, 0x0c, 0xd7, 0x78, - 0xcd, 0xec, 0x8c, 0xc3, 0x7b, 0xf6, 0x36, 0x63, 0x0a, 0x9c, 0xe1, 0xed, 0x46, 0x11, 0x89, 0xd1, - 0x1d, 0x8c, 0x86, 0xf5, 0xf3, 0x8b, 0x2b, 0x83, 0xec, 0x37, 0xf0, 0x97, 0x94, 0x57, 0x53, 0x44, - 0x86, 0x38, 0x73, 0x85, 0x98, 0x42, 0x92, 0x19, 0x6d, 0x3f, 0x80, 0x84, 0x91, 0x00, 0x58, 0xb5, - 0x81, 0x75, 0xce, 0x22, 0xf8, 0x41, 0x08, 0x3f, 0x0f, 0x6c, 0x08, 0x4f, 0xc2, 0x2c, 0x5e, 0x84, - 0xc0, 0x1b, 0x9f, 0x0e, 0xfb, 0xab, 0x2d, 0xb5, 0xa7, 0x3c, 0xf0, 0x19, 0xbe, 0xdb, 0x1d, 0x67, - 0x21, 0x5c, 0xde, 0x47, 0x8c, 0x89, 0xad, 0xac, 0x67, 0x09, 0x8f, 0x31, 0xed, 0xa2, 0x92, 0x70, - 0x33, 0x23, 0xd6, 0xcc, 0x58, 0x8b, 0x01, 0x83, 0x01, 0xb8, 0x08, 0xd8, 0x00, 0xaf, 0xf0, 0x78, - 0x12, 0x5d, 0x82, 0x2d, 0x1b, 0xae, 0x4a, 0x67, 0x0c, 0x2e, 0x4f, 0x9e, 0x6b, 0x0d, 0xd4, 0x5f, - 0x7b, 0xa9, 0x7a, 0xff, 0x06, 0xe5, 0x7d, 0xd4, 0xdf, 0xb1, 0xd7, 0xa5, 0x2f, 0x6f, 0xda, 0x30, - 0xb9, 0xe2, 0x05, 0x0f, 0xce, 0x3d, 0x88, 0xcb, 0x4b, 0x9b, 0x90, 0xd1, 0x20, 0x1f, 0xed, 0xfd, - 0xfa, 0xf0, 0x62, 0xf0, 0x92, 0xd0, 0x3b, 0xda, 0x33, 0x32, 0xc7, 0x2c, 0xbf, 0x7b, 0x49, 0xe6, - 0x17, 0xda, 0xfb, 0xed, 0xf4, 0xb2, 0xfe, 0x65, 0xf0, 0x22, 0xbe, 0xf7, 0xb4, 0xf7, 0xcf, 0x9c, - 0x0b, 0x40, 0x57, 0x3f, 0xe6, 0x93, 0xfa, 0x45, 0xa4, 0x43, 0x80, 0x78, 0x59, 0x07, 0x5f, 0x9f, - 0x35, 0x5e, 0xb6, 0xed, 0x9b, 0xf5, 0x3e, 0x83, 0xe2, 0x45, 0x1a, 0x80, 0x00, 0x8d, 0x58, 0x36, - 0xf9, 0xe5, 0x0d, 0xaa, 0x7c, 0x46, 0xae, 0x54, 0xf8, 0x96, 0xf6, 0x2e, 0x17, 0x3c, 0xe1, 0x93, - 0xa9, 0x3e, 0x03, 0x72, 0xfd, 0xbe, 0x56, 0xe0, 0x84, 0xab, 0xe7, 0x05, 0x6a, 0x6b, 0xfa, 0xb9, - 0xba, 0x84, 0x00, 0x82, 0xd1, 0x66, 0x6b, 0x2d, 0xb5, 0xc9, 0x13, 0xeb, 0x62, 0xc0, 0xbb, 0xc3, - 0xff, 0xfb, 0x7a, 0xd2, 0xc0, 0xbb, 0x17, 0x32, 0x15, 0x5e, 0xd0, 0xf0, 0xb6, 0x86, 0x3f, 0xaa, - 0xff, 0x17, 0x39, 0xb0, 0x85, 0xbd, 0x64, 0x17, 0x00, 0x00 + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xb5, 0x58, 0x6d, 0x53, 0xdb, 0x3a, + 0x16, 0xfe, 0x9e, 0x5f, 0x21, 0xb4, 0x3b, 0x8c, 0x3d, 0x38, 0x4e, 0x42, 0xda, 0x5e, 0x36, 0xc4, + 0xe9, 0xf2, 0x92, 0x16, 0xf6, 0x52, 0xc8, 0x36, 0xec, 0x65, 0x76, 0xba, 0x9d, 0x7b, 0x8d, 0xad, + 0x24, 0x2a, 0xb6, 0xe4, 0x6b, 0xc9, 0x09, 0x0c, 0xf0, 0xdf, 0xf7, 0x1c, 0xc9, 0x4e, 0xe2, 0x00, + 0xed, 0x4e, 0x87, 0x9d, 0xce, 0x14, 0x5b, 0x3e, 0x3a, 0xe7, 0x39, 0x6f, 0x8f, 0x8e, 0xd2, 0xdf, + 0x3a, 0xbe, 0x38, 0xba, 0xfc, 0xf7, 0x68, 0x48, 0x66, 0x3a, 0x4d, 0x06, 0x7d, 0xfc, 0x9f, 0x24, + 0xa1, 0x98, 0x06, 0x94, 0x09, 0x0a, 0xef, 0x2c, 0x8c, 0x07, 0xfd, 0x94, 0xe9, 0x90, 0x44, 0xb3, + 0x30, 0x57, 0x4c, 0x07, 0xb4, 0xd0, 0x93, 0xe6, 0x1e, 0x2d, 0x57, 0x1b, 0x91, 0x14, 0x9a, 0x09, + 0x58, 0x5e, 0xf0, 0x58, 0xcf, 0x82, 0x98, 0xcd, 0x79, 0xc4, 0x9a, 0xe6, 0xc5, 0xe3, 0x82, 0x6b, + 0x1e, 0x26, 0x4d, 0x15, 0x85, 0x09, 0x0b, 0x3a, 0x5e, 0x1a, 0xde, 0xf2, 0xb4, 0x48, 0x97, 0xef, + 0x85, 0x62, 0xb9, 0x79, 0x09, 0xaf, 0xe1, 0x5d, 0x48, 0x4a, 0x1a, 0x22, 0x4c, 0x59, 0x40, 0xe7, + 0x9c, 0x2d, 0x32, 0x99, 0x6b, 0xb0, 0xa2, 0xb9, 0x4e, 0xd8, 0xe0, 0x8a, 0x7f, 0xe0, 0x64, 0xcc, + 0xb4, 0xe6, 0x62, 0xaa, 0xfa, 0x2d, 0xbb, 0xd8, 0x57, 0x51, 0xce, 0x33, 0x3d, 0x68, 0xcc, 0xc3, + 0x9c, 0x24, 0x32, 0xe2, 0x99, 0x17, 0x07, 0xb1, 0x8c, 0x8a, 0x14, 0x00, 0x79, 0xb0, 0x10, 0x6c, + 0x75, 0xf0, 0x4f, 0x96, 0x4b, 0x2d, 0x03, 0x3a, 0xd3, 0x3a, 0xeb, 0x51, 0x0f, 0xec, 0x89, 0x33, + 0x29, 0x33, 0x15, 0xb4, 0xbd, 0x2c, 0x67, 0x63, 0x78, 0x1d, 0x8f, 0x4f, 0x8f, 0x03, 0x4a, 0xf7, + 0x27, 0x85, 0x88, 0x34, 0x97, 0x82, 0x4c, 0x4f, 0x63, 0x47, 0xbb, 0xf7, 0x39, 0xd3, 0x45, 0x2e, + 0x48, 0xec, 0x4f, 0x99, 0x1e, 0x26, 0x0c, 0xd5, 0x1e, 0xde, 0x99, 0x4f, 0x8f, 0x4b, 0xd1, 0x68, + 0x58, 0x93, 0x8c, 0x72, 0x16, 0x6a, 0x56, 0x0a, 0xd7, 0x04, 0x4f, 0x1c, 0xf7, 0x7e, 0xc1, 0x45, + 0x2c, 0x17, 0xbe, 0xcc, 0x98, 0x70, 0x0c, 0x1e, 0xd5, 0x6b, 0xb5, 0x6e, 0x84, 0xf4, 0x17, 0x09, + 0x43, 0x2b, 0xad, 0x09, 0xec, 0x2e, 0x72, 0xa6, 0x5a, 0xaa, 0xf4, 0xb5, 0xf5, 0x97, 0x05, 0x9f, + 0xf0, 0x66, 0xf5, 0x4a, 0xd7, 0x14, 0x1e, 0x6e, 0x28, 0x04, 0x90, 0xff, 0xfa, 0x7c, 0xe6, 0xd0, + 0xd6, 0x4a, 0xd8, 0xa3, 0xbf, 0x2b, 0x96, 0x4c, 0xd6, 0x77, 0x9d, 0xc3, 0x2e, 0xc8, 0x99, 0xd2, + 0x44, 0x07, 0xe8, 0x26, 0xc5, 0x78, 0x50, 0x77, 0x5f, 0xfb, 0x31, 0x57, 0x98, 0x87, 0x38, 0xd8, + 0x6a, 0x7b, 0xda, 0xd7, 0xec, 0x56, 0x1f, 0x55, 0xb9, 0xc5, 0x20, 0x09, 0x50, 0xe9, 0xfb, 0x3e, + 0xf5, 0x26, 0x4c, 0x47, 0xb3, 0x95, 0xb5, 0x6f, 0x4a, 0x8a, 0x96, 0x60, 0x9a, 0xba, 0xae, 0xaf, + 0x67, 0x80, 0x43, 0x07, 0x03, 0xed, 0xe3, 0xaa, 0xb3, 0xb6, 0x72, 0x71, 0xfd, 0x8d, 0x45, 0xda, + 0x0f, 0x95, 0xe2, 0x53, 0xe1, 0xdc, 0x3f, 0x7a, 0xf7, 0xb0, 0x65, 0x21, 0xf3, 0x1b, 0xd5, 0xfb, + 0xf2, 0xf5, 0xd1, 0xd3, 0xae, 0x5f, 0xbd, 0xfb, 0x0a, 0x12, 0xef, 0x38, 0xda, 0x63, 0x6e, 0x30, + 0x60, 0x7e, 0x0e, 0x3b, 0x9a, 0xda, 0xfc, 0x71, 0xfd, 0x9c, 0xc5, 0x45, 0xc4, 0xaa, 0x8f, 0x8e, + 0x06, 0xd9, 0x94, 0x59, 0x83, 0xf0, 0x3d, 0x0e, 0x82, 0x80, 0x99, 0x07, 0xf7, 0xe1, 0x41, 0xfb, + 0x59, 0xa1, 0x66, 0x0e, 0x73, 0x41, 0xb7, 0xf7, 0xe5, 0x6b, 0x05, 0x85, 0x05, 0x83, 0x7b, 0x3e, + 0x71, 0xda, 0x46, 0x34, 0x61, 0x62, 0xaa, 0x67, 0xdb, 0xdb, 0xcb, 0x92, 0xe8, 0x77, 0xda, 0x6e, + 0x99, 0xca, 0xe5, 0xda, 0xce, 0x8e, 0x37, 0x97, 0x3c, 0x26, 0x10, 0xd5, 0x4b, 0x9e, 0x32, 0x59, + 0x68, 0xe7, 0xdc, 0xeb, 0xb0, 0xae, 0xbb, 0xbf, 0x56, 0x49, 0xfb, 0x09, 0xd3, 0x44, 0xd8, 0x80, + 0x1e, 0x8d, 0x21, 0x9c, 0x60, 0x43, 0xb8, 0xf7, 0xb8, 0xaa, 0x03, 0x28, 0x11, 0x0a, 0x69, 0x00, + 0xff, 0x4d, 0x9c, 0x41, 0xd1, 0x81, 0xd6, 0x39, 0xbf, 0x2e, 0x34, 0x73, 0x28, 0x8f, 0xa9, 0x67, + 0xb6, 0x78, 0x9b, 0x5f, 0xb0, 0x15, 0x5e, 0xfa, 0x26, 0x05, 0xb4, 0xa3, 0x98, 0xe2, 0xf7, 0x4b, + 0xc7, 0x05, 0x81, 0xf5, 0x4a, 0x16, 0xfe, 0x3c, 0x4c, 0x0a, 0xb6, 0x3f, 0x91, 0xb9, 0x83, 0x08, + 0x18, 0xe0, 0x63, 0x7d, 0xed, 0x47, 0x33, 0x9e, 0xc4, 0x39, 0x13, 0xa5, 0xdf, 0xfb, 0x6c, 0x67, + 0xc7, 0x85, 0xc8, 0xb2, 0x54, 0xce, 0xd9, 0x11, 0x7e, 0x73, 0x56, 0x32, 0x5f, 0xd8, 0x57, 0x77, + 0xa9, 0x40, 0x82, 0x02, 0xd9, 0xaf, 0xe2, 0xb5, 0x2f, 0x61, 0x5f, 0x59, 0x43, 0xdc, 0x38, 0x27, + 0x33, 0x2c, 0x2d, 0xf4, 0x7a, 0x03, 0xa6, 0xc1, 0x41, 0x3d, 0xf6, 0x45, 0x7e, 0xb5, 0x79, 0xf1, + 0x78, 0xad, 0xb0, 0xfe, 0xf8, 0xeb, 0xfd, 0xf2, 0xdb, 0x23, 0x71, 0xca, 0x37, 0xcc, 0xf5, 0x23, + 0x89, 0x0f, 0x53, 0xf7, 0x8f, 0xd5, 0x56, 0x48, 0x58, 0xe9, 0xd7, 0xf6, 0xf6, 0xa6, 0x19, 0x1b, + 0x5c, 0x86, 0x91, 0x5c, 0x3e, 0x62, 0xcc, 0xc2, 0x0c, 0xfa, 0x22, 0xb6, 0xae, 0x71, 0xf7, 0xd1, + 0x42, 0x96, 0x75, 0xc8, 0xf2, 0x79, 0xc8, 0x74, 0xeb, 0x08, 0xfb, 0x47, 0xd6, 0xfb, 0xe0, 0x02, + 0x6a, 0x28, 0x27, 0x65, 0xa5, 0x9a, 0x66, 0xa8, 0x1b, 0x91, 0xae, 0x27, 0x20, 0xa0, 0x59, 0x12, + 0x46, 0xec, 0x8a, 0xeb, 0x19, 0x12, 0xc0, 0x7a, 0x63, 0x75, 0x9e, 0x6b, 0x2c, 0xfa, 0xb8, 0xd6, + 0x9e, 0x90, 0xcd, 0xb2, 0x6a, 0x6a, 0xb5, 0xb4, 0xa5, 0x1f, 0x1e, 0x0c, 0xa4, 0xad, 0x40, 0xdb, + 0x28, 0x94, 0x75, 0xba, 0x6f, 0x13, 0x8c, 0x2e, 0x71, 0x91, 0x15, 0x58, 0x61, 0xcc, 0xd7, 0x77, + 0x19, 0x90, 0x28, 0x1a, 0x82, 0xd8, 0xfb, 0x10, 0x3b, 0xd4, 0x03, 0x4f, 0x96, 0x5c, 0xed, 0x73, + 0xdd, 0x6b, 0x60, 0x66, 0x9b, 0x5c, 0xea, 0x75, 0x77, 0x5d, 0xf8, 0x6c, 0x6c, 0x04, 0x6b, 0x55, + 0xe5, 0xe9, 0x9a, 0x63, 0x6c, 0x0d, 0x73, 0x22, 0xc3, 0xf8, 0x1f, 0x63, 0x6c, 0x4a, 0xa0, 0x0e, + 0x0b, 0x5f, 0xd8, 0xa2, 0x37, 0xfc, 0x0c, 0x90, 0xc4, 0x66, 0xc2, 0xf2, 0x88, 0x62, 0x5f, 0x6e, + 0xae, 0x23, 0x70, 0x88, 0x3d, 0x22, 0x6f, 0x7d, 0x0b, 0xe7, 0x61, 0xa5, 0xe0, 0x89, 0x60, 0xa8, + 0xee, 0x04, 0xa8, 0x80, 0xee, 0x8e, 0xfd, 0x6b, 0x19, 0xdf, 0xd5, 0xb2, 0x20, 0x50, 0x3e, 0x8c, + 0xe3, 0xe1, 0x1c, 0x62, 0x7c, 0xc6, 0x15, 0x84, 0x9a, 0xe5, 0x0e, 0x45, 0x98, 0xd4, 0x73, 0x80, + 0x38, 0xee, 0x3f, 0x32, 0xfd, 0x9b, 0xe3, 0x3e, 0x3e, 0x2f, 0xc7, 0xf2, 0x5c, 0xe6, 0x00, 0x0f, + 0xe4, 0xb0, 0x62, 0x64, 0x02, 0x85, 0x2f, 0xa7, 0x0e, 0x1d, 0xe2, 0x3a, 0x29, 0xfd, 0x05, 0x32, + 0x24, 0x13, 0x9e, 0x30, 0xe3, 0x06, 0x9c, 0x66, 0x40, 0x59, 0xf4, 0xac, 0x5c, 0x97, 0x13, 0x02, + 0x1b, 0x27, 0x7c, 0x5a, 0xe4, 0xa1, 0x09, 0x90, 0x75, 0x83, 0x4c, 0x42, 0x8e, 0x34, 0xff, 0x1f, + 0x71, 0x2a, 0x22, 0x99, 0x66, 0x10, 0x27, 0x46, 0xb2, 0x70, 0xca, 0x48, 0x1c, 0xea, 0x70, 0x0b, + 0x48, 0x7a, 0x2d, 0xa6, 0xe3, 0x65, 0x1d, 0x94, 0x14, 0x0f, 0xe7, 0x98, 0x51, 0x86, 0xd5, 0x40, + 0xd1, 0x72, 0x8f, 0x06, 0x50, 0x0b, 0xe6, 0x6c, 0x8b, 0x64, 0xe2, 0x9a, 0xe3, 0xae, 0xed, 0x39, + 0xe6, 0x1c, 0x0c, 0x50, 0x3a, 0x19, 0x6b, 0x99, 0x83, 0x7a, 0x3c, 0xbd, 0x4e, 0x35, 0x4b, 0x31, + 0x02, 0xd1, 0x69, 0x06, 0x3c, 0xfd, 0xf0, 0x50, 0x8a, 0xc1, 0xee, 0x34, 0x03, 0xe4, 0x1f, 0x40, + 0x1f, 0xf9, 0x24, 0x63, 0xe6, 0x93, 0x51, 0xc2, 0x42, 0xc5, 0x08, 0x44, 0x04, 0x2a, 0xfd, 0xea, + 0x6c, 0x78, 0x4c, 0x4e, 0x47, 0x80, 0xcd, 0xab, 0x69, 0x54, 0x75, 0x8d, 0x9e, 0xd1, 0xe6, 0x42, + 0xe9, 0x25, 0x8a, 0xdd, 0xdb, 0x8a, 0x04, 0x68, 0xa1, 0x9e, 0x61, 0xc5, 0x79, 0x02, 0x59, 0x39, + 0x81, 0xb1, 0xc0, 0xe9, 0x40, 0x65, 0x41, 0x9a, 0x94, 0x29, 0x21, 0xda, 0xa2, 0xee, 0xfb, 0x66, + 0xa7, 0x67, 0xd8, 0xb5, 0xed, 0xfa, 0x2a, 0x4b, 0xb8, 0x36, 0xab, 0xfb, 0x15, 0x45, 0x0d, 0x76, + 0xb7, 0xb7, 0x9d, 0xe5, 0x09, 0xbe, 0xf2, 0xd6, 0x2b, 0xbd, 0xb5, 0x5e, 0x68, 0x7f, 0x26, 0x95, + 0x46, 0x53, 0x3b, 0xc0, 0x60, 0x38, 0x37, 0xbc, 0xa7, 0x3d, 0xba, 0x63, 0x1f, 0x7b, 0x94, 0xba, + 0x3b, 0xa0, 0x74, 0x47, 0x7c, 0x69, 0x7f, 0x75, 0x1f, 0xcb, 0x5a, 0x7d, 0x72, 0x56, 0xb6, 0x14, + 0x1c, 0x59, 0xef, 0xb3, 0xa0, 0x03, 0xae, 0x6e, 0x75, 0x8c, 0xbb, 0x60, 0x3a, 0xf6, 0xc7, 0x13, + 0x3f, 0x34, 0x19, 0x09, 0x9e, 0x6e, 0xc1, 0x93, 0x19, 0xa2, 0xb9, 0x4a, 0x5a, 0x29, 0xb2, 0x9c, + 0x07, 0x10, 0xfa, 0xfb, 0x0a, 0x3e, 0x80, 0x00, 0x14, 0x06, 0xb1, 0xc1, 0xa4, 0x1f, 0x1b, 0xfd, + 0x56, 0x39, 0xc1, 0xf4, 0x95, 0xbe, 0x83, 0x81, 0xe6, 0xef, 0x3c, 0x45, 0xc8, 0xa4, 0xc8, 0x13, + 0xe8, 0x11, 0x5c, 0xf2, 0x23, 0x05, 0x34, 0xb4, 0x0f, 0x82, 0x46, 0xa0, 0xdf, 0xb2, 0x03, 0x19, + 0x96, 0x3c, 0x54, 0x22, 0x3a, 0x03, 0x1c, 0x02, 0x07, 0xc0, 0xa0, 0x0f, 0x5c, 0x9d, 0x36, 0x08, + 0xf6, 0x3a, 0x3e, 0xfd, 0xae, 0x28, 0xb1, 0xdd, 0x3e, 0x9e, 0x50, 0x02, 0x93, 0xda, 0x4c, 0xc2, + 0x97, 0x0c, 0xc2, 0x04, 0xa2, 0x31, 0x9f, 0x93, 0x28, 0x81, 0xa3, 0x18, 0x38, 0x42, 0x02, 0xb6, + 0x45, 0x7d, 0x6d, 0xc6, 0x92, 0xec, 0x90, 0x0e, 0x1a, 0x7d, 0x68, 0x35, 0x0d, 0x5e, 0x59, 0x36, + 0xb1, 0x2f, 0x14, 0xac, 0x46, 0x90, 0xca, 0x9b, 0x80, 0x9e, 0xa0, 0xd9, 0xf7, 0xfd, 0x96, 0xfd, + 0x00, 0xd0, 0x40, 0xc5, 0xe0, 0xf9, 0x3d, 0x8d, 0xe5, 0xa6, 0x43, 0xdc, 0x74, 0x18, 0x46, 0x37, + 0xab, 0x7d, 0xb5, 0x1d, 0xaa, 0xb8, 0x4e, 0x39, 0x60, 0x1c, 0x87, 0x73, 0x46, 0xb6, 0x09, 0xf0, + 0xa4, 0x00, 0x3a, 0x5f, 0x09, 0xcf, 0x72, 0xc0, 0x65, 0x2d, 0xcd, 0x76, 0xed, 0x54, 0x08, 0xe9, + 0x28, 0x32, 0x08, 0xcc, 0x2e, 0x2c, 0x75, 0x07, 0xe5, 0x0e, 0xa2, 0x25, 0x61, 0xb7, 0xd0, 0xd2, + 0xd8, 0x8f, 0x25, 0x5f, 0x83, 0x4c, 0x77, 0x69, 0xae, 0x51, 0x47, 0x88, 0x71, 0x33, 0x83, 0xd0, + 0xca, 0xbf, 0x73, 0x84, 0x8a, 0xec, 0xb7, 0x06, 0x15, 0xac, 0x9f, 0x5b, 0x65, 0x26, 0xba, 0xc4, + 0x31, 0xcc, 0x48, 0x18, 0x34, 0xd1, 0x1d, 0x9a, 0x14, 0x52, 0x63, 0xeb, 0x23, 0x02, 0xb7, 0x87, + 0xe2, 0x7d, 0x43, 0xca, 0x64, 0x8d, 0x90, 0x49, 0x49, 0xc7, 0xd5, 0xa8, 0x8b, 0x8f, 0x4b, 0xf6, + 0x0d, 0x68, 0x77, 0x97, 0x1a, 0x3b, 0x95, 0x99, 0x0c, 0x52, 0x02, 0x0f, 0xf1, 0x53, 0x6d, 0xd5, + 0x97, 0x95, 0xa6, 0x51, 0x4d, 0xd3, 0xbb, 0xae, 0xd5, 0x34, 0xd6, 0xc0, 0x1b, 0x11, 0x74, 0x31, + 0x81, 0xb3, 0x1c, 0xc3, 0x1a, 0x6a, 0xd2, 0xf6, 0xcd, 0x3f, 0x02, 0xa5, 0x42, 0x8e, 0x4f, 0x8e, + 0x46, 0x35, 0xb0, 0xa5, 0xba, 0xd3, 0x36, 0x2d, 0x2d, 0x89, 0x22, 0xbd, 0x66, 0x39, 0xad, 0xea, + 0x03, 0x4a, 0x2b, 0xe5, 0x22, 0xa0, 0x6d, 0x63, 0x2e, 0xa0, 0xbb, 0x6f, 0xdf, 0x52, 0x92, 0xb3, + 0x3f, 0x0b, 0x0e, 0xe3, 0xd9, 0x80, 0xf8, 0x64, 0x43, 0x4f, 0xe7, 0x95, 0xf4, 0xec, 0xbe, 0x92, + 0x9e, 0xee, 0x4f, 0xe9, 0x59, 0x0b, 0xe5, 0x14, 0x26, 0xfc, 0x45, 0x78, 0xd7, 0x6b, 0xac, 0x05, + 0xcd, 0xea, 0xfe, 0xf8, 0xd3, 0x31, 0x6b, 0xd4, 0xf5, 0xbc, 0x52, 0xcc, 0x3e, 0xbe, 0x52, 0xcc, + 0x3e, 0xfe, 0x7c, 0xcc, 0x1a, 0x65, 0xd0, 0xa0, 0xb3, 0xa1, 0x0f, 0x41, 0x4a, 0xdd, 0xf4, 0x9e, + 0xc4, 0x6d, 0xfc, 0x3f, 0xc4, 0xad, 0xf1, 0x5d, 0xa0, 0xa5, 0x9e, 0xce, 0x2b, 0xe9, 0xd9, 0x7d, + 0x25, 0x3d, 0xdd, 0x9f, 0xd3, 0x83, 0x01, 0x4a, 0x8f, 0xcf, 0xc7, 0x04, 0xa6, 0x13, 0xb8, 0x0d, + 0xaa, 0xaa, 0x75, 0x2d, 0xd1, 0x60, 0xd7, 0x0a, 0x49, 0x50, 0xc0, 0x36, 0xae, 0xb9, 0xd9, 0xb6, + 0x5a, 0xa5, 0xed, 0x46, 0x8d, 0x6e, 0x4a, 0x6e, 0xf8, 0xf4, 0x84, 0x65, 0x88, 0x19, 0x29, 0x12, + 0xdc, 0x7f, 0x94, 0x70, 0x38, 0xef, 0x81, 0x22, 0x7a, 0xa4, 0xaf, 0xb2, 0x50, 0x2c, 0x51, 0xf2, + 0x0c, 0xce, 0x81, 0xf3, 0x15, 0xa9, 0xb1, 0x18, 0x4e, 0x22, 0x10, 0x30, 0x00, 0x4b, 0xba, 0x35, + 0x73, 0x0e, 0x23, 0x07, 0x51, 0x84, 0x40, 0x47, 0x92, 0x0b, 0x6d, 0x98, 0xb6, 0x71, 0x30, 0x22, + 0x48, 0x8f, 0xcf, 0x62, 0x3f, 0x18, 0xbd, 0xc8, 0x8f, 0x16, 0xf0, 0xc1, 0x53, 0x5a, 0x34, 0xed, + 0x76, 0xc2, 0x63, 0xb0, 0x35, 0x32, 0x52, 0x3d, 0x52, 0xdb, 0x1e, 0xcd, 0x58, 0x74, 0x73, 0x2d, + 0x6f, 0x97, 0x2a, 0x4e, 0x2c, 0x01, 0x22, 0x90, 0x8a, 0x2c, 0x9f, 0x82, 0xc1, 0xab, 0xb3, 0xfb, + 0x3d, 0x76, 0x2d, 0x95, 0x8d, 0x6c, 0xa6, 0xd6, 0xd8, 0x15, 0x94, 0x6a, 0x18, 0x92, 0x20, 0x8b, + 0x8e, 0x7f, 0xbf, 0xe7, 0xbd, 0xeb, 0x3e, 0xba, 0x0f, 0x70, 0x66, 0x10, 0xf3, 0xe3, 0x44, 0x40, + 0x87, 0xc6, 0x04, 0x58, 0x80, 0x44, 0xfb, 0x64, 0xcf, 0xfc, 0x7e, 0x02, 0xa3, 0x04, 0xcb, 0x55, + 0x05, 0x6b, 0x2d, 0x62, 0xc4, 0x1c, 0x65, 0x78, 0xa7, 0x13, 0x2c, 0xe9, 0xd5, 0x8b, 0xe8, 0xe0, + 0xe8, 0x85, 0x22, 0xba, 0xad, 0xaa, 0xa8, 0x53, 0x55, 0x51, 0xa7, 0xbb, 0x51, 0x44, 0xe0, 0x3a, + 0x3a, 0xa8, 0x30, 0xb1, 0xe6, 0x66, 0x54, 0xe9, 0x84, 0x03, 0xbe, 0x6f, 0xef, 0x40, 0xc4, 0x8e, + 0xfa, 0x50, 0x8a, 0x98, 0xea, 0x2a, 0xd3, 0xf8, 0x21, 0x9c, 0xe0, 0x0c, 0x78, 0x2d, 0x25, 0x24, + 0xd4, 0xca, 0x6e, 0xee, 0xe9, 0xd0, 0xc1, 0x31, 0x57, 0x6b, 0xc5, 0xb1, 0x21, 0xd6, 0x28, 0xe5, + 0x20, 0x7b, 0x07, 0x09, 0x50, 0xa6, 0x7a, 0x49, 0x11, 0x9c, 0x55, 0xe7, 0x6c, 0x0e, 0xd6, 0x1c, + 0x3c, 0x42, 0x73, 0x06, 0xf3, 0x71, 0x0a, 0x83, 0x22, 0x8b, 0xdd, 0xe5, 0x0e, 0x9c, 0x96, 0x8c, + 0x0b, 0x95, 0x63, 0xcf, 0x97, 0x2b, 0x56, 0x2b, 0x4e, 0x6c, 0x73, 0xb6, 0x51, 0xaa, 0xc3, 0xdb, + 0x8c, 0xe5, 0x1c, 0x7f, 0x96, 0x81, 0xa2, 0x37, 0x05, 0xfa, 0x41, 0xe6, 0x11, 0x23, 0x7b, 0xed, + 0x5d, 0xbf, 0xd3, 0x99, 0x92, 0x14, 0xc6, 0x5f, 0xe2, 0x0c, 0xc7, 0xa3, 0xbd, 0xdd, 0x77, 0xef, + 0x70, 0xb8, 0xba, 0x73, 0x7f, 0x50, 0x60, 0x1f, 0x3e, 0x96, 0x99, 0x3c, 0xb6, 0x17, 0x3c, 0x9b, + 0x44, 0x95, 0x30, 0x96, 0xfd, 0x60, 0xe7, 0xd5, 0xd8, 0xee, 0xec, 0xf3, 0x41, 0xe3, 0x08, 0x1c, + 0xc0, 0x91, 0x8b, 0x2c, 0x60, 0x28, 0x5e, 0x86, 0x7f, 0xce, 0xa1, 0x78, 0xb8, 0x52, 0x05, 0x53, + 0xbe, 0xb5, 0x61, 0xa7, 0x0b, 0x26, 0x8c, 0x25, 0x3e, 0xb1, 0xc6, 0xb8, 0x22, 0x38, 0x26, 0xe0, + 0x94, 0x13, 0xc9, 0x1c, 0xe2, 0xa6, 0x93, 0x3b, 0x8f, 0x70, 0x81, 0x3f, 0x43, 0x29, 0xa6, 0x48, + 0x26, 0x17, 0x10, 0x54, 0xbc, 0xc6, 0x14, 0xa9, 0x09, 0xa3, 0xdf, 0x6f, 0x71, 0x33, 0xed, 0xd9, + 0x59, 0x11, 0x2e, 0xff, 0x31, 0x35, 0xe1, 0xb9, 0x82, 0x9a, 0x49, 0xb0, 0x1e, 0x3f, 0xb3, 0x54, + 0x6a, 0x66, 0x87, 0x25, 0x3e, 0xb0, 0xd7, 0x22, 0xd3, 0x29, 0x0c, 0xaf, 0x49, 0x8a, 0x48, 0x4c, + 0x13, 0x84, 0xa9, 0x79, 0x7e, 0x71, 0x65, 0x90, 0xfd, 0x0a, 0xfe, 0x92, 0xea, 0x8e, 0x8b, 0xc8, + 0x10, 0x67, 0xa1, 0x10, 0x53, 0x48, 0x72, 0xa3, 0xed, 0x07, 0x90, 0x30, 0x12, 0x00, 0xab, 0x31, + 0xb4, 0xce, 0x59, 0x04, 0x3f, 0x08, 0xe1, 0xe7, 0xa1, 0x0d, 0xe1, 0x49, 0x98, 0xc7, 0x8b, 0x10, + 0x08, 0xe8, 0xd3, 0xc1, 0xd1, 0x72, 0x4b, 0xe3, 0x29, 0xa1, 0x7c, 0x86, 0xef, 0x76, 0xc7, 0x59, + 0xa8, 0x34, 0x19, 0x33, 0x26, 0x36, 0xca, 0x27, 0x4f, 0x78, 0x8c, 0xf5, 0x23, 0x6a, 0x95, 0x63, + 0x86, 0xcd, 0x86, 0x99, 0x8f, 0x31, 0x60, 0x30, 0x49, 0x97, 0x01, 0x1b, 0xe2, 0x6f, 0x01, 0x78, + 0xa4, 0x5d, 0x82, 0x2d, 0x1b, 0xae, 0x5a, 0x8b, 0x0d, 0x2f, 0x4f, 0x9e, 0xeb, 0x31, 0xd4, 0xdf, + 0x78, 0xa9, 0x0d, 0xfe, 0x06, 0x7d, 0x72, 0x78, 0xb4, 0x65, 0xef, 0x5d, 0xbf, 0xbd, 0xe9, 0xc2, + 0x08, 0x8c, 0x37, 0x45, 0x38, 0x40, 0x21, 0x2e, 0x2f, 0x6d, 0x42, 0x6a, 0x84, 0x7c, 0x74, 0x77, + 0x9b, 0xa3, 0x8b, 0xe1, 0x4b, 0x42, 0xef, 0xe8, 0xc0, 0xc8, 0x1c, 0xb3, 0xe2, 0xf6, 0x25, 0x99, + 0x5f, 0xe8, 0xe0, 0xd7, 0xd3, 0xcb, 0xe6, 0x6f, 0xc3, 0x17, 0xf1, 0xed, 0xd1, 0xc1, 0x3f, 0x0b, + 0x2e, 0x00, 0x5d, 0xf3, 0x98, 0x4f, 0x9b, 0x17, 0x91, 0x0e, 0x01, 0xe2, 0x65, 0x13, 0x7c, 0x7d, + 0xd6, 0x78, 0xd5, 0xff, 0x6f, 0x56, 0xfb, 0x0c, 0x8a, 0x17, 0xf9, 0x04, 0x02, 0x34, 0x66, 0xf9, + 0xf4, 0x97, 0x37, 0xa8, 0xf2, 0x19, 0xb9, 0x4a, 0xe1, 0x5b, 0x3a, 0xb8, 0x5c, 0xf0, 0x84, 0x4f, + 0x67, 0xfa, 0x0c, 0x58, 0xfa, 0xfb, 0x5a, 0x81, 0x5c, 0xae, 0x9e, 0x17, 0x68, 0xac, 0x78, 0xec, + 0xea, 0x12, 0x02, 0x08, 0x46, 0xdb, 0x9d, 0x95, 0xd4, 0x3a, 0xe1, 0xac, 0x8a, 0x01, 0x2f, 0x21, + 0xff, 0xef, 0x7b, 0x4e, 0x0b, 0x2f, 0x71, 0x48, 0x79, 0x78, 0xd3, 0xc3, 0x6b, 0x1f, 0xfe, 0x3a, + 0xff, 0x5f, 0xa1, 0xa9, 0x22, 0x71, 0xad, 0x17, 0x00, 0x00 }; // Autogenerated from wled00/data/settings_leds.htm, do not edit!! const uint16_t PAGE_settings_leds_length = 8389; const uint8_t PAGE_settings_leds[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xdd, 0x7d, 0xeb, 0x76, 0xda, 0xc8, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xdd, 0x7d, 0xeb, 0x76, 0xda, 0xc8, 0x96, 0xf0, 0x7f, 0x9e, 0x42, 0xae, 0xee, 0x76, 0xa4, 0x46, 0x80, 0x84, 0xc1, 0x4d, 0x00, 0xe1, 0x31, 0x76, 0x92, 0xf6, 0x1c, 0x3b, 0xf6, 0xb2, 0x9d, 0xce, 0x99, 0x95, 0xce, 0x74, 0x84, 0x28, 0x40, 0xb1, 0x90, 0x38, 0x92, 0xf0, 0x65, 0x6c, 0xcf, 0x33, 0xcd, 0x33, 0xcc, 0x93, 0x7d, 0x7b, @@ -832,7 +834,7 @@ const uint8_t PAGE_settings_leds[] PROGMEM = { // Autogenerated from wled00/data/settings_dmx.htm, do not edit!! const uint16_t PAGE_settings_dmx_length = 1740; const uint8_t PAGE_settings_dmx[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x95, 0x57, 0x5b, 0x73, 0xdb, 0x36, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x95, 0x57, 0x5b, 0x73, 0xdb, 0x36, 0x16, 0x7e, 0xd7, 0xaf, 0x40, 0xf0, 0x50, 0x93, 0x23, 0x86, 0x94, 0x9c, 0x75, 0xb7, 0x91, 0x45, 0x7a, 0x63, 0xc5, 0x6b, 0x7b, 0xc7, 0x76, 0x3d, 0x51, 0xd2, 0x74, 0xa7, 0xe9, 0x74, 0x20, 0x12, 0x12, 0x51, 0x93, 0x04, 0x17, 0x00, 0x25, 0xbb, 0x69, 0xfe, 0xfb, 0x7e, 0x00, 0xa9, 0x8b, 0x6f, @@ -947,7 +949,7 @@ const uint8_t PAGE_settings_dmx[] PROGMEM = { // Autogenerated from wled00/data/settings_ui.htm, do not edit!! const uint16_t PAGE_settings_ui_length = 3345; const uint8_t PAGE_settings_ui[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x5a, 0x6b, 0x73, 0xd3, 0x48, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x5a, 0x6b, 0x73, 0xd3, 0x48, 0x16, 0xfd, 0xee, 0x5f, 0xd1, 0x34, 0x54, 0xc6, 0xaa, 0x08, 0xc5, 0x81, 0xa9, 0x5a, 0xb0, 0x2d, 0x67, 0x49, 0x60, 0x20, 0x53, 0x61, 0x60, 0x71, 0x58, 0x66, 0x8a, 0xa5, 0x32, 0xb2, 0xd4, 0xb6, 0x9b, 0xc8, 0x6a, 0x8d, 0xba, 0x15, 0x27, 0x6b, 0xfc, 0xdf, 0xf7, 0xdc, 0x6e, 0xc9, 0x96, 0x9d, @@ -1163,7 +1165,7 @@ const uint8_t PAGE_settings_ui[] PROGMEM = { // Autogenerated from wled00/data/settings_sync.htm, do not edit!! const uint16_t PAGE_settings_sync_length = 3465; const uint8_t PAGE_settings_sync[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x9d, 0x5a, 0xeb, 0x53, 0xdb, 0x48, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x9d, 0x5a, 0xeb, 0x53, 0xdb, 0x48, 0x12, 0xff, 0xae, 0xbf, 0x62, 0xa2, 0xab, 0xca, 0xda, 0x8b, 0xf1, 0x03, 0x30, 0x21, 0x60, 0x29, 0x07, 0x98, 0x80, 0xef, 0x20, 0x71, 0x6c, 0xd8, 0x64, 0xeb, 0xee, 0x6a, 0x6b, 0x2c, 0x8d, 0xed, 0x01, 0x49, 0xa3, 0xd5, 0x8c, 0x78, 0x54, 0x36, 0xff, 0xfb, 0x75, 0xcf, 0x48, 0xb2, 0x2d, 0xfc, @@ -1386,7 +1388,7 @@ const uint8_t PAGE_settings_sync[] PROGMEM = { // Autogenerated from wled00/data/settings_time.htm, do not edit!! const uint16_t PAGE_settings_time_length = 3437; const uint8_t PAGE_settings_time[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xd5, 0x1a, 0x6b, 0x77, 0xda, 0x38, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xd5, 0x1a, 0x6b, 0x77, 0xda, 0x38, 0xf6, 0x3b, 0xbf, 0x42, 0x51, 0x7b, 0x32, 0x78, 0x62, 0x9e, 0x09, 0x6d, 0x02, 0x98, 0x2c, 0x21, 0xb4, 0x49, 0x0b, 0x24, 0xa7, 0xd0, 0xc9, 0x6e, 0x1f, 0x67, 0x2a, 0xb0, 0x00, 0x25, 0x46, 0x62, 0x6d, 0x39, 0x24, 0x9b, 0xe6, 0xbf, 0xef, 0x95, 0x64, 0xcc, 0xd3, 0x49, 0xdb, 0x99, 0xfd, 0xb0, @@ -1607,7 +1609,7 @@ const uint8_t PAGE_settings_time[] PROGMEM = { // Autogenerated from wled00/data/settings_sec.htm, do not edit!! const uint16_t PAGE_settings_sec_length = 2551; const uint8_t PAGE_settings_sec[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x9d, 0x58, 0x6d, 0x53, 0xdb, 0x48, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x9d, 0x58, 0x6d, 0x53, 0xdb, 0x48, 0x12, 0xfe, 0xee, 0x5f, 0x31, 0x9e, 0xad, 0xca, 0x4a, 0x17, 0x21, 0x03, 0x49, 0x6d, 0x25, 0x60, 0x99, 0x83, 0x40, 0x36, 0x5c, 0x41, 0xa0, 0xb0, 0xd9, 0xdc, 0x55, 0x2e, 0x95, 0x92, 0xa5, 0xb1, 0x35, 0xb1, 0xac, 0xd1, 0xce, 0x8c, 0x70, 0x7c, 0xd9, 0xfc, 0xf7, 0x7b, 0x7a, 0x24, 0xf9, 0x85, @@ -1773,7 +1775,7 @@ const uint8_t PAGE_settings_sec[] PROGMEM = { // Autogenerated from wled00/data/settings_um.htm, do not edit!! const uint16_t PAGE_settings_um_length = 3298; const uint8_t PAGE_settings_um[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x59, 0x6d, 0x73, 0xdb, 0x36, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x59, 0x6d, 0x73, 0xdb, 0x36, 0x12, 0xfe, 0xae, 0x5f, 0x41, 0xa3, 0x19, 0x99, 0x1c, 0xd1, 0x94, 0x9c, 0xb6, 0x33, 0x39, 0x49, 0x94, 0x2e, 0x76, 0xdc, 0xc6, 0x97, 0x17, 0x7b, 0xe2, 0xa4, 0x99, 0x1b, 0xc7, 0x17, 0x53, 0x22, 0x24, 0x21, 0xa6, 0x08, 0x96, 0x00, 0xed, 0xf8, 0x64, 0xfd, 0xf7, 0x7b, 0x16, 0x20, 0x29, 0xca, @@ -1986,7 +1988,7 @@ const uint8_t PAGE_settings_um[] PROGMEM = { // Autogenerated from wled00/data/settings_2D.htm, do not edit!! const uint16_t PAGE_settings_2D_length = 3288; const uint8_t PAGE_settings_2D[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xc5, 0x5a, 0x5b, 0x77, 0xdb, 0x36, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xc5, 0x5a, 0x5b, 0x77, 0xdb, 0x36, 0x12, 0x7e, 0xd7, 0xaf, 0x80, 0xb1, 0x5d, 0x97, 0xb4, 0xa8, 0x9b, 0x9b, 0xf6, 0xb4, 0x92, 0x28, 0x6d, 0x1c, 0xa7, 0xb1, 0xf7, 0xd8, 0x89, 0x8e, 0xe5, 0xc6, 0xc9, 0x69, 0x7b, 0x36, 0x34, 0x09, 0x49, 0x48, 0x28, 0x80, 0x25, 0x40, 0xd9, 0xae, 0xe3, 0xff, 0xbe, 0x33, 0x00, 0x6f, 0xba, 0xd8, @@ -2198,7 +2200,7 @@ const uint8_t PAGE_settings_2D[] PROGMEM = { // Autogenerated from wled00/data/settings_pin.htm, do not edit!! const uint16_t PAGE_settings_pin_length = 461; const uint8_t PAGE_settings_pin[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x5d, 0x92, 0x4b, 0x6f, 0x13, 0x31, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x5d, 0x92, 0x4b, 0x6f, 0x13, 0x31, 0x14, 0x85, 0xf7, 0xf3, 0x2b, 0xcc, 0xdd, 0x34, 0x41, 0xc9, 0x4c, 0xa9, 0x58, 0x80, 0x6a, 0x8f, 0x50, 0xa0, 0x0b, 0x36, 0xa5, 0x52, 0xd9, 0xa0, 0xaa, 0xaa, 0x1c, 0xfb, 0x4e, 0x62, 0xd5, 0x8f, 0xc1, 0x8f, 0x84, 0x80, 0xfa, 0xdf, 0xb9, 0x9e, 0x29, 0x05, 0xb1, 0x19, 0xfb, 0x5c, 0xdb, 0xe7, diff --git a/wled00/set.cpp b/wled00/set.cpp index e61da090..85a3b4ec 100644 --- a/wled00/set.cpp +++ b/wled00/set.cpp @@ -32,6 +32,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) if (passlen == 0 || (passlen > 7 && !isAsterisksOnly(request->arg(F("AP")).c_str(), 65))) strlcpy(apPass, request->arg(F("AP")).c_str(), 65); int t = request->arg(F("AC")).toInt(); if (t > 0 && t < 14) apChannel = t; + force802_3g = request->hasArg(F("FG")); noWifiSleep = request->hasArg(F("WS")); #ifndef WLED_DISABLE_ESPNOW diff --git a/wled00/wled.cpp b/wled00/wled.cpp index 50516021..8ba6b1a5 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -683,7 +683,7 @@ void WLED::initConnection() WiFi.disconnect(true); // close old connections #ifdef ESP8266 - WiFi.setPhyMode(WIFI_PHY_MODE_11N); + WiFi.setPhyMode(force802_3g ? WIFI_PHY_MODE_11G : WIFI_PHY_MODE_11N); #endif if (staticIP[0] != 0 && staticGateway[0] != 0) { diff --git a/wled00/wled.h b/wled00/wled.h index 20ceb2d3..03e19707 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -315,6 +315,7 @@ WLED_GLOBAL bool noWifiSleep _INIT(true); // disabling #else WLED_GLOBAL bool noWifiSleep _INIT(false); #endif +WLED_GLOBAL bool force802_3g _INIT(false); #ifdef WLED_USE_ETHERNET #ifdef WLED_ETH_DEFAULT // default ethernet board type if specified diff --git a/wled00/xml.cpp b/wled00/xml.cpp index 38413383..c7a03cf9 100644 --- a/wled00/xml.cpp +++ b/wled00/xml.cpp @@ -277,6 +277,7 @@ void getSettingsJS(byte subPage, char* dest) sappends('s',SET_F("AP"),fapass); sappend('v',SET_F("AC"),apChannel); + sappend('c',SET_F("FG"),force802_3g); sappend('c',SET_F("WS"),noWifiSleep); #ifndef WLED_DISABLE_ESPNOW From a3a5bffce41c39653adf405557c82726a3c8043b Mon Sep 17 00:00:00 2001 From: srg74 <28492985+srg74@users.noreply.github.com> Date: Sun, 24 Dec 2023 12:10:51 -0500 Subject: [PATCH 026/441] Update readme.md Fixed typo --- usermods/quinled-an-penta/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usermods/quinled-an-penta/readme.md b/usermods/quinled-an-penta/readme.md index 2338747d..c1260d91 100644 --- a/usermods/quinled-an-penta/readme.md +++ b/usermods/quinled-an-penta/readme.md @@ -2,7 +2,7 @@ The (un)official usermod to get the best out of the QuinLED-An-Penta (https://quinled.info/quinled-an-penta/), e.g. using the OLED and the SHT30 temperature/humidity sensor. ## Requirements -* "u8gs" by olikraus, v2.28 or higher: https://github.com/olikraus/u8g2 +* "u8g2" by olikraus, v2.28 or higher: https://github.com/olikraus/u8g2 * "SHT85" by Rob Tillaart, v0.2 or higher: https://github.com/RobTillaart/SHT85 ## Usermod installation From 5ebc345e95e2a68d0799d23acf7acc27d94b06a9 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Mon, 25 Dec 2023 17:47:39 +0100 Subject: [PATCH 027/441] Possible bugfix for #3609 #3616 --- wled00/FX_fcn.cpp | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 08024fa9..2a3c51de 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -90,18 +90,21 @@ Segment::Segment(const Segment &orig) { //DEBUG_PRINTF("-- Copy segment constructor: %p -> %p\n", &orig, this); memcpy((void*)this, (void*)&orig, sizeof(Segment)); _t = nullptr; // copied segment cannot be in transition - if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); } else { name = nullptr; } - if (orig.data) { if (allocateData(orig._dataLen)) memcpy(data, orig.data, orig._dataLen); } else { data = nullptr; _dataLen = 0; } + name = nullptr; + data = nullptr; + _dataLen = 0; + 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); } } // move constructor Segment::Segment(Segment &&orig) noexcept { //DEBUG_PRINTF("-- Move segment constructor: %p -> %p\n", &orig, this); memcpy((void*)this, (void*)&orig, sizeof(Segment)); + orig._t = nullptr; // old segment cannot be in transition any more orig.name = nullptr; orig.data = nullptr; orig._dataLen = 0; - orig._t = nullptr; // old segment cannot be in transition any more } // copy assignment @@ -110,14 +113,7 @@ Segment& Segment::operator= (const Segment &orig) { if (this != &orig) { // clean destination if (name) { delete[] name; name = nullptr; } - if (orig.name) { name = new char[strlen(orig.name)+1]; if (name) strcpy(name, orig.name); } - if (_t) { - #ifndef WLED_DISABLE_MODE_BLEND - if (_t->_segT._dataT) free(_t->_segT._dataT); - #endif - delete _t; - _t = nullptr; // copied segment cannot be in transition - } + stopTransition(); deallocateData(); // copy source memcpy((void*)this, (void*)&orig, sizeof(Segment)); @@ -125,6 +121,7 @@ Segment& Segment::operator= (const Segment &orig) { data = nullptr; _dataLen = 0; // 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); } } return *this; @@ -135,13 +132,7 @@ Segment& Segment::operator= (Segment &&orig) noexcept { //DEBUG_PRINTF("-- Moving segment: %p -> %p\n", &orig, this); if (this != &orig) { if (name) { delete[] name; name = nullptr; } // free old name - if (_t) { - #ifndef WLED_DISABLE_MODE_BLEND - if (_t->_segT._dataT) free(_t->_segT._dataT); - #endif - delete _t; - _t = nullptr; - } + stopTransition(); deallocateData(); // free old runtime data memcpy((void*)this, (void*)&orig, sizeof(Segment)); orig.name = nullptr; @@ -153,10 +144,13 @@ Segment& Segment::operator= (Segment &&orig) noexcept { } bool Segment::allocateData(size_t len) { - if (data && _dataLen == len) return true; //already allocated + if (data && _dataLen >= len) { // already allocated enough (reduce fragmentation) + if (call == 0) memset(data, 0, len); // erase buffer if called during effect initialisation + return true; + } //DEBUG_PRINTF("-- Allocating data (%d): %p\n", len, this); deallocateData(); - if (len == 0) return(false); // nothing to do + if (len == 0) return false; // nothing to do if (Segment::getUsedSegmentData() + len > MAX_SEGMENT_DATA) { // not enough memory DEBUG_PRINT(F("!!! Effect RAM depleted: ")); From 010c3494fdc7c17d638c735460b43beefa389d74 Mon Sep 17 00:00:00 2001 From: Istvan Meszaros Date: Tue, 26 Dec 2023 11:09:20 +0100 Subject: [PATCH 028/441] Make palette editor mobile friendly. --- wled00/data/cpal/cpal.htm | 32 +- wled00/html_cpal.h | 604 +++++++++++++++++++------------------- 2 files changed, 333 insertions(+), 303 deletions(-) diff --git a/wled00/data/cpal/cpal.htm b/wled00/data/cpal/cpal.htm index e9a3799c..d91b8591 100644 --- a/wled00/data/cpal/cpal.htm +++ b/wled00/data/cpal/cpal.htm @@ -1,6 +1,7 @@ + @@ -45,6 +46,7 @@ width: 7px; top: 50%; transform: translateY(-50%); + touch-action: none; } .color-picker-marker { height: 7px; @@ -94,9 +96,14 @@ line-height: 1; } .wrap { - width: 800px; + width: 100%; margin: 0 auto; } + @media (min-width: 800px) { + .wrap { + width: 800px; + } + } .palette { height: 20px; } @@ -136,6 +143,9 @@ .sendSpan, .editSpan{ cursor: pointer; } + h1 { + font-size: 1.6rem; + } @@ -349,24 +359,31 @@ var gradientLength = maxX - minX + 1; elmnt.onmousedown = dragMouseDown; + elmnt.ontouchstart = dragMouseDown; function dragMouseDown(e) { removeTrashcan(event) e = e || window.event; - e.preventDefault(); + var isTouch = e.type.startsWith('touch'); + if (!isTouch) e.preventDefault(); // get the mouse cursor position at startup: - mousePos = e.clientX; + mousePos = isTouch ? e.touches[0].clientX : e.clientX; d.onmouseup = closeDragElement; + d.ontouchcancel = closeDragElement; + d.ontouchend = closeDragElement; // call a function whenever the cursor moves: d.onmousemove = elementDrag; + d.ontouchmove = elementDrag; } function elementDrag(e) { e = e || window.event; - e.preventDefault(); + var isTouch = e.type.startsWith('touch'); + if (!isTouch) e.preventDefault(); // calculate the new cursor position: - posNew = mousePos - e.clientX; - mousePos = e.clientX; + var clientX = isTouch ? e.touches[0].clientX : e.clientX; + posNew = mousePos - clientX; + mousePos = clientX; mousePosInGradient = mousePos - (minX + 1) truePos = Math.round((mousePosInGradient/gradientLength)*256); @@ -393,7 +410,10 @@ function closeDragElement() { /* stop moving when mouse button is released:*/ d.onmouseup = null; + d.ontouchcancel = null; + d.ontouchend = null; d.onmousemove = null; + d.ontouchmove = null; } } diff --git a/wled00/html_cpal.h b/wled00/html_cpal.h index a2009639..b4ac5684 100644 --- a/wled00/html_cpal.h +++ b/wled00/html_cpal.h @@ -7,302 +7,312 @@ */ // Autogenerated from wled00/data/cpal/cpal.htm, do not edit!! -const uint16_t PAGE_cpal_L = 4721; +const uint16_t PAGE_cpal_L = 4891; const uint8_t PAGE_cpal[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xbd, 0x3b, 0x7f, 0x73, 0xdb, 0xb6, - 0x92, 0xff, 0xe7, 0x53, 0x20, 0x4c, 0x5f, 0x42, 0xd6, 0x14, 0x45, 0xd2, 0xb6, 0x64, 0x4b, 0xa2, - 0x3b, 0xa9, 0x93, 0x77, 0xce, 0x8d, 0xdd, 0x64, 0x5e, 0x7c, 0x6e, 0x7b, 0x3e, 0xbf, 0x31, 0x4d, - 0x42, 0x12, 0x1b, 0x8a, 0xe0, 0x03, 0x21, 0xd9, 0xae, 0xac, 0xef, 0x7e, 0xbb, 0x00, 0x48, 0x91, - 0x94, 0xe4, 0x24, 0xd7, 0x37, 0xd7, 0xf1, 0x44, 0x20, 0xb0, 0x58, 0xec, 0x2e, 0xf6, 0x17, 0x16, - 0xe8, 0xe8, 0xe5, 0xbb, 0x8f, 0xa7, 0x97, 0xbf, 0x7f, 0x7a, 0x4f, 0xa6, 0x62, 0x96, 0x9e, 0x90, - 0x51, 0xf9, 0x43, 0xc3, 0x18, 0x7e, 0x66, 0x54, 0x84, 0x30, 0x22, 0xf2, 0x0e, 0xfd, 0xd7, 0x3c, - 0x59, 0x04, 0xc6, 0x69, 0x18, 0x4d, 0x69, 0xe7, 0x94, 0x65, 0x82, 0xb3, 0xd4, 0x20, 0x2f, 0x22, - 0x68, 0xd1, 0x4c, 0x04, 0x46, 0xc6, 0x3a, 0x11, 0x8e, 0xd9, 0x04, 0x5a, 0x85, 0x60, 0x1c, 0x5a, - 0xb3, 0x79, 0x21, 0x3a, 0x9c, 0x2e, 0xc2, 0x34, 0x89, 0x43, 0x41, 0x8d, 0x6d, 0x08, 0x3f, 0xf1, - 0x70, 0x32, 0x0b, 0xb7, 0x61, 0xda, 0x0a, 0xfe, 0xfe, 0x21, 0x4f, 0x38, 0x2d, 0x0c, 0x52, 0x81, - 0xbb, 0x08, 0x27, 0x12, 0x91, 0xd2, 0x93, 0x17, 0xbf, 0x9e, 0xbf, 0x7f, 0x47, 0x4e, 0x61, 0x55, - 0x36, 0x23, 0x9f, 0xc2, 0x94, 0x0a, 0x41, 0xc9, 0xfb, 0x38, 0x01, 0x6a, 0x46, 0x5d, 0x05, 0x42, - 0x46, 0x45, 0xc4, 0x93, 0x5c, 0x10, 0xf1, 0x98, 0xd3, 0xc0, 0x10, 0xf4, 0x41, 0x74, 0xff, 0x08, - 0x17, 0xa1, 0xea, 0x35, 0x4e, 0x5e, 0x8c, 0xe7, 0x59, 0x24, 0x12, 0x96, 0x91, 0xc9, 0x87, 0xd8, - 0xa4, 0xd6, 0x92, 0x53, 0x31, 0xe7, 0x19, 0x89, 0x9d, 0x09, 0x15, 0xef, 0x53, 0x3a, 0x83, 0x35, - 0x7f, 0x7e, 0x94, 0x43, 0xab, 0x0a, 0x34, 0x7a, 0xdf, 0x80, 0x8c, 0x38, 0x05, 0x6e, 0x35, 0x30, - 0x02, 0x2e, 0x42, 0x4e, 0xe2, 0x20, 0x66, 0xd1, 0x1c, 0x7b, 0x5e, 0x8c, 0xba, 0x6a, 0x35, 0x24, - 0x46, 0x3c, 0x22, 0xdd, 0x77, 0x2c, 0x7e, 0x5c, 0x8e, 0x81, 0xa3, 0xce, 0x38, 0x9c, 0x25, 0xe9, - 0xe3, 0xe0, 0x2d, 0x4f, 0xc2, 0xd4, 0x2e, 0xc2, 0xac, 0xe8, 0x14, 0x94, 0x27, 0xe3, 0xe1, 0x5d, - 0x18, 0x7d, 0x99, 0x70, 0x36, 0xcf, 0xe2, 0x4e, 0xc4, 0x52, 0xc6, 0x07, 0xaf, 0x3c, 0xcf, 0x1b, - 0xca, 0x29, 0x45, 0xf2, 0x27, 0x1d, 0x78, 0xbd, 0xfc, 0x61, 0xa8, 0x47, 0xe2, 0x38, 0x1e, 0xce, - 0x42, 0x3e, 0x49, 0xb2, 0x81, 0x4b, 0x3c, 0x17, 0x06, 0xd2, 0x24, 0xa3, 0x9d, 0x29, 0x4d, 0x26, - 0x53, 0x31, 0x70, 0x0e, 0x57, 0xaf, 0xf2, 0x90, 0x03, 0x21, 0x1d, 0x94, 0x61, 0x08, 0x43, 0x7c, - 0x99, 0xb3, 0x22, 0x41, 0x56, 0x06, 0x9c, 0xa6, 0xa1, 0x48, 0x16, 0x74, 0x78, 0x9f, 0xc4, 0x62, - 0x3a, 0xf0, 0x5c, 0xf7, 0x6f, 0x43, 0x3d, 0xd1, 0x07, 0x4c, 0xab, 0x57, 0x77, 0x4c, 0x80, 0x74, - 0x4f, 0x37, 0x67, 0x86, 0x77, 0x05, 0x4b, 0xe7, 0x82, 0xea, 0xa5, 0x3b, 0x82, 0xe5, 0x83, 0x43, - 0x39, 0x65, 0xc2, 0xc3, 0x38, 0xc1, 0xf5, 0xee, 0xd8, 0xc3, 0x72, 0x13, 0x2f, 0xb6, 0x57, 0x8e, - 0xa4, 0xbd, 0x03, 0x73, 0xbf, 0x50, 0x6e, 0xeb, 0xaf, 0x3c, 0x89, 0xe0, 0x4b, 0x77, 0x6e, 0x59, - 0xe9, 0x8e, 0xf1, 0x18, 0xc6, 0x11, 0xfd, 0xbc, 0x18, 0xec, 0x03, 0xa3, 0x1b, 0x62, 0x2a, 0x92, - 0x74, 0x41, 0xb9, 0x86, 0x1c, 0xf8, 0xf9, 0x03, 0x81, 0xb9, 0x49, 0x4c, 0xf8, 0xe4, 0x2e, 0x34, - 0x7b, 0x47, 0xb6, 0xfa, 0x73, 0x0e, 0xad, 0xe1, 0x9f, 0x9d, 0x24, 0x8b, 0xe9, 0xc3, 0xc0, 0x6f, - 0xd2, 0xb2, 0xd4, 0x54, 0xee, 0xa3, 0x1c, 0x15, 0xf1, 0x7d, 0x68, 0x29, 0xee, 0xfe, 0x36, 0x14, - 0x1c, 0xf6, 0x68, 0xcc, 0xf8, 0x6c, 0x20, 0x5b, 0x20, 0x3c, 0xfa, 0xbb, 0xd9, 0x81, 0x11, 0x6b, - 0xb5, 0x95, 0x09, 0x8d, 0xad, 0xbf, 0x81, 0xcc, 0x3b, 0x44, 0x29, 0xc4, 0x14, 0x94, 0x96, 0xee, - 0xe6, 0x58, 0x4f, 0x3f, 0xac, 0xa6, 0x63, 0xeb, 0x1b, 0xc4, 0xf0, 0x6a, 0x3c, 0x1e, 0x97, 0x42, - 0xd8, 0xaf, 0x84, 0xf0, 0xea, 0xf8, 0xce, 0x3f, 0xf2, 0x8f, 0xe4, 0xfa, 0xbe, 0x0f, 0xdc, 0x6c, - 0xc8, 0x40, 0x11, 0xbf, 0x9b, 0x10, 0xaf, 0x22, 0xc4, 0xab, 0x08, 0x91, 0xcd, 0x92, 0xa5, 0x0a, - 0xa5, 0x57, 0x92, 0x59, 0x53, 0xdf, 0xad, 0x4a, 0xbd, 0x72, 0xee, 0xe6, 0xa0, 0x62, 0x59, 0x94, - 0x86, 0x45, 0xb1, 0xcc, 0xc3, 0x38, 0x4e, 0xb2, 0xc9, 0xc0, 0xad, 0x34, 0x7a, 0x08, 0xfb, 0x29, - 0x92, 0x28, 0x4c, 0x3b, 0xe0, 0x56, 0x26, 0xd9, 0x40, 0x29, 0xe4, 0x0e, 0x5c, 0x6d, 0x75, 0x25, - 0x45, 0x1e, 0x66, 0xcb, 0x38, 0x29, 0xf2, 0x34, 0x7c, 0x1c, 0x24, 0x99, 0x34, 0x8c, 0x71, 0x4a, - 0x1f, 0x86, 0x12, 0x59, 0x27, 0x11, 0x74, 0x56, 0x0c, 0x22, 0x50, 0x56, 0x50, 0x9a, 0x9a, 0xe8, - 0x6a, 0x86, 0x06, 0x3a, 0xd4, 0x26, 0x61, 0x96, 0xc4, 0x71, 0x4a, 0x57, 0xaf, 0x92, 0x6c, 0xcc, - 0x2a, 0xe4, 0x86, 0x31, 0x44, 0xef, 0xa2, 0x41, 0xbe, 0x8a, 0x72, 0xd3, 0x02, 0x6b, 0x76, 0xb4, - 0x61, 0xc4, 0x20, 0xa5, 0x7b, 0x1e, 0xe6, 0xda, 0x9a, 0x8e, 0x5c, 0x1c, 0xaf, 0x4c, 0x3e, 0x9c, - 0x0b, 0xb6, 0x72, 0x72, 0xe5, 0xff, 0x96, 0x75, 0xeb, 0x2d, 0x3b, 0xff, 0x43, 0x5b, 0x64, 0xb1, - 0x44, 0xde, 0x61, 0x6f, 0x6a, 0x40, 0x9b, 0xea, 0x54, 0x4d, 0x2b, 0x2e, 0x40, 0x88, 0xcb, 0x96, - 0x7d, 0xd7, 0x3c, 0x85, 0x04, 0xbc, 0x64, 0x79, 0xb9, 0xe6, 0x38, 0x51, 0x3e, 0x06, 0x56, 0xfa, - 0x8b, 0xb2, 0x68, 0xf1, 0x0e, 0xcb, 0x94, 0x2c, 0x7c, 0x92, 0xae, 0xac, 0x92, 0xfa, 0xae, 0xbd, - 0xdc, 0x42, 0x51, 0x5b, 0xbe, 0xff, 0x56, 0x0a, 0x95, 0x0e, 0x17, 0xef, 0x92, 0xc5, 0x56, 0x6d, - 0xd3, 0x6b, 0xa7, 0x74, 0xdc, 0x30, 0x66, 0xb9, 0x47, 0x14, 0x02, 0xd6, 0x67, 0x50, 0x53, 0xdb, - 0x29, 0x68, 0x16, 0x63, 0x6b, 0x19, 0xcd, 0x79, 0x01, 0x94, 0xe4, 0x2c, 0x41, 0xba, 0x56, 0x18, - 0x41, 0x64, 0xe0, 0x20, 0xa3, 0xae, 0x0e, 0xd4, 0x18, 0x41, 0xe0, 0x27, 0x4e, 0x16, 0x24, 0x89, - 0x03, 0x03, 0x95, 0x03, 0x62, 0x24, 0x9a, 0x90, 0xfe, 0xd0, 0x83, 0x2f, 0xe4, 0xc4, 0xc0, 0x68, - 0xc8, 0xeb, 0x0f, 0x88, 0x98, 0xc9, 0xf8, 0xb1, 0x94, 0x8c, 0x66, 0x1f, 0xa7, 0x4c, 0xbd, 0xed, - 0x33, 0x36, 0x25, 0x8c, 0xd0, 0xc5, 0x62, 0x52, 0x81, 0x2b, 0x8e, 0xf6, 0x31, 0x2c, 0x95, 0x1e, - 0xb4, 0x57, 0x29, 0x69, 0x87, 0xcb, 0x1e, 0xe8, 0x30, 0xc8, 0x22, 0xa1, 0xf7, 0x3f, 0xb3, 0x07, - 0x08, 0xe4, 0xc4, 0x25, 0xfb, 0x3e, 0xfc, 0x19, 0x27, 0xa3, 0x3c, 0x14, 0x53, 0xf2, 0x62, 0x9c, - 0xa4, 0x69, 0x60, 0xbc, 0x72, 0xdd, 0x7d, 0xd8, 0x02, 0x03, 0x42, 0xa8, 0x71, 0xd1, 0x23, 0xbe, - 0x3f, 0x3d, 0x5a, 0x1c, 0x9c, 0xf5, 0xfe, 0xbc, 0xf0, 0x0e, 0x88, 0x77, 0x30, 0x3d, 0x58, 0x1c, - 0x4d, 0x3b, 0x07, 0xf0, 0x75, 0x04, 0xb1, 0xae, 0xfa, 0xf2, 0x7d, 0xd2, 0x43, 0xb8, 0x69, 0xe7, - 0xe8, 0x4f, 0xa3, 0x7b, 0x02, 0x02, 0x5b, 0x4c, 0x4e, 0x5e, 0x00, 0x89, 0x20, 0x4e, 0x29, 0x21, - 0x94, 0x9b, 0x71, 0xf2, 0x5c, 0xc2, 0x80, 0xa0, 0x52, 0xc2, 0x1e, 0xfe, 0x0b, 0xc2, 0x2b, 0x45, - 0x88, 0xd3, 0xdb, 0x11, 0xd4, 0xa8, 0x09, 0xbf, 0x1e, 0xef, 0x80, 0x17, 0x3d, 0xb5, 0x8e, 0xe1, - 0xfb, 0x36, 0xa1, 0xc4, 0x5b, 0x5a, 0x21, 0x26, 0x4b, 0x6a, 0x67, 0xeb, 0x76, 0xd9, 0x82, 0x04, - 0x33, 0xac, 0x14, 0x40, 0x7f, 0x02, 0xff, 0xa7, 0x73, 0x8e, 0x74, 0xa7, 0x8f, 0x24, 0xc9, 0xc8, - 0xbc, 0xa0, 0x24, 0x52, 0xbc, 0x97, 0x88, 0x48, 0x8b, 0xda, 0xbf, 0x4e, 0x34, 0xfa, 0x44, 0xb9, - 0x72, 0x0a, 0xa1, 0x84, 0x40, 0xb2, 0x24, 0xa6, 0x94, 0x94, 0x12, 0x22, 0x54, 0xca, 0x9a, 0x08, - 0x46, 0xc0, 0xcf, 0x93, 0x8c, 0xde, 0x13, 0x69, 0x73, 0xa4, 0x80, 0xf0, 0x04, 0x79, 0x00, 0x02, - 0xab, 0x19, 0xb2, 0x9b, 0xc6, 0x04, 0x44, 0x4a, 0xee, 0x68, 0xca, 0xee, 0x65, 0xaf, 0x02, 0xc3, - 0xe9, 0xd1, 0x34, 0xcc, 0x26, 0x94, 0x24, 0xa2, 0x50, 0xa0, 0x8e, 0x5e, 0x10, 0xa1, 0x9a, 0xf3, - 0x20, 0x1c, 0x81, 0xeb, 0xc6, 0x55, 0xcd, 0x30, 0x8b, 0x31, 0x8f, 0x1c, 0x27, 0x7c, 0x66, 0x21, - 0x12, 0x15, 0x7d, 0x1d, 0xf2, 0x31, 0x8b, 0x28, 0x19, 0x27, 0x59, 0x52, 0x4c, 0x69, 0x6c, 0x83, - 0x14, 0x4b, 0x4c, 0x21, 0xe7, 0x88, 0x21, 0x42, 0x36, 0x18, 0x99, 0xe7, 0x29, 0x0b, 0x63, 0x40, - 0x08, 0x6d, 0x1c, 0x8d, 0x69, 0x91, 0xe0, 0x5a, 0x45, 0xca, 0x84, 0x43, 0x2e, 0x99, 0xe4, 0x8e, - 0xd0, 0x87, 0x04, 0x64, 0x94, 0x4d, 0x4a, 0x19, 0xd7, 0xf1, 0xe5, 0x34, 0x8b, 0x92, 0x54, 0x22, - 0x74, 0xc8, 0x8b, 0x2d, 0x42, 0xff, 0x7e, 0x99, 0x4b, 0xed, 0x2c, 0x04, 0x38, 0xa5, 0xe8, 0x53, - 0xa5, 0x2f, 0x5f, 0x51, 0x17, 0x04, 0xdf, 0xa9, 0x32, 0x6f, 0x17, 0x61, 0x92, 0x86, 0x77, 0x29, - 0x48, 0x5b, 0x62, 0xfd, 0x9a, 0xae, 0xc8, 0x9f, 0x51, 0x57, 0x3b, 0x24, 0x9d, 0x6d, 0xbf, 0xd8, - 0x95, 0x6e, 0x63, 0x6a, 0x5c, 0x6a, 0x03, 0x7a, 0x01, 0xcc, 0xba, 0x9b, 0x06, 0x64, 0xd9, 0x11, - 0xac, 0x18, 0x05, 0x1d, 0xcf, 0xce, 0x1f, 0x4e, 0x59, 0x1a, 0x2c, 0x57, 0xb6, 0xd0, 0xbf, 0x9c, - 0x46, 0x22, 0xa8, 0x4d, 0xc7, 0x24, 0xfd, 0x67, 0xcc, 0x01, 0x40, 0xde, 0xb0, 0xff, 0xd0, 0xf9, - 0x0f, 0x80, 0x30, 0x2d, 0xbb, 0x84, 0x39, 0xa7, 0xd9, 0x44, 0x4c, 0x03, 0x9c, 0xe7, 0x48, 0x0f, - 0x65, 0xcf, 0x3e, 0x8e, 0xc7, 0x45, 0x70, 0x01, 0xfe, 0xc6, 0x91, 0xd9, 0x83, 0xd9, 0x04, 0xed, - 0xfa, 0x87, 0xbd, 0xae, 0x6f, 0x75, 0x0e, 0x6d, 0xcd, 0xf6, 0x5b, 0xce, 0xc3, 0xc7, 0xe0, 0xfa, - 0xc6, 0x06, 0x87, 0xf2, 0x39, 0x5c, 0xd0, 0xe0, 0x8d, 0x74, 0x7b, 0x0d, 0xaf, 0xe7, 0x1f, 0xae, - 0xbd, 0x1e, 0xb6, 0x5b, 0x4e, 0xce, 0x3f, 0x80, 0xbf, 0xd2, 0xc9, 0x49, 0x1f, 0x87, 0x21, 0x46, - 0xba, 0x37, 0xdf, 0xb7, 0x3d, 0xff, 0xad, 0xe7, 0xda, 0x1e, 0x02, 0xc2, 0x0f, 0xf1, 0x7c, 0xdb, - 0x6f, 0xf6, 0x6c, 0x05, 0x69, 0x42, 0x20, 0xc8, 0x45, 0x1f, 0xfe, 0x39, 0x87, 0x31, 0xaf, 0x7f, - 0xe5, 0x1d, 0x9c, 0x79, 0xbd, 0x2b, 0xcf, 0x3d, 0xf3, 0xfc, 0xab, 0xfe, 0x39, 0x0e, 0xfc, 0x77, - 0xe5, 0x14, 0xdf, 0x20, 0x27, 0xe8, 0xf3, 0xfe, 0xbd, 0x9c, 0x20, 0x51, 0xa7, 0x3d, 0xe7, 0xa0, - 0x6f, 0xfb, 0x40, 0x31, 0x36, 0x24, 0xe1, 0xa7, 0x48, 0x8f, 0x73, 0xb8, 0x4f, 0xd4, 0x90, 0xaf, - 0xf8, 0x3b, 0x95, 0x7d, 0xf8, 0xe9, 0x97, 0xe3, 0xbe, 0x82, 0xd6, 0x53, 0xf5, 0xb8, 0x84, 0xbe, - 0xf0, 0x0e, 0x1d, 0xcf, 0xee, 0x3b, 0x6e, 0xff, 0x14, 0x5a, 0xfe, 0x81, 0x6c, 0x12, 0x68, 0xee, - 0x1f, 0x41, 0xd3, 0xf3, 0xb1, 0x79, 0x08, 0x2d, 0x7f, 0xff, 0xdc, 0xeb, 0x39, 0xfd, 0xbe, 0x7d, - 0xe4, 0x1c, 0xc2, 0x02, 0xf0, 0xd3, 0x87, 0xb1, 0xbe, 0x7d, 0x2c, 0xc1, 0xe5, 0xc8, 0xb1, 0xe3, - 0x1f, 0x9d, 0x03, 0x38, 0x34, 0x3d, 0x57, 0xb6, 0xf7, 0x01, 0x08, 0x20, 0x71, 0xee, 0x01, 0x36, - 0x11, 0xcd, 0x29, 0x34, 0x8f, 0x7c, 0x8d, 0xfb, 0xc0, 0x39, 0xee, 0x55, 0x2b, 0x2a, 0x32, 0x2e, - 0x60, 0x96, 0xb7, 0x0f, 0xb3, 0x8e, 0x3c, 0x44, 0xe6, 0x1d, 0x23, 0xb2, 0xa3, 0xfe, 0xf9, 0x31, - 0xf6, 0xc2, 0x42, 0xc7, 0xfb, 0x67, 0x08, 0x76, 0x85, 0x68, 0xfa, 0xe7, 0x6b, 0xe0, 0xda, 0x1e, - 0x0c, 0xab, 0xb3, 0x24, 0xa8, 0xe6, 0xc7, 0xb1, 0x89, 0xa7, 0xc9, 0xff, 0x37, 0xd5, 0xae, 0x1d, - 0x64, 0xd3, 0xe4, 0xcb, 0xc7, 0xac, 0x4c, 0xad, 0xd4, 0xa1, 0x76, 0xc6, 0x16, 0xf4, 0x92, 0x87, - 0xc5, 0x34, 0x0a, 0x33, 0xe8, 0xb1, 0xc1, 0x51, 0x9f, 0x9a, 0x35, 0xa4, 0xd4, 0x61, 0xb0, 0x0c, - 0x15, 0xbf, 0x75, 0x9b, 0xe8, 0x7f, 0x04, 0xf4, 0x56, 0xed, 0x90, 0x2c, 0xe7, 0x51, 0x1b, 0x4e, - 0xec, 0x86, 0xb5, 0x04, 0x53, 0x22, 0x1c, 0x4d, 0x9a, 0x05, 0x2f, 0x3d, 0xc8, 0xb3, 0xb2, 0x42, - 0x90, 0xb0, 0xc1, 0xee, 0xbf, 0xe6, 0x94, 0x3f, 0x7e, 0x06, 0x87, 0x1c, 0x81, 0xab, 0x7e, 0x9b, - 0xa6, 0xa6, 0xd1, 0x38, 0x96, 0x19, 0xd6, 0x30, 0x19, 0x9b, 0xa1, 0x03, 0x47, 0xaf, 0xf7, 0x61, - 0x34, 0x35, 0x4d, 0x61, 0x73, 0x2b, 0x38, 0x59, 0x0a, 0x94, 0xd3, 0x5b, 0x21, 0x78, 0x02, 0x19, - 0x18, 0x35, 0x8d, 0x38, 0x14, 0x61, 0x47, 0xf0, 0x39, 0x85, 0x8c, 0xcd, 0xb0, 0x82, 0x80, 0xbe, - 0x7e, 0x6d, 0xc2, 0x9a, 0xae, 0xb5, 0x02, 0x4e, 0x9c, 0x54, 0x52, 0x7a, 0xe2, 0xf5, 0xcb, 0x5e, - 0x9b, 0x59, 0xea, 0x18, 0x8f, 0xd8, 0xe9, 0x89, 0xfb, 0xfa, 0x35, 0x1d, 0xf9, 0x87, 0x87, 0x16, - 0x2c, 0x63, 0xa2, 0xab, 0xca, 0x02, 0x6f, 0x98, 0x8d, 0x02, 0xaf, 0xf7, 0xfa, 0x35, 0x1f, 0x41, - 0x73, 0x6f, 0xcf, 0x92, 0x1e, 0x4b, 0x92, 0x76, 0xa1, 0x28, 0xdb, 0xcb, 0xac, 0xa7, 0x27, 0x93, - 0x07, 0x99, 0x35, 0xa4, 0x29, 0x84, 0x58, 0x1e, 0xd0, 0xa1, 0x61, 0x04, 0x81, 0x80, 0x45, 0x80, - 0xfb, 0x57, 0xc6, 0x9e, 0xe9, 0xf5, 0xfa, 0xfd, 0xbe, 0xef, 0x1d, 0xfe, 0xa8, 0xe4, 0x08, 0x71, - 0x88, 0xcd, 0x4c, 0x6b, 0x34, 0x72, 0x2d, 0x47, 0xb0, 0xcf, 0x40, 0x7c, 0x36, 0x01, 0x18, 0x0b, - 0xf2, 0xdc, 0xf8, 0xb3, 0x08, 0xb9, 0x30, 0x7b, 0xb6, 0xe1, 0x1a, 0x96, 0xa5, 0x25, 0x95, 0x06, - 0xd1, 0x7b, 0xd3, 0xc0, 0xfc, 0x04, 0xc4, 0x90, 0x3a, 0xd2, 0x65, 0xff, 0x12, 0xce, 0xc0, 0x6a, - 0x1b, 0x22, 0xb2, 0x53, 0x07, 0xbd, 0x7b, 0x83, 0x36, 0xbe, 0x5e, 0xc0, 0x82, 0xf1, 0x62, 0xb7, - 0xb0, 0x6c, 0xfa, 0x0c, 0x00, 0xe0, 0x34, 0x6c, 0xb1, 0x03, 0x40, 0xe9, 0x83, 0xa1, 0xf4, 0x0f, - 0x61, 0x60, 0xeb, 0xdf, 0x2f, 0x50, 0x31, 0x20, 0x12, 0x52, 0x48, 0x96, 0x40, 0x5e, 0x18, 0x02, - 0x0d, 0x1b, 0x72, 0x8f, 0xfc, 0xef, 0x73, 0x0e, 0xa1, 0x90, 0x7f, 0xe2, 0x2c, 0x97, 0xf8, 0xd0, - 0xfd, 0x38, 0x98, 0x18, 0x3f, 0xaf, 0xb9, 0x3f, 0x52, 0x6b, 0x4f, 0x2e, 0xb0, 0x67, 0x80, 0x5b, - 0xd2, 0x82, 0x49, 0xa4, 0x60, 0x92, 0x2c, 0x9f, 0x0b, 0x54, 0x10, 0x47, 0x45, 0x1d, 0x29, 0x00, - 0xc3, 0x4e, 0x9c, 0x45, 0x98, 0xce, 0x69, 0x20, 0xa0, 0xb5, 0x21, 0x32, 0x75, 0xd0, 0x45, 0xa0, - 0x4a, 0x64, 0x9f, 0x54, 0x57, 0x53, 0x64, 0xc9, 0x16, 0x66, 0xd4, 0x7a, 0xf6, 0x3c, 0xc7, 0x22, - 0x57, 0x69, 0x3c, 0xdb, 0x41, 0x35, 0xdf, 0x51, 0x7e, 0x9a, 0x7e, 0x29, 0x77, 0xb3, 0xa8, 0xef, - 0x66, 0xb1, 0x8b, 0xb4, 0x6a, 0x53, 0x8b, 0x36, 0x85, 0x5b, 0xb7, 0xb6, 0x78, 0x66, 0x71, 0x96, - 0xe2, 0xea, 0x00, 0x52, 0x93, 0x75, 0x5d, 0xf0, 0x40, 0xf9, 0x8e, 0x11, 0x4d, 0x71, 0x5c, 0xa7, - 0x98, 0xa3, 0x95, 0x70, 0xb4, 0x12, 0xd0, 0xef, 0xb8, 0x4e, 0x7e, 0xa3, 0x98, 0x61, 0xd8, 0xb1, - 0x24, 0x5c, 0x75, 0x6e, 0xa5, 0x39, 0xde, 0x4d, 0x33, 0x05, 0xd3, 0x56, 0x33, 0x4f, 0x91, 0x71, - 0x2c, 0xaa, 0x21, 0xfc, 0x0e, 0x32, 0xd7, 0x7a, 0xb4, 0xae, 0x0a, 0xc8, 0x79, 0x81, 0xd6, 0x81, - 0x8a, 0xf7, 0x5d, 0xe3, 0x75, 0x4f, 0x14, 0xe6, 0x90, 0xa6, 0xc5, 0xa7, 0xd3, 0x24, 0x8d, 0xcd, - 0xc4, 0xda, 0x39, 0x94, 0xee, 0x1e, 0x02, 0x23, 0x70, 0x5f, 0x06, 0xfc, 0xf5, 0x6b, 0x10, 0x92, - 0xfc, 0xdd, 0x05, 0x18, 0x5b, 0x76, 0x5d, 0x9c, 0xb3, 0xf0, 0x0b, 0xbd, 0xa0, 0xef, 0x78, 0x38, - 0x31, 0xd1, 0xcb, 0xa0, 0x39, 0x5b, 0xb0, 0x6f, 0x54, 0x5c, 0x32, 0x96, 0x8a, 0x24, 0x57, 0x52, - 0xac, 0x8f, 0x35, 0x75, 0xd0, 0xac, 0xb9, 0xdf, 0xf6, 0xc8, 0x52, 0x6d, 0x25, 0xfd, 0x4e, 0xa7, - 0xbb, 0x91, 0x82, 0xd1, 0x0d, 0x17, 0xac, 0x10, 0x33, 0x99, 0xca, 0xd1, 0x6b, 0x7e, 0x03, 0x94, - 0x39, 0x9c, 0x42, 0xfe, 0x1a, 0xd1, 0xa6, 0xa3, 0xb4, 0x1b, 0x76, 0x66, 0x59, 0x4a, 0xf6, 0xc3, - 0xef, 0x9b, 0xa7, 0xfb, 0x60, 0xf6, 0xf6, 0x1d, 0x65, 0xb6, 0xc4, 0xf5, 0xfc, 0xe0, 0x33, 0x4e, - 0x8e, 0x59, 0x55, 0x78, 0x92, 0xb0, 0xcf, 0x85, 0x17, 0x3b, 0xfb, 0x8a, 0xcf, 0x0a, 0xb5, 0x00, - 0xaf, 0xb3, 0x1b, 0x58, 0x1b, 0x45, 0x78, 0x1d, 0x42, 0x6b, 0xb5, 0x56, 0x1d, 0x65, 0x0c, 0x81, - 0x81, 0xa5, 0x82, 0x90, 0x77, 0xca, 0x6e, 0x13, 0x8e, 0x18, 0xf2, 0xcc, 0x6c, 0xd8, 0x1f, 0xef, - 0xfe, 0xc0, 0x10, 0x0f, 0x9d, 0x3c, 0xa1, 0x85, 0x29, 0xf1, 0x59, 0xeb, 0x4d, 0xb8, 0x86, 0x10, - 0x7b, 0x83, 0xdb, 0xd0, 0xc4, 0xb8, 0x17, 0xdc, 0xda, 0xe4, 0x87, 0xa5, 0x58, 0xc1, 0x3f, 0x74, - 0x95, 0x3f, 0xdc, 0x6e, 0xac, 0xb9, 0x17, 0x18, 0x96, 0xd1, 0x50, 0xe1, 0xb6, 0xcc, 0x82, 0xe6, - 0x84, 0xb5, 0x6e, 0xb5, 0xdc, 0x38, 0xe6, 0x0d, 0xd4, 0xc1, 0x4e, 0xfc, 0x0a, 0x27, 0x21, 0x02, - 0xd5, 0x75, 0x51, 0x79, 0xa0, 0xed, 0xe9, 0xc5, 0x96, 0x89, 0xb6, 0xd4, 0x08, 0xa7, 0xe0, 0x91, - 0xae, 0xa9, 0x37, 0x34, 0xa3, 0x52, 0x0a, 0xd4, 0x01, 0xe9, 0x2e, 0x1a, 0x4b, 0xe5, 0x3b, 0x56, - 0x5a, 0x48, 0x1f, 0xfd, 0x2c, 0x99, 0x35, 0xf3, 0x03, 0x04, 0x18, 0xfe, 0x45, 0xe0, 0xda, 0xfc, - 0x9b, 0xb2, 0x32, 0x16, 0x70, 0x47, 0x6e, 0x98, 0x1d, 0x42, 0x4b, 0x7a, 0xd5, 0x2c, 0x60, 0x9d, - 0x70, 0xcf, 0x5b, 0xa7, 0x7a, 0xa9, 0xc9, 0xad, 0x25, 0x24, 0x0a, 0xfc, 0xe9, 0xe9, 0x1e, 0x4e, - 0xa5, 0xec, 0xde, 0x51, 0x54, 0x39, 0x39, 0x97, 0x8d, 0x77, 0x74, 0x1c, 0xce, 0x53, 0xc4, 0x26, - 0x3a, 0x1c, 0x59, 0x83, 0xbe, 0xdf, 0x20, 0x81, 0x5a, 0xb7, 0x67, 0x0c, 0xce, 0xf0, 0x9f, 0x58, - 0xf1, 0xa1, 0xca, 0xd9, 0x02, 0xd1, 0x31, 0x61, 0x11, 0x98, 0x02, 0x4a, 0x09, 0x23, 0x75, 0x85, - 0xdc, 0x84, 0xee, 0x66, 0x32, 0x4b, 0xb3, 0x59, 0x1a, 0x5f, 0x6a, 0x78, 0xfa, 0xbc, 0x86, 0x6b, - 0xb4, 0xe8, 0xa4, 0x74, 0x53, 0xb9, 0xaa, 0x35, 0x86, 0x97, 0x81, 0x1e, 0xc0, 0x74, 0x47, 0x83, - 0xf4, 0x0e, 0x7e, 0x12, 0xd3, 0xa4, 0xf8, 0x28, 0x13, 0x83, 0xc0, 0x1d, 0x94, 0x58, 0xbc, 0x63, - 0xbf, 0x3e, 0xd0, 0x1f, 0xd4, 0x3e, 0xf6, 0xe5, 0xe6, 0x6c, 0x4b, 0x06, 0x32, 0x69, 0x4b, 0x1a, - 0x47, 0x3d, 0x0b, 0xd0, 0x8a, 0xf2, 0x7f, 0xf2, 0x1b, 0x72, 0x91, 0xfa, 0x8a, 0x5f, 0x45, 0xd6, - 0x88, 0x64, 0x7f, 0x01, 0x4f, 0xcb, 0x09, 0xee, 0x42, 0x43, 0x9f, 0x4d, 0xd6, 0x4a, 0x69, 0x6c, - 0x46, 0x07, 0xba, 0x19, 0x15, 0x6a, 0x3a, 0x9e, 0x40, 0x24, 0x88, 0x1d, 0x96, 0x49, 0xdd, 0x98, - 0xe7, 0x41, 0x36, 0x4f, 0x53, 0xbb, 0xea, 0x40, 0x93, 0x91, 0x5d, 0x2b, 0x5a, 0x76, 0x81, 0x9a, - 0x66, 0x41, 0x39, 0x7d, 0xb7, 0x61, 0x99, 0x34, 0xa0, 0x5f, 0x57, 0x6b, 0xe0, 0xb0, 0x54, 0xe5, - 0x3a, 0x11, 0x49, 0x8b, 0x82, 0x74, 0x55, 0xf3, 0x35, 0x9b, 0xfc, 0x2d, 0xdb, 0xa2, 0x91, 0x57, - 0x7d, 0x86, 0x7d, 0x0b, 0xae, 0xee, 0x59, 0x6d, 0x5e, 0x91, 0x01, 0x79, 0x06, 0x06, 0xfd, 0xbf, - 0xb5, 0xba, 0xad, 0x49, 0xab, 0x99, 0x82, 0x68, 0x97, 0x80, 0xb9, 0x50, 0x9c, 0x2c, 0x20, 0x38, - 0xa2, 0xf6, 0xbe, 0xab, 0x69, 0x45, 0x50, 0x77, 0x5a, 0x36, 0x8e, 0x9e, 0xae, 0x77, 0x5e, 0xc6, - 0xc7, 0xf6, 0x8c, 0x86, 0x9a, 0xa8, 0xd5, 0x4a, 0x0d, 0x01, 0xdd, 0x58, 0xa3, 0xa8, 0xeb, 0xf0, - 0xf7, 0x22, 0xaa, 0x54, 0xad, 0x8d, 0xee, 0x5b, 0x11, 0xed, 0xd0, 0x5c, 0x9b, 0x43, 0x1e, 0x43, - 0xb9, 0x32, 0xdf, 0xdf, 0x02, 0xcf, 0xd5, 0x1d, 0xbf, 0x35, 0xc4, 0xb0, 0xcb, 0x63, 0x3a, 0x0f, - 0x9d, 0xc6, 0x7c, 0x3d, 0xf9, 0xf7, 0x6f, 0x9b, 0xfc, 0xb8, 0x07, 0x67, 0x6a, 0x21, 0x13, 0x4c, - 0x81, 0x9a, 0x68, 0xe0, 0x47, 0x06, 0x19, 0xe4, 0xd9, 0xe5, 0xc5, 0xb9, 0x2e, 0x6c, 0x6c, 0xa9, - 0x5c, 0x90, 0x87, 0x59, 0x9a, 0x15, 0x81, 0x81, 0x37, 0xcc, 0x83, 0x6e, 0xf7, 0xfe, 0xfe, 0xde, - 0xb9, 0xdf, 0x77, 0x18, 0x9f, 0x74, 0x7d, 0xd7, 0x75, 0xf1, 0x68, 0x6e, 0x10, 0x79, 0x96, 0x0e, - 0x0c, 0xbc, 0xff, 0x33, 0x88, 0x2a, 0x85, 0xe8, 0x2f, 0x5d, 0xf7, 0xd0, 0x05, 0x13, 0x2c, 0x7f, - 0x0c, 0x5e, 0x1d, 0x1d, 0xc1, 0x44, 0x77, 0x08, 0x9d, 0x9c, 0x7d, 0xa1, 0x03, 0x02, 0x1d, 0xf8, - 0x5f, 0xd9, 0xd1, 0x51, 0x65, 0x15, 0xd2, 0xc1, 0x4b, 0x04, 0xdd, 0x15, 0x03, 0xbd, 0x21, 0x56, - 0x95, 0x06, 0xc4, 0x75, 0x3c, 0x9b, 0x1c, 0x0d, 0x55, 0xa9, 0xfb, 0xd8, 0xde, 0xbf, 0x3a, 0x38, - 0x3b, 0xb8, 0xea, 0x9d, 0x1d, 0x5e, 0x79, 0xc7, 0x6f, 0x7d, 0xdb, 0x97, 0xe5, 0x1d, 0x97, 0xf4, - 0x6d, 0xdf, 0x3b, 0xf3, 0xfa, 0xb5, 0x1e, 0x2c, 0x39, 0x1c, 0x03, 0xa0, 0xef, 0xc2, 0x0c, 0xef, - 0xf0, 0x6a, 0xff, 0xec, 0xf8, 0xa2, 0x6f, 0xf7, 0xce, 0xb0, 0xf4, 0x73, 0x7c, 0xd6, 0xbf, 0xea, - 0x01, 0xb2, 0xa3, 0x2b, 0xaf, 0x7f, 0xe6, 0x79, 0x57, 0x47, 0x30, 0x86, 0x05, 0x08, 0xf9, 0x79, - 0x08, 0x9f, 0xde, 0x7e, 0xbd, 0x18, 0x24, 0xb4, 0xcf, 0x29, 0x6f, 0x38, 0x02, 0xa3, 0xbc, 0xf3, - 0x33, 0xaa, 0x31, 0xe9, 0x9c, 0xf4, 0xe6, 0x2a, 0xc7, 0x5b, 0x8e, 0x40, 0x30, 0xd5, 0x03, 0xbf, - 0xab, 0x81, 0xd8, 0xc1, 0x42, 0x60, 0x23, 0xc9, 0x05, 0xef, 0x20, 0x9e, 0xcf, 0xf4, 0x85, 0xa3, - 0xca, 0xeb, 0xbf, 0xb0, 0x98, 0x3a, 0xca, 0xbf, 0xac, 0xa7, 0xb6, 0xf5, 0x73, 0x17, 0x68, 0x0b, - 0x6e, 0x87, 0xf1, 0x3c, 0x37, 0x7d, 0x03, 0xd8, 0x6a, 0xdb, 0xf0, 0x57, 0x67, 0xef, 0x58, 0xfb, - 0x1b, 0x57, 0xdd, 0x92, 0xcf, 0x6f, 0x4f, 0x90, 0x9e, 0x39, 0x39, 0x35, 0xdd, 0xf3, 0x57, 0x32, - 0x9e, 0x8d, 0x74, 0x6c, 0x29, 0xad, 0x49, 0x55, 0x65, 0x95, 0x61, 0x21, 0x06, 0x11, 0x72, 0x30, - 0x44, 0x0c, 0xf4, 0xd0, 0x83, 0x89, 0x80, 0xfc, 0x31, 0xe5, 0xef, 0x4e, 0xd6, 0x70, 0x10, 0x29, - 0x55, 0x9d, 0xdf, 0x44, 0x6c, 0x3d, 0x8f, 0x9b, 0x7e, 0xf9, 0xb5, 0x7e, 0x68, 0x41, 0x82, 0xe4, - 0xbd, 0x16, 0x46, 0x11, 0xf9, 0x25, 0x2f, 0x74, 0xac, 0x61, 0x59, 0x8e, 0xfa, 0x15, 0x0d, 0x6d, - 0xd4, 0x73, 0xdd, 0x9f, 0x4a, 0xdd, 0xd4, 0x45, 0x74, 0x7c, 0x60, 0x92, 0x51, 0x63, 0xb0, 0xd1, - 0xad, 0xee, 0xe7, 0x8c, 0xda, 0x9a, 0x61, 0x1a, 0xfd, 0xe7, 0xe7, 0x8f, 0xbf, 0x98, 0xaa, 0x5e, - 0x45, 0x83, 0x37, 0xcb, 0xb2, 0x84, 0x6e, 0x0c, 0xae, 0xdf, 0x0c, 0xf5, 0x83, 0x8f, 0x56, 0x42, - 0x2e, 0x5a, 0xf9, 0x38, 0x9c, 0x8a, 0x64, 0x3e, 0x2e, 0x30, 0x67, 0x32, 0x29, 0xa4, 0xd9, 0x36, - 0x0a, 0x11, 0x12, 0x72, 0x4c, 0xc7, 0x6d, 0xe3, 0x87, 0x25, 0x77, 0x0a, 0x60, 0x9f, 0x9a, 0x9e, - 0xb5, 0x32, 0x30, 0x2f, 0x47, 0x98, 0x9b, 0x15, 0x98, 0x42, 0x2d, 0x4c, 0x67, 0x60, 0x8c, 0xa0, - 0x09, 0xff, 0x25, 0xaf, 0x1c, 0x70, 0x63, 0xd4, 0xe5, 0x83, 0x24, 0x6f, 0x4d, 0xa7, 0x7d, 0xdb, - 0xd5, 0x04, 0x62, 0x96, 0xef, 0xfc, 0x51, 0xb0, 0xec, 0xb6, 0x71, 0x06, 0xac, 0xe6, 0xc0, 0x29, - 0x41, 0xc5, 0x2f, 0x1e, 0xe0, 0xad, 0xcb, 0x6f, 0x17, 0xe7, 0x67, 0xe0, 0x03, 0xff, 0x41, 0xe1, - 0x04, 0x58, 0x08, 0xc8, 0x5e, 0xb1, 0xf3, 0xe7, 0x94, 0xdd, 0xc1, 0x79, 0xe2, 0xc6, 0x5e, 0x62, - 0x1d, 0x65, 0x60, 0x80, 0x11, 0xa7, 0x78, 0x75, 0x02, 0xa8, 0xba, 0x88, 0xda, 0x58, 0xc1, 0xe9, - 0x7f, 0x8b, 0xe6, 0xe1, 0x22, 0x86, 0x6d, 0x96, 0x67, 0x41, 0x86, 0x1e, 0x83, 0x4d, 0xa4, 0x72, - 0xc3, 0xee, 0x17, 0x39, 0xf4, 0xd1, 0x4b, 0xfa, 0x20, 0x6c, 0x83, 0x74, 0x88, 0x21, 0x6d, 0xc3, - 0xc1, 0xbb, 0x85, 0x39, 0x16, 0x8b, 0x18, 0x70, 0xf3, 0x19, 0x4e, 0x9f, 0xe1, 0xa4, 0xd4, 0x9f, - 0x0f, 0x82, 0xce, 0x60, 0xb3, 0x53, 0x1a, 0x7f, 0x0a, 0x53, 0xbc, 0x0f, 0xd0, 0x59, 0x05, 0x82, - 0x22, 0x2d, 0xce, 0x94, 0xd3, 0x71, 0x60, 0x74, 0x81, 0x1c, 0x7b, 0x1b, 0x39, 0x94, 0x73, 0x2c, - 0xff, 0xd0, 0x16, 0x39, 0xc6, 0x7b, 0xec, 0x1f, 0x10, 0x59, 0xe8, 0x6a, 0x0c, 0x90, 0xcf, 0x92, - 0x98, 0x41, 0x9b, 0x36, 0x4c, 0x3d, 0x92, 0x19, 0x65, 0x73, 0x61, 0x4a, 0xe6, 0x56, 0xb6, 0x47, - 0xf7, 0x2d, 0xb9, 0x2a, 0x03, 0xf7, 0x66, 0x1a, 0x9f, 0x3e, 0x7e, 0xbe, 0x84, 0xdd, 0xed, 0x2a, - 0x39, 0x83, 0x32, 0xa2, 0x80, 0x43, 0x29, 0xcb, 0xbf, 0x33, 0x3e, 0x7b, 0x07, 0x89, 0x45, 0xa9, - 0x34, 0xa1, 0x76, 0x89, 0x2a, 0xdd, 0x80, 0x63, 0x26, 0x56, 0xd3, 0xb8, 0xbc, 0xf1, 0x35, 0x43, - 0xcb, 0x7e, 0xe9, 0xad, 0xc2, 0xe2, 0x31, 0x8b, 0xc8, 0xfa, 0x39, 0x12, 0x15, 0x1f, 0xb2, 0x31, - 0x03, 0x5d, 0x4c, 0xc6, 0xe6, 0xb4, 0x10, 0xc1, 0x9a, 0x7d, 0x06, 0x3b, 0x06, 0x3d, 0x65, 0x35, - 0xd3, 0xb5, 0x04, 0x7f, 0xac, 0x2c, 0x25, 0xbc, 0x0f, 0x13, 0x41, 0xc6, 0x54, 0x80, 0x32, 0x96, - 0x71, 0xce, 0xd8, 0x03, 0xf0, 0x3d, 0x43, 0x6e, 0x62, 0x57, 0x5e, 0xd0, 0xa1, 0x15, 0x29, 0x48, - 0x2a, 0xb5, 0xc6, 0xb4, 0x86, 0x72, 0x4a, 0x79, 0x85, 0x64, 0x9a, 0xea, 0x12, 0x46, 0x38, 0xf2, - 0x17, 0x42, 0xb0, 0xb0, 0x3a, 0xa0, 0xaf, 0x40, 0x02, 0xe0, 0xa5, 0x56, 0x25, 0x59, 0x29, 0x6c, - 0x2c, 0xcf, 0xc8, 0xd2, 0x67, 0xb3, 0xd7, 0x00, 0x9b, 0xce, 0x98, 0x20, 0x49, 0x0c, 0xfb, 0x93, - 0x8c, 0x1f, 0x09, 0x52, 0x0e, 0x19, 0x56, 0x8b, 0xd3, 0xe6, 0xc2, 0x80, 0xbb, 0x7e, 0xf3, 0xa2, - 0x99, 0x0c, 0xdc, 0x21, 0x96, 0x64, 0xd1, 0x2c, 0xe1, 0x3c, 0x31, 0x14, 0xa3, 0x80, 0x0e, 0xc5, - 0xde, 0xde, 0xda, 0x41, 0xdc, 0x6a, 0x56, 0x7f, 0x58, 0x02, 0xab, 0xab, 0xb5, 0x55, 0x08, 0x6d, - 0x15, 0xc3, 0xb5, 0x8c, 0x44, 0x43, 0x46, 0xa0, 0x0c, 0x5c, 0x77, 0x88, 0x52, 0x14, 0x0d, 0x02, - 0xf2, 0x79, 0x31, 0x85, 0x83, 0x9b, 0x66, 0x5d, 0xb4, 0x59, 0xbf, 0x95, 0x6a, 0xa5, 0x90, 0xe1, - 0xad, 0x1f, 0x5a, 0x1b, 0x19, 0x73, 0x36, 0x93, 0x07, 0xef, 0x01, 0xb9, 0x85, 0x8d, 0x5e, 0xad, - 0xb6, 0xb0, 0x34, 0xf2, 0xc0, 0x3f, 0x6c, 0xae, 0x54, 0x72, 0x3f, 0xb8, 0x76, 0xed, 0x7e, 0xf9, - 0x07, 0x47, 0xae, 0xea, 0xe3, 0x66, 0x55, 0x56, 0x28, 0x44, 0x80, 0x8b, 0xa1, 0x03, 0x2e, 0xa8, - 0xd9, 0x30, 0x24, 0x54, 0x9e, 0x96, 0x15, 0xc9, 0xfa, 0x39, 0x50, 0x8f, 0x62, 0xd4, 0x42, 0xc3, - 0x3b, 0x61, 0x08, 0xbd, 0x52, 0xc3, 0xe8, 0x89, 0x7f, 0x70, 0x68, 0xe9, 0x9a, 0x1b, 0xf6, 0x82, - 0x1f, 0xc0, 0x65, 0x44, 0x92, 0xcd, 0xe9, 0x4a, 0x4d, 0xe0, 0x81, 0xee, 0xc7, 0x6d, 0xc0, 0xf2, - 0xf9, 0xb0, 0x8e, 0x8c, 0x8d, 0x09, 0x97, 0xa8, 0x5e, 0x2a, 0x6e, 0x92, 0x42, 0xfe, 0x82, 0x80, - 0x9f, 0x9e, 0x0e, 0x5e, 0x06, 0x01, 0xd5, 0x7c, 0x5b, 0x4b, 0x79, 0x07, 0x70, 0xc7, 0x69, 0xf8, - 0x65, 0xb5, 0x46, 0x20, 0x10, 0x01, 0xb5, 0x60, 0xbe, 0x91, 0xcd, 0x67, 0x77, 0x90, 0x61, 0x42, - 0xbc, 0x01, 0x37, 0x04, 0xbd, 0xe2, 0xe9, 0x49, 0x8c, 0x5c, 0xf8, 0xe7, 0x04, 0xe4, 0xf0, 0xf4, - 0xf4, 0xf2, 0x17, 0x39, 0x0e, 0x0b, 0x7c, 0xc8, 0x04, 0x9d, 0x80, 0xc9, 0x0b, 0xab, 0x81, 0x74, - 0x85, 0x44, 0xb0, 0xaf, 0x30, 0x03, 0xc7, 0xf4, 0x6b, 0xae, 0x49, 0xea, 0x78, 0x37, 0x28, 0x1d, - 0x59, 0xad, 0x0b, 0xc2, 0x6b, 0xf7, 0x66, 0xad, 0x57, 0xd7, 0x8e, 0xe3, 0x84, 0x37, 0x43, 0x0a, - 0x9d, 0x01, 0xee, 0x02, 0x57, 0xbb, 0x04, 0x0a, 0xbf, 0x2a, 0x41, 0xda, 0xf1, 0x00, 0x24, 0xea, - 0xcc, 0xc2, 0x7c, 0x5d, 0x9a, 0x31, 0x97, 0xb0, 0x3e, 0xc4, 0x9f, 0x71, 0x1a, 0xca, 0x90, 0xbe, - 0x4d, 0xc1, 0x60, 0x99, 0xd2, 0x88, 0x60, 0x8c, 0x0b, 0xd3, 0xb8, 0xc4, 0x5b, 0x70, 0x7c, 0x17, - 0x89, 0x82, 0xa9, 0xee, 0x60, 0x21, 0xd8, 0x92, 0x59, 0x52, 0x14, 0xc9, 0x44, 0x29, 0xd9, 0x23, - 0x9b, 0x73, 0x72, 0xc7, 0xd9, 0x7d, 0x01, 0x12, 0x21, 0xbf, 0xb3, 0x39, 0x29, 0xa6, 0x6c, 0x9e, - 0xc6, 0x24, 0xe7, 0xec, 0x2e, 0xbc, 0x4b, 0x1f, 0x89, 0x76, 0x40, 0xfa, 0xce, 0x7a, 0x16, 0xc2, - 0xa6, 0x43, 0x2a, 0x00, 0xcb, 0x64, 0x31, 0xc1, 0x8d, 0x04, 0xc5, 0x97, 0xd7, 0xda, 0x30, 0x21, - 0xa7, 0x1c, 0x26, 0x8c, 0xf1, 0x82, 0x1e, 0x2f, 0xab, 0xcb, 0x35, 0x15, 0x15, 0x58, 0x91, 0x02, - 0x69, 0x83, 0x8b, 0x85, 0xb8, 0x44, 0xee, 0x28, 0x80, 0x51, 0x8d, 0x1c, 0xf5, 0x7e, 0x4a, 0x39, - 0x75, 0xc0, 0x19, 0x5e, 0x20, 0x71, 0xf0, 0x2d, 0x27, 0xc5, 0x15, 0x92, 0x97, 0xe0, 0x1d, 0xcb, - 0xc9, 0xda, 0xd6, 0xdf, 0x25, 0x8b, 0xa2, 0x9e, 0x8c, 0x6c, 0x1d, 0xae, 0x36, 0x62, 0xe3, 0x41, - 0xe6, 0xfa, 0x79, 0x04, 0x3a, 0xb3, 0xcd, 0xe1, 0xd6, 0x9d, 0x38, 0x9a, 0xb9, 0x92, 0x37, 0xca, - 0x0d, 0x0e, 0xe8, 0x11, 0xa6, 0x29, 0x90, 0xba, 0x40, 0xec, 0x4e, 0x52, 0x81, 0x07, 0xcb, 0xe0, - 0x44, 0x1e, 0xdb, 0x67, 0xd2, 0xd0, 0xbb, 0xff, 0xd4, 0xf8, 0xff, 0x27, 0xfe, 0xa1, 0x0b, 0x5b, - 0xd6, 0xd2, 0x54, 0x6e, 0xb5, 0x33, 0xd5, 0xca, 0x41, 0x71, 0x70, 0x50, 0x7c, 0xb4, 0xc5, 0xe2, - 0x87, 0x7c, 0xed, 0xb1, 0x58, 0x50, 0x07, 0xb8, 0xe6, 0x37, 0x76, 0x18, 0xb4, 0x5f, 0x92, 0xea, - 0x53, 0x66, 0xe8, 0xd4, 0x1e, 0x83, 0x18, 0x7b, 0xdc, 0x0e, 0x55, 0xd1, 0x1d, 0x23, 0x1e, 0x86, - 0xbf, 0x4a, 0x12, 0x46, 0xe9, 0x18, 0xb2, 0x52, 0x27, 0xbf, 0xd0, 0xc7, 0xc2, 0x64, 0x16, 0x28, - 0x2f, 0x60, 0xc1, 0xc0, 0x03, 0x21, 0x0d, 0x2b, 0xbc, 0xf2, 0xf8, 0xa1, 0xbc, 0x47, 0x21, 0x6b, - 0x7b, 0xe0, 0x9d, 0x4d, 0x76, 0x9d, 0xdd, 0xac, 0x6f, 0x9c, 0x76, 0x10, 0x93, 0xd6, 0x89, 0x29, - 0xf3, 0x54, 0x20, 0xaa, 0xba, 0x90, 0xd9, 0x31, 0x4f, 0xdd, 0xb3, 0xac, 0x5f, 0x49, 0x21, 0x1f, - 0x49, 0x9b, 0x8f, 0xda, 0xf0, 0xfa, 0xb2, 0x64, 0x03, 0x61, 0x75, 0x73, 0x22, 0x9f, 0x32, 0xe8, - 0x27, 0x53, 0x88, 0xaf, 0x70, 0xf0, 0x15, 0x21, 0x24, 0x96, 0xeb, 0x7a, 0x05, 0x38, 0xa4, 0x66, - 0x26, 0x05, 0x8e, 0x1c, 0x2f, 0x03, 0xb6, 0x95, 0x0f, 0x8c, 0xcf, 0x14, 0xdf, 0x87, 0xa8, 0x17, - 0x33, 0xb5, 0x97, 0x2a, 0xf8, 0xbc, 0x83, 0x00, 0x7e, 0xbc, 0x41, 0x59, 0x9f, 0x31, 0xf5, 0x73, - 0x00, 0xbb, 0x68, 0x33, 0x51, 0x51, 0x54, 0xb2, 0x10, 0xed, 0x64, 0x21, 0x92, 0x2c, 0x94, 0xef, - 0xbf, 0x90, 0x85, 0x68, 0x1b, 0x0b, 0x48, 0x38, 0xe4, 0x13, 0x78, 0x67, 0x2f, 0xe9, 0x8f, 0x76, - 0x94, 0x3f, 0x4e, 0x59, 0xfe, 0xa8, 0xa8, 0x85, 0x1c, 0x73, 0x55, 0x9a, 0x1e, 0xb2, 0xa0, 0x98, - 0xb9, 0x85, 0xbc, 0xa7, 0xc9, 0x01, 0xa2, 0x84, 0xbe, 0x16, 0x07, 0x15, 0x41, 0x78, 0xaf, 0xb2, - 0x5d, 0xd5, 0xaa, 0x07, 0x85, 0xa8, 0x12, 0xa0, 0xf3, 0x79, 0x60, 0x18, 0x95, 0x01, 0x50, 0x30, - 0x00, 0x3a, 0x42, 0x75, 0x2a, 0x15, 0x1f, 0x32, 0x5c, 0xdf, 0xaa, 0xc2, 0x2f, 0x8e, 0xa0, 0x47, - 0x46, 0x5f, 0xaf, 0xd4, 0x0f, 0x6f, 0x4b, 0x95, 0xaf, 0x57, 0x63, 0x7b, 0xde, 0x8d, 0x95, 0x43, - 0xc6, 0xfc, 0xea, 0x87, 0x65, 0xd5, 0x81, 0x95, 0x6c, 0xd1, 0x05, 0x1f, 0xfc, 0xa3, 0xe7, 0xba, - 0xab, 0xbf, 0xd9, 0xe4, 0x56, 0x5e, 0xb7, 0x2e, 0x11, 0x4e, 0xbe, 0xee, 0xad, 0xc3, 0x62, 0xed, - 0x5b, 0x7f, 0xf9, 0x8d, 0xaf, 0x7d, 0xfc, 0xf2, 0xac, 0x0d, 0x5c, 0x98, 0x84, 0xfb, 0x10, 0xa7, - 0x83, 0x5c, 0x27, 0xe7, 0xae, 0xdd, 0xf1, 0xb7, 0xdd, 0x2b, 0x7d, 0x98, 0x81, 0xf3, 0x0c, 0x6e, - 0x77, 0xd5, 0xeb, 0x71, 0xa9, 0x7c, 0x65, 0xdd, 0x96, 0x46, 0xaa, 0x6e, 0xc6, 0x36, 0xde, 0x2f, - 0x82, 0xb6, 0x95, 0x46, 0x1b, 0x04, 0xd9, 0x4f, 0x49, 0xeb, 0xfa, 0x68, 0x10, 0xe9, 0x75, 0xd5, - 0xf3, 0xb9, 0x73, 0x3c, 0x7f, 0x1b, 0xf2, 0x3d, 0x86, 0xcd, 0x5f, 0x06, 0x32, 0x25, 0x7b, 0xfd, - 0xba, 0x39, 0x29, 0xc2, 0xfb, 0xed, 0xd6, 0xfd, 0x54, 0xd8, 0xbe, 0xcb, 0x6a, 0x2c, 0x4a, 0x1b, - 0xa3, 0xa1, 0x05, 0x11, 0xaa, 0xd9, 0x51, 0xab, 0xc2, 0xd5, 0x55, 0x90, 0x62, 0x05, 0x71, 0xe3, - 0xe6, 0xe8, 0x8d, 0xbc, 0x15, 0xbd, 0x4e, 0xe2, 0x7f, 0x36, 0xaf, 0x53, 0x6f, 0xde, 0xac, 0x0f, - 0x47, 0x98, 0x92, 0xd3, 0x5d, 0x07, 0x46, 0x7d, 0xc5, 0xb7, 0x89, 0x18, 0x8d, 0xa5, 0x86, 0x57, - 0x57, 0xa3, 0x6e, 0x6c, 0xd2, 0x1a, 0x68, 0xd4, 0x79, 0x1b, 0xc3, 0x8d, 0x32, 0xd6, 0x77, 0x11, - 0x34, 0x54, 0x19, 0x67, 0x2d, 0xcf, 0x9a, 0xd4, 0x42, 0x8f, 0xb1, 0x47, 0xad, 0x6d, 0xc5, 0xc4, - 0xd2, 0xc3, 0x1a, 0x96, 0xd5, 0x32, 0x0a, 0xb1, 0xcd, 0x22, 0x20, 0xaf, 0xaa, 0xb2, 0xaa, 0xad, - 0x46, 0x21, 0x94, 0x45, 0x30, 0xf9, 0x98, 0x40, 0x7d, 0x28, 0xdd, 0x67, 0x01, 0x68, 0xfe, 0x25, - 0x3b, 0xa3, 0x0f, 0xa6, 0xea, 0xb6, 0x85, 0xd4, 0x78, 0xf9, 0xb3, 0x7f, 0x63, 0x29, 0xad, 0x96, - 0x2f, 0x31, 0xb8, 0xcd, 0xaa, 0x93, 0x54, 0x11, 0x71, 0x06, 0x92, 0x75, 0x6d, 0xb7, 0xbe, 0xc7, - 0x15, 0x2a, 0x48, 0x5b, 0x6c, 0xbe, 0x0e, 0x54, 0x26, 0x1d, 0x8d, 0xbc, 0x1e, 0xa4, 0x60, 0xa3, - 0xa3, 0x27, 0xde, 0x7c, 0xb0, 0xa0, 0x4f, 0x37, 0x48, 0x96, 0xe1, 0x1a, 0x58, 0x37, 0x04, 0x37, - 0x67, 0xf6, 0x3a, 0xac, 0xcc, 0xf5, 0xf6, 0xd8, 0xaa, 0x3a, 0xc8, 0x94, 0xab, 0xef, 0x3a, 0x40, - 0xe2, 0x91, 0xff, 0x19, 0x20, 0x38, 0x49, 0x26, 0x7f, 0xd2, 0x12, 0xac, 0x71, 0xa3, 0xba, 0xf3, - 0xe6, 0xbb, 0xf1, 0xbc, 0x45, 0x3f, 0x65, 0x71, 0xf5, 0x2f, 0x3e, 0xf3, 0xd8, 0xa8, 0xb7, 0xd4, - 0xff, 0x5f, 0x8d, 0xae, 0xfa, 0x5f, 0x63, 0xfe, 0x17, 0x66, 0xba, 0xb1, 0x98, 0x32, 0x33, 0x00, - 0x00 + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xbd, 0x3b, 0x6b, 0x73, 0xdb, 0x38, + 0x92, 0xdf, 0xf3, 0x2b, 0x10, 0x26, 0x93, 0x90, 0x63, 0x8a, 0x22, 0x29, 0x5b, 0xb2, 0x25, 0xd1, + 0xd9, 0x8c, 0x93, 0x3d, 0xe7, 0xca, 0x9e, 0xa4, 0x36, 0x3e, 0xcf, 0xcc, 0xf9, 0xbc, 0x65, 0x9a, + 0x84, 0x24, 0x4e, 0x28, 0x82, 0x0b, 0x42, 0xb2, 0x1d, 0x59, 0xff, 0xfd, 0xba, 0x01, 0x90, 0x22, + 0xf5, 0x70, 0x92, 0x9b, 0xad, 0x9b, 0x72, 0x45, 0x20, 0xd0, 0x68, 0x74, 0x37, 0xfa, 0x05, 0x34, + 0x66, 0xf8, 0xfc, 0xdd, 0xc7, 0x93, 0x8b, 0x3f, 0x3e, 0xbd, 0x27, 0x13, 0x31, 0x4d, 0x8f, 0xc9, + 0xb0, 0xfc, 0xa1, 0x61, 0x0c, 0x3f, 0x53, 0x2a, 0x42, 0x92, 0x85, 0x53, 0x1a, 0x18, 0xf3, 0x84, + 0xde, 0xe5, 0x8c, 0x0b, 0x83, 0x3c, 0x8b, 0x58, 0x26, 0x68, 0x26, 0x02, 0xe3, 0x2e, 0x89, 0xc5, + 0x24, 0x88, 0xe9, 0x3c, 0x89, 0x68, 0x4b, 0x7e, 0xd8, 0x49, 0x96, 0x88, 0x24, 0x4c, 0x5b, 0x45, + 0x14, 0xa6, 0x34, 0xf0, 0xec, 0x29, 0x74, 0x4c, 0x67, 0xd3, 0xf2, 0xdb, 0x28, 0x91, 0x3e, 0x9b, + 0x08, 0x91, 0xb7, 0xe8, 0xbf, 0x66, 0xc9, 0x3c, 0x30, 0x4e, 0xc2, 0x68, 0x42, 0x5b, 0x27, 0x80, + 0x96, 0xb3, 0xd4, 0x20, 0x15, 0xfe, 0x8c, 0xb5, 0x22, 0x1c, 0xb2, 0x09, 0xb4, 0x0a, 0xc1, 0x38, + 0xb4, 0xa6, 0xb3, 0x42, 0xb4, 0x38, 0x9d, 0x87, 0x69, 0x12, 0x87, 0x82, 0x6e, 0x47, 0xf8, 0x89, + 0x87, 0xe3, 0x69, 0xb8, 0x05, 0x53, 0x05, 0x5e, 0x87, 0x7e, 0x7f, 0x9f, 0x27, 0x9c, 0x16, 0x35, + 0x70, 0x17, 0xe0, 0x9e, 0x0d, 0x45, 0x22, 0x52, 0x7a, 0xfc, 0xdb, 0xd9, 0xfb, 0x77, 0xe4, 0x04, + 0x56, 0x65, 0x53, 0xf2, 0x09, 0x98, 0x10, 0x82, 0x92, 0xf7, 0x71, 0x02, 0xd4, 0x0c, 0xdb, 0x0a, + 0x82, 0x0c, 0x8b, 0x88, 0x27, 0xb9, 0x20, 0xe2, 0x21, 0x07, 0x49, 0x09, 0x7a, 0x2f, 0xda, 0x7f, + 0x86, 0xf3, 0x50, 0xf5, 0x1a, 0xc7, 0xcf, 0x46, 0xb3, 0x2c, 0x12, 0x09, 0xcb, 0xc8, 0xf8, 0x43, + 0x6c, 0x52, 0x6b, 0xc1, 0xa9, 0x98, 0xf1, 0x8c, 0xc4, 0xce, 0x98, 0x8a, 0xf7, 0x29, 0x9d, 0xc2, + 0x9a, 0xbf, 0x3c, 0xc8, 0xa1, 0x65, 0x05, 0x1a, 0xbd, 0x6f, 0x40, 0x46, 0x9c, 0x02, 0xb7, 0x1a, + 0x18, 0x01, 0xe7, 0x21, 0x27, 0x71, 0x10, 0xb3, 0x68, 0x86, 0x3d, 0xcf, 0x86, 0x6d, 0xb5, 0x1a, + 0x12, 0x23, 0x1e, 0x80, 0xa8, 0x67, 0xb7, 0x2c, 0x7e, 0x58, 0x8c, 0x80, 0xa3, 0xd6, 0x28, 0x9c, + 0x26, 0xe9, 0x43, 0xff, 0x2d, 0x87, 0x8d, 0xb1, 0x8b, 0x30, 0x2b, 0x5a, 0x05, 0xe5, 0xc9, 0x68, + 0x70, 0x1b, 0x46, 0x5f, 0xc6, 0x9c, 0xcd, 0xb2, 0xb8, 0x15, 0xb1, 0x94, 0xf1, 0xfe, 0x0b, 0xcf, + 0xf3, 0x06, 0x72, 0x4a, 0x91, 0x7c, 0xa5, 0x7d, 0xaf, 0x9b, 0xdf, 0x0f, 0xf4, 0x48, 0x1c, 0xc7, + 0x83, 0x69, 0xc8, 0xc7, 0x49, 0xd6, 0x77, 0x89, 0xe7, 0xc2, 0x40, 0x9a, 0x64, 0xb4, 0x35, 0xa1, + 0xc9, 0x78, 0x22, 0xfa, 0xce, 0xc1, 0xf2, 0x45, 0x1e, 0x72, 0x20, 0xa4, 0x85, 0x32, 0x0c, 0x61, + 0x88, 0x2f, 0x72, 0x56, 0x24, 0xc8, 0x4a, 0x9f, 0xd3, 0x34, 0x14, 0xc9, 0x9c, 0x0e, 0xa4, 0x8a, + 0xf4, 0x3d, 0xd7, 0xfd, 0x69, 0xa0, 0x27, 0xfa, 0x80, 0x69, 0xf9, 0xe2, 0x96, 0x09, 0x90, 0xee, + 0xc9, 0xe6, 0xcc, 0xf0, 0xb6, 0x60, 0xe9, 0x4c, 0x50, 0xbd, 0x74, 0x4b, 0xb0, 0xbc, 0x7f, 0x20, + 0xa7, 0x8c, 0x79, 0x18, 0x27, 0xb8, 0xde, 0x2d, 0xbb, 0x5f, 0x6c, 0xe2, 0xc5, 0xf6, 0xd2, 0x91, + 0xb4, 0xb7, 0x60, 0xee, 0x17, 0xca, 0x6d, 0xfd, 0x95, 0x27, 0x11, 0x7c, 0xe9, 0xce, 0x2d, 0x2b, + 0xdd, 0x32, 0x1e, 0xc3, 0x38, 0xa2, 0x9f, 0x15, 0xfd, 0x0e, 0x30, 0xba, 0x21, 0xa6, 0x22, 0x49, + 0xe7, 0x94, 0x6b, 0xc8, 0xbe, 0x9f, 0xdf, 0x13, 0x98, 0x9b, 0xc4, 0x84, 0x8f, 0x6f, 0x43, 0xb3, + 0x7b, 0x68, 0xab, 0x3f, 0xe7, 0xc0, 0x1a, 0x7c, 0x6d, 0x25, 0x59, 0x4c, 0xef, 0xfb, 0x7e, 0x93, + 0x96, 0x85, 0xa6, 0xb2, 0x83, 0x72, 0x54, 0xc4, 0xf7, 0xa0, 0xa5, 0xb8, 0xfb, 0x69, 0x20, 0x38, + 0xec, 0xd1, 0x88, 0xf1, 0x69, 0x5f, 0xb6, 0x40, 0x78, 0xf4, 0x0f, 0xb3, 0x05, 0x23, 0x16, 0x80, + 0xcc, 0xa2, 0x49, 0x2b, 0x94, 0x2a, 0xd2, 0xcf, 0x58, 0x46, 0x97, 0x5b, 0xd9, 0xd2, 0xf8, 0x7b, + 0x1b, 0xe8, 0xbd, 0x03, 0x94, 0x4b, 0x4c, 0x41, 0x8d, 0xe9, 0x6e, 0x19, 0xe8, 0xe9, 0x07, 0xd5, + 0x74, 0x6c, 0x7d, 0x87, 0x60, 0x5e, 0x8c, 0x46, 0xa3, 0x52, 0x2c, 0x9d, 0x4a, 0x2c, 0x2f, 0x8e, + 0x6e, 0xfd, 0x43, 0xff, 0x50, 0xae, 0xef, 0xfb, 0xc0, 0xdf, 0x86, 0x54, 0x14, 0xf1, 0xbb, 0x09, + 0xf1, 0x2a, 0x42, 0xbc, 0x8a, 0x10, 0xd9, 0x2c, 0x59, 0xaa, 0x50, 0x7a, 0x25, 0x99, 0x35, 0x85, + 0xde, 0xaa, 0xe6, 0x4b, 0xe7, 0x76, 0x06, 0x4a, 0x97, 0x45, 0x69, 0x58, 0x14, 0x8b, 0x3c, 0x8c, + 0xe3, 0x24, 0x1b, 0xf7, 0xdd, 0x4a, 0xc7, 0x07, 0xb0, 0xc3, 0x22, 0x01, 0xa7, 0xd5, 0x02, 0x47, + 0x33, 0xce, 0xfa, 0x4a, 0x45, 0x77, 0xe0, 0x5a, 0x57, 0x60, 0x52, 0xe4, 0x61, 0xb6, 0x88, 0x93, + 0x22, 0x4f, 0xc3, 0x87, 0x7e, 0x92, 0x49, 0x53, 0x19, 0xa5, 0xf4, 0x7e, 0x20, 0x91, 0xb5, 0x12, + 0x41, 0xa7, 0x45, 0x3f, 0x02, 0xf5, 0x05, 0x35, 0xaa, 0x89, 0xae, 0x66, 0x7a, 0xa0, 0x55, 0xeb, + 0x24, 0x4c, 0x93, 0x38, 0x4e, 0xe9, 0xf2, 0x45, 0x92, 0x8d, 0x58, 0x85, 0xdc, 0x30, 0x06, 0xe8, + 0x6f, 0x34, 0xc8, 0x37, 0x51, 0x6e, 0xda, 0x64, 0xcd, 0xb2, 0x36, 0xcc, 0x1a, 0xa4, 0x74, 0xc7, + 0xc3, 0xbc, 0x6e, 0x5f, 0x95, 0x0f, 0x08, 0x67, 0x82, 0x2d, 0xff, 0x36, 0xa5, 0x71, 0x12, 0x12, + 0x13, 0xbc, 0xbc, 0xf2, 0xff, 0xfd, 0x43, 0x17, 0x90, 0x58, 0x8b, 0xfa, 0x3c, 0xd9, 0xb5, 0x5c, + 0x3a, 0xb9, 0x72, 0x9e, 0x8b, 0xba, 0xe9, 0x97, 0x9d, 0xff, 0xa1, 0xcd, 0xb9, 0x58, 0xa0, 0x98, + 0x60, 0x1b, 0x6b, 0x40, 0x9b, 0x9a, 0x57, 0x4d, 0x2b, 0xce, 0x41, 0xde, 0x8b, 0x35, 0xe7, 0x50, + 0x73, 0x33, 0x12, 0xf0, 0x82, 0xe5, 0xe5, 0x9a, 0xa3, 0x44, 0x39, 0x28, 0x58, 0xe9, 0x2f, 0x8a, + 0x6d, 0x4d, 0x4c, 0xb0, 0x4c, 0xc9, 0xc2, 0x27, 0xe9, 0x07, 0xab, 0x0d, 0xda, 0xb5, 0xed, 0x5b, + 0x28, 0x5a, 0xdf, 0x8a, 0x7f, 0x2b, 0x85, 0x4a, 0xdd, 0x8b, 0x77, 0xc9, 0x7c, 0xab, 0x62, 0xea, + 0xb5, 0x53, 0x3a, 0x6a, 0xd8, 0xbd, 0xdc, 0x23, 0xd8, 0x63, 0xf1, 0x19, 0x34, 0xda, 0x76, 0x0a, + 0x9a, 0xc5, 0xd8, 0x5a, 0x44, 0x33, 0x5e, 0x00, 0x25, 0x39, 0x4b, 0x90, 0xae, 0xe5, 0xc4, 0x5b, + 0xd4, 0xe8, 0x71, 0xba, 0x9c, 0x4e, 0x97, 0x18, 0x92, 0x64, 0x24, 0x22, 0xc3, 0xb6, 0x4e, 0x27, + 0x30, 0x24, 0xc1, 0x4f, 0x9c, 0xcc, 0x49, 0x12, 0x43, 0xfa, 0x00, 0x3a, 0x02, 0x41, 0x17, 0x2d, + 0x50, 0x7f, 0xe8, 0xc1, 0x67, 0x72, 0x62, 0x60, 0x34, 0x64, 0xf8, 0x27, 0x84, 0xe0, 0x64, 0xf4, + 0x50, 0x4a, 0x4b, 0x8b, 0x04, 0xa7, 0x4c, 0xbc, 0xed, 0x33, 0x36, 0xa5, 0x8e, 0xd0, 0xc5, 0x7c, + 0x5c, 0x81, 0x2b, 0x2e, 0x3b, 0x18, 0xe7, 0x4a, 0x97, 0x8c, 0x6d, 0x2d, 0x0c, 0x2e, 0x7b, 0xa0, + 0xc3, 0x20, 0x98, 0xfd, 0xfc, 0xc2, 0xee, 0x21, 0x33, 0x20, 0x2e, 0xe9, 0xf8, 0xf0, 0x67, 0x1c, + 0x0f, 0xf3, 0x50, 0x4c, 0xc8, 0xb3, 0x51, 0x92, 0xa6, 0x81, 0xf1, 0xc2, 0x75, 0x3b, 0xb0, 0x2d, + 0x06, 0xc4, 0x64, 0xe3, 0xbc, 0x4b, 0x7c, 0x7f, 0x72, 0x38, 0xdf, 0x3f, 0xed, 0x7e, 0x3d, 0xf7, + 0xf6, 0x89, 0xb7, 0x3f, 0xd9, 0x9f, 0x1f, 0x4e, 0x5a, 0xfb, 0xf0, 0x75, 0x08, 0xc1, 0xb3, 0xfa, + 0xf2, 0x7d, 0xd2, 0x45, 0xb8, 0x49, 0xeb, 0xf0, 0xab, 0xd1, 0x3e, 0x06, 0x81, 0xcd, 0xc7, 0xc7, + 0xcf, 0x80, 0x44, 0x10, 0xb1, 0x94, 0x10, 0xca, 0xcd, 0x78, 0x32, 0x03, 0x41, 0x50, 0x29, 0x61, + 0x0f, 0xff, 0x05, 0xe1, 0x95, 0x22, 0xc4, 0xe9, 0xeb, 0x21, 0xd9, 0xa8, 0x09, 0xbf, 0x1e, 0x40, + 0x81, 0x17, 0x3d, 0xb5, 0x8e, 0xe1, 0xc7, 0x36, 0xa1, 0xc4, 0x5b, 0x5a, 0x26, 0xe6, 0x89, 0x6a, + 0x67, 0xeb, 0xb6, 0xba, 0x06, 0x09, 0xa6, 0x59, 0x29, 0x80, 0xfe, 0x04, 0xfe, 0x4f, 0x66, 0x1c, + 0xe9, 0x4e, 0x1f, 0x48, 0x92, 0x91, 0x59, 0x41, 0x49, 0xa4, 0x78, 0x2f, 0x11, 0x91, 0x35, 0x6a, + 0xff, 0x3a, 0xd1, 0xe8, 0x52, 0xe5, 0xca, 0x29, 0x44, 0x22, 0x02, 0xd9, 0x97, 0x98, 0x50, 0x52, + 0x4a, 0x88, 0x50, 0x29, 0x6b, 0x22, 0x18, 0x81, 0x30, 0x41, 0x32, 0x7a, 0x47, 0xa4, 0x1d, 0x92, + 0x02, 0xa2, 0x1b, 0x24, 0x16, 0x08, 0xac, 0x66, 0xc8, 0x6e, 0x1a, 0x13, 0x10, 0x29, 0xb9, 0xa5, + 0x29, 0xbb, 0x93, 0xbd, 0x0a, 0x0c, 0xa7, 0x47, 0x93, 0x30, 0x1b, 0x53, 0x92, 0x88, 0x42, 0x81, + 0x3a, 0x7a, 0x41, 0x84, 0x6a, 0xce, 0x83, 0x68, 0x06, 0x9e, 0x1f, 0x57, 0x35, 0xc3, 0x2c, 0xc6, + 0xc4, 0x74, 0x94, 0xf0, 0xa9, 0x85, 0x48, 0x54, 0xf0, 0x76, 0xc8, 0xc7, 0x2c, 0xa2, 0x64, 0x04, + 0xe9, 0x75, 0x31, 0xa1, 0xb1, 0x0d, 0x52, 0x2c, 0x31, 0x85, 0x9c, 0x23, 0x86, 0x08, 0xd9, 0x60, + 0x64, 0x96, 0xa7, 0x2c, 0x8c, 0x01, 0x21, 0xb4, 0x71, 0x34, 0xa6, 0x45, 0x82, 0x6b, 0x15, 0x29, + 0x13, 0x0e, 0xb9, 0x60, 0x92, 0x3b, 0x42, 0xef, 0x13, 0x90, 0x51, 0x36, 0x2e, 0x65, 0x5c, 0xc7, + 0x97, 0xd3, 0x2c, 0x4a, 0x52, 0x89, 0xd0, 0x81, 0xac, 0x78, 0x53, 0xe8, 0x3f, 0x2e, 0x73, 0xa9, + 0x9d, 0x85, 0x00, 0x47, 0x15, 0x7d, 0xaa, 0xf4, 0xe5, 0x1b, 0xea, 0x82, 0xe0, 0x3b, 0x55, 0xe6, + 0xed, 0x3c, 0x4c, 0xd2, 0xf0, 0x36, 0x05, 0x69, 0x4b, 0xac, 0xdf, 0xd2, 0x15, 0xf9, 0x33, 0x6c, + 0x6b, 0x87, 0xa4, 0xd3, 0xf7, 0x67, 0xbb, 0xf2, 0x77, 0xcc, 0xb5, 0x4b, 0x6d, 0x40, 0x2f, 0x80, + 0x69, 0x7c, 0xd3, 0x80, 0x2c, 0x3b, 0x82, 0x15, 0xa3, 0xa0, 0xe5, 0xd9, 0xf9, 0xfd, 0x09, 0x4b, + 0x83, 0xc5, 0xd2, 0x16, 0xfa, 0x97, 0xd3, 0x48, 0x04, 0xb5, 0xe9, 0x98, 0xf5, 0xff, 0x82, 0x29, + 0x04, 0xc8, 0x1b, 0xf6, 0x1f, 0x3a, 0xff, 0x01, 0x10, 0xa6, 0x65, 0x97, 0x30, 0x67, 0x34, 0x1b, + 0xc3, 0xb9, 0x0a, 0xe7, 0x39, 0xea, 0x54, 0x35, 0xfd, 0x38, 0x1a, 0x15, 0xc1, 0x39, 0xf8, 0x1b, + 0x47, 0x26, 0x1f, 0x66, 0x13, 0xb4, 0xed, 0x1f, 0x74, 0xdb, 0xbe, 0xd5, 0x3a, 0xb0, 0x35, 0xdb, + 0x6f, 0x39, 0x0f, 0x1f, 0x82, 0xab, 0x6b, 0x1b, 0x1c, 0xca, 0xe7, 0x70, 0x4e, 0x83, 0xd7, 0xd2, + 0xed, 0x35, 0xbc, 0x9e, 0x7f, 0xb0, 0xf2, 0x7a, 0xd8, 0x5e, 0x73, 0x72, 0xfe, 0x3e, 0xfc, 0x95, + 0x4e, 0x4e, 0xfa, 0x38, 0x0c, 0x3b, 0xd2, 0xbd, 0xf9, 0xbe, 0xed, 0xf9, 0x6f, 0x3d, 0xd7, 0xf6, + 0x10, 0x10, 0x7e, 0x88, 0xe7, 0xdb, 0x7e, 0xb3, 0x67, 0x2b, 0x48, 0x13, 0x02, 0x41, 0xce, 0x7b, + 0xf0, 0xcf, 0x19, 0x8c, 0x79, 0xbd, 0x4b, 0x6f, 0xff, 0xd4, 0xeb, 0x5e, 0x7a, 0xee, 0xa9, 0xe7, + 0x5f, 0xf6, 0xce, 0x70, 0xe0, 0xbf, 0x2b, 0xa7, 0xf8, 0x1a, 0x39, 0x41, 0x9f, 0xf7, 0xef, 0xe5, + 0x04, 0x89, 0x3a, 0xe9, 0x3a, 0xfb, 0x3d, 0xdb, 0x07, 0x8a, 0xb1, 0x21, 0x09, 0x3f, 0x41, 0x7a, + 0x9c, 0x83, 0x0e, 0x51, 0x43, 0xbe, 0xe2, 0xef, 0x44, 0xf6, 0xe1, 0xa7, 0x5f, 0x8e, 0xfb, 0x0a, + 0x5a, 0x4f, 0xd5, 0xe3, 0x12, 0xfa, 0xdc, 0x3b, 0x70, 0x3c, 0xbb, 0xe7, 0xb8, 0xbd, 0x13, 0x68, + 0xf9, 0xfb, 0xb2, 0x49, 0xa0, 0xd9, 0x39, 0x84, 0xa6, 0xe7, 0x63, 0xf3, 0x00, 0x5a, 0x7e, 0xe7, + 0xcc, 0xeb, 0x3a, 0xbd, 0x9e, 0x7d, 0xe8, 0x1c, 0xc0, 0x02, 0xf0, 0xd3, 0x83, 0xb1, 0x9e, 0x7d, + 0x24, 0xc1, 0xe5, 0xc8, 0x91, 0xe3, 0x1f, 0x9e, 0x01, 0x38, 0x34, 0x3d, 0x57, 0xb6, 0x3b, 0x00, + 0x04, 0x90, 0x38, 0x77, 0x1f, 0x9b, 0x88, 0xe6, 0x04, 0x9a, 0x87, 0xbe, 0xc6, 0xbd, 0xef, 0x1c, + 0x75, 0xab, 0x15, 0x15, 0x19, 0xe7, 0x30, 0xcb, 0xeb, 0xc0, 0xac, 0x43, 0x0f, 0x91, 0x79, 0x47, + 0x88, 0xec, 0xb0, 0x77, 0x76, 0x84, 0xbd, 0xb0, 0xd0, 0x51, 0xe7, 0x14, 0xc1, 0x2e, 0x11, 0x4d, + 0xef, 0x6c, 0x05, 0x5c, 0xdb, 0x83, 0x41, 0x75, 0x38, 0x05, 0xd5, 0xfc, 0x38, 0x32, 0xf1, 0x78, + 0xfa, 0xff, 0xa6, 0xda, 0xb5, 0x93, 0x71, 0x9a, 0x7c, 0xf9, 0x98, 0x95, 0xe9, 0x96, 0x3a, 0x25, + 0x4f, 0xd9, 0x9c, 0x5e, 0xf0, 0xb0, 0x98, 0x44, 0x61, 0x06, 0x3d, 0x36, 0x38, 0xea, 0x13, 0xb3, + 0x86, 0x94, 0x3a, 0x0c, 0x96, 0xa1, 0xe2, 0xf7, 0x76, 0x13, 0xfd, 0xcf, 0x80, 0xde, 0xaa, 0x9d, + 0xba, 0xe5, 0x3c, 0x6a, 0x8b, 0xc0, 0x30, 0xac, 0x05, 0x98, 0x12, 0xe1, 0x68, 0xd2, 0x2c, 0x78, + 0xee, 0x41, 0xee, 0x95, 0x15, 0x82, 0x84, 0x0d, 0x76, 0xff, 0x35, 0xa3, 0xfc, 0xe1, 0x33, 0x38, + 0xe4, 0x08, 0x5c, 0xf5, 0xdb, 0x34, 0x35, 0x8d, 0xc6, 0x39, 0xcf, 0xb0, 0x06, 0xc9, 0xc8, 0x0c, + 0x1d, 0x38, 0xcb, 0xbd, 0x0f, 0xa3, 0x89, 0x69, 0x0a, 0x9b, 0x5b, 0xc1, 0xf1, 0x42, 0xa0, 0x9c, + 0xde, 0x0a, 0xc1, 0x13, 0xc8, 0xca, 0xa8, 0x69, 0xc4, 0xa1, 0x08, 0x5b, 0x82, 0xcf, 0x28, 0x64, + 0x71, 0x86, 0x15, 0x04, 0xf4, 0xd5, 0x2b, 0x13, 0xd6, 0x74, 0xad, 0x25, 0x70, 0xe2, 0xa4, 0x92, + 0xd2, 0x63, 0xaf, 0x57, 0xf6, 0xda, 0xcc, 0x52, 0xf7, 0x02, 0x88, 0x9d, 0x1e, 0xbb, 0xaf, 0x5e, + 0xd1, 0xa1, 0x7f, 0x70, 0x60, 0xc1, 0x32, 0x26, 0xba, 0xaa, 0x2c, 0xf0, 0x06, 0xd9, 0x30, 0xf0, + 0xba, 0xaf, 0x5e, 0xf1, 0x21, 0x34, 0xf7, 0xf6, 0x2c, 0xe9, 0xb1, 0x24, 0x69, 0xe7, 0x8a, 0xb2, + 0xbd, 0xcc, 0x7a, 0x7c, 0x34, 0x79, 0x90, 0x59, 0x03, 0x9a, 0x42, 0x88, 0xe5, 0x01, 0x1d, 0x18, + 0x46, 0x10, 0x08, 0x58, 0x04, 0xb8, 0x7f, 0x61, 0xec, 0x99, 0x5e, 0xb7, 0xd7, 0xeb, 0xf9, 0xde, + 0xc1, 0xcf, 0x4a, 0x8e, 0x10, 0x87, 0xd8, 0xd4, 0xb4, 0x86, 0x43, 0xd7, 0x72, 0x04, 0xfb, 0x0c, + 0xc4, 0x67, 0x63, 0x80, 0xb1, 0x20, 0xf7, 0x8d, 0x3f, 0x8b, 0x90, 0x0b, 0xb3, 0x6b, 0x1b, 0xae, + 0x61, 0x59, 0x5a, 0x52, 0x69, 0x10, 0xbd, 0x37, 0x0d, 0xcc, 0x4f, 0x40, 0x0c, 0xa9, 0x23, 0x5d, + 0xf6, 0xaf, 0xf2, 0x2a, 0xa9, 0x21, 0x22, 0x3b, 0x75, 0xd0, 0xbb, 0x37, 0x68, 0xe3, 0xab, 0x05, + 0x2c, 0x18, 0x2f, 0x76, 0x0b, 0xcb, 0xa6, 0x4f, 0x00, 0x00, 0x4e, 0xc3, 0x16, 0x3b, 0x00, 0x94, + 0x3e, 0x18, 0x4a, 0xff, 0x10, 0x06, 0xb6, 0xfe, 0xfd, 0x1c, 0x15, 0x03, 0x22, 0x21, 0x85, 0x64, + 0x09, 0xe4, 0x85, 0x21, 0xd0, 0xb0, 0x21, 0xf7, 0xc8, 0xff, 0x3e, 0xe3, 0x10, 0x0a, 0xf9, 0x27, + 0xce, 0x72, 0x89, 0x0f, 0xdd, 0x8f, 0x83, 0xc9, 0xf2, 0xd3, 0x9a, 0xfb, 0x33, 0xb5, 0xf6, 0xe4, + 0x02, 0x7b, 0x06, 0xb8, 0x25, 0x2d, 0x98, 0x44, 0x0a, 0x26, 0xc9, 0xf2, 0x99, 0x40, 0x05, 0x71, + 0x54, 0xd4, 0x91, 0x02, 0x30, 0xec, 0xc4, 0x99, 0x87, 0xe9, 0x8c, 0x06, 0x02, 0x5a, 0x1b, 0x22, + 0x53, 0xe7, 0x64, 0x04, 0xaa, 0x44, 0xf6, 0x49, 0x75, 0x35, 0x45, 0x96, 0x6c, 0x61, 0x46, 0xad, + 0x67, 0xcf, 0x72, 0xbc, 0x35, 0x2b, 0x8d, 0x67, 0x3b, 0xa8, 0xe6, 0x3b, 0xca, 0x4f, 0xd2, 0x2f, + 0xe5, 0x6e, 0xc6, 0xf5, 0xdd, 0x8c, 0x77, 0x91, 0x56, 0x6d, 0x6a, 0xbc, 0x4e, 0xe1, 0xd6, 0xad, + 0x8d, 0x9f, 0x58, 0x9c, 0xa5, 0xb8, 0x3a, 0x80, 0xd4, 0x64, 0x5d, 0x17, 0x3c, 0x50, 0xbe, 0x63, + 0x44, 0x53, 0x5c, 0xd4, 0x29, 0xe6, 0x68, 0x25, 0x1c, 0xad, 0x04, 0xf4, 0xbb, 0xa8, 0x93, 0xdf, + 0xb8, 0x0b, 0x81, 0xcd, 0x96, 0x84, 0xab, 0xce, 0xad, 0x34, 0x17, 0xbb, 0x69, 0xa6, 0x60, 0xda, + 0x6a, 0xe6, 0x09, 0x32, 0x8e, 0xb7, 0x74, 0x08, 0xbf, 0x83, 0xcc, 0x95, 0x1e, 0xad, 0x2e, 0x15, + 0xe4, 0xbc, 0x40, 0xeb, 0x40, 0xc5, 0xfb, 0xae, 0xf1, 0xba, 0x27, 0x0a, 0x73, 0x48, 0xd3, 0xe2, + 0x93, 0x49, 0x92, 0xc6, 0x66, 0x62, 0xed, 0x1c, 0x4a, 0x77, 0x0f, 0xc5, 0x96, 0xed, 0x3e, 0x0f, + 0xf8, 0xab, 0x57, 0x20, 0x24, 0xf9, 0xbb, 0x0b, 0x10, 0xac, 0xa5, 0x2e, 0xce, 0x69, 0xf8, 0x85, + 0x9e, 0xd3, 0x77, 0x3c, 0x1c, 0x9b, 0xe8, 0x65, 0xd0, 0x9c, 0x2d, 0x60, 0x9b, 0x8a, 0x0b, 0xc6, + 0x52, 0x91, 0xe4, 0x4a, 0x8a, 0xf5, 0xb1, 0xa6, 0x0e, 0x9a, 0x35, 0xf7, 0xbb, 0x3e, 0xb2, 0x50, + 0x5b, 0x49, 0x7f, 0xd0, 0xe9, 0x6e, 0xa4, 0x60, 0x74, 0xc3, 0x05, 0x2b, 0xc4, 0x4c, 0xa6, 0x72, + 0xf4, 0x8a, 0x5f, 0x03, 0x65, 0x0e, 0xa7, 0x90, 0xbf, 0x46, 0xb4, 0xe9, 0x28, 0xed, 0x86, 0x9d, + 0x59, 0x96, 0x92, 0xfd, 0xe0, 0xc7, 0xe6, 0xe9, 0x3e, 0x98, 0xbd, 0x7d, 0x47, 0x99, 0x2d, 0x71, + 0x3d, 0x3d, 0xf8, 0x84, 0x93, 0x63, 0x56, 0x15, 0x9e, 0x24, 0xec, 0x53, 0xe1, 0xc5, 0xce, 0xbe, + 0xe1, 0xb3, 0x42, 0x2d, 0xc0, 0xab, 0xec, 0x1a, 0xd6, 0x46, 0x11, 0x5e, 0x85, 0xd0, 0x5a, 0xae, + 0x54, 0x47, 0x19, 0x43, 0x60, 0xe0, 0xf5, 0x41, 0xc8, 0x5b, 0x65, 0xb7, 0x09, 0x47, 0x0c, 0x79, + 0x66, 0x36, 0xec, 0x8f, 0xb7, 0x7f, 0x62, 0x88, 0x87, 0x4e, 0x9e, 0xd0, 0xc2, 0x94, 0xf8, 0xac, + 0xd5, 0x26, 0x5c, 0x41, 0x88, 0xbd, 0xc6, 0x6d, 0x68, 0x62, 0xdc, 0x0b, 0x6e, 0x6c, 0xf2, 0x72, + 0x21, 0x96, 0xf0, 0x0f, 0x5d, 0xe6, 0xf7, 0x37, 0x1b, 0x6b, 0xee, 0x05, 0x86, 0x65, 0x34, 0x54, + 0x78, 0x5d, 0x66, 0x41, 0x73, 0xc2, 0x4a, 0xb7, 0xd6, 0xdc, 0x38, 0xe6, 0x0d, 0xd4, 0xc1, 0x4e, + 0xfc, 0x0a, 0xc7, 0x21, 0x02, 0xd5, 0x75, 0x51, 0x79, 0xa0, 0xed, 0xe9, 0xc5, 0x96, 0x89, 0xb6, + 0xd4, 0x08, 0xa7, 0xe0, 0x91, 0xbe, 0xa4, 0x6f, 0x68, 0x46, 0xa5, 0x14, 0xa8, 0x03, 0xd2, 0x5d, + 0x34, 0x96, 0xca, 0x77, 0xac, 0x34, 0x97, 0x3e, 0xfa, 0x49, 0x32, 0x6b, 0xe6, 0x07, 0x08, 0x30, + 0xfc, 0x8b, 0xc0, 0xb5, 0xf9, 0x77, 0x65, 0x65, 0x2c, 0xe0, 0x8e, 0xdc, 0x30, 0x3b, 0x84, 0x96, + 0xf4, 0xaa, 0x59, 0xc0, 0x5a, 0xe1, 0x9e, 0xb7, 0x4a, 0xf5, 0xd2, 0x9d, 0x74, 0x0d, 0x70, 0x31, + 0x1e, 0x98, 0x34, 0xa0, 0x8f, 0x8f, 0x77, 0x70, 0x62, 0x65, 0x77, 0x8e, 0x1a, 0x91, 0x21, 0x0d, + 0x88, 0x86, 0xa4, 0xa0, 0xf8, 0x2d, 0x11, 0x13, 0xd3, 0x90, 0xf7, 0xd6, 0xe8, 0x87, 0x1f, 0x1f, + 0xa9, 0x93, 0x73, 0x09, 0xf6, 0x8e, 0x8e, 0xc2, 0x59, 0x8a, 0x74, 0x88, 0x80, 0xbf, 0xa1, 0x8e, + 0x84, 0xa1, 0xc5, 0x95, 0x7b, 0x8d, 0x12, 0x02, 0x80, 0xdf, 0xfb, 0xb4, 0x6c, 0x81, 0x2f, 0x64, + 0xd9, 0x94, 0xcd, 0x0a, 0x3a, 0xcb, 0x83, 0x42, 0x7e, 0x49, 0x70, 0xa0, 0x26, 0xa2, 0x69, 0xbd, + 0x07, 0xdc, 0x94, 0xfe, 0x94, 0xe0, 0x48, 0x77, 0x90, 0xac, 0x86, 0xd5, 0xf7, 0x4a, 0x7c, 0x89, + 0xc9, 0x95, 0xd4, 0x58, 0x00, 0xd9, 0x10, 0xff, 0x6e, 0x46, 0xd8, 0xe3, 0x23, 0xdf, 0x60, 0x44, + 0x4a, 0x24, 0x0d, 0xd8, 0x1b, 0xbe, 0x8d, 0x19, 0x5e, 0xb6, 0x06, 0xa2, 0x95, 0x02, 0xcf, 0xa9, + 0x2d, 0x29, 0xfc, 0xc4, 0x8a, 0x0f, 0x55, 0x36, 0x1b, 0x88, 0x96, 0x09, 0xe2, 0x07, 0x91, 0x80, + 0xb9, 0xc2, 0x48, 0xdd, 0x54, 0x37, 0xa1, 0xdb, 0x99, 0xcc, 0x5f, 0x6d, 0x96, 0xc6, 0x17, 0x1a, + 0x9e, 0x3e, 0x6d, 0xfb, 0x1a, 0x2d, 0xba, 0x6f, 0xdd, 0x54, 0x4e, 0x7c, 0x85, 0xe1, 0x79, 0xa0, + 0x07, 0x30, 0x11, 0xd4, 0x20, 0xdd, 0xfd, 0x37, 0x62, 0x92, 0x14, 0x1f, 0x65, 0xca, 0x14, 0xb8, + 0xfd, 0x12, 0x8b, 0x77, 0xe4, 0xd7, 0x07, 0x7a, 0xfd, 0xda, 0x47, 0x47, 0xaa, 0xed, 0xb6, 0x34, + 0x29, 0x93, 0x5e, 0x46, 0xe3, 0xa8, 0xe7, 0x47, 0xda, 0x84, 0xfe, 0x4f, 0x1e, 0x55, 0x2e, 0x52, + 0x5f, 0xf1, 0x9b, 0xc8, 0x1a, 0x31, 0xfe, 0x2f, 0xe0, 0x59, 0x0b, 0x0f, 0xbb, 0xd0, 0xd0, 0x27, + 0xd3, 0xd8, 0x52, 0x1a, 0x9b, 0x71, 0x93, 0x6e, 0xc6, 0xcb, 0x9a, 0xf5, 0x17, 0x10, 0x23, 0xeb, + 0xa6, 0x91, 0xcd, 0xd2, 0x74, 0xc3, 0x3a, 0x9a, 0x9d, 0x68, 0x20, 0x55, 0xcf, 0xca, 0x46, 0x9a, + 0x40, 0x55, 0xd7, 0x92, 0x96, 0x50, 0x60, 0x15, 0x19, 0xe8, 0x2c, 0x2d, 0x41, 0xa4, 0x55, 0x04, + 0x69, 0x8d, 0x96, 0x4d, 0xd2, 0x17, 0xeb, 0x5c, 0xcb, 0x82, 0xa9, 0x61, 0xdf, 0x80, 0x7f, 0x7f, + 0x52, 0x51, 0x97, 0xa4, 0x4f, 0x9e, 0x80, 0xc1, 0xa0, 0x67, 0x2d, 0x6f, 0x6a, 0x82, 0x68, 0xe6, + 0x5d, 0xda, 0x0f, 0x62, 0x02, 0x18, 0x27, 0x73, 0x30, 0x57, 0x54, 0xcc, 0x77, 0xb5, 0x0d, 0x0f, + 0xea, 0x9e, 0xda, 0xc6, 0xd1, 0x93, 0xd5, 0xa6, 0xca, 0xa4, 0x60, 0x7d, 0x46, 0x43, 0x03, 0xd4, + 0x6a, 0xe5, 0xe6, 0xc3, 0xb6, 0xaf, 0x50, 0xd4, 0xd5, 0xf3, 0x47, 0x11, 0x55, 0x5a, 0xb4, 0x8e, + 0xee, 0x7b, 0x11, 0xed, 0x50, 0x4a, 0x9b, 0xc3, 0xa6, 0x53, 0xae, 0x2c, 0xf3, 0xf7, 0xc0, 0x73, + 0x75, 0xc7, 0xef, 0x0d, 0x31, 0xec, 0x0a, 0x13, 0xce, 0x7d, 0xab, 0x31, 0x5f, 0x4f, 0xfe, 0xe3, + 0xfb, 0x26, 0x3f, 0xec, 0x79, 0x1d, 0x5b, 0xc8, 0xac, 0x5a, 0x60, 0xfc, 0x30, 0xf0, 0x23, 0x83, + 0xb4, 0xf9, 0xf4, 0xe2, 0xfc, 0x4c, 0xdf, 0xe6, 0x6c, 0xb9, 0xae, 0x21, 0xf7, 0xd3, 0x34, 0x2b, + 0x02, 0x03, 0xeb, 0xf4, 0xfd, 0x76, 0xfb, 0xee, 0xee, 0xce, 0xb9, 0xeb, 0x38, 0x8c, 0x8f, 0xdb, + 0xbe, 0xeb, 0xba, 0x78, 0x1f, 0x61, 0x10, 0xf5, 0xfc, 0xc0, 0xc0, 0x2a, 0xaa, 0x41, 0xd4, 0xfd, + 0x8f, 0xfe, 0xd2, 0x97, 0x3d, 0xfa, 0x96, 0x08, 0xef, 0x7c, 0xfa, 0x2f, 0x0e, 0x0f, 0x61, 0xa2, + 0x3b, 0x80, 0x4e, 0xce, 0xbe, 0xd0, 0x3e, 0x81, 0x0e, 0xfc, 0xaf, 0xec, 0xd0, 0xf5, 0x2b, 0xd2, + 0xc2, 0x6a, 0x8a, 0xee, 0x8a, 0x81, 0xde, 0x10, 0xaf, 0xd2, 0xfa, 0xc4, 0x75, 0x3c, 0x9b, 0x1c, + 0x0e, 0xd4, 0xfd, 0xfe, 0x91, 0xdd, 0xb9, 0xdc, 0x3f, 0xdd, 0xbf, 0xec, 0x9e, 0x1e, 0x5c, 0x7a, + 0x47, 0x6f, 0x7d, 0xdb, 0x97, 0x77, 0x5a, 0x2e, 0xe9, 0xd9, 0xbe, 0x77, 0xea, 0xf5, 0x6a, 0x3d, + 0x78, 0xcf, 0x72, 0x04, 0x80, 0xbe, 0x0b, 0x33, 0xbc, 0x83, 0xcb, 0xce, 0xe9, 0xd1, 0x79, 0xcf, + 0xee, 0x9e, 0xe2, 0x7d, 0xd7, 0xd1, 0x69, 0xef, 0xb2, 0x0b, 0xc8, 0x0e, 0x2f, 0xbd, 0xde, 0xa9, + 0xe7, 0x5d, 0x1e, 0xc2, 0x18, 0xde, 0xba, 0xc8, 0xcf, 0x03, 0xf8, 0xf4, 0x3a, 0xf5, 0x1b, 0x30, + 0xa1, 0xdd, 0x49, 0x59, 0xea, 0x09, 0x8c, 0xb2, 0x4e, 0x6a, 0x54, 0x63, 0xd2, 0xef, 0xe8, 0xcd, + 0x55, 0x3e, 0xb5, 0x1c, 0x81, 0x0c, 0x42, 0x0f, 0xfc, 0xa1, 0x06, 0x62, 0x07, 0x6f, 0x3f, 0x1b, + 0x99, 0x3d, 0xe4, 0x1a, 0xe2, 0xe9, 0xe3, 0x8d, 0x70, 0x54, 0x4d, 0xe1, 0x57, 0x16, 0x53, 0x47, + 0x65, 0x05, 0xab, 0xa9, 0xeb, 0xfa, 0xb9, 0x0b, 0x74, 0x0d, 0x6e, 0x87, 0xf1, 0x3c, 0x35, 0x7d, + 0x03, 0xd8, 0x5a, 0xb7, 0xe1, 0x6f, 0xce, 0xde, 0xb1, 0xf6, 0x77, 0xae, 0xba, 0xe5, 0x10, 0xb3, + 0x3d, 0x2b, 0x7c, 0xe2, 0x88, 0xdb, 0x4c, 0xaa, 0xbe, 0x91, 0xe6, 0x6d, 0xe4, 0xa0, 0x0b, 0x69, + 0x4d, 0xea, 0x2a, 0x5a, 0x19, 0x16, 0x62, 0x00, 0x9f, 0x0c, 0x86, 0x88, 0x31, 0x1c, 0x7a, 0x30, + 0xc6, 0xcb, 0x1f, 0x53, 0xfe, 0xee, 0x64, 0x0d, 0x07, 0x91, 0x52, 0xd5, 0xf9, 0x5d, 0xc4, 0xd6, + 0x93, 0xd7, 0xc9, 0x97, 0xdf, 0xea, 0x27, 0x35, 0x24, 0x48, 0x16, 0xf3, 0x30, 0xaf, 0x93, 0x5f, + 0xb2, 0x8a, 0x65, 0x0d, 0xca, 0x3b, 0xb8, 0xdf, 0xd0, 0xd0, 0x86, 0x5d, 0xd7, 0x7d, 0x53, 0xea, + 0xa6, 0xae, 0x1c, 0xe0, 0x33, 0x9d, 0x8c, 0x1a, 0xfd, 0x8d, 0x6e, 0x55, 0xa8, 0x34, 0x6a, 0x6b, + 0x86, 0x69, 0xf4, 0x9f, 0x9f, 0x3f, 0xfe, 0x6a, 0xaa, 0x4b, 0x3a, 0x1a, 0xbc, 0x5e, 0x94, 0x75, + 0x03, 0xa3, 0x7f, 0xf5, 0x7a, 0xa0, 0x9f, 0xcd, 0xac, 0x9d, 0x42, 0xc4, 0xda, 0x21, 0x04, 0x8e, + 0x82, 0xf2, 0x10, 0x22, 0x30, 0x1d, 0x32, 0x29, 0x9c, 0x2d, 0x6c, 0x14, 0x22, 0x9c, 0x42, 0xf0, + 0x0c, 0x62, 0x1b, 0x2f, 0x17, 0xdc, 0x29, 0x80, 0x7d, 0x6a, 0x7a, 0xd6, 0xd2, 0xc0, 0xc3, 0x08, + 0xc2, 0x5c, 0x2f, 0xc1, 0x14, 0x6a, 0x09, 0xa4, 0x7c, 0xf0, 0x24, 0xe8, 0x7f, 0xc9, 0x3a, 0x0b, + 0x6e, 0x8c, 0xaa, 0xb8, 0x48, 0xf2, 0x56, 0x74, 0xda, 0x37, 0x6d, 0x4d, 0x20, 0x1e, 0x6d, 0x9c, + 0x3f, 0x0b, 0x96, 0xdd, 0x34, 0x0e, 0xbe, 0xd5, 0x1c, 0x38, 0x1a, 0xa9, 0xf8, 0xc5, 0x03, 0x2c, + 0x35, 0xfd, 0x7e, 0x7e, 0x76, 0x0a, 0x3e, 0xf0, 0x1f, 0x14, 0x8e, 0xbd, 0x85, 0x80, 0x94, 0x1d, + 0x3b, 0x7f, 0x49, 0xd9, 0x2d, 0x1c, 0xa2, 0xae, 0xed, 0x05, 0x26, 0xa8, 0x7d, 0x03, 0x8c, 0x38, + 0xc5, 0x7a, 0x11, 0xa0, 0x6a, 0x23, 0x6a, 0x63, 0x09, 0xa9, 0xf6, 0x16, 0xcd, 0xc3, 0x45, 0x0c, + 0xdb, 0x2c, 0x0f, 0xc0, 0x0c, 0x3d, 0x06, 0x1b, 0x4b, 0xe5, 0x86, 0xdd, 0x2f, 0x72, 0xe8, 0xa3, + 0x17, 0xf4, 0x5e, 0xd8, 0x06, 0x69, 0x11, 0x43, 0xda, 0x06, 0x66, 0xbf, 0x62, 0x86, 0x37, 0x64, + 0x0c, 0xb8, 0xf9, 0x0c, 0x47, 0xee, 0x70, 0x5c, 0xea, 0xcf, 0x07, 0x41, 0xa7, 0xb0, 0xd9, 0x29, + 0x8d, 0x3f, 0x85, 0x29, 0x16, 0x41, 0x74, 0xf2, 0x8c, 0xa0, 0x48, 0x8b, 0x33, 0xe1, 0x74, 0x14, + 0x18, 0x6d, 0x20, 0xc7, 0xde, 0x46, 0x0e, 0xe5, 0x1c, 0xef, 0xbc, 0xe8, 0x1a, 0x39, 0xc6, 0x7b, + 0xec, 0xef, 0x13, 0x79, 0xbb, 0xd7, 0x18, 0x20, 0x9f, 0x25, 0x31, 0xfd, 0x75, 0xda, 0x30, 0xf5, + 0x48, 0xa6, 0x94, 0xcd, 0x84, 0x29, 0x99, 0x5b, 0xda, 0x1e, 0xed, 0x58, 0x72, 0x55, 0x06, 0xee, + 0xcd, 0x34, 0x3e, 0x7d, 0xfc, 0x7c, 0x01, 0xbb, 0xdb, 0x56, 0x72, 0x36, 0x54, 0xa6, 0x1e, 0x4a, + 0x59, 0xfe, 0x9d, 0xf1, 0xe9, 0x3b, 0x48, 0x2c, 0x4a, 0xa5, 0x09, 0xb5, 0x4b, 0x54, 0xe9, 0x06, + 0x9c, 0xad, 0xf1, 0x0a, 0x91, 0xcb, 0xd2, 0xb7, 0x19, 0x5a, 0xf6, 0x73, 0x6f, 0x19, 0x16, 0x0f, + 0x59, 0x44, 0x56, 0x8f, 0xba, 0xa8, 0xf8, 0x90, 0x8d, 0x18, 0xe8, 0x62, 0x32, 0x32, 0x21, 0x2d, + 0x0a, 0x56, 0xec, 0x33, 0xd8, 0x31, 0xe8, 0x29, 0xaf, 0x70, 0x5d, 0x4b, 0xf0, 0x87, 0xca, 0x52, + 0xc2, 0xbb, 0x30, 0x11, 0x64, 0x44, 0x05, 0x28, 0x63, 0x19, 0xe7, 0x8c, 0x3d, 0x00, 0xdf, 0x33, + 0xe4, 0x26, 0xb6, 0x65, 0x55, 0x12, 0xad, 0x48, 0x41, 0x52, 0xa9, 0x35, 0x70, 0xca, 0x90, 0x53, + 0xca, 0xba, 0x99, 0x69, 0xaa, 0xca, 0x93, 0x70, 0xe4, 0x2f, 0x84, 0x60, 0x61, 0xb5, 0x40, 0x5f, + 0x81, 0x04, 0xc0, 0x4b, 0xad, 0x4a, 0xb2, 0x52, 0xd8, 0x78, 0x27, 0x25, 0xef, 0x7b, 0x9b, 0xbd, + 0x06, 0xd8, 0x74, 0xc6, 0x04, 0x49, 0x62, 0xd8, 0x9f, 0x64, 0xf4, 0x40, 0x90, 0x72, 0xc8, 0xb0, + 0xd6, 0x38, 0x6d, 0x2e, 0x0c, 0xb8, 0xeb, 0xe5, 0x26, 0xcd, 0x64, 0xe0, 0x0e, 0xf0, 0x1e, 0x1a, + 0xcd, 0x12, 0x8e, 0x0a, 0x03, 0x31, 0x0c, 0xe8, 0x40, 0xec, 0xed, 0xad, 0x1c, 0xc4, 0x8d, 0x66, + 0xf5, 0xe5, 0x02, 0x58, 0x5d, 0xae, 0xac, 0x42, 0x68, 0xab, 0x18, 0xac, 0x64, 0x24, 0x1a, 0x32, + 0x02, 0x65, 0xe0, 0xba, 0x43, 0x94, 0xa2, 0x68, 0x10, 0x90, 0xcf, 0x8a, 0x09, 0x1c, 0xe7, 0x34, + 0xeb, 0x62, 0x9d, 0xf5, 0x1b, 0xa9, 0x56, 0x0a, 0x19, 0x96, 0x3a, 0xd1, 0xda, 0xc8, 0x88, 0xb3, + 0xa9, 0xbc, 0x6d, 0xe8, 0x93, 0x1b, 0xd8, 0xe8, 0xe5, 0x72, 0x0b, 0x4b, 0x43, 0x0f, 0xfc, 0xc3, + 0xe6, 0x4a, 0x25, 0xf7, 0xfd, 0x2b, 0xd7, 0xee, 0x95, 0x7f, 0x70, 0x9a, 0xaa, 0x3e, 0xae, 0x97, + 0xe5, 0xb5, 0x8c, 0x08, 0x70, 0x31, 0x74, 0xc0, 0x05, 0x35, 0x1b, 0x86, 0x84, 0xca, 0xb3, 0x66, + 0x45, 0xb2, 0x68, 0x00, 0xd4, 0xa3, 0x18, 0xb5, 0xd0, 0xb0, 0x10, 0x0e, 0xa1, 0x57, 0x6a, 0x18, + 0x3d, 0xf6, 0xf7, 0x0f, 0x2c, 0x7d, 0xd1, 0x88, 0xbd, 0xe0, 0x07, 0x70, 0x19, 0x91, 0x64, 0x33, + 0xba, 0x54, 0x13, 0x78, 0xa0, 0xfb, 0x71, 0x1b, 0xb0, 0x66, 0x30, 0xa8, 0x23, 0x63, 0x23, 0xc2, + 0x25, 0xaa, 0xe7, 0x8a, 0x9b, 0xa4, 0x90, 0xbf, 0x20, 0xe0, 0xc7, 0xc7, 0xfd, 0xe7, 0x41, 0x40, + 0x35, 0xdf, 0xd6, 0x42, 0x16, 0x3e, 0x6e, 0x39, 0x0d, 0xbf, 0x2c, 0x57, 0x08, 0x04, 0x22, 0xa0, + 0x16, 0xcc, 0x37, 0xb2, 0xd9, 0xf4, 0x16, 0x32, 0x4c, 0x88, 0x37, 0xe0, 0x86, 0xa0, 0x57, 0x3c, + 0x3e, 0x8a, 0xa1, 0x0b, 0xff, 0x1c, 0x83, 0x1c, 0x1e, 0x1f, 0x9f, 0xff, 0x2a, 0xc7, 0x61, 0x81, + 0x0f, 0x99, 0xa0, 0x63, 0x30, 0x79, 0x61, 0x35, 0x90, 0x2e, 0x91, 0x08, 0xf6, 0x0d, 0x66, 0xc2, + 0x80, 0x5f, 0x71, 0x4d, 0x52, 0xcb, 0xbb, 0x46, 0xe9, 0xc8, 0x2b, 0xca, 0x20, 0x84, 0xd3, 0xf5, + 0x4a, 0xaf, 0xae, 0x1c, 0xc7, 0x09, 0xaf, 0x07, 0x14, 0x3a, 0x03, 0xdc, 0x05, 0xae, 0x76, 0x09, + 0x14, 0x7e, 0x59, 0x82, 0xac, 0xc7, 0x03, 0x90, 0xa8, 0x33, 0x0d, 0xf3, 0xd5, 0x7d, 0x94, 0xb9, + 0x80, 0xf5, 0x21, 0xfe, 0x8c, 0xd2, 0x50, 0x86, 0xf4, 0x6d, 0x0a, 0x06, 0xcb, 0x94, 0x46, 0x04, + 0x63, 0x5c, 0x98, 0xc6, 0x05, 0x96, 0xfe, 0xf1, 0x75, 0x29, 0x0a, 0xa6, 0x2a, 0x3c, 0x43, 0xb0, + 0x25, 0xd3, 0xa4, 0x28, 0x92, 0xb1, 0x52, 0xb2, 0x07, 0x36, 0xe3, 0xe4, 0x96, 0xb3, 0xbb, 0x02, + 0x24, 0x42, 0xfe, 0x60, 0x33, 0x52, 0x4c, 0xd8, 0x2c, 0x8d, 0x49, 0xce, 0xd9, 0x6d, 0x78, 0x9b, + 0x3e, 0x10, 0xed, 0x80, 0x74, 0xa1, 0x7e, 0x1a, 0xc2, 0xa6, 0x43, 0x2a, 0x00, 0xcb, 0x64, 0x31, + 0xc1, 0x8d, 0x04, 0xc5, 0x97, 0xb5, 0x7c, 0x98, 0x90, 0x53, 0x0e, 0x13, 0x46, 0xf8, 0x2a, 0x01, + 0x2b, 0xf4, 0xe5, 0x9a, 0x8a, 0x0a, 0xbc, 0x86, 0x03, 0x69, 0x83, 0x8b, 0x85, 0xb8, 0x44, 0x6e, + 0x29, 0x80, 0x51, 0x8d, 0x1c, 0xf5, 0x7e, 0x42, 0x39, 0x75, 0xc0, 0x19, 0x9e, 0x23, 0x71, 0xf0, + 0x2d, 0x27, 0xc5, 0x15, 0x92, 0xe7, 0xe0, 0x1d, 0xcb, 0xc9, 0xda, 0xd6, 0xdf, 0x25, 0xf3, 0xa2, + 0x9e, 0x8c, 0x6c, 0x1d, 0xae, 0x36, 0x62, 0xe3, 0x59, 0xeb, 0xea, 0x4d, 0x08, 0x3a, 0xb3, 0xcd, + 0xe1, 0xb5, 0x87, 0x00, 0x68, 0xe6, 0x4a, 0xde, 0x28, 0x37, 0x38, 0x7b, 0x47, 0x98, 0xa6, 0x40, + 0xea, 0x02, 0xb1, 0x3b, 0x49, 0x05, 0x1e, 0x2c, 0x83, 0x63, 0x79, 0x22, 0x9f, 0x4a, 0x43, 0x6f, + 0xff, 0x53, 0xe3, 0xff, 0x9f, 0xf8, 0x65, 0x1b, 0xb6, 0x6c, 0x4d, 0x53, 0xb9, 0xb5, 0x9e, 0xa9, + 0x56, 0x0e, 0x8a, 0x83, 0x83, 0xe2, 0xc3, 0x2d, 0x16, 0x3f, 0xe0, 0x2b, 0x8f, 0xc5, 0x82, 0x3a, + 0xc0, 0x15, 0xbf, 0xb6, 0xc3, 0x60, 0xfd, 0x3d, 0xae, 0x3e, 0x65, 0x86, 0x4e, 0xed, 0x05, 0x8c, + 0xb1, 0xc7, 0xed, 0x50, 0x55, 0x1a, 0x30, 0xe2, 0x61, 0xf8, 0xab, 0x24, 0x61, 0x94, 0x8e, 0x21, + 0x2b, 0x75, 0xf2, 0x0b, 0x7d, 0x28, 0x4c, 0x66, 0x81, 0xf2, 0x02, 0x16, 0x0c, 0x3c, 0x10, 0xd2, + 0xf0, 0x5a, 0x5b, 0x1e, 0x3f, 0x94, 0xf7, 0x28, 0xe4, 0x85, 0x26, 0x78, 0x67, 0x93, 0x5d, 0x65, + 0xd7, 0xab, 0x32, 0xdb, 0x0e, 0x62, 0xd2, 0x3a, 0x31, 0x65, 0x9e, 0x0a, 0x44, 0x55, 0x55, 0xa8, + 0x1d, 0xf3, 0x54, 0x71, 0x69, 0xf5, 0x5c, 0x0c, 0xf9, 0x48, 0xd6, 0xf9, 0xa8, 0x0d, 0x5b, 0x55, + 0xbd, 0x65, 0x03, 0xa1, 0x2e, 0xbe, 0xa8, 0x9a, 0x4a, 0xf9, 0x76, 0x0c, 0xf1, 0x15, 0x0e, 0xbe, + 0xbc, 0x84, 0xc4, 0x32, 0x28, 0x75, 0x0a, 0xa3, 0x67, 0x33, 0x93, 0x02, 0x47, 0x8e, 0xc5, 0x93, + 0x6d, 0xd7, 0x07, 0xc6, 0x67, 0x8a, 0x8f, 0x62, 0xd4, 0x33, 0xa1, 0xda, 0xf3, 0x1c, 0x7c, 0xd3, + 0x42, 0x00, 0x3f, 0x56, 0x5d, 0x56, 0x67, 0x4c, 0xfd, 0x06, 0xc2, 0x2e, 0xd6, 0x99, 0xa8, 0x28, + 0x2a, 0x59, 0x88, 0x76, 0xb2, 0x10, 0x49, 0x16, 0xca, 0x87, 0x70, 0xc8, 0x42, 0xb4, 0x8d, 0x05, + 0x24, 0x1c, 0xf2, 0x09, 0x7c, 0xa8, 0x20, 0xe9, 0x8f, 0x76, 0x5c, 0x7f, 0x9c, 0xb0, 0xfc, 0x41, + 0x51, 0x0b, 0x39, 0xe6, 0xb2, 0x34, 0x3d, 0x64, 0x41, 0x31, 0x73, 0x03, 0x79, 0x4f, 0x93, 0x03, + 0x44, 0x09, 0x7d, 0x6b, 0x1c, 0x54, 0x04, 0x61, 0x31, 0x69, 0xbb, 0xaa, 0x55, 0x2f, 0x2b, 0x51, + 0x25, 0x40, 0xe7, 0xf3, 0xc0, 0x30, 0x2a, 0x03, 0xa0, 0x60, 0x00, 0x74, 0x88, 0xea, 0x54, 0x2a, + 0x3e, 0x64, 0xb8, 0xbe, 0x55, 0x85, 0x5f, 0x1c, 0x41, 0x8f, 0x8c, 0xbe, 0x5e, 0xa9, 0x1f, 0x96, + 0x88, 0x95, 0xaf, 0x57, 0x63, 0x7b, 0xde, 0xb5, 0x95, 0x43, 0xc6, 0xfc, 0xe2, 0xe5, 0xa2, 0xea, + 0xc0, 0xeb, 0x7b, 0xd1, 0x06, 0x1f, 0xfc, 0xb3, 0xe7, 0xba, 0xcb, 0x9f, 0x6c, 0x72, 0x23, 0x6b, + 0xcc, 0x0b, 0x84, 0x93, 0x6f, 0xa4, 0xeb, 0xb0, 0x78, 0xe1, 0xaf, 0xbf, 0xfc, 0xc6, 0x57, 0x07, + 0xbf, 0x3c, 0x6b, 0x03, 0x17, 0x26, 0xe1, 0x3e, 0xc4, 0xe9, 0x20, 0xd7, 0xc9, 0xb9, 0x6b, 0xb7, + 0xfc, 0x6d, 0xc5, 0xb4, 0x0f, 0x53, 0x70, 0x9e, 0xc1, 0xcd, 0xae, 0x22, 0x05, 0x2e, 0x95, 0x2f, + 0xad, 0x9b, 0xd2, 0x48, 0x55, 0x39, 0x70, 0xe3, 0x21, 0x27, 0x68, 0x5b, 0x69, 0xb4, 0x41, 0x90, + 0xbd, 0x49, 0xd6, 0x4a, 0x61, 0xfd, 0x48, 0xaf, 0xab, 0xde, 0x0c, 0x9e, 0xe1, 0xf9, 0xdb, 0x90, + 0x8f, 0x50, 0x6c, 0xfe, 0x3c, 0x90, 0x29, 0xd9, 0xab, 0x57, 0xcd, 0x49, 0x11, 0x16, 0xf5, 0xd7, + 0x8a, 0x72, 0xe1, 0x7a, 0x01, 0xaf, 0xb1, 0x28, 0x6d, 0x8c, 0x86, 0x16, 0x44, 0xa8, 0x66, 0xc7, + 0x72, 0xe5, 0x9b, 0xeb, 0x2a, 0x48, 0xf1, 0x72, 0x70, 0xa3, 0x5c, 0xf6, 0x5a, 0x96, 0x82, 0xaf, + 0x92, 0xf8, 0x9f, 0xcd, 0x1a, 0xf2, 0xf5, 0xeb, 0xd5, 0xe1, 0x08, 0x53, 0x72, 0xba, 0xeb, 0xc0, + 0x28, 0xeb, 0x9a, 0xdb, 0x10, 0xa3, 0xb1, 0xd4, 0xf0, 0xea, 0xdb, 0xa8, 0x6b, 0x9b, 0xac, 0x0d, + 0x34, 0xae, 0x70, 0x1b, 0xc3, 0x8d, 0x6b, 0xac, 0x1f, 0x22, 0x68, 0xa0, 0x32, 0xce, 0x5a, 0x9e, + 0x35, 0xae, 0x85, 0x1e, 0x63, 0x8f, 0x5a, 0xdb, 0x2e, 0x13, 0x4b, 0x0f, 0x6b, 0x58, 0xd6, 0x9a, + 0x51, 0x88, 0x6d, 0x16, 0x01, 0x79, 0x55, 0x95, 0x55, 0x6d, 0x35, 0x0a, 0xa1, 0x2c, 0x82, 0xc9, + 0x17, 0x14, 0xea, 0x43, 0xe9, 0x3e, 0x0b, 0x40, 0xf3, 0x2f, 0xd8, 0x29, 0xbd, 0x37, 0x55, 0xb7, + 0x2d, 0xa4, 0xc6, 0xcb, 0x9f, 0xce, 0xb5, 0xa5, 0xb4, 0x5a, 0x3e, 0x3f, 0xe1, 0x36, 0xab, 0x4e, + 0x52, 0x45, 0xc4, 0x19, 0x48, 0xd6, 0xb5, 0xdd, 0xfa, 0x1e, 0x57, 0xa8, 0x20, 0x6d, 0xb1, 0xf9, + 0x2a, 0x50, 0x99, 0x74, 0x38, 0xf4, 0xba, 0x90, 0x82, 0x0d, 0x0f, 0x1f, 0x79, 0xf3, 0x95, 0x86, + 0x3e, 0xdd, 0x20, 0x59, 0x86, 0x6b, 0xe0, 0xbd, 0x21, 0xb8, 0x39, 0xb3, 0xdb, 0x62, 0x65, 0xae, + 0xb7, 0xc7, 0x96, 0xd5, 0x41, 0xa6, 0x5c, 0x7d, 0xd7, 0x01, 0x12, 0x8f, 0xfc, 0x4f, 0x00, 0xc1, + 0x49, 0x32, 0xf9, 0x4a, 0x4b, 0xb0, 0x46, 0x19, 0x79, 0x67, 0xb9, 0xbf, 0xf1, 0xa6, 0x47, 0xbf, + 0xdf, 0x71, 0xf5, 0x2f, 0xbe, 0x6d, 0xd9, 0xb8, 0x6f, 0xa9, 0xff, 0x1f, 0x2f, 0x6d, 0xf5, 0x7f, + 0x2d, 0xfd, 0x2f, 0x9e, 0xe7, 0x3b, 0x04, 0xcd, 0x34, 0x00, 0x00 }; From e95629f827f14d9e107717e5ec40af773ab890f0 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Wed, 27 Dec 2023 20:14:51 +0100 Subject: [PATCH 029/441] Remote preset cancles playlist --- wled00/remote.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wled00/remote.cpp b/wled00/remote.cpp index 582c9f98..21db7975 100644 --- a/wled00/remote.cpp +++ b/wled00/remote.cpp @@ -110,6 +110,8 @@ static void setOff() { } static void presetWithFallback(uint8_t presetID, uint8_t effectID, uint8_t paletteID) { + resetNightMode(); + unloadPlaylist(); applyPresetWithFallback(presetID, CALL_MODE_BUTTON_PRESET, effectID, paletteID); } From 662870baf4aba57047fc61b7c20447373dd1ba43 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Fri, 29 Dec 2023 10:35:44 +0100 Subject: [PATCH 030/441] Changlog update, b2 release --- CHANGELOG.md | 5 +++++ wled00/wled.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fab690b3..3ff931f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ## WLED changelog +#### Build 2312290 +- Fix for #3622, #3613, #3609 +- Various tweaks and fixes +- changelog update + #### Build 2312230 - Version bump: 0.14.1-b2 - Fix for Pixel Magic button diff --git a/wled00/wled.h b/wled00/wled.h index eb72b415..0c3a7719 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2312230 +#define VERSION 2312290 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From 4f55be4f19daf6c81a167f5bf6bd20ff22afb664 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Mon, 1 Jan 2024 23:21:22 +0100 Subject: [PATCH 031/441] Bugfix #3632 --- wled00/data/settings_leds.htm | 2 +- wled00/html_settings.h | 20 ++++++++++---------- wled00/wled.h | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/wled00/data/settings_leds.htm b/wled00/data/settings_leds.htm index e78b1ceb..a283fcfe 100644 --- a/wled00/data/settings_leds.htm +++ b/wled00/data/settings_leds.htm @@ -26,8 +26,8 @@ // success event scE.addEventListener("load", () => { GetV(); - setABL(); checkSi(); + setABL(); d.Sf.addEventListener("submit", trySubmit); if (d.um_p[0]==-1) d.um_p.shift(); pinDropdowns(); diff --git a/wled00/html_settings.h b/wled00/html_settings.h index c8cdcfa4..579359f9 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -341,7 +341,7 @@ const uint8_t PAGE_settings_leds[] PROGMEM = { 0xc1, 0x07, 0x14, 0xbe, 0x06, 0xd3, 0x3b, 0x09, 0xa6, 0x0f, 0x4d, 0x7b, 0x05, 0xac, 0x99, 0x1e, 0x2d, 0x5c, 0x6f, 0xaa, 0xc6, 0x08, 0x6f, 0x4f, 0xa7, 0xef, 0x6e, 0x81, 0x8a, 0x53, 0x37, 0x02, 0x99, 0xa7, 0xa1, 0x4a, 0x90, 0x66, 0xa2, 0xab, 0x9a, 0x35, 0x7a, 0xfc, 0x40, 0xe3, 0x3f, 0x54, - 0x4d, 0x47, 0x9c, 0xe3, 0x53, 0xb8, 0x70, 0x16, 0xd4, 0xb9, 0xb9, 0x72, 0x55, 0x44, 0x77, 0x35, + 0x4d, 0x77, 0x16, 0xd4, 0xb9, 0xb9, 0x72, 0xe1, 0x0a, 0xb1, 0x8f, 0x4f, 0x55, 0x44, 0x77, 0x35, 0x2b, 0x69, 0x1b, 0xad, 0x27, 0x4b, 0x37, 0x26, 0x7a, 0x1c, 0x3e, 0x5c, 0xb1, 0x4b, 0x4d, 0x6f, 0x98, 0x96, 0xc5, 0x85, 0x0f, 0x58, 0xb4, 0xbb, 0xcb, 0x2f, 0x9b, 0xd1, 0xc2, 0x9d, 0xc5, 0x80, 0x67, 0xe5, 0xfa, 0xc7, 0x61, 0xb0, 0x82, 0x49, 0xf3, 0x23, 0x55, 0x7b, 0x2e, 0xa7, 0x08, 0x84, @@ -354,7 +354,7 @@ const uint8_t PAGE_settings_leds[] PROGMEM = { 0x5f, 0xb0, 0x09, 0x74, 0x7d, 0x20, 0xf9, 0xf7, 0xeb, 0xb3, 0x53, 0x8b, 0xc2, 0x58, 0x1c, 0xcf, 0x8e, 0x22, 0x94, 0x10, 0xcb, 0x3f, 0x10, 0xc3, 0xe8, 0x13, 0xc4, 0x44, 0x74, 0xc7, 0xa3, 0x76, 0x78, 0xcd, 0x95, 0x4b, 0x15, 0x4a, 0xc6, 0x26, 0x30, 0x7e, 0x80, 0xf1, 0xd9, 0xbe, 0xbb, 0x64, - 0xa4, 0x5a, 0xc4, 0x0f, 0x7c, 0x18, 0x94, 0x80, 0xb0, 0x60, 0x2e, 0x64, 0x23, 0x55, 0xd2, 0x06, + 0xa4, 0x5a, 0xc4, 0x0f, 0x7c, 0x18, 0x94, 0x80, 0xb0, 0x60, 0x06, 0x64, 0x23, 0x55, 0xd2, 0x06, 0x82, 0x9f, 0xed, 0x2a, 0x73, 0xdd, 0x0c, 0xe9, 0xca, 0xb3, 0x1d, 0x14, 0x25, 0xd6, 0x29, 0xc1, 0x31, 0xe9, 0xed, 0xb7, 0x86, 0x91, 0x19, 0xd9, 0xe4, 0xd4, 0x85, 0x99, 0x8a, 0x70, 0x5c, 0x7a, 0xac, 0xdb, 0xba, 0xab, 0x3d, 0x32, 0x2b, 0x43, 0xb9, 0x95, 0xf1, 0xb9, 0x95, 0xb1, 0x85, 0x8d, @@ -392,13 +392,13 @@ const uint8_t PAGE_settings_leds[] PROGMEM = { 0xa5, 0xed, 0x3f, 0x28, 0x10, 0xbe, 0x45, 0x0a, 0x08, 0x80, 0xb2, 0xa4, 0x4a, 0x1c, 0x28, 0x0b, 0xdb, 0x9f, 0x7a, 0x74, 0x87, 0x0c, 0xd0, 0x58, 0x0e, 0x4d, 0xda, 0xd9, 0xdd, 0x55, 0xfd, 0xba, 0x45, 0xfe, 0xf4, 0xff, 0x0c, 0x8f, 0xc0, 0x69, 0x41, 0x54, 0x14, 0x82, 0x2a, 0xa0, 0x37, 0xb2, - 0x7d, 0xe5, 0xdd, 0xd5, 0xc5, 0x5e, 0xbb, 0x49, 0xa4, 0xa3, 0xf2, 0xb5, 0x67, 0x46, 0x3a, 0xf3, - 0xaf, 0x7f, 0xd8, 0x9e, 0x3b, 0x75, 0xe3, 0x07, 0x55, 0x43, 0x6f, 0x09, 0x4f, 0xb9, 0x53, 0x55, - 0x33, 0x16, 0x9b, 0xfa, 0xcc, 0x1f, 0x0b, 0x83, 0xcb, 0x3c, 0x10, 0x86, 0x9b, 0xa0, 0xfb, 0x0c, + 0x7d, 0xe5, 0xdd, 0xd5, 0xc5, 0x5e, 0xbb, 0x49, 0xa4, 0xa3, 0xf2, 0xb5, 0x67, 0x46, 0x3a, 0x73, + 0xb4, 0x7f, 0xd8, 0x9e, 0x3b, 0x75, 0xe3, 0x07, 0x55, 0x43, 0x6f, 0x09, 0x4f, 0xb9, 0x53, 0x55, + 0x33, 0x16, 0x9b, 0xfa, 0xcc, 0x0b, 0x0b, 0x83, 0xcb, 0x3c, 0x10, 0x86, 0x9b, 0xa0, 0xfb, 0x0c, 0x03, 0x9d, 0x0e, 0x58, 0xc3, 0xd3, 0x43, 0xc1, 0x07, 0x7a, 0xc0, 0x03, 0xc8, 0xbe, 0xa1, 0x4b, 0x60, 0x80, 0xe5, 0x9e, 0x66, 0xea, 0x46, 0xe0, 0x22, 0x1e, 0x00, 0x86, 0xb8, 0xbe, 0xe7, 0x82, 0xaf, 0xe9, 0x0b, 0x97, 0xc3, 0x40, 0x57, 0xd1, 0xba, 0xfd, 0x0a, 0xd8, 0x5c, 0x7f, 0x23, 0x63, - 0x77, 0x37, 0x89, 0x19, 0x3e, 0x9d, 0xe4, 0x29, 0x3f, 0x3d, 0xcc, 0x7b, 0x8a, 0xd3, 0x43, 0x30, + 0x77, 0x37, 0x89, 0x14, 0x3e, 0x9d, 0xe4, 0x29, 0x3f, 0x3d, 0xcc, 0x7b, 0x8a, 0xd3, 0x43, 0x30, 0x5e, 0xbc, 0xdd, 0x26, 0xd5, 0x9c, 0x82, 0xd3, 0x43, 0xe8, 0xb6, 0x40, 0x42, 0xd7, 0xb0, 0x4a, 0xc8, 0xc8, 0x77, 0x26, 0x69, 0x78, 0x8c, 0xee, 0xdc, 0x18, 0x0c, 0x62, 0x09, 0xa3, 0x20, 0x2c, 0xd3, 0x37, 0xc9, 0x00, 0xdc, 0x7a, 0x46, 0x6b, 0x32, 0x24, 0x81, 0xba, 0x39, 0x76, 0x44, 0x15, @@ -424,7 +424,7 @@ const uint8_t PAGE_settings_leds[] PROGMEM = { 0x60, 0xd4, 0x79, 0x7b, 0x40, 0x8e, 0xc1, 0xd8, 0x2b, 0x1f, 0x2e, 0x4e, 0xce, 0xf9, 0x13, 0xf3, 0x80, 0xe0, 0x0d, 0xbe, 0x27, 0xfc, 0xa9, 0xb0, 0x62, 0x66, 0x11, 0x71, 0xe7, 0x2d, 0xe2, 0xdd, 0xef, 0x1c, 0x90, 0x23, 0xef, 0x46, 0xe2, 0x00, 0x8f, 0x61, 0xd7, 0x2d, 0x21, 0xe0, 0x81, 0xee, - 0x41, 0xce, 0x63, 0x99, 0x03, 0x67, 0xd8, 0x1d, 0x38, 0xd2, 0xad, 0x47, 0x15, 0xc2, 0x43, 0xea, + 0x41, 0xf2, 0x63, 0x99, 0x03, 0x67, 0xd8, 0x1d, 0x38, 0xd2, 0xad, 0x47, 0x15, 0xc2, 0x43, 0xea, 0x0e, 0x74, 0x01, 0xd2, 0x33, 0x88, 0x80, 0xa5, 0x19, 0xc2, 0x77, 0x77, 0x9d, 0x61, 0xe7, 0xe9, 0x89, 0xf7, 0x08, 0xd9, 0x90, 0xc3, 0xae, 0x4d, 0x7c, 0xd9, 0x05, 0x10, 0xa7, 0xde, 0x31, 0x86, 0xc1, 0x81, 0x1a, 0x55, 0x28, 0xa4, 0x1e, 0x41, 0x14, 0xff, 0x8f, 0xb5, 0x1b, 0x32, 0x6b, 0xa5, @@ -597,7 +597,7 @@ const uint8_t PAGE_settings_leds[] PROGMEM = { 0x95, 0x37, 0x28, 0xb7, 0x6f, 0x34, 0xe9, 0xc3, 0x76, 0x7f, 0xba, 0x6f, 0xff, 0x66, 0x76, 0x07, 0x32, 0x30, 0x07, 0x93, 0x29, 0xb6, 0x96, 0x36, 0x95, 0xc9, 0xca, 0x54, 0xaa, 0xc5, 0x73, 0xef, 0xca, 0x45, 0x13, 0xa0, 0xe6, 0x8e, 0x00, 0x51, 0xed, 0xe9, 0x49, 0xcd, 0x1f, 0x02, 0xda, 0x2c, - 0xf6, 0x4c, 0x8e, 0x8b, 0x3c, 0xa2, 0x61, 0xe2, 0x86, 0x72, 0xc7, 0xc4, 0xb8, 0x62, 0x00, 0xee, + 0xf6, 0x4c, 0xce, 0x8d, 0x3c, 0xa2, 0x61, 0xe2, 0x86, 0x72, 0xc7, 0xc4, 0xb8, 0x62, 0x00, 0xee, 0x6c, 0xfb, 0xf2, 0xb6, 0xb4, 0x93, 0x3e, 0x96, 0x25, 0x14, 0xb7, 0x18, 0x99, 0x81, 0xd4, 0x7e, 0x60, 0x6d, 0xdf, 0xcf, 0x2f, 0xd1, 0xef, 0x94, 0x6c, 0x5b, 0xfa, 0x12, 0x1f, 0x9a, 0x65, 0x2c, 0x0c, 0xcd, 0x26, 0xd8, 0xfe, 0x57, 0x5c, 0x9a, 0x17, 0x7b, 0x8f, 0x91, 0x41, 0x00, 0xc8, 0x28, @@ -826,8 +826,8 @@ const uint8_t PAGE_settings_leds[] PROGMEM = { 0xcb, 0xe4, 0x4a, 0x4c, 0x97, 0x2b, 0xaf, 0xd8, 0x2f, 0x0f, 0x9c, 0x6b, 0x69, 0xe4, 0xdc, 0x26, 0xca, 0xff, 0x7f, 0xe4, 0x4c, 0x64, 0x51, 0x64, 0x52, 0x3b, 0xd9, 0x86, 0xbc, 0x8e, 0x05, 0x4a, 0xe5, 0xc9, 0xf2, 0xff, 0xd2, 0x3e, 0x4e, 0x0b, 0xb7, 0xa6, 0x32, 0x2b, 0x0f, 0xfc, 0xfb, 0xe9, - 0xb2, 0xdb, 0x16, 0xee, 0x6a, 0xe1, 0x16, 0x17, 0xfe, 0xff, 0x1b, 0xfe, 0x1f, 0xcd, 0xd9, 0x9d, - 0x3a, 0xcf, 0x61, 0x00, 0x00 + 0xb2, 0xdb, 0x16, 0xee, 0x6a, 0xe1, 0x16, 0x17, 0xfe, 0xff, 0x1b, 0xfe, 0x1f, 0x72, 0x20, 0x5a, + 0x39, 0xcf, 0x61, 0x00, 0x00 }; diff --git a/wled00/wled.h b/wled00/wled.h index 0c3a7719..b052047c 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2312290 +#define VERSION 2401010 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From 4e0f3e35db356d728b589f7700a26e398ad20160 Mon Sep 17 00:00:00 2001 From: PeterP Date: Wed, 3 Jan 2024 15:08:02 -0500 Subject: [PATCH 032/441] Update README.md Pointed link to current directions for compiling WLED --- usermods/Animated_Staircase/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usermods/Animated_Staircase/README.md b/usermods/Animated_Staircase/README.md index 618a1f7c..320b744a 100644 --- a/usermods/Animated_Staircase/README.md +++ b/usermods/Animated_Staircase/README.md @@ -11,7 +11,7 @@ The Animated Staircase can be controlled by the WLED API. Change settings such a speed, on/off time and distance by sending an HTTP request, see below. ## WLED integration -To include this usermod in your WLED setup, you have to be able to [compile WLED from source](https://github.com/Aircoookie/WLED/wiki/Compiling-WLED). +To include this usermod in your WLED setup, you have to be able to [compile WLED from source](https://kno.wled.ge/advanced/compiling-wled/). Before compiling, you have to make the following modifications: From cdc86402184582b5b447d24e6c00bd87097d840e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bla=C5=BE=20Kristan?= Date: Sat, 6 Jan 2024 17:01:34 +0100 Subject: [PATCH 033/441] Merge pull request #3648 from willmmiles/json-response-locking Expand JSON buffer lock scope to entire web reply --- wled00/fcn_declare.h | 16 ++++++++++++++++ wled00/json.cpp | 17 ++++++++++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/wled00/fcn_declare.h b/wled00/fcn_declare.h index e046c40d..c65f7a90 100644 --- a/wled00/fcn_declare.h +++ b/wled00/fcn_declare.h @@ -356,6 +356,22 @@ um_data_t* simulateSound(uint8_t simulationId); void enumerateLedmaps(); uint8_t get_random_wheel_index(uint8_t pos); +// RAII guard class for the JSON Buffer lock +// Modeled after std::lock_guard +class JSONBufferGuard { + bool holding_lock; + public: + inline JSONBufferGuard(uint8_t module=255) : holding_lock(requestJSONBufferLock(module)) {}; + inline ~JSONBufferGuard() { if (holding_lock) releaseJSONBufferLock(); }; + inline JSONBufferGuard(const JSONBufferGuard&) = delete; // Noncopyable + inline JSONBufferGuard& operator=(const JSONBufferGuard&) = delete; + inline JSONBufferGuard(JSONBufferGuard&& r) : holding_lock(r.holding_lock) { r.holding_lock = false; }; // but movable + inline JSONBufferGuard& operator=(JSONBufferGuard&& r) { holding_lock |= r.holding_lock; r.holding_lock = false; return *this; }; + inline bool owns_lock() const { return holding_lock; } + explicit inline operator bool() const { return owns_lock(); }; + inline void release() { if (holding_lock) releaseJSONBufferLock(); holding_lock = false; } +}; + #ifdef WLED_ADD_EEPROM_SUPPORT //wled_eeprom.cpp void applyMacro(byte index); diff --git a/wled00/json.cpp b/wled00/json.cpp index fd298aef..2e3b27b9 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -1013,6 +1013,17 @@ void serializeModeNames(JsonArray arr) } } + +// Global buffer locking response helper class +class GlobalBufferAsyncJsonResponse: public JSONBufferGuard, public AsyncJsonResponse { + public: + inline GlobalBufferAsyncJsonResponse(bool isArray) : JSONBufferGuard(17), AsyncJsonResponse(&doc, isArray) {}; + virtual ~GlobalBufferAsyncJsonResponse() {}; + + // Other members are inherited +}; + + void serveJson(AsyncWebServerRequest* request) { byte subJson = 0; @@ -1043,11 +1054,12 @@ void serveJson(AsyncWebServerRequest* request) return; } - if (!requestJSONBufferLock(17)) { + GlobalBufferAsyncJsonResponse *response = new GlobalBufferAsyncJsonResponse(subJson==JSON_PATH_FXDATA || subJson==JSON_PATH_EFFECTS); // will clear and convert JsonDocument into JsonArray if necessary + if (!response->owns_lock()) { request->send(503, "application/json", F("{\"error\":3}")); + delete response; return; } - AsyncJsonResponse *response = new AsyncJsonResponse(&doc, subJson==JSON_PATH_FXDATA || subJson==JSON_PATH_EFFECTS); // will clear and convert JsonDocument into JsonArray if necessary JsonVariant lDoc = response->getRoot(); @@ -1090,7 +1102,6 @@ void serveJson(AsyncWebServerRequest* request) DEBUG_PRINT(F("JSON content length: ")); DEBUG_PRINTLN(len); request->send(response); - releaseJSONBufferLock(); } #ifdef WLED_ENABLE_JSONLIVE From 8fb5f0ef3c1cf85e743bf033020ce8bf3cc30d4a Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Sat, 6 Jan 2024 20:34:31 +0100 Subject: [PATCH 034/441] Changelog update v0.14.1-b3 --- CHANGELOG.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- wled00/improv.cpp | 2 +- wled00/wled.h | 2 +- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ff931f5..13f13955 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ ## WLED changelog +#### Build 2401060 +- Version bump: 0.14.1-b3 +- Global JSON buffer guarding (#3648 by @willmmiles, resolves #3641, #3312, #3367, #3637, #3646, #3447) +- Fix for #3632 +- Custom palette editor mobile UI enhancement (#3617 by @imeszaros) +- changelog update + #### Build 2312290 - Fix for #3622, #3613, #3609 - Various tweaks and fixes diff --git a/package-lock.json b/package-lock.json index 71f73fef..293ccff5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wled", - "version": "0.14.1-b2", + "version": "0.14.1-b3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index c4faddc7..bcb77167 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wled", - "version": "0.14.1-b2", + "version": "0.14.1-b3", "description": "Tools for WLED project", "main": "tools/cdata.js", "directories": { diff --git a/wled00/improv.cpp b/wled00/improv.cpp index 0f4081f2..dc94226e 100644 --- a/wled00/improv.cpp +++ b/wled00/improv.cpp @@ -210,7 +210,7 @@ void sendImprovInfoResponse() { //Use serverDescription if it has been changed from the default "WLED", else mDNS name bool useMdnsName = (strcmp(serverDescription, "WLED") == 0 && strlen(cmDNS) > 0); char vString[20]; - sprintf_P(vString, PSTR("0.14.1-b2/%i"), VERSION); + sprintf_P(vString, PSTR("0.14.1-b3/%i"), VERSION); const char *str[4] = {"WLED", vString, bString, useMdnsName ? cmDNS : serverDescription}; sendImprovRPCResult(ImprovRPCType::Request_Info, 4, str); diff --git a/wled00/wled.h b/wled00/wled.h index b052047c..74d60aa0 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2401010 +#define VERSION 2401060 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From 115eb0ddefadcde92f9f0f4746653c395518a0d7 Mon Sep 17 00:00:00 2001 From: Britt Gresham Date: Sun, 24 Dec 2023 14:16:00 -0800 Subject: [PATCH 035/441] Add additional segment options when controlling over e1.31 Before this commit it was only possible to control mirror and reverse on a 1d segment. All of the other options for 2d effects could not be set and thus they would be kept disabled. This commit replaces the Effect Option dmx channel with a bitfield which allows for each segment option to be individually toggled depending on which bit is set in the field. Backwards compatibility has been maintained with existing 1d segment options. --- wled00/e131.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/wled00/e131.cpp b/wled00/e131.cpp index 68c7ca5a..f0b792f5 100644 --- a/wled00/e131.cpp +++ b/wled00/e131.cpp @@ -225,11 +225,17 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){ if (e131_data[dataOffset+3] != seg.intensity) seg.intensity = e131_data[dataOffset+3]; if (e131_data[dataOffset+4] != seg.palette) seg.setPalette(e131_data[dataOffset+4]); - uint8_t segOption = (uint8_t)floor(e131_data[dataOffset+5]/64.0); - if (segOption == 0 && (seg.mirror || seg.reverse )) {seg.setOption(SEG_OPTION_MIRROR, false); seg.setOption(SEG_OPTION_REVERSED, false);} - if (segOption == 1 && (seg.mirror || !seg.reverse)) {seg.setOption(SEG_OPTION_MIRROR, false); seg.setOption(SEG_OPTION_REVERSED, true);} - if (segOption == 2 && (!seg.mirror || seg.reverse )) {seg.setOption(SEG_OPTION_MIRROR, true); seg.setOption(SEG_OPTION_REVERSED, false);} - if (segOption == 3 && (!seg.mirror || !seg.reverse)) {seg.setOption(SEG_OPTION_MIRROR, true); seg.setOption(SEG_OPTION_REVERSED, true);} + uint8_t segOption = (uint8_t)floor(e131_data[dataOffset+5]); + if ((segOption & (1 << 0)) != seg.reverse_y) { seg.setOption(SEG_OPTION_REVERSED_Y, segOption & (1 << 0)); } + if ((segOption & (1 << 1)) != seg.mirror_y) { seg.setOption(SEG_OPTION_MIRROR_Y, segOption & (1 << 1)); } + if ((segOption & (1 << 2)) != seg.transpose) { seg.setOption(SEG_OPTION_TRANSPOSED, segOption & (1 << 2)); } + if ((segOption & ((1 << 3) | (1 << 4))) >> 3 != seg.map1D2D) { + seg.map1D2D = (segOption & ((1 << 3) | (1 << 4))) >> 3; + } + // To maintain backwards compatibility with prior e1.31 values, reverse is fixed to mask 0x01000000 + if ((segOption & (1 << 6)) != seg.reverse) { seg.setOption(SEG_OPTION_REVERSED, segOption & (1 << 6)); } + // To maintain backwards compatibility with prior e1.31 values, mirror is fixed to mask 0x10000000 + if ((segOption & (1 << 7)) != seg.mirror) { seg.setOption(SEG_OPTION_MIRROR, segOption & (1 << 7)); } uint32_t colors[3]; byte whites[3] = {0,0,0}; From 18874c2069593f53e861c15b4b50ecb26f98b155 Mon Sep 17 00:00:00 2001 From: Britt Gresham Date: Tue, 26 Dec 2023 07:55:04 -0800 Subject: [PATCH 036/441] Remove unneeded floor call on segment option channel --- wled00/e131.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/e131.cpp b/wled00/e131.cpp index f0b792f5..ac7a9e6c 100644 --- a/wled00/e131.cpp +++ b/wled00/e131.cpp @@ -225,7 +225,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){ if (e131_data[dataOffset+3] != seg.intensity) seg.intensity = e131_data[dataOffset+3]; if (e131_data[dataOffset+4] != seg.palette) seg.setPalette(e131_data[dataOffset+4]); - uint8_t segOption = (uint8_t)floor(e131_data[dataOffset+5]); + uint8_t segOption = e131_data[dataOffset+5]; if ((segOption & (1 << 0)) != seg.reverse_y) { seg.setOption(SEG_OPTION_REVERSED_Y, segOption & (1 << 0)); } if ((segOption & (1 << 1)) != seg.mirror_y) { seg.setOption(SEG_OPTION_MIRROR_Y, segOption & (1 << 1)); } if ((segOption & (1 << 2)) != seg.transpose) { seg.setOption(SEG_OPTION_TRANSPOSED, segOption & (1 << 2)); } From fd2809e3671c784c0756c2d068e1003285575445 Mon Sep 17 00:00:00 2001 From: Britt Gresham Date: Tue, 26 Dec 2023 11:18:32 -0800 Subject: [PATCH 037/441] Replace bitshifts with masks and division --- wled00/e131.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/wled00/e131.cpp b/wled00/e131.cpp index ac7a9e6c..c065c746 100644 --- a/wled00/e131.cpp +++ b/wled00/e131.cpp @@ -225,17 +225,16 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){ if (e131_data[dataOffset+3] != seg.intensity) seg.intensity = e131_data[dataOffset+3]; if (e131_data[dataOffset+4] != seg.palette) seg.setPalette(e131_data[dataOffset+4]); - uint8_t segOption = e131_data[dataOffset+5]; - if ((segOption & (1 << 0)) != seg.reverse_y) { seg.setOption(SEG_OPTION_REVERSED_Y, segOption & (1 << 0)); } - if ((segOption & (1 << 1)) != seg.mirror_y) { seg.setOption(SEG_OPTION_MIRROR_Y, segOption & (1 << 1)); } - if ((segOption & (1 << 2)) != seg.transpose) { seg.setOption(SEG_OPTION_TRANSPOSED, segOption & (1 << 2)); } - if ((segOption & ((1 << 3) | (1 << 4))) >> 3 != seg.map1D2D) { - seg.map1D2D = (segOption & ((1 << 3) | (1 << 4))) >> 3; + if ((e131_data[dataOffset+5] & 0b00000001) != seg.reverse_y) { seg.setOption(SEG_OPTION_REVERSED_Y, e131_data[dataOffset+5] & 0b00000001); } + if ((e131_data[dataOffset+5] & 0b00000010) != seg.mirror_y) { seg.setOption(SEG_OPTION_MIRROR_Y, e131_data[dataOffset+5] & 0b00000010); } + if ((e131_data[dataOffset+5] & 0b00000100) != seg.transpose) { seg.setOption(SEG_OPTION_TRANSPOSED, e131_data[dataOffset+5] & 0b00000100); } + if ((e131_data[dataOffset+5] & 0b00011000) / 8 != seg.map1D2D) { + seg.map1D2D = (e131_data[dataOffset+5] & 0b00011000) / 8; } // To maintain backwards compatibility with prior e1.31 values, reverse is fixed to mask 0x01000000 - if ((segOption & (1 << 6)) != seg.reverse) { seg.setOption(SEG_OPTION_REVERSED, segOption & (1 << 6)); } + if ((e131_data[dataOffset+5] & 0b01000000) != seg.reverse) { seg.setOption(SEG_OPTION_REVERSED, e131_data[dataOffset+5] & 0b01000000); } // To maintain backwards compatibility with prior e1.31 values, mirror is fixed to mask 0x10000000 - if ((segOption & (1 << 7)) != seg.mirror) { seg.setOption(SEG_OPTION_MIRROR, segOption & (1 << 7)); } + if ((e131_data[dataOffset+5] & 0b10000000) != seg.mirror) { seg.setOption(SEG_OPTION_MIRROR, e131_data[dataOffset+5] & 0b10000000); } uint32_t colors[3]; byte whites[3] = {0,0,0}; From 9e54de8a8a5f957c4fd186ee3c4404f83b0898c0 Mon Sep 17 00:00:00 2001 From: Britt Gresham Date: Wed, 27 Dec 2023 15:56:18 -0800 Subject: [PATCH 038/441] Set 2 values between each segment option Due to the midi interface being difficult/impossible to increment on values of 1 because it has 7-bits of granularity, this commit moves all the bitfields for configuring segment options left by one which guarantees that every option has 2 values next to each other. This allows midi controllers to more easily select an individual segment option for 2D arrays. --- wled00/e131.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/wled00/e131.cpp b/wled00/e131.cpp index c065c746..3a779a0a 100644 --- a/wled00/e131.cpp +++ b/wled00/e131.cpp @@ -225,11 +225,11 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){ if (e131_data[dataOffset+3] != seg.intensity) seg.intensity = e131_data[dataOffset+3]; if (e131_data[dataOffset+4] != seg.palette) seg.setPalette(e131_data[dataOffset+4]); - if ((e131_data[dataOffset+5] & 0b00000001) != seg.reverse_y) { seg.setOption(SEG_OPTION_REVERSED_Y, e131_data[dataOffset+5] & 0b00000001); } - if ((e131_data[dataOffset+5] & 0b00000010) != seg.mirror_y) { seg.setOption(SEG_OPTION_MIRROR_Y, e131_data[dataOffset+5] & 0b00000010); } - if ((e131_data[dataOffset+5] & 0b00000100) != seg.transpose) { seg.setOption(SEG_OPTION_TRANSPOSED, e131_data[dataOffset+5] & 0b00000100); } - if ((e131_data[dataOffset+5] & 0b00011000) / 8 != seg.map1D2D) { - seg.map1D2D = (e131_data[dataOffset+5] & 0b00011000) / 8; + if ((e131_data[dataOffset+5] & 0b00000010) != seg.reverse_y) { seg.setOption(SEG_OPTION_REVERSED_Y, e131_data[dataOffset+5] & 0b00000010); } + if ((e131_data[dataOffset+5] & 0b00000100) != seg.mirror_y) { seg.setOption(SEG_OPTION_MIRROR_Y, e131_data[dataOffset+5] & 0b00000100); } + if ((e131_data[dataOffset+5] & 0b00001000) != seg.transpose) { seg.setOption(SEG_OPTION_TRANSPOSED, e131_data[dataOffset+5] & 0b00001000); } + if ((e131_data[dataOffset+5] & 0b00110000) / 8 != seg.map1D2D) { + seg.map1D2D = (e131_data[dataOffset+5] & 0b00110000) / 8; } // To maintain backwards compatibility with prior e1.31 values, reverse is fixed to mask 0x01000000 if ((e131_data[dataOffset+5] & 0b01000000) != seg.reverse) { seg.setOption(SEG_OPTION_REVERSED, e131_data[dataOffset+5] & 0b01000000); } From 052bdd8eb04731a9e87edca1a953a48571010413 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Tue, 9 Jan 2024 11:54:46 +0100 Subject: [PATCH 039/441] fix for #3655 make WS2814 explicit in LED driver drop-down menu --- wled00/data/settings_leds.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/data/settings_leds.htm b/wled00/data/settings_leds.htm index a283fcfe..5bddafe5 100644 --- a/wled00/data/settings_leds.htm +++ b/wled00/data/settings_leds.htm @@ -340,7 +340,7 @@ ${i+1}:

Backup & Restore

+
⚠ Restoring presets/configuration will OVERWRITE your current presets/configuration.
+ Incorrect upload or configuration may require a factory reset or re-flashing of your ESP.
+ For security reasons, passwords are not backed up. Backup presets
Restore presets


Backup configuration
Restore configuration

-
⚠ Restoring presets/configuration will OVERWRITE your current presets/configuration.
- Incorrect configuration may require a factory reset or re-flashing of your ESP.
- For security reasons, passwords are not backed up.

About

WLED version ##VERSION##

From 00a73e9cc879602d1991c4b88d097a81ec84581d Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Tue, 27 Feb 2024 21:21:53 +0100 Subject: [PATCH 071/441] ABL display bugfix --- wled00/xml.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/wled00/xml.cpp b/wled00/xml.cpp index 4c439129..7c25f05b 100755 --- a/wled00/xml.cpp +++ b/wled00/xml.cpp @@ -425,6 +425,7 @@ void getSettingsJS(byte subPage, char* dest) sumMa += bus->getMaxCurrent(); } sappend('v',SET_F("MA"),BusManager::ablMilliampsMax() ? BusManager::ablMilliampsMax() : sumMa); + sappend('c',SET_F("ABL"),BusManager::ablMilliampsMax() || sumMa > 0); sappend('c',SET_F("PPL"),!BusManager::ablMilliampsMax() && sumMa > 0); oappend(SET_F("resetCOM(")); From 4739cfab9a959bc38e8b38e08e8c64baaa350bde Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Wed, 28 Feb 2024 18:14:42 +0100 Subject: [PATCH 072/441] JS ABL optimisation --- wled00/data/settings_leds.htm | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/wled00/data/settings_leds.htm b/wled00/data/settings_leds.htm index 470d69d6..654c99a5 100644 --- a/wled00/data/settings_leds.htm +++ b/wled00/data/settings_leds.htm @@ -123,10 +123,10 @@ gId('abl').style.display = (en) ? 'inline':'none'; gId('psu2').style.display = (en) ? 'inline':'none'; if (!en) d.Sf.PPL.checked = false; - enPPL(); UI(); } - function enPPL() + // enable per port limiter and calculate current + function enPPL(sDI=0) { const abl = d.Sf.ABL.checked; const ppl = d.Sf.PPL.checked; @@ -139,9 +139,11 @@ d.Sf.querySelectorAll("#mLC input[name^=MA]").forEach((i,n)=>{ gId("PSU"+n).style.display = ppl ? "inline" : "none"; const t = parseInt(d.Sf["LT"+n].value); // LED type SELECT + const c = parseInt(d.Sf["LC"+n].value); //get LED count i.min = ppl && !(isVir(t) || isAna(t)) ? 250 : 0; - if (!abl) i.value = 0; + if (!abl || isVir(t) || isAna(t)) i.value = 0; else if (ppl) sumMA += parseInt(i.value,10); + else if (sDI) i.value = Math.round(parseInt(d.Sf.MA.value,10)*c/sDI); }); if (ppl) d.Sf.MA.value = sumMA; // populate UI ABL value if PPL used } @@ -201,10 +203,9 @@ function UI(change=false) { let isRGBW = false, gRGBW = false, memu = 0; - let sumMA = 0, busMA = 0; + let busMA = 0; let sLC = 0, sPC = 0, sDI = 0, maxLC = 0; const ablEN = d.Sf.ABL.checked; - const pplEN = d.Sf.PPL.checked; // enable/disable LED fields d.Sf.querySelectorAll("#mLC select[name^=LT]").forEach((s)=>{ @@ -253,9 +254,6 @@ gId("dig"+n+"l").style.display = (isD2P(t) || isPWM(t)) ? "inline":"none"; // bus clock speed / PWM speed (relative) (not On/Off) gId("rev"+n).innerHTML = isAna(t) ? "Inverted output":"Reversed (rotated 180°)"; // change reverse text for analog //gId("psd"+n).innerHTML = isAna(t) ? "Index:":"Start:"; // change analog start description - if (ablEN && pplEN && !(isVir(t) || isAna(t))) { - sumMA += parseInt(d.Sf["MA"+n].value); // summarize PPL ABL limit (fields) - } }); // display global white channel overrides gId("wc").style.display = (gRGBW) ? 'inline':'none'; @@ -279,7 +277,6 @@ if (s+c > sLC) sLC = s+c; //update total count if (c > maxLC) maxLC = c; //max per output if (!isVir(t)) sPC += c; //virtual out busses do not count towards physical LEDs - //if (!(isVir(t) || isPWM(t))) sDI += c; if (!(isVir(t) || isAna(t))) { sDI += c; // summarize digital LED count let maPL = parseInt(d.Sf["LA"+n].value); @@ -327,18 +324,9 @@ else LC.style.color = d.ro_gpio.some((e)=>e==parseInt(LC.value)) ? "orange" : "#fff"; } }); - // distribute ABL current if not using PPL, otherwise sumMA contains summarized ABL limit - d.Sf.querySelectorAll("#mLC input[name^=LC]").forEach((s,n)=>{ - let c = parseInt(s.value,10); //get LED count - let t = parseInt(d.Sf["LT"+n].value); //get LED type - if (!ablEN || isVir(t) || isAna(t)) { - // virtual and analog LEDs have no limiter - d.Sf["MA"+n].value = 0; - return; - } - if (!pplEN) d.Sf["MA"+n].value = Math.round(parseInt(d.Sf.MA.value,10)*c/sDI); - }); - if (pplEN) d.Sf.MA.value = sumMA; // update global ABL if using PPL + // distribute ABL current if not using PPL + enPPL(sDI); + // update total led count gId("lc").textContent = sLC; gId("pc").textContent = (sLC == sPC) ? "":"(" + sPC + " physical)"; @@ -461,7 +449,6 @@ mA/LED: Keep at <1A if poweing LEDs directly from the ESP 5V pin!
Analog (PWM) and virtual LEDs cannot use automatic brightness limiter.
Maximum PSU Current: mA
- Use per-output limiter:
+ Use per-output limiter: