Merge remote-tracking branch 'upstream/main' into mdev
This commit is contained in:
@@ -92,12 +92,14 @@ class Animated_Staircase : public Usermod {
|
|||||||
static const char _bottomEchoCm[];
|
static const char _bottomEchoCm[];
|
||||||
|
|
||||||
void publishMqtt(bool bottom, const char* state) {
|
void publishMqtt(bool bottom, const char* state) {
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
//Check if MQTT Connected, otherwise it will crash the 8266
|
//Check if MQTT Connected, otherwise it will crash the 8266
|
||||||
if (WLED_MQTT_CONNECTED){
|
if (WLED_MQTT_CONNECTED){
|
||||||
char subuf[64];
|
char subuf[64];
|
||||||
sprintf_P(subuf, PSTR("%s/motion/%d"), mqttDeviceTopic, (int)bottom);
|
sprintf_P(subuf, PSTR("%s/motion/%d"), mqttDeviceTopic, (int)bottom);
|
||||||
mqtt->publish(subuf, 0, false, state);
|
mqtt->publish(subuf, 0, false, state);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateSegments() {
|
void updateSegments() {
|
||||||
@@ -345,6 +347,7 @@ class Animated_Staircase : public Usermod {
|
|||||||
|
|
||||||
uint16_t getId() { return USERMOD_ID_ANIMATED_STAIRCASE; }
|
uint16_t getId() { return USERMOD_ID_ANIMATED_STAIRCASE; }
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
/**
|
/**
|
||||||
* handling of MQTT message
|
* handling of MQTT message
|
||||||
* topic only contains stripped topic (part after /wled/MAC)
|
* topic only contains stripped topic (part after /wled/MAC)
|
||||||
@@ -382,6 +385,7 @@ class Animated_Staircase : public Usermod {
|
|||||||
mqtt->subscribe(subuf, 0);
|
mqtt->subscribe(subuf, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void addToJsonState(JsonObject& root) {
|
void addToJsonState(JsonObject& root) {
|
||||||
JsonObject staircase = root[FPSTR(_name)];
|
JsonObject staircase = root[FPSTR(_name)];
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
// force the compiler to show a warning to confirm that this file is included WLEDMM: commented this warning as we want serious warnings ;-)
|
// force the compiler to show a warning to confirm that this file is included WLEDMM: commented this warning as we want serious warnings ;-)
|
||||||
// #warning **** Included USERMOD_BH1750 ****
|
// #warning **** Included USERMOD_BH1750 ****
|
||||||
|
|
||||||
|
#ifndef WLED_ENABLE_MQTT
|
||||||
|
#error "This user mod requires MQTT to be enabled."
|
||||||
|
#endif
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <Arduino.h> // WLEDMM: make sure that I2C drivers have the "right" Wire Object
|
#include <Arduino.h> // WLEDMM: make sure that I2C drivers have the "right" Wire Object
|
||||||
@@ -179,6 +183,7 @@ public:
|
|||||||
{
|
{
|
||||||
lastLux = lux;
|
lastLux = lux;
|
||||||
lastSend = millis();
|
lastSend = millis();
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
if (WLED_MQTT_CONNECTED)
|
if (WLED_MQTT_CONNECTED)
|
||||||
{
|
{
|
||||||
if (!mqttInitialized)
|
if (!mqttInitialized)
|
||||||
@@ -193,6 +198,7 @@ public:
|
|||||||
{
|
{
|
||||||
DEBUG_PRINTLN(F("Missing MQTT connection. Not publishing data"));
|
DEBUG_PRINTLN(F("Missing MQTT connection. Not publishing data"));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
// force the compiler to show a warning to confirm that this file is included WLEDMM: commented this warning as we want serious warnings ;-)
|
// force the compiler to show a warning to confirm that this file is included WLEDMM: commented this warning as we want serious warnings ;-)
|
||||||
// #warning **** Included USERMOD_BME280 version 2.0 ****
|
// #warning **** Included USERMOD_BME280 version 2.0 ****
|
||||||
|
|
||||||
|
#ifndef WLED_ENABLE_MQTT
|
||||||
|
#error "This user mod requires MQTT to be enabled."
|
||||||
|
#endif
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "wled.h"
|
#include "wled.h"
|
||||||
|
|||||||
@@ -224,6 +224,7 @@ class UsermodBattery : public Usermod
|
|||||||
if (autoOffEnabled && (autoOffThreshold >= batteryLevel))
|
if (autoOffEnabled && (autoOffThreshold >= batteryLevel))
|
||||||
turnOff();
|
turnOff();
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
// SmartHome stuff
|
// SmartHome stuff
|
||||||
// still don't know much about MQTT and/or HA
|
// still don't know much about MQTT and/or HA
|
||||||
if (WLED_MQTT_CONNECTED) {
|
if (WLED_MQTT_CONNECTED) {
|
||||||
@@ -231,6 +232,7 @@ class UsermodBattery : public Usermod
|
|||||||
snprintf_P(buf, 63, PSTR("%s/voltage"), mqttDeviceTopic);
|
snprintf_P(buf, 63, PSTR("%s/voltage"), mqttDeviceTopic);
|
||||||
mqtt->publish(buf, 0, false, String(voltage).c_str());
|
mqtt->publish(buf, 0, false, String(voltage).c_str());
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "wled.h"
|
#include "wled.h"
|
||||||
|
#ifndef WLED_ENABLE_MQTT
|
||||||
|
#error "This user mod requires MQTT to be enabled."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include <dht_nonblocking.h>
|
#include <dht_nonblocking.h>
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
#ifndef WLED_ENABLE_MQTT
|
||||||
|
#error "This user mod requires MQTT to be enabled."
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "wled.h"
|
#include "wled.h"
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <U8x8lib.h> // from https://github.com/olikraus/u8g2/
|
#include <U8x8lib.h> // from https://github.com/olikraus/u8g2/
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
#ifndef WLED_ENABLE_MQTT
|
||||||
|
#error "This user mod requires MQTT to be enabled."
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "wled.h"
|
#include "wled.h"
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <U8x8lib.h> // from https://github.com/olikraus/u8g2/
|
#include <U8x8lib.h> // from https://github.com/olikraus/u8g2/
|
||||||
|
|||||||
@@ -159,6 +159,7 @@ private:
|
|||||||
|
|
||||||
void publishMqtt(const char* state)
|
void publishMqtt(const char* state)
|
||||||
{
|
{
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
//Check if MQTT Connected, otherwise it will crash the 8266
|
//Check if MQTT Connected, otherwise it will crash the 8266
|
||||||
if (WLED_MQTT_CONNECTED) {
|
if (WLED_MQTT_CONNECTED) {
|
||||||
char subuf[64];
|
char subuf[64];
|
||||||
@@ -166,11 +167,13 @@ private:
|
|||||||
strcat_P(subuf, PSTR("/motion"));
|
strcat_P(subuf, PSTR("/motion"));
|
||||||
mqtt->publish(subuf, 0, false, state);
|
mqtt->publish(subuf, 0, false, state);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create an MQTT Binary Sensor for Home Assistant Discovery purposes, this includes a pointer to the topic that is published to in the Loop.
|
// Create an MQTT Binary Sensor for Home Assistant Discovery purposes, this includes a pointer to the topic that is published to in the Loop.
|
||||||
void publishHomeAssistantAutodiscovery()
|
void publishHomeAssistantAutodiscovery()
|
||||||
{
|
{
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
if (WLED_MQTT_CONNECTED) {
|
if (WLED_MQTT_CONNECTED) {
|
||||||
StaticJsonDocument<600> doc;
|
StaticJsonDocument<600> doc;
|
||||||
char uid[24], json_str[1024], buf[128];
|
char uid[24], json_str[1024], buf[128];
|
||||||
@@ -200,6 +203,7 @@ private:
|
|||||||
|
|
||||||
mqtt->publish(buf, 0, true, json_str, payload_size); // do we really need to retain?
|
mqtt->publish(buf, 0, true, json_str, payload_size); // do we really need to retain?
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -109,6 +109,7 @@ public:
|
|||||||
{
|
{
|
||||||
lastLDRValue = currentLDRValue;
|
lastLDRValue = currentLDRValue;
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
if (WLED_MQTT_CONNECTED)
|
if (WLED_MQTT_CONNECTED)
|
||||||
{
|
{
|
||||||
char subuf[45];
|
char subuf[45];
|
||||||
@@ -121,6 +122,7 @@ public:
|
|||||||
DEBUG_PRINTLN("Missing MQTT connection. Not publishing data");
|
DEBUG_PRINTLN("Missing MQTT connection. Not publishing data");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t getLastLDRValue()
|
uint16_t getLastLDRValue()
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
#ifndef WLED_ENABLE_MQTT
|
||||||
|
#error "This user mod requires MQTT to be enabled."
|
||||||
|
#endif
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
// this is remixed from usermod_v2_SensorsToMqtt.h (sensors_to_mqtt usermod)
|
// this is remixed from usermod_v2_SensorsToMqtt.h (sensors_to_mqtt usermod)
|
||||||
|
|||||||
@@ -134,6 +134,7 @@ class UsermodTemperature : public Usermod {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
void publishHomeAssistantAutodiscovery() {
|
void publishHomeAssistantAutodiscovery() {
|
||||||
if (!WLED_MQTT_CONNECTED) return;
|
if (!WLED_MQTT_CONNECTED) return;
|
||||||
|
|
||||||
@@ -155,6 +156,7 @@ class UsermodTemperature : public Usermod {
|
|||||||
mqtt->publish(buf, 0, true, json_str, payload_size);
|
mqtt->publish(buf, 0, true, json_str, payload_size);
|
||||||
HApublished = true;
|
HApublished = true;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@@ -213,6 +215,7 @@ class UsermodTemperature : public Usermod {
|
|||||||
}
|
}
|
||||||
errorCount = 0;
|
errorCount = 0;
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
if (WLED_MQTT_CONNECTED) {
|
if (WLED_MQTT_CONNECTED) {
|
||||||
char subuf[64];
|
char subuf[64];
|
||||||
strcpy(subuf, mqttDeviceTopic);
|
strcpy(subuf, mqttDeviceTopic);
|
||||||
@@ -228,6 +231,7 @@ class UsermodTemperature : public Usermod {
|
|||||||
// publish something else to indicate status?
|
// publish something else to indicate status?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,6 +241,7 @@ class UsermodTemperature : public Usermod {
|
|||||||
*/
|
*/
|
||||||
//void connected() {}
|
//void connected() {}
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
/**
|
/**
|
||||||
* subscribe to MQTT topic if needed
|
* subscribe to MQTT topic if needed
|
||||||
*/
|
*/
|
||||||
@@ -247,6 +252,7 @@ class UsermodTemperature : public Usermod {
|
|||||||
publishHomeAssistantAutodiscovery();
|
publishHomeAssistantAutodiscovery();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* API calls te enable data exchange between WLED modules
|
* API calls te enable data exchange between WLED modules
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ void userLoop() {
|
|||||||
if (temptimer - lastMeasure > 60000)
|
if (temptimer - lastMeasure > 60000)
|
||||||
{
|
{
|
||||||
lastMeasure = temptimer;
|
lastMeasure = temptimer;
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
//Check if MQTT Connected, otherwise it will crash the 8266
|
//Check if MQTT Connected, otherwise it will crash the 8266
|
||||||
if (mqtt != nullptr)
|
if (mqtt != nullptr)
|
||||||
{
|
{
|
||||||
@@ -116,6 +117,7 @@ void userLoop() {
|
|||||||
t += "/temperature";
|
t += "/temperature";
|
||||||
mqtt->publish(t.c_str(), 0, true, String(board_temperature).c_str());
|
mqtt->publish(t.c_str(), 0, true, String(board_temperature).c_str());
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if we time interval for redrawing passes.
|
// Check if we time interval for redrawing passes.
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ void userLoop() {
|
|||||||
{
|
{
|
||||||
lastMeasure = tempTimer;
|
lastMeasure = tempTimer;
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
// Check if MQTT Connected, otherwise it will crash the 8266
|
// Check if MQTT Connected, otherwise it will crash the 8266
|
||||||
if (mqtt != nullptr)
|
if (mqtt != nullptr)
|
||||||
{
|
{
|
||||||
@@ -122,6 +123,7 @@ void userLoop() {
|
|||||||
h += "/humidity";
|
h += "/humidity";
|
||||||
mqtt->publish(h.c_str(), 0, true, String(board_humidity).c_str());
|
mqtt->publish(h.c_str(), 0, true, String(board_humidity).c_str());
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if we time interval for redrawing passes.
|
// Check if we time interval for redrawing passes.
|
||||||
|
|||||||
@@ -219,6 +219,7 @@ class BobLightUsermod : public Usermod {
|
|||||||
|
|
||||||
void enable(bool en) { enabled = en; }
|
void enable(bool en) { enabled = en; }
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
/**
|
/**
|
||||||
* handling of MQTT message
|
* handling of MQTT message
|
||||||
* topic only contains stripped topic (part after /wled/MAC)
|
* topic only contains stripped topic (part after /wled/MAC)
|
||||||
@@ -249,6 +250,7 @@ class BobLightUsermod : public Usermod {
|
|||||||
// mqtt->subscribe(subuf, 0);
|
// mqtt->subscribe(subuf, 0);
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void addToJsonInfo(JsonObject& root)
|
void addToJsonInfo(JsonObject& root)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -66,12 +66,14 @@ class MultiRelay : public Usermod {
|
|||||||
static const char _HAautodiscovery[];
|
static const char _HAautodiscovery[];
|
||||||
|
|
||||||
void publishMqtt(int relay) {
|
void publishMqtt(int relay) {
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
//Check if MQTT Connected, otherwise it will crash the 8266
|
//Check if MQTT Connected, otherwise it will crash the 8266
|
||||||
if (WLED_MQTT_CONNECTED){
|
if (WLED_MQTT_CONNECTED){
|
||||||
char subuf[64];
|
char subuf[64];
|
||||||
sprintf_P(subuf, PSTR("%s/relay/%d"), mqttDeviceTopic, relay);
|
sprintf_P(subuf, PSTR("%s/relay/%d"), mqttDeviceTopic, relay);
|
||||||
mqtt->publish(subuf, 0, false, _relay[relay].state ? "on" : "off");
|
mqtt->publish(subuf, 0, false, _relay[relay].state ? "on" : "off");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -232,6 +234,7 @@ class MultiRelay : public Usermod {
|
|||||||
|
|
||||||
//Functions called by WLED
|
//Functions called by WLED
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
/**
|
/**
|
||||||
* handling of MQTT message
|
* handling of MQTT message
|
||||||
* topic only contains stripped topic (part after /wled/MAC)
|
* topic only contains stripped topic (part after /wled/MAC)
|
||||||
@@ -313,6 +316,7 @@ class MultiRelay : public Usermod {
|
|||||||
mqtt->publish(buf, 0, true, json_str, payload_size);
|
mqtt->publish(buf, 0, true, json_str, payload_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* setup() is called once at boot. WiFi is not yet connected at this point.
|
* setup() is called once at boot. WiFi is not yet connected at this point.
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
#ifndef WLED_ENABLE_MQTT
|
||||||
|
#error "This user mod requires MQTT to be enabled."
|
||||||
|
#endif
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "wled.h"
|
#include "wled.h"
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
#ifndef WLED_ENABLE_MQTT
|
||||||
|
#error "This user mod requires MQTT to be enabled."
|
||||||
|
#endif
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "wled.h"
|
#include "wled.h"
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
#ifndef WLED_ENABLE_MQTT
|
||||||
|
#error "This user mod requires MQTT to be enabled."
|
||||||
|
#endif
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "wled.h"
|
#include "wled.h"
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
#ifndef WLED_ENABLE_MQTT
|
||||||
|
#error "This user mod requires MQTT to be enabled."
|
||||||
|
#endif
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "SHT85.h"
|
#include "SHT85.h"
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
#ifndef WLED_ENABLE_MQTT
|
||||||
|
#error "This user mod requires MQTT to be enabled."
|
||||||
|
#endif
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "wled.h"
|
#include "wled.h"
|
||||||
|
|||||||
@@ -4837,7 +4837,7 @@ static const char _data_FX_MODE_2DFRIZZLES[] PROGMEM = "Frizzles@X frequency,Y f
|
|||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
typedef struct ColorCount {
|
typedef struct ColorCount {
|
||||||
CRGB color;
|
CRGB color;
|
||||||
int8_t count;
|
int8_t count;
|
||||||
} colorCount;
|
} colorCount;
|
||||||
|
|
||||||
uint16_t mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired by https://natureofcode.com/book/chapter-7-cellular-automata/ and https://github.com/DougHaber/nlife-color
|
uint16_t mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired by https://natureofcode.com/book/chapter-7-cellular-automata/ and https://github.com/DougHaber/nlife-color
|
||||||
@@ -4846,20 +4846,18 @@ uint16_t mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired by https:
|
|||||||
const uint16_t cols = SEGMENT.virtualWidth();
|
const uint16_t cols = SEGMENT.virtualWidth();
|
||||||
const uint16_t rows = SEGMENT.virtualHeight();
|
const uint16_t rows = SEGMENT.virtualHeight();
|
||||||
const uint16_t dataSize = sizeof(CRGB) * SEGMENT.length(); // using width*height prevents reallocation if mirroring is enabled
|
const uint16_t dataSize = sizeof(CRGB) * SEGMENT.length(); // using width*height prevents reallocation if mirroring is enabled
|
||||||
|
const uint16_t crcBufferLen = (SEGMENT.width() + SEGMENT.height())*2; // roughly sqrt(2)/2 for better repetition detection (Ewowi)
|
||||||
|
|
||||||
//array of patterns. Needed to identify repeating patterns. A pattern is one iteration of leds, without the color (on/off only)
|
if (!SEGENV.allocateData(dataSize + sizeof(uint16_t)*crcBufferLen)) return mode_static(); //allocation failed
|
||||||
const int patternsSize = (cols + rows) * 2; //seems to be a good value to catch also repetition in moving patterns
|
|
||||||
if (!SEGENV.allocateData(dataSize + sizeof(unsigned long) + sizeof(uint16_t) * patternsSize)) return mode_static(); //allocation failed
|
|
||||||
CRGB *prevLeds = reinterpret_cast<CRGB*>(SEGENV.data);
|
CRGB *prevLeds = reinterpret_cast<CRGB*>(SEGENV.data);
|
||||||
unsigned long *resetMillis = reinterpret_cast<unsigned long*>(SEGENV.data + dataSize); // triggers reset
|
uint16_t *crcBuffer = reinterpret_cast<uint16_t*>(SEGENV.data + dataSize);
|
||||||
uint16_t* patterns = reinterpret_cast<uint16_t*>(SEGENV.data + dataSize + sizeof(unsigned long)); //WLEDMM we need patterns!!!
|
|
||||||
|
|
||||||
CRGB backgroundColor = SEGCOLOR(1);
|
CRGB backgroundColor = SEGCOLOR(1);
|
||||||
|
|
||||||
if (SEGENV.call == 0 || strip.now - *resetMillis > 5000) {
|
if (SEGENV.call == 0 || strip.now - SEGMENT.step > 5000) {
|
||||||
*resetMillis = strip.now;
|
SEGENV.step = strip.now;
|
||||||
|
SEGENV.aux0 = 0;
|
||||||
random16_set_seed(strip.now); //seed the random generator
|
random16_set_seed(millis()>>2); //seed the random generator
|
||||||
|
|
||||||
//give the leds random state and colors (based on intensity, colors from palette or all posible colors are chosen)
|
//give the leds random state and colors (based on intensity, colors from palette or all posible colors are chosen)
|
||||||
for (int x = 0; x < cols; x++) for (int y = 0; y < rows; y++) {
|
for (int x = 0; x < cols; x++) for (int y = 0; y < rows; y++) {
|
||||||
@@ -4867,18 +4865,18 @@ uint16_t mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired by https:
|
|||||||
if (state == 0)
|
if (state == 0)
|
||||||
SEGMENT.setPixelColorXY(x,y, backgroundColor);
|
SEGMENT.setPixelColorXY(x,y, backgroundColor);
|
||||||
else
|
else
|
||||||
SEGMENT.setPixelColorXY(x,y, !SEGMENT.check1?SEGMENT.color_from_palette(random8(), false, PALETTE_SOLID_WRAP, 0): random(32)); //WLEDMM support all colors
|
SEGMENT.setPixelColorXY(x,y, !SEGMENT.check1?SEGMENT.color_from_palette(random8(), false, PALETTE_SOLID_WRAP, 0): random16()*random16()); //WLEDMM support all colors
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int y = 0; y < rows; y++) for (int x = 0; x < cols; x++) prevLeds[XY(x,y)] = CRGB::Black;
|
for (int y = 0; y < rows; y++) for (int x = 0; x < cols; x++) prevLeds[XY(x,y)] = CRGB::Black;
|
||||||
|
memset(crcBuffer, 0, sizeof(uint16_t)*crcBufferLen);
|
||||||
//WLEDMM back to 0.13 style!!!
|
} else if (strip.now - SEGENV.step < FRAMETIME_FIXED * map(SEGMENT.speed,0,255,64,4)) {
|
||||||
//init patterns
|
// update only when appropriate time passes (in 42 FPS slots)
|
||||||
SEGENV.aux0 = 0; //ewowi20210629: pka static! patternsize: round robin index of next slot to add pattern
|
return FRAMETIME;
|
||||||
for (int i=0; i<patternsSize; i++) patterns[i] = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//copy previous leds (save previous generation)
|
//copy previous leds (save previous generation)
|
||||||
|
//NOTE: using lossy getPixelColor() is a benefit as endlessly repeating patterns will eventually fade out causing a reset
|
||||||
for (int x = 0; x < cols; x++) for (int y = 0; y < rows; y++) prevLeds[XY(x,y)] = SEGMENT.getPixelColorXY(x,y);
|
for (int x = 0; x < cols; x++) for (int y = 0; y < rows; y++) prevLeds[XY(x,y)] = SEGMENT.getPixelColorXY(x,y);
|
||||||
|
|
||||||
//calculate new leds
|
//calculate new leds
|
||||||
@@ -4912,7 +4910,7 @@ uint16_t mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired by https:
|
|||||||
if ((col != bgc) && (neighbors < 2)) SEGMENT.setPixelColorXY(x,y, bgc); // Loneliness
|
if ((col != bgc) && (neighbors < 2)) SEGMENT.setPixelColorXY(x,y, bgc); // Loneliness
|
||||||
else if ((col != bgc) && (neighbors > 3)) SEGMENT.setPixelColorXY(x,y, bgc); // Overpopulation
|
else if ((col != bgc) && (neighbors > 3)) SEGMENT.setPixelColorXY(x,y, bgc); // Overpopulation
|
||||||
else if ((col == bgc) && (neighbors == 3)) { // Reproduction
|
else if ((col == bgc) && (neighbors == 3)) { // Reproduction
|
||||||
//find dominantcolor and assign to cell
|
//find dominant color and assign to cell
|
||||||
colorCount dominantColorCount = {backgroundColor, 0};
|
colorCount dominantColorCount = {backgroundColor, 0};
|
||||||
for (int i=0; i<9 && colorsCount[i].count != 0; i++)
|
for (int i=0; i<9 && colorsCount[i].count != 0; i++)
|
||||||
if (colorsCount[i].count > dominantColorCount.count) dominantColorCount = colorsCount[i];
|
if (colorsCount[i].count > dominantColorCount.count) dominantColorCount = colorsCount[i];
|
||||||
@@ -4922,28 +4920,17 @@ uint16_t mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired by https:
|
|||||||
} //x,y
|
} //x,y
|
||||||
|
|
||||||
// calculate CRC16 of leds
|
// calculate CRC16 of leds
|
||||||
uint16_t crc = crc16((const unsigned char*)prevLeds, dataSize-1); //ewowi: prevLeds instead of leds work as well, tbd: compare more patterns, see SR!
|
uint16_t crc = crc16((const unsigned char*)prevLeds, dataSize);
|
||||||
|
// check if we had same CRC and reset if needed
|
||||||
// WLEDMM: this is work in progress in case we are not happy with crc16
|
|
||||||
// byte index=0;
|
|
||||||
// for (int x = 0; x < cols; x+=MAX(cols/8,1)) for (int y = 0; y < rows; y+=MAX(rows/8,1)) {
|
|
||||||
// if (SEGMENT.getPixelColorXY(x,y) != (uint32_t)backgroundColor) crc = crc|crc << index;
|
|
||||||
// index ++;
|
|
||||||
// }
|
|
||||||
|
|
||||||
//WLEDMM back to 0.13 style!!!
|
|
||||||
//check if repetition of patterns occurs
|
|
||||||
bool repetition = false;
|
bool repetition = false;
|
||||||
for (int i=0; i<patternsSize && !repetition; i++)
|
for (int i=0; i<crcBufferLen && !repetition; i++) repetition = (crc == crcBuffer[i]); // (Ewowi)
|
||||||
repetition = patterns[(SEGENV.aux0 - 1 - i + patternsSize)%patternsSize] == crc;
|
// same CRC would mean image did not change or was repeating itself
|
||||||
|
if (!repetition) SEGENV.step = strip.now; //if no repetition avoid reset
|
||||||
|
// remember CRCs across frames
|
||||||
|
crcBuffer[SEGENV.aux0] = crc;
|
||||||
|
++SEGENV.aux0 %= crcBufferLen;
|
||||||
|
|
||||||
//add current pattern to array and increase index (round robin)
|
return FRAMETIME;
|
||||||
patterns[SEGENV.aux0] = crc;
|
|
||||||
SEGENV.aux0 = (SEGENV.aux0+1)%patternsSize;
|
|
||||||
|
|
||||||
if (!repetition) *resetMillis = strip.now; //if no repetition avoid reset
|
|
||||||
|
|
||||||
return FRAMETIME_FIXED * (128-(SEGMENT.speed>>1)); // update only when appropriate time passes (in 42 FPS slots)
|
|
||||||
} // mode_2Dgameoflife()
|
} // mode_2Dgameoflife()
|
||||||
static const char _data_FX_MODE_2DGAMEOFLIFE[] PROGMEM = "Game Of Life@!,,,,,All colors=0;!,!;!;2"; //WLEDMM support all colors
|
static const char _data_FX_MODE_2DGAMEOFLIFE[] PROGMEM = "Game Of Life@!,,,,,All colors=0;!,!;!;2"; //WLEDMM support all colors
|
||||||
|
|
||||||
|
|||||||
@@ -24,12 +24,14 @@ void shortPressAction(uint8_t b)
|
|||||||
applyPreset(macroButton[b], CALL_MODE_BUTTON_PRESET);
|
applyPreset(macroButton[b], CALL_MODE_BUTTON_PRESET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
// publish MQTT message
|
// publish MQTT message
|
||||||
if (buttonPublishMqtt && WLED_MQTT_CONNECTED) {
|
if (buttonPublishMqtt && WLED_MQTT_CONNECTED) {
|
||||||
char subuf[64];
|
char subuf[64];
|
||||||
sprintf_P(subuf, _mqtt_topic_button, mqttDeviceTopic, (int)b);
|
sprintf_P(subuf, _mqtt_topic_button, mqttDeviceTopic, (int)b);
|
||||||
mqtt->publish(subuf, 0, false, "short");
|
mqtt->publish(subuf, 0, false, "short");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void longPressAction(uint8_t b)
|
void longPressAction(uint8_t b)
|
||||||
@@ -43,12 +45,14 @@ void longPressAction(uint8_t b)
|
|||||||
applyPreset(macroLongPress[b], CALL_MODE_BUTTON_PRESET);
|
applyPreset(macroLongPress[b], CALL_MODE_BUTTON_PRESET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
// publish MQTT message
|
// publish MQTT message
|
||||||
if (buttonPublishMqtt && WLED_MQTT_CONNECTED) {
|
if (buttonPublishMqtt && WLED_MQTT_CONNECTED) {
|
||||||
char subuf[64];
|
char subuf[64];
|
||||||
sprintf_P(subuf, _mqtt_topic_button, mqttDeviceTopic, (int)b);
|
sprintf_P(subuf, _mqtt_topic_button, mqttDeviceTopic, (int)b);
|
||||||
mqtt->publish(subuf, 0, false, "long");
|
mqtt->publish(subuf, 0, false, "long");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void doublePressAction(uint8_t b)
|
void doublePressAction(uint8_t b)
|
||||||
@@ -62,12 +66,14 @@ void doublePressAction(uint8_t b)
|
|||||||
applyPreset(macroDoublePress[b], CALL_MODE_BUTTON_PRESET);
|
applyPreset(macroDoublePress[b], CALL_MODE_BUTTON_PRESET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
// publish MQTT message
|
// publish MQTT message
|
||||||
if (buttonPublishMqtt && WLED_MQTT_CONNECTED) {
|
if (buttonPublishMqtt && WLED_MQTT_CONNECTED) {
|
||||||
char subuf[64];
|
char subuf[64];
|
||||||
sprintf_P(subuf, _mqtt_topic_button, mqttDeviceTopic, (int)b);
|
sprintf_P(subuf, _mqtt_topic_button, mqttDeviceTopic, (int)b);
|
||||||
mqtt->publish(subuf, 0, false, "double");
|
mqtt->publish(subuf, 0, false, "double");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isButtonPressed(uint8_t i)
|
bool isButtonPressed(uint8_t i)
|
||||||
@@ -119,6 +125,7 @@ void handleSwitch(uint8_t b)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
// publish MQTT message
|
// publish MQTT message
|
||||||
if (buttonPublishMqtt && WLED_MQTT_CONNECTED) {
|
if (buttonPublishMqtt && WLED_MQTT_CONNECTED) {
|
||||||
char subuf[64];
|
char subuf[64];
|
||||||
@@ -126,6 +133,7 @@ void handleSwitch(uint8_t b)
|
|||||||
else sprintf_P(subuf, _mqtt_topic_button, mqttDeviceTopic, (int)b);
|
else sprintf_P(subuf, _mqtt_topic_button, mqttDeviceTopic, (int)b);
|
||||||
mqtt->publish(subuf, 0, false, !buttonPressedBefore[b] ? "off" : "on");
|
mqtt->publish(subuf, 0, false, !buttonPressedBefore[b] ? "off" : "on");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
buttonLongPressed[b] = buttonPressedBefore[b]; //save the last "long term" switch state
|
buttonLongPressed[b] = buttonPressedBefore[b]; //save the last "long term" switch state
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -408,6 +408,8 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
|
|||||||
CJSON(e131SkipOutOfSequence, if_live_dmx[F("seqskip")]);
|
CJSON(e131SkipOutOfSequence, if_live_dmx[F("seqskip")]);
|
||||||
CJSON(DMXAddress, if_live_dmx[F("addr")]);
|
CJSON(DMXAddress, if_live_dmx[F("addr")]);
|
||||||
if (!DMXAddress || DMXAddress > 510) DMXAddress = 1;
|
if (!DMXAddress || DMXAddress > 510) DMXAddress = 1;
|
||||||
|
CJSON(DMXSegmentSpacing, if_live_dmx[F("dss")]);
|
||||||
|
if (DMXSegmentSpacing > 150) DMXSegmentSpacing = 0;
|
||||||
CJSON(DMXMode, if_live_dmx["mode"]);
|
CJSON(DMXMode, if_live_dmx["mode"]);
|
||||||
|
|
||||||
tdd = if_live[F("timeout")] | -1;
|
tdd = if_live[F("timeout")] | -1;
|
||||||
@@ -870,6 +872,7 @@ void serializeConfig() {
|
|||||||
if_live_dmx[F("uni")] = e131Universe;
|
if_live_dmx[F("uni")] = e131Universe;
|
||||||
if_live_dmx[F("seqskip")] = e131SkipOutOfSequence;
|
if_live_dmx[F("seqskip")] = e131SkipOutOfSequence;
|
||||||
if_live_dmx[F("addr")] = DMXAddress;
|
if_live_dmx[F("addr")] = DMXAddress;
|
||||||
|
if_live_dmx[F("dss")] = DMXSegmentSpacing;
|
||||||
if_live_dmx["mode"] = DMXMode;
|
if_live_dmx["mode"] = DMXMode;
|
||||||
|
|
||||||
if_live[F("timeout")] = realtimeTimeoutMs / 100;
|
if_live[F("timeout")] = realtimeTimeoutMs / 100;
|
||||||
|
|||||||
@@ -173,10 +173,14 @@
|
|||||||
#define DMX_MODE_DISABLED 0 //not used
|
#define DMX_MODE_DISABLED 0 //not used
|
||||||
#define DMX_MODE_SINGLE_RGB 1 //all LEDs same RGB color (3 channels)
|
#define DMX_MODE_SINGLE_RGB 1 //all LEDs same RGB color (3 channels)
|
||||||
#define DMX_MODE_SINGLE_DRGB 2 //all LEDs same RGB color and master dimmer (4 channels)
|
#define DMX_MODE_SINGLE_DRGB 2 //all LEDs same RGB color and master dimmer (4 channels)
|
||||||
#define DMX_MODE_EFFECT 3 //trigger standalone effects of WLED (11 channels)
|
#define DMX_MODE_EFFECT 3 //trigger standalone effects of WLED (15 channels)
|
||||||
|
#define DMX_MODE_EFFECT_W 7 //trigger standalone effects of WLED (18 channels)
|
||||||
#define DMX_MODE_MULTIPLE_RGB 4 //every LED is addressed with its own RGB (ledCount * 3 channels)
|
#define DMX_MODE_MULTIPLE_RGB 4 //every LED is addressed with its own RGB (ledCount * 3 channels)
|
||||||
#define DMX_MODE_MULTIPLE_DRGB 5 //every LED is addressed with its own RGB and share a master dimmer (ledCount * 3 + 1 channels)
|
#define DMX_MODE_MULTIPLE_DRGB 5 //every LED is addressed with its own RGB and share a master dimmer (ledCount * 3 + 1 channels)
|
||||||
#define DMX_MODE_MULTIPLE_RGBW 6 //every LED is addressed with its own RGBW (ledCount * 4 channels)
|
#define DMX_MODE_MULTIPLE_RGBW 6 //every LED is addressed with its own RGBW (ledCount * 4 channels)
|
||||||
|
#define DMX_MODE_EFFECT_SEGMENT 8 //trigger standalone effects of WLED (15 channels per segement)
|
||||||
|
#define DMX_MODE_EFFECT_SEGMENT_W 9 //trigger standalone effects of WLED (18 channels per segement)
|
||||||
|
#define DMX_MODE_PRESET 10 //apply presets (1 channel)
|
||||||
|
|
||||||
//Light capability byte (unused) 0bRCCCTTTT
|
//Light capability byte (unused) 0bRCCCTTTT
|
||||||
//bits 0/1/2/3: specifies a type of LED driver. A single "driver" may have different chip models but must have the same protocol/behavior
|
//bits 0/1/2/3: specifies a type of LED driver. A single "driver" may have different chip models but must have the same protocol/behavior
|
||||||
|
|||||||
@@ -2551,7 +2551,8 @@ function rSegs()
|
|||||||
//WLEDMM generate presets.json file
|
//WLEDMM generate presets.json file
|
||||||
function genPresets()
|
function genPresets()
|
||||||
{
|
{
|
||||||
var result = '{"0":{}';
|
var result = "";
|
||||||
|
var sep = "{";
|
||||||
|
|
||||||
var effects = eJson;
|
var effects = eJson;
|
||||||
var playlistPS = JSON.parse("{}");
|
var playlistPS = JSON.parse("{}");
|
||||||
@@ -2603,7 +2604,8 @@ function genPresets()
|
|||||||
if (!defaultString.includes("rY")) defaultString += ',"rY":false';
|
if (!defaultString.includes("rY")) defaultString += ',"rY":false';
|
||||||
if (!defaultString.includes("mY")) defaultString += ',"mY":false';
|
if (!defaultString.includes("mY")) defaultString += ',"mY":false';
|
||||||
}
|
}
|
||||||
result += `\n,"${ef.id}":{"n":"${ef.name}","mainseg":0,"seg":[{"id":0,"fx":${ef.id}${defaultString}}]}`;
|
result += `${sep}"${ef.id}":{"n":"${ef.name}","mainseg":0,"seg":[{"id":0,"fx":${ef.id}${defaultString}}]}`;
|
||||||
|
sep = "\n,";
|
||||||
addToPlaylist(m, ef.id);
|
addToPlaylist(m, ef.id);
|
||||||
addToPlaylist("All", ef.id);
|
addToPlaylist("All", ef.id);
|
||||||
if (m.includes("1")) addToPlaylist("All1", ef.id);
|
if (m.includes("1")) addToPlaylist("All1", ef.id);
|
||||||
|
|||||||
@@ -96,11 +96,11 @@
|
|||||||
<button type=submit id="b" onclick="window.location='/'">Back</button>
|
<button type=submit id="b" onclick="window.location='/'">Back</button>
|
||||||
<button type="submit" onclick="window.location='./settings/wifi'">WiFi Setup</button>
|
<button type="submit" onclick="window.location='./settings/wifi'">WiFi Setup</button>
|
||||||
<button type="submit" onclick="window.location='./settings/leds'">LED Preferences</button>
|
<button type="submit" onclick="window.location='./settings/leds'">LED Preferences</button>
|
||||||
<button type="submit" onclick="window.location='./settings/2D'">2D Configuration</button>
|
<button id="2dbtn" style="display:none;" type="submit" onclick="window.location='./settings/2D'">2D Configuration</button>
|
||||||
<div id="configMenu">Loading...</div>
|
<div id="configMenu">Loading...</div>
|
||||||
<button type="submit" onclick="window.location='./settings/um'">Usermods (pins)</button> <!--WLEDMM: Move below UMs-->
|
<button type="submit" onclick="window.location='./settings/um'">Usermods (pins)</button> <!--WLEDMM: Move below UMs-->
|
||||||
<button type="submit" onclick="window.location='./settings/ui'">User Interface</button>
|
<button type="submit" onclick="window.location='./settings/ui'">User Interface</button>
|
||||||
<button id="dmxbtn" style="display: none;" type="submit" onclick="window.location='./settings/dmx'">DMX Output</button>
|
<button id="dmxbtn" style="display:none;" type="submit" onclick="window.location='./settings/dmx'">DMX Output</button>
|
||||||
<button type="submit" onclick="window.location='./settings/sync'">Sync Interfaces</button>
|
<button type="submit" onclick="window.location='./settings/sync'">Sync Interfaces</button>
|
||||||
<button type="submit" onclick="window.location='./settings/time'">Time & Macros</button>
|
<button type="submit" onclick="window.location='./settings/time'">Time & Macros</button>
|
||||||
<button type="submit" onclick="window.location='./settings/sec'">Security & Updates</button>
|
<button type="submit" onclick="window.location='./settings/sec'">Security & Updates</button>
|
||||||
|
|||||||
@@ -150,15 +150,20 @@ Start universe: <input name="EU" type="number" min="0" max="63999" required><br>
|
|||||||
<i>Reboot required.</i> Check out <a href="https://github.com/LedFx/LedFx" target="_blank">LedFx</a>!<br>
|
<i>Reboot required.</i> Check out <a href="https://github.com/LedFx/LedFx" target="_blank">LedFx</a>!<br>
|
||||||
Skip out-of-sequence packets: <input type="checkbox" name="ES"><br>
|
Skip out-of-sequence packets: <input type="checkbox" name="ES"><br>
|
||||||
DMX start address: <input name="DA" type="number" min="1" max="510" required><br>
|
DMX start address: <input name="DA" type="number" min="1" max="510" required><br>
|
||||||
|
DMX segment spacing: <input name="XX" type="number" min="0" max="150" required><br>
|
||||||
DMX mode:
|
DMX mode:
|
||||||
<select name=DM>
|
<select name=DM>
|
||||||
<option value=0>Disabled</option>
|
<option value=0>Disabled</option>
|
||||||
<option value=1>Single RGB</option>
|
<option value=1>Single RGB</option>
|
||||||
<option value=2>Single DRGB</option>
|
<option value=2>Single DRGB</option>
|
||||||
<option value=3>Effect</option>
|
<option value=3>Effect</option>
|
||||||
|
<option value=7>Effect + White</option>
|
||||||
|
<option value=8>Effect Segment</option>
|
||||||
|
<option value=9>Effect Segment + White</option>
|
||||||
<option value=4>Multi RGB</option>
|
<option value=4>Multi RGB</option>
|
||||||
<option value=5>Dimmer + Multi RGB</option>
|
<option value=5>Dimmer + Multi RGB</option>
|
||||||
<option value=6>Multi RGBW</option>
|
<option value=6>Multi RGBW</option>
|
||||||
|
<option value=10>Preset</option>
|
||||||
</select><br>
|
</select><br>
|
||||||
<a href="https://mm.kno.wled.ge/interfaces/e1.31-dmx/" target="_blank">E1.31 info</a><br>
|
<a href="https://mm.kno.wled.ge/interfaces/e1.31-dmx/" target="_blank">E1.31 info</a><br>
|
||||||
Timeout: <input name="ET" type="number" min="1" max="65000" required> ms<br>
|
Timeout: <input name="ET" type="number" min="1" max="65000" required> ms<br>
|
||||||
|
|||||||
105
wled00/e131.cpp
105
wled00/e131.cpp
@@ -132,7 +132,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
|
|||||||
return; // nothing to do
|
return; // nothing to do
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DMX_MODE_SINGLE_RGB: // RGB only
|
case DMX_MODE_SINGLE_RGB: // 3 channel: [R,G,B]
|
||||||
if (uni != e131Universe) return;
|
if (uni != e131Universe) return;
|
||||||
if (availDMXLen < 3) return;
|
if (availDMXLen < 3) return;
|
||||||
|
|
||||||
@@ -145,7 +145,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
|
|||||||
setRealtimePixel(i, e131_data[dataOffset+0], e131_data[dataOffset+1], e131_data[dataOffset+2], wChannel);
|
setRealtimePixel(i, e131_data[dataOffset+0], e131_data[dataOffset+1], e131_data[dataOffset+2], wChannel);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DMX_MODE_SINGLE_DRGB: // Dimmer + RGB
|
case DMX_MODE_SINGLE_DRGB: // 4 channel: [Dimmer,R,G,B]
|
||||||
if (uni != e131Universe) return;
|
if (uni != e131Universe) return;
|
||||||
if (availDMXLen < 4) return;
|
if (availDMXLen < 4) return;
|
||||||
|
|
||||||
@@ -162,38 +162,77 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
|
|||||||
setRealtimePixel(i, e131_data[dataOffset+1], e131_data[dataOffset+2], e131_data[dataOffset+3], wChannel);
|
setRealtimePixel(i, e131_data[dataOffset+1], e131_data[dataOffset+2], e131_data[dataOffset+3], wChannel);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DMX_MODE_EFFECT: // Length 1: Apply Preset ID, length 11-13: apply effect config
|
case DMX_MODE_PRESET: // 2 channel: [Dimmer,Preset]
|
||||||
if (uni != e131Universe) return;
|
if (uni != e131Universe || availDMXLen < 2) return;
|
||||||
if (availDMXLen < 11) {
|
applyPreset(e131_data[dataOffset+1], CALL_MODE_NOTIFICATION);
|
||||||
if (availDMXLen > 1) return;
|
if (bri != e131_data[dataOffset]) {
|
||||||
applyPreset(e131_data[dataOffset+0], CALL_MODE_NOTIFICATION);
|
bri = e131_data[dataOffset];
|
||||||
return;
|
strip.setBrightness(bri, true);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
if (bri != e131_data[dataOffset+0]) {
|
|
||||||
bri = e131_data[dataOffset+0];
|
|
||||||
}
|
|
||||||
if (e131_data[dataOffset+1] < strip.getModeCount())
|
|
||||||
effectCurrent = e131_data[dataOffset+ 1];
|
|
||||||
effectSpeed = e131_data[dataOffset+ 2]; // flickers
|
|
||||||
effectIntensity = e131_data[dataOffset+ 3];
|
|
||||||
effectPalette = e131_data[dataOffset+ 4];
|
|
||||||
col[0] = e131_data[dataOffset+ 5];
|
|
||||||
col[1] = e131_data[dataOffset+ 6];
|
|
||||||
col[2] = e131_data[dataOffset+ 7];
|
|
||||||
colSec[0] = e131_data[dataOffset+ 8];
|
|
||||||
colSec[1] = e131_data[dataOffset+ 9];
|
|
||||||
colSec[2] = e131_data[dataOffset+10];
|
|
||||||
if (availDMXLen > 11)
|
|
||||||
{
|
|
||||||
col[3] = e131_data[dataOffset+11]; //white
|
|
||||||
colSec[3] = e131_data[dataOffset+12];
|
|
||||||
}
|
|
||||||
transitionDelayTemp = 0; // act fast
|
|
||||||
colorUpdated(CALL_MODE_NOTIFICATION); // don't send UDP
|
|
||||||
return; // don't activate realtime live mode
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DMX_MODE_EFFECT: // 15 channels [bri,effectCurrent,effectSpeed,effectIntensity,effectPalette,effectOption,R,G,B,R2,G2,B2,R3,G3,B3]
|
||||||
|
case DMX_MODE_EFFECT_W: // 18 channels, same as above but with extra +3 white channels [..,W,W2,W3]
|
||||||
|
case DMX_MODE_EFFECT_SEGMENT: // 15 channels per segment;
|
||||||
|
case DMX_MODE_EFFECT_SEGMENT_W: // 18 Channels per segment;
|
||||||
|
{
|
||||||
|
if (uni != e131Universe) return;
|
||||||
|
bool isSegmentMode = DMXMode == DMX_MODE_EFFECT_SEGMENT || DMXMode == DMX_MODE_EFFECT_SEGMENT_W;
|
||||||
|
uint8_t dmxEffectChannels = (DMXMode == DMX_MODE_EFFECT || DMXMode == DMX_MODE_EFFECT_SEGMENT) ? 15 : 18;
|
||||||
|
for (uint8_t id = 0; id < strip.getSegmentsNum(); id++) {
|
||||||
|
Segment& seg = strip.getSegment(id);
|
||||||
|
if (isSegmentMode)
|
||||||
|
dataOffset = DMXAddress + id * (dmxEffectChannels + DMXSegmentSpacing);
|
||||||
|
else
|
||||||
|
dataOffset = DMXAddress;
|
||||||
|
// Modify address for Art-Net data
|
||||||
|
if (protocol == P_ARTNET && dataOffset > 0)
|
||||||
|
dataOffset--;
|
||||||
|
// Skip out of universe addresses
|
||||||
|
if (dataOffset > dmxChannels - dmxEffectChannels + 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (e131_data[dataOffset+1] < strip.getModeCount())
|
||||||
|
if (e131_data[dataOffset+1] != seg.mode) seg.setMode( e131_data[dataOffset+1]);
|
||||||
|
if (e131_data[dataOffset+2] != seg.speed) seg.speed = e131_data[dataOffset+2];
|
||||||
|
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);}
|
||||||
|
|
||||||
|
uint32_t colors[3];
|
||||||
|
byte whites[3] = {0,0,0};
|
||||||
|
if (dmxEffectChannels == 18) {
|
||||||
|
whites[0] = e131_data[dataOffset+15];
|
||||||
|
whites[1] = e131_data[dataOffset+16];
|
||||||
|
whites[2] = e131_data[dataOffset+17];
|
||||||
|
}
|
||||||
|
colors[0] = RGBW32(e131_data[dataOffset+ 6], e131_data[dataOffset+ 7], e131_data[dataOffset+ 8], whites[0]);
|
||||||
|
colors[1] = RGBW32(e131_data[dataOffset+ 9], e131_data[dataOffset+10], e131_data[dataOffset+11], whites[1]);
|
||||||
|
colors[2] = RGBW32(e131_data[dataOffset+12], e131_data[dataOffset+13], e131_data[dataOffset+14], whites[2]);
|
||||||
|
if (colors[0] != seg.colors[0]) seg.setColor(0, colors[0]);
|
||||||
|
if (colors[1] != seg.colors[1]) seg.setColor(1, colors[1]);
|
||||||
|
if (colors[2] != seg.colors[2]) seg.setColor(2, colors[2]);
|
||||||
|
|
||||||
|
// Set segment opacity or global brightness
|
||||||
|
if (isSegmentMode) {
|
||||||
|
if (e131_data[dataOffset] != seg.opacity) seg.setOpacity(e131_data[dataOffset]);
|
||||||
|
} else if ( id == strip.getSegmentsNum()-1 ) {
|
||||||
|
if (bri != e131_data[dataOffset]) {
|
||||||
|
bri = e131_data[dataOffset];
|
||||||
|
strip.setBrightness(bri, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case DMX_MODE_MULTIPLE_DRGB:
|
case DMX_MODE_MULTIPLE_DRGB:
|
||||||
case DMX_MODE_MULTIPLE_RGB:
|
case DMX_MODE_MULTIPLE_RGB:
|
||||||
case DMX_MODE_MULTIPLE_RGBW:
|
case DMX_MODE_MULTIPLE_RGBW:
|
||||||
@@ -279,7 +318,11 @@ void handleArtnetPollReply(IPAddress ipAddress) {
|
|||||||
|
|
||||||
case DMX_MODE_SINGLE_RGB:
|
case DMX_MODE_SINGLE_RGB:
|
||||||
case DMX_MODE_SINGLE_DRGB:
|
case DMX_MODE_SINGLE_DRGB:
|
||||||
|
case DMX_MODE_PRESET:
|
||||||
case DMX_MODE_EFFECT:
|
case DMX_MODE_EFFECT:
|
||||||
|
case DMX_MODE_EFFECT_W:
|
||||||
|
case DMX_MODE_EFFECT_SEGMENT:
|
||||||
|
case DMX_MODE_EFFECT_SEGMENT_W:
|
||||||
break; // 1 universe is enough
|
break; // 1 universe is enough
|
||||||
|
|
||||||
case DMX_MODE_MULTIPLE_DRGB:
|
case DMX_MODE_MULTIPLE_DRGB:
|
||||||
|
|||||||
@@ -1,18 +1,17 @@
|
|||||||
#ifndef WLED_FCN_DECLARE_H
|
#ifndef WLED_FCN_DECLARE_H
|
||||||
#define WLED_FCN_DECLARE_H
|
#define WLED_FCN_DECLARE_H
|
||||||
#include <Arduino.h>
|
|
||||||
#include "src/dependencies/espalexa/EspalexaDevice.h"
|
|
||||||
#include "src/dependencies/e131/ESPAsyncE131.h"
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* All globally accessible functions are declared here
|
* All globally accessible functions are declared here
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//alexa.cpp
|
//alexa.cpp
|
||||||
|
#ifndef WLED_DISABLE_ALEXA
|
||||||
void onAlexaChange(EspalexaDevice* dev);
|
void onAlexaChange(EspalexaDevice* dev);
|
||||||
void alexaInit();
|
void alexaInit();
|
||||||
void handleAlexa();
|
void handleAlexa();
|
||||||
void onAlexaChange(EspalexaDevice* dev);
|
void onAlexaChange(EspalexaDevice* dev);
|
||||||
|
#endif
|
||||||
|
|
||||||
//blynk.cpp
|
//blynk.cpp
|
||||||
#ifndef WLED_DISABLE_BLYNK
|
#ifndef WLED_DISABLE_BLYNK
|
||||||
|
|||||||
@@ -65,86 +65,86 @@ const uint8_t PAGE_settingsCss[] PROGMEM = {
|
|||||||
|
|
||||||
|
|
||||||
// Autogenerated from wled00/data/settings.htm, do not edit!!
|
// Autogenerated from wled00/data/settings.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_length = 1234;
|
const uint16_t PAGE_settings_length = 1239;
|
||||||
const uint8_t PAGE_settings[] PROGMEM = {
|
const uint8_t PAGE_settings[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x56, 0xef, 0x6f, 0xdb, 0x36,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x56, 0xef, 0x6f, 0xdb, 0x36,
|
||||||
0x10, 0xfd, 0xee, 0xbf, 0x82, 0x61, 0xb7, 0x44, 0x42, 0x65, 0xd9, 0x49, 0x86, 0x61, 0x93, 0x2d,
|
0x10, 0xfd, 0xee, 0xbf, 0x82, 0x61, 0xb7, 0x44, 0x42, 0x65, 0xd9, 0x71, 0x87, 0x61, 0x93, 0x2d,
|
||||||
0x17, 0x6d, 0x92, 0xb6, 0x19, 0x12, 0x24, 0x40, 0x92, 0x76, 0xc3, 0x36, 0xa0, 0xb4, 0x78, 0xb2,
|
0x17, 0x6d, 0x92, 0xb6, 0x19, 0x12, 0x24, 0x40, 0x92, 0x76, 0xc3, 0x36, 0xa0, 0xb4, 0x78, 0xb2,
|
||||||
0xd9, 0x48, 0xa4, 0x40, 0x9e, 0x9c, 0x78, 0xae, 0xff, 0xf7, 0x1d, 0x69, 0xe7, 0x57, 0x1b, 0x64,
|
0xd9, 0x48, 0xa4, 0x40, 0x9e, 0x9c, 0x78, 0xae, 0xff, 0xf7, 0x1d, 0x69, 0xe7, 0x57, 0x1b, 0x14,
|
||||||
0xc5, 0xda, 0x2f, 0x51, 0x78, 0x22, 0x1f, 0xef, 0xde, 0x7b, 0x77, 0xf2, 0x70, 0x63, 0xff, 0x64,
|
0x43, 0x97, 0x2f, 0x51, 0x48, 0x91, 0xef, 0xee, 0xde, 0x7b, 0x77, 0xf2, 0x68, 0x6b, 0xff, 0x64,
|
||||||
0xef, 0xfc, 0x8f, 0xd3, 0x03, 0x36, 0xc5, 0xba, 0x1a, 0x0d, 0xfd, 0x5f, 0x56, 0x09, 0x3d, 0xc9,
|
0xef, 0xfc, 0x8f, 0xd3, 0x03, 0x36, 0xc3, 0xba, 0x1a, 0x8f, 0xfc, 0x5f, 0x56, 0x09, 0x3d, 0xcd,
|
||||||
0x39, 0x68, 0x4e, 0x6b, 0x10, 0x72, 0x34, 0xac, 0x01, 0x05, 0x2b, 0xa6, 0xc2, 0x3a, 0xc0, 0x9c,
|
0x39, 0x68, 0x4e, 0x6b, 0x10, 0x72, 0x3c, 0xaa, 0x01, 0x05, 0x2b, 0x66, 0xc2, 0x3a, 0xc0, 0x9c,
|
||||||
0x5f, 0x9c, 0xbf, 0xee, 0xfe, 0xc2, 0xd7, 0xd1, 0x4e, 0x61, 0x34, 0x82, 0xa6, 0xf0, 0x95, 0x92,
|
0x5f, 0x9c, 0xbf, 0xe9, 0xfe, 0xc2, 0x37, 0xbb, 0x9d, 0xc2, 0x68, 0x04, 0x4d, 0xdb, 0x57, 0x4a,
|
||||||
0x38, 0xcd, 0x25, 0xcc, 0x54, 0x01, 0xdd, 0xb0, 0x48, 0x94, 0x56, 0xa8, 0x44, 0xd5, 0x75, 0x85,
|
0xe2, 0x2c, 0x97, 0x30, 0x57, 0x05, 0x74, 0xc3, 0x22, 0x51, 0x5a, 0xa1, 0x12, 0x55, 0xd7, 0x15,
|
||||||
0xa8, 0x20, 0xdf, 0x4e, 0x6a, 0x71, 0xad, 0xea, 0xb6, 0xbe, 0x5d, 0xb7, 0x0e, 0x6c, 0x58, 0x88,
|
0xa2, 0x82, 0x7c, 0x37, 0xa9, 0xc5, 0xb5, 0xaa, 0xdb, 0xfa, 0x76, 0xdd, 0x3a, 0xb0, 0x61, 0x21,
|
||||||
0x31, 0xad, 0xb5, 0xe1, 0xac, 0xa3, 0x45, 0x0d, 0x39, 0x9f, 0x29, 0xb8, 0x6a, 0x8c, 0x45, 0xba,
|
0x26, 0xb4, 0xd6, 0x86, 0xb3, 0x8e, 0x16, 0x35, 0xe4, 0x7c, 0xae, 0xe0, 0xaa, 0x31, 0x16, 0x29,
|
||||||
0x05, 0x15, 0x56, 0x30, 0x7a, 0x7f, 0x74, 0xb0, 0xcf, 0xce, 0x00, 0x51, 0xe9, 0x89, 0x1b, 0xf6,
|
0x0a, 0x2a, 0xac, 0x60, 0xfc, 0xe1, 0xe8, 0x60, 0x9f, 0x9d, 0x01, 0xa2, 0xd2, 0x53, 0x37, 0xea,
|
||||||
0x56, 0xc1, 0xa1, 0x2b, 0xac, 0x6a, 0x70, 0xd4, 0x99, 0x09, 0xcb, 0x2a, 0x53, 0xa8, 0x26, 0x91,
|
0xad, 0x37, 0x47, 0xae, 0xb0, 0xaa, 0xc1, 0x71, 0x67, 0x2e, 0x2c, 0xab, 0x4c, 0xa1, 0x9a, 0x44,
|
||||||
0xb9, 0x34, 0x45, 0x5b, 0x53, 0x42, 0x09, 0x05, 0xf2, 0x8d, 0xed, 0x41, 0xd9, 0xea, 0x02, 0x95,
|
0xe6, 0xd2, 0x14, 0x6d, 0x4d, 0x09, 0x25, 0xb4, 0x91, 0x6f, 0xed, 0x0e, 0xcb, 0x56, 0x17, 0xa8,
|
||||||
0xd1, 0x6c, 0x72, 0x28, 0x23, 0x8c, 0x17, 0x16, 0xb0, 0xb5, 0x9a, 0xc9, 0x74, 0x02, 0x78, 0x50,
|
0x8c, 0x66, 0xd3, 0x43, 0x19, 0x61, 0xbc, 0xb4, 0x80, 0xad, 0xd5, 0x4c, 0xa6, 0x53, 0xc0, 0x83,
|
||||||
0x81, 0xdf, 0xfa, 0x6a, 0x1e, 0x5e, 0x2d, 0x6f, 0xb7, 0x56, 0x46, 0xc8, 0xdf, 0xce, 0x22, 0x4c,
|
0x0a, 0xfc, 0xd1, 0xd7, 0x8b, 0xf0, 0x6a, 0x75, 0x7b, 0xb4, 0x32, 0x42, 0xfe, 0x76, 0x16, 0x61,
|
||||||
0x20, 0xdf, 0xe8, 0xc7, 0x8b, 0x0a, 0x90, 0x99, 0x5c, 0xa6, 0x85, 0x05, 0x81, 0xb0, 0x3e, 0x14,
|
0x02, 0xf9, 0x56, 0x3f, 0x5e, 0x56, 0x80, 0xcc, 0xe4, 0x32, 0x2d, 0x2c, 0x08, 0x84, 0xcd, 0xa5,
|
||||||
0xf1, 0xd5, 0xed, 0x3c, 0x1e, 0x98, 0x94, 0x78, 0x79, 0x89, 0x68, 0xd5, 0xb8, 0x45, 0xa0, 0x17,
|
0x88, 0xaf, 0xa3, 0xf3, 0x78, 0x68, 0x52, 0xe2, 0xe5, 0x15, 0xa2, 0x55, 0x93, 0x16, 0x81, 0x5e,
|
||||||
0xb6, 0xe0, 0x09, 0xc6, 0xc9, 0xe7, 0x71, 0x9c, 0x37, 0xc0, 0x13, 0x8e, 0x70, 0x8d, 0xbd, 0x8f,
|
0xd8, 0x82, 0x27, 0x18, 0x27, 0x5f, 0xee, 0xe3, 0xa2, 0x01, 0x9e, 0x70, 0x84, 0x6b, 0xec, 0x7d,
|
||||||
0x62, 0x26, 0x6e, 0x00, 0xbe, 0xd8, 0x28, 0xdc, 0x5c, 0x13, 0x04, 0xc4, 0x89, 0x4c, 0xc7, 0x46,
|
0x12, 0x73, 0x71, 0x03, 0xf0, 0xd5, 0x41, 0xe1, 0x16, 0x9a, 0x20, 0x20, 0x4e, 0x64, 0x3a, 0x31,
|
||||||
0xce, 0x53, 0xd1, 0x34, 0xa0, 0xe5, 0xde, 0x54, 0x55, 0x32, 0x32, 0x7e, 0xbf, 0x90, 0xf2, 0x60,
|
0x72, 0x91, 0x8a, 0xa6, 0x01, 0x2d, 0xf7, 0x66, 0xaa, 0x92, 0x91, 0xf1, 0xe7, 0x85, 0x94, 0x07,
|
||||||
0x46, 0x59, 0x1c, 0x29, 0x47, 0xec, 0x83, 0x8d, 0xb8, 0xcf, 0x99, 0x27, 0x51, 0x9c, 0x8f, 0x16,
|
0x73, 0xca, 0xe2, 0x48, 0x39, 0x62, 0x1f, 0x6c, 0xc4, 0x7d, 0xce, 0x3c, 0x89, 0xe2, 0x7c, 0xbc,
|
||||||
0x6f, 0x00, 0xdf, 0x45, 0xf1, 0xf2, 0xf1, 0x7d, 0x60, 0xad, 0xb1, 0x94, 0x1e, 0xed, 0x23, 0xe9,
|
0x7c, 0x0b, 0xf8, 0x3e, 0x8a, 0x57, 0x8f, 0x9f, 0x03, 0x6b, 0x8d, 0xa5, 0xf4, 0xe8, 0x1c, 0x49,
|
||||||
0x9c, 0xa9, 0x20, 0xad, 0xcc, 0x24, 0xe2, 0x07, 0x3e, 0xce, 0xd6, 0xc5, 0x13, 0xcb, 0xac, 0x54,
|
0xe7, 0x4c, 0x05, 0x69, 0x65, 0xa6, 0x11, 0x3f, 0xf0, 0xfb, 0x6c, 0x53, 0x3c, 0xb1, 0xcc, 0x4a,
|
||||||
0x15, 0x84, 0x32, 0x48, 0x2b, 0x4b, 0xe5, 0x1e, 0xad, 0xe3, 0xa6, 0x64, 0x74, 0xb0, 0x54, 0x93,
|
0x55, 0x41, 0x28, 0x83, 0xb4, 0xb2, 0x54, 0xee, 0xd1, 0x66, 0xdf, 0x94, 0x8c, 0x2e, 0x96, 0x6a,
|
||||||
0xd6, 0x8a, 0xc0, 0xd6, 0xaa, 0x0c, 0x56, 0x0a, 0x3a, 0x20, 0xd3, 0xbf, 0xf4, 0xa1, 0x2e, 0x4c,
|
0xda, 0x5a, 0x11, 0xd8, 0x5a, 0x97, 0xc1, 0x4a, 0x41, 0x17, 0x64, 0xfa, 0x97, 0x3e, 0xd4, 0x85,
|
||||||
0xdd, 0x10, 0x69, 0xc0, 0x1a, 0x31, 0x01, 0x26, 0x05, 0x8a, 0x0d, 0x4e, 0xf9, 0xdc, 0x11, 0xac,
|
0xa9, 0x1b, 0x22, 0x0d, 0x58, 0x23, 0xa6, 0xc0, 0xa4, 0x40, 0xb1, 0xc5, 0x29, 0x9f, 0x3b, 0x82,
|
||||||
0xdc, 0xc9, 0x3d, 0x2d, 0x70, 0x73, 0x93, 0x9b, 0xf1, 0x47, 0x28, 0x90, 0xe7, 0xb9, 0x27, 0x89,
|
0x95, 0x3b, 0xb9, 0xa7, 0x05, 0x6e, 0x6f, 0x73, 0x33, 0xf9, 0x04, 0x05, 0xf2, 0x3c, 0xf7, 0x24,
|
||||||
0xae, 0xa0, 0xd8, 0xc6, 0x4b, 0x6b, 0xc5, 0x3c, 0x55, 0x2e, 0x3c, 0x1f, 0x0a, 0x24, 0xcf, 0xa2,
|
0x51, 0x08, 0xda, 0xdb, 0x7a, 0x65, 0xad, 0x58, 0xa4, 0xca, 0x85, 0xe7, 0x43, 0x81, 0xe4, 0x59,
|
||||||
0x78, 0x51, 0x02, 0x16, 0xd3, 0x28, 0x22, 0xa1, 0x5f, 0xf0, 0x29, 0x62, 0x93, 0xf5, 0x7a, 0xfc,
|
0x14, 0x2f, 0x4b, 0xc0, 0x62, 0x16, 0x45, 0x24, 0xf4, 0x4b, 0x3e, 0x43, 0x6c, 0xb2, 0x5e, 0x8f,
|
||||||
0x79, 0xf0, 0x41, 0xc6, 0x79, 0xfc, 0x9c, 0xf7, 0x8a, 0x72, 0x92, 0x7e, 0x74, 0x46, 0xf3, 0x64,
|
0x3f, 0x0f, 0x3e, 0xc8, 0x38, 0x8f, 0x9f, 0xf3, 0x5e, 0x51, 0x4e, 0xd3, 0x4f, 0xce, 0x68, 0x9e,
|
||||||
0x41, 0x66, 0x9d, 0x1a, 0x99, 0x71, 0x52, 0x9d, 0x2f, 0xe3, 0x14, 0xa7, 0xa0, 0x23, 0xe2, 0x20,
|
0x2c, 0xc9, 0xac, 0x33, 0x23, 0x33, 0x4e, 0xaa, 0xf3, 0x55, 0x9c, 0xe2, 0x0c, 0x74, 0x44, 0x1c,
|
||||||
0xc2, 0xd4, 0x5c, 0x7e, 0xfa, 0x14, 0x79, 0x73, 0xf0, 0x8a, 0xec, 0x68, 0x79, 0x9c, 0x3a, 0x9c,
|
0x44, 0x98, 0x9a, 0xcb, 0xcf, 0x9f, 0x23, 0x6f, 0x0e, 0x5e, 0x91, 0x1d, 0x2d, 0x8f, 0x53, 0x87,
|
||||||
0x13, 0x2b, 0x52, 0xb9, 0xa6, 0x12, 0xf3, 0x9c, 0x2b, 0x5d, 0x29, 0x0d, 0x24, 0x13, 0x06, 0xb0,
|
0x0b, 0x62, 0x45, 0x2a, 0xd7, 0x54, 0x62, 0x91, 0x73, 0xa5, 0x2b, 0xa5, 0x81, 0x64, 0xc2, 0x00,
|
||||||
0x28, 0x8e, 0xef, 0xce, 0x2f, 0x54, 0x19, 0xb5, 0xf5, 0x5e, 0x39, 0xc9, 0x31, 0x6d, 0xeb, 0xa4,
|
0x16, 0xc5, 0xf1, 0xdd, 0xfd, 0xa5, 0x2a, 0xa3, 0xb6, 0xde, 0x2b, 0xa7, 0x39, 0xa6, 0x6d, 0x9d,
|
||||||
0xb5, 0xe6, 0xca, 0xe5, 0x9c, 0x27, 0xbe, 0xc0, 0x10, 0x8f, 0xe3, 0xd2, 0xd8, 0xc8, 0x33, 0x8d,
|
0xb4, 0xd6, 0x5c, 0xb9, 0x9c, 0xf3, 0xc4, 0x17, 0x18, 0xf6, 0xe3, 0xb8, 0x34, 0x36, 0xf2, 0x4c,
|
||||||
0x7f, 0x92, 0x9f, 0xfe, 0xa6, 0xd2, 0x4e, 0x42, 0xa9, 0x29, 0xa9, 0x62, 0x15, 0xb8, 0x9b, 0x6d,
|
0xe3, 0x9f, 0xe4, 0xa7, 0xbf, 0xa9, 0xb4, 0x93, 0x50, 0x6a, 0x4a, 0xaa, 0x58, 0x05, 0xee, 0xe6,
|
||||||
0xe1, 0xe8, 0xf3, 0xfc, 0xc3, 0x90, 0x2c, 0x80, 0x54, 0xa2, 0xe7, 0x21, 0xe7, 0xae, 0x1d, 0xd7,
|
0x58, 0xb8, 0xfa, 0x3c, 0xff, 0x38, 0x22, 0x0b, 0x20, 0x95, 0xe8, 0x79, 0xc8, 0xb9, 0x6b, 0x27,
|
||||||
0x0a, 0x39, 0xe9, 0x52, 0x54, 0xaa, 0xb8, 0xf4, 0x5d, 0xa6, 0xa5, 0xb9, 0x22, 0xc9, 0x8a, 0x40,
|
0xb5, 0x42, 0x4e, 0xba, 0x14, 0x95, 0x2a, 0x2e, 0x7d, 0x97, 0x69, 0x69, 0xae, 0x48, 0xb2, 0x22,
|
||||||
0x7e, 0xbe, 0x95, 0xf6, 0xdc, 0xba, 0x2d, 0x7a, 0x6d, 0xfd, 0xa2, 0xad, 0xf3, 0x1f, 0x16, 0xb8,
|
0x90, 0x9f, 0xef, 0xa4, 0x3d, 0xb7, 0x69, 0x8b, 0x5e, 0x5b, 0xbf, 0x6c, 0xeb, 0xfc, 0x87, 0x25,
|
||||||
0xdc, 0xe2, 0x23, 0xff, 0x60, 0xd1, 0xc5, 0x71, 0x3c, 0xec, 0xad, 0x10, 0x47, 0x1f, 0x06, 0xa1,
|
0xae, 0x76, 0xf8, 0xd8, 0x3f, 0x58, 0x74, 0x71, 0x1c, 0x8f, 0x7a, 0x6b, 0xc4, 0xf1, 0xc7, 0x61,
|
||||||
0xca, 0x95, 0x78, 0xc7, 0xa0, 0x5b, 0x2a, 0x55, 0x69, 0x32, 0xc5, 0xdb, 0xf3, 0xe3, 0xa3, 0x3c,
|
0xa8, 0x72, 0x2d, 0xde, 0x31, 0xe8, 0x96, 0x4a, 0x55, 0x9a, 0x4c, 0xf1, 0xee, 0xfc, 0xf8, 0x28,
|
||||||
0xdc, 0x9f, 0xac, 0x9d, 0xff, 0x04, 0xa7, 0xb7, 0xb7, 0x39, 0x62, 0xe3, 0x45, 0x93, 0xf7, 0x79,
|
0x0f, 0xf1, 0x93, 0x8d, 0xf3, 0xbf, 0xc1, 0xe9, 0x6d, 0x34, 0x47, 0x6c, 0xbc, 0x6c, 0xf2, 0x3e,
|
||||||
0xb2, 0xb1, 0x4d, 0xe2, 0xa6, 0x94, 0x10, 0xa9, 0xe1, 0x39, 0xf9, 0x0a, 0x32, 0x93, 0xfb, 0xde,
|
0x4f, 0xb6, 0x76, 0x49, 0xdc, 0x94, 0x12, 0x22, 0x35, 0x3c, 0x27, 0xff, 0x81, 0xcc, 0xe4, 0xbe,
|
||||||
0xc3, 0x07, 0xde, 0xf0, 0xca, 0x72, 0x6f, 0xbe, 0x8c, 0xdc, 0xf0, 0x59, 0xb9, 0x69, 0x63, 0x0d,
|
0xf7, 0xf0, 0x81, 0x37, 0xbc, 0xb2, 0xdc, 0x9b, 0x2f, 0x23, 0x37, 0x7c, 0x51, 0x6e, 0xda, 0x58,
|
||||||
0x9a, 0xc2, 0x54, 0x9b, 0x9b, 0x51, 0xe8, 0xef, 0x7e, 0x12, 0x85, 0xe4, 0x72, 0xbf, 0xa3, 0x3a,
|
0x83, 0xa6, 0x30, 0xd5, 0xf6, 0x76, 0x14, 0xfa, 0xbb, 0x9f, 0x44, 0x21, 0xb9, 0xdc, 0x9f, 0xa8,
|
||||||
0x43, 0x63, 0xc9, 0x71, 0xbe, 0xb5, 0x0f, 0x11, 0x6a, 0xdf, 0x14, 0xc5, 0x61, 0xc3, 0xe3, 0x98,
|
0xce, 0xd0, 0x58, 0x72, 0x9c, 0x6f, 0xed, 0x43, 0x84, 0xda, 0x37, 0x45, 0x71, 0xd8, 0xf0, 0x38,
|
||||||
0x14, 0x5e, 0x6d, 0xa3, 0xf3, 0x75, 0x43, 0x66, 0x7e, 0x4d, 0xf8, 0xec, 0xd8, 0x48, 0x48, 0xd9,
|
0x26, 0x85, 0xd7, 0xc7, 0xe8, 0x7e, 0xdd, 0x90, 0x99, 0xdf, 0x10, 0x3e, 0x3b, 0x36, 0x12, 0x52,
|
||||||
0x69, 0x05, 0xc2, 0x01, 0x23, 0x39, 0xc0, 0xb2, 0x30, 0x67, 0x0e, 0x4f, 0xc9, 0xae, 0xc9, 0x03,
|
0x76, 0x5a, 0x81, 0x70, 0xc0, 0x48, 0x0e, 0xb0, 0x2c, 0xcc, 0x99, 0xc3, 0x53, 0xb2, 0x6b, 0xf2,
|
||||||
0x44, 0xf7, 0x10, 0x31, 0x09, 0x68, 0x64, 0x84, 0x24, 0x38, 0x71, 0xd9, 0x19, 0xf6, 0xd6, 0xb3,
|
0x00, 0xd1, 0x3d, 0x44, 0x4c, 0x02, 0x1a, 0x19, 0x21, 0x09, 0x4e, 0x5c, 0x75, 0x46, 0xbd, 0xcd,
|
||||||
0x68, 0x18, 0xea, 0x1d, 0x75, 0x7c, 0xdb, 0x2e, 0x7c, 0xa7, 0x77, 0x45, 0xa5, 0x26, 0x3a, 0x2b,
|
0x2c, 0x1a, 0x85, 0x7a, 0xc7, 0x1d, 0xdf, 0xb6, 0x4b, 0xdf, 0xe9, 0x5d, 0x51, 0xa9, 0xa9, 0xce,
|
||||||
0x02, 0xfe, 0x60, 0x2c, 0x8a, 0xcb, 0x89, 0x35, 0xad, 0x96, 0xd9, 0xb3, 0x9d, 0x9d, 0x9d, 0xc1,
|
0x8a, 0x80, 0x3f, 0x9c, 0x88, 0xe2, 0x72, 0x6a, 0x4d, 0xab, 0x65, 0xf6, 0x6c, 0x30, 0x18, 0x0c,
|
||||||
0x14, 0xd4, 0x64, 0x8a, 0xd9, 0x76, 0xbf, 0xdf, 0x5c, 0x0f, 0x6a, 0x61, 0x27, 0x4a, 0x67, 0xfd,
|
0x67, 0xa0, 0xa6, 0x33, 0xcc, 0x76, 0xfb, 0xfd, 0xe6, 0x7a, 0x58, 0x0b, 0x3b, 0x55, 0x3a, 0xeb,
|
||||||
0xa5, 0x9f, 0xc2, 0x8b, 0x6e, 0x77, 0x9a, 0xfd, 0x3a, 0x9b, 0x2e, 0x57, 0xea, 0x2d, 0xee, 0x9f,
|
0xaf, 0xfc, 0x14, 0x5e, 0x76, 0xbb, 0xb3, 0xec, 0xd7, 0xf9, 0x6c, 0xb5, 0x56, 0x6f, 0x79, 0xff,
|
||||||
0xdc, 0xdd, 0xdd, 0x1d, 0x10, 0x09, 0xc6, 0x66, 0xcf, 0xca, 0xb2, 0x1c, 0x94, 0x34, 0x82, 0xbb,
|
0xe6, 0x8b, 0x17, 0x2f, 0x86, 0x44, 0x82, 0xb1, 0xd9, 0xb3, 0xb2, 0x2c, 0x87, 0x25, 0x8d, 0xe0,
|
||||||
0xa5, 0xa8, 0x55, 0x35, 0xcf, 0xde, 0x81, 0x95, 0x42, 0x8b, 0xe4, 0x2d, 0x54, 0x33, 0x40, 0x55,
|
0x6e, 0x29, 0x6a, 0x55, 0x2d, 0xb2, 0xf7, 0x60, 0xa5, 0xd0, 0x22, 0x79, 0x07, 0xd5, 0x1c, 0x50,
|
||||||
0x88, 0xc4, 0x09, 0xed, 0xba, 0x24, 0x86, 0x2a, 0x07, 0x6b, 0x15, 0xb2, 0x31, 0xa5, 0x7f, 0x39,
|
0x15, 0x22, 0x71, 0x42, 0xbb, 0x2e, 0x89, 0xa1, 0xca, 0xe1, 0x46, 0x85, 0x6c, 0x42, 0xe9, 0x5f,
|
||||||
0x18, 0x1b, 0x2b, 0xc1, 0x66, 0xdb, 0xcd, 0x35, 0x23, 0x29, 0x94, 0x64, 0x01, 0x77, 0x15, 0xed,
|
0x0e, 0x27, 0xc6, 0x4a, 0xb0, 0xd9, 0x6e, 0x73, 0xcd, 0x48, 0x0a, 0x25, 0x59, 0xc0, 0x5d, 0xef,
|
||||||
0x5a, 0x6a, 0xf6, 0xd6, 0x65, 0x34, 0x59, 0x23, 0x4a, 0x24, 0x5e, 0xdd, 0xe1, 0xd4, 0x3f, 0x90,
|
0x76, 0x2d, 0x35, 0x7b, 0xeb, 0x32, 0x9a, 0xac, 0x11, 0x25, 0x12, 0xaf, 0x63, 0x38, 0xf5, 0x0f,
|
||||||
0xfd, 0x3c, 0xab, 0x95, 0x1e, 0x84, 0x01, 0x9f, 0x11, 0x43, 0x45, 0x44, 0xc9, 0xff, 0xc8, 0xba,
|
0x64, 0x3f, 0xcf, 0x6b, 0xa5, 0x87, 0x61, 0xc0, 0x67, 0xc4, 0x50, 0x11, 0x51, 0xf2, 0x3f, 0xb2,
|
||||||
0xec, 0x27, 0x2a, 0x21, 0xbe, 0xa9, 0x61, 0x67, 0x36, 0x65, 0xa2, 0x45, 0xc3, 0xfa, 0x83, 0xa2,
|
0x2e, 0xfb, 0x89, 0x4a, 0x88, 0x6f, 0x6a, 0x18, 0xcc, 0x67, 0x4c, 0xb4, 0x68, 0x58, 0x7f, 0x58,
|
||||||
0xb5, 0x8e, 0x32, 0x6d, 0x8c, 0xf2, 0x0c, 0x04, 0xaa, 0x02, 0x45, 0xc3, 0xde, 0xea, 0xe3, 0xe2,
|
0xb4, 0xd6, 0x51, 0xa6, 0x8d, 0x51, 0x9e, 0x81, 0x40, 0x55, 0xa0, 0x68, 0xd4, 0x5b, 0x7f, 0x5c,
|
||||||
0x99, 0x22, 0x7f, 0x7b, 0xe7, 0xe5, 0x9c, 0xc8, 0xa4, 0x99, 0xff, 0x68, 0x0b, 0x28, 0x7a, 0x3d,
|
0x3c, 0x53, 0xe4, 0x6f, 0xef, 0xbc, 0x9c, 0x13, 0x99, 0x34, 0xf3, 0x1f, 0x6d, 0x01, 0x45, 0xaf,
|
||||||
0xa6, 0x2f, 0xc4, 0x4d, 0x2b, 0x6c, 0x7d, 0xde, 0x0a, 0xbc, 0xc7, 0xb7, 0x46, 0xaf, 0x88, 0xa6,
|
0x27, 0xf4, 0x85, 0xb8, 0x69, 0x85, 0x9d, 0x2f, 0x5b, 0x81, 0xf7, 0xf8, 0xce, 0xf8, 0x35, 0xd1,
|
||||||
0x5b, 0xc7, 0xb3, 0xc7, 0x91, 0x9e, 0x80, 0xb8, 0xd7, 0x4d, 0x57, 0xaa, 0x54, 0x04, 0xf8, 0x5e,
|
0x74, 0xeb, 0x78, 0xf6, 0x38, 0xd2, 0x37, 0x20, 0xee, 0x75, 0xd3, 0x95, 0x2a, 0x15, 0x01, 0x7e,
|
||||||
0xbd, 0x56, 0xfe, 0xcb, 0xd3, 0x36, 0x5f, 0xc2, 0x76, 0x1e, 0x6f, 0xd2, 0x27, 0x61, 0x69, 0x46,
|
0x50, 0x6f, 0x94, 0xff, 0xf2, 0xb4, 0xcd, 0xd7, 0xb0, 0x9d, 0xc7, 0x9b, 0xf4, 0x9b, 0xb0, 0x34,
|
||||||
0x3a, 0x82, 0xf5, 0x3e, 0x3b, 0xb5, 0x50, 0x82, 0x05, 0x5d, 0x80, 0xeb, 0xfc, 0x57, 0xce, 0x5f,
|
0x23, 0x1d, 0xc1, 0x7a, 0x9f, 0x9d, 0x5a, 0x28, 0xc1, 0x82, 0x2e, 0xc0, 0x75, 0xbe, 0x06, 0xf7,
|
||||||
0x85, 0xbd, 0xb3, 0x4f, 0xc8, 0x9d, 0x9d, 0x7d, 0xb6, 0x77, 0x7f, 0x40, 0xdf, 0x42, 0x0f, 0xa5,
|
0xf5, 0x0e, 0xe4, 0x04, 0x35, 0x67, 0x81, 0xb0, 0x9c, 0xdf, 0xc8, 0xa7, 0x0d, 0x75, 0xd0, 0x77,
|
||||||
0x9a, 0x05, 0x1a, 0xef, 0x8d, 0x80, 0xd1, 0x7a, 0xac, 0xa7, 0x69, 0x3a, 0xec, 0xd1, 0xfb, 0xd1,
|
0xd5, 0x34, 0xd8, 0xa7, 0xd0, 0x83, 0x7d, 0xb6, 0x77, 0x7f, 0x80, 0xdf, 0x86, 0x1e, 0x49, 0x35,
|
||||||
0xb7, 0xd4, 0xd6, 0xd6, 0x74, 0xff, 0x05, 0x79, 0xad, 0x36, 0xd2, 0xb1, 0xa8, 0x51, 0xda, 0xdd,
|
0x67, 0x1d, 0x1f, 0xf7, 0xde, 0x8c, 0x18, 0x6f, 0xe6, 0x7e, 0x9a, 0xa6, 0xa3, 0x1e, 0x1d, 0x18,
|
||||||
0x8d, 0x9f, 0xce, 0xb7, 0x54, 0xd6, 0xaa, 0x35, 0x32, 0x3b, 0xf4, 0x2e, 0x2a, 0x45, 0x01, 0x8f,
|
0xff, 0x1f, 0x4e, 0xdb, 0x9a, 0xe2, 0x5f, 0x90, 0x19, 0x6b, 0x23, 0x1d, 0x8b, 0x1a, 0xa5, 0x5d,
|
||||||
0x50, 0xe6, 0x6b, 0x93, 0xf5, 0xf5, 0x18, 0x35, 0x67, 0xc1, 0x64, 0xb4, 0x5c, 0x5b, 0x5e, 0x1b,
|
0xfc, 0x34, 0xb4, 0xb6, 0x6a, 0x83, 0xcc, 0x0e, 0xbd, 0xcd, 0x4a, 0x51, 0xc0, 0x1d, 0x70, 0xe7,
|
||||||
0x9a, 0x3a, 0xff, 0xcb, 0x07, 0x04, 0x48, 0x77, 0xef, 0x1f, 0xff, 0xce, 0x4e, 0x5a, 0x6c, 0x5a,
|
0x3e, 0xa7, 0xb2, 0xbe, 0x7e, 0x5a, 0x52, 0x09, 0x90, 0x62, 0xef, 0x1f, 0xff, 0xce, 0x4e, 0x5a,
|
||||||
0xfc, 0x3e, 0x36, 0x08, 0x5f, 0xf8, 0xad, 0xd1, 0x19, 0x3d, 0xee, 0x4a, 0xfa, 0x4e, 0x36, 0x40,
|
0x6c, 0x5a, 0x7c, 0x9a, 0x82, 0xc2, 0x4f, 0x80, 0x9d, 0xf1, 0x19, 0x3d, 0xee, 0x4a, 0x7a, 0xcc,
|
||||||
0x55, 0x83, 0x37, 0xc2, 0x39, 0x3d, 0xd9, 0x26, 0x3b, 0x16, 0x85, 0x35, 0xee, 0xfb, 0x34, 0x85,
|
0x27, 0xdf, 0x81, 0x8d, 0xaa, 0x06, 0xc2, 0xee, 0x9c, 0xd3, 0x93, 0x6d, 0xb3, 0x63, 0x51, 0x58,
|
||||||
0x83, 0x90, 0x35, 0x50, 0x53, 0x2b, 0x9c, 0x13, 0xf8, 0x45, 0x43, 0x9f, 0x77, 0xb8, 0x43, 0xa7,
|
0xe3, 0x9e, 0xa6, 0x6b, 0x1c, 0x84, 0xac, 0x81, 0xba, 0x5e, 0xe1, 0x82, 0xc0, 0x2f, 0x1a, 0xfa,
|
||||||
0x7f, 0xa8, 0x9f, 0x47, 0x54, 0x48, 0xf8, 0x41, 0xf9, 0x2f, 0xa3, 0xca, 0xca, 0x42, 0x60, 0x0a,
|
0xfe, 0xc3, 0x1d, 0x3a, 0xfd, 0x43, 0x0d, 0x3f, 0xa6, 0x42, 0xc2, 0x2f, 0xce, 0x7f, 0x01, 0x1b,
|
||||||
0x00, 0x00
|
0xc3, 0x83, 0xbe, 0x81, 0x0a, 0x00, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -1078,223 +1078,227 @@ const uint8_t PAGE_settings_ui[] PROGMEM = {
|
|||||||
|
|
||||||
|
|
||||||
// Autogenerated from wled00/data/settings_sync.htm, do not edit!!
|
// Autogenerated from wled00/data/settings_sync.htm, do not edit!!
|
||||||
const uint16_t PAGE_settings_sync_length = 3429;
|
const uint16_t PAGE_settings_sync_length = 3489;
|
||||||
const uint8_t PAGE_settings_sync[] PROGMEM = {
|
const uint8_t PAGE_settings_sync[] PROGMEM = {
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x1a, 0x6b, 0x73, 0xe2, 0x38,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x1a, 0x6b, 0x73, 0x9b, 0x48,
|
||||||
0xf2, 0xbb, 0x7f, 0x85, 0xc6, 0x5b, 0x35, 0x07, 0x1b, 0xc2, 0x23, 0x84, 0x4c, 0x26, 0xc1, 0x9e,
|
0xf2, 0x3b, 0xbf, 0x62, 0xc2, 0x56, 0xe5, 0xa4, 0xb5, 0xac, 0xa7, 0xe5, 0x38, 0xb6, 0x20, 0x67,
|
||||||
0x0b, 0x21, 0x93, 0x70, 0x9b, 0x07, 0x03, 0xc9, 0x3e, 0xaa, 0xae, 0x6a, 0x4b, 0xd8, 0x02, 0x9c,
|
0x59, 0x8e, 0xad, 0x5b, 0x3f, 0x14, 0x29, 0xd9, 0x64, 0xab, 0xae, 0x6a, 0x6b, 0x04, 0x23, 0x09,
|
||||||
0xd8, 0x96, 0xd7, 0x92, 0xf3, 0xa8, 0xd9, 0xf9, 0xef, 0xd7, 0x2d, 0xd9, 0x06, 0xcc, 0x33, 0x57,
|
0x1b, 0x18, 0x96, 0x19, 0xfc, 0xa8, 0x6c, 0xfe, 0xfb, 0x75, 0xcf, 0x00, 0x92, 0xd0, 0x33, 0x57,
|
||||||
0xfb, 0x21, 0x8e, 0x2d, 0x77, 0xb7, 0x5a, 0xfd, 0xee, 0x36, 0xed, 0x0f, 0xdd, 0xbb, 0xf3, 0xfb,
|
0xfb, 0xc1, 0x18, 0x86, 0xee, 0x9e, 0x9e, 0x7e, 0x77, 0xa3, 0xce, 0x9b, 0xde, 0xfd, 0xc5, 0xe7,
|
||||||
0x3f, 0xfa, 0x17, 0x64, 0x2a, 0x03, 0xdf, 0x6e, 0xe3, 0x95, 0xf8, 0x34, 0x9c, 0x58, 0x26, 0x0b,
|
0x3f, 0x06, 0x97, 0x64, 0x26, 0x03, 0xdf, 0xee, 0xe0, 0x95, 0xf8, 0x34, 0x9c, 0x5a, 0x26, 0x0b,
|
||||||
0x4d, 0x78, 0x66, 0xd4, 0xb5, 0xdb, 0x01, 0x93, 0x94, 0x84, 0x34, 0x60, 0x96, 0xf9, 0xec, 0xb1,
|
0x4d, 0x78, 0x66, 0xd4, 0xb5, 0x3b, 0x01, 0x93, 0x94, 0x84, 0x34, 0x60, 0x96, 0xf9, 0xe4, 0xb1,
|
||||||
0x97, 0x88, 0xc7, 0xd2, 0x24, 0x0e, 0x0f, 0x25, 0x0b, 0xa5, 0x65, 0xbe, 0x78, 0xae, 0x9c, 0x5a,
|
0xe7, 0x88, 0xc7, 0xd2, 0x24, 0x0e, 0x0f, 0x25, 0x0b, 0xa5, 0x65, 0x3e, 0x7b, 0xae, 0x9c, 0x59,
|
||||||
0xad, 0x7a, 0xdd, 0xb4, 0x0d, 0x0d, 0x6a, 0x14, 0xde, 0xb9, 0xec, 0xd9, 0x73, 0xd8, 0xbe, 0x7a,
|
0xed, 0x7a, 0xdd, 0xb4, 0x0d, 0x0d, 0x6a, 0x14, 0xde, 0xb9, 0xec, 0xc9, 0x73, 0xd8, 0xa1, 0x7a,
|
||||||
0xa8, 0x78, 0xa1, 0x27, 0x3d, 0xea, 0xef, 0x0b, 0x87, 0xfa, 0xcc, 0x6a, 0x54, 0x02, 0xfa, 0xea,
|
0xa8, 0x78, 0xa1, 0x27, 0x3d, 0xea, 0x1f, 0x0a, 0x87, 0xfa, 0xcc, 0x6a, 0x54, 0x02, 0xfa, 0xe2,
|
||||||
0x05, 0x49, 0x90, 0x3f, 0x27, 0x82, 0xc5, 0xea, 0x81, 0x8e, 0xe0, 0x39, 0xe4, 0x26, 0x31, 0x0a,
|
0x05, 0x49, 0x90, 0x3f, 0x27, 0x82, 0xc5, 0xea, 0x81, 0x8e, 0xe1, 0x39, 0xe4, 0x26, 0x31, 0x0a,
|
||||||
0x5b, 0xa7, 0x0c, 0x39, 0x53, 0x1a, 0x0b, 0x06, 0x9b, 0x24, 0x72, 0xbc, 0x7f, 0x0c, 0xab, 0xd2,
|
0x5b, 0xa7, 0x0c, 0x39, 0x33, 0x1a, 0x0b, 0x06, 0x9b, 0x24, 0x72, 0x72, 0x78, 0x02, 0xab, 0xd2,
|
||||||
0x93, 0x3e, 0xb3, 0x87, 0x6f, 0xa1, 0x43, 0x86, 0x4c, 0x4a, 0x2f, 0x9c, 0x88, 0x76, 0x4d, 0x2f,
|
0x93, 0x3e, 0xb3, 0x47, 0xaf, 0xa1, 0x43, 0x46, 0x4c, 0x4a, 0x2f, 0x9c, 0x8a, 0x4e, 0x4d, 0x2f,
|
||||||
0xb6, 0x85, 0x13, 0x7b, 0x91, 0xb4, 0x8d, 0x67, 0x1a, 0x13, 0x9f, 0x3b, 0x5e, 0x54, 0x71, 0x2d,
|
0x76, 0x84, 0x13, 0x7b, 0x91, 0xb4, 0x8d, 0x27, 0x1a, 0x13, 0x9f, 0x3b, 0x5e, 0x54, 0x71, 0x2d,
|
||||||
0x97, 0x3b, 0x49, 0x00, 0x6c, 0x56, 0x60, 0xc1, 0xfa, 0xd0, 0x38, 0x1d, 0x27, 0xa1, 0x23, 0x3d,
|
0x97, 0x3b, 0x49, 0x00, 0x6c, 0x56, 0x60, 0xc1, 0x7a, 0xd3, 0x38, 0x9b, 0x24, 0xa1, 0x23, 0x3d,
|
||||||
0x1e, 0x92, 0x49, 0xcf, 0x2d, 0xb1, 0xf2, 0xf7, 0x98, 0xc9, 0x24, 0x0e, 0x89, 0x5b, 0x9d, 0x30,
|
0x1e, 0x92, 0x69, 0xdf, 0x2d, 0xb1, 0xf2, 0xf7, 0x98, 0xc9, 0x24, 0x0e, 0x89, 0x5b, 0x9d, 0x32,
|
||||||
0x79, 0xe1, 0x33, 0x04, 0xed, 0xbc, 0xa9, 0x57, 0x3f, 0x72, 0x50, 0xc9, 0x27, 0x13, 0x9f, 0x21,
|
0x79, 0xe9, 0x33, 0x04, 0xed, 0xbe, 0xaa, 0x57, 0x3f, 0x72, 0x50, 0xc9, 0xa7, 0x53, 0x9f, 0x21,
|
||||||
0xb4, 0x46, 0xaa, 0x3a, 0x3e, 0x15, 0xe2, 0xda, 0x13, 0xb2, 0x9a, 0xbe, 0x32, 0xa7, 0x9e, 0xcb,
|
0xb4, 0x46, 0xaa, 0x3a, 0x3e, 0x15, 0xe2, 0xc6, 0x13, 0xb2, 0x9a, 0xbe, 0x32, 0x67, 0x9e, 0xcb,
|
||||||
0xcc, 0x72, 0x05, 0xdf, 0x9b, 0xb7, 0xdc, 0xdc, 0xdb, 0x00, 0x34, 0xa3, 0x8b, 0xcf, 0xb7, 0xbc,
|
0xcc, 0x72, 0x05, 0xdf, 0x9b, 0x77, 0xdc, 0x3c, 0xd8, 0x02, 0x34, 0xa7, 0x8b, 0xcf, 0x77, 0xbc,
|
||||||
0x7b, 0xf3, 0x7b, 0x49, 0x53, 0x36, 0xdd, 0xe0, 0xf5, 0x2e, 0xbc, 0x1b, 0x8f, 0x0f, 0xcc, 0x72,
|
0x77, 0xfb, 0xad, 0xa4, 0x29, 0x9b, 0x6e, 0xf0, 0x72, 0x1f, 0xde, 0x4f, 0x26, 0x4d, 0xb3, 0x5c,
|
||||||
0x55, 0xc8, 0x37, 0x9f, 0x55, 0x5d, 0x4f, 0x44, 0x3e, 0x7d, 0xb3, 0xcc, 0x90, 0x87, 0xcc, 0x2c,
|
0x15, 0xf2, 0xd5, 0x67, 0x55, 0xd7, 0x13, 0x91, 0x4f, 0x5f, 0x2d, 0x33, 0xe4, 0x21, 0x33, 0x8b,
|
||||||
0xa2, 0x5e, 0xdf, 0xe5, 0xa8, 0x3e, 0xdf, 0x15, 0xf5, 0x0a, 0x50, 0x5e, 0xbc, 0xd0, 0xe5, 0x2f,
|
0xa8, 0x37, 0xf7, 0x39, 0xaa, 0xcf, 0xf7, 0x45, 0xbd, 0x06, 0x94, 0x67, 0x2f, 0x74, 0xf9, 0x73,
|
||||||
0x55, 0x1e, 0xb1, 0x10, 0xd8, 0x92, 0x32, 0x12, 0x27, 0xb5, 0x5a, 0x10, 0x54, 0x9f, 0x42, 0x5e,
|
0x95, 0x47, 0x2c, 0x04, 0xb6, 0xa4, 0x8c, 0xc4, 0x69, 0xad, 0x16, 0x04, 0xd5, 0xc7, 0x90, 0x57,
|
||||||
0x7d, 0xf1, 0x19, 0x4a, 0xa3, 0xe6, 0x81, 0x7a, 0xe3, 0x31, 0x75, 0x98, 0xa8, 0x25, 0x6e, 0xb4,
|
0x9f, 0x7d, 0x86, 0xd2, 0xa8, 0x79, 0xa0, 0xde, 0x78, 0x42, 0x1d, 0x26, 0x6a, 0x89, 0x1b, 0x1d,
|
||||||
0x1f, 0x72, 0xe9, 0x8d, 0x3d, 0x16, 0xd7, 0xe6, 0x4f, 0xd0, 0x29, 0xd2, 0xaa, 0x89, 0x54, 0x29,
|
0x86, 0x5c, 0x7a, 0x13, 0x8f, 0xc5, 0xb5, 0xc5, 0x13, 0x74, 0x8b, 0xb4, 0x6a, 0x22, 0x55, 0x8a,
|
||||||
0x66, 0xc5, 0xfc, 0x53, 0x30, 0x7f, 0x3c, 0x0f, 0x4d, 0xdd, 0x47, 0x80, 0x3f, 0x3a, 0x6c, 0x1d,
|
0x59, 0x31, 0xff, 0x14, 0xcc, 0x9f, 0x2c, 0x42, 0x53, 0xf7, 0x01, 0xe0, 0x8f, 0x8f, 0xda, 0x47,
|
||||||
0x5a, 0x96, 0x5b, 0x1d, 0x8e, 0xab, 0xdd, 0x5e, 0xf5, 0x99, 0xfa, 0x09, 0xfb, 0xd2, 0x48, 0x17,
|
0x96, 0xe5, 0x56, 0x47, 0x93, 0x6a, 0xaf, 0x5f, 0x7d, 0xa2, 0x7e, 0xc2, 0x3e, 0x34, 0xd2, 0x85,
|
||||||
0x2e, 0x1e, 0xf4, 0xc2, 0xc7, 0x8f, 0xa5, 0x85, 0x67, 0xab, 0x5e, 0x3e, 0x69, 0xb5, 0x8e, 0x8e,
|
0xcb, 0x2f, 0x7a, 0xe1, 0xed, 0xdb, 0xd2, 0xd2, 0xb3, 0x55, 0x2f, 0x9f, 0xb6, 0xdb, 0xc7, 0x27,
|
||||||
0x0b, 0x78, 0x00, 0x56, 0xcf, 0x96, 0xce, 0x16, 0x31, 0xb3, 0x67, 0xab, 0x51, 0xae, 0xd4, 0xb7,
|
0x05, 0x3c, 0x00, 0xab, 0x67, 0x4b, 0xe7, 0xcb, 0x98, 0xd9, 0xb3, 0xd5, 0x28, 0x57, 0xea, 0xbb,
|
||||||
0x51, 0x6f, 0x94, 0xe7, 0xb8, 0xf4, 0x39, 0x75, 0xff, 0x33, 0x2c, 0xb1, 0x8a, 0xb4, 0x3e, 0xd4,
|
0xa8, 0x37, 0xca, 0x0b, 0x5c, 0xfa, 0x9c, 0xba, 0xff, 0x19, 0x95, 0x58, 0x45, 0x5a, 0x6f, 0xea,
|
||||||
0xcb, 0xdf, 0x7d, 0x26, 0x09, 0x07, 0x7c, 0x27, 0x66, 0x54, 0xb2, 0xd4, 0x44, 0x4a, 0xa6, 0xb6,
|
0xe5, 0xef, 0x3e, 0x93, 0x84, 0x03, 0xbe, 0x13, 0x33, 0x2a, 0x59, 0x6a, 0x22, 0x25, 0x53, 0xdb,
|
||||||
0x35, 0xb3, 0x7c, 0xca, 0xab, 0x70, 0xe4, 0x33, 0x29, 0x63, 0x6f, 0x94, 0x48, 0x50, 0xb2, 0x88,
|
0x9a, 0x59, 0x3e, 0xe3, 0x55, 0x38, 0xf2, 0xb9, 0x94, 0xb1, 0x37, 0x4e, 0x24, 0x28, 0x59, 0xc4,
|
||||||
0x1d, 0xb3, 0xc2, 0xca, 0x95, 0xe2, 0xba, 0x7c, 0x8b, 0x18, 0x08, 0x45, 0xb2, 0x57, 0x59, 0x7b,
|
0x8e, 0x59, 0x61, 0xe5, 0x4a, 0x71, 0x5d, 0xbe, 0x46, 0x0c, 0x84, 0x22, 0xd9, 0x8b, 0xac, 0x3d,
|
||||||
0xa4, 0xcf, 0x34, 0x23, 0xb0, 0x04, 0x48, 0x05, 0x18, 0xb7, 0x59, 0x91, 0xe5, 0x8a, 0x5b, 0x1d,
|
0xd0, 0x27, 0x9a, 0x11, 0x58, 0x01, 0xa4, 0x02, 0x8c, 0xdb, 0xac, 0xc8, 0x72, 0xc5, 0xad, 0x8e,
|
||||||
0x71, 0xf7, 0xad, 0x4a, 0x23, 0x10, 0xad, 0x7b, 0x3e, 0xf5, 0x7c, 0xb7, 0xc4, 0x11, 0x9e, 0xba,
|
0xb9, 0xfb, 0x5a, 0xa5, 0x11, 0x88, 0xd6, 0xbd, 0x98, 0x79, 0xbe, 0x5b, 0xe2, 0x08, 0x4f, 0x5d,
|
||||||
0xee, 0xc5, 0x33, 0x70, 0x81, 0xc6, 0xc5, 0x42, 0x16, 0xa3, 0xf6, 0xa9, 0x6b, 0x56, 0x4a, 0x65,
|
0xf7, 0xf2, 0x09, 0xb8, 0x40, 0xe3, 0x62, 0x21, 0x8b, 0x51, 0xfb, 0xd4, 0x35, 0x2b, 0xa5, 0xb2,
|
||||||
0xcb, 0xfe, 0x7e, 0xc9, 0xe4, 0xaf, 0xa5, 0x72, 0x05, 0x9c, 0xe3, 0x57, 0xea, 0x97, 0xca, 0x3f,
|
0x65, 0x7f, 0xbf, 0x62, 0xf2, 0xf7, 0x52, 0xb9, 0x02, 0xce, 0xf1, 0x3b, 0xf5, 0x4b, 0xe5, 0x1f,
|
||||||
0x56, 0x23, 0xb0, 0x38, 0xe6, 0x31, 0xf0, 0x09, 0x08, 0xe0, 0xc7, 0x82, 0x83, 0xbd, 0xf8, 0x7c,
|
0xeb, 0x11, 0x58, 0x1c, 0xf3, 0x18, 0xf8, 0x04, 0x04, 0xf0, 0x63, 0xc1, 0xc1, 0x5e, 0x7c, 0x3e,
|
||||||
0x52, 0x32, 0x2f, 0x70, 0x9d, 0xa4, 0x52, 0x00, 0x3d, 0x92, 0xb1, 0xe7, 0x33, 0x75, 0x1e, 0x70,
|
0x2d, 0x99, 0x97, 0xb8, 0x4e, 0x52, 0x29, 0x80, 0x1e, 0xc9, 0xc4, 0xf3, 0x99, 0x3a, 0x0f, 0x38,
|
||||||
0xdc, 0x18, 0xce, 0x7d, 0x9d, 0xae, 0xf3, 0x31, 0x06, 0x87, 0xb1, 0x37, 0x49, 0x62, 0xaa, 0xc4,
|
0x6e, 0x0c, 0xe7, 0xbe, 0x49, 0xd7, 0xf9, 0x04, 0x83, 0xc3, 0xc4, 0x9b, 0x26, 0x31, 0x55, 0x62,
|
||||||
0xa6, 0xcf, 0x43, 0xc6, 0xd4, 0x43, 0xfb, 0xf9, 0x6f, 0xd8, 0x0b, 0x1d, 0x1e, 0x44, 0x20, 0x3d,
|
0xd3, 0xe7, 0x21, 0x13, 0xea, 0xa1, 0xfd, 0xfc, 0x37, 0xec, 0x87, 0x0e, 0x0f, 0x22, 0x90, 0x1e,
|
||||||
0x46, 0x22, 0x3a, 0x61, 0xc4, 0xa5, 0x92, 0x7e, 0x00, 0x6b, 0x98, 0x93, 0xf4, 0xd7, 0x73, 0x30,
|
0x23, 0x11, 0x9d, 0x32, 0xe2, 0x52, 0x49, 0xdf, 0x80, 0x35, 0x2c, 0x48, 0xfa, 0xe3, 0x05, 0x98,
|
||||||
0x87, 0x31, 0x8f, 0x4b, 0x8f, 0x56, 0xfd, 0xf4, 0xb1, 0x7d, 0x7c, 0xfa, 0xb8, 0xb7, 0x57, 0x56,
|
0xc3, 0x84, 0xc7, 0xa5, 0x07, 0xab, 0x7e, 0xf6, 0xd0, 0x39, 0x39, 0x7b, 0x38, 0x38, 0x28, 0x2b,
|
||||||
0xd6, 0x7c, 0x69, 0xee, 0x95, 0x1e, 0xf7, 0x40, 0x2d, 0x55, 0x67, 0xca, 0x9c, 0x27, 0xe6, 0x5a,
|
0x6b, 0xbe, 0x32, 0x0f, 0x4a, 0x0f, 0x07, 0xa0, 0x96, 0xaa, 0x33, 0x63, 0xce, 0x23, 0x73, 0x2d,
|
||||||
0x7a, 0x79, 0x08, 0xd6, 0xad, 0x54, 0x66, 0xdb, 0x8f, 0x1f, 0x1b, 0xda, 0xdd, 0x06, 0x6b, 0x60,
|
0xbd, 0x3c, 0x02, 0xeb, 0x56, 0x2a, 0xb3, 0xed, 0x87, 0xb7, 0x0d, 0xed, 0x6e, 0xc3, 0x0d, 0xb0,
|
||||||
0x07, 0x0b, 0xb0, 0xb3, 0x5d, 0x2f, 0x71, 0x57, 0x0c, 0x11, 0x60, 0x55, 0xa0, 0xe3, 0x7a, 0x85,
|
0xc3, 0x25, 0xd8, 0xf9, 0xae, 0x57, 0xb8, 0x2b, 0x86, 0x08, 0xb0, 0x2a, 0xd0, 0x71, 0xbd, 0xc2,
|
||||||
0x5b, 0x10, 0x16, 0x0a, 0x5c, 0xb0, 0x3d, 0x6b, 0x35, 0x23, 0x3f, 0xf3, 0x8a, 0x4c, 0xdf, 0x0d,
|
0x2d, 0x08, 0x0b, 0x05, 0x2e, 0xd8, 0x81, 0xb5, 0x9e, 0x91, 0x5f, 0x79, 0x45, 0xa6, 0xef, 0x86,
|
||||||
0x56, 0xbc, 0xe3, 0x3f, 0x5b, 0x07, 0xa7, 0x05, 0x5e, 0x2d, 0x56, 0x29, 0x70, 0x64, 0xc9, 0x19,
|
0x6b, 0xde, 0xf1, 0x5f, 0xad, 0xe6, 0x59, 0x81, 0x57, 0x8b, 0x55, 0x0a, 0x1c, 0x59, 0x72, 0xce,
|
||||||
0x3b, 0xc3, 0x7e, 0xce, 0xce, 0x82, 0x6d, 0x6b, 0x2a, 0xaf, 0xd1, 0x92, 0x3f, 0x33, 0xbb, 0xfe,
|
0xce, 0x68, 0x90, 0xb3, 0xb3, 0x64, 0xdb, 0x9a, 0xca, 0x4b, 0xb4, 0xe2, 0xcf, 0xcc, 0xae, 0x7f,
|
||||||
0x45, 0xfb, 0xf4, 0x89, 0x39, 0x82, 0xa8, 0xf6, 0x04, 0xea, 0xb1, 0xeb, 0xb9, 0x4d, 0xf7, 0xb3,
|
0xd0, 0x3e, 0x7d, 0x6a, 0x8e, 0x21, 0xaa, 0x3d, 0x82, 0x7a, 0xec, 0x7a, 0x6e, 0xd3, 0x83, 0x6c,
|
||||||
0x4d, 0xe7, 0x04, 0x9d, 0x19, 0xc3, 0x77, 0xf1, 0xe2, 0x49, 0x67, 0x5a, 0x8a, 0x30, 0xa8, 0xf6,
|
0xd3, 0x05, 0x41, 0x67, 0xc6, 0xf0, 0x5d, 0x3c, 0x7b, 0xd2, 0x99, 0x95, 0x22, 0x0c, 0xaa, 0x7d,
|
||||||
0xc0, 0x8c, 0x17, 0x50, 0xca, 0xe5, 0xef, 0x0e, 0x15, 0x8c, 0xa0, 0xa3, 0x9d, 0x2c, 0xf0, 0x62,
|
0x30, 0xe3, 0x25, 0x94, 0x72, 0xf9, 0xbb, 0x43, 0x05, 0x23, 0xe8, 0x68, 0xa7, 0x4b, 0xbc, 0x58,
|
||||||
0xe1, 0xd2, 0xe9, 0x08, 0x3c, 0xe0, 0xe9, 0x54, 0x81, 0xa0, 0x0f, 0x17, 0x40, 0x70, 0x69, 0x1e,
|
0xb8, 0x74, 0x36, 0x06, 0x0f, 0x78, 0x3c, 0x53, 0x20, 0xe8, 0xc3, 0x05, 0x10, 0x5c, 0x5a, 0x04,
|
||||||
0xe4, 0xb0, 0x7e, 0x58, 0xa4, 0x82, 0x4b, 0x3f, 0xf0, 0xbc, 0x15, 0xd4, 0xfc, 0x1c, 0x7b, 0xc0,
|
0x39, 0xaa, 0x1f, 0x15, 0xa9, 0xe0, 0xd2, 0x0f, 0x3c, 0x6f, 0x05, 0x35, 0xbf, 0xc0, 0x1e, 0x70,
|
||||||
0x99, 0x89, 0x86, 0x76, 0x62, 0x5a, 0x56, 0x1a, 0x4e, 0xe0, 0x60, 0xca, 0xae, 0xaa, 0x51, 0xcc,
|
0x66, 0xa2, 0xa1, 0x9d, 0x9a, 0x96, 0x95, 0x86, 0x13, 0x38, 0x98, 0xb2, 0xab, 0x6a, 0x14, 0x73,
|
||||||
0x25, 0x77, 0xb8, 0x0f, 0x07, 0x54, 0x21, 0xbc, 0x5e, 0x29, 0xa9, 0xd8, 0x6e, 0x21, 0x84, 0x3f,
|
0xc9, 0x1d, 0xee, 0xc3, 0x01, 0x55, 0x08, 0xaf, 0x57, 0x4a, 0x2a, 0xb6, 0x5b, 0x08, 0xe1, 0x8f,
|
||||||
0x94, 0x3c, 0x06, 0xeb, 0xc2, 0xe8, 0xdd, 0x93, 0x2c, 0x40, 0x4f, 0x70, 0x7a, 0x20, 0xb3, 0xf2,
|
0x24, 0x8f, 0xc1, 0xba, 0x30, 0x7a, 0xf7, 0x25, 0x0b, 0xd0, 0x13, 0x9c, 0x3e, 0xc8, 0xac, 0xfc,
|
||||||
0xdf, 0x7f, 0xa7, 0x60, 0x80, 0x1f, 0x44, 0x60, 0xb8, 0x5f, 0x81, 0x3e, 0xb9, 0xe1, 0x2e, 0xab,
|
0xf7, 0xdf, 0x29, 0x18, 0xe0, 0x07, 0x11, 0x18, 0xee, 0x47, 0xa0, 0x4f, 0x6e, 0xb9, 0xcb, 0xaa,
|
||||||
0x92, 0xbe, 0xcf, 0x90, 0x43, 0x86, 0x01, 0x8e, 0xfc, 0x76, 0x7d, 0xd1, 0x25, 0xbd, 0x3e, 0x98,
|
0x64, 0xe0, 0x33, 0xe4, 0x90, 0x61, 0x80, 0x23, 0x5f, 0x6f, 0x2e, 0x7b, 0xa4, 0x3f, 0x00, 0xd3,
|
||||||
0x66, 0x65, 0x81, 0xa2, 0x58, 0xa4, 0x58, 0x51, 0xd4, 0xca, 0x65, 0x84, 0x52, 0xf1, 0x01, 0xc9,
|
0xac, 0x2c, 0x51, 0x14, 0xcb, 0x14, 0x2b, 0x8a, 0x5a, 0xb9, 0x8c, 0x50, 0x2a, 0x3e, 0x20, 0xf9,
|
||||||
0x7f, 0x51, 0xb1, 0x13, 0x42, 0xa7, 0xb9, 0xa7, 0x5e, 0x9f, 0x98, 0x66, 0x79, 0x6f, 0x16, 0x03,
|
0x0f, 0x2a, 0x76, 0x42, 0xe8, 0x34, 0x0f, 0xd4, 0xeb, 0x53, 0xd3, 0x2c, 0x1f, 0xcc, 0x63, 0x60,
|
||||||
0x6b, 0xa2, 0xfa, 0x28, 0xbe, 0x44, 0xd6, 0xa1, 0x59, 0xf9, 0xd0, 0x28, 0xff, 0x30, 0xda, 0xb5,
|
0x4d, 0x54, 0x1f, 0xc4, 0x87, 0xc8, 0x3a, 0x32, 0x2b, 0x6f, 0x1a, 0xe5, 0x1f, 0x46, 0xa7, 0x96,
|
||||||
0x34, 0x43, 0xb5, 0x95, 0x46, 0xed, 0x7f, 0x7b, 0x01, 0xe6, 0x3a, 0x92, 0xc4, 0x3e, 0xc4, 0x0d,
|
0x66, 0xa8, 0x8e, 0xd2, 0xa8, 0xfd, 0x6f, 0x2f, 0xc0, 0x5c, 0x47, 0x92, 0xd8, 0x87, 0xb8, 0xa1,
|
||||||
0xa5, 0x64, 0x47, 0x08, 0x88, 0x29, 0x00, 0xa8, 0x00, 0xda, 0x35, 0x9d, 0x9b, 0x31, 0x0c, 0x80,
|
0x94, 0xec, 0x08, 0x01, 0x31, 0x05, 0x00, 0x15, 0x40, 0xa7, 0xa6, 0x73, 0x33, 0x86, 0x01, 0x70,
|
||||||
0x53, 0xe2, 0xce, 0x96, 0x09, 0xd2, 0x82, 0x3c, 0x08, 0x06, 0x1b, 0x18, 0xc4, 0x83, 0x67, 0xbc,
|
0x4a, 0xdc, 0xd9, 0x32, 0x41, 0x5a, 0x90, 0x07, 0xc1, 0x60, 0x03, 0x83, 0x78, 0xf0, 0x8c, 0x77,
|
||||||
0xfb, 0x53, 0x98, 0x69, 0xee, 0x1e, 0x8e, 0x4d, 0x02, 0x99, 0x73, 0xca, 0xe1, 0x4d, 0xc4, 0x05,
|
0x7f, 0x0a, 0x33, 0xcd, 0xdd, 0xa3, 0x89, 0x49, 0x20, 0x73, 0xce, 0x38, 0xbc, 0x89, 0xb8, 0x80,
|
||||||
0xe4, 0x70, 0x70, 0xef, 0x64, 0x14, 0x78, 0x90, 0x43, 0xd1, 0xf2, 0x01, 0xd5, 0xf5, 0x9e, 0x89,
|
0x1c, 0x0e, 0xee, 0x9d, 0x8c, 0x03, 0x0f, 0x72, 0x28, 0x5a, 0x3e, 0xa0, 0xba, 0xde, 0x13, 0x51,
|
||||||
0x4a, 0x4e, 0x96, 0x29, 0x39, 0x88, 0xe7, 0x25, 0x5d, 0x33, 0xd2, 0xc5, 0x29, 0xf3, 0xa3, 0x0e,
|
0xc9, 0xc9, 0x32, 0x25, 0x07, 0xf1, 0x3c, 0xa7, 0x6b, 0x46, 0xba, 0x38, 0x63, 0x7e, 0xd4, 0x85,
|
||||||
0xac, 0x41, 0x38, 0x92, 0x98, 0xfd, 0x20, 0x70, 0x59, 0xa6, 0x7e, 0x40, 0x6a, 0x8e, 0xef, 0x39,
|
0x35, 0x08, 0x47, 0x12, 0xb3, 0x1f, 0x04, 0x2e, 0xcb, 0xd4, 0x0f, 0x48, 0xcd, 0xf1, 0x3d, 0xe7,
|
||||||
0x4f, 0x96, 0x79, 0x85, 0xb4, 0xbe, 0xb4, 0x6b, 0xfa, 0x05, 0xb0, 0x0a, 0x24, 0x72, 0x1c, 0x63,
|
0xd1, 0x32, 0xaf, 0x91, 0xd6, 0x87, 0x4e, 0x4d, 0xbf, 0x00, 0x56, 0x81, 0x44, 0x8e, 0x63, 0x6c,
|
||||||
0x0d, 0x52, 0x07, 0x91, 0x3a, 0xd4, 0x79, 0x9a, 0xe1, 0x2d, 0xec, 0xa2, 0x39, 0x35, 0xed, 0x21,
|
0x40, 0xea, 0x22, 0x52, 0x97, 0x3a, 0x8f, 0x73, 0xbc, 0xa5, 0x5d, 0x34, 0xa7, 0xa6, 0x3d, 0xa2,
|
||||||
0x7d, 0x66, 0x33, 0x90, 0x69, 0x0c, 0x45, 0x87, 0xa6, 0x3f, 0x3d, 0xd0, 0xb9, 0x1f, 0x44, 0x9c,
|
0x4f, 0x6c, 0x0e, 0x32, 0x8b, 0xa1, 0xe8, 0xd0, 0xf4, 0x67, 0x4d, 0x9d, 0xfb, 0x41, 0xc4, 0x49,
|
||||||
0x44, 0x20, 0x9e, 0x03, 0x58, 0x6a, 0xda, 0x4a, 0x87, 0x9d, 0x18, 0xc4, 0x03, 0xa6, 0x27, 0x61,
|
0x04, 0xe2, 0x69, 0xc2, 0x52, 0xcb, 0x56, 0x3a, 0xec, 0xc6, 0x20, 0x1e, 0x30, 0x3d, 0x09, 0xcb,
|
||||||
0xb9, 0x69, 0x3f, 0x74, 0xfb, 0xa4, 0x0f, 0xc2, 0x3d, 0x21, 0x6d, 0x2f, 0x8c, 0x12, 0x99, 0x8a,
|
0x2d, 0xfb, 0x4b, 0x6f, 0x40, 0x06, 0x20, 0xdc, 0x53, 0xd2, 0xf1, 0xc2, 0x28, 0x91, 0xa9, 0x78,
|
||||||
0xe7, 0xa1, 0x6f, 0x66, 0xcc, 0x85, 0x49, 0x30, 0x62, 0x31, 0x48, 0xcb, 0x0b, 0x2d, 0xb3, 0x01,
|
0xbe, 0x0c, 0xcc, 0x8c, 0xb9, 0x30, 0x09, 0xc6, 0x2c, 0x06, 0x69, 0x79, 0xa1, 0x65, 0x36, 0xe0,
|
||||||
0xff, 0xe9, 0xab, 0x65, 0x1e, 0xb5, 0x5a, 0xcd, 0x96, 0x99, 0x89, 0xc7, 0x85, 0xdb, 0x98, 0xfd,
|
0x3f, 0x7d, 0xb1, 0xcc, 0xe3, 0x76, 0xbb, 0xd5, 0x36, 0x33, 0xf1, 0xb8, 0x70, 0x1b, 0xb3, 0xbf,
|
||||||
0x95, 0x78, 0x31, 0x43, 0x2d, 0xc4, 0xf6, 0x41, 0xe8, 0x2e, 0x52, 0x4d, 0xcb, 0x96, 0x87, 0x03,
|
0x12, 0x2f, 0x66, 0xa8, 0x85, 0xd8, 0x6e, 0x86, 0xee, 0x32, 0xd5, 0xb4, 0x6c, 0xf9, 0xd2, 0x34,
|
||||||
0x93, 0xfc, 0xff, 0x54, 0xf1, 0x08, 0x86, 0x3a, 0xd6, 0x24, 0xe6, 0x49, 0x24, 0xd4, 0x01, 0x16,
|
0xc9, 0xff, 0x4f, 0x15, 0x8f, 0x60, 0xa8, 0x63, 0x4d, 0x63, 0x9e, 0x44, 0x42, 0x1d, 0x60, 0x89,
|
||||||
0xd8, 0x86, 0x60, 0xa2, 0x74, 0x8d, 0xff, 0x17, 0xf7, 0x51, 0x86, 0x02, 0x34, 0x75, 0x70, 0x38,
|
0x6d, 0x08, 0x26, 0x4a, 0xd7, 0xf8, 0x7f, 0x79, 0x1f, 0x65, 0x28, 0x40, 0x53, 0x07, 0x87, 0x53,
|
||||||
0x51, 0x71, 0xc1, 0x26, 0xc6, 0x22, 0xf6, 0x20, 0xc5, 0x1e, 0xec, 0x84, 0xdd, 0x96, 0x58, 0x95,
|
0x15, 0x17, 0x6c, 0x62, 0x2c, 0x63, 0x0f, 0x53, 0xec, 0xe1, 0x5e, 0xd8, 0x1d, 0x89, 0x55, 0x19,
|
||||||
0x11, 0x23, 0x7d, 0x19, 0xd0, 0x78, 0xe2, 0x85, 0x27, 0x75, 0x42, 0x13, 0xc9, 0xf1, 0x2d, 0x30,
|
0x31, 0xd2, 0x97, 0x01, 0x8d, 0xa7, 0x5e, 0x78, 0x5a, 0x27, 0x34, 0x91, 0x1c, 0xdf, 0x02, 0xc3,
|
||||||
0x2c, 0x81, 0xf1, 0x1a, 0x5e, 0xe0, 0xaf, 0x91, 0xdf, 0x1d, 0xe4, 0x77, 0xcd, 0xfc, 0xee, 0x30,
|
0x12, 0x18, 0xaf, 0xe1, 0x05, 0xfe, 0x1a, 0xf9, 0x5d, 0x33, 0xbf, 0x6b, 0xe5, 0x77, 0x47, 0xf9,
|
||||||
0xbf, 0x6b, 0x19, 0xf9, 0xed, 0x51, 0x7e, 0xf7, 0x29, 0xbf, 0x3b, 0xd6, 0x77, 0x35, 0x45, 0x5e,
|
0x5d, 0xdb, 0xc8, 0x6f, 0x8f, 0xf3, 0xbb, 0x77, 0xf9, 0xdd, 0x89, 0xbe, 0xab, 0x29, 0xf2, 0x7a,
|
||||||
0x6f, 0x31, 0x84, 0xb4, 0x77, 0x92, 0x03, 0x64, 0x12, 0xd7, 0x27, 0x50, 0x21, 0x77, 0xc4, 0x5f,
|
0x8b, 0x11, 0xa4, 0xbd, 0xd3, 0x1c, 0x20, 0x93, 0xb8, 0x3e, 0x81, 0x0a, 0xb9, 0x63, 0xfe, 0x92,
|
||||||
0xd3, 0x93, 0x35, 0x32, 0xfb, 0x87, 0x3b, 0xbb, 0x88, 0xb2, 0x12, 0xe3, 0x20, 0xaf, 0x39, 0xe1,
|
0x9e, 0xac, 0x91, 0xd9, 0x3f, 0xdc, 0xd9, 0x45, 0x94, 0xb5, 0x18, 0xcd, 0xbc, 0xe6, 0x84, 0xdb,
|
||||||
0x76, 0x37, 0x94, 0x66, 0xbe, 0x49, 0x73, 0x19, 0x63, 0x35, 0x5f, 0x87, 0x39, 0xca, 0xe1, 0x8e,
|
0xfd, 0x50, 0x5a, 0xf9, 0x26, 0xad, 0x55, 0x8c, 0xf5, 0x7c, 0x1d, 0xe5, 0x28, 0x47, 0x7b, 0x6e,
|
||||||
0x9b, 0xb4, 0x66, 0x7c, 0xb5, 0x76, 0x44, 0x39, 0xca, 0x37, 0x39, 0xda, 0x95, 0xaf, 0x4f, 0x39,
|
0xd2, 0x9e, 0xf3, 0xd5, 0xde, 0x13, 0xe5, 0x38, 0xdf, 0xe4, 0x78, 0x5f, 0xbe, 0xde, 0xe5, 0x28,
|
||||||
0xca, 0xa7, 0x1d, 0x37, 0x39, 0x9e, 0xf1, 0x75, 0x9c, 0xa1, 0xcc, 0x2b, 0x6b, 0xc0, 0x1c, 0xe6,
|
0xef, 0xf6, 0xdc, 0xe4, 0x64, 0xce, 0xd7, 0x49, 0x86, 0xb2, 0xa8, 0xac, 0x21, 0x73, 0x98, 0xf7,
|
||||||
0x3d, 0xb3, 0x93, 0x5d, 0x88, 0x0d, 0x1a, 0x39, 0xb1, 0xc1, 0x8e, 0xfa, 0x1a, 0x1c, 0x64, 0x1c,
|
0xc4, 0x4e, 0xf7, 0x21, 0x36, 0x6c, 0xe4, 0xc4, 0x86, 0x7b, 0xea, 0x6b, 0xd8, 0xcc, 0x38, 0x1e,
|
||||||
0x0f, 0x0e, 0x76, 0x3c, 0xe4, 0x20, 0xd7, 0xd7, 0xa0, 0xb9, 0xe3, 0x26, 0x87, 0x33, 0xbe, 0x76,
|
0x36, 0xf7, 0x3c, 0xe4, 0x30, 0xd7, 0xd7, 0xb0, 0xb5, 0xe7, 0x26, 0x47, 0x73, 0xbe, 0xf6, 0xd4,
|
||||||
0xd4, 0xd7, 0xa0, 0x95, 0x6f, 0xd2, 0xda, 0x95, 0xaf, 0x5c, 0x5f, 0x83, 0xa3, 0x1d, 0x37, 0xf9,
|
0xd7, 0xb0, 0x9d, 0x6f, 0xd2, 0xde, 0x97, 0xaf, 0x5c, 0x5f, 0xc3, 0xe3, 0x3d, 0x37, 0x79, 0x37,
|
||||||
0x34, 0xe3, 0x6b, 0x47, 0x7d, 0x0d, 0x8e, 0xf3, 0x4d, 0x16, 0xd5, 0x55, 0x53, 0xde, 0x0d, 0x01,
|
0xe7, 0x6b, 0x4f, 0x7d, 0x0d, 0x4f, 0xf2, 0x4d, 0x96, 0xd5, 0x55, 0x53, 0xde, 0x0d, 0x01, 0x15,
|
||||||
0x15, 0x02, 0x4f, 0xae, 0xb3, 0x90, 0xbf, 0xc4, 0x34, 0x5a, 0x47, 0x2f, 0xa5, 0x03, 0x39, 0xa1,
|
0x02, 0x4f, 0xae, 0xb3, 0x90, 0x3f, 0xc7, 0x34, 0xda, 0x44, 0x2f, 0xa5, 0x03, 0x39, 0xa1, 0x1b,
|
||||||
0x13, 0x7b, 0x93, 0xa9, 0x0c, 0x99, 0x10, 0x95, 0x76, 0x2d, 0x45, 0x32, 0x76, 0xc3, 0x3e, 0x37,
|
0x7b, 0xd3, 0x99, 0x0c, 0x99, 0x10, 0x95, 0x4e, 0x2d, 0x45, 0x32, 0xf6, 0xc3, 0xbe, 0x30, 0xed,
|
||||||
0xed, 0x73, 0xee, 0xf3, 0x78, 0x86, 0x98, 0xe1, 0x51, 0x08, 0xaa, 0xeb, 0xe4, 0x95, 0x22, 0xff,
|
0x0b, 0xee, 0xf3, 0x78, 0x8e, 0x98, 0xe1, 0x51, 0x08, 0xaa, 0x9b, 0xe4, 0x95, 0x22, 0x7f, 0x33,
|
||||||
0x6e, 0xda, 0x17, 0xe3, 0x31, 0x73, 0xa4, 0x98, 0x61, 0x63, 0xe0, 0xdc, 0xb4, 0xe3, 0xf0, 0x0e,
|
0xed, 0xcb, 0xc9, 0x84, 0x39, 0x52, 0xcc, 0xb1, 0x31, 0x70, 0x6e, 0xdb, 0x71, 0x74, 0x0f, 0xbd,
|
||||||
0x7a, 0x55, 0x28, 0x7d, 0x26, 0x58, 0xb0, 0x13, 0x1e, 0x61, 0x35, 0x21, 0x2a, 0x64, 0x33, 0xce,
|
0x2a, 0x94, 0x3e, 0x53, 0x2c, 0xd8, 0x09, 0x8f, 0xb0, 0x9a, 0x10, 0x15, 0xb2, 0x1d, 0xe7, 0x0a,
|
||||||
0x25, 0x04, 0xcf, 0x11, 0x4f, 0x42, 0x57, 0x20, 0x7d, 0x03, 0x23, 0x10, 0xd1, 0x9d, 0x8f, 0x2e,
|
0x82, 0xe7, 0x98, 0x27, 0xa1, 0x2b, 0x90, 0xbe, 0x81, 0x11, 0x88, 0xe8, 0xce, 0x47, 0x97, 0x23,
|
||||||
0x47, 0x04, 0xd6, 0xc6, 0x2e, 0x44, 0x6e, 0x47, 0x62, 0x6f, 0x1a, 0x4e, 0xd8, 0xc9, 0x16, 0x8a,
|
0x02, 0x6b, 0x63, 0x17, 0x22, 0xb7, 0x23, 0xb1, 0x37, 0x0d, 0xa7, 0xec, 0x74, 0x07, 0xc5, 0x9e,
|
||||||
0x5d, 0xd3, 0xde, 0x40, 0x2a, 0xcd, 0x7e, 0x51, 0x0c, 0x22, 0x25, 0x50, 0x79, 0xf7, 0x06, 0xdb,
|
0x69, 0x6f, 0x21, 0x95, 0x66, 0xbf, 0x28, 0x06, 0x91, 0x12, 0xa8, 0xbc, 0xfb, 0xc3, 0x5d, 0xf4,
|
||||||
0xe8, 0x75, 0xe6, 0xe9, 0x9d, 0xf9, 0xec, 0x95, 0x2e, 0x52, 0xdd, 0x86, 0x7f, 0x36, 0x8f, 0xdf,
|
0xba, 0x8b, 0xf4, 0xce, 0x7d, 0xf6, 0x42, 0x97, 0xa9, 0xee, 0xc2, 0x3f, 0x5f, 0xc4, 0x1f, 0x40,
|
||||||
0x87, 0xa6, 0xc2, 0x8b, 0x04, 0xb9, 0x4a, 0x58, 0x7a, 0x9c, 0xf7, 0x11, 0xbb, 0x9a, 0x27, 0x76,
|
0x53, 0xe1, 0x45, 0x82, 0x5c, 0x27, 0x2c, 0x3d, 0xce, 0xcf, 0x11, 0xbb, 0x5e, 0x24, 0x76, 0x4b,
|
||||||
0x43, 0x9d, 0x98, 0xbf, 0x0f, 0xff, 0x26, 0xc5, 0xc7, 0x6c, 0x1d, 0x41, 0x59, 0x00, 0xbd, 0x16,
|
0x9d, 0x98, 0xff, 0x1c, 0xfe, 0x6d, 0x8a, 0x8f, 0xd9, 0x3a, 0x82, 0xb2, 0x00, 0x7a, 0x2d, 0x68,
|
||||||
0x34, 0xe4, 0x31, 0x0d, 0x45, 0xe0, 0x09, 0xb1, 0x40, 0x21, 0x4d, 0xb4, 0x83, 0x95, 0x89, 0xb6,
|
0xc8, 0x63, 0x1a, 0x8a, 0xc0, 0x13, 0x62, 0x89, 0x42, 0x9a, 0x68, 0x87, 0x6b, 0x13, 0x6d, 0x3d,
|
||||||
0x9e, 0x26, 0xda, 0x26, 0xdc, 0x18, 0x6b, 0xd3, 0xac, 0xb2, 0x18, 0x30, 0xfa, 0x11, 0xe7, 0x32,
|
0x4d, 0xb4, 0x2d, 0xb8, 0x31, 0x36, 0xa6, 0x59, 0x65, 0x31, 0x60, 0xf4, 0x63, 0xce, 0x65, 0xfe,
|
||||||
0x7f, 0x05, 0xdd, 0x3d, 0x81, 0x0e, 0xcb, 0x7f, 0x4b, 0x05, 0x20, 0xaa, 0xed, 0x9a, 0x87, 0x35,
|
0x0a, 0xba, 0x7b, 0x02, 0x1d, 0x96, 0xff, 0x9a, 0x0a, 0x40, 0x54, 0x3b, 0x35, 0x0f, 0x6b, 0x8e,
|
||||||
0x47, 0x4e, 0x48, 0x04, 0xbe, 0xa9, 0x72, 0x74, 0x2f, 0x14, 0x92, 0x86, 0x0e, 0x23, 0xd8, 0x47,
|
0x9c, 0x90, 0x08, 0x7c, 0x53, 0xe5, 0xe8, 0x7e, 0x28, 0x24, 0x0d, 0x1d, 0x46, 0xb0, 0x8f, 0x52,
|
||||||
0xa9, 0x24, 0x7d, 0x11, 0xaa, 0x54, 0xe9, 0x65, 0x2f, 0x7c, 0x78, 0xb1, 0xf6, 0xcc, 0xa9, 0x07,
|
0x49, 0xfa, 0x32, 0x54, 0xa9, 0xd2, 0xcb, 0x5e, 0xf8, 0xf0, 0x62, 0xe3, 0x99, 0x53, 0x0f, 0xbe,
|
||||||
0xdf, 0x5e, 0xeb, 0x43, 0xdf, 0xd0, 0x27, 0x46, 0xe4, 0xd4, 0x13, 0x33, 0x74, 0xc8, 0xc3, 0x0e,
|
0xbb, 0xd1, 0x87, 0xbe, 0xa5, 0x8f, 0x8c, 0xc8, 0x99, 0x27, 0xe6, 0xe8, 0x90, 0x87, 0x1d, 0xfe,
|
||||||
0x7f, 0x66, 0x31, 0x12, 0xdd, 0x22, 0xba, 0xdb, 0x0e, 0x4e, 0x62, 0x80, 0xcb, 0x22, 0x93, 0x03,
|
0xc4, 0x62, 0x24, 0xba, 0x43, 0x74, 0x77, 0x5d, 0x9c, 0xc4, 0x00, 0x97, 0x45, 0x26, 0x87, 0x8c,
|
||||||
0x46, 0x7d, 0xe9, 0x05, 0x4c, 0xf1, 0x97, 0x3a, 0x38, 0x41, 0xf9, 0xc6, 0xe9, 0x8b, 0x6d, 0xfc,
|
0xfa, 0xd2, 0x0b, 0x98, 0xe2, 0x2f, 0x75, 0x70, 0x82, 0xf2, 0x8d, 0xd3, 0x17, 0xbb, 0xf8, 0x1b,
|
||||||
0x0d, 0x52, 0x8b, 0x7d, 0x80, 0x12, 0x39, 0xa0, 0x1e, 0x74, 0x76, 0x99, 0x0b, 0x85, 0xfe, 0xdb,
|
0xa6, 0x16, 0xfb, 0x05, 0x4a, 0xe4, 0x80, 0x7a, 0xd0, 0xd9, 0x65, 0x2e, 0x14, 0xfa, 0xaf, 0x3b,
|
||||||
0x16, 0xae, 0x6e, 0xee, 0xcc, 0x5c, 0xd4, 0x50, 0x83, 0xd8, 0xb7, 0x4c, 0xbe, 0xf0, 0xf8, 0x89,
|
0xb8, 0xba, 0xbd, 0x37, 0x73, 0x51, 0x43, 0x0d, 0x62, 0xdf, 0x31, 0xf9, 0xcc, 0xe3, 0x47, 0xd2,
|
||||||
0x74, 0x6f, 0x7e, 0x27, 0x0a, 0x4f, 0xc9, 0x16, 0x5e, 0xde, 0x03, 0x3a, 0xd0, 0x12, 0xcc, 0x47,
|
0xbb, 0xfd, 0x46, 0x14, 0x9e, 0x92, 0x2d, 0xbc, 0xfc, 0x0c, 0xe8, 0x40, 0x4b, 0x30, 0x1f, 0x3d,
|
||||||
0x4f, 0xd2, 0xc8, 0xdd, 0x9e, 0xaa, 0x14, 0x95, 0x16, 0xc0, 0x36, 0xb0, 0x4f, 0x50, 0x13, 0x03,
|
0x49, 0x23, 0xf7, 0xfa, 0xaa, 0x52, 0x54, 0x5a, 0x00, 0xdb, 0xc0, 0x3e, 0x41, 0x4d, 0x0c, 0xf0,
|
||||||
0x3c, 0xa8, 0x76, 0x5f, 0xa2, 0xfb, 0x08, 0x13, 0xdb, 0x11, 0x88, 0x08, 0x8d, 0x6a, 0xb3, 0x41,
|
0xa0, 0xda, 0x7d, 0x89, 0xee, 0x23, 0x4c, 0x6c, 0x47, 0x20, 0x22, 0x34, 0xaa, 0xad, 0x06, 0x29,
|
||||||
0x4a, 0xe2, 0xec, 0xfc, 0xb6, 0xdc, 0xae, 0x69, 0x08, 0xbb, 0x00, 0x89, 0x5d, 0x89, 0x69, 0x9f,
|
0x89, 0xf3, 0x8b, 0xbb, 0x72, 0xa7, 0xa6, 0x21, 0xec, 0x02, 0x24, 0x76, 0x25, 0xa6, 0x7d, 0x1e,
|
||||||
0xc5, 0x72, 0x1f, 0x58, 0xc9, 0x81, 0x8a, 0xf4, 0xc0, 0x6a, 0x34, 0x27, 0xd0, 0x3c, 0x9a, 0xd9,
|
0xcb, 0x43, 0x60, 0x25, 0x07, 0x2a, 0xd2, 0x03, 0xab, 0xd1, 0x9c, 0x40, 0xf3, 0x68, 0x66, 0x77,
|
||||||
0x1d, 0xc4, 0xab, 0x44, 0x48, 0x1e, 0x10, 0xac, 0xd1, 0x67, 0xf4, 0x6b, 0xfa, 0xbd, 0x3e, 0xa6,
|
0x10, 0xaf, 0x12, 0x21, 0x79, 0x40, 0xb0, 0x46, 0x9f, 0xd3, 0xaf, 0xe9, 0xf7, 0xfa, 0x98, 0xaa,
|
||||||
0x2a, 0x9b, 0x31, 0xdc, 0x42, 0x9f, 0x66, 0xaf, 0x28, 0x37, 0x2f, 0xfa, 0xbb, 0xd4, 0x85, 0xf3,
|
0x6c, 0xc6, 0x70, 0x0b, 0x7d, 0x9a, 0xbd, 0xa6, 0xdc, 0xbc, 0x1c, 0xec, 0x53, 0x17, 0x2e, 0x9e,
|
||||||
0xa7, 0xda, 0x60, 0xbe, 0xaa, 0x02, 0xbe, 0x49, 0x40, 0x89, 0x58, 0xe5, 0x6e, 0xd1, 0xc4, 0x45,
|
0x6a, 0x8b, 0xf9, 0xaa, 0x0a, 0xf8, 0x36, 0x01, 0x25, 0x62, 0x95, 0xbb, 0x43, 0x13, 0x97, 0x99,
|
||||||
0xe6, 0x5a, 0x43, 0x49, 0xb1, 0xc5, 0x08, 0xc1, 0x0c, 0xa0, 0xe9, 0x2b, 0xf2, 0xf7, 0xb0, 0xd1,
|
0x6b, 0x8d, 0x24, 0xc5, 0x16, 0x23, 0x04, 0x33, 0x80, 0xa6, 0xaf, 0xc8, 0xdf, 0x97, 0xad, 0xee,
|
||||||
0x9d, 0x8e, 0x9a, 0x9f, 0x3f, 0x7f, 0x2e, 0xb0, 0x61, 0x2c, 0xbb, 0x90, 0xf2, 0x18, 0x72, 0x8e,
|
0x74, 0xdc, 0x7a, 0xff, 0xfe, 0x7d, 0x81, 0x0d, 0x63, 0xd5, 0x85, 0x94, 0xc7, 0x90, 0x0b, 0xe4,
|
||||||
0x1c, 0x10, 0x0e, 0xb4, 0xdb, 0x94, 0x4c, 0x63, 0x36, 0xb6, 0xf2, 0xc9, 0xd2, 0xc4, 0x93, 0xd3,
|
0x80, 0x70, 0xa0, 0xdd, 0xa1, 0x64, 0x16, 0xb3, 0x89, 0x95, 0x4f, 0x96, 0xa6, 0x9e, 0x9c, 0x25,
|
||||||
0x64, 0x54, 0x75, 0x78, 0x50, 0xbb, 0x66, 0xee, 0xd7, 0x57, 0x7d, 0xc5, 0x4a, 0x1c, 0x6a, 0x4b,
|
0xe3, 0xaa, 0xc3, 0x83, 0xda, 0x0d, 0x73, 0x3f, 0xbe, 0xe8, 0x2b, 0x56, 0xe2, 0x50, 0x5b, 0xe2,
|
||||||
0x9c, 0xee, 0xfd, 0x39, 0xf2, 0x69, 0xf8, 0x64, 0xda, 0x6a, 0xbd, 0x5d, 0xa3, 0xf6, 0x07, 0xdc,
|
0x74, 0xef, 0xcf, 0xb1, 0x4f, 0xc3, 0x47, 0xd3, 0x56, 0xeb, 0x9d, 0x1a, 0xb5, 0xdf, 0xe0, 0x56,
|
||||||
0x6a, 0xf8, 0xe4, 0x45, 0x48, 0x70, 0x9f, 0x8f, 0xf7, 0x05, 0xec, 0xc5, 0xd0, 0x47, 0x74, 0x98,
|
0xa3, 0x47, 0x2f, 0x42, 0x82, 0x87, 0x7c, 0x72, 0x28, 0x60, 0x2f, 0x86, 0x3e, 0xa2, 0xc3, 0xc4,
|
||||||
0x98, 0xc5, 0x85, 0x35, 0x29, 0xe3, 0x62, 0xa8, 0xcf, 0x8f, 0x96, 0x27, 0x94, 0x08, 0xa8, 0xeb,
|
0x3c, 0x2e, 0x6c, 0x48, 0x19, 0x97, 0x23, 0x7d, 0x7e, 0xb4, 0x3c, 0xa1, 0x44, 0x40, 0x5d, 0x17,
|
||||||
0x62, 0x94, 0x2d, 0x48, 0xa0, 0x7b, 0x56, 0x94, 0x80, 0xb1, 0xa0, 0xa2, 0x56, 0xa3, 0x5e, 0x10,
|
0xa3, 0x6c, 0x41, 0x02, 0xbd, 0xf3, 0xa2, 0x04, 0x8c, 0x25, 0x15, 0xb5, 0x1b, 0xf5, 0x82, 0x00,
|
||||||
0x00, 0x52, 0x0c, 0xa0, 0x8f, 0x5c, 0x32, 0x5f, 0x94, 0x78, 0xd1, 0xae, 0x6c, 0xa3, 0xeb, 0x09,
|
0x14, 0xc5, 0xd4, 0x25, 0x04, 0x70, 0x03, 0x9d, 0x5e, 0x81, 0xe6, 0xb7, 0x6f, 0xeb, 0x9b, 0x8c,
|
||||||
0x74, 0x67, 0x77, 0x9d, 0x85, 0x42, 0xfd, 0x33, 0x84, 0x66, 0x11, 0xa2, 0xc8, 0xe0, 0xb2, 0xb3,
|
0x4c, 0xac, 0x8d, 0xf6, 0x3a, 0x9a, 0x01, 0xf4, 0xa6, 0x2b, 0x2e, 0x81, 0x5a, 0xd4, 0x96, 0x67,
|
||||||
0x0e, 0x08, 0x4a, 0x1e, 0x23, 0x85, 0xea, 0x6e, 0x00, 0x6b, 0x66, 0x69, 0x72, 0x1d, 0x00, 0xf8,
|
0xcc, 0x8d, 0xd5, 0xee, 0x79, 0x02, 0x43, 0x84, 0xbb, 0xc9, 0xea, 0xa1, 0xa6, 0x1a, 0x01, 0x5b,
|
||||||
0x82, 0x32, 0x20, 0xdc, 0xcb, 0x58, 0x07, 0x04, 0x75, 0x4c, 0xd7, 0x0b, 0x02, 0xe8, 0x8d, 0xf7,
|
0x10, 0x99, 0x86, 0x57, 0xdd, 0x15, 0x20, 0x23, 0x85, 0x6a, 0xe6, 0x50, 0xbd, 0x75, 0x60, 0x29,
|
||||||
0x48, 0x0e, 0xbd, 0xd6, 0xc1, 0x80, 0xb3, 0x1c, 0xe8, 0xb7, 0x35, 0x6e, 0x42, 0x89, 0xb1, 0x68,
|
0x54, 0x2b, 0x4b, 0xbd, 0x1b, 0xe9, 0xbc, 0xcb, 0x20, 0xc8, 0x01, 0xf9, 0x3a, 0xf3, 0x24, 0xdb,
|
||||||
0x10, 0xeb, 0x47, 0x8d, 0x0c, 0x9d, 0x7a, 0xdf, 0x0d, 0x5e, 0x6b, 0xa0, 0x97, 0x82, 0x75, 0x68,
|
0x44, 0xea, 0x24, 0x07, 0x4c, 0xb3, 0xf2, 0x46, 0x87, 0x7c, 0x5f, 0x84, 0xdc, 0x45, 0x1a, 0x9c,
|
||||||
0x87, 0xf7, 0xc2, 0x31, 0x37, 0xd0, 0x46, 0x54, 0x1c, 0x81, 0x80, 0x06, 0x16, 0x52, 0x34, 0xeb,
|
0x5c, 0x79, 0x06, 0x1e, 0xd8, 0xd8, 0x04, 0xd4, 0x46, 0xc9, 0x05, 0x01, 0x34, 0xfd, 0x07, 0x24,
|
||||||
0xfb, 0x2d, 0x6e, 0x57, 0xaf, 0xcf, 0x6b, 0x95, 0x04, 0x42, 0x95, 0x43, 0x5f, 0x79, 0xec, 0x60,
|
0x87, 0xde, 0x18, 0x39, 0x20, 0xec, 0xe4, 0x40, 0x5f, 0x37, 0x4a, 0x1a, 0xb4, 0x31, 0x00, 0xb3,
|
||||||
0xcc, 0x7b, 0x25, 0xa3, 0xbc, 0xce, 0xd9, 0xe2, 0x66, 0x5f, 0xb3, 0x74, 0x9c, 0xaa, 0x39, 0x8f,
|
0x62, 0x9b, 0x22, 0x04, 0x25, 0xc6, 0xb2, 0x2f, 0x6c, 0x9e, 0xb2, 0x32, 0x8c, 0x67, 0x87, 0x6e,
|
||||||
0xb2, 0x64, 0x42, 0x83, 0x80, 0x12, 0x87, 0xc7, 0x58, 0x2b, 0x80, 0x48, 0xb6, 0x10, 0x1a, 0x5c,
|
0xf0, 0x52, 0x03, 0x93, 0x2c, 0x38, 0x86, 0x8e, 0x75, 0x5e, 0x38, 0xe1, 0x06, 0xba, 0x87, 0x0a,
|
||||||
0xa6, 0x84, 0xb2, 0xf8, 0x4d, 0xb0, 0xa7, 0xe5, 0xe3, 0x31, 0x74, 0xba, 0x85, 0xd3, 0xfd, 0x76,
|
0xa1, 0x10, 0xcb, 0xc1, 0x39, 0x8a, 0x1e, 0xfd, 0x79, 0x47, 0xc4, 0xa9, 0xd7, 0x17, 0x8d, 0x8f,
|
||||||
0xb7, 0xf2, 0x74, 0xfb, 0x07, 0xad, 0x56, 0x7a, 0x40, 0x75, 0x67, 0xcc, 0xac, 0x16, 0xc3, 0x14,
|
0x04, 0x42, 0x55, 0x82, 0x1f, 0x79, 0xec, 0x60, 0xb8, 0x7f, 0x21, 0xe3, 0xbc, 0xc4, 0xdb, 0x11,
|
||||||
0x46, 0xa9, 0xd9, 0x7c, 0x59, 0xeb, 0x85, 0x05, 0x59, 0x07, 0xe8, 0x60, 0x69, 0x76, 0xf2, 0xd3,
|
0x61, 0x3e, 0x66, 0x95, 0x48, 0x6a, 0x8d, 0x79, 0x82, 0x21, 0x53, 0x1a, 0x04, 0x94, 0x38, 0x3c,
|
||||||
0x78, 0x7c, 0xec, 0xa8, 0x19, 0xff, 0x3d, 0xe6, 0xa5, 0xb1, 0x17, 0x07, 0x2f, 0x34, 0x66, 0x50,
|
0xc6, 0x32, 0x09, 0x44, 0xb2, 0x83, 0xd0, 0xf0, 0x2a, 0x25, 0x94, 0xa5, 0x2e, 0x82, 0xed, 0x3c,
|
||||||
0xa5, 0x78, 0xbe, 0x4b, 0x5c, 0xce, 0x04, 0xa6, 0x77, 0xd0, 0x80, 0xe3, 0x27, 0x2e, 0x53, 0x51,
|
0x9f, 0x4c, 0x40, 0xaa, 0x85, 0xd3, 0x7d, 0xbd, 0x5f, 0x7b, 0xba, 0xc3, 0x66, 0xbb, 0x9d, 0x1e,
|
||||||
0x1d, 0x84, 0x8f, 0x9c, 0x89, 0x24, 0xc2, 0x30, 0x59, 0xd5, 0x81, 0x8a, 0x05, 0xd9, 0x3c, 0x60,
|
0x50, 0xdd, 0x19, 0x73, 0xe7, 0xc2, 0x08, 0x8d, 0x01, 0x7a, 0x3e, 0x5a, 0xd7, 0x7a, 0x61, 0x41,
|
||||||
0x55, 0x1a, 0xd5, 0x45, 0xcb, 0xaf, 0xdc, 0x03, 0x61, 0x9f, 0x41, 0x96, 0xc7, 0xe4, 0xa7, 0xd3,
|
0xd6, 0xfc, 0x3a, 0x58, 0x95, 0x9e, 0xfe, 0x32, 0x99, 0x9c, 0x38, 0xea, 0xf3, 0xc6, 0x67, 0x4c,
|
||||||
0x69, 0xce, 0xe8, 0x2d, 0x57, 0x40, 0x79, 0xcb, 0xac, 0x26, 0xe7, 0x8a, 0x5f, 0xa3, 0xc0, 0x30,
|
0xc9, 0x13, 0x2f, 0x0e, 0x9e, 0x69, 0xcc, 0xa0, 0x40, 0xf3, 0x7c, 0x97, 0xb8, 0x9c, 0x09, 0xac,
|
||||||
0x05, 0x6e, 0x77, 0x62, 0x56, 0xef, 0xba, 0xc4, 0xa7, 0x31, 0x0b, 0xad, 0xf9, 0xee, 0x7a, 0x6f,
|
0x6c, 0x40, 0x03, 0x8e, 0x9f, 0xb8, 0x4c, 0x25, 0x34, 0x10, 0x3e, 0x72, 0x26, 0x92, 0x08, 0x33,
|
||||||
0xfb, 0x22, 0x48, 0x7c, 0x2a, 0x33, 0x4c, 0xfd, 0x7d, 0x63, 0x5b, 0xf2, 0x3c, 0x4b, 0x93, 0xbb,
|
0x44, 0x55, 0xc7, 0x68, 0x16, 0x64, 0xa3, 0x90, 0x75, 0x15, 0x84, 0xae, 0xd7, 0x7e, 0xe7, 0x1e,
|
||||||
0xc6, 0xf1, 0xc2, 0xe7, 0x74, 0x8c, 0xa5, 0x54, 0x57, 0x40, 0xc6, 0x51, 0x70, 0xa6, 0xfe, 0xb3,
|
0x08, 0xfb, 0x1c, 0x0a, 0x1c, 0xcc, 0xfb, 0xba, 0x92, 0xc8, 0x19, 0xbd, 0xe3, 0x0a, 0x28, 0x9f,
|
||||||
0x1e, 0x06, 0x1e, 0xfa, 0xea, 0xb3, 0x70, 0x22, 0xa7, 0xe0, 0xc9, 0x07, 0x19, 0x1d, 0xc1, 0x09,
|
0x16, 0xa8, 0x8f, 0x06, 0x8a, 0x5f, 0xa3, 0xc0, 0x30, 0x05, 0x6e, 0xf7, 0x62, 0x56, 0xef, 0xba,
|
||||||
0x4b, 0x19, 0xd1, 0x2c, 0x08, 0xac, 0x58, 0x1c, 0xea, 0xfb, 0x50, 0x3c, 0x30, 0x3c, 0xb6, 0x90,
|
0xc2, 0xa7, 0x31, 0xcf, 0x2a, 0xf9, 0xee, 0x7a, 0x6f, 0xfb, 0x32, 0x48, 0x7c, 0x2a, 0x33, 0x4c,
|
||||||
0x8b, 0xf6, 0x71, 0xb6, 0x3c, 0xe3, 0xc8, 0x54, 0x50, 0x88, 0xef, 0xf3, 0xb1, 0x5d, 0xd5, 0xa0,
|
0xfd, 0x69, 0x67, 0x57, 0xdd, 0x70, 0x9e, 0xd6, 0x35, 0x1a, 0xc7, 0x0b, 0x9f, 0xd2, 0x09, 0x9e,
|
||||||
0x10, 0x58, 0xf3, 0x4a, 0x69, 0x8d, 0x02, 0x51, 0x48, 0x2b, 0x74, 0xf0, 0xf1, 0xa7, 0xcf, 0xc7,
|
0x52, 0x5d, 0x01, 0x19, 0xa7, 0xe0, 0x99, 0xfa, 0xcf, 0xfb, 0x18, 0x73, 0xe9, 0x8b, 0xcf, 0xc2,
|
||||||
0xc7, 0xc7, 0xa7, 0xa4, 0x3d, 0xb2, 0x8d, 0x8e, 0xff, 0x16, 0x3e, 0x55, 0xc8, 0xcd, 0xb7, 0xfb,
|
0xa9, 0x9c, 0x41, 0xc0, 0x69, 0x66, 0x74, 0x04, 0x27, 0x2c, 0x65, 0x44, 0xb3, 0x20, 0xb0, 0x58,
|
||||||
0x7b, 0x82, 0xc5, 0x3d, 0x56, 0x97, 0x38, 0xd4, 0x26, 0xc8, 0xb4, 0xc3, 0xc3, 0x10, 0x83, 0x26,
|
0x73, 0xa8, 0xef, 0x43, 0xdd, 0xc4, 0xf0, 0xd8, 0x42, 0x2e, 0xdb, 0xc7, 0xf9, 0xea, 0x78, 0x27,
|
||||||
0x1c, 0x02, 0xce, 0xcf, 0xe2, 0x90, 0xfa, 0x64, 0xca, 0x85, 0x14, 0x2a, 0xe4, 0x6b, 0xc3, 0x0b,
|
0x53, 0x41, 0x21, 0x06, 0x2f, 0xa6, 0x35, 0x55, 0x7e, 0x43, 0x4e, 0xc9, 0x8b, 0xc4, 0x0d, 0x0a,
|
||||||
0xe8, 0x1b, 0xf1, 0x02, 0x88, 0xf4, 0x52, 0x9d, 0x11, 0x18, 0x8b, 0xa0, 0x14, 0x84, 0x0c, 0x16,
|
0x44, 0x21, 0xad, 0xd1, 0xc1, 0xdb, 0x5f, 0xde, 0x9f, 0x9c, 0x9c, 0x9c, 0x91, 0xce, 0xd8, 0x36,
|
||||||
0xaa, 0x32, 0x79, 0xac, 0x86, 0x76, 0x90, 0x75, 0x46, 0x73, 0x9c, 0x1a, 0xe0, 0xbd, 0x64, 0xc4,
|
0xba, 0xfe, 0x6b, 0xf8, 0x58, 0x21, 0xb7, 0x9f, 0x3e, 0x7f, 0x26, 0xd8, 0xd7, 0x60, 0x61, 0x8d,
|
||||||
0x04, 0xa6, 0x25, 0x01, 0x01, 0x09, 0x4a, 0x7d, 0x2c, 0x58, 0x48, 0x02, 0x65, 0x0c, 0x0f, 0x19,
|
0xf3, 0x7c, 0x82, 0x4c, 0x3b, 0x3c, 0x0c, 0x31, 0xa6, 0xc1, 0x21, 0xe0, 0xfc, 0x2c, 0x0e, 0xa9,
|
||||||
0x62, 0x01, 0x2d, 0x78, 0x10, 0x2c, 0xd6, 0x62, 0xa4, 0x90, 0x13, 0x08, 0xba, 0x9a, 0xb2, 0x06,
|
0x4f, 0x66, 0x5c, 0x48, 0xa1, 0xb2, 0x9d, 0x36, 0xbc, 0x80, 0xbe, 0x12, 0x2f, 0x80, 0xb4, 0x22,
|
||||||
0xa3, 0x04, 0x7e, 0x87, 0xec, 0x48, 0xd8, 0xc7, 0x7f, 0xab, 0xe4, 0x8c, 0x82, 0xd1, 0x30, 0xb8,
|
0xd5, 0x19, 0x81, 0xb1, 0x08, 0xaa, 0x60, 0x48, 0xde, 0xa1, 0xea, 0x10, 0x26, 0x6a, 0x5e, 0x09,
|
||||||
0x77, 0xc9, 0xc5, 0xb0, 0x8f, 0x5c, 0x03, 0x95, 0x40, 0x1d, 0x0b, 0x29, 0x23, 0x7b, 0x58, 0x5c,
|
0x09, 0x77, 0xbc, 0xc0, 0xa9, 0x01, 0xde, 0x4b, 0xc6, 0x4c, 0x60, 0x46, 0x16, 0x10, 0xb2, 0xa0,
|
||||||
0xe1, 0xf1, 0xca, 0x2b, 0xad, 0x5d, 0x09, 0xa3, 0x68, 0xdd, 0x6a, 0x71, 0x85, 0x75, 0xaf, 0x10,
|
0xcb, 0xc1, 0x5a, 0x8d, 0x24, 0x50, 0xc1, 0xf1, 0x90, 0x21, 0x16, 0xd0, 0x82, 0x07, 0xc1, 0x62,
|
||||||
0xec, 0x6e, 0xae, 0xa8, 0x08, 0xae, 0xf5, 0xc2, 0xbc, 0x4c, 0xd1, 0xfb, 0xda, 0x57, 0x7c, 0xa9,
|
0x2d, 0x46, 0x0a, 0xe9, 0x90, 0xa0, 0xab, 0x29, 0x6b, 0x30, 0x4a, 0xe0, 0x77, 0xc8, 0x8e, 0x84,
|
||||||
0x7e, 0x98, 0x37, 0xc6, 0xce, 0x95, 0xb2, 0x8f, 0x79, 0x5b, 0x5c, 0x39, 0xf5, 0xea, 0xbc, 0xa7,
|
0x7d, 0xfc, 0xd7, 0x4a, 0xce, 0x28, 0x18, 0x0d, 0x83, 0x7b, 0x97, 0x5c, 0x8e, 0x06, 0xc8, 0x35,
|
||||||
0xba, 0x39, 0xae, 0xcf, 0x0f, 0xc0, 0xd2, 0xa0, 0xa9, 0x0c, 0x9a, 0x9c, 0x25, 0x72, 0x0a, 0x92,
|
0x50, 0x09, 0xd4, 0xb1, 0x90, 0x32, 0xb2, 0x87, 0x75, 0x25, 0x1e, 0xaf, 0xbc, 0xd6, 0xda, 0x95,
|
||||||
0x7d, 0x62, 0x61, 0x21, 0xd2, 0x75, 0x7e, 0x59, 0x64, 0xa4, 0x69, 0x66, 0x45, 0xbc, 0x71, 0xee,
|
0x30, 0x8a, 0xd6, 0xad, 0x16, 0xd7, 0x58, 0xf7, 0x1a, 0xc1, 0xee, 0xe7, 0x8a, 0x8a, 0xe0, 0x46,
|
||||||
0x33, 0x1a, 0x2b, 0xf1, 0x2b, 0x44, 0x10, 0x10, 0xf3, 0x55, 0x2d, 0xef, 0xea, 0x40, 0x5c, 0x25,
|
0x2f, 0xcc, 0x2b, 0x34, 0xbd, 0xaf, 0x7d, 0xcd, 0x57, 0x4a, 0xa7, 0x45, 0x63, 0xec, 0x5e, 0x2b,
|
||||||
0xaa, 0xd4, 0x7c, 0x47, 0xe6, 0x19, 0xa1, 0x6c, 0x56, 0x64, 0x9d, 0x21, 0x8e, 0x1a, 0x55, 0xd6,
|
0xfb, 0x58, 0xb4, 0xc5, 0xb5, 0x03, 0xbf, 0xee, 0xcf, 0x14, 0x76, 0x27, 0xf5, 0xc5, 0xd9, 0x5f,
|
||||||
0xc1, 0xa4, 0x93, 0x0f, 0x22, 0x9b, 0x36, 0xda, 0x77, 0x51, 0xb1, 0xb8, 0xf6, 0x4f, 0xea, 0x55,
|
0x1a, 0x34, 0x95, 0x41, 0x93, 0xf3, 0x44, 0xce, 0x40, 0xb2, 0x8f, 0x2c, 0x2c, 0x44, 0xba, 0xee,
|
||||||
0xf9, 0xd0, 0x26, 0xb5, 0xe2, 0xb6, 0x6a, 0x53, 0xdb, 0x48, 0x9b, 0x11, 0x7c, 0xda, 0x56, 0xa6,
|
0x6f, 0xcb, 0x8c, 0xb4, 0xcc, 0xac, 0x7f, 0x31, 0x2e, 0x7c, 0x46, 0x63, 0x25, 0x7e, 0x85, 0x08,
|
||||||
0x7f, 0xd3, 0x82, 0xec, 0xc4, 0x20, 0xbb, 0x78, 0xa5, 0x25, 0xa4, 0x2a, 0xbe, 0x19, 0x6e, 0x31,
|
0x02, 0x62, 0xbe, 0x6a, 0x63, 0x5c, 0x1d, 0x88, 0xab, 0x44, 0x55, 0xd9, 0x3f, 0x91, 0x79, 0xc6,
|
||||||
0x85, 0x8c, 0x60, 0xff, 0x6e, 0xb0, 0x36, 0xe9, 0x1a, 0xab, 0x87, 0xa0, 0x69, 0xa7, 0x80, 0x92,
|
0x28, 0x9b, 0x35, 0x59, 0x67, 0x84, 0x53, 0x56, 0x95, 0x75, 0x30, 0xe9, 0xe4, 0x33, 0xd8, 0x96,
|
||||||
0x48, 0x0f, 0xea, 0x40, 0x20, 0x82, 0x4e, 0xc3, 0xa3, 0x3e, 0x78, 0x67, 0x8c, 0xae, 0x8a, 0x6d,
|
0x8d, 0xf6, 0x5d, 0x54, 0x2c, 0xae, 0xfd, 0x93, 0x7a, 0x55, 0x3e, 0xb4, 0x4d, 0xad, 0xb8, 0xad,
|
||||||
0x07, 0x14, 0xae, 0xe0, 0x6f, 0x50, 0xc2, 0x82, 0x1f, 0x26, 0xd8, 0xb1, 0xa5, 0x9e, 0x89, 0x5f,
|
0xda, 0xd4, 0x36, 0xd2, 0x3e, 0x0c, 0x9f, 0x76, 0x75, 0x28, 0x9f, 0xb4, 0x20, 0xbb, 0x31, 0xc8,
|
||||||
0x07, 0x94, 0x19, 0xdd, 0x32, 0x04, 0xc9, 0xdc, 0x51, 0x51, 0x8a, 0x60, 0x13, 0xe8, 0x3c, 0x5c,
|
0x2e, 0x5e, 0x6b, 0x09, 0xa9, 0x8a, 0x6f, 0x47, 0x3b, 0x4c, 0x21, 0x23, 0x38, 0xb8, 0x1f, 0x6e,
|
||||||
0x32, 0xe6, 0x88, 0xcc, 0xe1, 0x45, 0x9c, 0x79, 0xfe, 0x87, 0x2c, 0x70, 0x40, 0x87, 0x13, 0x2f,
|
0x4c, 0xba, 0xc6, 0xfa, 0xf9, 0x6f, 0xda, 0x24, 0xa1, 0x24, 0xd2, 0x83, 0x3a, 0x10, 0x88, 0xa0,
|
||||||
0xc4, 0x65, 0x63, 0xd9, 0x17, 0x6e, 0xbe, 0x3d, 0x0c, 0x2f, 0x06, 0x0b, 0x42, 0x38, 0xac, 0x6b,
|
0xce, 0xf1, 0xa8, 0x0f, 0xde, 0x19, 0xa3, 0xab, 0x62, 0xc7, 0x05, 0x35, 0x3b, 0xf8, 0x1b, 0x54,
|
||||||
0xd6, 0xfb, 0xe9, 0x1e, 0x05, 0xf9, 0x65, 0x5b, 0xcf, 0x64, 0xf8, 0xad, 0x7f, 0x36, 0x5c, 0x94,
|
0xef, 0xe0, 0x87, 0x09, 0x36, 0xab, 0xa9, 0x67, 0xe2, 0x87, 0x11, 0x65, 0x46, 0x77, 0x0c, 0x41,
|
||||||
0xe3, 0xd1, 0xa1, 0x26, 0x71, 0xee, 0x7b, 0x78, 0xc4, 0x5e, 0x77, 0x83, 0x37, 0xde, 0x7c, 0x3b,
|
0x32, 0x77, 0x54, 0x94, 0x22, 0xd8, 0x04, 0x9a, 0x2e, 0x97, 0x4c, 0x38, 0x22, 0x73, 0x78, 0x11,
|
||||||
0xef, 0x75, 0x17, 0xb3, 0x43, 0xc6, 0x41, 0xea, 0x3f, 0xf7, 0x3c, 0xf2, 0x9c, 0x4d, 0x14, 0xba,
|
0x67, 0x9e, 0xff, 0x26, 0x0b, 0x1c, 0xd0, 0xdc, 0xc5, 0x4b, 0x71, 0xd9, 0x58, 0xf5, 0x85, 0xdb,
|
||||||
0x4b, 0x4a, 0x54, 0x69, 0xef, 0x12, 0xa7, 0xcd, 0xdb, 0xb1, 0x2f, 0x97, 0xb0, 0x95, 0xd4, 0xfb,
|
0x4f, 0x5f, 0x46, 0x97, 0xc3, 0x25, 0x21, 0x1c, 0xd5, 0x35, 0xeb, 0x83, 0x74, 0x8f, 0x82, 0xfc,
|
||||||
0xc9, 0x08, 0xda, 0xdd, 0x69, 0x71, 0x8a, 0xb1, 0xc5, 0xf4, 0x3a, 0x37, 0x33, 0x1f, 0xde, 0xda,
|
0xb2, 0xad, 0xe7, 0x32, 0xfc, 0x34, 0x38, 0x1f, 0x2d, 0xcb, 0xf1, 0xf8, 0x48, 0x93, 0xb8, 0xf0,
|
||||||
0x89, 0xbf, 0xdb, 0x87, 0x83, 0xbf, 0xa4, 0x5c, 0xe1, 0xc2, 0xca, 0x24, 0x56, 0x78, 0xf0, 0xdc,
|
0x3d, 0x3c, 0x62, 0xbf, 0xb7, 0xc5, 0x1b, 0x6f, 0x3f, 0x5d, 0xf4, 0x7b, 0xcb, 0xd9, 0x21, 0xe3,
|
||||||
0xf8, 0xa3, 0xe8, 0xc8, 0xb0, 0xf4, 0x4f, 0xfa, 0xf1, 0xfc, 0xa0, 0x65, 0x6b, 0x94, 0xc6, 0xbd,
|
0x20, 0xf5, 0x9f, 0xcf, 0x3c, 0xf2, 0x9c, 0x6d, 0x14, 0x7a, 0x2b, 0x4a, 0x54, 0x69, 0xef, 0x0a,
|
||||||
0x95, 0x80, 0xfe, 0xe0, 0x09, 0x64, 0x7a, 0x0c, 0x6e, 0x90, 0x6e, 0xd0, 0xb6, 0xa1, 0x2e, 0x75,
|
0x07, 0xed, 0xbb, 0xb1, 0xaf, 0x56, 0xb0, 0x95, 0xd4, 0x07, 0xc9, 0x18, 0x3a, 0xfd, 0x59, 0x71,
|
||||||
0x27, 0x8c, 0xf4, 0xfa, 0x2a, 0x01, 0xe1, 0x8a, 0x8f, 0x85, 0x2a, 0xd1, 0x1e, 0x07, 0xbb, 0xa9,
|
0x80, 0xb3, 0xc3, 0xf4, 0xba, 0xb7, 0x73, 0x1f, 0xde, 0x39, 0x84, 0xf8, 0x69, 0x1f, 0x0e, 0xfe,
|
||||||
0xb5, 0x7f, 0x9d, 0x8d, 0xa0, 0x2c, 0xfb, 0x17, 0xe6, 0x2d, 0x55, 0x7b, 0xe8, 0xd4, 0x47, 0xa6,
|
0x92, 0x72, 0x8d, 0x0b, 0x2b, 0x93, 0x58, 0xe3, 0xc1, 0x0b, 0x93, 0x9f, 0xa2, 0x23, 0xc3, 0xd2,
|
||||||
0xb0, 0x37, 0xc8, 0xb7, 0x6a, 0x64, 0x4d, 0x78, 0x9f, 0x43, 0x3e, 0x46, 0x8e, 0x34, 0x91, 0x05,
|
0x3f, 0xe9, 0xc7, 0x8b, 0x33, 0xa6, 0x9d, 0x51, 0x1a, 0xf7, 0x56, 0x02, 0xfa, 0x83, 0x27, 0x90,
|
||||||
0x8f, 0xbe, 0xba, 0xde, 0x18, 0xdb, 0xa1, 0x2d, 0xb4, 0x09, 0xba, 0xdd, 0x5b, 0xe1, 0x5b, 0xc3,
|
0xe9, 0x31, 0xb8, 0x41, 0xba, 0x41, 0xdb, 0x86, 0xba, 0xd4, 0x9d, 0x32, 0xd2, 0x1f, 0xa8, 0x04,
|
||||||
0x55, 0x6f, 0x35, 0x5e, 0xbd, 0xbe, 0x50, 0x7c, 0x63, 0xcd, 0xbd, 0xad, 0x85, 0xbb, 0xea, 0x6b,
|
0x84, 0x2b, 0x3e, 0x16, 0xaa, 0x44, 0x7b, 0x1c, 0xec, 0xa6, 0xd6, 0xfe, 0x75, 0x3e, 0x86, 0xb2,
|
||||||
0x53, 0x81, 0xf0, 0x10, 0x56, 0xc0, 0x4a, 0xf4, 0x28, 0x63, 0xa3, 0x75, 0x5d, 0xa9, 0x99, 0xdf,
|
0xec, 0x5f, 0x98, 0xb7, 0x54, 0xed, 0xa1, 0x53, 0x1f, 0x99, 0xc1, 0xde, 0x20, 0xdf, 0xaa, 0x91,
|
||||||
0x5d, 0x58, 0x83, 0x22, 0x77, 0xcb, 0xa8, 0xef, 0x0a, 0x2a, 0x77, 0x32, 0x37, 0xcf, 0x24, 0xdb,
|
0xcd, 0x1f, 0x06, 0x1c, 0xf2, 0x31, 0x72, 0xa4, 0x89, 0x2c, 0x79, 0xf4, 0xf5, 0xcd, 0xd6, 0xd8,
|
||||||
0xc7, 0x90, 0x57, 0xe7, 0x80, 0xa2, 0x86, 0x98, 0xc8, 0x16, 0x0a, 0xae, 0x93, 0xe9, 0xe3, 0x64,
|
0x0e, 0x1d, 0xb1, 0x4d, 0xd0, 0xed, 0x5e, 0x0b, 0x9f, 0x59, 0xae, 0xfb, 0xeb, 0xf1, 0xea, 0xf5,
|
||||||
0x6e, 0x1c, 0x99, 0x02, 0xd7, 0x77, 0xad, 0xc2, 0xb0, 0x5a, 0xb7, 0x49, 0xb5, 0x20, 0xff, 0xc6,
|
0xa5, 0xe2, 0x1b, 0x6b, 0xee, 0x5d, 0xdd, 0xeb, 0xf5, 0x40, 0x9b, 0x0a, 0x84, 0x87, 0xb0, 0x02,
|
||||||
0x52, 0x5f, 0xfa, 0x2e, 0xf4, 0xa5, 0x0f, 0x52, 0xcb, 0xd8, 0xc6, 0x06, 0xf4, 0xe6, 0x76, 0xf4,
|
0x56, 0xa2, 0xa7, 0x38, 0x5b, 0xad, 0xeb, 0x5a, 0x8d, 0x3b, 0xef, 0xc3, 0x1a, 0x14, 0xb9, 0x3b,
|
||||||
0x19, 0x76, 0x16, 0xc7, 0xfb, 0x6a, 0x8a, 0x89, 0xa6, 0x16, 0x25, 0x62, 0xea, 0x7b, 0x50, 0x91,
|
0xa6, 0x9c, 0xd7, 0x50, 0xb9, 0x93, 0x85, 0x51, 0x2e, 0xd9, 0x3d, 0x81, 0xbd, 0xbe, 0x00, 0x14,
|
||||||
0xa4, 0x91, 0x81, 0x87, 0x73, 0xe6, 0x0b, 0xa2, 0x1e, 0xe3, 0x97, 0x57, 0x39, 0x85, 0x0a, 0x4c,
|
0x35, 0xbf, 0x45, 0xb6, 0x50, 0x70, 0xdd, 0x4c, 0x1f, 0xa7, 0x0b, 0x93, 0xd8, 0x14, 0xb8, 0xbe,
|
||||||
0xd0, 0xe7, 0x74, 0x0a, 0x86, 0xbf, 0x12, 0xc8, 0x43, 0xb3, 0x51, 0x7a, 0x99, 0xaa, 0xac, 0x8e,
|
0x6f, 0x15, 0x86, 0xd5, 0xba, 0x4d, 0xaa, 0x05, 0xf9, 0x37, 0x56, 0x5a, 0xf2, 0x9f, 0x42, 0x5f,
|
||||||
0xd5, 0x6d, 0x16, 0xef, 0xc3, 0x49, 0x79, 0x56, 0xef, 0x29, 0x4f, 0x92, 0x54, 0x26, 0x68, 0x47,
|
0xf9, 0x16, 0xb7, 0x8a, 0x6d, 0x6c, 0x41, 0x6f, 0xed, 0x46, 0x9f, 0x63, 0x67, 0x71, 0x7c, 0xa0,
|
||||||
0x22, 0x02, 0x2f, 0xc9, 0x58, 0xf4, 0xa2, 0xb9, 0xb6, 0x5b, 0xfb, 0x04, 0x90, 0x57, 0x8e, 0x09,
|
0x06, 0xb8, 0x68, 0x6a, 0x51, 0x22, 0x66, 0xbe, 0x07, 0x15, 0x49, 0x1a, 0x19, 0x78, 0xb8, 0x60,
|
||||||
0x6d, 0x29, 0x40, 0xce, 0xfc, 0x7c, 0xf6, 0xab, 0x99, 0x7f, 0xa4, 0x21, 0xba, 0xe6, 0xaf, 0x58,
|
0xbe, 0x20, 0xea, 0x09, 0x7e, 0x74, 0x96, 0x33, 0xa8, 0xc0, 0x04, 0x7d, 0x4a, 0x07, 0x80, 0xf8,
|
||||||
0x6a, 0x5e, 0xa3, 0x51, 0xe1, 0x8f, 0x24, 0xd6, 0x76, 0x45, 0xf8, 0xbd, 0x8f, 0xc5, 0x90, 0xe7,
|
0x03, 0x89, 0x3c, 0x34, 0x1b, 0xa5, 0xe7, 0x99, 0xca, 0xea, 0x58, 0xdd, 0x66, 0xf1, 0x3e, 0x9c,
|
||||||
0x54, 0xd8, 0xe9, 0xd0, 0xc4, 0x25, 0x31, 0x54, 0xf8, 0xc5, 0x91, 0x42, 0xa7, 0xbb, 0x34, 0x52,
|
0x96, 0xe7, 0xf5, 0x9e, 0xf2, 0x24, 0x49, 0x65, 0x82, 0x76, 0x24, 0x22, 0xf0, 0x92, 0x8c, 0x45,
|
||||||
0x68, 0x34, 0x5a, 0xc0, 0x2c, 0x5e, 0xeb, 0xf5, 0xb5, 0xf3, 0xac, 0x83, 0x66, 0x1d, 0x12, 0x0c,
|
0x2f, 0x32, 0xf3, 0x7e, 0xcc, 0xd5, 0x3e, 0x01, 0xe4, 0x95, 0x63, 0x42, 0x5b, 0x0a, 0x90, 0x73,
|
||||||
0x5e, 0xe7, 0x80, 0x8a, 0xa3, 0x80, 0xa3, 0xfa, 0xb1, 0x69, 0xe3, 0x75, 0x05, 0x8c, 0x91, 0x8d,
|
0x3f, 0x9f, 0xff, 0x60, 0xe8, 0x1f, 0x69, 0x88, 0x6e, 0xf8, 0x0b, 0x96, 0x9a, 0x37, 0x68, 0x54,
|
||||||
0x02, 0x94, 0xaf, 0xe2, 0x75, 0x3d, 0xa1, 0xd6, 0xa7, 0x23, 0x84, 0x81, 0xeb, 0x06, 0x42, 0x9f,
|
0xf8, 0xfb, 0x90, 0x8d, 0x5d, 0x11, 0x7e, 0xea, 0x64, 0x31, 0xe4, 0x39, 0x15, 0x76, 0xba, 0x34,
|
||||||
0x0f, 0x1a, 0x47, 0xa6, 0x8d, 0xd7, 0xf5, 0x84, 0x1a, 0x75, 0xb5, 0x9b, 0xfa, 0xb7, 0x81, 0x54,
|
0x71, 0x49, 0x0c, 0x15, 0x7e, 0x71, 0xf2, 0xd1, 0xed, 0x99, 0x2b, 0xbd, 0x76, 0xa3, 0x0d, 0xcc,
|
||||||
0x43, 0x33, 0xd5, 0x28, 0x72, 0xb5, 0x30, 0x71, 0x80, 0xe0, 0xf9, 0x0b, 0x63, 0x11, 0xd6, 0xf8,
|
0xe2, 0xb5, 0x5e, 0xdf, 0x38, 0x39, 0x68, 0xb6, 0xea, 0x90, 0x60, 0xf0, 0xba, 0x00, 0x54, 0x1c,
|
||||||
0x5a, 0x56, 0x98, 0x5c, 0xb0, 0x42, 0xe8, 0x05, 0x51, 0xcc, 0x9f, 0xab, 0x64, 0xc8, 0xa1, 0xc5,
|
0x16, 0x1c, 0xd7, 0x4f, 0x4c, 0x1b, 0xaf, 0x6b, 0x60, 0xb2, 0xa9, 0x86, 0xf6, 0x55, 0xbc, 0x6e,
|
||||||
0x1e, 0x71, 0x1a, 0xbb, 0xba, 0xdd, 0x40, 0x35, 0xa6, 0xea, 0x22, 0x53, 0xd0, 0x9f, 0xd2, 0x47,
|
0x26, 0xd4, 0x7e, 0x77, 0x8c, 0x30, 0x70, 0xdd, 0x42, 0xe8, 0x7d, 0xb3, 0x71, 0x6c, 0xda, 0x78,
|
||||||
0x3e, 0x0b, 0xc6, 0x7c, 0xb9, 0xf1, 0x6b, 0xf8, 0x7b, 0x3e, 0x6c, 0x1b, 0x73, 0x1f, 0xcd, 0xf1,
|
0xdd, 0x4c, 0xa8, 0x51, 0x57, 0xbb, 0xa9, 0x7f, 0x5b, 0x48, 0x35, 0x34, 0x53, 0x8d, 0x22, 0x57,
|
||||||
0xe3, 0x3d, 0xfc, 0xc3, 0x0f, 0xfc, 0xf8, 0xb5, 0x1f, 0x7f, 0x9f, 0xf7, 0x3f, 0xfc, 0x66, 0x28,
|
0x4b, 0x13, 0x07, 0x08, 0x9e, 0xbf, 0x31, 0x16, 0x61, 0x8d, 0xaf, 0x65, 0x85, 0xc9, 0x05, 0x2b,
|
||||||
0xe8, 0xaf, 0x27, 0x00, 0x00
|
0x84, 0x7e, 0x10, 0xc5, 0xfc, 0xa9, 0x4a, 0x46, 0x1c, 0x5a, 0xec, 0x31, 0xa7, 0xb1, 0xab, 0xdb,
|
||||||
|
0x0d, 0x54, 0x63, 0xaa, 0x2e, 0x32, 0x03, 0xfd, 0x29, 0x7d, 0xe4, 0x63, 0x70, 0xcc, 0x97, 0x5b,
|
||||||
|
0x7f, 0x08, 0xf0, 0x33, 0xdf, 0xf4, 0x8d, 0x85, 0xdf, 0x0b, 0xe0, 0xef, 0x16, 0xe0, 0x1f, 0xfe,
|
||||||
|
0xb6, 0x01, 0x7f, 0xe8, 0x80, 0x3f, 0x4d, 0xfc, 0x1f, 0x61, 0x45, 0x94, 0xf0, 0xaa, 0x28, 0x00,
|
||||||
|
0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -180,7 +180,9 @@ void handleTransitions()
|
|||||||
{
|
{
|
||||||
//handle still pending interface update
|
//handle still pending interface update
|
||||||
if (interfaceUpdateCallMode && millis() - lastInterfaceUpdate > INTERFACE_UPDATE_COOLDOWN) updateInterfaces(interfaceUpdateCallMode);
|
if (interfaceUpdateCallMode && millis() - lastInterfaceUpdate > INTERFACE_UPDATE_COOLDOWN) updateInterfaces(interfaceUpdateCallMode);
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
if (doPublishMqtt) publishMqtt();
|
if (doPublishMqtt) publishMqtt();
|
||||||
|
#endif
|
||||||
|
|
||||||
if (transitionActive && transitionDelayTemp > 0)
|
if (transitionActive && transitionDelayTemp > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -177,8 +177,4 @@ bool initMqtt()
|
|||||||
mqtt->connect();
|
mqtt->connect();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
bool initMqtt(){return false;}
|
|
||||||
void publishMqtt(){}
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -287,8 +287,10 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
|
|||||||
if (t >= 0 && t <= 63999) e131Universe = t;
|
if (t >= 0 && t <= 63999) e131Universe = t;
|
||||||
t = request->arg(F("DA")).toInt();
|
t = request->arg(F("DA")).toInt();
|
||||||
if (t >= 0 && t <= 510) DMXAddress = t;
|
if (t >= 0 && t <= 510) DMXAddress = t;
|
||||||
|
t = request->arg(F("XX")).toInt();
|
||||||
|
if (t >= 0 && t <= 150) DMXSegmentSpacing = t;
|
||||||
t = request->arg(F("DM")).toInt();
|
t = request->arg(F("DM")).toInt();
|
||||||
if (t >= DMX_MODE_DISABLED && t <= DMX_MODE_MULTIPLE_RGBW) DMXMode = t;
|
if (t >= DMX_MODE_DISABLED && t <= DMX_MODE_PRESET) DMXMode = t;
|
||||||
t = request->arg(F("ET")).toInt();
|
t = request->arg(F("ET")).toInt();
|
||||||
if (t > 99 && t <= 65000) realtimeTimeoutMs = t;
|
if (t > 99 && t <= 65000) realtimeTimeoutMs = t;
|
||||||
arlsForceMaxBri = request->hasArg(F("FB"));
|
arlsForceMaxBri = request->hasArg(F("FB"));
|
||||||
@@ -712,7 +714,9 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
|
|||||||
|
|
||||||
lastEditTime = millis();
|
lastEditTime = millis();
|
||||||
if (subPage != 2 && !doReboot) doSerializeConfig = true; //serializeConfig(); //do not save if factory reset or LED settings (which are saved after LED re-init)
|
if (subPage != 2 && !doReboot) doSerializeConfig = true; //serializeConfig(); //do not save if factory reset or LED settings (which are saved after LED re-init)
|
||||||
|
#ifndef WLED_DISABLE_ALEXA
|
||||||
if (subPage == 4) alexaInit();
|
if (subPage == 4) alexaInit();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,9 @@ void WLED::loop()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
handleTime();
|
handleTime();
|
||||||
|
#ifndef WLED_DISABLE_INFRARED
|
||||||
handleIR(); // 2nd call to function needed for ESP32 to return valid results -- should be good for ESP8266, too
|
handleIR(); // 2nd call to function needed for ESP32 to return valid results -- should be good for ESP8266, too
|
||||||
|
#endif
|
||||||
handleConnection();
|
handleConnection();
|
||||||
handleSerial();
|
handleSerial();
|
||||||
handleNotifications();
|
handleNotifications();
|
||||||
@@ -69,7 +71,9 @@ void WLED::loop()
|
|||||||
|
|
||||||
yield();
|
yield();
|
||||||
handleIO();
|
handleIO();
|
||||||
|
#ifndef WLED_DISABLE_INFRARED
|
||||||
handleIR();
|
handleIR();
|
||||||
|
#endif
|
||||||
#ifndef WLED_DISABLE_ALEXA
|
#ifndef WLED_DISABLE_ALEXA
|
||||||
handleAlexa();
|
handleAlexa();
|
||||||
#endif
|
#endif
|
||||||
@@ -140,7 +144,9 @@ void WLED::loop()
|
|||||||
}
|
}
|
||||||
if (millis() - lastMqttReconnectAttempt > 30000 || lastMqttReconnectAttempt == 0) { // lastMqttReconnectAttempt==0 forces immediate broadcast
|
if (millis() - lastMqttReconnectAttempt > 30000 || lastMqttReconnectAttempt == 0) { // lastMqttReconnectAttempt==0 forces immediate broadcast
|
||||||
lastMqttReconnectAttempt = millis();
|
lastMqttReconnectAttempt = millis();
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
initMqtt();
|
initMqtt();
|
||||||
|
#endif
|
||||||
yield();
|
yield();
|
||||||
// refresh WLED nodes list
|
// refresh WLED nodes list
|
||||||
refreshNodeList();
|
refreshNodeList();
|
||||||
@@ -497,8 +503,10 @@ void WLED::setup()
|
|||||||
|
|
||||||
// fill in unique mdns default
|
// fill in unique mdns default
|
||||||
if (strcmp(cmDNS, "x") == 0) sprintf_P(cmDNS, PSTR("wled-%*s"), 6, escapedMac.c_str() + 6);
|
if (strcmp(cmDNS, "x") == 0) sprintf_P(cmDNS, PSTR("wled-%*s"), 6, escapedMac.c_str() + 6);
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
if (mqttDeviceTopic[0] == 0) sprintf_P(mqttDeviceTopic, PSTR("wled/%*s"), 6, escapedMac.c_str() + 6);
|
if (mqttDeviceTopic[0] == 0) sprintf_P(mqttDeviceTopic, PSTR("wled/%*s"), 6, escapedMac.c_str() + 6);
|
||||||
if (mqttClientID[0] == 0) sprintf_P(mqttClientID, PSTR("WLED-%*s"), 6, escapedMac.c_str() + 6);
|
if (mqttClientID[0] == 0) sprintf_P(mqttClientID, PSTR("WLED-%*s"), 6, escapedMac.c_str() + 6);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef WLED_ENABLE_ADALIGHT
|
#ifdef WLED_ENABLE_ADALIGHT
|
||||||
if (Serial.available() > 0 && Serial.peek() == 'I') handleImprovPacket();
|
if (Serial.available() > 0 && Serial.peek() == 'I') handleImprovPacket();
|
||||||
@@ -798,9 +806,11 @@ void WLED::initInterfaces()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef WLED_DISABLE_ALEXA
|
||||||
// init Alexa hue emulation
|
// init Alexa hue emulation
|
||||||
if (alexaEnabled)
|
if (alexaEnabled)
|
||||||
alexaInit();
|
alexaInit();
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef WLED_DISABLE_OTA
|
#ifndef WLED_DISABLE_OTA
|
||||||
if (aOtaEnabled)
|
if (aOtaEnabled)
|
||||||
@@ -846,7 +856,9 @@ void WLED::initInterfaces()
|
|||||||
e131.begin(e131Multicast, e131Port, e131Universe, E131_MAX_UNIVERSE_COUNT);
|
e131.begin(e131Multicast, e131Port, e131Universe, E131_MAX_UNIVERSE_COUNT);
|
||||||
ddp.begin(false, DDP_DEFAULT_PORT);
|
ddp.begin(false, DDP_DEFAULT_PORT);
|
||||||
reconnectHue();
|
reconnectHue();
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
initMqtt();
|
initMqtt();
|
||||||
|
#endif
|
||||||
interfacesInited = true;
|
interfacesInited = true;
|
||||||
wasConnected = true;
|
wasConnected = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,6 +121,7 @@
|
|||||||
#define ESPALEXA_MAXDEVICES 10
|
#define ESPALEXA_MAXDEVICES 10
|
||||||
// #define ESPALEXA_DEBUG
|
// #define ESPALEXA_DEBUG
|
||||||
#include "src/dependencies/espalexa/Espalexa.h"
|
#include "src/dependencies/espalexa/Espalexa.h"
|
||||||
|
#include "src/dependencies/espalexa/EspalexaDevice.h"
|
||||||
#endif
|
#endif
|
||||||
#ifndef WLED_DISABLE_BLYNK
|
#ifndef WLED_DISABLE_BLYNK
|
||||||
#include "src/dependencies/blynk/BlynkSimpleEsp.h"
|
#include "src/dependencies/blynk/BlynkSimpleEsp.h"
|
||||||
@@ -135,7 +136,9 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "src/dependencies/e131/ESPAsyncE131.h"
|
#include "src/dependencies/e131/ESPAsyncE131.h"
|
||||||
|
#ifdef WLED_ENABLE_MQTT
|
||||||
#include "src/dependencies/async-mqtt-client/AsyncMqttClient.h"
|
#include "src/dependencies/async-mqtt-client/AsyncMqttClient.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define ARDUINOJSON_DECODE_UNICODE 0
|
#define ARDUINOJSON_DECODE_UNICODE 0
|
||||||
#include "src/dependencies/json/AsyncJson-v6.h"
|
#include "src/dependencies/json/AsyncJson-v6.h"
|
||||||
@@ -403,12 +406,18 @@ WLED_GLOBAL uint16_t e131Universe _INIT(1); // settings fo
|
|||||||
WLED_GLOBAL uint16_t e131Port _INIT(5568); // DMX in port. E1.31 default is 5568, Art-Net is 6454
|
WLED_GLOBAL uint16_t e131Port _INIT(5568); // DMX in port. E1.31 default is 5568, Art-Net is 6454
|
||||||
WLED_GLOBAL byte DMXMode _INIT(DMX_MODE_MULTIPLE_RGB); // DMX mode (s.a.)
|
WLED_GLOBAL byte DMXMode _INIT(DMX_MODE_MULTIPLE_RGB); // DMX mode (s.a.)
|
||||||
WLED_GLOBAL uint16_t DMXAddress _INIT(1); // DMX start address of fixture, a.k.a. first Channel [for E1.31 (sACN) protocol]
|
WLED_GLOBAL uint16_t DMXAddress _INIT(1); // DMX start address of fixture, a.k.a. first Channel [for E1.31 (sACN) protocol]
|
||||||
|
WLED_GLOBAL uint16_t DMXSegmentSpacing _INIT(0); // Number of void/unused channels between each segments DMX channels
|
||||||
WLED_GLOBAL byte e131LastSequenceNumber[E131_MAX_UNIVERSE_COUNT]; // to detect packet loss
|
WLED_GLOBAL byte e131LastSequenceNumber[E131_MAX_UNIVERSE_COUNT]; // to detect packet loss
|
||||||
WLED_GLOBAL bool e131Multicast _INIT(false); // multicast or unicast
|
WLED_GLOBAL bool e131Multicast _INIT(false); // multicast or unicast
|
||||||
WLED_GLOBAL bool e131SkipOutOfSequence _INIT(false); // freeze instead of flickering
|
WLED_GLOBAL bool e131SkipOutOfSequence _INIT(false); // freeze instead of flickering
|
||||||
WLED_GLOBAL uint16_t pollReplyCount _INIT(0); // count number of replies for ArtPoll node report
|
WLED_GLOBAL uint16_t pollReplyCount _INIT(0); // count number of replies for ArtPoll node report
|
||||||
|
|
||||||
|
// mqtt
|
||||||
|
WLED_GLOBAL unsigned long lastMqttReconnectAttempt _INIT(0); // used for other periodic tasks too
|
||||||
|
#ifndef WLED_DISABLE_MQTT
|
||||||
|
WLED_GLOBAL AsyncMqttClient *mqtt _INIT(NULL);
|
||||||
WLED_GLOBAL bool mqttEnabled _INIT(false);
|
WLED_GLOBAL bool mqttEnabled _INIT(false);
|
||||||
|
WLED_GLOBAL char mqttStatusTopic[40] _INIT(""); // this must be global because of async handlers
|
||||||
WLED_GLOBAL char mqttDeviceTopic[33] _INIT(""); // main MQTT topic (individual per device, default is wled/mac)
|
WLED_GLOBAL char mqttDeviceTopic[33] _INIT(""); // main MQTT topic (individual per device, default is wled/mac)
|
||||||
WLED_GLOBAL char mqttGroupTopic[33] _INIT("wled/all"); // second MQTT topic (for example to group devices)
|
WLED_GLOBAL char mqttGroupTopic[33] _INIT("wled/all"); // second MQTT topic (for example to group devices)
|
||||||
WLED_GLOBAL char mqttServer[33] _INIT(""); // both domains and IPs should work (no SSL)
|
WLED_GLOBAL char mqttServer[33] _INIT(""); // both domains and IPs should work (no SSL)
|
||||||
@@ -416,6 +425,10 @@ WLED_GLOBAL char mqttUser[41] _INIT(""); // optional: username
|
|||||||
WLED_GLOBAL char mqttPass[65] _INIT(""); // optional: password for MQTT auth
|
WLED_GLOBAL char mqttPass[65] _INIT(""); // optional: password for MQTT auth
|
||||||
WLED_GLOBAL char mqttClientID[41] _INIT(""); // override the client ID
|
WLED_GLOBAL char mqttClientID[41] _INIT(""); // override the client ID
|
||||||
WLED_GLOBAL uint16_t mqttPort _INIT(1883);
|
WLED_GLOBAL uint16_t mqttPort _INIT(1883);
|
||||||
|
#define WLED_MQTT_CONNECTED (mqtt != nullptr && mqtt->connected())
|
||||||
|
#else
|
||||||
|
#define WLED_MQTT_CONNECTED false
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef WLED_DISABLE_HUESYNC
|
#ifndef WLED_DISABLE_HUESYNC
|
||||||
WLED_GLOBAL bool huePollingEnabled _INIT(false); // poll hue bridge for light state
|
WLED_GLOBAL bool huePollingEnabled _INIT(false); // poll hue bridge for light state
|
||||||
@@ -595,11 +608,8 @@ WLED_GLOBAL uint8_t tpmPacketCount _INIT(0);
|
|||||||
WLED_GLOBAL uint16_t tpmPayloadFrameSize _INIT(0);
|
WLED_GLOBAL uint16_t tpmPayloadFrameSize _INIT(0);
|
||||||
WLED_GLOBAL bool useMainSegmentOnly _INIT(false);
|
WLED_GLOBAL bool useMainSegmentOnly _INIT(false);
|
||||||
|
|
||||||
// mqtt
|
|
||||||
WLED_GLOBAL unsigned long lastMqttReconnectAttempt _INIT(0);
|
|
||||||
WLED_GLOBAL unsigned long lastInterfaceUpdate _INIT(0);
|
WLED_GLOBAL unsigned long lastInterfaceUpdate _INIT(0);
|
||||||
WLED_GLOBAL byte interfaceUpdateCallMode _INIT(CALL_MODE_INIT);
|
WLED_GLOBAL byte interfaceUpdateCallMode _INIT(CALL_MODE_INIT);
|
||||||
WLED_GLOBAL char mqttStatusTopic[40] _INIT(""); // this must be global because of async handlers
|
|
||||||
|
|
||||||
// alexa udp
|
// alexa udp
|
||||||
WLED_GLOBAL String escapedMac;
|
WLED_GLOBAL String escapedMac;
|
||||||
@@ -660,8 +670,7 @@ WLED_GLOBAL AsyncWebServer server _INIT_N(((80)));
|
|||||||
#ifdef WLED_ENABLE_WEBSOCKETS
|
#ifdef WLED_ENABLE_WEBSOCKETS
|
||||||
WLED_GLOBAL AsyncWebSocket ws _INIT_N((("/ws")));
|
WLED_GLOBAL AsyncWebSocket ws _INIT_N((("/ws")));
|
||||||
#endif
|
#endif
|
||||||
WLED_GLOBAL AsyncClient* hueClient _INIT(NULL);
|
WLED_GLOBAL AsyncClient *hueClient _INIT(NULL);
|
||||||
WLED_GLOBAL AsyncMqttClient* mqtt _INIT(NULL);
|
|
||||||
WLED_GLOBAL AsyncWebHandler *editHandler _INIT(nullptr);
|
WLED_GLOBAL AsyncWebHandler *editHandler _INIT(nullptr);
|
||||||
|
|
||||||
// udp interface objects
|
// udp interface objects
|
||||||
@@ -792,7 +801,6 @@ WLED_GLOBAL volatile uint8_t jsonBufferLock _INIT(0);
|
|||||||
#define WLED_CONNECTED (WiFi.status() == WL_CONNECTED)
|
#define WLED_CONNECTED (WiFi.status() == WL_CONNECTED)
|
||||||
#endif
|
#endif
|
||||||
#define WLED_WIFI_CONFIGURED (strlen(clientSSID) >= 1 && strcmp(clientSSID, DEFAULT_CLIENT_SSID) != 0)
|
#define WLED_WIFI_CONFIGURED (strlen(clientSSID) >= 1 && strcmp(clientSSID, DEFAULT_CLIENT_SSID) != 0)
|
||||||
#define WLED_MQTT_CONNECTED (mqtt != nullptr && mqtt->connected())
|
|
||||||
|
|
||||||
#ifndef WLED_AP_SSID_UNIQUE
|
#ifndef WLED_AP_SSID_UNIQUE
|
||||||
#define WLED_SET_AP_SSID() do { \
|
#define WLED_SET_AP_SSID() do { \
|
||||||
|
|||||||
@@ -605,10 +605,14 @@ void serveSettings(AsyncWebServerRequest* request, bool post)
|
|||||||
case 4: response = request->beginResponse_P(200, "text/html", PAGE_settings_sync, PAGE_settings_sync_length); break;
|
case 4: response = request->beginResponse_P(200, "text/html", PAGE_settings_sync, PAGE_settings_sync_length); break;
|
||||||
case 5: response = request->beginResponse_P(200, "text/html", PAGE_settings_time, PAGE_settings_time_length); break;
|
case 5: response = request->beginResponse_P(200, "text/html", PAGE_settings_time, PAGE_settings_time_length); break;
|
||||||
case 6: response = request->beginResponse_P(200, "text/html", PAGE_settings_sec, PAGE_settings_sec_length); break;
|
case 6: response = request->beginResponse_P(200, "text/html", PAGE_settings_sec, PAGE_settings_sec_length); break;
|
||||||
|
#ifdef WLED_ENABLE_DMX
|
||||||
case 7: response = request->beginResponse_P(200, "text/html", PAGE_settings_dmx, PAGE_settings_dmx_length); break;
|
case 7: response = request->beginResponse_P(200, "text/html", PAGE_settings_dmx, PAGE_settings_dmx_length); break;
|
||||||
|
#endif
|
||||||
case 8: response = request->beginResponse_P(200, "text/html", PAGE_settings_um, PAGE_settings_um_length); break;
|
case 8: response = request->beginResponse_P(200, "text/html", PAGE_settings_um, PAGE_settings_um_length); break;
|
||||||
case 9: response = request->beginResponse_P(200, "text/html", PAGE_update, PAGE_update_length); break;
|
case 9: response = request->beginResponse_P(200, "text/html", PAGE_update, PAGE_update_length); break;
|
||||||
|
#ifndef WLED_DISABLE_2D
|
||||||
case 10: response = request->beginResponse_P(200, "text/html", PAGE_settings_2D, PAGE_settings_2D_length); break;
|
case 10: response = request->beginResponse_P(200, "text/html", PAGE_settings_2D, PAGE_settings_2D_length); break;
|
||||||
|
#endif
|
||||||
case 251: {
|
case 251: {
|
||||||
correctPIN = !strlen(settingsPIN); // lock if a pin is set
|
correctPIN = !strlen(settingsPIN); // lock if a pin is set
|
||||||
createEditHandler(correctPIN);
|
createEditHandler(correctPIN);
|
||||||
|
|||||||
@@ -288,6 +288,9 @@ void getSettingsJS(AsyncWebServerRequest* request, byte subPage, char* dest) //W
|
|||||||
|
|
||||||
if (subPage == 0)
|
if (subPage == 0)
|
||||||
{
|
{
|
||||||
|
#ifndef WLED_DISABLE_2D // include only if 2D is compiled in
|
||||||
|
oappend(PSTR("gId('2dbtn').style.display='';"));
|
||||||
|
#endif
|
||||||
#ifdef WLED_ENABLE_DMX // include only if DMX is enabled
|
#ifdef WLED_ENABLE_DMX // include only if DMX is enabled
|
||||||
oappend(PSTR("gId('dmxbtn').style.display='';"));
|
oappend(PSTR("gId('dmxbtn').style.display='';"));
|
||||||
#endif
|
#endif
|
||||||
@@ -512,6 +515,7 @@ void getSettingsJS(AsyncWebServerRequest* request, byte subPage, char* dest) //W
|
|||||||
oappend(SET_F("hideNoDMX();")); // hide "not compiled in" message
|
oappend(SET_F("hideNoDMX();")); // hide "not compiled in" message
|
||||||
#endif
|
#endif
|
||||||
sappend('v',SET_F("DA"),DMXAddress);
|
sappend('v',SET_F("DA"),DMXAddress);
|
||||||
|
sappend('v',SET_F("XX"),DMXSegmentSpacing);
|
||||||
sappend('v',SET_F("DM"),DMXMode);
|
sappend('v',SET_F("DM"),DMXMode);
|
||||||
sappend('v',SET_F("ET"),realtimeTimeoutMs);
|
sappend('v',SET_F("ET"),realtimeTimeoutMs);
|
||||||
sappend('c',SET_F("FB"),arlsForceMaxBri);
|
sappend('c',SET_F("FB"),arlsForceMaxBri);
|
||||||
|
|||||||
Reference in New Issue
Block a user