diff --git a/examples/mqtt-client-aws-iot/README.md b/examples/mqtt-client-aws-iot/README.md index 48c2b568..122bb27b 100644 --- a/examples/mqtt-client-aws-iot/README.md +++ b/examples/mqtt-client-aws-iot/README.md @@ -1 +1,2 @@ -See detailed tutorial at https://mongoose.ws/tutorials/mqtt-client-aws-iot/ +- This example requires generating AWS and user credentials and downloading certificates +- This example requires building with TLS support; before running, see detailed tutorial at https://mongoose.ws/tutorials/mqtt-client-aws-iot/ diff --git a/examples/smtp-client/Makefile b/examples/smtp-client/Makefile index 88306c71..762728ec 100644 --- a/examples/smtp-client/Makefile +++ b/examples/smtp-client/Makefile @@ -1,20 +1,32 @@ -PROG ?= example -CFLAGS ?= -W -Wall -Wextra -O2 $(EXTRA_CFLAGS) -SSL ?= MBEDTLS +PROG ?= example # Program we are building +DELETE = rm -rf # Command to remove files +OUT ?= -o $(PROG) # Compiler argument for output file +SOURCES = main.c mongoose.c # Source code files +CFLAGS = -W -Wall -Wextra -g -I. # Build options -ifeq "$(SSL)" "MBEDTLS" -CFLAGS += -DMG_ENABLE_MBEDTLS=1 -lmbedtls -lmbedcrypto -lmbedx509 -L$(MBEDTLS)/lib -I$(MBEDTLS)/include +# Mongoose build options. See https://mongoose.ws/documentation/#build-options +#CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 + +ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe + PROG ?= example.exe # Use .exe suffix for the binary + CC = gcc # Use MinGW gcc compiler + CFLAGS += -lws2_32 # Link against Winsock library + DELETE = cmd /C del /Q /F /S # Command prompt command to delete files + OUT ?= -o $(PROG) # Build output + MAKE += WINDOWS=1 CC=$(CC) endif -ifeq "$(SSL)" "OPENSSL" -CFLAGS += -DMG_ENABLE_OPENSSL=1 -lssl -lcrypto -L$(OPENSSL)/lib -I$(OPENSSL)/include -endif - -all: $(PROG) +all: $(PROG) # Default target. Build and run program $(RUN) ./$(PROG) $(ARGS) -$(PROG): main.c - $(CC) ../../mongoose.c -I../.. $(CFLAGS) -o $(PROG) main.c +$(PROG): $(SOURCES) # Build program from sources + $(CC) $(SOURCES) $(CFLAGS) $(CFLAGS_MONGOOSE) $(CFLAGS_EXTRA) $(OUT) -clean: - rm -rf $(PROG) _CL* *.o *.dSYM *.gcov *.gcno *.gcda *.obj *.exe *.ilk *.pdb mbedtls +clean: # Cleanup. Delete built program and all build artifacts + $(DELETE) $(PROG) *.o *.obj *.exe *.dSYM mbedtls + +# see https://mongoose.ws/tutorials/tls/#how-to-build for TLS build options + +mbedtls: # Pull and build mbedTLS library + git clone --depth 1 -b v2.28.2 https://github.com/mbed-tls/mbedtls $@ + $(MAKE) -C mbedtls/library diff --git a/examples/smtp-client/README.md b/examples/smtp-client/README.md index 86f1dc9d..aff0cf43 100644 --- a/examples/smtp-client/README.md +++ b/examples/smtp-client/README.md @@ -1,5 +1,2 @@ -# SMTP client example - -This example shows how to send emails using Mongoose. -Before running this example, open main.c and modify settings at the top -of the file. +- This example requires changing server name and user credentials on `main.c` +- This example requires building with TLS support; before running, see detailed tutorial at https://mongoose.ws/tutorials/smtp-client/ diff --git a/examples/smtp-client/mongoose.c b/examples/smtp-client/mongoose.c new file mode 120000 index 00000000..8ef6e62d --- /dev/null +++ b/examples/smtp-client/mongoose.c @@ -0,0 +1 @@ +../../mongoose.c \ No newline at end of file diff --git a/examples/smtp-client/mongoose.h b/examples/smtp-client/mongoose.h new file mode 120000 index 00000000..488ef358 --- /dev/null +++ b/examples/smtp-client/mongoose.h @@ -0,0 +1 @@ +../../mongoose.h \ No newline at end of file diff --git a/examples/sntp-time-sync/Makefile b/examples/sntp-time-sync/Makefile index 7870cca0..b231dd04 100644 --- a/examples/sntp-time-sync/Makefile +++ b/examples/sntp-time-sync/Makefile @@ -1,10 +1,25 @@ -PROG ?= example +PROG ?= example # Program we are building +DELETE = rm -rf # Command to remove files +OUT ?= -o $(PROG) # Compiler argument for output file +SOURCES = main.c mongoose.c # Source code files +CFLAGS = -W -Wall -Wextra -g -I. # Build options -all: $(PROG) +# Mongoose build options. See https://mongoose.ws/documentation/#build-options +CFLAGS_MONGOOSE += -DMG_ENABLE_LINES + +ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe + PROG ?= example.exe # Use .exe suffix for the binary + CC = gcc # Use MinGW gcc compiler + CFLAGS += -lws2_32 # Link against Winsock library + DELETE = cmd /C del /Q /F /S # Command prompt command to delete files + OUT ?= -o $(PROG) # Build output +endif + +all: $(PROG) # Default target. Build and run program $(RUN) ./$(PROG) $(ARGS) -$(PROG): main.c - $(CC) ../../mongoose.c -I../.. -W -Wall -DMG_ENABLE_LINES=1 $(CFLAGS) -o $(PROG) main.c +$(PROG): $(SOURCES) # Build program from sources + $(CC) $(SOURCES) $(CFLAGS) $(CFLAGS_MONGOOSE) $(CFLAGS_EXTRA) $(OUT) -clean: - rm -rf $(PROG) *.o *.dSYM *.gcov *.gcno *.gcda *.obj *.exe *.ilk *.pdb +clean: # Cleanup. Delete built program and all build artifacts + $(DELETE) $(PROG) *.o *.obj *.exe *.dSYM diff --git a/examples/sntp-time-sync/mongoose.c b/examples/sntp-time-sync/mongoose.c new file mode 120000 index 00000000..8ef6e62d --- /dev/null +++ b/examples/sntp-time-sync/mongoose.c @@ -0,0 +1 @@ +../../mongoose.c \ No newline at end of file diff --git a/examples/sntp-time-sync/mongoose.h b/examples/sntp-time-sync/mongoose.h new file mode 120000 index 00000000..488ef358 --- /dev/null +++ b/examples/sntp-time-sync/mongoose.h @@ -0,0 +1 @@ +../../mongoose.h \ No newline at end of file diff --git a/examples/socks5-server/Makefile b/examples/socks5-server/Makefile index aa649765..b231dd04 100644 --- a/examples/socks5-server/Makefile +++ b/examples/socks5-server/Makefile @@ -1,19 +1,25 @@ -PROG ?= example -CFLAGS ?= -DMG_ENABLE_LINES $(CFLAGS_EXTRA) -MBEDTLS_DIR ?= +PROG ?= example # Program we are building +DELETE = rm -rf # Command to remove files +OUT ?= -o $(PROG) # Compiler argument for output file +SOURCES = main.c mongoose.c # Source code files +CFLAGS = -W -Wall -Wextra -g -I. # Build options -ifeq "$(MBEDTLS_DIR)" "" -else -CFLAGS += -DMG_ENABLE_MBEDTLS=1 -I$(MBEDTLS_DIR)/include -I/usr/include -CFLAGS += -L$(MBEDTLS_DIR)/lib -lmbedtls -lmbedcrypto -lmbedx509 +# Mongoose build options. See https://mongoose.ws/documentation/#build-options +CFLAGS_MONGOOSE += -DMG_ENABLE_LINES + +ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe + PROG ?= example.exe # Use .exe suffix for the binary + CC = gcc # Use MinGW gcc compiler + CFLAGS += -lws2_32 # Link against Winsock library + DELETE = cmd /C del /Q /F /S # Command prompt command to delete files + OUT ?= -o $(PROG) # Build output endif -all: $(PROG) - $(DEBUGGER) ./$(PROG) $(ARGS) +all: $(PROG) # Default target. Build and run program + $(RUN) ./$(PROG) $(ARGS) +$(PROG): $(SOURCES) # Build program from sources + $(CC) $(SOURCES) $(CFLAGS) $(CFLAGS_MONGOOSE) $(CFLAGS_EXTRA) $(OUT) -$(PROG): main.c - $(CC) ../../mongoose.c -I../.. -W -Wall $(CFLAGS) -o $(PROG) main.c - -clean: - rm -rf $(PROG) *.o *.dSYM *.gcov *.gcno *.gcda *.obj *.exe *.ilk *.pdb +clean: # Cleanup. Delete built program and all build artifacts + $(DELETE) $(PROG) *.o *.obj *.exe *.dSYM diff --git a/examples/socks5-server/mongoose.c b/examples/socks5-server/mongoose.c new file mode 120000 index 00000000..8ef6e62d --- /dev/null +++ b/examples/socks5-server/mongoose.c @@ -0,0 +1 @@ +../../mongoose.c \ No newline at end of file diff --git a/examples/socks5-server/mongoose.h b/examples/socks5-server/mongoose.h new file mode 120000 index 00000000..488ef358 --- /dev/null +++ b/examples/socks5-server/mongoose.h @@ -0,0 +1 @@ +../../mongoose.h \ No newline at end of file diff --git a/examples/tcp/Makefile b/examples/tcp/Makefile index 9addcb99..762728ec 100644 --- a/examples/tcp/Makefile +++ b/examples/tcp/Makefile @@ -1,20 +1,32 @@ -PROG ?= example -SSL = ? +PROG ?= example # Program we are building +DELETE = rm -rf # Command to remove files +OUT ?= -o $(PROG) # Compiler argument for output file +SOURCES = main.c mongoose.c # Source code files +CFLAGS = -W -Wall -Wextra -g -I. # Build options -ifeq "$(SSL)" "MBEDTLS" -CFLAGS += -DMG_ENABLE_MBEDTLS=1 -lmbedtls -lmbedcrypto -lmbedx509 +# Mongoose build options. See https://mongoose.ws/documentation/#build-options +#CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 + +ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe + PROG ?= example.exe # Use .exe suffix for the binary + CC = gcc # Use MinGW gcc compiler + CFLAGS += -lws2_32 # Link against Winsock library + DELETE = cmd /C del /Q /F /S # Command prompt command to delete files + OUT ?= -o $(PROG) # Build output + MAKE += WINDOWS=1 CC=$(CC) endif -ifeq "$(SSL)" "OPENSSL" -CFLAGS += -DMG_ENABLE_OPENSSL=1 -lssl -lcrypto -endif +all: $(PROG) # Default target. Build and run program + $(RUN) ./$(PROG) $(ARGS) -all: $(PROG) - $(DEBUGGER) ./$(PROG) $(ARGS) +$(PROG): $(SOURCES) # Build program from sources + $(CC) $(SOURCES) $(CFLAGS) $(CFLAGS_MONGOOSE) $(CFLAGS_EXTRA) $(OUT) +clean: # Cleanup. Delete built program and all build artifacts + $(DELETE) $(PROG) *.o *.obj *.exe *.dSYM mbedtls -$(PROG): main.c - $(CC) ../../mongoose.c -I../.. -W -Wall $(CFLAGS) $(EXTRA_CFLAGS) -o $(PROG) main.c +# see https://mongoose.ws/tutorials/tls/#how-to-build for TLS build options -clean: - rm -rf $(PROG) *.o *.dSYM *.gcov *.gcno *.gcda *.obj *.exe *.ilk *.pdb +mbedtls: # Pull and build mbedTLS library + git clone --depth 1 -b v2.28.2 https://github.com/mbed-tls/mbedtls $@ + $(MAKE) -C mbedtls/library diff --git a/examples/tcp/mongoose.c b/examples/tcp/mongoose.c new file mode 120000 index 00000000..8ef6e62d --- /dev/null +++ b/examples/tcp/mongoose.c @@ -0,0 +1 @@ +../../mongoose.c \ No newline at end of file diff --git a/examples/tcp/mongoose.h b/examples/tcp/mongoose.h new file mode 120000 index 00000000..488ef358 --- /dev/null +++ b/examples/tcp/mongoose.h @@ -0,0 +1 @@ +../../mongoose.h \ No newline at end of file diff --git a/examples/timers/Makefile b/examples/timers/Makefile index 3d179d14..b231dd04 100644 --- a/examples/timers/Makefile +++ b/examples/timers/Makefile @@ -1,10 +1,25 @@ -PROG ?= example +PROG ?= example # Program we are building +DELETE = rm -rf # Command to remove files +OUT ?= -o $(PROG) # Compiler argument for output file +SOURCES = main.c mongoose.c # Source code files +CFLAGS = -W -Wall -Wextra -g -I. # Build options -all: $(PROG) - $(DEBUGGER) ./$(PROG) $(ARGS) +# Mongoose build options. See https://mongoose.ws/documentation/#build-options +CFLAGS_MONGOOSE += -DMG_ENABLE_LINES -$(PROG): main.c - $(CC) ../../mongoose.c -I../.. -W -Wall -DMG_ENABLE_LINES=1 $(CFLAGS) -o $(PROG) main.c +ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe + PROG ?= example.exe # Use .exe suffix for the binary + CC = gcc # Use MinGW gcc compiler + CFLAGS += -lws2_32 # Link against Winsock library + DELETE = cmd /C del /Q /F /S # Command prompt command to delete files + OUT ?= -o $(PROG) # Build output +endif -clean: - rm -rf $(PROG) *.o *.dSYM *.gcov *.gcno *.gcda *.obj *.exe *.ilk *.pdb +all: $(PROG) # Default target. Build and run program + $(RUN) ./$(PROG) $(ARGS) + +$(PROG): $(SOURCES) # Build program from sources + $(CC) $(SOURCES) $(CFLAGS) $(CFLAGS_MONGOOSE) $(CFLAGS_EXTRA) $(OUT) + +clean: # Cleanup. Delete built program and all build artifacts + $(DELETE) $(PROG) *.o *.obj *.exe *.dSYM diff --git a/examples/timers/mongoose.c b/examples/timers/mongoose.c new file mode 120000 index 00000000..8ef6e62d --- /dev/null +++ b/examples/timers/mongoose.c @@ -0,0 +1 @@ +../../mongoose.c \ No newline at end of file diff --git a/examples/timers/mongoose.h b/examples/timers/mongoose.h new file mode 120000 index 00000000..488ef358 --- /dev/null +++ b/examples/timers/mongoose.h @@ -0,0 +1 @@ +../../mongoose.h \ No newline at end of file diff --git a/examples/uart-bridge/Makefile b/examples/uart-bridge/Makefile index ea0f27d5..2297bccc 100644 --- a/examples/uart-bridge/Makefile +++ b/examples/uart-bridge/Makefile @@ -1,19 +1,36 @@ -PROG ?= example -SOURCES ?= ../../mongoose.c main.c net.c packed_fs.c -CFLAGS ?= -I../.. -DMG_ENABLE_PACKED_FS=1 -DMG_ENABLE_LINES=1 $(EXTRA_CFLAGS) -FILES_TO_EMBED ?= $(wildcard web_root/*) -ROOT ?= $(realpath $(CURDIR)/../../..) -DOCKER ?= docker run --rm -e Tmp=. -e WINEDEBUG=-all -v $(ROOT):$(ROOT) -w $(CURDIR) -VC98 ?= $(DOCKER) mdashnet/vc98 wine -MINGW ?= $(DOCKER) mdashnet/mingw +PROG ?= example # Program we are building +DELETE = rm -rf # Command to remove files +OUT ?= -o $(PROG) # Compiler argument for output file +SOURCES = main.c mongoose.c net.c packed_fs.c # Source code files +CFLAGS = -W -Wall -Wextra -g -I. # Build options -all: $(PROG) - $(RUN) ./$(PROG) +# Mongoose build options. See https://mongoose.ws/documentation/#build-options +CFLAGS_MONGOOSE += -DMG_ENABLE_PACKED_FS=1 -DMG_ENABLE_LINES=1 -$(PROG): $(SOURCES) $(FILES_TO_EMBED) +ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe + PROG ?= example.exe # Use .exe suffix for the binary + CC = gcc # Use MinGW gcc compiler + CFLAGS += -lws2_32 # Link against Winsock library + DELETE = cmd /C del /Q /F /S # Command prompt command to delete files + OUT ?= -o $(PROG) # Build output +endif + +all: $(PROG) # Default target. Build and run program + $(RUN) ./$(PROG) $(ARGS) + +ifneq ($(OS),Windows_NT) +# Before embedding files, gzip them to save space +packed_fs.c: $(shell find web_root -type f) Makefile + rm -rf tmp/web_root && mkdir tmp && cp -r web_root tmp/ + find tmp -type f | xargs -n1 gzip $(CC) ../../test/pack.c -o pack - ./pack $(FILES_TO_EMBED) > packed_fs.c - $(CC) -W -Wall -Wextra -O0 -g3 $(CFLAGS) -o $(PROG) $(SOURCES) + cd tmp && ../pack `find web_root -type f` > ../$@ +endif + +$(PROG): $(SOURCES) # Build program from sources + $(CC) $(SOURCES) $(CFLAGS) $(CFLAGS_MONGOOSE) $(CFLAGS_EXTRA) $(OUT) + +clean: # Cleanup. Delete built program and all build artifacts + $(DELETE) $(PROG) *.o *.obj *.exe *.dSYM pack tmp + -clean: - rm -rf $(PROG) *.o *.dSYM *.gcov *.gcno *.gcda *.obj *.exe *.ilk *.pdb log.txt pack config.json diff --git a/examples/uart-bridge/README.md b/examples/uart-bridge/README.md index f2a79933..d662265e 100644 --- a/examples/uart-bridge/README.md +++ b/examples/uart-bridge/README.md @@ -3,14 +3,14 @@ This example is a demonstration of how Mongoose Library could be integrated into an embedded device and provide a UART-to-Network bridge capability: -- A device opens listening TCP port and Websocket port and waits for connections +- The device opens listening TCP and Websocket ports and waits for connections - When a client connects, data is exchanged with the device's UART -- Everything that client send, is sent to the UART +- Everything the client sends, is sent to the UART - Everything that is read from the UART, gets sent to the client - Multiple clients are allowed - Live UART console allows to talk to the UART from the web page - Web UI is hardcoded into the binary and does not need a filesystem -# Screenshots - ![](screenshots/dashboard.png) + +See a detailed tutorial at https://mongoose.ws/tutorials/uart-bridge/ \ No newline at end of file diff --git a/examples/uart-bridge/mongoose.c b/examples/uart-bridge/mongoose.c new file mode 120000 index 00000000..8ef6e62d --- /dev/null +++ b/examples/uart-bridge/mongoose.c @@ -0,0 +1 @@ +../../mongoose.c \ No newline at end of file diff --git a/examples/uart-bridge/mongoose.h b/examples/uart-bridge/mongoose.h new file mode 120000 index 00000000..488ef358 --- /dev/null +++ b/examples/uart-bridge/mongoose.h @@ -0,0 +1 @@ +../../mongoose.h \ No newline at end of file diff --git a/examples/uart-bridge/net.c b/examples/uart-bridge/net.c index 9ee7f28d..84eafb77 100644 --- a/examples/uart-bridge/net.c +++ b/examples/uart-bridge/net.c @@ -34,7 +34,9 @@ void config_write(struct mg_str config); #else void uart_init(int tx, int rx, int baud) { // We use stdin/stdout as UART. Make stdin non-blocking +#if MG_ARCH != MG_ARCH_WIN32 fcntl(0, F_SETFL, fcntl(0, F_GETFL) | O_NONBLOCK); +#endif (void) tx, (void) rx, (void) baud; } @@ -44,7 +46,12 @@ void uart_write(const void *buf, size_t len) { } int uart_read(void *buf, size_t len) { +#if MG_ARCH == MG_ARCH_WIN32 + (void) buf, (void) len; + return 0; +#else return read(0, buf, len); // Read from stdin +#endif } char *config_read(void) { @@ -202,7 +209,8 @@ void uart_bridge_fn(struct mg_connection *c, int ev, void *ev_data, s_state.mqtt.enable ? "true" : "false", "rx", s_state.rx, "tx", s_state.tx, "baud", s_state.baud); } else { - struct mg_http_serve_opts opts = {0}; + struct mg_http_serve_opts opts; + memset(&opts, 0, sizeof(opts)); #if 1 opts.root_dir = "/web_root"; opts.fs = &mg_fs_packed; diff --git a/examples/uart-bridge/packed_fs.c b/examples/uart-bridge/packed_fs.c index 3c47413e..6e25c6b7 100644 --- a/examples/uart-bridge/packed_fs.c +++ b/examples/uart-bridge/packed_fs.c @@ -3,1807 +3,713 @@ #include static const unsigned char v1[] = { - 60, 33, 68, 79, 67, 84, 89, 80, 69, 32, 104, 116, // .. < - 104, 101, 97, 100, 62, 10, 32, 32, 32, 32, 60, 116, // head>. Device - 68, 97, 115, 104, 98, 111, 97, 114, 100, 60, 47, 116, // Dashboard. . - 32, 32, 32, 60, 109, 101, 116, 97, 32, 104, 116, 116, // . - 32, 32, 32, 60, 109, 101, 116, 97, 32, 110, 97, 109, // . . - 10, 32, 32, 60, 98, 111, 100, 121, 62, 60, 47, 98, // . . . - 10, 0 // . + 31, 139, 8, 8, 29, 105, 247, 99, 0, 3, 105, 110, // .....i.c..in + 100, 101, 120, 46, 104, 116, 109, 108, 0, 93, 144, 177, // dex.html.].. + 78, 196, 48, 12, 134, 247, 123, 138, 144, 153, 180, 176, // N.0...{..... + 49, 36, 149, 208, 245, 6, 38, 24, 64, 130, 49, 77, // 1$....&.@.1M + 124, 23, 67, 154, 148, 196, 237, 169, 111, 79, 218, 30, // |.C.....oO.. + 226, 196, 100, 255, 246, 103, 203, 254, 229, 77, 251, 188, // ..d..g...M.. + 127, 253, 120, 57, 48, 71, 189, 111, 118, 114, 9, 204, // ..x90G.ovr.. + 235, 112, 82, 28, 2, 111, 118, 140, 73, 7, 218, 46, // .pR..ov.I... + 73, 73, 9, 201, 67, 211, 194, 132, 6, 88, 171, 179, // II..C....X.. + 235, 162, 78, 86, 214, 91, 125, 99, 122, 32, 205, 140, // ..NV.[}cz .. + 211, 41, 3, 41, 62, 210, 81, 60, 112, 86, 95, 55, // .).)>.Q3 + 47, 244, 6, 21, 115, 235, 205, 228, 31, 137, 226, 92, // /...s....... + 130, 117, 1, 0, 0, 0 // .u... }; static const unsigned char v2[] = { - 39, 117, 115, 101, 32, 115, 116, 114, 105, 99, 116, 39, // 'use strict' - 59, 10, 105, 109, 112, 111, 114, 116, 32, 123, 67, 111, // ;.import {Co - 109, 112, 111, 110, 101, 110, 116, 44, 32, 104, 44, 32, // mponent, h, - 104, 116, 109, 108, 44, 32, 114, 101, 110, 100, 101, 114, // html, render - 44, 32, 117, 115, 101, 69, 102, 102, 101, 99, 116, 44, // , useEffect, - 32, 117, 115, 101, 83, 116, 97, 116, 101, 44, 32, 117, // useState, u - 115, 101, 82, 101, 102, 125, 32, 102, 114, 111, 109, 32, // seRef} from - 39, 46, 47, 112, 114, 101, 97, 99, 116, 46, 109, 105, // './preact.mi - 110, 46, 106, 115, 39, 59, 10, 10, 99, 111, 110, 115, // n.js';..cons - 116, 32, 77, 101, 115, 115, 97, 103, 101, 32, 61, 32, // t Message = - 109, 32, 61, 62, 32, 104, 116, 109, 108, 96, 60, 115, // m => html`. - 32, 36, 123, 109, 46, 109, 101, 115, 115, 97, 103, 101, // ${m.message - 46, 100, 97, 116, 97, 125, 10, 60, 47, 115, 112, 97, // .data}.`;..const - 65, 112, 112, 32, 61, 32, 102, 117, 110, 99, 116, 105, // App = functi - 111, 110, 40, 112, 114, 111, 112, 115, 41, 32, 123, 10, // on(props) {. - 32, 32, 99, 111, 110, 115, 116, 32, 91, 99, 102, 103, // const [cfg - 44, 32, 115, 101, 116, 67, 102, 103, 93, 32, 61, 32, // , setCfg] = - 117, 115, 101, 83, 116, 97, 116, 101, 40, 123, 116, 99, // useState({tc - 112, 58, 32, 123, 125, 44, 32, 119, 115, 58, 32, 123, // p: {}, ws: { - 125, 44, 32, 109, 113, 116, 116, 58, 32, 123, 125, 125, // }, mqtt: {}} - 41, 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, 91, // );. const [ - 109, 101, 115, 115, 97, 103, 101, 115, 44, 32, 115, 101, // messages, se - 116, 77, 101, 115, 115, 97, 103, 101, 115, 93, 32, 61, // tMessages] = - 32, 117, 115, 101, 83, 116, 97, 116, 101, 40, 91, 93, // useState([] - 41, 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, 91, // );. const [ - 99, 111, 110, 110, 101, 99, 116, 101, 100, 44, 32, 115, // connected, s - 101, 116, 67, 111, 110, 110, 101, 99, 116, 101, 100, 93, // etConnected] - 32, 61, 32, 117, 115, 101, 83, 116, 97, 116, 101, 40, // = useState( - 102, 97, 108, 115, 101, 41, 59, 10, 32, 32, 99, 111, // false);. co - 110, 115, 116, 32, 91, 116, 120, 116, 44, 32, 115, 101, // nst [txt, se - 116, 84, 120, 116, 93, 32, 61, 32, 117, 115, 101, 83, // tTxt] = useS - 116, 97, 116, 101, 40, 39, 39, 41, 59, 10, 32, 32, // tate('');. - 99, 111, 110, 115, 116, 32, 91, 119, 115, 44, 32, 115, // const [ws, s - 101, 116, 87, 115, 93, 32, 61, 32, 117, 115, 101, 83, // etWs] = useS - 116, 97, 116, 101, 40, 110, 117, 108, 108, 41, 59, 10, // tate(null);. - 10, 32, 32, 99, 111, 110, 115, 116, 32, 114, 101, 102, // . const ref - 114, 101, 115, 104, 32, 61, 32, 40, 41, 32, 61, 62, // resh = () => - 10, 32, 32, 32, 32, 32, 32, 102, 101, 116, 99, 104, // . fetch - 40, 39, 47, 97, 112, 105, 47, 99, 111, 110, 102, 105, // ('/api/confi - 103, 47, 103, 101, 116, 39, 41, 46, 116, 104, 101, 110, // g/get').then - 40, 114, 32, 61, 62, 32, 114, 46, 106, 115, 111, 110, // (r => r.json - 40, 41, 41, 46, 116, 104, 101, 110, 40, 114, 32, 61, // ()).then(r = - 62, 32, 115, 101, 116, 67, 102, 103, 40, 114, 41, 41, // > setCfg(r)) - 59, 10, 10, 32, 32, 99, 111, 110, 115, 116, 32, 103, // ;.. const g - 101, 116, 112, 111, 114, 116, 32, 61, 32, 40, 117, 114, // etport = (ur - 108, 44, 32, 118, 41, 32, 61, 62, 32, 40, 40, 117, // l, v) => ((u - 114, 108, 32, 124, 124, 32, 39, 39, 41, 46, 109, 97, // rl || '').ma - 116, 99, 104, 40, 47, 46, 42, 58, 40, 92, 100, 43, // tch(/.*:(.d+ - 41, 47, 41, 32, 124, 124, 32, 91, 39, 39, 44, 32, // )/) || ['', - 118, 93, 41, 91, 49, 93, 59, 10, 10, 32, 32, 99, // v])[1];.. c - 111, 110, 115, 116, 32, 119, 97, 116, 99, 104, 87, 101, // onst watchWe - 98, 115, 111, 99, 107, 101, 116, 32, 61, 32, 102, 117, // bsocket = fu - 110, 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, // nction() {. - 32, 32, 32, 47, 47, 32, 67, 111, 110, 110, 101, 99, // // Connec - 116, 32, 116, 111, 32, 119, 101, 98, 115, 111, 99, 107, // t to websock - 101, 114, 32, 112, 111, 114, 116, 44, 32, 116, 111, 32, // er port, to - 105, 109, 112, 108, 101, 109, 101, 110, 116, 32, 87, 83, // implement WS - 32, 99, 111, 110, 115, 111, 108, 101, 10, 32, 32, 32, // console. - 32, 118, 97, 114, 32, 114, 101, 99, 111, 110, 110, 101, // var reconne - 99, 116, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, // ct = functio - 110, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, // n() {. - 118, 97, 114, 32, 112, 111, 114, 116, 32, 61, 32, 103, // var port = g - 101, 116, 112, 111, 114, 116, 40, 99, 102, 103, 46, 119, // etport(cfg.w - 115, 46, 117, 114, 108, 44, 32, 52, 48, 48, 50, 41, // s.url, 4002) - 59, 10, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, // ;. var - 108, 32, 61, 32, 119, 105, 110, 100, 111, 119, 46, 108, // l = window.l - 111, 99, 97, 116, 105, 111, 110, 44, 32, 112, 114, 111, // ocation, pro - 116, 111, 32, 61, 32, 108, 46, 112, 114, 111, 116, 111, // to = l.proto - 99, 111, 108, 46, 114, 101, 112, 108, 97, 99, 101, 40, // col.replace( - 39, 104, 116, 116, 112, 39, 44, 32, 39, 119, 115, 39, // 'http', 'ws' - 41, 59, 10, 32, 32, 32, 32, 32, 32, 118, 97, 114, // );. var - 32, 116, 105, 100, 44, 32, 117, 114, 108, 32, 61, 32, // tid, url = - 96, 36, 123, 112, 114, 111, 116, 111, 125, 47, 47, 36, // `${proto}//$ - 123, 108, 46, 104, 111, 115, 116, 110, 97, 109, 101, 125, // {l.hostname} - 58, 36, 123, 112, 111, 114, 116, 125, 47, 119, 115, 96, // :${port}/ws` - 59, 10, 32, 32, 32, 32, 32, 32, 47, 47, 32, 99, // ;. // c - 111, 110, 115, 111, 108, 101, 46, 108, 111, 103, 40, 117, // onsole.log(u - 114, 108, 41, 59, 10, 32, 32, 32, 32, 32, 32, 118, // rl);. v - 97, 114, 32, 119, 115, 32, 61, 32, 110, 101, 119, 32, // ar ws = new - 87, 101, 98, 83, 111, 99, 107, 101, 116, 40, 117, 114, // WebSocket(ur - 108, 41, 59, 10, 32, 32, 32, 32, 32, 32, 119, 115, // l);. ws - 46, 111, 110, 111, 112, 101, 110, 32, 61, 32, 40, 41, // .onopen = () - 32, 61, 62, 32, 123, 10, 32, 32, 32, 32, 32, 32, // => {. - 32, 32, 115, 101, 116, 67, 111, 110, 110, 101, 99, 116, // setConnect - 101, 100, 40, 116, 114, 117, 101, 41, 59, 10, 32, 32, // ed(true);. - 32, 32, 32, 32, 32, 32, 115, 101, 116, 87, 115, 40, // setWs( - 119, 115, 41, 59, 10, 32, 32, 32, 32, 32, 32, 125, // ws);. } - 59, 10, 32, 32, 32, 32, 32, 32, 119, 115, 46, 111, // ;. ws.o - 110, 109, 101, 115, 115, 97, 103, 101, 32, 61, 32, 101, // nmessage = e - 118, 32, 61, 62, 32, 123, 10, 32, 32, 32, 32, 32, // v => {. - 32, 32, 32, 47, 47, 32, 99, 111, 110, 115, 111, 108, // // consol - 101, 46, 108, 111, 103, 40, 101, 118, 44, 32, 101, 118, // e.log(ev, ev - 46, 100, 97, 116, 97, 41, 59, 10, 32, 32, 32, 32, // .data);. - 32, 32, 32, 32, 115, 101, 116, 77, 101, 115, 115, 97, // setMessa - 103, 101, 115, 40, 120, 32, 61, 62, 32, 120, 46, 99, // ges(x => x.c - 111, 110, 99, 97, 116, 40, 91, 123, 100, 97, 116, 97, // oncat([{data - 58, 32, 101, 118, 46, 100, 97, 116, 97, 44, 32, 117, // : ev.data, u - 97, 114, 116, 58, 32, 116, 114, 117, 101, 125, 93, 41, // art: true}]) - 41, 59, 10, 32, 32, 32, 32, 32, 32, 125, 59, 10, // );. };. - 32, 32, 32, 32, 32, 32, 119, 115, 46, 111, 110, 99, // ws.onc - 108, 111, 115, 101, 32, 61, 32, 102, 117, 110, 99, 116, // lose = funct - 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, 32, 32, // ion() {. - 32, 32, 32, 32, 99, 108, 101, 97, 114, 84, 105, 109, // clearTim - 101, 111, 117, 116, 40, 116, 105, 100, 41, 59, 10, 32, // eout(tid);. - 32, 32, 32, 32, 32, 32, 32, 116, 105, 100, 32, 61, // tid = - 32, 115, 101, 116, 84, 105, 109, 101, 111, 117, 116, 40, // setTimeout( - 114, 101, 99, 111, 110, 110, 101, 99, 116, 44, 32, 49, // reconnect, 1 - 48, 48, 48, 41, 59, 10, 32, 32, 32, 32, 32, 32, // 000);. - 32, 32, 115, 101, 116, 67, 111, 110, 110, 101, 99, 116, // setConnect - 101, 100, 40, 102, 97, 108, 115, 101, 41, 59, 10, 32, // ed(false);. - 32, 32, 32, 32, 32, 32, 32, 115, 101, 116, 87, 115, // setWs - 40, 110, 117, 108, 108, 41, 59, 10, 32, 32, 32, 32, // (null);. - 32, 32, 125, 59, 10, 32, 32, 32, 32, 125, 59, 10, // };. };. - 32, 32, 32, 32, 114, 101, 99, 111, 110, 110, 101, 99, // reconnec - 116, 40, 41, 59, 10, 32, 32, 125, 59, 10, 10, 32, // t();. };.. - 32, 117, 115, 101, 69, 102, 102, 101, 99, 116, 40, 40, // useEffect(( - 41, 32, 61, 62, 32, 123, 10, 32, 32, 32, 32, 114, // ) => {. r - 101, 102, 114, 101, 115, 104, 40, 41, 59, 10, 32, 32, // efresh();. - 32, 32, 119, 97, 116, 99, 104, 87, 101, 98, 115, 111, // watchWebso - 99, 107, 101, 116, 40, 41, 59, 10, 32, 32, 125, 44, // cket();. }, - 32, 91, 93, 41, 59, 10, 10, 10, 32, 32, 99, 111, // []);... co - 110, 115, 116, 32, 115, 101, 110, 100, 109, 101, 115, 115, // nst sendmess - 97, 103, 101, 32, 61, 32, 101, 118, 32, 61, 62, 32, // age = ev => - 123, 10, 32, 32, 32, 32, 115, 101, 116, 77, 101, 115, // {. setMes - 115, 97, 103, 101, 115, 40, 120, 32, 61, 62, 32, 120, // sages(x => x - 46, 99, 111, 110, 99, 97, 116, 40, 91, 123, 100, 97, // .concat([{da - 116, 97, 58, 32, 116, 120, 116, 32, 43, 32, 39, 92, // ta: txt + '. - 110, 39, 44, 32, 117, 97, 114, 116, 58, 32, 102, 97, // n', uart: fa - 108, 115, 101, 125, 93, 41, 41, 59, 10, 32, 32, 32, // lse}]));. - 32, 105, 102, 32, 40, 119, 115, 41, 32, 119, 115, 46, // if (ws) ws. - 115, 101, 110, 100, 40, 116, 120, 116, 32, 43, 32, 39, // send(txt + ' - 92, 110, 39, 41, 59, 10, 32, 32, 32, 32, 115, 101, // .n');. se - 116, 84, 120, 116, 40, 39, 39, 41, 59, 10, 32, 32, // tTxt('');. - 125, 59, 10, 10, 32, 32, 99, 111, 110, 115, 116, 32, // };.. const - 111, 110, 99, 104, 97, 110, 103, 101, 32, 61, 32, 101, // onchange = e - 118, 32, 61, 62, 32, 102, 101, 116, 99, 104, 40, 39, // v => fetch(' - 47, 97, 112, 105, 47, 99, 111, 110, 102, 105, 103, 47, // /api/config/ - 115, 101, 116, 39, 44, 32, 123, 10, 32, 32, 32, 32, // set', {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 109, // m - 101, 116, 104, 111, 100, 58, 32, 39, 80, 79, 83, 84, // ethod: 'POST - 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ',. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 32, 104, 101, 97, 100, 101, 114, // header - 115, 58, 32, 123, 39, 67, 111, 110, 116, 101, 110, 116, // s: {'Content - 45, 84, 121, 112, 101, 39, 58, 32, 39, 97, 112, 112, // -Type': 'app - 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, // lication/jso - 110, 39, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, // n'},. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 32, 32, 32, 98, 111, 100, 121, // body - 58, 32, 74, 83, 79, 78, 46, 115, 116, 114, 105, 110, // : JSON.strin - 103, 105, 102, 121, 40, 99, 102, 103, 41, 44, 10, 32, // gify(cfg),. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 125, 41, 46, 116, 104, 101, 110, 40, 114, 32, 61, 62, // }).then(r => - 32, 119, 115, 32, 38, 38, 32, 119, 115, 46, 99, 108, // ws && ws.cl - 111, 115, 101, 40, 41, 41, 59, 10, 10, 32, 32, 99, // ose());.. c - 111, 110, 115, 116, 32, 115, 101, 116, 32, 61, 32, 111, // onst set = o - 98, 106, 32, 61, 62, 32, 115, 101, 116, 67, 102, 103, // bj => setCfg - 40, 120, 32, 61, 62, 32, 79, 98, 106, 101, 99, 116, // (x => Object - 46, 97, 115, 115, 105, 103, 110, 40, 120, 44, 32, 111, // .assign(x, o - 98, 106, 41, 41, 59, 10, 32, 32, 99, 111, 110, 115, // bj));. cons - 116, 32, 110, 115, 101, 116, 32, 61, 32, 40, 110, 44, // t nset = (n, - 111, 98, 106, 41, 32, 61, 62, 32, 115, 101, 116, 67, // obj) => setC - 102, 103, 40, 120, 32, 61, 62, 32, 79, 98, 106, 101, // fg(x => Obje - 99, 116, 46, 97, 115, 115, 105, 103, 110, 40, 120, 44, // ct.assign(x, - 32, 123, 91, 110, 93, 58, 32, 79, 98, 106, 101, 99, // {[n]: Objec - 116, 46, 97, 115, 115, 105, 103, 110, 40, 120, 91, 110, // t.assign(x[n - 93, 44, 111, 98, 106, 41, 125, 41, 41, 59, 10, 32, // ],obj)}));. - 32, 99, 111, 110, 115, 116, 32, 115, 101, 116, 84, 120, // const setTx - 32, 61, 32, 101, 118, 32, 61, 62, 32, 115, 101, 116, // = ev => set - 40, 123, 116, 120, 58, 32, 112, 97, 114, 115, 101, 73, // ({tx: parseI - 110, 116, 40, 101, 118, 46, 116, 97, 114, 103, 101, 116, // nt(ev.target - 46, 118, 97, 108, 117, 101, 41, 125, 41, 59, 10, 32, // .value)});. - 32, 99, 111, 110, 115, 116, 32, 115, 101, 116, 82, 120, // const setRx - 32, 61, 32, 101, 118, 32, 61, 62, 32, 115, 101, 116, // = ev => set - 40, 123, 114, 120, 58, 32, 112, 97, 114, 115, 101, 73, // ({rx: parseI - 110, 116, 40, 101, 118, 46, 116, 97, 114, 103, 101, 116, // nt(ev.target - 46, 118, 97, 108, 117, 101, 41, 125, 41, 59, 10, 32, // .value)});. - 32, 99, 111, 110, 115, 116, 32, 115, 101, 116, 66, 97, // const setBa - 117, 100, 32, 61, 32, 101, 118, 32, 61, 62, 32, 115, // ud = ev => s - 101, 116, 40, 123, 98, 97, 117, 100, 58, 32, 112, 97, // et({baud: pa - 114, 115, 101, 73, 110, 116, 40, 101, 118, 46, 116, 97, // rseInt(ev.ta - 114, 103, 101, 116, 46, 118, 97, 108, 117, 101, 41, 125, // rget.value)} - 41, 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, 115, // );. const s - 101, 116, 84, 99, 112, 85, 114, 108, 32, 61, 32, 101, // etTcpUrl = e - 118, 32, 61, 62, 32, 110, 115, 101, 116, 40, 39, 116, // v => nset('t - 99, 112, 39, 44, 32, 123, 117, 114, 108, 58, 32, 96, // cp', {url: ` - 116, 99, 112, 58, 47, 47, 48, 46, 48, 46, 48, 46, // tcp://0.0.0. - 48, 58, 36, 123, 101, 118, 46, 116, 97, 114, 103, 101, // 0:${ev.targe - 116, 46, 118, 97, 108, 117, 101, 125, 96, 125, 41, 59, // t.value}`}); - 10, 32, 32, 99, 111, 110, 115, 116, 32, 115, 101, 116, // . const set - 87, 115, 85, 114, 108, 32, 61, 32, 101, 118, 32, 61, // WsUrl = ev = - 62, 32, 110, 115, 101, 116, 40, 39, 119, 115, 39, 44, // > nset('ws', - 123, 117, 114, 108, 58, 32, 96, 119, 115, 58, 47, 47, // {url: `ws:// - 48, 46, 48, 46, 48, 46, 48, 58, 36, 123, 101, 118, // 0.0.0.0:${ev - 46, 116, 97, 114, 103, 101, 116, 46, 118, 97, 108, 117, // .target.valu - 101, 125, 96, 125, 41, 59, 10, 32, 32, 99, 111, 110, // e}`});. con - 115, 116, 32, 115, 101, 116, 77, 113, 116, 116, 85, 114, // st setMqttUr - 108, 32, 61, 32, 101, 118, 32, 61, 62, 32, 110, 115, // l = ev => ns - 101, 116, 40, 39, 109, 113, 116, 116, 39, 44, 123, 117, // et('mqtt',{u - 114, 108, 58, 32, 101, 118, 46, 116, 97, 114, 103, 101, // rl: ev.targe - 116, 46, 118, 97, 108, 117, 101, 125, 41, 59, 10, 32, // t.value});. - 32, 99, 111, 110, 115, 116, 32, 115, 101, 116, 84, 99, // const setTc - 112, 69, 110, 97, 32, 61, 32, 101, 118, 32, 61, 62, // pEna = ev => - 32, 40, 110, 115, 101, 116, 40, 39, 116, 99, 112, 39, // (nset('tcp' - 44, 123, 101, 110, 97, 98, 108, 101, 58, 32, 101, 118, // ,{enable: ev - 46, 116, 97, 114, 103, 101, 116, 46, 99, 104, 101, 99, // .target.chec - 107, 101, 100, 125, 41, 44, 32, 111, 110, 99, 104, 97, // ked}), oncha - 110, 103, 101, 40, 41, 41, 59, 10, 32, 32, 99, 111, // nge());. co - 110, 115, 116, 32, 115, 101, 116, 87, 115, 69, 110, 97, // nst setWsEna - 32, 61, 32, 101, 118, 32, 61, 62, 32, 40, 110, 115, // = ev => (ns - 101, 116, 40, 39, 119, 115, 39, 44, 123, 101, 110, 97, // et('ws',{ena - 98, 108, 101, 58, 32, 101, 118, 46, 116, 97, 114, 103, // ble: ev.targ - 101, 116, 46, 99, 104, 101, 99, 107, 101, 100, 125, 41, // et.checked}) - 44, 32, 111, 110, 99, 104, 97, 110, 103, 101, 40, 41, // , onchange() - 41, 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, 115, // );. const s - 101, 116, 77, 113, 116, 116, 69, 110, 97, 32, 61, 32, // etMqttEna = - 101, 118, 32, 61, 62, 40, 110, 115, 101, 116, 40, 39, // ev =>(nset(' - 109, 113, 116, 116, 39, 44, 32, 123, 101, 110, 97, 98, // mqtt', {enab - 108, 101, 58, 32, 101, 118, 46, 116, 97, 114, 103, 101, // le: ev.targe - 116, 46, 99, 104, 101, 99, 107, 101, 100, 125, 41, 44, // t.checked}), - 32, 111, 110, 99, 104, 97, 110, 103, 101, 40, 41, 41, // onchange()) - 59, 10, 10, 32, 32, 114, 101, 116, 117, 114, 110, 32, // ;.. return - 104, 116, 109, 108, 96, 10, 60, 100, 105, 118, 32, 99, // html`.
.

UART .u27F - 55, 32, 110, 101, 116, 119, 111, 114, 107, 32, 98, 114, // 7 network br - 105, 100, 103, 101, 32, 60, 47, 104, 49, 62, 10, 32, // idge

. - 32, 60, 112, 114, 101, 32, 99, 108, 97, 115, 115, 61, //
${J
-  83,  79,  78,  46, 115, 116, 114, 105, 110, 103, 105, 102, // SON.stringif
- 121,  40,  99, 102, 103,  44,  32, 110, 117, 108, 108,  44, // y(cfg, null,
-  32,  50,  41, 125,  60,  47, 112, 114, 101,  62,  10,  32, //  2)}
. - 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, //
. < - 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, 34, 99, // div class="c - 111, 108, 32, 99, 111, 108, 45, 52, 34, 62, 10, 32, // ol col-4">. - 32, 32, 32, 32, 32, 60, 104, 51, 62, 85, 65, 82, //

UAR - 84, 32, 99, 111, 110, 102, 105, 103, 117, 114, 97, 116, // T configurat - 105, 111, 110, 60, 47, 104, 51, 62, 10, 32, 32, 32, // ion

. - 32, 32, 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, //
. - 32, 32, 32, 32, 32, 32, 60, 108, 97, 98, 101, 108, // . - 32, 32, 32, 32, 32, 32, 32, 60, 105, 110, 112, 117, // . < - 47, 100, 105, 118, 62, 60, 100, 105, 118, 32, 99, 108, // /div>
. - 32, 32, 32, 32, 32, 32, 32, 32, 60, 108, 97, 98, // UART RX - 32, 112, 105, 110, 60, 47, 108, 97, 98, 101, 108, 62, // pin - 10, 32, 32, 32, 32, 32, 32, 32, 32, 60, 105, 110, // . . - 32, 60, 47, 100, 105, 118, 62, 60, 100, 105, 118, 32, //
. UART - 66, 97, 117, 100, 60, 47, 108, 97, 98, 101, 108, 62, // Baud - 10, 32, 32, 32, 32, 32, 32, 32, 32, 60, 105, 110, // . . - 32, 32, 32, 32, 32, 60, 47, 100, 105, 118, 62, 10, //
. - 32, 32, 32, 32, 60, 47, 100, 105, 118, 62, 10, 32, //
. - 32, 32, 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, //
.

Network con - 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 60, 47, // figuration. . - 32, 32, 32, 32, 32, 32, 32, 32, 60, 108, 97, 98, // Local T - 67, 80, 32, 112, 111, 114, 116, 60, 47, 108, 97, 98, // CP port. - 60, 105, 110, 112, 117, 116, 32, 115, 116, 121, 108, 101, // . enabl - 101, 60, 47, 108, 97, 98, 101, 108, 62, 10, 32, 32, // e. - 32, 32, 32, 32, 60, 47, 100, 105, 118, 62, 60, 100, //

. - 32, 32, 32, 32, 32, 32, 32, 32, 60, 108, 97, 98, // Local W - 83, 32, 112, 111, 114, 116, 60, 47, 108, 97, 98, 101, // S port. < - 105, 110, 112, 117, 116, 32, 115, 116, 121, 108, 101, 61, // input style= - 34, 102, 108, 101, 120, 58, 32, 49, 32, 49, 48, 48, // "flex: 1 100 - 37, 59, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, // %;". - 32, 32, 118, 97, 108, 117, 101, 61, 36, 123, 103, 101, // value=${ge - 116, 112, 111, 114, 116, 40, 99, 102, 103, 46, 119, 115, // tport(cfg.ws - 46, 117, 114, 108, 44, 32, 52, 48, 48, 50, 41, 125, // .url, 4002)} - 32, 111, 110, 99, 104, 97, 110, 103, 101, 61, 36, 123, // onchange=${ - 111, 110, 99, 104, 97, 110, 103, 101, 125, 10, 32, 32, // onchange}. - 32, 32, 32, 32, 32, 32, 32, 32, 111, 110, 105, 110, // onin - 112, 117, 116, 61, 36, 123, 115, 101, 116, 87, 115, 85, // put=${setWsU - 114, 108, 125, 32, 47, 62, 10, 32, 32, 32, 32, 32, // rl} />. - 32, 32, 32, 60, 108, 97, 98, 101, 108, 32, 99, 108, // - 10, 32, 32, 32, 32, 32, 32, 60, 47, 100, 105, 118, // .
. < - 108, 97, 98, 101, 108, 32, 99, 108, 97, 115, 115, 61, // label class= - 34, 97, 100, 100, 111, 110, 34, 62, 82, 101, 109, 111, // "addon">Remo - 116, 101, 32, 77, 81, 84, 84, 60, 47, 108, 97, 98, // te MQTT. - 60, 105, 110, 112, 117, 116, 32, 115, 116, 121, 108, 101, // . - 32, 32, 32, 32, 32, 60, 108, 97, 98, 101, 108, 32, //
. - 60, 47, 100, 105, 118, 62, 10, 32, 32, 60, 47, 100, //
. ..
- 10, 32, 32, 32, 32, 78, 111, 116, 101, 58, 32, 116, // . Note: t - 111, 32, 99, 111, 110, 110, 101, 99, 116, 32, 111, 118, // o connect ov - 101, 114, 32, 77, 81, 84, 84, 44, 32, 10, 32, 32, // er MQTT, . - 32, 32, 32, 32, 111, 112, 101, 110, 32, 60, 97, 32, // open . - 32, 32, 99, 111, 110, 115, 111, 108, 101, 60, 47, 97, // console, subscribe - 32, 116, 111, 32, 98, 47, 116, 120, 32, 97, 110, 100, // to b/tx and - 32, 112, 117, 98, 108, 105, 115, 104, 32, 116, 111, 32, // publish to - 98, 47, 114, 120, 60, 98, 114, 47, 62, 10, 32, 32, // b/rx
. - 32, 32, 78, 111, 116, 101, 58, 32, 116, 111, 32, 99, // Note: to c - 111, 110, 110, 101, 99, 116, 32, 111, 118, 101, 114, 32, // onnect over - 84, 67, 80, 44, 32, 117, 115, 101, 32, 110, 101, 116, // TCP, use net - 99, 97, 116, 32, 117, 116, 105, 108, 105, 116, 121, 58, // cat utility: - 60, 98, 114, 47, 62, 10, 32, 32, 32, 32, 36, 32, //
. $ - 110, 99, 32, 36, 123, 108, 111, 99, 97, 116, 105, 111, // nc ${locatio - 110, 46, 104, 111, 115, 116, 110, 97, 109, 101, 125, 32, // n.hostname} - 36, 123, 103, 101, 116, 112, 111, 114, 116, 40, 99, 102, // ${getport(cf - 103, 46, 116, 99, 112, 46, 117, 114, 108, 44, 32, 52, // g.tcp.url, 4 - 48, 48, 49, 41, 125, 10, 32, 32, 60, 47, 100, 105, // 001)}. ..
- 10, 32, 32, 32, 32, 60, 98, 62, 85, 65, 82, 84, // . UART - 32, 99, 111, 110, 115, 111, 108, 101, 60, 47, 98, 62, // console - 60, 115, 112, 97, 110, 32, 115, 116, 121, 108, 101, 61, // wor - 107, 115, 32, 10, 32, 32, 32, 32, 111, 118, 101, 114, // ks . over - 32, 116, 104, 101, 32, 108, 111, 99, 97, 108, 32, 87, // the local W - 83, 32, 112, 111, 114, 116, 46, 32, 87, 101, 98, 83, // S port. WebS - 111, 99, 107, 101, 116, 32, 115, 116, 97, 116, 117, 115, // ocket status - 58, 32, 60, 47, 115, 112, 97, 110, 62, 60, 115, 112, // : . - 32, 32, 92, 117, 50, 53, 99, 102, 32, 36, 123, 99, // .u25cf ${c - 111, 110, 110, 101, 99, 116, 101, 100, 32, 63, 32, 39, // onnected ? ' - 99, 111, 110, 110, 101, 99, 116, 101, 100, 39, 32, 58, // connected' : - 32, 39, 100, 105, 115, 99, 111, 110, 110, 101, 99, 116, // 'disconnect - 101, 100, 39, 125, 32, 60, 47, 115, 112, 97, 110, 62, // ed'} - 10, 32, 32, 60, 47, 100, 105, 118, 62, 10, 32, 32, // .
. - 60, 100, 105, 118, 32, 115, 116, 121, 108, 101, 61, 34, //
. - 32, 60, 105, 110, 112, 117, 116, 32, 112, 108, 97, 99, // setTxt(ev - 46, 116, 97, 114, 103, 101, 116, 46, 118, 97, 108, 117, // .target.valu - 101, 41, 125, 32, 47, 62, 10, 32, 32, 32, 32, 60, // e)} />. < - 98, 117, 116, 116, 111, 110, 32, 115, 116, 121, 108, 101, // button style - 61, 34, 109, 97, 114, 103, 105, 110, 45, 108, 101, 102, // ="margin-lef - 116, 58, 32, 49, 101, 109, 59, 34, 10, 32, 32, 32, // t: 1em;". - 32, 32, 32, 111, 110, 99, 108, 105, 99, 107, 61, 36, // onclick=$ - 123, 101, 118, 32, 61, 62, 32, 115, 101, 116, 77, 101, // {ev => setMe - 115, 115, 97, 103, 101, 115, 40, 91, 93, 41, 125, 62, // ssages([])}> - 99, 108, 101, 97, 114, 60, 47, 98, 117, 116, 116, 111, // clear.
. - 32, 32, 60, 112, 114, 101, 32, 115, 116, 121, 108, 101, //
.  
-  32,  32,  36, 123, 109, 101, 115, 115,  97, 103, 101, 115, //   ${messages
-  46, 109,  97, 112,  40, 109, 101, 115, 115,  97, 103, 101, // .map(message
-  32,  61,  62,  32, 104,  40,  77, 101, 115, 115,  97, 103, //  => h(Messag
- 101,  44,  32, 123, 109, 101, 115, 115,  97, 103, 101, 125, // e, {message}
-  41,  41, 125,  10,  32,  32,  60,  47, 112, 114, 101,  62, // ))}.  
- 10, 10, 60, 47, 100, 105, 118, 62, 96, 59, 10, 125, // ..
`;.} - 59, 10, 10, 119, 105, 110, 100, 111, 119, 46, 111, 110, // ;..window.on - 108, 111, 97, 100, 32, 61, 32, 40, 41, 32, 61, 62, // load = () => - 32, 114, 101, 110, 100, 101, 114, 40, 104, 40, 65, 112, // render(h(Ap - 112, 41, 44, 32, 100, 111, 99, 117, 109, 101, 110, 116, // p), document - 46, 98, 111, 100, 121, 41, 59, 10, 0 // .body);. + 31, 139, 8, 8, 29, 105, 247, 99, 0, 3, 109, 97, // .....i.c..ma + 105, 110, 46, 106, 115, 0, 181, 88, 109, 111, 219, 70, // in.js..Xmo.F + 18, 254, 174, 95, 49, 80, 125, 37, 121, 165, 72, 43, // ..._1P}%y.H+ + 113, 225, 131, 44, 235, 144, 6, 45, 112, 135, 38, 233, // q..,...-p.&. + 217, 42, 114, 128, 99, 192, 75, 114, 37, 50, 33, 119, // .*r.c.Kr%2!w + 89, 238, 210, 148, 161, 242, 191, 119, 118, 185, 164, 72, // Y......wv..H + 89, 113, 172, 6, 81, 2, 152, 162, 102, 102, 103, 158, // Yq..Q...ffg. + 121, 217, 153, 177, 74, 65, 65, 200, 34, 9, 165, 117, // y...JAA."..u + 49, 74, 178, 156, 23, 18, 182, 175, 57, 62, 48, 202, // 1J......9>0. + 164, 11, 49, 254, 151, 89, 234, 66, 65, 89, 68, 11, // ..1..Y.BAYD. + 23, 144, 225, 231, 213, 138, 134, 82, 63, 94, 75, 34, // .......R?^K" + 169, 126, 186, 162, 171, 26, 86, 5, 207, 192, 242, 252, // .~....V..... + 188, 160, 36, 148, 94, 150, 48, 239, 163, 64, 193, 163, // ..$.^.0..@.. + 144, 51, 33, 225, 13, 21, 130, 172, 41, 92, 66, 6, // .3!.....).B. + 151, 11, 45, 248, 110, 46, 114, 194, 70, 128, 74, 60, // ..-.n.r.F.J< + 164, 244, 114, 28, 242, 148, 23, 51, 56, 217, 102, 94, // ..r....38.f^ + 214, 80, 123, 37, 65, 157, 254, 13, 214, 119, 103, 103, // .P{%A....wgg + 103, 22, 204, 240, 225, 229, 249, 75, 171, 190, 24, 47, // g......K.../ + 144, 173, 79, 24, 17, 73, 234, 209, 220, 87, 18, 23, // ..O..I...W.. + 119, 221, 169, 175, 242, 28, 79, 92, 149, 44, 148, 9, // w.....O..,.. + 103, 118, 94, 240, 92, 56, 176, 69, 230, 230, 247, 155, // gv^..8.E.... + 112, 181, 118, 65, 80, 249, 122, 181, 190, 69, 202, 214, // p.vAP.z..E.. + 44, 123, 43, 195, 124, 6, 219, 218, 133, 74, 52, 127, // ,{+.|....J4. + 179, 63, 164, 84, 79, 181, 115, 177, 99, 55, 199, 11, // .?.TO.s.c7.. + 45, 195, 152, 40, 6, 130, 110, 110, 251, 244, 248, 135, // -..(..nn.... + 33, 126, 52, 106, 14, 109, 191, 13, 56, 86, 36, 21, // !~4j.m..8V$. + 180, 207, 36, 55, 82, 147, 47, 55, 114, 64, 104, 89, // ..$7R./7r@hY + 125, 170, 170, 81, 226, 253, 240, 120, 86, 166, 41, 82, // }..Q...xV.)R + 117, 100, 5, 93, 21, 84, 196, 72, 98, 59, 232, 7, // ud.].T.Hb;.. + 124, 175, 62, 43, 42, 195, 216, 182, 124, 146, 39, 62, // |.>+*...|.'> + 210, 173, 146, 181, 191, 166, 210, 114, 60, 25, 83, 102, // .......r<.Sf + 23, 202, 97, 5, 122, 19, 17, 116, 250, 239, 26, 220, // ..a.z..t.... + 236, 194, 233, 159, 128, 140, 58, 146, 240, 132, 178, 192, // ......:..... + 224, 185, 87, 231, 128, 173, 190, 192, 159, 127, 2, 42, // ..W........* + 237, 101, 68, 29, 231, 123, 255, 156, 217, 31, 162, 31, // .eD..{...... + 28, 223, 81, 63, 220, 88, 22, 18, 223, 58, 55, 211, // ..Q?.X...:7. + 219, 158, 180, 74, 145, 190, 167, 129, 224, 225, 39, 42, // ...J......'* + 251, 190, 108, 220, 8, 224, 251, 96, 112, 4, 201, 161, // ..l....`p... + 50, 164, 5, 40, 37, 92, 245, 10, 35, 59, 165, 25, // 2..(%...#;.. + 70, 52, 188, 191, 214, 82, 121, 74, 53, 231, 61, 41, // F4...RyJ5.=) + 16, 15, 227, 146, 67, 162, 27, 18, 99, 141, 177, 203, // ....C...c... + 198, 136, 241, 42, 225, 105, 219, 206, 78, 79, 95, 104, // ...*.i..NO_h + 31, 180, 180, 41, 18, 86, 9, 139, 120, 229, 165, 60, // ...).V..x..< + 36, 74, 154, 11, 24, 117, 168, 198, 37, 164, 158, 126, // $J...u..%..~ + 194, 48, 247, 10, 154, 167, 36, 68, 23, 198, 82, 230, // .0....$D..R. + 104, 183, 85, 9, 107, 32, 72, 38, 24, 34, 10, 178, // h.U.k H&.".. + 75, 184, 59, 217, 106, 190, 218, 247, 79, 182, 169, 23, // K.;.j...O... + 115, 33, 25, 201, 104, 61, 195, 247, 168, 80, 237, 87, // s!..h=...P.W + 226, 174, 101, 69, 48, 140, 133, 120, 254, 90, 97, 62, // ..eE0..x.Za> + 144, 90, 9, 148, 199, 104, 5, 136, 232, 181, 70, 116, // .Z...h....Ft + 64, 130, 102, 113, 198, 115, 202, 218, 240, 232, 112, 128, // @.fq.s....p. + 65, 184, 218, 178, 40, 105, 199, 5, 77, 216, 217, 149, // A...(i..M... + 232, 94, 213, 3, 137, 89, 151, 250, 244, 126, 40, 116, // .^...Y...~(t + 79, 93, 122, 239, 34, 137, 206, 229, 161, 244, 54, 179, // O]z.".....6. + 236, 141, 226, 223, 120, 200, 132, 224, 218, 55, 91, 69, // ....x....7[E + 58, 107, 121, 16, 48, 44, 23, 51, 80, 218, 213, 183, // :ky.0,.3P... + 206, 103, 180, 9, 83, 46, 232, 97, 111, 99, 208, 165, // .g..S..aoc.. + 148, 20, 203, 36, 163, 188, 148, 54, 250, 160, 167, 6, // ...$...6.... + 126, 67, 46, 149, 134, 230, 231, 46, 116, 92, 152, 158, // ~C......t... + 158, 158, 14, 53, 222, 97, 181, 75, 231, 62, 88, 38, // ...5.a.K.>X& + 47, 7, 10, 154, 63, 157, 92, 91, 19, 212, 58, 27, // /...?..[..:. + 186, 210, 107, 247, 29, 99, 178, 217, 54, 146, 134, 201, // ..k..c..6... + 98, 216, 93, 208, 37, 104, 151, 82, 2, 171, 249, 97, // b.].%h.R...a + 151, 124, 25, 105, 44, 69, 240, 3, 88, 31, 152, 213, // .|.i,E..X... + 130, 173, 205, 219, 161, 157, 172, 64, 5, 130, 130, 90, // .......@...Z + 157, 99, 239, 24, 12, 65, 83, 199, 218, 218, 85, 247, // .c...AS...U. + 82, 29, 79, 138, 9, 235, 41, 117, 160, 42, 33, 55, // R.O...)u.*!7 + 158, 188, 243, 215, 129, 79, 70, 101, 204, 35, 188, 42, // .....OFe.#.* + 126, 123, 119, 189, 180, 220, 167, 72, 99, 74, 240, 94, // ~{w....HcJ.^ + 83, 245, 221, 66, 127, 73, 44, 17, 147, 229, 67, 78, // S..B.I,...CN + 45, 100, 38, 121, 158, 38, 77, 2, 251, 170, 240, 89, // -d&y.&M....Y + 245, 147, 146, 2, 30, 61, 204, 224, 191, 215, 239, 222, // .....=...... + 122, 234, 70, 101, 235, 100, 245, 160, 42, 133, 243, 4, // z.Fe.d..*... + 87, 221, 47, 165, 152, 153, 223, 127, 175, 80, 211, 225, // W./......P.. + 105, 15, 42, 170, 208, 133, 143, 7, 31, 123, 53, 87, // i.*......{5W + 187, 231, 93, 240, 17, 35, 194, 35, 66, 36, 107, 102, // ..]..#.#B$kf + 111, 92, 69, 227, 244, 238, 4, 214, 112, 218, 204, 85, // o.E.....p..U + 63, 124, 145, 123, 123, 195, 110, 103, 251, 175, 241, 157, // ?|.{{.ng.... + 230, 174, 251, 130, 181, 19, 59, 63, 225, 55, 188, 47, // ......;?.7./ + 55, 51, 200, 73, 33, 232, 127, 152, 196, 68, 246, 36, // 73.I!....D.$ + 41, 176, 98, 122, 247, 36, 197, 82, 81, 15, 121, 175, // ).bz.$.RQ.y. + 246, 120, 139, 35, 120, 127, 34, 101, 52, 228, 14, 240, // .x.#x."e4... + 205, 243, 249, 151, 97, 254, 187, 46, 171, 141, 4, 5, // ....a....... + 145, 109, 225, 101, 175, 194, 10, 107, 225, 12, 238, 212, // .m.e...k.... + 205, 239, 251, 167, 158, 254, 135, 69, 118, 79, 96, 125, // .......EvO`} + 183, 39, 241, 189, 120, 44, 16, 203, 185, 107, 196, 97, // .'..x,...k.a + 255, 112, 140, 180, 55, 216, 102, 60, 150, 167, 154, 143, // .p..7.f<.... + 86, 226, 190, 132, 71, 246, 253, 204, 72, 199, 110, 247, // V...G...H.n. + 12, 220, 82, 70, 130, 148, 246, 37, 132, 49, 197, 82, // ..RF...%.1.R + 17, 213, 142, 219, 165, 159, 237, 236, 155, 119, 64, 158, // .........w@. + 182, 239, 111, 137, 83, 246, 245, 4, 218, 125, 251, 224, // ..o.S....}.. + 8, 145, 35, 85, 253, 100, 89, 176, 166, 149, 28, 205, // ..#U.dY..... + 163, 228, 30, 203, 55, 134, 173, 106, 36, 153, 36, 9, // ....7..j$.$. + 163, 133, 110, 19, 231, 241, 180, 237, 48, 51, 148, 153, // ..n.....03.. + 176, 73, 192, 165, 228, 217, 12, 78, 177, 143, 252, 253, // .I.....N.... + 213, 213, 18, 62, 148, 47, 206, 127, 57, 199, 155, 81, // ...>./..9..Q + 86, 188, 248, 4, 65, 145, 68, 88, 135, 230, 126, 60, // V...A.DX..~< + 213, 2, 176, 165, 109, 69, 71, 19, 134, 221, 241, 120, // ....mEG....x + 113, 178, 125, 156, 236, 46, 168, 170, 238, 194, 11, 167, // q.}......... + 158, 171, 54, 88, 243, 246, 212, 42, 120, 53, 110, 58, // ..6X...*x5n: + 174, 161, 178, 41, 162, 147, 78, 206, 198, 109, 55, 54, // ...)..N..m76 + 143, 95, 54, 106, 53, 69, 175, 44, 116, 25, 66, 109, // ._6j5E.,t.Bm + 94, 118, 20, 61, 254, 104, 178, 74, 233, 6, 155, 140, // ^v.=.h.J.... + 201, 20, 178, 135, 201, 180, 19, 131, 100, 41, 9, 104, // ........d).h + 218, 18, 146, 40, 226, 204, 24, 188, 252, 63, 228, 9, // ...(.....?.. + 138, 212, 4, 61, 134, 132, 229, 165, 108, 209, 170, 146, // ...=....l... + 72, 198, 51, 248, 145, 102, 23, 99, 208, 177, 118, 121, // H.3..f.c..vy + 178, 85, 237, 143, 220, 212, 157, 51, 240, 85, 251, 88, // .U.....3.U.X + 247, 106, 29, 103, 90, 20, 254, 170, 107, 69, 13, 126, // .j.gZ...kE.~ + 167, 187, 143, 202, 47, 190, 218, 130, 171, 175, 178, 160, // ..../....... + 56, 210, 130, 171, 163, 44, 120, 120, 150, 5, 170, 146, // 8....,xx.... + 253, 93, 253, 85, 205, 59, 206, 130, 159, 52, 199, 158, // .].U.;...4.. + 13, 163, 253, 199, 3, 113, 249, 175, 65, 92, 190, 53, // .....q..A..5 + 41, 114, 76, 104, 62, 199, 167, 191, 98, 183, 156, 194, // )rLh>...b... + 242, 245, 111, 186, 221, 254, 2, 44, 56, 91, 78, 12, // ..o....,8[N. + 52, 103, 8, 13, 168, 83, 102, 48, 85, 109, 216, 63, // 4g...Sf0Um.? + 46, 198, 61, 4, 90, 200, 250, 189, 59, 150, 194, 174, // ..=.Z...;... + 121, 159, 58, 71, 6, 178, 190, 60, 122, 48, 238, 91, // y.:G........ + 7, 164, 103, 192, 127, 20, 220, 131, 81, 233, 56, 180, // ..g.....Q.8. + 245, 197, 250, 77, 193, 70, 229, 14, 99, 173, 47, 189, // ...M.F..c./. + 111, 4, 245, 21, 205, 184, 164, 240, 230, 127, 203, 229, // o........... + 215, 2, 173, 108, 80, 87, 167, 130, 248, 56, 108, 77, // ...lPW...8lM + 155, 241, 77, 209, 213, 154, 29, 198, 215, 116, 1, 95, // ..M......t._ + 66, 120, 88, 159, 204, 195, 222, 173, 154, 137, 181, 65, // BxX........A + 252, 45, 194, 58, 83, 19, 127, 59, 210, 243, 123, 90, // .-.:S..;..{Z + 104, 156, 93, 48, 98, 245, 112, 59, 39, 16, 227, 228, // h.]0b.p;'... + 116, 57, 86, 195, 55, 54, 103, 85, 85, 121, 113, 114, // t9V.76gUUyqr + 79, 179, 63, 112, 220, 201, 252, 8, 253, 35, 252, 118, // O.?p.....#.v + 145, 32, 39, 97, 154, 224, 100, 224, 247, 220, 106, 102, // . 'a..d...jf + 214, 185, 79, 22, 46, 136, 50, 16, 97, 145, 4, 84, // ..O...2.a..T + 157, 28, 248, 114, 3, 132, 69, 144, 151, 65, 154, 136, // ...r..E..A.. + 184, 121, 87, 108, 230, 65, 225, 63, 165, 36, 22, 62, // .yWl.A.?.$.> + 189, 73, 83, 45, 8, 78, 29, 80, 202, 36, 77, 228, // .IS-.N.P.$M. + 195, 108, 199, 119, 2, 44, 4, 156, 255, 205, 86, 97, // .l.w.,....Va + 183, 6, 128, 39, 203, 219, 99, 216, 134, 173, 144, 228, // ...'..c..... + 249, 12, 94, 168, 251, 197, 128, 29, 116, 173, 71, 99, // ..^.....t.Gc + 98, 176, 208, 91, 186, 61, 182, 148, 174, 112, 246, 155, // b..[.=...p.. + 170, 226, 107, 182, 118, 223, 157, 159, 159, 163, 16, 117, // ..k.v......u + 57, 136, 6, 109, 109, 24, 78, 56, 144, 246, 107, 139, // 9..mm.N8..k. + 183, 219, 61, 160, 76, 34, 75, 28, 191, 204, 218, 174, // ..=.L"K..... + 93, 7, 170, 207, 254, 74, 176, 91, 156, 169, 109, 160, // ]....J.[..m. + 164, 36, 213, 219, 192, 130, 70, 237, 50, 80, 125, 176, // .$....F.2P}. + 141, 251, 49, 92, 237, 83, 119, 95, 52, 75, 148, 136, // ..1..Sw_4K.. + 221, 139, 186, 61, 122, 212, 15, 179, 71, 40, 97, 167, // ...=z...G(a. + 232, 225, 29, 140, 253, 34, 32, 123, 158, 18, 156, 245, // ....." {.... + 84, 94, 180, 152, 53, 105, 161, 55, 58, 49, 79, 113, // T^..5i.7:1Oq + 164, 188, 28, 163, 131, 213, 252, 11, 205, 94, 66, 101, // .........^Be + 76, 19, 22, 56, 174, 11, 140, 120, 73, 11, 207, 243, // L..8...xI... + 198, 79, 38, 122, 155, 228, 56, 66, 239, 165, 79, 55, // .O&z..8B..O7 + 191, 183, 233, 189, 75, 237, 110, 46, 82, 67, 246, 163, // ....K.n.RC.. + 81, 168, 205, 246, 121, 80, 98, 7, 252, 121, 167, 142, // Q...yPb..y.. + 59, 185, 24, 252, 225, 167, 190, 220, 110, 65, 112, 115, // ;.......nAps + 235, 212, 11, 189, 47, 193, 32, 209, 226, 134, 40, 170, // ..../. ...(. + 166, 217, 200, 143, 105, 178, 142, 149, 104, 213, 200, 232, // ....i...h... + 184, 88, 165, 188, 154, 1, 41, 37, 111, 189, 119, 178, // .X....)%o.w. + 109, 119, 169, 94, 70, 114, 187, 91, 80, 44, 32, 182, // mw.^Fr.[P, . + 205, 153, 56, 31, 180, 118, 59, 38, 178, 117, 151, 61, // ..8..v;&.u.= + 106, 14, 189, 187, 24, 169, 117, 130, 89, 191, 113, 150, // j.....u.Y.q. + 114, 18, 117, 139, 172, 102, 133, 109, 199, 246, 171, 60, // r.u..f.m...< + 199, 81, 34, 226, 97, 169, 86, 130, 158, 26, 220, 113, // .Q".a.V....q + 154, 248, 11, 218, 252, 214, 171, 12, 23, 0, 0, 0 // ........... }; static const unsigned char v3[] = { - 118, 97, 114, 32, 101, 44, 110, 44, 95, 44, 116, 44, // var e,n,_,t, - 111, 44, 114, 44, 117, 44, 108, 61, 123, 125, 44, 105, // o,r,u,l={},i - 61, 91, 93, 44, 99, 61, 47, 97, 99, 105, 116, 124, // =[],c=/acit| - 101, 120, 40, 63, 58, 115, 124, 103, 124, 110, 124, 112, // ex(?:s|g|n|p - 124, 36, 41, 124, 114, 112, 104, 124, 103, 114, 105, 100, // |$)|rph|grid - 124, 111, 119, 115, 124, 109, 110, 99, 124, 110, 116, 119, // |ows|mnc|ntw - 124, 105, 110, 101, 91, 99, 104, 93, 124, 122, 111, 111, // |ine[ch]|zoo - 124, 94, 111, 114, 100, 124, 105, 116, 101, 114, 97, 47, // |^ord|itera/ - 105, 59, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, // i;function s - 40, 101, 44, 110, 41, 123, 102, 111, 114, 40, 118, 97, // (e,n){for(va - 114, 32, 95, 32, 105, 110, 32, 110, 41, 101, 91, 95, // r _ in n)e[_ - 93, 61, 110, 91, 95, 93, 59, 114, 101, 116, 117, 114, // ]=n[_];retur - 110, 32, 101, 125, 102, 117, 110, 99, 116, 105, 111, 110, // n e}function - 32, 102, 40, 101, 41, 123, 118, 97, 114, 32, 110, 61, // f(e){var n= - 101, 46, 112, 97, 114, 101, 110, 116, 78, 111, 100, 101, // e.parentNode - 59, 110, 38, 38, 110, 46, 114, 101, 109, 111, 118, 101, // ;n&&n.remove - 67, 104, 105, 108, 100, 40, 101, 41, 125, 102, 117, 110, // Child(e)}fun - 99, 116, 105, 111, 110, 32, 97, 40, 110, 44, 95, 44, // ction a(n,_, - 116, 41, 123, 118, 97, 114, 32, 111, 44, 114, 44, 117, // t){var o,r,u - 44, 108, 61, 123, 125, 59, 102, 111, 114, 40, 117, 32, // ,l={};for(u - 105, 110, 32, 95, 41, 34, 107, 101, 121, 34, 61, 61, // in _)"key"== - 117, 63, 111, 61, 95, 91, 117, 93, 58, 34, 114, 101, // u?o=_[u]:"re - 102, 34, 61, 61, 117, 63, 114, 61, 95, 91, 117, 93, // f"==u?r=_[u] - 58, 108, 91, 117, 93, 61, 95, 91, 117, 93, 59, 105, // :l[u]=_[u];i - 102, 40, 97, 114, 103, 117, 109, 101, 110, 116, 115, 46, // f(arguments. - 108, 101, 110, 103, 116, 104, 62, 50, 38, 38, 40, 108, // length>2&&(l - 46, 99, 104, 105, 108, 100, 114, 101, 110, 61, 97, 114, // .children=ar - 103, 117, 109, 101, 110, 116, 115, 46, 108, 101, 110, 103, // guments.leng - 116, 104, 62, 51, 63, 101, 46, 99, 97, 108, 108, 40, // th>3?e.call( - 97, 114, 103, 117, 109, 101, 110, 116, 115, 44, 50, 41, // arguments,2) - 58, 116, 41, 44, 34, 102, 117, 110, 99, 116, 105, 111, // :t),"functio - 110, 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 110, // n"==typeof n - 38, 38, 110, 117, 108, 108, 33, 61, 110, 46, 100, 101, // &&null!=n.de - 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 41, 102, // faultProps)f - 111, 114, 40, 117, 32, 105, 110, 32, 110, 46, 100, 101, // or(u in n.de - 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 41, 118, // faultProps)v - 111, 105, 100, 32, 48, 61, 61, 61, 108, 91, 117, 93, // oid 0===l[u] - 38, 38, 40, 108, 91, 117, 93, 61, 110, 46, 100, 101, // &&(l[u]=n.de - 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 91, 117, // faultProps[u - 93, 41, 59, 114, 101, 116, 117, 114, 110, 32, 112, 40, // ]);return p( - 110, 44, 108, 44, 111, 44, 114, 44, 110, 117, 108, 108, // n,l,o,r,null - 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, // )}function p - 40, 101, 44, 116, 44, 111, 44, 114, 44, 117, 41, 123, // (e,t,o,r,u){ - 118, 97, 114, 32, 108, 61, 123, 116, 121, 112, 101, 58, // var l={type: - 101, 44, 112, 114, 111, 112, 115, 58, 116, 44, 107, 101, // e,props:t,ke - 121, 58, 111, 44, 114, 101, 102, 58, 114, 44, 95, 95, // y:o,ref:r,__ - 107, 58, 110, 117, 108, 108, 44, 95, 95, 58, 110, 117, // k:null,__:nu - 108, 108, 44, 95, 95, 98, 58, 48, 44, 95, 95, 101, // ll,__b:0,__e - 58, 110, 117, 108, 108, 44, 95, 95, 100, 58, 118, 111, // :null,__d:vo - 105, 100, 32, 48, 44, 95, 95, 99, 58, 110, 117, 108, // id 0,__c:nul - 108, 44, 95, 95, 104, 58, 110, 117, 108, 108, 44, 99, // l,__h:null,c - 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 58, 118, // onstructor:v - 111, 105, 100, 32, 48, 44, 95, 95, 118, 58, 110, 117, // oid 0,__v:nu - 108, 108, 61, 61, 117, 63, 43, 43, 95, 58, 117, 125, // ll==u?++_:u} - 59, 114, 101, 116, 117, 114, 110, 32, 110, 117, 108, 108, // ;return null - 33, 61, 110, 46, 118, 110, 111, 100, 101, 38, 38, 110, // !=n.vnode&&n - 46, 118, 110, 111, 100, 101, 40, 108, 41, 44, 108, 125, // .vnode(l),l} - 102, 117, 110, 99, 116, 105, 111, 110, 32, 104, 40, 101, // function h(e - 41, 123, 114, 101, 116, 117, 114, 110, 32, 101, 46, 99, // ){return e.c - 104, 105, 108, 100, 114, 101, 110, 125, 102, 117, 110, 99, // hildren}func - 116, 105, 111, 110, 32, 100, 40, 101, 44, 110, 41, 123, // tion d(e,n){ - 116, 104, 105, 115, 46, 112, 114, 111, 112, 115, 61, 101, // this.props=e - 44, 116, 104, 105, 115, 46, 99, 111, 110, 116, 101, 120, // ,this.contex - 116, 61, 110, 125, 102, 117, 110, 99, 116, 105, 111, 110, // t=n}function - 32, 118, 40, 101, 44, 110, 41, 123, 105, 102, 40, 110, // v(e,n){if(n - 117, 108, 108, 61, 61, 110, 41, 114, 101, 116, 117, 114, // ull==n)retur - 110, 32, 101, 46, 95, 95, 63, 118, 40, 101, 46, 95, // n e.__?v(e._ - 95, 44, 101, 46, 95, 95, 46, 95, 95, 107, 46, 105, // _,e.__.__k.i - 110, 100, 101, 120, 79, 102, 40, 101, 41, 43, 49, 41, // ndexOf(e)+1) - 58, 110, 117, 108, 108, 59, 102, 111, 114, 40, 118, 97, // :null;for(va - 114, 32, 95, 59, 110, 60, 101, 46, 95, 95, 107, 46, // r _;n0?p(m. - 116, 121, 112, 101, 44, 109, 46, 112, 114, 111, 112, 115, // type,m.props - 44, 109, 46, 107, 101, 121, 44, 110, 117, 108, 108, 44, // ,m.key,null, - 109, 46, 95, 95, 118, 41, 58, 109, 41, 41, 123, 105, // m.__v):m)){i - 102, 40, 109, 46, 95, 95, 61, 95, 44, 109, 46, 95, // f(m.__=_,m._ - 95, 98, 61, 95, 46, 95, 95, 98, 43, 49, 44, 110, // _b=_.__b+1,n - 117, 108, 108, 61, 61, 61, 40, 121, 61, 72, 91, 97, // ull===(y=H[a - 93, 41, 124, 124, 121, 38, 38, 109, 46, 107, 101, 121, // ])||y&&m.key - 61, 61, 121, 46, 107, 101, 121, 38, 38, 109, 46, 116, // ==y.key&&m.t - 121, 112, 101, 61, 61, 61, 121, 46, 116, 121, 112, 101, // ype===y.type - 41, 72, 91, 97, 93, 61, 118, 111, 105, 100, 32, 48, // )H[a]=void 0 - 59, 101, 108, 115, 101, 32, 102, 111, 114, 40, 100, 61, // ;else for(d= - 48, 59, 100, 60, 69, 59, 100, 43, 43, 41, 123, 105, // 0;d=t.__.len - 103, 116, 104, 38, 38, 116, 46, 95, 95, 46, 112, 117, // gth&&t.__.pu - 115, 104, 40, 123, 125, 41, 44, 116, 46, 95, 95, 91, // sh({}),t.__[ - 101, 93, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // e]}function - 71, 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 32, // G(e){return - 82, 61, 49, 44, 122, 40, 105, 101, 44, 101, 41, 125, // R=1,z(ie,e)} - 102, 117, 110, 99, 116, 105, 111, 110, 32, 122, 40, 101, // function z(e - 44, 110, 44, 95, 41, 123, 118, 97, 114, 32, 116, 61, // ,n,_){var t= - 106, 40, 76, 43, 43, 44, 50, 41, 59, 114, 101, 116, // j(L++,2);ret - 117, 114, 110, 32, 116, 46, 116, 61, 101, 44, 116, 46, // urn t.t=e,t. - 95, 95, 99, 124, 124, 40, 116, 46, 95, 95, 61, 91, // __c||(t.__=[ - 95, 63, 95, 40, 110, 41, 58, 105, 101, 40, 118, 111, // _?_(n):ie(vo - 105, 100, 32, 48, 44, 110, 41, 44, 102, 117, 110, 99, // id 0,n),func - 116, 105, 111, 110, 40, 101, 41, 123, 118, 97, 114, 32, // tion(e){var - 110, 61, 116, 46, 116, 40, 116, 46, 95, 95, 91, 48, // n=t.t(t.__[0 - 93, 44, 101, 41, 59, 116, 46, 95, 95, 91, 48, 93, // ],e);t.__[0] - 33, 61, 61, 110, 38, 38, 40, 116, 46, 95, 95, 61, // !==n&&(t.__= - 91, 110, 44, 116, 46, 95, 95, 91, 49, 93, 93, 44, // [n,t.__[1]], - 116, 46, 95, 95, 99, 46, 115, 101, 116, 83, 116, 97, // t.__c.setSta - 116, 101, 40, 123, 125, 41, 41, 125, 93, 44, 116, 46, // te({}))}],t. - 95, 95, 99, 61, 78, 41, 44, 116, 46, 95, 95, 125, // __c=N),t.__} - 102, 117, 110, 99, 116, 105, 111, 110, 32, 74, 40, 101, // function J(e - 44, 95, 41, 123, 118, 97, 114, 32, 116, 61, 106, 40, // ,_){var t=j( - 76, 43, 43, 44, 51, 41, 59, 33, 110, 46, 95, 95, // L++,3);!n.__ - 115, 38, 38, 108, 101, 40, 116, 46, 95, 95, 72, 44, // s&&le(t.__H, - 95, 41, 38, 38, 40, 116, 46, 95, 95, 61, 101, 44, // _)&&(t.__=e, - 116, 46, 95, 95, 72, 61, 95, 44, 78, 46, 95, 95, // t.__H=_,N.__ - 72, 46, 95, 95, 104, 46, 112, 117, 115, 104, 40, 116, // H.__h.push(t - 41, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // ))}function - 75, 40, 101, 44, 95, 41, 123, 118, 97, 114, 32, 116, // K(e,_){var t - 61, 106, 40, 76, 43, 43, 44, 52, 41, 59, 33, 110, // =j(L++,4);!n - 46, 95, 95, 115, 38, 38, 108, 101, 40, 116, 46, 95, // .__s&&le(t._ - 95, 72, 44, 95, 41, 38, 38, 40, 116, 46, 95, 95, // _H,_)&&(t.__ - 61, 101, 44, 116, 46, 95, 95, 72, 61, 95, 44, 78, // =e,t.__H=_,N - 46, 95, 95, 104, 46, 112, 117, 115, 104, 40, 116, 41, // .__h.push(t) - 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 81, // )}function Q - 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 32, 82, // (e){return R - 61, 53, 44, 89, 40, 102, 117, 110, 99, 116, 105, 111, // =5,Y(functio - 110, 40, 41, 123, 114, 101, 116, 117, 114, 110, 123, 99, // n(){return{c - 117, 114, 114, 101, 110, 116, 58, 101, 125, 125, 44, 91, // urrent:e}},[ - 93, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // ])}function - 88, 40, 101, 44, 110, 44, 95, 41, 123, 82, 61, 54, // X(e,n,_){R=6 - 44, 75, 40, 102, 117, 110, 99, 116, 105, 111, 110, 40, // ,K(function( - 41, 123, 34, 102, 117, 110, 99, 116, 105, 111, 110, 34, // ){"function" - 61, 61, 116, 121, 112, 101, 111, 102, 32, 101, 63, 101, // ==typeof e?e - 40, 110, 40, 41, 41, 58, 101, 38, 38, 40, 101, 46, // (n()):e&&(e. - 99, 117, 114, 114, 101, 110, 116, 61, 110, 40, 41, 41, // current=n()) - 125, 44, 110, 117, 108, 108, 61, 61, 95, 63, 95, 58, // },null==_?_: - 95, 46, 99, 111, 110, 99, 97, 116, 40, 101, 41, 41, // _.concat(e)) - 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 89, 40, // }function Y( - 101, 44, 110, 41, 123, 118, 97, 114, 32, 95, 61, 106, // e,n){var _=j - 40, 76, 43, 43, 44, 55, 41, 59, 114, 101, 116, 117, // (L++,7);retu - 114, 110, 32, 108, 101, 40, 95, 46, 95, 95, 72, 44, // rn le(_.__H, - 110, 41, 38, 38, 40, 95, 46, 95, 95, 61, 101, 40, // n)&&(_.__=e( - 41, 44, 95, 46, 95, 95, 72, 61, 110, 44, 95, 46, // ),_.__H=n,_. - 95, 95, 104, 61, 101, 41, 44, 95, 46, 95, 95, 125, // __h=e),_.__} - 102, 117, 110, 99, 116, 105, 111, 110, 32, 90, 40, 101, // function Z(e - 44, 110, 41, 123, 114, 101, 116, 117, 114, 110, 32, 82, // ,n){return R - 61, 56, 44, 89, 40, 102, 117, 110, 99, 116, 105, 111, // =8,Y(functio - 110, 40, 41, 123, 114, 101, 116, 117, 114, 110, 32, 101, // n(){return e - 125, 44, 110, 41, 125, 102, 117, 110, 99, 116, 105, 111, // },n)}functio - 110, 32, 101, 101, 40, 101, 41, 123, 118, 97, 114, 32, // n ee(e){var - 110, 61, 78, 46, 99, 111, 110, 116, 101, 120, 116, 91, // n=N.context[ - 101, 46, 95, 95, 99, 93, 44, 95, 61, 106, 40, 76, // e.__c],_=j(L - 43, 43, 44, 57, 41, 59, 114, 101, 116, 117, 114, 110, // ++,9);return - 32, 95, 46, 99, 61, 101, 44, 110, 63, 40, 110, 117, // _.c=e,n?(nu - 108, 108, 61, 61, 95, 46, 95, 95, 38, 38, 40, 95, // ll==_.__&&(_ - 46, 95, 95, 61, 33, 48, 44, 110, 46, 115, 117, 98, // .__=!0,n.sub - 40, 78, 41, 41, 44, 110, 46, 112, 114, 111, 112, 115, // (N)),n.props - 46, 118, 97, 108, 117, 101, 41, 58, 101, 46, 95, 95, // .value):e.__ - 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 110, 101, // }function ne - 40, 101, 44, 95, 41, 123, 110, 46, 117, 115, 101, 68, // (e,_){n.useD - 101, 98, 117, 103, 86, 97, 108, 117, 101, 38, 38, 110, // ebugValue&&n - 46, 117, 115, 101, 68, 101, 98, 117, 103, 86, 97, 108, // .useDebugVal - 117, 101, 40, 95, 63, 95, 40, 101, 41, 58, 101, 41, // ue(_?_(e):e) - 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 95, 101, // }function _e - 40, 101, 41, 123, 118, 97, 114, 32, 110, 61, 106, 40, // (e){var n=j( - 76, 43, 43, 44, 49, 48, 41, 44, 95, 61, 71, 40, // L++,10),_=G( - 41, 59, 114, 101, 116, 117, 114, 110, 32, 110, 46, 95, // );return n._ - 95, 61, 101, 44, 78, 46, 99, 111, 109, 112, 111, 110, // _=e,N.compon - 101, 110, 116, 68, 105, 100, 67, 97, 116, 99, 104, 124, // entDidCatch| - 124, 40, 78, 46, 99, 111, 109, 112, 111, 110, 101, 110, // |(N.componen - 116, 68, 105, 100, 67, 97, 116, 99, 104, 61, 102, 117, // tDidCatch=fu - 110, 99, 116, 105, 111, 110, 40, 101, 41, 123, 110, 46, // nction(e){n. - 95, 95, 38, 38, 110, 46, 95, 95, 40, 101, 41, 44, // __&&n.__(e), - 95, 91, 49, 93, 40, 101, 41, 125, 41, 44, 91, 95, // _[1](e)}),[_ - 91, 48, 93, 44, 102, 117, 110, 99, 116, 105, 111, 110, // [0],function - 40, 41, 123, 95, 91, 49, 93, 40, 118, 111, 105, 100, // (){_[1](void - 32, 48, 41, 125, 93, 125, 102, 117, 110, 99, 116, 105, // 0)}]}functi - 111, 110, 32, 116, 101, 40, 41, 123, 73, 46, 102, 111, // on te(){I.fo - 114, 69, 97, 99, 104, 40, 102, 117, 110, 99, 116, 105, // rEach(functi - 111, 110, 40, 101, 41, 123, 105, 102, 40, 101, 46, 95, // on(e){if(e._ - 95, 80, 41, 116, 114, 121, 123, 101, 46, 95, 95, 72, // _P)try{e.__H - 46, 95, 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, // .__h.forEach - 40, 114, 101, 41, 44, 101, 46, 95, 95, 72, 46, 95, // (re),e.__H._ - 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, 40, 117, // _h.forEach(u - 101, 41, 44, 101, 46, 95, 95, 72, 46, 95, 95, 104, // e),e.__H.__h - 61, 91, 93, 125, 99, 97, 116, 99, 104, 40, 95, 41, // =[]}catch(_) - 123, 101, 46, 95, 95, 72, 46, 95, 95, 104, 61, 91, // {e.__H.__h=[ - 93, 44, 110, 46, 95, 95, 101, 40, 95, 44, 101, 46, // ],n.__e(_,e. - 95, 95, 118, 41, 125, 125, 41, 44, 73, 61, 91, 93, // __v)}}),I=[] - 125, 110, 46, 95, 95, 98, 61, 102, 117, 110, 99, 116, // }n.__b=funct - 105, 111, 110, 40, 101, 41, 123, 78, 61, 110, 117, 108, // ion(e){N=nul - 108, 44, 79, 38, 38, 79, 40, 101, 41, 125, 44, 110, // l,O&&O(e)},n - 46, 95, 95, 114, 61, 102, 117, 110, 99, 116, 105, 111, // .__r=functio - 110, 40, 101, 41, 123, 86, 38, 38, 86, 40, 101, 41, // n(e){V&&V(e) - 44, 76, 61, 48, 59, 118, 97, 114, 32, 110, 61, 40, // ,L=0;var n=( - 78, 61, 101, 46, 95, 95, 99, 41, 46, 95, 95, 72, // N=e.__c).__H - 59, 110, 38, 38, 40, 110, 46, 95, 95, 104, 46, 102, // ;n&&(n.__h.f - 111, 114, 69, 97, 99, 104, 40, 114, 101, 41, 44, 110, // orEach(re),n - 46, 95, 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, // .__h.forEach - 40, 117, 101, 41, 44, 110, 46, 95, 95, 104, 61, 91, // (ue),n.__h=[ - 93, 41, 125, 44, 110, 46, 100, 105, 102, 102, 101, 100, // ])},n.diffed - 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, 41, // =function(e) - 123, 113, 38, 38, 113, 40, 101, 41, 59, 118, 97, 114, // {q&&q(e);var - 32, 95, 61, 101, 46, 95, 95, 99, 59, 95, 38, 38, // _=e.__c;_&& - 95, 46, 95, 95, 72, 38, 38, 95, 46, 95, 95, 72, // _.__H&&_.__H - 46, 95, 95, 104, 46, 108, 101, 110, 103, 116, 104, 38, // .__h.length& - 38, 40, 49, 33, 61, 61, 73, 46, 112, 117, 115, 104, // &(1!==I.push - 40, 95, 41, 38, 38, 87, 61, 61, 61, 110, 46, 114, // (_)&&W===n.r - 101, 113, 117, 101, 115, 116, 65, 110, 105, 109, 97, 116, // equestAnimat - 105, 111, 110, 70, 114, 97, 109, 101, 124, 124, 40, 40, // ionFrame||(( - 87, 61, 110, 46, 114, 101, 113, 117, 101, 115, 116, 65, // W=n.requestA - 110, 105, 109, 97, 116, 105, 111, 110, 70, 114, 97, 109, // nimationFram - 101, 41, 124, 124, 102, 117, 110, 99, 116, 105, 111, 110, // e)||function - 40, 101, 41, 123, 118, 97, 114, 32, 110, 44, 95, 61, // (e){var n,_= - 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, 123, 99, // function(){c - 108, 101, 97, 114, 84, 105, 109, 101, 111, 117, 116, 40, // learTimeout( - 116, 41, 44, 111, 101, 38, 38, 99, 97, 110, 99, 101, // t),oe&&cance - 108, 65, 110, 105, 109, 97, 116, 105, 111, 110, 70, 114, // lAnimationFr - 97, 109, 101, 40, 110, 41, 44, 115, 101, 116, 84, 105, // ame(n),setTi - 109, 101, 111, 117, 116, 40, 101, 41, 125, 44, 116, 61, // meout(e)},t= - 115, 101, 116, 84, 105, 109, 101, 111, 117, 116, 40, 95, // setTimeout(_ - 44, 49, 48, 48, 41, 59, 111, 101, 38, 38, 40, 110, // ,100);oe&&(n - 61, 114, 101, 113, 117, 101, 115, 116, 65, 110, 105, 109, // =requestAnim - 97, 116, 105, 111, 110, 70, 114, 97, 109, 101, 40, 95, // ationFrame(_ - 41, 41, 125, 41, 40, 116, 101, 41, 41, 44, 78, 61, // ))})(te)),N= - 118, 111, 105, 100, 32, 48, 125, 44, 110, 46, 95, 95, // void 0},n.__ - 99, 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, // c=function(e - 44, 95, 41, 123, 95, 46, 115, 111, 109, 101, 40, 102, // ,_){_.some(f - 117, 110, 99, 116, 105, 111, 110, 40, 101, 41, 123, 116, // unction(e){t - 114, 121, 123, 101, 46, 95, 95, 104, 46, 102, 111, 114, // ry{e.__h.for - 69, 97, 99, 104, 40, 114, 101, 41, 44, 101, 46, 95, // Each(re),e._ - 95, 104, 61, 101, 46, 95, 95, 104, 46, 102, 105, 108, // _h=e.__h.fil - 116, 101, 114, 40, 102, 117, 110, 99, 116, 105, 111, 110, // ter(function - 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 33, 101, // (e){return!e - 46, 95, 95, 124, 124, 117, 101, 40, 101, 41, 125, 41, // .__||ue(e)}) - 125, 99, 97, 116, 99, 104, 40, 116, 41, 123, 95, 46, // }catch(t){_. - 115, 111, 109, 101, 40, 102, 117, 110, 99, 116, 105, 111, // some(functio - 110, 40, 101, 41, 123, 101, 46, 95, 95, 104, 38, 38, // n(e){e.__h&& - 40, 101, 46, 95, 95, 104, 61, 91, 93, 41, 125, 41, // (e.__h=[])}) - 44, 95, 61, 91, 93, 44, 110, 46, 95, 95, 101, 40, // ,_=[],n.__e( - 116, 44, 101, 46, 95, 95, 118, 41, 125, 125, 41, 44, // t,e.__v)}}), - 66, 38, 38, 66, 40, 101, 44, 95, 41, 125, 44, 110, // B&&B(e,_)},n - 46, 117, 110, 109, 111, 117, 110, 116, 61, 102, 117, 110, // .unmount=fun - 99, 116, 105, 111, 110, 40, 101, 41, 123, 36, 38, 38, // ction(e){$&& - 36, 40, 101, 41, 59, 118, 97, 114, 32, 95, 61, 101, // $(e);var _=e - 46, 95, 95, 99, 59, 105, 102, 40, 95, 38, 38, 95, // .__c;if(_&&_ - 46, 95, 95, 72, 41, 116, 114, 121, 123, 95, 46, 95, // .__H)try{_._ - 95, 72, 46, 95, 95, 46, 102, 111, 114, 69, 97, 99, // _H.__.forEac - 104, 40, 114, 101, 41, 125, 99, 97, 116, 99, 104, 40, // h(re)}catch( - 101, 41, 123, 110, 46, 95, 95, 101, 40, 101, 44, 95, // e){n.__e(e,_ - 46, 95, 95, 118, 41, 125, 125, 59, 118, 97, 114, 32, // .__v)}};var - 111, 101, 61, 34, 102, 117, 110, 99, 116, 105, 111, 110, // oe="function - 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 114, 101, // "==typeof re - 113, 117, 101, 115, 116, 65, 110, 105, 109, 97, 116, 105, // questAnimati - 111, 110, 70, 114, 97, 109, 101, 59, 102, 117, 110, 99, // onFrame;func - 116, 105, 111, 110, 32, 114, 101, 40, 101, 41, 123, 118, // tion re(e){v - 97, 114, 32, 110, 61, 78, 59, 34, 102, 117, 110, 99, // ar n=N;"func - 116, 105, 111, 110, 34, 61, 61, 116, 121, 112, 101, 111, // tion"==typeo - 102, 32, 101, 46, 95, 95, 99, 38, 38, 101, 46, 95, // f e.__c&&e._ - 95, 99, 40, 41, 44, 78, 61, 110, 125, 102, 117, 110, // _c(),N=n}fun - 99, 116, 105, 111, 110, 32, 117, 101, 40, 101, 41, 123, // ction ue(e){ - 118, 97, 114, 32, 110, 61, 78, 59, 101, 46, 95, 95, // var n=N;e.__ - 99, 61, 101, 46, 95, 95, 40, 41, 44, 78, 61, 110, // c=e.__(),N=n - 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 108, 101, // }function le - 40, 101, 44, 110, 41, 123, 114, 101, 116, 117, 114, 110, // (e,n){return - 33, 101, 124, 124, 101, 46, 108, 101, 110, 103, 116, 104, // !e||e.length - 33, 61, 61, 110, 46, 108, 101, 110, 103, 116, 104, 124, // !==n.length| - 124, 110, 46, 115, 111, 109, 101, 40, 102, 117, 110, 99, // |n.some(func - 116, 105, 111, 110, 40, 110, 44, 95, 41, 123, 114, 101, // tion(n,_){re - 116, 117, 114, 110, 32, 110, 33, 61, 61, 101, 91, 95, // turn n!==e[_ - 93, 125, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, // ]})}function - 32, 105, 101, 40, 101, 44, 110, 41, 123, 114, 101, 116, // ie(e,n){ret - 117, 114, 110, 34, 102, 117, 110, 99, 116, 105, 111, 110, // urn"function - 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 110, 63, // "==typeof n? - 110, 40, 101, 41, 58, 110, 125, 118, 97, 114, 32, 99, // n(e):n}var c - 101, 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, // e=function(e - 44, 110, 44, 95, 44, 116, 41, 123, 118, 97, 114, 32, // ,n,_,t){var - 111, 59, 110, 91, 48, 93, 61, 48, 59, 102, 111, 114, // o;n[0]=0;for - 40, 118, 97, 114, 32, 114, 61, 49, 59, 114, 60, 110, // (var r=1;r=5&& - 40, 40, 111, 124, 124, 33, 101, 38, 38, 53, 61, 61, // ((o||!e&&5== - 61, 116, 41, 38, 38, 40, 117, 46, 112, 117, 115, 104, // =t)&&(u.push - 40, 116, 44, 48, 44, 111, 44, 95, 41, 44, 116, 61, // (t,0,o,_),t= - 54, 41, 44, 101, 38, 38, 40, 117, 46, 112, 117, 115, // 6),e&&(u.pus - 104, 40, 116, 44, 101, 44, 48, 44, 95, 41, 44, 116, // h(t,e,0,_),t - 61, 54, 41, 41, 44, 111, 61, 34, 34, 125, 44, 105, // =6)),o=""},i - 61, 48, 59, 105, 60, 101, 46, 108, 101, 110, 103, 116, // =0;i"===n?(t=1, - 111, 61, 34, 34, 41, 58, 111, 61, 110, 43, 111, 91, // o=""):o=n+o[ - 48, 93, 58, 114, 63, 110, 61, 61, 61, 114, 63, 114, // 0]:r?n===r?r - 61, 34, 34, 58, 111, 43, 61, 110, 58, 39, 34, 39, // ="":o+=n:'"' - 61, 61, 61, 110, 124, 124, 34, 39, 34, 61, 61, 61, // ===n||"'"=== - 110, 63, 114, 61, 110, 58, 34, 62, 34, 61, 61, 61, // n?r=n:">"=== - 110, 63, 40, 108, 40, 41, 44, 116, 61, 49, 41, 58, // n?(l(),t=1): - 116, 38, 38, 40, 34, 61, 34, 61, 61, 61, 110, 63, // t&&("="===n? - 40, 116, 61, 53, 44, 95, 61, 111, 44, 111, 61, 34, // (t=5,_=o,o=" - 34, 41, 58, 34, 47, 34, 61, 61, 61, 110, 38, 38, // "):"/"===n&& - 40, 116, 60, 53, 124, 124, 34, 62, 34, 61, 61, 61, // (t<5||">"=== - 101, 91, 105, 93, 91, 99, 43, 49, 93, 41, 63, 40, // e[i][c+1])?( - 108, 40, 41, 44, 51, 61, 61, 61, 116, 38, 38, 40, // l(),3===t&&( - 117, 61, 117, 91, 48, 93, 41, 44, 116, 61, 117, 44, // u=u[0]),t=u, - 40, 117, 61, 117, 91, 48, 93, 41, 46, 112, 117, 115, // (u=u[0]).pus - 104, 40, 50, 44, 48, 44, 116, 41, 44, 116, 61, 48, // h(2,0,t),t=0 - 41, 58, 34, 32, 34, 61, 61, 61, 110, 124, 124, 34, // ):" "===n||" - 92, 116, 34, 61, 61, 61, 110, 124, 124, 34, 92, 110, // .t"===n||".n - 34, 61, 61, 61, 110, 124, 124, 34, 92, 114, 34, 61, // "===n||".r"= - 61, 61, 110, 63, 40, 108, 40, 41, 44, 116, 61, 50, // ==n?(l(),t=2 - 41, 58, 111, 43, 61, 110, 41, 44, 51, 61, 61, 61, // ):o+=n),3=== - 116, 38, 38, 34, 33, 45, 45, 34, 61, 61, 61, 111, // t&&"!--"===o - 38, 38, 40, 116, 61, 52, 44, 117, 61, 117, 91, 48, // &&(t=4,u=u[0 - 93, 41, 125, 114, 101, 116, 117, 114, 110, 32, 108, 40, // ])}return l( - 41, 44, 117, 125, 40, 101, 41, 41, 44, 110, 41, 44, // ),u}(e)),n), - 97, 114, 103, 117, 109, 101, 110, 116, 115, 44, 91, 93, // arguments,[] - 41, 41, 46, 108, 101, 110, 103, 116, 104, 62, 49, 63, // )).length>1? - 110, 58, 110, 91, 48, 93, 125, 46, 98, 105, 110, 100, // n:n[0]}.bind - 40, 97, 41, 59, 101, 120, 112, 111, 114, 116, 123, 97, // (a);export{a - 32, 97, 115, 32, 104, 44, 102, 101, 32, 97, 115, 32, // as h,fe as - 104, 116, 109, 108, 44, 77, 32, 97, 115, 32, 114, 101, // html,M as re - 110, 100, 101, 114, 44, 100, 32, 97, 115, 32, 67, 111, // nder,d as Co - 109, 112, 111, 110, 101, 110, 116, 44, 70, 32, 97, 115, // mponent,F as - 32, 99, 114, 101, 97, 116, 101, 67, 111, 110, 116, 101, // createConte - 120, 116, 44, 71, 32, 97, 115, 32, 117, 115, 101, 83, // xt,G as useS - 116, 97, 116, 101, 44, 122, 32, 97, 115, 32, 117, 115, // tate,z as us - 101, 82, 101, 100, 117, 99, 101, 114, 44, 74, 32, 97, // eReducer,J a - 115, 32, 117, 115, 101, 69, 102, 102, 101, 99, 116, 44, // s useEffect, - 75, 32, 97, 115, 32, 117, 115, 101, 76, 97, 121, 111, // K as useLayo - 117, 116, 69, 102, 102, 101, 99, 116, 44, 81, 32, 97, // utEffect,Q a - 115, 32, 117, 115, 101, 82, 101, 102, 44, 88, 32, 97, // s useRef,X a - 115, 32, 117, 115, 101, 73, 109, 112, 101, 114, 97, 116, // s useImperat - 105, 118, 101, 72, 97, 110, 100, 108, 101, 44, 89, 32, // iveHandle,Y - 97, 115, 32, 117, 115, 101, 77, 101, 109, 111, 44, 90, // as useMemo,Z - 32, 97, 115, 32, 117, 115, 101, 67, 97, 108, 108, 98, // as useCallb - 97, 99, 107, 44, 101, 101, 32, 97, 115, 32, 117, 115, // ack,ee as us - 101, 67, 111, 110, 116, 101, 120, 116, 44, 110, 101, 32, // eContext,ne - 97, 115, 32, 117, 115, 101, 68, 101, 98, 117, 103, 86, // as useDebugV - 97, 108, 117, 101, 44, 95, 101, 32, 97, 115, 32, 117, // alue,_e as u - 115, 101, 69, 114, 114, 111, 114, 66, 111, 117, 110, 100, // seErrorBound - 97, 114, 121, 125, 59, 10, 0 // ary};. + 31, 139, 8, 8, 29, 105, 247, 99, 0, 3, 112, 114, // .....i.c..pr + 101, 97, 99, 116, 46, 109, 105, 110, 46, 106, 115, 0, // eact.min.js. + 157, 91, 123, 119, 219, 182, 146, 255, 127, 63, 69, 164, // .[{w.....?E. + 211, 163, 18, 43, 68, 177, 147, 182, 187, 75, 5, 213, // ...+D....K.. + 105, 29, 183, 238, 109, 234, 230, 38, 105, 123, 123, 85, // i...m..&i{{U + 93, 30, 138, 132, 44, 214, 20, 169, 242, 97, 91, 53, // ]...,....a[5 + 245, 221, 247, 55, 3, 128, 164, 108, 185, 247, 236, 158, // ...7...l.... + 36, 34, 30, 131, 1, 48, 47, 204, 12, 144, 155, 176, // $"...0/..... + 120, 166, 101, 38, 3, 89, 201, 92, 22, 178, 150, 169, // x.e&.Y...... + 186, 223, 203, 68, 205, 23, 50, 82, 47, 194, 40, 169, // ...D..2R/.(. + 26, 125, 231, 205, 252, 178, 185, 106, 178, 102, 219, 124, // .}.....j.f.| + 34, 154, 98, 187, 110, 174, 138, 36, 110, 242, 219, 178, // ".b.n..$n... + 217, 100, 81, 147, 85, 183, 77, 146, 233, 121, 180, 94, // .dQ.U.M..y.^ + 52, 127, 230, 121, 243, 175, 188, 136, 155, 164, 210, 69, // 4..y.......E + 248, 34, 153, 174, 234, 44, 170, 146, 60, 123, 86, 122, // ."...,..<{Vz + 152, 72, 220, 175, 242, 194, 187, 193, 172, 193, 179, 36, // .H.........$ + 123, 150, 9, 61, 15, 22, 42, 195, 207, 180, 208, 85, // {..=..*....U + 93, 100, 207, 244, 190, 29, 177, 242, 180, 184, 39, 216, // ]d........'. + 76, 233, 201, 54, 44, 116, 86, 93, 230, 177, 158, 102, // L..6,tV]...f + 163, 81, 54, 41, 244, 38, 191, 209, 103, 235, 36, 141, // .Q6).&..g.$. + 1, 214, 13, 10, 61, 222, 141, 25, 216, 109, 105, 74, // ....=....miJ + 243, 214, 52, 103, 32, 134, 215, 122, 55, 84, 170, 158, // ..4g ..z7T.. + 229, 42, 152, 215, 11, 127, 88, 232, 21, 215, 11, 83, // .*....X....S + 79, 241, 195, 165, 105, 178, 242, 194, 226, 170, 222, 96, // O...i......` + 230, 114, 146, 234, 236, 170, 90, 127, 249, 114, 52, 242, // .r....Z..r4. + 210, 73, 68, 19, 99, 69, 234, 81, 255, 171, 153, 158, // .ID.cE.Q.... + 68, 97, 154, 118, 35, 229, 75, 225, 87, 66, 14, 221, // Da.v#.K.WB.. + 26, 49, 87, 181, 219, 234, 124, 245, 140, 118, 82, 167, // .1W...|..vR. + 233, 64, 101, 147, 88, 175, 194, 58, 173, 222, 21, 249, // .@e.X..:.... + 182, 20, 237, 98, 31, 180, 223, 228, 73, 252, 236, 68, // ...b....I..D + 41, 69, 75, 164, 117, 208, 74, 15, 97, 208, 34, 28, // )EK.u.J.a.". + 45, 183, 160, 69, 202, 124, 165, 89, 122, 68, 218, 130, // -..E.|.YzD.. + 23, 150, 225, 134, 80, 32, 17, 45, 201, 215, 114, 75, // ....P .-..rK + 72, 252, 74, 130, 70, 62, 0, 244, 202, 47, 100, 16, // H.J.F>.../d. + 92, 251, 132, 1, 5, 247, 93, 250, 39, 248, 213, 174, // ......].'... + 26, 251, 102, 105, 40, 70, 174, 109, 109, 10, 81, 158, // ..fi(F.mm.Q. + 149, 85, 81, 71, 85, 94, 116, 64, 55, 220, 71, 52, // .UQGU^t@7.G4 + 31, 143, 3, 191, 222, 187, 21, 59, 106, 220, 100, 96, // .......;j.d` + 52, 177, 153, 11, 94, 42, 100, 218, 173, 126, 77, 114, // 4...^*d..~Mr + 225, 196, 165, 229, 68, 215, 31, 27, 73, 171, 214, 73, // ....D...I..I + 57, 225, 237, 40, 236, 150, 42, 88, 74, 165, 239, 42, // 9..(..*XJ..* + 213, 131, 189, 49, 176, 96, 180, 89, 80, 38, 90, 196, // ...1.`.YP&Z. + 65, 48, 67, 47, 62, 146, 126, 240, 247, 122, 146, 100, // A0C/>.~..z.d + 177, 190, 251, 145, 228, 114, 124, 42, 120, 11, 211, 86, // .....r|*x..V + 158, 167, 217, 107, 205, 64, 70, 14, 166, 217, 120, 44, // ...k.@F...x, + 44, 218, 129, 242, 2, 197, 157, 243, 108, 33, 28, 207, // ,.......l!.. + 9, 165, 118, 211, 113, 197, 82, 225, 136, 160, 232, 9, // ..v.q.R..... + 21, 104, 61, 102, 218, 110, 3, 187, 86, 73, 100, 48, // .h=f.n..VId0 + 237, 230, 211, 60, 95, 59, 23, 85, 34, 163, 124, 84, // ...<_;.U".|T + 52, 189, 209, 100, 25, 150, 90, 49, 151, 50, 117, 242, // 4..d..Z1.2u. + 255, 220, 192, 253, 35, 132, 102, 47, 203, 66, 135, 215, // ....#.f/.B.. + 123, 187, 61, 90, 229, 190, 91, 244, 134, 22, 237, 13, // {.=Z..[..... + 104, 76, 12, 49, 230, 175, 26, 156, 0, 115, 53, 217, // hL.1.....s5. + 214, 37, 49, 120, 52, 26, 92, 161, 185, 24, 143, 155, // .%1x4....... + 166, 24, 40, 150, 242, 101, 14, 4, 250, 189, 6, 23, // ..(..e...... + 138, 36, 187, 2, 140, 231, 21, 71, 123, 154, 38, 23, // .$.....G{.&. + 222, 85, 79, 226, 175, 188, 206, 244, 232, 41, 99, 86, // .UO......)cV + 149, 219, 169, 208, 40, 151, 121, 81, 121, 14, 222, 72, // ....(.yQy..H + 69, 79, 20, 110, 240, 111, 249, 60, 115, 165, 189, 144, // EO.n.o...D....J. + 208, 20, 246, 246, 155, 230, 206, 193, 99, 113, 128, 35, // ........cq.# + 225, 8, 58, 208, 64, 0, 99, 64, 59, 199, 20, 248, // ..:.@.c@;... + 28, 194, 83, 135, 216, 59, 57, 25, 230, 142, 124, 163, // ..S..;9...|. + 209, 48, 51, 229, 211, 133, 128, 11, 2, 250, 227, 104, // .03........h + 167, 168, 100, 155, 134, 145, 246, 94, 156, 133, 91, 176, // ..d....^..[. + 71, 127, 242, 130, 166, 132, 61, 67, 95, 149, 191, 205, // G.....=C_... + 111, 117, 113, 6, 23, 201, 19, 152, 89, 207, 30, 180, // ouq.....Y... + 77, 202, 52, 193, 88, 68, 11, 89, 91, 132, 22, 164, // M.4.XD.Y[... + 176, 163, 248, 69, 16, 195, 181, 121, 54, 46, 16, 158, // ...E...y6... + 200, 96, 86, 53, 13, 4, 47, 142, 207, 111, 32, 139, // .`V5../..o . + 111, 147, 178, 210, 240, 5, 192, 202, 98, 246, 193, 63, // o.......b..? + 135, 152, 192, 54, 153, 40, 233, 41, 128, 86, 1, 134, // ...6.(.).V.. + 113, 152, 93, 233, 34, 175, 203, 116, 247, 65, 87, 223, // q.]."..t.AW. + 101, 128, 187, 248, 248, 195, 91, 50, 134, 198, 59, 206, // e.....[2..;. + 197, 193, 246, 238, 32, 96, 215, 243, 11, 127, 189, 192, // .... `...... + 6, 215, 67, 209, 245, 148, 151, 225, 134, 183, 93, 14, // ..C.......]. + 123, 248, 215, 20, 98, 17, 50, 16, 46, 197, 66, 92, // {...b.2...B. + 25, 108, 216, 184, 114, 21, 46, 191, 35, 255, 218, 213, // .l..r...#... + 99, 248, 54, 105, 30, 198, 182, 206, 220, 210, 162, 42, // c.6i.......* + 118, 247, 15, 5, 53, 152, 90, 101, 217, 71, 97, 21, // v...5.Ze.Ga. + 113, 120, 176, 63, 102, 66, 65, 72, 235, 185, 66, 136, // qx.?fBAH..B. + 6, 167, 3, 214, 249, 97, 216, 99, 106, 209, 50, 213, // .....a.cj.2. + 40, 200, 87, 21, 196, 111, 89, 87, 218, 106, 136, 37, // (.W..oYW.j.% + 104, 175, 89, 244, 253, 218, 115, 154, 154, 67, 141, 116, // h.Y...s..C.t + 110, 92, 246, 241, 224, 116, 225, 101, 19, 77, 28, 152, // n....t.e.M.. + 217, 47, 57, 241, 253, 144, 245, 195, 145, 81, 39, 255, // ./9......Q'. + 118, 20, 29, 203, 189, 176, 93, 38, 50, 50, 90, 183, // v.....]&22Z. + 146, 161, 220, 202, 27, 235, 155, 45, 229, 25, 121, 103, // .......-..yg + 240, 200, 204, 9, 114, 96, 27, 131, 73, 47, 58, 19, // ....r`..I/:. + 189, 24, 108, 106, 232, 68, 254, 220, 26, 180, 138, 76, // ..lj.D.....L + 9, 38, 204, 156, 91, 21, 27, 101, 42, 175, 77, 248, // .&..[..e*.M. + 80, 171, 121, 130, 131, 222, 91, 177, 153, 93, 194, 172, // P.y...[..].. + 145, 146, 77, 153, 89, 108, 2, 30, 115, 227, 156, 229, // ..M.Yl..s... + 138, 252, 31, 227, 45, 157, 41, 140, 62, 119, 49, 218, // ....-.).>w1. + 71, 242, 73, 70, 163, 124, 190, 34, 183, 0, 135, 145, // G.IF.|.".... + 90, 205, 206, 102, 103, 6, 214, 28, 185, 62, 117, 33, // Z..fg....>u! + 70, 165, 197, 68, 179, 43, 133, 19, 141, 86, 100, 214, // F..D.+...Vd. + 26, 145, 255, 172, 66, 252, 156, 251, 222, 16, 163, 170, // ....B....... + 156, 230, 29, 66, 134, 206, 71, 163, 243, 73, 219, 2, // ...B..G..I.. + 142, 82, 208, 48, 51, 67, 67, 149, 233, 91, 176, 113, // .R.03CC..[.q + 41, 239, 132, 239, 245, 219, 98, 110, 147, 97, 159, 98, // ).....bn.a.b + 234, 28, 117, 51, 94, 125, 37, 228, 217, 104, 116, 54, // ..u3^}%..ht6 + 41, 235, 165, 23, 18, 156, 137, 60, 151, 40, 149, 85, // )......<.(.U + 88, 105, 200, 158, 45, 177, 34, 135, 109, 48, 122, 39, // Xi..-.".m0z' + 105, 149, 153, 202, 229, 150, 215, 75, 129, 16, 55, 173, // i......K..7. + 217, 119, 50, 98, 78, 117, 248, 20, 30, 127, 149, 69, // .w2bNu.....E + 228, 220, 164, 243, 201, 149, 174, 222, 32, 240, 185, 209, // ........ ... + 241, 7, 234, 248, 166, 200, 55, 156, 12, 104, 71, 184, // ......7..hG. + 33, 109, 3, 71, 25, 92, 132, 117, 42, 77, 163, 124, // !m.G...u*M.| + 26, 145, 183, 116, 192, 66, 222, 40, 187, 57, 248, 132, // ...t.B.(.9.. + 22, 173, 220, 10, 179, 206, 191, 90, 138, 89, 44, 109, // .......Z.Y,m + 124, 179, 205, 51, 72, 244, 47, 73, 154, 254, 128, 192, // |..3H./I.... + 13, 6, 248, 88, 171, 231, 246, 215, 235, 124, 147, 196, // ...X.....|.. + 237, 8, 80, 200, 248, 142, 71, 250, 69, 123, 128, 252, // ..P...G.E{.. + 251, 117, 45, 161, 8, 55, 79, 44, 239, 189, 142, 52, // .u-..7O,...4 + 198, 88, 200, 191, 232, 52, 210, 49, 8, 141, 83, 230, // .X...4.1..S. + 112, 149, 235, 188, 78, 227, 51, 55, 232, 167, 109, 204, // p...N.37..m. + 60, 24, 156, 42, 245, 84, 175, 163, 52, 208, 53, 77, // <..*.T..4.5M + 192, 65, 160, 98, 137, 190, 17, 247, 143, 132, 202, 200, // .A.b........ + 5, 43, 226, 205, 192, 130, 89, 22, 67, 140, 78, 5, // .+....Y.C.N. + 163, 186, 161, 195, 226, 129, 218, 94, 115, 249, 218, 148, // .......^s... + 39, 176, 194, 231, 33, 236, 102, 63, 140, 213, 54, 46, // '...!.f?..6. + 87, 129, 216, 27, 60, 107, 235, 166, 140, 70, 169, 165, // W...i........ + 117, 155, 249, 75, 196, 194, 174, 156, 164, 71, 155, 51, // u..K.....G.3 + 184, 239, 2, 188, 161, 38, 113, 79, 189, 17, 37, 48, // .....&qO..%0 + 241, 65, 60, 163, 197, 163, 84, 17, 128, 248, 120, 100, // .A<...T...xd + 2, 174, 237, 116, 199, 83, 74, 54, 161, 76, 154, 216, // ...t.SJ6.L.. + 237, 160, 157, 159, 109, 195, 190, 159, 180, 185, 245, 250, // ....m....... + 41, 155, 214, 49, 40, 217, 49, 88, 131, 118, 70, 140, // )..1(.1X.vF. + 227, 246, 236, 221, 89, 231, 64, 110, 16, 163, 176, 215, // ....Y.@n.... + 125, 67, 46, 183, 218, 113, 222, 106, 112, 226, 84, 180, // }C...q.jp.T. + 102, 191, 121, 186, 121, 93, 187, 144, 101, 99, 50, 56, // f.y.y]..ec28 + 136, 109, 235, 249, 134, 67, 189, 146, 60, 40, 136, 232, // .m...C..<(.. + 110, 6, 127, 38, 199, 194, 201, 33, 4, 42, 255, 21, // n..&...!.*.. + 194, 226, 9, 165, 115, 249, 108, 23, 216, 129, 42, 37, // ....s.l...*% + 141, 50, 177, 146, 201, 57, 244, 18, 177, 157, 245, 86, // .2...9.....V + 59, 231, 155, 196, 121, 196, 57, 245, 73, 4, 232, 74, // ;...y.9.I..J + 147, 247, 79, 65, 152, 23, 139, 105, 166, 138, 217, 131, // ..OA...i.... + 110, 155, 20, 187, 252, 0, 7, 180, 170, 182, 254, 139, // n........... + 23, 183, 183, 183, 147, 219, 87, 147, 188, 184, 122, 241, // ......W...z. + 242, 228, 228, 228, 5, 237, 19, 234, 226, 31, 31, 232, // ............ + 237, 100, 12, 69, 24, 141, 98, 23, 209, 201, 136, 100, // .d.E..b....d + 181, 191, 176, 53, 126, 99, 196, 69, 196, 107, 168, 95, // ...5~c.E.k._ + 104, 170, 158, 173, 196, 221, 65, 84, 147, 92, 91, 78, // h.....AT..[N + 102, 70, 231, 104, 233, 37, 116, 64, 121, 45, 83, 154, // fF.h.%t@y-S. + 38, 21, 147, 39, 188, 113, 56, 8, 241, 147, 125, 131, // &..'.q8...}. + 168, 37, 152, 227, 211, 154, 174, 114, 136, 163, 155, 215, // .%.....r.... + 217, 36, 116, 46, 107, 217, 103, 221, 122, 222, 239, 1, // .$t.k.g.z... + 47, 38, 25, 184, 69, 119, 10, 135, 173, 236, 112, 77, // /&..Ew....pM + 61, 216, 166, 144, 120, 188, 37, 85, 30, 141, 182, 36, // =...x.%U...$ + 179, 213, 198, 250, 39, 84, 106, 154, 174, 13, 72, 18, // ....'Tj...H. + 183, 60, 193, 36, 105, 171, 106, 219, 13, 134, 7, 142, // .<.$i.j..... + 8, 137, 104, 218, 79, 190, 30, 134, 145, 180, 155, 194, // ..h.O....... + 94, 222, 56, 107, 69, 242, 137, 88, 220, 94, 230, 112, // ^.8kE..X.^.p + 88, 206, 55, 38, 77, 67, 113, 168, 185, 242, 64, 252, // X.7&MCq...@. + 86, 44, 160, 159, 29, 130, 76, 228, 20, 118, 56, 111, // V,....L..v8o + 180, 13, 109, 51, 0, 2, 217, 211, 200, 135, 76, 2, // ..m3......L. + 87, 137, 214, 58, 186, 214, 177, 173, 210, 44, 28, 55, // W..:.....,.7 + 16, 14, 59, 59, 77, 108, 103, 223, 67, 29, 99, 185, // ..;;Mlg.C.c. + 70, 43, 172, 230, 86, 184, 100, 104, 27, 29, 109, 156, // F+..V.dh..m. + 30, 182, 150, 24, 118, 56, 147, 143, 50, 145, 27, 31, // ....v8..2... + 172, 112, 138, 109, 130, 39, 157, 92, 101, 63, 46, 127, // .p.m.'..e?.. + 215, 17, 71, 84, 59, 214, 246, 122, 86, 35, 152, 241, // ..GT;..zV#.. + 43, 147, 9, 163, 60, 16, 244, 55, 58, 84, 225, 141, // +...<..7:T.. + 234, 52, 184, 203, 62, 145, 50, 146, 161, 100, 85, 158, // .4..>.2..dU. + 194, 44, 122, 118, 215, 32, 92, 12, 84, 46, 108, 192, // .,zv. ..T.l. + 240, 216, 136, 4, 9, 195, 134, 147, 44, 92, 5, 101, // ........,..e + 176, 145, 171, 66, 151, 165, 53, 31, 131, 13, 64, 46, // ...B..5...@. + 176, 27, 139, 9, 49, 201, 218, 192, 74, 242, 79, 90, // ....1...J.OZ + 66, 30, 155, 193, 246, 81, 234, 146, 167, 176, 117, 139, // B....Q....u. + 207, 141, 100, 140, 182, 66, 56, 197, 254, 113, 162, 232, // ..d..B8..q.. + 163, 181, 211, 108, 113, 143, 93, 175, 204, 180, 199, 225, // ...lq.]..... + 93, 84, 23, 148, 216, 81, 193, 99, 59, 123, 96, 229, // ]T...Q.c;{`. + 127, 114, 8, 237, 45, 35, 223, 188, 76, 234, 108, 99, // .r..-#..L.lc + 156, 211, 182, 8, 4, 146, 83, 97, 38, 59, 234, 229, // ......Sa&;.. + 110, 6, 132, 54, 174, 72, 25, 36, 154, 163, 105, 62, // n..6.H.$..i> + 82, 10, 140, 197, 182, 77, 129, 218, 60, 90, 100, 18, // R....M.......| + 163, 48, 87, 7, 57, 241, 128, 239, 43, 140, 99, 193, // .0W.9...+.c. + 151, 222, 239, 160, 46, 129, 242, 6, 208, 175, 28, 29, // ............ + 130, 117, 53, 244, 214, 134, 47, 243, 0, 17, 89, 77, // .u5.../...YM + 121, 240, 180, 187, 132, 169, 30, 93, 194, 240, 232, 217, // y......].... + 60, 95, 248, 181, 153, 170, 154, 172, 146, 162, 52, 190, // <_........4. + 158, 187, 30, 174, 250, 103, 128, 185, 167, 73, 236, 200, // .....g...I.. + 28, 227, 106, 162, 213, 193, 64, 74, 252, 189, 241, 146, // ..j...@J.... + 3, 50, 124, 99, 46, 170, 248, 2, 82, 221, 243, 229, // .2|c....R... + 171, 26, 226, 115, 54, 28, 215, 227, 49, 221, 215, 106, // ...s6...1..j + 9, 231, 178, 196, 225, 86, 248, 79, 92, 110, 57, 163, // .....V.O.n9. + 227, 101, 98, 47, 17, 204, 220, 36, 241, 1, 176, 69, // .eb/...$...E + 47, 171, 105, 159, 53, 15, 92, 87, 216, 10, 119, 129, // /.i.5..W..w. + 133, 240, 150, 242, 51, 4, 37, 143, 129, 170, 158, 31, // ....3.%..... + 239, 48, 238, 13, 228, 209, 136, 72, 245, 151, 210, 93, // .0.....H...] + 234, 26, 43, 194, 202, 195, 37, 114, 26, 217, 115, 66, // ..+...%r..sB + 8, 96, 177, 213, 203, 131, 177, 129, 187, 91, 156, 186, // .`.......[.. + 71, 5, 199, 84, 102, 122, 188, 185, 191, 106, 76, 180, // G..Tfz...jL. + 229, 252, 92, 208, 187, 17, 150, 48, 103, 252, 50, 129, // .......0g.2. + 185, 75, 215, 157, 36, 240, 237, 237, 116, 123, 197, 29, // .K..$...t{.. + 76, 28, 141, 57, 186, 154, 56, 246, 244, 51, 31, 176, // L..9..8..3.. + 63, 112, 65, 77, 18, 80, 102, 196, 88, 253, 128, 123, // ?pAM.Pf.X..{ + 237, 181, 51, 105, 193, 52, 227, 88, 102, 202, 158, 88, // ..3i.4.Xf..X + 192, 229, 136, 46, 80, 233, 164, 97, 227, 64, 237, 213, // ....P..a.@.. + 131, 108, 143, 139, 82, 171, 99, 161, 241, 121, 81, 228, // .l..R.c..yQ. + 5, 59, 195, 37, 162, 12, 106, 245, 158, 134, 195, 102, // .;.%..j....f + 133, 204, 205, 253, 131, 179, 91, 193, 65, 128, 118, 70, // ......[.A.vF + 54, 136, 209, 61, 106, 37, 202, 181, 99, 243, 254, 117, // 6..=j%..c..u + 248, 121, 107, 133, 177, 95, 173, 178, 125, 181, 46, 242, // .yk.._..}... + 91, 4, 155, 123, 104, 232, 9, 60, 179, 46, 135, 227, // [..{h..<.... + 22, 169, 14, 137, 100, 238, 229, 3, 27, 9, 177, 76, // ....d......L + 112, 26, 197, 149, 72, 121, 89, 80, 104, 236, 204, 181, // p...HyYPh... + 250, 174, 96, 146, 36, 29, 196, 209, 235, 39, 142, 147, // ..`.$....'.. + 149, 54, 65, 29, 226, 200, 78, 64, 65, 20, 116, 150, // .6A...N@A.t. + 198, 251, 183, 215, 240, 237, 220, 20, 166, 103, 109, 205, // .........gm. + 6, 184, 153, 144, 27, 143, 154, 112, 136, 29, 236, 15, // .......p.... + 220, 142, 244, 83, 218, 96, 144, 217, 162, 166, 236, 145, // ...S.`...... + 126, 136, 88, 63, 133, 216, 38, 175, 214, 230, 54, 59, // ~.X?..&...6; + 63, 102, 46, 33, 173, 155, 164, 212, 51, 251, 237, 13, // ?f.!....3... + 174, 214, 58, 155, 44, 161, 1, 158, 235, 195, 193, 159, // ..:.,....... + 167, 55, 26, 113, 172, 15, 150, 124, 76, 54, 58, 175, // .7.q...|L6:. + 43, 105, 110, 219, 79, 96, 144, 79, 88, 243, 222, 202, // +in.O`.OX... + 75, 249, 139, 124, 143, 150, 239, 104, 214, 31, 77, 206, // K..|...h..M. + 80, 254, 108, 2, 114, 249, 71, 27, 181, 201, 175, 141, // P.l.r.G..... + 44, 203, 79, 84, 123, 162, 118, 15, 138, 126, 239, 34, // ,.OT{.v..~." + 173, 181, 177, 251, 107, 239, 82, 106, 249, 30, 14, 153, // ....k.Rj.... + 32, 244, 60, 89, 165, 46, 209, 115, 1, 251, 196, 95, // ..!.....m. + 15, 231, 22, 225, 143, 241, 161, 219, 51, 136, 146, 154, // ........3... + 237, 176, 146, 195, 16, 134, 160, 231, 74, 18, 93, 88, // ........J.]X + 167, 169, 242, 88, 109, 146, 160, 4, 68, 65, 93, 127, // ...Xm...DA]. + 14, 199, 25, 230, 26, 220, 73, 56, 226, 67, 89, 208, // ......I8.CY. + 79, 173, 232, 72, 74, 15, 160, 233, 246, 144, 159, 193, // O..HJ....... + 0, 95, 174, 242, 238, 237, 197, 191, 126, 43, 255, 243, // ._......~+.. + 183, 12, 63, 141, 43, 124, 242, 226, 138, 31, 160, 136, // ..?.+|...... + 89, 109, 54, 141, 224, 0, 81, 22, 229, 226, 29, 138, // Ym6...Q..... + 92, 204, 60, 219, 249, 138, 59, 177, 130, 151, 194, 127, // ..<...;..... + 105, 32, 134, 147, 201, 132, 82, 121, 57, 84, 196, 225, // i ....Ry9T.. + 248, 12, 96, 39, 45, 4, 122, 6, 109, 215, 231, 242, // ..`'-.z.m... + 68, 194, 71, 192, 12, 213, 151, 234, 115, 122, 159, 155, // D.G.....sz.. + 55, 205, 0, 166, 145, 88, 95, 145, 163, 99, 1, 43, // 7....X_..c.+ + 0, 230, 28, 47, 169, 47, 56, 78, 234, 58, 128, 220, // ..././8N.:.. + 117, 8, 166, 196, 158, 159, 78, 37, 175, 117, 247, 78, // u.....N%.u.N + 138, 222, 54, 210, 97, 97, 150, 144, 66, 33, 83, 47, // ..6.aa..B!S/ + 17, 162, 21, 241, 8, 3, 162, 215, 122, 158, 44, 220, // ........z.,. + 152, 8, 99, 16, 242, 163, 101, 14, 167, 135, 7, 206, // ..c...e..... + 134, 175, 249, 185, 199, 204, 35, 4, 160, 116, 13, 215, // ......#..t.. + 88, 189, 18, 126, 62, 86, 25, 75, 52, 64, 158, 63, // X..~>V.K4@.? + 183, 219, 31, 126, 105, 129, 29, 131, 0, 167, 178, 113, // ...~i......q + 78, 185, 214, 98, 150, 81, 38, 120, 70, 44, 51, 163, // N..b.Q&xF,3. + 63, 29, 126, 106, 238, 65, 134, 159, 154, 97, 5, 26, // ?.~j.A...a.. + 91, 20, 52, 31, 208, 128, 74, 244, 216, 79, 181, 136, // [.4...J..O.. + 63, 135, 205, 205, 45, 242, 225, 11, 110, 38, 167, 248, // ?...-...n&.. + 245, 231, 192, 195, 99, 205, 250, 199, 244, 62, 133, 145, // ....c....>.. + 56, 62, 214, 138, 114, 190, 132, 180, 150, 174, 98, 232, // 8>..r.....b. + 249, 18, 212, 172, 168, 3, 28, 27, 62, 27, 218, 69, // ........>..E + 253, 86, 181, 165, 172, 45, 21, 7, 171, 123, 105, 232, // .V...-...{i. + 208, 206, 49, 28, 180, 164, 192, 74, 63, 147, 118, 22, // ..1....J?.v. + 167, 67, 76, 194, 61, 167, 2, 48, 166, 251, 191, 15, // .CL.=..0.... + 56, 74, 132, 251, 175, 17, 167, 179, 204, 39, 189, 220, // 8J.......'.. + 155, 168, 49, 20, 83, 125, 183, 205, 139, 234, 62, 124, // ..1.S}....>| + 22, 150, 207, 214, 208, 60, 254, 86, 155, 84, 254, 64, // .....<.V.T.@ + 37, 19, 157, 202, 152, 202, 109, 82, 72, 126, 67, 85, // %.....mRH~CU + 115, 79, 99, 51, 74, 242, 91, 106, 130, 91, 201, 81, // sOc3J.[j.[.Q + 142, 252, 211, 214, 222, 235, 184, 142, 48, 254, 111, 182, // ........0.o. + 126, 14, 239, 36, 170, 228, 247, 182, 250, 54, 220, 225, // ~..$.....6.. + 252, 182, 141, 127, 111, 199, 172, 228, 63, 108, 249, 187, // ....o...?l.. + 205, 86, 23, 56, 84, 110, 244, 69, 152, 197, 169, 150, // .V.8Tn.E.... + 191, 218, 142, 31, 244, 38, 151, 255, 180, 149, 179, 48, // .....&.....0 + 77, 151, 97, 116, 45, 181, 118, 45, 118, 85, 153, 107, // M.at-.v-vU.k + 232, 188, 93, 25, 184, 54, 206, 156, 124, 141, 179, 51, // ..]..6..|..3 + 14, 139, 221, 126, 250, 31, 255, 11, 22, 19, 178, 116, // ...~.......t + 138, 51, 0, 0, 0 // .3.. }; static const unsigned char v4[] = { - 42, 32, 123, 32, 98, 111, 120, 45, 115, 105, 122, 105, // * { box-sizi - 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, // ng: border-b - 111, 120, 59, 32, 125, 10, 104, 116, 109, 108, 44, 32, // ox; }.html, - 98, 111, 100, 121, 32, 123, 32, 109, 97, 114, 103, 105, // body { margi - 110, 58, 32, 48, 59, 32, 112, 97, 100, 100, 105, 110, // n: 0; paddin - 103, 58, 32, 48, 59, 32, 104, 101, 105, 103, 104, 116, // g: 0; height - 58, 32, 49, 48, 48, 37, 59, 32, 102, 111, 110, 116, // : 100%; font - 58, 32, 49, 54, 112, 120, 32, 115, 97, 110, 115, 45, // : 16px sans- - 115, 101, 114, 105, 102, 59, 32, 125, 10, 115, 101, 108, // serif; }.sel - 101, 99, 116, 44, 32, 105, 110, 112, 117, 116, 44, 32, // ect, input, - 108, 97, 98, 101, 108, 58, 58, 98, 101, 102, 111, 114, // label::befor - 101, 44, 32, 116, 101, 120, 116, 97, 114, 101, 97, 32, // e, textarea - 123, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 110, // { outline: n - 111, 110, 101, 59, 32, 98, 111, 120, 45, 115, 104, 97, // one; box-sha - 100, 111, 119, 58, 110, 111, 110, 101, 32, 33, 105, 109, // dow:none !im - 112, 111, 114, 116, 97, 110, 116, 59, 32, 98, 111, 114, // portant; bor - 100, 101, 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, // der: 1px sol - 105, 100, 32, 35, 99, 99, 99, 32, 33, 105, 109, 112, // id #ccc !imp - 111, 114, 116, 97, 110, 116, 59, 32, 125, 10, 112, 114, // ortant; }.pr - 101, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 35, // e { color: # - 51, 55, 51, 59, 32, 102, 111, 110, 116, 45, 102, 97, // 373; font-fa - 109, 105, 108, 121, 58, 32, 109, 111, 110, 111, 115, 112, // mily: monosp - 97, 99, 101, 59, 32, 102, 111, 110, 116, 45, 119, 101, // ace; font-we - 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 101, 114, // ight: bolder - 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, // ; font-size: - 32, 115, 109, 97, 108, 108, 101, 114, 59, 32, 98, 97, // smaller; ba - 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 35, 100, // ckground: #d - 100, 100, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, // dd; padding: - 32, 49, 101, 109, 59, 32, 98, 111, 114, 100, 101, 114, // 1em; border - 45, 114, 97, 100, 105, 117, 115, 58, 32, 48, 46, 50, // -radius: 0.2 - 101, 109, 59, 32, 125, 10, 116, 101, 120, 116, 97, 114, // em; }.textar - 101, 97, 44, 32, 105, 110, 112, 117, 116, 32, 123, 32, // ea, input { - 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, // border: 1px - 115, 111, 108, 105, 100, 32, 35, 99, 99, 99, 59, 32, // solid #ccc; - 112, 97, 100, 100, 105, 110, 103, 58, 32, 48, 46, 51, // padding: 0.3 - 101, 109, 32, 48, 46, 53, 101, 109, 59, 125, 10, 116, // em 0.5em;}.t - 101, 120, 116, 97, 114, 101, 97, 44, 32, 105, 110, 112, // extarea, inp - 117, 116, 44, 32, 46, 97, 100, 100, 111, 110, 44, 32, // ut, .addon, - 46, 108, 97, 98, 101, 108, 32, 123, 32, 102, 111, 110, // .label { fon - 116, 45, 115, 105, 122, 101, 58, 32, 49, 52, 112, 120, // t-size: 14px - 59, 32, 125, 10, 97, 44, 32, 97, 58, 118, 105, 115, // ; }.a, a:vis - 105, 116, 101, 100, 44, 32, 97, 58, 97, 99, 116, 105, // ited, a:acti - 118, 101, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, // ve { color: - 35, 53, 53, 102, 59, 32, 125, 10, 98, 111, 100, 121, // #55f; }.body - 32, 123, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, // {background - 58, 32, 35, 53, 53, 53, 59, 32, 125, 10, 46, 97, // : #555; }..a - 100, 100, 111, 110, 32, 123, 32, 99, 111, 108, 111, 114, // ddon { color - 58, 32, 35, 57, 57, 57, 59, 32, 109, 105, 110, 45, // : #999; min- - 119, 105, 100, 116, 104, 58, 32, 55, 46, 53, 101, 109, // width: 7.5em - 59, 32, 32, 125, 10, 46, 108, 97, 98, 101, 108, 32, // ; }..label - 123, 32, 99, 111, 108, 111, 114, 58, 32, 35, 57, 57, // { color: #99 - 57, 59, 32, 125, 10, 46, 98, 116, 110, 32, 123, 10, // 9; }..btn {. - 32, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, // background - 58, 32, 35, 99, 99, 99, 59, 32, 98, 111, 114, 100, // : #ccc; bord - 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 48, // er-radius: 0 - 46, 51, 101, 109, 59, 32, 98, 111, 114, 100, 101, 114, // .3em; border - 58, 32, 48, 59, 32, 99, 111, 108, 111, 114, 58, 32, // : 0; color: - 35, 102, 102, 102, 59, 32, 99, 117, 114, 115, 111, 114, // #fff; cursor - 58, 32, 112, 111, 105, 110, 116, 101, 114, 59, 10, 32, // : pointer;. - 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, // display: in - 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, // line-block; - 112, 97, 100, 100, 105, 110, 103, 58, 32, 48, 46, 54, // padding: 0.6 - 101, 109, 32, 50, 101, 109, 59, 32, 102, 111, 110, 116, // em 2em; font - 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, // -weight: bol - 100, 101, 114, 59, 10, 125, 10, 46, 98, 116, 110, 91, // der;.}..btn[ - 100, 105, 115, 97, 98, 108, 101, 100, 93, 32, 123, 32, // disabled] { - 111, 112, 97, 99, 105, 116, 121, 58, 32, 48, 46, 53, // opacity: 0.5 - 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 97, 117, // ; cursor: au - 116, 111, 59, 125, 10, 46, 115, 109, 111, 111, 116, 104, // to;}..smooth - 32, 123, 32, 116, 114, 97, 110, 115, 105, 116, 105, 111, // { transitio - 110, 58, 32, 97, 108, 108, 32, 46, 50, 115, 59, 32, // n: all .2s; - 125, 10, 46, 99, 111, 110, 116, 97, 105, 110, 101, 114, // }..container - 32, 123, 32, 109, 97, 114, 103, 105, 110, 58, 32, 50, // { margin: 2 - 101, 109, 32, 97, 117, 116, 111, 59, 32, 109, 97, 120, // em auto; max - 45, 119, 105, 100, 116, 104, 58, 32, 54, 50, 48, 112, // -width: 620p - 120, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, // x; backgroun - 100, 58, 32, 119, 104, 105, 116, 101, 59, 32, 112, 97, // d: white; pa - 100, 100, 105, 110, 103, 58, 32, 49, 101, 109, 59, 32, // dding: 1em; - 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, // border-radiu - 115, 58, 32, 48, 46, 53, 101, 109, 59, 32, 125, 10, // s: 0.5em; }. - 46, 100, 45, 102, 108, 101, 120, 32, 123, 32, 100, 105, // .d-flex { di - 115, 112, 108, 97, 121, 58, 32, 102, 108, 101, 120, 59, // splay: flex; - 32, 97, 108, 105, 103, 110, 45, 105, 116, 101, 109, 115, // align-items - 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, 125, 10, // : center; }. - 46, 100, 45, 110, 111, 110, 101, 32, 123, 32, 100, 105, // .d-none { di - 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 59, // splay: none; - 32, 125, 10, 46, 98, 111, 114, 100, 101, 114, 32, 123, // }..border { - 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, // border: 1px - 32, 115, 111, 108, 105, 100, 32, 35, 100, 100, 100, 59, // solid #ddd; - 32, 125, 10, 46, 114, 111, 117, 110, 100, 101, 100, 32, // }..rounded - 123, 32, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, // { border-rad - 105, 117, 115, 58, 32, 48, 46, 53, 101, 109, 59, 32, // ius: 0.5em; - 125, 10, 46, 110, 111, 119, 114, 97, 112, 32, 123, 32, // }..nowrap { - 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, // white-space: - 32, 110, 111, 119, 114, 97, 112, 59, 32, 125, 10, 46, // nowrap; }.. - 109, 115, 103, 32, 123, 32, 98, 97, 99, 107, 103, 114, // msg { backgr - 111, 117, 110, 100, 58, 32, 35, 100, 101, 102, 59, 32, // ound: #def; - 98, 111, 114, 100, 101, 114, 45, 108, 101, 102, 116, 58, // border-left: - 32, 53, 112, 120, 32, 115, 111, 108, 105, 100, 32, 35, // 5px solid # - 53, 57, 100, 59, 32, 112, 97, 100, 100, 105, 110, 103, // 59d; padding - 58, 32, 48, 46, 53, 101, 109, 59, 32, 102, 111, 110, // : 0.5em; fon - 116, 45, 115, 105, 122, 101, 58, 32, 57, 48, 37, 59, // t-size: 90%; - 32, 109, 97, 114, 103, 105, 110, 58, 32, 49, 101, 109, // margin: 1em - 32, 48, 59, 32, 99, 111, 108, 111, 114, 58, 32, 35, // 0; color: # - 55, 55, 55, 59, 32, 125, 10, 46, 105, 110, 112, 117, // 777; }..inpu - 116, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, // t { backgrou - 110, 100, 58, 32, 35, 102, 101, 97, 59, 32, 112, 97, // nd: #fea; pa - 100, 100, 105, 110, 103, 58, 32, 48, 46, 50, 101, 109, // dding: 0.2em - 32, 49, 101, 109, 59, 32, 98, 111, 114, 100, 101, 114, // 1em; border - 45, 114, 97, 100, 105, 117, 115, 58, 32, 48, 46, 52, // -radius: 0.4 - 101, 109, 59, 32, 125, 10, 46, 111, 117, 116, 112, 117, // em; }..outpu - 116, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, // t { backgrou - 110, 100, 58, 32, 35, 97, 101, 102, 59, 32, 112, 97, // nd: #aef; pa - 100, 100, 105, 110, 103, 58, 32, 48, 46, 50, 101, 109, // dding: 0.2em - 32, 49, 101, 109, 59, 32, 98, 111, 114, 100, 101, 114, // 1em; border - 45, 114, 97, 100, 105, 117, 115, 58, 32, 48, 46, 52, // -radius: 0.4 - 101, 109, 59, 32, 125, 10, 46, 112, 114, 45, 49, 32, // em; }..pr-1 - 123, 32, 112, 97, 100, 100, 105, 110, 103, 45, 114, 105, // { padding-ri - 103, 104, 116, 58, 32, 48, 46, 53, 101, 109, 59, 32, // ght: 0.5em; - 125, 10, 46, 109, 121, 45, 49, 32, 123, 32, 109, 97, // }..my-1 { ma - 114, 103, 105, 110, 45, 116, 111, 112, 58, 32, 48, 46, // rgin-top: 0. - 51, 101, 109, 59, 32, 109, 97, 114, 103, 105, 110, 45, // 3em; margin- - 98, 111, 116, 116, 111, 109, 58, 32, 48, 46, 51, 101, // bottom: 0.3e - 109, 59, 125, 10, 46, 109, 108, 45, 49, 32, 123, 32, // m;}..ml-1 { - 109, 97, 114, 103, 105, 110, 45, 108, 101, 102, 116, 58, // margin-left: - 32, 48, 46, 53, 101, 109, 59, 32, 125, 10, 10, 47, // 0.5em; }../ - 42, 32, 71, 114, 105, 100, 32, 42, 47, 10, 46, 114, // * Grid */..r - 111, 119, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, // ow { display - 58, 32, 102, 108, 101, 120, 59, 32, 102, 108, 101, 120, // : flex; flex - 45, 119, 114, 97, 112, 58, 32, 119, 114, 97, 112, 59, // -wrap: wrap; - 32, 125, 10, 46, 99, 111, 108, 32, 123, 32, 109, 97, // }..col { ma - 114, 103, 105, 110, 58, 32, 48, 59, 32, 112, 97, 100, // rgin: 0; pad - 100, 105, 110, 103, 58, 32, 48, 59, 32, 111, 118, 101, // ding: 0; ove - 114, 102, 108, 111, 119, 58, 32, 97, 117, 116, 111, 59, // rflow: auto; - 32, 125, 10, 46, 99, 111, 108, 45, 49, 50, 32, 123, // }..col-12 { - 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 48, 37, // width: 100% - 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, 49, 32, // ; }..col-11 - 123, 32, 119, 105, 100, 116, 104, 58, 32, 57, 49, 46, // { width: 91. - 54, 54, 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, // 66%; }..col- - 49, 48, 32, 123, 32, 119, 105, 100, 116, 104, 58, 32, // 10 { width: - 56, 51, 46, 51, 51, 37, 59, 32, 125, 10, 46, 99, // 83.33%; }..c - 111, 108, 45, 57, 32, 123, 32, 119, 105, 100, 116, 104, // ol-9 { width - 58, 32, 55, 53, 37, 59, 32, 125, 10, 46, 99, 111, // : 75%; }..co - 108, 45, 56, 32, 123, 32, 119, 105, 100, 116, 104, 58, // l-8 { width: - 32, 54, 54, 46, 54, 54, 37, 59, 32, 125, 10, 46, // 66.66%; }.. - 99, 111, 108, 45, 55, 32, 123, 32, 119, 105, 100, 116, // col-7 { widt - 104, 58, 32, 53, 56, 46, 51, 51, 37, 59, 32, 125, // h: 58.33%; } - 10, 46, 99, 111, 108, 45, 54, 32, 123, 32, 119, 105, // ..col-6 { wi - 100, 116, 104, 58, 32, 53, 48, 37, 59, 32, 125, 10, // dth: 50%; }. - 46, 99, 111, 108, 45, 53, 32, 123, 32, 119, 105, 100, // .col-5 { wid - 116, 104, 58, 32, 52, 49, 46, 54, 54, 37, 59, 32, // th: 41.66%; - 125, 10, 46, 99, 111, 108, 45, 52, 32, 123, 32, 119, // }..col-4 { w - 105, 100, 116, 104, 58, 32, 51, 51, 46, 51, 51, 37, // idth: 33.33% - 59, 32, 125, 10, 46, 99, 111, 108, 45, 51, 32, 123, // ; }..col-3 { - 32, 119, 105, 100, 116, 104, 58, 32, 50, 53, 37, 59, // width: 25%; - 32, 125, 10, 46, 99, 111, 108, 45, 50, 32, 123, 32, // }..col-2 { - 119, 105, 100, 116, 104, 58, 32, 49, 54, 46, 54, 54, // width: 16.66 - 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, 32, // %; }..col-1 - 123, 32, 119, 105, 100, 116, 104, 58, 32, 56, 46, 51, // { width: 8.3 - 51, 37, 59, 32, 125, 10, 64, 109, 101, 100, 105, 97, // 3%; }.@media - 32, 40, 109, 105, 110, 45, 119, 105, 100, 116, 104, 58, // (min-width: - 32, 49, 51, 49, 48, 112, 120, 41, 32, 123, 32, 46, // 1310px) { . - 99, 111, 110, 116, 97, 105, 110, 101, 114, 32, 123, 32, // container { - 109, 97, 114, 103, 105, 110, 58, 32, 97, 117, 116, 111, // margin: auto - 59, 32, 119, 105, 100, 116, 104, 58, 32, 49, 50, 55, // ; width: 127 - 48, 112, 120, 59, 32, 125, 32, 125, 10, 64, 109, 101, // 0px; } }.@me - 100, 105, 97, 32, 40, 109, 97, 120, 45, 119, 105, 100, // dia (max-wid - 116, 104, 58, 32, 57, 50, 48, 112, 120, 41, 32, 123, // th: 920px) { - 32, 46, 114, 111, 119, 32, 46, 99, 111, 108, 32, 123, // .row .col { - 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 48, 37, // width: 100% - 59, 32, 125, 32, 125, 10, 0 // ; } }. + 31, 139, 8, 8, 29, 105, 247, 99, 0, 3, 115, 116, // .....i.c..st + 121, 108, 101, 46, 99, 115, 115, 0, 149, 85, 193, 142, // yle.css..U.. + 155, 48, 16, 189, 231, 43, 92, 173, 42, 181, 171, 192, // .0...+..*... + 134, 16, 96, 33, 151, 222, 250, 17, 85, 15, 6, 155, // ..`!....U... + 196, 90, 99, 35, 227, 108, 146, 86, 249, 247, 142, 109, // .Zc#.l.V...m + 192, 70, 75, 85, 245, 146, 144, 153, 225, 205, 155, 247, // .FKU........ + 198, 206, 51, 250, 141, 106, 121, 139, 6, 246, 139, 137, // ..3..jy..... + 83, 5, 207, 138, 80, 21, 65, 232, 136, 30, 155, 179, // S...P.A..... + 238, 248, 22, 98, 228, 14, 101, 29, 86, 39, 38, 42, // ...b..e.V'&* + 180, 59, 162, 30, 19, 98, 203, 225, 249, 76, 217, 233, // .;...b...L.. + 172, 43, 148, 236, 118, 159, 143, 168, 149, 194, 60, 231, // .+..v.....<. + 253, 13, 13, 88, 12, 209, 64, 21, 107, 13, 212, 64, // ...X..@.k..@ + 57, 109, 244, 22, 49, 209, 95, 224, 139, 227, 154, 242, // 9m..1._..... + 170, 170, 105, 43, 21, 221, 34, 77, 111, 26, 43, 138, // ..i+.."Mo.+. + 161, 141, 188, 104, 206, 4, 173, 144, 144, 130, 30, 29, // ...h........ + 185, 51, 38, 242, 90, 153, 0, 250, 196, 186, 94, 42, // .3&.Z.....^* + 141, 133, 62, 142, 100, 161, 157, 233, 38, 57, 35, 232, // ..>.d...&9#. + 169, 105, 154, 69, 201, 99, 211, 43, 10, 168, 141, 228, // .i.E.c.+.... + 18, 42, 159, 210, 34, 117, 36, 163, 22, 119, 140, 223, // .*.."u$..w.. + 43, 212, 73, 33, 135, 30, 55, 116, 140, 95, 199, 121, // +.I!..7t._.y + 106, 201, 1, 124, 12, 130, 60, 192, 104, 232, 48, 231, // j..|..<.h.0. + 38, 86, 227, 230, 237, 164, 228, 69, 16, 128, 36, 132, // &V.....E..$. + 4, 138, 36, 180, 155, 136, 69, 10, 19, 118, 25, 64, // ..$...E..v.@ + 165, 120, 111, 162, 143, 205, 52, 230, 40, 131, 213, 126, // .xo...4.(..~ + 109, 132, 80, 225, 56, 165, 29, 124, 102, 128, 240, 1, // m.P.8..|f... + 96, 139, 98, 168, 147, 2, 190, 173, 160, 0, 24, 208, // `.b......... + 77, 14, 189, 117, 17, 170, 113, 245, 206, 6, 166, 41, // M..u..q....) + 49, 143, 184, 209, 236, 61, 20, 37, 203, 172, 69, 206, // 1....=.%..E. + 231, 197, 108, 89, 150, 153, 140, 235, 18, 188, 81, 150, // ..lY......Q. + 229, 17, 117, 76, 68, 87, 70, 244, 185, 66, 133, 229, // ..uLDWF..B.. + 135, 76, 233, 68, 100, 81, 10, 241, 90, 3, 192, 6, // .L.DdQ..Z... + 45, 181, 179, 179, 126, 80, 43, 245, 26, 218, 21, 155, // -...~P+..... + 160, 218, 22, 120, 54, 23, 53, 152, 95, 189, 100, 66, // ...x6.5._.dB + 131, 25, 0, 73, 216, 208, 115, 12, 94, 50, 97, 86, // ...I..s.^2aV + 39, 170, 185, 108, 222, 22, 26, 230, 160, 161, 245, 96, // '..l.......` + 205, 226, 141, 99, 247, 3, 96, 112, 205, 41, 249, 105, // ...c..`p.).i + 182, 16, 54, 130, 233, 187, 121, 55, 243, 61, 241, 69, // ..6...y7.=.E + 75, 112, 33, 30, 58, 41, 245, 25, 202, 180, 130, 37, // Kp!.:).....% + 103, 154, 73, 56, 23, 176, 27, 40, 222, 15, 118, 216, // g.I8...(..v. + 6, 218, 96, 160, 162, 130, 115, 3, 253, 29, 0, 68, // ..`...s....D + 110, 147, 112, 249, 126, 103, 76, 10, 69, 185, 158, 193, // n.p.~gL.E... + 168, 127, 110, 84, 230, 54, 42, 38, 81, 203, 233, 13, // ..nT.6*&Q... + 218, 204, 34, 152, 223, 71, 96, 195, 78, 34, 2, 164, // .."..G`.N".. + 14, 202, 27, 106, 165, 114, 245, 246, 24, 5, 245, 238, // ...j.r...... + 156, 25, 13, 108, 143, 245, 165, 180, 75, 14, 53, 150, // ...l....K.5. + 35, 37, 115, 209, 10, 35, 33, 175, 10, 247, 80, 97, // #%s..#!...Pa + 7, 137, 236, 217, 50, 93, 76, 212, 22, 116, 195, 201, // ....2]L..t.. + 188, 191, 56, 67, 180, 157, 103, 228, 180, 5, 111, 50, // ..8C..g...o2 + 223, 59, 43, 201, 194, 204, 108, 54, 210, 237, 121, 105, // .;+...l6..yi + 46, 158, 73, 229, 196, 156, 22, 191, 50, 69, 81, 216, // ..I.....2EQ. + 158, 243, 121, 11, 187, 182, 20, 47, 128, 141, 67, 235, // ..y..../..C. + 106, 31, 198, 217, 224, 114, 90, 193, 193, 134, 253, 127, // j....rZ..... + 225, 244, 42, 74, 0, 101, 124, 39, 82, 110, 31, 189, // ..*J.e|'Rn.. + 134, 221, 221, 230, 221, 80, 145, 150, 253, 124, 44, 198, // .....P...|,. + 80, 45, 181, 150, 221, 20, 53, 111, 240, 240, 13, 167, // P-....5o.... + 225, 140, 183, 121, 121, 70, 223, 21, 104, 249, 252, 98, // ...yyF..h..b + 44, 188, 126, 92, 23, 243, 25, 25, 135, 96, 255, 38, // ,.~......`.& + 159, 64, 195, 191, 95, 251, 242, 157, 170, 150, 195, 173, // .@.._....... + 60, 238, 180, 171, 143, 146, 189, 49, 222, 237, 182, 251, // <......1.... + 71, 152, 18, 137, 79, 148, 73, 156, 231, 65, 106, 231, // G...O.I..Aj. + 83, 175, 105, 156, 166, 62, 85, 250, 76, 145, 249, 240, // S.i..>U.L... + 171, 15, 231, 249, 2, 171, 240, 153, 236, 117, 1, 149, // .........u.. + 7, 153, 128, 87, 230, 195, 135, 37, 173, 131, 207, 164, // ...W...%.... + 75, 86, 169, 207, 236, 3, 86, 225, 232, 75, 86, 193, // KV....V..KV. + 236, 51, 169, 111, 29, 37, 12, 163, 47, 193, 45, 154, // .3.o.%../.-. + 164, 9, 220, 6, 95, 161, 120, 245, 2, 113, 66, 79, // ...._.x..qBO + 181, 251, 194, 222, 28, 143, 16, 202, 223, 43, 229, 126, // .........+.~ + 66, 50, 118, 143, 86, 46, 125, 129, 23, 255, 0, 132, // B2v.V.}..... + 122, 103, 55, 254, 7, 0, 0, 0 // zg7.... }; static const struct packed_file { @@ -1812,10 +718,10 @@ static const struct packed_file { size_t size; time_t mtime; } packed_files[] = { - {"/web_root/index.html", v1, sizeof(v1), 1659483223}, - {"/web_root/main.js", v2, sizeof(v2), 1659483223}, - {"/web_root/preact.min.js", v3, sizeof(v3), 1659483223}, - {"/web_root/style.css", v4, sizeof(v4), 1659483223}, + {"/web_root/index.html.gz", v1, sizeof(v1), 1677158685}, + {"/web_root/main.js.gz", v2, sizeof(v2), 1677158685}, + {"/web_root/preact.min.js.gz", v3, sizeof(v3), 1677158685}, + {"/web_root/style.css.gz", v4, sizeof(v4), 1677158685}, {NULL, NULL, 0, 0} }; diff --git a/examples/udp-ssdp-search/Makefile b/examples/udp-ssdp-search/Makefile index e4aed5d8..a990a02a 100644 --- a/examples/udp-ssdp-search/Makefile +++ b/examples/udp-ssdp-search/Makefile @@ -1,10 +1,25 @@ -PROG ?= example +PROG ?= example # Program we are building +DELETE = rm -rf # Command to remove files +OUT ?= -o $(PROG) # Compiler argument for output file +SOURCES = main.c mongoose.c # Source code files +CFLAGS = -W -Wall -Wextra -g -I. # Build options -all: $(PROG) +# Mongoose build options. See https://mongoose.ws/documentation/#build-options +#CFLAGS_MONGOOSE += -DMG_ENABLE_LINES + +ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe + PROG ?= example.exe # Use .exe suffix for the binary + CC = gcc # Use MinGW gcc compiler + CFLAGS += -lws2_32 # Link against Winsock library + DELETE = cmd /C del /Q /F /S # Command prompt command to delete files + OUT ?= -o $(PROG) # Build output +endif + +all: $(PROG) # Default target. Build and run program $(RUN) ./$(PROG) $(ARGS) -$(PROG): main.c - $(CC) ../../mongoose.c -I../.. -W -Wall $(CFLAGS) -o $(PROG) main.c +$(PROG): $(SOURCES) # Build program from sources + $(CC) $(SOURCES) $(CFLAGS) $(CFLAGS_MONGOOSE) $(CFLAGS_EXTRA) $(OUT) -clean: - rm -rf $(PROG) *.o *.dSYM *.gcov *.gcno *.gcda *.obj *.exe *.ilk *.pdb +clean: # Cleanup. Delete built program and all build artifacts + $(DELETE) $(PROG) *.o *.obj *.exe *.dSYM diff --git a/examples/udp-ssdp-search/mongoose.c b/examples/udp-ssdp-search/mongoose.c new file mode 120000 index 00000000..8ef6e62d --- /dev/null +++ b/examples/udp-ssdp-search/mongoose.c @@ -0,0 +1 @@ +../../mongoose.c \ No newline at end of file diff --git a/examples/udp-ssdp-search/mongoose.h b/examples/udp-ssdp-search/mongoose.h new file mode 120000 index 00000000..488ef358 --- /dev/null +++ b/examples/udp-ssdp-search/mongoose.h @@ -0,0 +1 @@ +../../mongoose.h \ No newline at end of file diff --git a/examples/video-stream/Makefile b/examples/video-stream/Makefile index eaa5aa25..a990a02a 100644 --- a/examples/video-stream/Makefile +++ b/examples/video-stream/Makefile @@ -1,10 +1,25 @@ -PROG ?= example +PROG ?= example # Program we are building +DELETE = rm -rf # Command to remove files +OUT ?= -o $(PROG) # Compiler argument for output file +SOURCES = main.c mongoose.c # Source code files +CFLAGS = -W -Wall -Wextra -g -I. # Build options -all: $(PROG) - $(DEBUGGER) ./$(PROG) +# Mongoose build options. See https://mongoose.ws/documentation/#build-options +#CFLAGS_MONGOOSE += -DMG_ENABLE_LINES -$(PROG): - $(CC) ../../mongoose.c -I../.. $(CFLAGS) $(EXTRA) -o $(PROG) main.c +ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe + PROG ?= example.exe # Use .exe suffix for the binary + CC = gcc # Use MinGW gcc compiler + CFLAGS += -lws2_32 # Link against Winsock library + DELETE = cmd /C del /Q /F /S # Command prompt command to delete files + OUT ?= -o $(PROG) # Build output +endif -clean: - rm -rf $(PROG) *.o *.dSYM *.gcov *.gcno *.gcda *.obj *.exe *.ilk *.pdb log.txt +all: $(PROG) # Default target. Build and run program + $(RUN) ./$(PROG) $(ARGS) + +$(PROG): $(SOURCES) # Build program from sources + $(CC) $(SOURCES) $(CFLAGS) $(CFLAGS_MONGOOSE) $(CFLAGS_EXTRA) $(OUT) + +clean: # Cleanup. Delete built program and all build artifacts + $(DELETE) $(PROG) *.o *.obj *.exe *.dSYM diff --git a/examples/video-stream/main.c b/examples/video-stream/main.c index 87d94605..441386c9 100644 --- a/examples/video-stream/main.c +++ b/examples/video-stream/main.c @@ -22,6 +22,7 @@ static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) { mg_http_serve_dir(c, ev_data, &opts); } } + (void) fn_data; } // The image stream is simulated by sending MJPEG frames specified by the diff --git a/examples/video-stream/mongoose.c b/examples/video-stream/mongoose.c new file mode 120000 index 00000000..8ef6e62d --- /dev/null +++ b/examples/video-stream/mongoose.c @@ -0,0 +1 @@ +../../mongoose.c \ No newline at end of file diff --git a/examples/video-stream/mongoose.h b/examples/video-stream/mongoose.h new file mode 120000 index 00000000..488ef358 --- /dev/null +++ b/examples/video-stream/mongoose.h @@ -0,0 +1 @@ +../../mongoose.h \ No newline at end of file