Peek in segment tab

Move peek 2D functionality to peek.js

FX_fcn.cpp: always erase customMappingTable if non existent ledmap

wled_server.cpp: add peek.js

index.js:
- add canvasPeek
- change resize of canvas
This commit is contained in:
Ewoud
2023-02-15 12:41:15 +01:00
parent 515c872770
commit 6e187dd5aa
12 changed files with 2447 additions and 2377 deletions

View File

@@ -400,6 +400,13 @@ const char PAGE_dmxmap[] PROGMEM = R"=====()=====";
method: "gzip", method: "gzip",
filter: "html-minify", filter: "html-minify",
}, },
//WLEDMM
{
file: "peek.js",
name: "PAGE_peekJs",
method: "gzip",
filter: "js-minify",
},
{ {
file: "404.htm", file: "404.htm",
name: "PAGE_404", name: "PAGE_404",

View File

@@ -1973,8 +1973,8 @@ void WS2812FX::deserializeMap(uint8_t n) {
} }
if (!isFile) { if (!isFile) {
// erase custom mapping if selecting nonexistent ledmap.json (n==0) // erase custom mapping if selecting nonexistent ledmap.json (n==0) //WLEDM always erase if nonexistant
if (!n && customMappingTable != nullptr) { if (customMappingTable != nullptr) {
//WLEDMM: if isMatrix then not erase but back to matrix default //WLEDMM: if isMatrix then not erase but back to matrix default
if (isMatrix) if (isMatrix)
setUpMatrix(true); setUpMatrix(true);

View File

@@ -6,6 +6,7 @@
<meta name="theme-color" content="#222222"> <meta name="theme-color" content="#222222">
<meta content="yes" name="apple-mobile-web-app-capable"> <meta content="yes" name="apple-mobile-web-app-capable">
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAGACGAAAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAQAAAAEAgGAAAAH/P/YQAAAE1JREFUOI1j/P//PwOxgNGeAUMxE9G6cQCKDWAhpADZ2f8PMjBS3QW08QK20KaZC2gfC9hCnqouoNgARgY7zMxAyNlUdQHlXiAlO2MDAD63EVqNHAe0AAAAAElFTkSuQmCC"/> <link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAGACGAAAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAQAAAAEAgGAAAAH/P/YQAAAE1JREFUOI1j/P//PwOxgNGeAUMxE9G6cQCKDWAhpADZ2f8PMjBS3QW08QK20KaZC2gfC9hCnqouoNgARgY7zMxAyNlUdQHlXiAlO2MDAD63EVqNHAe0AAAAAElFTkSuQmCC"/>
<script src="peek.js"></script> <!--WLEDMM-->
<title>WLED</title> <title>WLED</title>
<script> <script>
function feedback(){} function feedback(){}
@@ -313,7 +314,9 @@
</div> </div>
<!--WLEDMM Segment graphics--> <!--WLEDMM Segment graphics-->
<br> <br>
<canvas id="canvas" hidden=true></canvas><br> <canvas id="canvasSegments" hidden=true></canvas><br>
<br>
<canvas id="canvasPeek"></canvas><br>
<div id="MD"></div> <!-- Matrix dimensions --> <div id="MD"></div> <!-- Matrix dimensions -->
<br> <br>
<p>Transition: <input id="tt" class="noslide" type="number" min="0" max="65.5" step="0.1" value="0.7">&nbsp;s</p> <p>Transition: <input id="tt" class="noslide" type="number" min="0" max="65.5" step="0.1" value="0.7">&nbsp;s</p>

View File

@@ -1158,18 +1158,9 @@ function updateLen(s, draw=true) //WLEDMM conditonally draw segment visualisatio
//WLEDMM //WLEDMM
function drawSegments() { function drawSegments() {
if (!ctx) {
//WLEDMM: add canvas, initialize and set UI
var canvas = gId("canvas");
canvas.hidden = false;
ctx = canvas.getContext('2d');
}
ctx.canvas.width = ctx.canvas.parentElement.offsetWidth > 800?window.innerWidth*0.98:300; //Mobile and non pc mode gets 300, pc 800
var px, py, pw, ph; var px, py, pw, ph;
var topLeftX, topLeftY; var topLeftX, topLeftY;
var space=0; // space between panels + margin
function initSegmentVars(p) { function initSegmentVars(p) {
px = parseInt(gId("seg"+p+"s").value); //first led x px = parseInt(gId("seg"+p+"s").value); //first led x
if (!gId("seg"+p+"sY")) return false; //no draw for 1D segments (yet) if (!gId("seg"+p+"sY")) return false; //no draw for 1D segments (yet)
@@ -1177,8 +1168,8 @@ function drawSegments() {
pw = parseInt(gId("seg"+p+"e").value - gId("seg"+p+"s").value); //width pw = parseInt(gId("seg"+p+"e").value - gId("seg"+p+"s").value); //width
ph = parseInt(gId("seg"+p+"eY").value - gId("seg"+p+"sY").value); //height ph = parseInt(gId("seg"+p+"eY").value - gId("seg"+p+"sY").value); //height
// console.log("sergment", p, px, py, pw, ph); // console.log("sergment", p, px, py, pw, ph);
topLeftX = px*ppL + space; //left margin topLeftX = px*ppL;
topLeftY = py*ppL + space; //top margin topLeftY = py*ppL;
// console.log("rect", p, topLeftX, topLeftY, pw*ppL, ph*ppL); // console.log("rect", p, topLeftX, topLeftY, pw*ppL, ph*ppL);
return true; return true;
} }
@@ -1192,14 +1183,28 @@ function drawSegments() {
maxHeight = Math.max(maxHeight, py + ph); maxHeight = Math.max(maxHeight, py + ph);
} }
canvasPeek = gId("canvasPeek");
if (!ctx) {
//WLEDMM: add canvas, initialize and set UI
var canvas = gId("canvasSegments");
canvas.hidden = false;
ctx = canvas.getContext('2d');
peek(canvasPeek);
}
let windowWidth = Math.min(window.innerWidth*0.98, maxWidth*30);
ctx.canvas.width = ctx.canvas.parentElement.offsetWidth > 800?windowWidth:300; //Mobile and non pc mode gets 300, pc 800
ctx.canvas.height = ctx.canvas.width / maxWidth * maxHeight; ctx.canvas.height = ctx.canvas.width / maxWidth * maxHeight;
canvasPeek.width = canvasPeek.parentElement.offsetWidth > 800?windowWidth:300;
canvasPeek.height = canvasPeek.width / maxWidth * maxHeight;
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
var ppL = (ctx.canvas.width - space * 2) / maxWidth; //pixels per led
var ppL = ctx.canvas.width / maxWidth; //pixels per led
// console.log("dim", ctx.canvas.width , maxWidth, ctx.canvas.height , maxHeight, ppL); // console.log("dim", ctx.canvas.width , maxWidth, ctx.canvas.height , maxHeight, ppL);
ctx.lineWidth = 1; ctx.lineWidth = 1;
ctx.strokeStyle="yellow"; ctx.strokeStyle="yellow";
ctx.strokeRect(0, 0, ctx.canvas.width, ctx.canvas.height); // add space between panels ctx.strokeRect(0, 0, ctx.canvas.width, ctx.canvas.height);
var colorArray = [[255,0,0], [0,255,0], [0,0,255], [255,0,255], [255,165,0], [255,255,0]]; var colorArray = [[255,0,0], [0,255,0], [0,0,255], [255,0,255], [255,165,0], [255,255,0]];
// ["red", "green", "blue", "magenta", "orange", "yellow"]; // ["red", "green", "blue", "magenta", "orange", "yellow"];
@@ -1211,7 +1216,7 @@ function drawSegments() {
ctx.lineWidth = 3; ctx.lineWidth = 3;
ctx.strokeStyle="white"; ctx.strokeStyle="white";
ctx.strokeRect(topLeftX, topLeftY, pw*ppL, ph*ppL); // add space between panels ctx.strokeRect(topLeftX, topLeftY, pw*ppL, ph*ppL);
var fx = parseInt(gId("seg"+p+"fx").value); var fx = parseInt(gId("seg"+p+"fx").value);
@@ -3202,10 +3207,7 @@ function togglePcMode(fromB = false)
lastw = wW; lastw = wW;
//WLEDMM resize segment visualization //WLEDMM resize segment visualization
if (isM) { if (isM) drawSegments();
gId("canvas").width = gId("canvas").parentElement.offsetWidth > 800?window.innerWidth*0.98:300; //WLEDMM Mobile and non pc mode gets 300, pc 800
drawSegments();
}
} }
function mergeDeep(target, ...sources) function mergeDeep(target, ...sources)

View File

@@ -5,6 +5,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="theme-color" content="#222222"> <meta name="theme-color" content="#222222">
<title>WLED Live Preview</title> <title>WLED Live Preview</title>
<script src="peek.js"></script> <!--WLEDMM-->
<style> <style>
body { body {
margin: 0; margin: 0;
@@ -12,65 +13,16 @@
</style> </style>
</head> </head>
<body> <body>
<canvas id="canv"></canvas> <canvas id="canvasPeek"></canvas>
<script> <script>
var c = document.getElementById('canv'); var c = document.getElementById('canvasPeek');
var leds = "";
var throttled = false; var throttled = false;
function setCanvas() { function setCanvas() {
c.width = window.innerWidth * 0.98; //remove scroll bars c.width = window.innerWidth * 0.98; //remove scroll bars
c.height = window.innerHeight * 0.98; //remove scroll bars c.height = window.innerHeight * 0.98; //remove scroll bars
} }
setCanvas(); setCanvas();
// Check for canvas support peek(c);
var ctx = c.getContext('2d');
if (ctx) { // Access the rendering context
// use parent WS or open new
var ws;
try {
ws = top.window.ws;
} catch (e) {}
if (ws && ws.readyState === WebSocket.OPEN) {
ws.send("{'lv':true}");
} else {
ws = new WebSocket((window.location.protocol == "https:"?"wss":"ws")+"://"+document.location.host+"/ws");
ws.onopen = ()=>{
ws.send("{'lv':true}");
}
}
ws.binaryType = "arraybuffer";
ws.addEventListener('message',(e)=>{
try {
if (toString.call(e.data) === '[object ArrayBuffer]') {
let leds = new Uint8Array(event.data);
if (leds[0] != 76 || leds[1] != 2 || !ctx) return; //'L', set in ws.cpp
let mW = leds[2]; // matrix width
let mH = leds[3]; // matrix height
let pPL = Math.min(c.width / mW, (c.height-10) / mH); // pixels per LED (width of circle) WLEDMM -10 for prompts
let lOf = Math.floor((c.width - pPL*mW)/2); //left offeset (to center matrix)
var i = 6;
ctx.clearRect(0, 0, c.width, c.height); //WLEDMM
function colorAmp(color) {
if (color == 0) return 0;
return 25+225*color/255;
} //WLEDMM in range 55 - 205
for (y=0.5;y<mH;y++) for (x=0.5; x<mW; x++) {
ctx.fillStyle = `rgb(${colorAmp(leds[i])},${colorAmp(leds[i+1])},${colorAmp(leds[i+2])})`;
ctx.beginPath();
ctx.arc(x*pPL+lOf, y*pPL, pPL*0.4, 0, 2 * Math.PI);
ctx.fill();
i+=3;
}
//WLEDMM show preset and playlist id
ctx.fillStyle = `rgb(255,255,255)`;
if (leds[4] != 0) ctx.fillText("preset " + leds[4].toString(), lOf, mH*pPL+10);
if (leds[5] != 255) ctx.fillText("playlist " + leds[5].toString(), lOf + 70, mH*pPL+10);
}
} catch (err) {
console.error("Peek WS error:",err);
}
});
}
// window.resize event listener // window.resize event listener
window.addEventListener('resize', (e)=>{ window.addEventListener('resize', (e)=>{
if (!throttled) { // only run if we're not throttled if (!throttled) { // only run if we're not throttled

51
wled00/data/peek.js Normal file
View File

@@ -0,0 +1,51 @@
function peek(c) {
// Check for canvas support
var ctx = c.getContext('2d');
if (ctx) { // Access the rendering context
// use parent WS or open new
var ws;
try {
ws = top.window.ws;
} catch (e) {}
if (ws && ws.readyState === WebSocket.OPEN) {
ws.send("{'lv':true}");
} else {
ws = new WebSocket((window.location.protocol == "https:"?"wss":"ws")+"://"+document.location.host+"/ws");
ws.onopen = ()=>{
ws.send("{'lv':true}");
}
}
ws.binaryType = "arraybuffer";
ws.addEventListener('message',(e)=>{
try {
if (toString.call(e.data) === '[object ArrayBuffer]') {
let leds = new Uint8Array(e.data);
if (leds[0] != 76 || leds[1] != 2 || !ctx) return; //'L', set in ws.cpp
let mW = leds[2]; // matrix width
let mH = leds[3]; // matrix height
let pPL = Math.min(c.width / mW, (c.height-10) / mH); // pixels per LED (width of circle) WLEDMM -10 for prompts
let lOf = Math.floor((c.width - pPL*mW)/2); //left offeset (to center matrix)
var i = 6;
ctx.clearRect(0, 0, c.width, c.height); //WLEDMM
function colorAmp(color) {
if (color == 0) return 0;
return 25+225*color/255;
} //WLEDMM in range 55 - 205
for (y=0.5;y<mH;y++) for (x=0.5; x<mW; x++) {
ctx.fillStyle = `rgb(${colorAmp(leds[i])},${colorAmp(leds[i+1])},${colorAmp(leds[i+2])})`;
ctx.beginPath();
ctx.arc(x*pPL+lOf, y*pPL, pPL*0.4, 0, 2 * Math.PI);
ctx.fill();
i+=3;
}
//WLEDMM show preset and playlist id
ctx.fillStyle = `rgb(255,255,255)`;
if (leds[4] != 0) ctx.fillText("preset " + leds[4].toString(), lOf, mH*pPL+10);
if (leds[5] != 255) ctx.fillText("playlist " + leds[5].toString(), lOf + 70, mH*pPL+10);
}
} catch (err) {
console.error("Peek WS error:",err);
}
});
}
}

View File

@@ -187,7 +187,7 @@ Y:<input id="P${i}Y" name="P${i}Y" type="number" min="0" max="255" value="0" oni
if (!ctx) { if (!ctx) {
//WLEDMM: add canvas, initialize and set UI //WLEDMM: add canvas, initialize and set UI
var canvas = gId("canvas"); var canvas = gId("canvasPanels");
canvas.width = window.innerWidth > 800?800:400; //Mobile gets 400, pc 800 canvas.width = window.innerWidth > 800?800:400; //Mobile gets 400, pc 800
canvas.height = canvas.width; canvas.height = canvas.width;
ctx = canvas.getContext('2d'); ctx = canvas.getContext('2d');
@@ -398,7 +398,7 @@ Y:<input id="P${i}Y" name="P${i}Y" type="number" min="0" max="255" value="0" oni
<br> <br>
<hr class="sml"> <hr class="sml">
<br> <br>
<canvas id="canvas"></canvas><br> <!--WLEDMM panel visualization--> <canvas id="canvasPanels"></canvas><br> <!--WLEDMM panel visualization-->
<div id="MD"></div> <!-- WLEDMM Matrix dimensions --> <div id="MD"></div> <!-- WLEDMM Matrix dimensions -->
<br> <br>
<div id="advancedBlock"> <div id="advancedBlock">

View File

@@ -279,66 +279,78 @@ const uint8_t PAGE_liveviewws[] PROGMEM = {
// Autogenerated from wled00/data/liveviewws2D.htm, do not edit!! // Autogenerated from wled00/data/liveviewws2D.htm, do not edit!!
const uint16_t PAGE_liveviewws2D_length = 928; const uint16_t PAGE_liveviewws2D_length = 393;
const uint8_t PAGE_liveviewws2D[] PROGMEM = { const uint8_t PAGE_liveviewws2D[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x6d, 0x55, 0x6d, 0x6f, 0xdb, 0x36, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x65, 0x52, 0x4d, 0x4f, 0xe3, 0x30,
0x10, 0xfe, 0xee, 0x5f, 0xa1, 0x70, 0x43, 0x2a, 0x5a, 0xb2, 0x24, 0xab, 0x75, 0x9b, 0xd9, 0xa2, 0x10, 0xbd, 0xe7, 0x57, 0x18, 0xef, 0x25, 0x41, 0x69, 0x52, 0x90, 0x90, 0xf8, 0x88, 0x73, 0x58,
0x83, 0x35, 0x0d, 0xb0, 0x02, 0xd9, 0x6a, 0x2c, 0x19, 0x82, 0x21, 0x30, 0x50, 0x5a, 0x3a, 0x5b, 0xa8, 0xb4, 0x2b, 0x55, 0xa2, 0x87, 0x4a, 0x68, 0x8f, 0xc6, 0x1e, 0x9a, 0x61, 0x63, 0xbb, 0x72,
0x5c, 0x25, 0xd2, 0xa0, 0x68, 0xcb, 0xaa, 0xe3, 0xff, 0xde, 0xa3, 0x64, 0xa7, 0x09, 0x32, 0x03, 0x26, 0xa9, 0xba, 0xa5, 0xff, 0x1d, 0x27, 0x29, 0x6c, 0x10, 0x3e, 0x58, 0x9e, 0x79, 0x33, 0x6f,
0x96, 0xc8, 0x7b, 0xbf, 0xe7, 0x5e, 0x94, 0x9c, 0x7d, 0xfa, 0x72, 0x75, 0xf7, 0xef, 0xec, 0xda, 0xde, 0x3c, 0xb9, 0x38, 0x7b, 0x78, 0xbc, 0x5f, 0xff, 0x59, 0x2d, 0x58, 0x45, 0xa6, 0x2e, 0x8b,
0xc9, 0x4d, 0x59, 0x4c, 0x93, 0xe3, 0x13, 0x78, 0x36, 0x4d, 0x4a, 0x30, 0xdc, 0x91, 0xbc, 0x04, 0xd3, 0x0d, 0x52, 0x97, 0x85, 0x01, 0x92, 0xcc, 0x4a, 0x03, 0x82, 0x77, 0x08, 0xbb, 0xad, 0xf3,
0x46, 0xb6, 0x02, 0xea, 0xb5, 0xd2, 0x86, 0x38, 0xbd, 0x54, 0x49, 0x03, 0xd2, 0x30, 0x52, 0x8b, 0xc4, 0x59, 0xa4, 0x9c, 0x25, 0xb0, 0x24, 0xf8, 0x0e, 0x35, 0x55, 0x42, 0x43, 0x87, 0x0a, 0x66,
0xcc, 0xe4, 0x2c, 0x83, 0xad, 0x48, 0x61, 0xd0, 0x5e, 0x7c, 0x21, 0x85, 0x11, 0xbc, 0x18, 0x54, 0x43, 0x90, 0xa2, 0x45, 0x42, 0x59, 0xcf, 0x1a, 0x25, 0x6b, 0x10, 0x17, 0xa9, 0x09, 0x09, 0xd3,
0x29, 0x2f, 0x80, 0x0d, 0xfd, 0x12, 0x09, 0xe5, 0xa6, 0x3c, 0xdd, 0xc9, 0xd1, 0x66, 0x2f, 0xcd, 0x9a, 0x8f, 0x98, 0x9f, 0x38, 0x23, 0x55, 0x49, 0xdf, 0x40, 0xe0, 0x68, 0xe9, 0x65, 0x76, 0xcd,
0xb9, 0xae, 0x00, 0x6d, 0x6c, 0xcc, 0x72, 0x70, 0x41, 0x5e, 0xb8, 0x32, 0x39, 0x94, 0x30, 0x48, 0xbf, 0x8c, 0xa2, 0x0a, 0x0c, 0xcc, 0x94, 0xab, 0x9d, 0xe7, 0xec, 0x73, 0xd8, 0x8f, 0xcb, 0xe1,
0x55, 0xa1, 0x34, 0x71, 0x9e, 0x9c, 0xfd, 0x12, 0xb7, 0x3f, 0x14, 0x35, 0xc2, 0x14, 0x30, 0xed, 0x84, 0x52, 0x42, 0xaa, 0xa1, 0x8c, 0x9e, 0x96, 0x8b, 0x07, 0xb6, 0xc4, 0x0e, 0xd8, 0xca, 0x43,
0xdd, 0xdf, 0x5c, 0x7f, 0x72, 0x6e, 0xc4, 0x16, 0x9c, 0x99, 0x06, 0x1b, 0x5e, 0x12, 0x76, 0x9c, 0x2f, 0xaf, 0xc8, 0x47, 0xa4, 0x68, 0x94, 0xc7, 0x2d, 0xb1, 0xc6, 0x2b, 0xc1, 0xb7, 0x00, 0x7f,
0xa4, 0x32, 0x0d, 0xbe, 0x16, 0x2a, 0x6b, 0xf6, 0x25, 0xd7, 0x2b, 0x21, 0xc7, 0xd1, 0x21, 0x09, 0xb3, 0xd7, 0x26, 0xb4, 0xe5, 0x63, 0x3a, 0xc0, 0xb4, 0x0f, 0x55, 0xcf, 0x4e, 0xef, 0x0f, 0x46,
0x3b, 0x6a, 0x12, 0x76, 0xa9, 0x59, 0xee, 0x34, 0x49, 0xb9, 0xdc, 0xf2, 0xca, 0xe9, 0x89, 0x8c, 0xfa, 0x0d, 0xda, 0xdb, 0xf9, 0x31, 0x0a, 0xf0, 0x90, 0x2e, 0xf2, 0x71, 0xf5, 0x1e, 0x2e, 0x0b,
0x11, 0x7b, 0x46, 0xeb, 0x61, 0x47, 0x43, 0x2b, 0xa9, 0x16, 0x6b, 0x33, 0xed, 0x6d, 0xb9, 0x76, 0x25, 0x6d, 0x27, 0x1b, 0x86, 0x5a, 0xf0, 0xf1, 0xb9, 0x0a, 0x74, 0x3d, 0xd7, 0x18, 0x7d, 0x8c,
0x52, 0x96, 0xa9, 0x74, 0x53, 0x62, 0x20, 0xc1, 0x0a, 0xcc, 0x75, 0x01, 0xf6, 0xf8, 0xb1, 0xf9, 0x2a, 0xa3, 0x4e, 0x7a, 0xa6, 0x84, 0x76, 0xaa, 0x35, 0x41, 0x6d, 0xb6, 0x01, 0x5a, 0xd4, 0xd0,
0x9c, 0xb9, 0x9d, 0x1a, 0xf5, 0x0b, 0xc8, 0x2a, 0x46, 0x88, 0x6f, 0x72, 0xad, 0x0c, 0x46, 0x91, 0x3f, 0x7f, 0xee, 0x7f, 0xeb, 0x78, 0xda, 0x9c, 0xa4, 0x54, 0x79, 0x47, 0x41, 0xa8, 0x16, 0x67,
0xb1, 0xb3, 0xe1, 0x64, 0xb9, 0x91, 0xa9, 0x11, 0x4a, 0x3a, 0x98, 0xea, 0x55, 0x6b, 0xd6, 0xa5, 0x17, 0x77, 0x2f, 0xad, 0x55, 0x84, 0xce, 0xb2, 0xe0, 0xc6, 0xfd, 0x50, 0x15, 0x27, 0x07, 0x95,
0xfb, 0x34, 0xe8, 0x70, 0x0b, 0x7e, 0xbb, 0xe8, 0xd7, 0x42, 0x66, 0xaa, 0x0e, 0x84, 0x94, 0xa0, 0x8d, 0xd6, 0x66, 0x37, 0xd7, 0xe7, 0x3b, 0xb4, 0xda, 0xed, 0x32, 0xb4, 0x16, 0xfc, 0xd3, 0xe0,
0xef, 0x5b, 0x00, 0xd3, 0x20, 0x07, 0xb1, 0xca, 0xcd, 0x2b, 0xf6, 0x1f, 0x2d, 0xf9, 0xf0, 0xcc, 0xb1, 0xca, 0x2a, 0xc0, 0x4d, 0x45, 0xdf, 0xe0, 0x5f, 0x43, 0xfa, 0x38, 0x61, 0x4a, 0xfb, 0xf5,
0xd2, 0xa4, 0x8d, 0xcc, 0xec, 0x58, 0x6a, 0x83, 0xba, 0xb2, 0x40, 0xed, 0x8c, 0x4b, 0xe2, 0x8c, 0x63, 0x95, 0xa4, 0xa7, 0x32, 0xa9, 0xf5, 0xa2, 0x0b, 0xaa, 0x96, 0xd8, 0x04, 0x57, 0xc1, 0xc7,
0xd0, 0x89, 0x58, 0xba, 0xc8, 0xa1, 0x7b, 0x2b, 0x52, 0x57, 0x13, 0xa3, 0x9b, 0x7d, 0x5d, 0x31, 0xdc, 0x43, 0x83, 0xff, 0x80, 0xa7, 0x24, 0xca, 0xc3, 0xa7, 0xb0, 0xb7, 0xb7, 0x78, 0x4a, 0x32,
0xa3, 0xd6, 0xc1, 0xd1, 0x66, 0x5d, 0x1d, 0x52, 0x6e, 0xd2, 0xdc, 0x35, 0x74, 0x7f, 0xa8, 0xab, 0x11, 0x3c, 0x4f, 0x03, 0xb0, 0x46, 0x03, 0xae, 0xa5, 0x38, 0x4e, 0xa6, 0x4d, 0x61, 0x9b, 0x63,
0xf3, 0xf3, 0xba, 0x0a, 0x34, 0x22, 0xd3, 0xdc, 0x1a, 0x6e, 0x80, 0x31, 0x76, 0x0f, 0x8b, 0x5b, 0x7a, 0x79, 0x35, 0x4f, 0x92, 0x63, 0x12, 0xfd, 0x77, 0x3b, 0x1f, 0x9d, 0xcc, 0x87, 0x7f, 0xf5,
0x95, 0x7e, 0x03, 0x13, 0x7c, 0x99, 0x5d, 0xff, 0x75, 0x89, 0xec, 0x0a, 0x24, 0xe6, 0xbb, 0x7f, 0x0e, 0x72, 0xa1, 0x61, 0xb1, 0x6d, 0x02, 0x00, 0x00
0x53, 0x6c, 0xdf, 0x8c, 0x8d, 0xde, 0xc0, 0x81, 0xd0, 0xb1, 0x8b, 0x56, 0x25, 0xd4, 0xce, 0x93, };
0xb4, 0xeb, 0x92, 0xdc, 0x98, 0x75, 0x35, 0x26, 0x8c, 0x1d, 0x5d, 0x15, 0x0a, 0x3d, 0x21, 0x0a,
0xc1, 0x1a, 0xa1, 0x51, 0x58, 0xd7, 0x4b, 0x52, 0x57, 0x15, 0x19, 0xe3, 0x93, 0x50, 0x8f, 0x8c,
0xc3, 0x90, 0x78, 0x4f, 0xf0, 0x3e, 0x09, 0xe7, 0xaa, 0x32, 0x1e, 0x09, 0xad, 0x0c, 0x0d, 0x94, // Autogenerated from wled00/data/peek.js, do not edit!!
0x54, 0x6b, 0x90, 0xcc, 0xa5, 0x6c, 0xba, 0xff, 0xff, 0x48, 0x0e, 0x3e, 0xd2, 0x17, 0x42, 0x72, const uint16_t PAGE_peekJs_length = 624;
0xdd, 0xdc, 0x35, 0x6b, 0xec, 0x22, 0xae, 0x35, 0x6f, 0x16, 0x9b, 0xe5, 0x12, 0x34, 0xb1, 0x3c, const uint8_t PAGE_peekJs[] PROGMEM = {
0x9e, 0x65, 0xd7, 0x5b, 0xf4, 0x70, 0x23, 0x2a, 0x6c, 0x28, 0xd0, 0x2e, 0x29, 0xa1, 0xaa, 0xf8, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x6d, 0x53, 0x6d, 0x4f, 0xdb, 0x30,
0x0a, 0xb0, 0x66, 0x68, 0xd5, 0x22, 0x84, 0xa0, 0x91, 0x07, 0xb5, 0xf8, 0x0f, 0x52, 0xe3, 0xfc, 0x10, 0xfe, 0x2b, 0xc5, 0x9a, 0x8a, 0xdd, 0x18, 0x37, 0x04, 0x3a, 0xa6, 0x06, 0x0f, 0x6d, 0x13,
0x6e, 0xd5, 0x3f, 0xb6, 0xea, 0x73, 0x4c, 0x05, 0xa1, 0xbb, 0x35, 0x5a, 0xc8, 0x55, 0x80, 0x8d, 0x1f, 0x26, 0xed, 0xa5, 0x5a, 0x99, 0xf8, 0x80, 0x2a, 0xe1, 0x26, 0x97, 0x36, 0xc3, 0xd8, 0x95,
0x5c, 0xb8, 0x26, 0xc8, 0xb8, 0xe1, 0x94, 0xee, 0x0b, 0x30, 0x8e, 0x69, 0x11, 0xf8, 0x47, 0x48, 0x73, 0xa5, 0x8d, 0x4a, 0xff, 0xfb, 0xce, 0x85, 0x0e, 0x36, 0x4d, 0xca, 0xcb, 0x9d, 0xef, 0x79,
0x73, 0xd1, 0x6a, 0xb9, 0x60, 0xfd, 0x74, 0x12, 0xb6, 0x10, 0x1f, 0xde, 0x9f, 0x31, 0xf3, 0x10, 0xee, 0xf1, 0xdd, 0xd9, 0xd5, 0xd2, 0x15, 0x58, 0x7b, 0xd7, 0x59, 0x00, 0xdc, 0x71, 0x14, 0x9b,
0xcd, 0x1f, 0x1f, 0x63, 0x7b, 0x18, 0xe2, 0xe1, 0xcc, 0x16, 0x47, 0x83, 0xd9, 0x68, 0x39, 0xb1, 0x07, 0x13, 0x3a, 0xa0, 0x51, 0xcd, 0x00, 0x3f, 0x79, 0x87, 0xb0, 0x46, 0xce, 0xb2, 0x92, 0x89,
0x26, 0x24, 0xd2, 0xe3, 0xb9, 0x2f, 0xf0, 0xf5, 0x76, 0xee, 0x2b, 0xf6, 0x27, 0x37, 0x79, 0x80, 0xbc, 0xae, 0x38, 0x3c, 0x85, 0x43, 0x8e, 0xa1, 0xdd, 0x04, 0x8d, 0x7e, 0xa1, 0x56, 0xb5, 0x2b,
0xb3, 0xe3, 0x1e, 0x9b, 0x25, 0x94, 0xbe, 0x7b, 0xea, 0x8c, 0xc1, 0x30, 0xa2, 0xa1, 0xa0, 0x3e, 0xfd, 0x4a, 0xad, 0x9a, 0x6d, 0x61, 0xb0, 0x98, 0xc7, 0x0c, 0xdb, 0xd0, 0xed, 0x06, 0x15, 0xc0,
0xef, 0xa4, 0x96, 0x85, 0x52, 0xda, 0x3d, 0x09, 0x0e, 0x54, 0x5f, 0xd2, 0x30, 0xee, 0x7a, 0x03, 0x94, 0xed, 0x18, 0x0d, 0x82, 0xd6, 0xfa, 0x1a, 0xa6, 0x63, 0x5f, 0xdc, 0x01, 0xaa, 0xef, 0xa3,
0xd8, 0xfb, 0x9f, 0x2d, 0xa8, 0x6d, 0xa5, 0x3b, 0x97, 0x4e, 0x84, 0xf9, 0x5c, 0x46, 0xe3, 0x78, 0xcb, 0x6f, 0x17, 0x41, 0x35, 0xe0, 0x4a, 0xce, 0x36, 0x87, 0xf6, 0xe1, 0x70, 0x88, 0x61, 0x09,
0xe4, 0xc5, 0xf1, 0xa8, 0x6f, 0xc2, 0x78, 0x34, 0x3a, 0x2c, 0xd1, 0x0a, 0x46, 0x15, 0xa4, 0x05, 0x5b, 0x26, 0x86, 0x3c, 0x68, 0x07, 0xab, 0xce, 0x1f, 0x2c, 0xe7, 0x6c, 0x8e, 0xb8, 0x68, 0x86,
0x70, 0xfd, 0x37, 0x42, 0xe0, 0x46, 0x7e, 0xe4, 0x1f, 0xcd, 0x3e, 0xb5, 0x25, 0xf5, 0x1b, 0x16, 0x4c, 0xeb, 0x67, 0x19, 0xeb, 0x49, 0x85, 0x76, 0xab, 0x16, 0xc1, 0xa3, 0x2f, 0xbc, 0xbd, 0x60,
0x8c, 0x26, 0x4d, 0x22, 0x26, 0x8d, 0xe7, 0x51, 0xab, 0xb4, 0xb3, 0x84, 0x5d, 0x22, 0x27, 0x3b, 0xab, 0xa6, 0x61, 0x43, 0xfa, 0x32, 0x91, 0xb0, 0x61, 0xbf, 0xcf, 0x92, 0xd2, 0x17, 0xcb, 0x7b,
0x24, 0x58, 0x0b, 0x4b, 0x51, 0x14, 0xb7, 0x76, 0xd8, 0xd8, 0x57, 0xbd, 0x5a, 0xb8, 0xbf, 0xee, 0x70, 0xf8, 0x02, 0x9e, 0xfb, 0x06, 0x13, 0xd6, 0x8f, 0x18, 0xa1, 0xbc, 0xf3, 0x0b, 0x70, 0x9a,
0xd1, 0xf5, 0x03, 0xcc, 0xb1, 0x44, 0xc7, 0xa3, 0x37, 0x7c, 0x7e, 0x89, 0xf1, 0x42, 0xbf, 0xfa, 0x0b, 0xfd, 0x7e, 0xf3, 0xdf, 0x7d, 0x6c, 0x65, 0x50, 0xd3, 0xda, 0x99, 0xd0, 0x5e, 0xb5, 0x0b,
0x56, 0x73, 0x01, 0x38, 0xac, 0x33, 0xcc, 0xca, 0xa5, 0xed, 0x9d, 0xeb, 0xd4, 0xdd, 0xf5, 0x95, 0xd0, 0xcc, 0x84, 0x60, 0xda, 0xe9, 0xb2, 0xaa, 0x20, 0x30, 0x0a, 0x99, 0xb2, 0xbc, 0x7c, 0xa0,
0xc7, 0xfd, 0xa6, 0xaf, 0xfc, 0xe0, 0x1d, 0x3e, 0x22, 0x3f, 0xee, 0xb7, 0x79, 0xcf, 0x3e, 0x77, 0xf4, 0x5f, 0xea, 0x06, 0xc1, 0x41, 0xe0, 0xec, 0x1e, 0x9a, 0xc6, 0xcc, 0x80, 0x82, 0x94, 0x32,
0x32, 0xd6, 0x1b, 0x8a, 0x83, 0xc7, 0xde, 0x4e, 0x5e, 0x7a, 0x27, 0xd6, 0x3b, 0xa6, 0xe6, 0x1f, 0x76, 0x86, 0x3a, 0xc5, 0x6e, 0xfc, 0xf4, 0x17, 0x14, 0xd8, 0xf9, 0x10, 0xd9, 0x1f, 0x77, 0xec,
0xff, 0x94, 0xf8, 0x91, 0x2d, 0xc0, 0xbb, 0xf9, 0xf9, 0xf9, 0x49, 0xf2, 0xae, 0x1d, 0x99, 0xb5, 0x09, 0xd5, 0x41, 0x3d, 0x1b, 0x63, 0xa8, 0xdd, 0x4c, 0x15, 0xc6, 0x5a, 0x1e, 0x54, 0x69, 0xd0,
0x06, 0x9c, 0x2b, 0x87, 0x78, 0x96, 0x19, 0x9c, 0x4a, 0x8d, 0x56, 0xb9, 0x2f, 0xd0, 0x3d, 0x02, 0x08, 0xb1, 0xb1, 0x80, 0x9d, 0x7a, 0x57, 0xfe, 0xcf, 0xda, 0xe1, 0xbb, 0x1d, 0x6b, 0x1f, 0x8d,
0x6e, 0xf5, 0xad, 0xee, 0xe8, 0xb5, 0x6e, 0xc1, 0x9b, 0x02, 0x7b, 0xaa, 0xd5, 0x1e, 0xbd, 0xd4, 0x9d, 0x3f, 0x7b, 0x7b, 0xa0, 0xeb, 0x9b, 0x74, 0xf2, 0xf8, 0x98, 0x45, 0xe3, 0x98, 0x8c, 0x03,
0xf6, 0x3e, 0x44, 0x27, 0x03, 0x87, 0x9f, 0xe3, 0x86, 0x2b, 0xad, 0x52, 0x05, 0x04, 0xa0, 0x35, 0x10, 0x01, 0x70, 0x19, 0x5c, 0x1e, 0xc9, 0x8e, 0x56, 0xb3, 0x89, 0xb4, 0xf4, 0x3b, 0x99, 0xc8,
0xc2, 0x47, 0x66, 0x00, 0xdf, 0x9c, 0xfb, 0x5b, 0xa7, 0xbd, 0x8e, 0xb1, 0x1b, 0x51, 0x96, 0x1e, 0x42, 0x7f, 0x35, 0x38, 0x57, 0xf7, 0xb5, 0xe3, 0x48, 0x23, 0x2a, 0x71, 0xde, 0x77, 0x92, 0xcc,
0x8e, 0xb3, 0xf3, 0xba, 0x6b, 0x31, 0x54, 0xf1, 0xfd, 0xd4, 0xb4, 0xa7, 0x65, 0xf3, 0xf8, 0xe8, 0x39, 0xd4, 0xb3, 0x39, 0x1e, 0x1d, 0xa7, 0xa2, 0x6f, 0x85, 0xac, 0x9e, 0x50, 0x95, 0xf5, 0x3e,
0x3e, 0x5b, 0x0c, 0xcf, 0x97, 0x50, 0xe4, 0x23, 0xe3, 0x4e, 0x94, 0xa0, 0x36, 0x38, 0x9b, 0xf4, 0xf0, 0x3d, 0xf0, 0xa8, 0xe8, 0x39, 0xd1, 0xcf, 0x44, 0x1e, 0x27, 0xed, 0xf5, 0xdb, 0xbc, 0xda,
0xb9, 0x12, 0x6e, 0xa8, 0x03, 0xe6, 0x15, 0x51, 0xc4, 0xbf, 0x87, 0xfb, 0xb1, 0xdb, 0x77, 0x49, 0x9f, 0x10, 0x13, 0x87, 0xfb, 0x24, 0xd9, 0x49, 0xa9, 0x92, 0x8b, 0x74, 0x98, 0x0d, 0x92, 0x2c,
0xd8, 0xad, 0xc6, 0xb0, 0xfd, 0x10, 0xfc, 0x00, 0xfe, 0x78, 0xc3, 0xb9, 0x1e, 0x06, 0x00, 0x00 0x1b, 0xf4, 0xb0, 0x9f, 0x0d, 0x06, 0xdb, 0x8a, 0xb2, 0x80, 0x2a, 0x2c, 0x98, 0xf0, 0x83, 0x4a,
0xe7, 0xa9, 0x4c, 0xe5, 0x73, 0x52, 0xb9, 0x97, 0x16, 0xb2, 0xd5, 0x6a, 0x90, 0xb7, 0xe7, 0x36,
0x6f, 0x93, 0x44, 0x44, 0xca, 0x3a, 0x2e, 0xac, 0xcf, 0x5d, 0xbe, 0xa6, 0x05, 0x50, 0x55, 0x6d,
0xed, 0x18, 0x5b, 0x0b, 0xfa, 0x36, 0xcc, 0xa6, 0xfc, 0xcd, 0xc6, 0xf0, 0xfa, 0xc6, 0x4f, 0x68,
0x2c, 0xcf, 0x66, 0x72, 0xfc, 0xda, 0xc9, 0xc8, 0x11, 0xb7, 0x12, 0xd4, 0x14, 0x66, 0xb5, 0x1b,
0x51, 0x3d, 0x5c, 0x90, 0x67, 0x42, 0xc1, 0xd7, 0xbd, 0x22, 0xa9, 0x64, 0xdb, 0x2b, 0xa4, 0x3a,
0xa5, 0x4f, 0x2a, 0xb3, 0xde, 0xae, 0xde, 0xd1, 0xe7, 0x88, 0x88, 0x3a, 0x04, 0xf5, 0x89, 0x3e,
0xc9, 0x5f, 0xab, 0xb2, 0xa8, 0x4a, 0xe5, 0xc8, 0xe7, 0x57, 0x30, 0x99, 0xc6, 0x96, 0x9f, 0x4e,
0xba, 0xdd, 0x27, 0xdc, 0xd5, 0xee, 0x4e, 0x2c, 0x02, 0x34, 0xd4, 0x77, 0x96, 0xc4, 0x90, 0xda,
0x8f, 0x95, 0x32, 0x56, 0xd2, 0x92, 0x30, 0xb5, 0x38, 0xb2, 0x23, 0x73, 0xf0, 0x2f, 0xd3, 0x9a,
0xd6, 0xd2, 0xe9, 0xd9, 0x71, 0x07, 0x7f, 0x73, 0x93, 0xb3, 0x74, 0x4f, 0xdf, 0xbe, 0xdc, 0xa8,
0xc2, 0xbb, 0xc6, 0x5b, 0x50, 0x10, 0x02, 0x35, 0x8c, 0x8d, 0xe8, 0xaa, 0x76, 0xae, 0xc7, 0x9d,
0x9d, 0x3b, 0x64, 0x12, 0x09, 0x4b, 0xcf, 0x6f, 0x87, 0x9b, 0x2b, 0xa3, 0xcb, 0x03, 0x00, 0x00
}; };

View File

@@ -1881,7 +1881,7 @@ const uint8_t PAGE_settings_um[] PROGMEM = {
// Autogenerated from wled00/data/settings_2D.htm, do not edit!! // Autogenerated from wled00/data/settings_2D.htm, do not edit!!
const uint16_t PAGE_settings_2D_length = 3121; const uint16_t PAGE_settings_2D_length = 3122;
const uint8_t PAGE_settings_2D[] PROGMEM = { const uint8_t PAGE_settings_2D[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xcd, 0x1a, 0xed, 0x72, 0xe3, 0xb6, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xcd, 0x1a, 0xed, 0x72, 0xe3, 0xb6,
0xf1, 0xbf, 0x9e, 0x02, 0x66, 0x52, 0x0d, 0x69, 0x51, 0x5f, 0xce, 0x5d, 0xe6, 0x46, 0x12, 0xa4, 0xf1, 0xbf, 0x9e, 0x02, 0x66, 0x52, 0x0d, 0x69, 0x51, 0x5f, 0xce, 0x5d, 0xe6, 0x46, 0x12, 0xa4,
@@ -1994,91 +1994,91 @@ const uint8_t PAGE_settings_2D[] PROGMEM = {
0xae, 0x8b, 0x1c, 0x5c, 0xc2, 0x9e, 0xe6, 0xe0, 0x54, 0xdb, 0x57, 0xc5, 0x70, 0x35, 0x38, 0x37, 0xae, 0x8b, 0x1c, 0x5c, 0xc2, 0x9e, 0xe6, 0xe0, 0x54, 0xdb, 0x57, 0xc5, 0x70, 0x35, 0x38, 0x37,
0x15, 0x9c, 0x9b, 0x1a, 0x9c, 0xdb, 0x0a, 0xce, 0x6d, 0x0d, 0xce, 0x5c, 0x27, 0x4e, 0x6d, 0xf9, 0x15, 0x9c, 0x9b, 0x1a, 0x9c, 0xdb, 0x0a, 0xce, 0x6d, 0x0d, 0xce, 0x5c, 0x27, 0x4e, 0x6d, 0xf9,
0xcc, 0x13, 0xae, 0x32, 0xc0, 0xf3, 0xce, 0x1f, 0x4d, 0xa0, 0x98, 0x4c, 0x27, 0x1f, 0x4c, 0x64, 0xcc, 0x13, 0xae, 0x32, 0xc0, 0xf3, 0xce, 0x1f, 0x4d, 0xa0, 0x98, 0x4c, 0x27, 0x1f, 0x4c, 0x64,
0xa6, 0xf9, 0xd7, 0x23, 0x1c, 0x1a, 0x46, 0x28, 0x5a, 0x69, 0xc7, 0x4c, 0x00, 0xd2, 0x5e, 0x47, 0xa6, 0xf9, 0xd7, 0x23, 0x1c, 0x1a, 0xc6, 0x59, 0x56, 0xba, 0xd2, 0x8e, 0x99, 0x03, 0xa4, 0x1d,
0xe7, 0x83, 0x3b, 0x05, 0x19, 0xbf, 0xe9, 0xf5, 0x26, 0xf0, 0x37, 0x78, 0xd5, 0xeb, 0xb9, 0xb4, 0x8f, 0xce, 0x0a, 0x77, 0x0a, 0x32, 0x7e, 0xd3, 0xeb, 0x4d, 0xe0, 0x6f, 0xf0, 0xaa, 0xd7, 0x73,
0xb3, 0xa2, 0xaa, 0xf0, 0xc2, 0x29, 0xba, 0x6e, 0xcb, 0x75, 0xab, 0x73, 0xa6, 0x06, 0x09, 0x0f, 0x69, 0x67, 0x45, 0x55, 0xf9, 0x85, 0x53, 0x74, 0xdd, 0x9c, 0xeb, 0x86, 0xe7, 0x4c, 0x8d, 0x13,
0xd0, 0xd4, 0x9c, 0xf8, 0xd0, 0x49, 0x99, 0xd8, 0xef, 0xb9, 0xca, 0xd0, 0x05, 0x67, 0x00, 0x47, 0x1e, 0xa0, 0xb5, 0x39, 0xf1, 0xa1, 0x9f, 0x32, 0x19, 0xa0, 0xe7, 0x2a, 0x73, 0x17, 0x5c, 0x02,
0x78, 0xb9, 0x64, 0x57, 0x4e, 0xf2, 0x64, 0x3c, 0x3b, 0xf7, 0xb5, 0xec, 0xbc, 0xb4, 0x60, 0x47, 0xdc, 0xe1, 0xe5, 0xc2, 0x5d, 0xb9, 0xca, 0x93, 0xf1, 0xef, 0xdc, 0xe3, 0xb2, 0x53, 0xd3, 0x82,
0x68, 0x79, 0x6a, 0x11, 0x3e, 0xec, 0x10, 0xfc, 0x5a, 0x84, 0xbb, 0x1d, 0x02, 0xab, 0x45, 0xc8, 0x35, 0xa1, 0xf1, 0xa9, 0x45, 0xf8, 0xb0, 0x43, 0xf0, 0x6b, 0x11, 0xee, 0x76, 0x08, 0xac, 0x16,
0xad, 0xea, 0x0c, 0x25, 0x86, 0x5c, 0xb7, 0xea, 0x80, 0x5f, 0xda, 0xd2, 0x25, 0x2d, 0x5f, 0x85, 0x21, 0xb7, 0xad, 0x33, 0x94, 0x18, 0x32, 0xde, 0xaa, 0x03, 0xde, 0x69, 0x4b, 0x97, 0xb4, 0x7c,
0x62, 0x0e, 0xe1, 0x6e, 0xd8, 0x62, 0xce, 0x33, 0x9c, 0xbf, 0x63, 0x74, 0x98, 0x69, 0xa6, 0x00, 0x15, 0x90, 0x39, 0x84, 0xbb, 0x61, 0x8b, 0x39, 0xcf, 0x70, 0xfe, 0x8e, 0xd1, 0x64, 0xa6, 0x99,
0xd1, 0x2a, 0xea, 0x42, 0xd2, 0x71, 0x35, 0x10, 0x5a, 0xbc, 0xf8, 0x06, 0x2a, 0x40, 0xbb, 0xe7, 0x02, 0x44, 0xab, 0xa8, 0x0b, 0xa9, 0xc7, 0xd5, 0x40, 0x68, 0xf4, 0xe2, 0x1b, 0xa8, 0x03, 0xed,
0xf6, 0xdc, 0x2a, 0x9a, 0xbb, 0x47, 0xc9, 0xb8, 0xbe, 0xc0, 0x76, 0x15, 0xb5, 0xdd, 0x73, 0xba, 0x9e, 0xdb, 0x73, 0xab, 0x68, 0xee, 0x1e, 0x25, 0x13, 0x00, 0x02, 0xdb, 0x55, 0xd4, 0x76, 0xcf,
0x72, 0xa8, 0xa0, 0x2a, 0x8d, 0x69, 0x23, 0xe1, 0xbe, 0xde, 0x9f, 0xc8, 0x58, 0x7c, 0xa4, 0x73, 0xe9, 0xca, 0xa1, 0x82, 0xaa, 0x64, 0xa6, 0x8d, 0x84, 0xfb, 0x7a, 0x7f, 0x22, 0x63, 0xf1, 0x91,
0x95, 0xa2, 0xb0, 0xf5, 0x48, 0xc3, 0x50, 0xdc, 0x5b, 0x85, 0x85, 0xaf, 0x62, 0xfe, 0xd5, 0x66, 0xce, 0x55, 0xa2, 0xc2, 0xd6, 0x23, 0x0d, 0x43, 0x71, 0x6f, 0x15, 0x16, 0xbe, 0x8a, 0xf9, 0x57,
0xfb, 0x7f, 0x30, 0x99, 0xd2, 0x58, 0xec, 0x7a, 0x90, 0x90, 0x74, 0x6a, 0x2b, 0x20, 0xe5, 0x61, 0x9b, 0xed, 0xff, 0xc1, 0x64, 0x4a, 0x63, 0xb1, 0xeb, 0x41, 0x5a, 0xd2, 0x09, 0xae, 0x80, 0x94,
0x09, 0x49, 0xaa, 0xba, 0x96, 0x87, 0xa3, 0x1b, 0xed, 0xad, 0xe5, 0x61, 0x08, 0x29, 0xa7, 0x00, 0x07, 0x27, 0xa4, 0xaa, 0xea, 0x5a, 0x1e, 0x94, 0x6e, 0xb4, 0xb7, 0x96, 0x07, 0x23, 0x24, 0x9e,
0x2e, 0x44, 0x9e, 0x1b, 0x60, 0x72, 0x2c, 0x5a, 0x3d, 0x77, 0x86, 0x43, 0xf5, 0x5d, 0xb1, 0xcc, 0x02, 0xb8, 0x10, 0x7f, 0x6e, 0x80, 0xc9, 0xb1, 0x68, 0xf5, 0xdc, 0x19, 0x0e, 0xd5, 0x77, 0xc5,
0x77, 0xfb, 0x96, 0xb9, 0x5f, 0x31, 0x49, 0xf7, 0x0c, 0x13, 0xb8, 0x33, 0xd7, 0x3f, 0x16, 0x2e, 0x32, 0xdf, 0xed, 0x5b, 0xe6, 0x7e, 0xc5, 0x24, 0xdd, 0x33, 0x4c, 0xe0, 0xce, 0x5c, 0xff, 0x58,
0x3b, 0x16, 0x2a, 0xd7, 0x26, 0x93, 0x59, 0x0b, 0x1e, 0xdb, 0xa2, 0x7b, 0x32, 0x98, 0xb5, 0xe0, 0xb8, 0xec, 0x58, 0xa8, 0x8c, 0x9b, 0x4c, 0x66, 0x2d, 0x78, 0x6c, 0x8b, 0xee, 0xc9, 0x60, 0xd6,
0x13, 0x32, 0xf3, 0x66, 0x12, 0xb4, 0xfc, 0x14, 0x16, 0x68, 0x98, 0xa2, 0x11, 0x40, 0x01, 0x92, 0x82, 0x4f, 0xc8, 0xcf, 0x9b, 0x49, 0xd0, 0xf2, 0x53, 0x58, 0xa0, 0x61, 0x8a, 0x46, 0x00, 0x65,
0x52, 0x5e, 0xaa, 0x12, 0xcf, 0x50, 0x5e, 0xd0, 0x25, 0xe3, 0x33, 0x70, 0x57, 0xb8, 0x22, 0xd5, 0x48, 0x4a, 0x79, 0xa9, 0x0a, 0x3d, 0x43, 0x79, 0x41, 0x97, 0x8c, 0xcf, 0xc0, 0x5d, 0xe1, 0xa2,
0x3b, 0x89, 0x3d, 0x5b, 0xa9, 0xa6, 0xf3, 0x1a, 0x78, 0xf4, 0xdc, 0x93, 0x63, 0xed, 0xca, 0xb3, 0x54, 0xef, 0x24, 0xf6, 0x6c, 0xa5, 0x9a, 0xce, 0x6b, 0xe0, 0xd1, 0x73, 0x4f, 0x8e, 0xb5, 0x2b,
0x4b, 0x27, 0xa7, 0x91, 0x22, 0x56, 0x9d, 0xaa, 0x4a, 0x48, 0x15, 0x5f, 0xef, 0x84, 0xa2, 0x65, 0xcf, 0x2e, 0x9d, 0x9c, 0x46, 0x8a, 0x58, 0x75, 0xaa, 0x2a, 0x21, 0x55, 0x82, 0xbd, 0x13, 0x8a,
0xf4, 0xbd, 0xc4, 0x76, 0x04, 0xa9, 0xd8, 0x77, 0x94, 0x60, 0x15, 0xb7, 0x81, 0x15, 0x1f, 0xd2, 0x96, 0xd1, 0xf7, 0x12, 0xdb, 0x11, 0x24, 0x64, 0xdf, 0x51, 0x82, 0x55, 0xdc, 0x06, 0x56, 0x7c,
0xf6, 0x2e, 0xae, 0x2f, 0xf1, 0x56, 0x67, 0xe9, 0x23, 0x58, 0x8e, 0x26, 0x5e, 0x0b, 0xdb, 0xc9, 0x48, 0xde, 0xbb, 0xb8, 0xbe, 0xc4, 0x5b, 0x9d, 0xab, 0x8f, 0x60, 0x39, 0x9a, 0x78, 0x2d, 0x6c,
0x04, 0xb2, 0x75, 0xdf, 0x39, 0x5e, 0x1e, 0xdb, 0x97, 0xe6, 0x71, 0x10, 0x03, 0x78, 0xb3, 0x07, 0x27, 0x13, 0xc8, 0xd9, 0x7d, 0xe7, 0x78, 0x79, 0x6c, 0x5f, 0x9a, 0xc7, 0x41, 0x0c, 0xe0, 0xcd,
0xce, 0x85, 0x4b, 0x99, 0xbb, 0x39, 0xf9, 0x76, 0xbf, 0xd9, 0x84, 0xc7, 0xe2, 0x36, 0x31, 0x28, 0x1e, 0x38, 0x17, 0x2e, 0x65, 0xee, 0xe6, 0xe4, 0xdb, 0xfd, 0x66, 0x13, 0x1e, 0x8b, 0xdb, 0xc4,
0xd2, 0x16, 0xee, 0x76, 0x52, 0xd9, 0x3d, 0xb0, 0x33, 0xf6, 0xfd, 0x41, 0xbb, 0x8e, 0x7d, 0x15, 0xa0, 0x48, 0x5b, 0xb8, 0xdb, 0x49, 0x65, 0xf7, 0xc0, 0xce, 0xd8, 0xf7, 0x07, 0xed, 0x3a, 0xf6,
0x5c, 0x3d, 0xbb, 0x63, 0x82, 0xdf, 0x18, 0xd0, 0x76, 0xaa, 0x96, 0x50, 0x15, 0xc1, 0x9f, 0xb3, 0x55, 0x70, 0xf5, 0xec, 0x8e, 0x09, 0x7e, 0x63, 0x40, 0xdb, 0xa9, 0x5a, 0x42, 0xd5, 0x05, 0x7f,
0x43, 0x20, 0xd4, 0x5c, 0xf6, 0x55, 0x2f, 0x7a, 0x40, 0xa7, 0x31, 0x23, 0xa1, 0x55, 0x65, 0x21, 0xce, 0x0e, 0x81, 0x50, 0xd3, 0xd9, 0x57, 0xbd, 0xe8, 0x01, 0x9d, 0xc6, 0x8c, 0x84, 0x56, 0x95,
0x62, 0x55, 0x6d, 0xed, 0xc0, 0xef, 0x54, 0xfe, 0xa5, 0x2e, 0xb8, 0x48, 0xf7, 0x04, 0x6c, 0xd1, 0x85, 0x88, 0x55, 0xcd, 0xb5, 0x03, 0xbf, 0x53, 0xf9, 0x97, 0xba, 0xe0, 0x22, 0xdd, 0x13, 0xb0,
0x07, 0x8f, 0x6c, 0x31, 0xf5, 0xd8, 0xea, 0xf7, 0x9c, 0x67, 0xed, 0xbc, 0xd7, 0xe7, 0xa5, 0x5a, 0x45, 0x1f, 0x3c, 0xb2, 0xc5, 0xd4, 0x63, 0xab, 0xdf, 0x73, 0x9e, 0xb5, 0xf3, 0x5e, 0x9f, 0x97,
0x2f, 0x2b, 0xe6, 0x4a, 0x8d, 0xe3, 0xf1, 0x05, 0xbe, 0x3a, 0x83, 0xde, 0x51, 0xdf, 0x30, 0xd0, 0x2a, 0xbe, 0xac, 0xa4, 0x2b, 0xb5, 0x8f, 0xc7, 0x17, 0xf8, 0xea, 0x0c, 0x3a, 0x48, 0x7d, 0xcf,
0xcb, 0x59, 0x2d, 0x0e, 0xdf, 0x58, 0xbd, 0x1f, 0xf3, 0xe7, 0x06, 0xf4, 0xb1, 0x66, 0x76, 0x3b, 0x40, 0x47, 0x67, 0xb5, 0x38, 0x7c, 0x63, 0xf5, 0x7e, 0xcc, 0x9f, 0x1b, 0xd0, 0xcd, 0x9a, 0x09,
0xd2, 0xa5, 0xd0, 0xf8, 0xaf, 0x6c, 0xad, 0x66, 0xbd, 0x68, 0x13, 0x87, 0xb6, 0x95, 0x56, 0x47, 0xee, 0x48, 0x17, 0x44, 0xe3, 0xbf, 0xb2, 0xb5, 0x9a, 0xf8, 0xa2, 0x4d, 0x1c, 0xda, 0x56, 0x5a,
0x89, 0xba, 0x51, 0x00, 0x51, 0x23, 0x8c, 0xba, 0x66, 0x62, 0xad, 0x26, 0x8e, 0xd0, 0xe9, 0xa8, 0x23, 0x25, 0xea, 0x46, 0x01, 0x44, 0x8d, 0x30, 0xea, 0x9a, 0xb9, 0xb5, 0x9a, 0x3b, 0x42, 0xbf,
0x59, 0x15, 0xb6, 0xe6, 0xba, 0xcb, 0x01, 0x67, 0x59, 0x37, 0x74, 0x07, 0xa5, 0x9e, 0x7e, 0x49, 0xa3, 0x26, 0x56, 0xd8, 0x9a, 0xeb, 0x5e, 0x07, 0x9c, 0x65, 0xdd, 0xd0, 0x7d, 0x94, 0x7a, 0xfa,
0xb2, 0x0e, 0x6a, 0x1e, 0x40, 0x9f, 0x44, 0xe5, 0x4a, 0xa8, 0xb1, 0x08, 0x94, 0xd5, 0x80, 0xaa, 0x25, 0xc9, 0xfa, 0xa8, 0x79, 0x00, 0xdd, 0x12, 0x95, 0x2b, 0xa1, 0x86, 0x23, 0x50, 0x5c, 0x03,
0xa6, 0x24, 0xe9, 0x50, 0x04, 0x1a, 0xa1, 0x18, 0x12, 0x5b, 0x09, 0xb6, 0xa2, 0x61, 0x34, 0xb5, 0xaa, 0x9a, 0x95, 0xa4, 0xa3, 0x11, 0x68, 0x87, 0x62, 0x48, 0x6c, 0x25, 0xd8, 0x8a, 0x86, 0xd1,
0xc6, 0x8d, 0xd1, 0x42, 0x17, 0x6a, 0x69, 0xef, 0x65, 0x5e, 0x0a, 0xfd, 0xf2, 0x85, 0x62, 0x3b, 0xd4, 0x1a, 0x37, 0x46, 0x0b, 0x5d, 0xae, 0xa5, 0x1d, 0x98, 0x79, 0x29, 0x74, 0xcd, 0x17, 0x8a,
0x19, 0x75, 0xcd, 0xc2, 0xd8, 0xb4, 0x4c, 0xf5, 0x7b, 0x1a, 0xf9, 0xa6, 0xa9, 0xda, 0x34, 0x85, 0xed, 0x64, 0xd4, 0x35, 0x0b, 0x63, 0xd3, 0x38, 0xd5, 0xef, 0x69, 0xe4, 0x9b, 0xa6, 0x6a, 0xd3,
0x36, 0x60, 0xb7, 0xaf, 0xb4, 0x23, 0xd9, 0x2c, 0xd6, 0x0c, 0x64, 0x9c, 0x93, 0x2d, 0xdd, 0xa1, 0x14, 0x9a, 0x81, 0xdd, 0xbe, 0xd2, 0x8e, 0x64, 0xb3, 0x58, 0x33, 0x90, 0x71, 0x4e, 0xb6, 0x74,
0xac, 0xe2, 0x8c, 0xfc, 0xea, 0x64, 0xdc, 0x38, 0x39, 0x57, 0x0d, 0x83, 0x1a, 0x80, 0xc3, 0xdb, 0x87, 0xb2, 0x8a, 0x33, 0xf2, 0xab, 0x93, 0x71, 0xe3, 0xe4, 0x5c, 0xb5, 0x0d, 0x6a, 0x0c, 0x0e,
0x1c, 0x94, 0x1e, 0x21, 0x01, 0x75, 0x8d, 0x4a, 0xa8, 0xe5, 0xf9, 0x84, 0x1e, 0xba, 0x65, 0x6a, 0x6f, 0x73, 0x50, 0x7a, 0x84, 0x04, 0x54, 0x37, 0x2a, 0xa1, 0x96, 0xa7, 0x14, 0x7a, 0xf4, 0x96,
0xf8, 0xe9, 0x7a, 0x66, 0x04, 0xd1, 0x75, 0xb5, 0x72, 0xaa, 0x42, 0x49, 0xe9, 0x16, 0x46, 0x65, 0xa9, 0xe1, 0xa7, 0xeb, 0x99, 0x11, 0x44, 0x57, 0xd7, 0xca, 0xa9, 0x0a, 0x85, 0xa5, 0x5b, 0x18,
0x7a, 0x28, 0x0b, 0x1a, 0xd9, 0x9b, 0x58, 0xf4, 0xcf, 0x91, 0xe6, 0x96, 0x0f, 0x22, 0x1a, 0xfb, 0x98, 0xe9, 0xd1, 0x2c, 0x68, 0x64, 0x6f, 0x6e, 0xd1, 0x3f, 0x47, 0x9a, 0x5b, 0x3e, 0x8e, 0x68,
0xc3, 0x0a, 0x90, 0xcd, 0xf8, 0x41, 0x8e, 0x54, 0x9a, 0x55, 0xe4, 0x03, 0x2a, 0x33, 0xc1, 0x43, 0xec, 0x8f, 0x2c, 0x40, 0x36, 0xe3, 0x07, 0x39, 0x52, 0x69, 0x62, 0x91, 0x8f, 0xa9, 0xcc, 0x1c,
0x8d, 0xc4, 0xb8, 0x5f, 0x5a, 0x54, 0x0f, 0x74, 0x11, 0xbd, 0x37, 0xb4, 0xba, 0x54, 0x93, 0xcc, 0x0f, 0x35, 0x12, 0xe3, 0x7e, 0x69, 0x69, 0x3d, 0xd0, 0xa5, 0xf4, 0xde, 0xe8, 0xea, 0x52, 0xcd,
0x00, 0x1a, 0xd0, 0x7c, 0x08, 0x61, 0x94, 0x15, 0x13, 0x9f, 0x89, 0x62, 0xef, 0x9b, 0xfe, 0x66, 0x33, 0x03, 0x68, 0x43, 0xf3, 0x51, 0x84, 0x51, 0x56, 0x4c, 0x7c, 0x26, 0x8a, 0x1d, 0x70, 0xfa,
0x30, 0x3d, 0x2d, 0x98, 0x29, 0xef, 0xe7, 0xe4, 0x8a, 0x25, 0xea, 0x5c, 0x21, 0x59, 0xd0, 0x10, 0xcb, 0xc1, 0xf4, 0xb4, 0x60, 0xa6, 0xbc, 0xab, 0x93, 0x2b, 0x96, 0xa8, 0x73, 0x85, 0x64, 0x41,
0x6c, 0x00, 0x2d, 0xd8, 0xa8, 0x6b, 0x5e, 0x6a, 0xc9, 0x36, 0xf2, 0x53, 0xa1, 0x2f, 0x27, 0x9b, 0x43, 0xb0, 0x01, 0x34, 0x62, 0xa3, 0xae, 0x79, 0xa9, 0x25, 0xdb, 0xc8, 0x4f, 0x85, 0xbe, 0x9c,
0xb5, 0x3b, 0x39, 0xe5, 0xff, 0xfe, 0xfb, 0x3f, 0xfa, 0xe0, 0x70, 0xa4, 0x46, 0xf1, 0x4c, 0xa3, 0x6c, 0xd6, 0xf4, 0xe4, 0x94, 0xff, 0xfb, 0xef, 0xff, 0xe8, 0x83, 0xc3, 0x91, 0x1a, 0xc5, 0x33,
0xd5, 0x77, 0x5a, 0x11, 0xa6, 0x69, 0x1a, 0x57, 0x9b, 0x23, 0xb0, 0xed, 0x77, 0xe9, 0xb0, 0xce, 0x8d, 0x56, 0xdf, 0x69, 0x45, 0x98, 0xd6, 0x69, 0x5c, 0x6d, 0x91, 0xc0, 0xb6, 0xdf, 0xa5, 0x23,
0x3f, 0x34, 0x89, 0x49, 0x4f, 0x3b, 0xfb, 0xf2, 0xd1, 0xcb, 0x9b, 0xc2, 0x78, 0xa0, 0xd4, 0x3c, 0x3b, 0xff, 0xd0, 0x3c, 0x26, 0x3d, 0xed, 0xec, 0xcb, 0x07, 0x30, 0x6f, 0x0a, 0x43, 0x82, 0x52,
0xea, 0x41, 0x4b, 0x23, 0xa5, 0x9b, 0x92, 0xbd, 0xf8, 0x1a, 0xb2, 0x8d, 0x43, 0x74, 0xd5, 0xe1, 0x0b, 0xa9, 0xc7, 0x2d, 0x8d, 0x94, 0x6e, 0x4a, 0xf6, 0xe2, 0x6b, 0xc8, 0x36, 0x0e, 0xd1, 0x55,
0x77, 0xa3, 0x2e, 0xe3, 0xa5, 0x49, 0x7e, 0x04, 0xc3, 0xea, 0x7a, 0x9f, 0x57, 0xa3, 0xc4, 0xec, 0x87, 0xdf, 0x0d, 0xbc, 0x8c, 0x97, 0x26, 0xf9, 0x11, 0x0c, 0xab, 0xeb, 0x7d, 0x5e, 0x8d, 0x12,
0x8d, 0xb5, 0x73, 0xb1, 0xc3, 0x27, 0xc8, 0x06, 0x65, 0x55, 0x26, 0x8d, 0x8c, 0xcb, 0xed, 0x8b, 0xb3, 0x37, 0xd6, 0xce, 0xc5, 0x0e, 0x9f, 0x20, 0x1b, 0x97, 0x55, 0x99, 0x34, 0x32, 0x2e, 0xb7,
0x27, 0xfa, 0x22, 0x26, 0xea, 0x38, 0x8d, 0xdd, 0x98, 0xb5, 0xb6, 0x53, 0x1c, 0x57, 0x86, 0xaa, 0x2f, 0x9e, 0xe8, 0x8b, 0x98, 0xa8, 0xe3, 0x34, 0x76, 0xc3, 0xd6, 0xda, 0x7e, 0x71, 0x5c, 0x19,
0x95, 0xc8, 0x4c, 0xd5, 0x3b, 0x7d, 0x49, 0x69, 0x2f, 0x8e, 0x52, 0x0f, 0x8d, 0x51, 0x1b, 0x35, 0xad, 0x56, 0x22, 0x33, 0x55, 0xef, 0xf4, 0x25, 0xa5, 0xbd, 0x38, 0x50, 0x3d, 0x34, 0x4c, 0x6d,
0x31, 0x57, 0xe6, 0x79, 0xf3, 0xc2, 0xc1, 0xf6, 0x58, 0x36, 0x4a, 0x93, 0xd3, 0xcf, 0x4d, 0x4d, 0xd4, 0xc4, 0x5c, 0x99, 0xe7, 0xcd, 0x0b, 0x07, 0xdb, 0x63, 0xd9, 0x28, 0xcd, 0x4f, 0x3f, 0x37,
0x4b, 0x61, 0x5e, 0x3b, 0x31, 0xcd, 0xdc, 0xf5, 0xf6, 0x6b, 0x84, 0xa8, 0x99, 0x92, 0x66, 0x48, 0x3b, 0x2d, 0x85, 0x79, 0xed, 0xdc, 0x34, 0x73, 0xd7, 0xdb, 0xaf, 0x11, 0xa2, 0x66, 0x56, 0x9a,
0x8d, 0x17, 0x46, 0xa4, 0x25, 0x69, 0x6a, 0xc6, 0xa3, 0xd5, 0x21, 0x68, 0x26, 0xdb, 0xbc, 0x10, 0x21, 0x35, 0x5e, 0x18, 0x94, 0x96, 0xa4, 0xa9, 0x19, 0x92, 0x56, 0x47, 0xa1, 0x99, 0x6c, 0xf3,
0xe1, 0x35, 0x96, 0xd7, 0x7f, 0x3a, 0x11, 0xef, 0xcf, 0xcd, 0x55, 0xa4, 0xef, 0x1f, 0x76, 0x7a, 0x42, 0x84, 0xd7, 0x58, 0x5e, 0xff, 0xe9, 0x44, 0xbc, 0x3f, 0x3d, 0x57, 0x91, 0xbe, 0x7f, 0xd8,
0xf5, 0x35, 0xa7, 0xad, 0xb3, 0x72, 0xe3, 0xe0, 0xb4, 0xfc, 0xa0, 0x95, 0x5f, 0xe0, 0xd9, 0xf8, 0xe9, 0xd5, 0xd7, 0x9c, 0xb6, 0xce, 0xca, 0x8d, 0x83, 0x33, 0xf3, 0x83, 0x56, 0x7e, 0x81, 0x67,
0xcc, 0x80, 0xfc, 0xab, 0xcc, 0xdc, 0xa8, 0xb5, 0x73, 0x66, 0xe6, 0xaf, 0x3a, 0x79, 0xe3, 0x05, 0xe3, 0x33, 0x63, 0xf2, 0xaf, 0x32, 0x73, 0xa3, 0xd6, 0xce, 0x99, 0x99, 0xbf, 0xea, 0xe4, 0x8d,
0x43, 0xff, 0x11, 0x3b, 0x37, 0x0e, 0x18, 0x3a, 0xb3, 0xf3, 0xd5, 0x17, 0x18, 0xba, 0x9a, 0xb2, 0x17, 0x0c, 0xfd, 0x47, 0xec, 0xdc, 0x38, 0x60, 0xe8, 0xcc, 0xce, 0x57, 0x5f, 0x60, 0xe8, 0x6a,
0xb3, 0x54, 0x6e, 0x9a, 0x1b, 0x9d, 0x00, 0xd2, 0x96, 0x17, 0xe4, 0x30, 0x4f, 0xe5, 0x4b, 0x0e, 0xca, 0xce, 0x52, 0xb9, 0x69, 0x6e, 0x74, 0x02, 0x28, 0x35, 0xbe, 0x20, 0x8d, 0x79, 0x2f, 0x5f,
0x2a, 0xa4, 0xbc, 0x2c, 0x48, 0xc1, 0x0d, 0x05, 0x2f, 0xcf, 0xd9, 0xc6, 0x23, 0x86, 0xd2, 0x6b, 0x75, 0x50, 0x27, 0xe5, 0xc5, 0x41, 0x31, 0x79, 0x94, 0x67, 0x6e, 0xe3, 0x11, 0x43, 0xe9, 0x65,
0x50, 0x8f, 0x82, 0x06, 0xdf, 0x04, 0x44, 0x69, 0xe4, 0x8c, 0x70, 0x14, 0x89, 0x68, 0x13, 0x12, 0xa8, 0xc7, 0x42, 0x83, 0x6f, 0x02, 0xa2, 0xf4, 0x72, 0x46, 0x38, 0x8a, 0x44, 0xb4, 0x09, 0x89,
0x49, 0xb5, 0x83, 0xe9, 0x3c, 0x82, 0xe0, 0x9a, 0x14, 0x70, 0xb0, 0x7b, 0x26, 0x57, 0x28, 0x8a, 0xa4, 0xda, 0xcd, 0x74, 0x36, 0x41, 0x70, 0x59, 0x0a, 0x38, 0xde, 0x3d, 0x93, 0x2b, 0x14, 0xc5,
0x69, 0x9b, 0xc4, 0xba, 0x74, 0xf3, 0x21, 0x89, 0xa9, 0x2b, 0xa4, 0xa3, 0x0d, 0xf3, 0x6e, 0x05, 0xb4, 0x4d, 0x62, 0x5d, 0xc0, 0xf9, 0x90, 0xca, 0xd4, 0x45, 0xd2, 0xd1, 0xac, 0xde, 0xad, 0xe0,
0xb7, 0xbb, 0x51, 0x5c, 0x82, 0x7c, 0x81, 0xb8, 0x90, 0x88, 0x04, 0x81, 0x32, 0x4f, 0xc0, 0x38, 0x8e, 0x37, 0xea, 0x4b, 0x90, 0x2f, 0x10, 0x17, 0x12, 0x91, 0x20, 0x50, 0x46, 0x0a, 0x18, 0x27,
0xc9, 0xa8, 0x18, 0x64, 0xf5, 0x13, 0xe1, 0xf5, 0xf5, 0x00, 0xcd, 0x32, 0x66, 0x7a, 0x0a, 0x09, 0x19, 0x15, 0x83, 0xac, 0x7e, 0x2e, 0xbc, 0xbe, 0x1e, 0xa0, 0x59, 0xc6, 0x4c, 0x4f, 0x24, 0xa1,
0xd5, 0x69, 0x7c, 0x1f, 0x43, 0x73, 0x81, 0xa0, 0xd5, 0x0c, 0x19, 0x8d, 0x51, 0x02, 0x35, 0x89, 0x46, 0x8d, 0xef, 0x63, 0x68, 0x31, 0x10, 0x34, 0x9c, 0x21, 0xa3, 0x31, 0x4a, 0xa0, 0x32, 0xf1,
0x5f, 0x92, 0x22, 0x39, 0x52, 0xe3, 0x62, 0xa3, 0x30, 0x53, 0xc5, 0xe8, 0xf3, 0xed, 0x66, 0x5c, 0x4b, 0x52, 0x24, 0x47, 0x6a, 0x74, 0x6c, 0xd4, 0x66, 0x6a, 0x99, 0x86, 0x4e, 0x8e, 0xf9, 0xbc,
0x87, 0x6a, 0xa7, 0xa2, 0xca, 0x8f, 0x7a, 0xa0, 0xf4, 0x8c, 0x77, 0xb1, 0xe6, 0xd9, 0xbb, 0x30, 0xeb, 0x50, 0x05, 0x55, 0x54, 0xfc, 0x51, 0x0f, 0x54, 0x9f, 0xf1, 0x2e, 0x56, 0x3e, 0x7b, 0xd7,
0xd3, 0x0b, 0x31, 0x49, 0x7f, 0xfe, 0x07, 0xc0, 0xdf, 0x75, 0x22, 0x57, 0xbf, 0xd2, 0x1e, 0xb8, 0x66, 0x7a, 0x2d, 0x26, 0xe9, 0xbf, 0x02, 0x00, 0xe0, 0xef, 0x3a, 0x9d, 0xab, 0x5f, 0x6c, 0x0f,
0x58, 0xce, 0x20, 0xb6, 0x5f, 0xc8, 0xf9, 0xdf, 0xbf, 0xaa, 0x4d, 0xfa, 0x85, 0x6a, 0x28, 0x9f, 0x5c, 0x2f, 0x67, 0x10, 0xe1, 0x2f, 0x64, 0xfe, 0xef, 0x5f, 0xd5, 0xa6, 0xfe, 0x42, 0x4d, 0x94,
0x9f, 0x37, 0x4e, 0x53, 0x0d, 0x23, 0x96, 0xc0, 0x93, 0x4f, 0x15, 0xd7, 0xbe, 0xaa, 0xbc, 0xd6, 0xcf, 0xd2, 0x1b, 0xa7, 0xa9, 0x86, 0x11, 0x4b, 0xe0, 0xc9, 0xa7, 0x8a, 0x6b, 0x5f, 0xd5, 0x5f,
0x22, 0xa6, 0x28, 0x5a, 0x3d, 0x26, 0xfa, 0xf2, 0xc9, 0x2d, 0x95, 0x18, 0xed, 0xbe, 0x25, 0xde, 0x6b, 0x11, 0x53, 0x14, 0xad, 0x1e, 0x13, 0x7d, 0x05, 0xe5, 0x96, 0x4a, 0x8c, 0x76, 0xdf, 0x12,
0x2a, 0x55, 0x1a, 0xf8, 0x88, 0x1a, 0xee, 0xc2, 0x3e, 0x9f, 0x81, 0x31, 0xa0, 0xe9, 0x95, 0x28, 0x6f, 0x95, 0x2a, 0x0d, 0x7c, 0x44, 0x0d, 0x7a, 0x61, 0x9f, 0xcf, 0xc0, 0x18, 0xd0, 0xfa, 0x4a,
0x61, 0xbf, 0x53, 0x44, 0xb8, 0xdf, 0x05, 0x42, 0x2b, 0x50, 0x70, 0x61, 0x49, 0x51, 0x12, 0xbb, 0x94, 0xb0, 0xdf, 0x29, 0x22, 0xdc, 0xef, 0x02, 0xa1, 0x15, 0x28, 0xb8, 0xb0, 0xa4, 0x28, 0x89,
0x08, 0xcb, 0xb0, 0x12, 0x49, 0x62, 0x35, 0x2d, 0x06, 0xe7, 0x60, 0x80, 0x95, 0x42, 0x53, 0x83, 0x5d, 0x9c, 0x65, 0x58, 0x89, 0x24, 0xb1, 0x9a, 0x1c, 0x83, 0x73, 0x30, 0xc0, 0x4a, 0xa1, 0xa9,
0x36, 0x72, 0x83, 0x80, 0x76, 0xaa, 0x4e, 0xa3, 0x55, 0x56, 0xbe, 0xbc, 0x92, 0xdc, 0x43, 0x8b, 0x41, 0x1b, 0xb9, 0x41, 0x40, 0x3b, 0x55, 0xa7, 0xd1, 0x2a, 0x2b, 0x5f, 0x61, 0x49, 0xee, 0xa1,
0x9f, 0xab, 0x82, 0x41, 0x0f, 0x58, 0xf0, 0x0f, 0x15, 0xb2, 0x20, 0x9d, 0x2a, 0xce, 0x81, 0x8d, 0xc5, 0xcf, 0x55, 0xc1, 0xa0, 0x07, 0x2c, 0xf8, 0x87, 0xca, 0x59, 0x90, 0x4e, 0x95, 0xe8, 0xc0,
0x2a, 0xe0, 0x55, 0x35, 0xaf, 0xfe, 0x2b, 0xe5, 0x7f, 0x8b, 0x57, 0xfd, 0xdf, 0xa5, 0x22, 0x00, 0x46, 0x95, 0xf1, 0xaa, 0xa6, 0x57, 0xff, 0xa1, 0xf2, 0x3f, 0x5b, 0x3f, 0x4a, 0xbe, 0xb1, 0x22,
0x00 0x00, 0x00
}; };

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@
*/ */
// version code in format yymmddb (b = daily build) // version code in format yymmddb (b = daily build)
#define VERSION 2302150 #define VERSION 2302151
//uncomment this if you have a "my_config.h" file you'd like to use //uncomment this if you have a "my_config.h" file you'd like to use
//#define WLED_USE_MY_CONFIG //#define WLED_USE_MY_CONFIG

View File

@@ -288,6 +288,14 @@ void initServer()
request->send(response); request->send(response);
}); });
//WLEDMM
server.on("/peek.js", HTTP_GET, [](AsyncWebServerRequest *request){
AsyncWebServerResponse *response = request->beginResponse_P(200, "application/javascript", PAGE_peekJs, PAGE_peekJs_length);
response->addHeader(FPSTR(s_content_enc),"gzip");
setStaticContentCacheHeaders(response);
request->send(response);
});
createEditHandler(correctPIN); createEditHandler(correctPIN);
#ifndef WLED_DISABLE_OTA #ifndef WLED_DISABLE_OTA