From 64ca1ad787dd8de44d7e323e3dea299abc055608 Mon Sep 17 00:00:00 2001 From: cpq Date: Mon, 27 Nov 2023 02:50:46 +0000 Subject: [PATCH] Add modbus dashboard --- examples/modbus-dashboard/Makefile | 55 + examples/modbus-dashboard/README.md | 26 + examples/modbus-dashboard/certs | 1 + examples/modbus-dashboard/main.c | 32 + examples/modbus-dashboard/mongoose.c | 1 + examples/modbus-dashboard/mongoose.h | 1 + examples/modbus-dashboard/net.c | 295 +++ examples/modbus-dashboard/net.h | 23 + examples/modbus-dashboard/packed_fs.c | 2155 +++++++++++++++++ examples/modbus-dashboard/tailwind.config.js | 17 + examples/modbus-dashboard/web_root/bundle.js | 1 + .../modbus-dashboard/web_root/history.min.js | 1 + examples/modbus-dashboard/web_root/index.html | 15 + examples/modbus-dashboard/web_root/main.css | 1 + examples/modbus-dashboard/web_root/main.js | 365 +++ .../ch32v307-make-baremetal-builtin/Makefile | 11 +- .../ch32v307-make-baremetal-builtin/main.c | 4 +- .../mongoose_custom.h | 3 +- .../wch/ch32v307-make-baremetal-builtin/net.c | 1 + .../wch/ch32v307-make-baremetal-builtin/net.h | 1 + .../packed_fs.c | 1 + 21 files changed, 3003 insertions(+), 7 deletions(-) create mode 100644 examples/modbus-dashboard/Makefile create mode 100644 examples/modbus-dashboard/README.md create mode 120000 examples/modbus-dashboard/certs create mode 100644 examples/modbus-dashboard/main.c create mode 120000 examples/modbus-dashboard/mongoose.c create mode 120000 examples/modbus-dashboard/mongoose.h create mode 100644 examples/modbus-dashboard/net.c create mode 100644 examples/modbus-dashboard/net.h create mode 100644 examples/modbus-dashboard/packed_fs.c create mode 100644 examples/modbus-dashboard/tailwind.config.js create mode 100644 examples/modbus-dashboard/web_root/bundle.js create mode 100644 examples/modbus-dashboard/web_root/history.min.js create mode 100644 examples/modbus-dashboard/web_root/index.html create mode 100644 examples/modbus-dashboard/web_root/main.css create mode 100644 examples/modbus-dashboard/web_root/main.js create mode 120000 examples/wch/ch32v307-make-baremetal-builtin/net.c create mode 120000 examples/wch/ch32v307-make-baremetal-builtin/net.h create mode 120000 examples/wch/ch32v307-make-baremetal-builtin/packed_fs.c diff --git a/examples/modbus-dashboard/Makefile b/examples/modbus-dashboard/Makefile new file mode 100644 index 00000000..870d9b20 --- /dev/null +++ b/examples/modbus-dashboard/Makefile @@ -0,0 +1,55 @@ +PROG ?= ./example # Program we are building +PACK ?= ./pack # Packing executable +DELETE = rm -rf # Command to remove files +GZIP ?= gzip # For compressing files in web_root/ +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 + +# Mongoose build options. See https://mongoose.ws/documentation/#build-options +CFLAGS_MONGOOSE += -DMG_ENABLE_PACKED_FS=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 + PACK = pack.exe # Packing executable + 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 + GZIP = echo # No gzip on Windows +endif + +# Default target. Build and run program +all: $(PROG) + $(RUN) $(PROG) $(ARGS) + +# Build program from sources +$(PROG): $(SOURCES) + $(CC) $(SOURCES) $(CFLAGS) $(CFLAGS_MONGOOSE) $(CFLAGS_EXTRA) $(OUT) + +# Bundle JS libraries (preact, preact-router, ...) into a single file +web_root/bundle.js: + curl -s https://npm.reversehttp.com/preact,preact/hooks,htm/preact,preact-router -o $@ + +# Create optimised CSS. Prerequisite: npm -g i tailwindcss tailwindcss-font-inter +web_root/main.css: web_root/index.html $(wildcard web_root/*.js) + npx tailwindcss -o $@ --minify + +# Generate packed filesystem for serving Web UI +packed_fs.c: $(wildcard web_root/*) $(wildcard certs/*) Makefile web_root/main.css web_root/bundle.js + $(GZIP) web_root/* + $(CC) ../../test/pack.c -o $(PACK) + $(PACK) web_root/* certs/* > $@ + $(GZIP) -d web_root/* + +mbedtls: + git clone --depth 1 -b v2.28.2 https://github.com/mbed-tls/mbedtls $@ + +ifeq ($(TLS), mbedtls) +CFLAGS += -DMG_TLS=MG_TLS_MBED -Wno-conversion -Imbedtls/include +CFLAGS += -DMBEDTLS_CONFIG_FILE=\"mbedtls_config.h\" mbedtls/library/*.c +$(PROG): mbedtls +endif + +# Cleanup. Delete built program and all build artifacts +clean: + $(DELETE) $(PROG) $(PACK) *.o *.obj *.exe *.dSYM mbedtls diff --git a/examples/modbus-dashboard/README.md b/examples/modbus-dashboard/README.md new file mode 100644 index 00000000..8fadc616 --- /dev/null +++ b/examples/modbus-dashboard/README.md @@ -0,0 +1,26 @@ +# A complete device dashboard + +This example is a demonstration of how Mongoose Library could be integrated +into an embedded device and provide a complete device dashboard with the +following features: + +- Authentication: login-protected dashboard +- Multiple logins (with possibly different permissions) +- The Web UI can be fully embedded into the firmware binary, then not + needing a filesystem to serve it; so being resilient to FS problems +- All changes are propagated to all connected clients + +## Screenshots + +This is a login screen that prompts for user/password + +![](screenshots/login.webp) + +## Main dashboard + +The main dashboard page shows the interactive console + +![](screenshots/dashboard.webp) + + +See a detailed tutorial at https://mongoose.ws/tutorials/device-dashboard/ diff --git a/examples/modbus-dashboard/certs b/examples/modbus-dashboard/certs new file mode 120000 index 00000000..9a157230 --- /dev/null +++ b/examples/modbus-dashboard/certs @@ -0,0 +1 @@ +../device-dashboard/certs \ No newline at end of file diff --git a/examples/modbus-dashboard/main.c b/examples/modbus-dashboard/main.c new file mode 100644 index 00000000..68418f0d --- /dev/null +++ b/examples/modbus-dashboard/main.c @@ -0,0 +1,32 @@ +// Copyright (c) 2020-2023 Cesanta Software Limited +// All rights reserved + +#include "mongoose.h" +#include "net.h" + +static int s_sig_num; +static void signal_handler(int sig_num) { + signal(sig_num, signal_handler); + s_sig_num = sig_num; +} + +int main(void) { + struct mg_mgr mgr; + + signal(SIGPIPE, SIG_IGN); + signal(SIGINT, signal_handler); + signal(SIGTERM, signal_handler); + + mg_log_set(MG_LL_DEBUG); // Set debug log level + mg_mgr_init(&mgr); + + web_init(&mgr); + while (s_sig_num == 0) { + mg_mgr_poll(&mgr, 50); + } + + mg_mgr_free(&mgr); + MG_INFO(("Exiting on signal %d", s_sig_num)); + + return 0; +} diff --git a/examples/modbus-dashboard/mongoose.c b/examples/modbus-dashboard/mongoose.c new file mode 120000 index 00000000..8ef6e62d --- /dev/null +++ b/examples/modbus-dashboard/mongoose.c @@ -0,0 +1 @@ +../../mongoose.c \ No newline at end of file diff --git a/examples/modbus-dashboard/mongoose.h b/examples/modbus-dashboard/mongoose.h new file mode 120000 index 00000000..488ef358 --- /dev/null +++ b/examples/modbus-dashboard/mongoose.h @@ -0,0 +1 @@ +../../mongoose.h \ No newline at end of file diff --git a/examples/modbus-dashboard/net.c b/examples/modbus-dashboard/net.c new file mode 100644 index 00000000..964a888e --- /dev/null +++ b/examples/modbus-dashboard/net.c @@ -0,0 +1,295 @@ +// Copyright (c) 2023 Cesanta Software Limited +// All rights reserved + +#include "net.h" + +// Device settings +struct settings { + int log_level; + bool mqtt_enabled; + char *mqtt_server_url; + char *mqtt_topic_tx; + char *mqtt_topic_rx; +}; + +struct conndata { + uint64_t expiration_time; // Modbus request timeout + unsigned long id; // Connection ID waiting for the Modbus response +}; + +static struct settings s_settings = {3, false, NULL, NULL, NULL}; + +static const char *s_json_header = + "Content-Type: application/json\r\n" + "Cache-Control: no-cache\r\n"; +static uint64_t s_boot_timestamp = 0; // Updated by SNTP + +// This is for newlib and TLS (mbedTLS) +uint64_t mg_now(void) { + return mg_millis() + s_boot_timestamp; +} + +// SNTP connection event handler. When we get a response from an SNTP server, +// adjust s_boot_timestamp. We'll get a valid time from that point on +static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) { + uint64_t *expiration_time = (uint64_t *) c->data; + if (ev == MG_EV_OPEN) { + *expiration_time = mg_millis() + 3000; // Store expiration time in 3s + } else if (ev == MG_EV_SNTP_TIME) { + uint64_t t = *(uint64_t *) ev_data; + s_boot_timestamp = t - mg_millis(); + c->is_closing = 1; + } else if (ev == MG_EV_POLL) { + if (mg_millis() > *expiration_time) c->is_closing = 1; + } + (void) fn_data; +} + +// SNTP timer function. Sync up time +static void timer_sntp_fn(void *param) { + mg_sntp_connect(param, "udp://time.google.com:123", sfn, NULL); +} + +static void setfromjson(struct mg_str json, const char *jsonpath, char **dst) { + char *val = mg_json_get_str(json, jsonpath); + if (val != NULL) { + free(*dst); + *dst = val; + } +} + +static void handle_settings_set(struct mg_connection *c, struct mg_str body) { + struct settings settings; + memset(&settings, 0, sizeof(settings)); + mg_json_get_bool(body, "$.mqtt_enabled", &settings.mqtt_enabled); + settings.log_level = mg_json_get_long(body, "$.log_level", MG_LL_INFO); + setfromjson(body, "$.mqtt_server_url", &settings.mqtt_server_url); + setfromjson(body, "$.mqtt_topic_rx", &settings.mqtt_topic_rx); + setfromjson(body, "$.mqtt_topic_tx", &settings.mqtt_topic_tx); + + s_settings = settings; // TODO: save to the device flash + bool ok = true; + mg_http_reply(c, 200, s_json_header, + "{%m:%s,%m:%m}", // + MG_ESC("status"), ok ? "true" : "false", // + MG_ESC("message"), MG_ESC(ok ? "Success" : "Failed")); +} + +static void handle_settings_get(struct mg_connection *c) { + mg_http_reply(c, 200, s_json_header, + "{%m:%s,%m:%d,%m:%m,%m:%m,%m:%m}\n", // + MG_ESC("mqtt_enabled"), + s_settings.mqtt_enabled ? "true" : "false", // + MG_ESC("log_level"), s_settings.log_level, // + MG_ESC("mqtt_server_url"), MG_ESC(s_settings.mqtt_server_url), + MG_ESC("mqtt_topic_rx"), MG_ESC(s_settings.mqtt_topic_rx), + MG_ESC("mqtt_topic_tx"), MG_ESC(s_settings.mqtt_topic_tx)); +} + +// Modbus handler function +static void mfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) { + struct conndata *cd = (struct conndata *) c->data; + if (ev == MG_EV_READ) { + MG_INFO(("%lu RECEIVED %lu", c->id, c->recv.len)); + if (c->recv.len < 8) return; // Less than minimum length, buffer more + uint16_t len = mg_ntohs(*(uint16_t *) &c->recv.buf[4]); // PDU length + if (c->recv.len < len + 4U) return; // Partial frame, buffer more + // Notify parent connection + for (struct mg_connection *t = c->mgr->conns; t != NULL; t = t->next) { + if (t->id == cd->id) mg_call(t, MG_EV_USER, &c->recv); + } + c->is_closing = 1; + } else if (MG_EV_POLL) { + // MG_INFO(("%lu closing tmout %llu", c->id, cd->expiration_time)); + if (cd->expiration_time > 0 && cd->expiration_time < mg_millis()) { + c->is_closing = 1; + } + } + (void) ev_data, (void) fn_data; +} + +static void send8(struct mg_connection *c, uint8_t val) { + mg_send(c, &val, sizeof(val)); +} + +static void send16(struct mg_connection *c, uint16_t val) { + send8(c, (uint8_t) (val >> 8) & 255); + send8(c, (uint8_t) (val & 255)); +} + +static struct mg_connection *start_modbus_request(struct mg_mgr *mgr, + struct mg_str json, + unsigned long cid) { + struct mg_connection *c = NULL; + char *url = mg_json_get_str(json, "$.url"); + long timeout = mg_json_get_long(json, "$.timeout", 750); + uint8_t id = (uint8_t) mg_json_get_long(json, "$.id", 1); + uint16_t reg = (uint16_t) mg_json_get_long(json, "$.reg", 1); + uint8_t func = (uint8_t) mg_json_get_long(json, "$.func", 0); + uint16_t nregs = (uint16_t) mg_json_get_long(json, "$.nregs", 1); + MG_INFO(("%lu REQUEST: %.*s", cid, json.len, json.ptr)); + if (func == 0) { + MG_ERROR(("Set func to a valid modbus function code")); + } else if ((c = mg_connect(mgr, url, mfn, NULL)) == NULL) { + MG_ERROR(("Failed to start modbus connection at %M", MG_ESC(url))); + } else { + send16(c, 1); // TID. Use random? + send16(c, 0); // Protocol identifier: 0 (modbus) + uint16_t *lp = (uint16_t *) &c->send.buf[c->send.len]; + send16(c, 0); // Length: to be set later + size_t len = c->send.len; + + send8(c, id); // Client ID + send8(c, func); // Function + + if (func == 3 || func == 4 || func == 6 || func == 16) { + send16(c, reg); // Start register + send16(c, nregs); // Number of registers + + if (func == 16) { // Fill in register values to write + send8(c, (uint8_t) (nregs * 2)); // Send number of bytes + for (uint16_t i = 0; i < nregs; i++) { + char path[20]; + mg_snprintf(path, sizeof(path), "$.values[%hu]", i); + uint16_t r = (uint16_t) mg_json_get_long(json, path, 0); + send16(c, r); + } + } + } else if (func == 43) { + send8(c, 14); // MEI + send8(c, 1); // Basic device ID: 1 + send8(c, 0); // Object ID: 0 (vendor name) + } + + *lp = mg_htons((uint16_t) (c->send.len - len)); // Set length field + mg_hexdump(c->send.buf, c->send.len); + MG_INFO(("%lu SENDING %lu", c->id, c->send.len)); + + struct conndata *cd = (struct conndata *) c->data; + cd->id = cid; // Store parent connection ID + cd->expiration_time = mg_millis() + timeout; + } + free(url); + return c; +} + +static void handle_modbus_exec(struct mg_connection *c, struct mg_str body) { + struct mg_connection *mc = start_modbus_request(c->mgr, body, c->id); + if (mc == NULL) { + mg_http_reply(c, 200, s_json_header, "false\n"); + } else { + struct conndata *cd = (struct conndata *) c->data; + cd->expiration_time = mg_millis() + 1500; + } +} + +// Print modbus response +static size_t print_mb_resp(void (*out)(char, void *), void *ptr, va_list *ap) { + int func = va_arg(*ap, int); + size_t len = va_arg(*ap, size_t); + uint8_t *buf = va_arg(*ap, uint8_t *); + size_t n = 0; + if (func == 3 || func == 4) { + // For "multiple" read responses, print registers + n += mg_xprintf(out, ptr, "["); + for (size_t ofs = 1; ofs < len; ofs += 2) { + uint16_t reg = mg_ntohs(*(uint8_t *) &buf[ofs]); + n += mg_xprintf(out, ptr, "%s%hu", ofs == 1 ? "" : ",", reg); + } + n += mg_xprintf(out, ptr, "]"); + } else if (func == 43) { + n += mg_xprintf(out, ptr, "{"); + if (len >= 6) { + n += mg_xprintf(out, ptr, "%m:%d", MG_ESC("mei"), buf[0]); + n += mg_xprintf(out, ptr, ",%m:%d", MG_ESC("devid"), buf[1]); + n += mg_xprintf(out, ptr, ",%m:%d", MG_ESC("conformity"), buf[2]); + n += mg_xprintf(out, ptr, ",%m:%d", MG_ESC("more"), buf[3]); + n += mg_xprintf(out, ptr, ",%m:%d", MG_ESC("next"), buf[4]); + n += mg_xprintf(out, ptr, ",%m:[", MG_ESC("objects")); + size_t ofs = 6; + while (ofs < len) { + if (ofs > 6) n += mg_xprintf(out, ptr, ","); + n += mg_xprintf(out, ptr, "{"); + n += mg_xprintf(out, ptr, "%m:%d", MG_ESC("id"), buf[ofs++]); + if (ofs < len) { + uint8_t olen = buf[ofs++]; + if (olen > (uint8_t) (len - ofs)) olen = (uint8_t) (len - ofs); + n += mg_xprintf(out, ptr, ",%m:%m", MG_ESC("value"), mg_print_esc, + olen, &buf[ofs]); + ofs += olen; + } + n += mg_xprintf(out, ptr, "}"); + } + n += mg_xprintf(out, ptr, "]"); + } + n += mg_xprintf(out, ptr, "}"); + } else { + n += mg_xprintf(out, ptr, "null"); + } + return n; +} + +// HTTP request handler function +static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) { + struct conndata *cd = (struct conndata *) c->data; + if (ev == MG_EV_ACCEPT) { + if (fn_data != NULL) { // TLS listener! + struct mg_tls_opts opts = {0}; + opts.cert = mg_unpacked("/certs/server_cert.pem"); + opts.key = mg_unpacked("/certs/server_key.pem"); + mg_tls_init(c, &opts); + } + } else if (ev == MG_EV_HTTP_MSG) { + struct mg_http_message *hm = (struct mg_http_message *) ev_data; + + if (mg_http_match_uri(hm, "/api/settings/get")) { + handle_settings_get(c); + } else if (mg_http_match_uri(hm, "/api/settings/set")) { + handle_settings_set(c, hm->body); + } else if (mg_http_match_uri(hm, "/api/settings/set")) { + handle_settings_set(c, hm->body); + } else if (mg_http_match_uri(hm, "/api/modbus/exec")) { + handle_modbus_exec(c, hm->body); + } else if (mg_http_match_uri(hm, "/api/device/reset")) { + mg_timer_add(c->mgr, 500, 0, (void (*)(void *)) mg_device_reset, NULL); + mg_http_reply(c, 200, s_json_header, "true\n"); + } else { + struct mg_http_serve_opts opts; + memset(&opts, 0, sizeof(opts)); +#if MG_ARCH == MG_ARCH_UNIX || MG_ARCH == MG_ARCH_WIN32 + opts.root_dir = "web_root"; // On workstations, use filesystem +#else + opts.root_dir = "/web_root"; // On embedded, use packed files + opts.fs = &mg_fs_packed; +#endif + mg_http_serve_dir(c, ev_data, &opts); + } + MG_DEBUG(("%lu %.*s %.*s", c->id, (int) hm->method.len, hm->method.ptr, + (int) hm->uri.len, hm->uri.ptr)); + } else if (ev == MG_EV_POLL) { + if (cd->expiration_time > 0 && cd->expiration_time < mg_millis()) { + cd->expiration_time = 0; + mg_http_reply(c, 200, s_json_header, "false\n"); + } + } else if (ev == MG_EV_USER) { + cd->expiration_time = 0; // Cleanup timeout setting + struct mg_iobuf *io = ev_data; + uint8_t f = io->buf[7]; + mg_http_reply(c, 200, s_json_header, "{%m:%s,%m:%m,%m:%M}\n", // + MG_ESC("success"), "true", // + MG_ESC("raw"), mg_print_hex, io->len - 7, io->buf + 7, // + MG_ESC("data"), print_mb_resp, f, io->len - 8, io->buf + 8); + } +} + +void web_init(struct mg_mgr *mgr) { + // Init default settings + s_settings.mqtt_server_url = strdup("mqtt://broker.hivemq.com:1883"); + s_settings.mqtt_topic_tx = strdup("modbus1/tx"); + s_settings.mqtt_topic_rx = strdup("modbus1/rx"); + + mg_http_listen(mgr, HTTP_URL, fn, NULL); + mg_http_listen(mgr, HTTPS_URL, fn, (void *) 1); + mg_timer_add(mgr, 10 * 60 * 1000, MG_TIMER_RUN_NOW | MG_TIMER_REPEAT, + timer_sntp_fn, mgr); +} diff --git a/examples/modbus-dashboard/net.h b/examples/modbus-dashboard/net.h new file mode 100644 index 00000000..f4eb1c53 --- /dev/null +++ b/examples/modbus-dashboard/net.h @@ -0,0 +1,23 @@ +// Copyright (c) 2023 Cesanta Software Limited +// All rights reserved +#pragma once + +#include "mongoose.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(HTTP_URL) +#define HTTP_URL "http://0.0.0.0:8000" +#endif + +#if !defined(HTTPS_URL) +#define HTTPS_URL "https://0.0.0.0:8443" +#endif + +void web_init(struct mg_mgr *mgr); + +#ifdef __cplusplus +} +#endif diff --git a/examples/modbus-dashboard/packed_fs.c b/examples/modbus-dashboard/packed_fs.c new file mode 100644 index 00000000..31a87ec4 --- /dev/null +++ b/examples/modbus-dashboard/packed_fs.c @@ -0,0 +1,2155 @@ +#include +#include +#include + +#if defined(__cplusplus) +extern "C" { +#endif +const char *mg_unlist(size_t no); +const char *mg_unpack(const char *, size_t *, time_t *); +#if defined(__cplusplus) +} +#endif + +static const unsigned char v1[] = { + 31, 139, 8, 8, 124, 140, 100, 101, 0, 3, 98, 117, // ....|.de..bu + 110, 100, 108, 101, 46, 106, 115, 0, 173, 60, 139, 114, // ndle.js..<.r + 219, 56, 146, 191, 18, 105, 83, 90, 98, 132, 200, 118, // .8...iSZb..v + 102, 178, 119, 71, 25, 81, 37, 30, 79, 156, 153, 60, // f.wG.Q%.O..< + 188, 118, 30, 187, 171, 209, 170, 40, 10, 178, 56, 166, // .v.....(..8. + 64, 153, 132, 228, 120, 76, 221, 183, 95, 119, 227, 65, // @...xL.._w.A + 82, 166, 231, 246, 182, 174, 42, 17, 65, 60, 27, 141, // R.....*.A<.. + 126, 163, 233, 109, 148, 63, 81, 92, 115, 201, 167, 60, // ~..m.?Q.s..< + 231, 25, 79, 248, 134, 167, 60, 22, 247, 59, 30, 137, // ..O...<..;.. + 241, 132, 23, 226, 32, 138, 19, 93, 202, 111, 193, 40, // .... ..].o.( + 44, 202, 171, 82, 149, 235, 242, 41, 43, 243, 245, 178, // ,..R...)+... + 188, 202, 147, 121, 153, 221, 22, 229, 74, 197, 165, 210, // ...y....J... + 183, 101, 162, 228, 56, 94, 78, 202, 223, 179, 172, 252, // .e..8^N..... + 103, 150, 207, 203, 68, 203, 60, 58, 72, 134, 139, 141, // g...D.<:H... + 138, 117, 146, 169, 39, 139, 0, 22, 99, 247, 139, 44, // .u..'...c.., + 15, 182, 176, 178, 124, 146, 168, 39, 154, 169, 177, 156, // ....|..'.... + 8, 13, 63, 195, 92, 234, 77, 174, 158, 168, 157, 31, // ..?...M..... + 177, 14, 20, 187, 199, 190, 90, 168, 193, 58, 202, 165, // ......Z..:.. + 210, 31, 178, 185, 28, 234, 94, 79, 15, 114, 185, 202, // ......^O.r.. + 182, 242, 100, 153, 164, 115, 232, 86, 13, 90, 6, 180, // ..d..s.V.Z.. + 35, 51, 208, 110, 11, 182, 52, 196, 117, 19, 92, 83, // #3.n..4.u..S + 178, 238, 181, 188, 235, 10, 145, 140, 114, 33, 199, 201, // ........r!.. + 36, 236, 230, 114, 65, 239, 153, 121, 223, 192, 15, 149, // $..rA..y.... + 134, 201, 34, 136, 242, 171, 205, 10, 86, 46, 6, 169, // ..".....V... + 84, 87, 122, 249, 242, 121, 175, 23, 108, 6, 49, 46, // TWz..y..l.1. + 12, 16, 137, 7, 237, 223, 143, 212, 32, 142, 210, 180, // ........ ... + 26, 201, 159, 179, 112, 202, 120, 215, 193, 8, 107, 233, // ....p.x...k. + 187, 181, 204, 22, 79, 96, 39, 106, 147, 166, 29, 161, // ....O`'j.... + 7, 115, 185, 136, 54, 169, 62, 207, 179, 117, 193, 60, // .s..6.>..u.< + 176, 123, 245, 219, 44, 153, 63, 57, 20, 66, 32, 136, // .{..,.?9.B . + 8, 7, 66, 218, 236, 3, 53, 204, 225, 114, 14, 184, // ..B...5..r.. + 216, 208, 217, 226, 42, 53, 36, 1, 202, 220, 161, 27, // ....*5$..... + 68, 1, 138, 16, 164, 80, 241, 53, 78, 18, 78, 57, // D....P.5N.N9 + 224, 40, 204, 57, 96, 38, 204, 248, 116, 122, 29, 226, // .(.9`&..tz.. + 12, 80, 112, 207, 89, 120, 8, 191, 210, 189, 206, 67, // .Pp.Yx.....C + 3, 26, 20, 99, 87, 183, 52, 133, 56, 83, 133, 206, // ...cW.4.8S.. + 55, 177, 206, 242, 170, 211, 150, 218, 16, 231, 253, 190, // 7........... + 12, 147, 157, 63, 125, 83, 91, 161, 101, 171, 224, 196, // ...?}S[.e... + 241, 188, 169, 16, 108, 24, 223, 84, 219, 216, 6, 236, // ....l..T.... + 222, 12, 188, 143, 55, 57, 210, 7, 77, 187, 171, 122, // ....79..M..z + 172, 144, 132, 220, 220, 254, 208, 170, 246, 59, 67, 148, // .........;C. + 122, 153, 20, 3, 218, 185, 128, 119, 124, 1, 168, 181, // z......w|... + 252, 166, 133, 174, 250, 94, 153, 190, 64, 19, 6, 74, // .....^..@..J + 205, 252, 196, 211, 233, 8, 90, 225, 193, 241, 7, 254, // ......Z..... + 93, 15, 18, 53, 151, 223, 62, 66, 95, 214, 63, 98, // ]..5..>B_.?b + 4, 214, 208, 147, 254, 80, 31, 43, 234, 100, 72, 102, // .....P.+.dHf + 168, 251, 125, 102, 167, 237, 136, 64, 10, 106, 28, 235, // ..}f...@.j.. + 9, 115, 120, 144, 80, 33, 221, 114, 244, 98, 17, 214, // .sx.P!.r.b.. + 66, 83, 106, 128, 5, 132, 199, 44, 91, 109, 96, 230, // BSj....,[m`. + 249, 137, 203, 97, 181, 158, 162, 245, 252, 90, 248, 18, // ...a.....Z.. + 27, 62, 197, 162, 129, 38, 30, 204, 162, 2, 138, 120, // .>...&.....x + 160, 90, 28, 254, 155, 27, 184, 127, 48, 161, 217, 203, // .Z......0... + 44, 151, 209, 245, 206, 110, 15, 161, 172, 157, 224, 53, // ,....n.....5 + 2, 29, 116, 112, 204, 28, 40, 158, 158, 162, 115, 8, // ..tp..(...s. + 51, 231, 131, 245, 166, 88, 66, 115, 175, 215, 57, 129, // 3....XBs..9. + 234, 188, 223, 47, 203, 172, 35, 136, 33, 102, 25, 76, // .../..#.!f.L + 32, 47, 36, 156, 66, 158, 168, 43, 232, 19, 4, 89, // /$.B..+...Y + 107, 75, 89, 38, 44, 56, 169, 49, 199, 73, 96, 176, // kKY&,8.1.I`. + 228, 100, 35, 138, 16, 32, 99, 58, 190, 124, 80, 100, // .d#.. c:.|Pd + 185, 6, 50, 28, 42, 1, 229, 101, 178, 208, 1, 27, // ..2.*..e.... + 50, 7, 157, 134, 74, 131, 18, 62, 21, 150, 216, 51, // 2...J..>...3 + 87, 72, 69, 144, 16, 114, 24, 244, 222, 226, 143, 228, // WHE..r...... + 65, 76, 40, 56, 71, 248, 166, 40, 116, 1, 200, 69, // AL(8G..(t..E + 0, 18, 56, 97, 212, 75, 36, 248, 219, 63, 226, 159, // ..8a.K$..?.. + 130, 24, 192, 200, 56, 246, 86, 220, 204, 8, 91, 141, // ....8.V...[. + 7, 217, 173, 146, 249, 229, 151, 55, 167, 169, 68, 97, // .......7..Da + 195, 13, 190, 113, 216, 114, 52, 78, 39, 150, 25, 185, // ...q.r4N'... + 33, 217, 20, 200, 34, 97, 97, 202, 169, 157, 241, 139, // !..."aa..... + 96, 10, 43, 209, 155, 236, 136, 180, 215, 155, 65, 51, // `.+.......A3 + 227, 110, 19, 47, 53, 98, 217, 238, 152, 13, 9, 201, // .n./5b...... + 226, 176, 194, 212, 183, 224, 161, 254, 40, 12, 242, 22, // ........(... + 124, 205, 151, 124, 203, 239, 248, 140, 95, 243, 19, 49, // |..|...._..1 + 237, 245, 136, 47, 202, 50, 226, 223, 196, 137, 35, 28, // .../.2....#. + 196, 41, 110, 233, 26, 247, 190, 0, 194, 90, 28, 107, // .)n......Z.k + 223, 214, 32, 170, 45, 33, 234, 122, 188, 152, 8, 179, // .. .-!.z.... + 23, 168, 209, 240, 6, 231, 215, 157, 101, 89, 42, 163, // ........eY*. + 26, 15, 108, 161, 242, 33, 103, 108, 71, 56, 50, 236, // ..l..!glG82. + 130, 56, 130, 131, 111, 246, 86, 155, 213, 76, 230, 205, // .8..o.V..L.. + 186, 89, 114, 149, 40, 93, 31, 63, 39, 104, 96, 91, // .Yr.(].?'h`[ + 244, 48, 101, 22, 190, 202, 243, 232, 110, 144, 20, 244, // .0e.....n... + 12, 182, 12, 186, 173, 248, 189, 19, 54, 225, 118, 87, // ........6.vW + 235, 78, 130, 56, 220, 194, 86, 102, 47, 15, 161, 227, // .N.8..Vf/... + 150, 184, 149, 111, 141, 244, 129, 39, 200, 93, 248, 5, // ...o...'.].. + 185, 59, 162, 95, 115, 126, 91, 162, 152, 112, 203, 72, // .;._s~[..p.H + 252, 224, 155, 144, 84, 57, 35, 172, 204, 128, 64, 12, // ....T9#...@. + 82, 68, 176, 20, 39, 6, 43, 203, 94, 143, 102, 19, // RD..'.+.^.f. + 98, 137, 15, 124, 195, 165, 4, 190, 99, 129, 97, 63, // b..|....c.a? + 75, 155, 67, 153, 22, 242, 9, 30, 198, 26, 206, 96, // K.C........` + 125, 252, 109, 184, 6, 228, 227, 90, 52, 223, 26, 25, // }.m....Z4... + 249, 143, 39, 187, 199, 94, 110, 54, 195, 207, 75, 58, // ..'..^n6..K: + 168, 221, 39, 32, 146, 45, 95, 138, 101, 89, 198, 13, // ..' .-_.eY.. + 58, 225, 119, 98, 107, 152, 96, 45, 104, 175, 176, 200, // :.wbk.`-h... + 18, 159, 29, 177, 6, 118, 0, 82, 9, 144, 44, 24, // .....v.R..,. + 167, 202, 94, 239, 218, 240, 59, 189, 57, 220, 115, 91, // ..^...;.9.s[ + 185, 38, 108, 196, 101, 9, 200, 3, 2, 54, 52, 115, // .&l.e....64s + 55, 178, 146, 122, 6, 211, 205, 196, 93, 171, 10, 54, // 7..z....]..6 + 27, 193, 13, 33, 21, 226, 126, 224, 57, 218, 146, 152, // ...!..~.9... + 73, 197, 105, 176, 5, 88, 65, 146, 166, 226, 179, 217, // I.i..XA..... + 7, 63, 1, 154, 78, 91, 167, 146, 118, 42, 162, 104, // .?..N[..v*.h + 24, 205, 96, 24, 110, 9, 101, 30, 50, 87, 90, 51, // ..`.n.e.2WZ3 + 98, 64, 206, 66, 199, 84, 92, 5, 75, 6, 178, 199, // b@.B.T..K... + 178, 129, 20, 51, 224, 130, 111, 195, 197, 179, 103, 32, // ...3..o...g + 84, 104, 19, 120, 74, 208, 243, 15, 150, 171, 250, 225, // Th.xJ....... + 12, 189, 158, 43, 9, 162, 141, 185, 135, 231, 85, 48, // ...+......U0 + 101, 3, 5, 74, 237, 50, 153, 165, 40, 249, 248, 215, // e..J.2..(... + 0, 251, 114, 34, 24, 134, 26, 225, 154, 44, 15, 195, // ..r".....,.. + 135, 215, 117, 62, 124, 31, 32, 231, 241, 235, 113, 191, // ..u>|. ...q. + 239, 31, 53, 145, 121, 106, 4, 65, 101, 221, 129, 68, // ..5.yj.Ae..D + 48, 74, 0, 196, 223, 225, 48, 239, 245, 178, 99, 39, // 0J....0...c' + 84, 134, 25, 204, 7, 194, 46, 31, 103, 19, 18, 123, // T.......g..{ + 72, 205, 48, 92, 180, 108, 113, 106, 116, 217, 41, 136, // H.0..lqjt.). + 41, 156, 62, 252, 28, 160, 176, 65, 113, 51, 37, 202, // ).>....Aq3%. + 209, 204, 219, 58, 53, 69, 125, 102, 20, 181, 107, 16, // ...:5E}f..k. + 186, 44, 65, 186, 24, 82, 80, 109, 226, 2, 42, 131, // .,A..RPm..*. + 38, 19, 43, 6, 86, 92, 145, 173, 100, 16, 184, 105, // &.+.V...d..i + 81, 15, 153, 153, 119, 112, 176, 218, 41, 31, 198, 107, // Q...wp..)..k + 43, 127, 174, 11, 68, 35, 8, 137, 218, 17, 183, 94, // +...D#.....^ + 102, 107, 60, 13, 150, 152, 39, 167, 223, 6, 27, 122, // fk<...'....z + 3, 67, 150, 101, 222, 17, 89, 89, 154, 215, 188, 70, // .C.e..YY...F + 62, 76, 133, 190, 27, 116, 200, 26, 148, 5, 26, 70, // >L...t.....F + 13, 162, 245, 26, 84, 156, 177, 143, 115, 16, 241, 196, // ....T...s... + 140, 180, 0, 29, 210, 70, 100, 160, 144, 14, 135, 80, // .....Fd....P + 216, 52, 136, 2, 200, 244, 120, 234, 142, 42, 237, 139, // .4....x..*.. + 35, 148, 193, 27, 88, 157, 17, 87, 63, 81, 67, 5, // #...X..W?QC. + 182, 77, 33, 115, 253, 90, 194, 68, 50, 192, 157, 194, // .M!s.Z.D2... + 244, 153, 211, 223, 126, 159, 201, 40, 9, 243, 250, 220, // ....~..(.... + 21, 158, 94, 213, 44, 17, 62, 29, 250, 173, 24, 219, // ..^.,.>..... + 5, 142, 104, 95, 68, 155, 134, 186, 193, 101, 44, 24, // ..h_D....e,. + 36, 49, 162, 89, 45, 234, 6, 201, 179, 163, 161, 126, // $1.Y-......~ + 137, 102, 202, 179, 103, 8, 126, 211, 34, 1, 218, 123, // .f..g.~."..{ + 21, 72, 198, 220, 108, 211, 186, 241, 89, 193, 120, 94, // .H..l...Y.x^ + 157, 165, 129, 53, 35, 109, 149, 89, 31, 194, 137, 119, // ...5#m.Y...w + 128, 17, 79, 192, 250, 20, 116, 24, 100, 184, 151, 229, // ..O...t.d... + 7, 152, 192, 88, 222, 92, 2, 173, 131, 79, 82, 77, // ...X.....ORM + 0, 182, 99, 175, 87, 17, 124, 199, 59, 4, 208, 17, // ..c.W.|.;... + 38, 123, 124, 242, 238, 54, 74, 55, 210, 189, 196, 75, // &{|..6J7...K + 25, 95, 203, 185, 125, 197, 85, 160, 100, 230, 48, 171, // ._..}.U.d.0. + 99, 217, 173, 94, 109, 237, 210, 177, 107, 247, 89, 151, // c..^m...k.Y. + 6, 28, 78, 144, 220, 37, 121, 16, 112, 178, 119, 129, // ..N..%y.p.w. + 182, 236, 34, 71, 221, 110, 8, 140, 167, 0, 117, 162, // .."G.n....u. + 86, 229, 244, 165, 7, 28, 14, 173, 24, 104, 89, 232, // V........hY. + 64, 179, 145, 12, 101, 191, 187, 254, 214, 173, 86, 252, // @...e.....V. + 240, 16, 153, 68, 193, 112, 208, 119, 41, 109, 71, 51, // ...D.p.w)mG3 + 243, 218, 60, 119, 32, 244, 1, 117, 25, 196, 69, 241, // ..?. + 130, 84, 120, 151, 20, 90, 130, 149, 8, 167, 154, 141, // .Tx..Z...... + 126, 12, 111, 129, 97, 67, 101, 29, 232, 199, 58, 120, // ~.o.aCe...:x + 81, 212, 157, 71, 234, 74, 230, 217, 166, 72, 239, 46, // Q..G.J...H.. + 165, 126, 171, 160, 223, 217, 167, 247, 239, 186, 40, 201, // .~........(. + 200, 68, 200, 89, 99, 123, 223, 128, 213, 175, 131, 179, // .D.Yc{...... + 50, 92, 50, 216, 225, 178, 203, 170, 166, 226, 67, 180, // 2.2.......C. + 162, 125, 23, 221, 218, 2, 183, 201, 92, 47, 105, 58, // .}......./i: + 64, 221, 82, 38, 87, 75, 237, 223, 208, 51, 183, 229, // @.R&WK...3.. + 20, 128, 116, 101, 56, 162, 149, 43, 235, 104, 246, 22, // ..te8..+.h.. + 125, 45, 247, 62, 7, 139, 56, 205, 162, 185, 125, 167, // }-.>..8...}. + 147, 84, 76, 231, 119, 247, 251, 68, 108, 29, 143, 39, // .TL.w..Dl..' + 106, 23, 71, 58, 70, 97, 126, 191, 107, 211, 179, 136, // j.G:Fa~.k... + 100, 39, 144, 59, 71, 112, 180, 64, 65, 192, 57, 56, // d'.;Gp.@A.98 + 255, 248, 7, 228, 28, 131, 202, 87, 26, 232, 113, 182, // .......W..q. + 209, 18, 88, 32, 36, 118, 170, 213, 0, 183, 213, 189, // ..X $v...... + 154, 219, 154, 95, 74, 254, 102, 58, 54, 34, 174, 223, // ..._J.f:6".. + 57, 154, 4, 122, 32, 241, 88, 70, 246, 73, 158, 92, // 9..z .XF.I.. + 141, 125, 127, 124, 124, 240, 225, 255, 58, 24, 205, 177, // .}.||...:... + 189, 136, 143, 225, 200, 136, 23, 100, 179, 207, 193, 202, // .......d.... + 185, 50, 86, 59, 63, 229, 103, 252, 51, 127, 197, 207, // .2V;?.g.3... + 249, 165, 48, 230, 70, 67, 147, 201, 65, 205, 185, 103, // ..0.FC..A..g + 53, 41, 58, 52, 54, 9, 42, 105, 48, 67, 193, 201, // 5):46.*i0C.. + 161, 18, 40, 28, 99, 228, 24, 229, 141, 101, 99, 35, // ..(.c....ec# + 130, 250, 0, 87, 133, 241, 32, 34, 165, 56, 3, 33, // ...W.. ".8.! + 29, 1, 35, 14, 233, 208, 72, 76, 60, 60, 149, 75, // ..#...HL<<.K + 162, 61, 180, 127, 141, 229, 124, 45, 96, 244, 165, 243, // .=....|-`... + 219, 63, 161, 182, 0, 231, 101, 28, 161, 89, 8, 38, // .?....e..Y.& + 142, 136, 70, 215, 163, 107, 211, 119, 64, 50, 52, 196, // ..F..k.w@24. + 166, 208, 88, 18, 241, 232, 74, 4, 5, 65, 103, 96, // ..X...J..Ag` + 141, 209, 251, 18, 5, 252, 156, 134, 65, 23, 70, 233, // ........A.F. + 12, 215, 237, 2, 45, 93, 246, 122, 151, 3, 95, 3, // ....-].z.._. + 103, 143, 142, 228, 200, 12, 45, 132, 146, 183, 32, 94, // g.....-... ^ + 103, 252, 132, 133, 65, 189, 238, 142, 234, 120, 81, 199, // g...A....xQ. + 152, 184, 132, 119, 51, 94, 124, 1, 83, 22, 77, 220, // ...w3^|.S.M. + 98, 51, 11, 10, 236, 103, 162, 17, 51, 40, 21, 58, // b3...g..3(.: + 210, 72, 131, 182, 68, 204, 94, 5, 40, 78, 56, 66, // .H..D.^.(N8B + 9, 222, 40, 95, 19, 188, 232, 28, 83, 213, 146, 98, // ..(_....S..b + 120, 131, 105, 49, 35, 35, 218, 80, 48, 54, 20, 112, // x.i1##.P06.p + 34, 244, 20, 118, 70, 103, 47, 95, 14, 174, 164, 254, // "..vFg/_.... + 17, 188, 226, 173, 156, 95, 98, 195, 79, 121, 182, 162, // ....._b.Oy.. + 160, 146, 31, 225, 134, 248, 10, 114, 86, 169, 8, 162, // .......rV... + 108, 97, 42, 249, 227, 19, 5, 51, 215, 25, 204, 122, // la*....3...z + 97, 119, 201, 231, 110, 90, 106, 4, 79, 143, 175, 153, // aw..nZj.O... + 129, 247, 143, 64, 50, 64, 35, 38, 86, 235, 76, 1, // ...@2@#&V.L. + 169, 127, 77, 210, 244, 61, 120, 247, 192, 245, 109, 181, // ..M..=x...m. + 129, 219, 103, 173, 241, 199, 100, 238, 71, 0, 202, 140, // ..g...d.G... + 81, 215, 210, 206, 188, 214, 249, 223, 225, 154, 1, 103, // Q..........g + 44, 31, 1, 239, 66, 198, 18, 198, 216, 158, 127, 208, // ,...B....... + 104, 200, 165, 83, 24, 147, 222, 205, 85, 44, 179, 77, // h..S....U,.M + 58, 63, 113, 131, 62, 175, 231, 116, 22, 36, 148, 30, // :?q.>..t.$.. + 105, 117, 24, 135, 233, 192, 66, 32, 244, 10, 34, 241, // iu....B ..". + 173, 177, 214, 169, 170, 99, 171, 232, 88, 247, 40, 207, // .....c..X.(. + 208, 12, 183, 180, 117, 196, 168, 36, 161, 196, 247, 153, // ....u..$.... + 249, 154, 202, 215, 166, 60, 128, 201, 79, 35, 144, 170, // .....<..O#.. + 13, 3, 90, 217, 16, 142, 144, 104, 69, 243, 83, 176, // ..Z....hE.S. + 209, 78, 143, 137, 72, 157, 201, 121, 10, 222, 65, 227, // .N..H..y..A. + 44, 160, 109, 124, 58, 97, 67, 71, 202, 134, 184, 109, // ,.m|:aCG...m + 247, 94, 111, 99, 251, 49, 47, 204, 91, 17, 239, 80, // .^oc.1/.[..P + 213, 90, 93, 195, 81, 43, 137, 84, 131, 61, 92, 213, // .Z].Q+.T.=.. + 174, 216, 125, 91, 231, 128, 4, 41, 110, 114, 151, 44, // ..}[...)nr., + 130, 38, 187, 86, 8, 158, 78, 207, 193, 245, 57, 35, // .&.V..N...9# + 169, 151, 243, 207, 226, 144, 255, 11, 178, 198, 156, 91, // ...........[ + 251, 233, 240, 179, 94, 239, 12, 68, 39, 143, 132, 19, // ....^..D'... + 45, 238, 68, 121, 197, 99, 22, 24, 198, 95, 1, 254, // -.Dy.c..._.. + 95, 53, 241, 255, 170, 13, 255, 175, 106, 248, 55, 38, // _5......j.7& + 207, 60, 187, 255, 55, 215, 108, 0, 190, 187, 5, 75, // .<..7.l....K + 87, 146, 216, 0, 71, 181, 223, 255, 124, 252, 252, 5, // W...G...|... + 46, 85, 223, 155, 59, 17, 224, 56, 114, 103, 78, 204, // .U..;..8rgN. + 76, 64, 73, 57, 136, 31, 18, 64, 57, 78, 187, 215, // L@I9...@9N.. + 30, 160, 140, 89, 59, 231, 137, 154, 47, 85, 180, 6, // ...Y;.../U.. + 38, 177, 158, 139, 57, 40, 16, 172, 219, 199, 91, 241, // &...9(....[. + 24, 97, 154, 115, 97, 128, 136, 64, 49, 185, 192, 199, // .a.sa..@1... + 202, 176, 165, 16, 17, 70, 68, 70, 145, 213, 45, 62, // .....FDF..-> + 236, 19, 113, 12, 143, 53, 221, 202, 115, 54, 58, 15, // ..q..5..s6:. + 199, 231, 147, 7, 26, 24, 192, 175, 226, 161, 117, 205, // ..........u. + 248, 8, 177, 243, 43, 43, 129, 79, 9, 73, 212, 183, // ....++.O.I.. + 226, 76, 115, 68, 62, 150, 222, 224, 250, 81, 176, 207, // .LsD>....Q.. + 170, 150, 133, 89, 104, 94, 222, 5, 150, 163, 107, 32, // ...Yh^....k + 198, 108, 72, 186, 121, 158, 44, 22, 114, 110, 213, 115, // .lH.y.,.rn.s + 101, 53, 153, 5, 8, 222, 32, 54, 24, 239, 136, 132, // e5.... 6.... + 217, 200, 131, 20, 169, 221, 81, 167, 19, 243, 100, 156, // ......Q...d. + 248, 216, 120, 202, 38, 22, 114, 100, 0, 105, 44, 147, // ..x.&.rd.i,. + 186, 153, 116, 129, 85, 236, 30, 91, 99, 188, 4, 128, // ..t.U..[c... + 71, 32, 185, 66, 99, 119, 207, 57, 199, 94, 104, 45, // G .Bcw.9.^h- + 16, 6, 151, 118, 61, 244, 250, 91, 188, 120, 123, 63, // ...v=..[.x{? + 67, 34, 168, 218, 132, 7, 129, 100, 227, 14, 219, 60, // C".....d...< + 28, 239, 130, 189, 48, 103, 101, 50, 45, 64, 143, 77, // ....0ge2-@.M + 189, 30, 115, 214, 200, 214, 154, 75, 124, 5, 28, 70, // ..s....K|..F + 190, 202, 22, 29, 21, 129, 18, 54, 195, 240, 181, 139, // .......6.... + 211, 146, 183, 49, 92, 29, 39, 142, 255, 86, 38, 234, // ...1..'..V&. + 9, 232, 78, 198, 43, 116, 87, 187, 117, 67, 18, 133, // ..N.+tW.uC.. + 66, 36, 0, 145, 56, 209, 22, 136, 46, 205, 96, 47, // B$..8.....`/ + 104, 86, 227, 228, 225, 247, 2, 201, 17, 111, 74, 200, // hV.......oJ. + 0, 130, 77, 137, 136, 227, 60, 198, 251, 55, 113, 185, // ..M...<..7q. + 218, 5, 70, 165, 208, 196, 214, 217, 111, 243, 44, 166, // ..F.....o.,. + 107, 171, 65, 12, 189, 181, 68, 47, 10, 195, 10, 193, // k.A...D/.... + 28, 236, 49, 145, 141, 246, 154, 109, 216, 249, 195, 101, // ..1....m...e + 208, 93, 106, 189, 14, 15, 14, 110, 111, 111, 7, 183, // .]j....noo.. + 223, 15, 178, 252, 234, 224, 249, 225, 225, 225, 1, 238, // ............ + 28, 163, 164, 237, 3, 131, 45, 159, 3, 123, 244, 122, // ......-..{.z + 115, 23, 163, 0, 43, 17, 40, 184, 14, 216, 18, 126, // s...+.(....~ + 231, 101, 153, 34, 5, 0, 83, 70, 230, 53, 176, 47, // .e."..SF.5./ + 243, 74, 55, 39, 116, 115, 100, 78, 87, 27, 78, 68, // .J7'tsdNW.ND + 208, 209, 158, 194, 192, 168, 61, 166, 178, 4, 235, 238, // ......=..... + 17, 175, 134, 47, 196, 252, 209, 182, 78, 234, 17, 230, // .../....N... + 78, 110, 137, 183, 165, 120, 198, 171, 99, 61, 136, 220, // Nn...x..c=.. + 41, 21, 245, 195, 92, 142, 235, 45, 112, 22, 3, 5, // )......-p... + 199, 133, 215, 118, 205, 90, 50, 74, 135, 193, 2, 28, // ...v.Z2J.... + 105, 228, 156, 5, 50, 120, 175, 183, 64, 66, 214, 43, // i...2x..@B.+ + 107, 186, 97, 169, 44, 171, 58, 152, 36, 113, 224, 49, // k.a.,.:.$q.1 + 66, 137, 127, 21, 139, 106, 112, 89, 162, 167, 137, 56, // B....jpY...8 + 61, 7, 66, 158, 131, 145, 159, 97, 8, 115, 193, 92, // =.B....a.s.. + 232, 221, 59, 99, 43, 71, 193, 94, 142, 129, 20, 211, // ..;c+G.^.... + 123, 82, 108, 197, 70, 171, 16, 64, 118, 44, 97, 28, // {Rl.F..@v,a. + 50, 112, 220, 212, 199, 217, 111, 50, 38, 47, 109, 75, // 2p....o2&/mK + 124, 146, 140, 18, 240, 136, 67, 146, 53, 189, 222, 85, // |.....C.5..U + 48, 229, 64, 249, 105, 147, 248, 87, 162, 162, 253, 42, // 0.@.i..W...* + 236, 137, 68, 219, 235, 173, 3, 98, 130, 33, 250, 185, // ..D....b.!.. + 54, 242, 1, 12, 0, 154, 194, 187, 32, 48, 124, 110, // 6....... 0|n + 80, 135, 72, 91, 81, 120, 141, 94, 97, 207, 176, 145, // P.H[Qx.^a... + 171, 92, 22, 133, 101, 188, 206, 10, 234, 178, 181, 117, // ....e......u + 35, 176, 6, 187, 47, 253, 232, 15, 176, 81, 187, 8, // #.../....Q.. + 95, 113, 91, 207, 209, 226, 241, 113, 150, 182, 197, 109, // _q[....q...m + 27, 51, 211, 105, 247, 110, 231, 115, 35, 105, 70, 251, // .3.i.n.s#iF. + 130, 115, 178, 221, 195, 184, 229, 123, 43, 0, 73, 146, // .s.....{+.I. + 181, 221, 236, 141, 80, 206, 129, 107, 105, 47, 59, 133, // ....P..ki/;. + 124, 40, 189, 26, 226, 243, 171, 155, 208, 222, 133, 163, // |(.......... + 36, 210, 131, 141, 90, 25, 147, 215, 23, 97, 2, 30, // $...Z....a.. + 96, 192, 214, 4, 225, 131, 220, 173, 128, 215, 63, 182, // `.........?. + 136, 97, 69, 92, 163, 44, 223, 7, 185, 141, 106, 249, // .aE..,....j. + 72, 123, 144, 219, 107, 67, 19, 16, 216, 179, 177, 204, // H{..kC...... + 34, 228, 130, 183, 55, 5, 109, 98, 24, 48, 100, 116, // "...7.mb.0dt + 98, 110, 204, 36, 186, 61, 33, 143, 202, 224, 31, 201, // bn.$.=!..... + 217, 6, 153, 137, 142, 48, 208, 188, 23, 101, 198, 16, // .....0...e.. + 115, 175, 247, 53, 200, 41, 10, 198, 167, 245, 91, 161, // s..5.)....[. + 206, 94, 104, 113, 56, 117, 166, 130, 221, 230, 218, 92, // .^hq8u...... + 127, 50, 90, 84, 84, 55, 151, 46, 88, 91, 161, 249, // .2ZTT7..X[.. + 139, 11, 167, 213, 125, 242, 154, 159, 103, 118, 227, 187, // ....}...gv.. + 255, 20, 212, 227, 96, 200, 39, 67, 220, 180, 209, 111, // ....`.'C...o + 216, 134, 146, 16, 182, 211, 66, 1, 57, 51, 87, 88, // ......B.93WX + 57, 30, 12, 221, 166, 25, 53, 190, 65, 85, 247, 9, // 9.....5.AU.. + 216, 75, 138, 160, 3, 252, 152, 67, 3, 35, 222, 94, // .K.....C.#.^ + 6, 43, 115, 88, 99, 9, 78, 96, 130, 119, 48, 113, // .+sXc.N`.w0q + 117, 125, 56, 125, 112, 125, 72, 163, 71, 227, 124, 18, // u}8}p}H.G.|. + 38, 102, 169, 233, 96, 145, 228, 133, 177, 172, 92, 102, // &f..`......f + 195, 180, 46, 91, 205, 13, 213, 198, 142, 204, 97, 28, // ...[......a. + 93, 39, 54, 6, 98, 136, 248, 34, 216, 52, 208, 240, // ]'6.b..".4.. + 214, 68, 233, 127, 34, 228, 189, 173, 53, 124, 108, 203, // .D.."...5|l. + 224, 32, 51, 79, 27, 217, 196, 254, 189, 100, 14, 123, // . 3O.....d.{ + 58, 255, 127, 9, 29, 115, 96, 38, 82, 242, 27, 14, // :....s`&R... + 8, 215, 116, 117, 151, 97, 193, 93, 80, 213, 54, 245, // ..tu.a.]P.6. + 212, 236, 150, 174, 255, 197, 61, 102, 73, 104, 209, 133, // ......=fIh.. + 199, 73, 183, 159, 246, 251, 148, 88, 193, 193, 112, 45, // .I.....X..p- + 96, 129, 60, 172, 140, 149, 218, 61, 70, 149, 190, 16, // `.<....=F... + 104, 182, 227, 224, 37, 110, 147, 121, 163, 179, 157, 158, // h...%n.y.... + 251, 128, 54, 17, 226, 158, 89, 12, 146, 84, 210, 69, // ..6...Y..T.E + 243, 20, 3, 9, 24, 17, 195, 94, 188, 173, 171, 168, // .......^.... + 249, 56, 46, 86, 190, 51, 61, 91, 93, 77, 81, 7, // .8.V.3=[]MQ. + 165, 74, 169, 48, 130, 148, 228, 7, 149, 208, 32, 109, // .J.0...... m + 51, 202, 200, 118, 61, 228, 120, 225, 143, 198, 151, 93, // 3..v=.x....] + 104, 51, 107, 76, 43, 221, 189, 203, 208, 37, 6, 181, // h3kL+....%.. + 9, 148, 97, 123, 117, 125, 67, 0, 195, 154, 2, 169, // ..a{u}C..... + 178, 150, 170, 193, 65, 216, 147, 96, 164, 243, 198, 60, // ....A..`...< + 4, 100, 127, 159, 54, 226, 211, 84, 228, 192, 161, 159, // .d..6..T.... + 124, 217, 129, 59, 185, 122, 248, 9, 164, 51, 16, 147, // |..;.z...3.. + 137, 214, 114, 141, 103, 46, 27, 7, 107, 104, 220, 93, // ..r.g...kh.] + 152, 17, 157, 15, 53, 121, 130, 67, 50, 0, 115, 42, // ....5y.C2.s* + 199, 152, 221, 128, 171, 144, 248, 196, 250, 76, 228, 141, // .........L.. + 176, 155, 139, 14, 100, 109, 33, 137, 211, 60, 207, 114, // ....dm!..<.r + 146, 232, 96, 69, 82, 109, 240, 120, 63, 186, 205, 74, // ..`ERm.x?..J + 72, 222, 206, 157, 100, 207, 27, 190, 237, 9, 74, 105, // H...d.....Ji + 163, 32, 246, 107, 81, 247, 148, 37, 198, 166, 252, 12, // . .kQ..%.... + 137, 51, 41, 115, 114, 84, 114, 43, 228, 129, 164, 149, // .3)srTr+.... + 208, 59, 189, 204, 179, 91, 112, 215, 119, 32, 180, 14, // .;...[p.w .. + 249, 180, 113, 202, 181, 80, 34, 93, 148, 250, 188, 39, // ..q..P"]...' + 85, 223, 250, 142, 223, 213, 156, 99, 183, 65, 209, 228, // U......c.A.. + 30, 147, 112, 35, 173, 3, 71, 52, 69, 33, 48, 87, // ..p#..G4E!0W + 66, 157, 77, 132, 134, 99, 71, 174, 54, 116, 5, 43, // B.M..cG.6t.+ + 120, 124, 143, 214, 139, 95, 138, 106, 8, 101, 124, 81, // x|..._.j.e|Q + 232, 82, 209, 62, 106, 72, 176, 195, 172, 211, 226, 182, // .R.>jH...... + 99, 39, 71, 27, 94, 187, 55, 240, 192, 137, 178, 193, // c'G.^.7..... + 67, 190, 14, 176, 10, 89, 160, 190, 63, 160, 148, 88, // C....Y..?..X + 62, 198, 104, 118, 50, 83, 36, 54, 170, 150, 89, 58, // >.hv2S$6..Y: + 150, 121, 100, 98, 27, 129, 92, 241, 28, 229, 66, 210, // .ydb......B. + 166, 119, 128, 218, 87, 73, 33, 71, 246, 89, 27, 172, // .w..WI!G.Y.. + 151, 82, 13, 102, 192, 65, 129, 107, 3, 139, 43, 75, // .R.f.A.k..+K + 183, 18, 220, 239, 16, 142, 228, 83, 178, 146, 217, 70, // .......S...F + 163, 4, 111, 23, 106, 0, 57, 134, 124, 159, 105, 87, // ..o.j.9.|.iW + 218, 113, 155, 103, 66, 247, 147, 120, 124, 191, 241, 27, // .q.gB..x|... + 254, 154, 255, 194, 223, 64, 221, 239, 8, 227, 207, 248, // .....@...... + 243, 87, 19, 43, 230, 127, 179, 209, 147, 191, 123, 255, // .W.+......{. + 148, 255, 195, 176, 14, 87, 64, 103, 206, 198, 169, 18, // .....W@g.... + 17, 181, 170, 188, 202, 165, 209, 186, 203, 224, 134, 43, // ...........+ + 254, 166, 44, 225, 240, 222, 216, 85, 167, 226, 6, 90, // ..,....U...Z + 206, 64, 94, 210, 19, 25, 56, 132, 101, 49, 175, 109, // .@^...8.e1.m + 60, 217, 249, 123, 103, 245, 146, 220, 103, 239, 162, 211, // <..{g...g... + 11, 33, 28, 6, 124, 9, 127, 6, 134, 192, 170, 177, // .!..|....... + 154, 84, 202, 64, 214, 137, 252, 141, 56, 226, 83, 21, // .T.@....8.S. + 92, 43, 94, 15, 211, 79, 149, 51, 42, 12, 44, 0, // .+^..O.3*.,. + 244, 111, 160, 39, 158, 211, 29, 213, 116, 0, 130, 143, // .o.'....t... + 119, 166, 198, 45, 54, 55, 232, 99, 57, 162, 139, 135, // w..-67.c9... + 107, 101, 227, 243, 128, 101, 190, 175, 27, 52, 193, 250, // ke...e...4.. + 97, 68, 191, 206, 50, 135, 39, 199, 24, 128, 198, 91, // aD..2.'....[ + 63, 112, 242, 58, 116, 193, 65, 179, 126, 128, 105, 13, // ?p.:t.A.~.i. + 248, 71, 147, 137, 137, 148, 87, 130, 228, 30, 165, 180, // .G....W..... + 173, 21, 55, 188, 115, 51, 216, 48, 171, 180, 69, 83, // ..7.s3.0..ES + 208, 145, 85, 104, 192, 69, 84, 90, 177, 208, 49, 120, // ..Uh.ETZ..1x + 206, 133, 111, 64, 212, 45, 146, 84, 203, 188, 169, 27, // ..o@.-.T.... + 106, 196, 18, 239, 76, 166, 66, 142, 183, 27, 249, 93, // j...L.B....] + 91, 63, 202, 21, 251, 176, 243, 23, 188, 29, 186, 32, // [?......... + 55, 78, 33, 170, 58, 3, 18, 173, 157, 128, 171, 57, // 7N!.:......9 + 244, 66, 170, 53, 98, 105, 111, 153, 63, 84, 153, 168, // .B.5bio.?T.. + 132, 177, 161, 183, 10, 63, 144, 129, 248, 193, 101, 121, // .....?....ey + 57, 67, 153, 110, 2, 193, 35, 5, 95, 31, 99, 9, // 9C.n..#._.c. + 188, 19, 116, 18, 67, 29, 177, 13, 0, 226, 61, 61, // ..t.C.....== + 116, 105, 7, 143, 237, 134, 128, 79, 97, 113, 148, 1, // ti.....Oaq.. + 45, 182, 170, 92, 96, 215, 155, 182, 136, 230, 176, 181, // -...`....... + 182, 237, 88, 156, 204, 112, 132, 150, 13, 125, 194, 90, // ..X..p...}.Z + 110, 187, 241, 76, 76, 119, 0, 124, 242, 0, 202, 29, // n..LLw.|.... + 127, 4, 46, 16, 246, 206, 98, 64, 228, 24, 59, 181, // ......b@..;. + 162, 238, 220, 178, 96, 131, 182, 191, 103, 195, 142, 54, // ....`...g..6 + 194, 121, 166, 136, 252, 206, 184, 172, 101, 136, 76, 7, // .y......e.L. + 137, 144, 252, 198, 18, 138, 149, 106, 211, 122, 152, 38, // .......j.z.& + 107, 155, 246, 135, 127, 121, 218, 182, 41, 55, 77, 86, // k....y..)7MV + 125, 193, 99, 213, 136, 253, 238, 167, 159, 162, 197, 48, // }.c........0 + 174, 167, 198, 164, 30, 217, 111, 196, 95, 120, 214, 54, // ......o._x.6 + 186, 213, 213, 11, 192, 204, 11, 88, 141, 133, 43, 54, // .......X..+6 + 8, 140, 109, 9, 150, 55, 244, 242, 206, 32, 222, 111, // ..m..7... .o + 180, 116, 246, 237, 148, 221, 192, 108, 10, 238, 142, 249, // .t.....l.... + 11, 126, 25, 210, 53, 30, 232, 102, 212, 255, 21, 224, // .~..5..f.... + 113, 93, 129, 58, 100, 254, 135, 151, 123, 128, 75, 73, // q].:d...{.KI + 184, 212, 204, 132, 20, 191, 128, 2, 100, 28, 172, 41, // ........d..) + 161, 93, 0, 147, 158, 95, 76, 96, 177, 154, 56, 106, // .]..._L`..8j + 170, 128, 55, 226, 63, 219, 145, 10, 182, 1, 195, 108, // ..7.?......l + 27, 63, 176, 168, 201, 177, 27, 103, 106, 141, 73, 42, // .?.....gj.I* + 160, 4, 179, 32, 254, 23, 171, 172, 180, 24, 19, 139, // ... ........ + 92, 22, 152, 36, 39, 139, 96, 69, 5, 169, 233, 174, // ...$'.`E.... + 237, 6, 111, 224, 235, 118, 42, 250, 215, 117, 104, 23, // ..o..v*..uh. + 94, 91, 108, 10, 249, 163, 156, 109, 174, 190, 24, 35, // ^[l....m...# + 118, 175, 34, 64, 249, 187, 119, 215, 186, 174, 1, 108, // v."@..w....l + 161, 59, 58, 4, 28, 9, 80, 0, 85, 226, 146, 33, // .;:...P.U..! + 195, 155, 135, 38, 21, 169, 158, 7, 181, 117, 38, 158, // ...&.....u&. + 26, 45, 102, 93, 71, 124, 231, 18, 68, 53, 89, 208, // .-f]G|..D5Y. + 224, 241, 161, 100, 175, 155, 188, 216, 100, 206, 31, 4, // ...d....d... + 119, 45, 101, 94, 185, 140, 87, 15, 229, 17, 9, 89, // w-e^..W....Y + 146, 164, 149, 141, 170, 73, 35, 110, 237, 229, 46, 94, // .....I#n...^ + 174, 19, 99, 173, 156, 5, 106, 141, 87, 107, 196, 90, // ..c...j.Wk.Z + 186, 193, 14, 20, 153, 130, 167, 24, 31, 242, 195, 9, // ............ + 51, 178, 179, 123, 222, 237, 35, 132, 253, 238, 51, 44, // 3..{..#...3, + 28, 77, 250, 253, 93, 77, 208, 215, 146, 213, 17, 60, // .M..]M.....< + 7, 131, 26, 42, 241, 123, 149, 120, 107, 165, 243, 57, // ...*.{.xk..9 + 134, 253, 80, 179, 80, 12, 216, 75, 8, 39, 208, 239, // ..P.P..K.'.. + 148, 241, 226, 155, 181, 87, 245, 90, 188, 216, 48, 230, // .....W.Z..0. + 105, 198, 238, 235, 181, 54, 52, 157, 81, 87, 140, 11, // i....64.QW.. + 147, 213, 209, 176, 192, 110, 76, 112, 226, 175, 189, 222, // .....nLp.... + 95, 17, 243, 52, 34, 111, 244, 248, 91, 175, 247, 55, // _..4"o..[..7 + 52, 192, 126, 179, 182, 133, 22, 193, 141, 141, 152, 224, // 4.~......... + 82, 248, 69, 67, 240, 26, 20, 194, 205, 136, 16, 69, // R.EC.......E + 235, 222, 212, 1, 120, 228, 54, 13, 101, 171, 187, 81, // ....x.6.e..Q + 51, 90, 138, 192, 252, 34, 126, 182, 74, 73, 1, 59, // 3Z..."~.JI.; + 58, 142, 7, 131, 204, 204, 222, 192, 139, 126, 128, 19, // :........~.. + 7, 1, 112, 198, 107, 113, 131, 219, 49, 102, 85, 99, // ..p.kq..1fUc + 71, 127, 239, 245, 254, 238, 188, 48, 155, 209, 61, 148, // G......0..=. + 230, 170, 225, 204, 50, 153, 193, 182, 179, 139, 130, 35, // ....2......# + 32, 144, 223, 141, 132, 69, 241, 251, 11, 69, 47, 115, // ....E...E/s + 121, 179, 145, 133, 126, 165, 146, 85, 132, 83, 255, 148, // y...~..U.S.. + 71, 43, 188, 146, 9, 126, 121, 172, 145, 149, 229, 74, // G+...~y....J + 177, 96, 142, 190, 138, 91, 229, 49, 236, 36, 22, 55, // .`...[.1.$.7 + 103, 136, 7, 139, 26, 128, 226, 231, 58, 202, 190, 96, // g.......:..` + 189, 67, 146, 195, 30, 34, 11, 55, 111, 132, 38, 97, // .C...".7o.&a + 36, 222, 227, 187, 105, 139, 15, 235, 168, 239, 33, 229, // $...i.....!. + 45, 133, 173, 127, 212, 186, 33, 94, 43, 203, 43, 101, // -.....!^+.+e + 221, 95, 67, 140, 178, 125, 33, 101, 76, 215, 64, 185, // ._C..}!eL.@. + 163, 66, 11, 99, 90, 81, 171, 244, 212, 10, 245, 255, // .B.cZQ...... + 232, 245, 254, 97, 34, 131, 220, 91, 195, 141, 179, 84, // ...a"..[...T + 224, 43, 40, 229, 79, 147, 79, 237, 121, 218, 156, 237, // .+(.O.O.y... + 51, 171, 43, 31, 199, 52, 238, 251, 142, 0, 175, 174, // 3.+..4...... + 132, 132, 162, 197, 105, 160, 195, 174, 52, 130, 10, 225, // ....i...4... + 51, 55, 208, 96, 229, 224, 146, 91, 213, 26, 236, 106, // 37.`...[...j + 59, 254, 202, 140, 95, 85, 194, 149, 203, 186, 103, 31, // ;..._U....g. + 167, 50, 202, 173, 223, 1, 202, 156, 111, 97, 123, 113, // .2......oa{q + 164, 98, 153, 54, 167, 66, 87, 171, 242, 80, 136, 115, // .b.6.BW..P.s + 167, 162, 86, 33, 65, 88, 31, 2, 78, 148, 73, 236, // ..V!AX..N.I. + 111, 131, 6, 211, 8, 107, 31, 147, 212, 245, 19, 119, // o....k.....w + 92, 209, 150, 81, 100, 143, 46, 246, 136, 65, 77, 127, // ...Qd....AM. + 211, 248, 216, 164, 62, 215, 208, 116, 198, 223, 96, 175, // ....>..t..`. + 223, 172, 161, 76, 59, 10, 243, 190, 12, 203, 145, 60, // ...L;......< + 54, 69, 140, 73, 237, 17, 81, 35, 94, 137, 38, 235, // 6E.I..Q#^.&. + 88, 78, 26, 87, 94, 215, 141, 137, 219, 190, 93, 26, // XN.W^.....]. + 81, 110, 145, 222, 33, 144, 39, 106, 207, 182, 244, 241, // Qn..!.'j.... + 187, 33, 230, 196, 97, 66, 177, 21, 224, 153, 56, 26, // .!..aB....8. + 102, 85, 146, 63, 134, 105, 77, 158, 44, 230, 45, 246, // fU.?.iM.,.-. + 251, 19, 240, 20, 49, 105, 17, 4, 33, 140, 43, 69, // ....1i..!.+E + 50, 58, 10, 159, 99, 174, 29, 53, 78, 96, 189, 113, // 2:..c..5N`.q + 191, 159, 77, 134, 120, 211, 149, 140, 208, 202, 22, 155, // ..M.x....... + 240, 7, 251, 114, 52, 17, 230, 6, 98, 16, 21, 69, // ...r4...b..E + 2, 40, 196, 42, 12, 74, 240, 13, 11, 95, 80, 39, // .(.*.J..._P' + 170, 18, 174, 158, 141, 205, 116, 56, 201, 95, 252, 36, // ......t8._.$ + 174, 178, 47, 54, 253, 110, 55, 132, 65, 24, 103, 142, // ../6.n7.A.g. + 214, 235, 244, 46, 216, 240, 19, 220, 225, 6, 118, 56, // ..........v8 + 238, 118, 201, 136, 154, 16, 153, 147, 96, 203, 25, 223, // .v......`... + 96, 50, 165, 129, 253, 57, 200, 219, 113, 246, 236, 57, // `2...9..q..9 + 108, 159, 18, 49, 69, 14, 34, 216, 246, 220, 248, 11, // l..1E."..... + 128, 233, 142, 127, 83, 148, 35, 244, 62, 90, 87, 228, // ....S.#.>ZW. + 125, 90, 35, 128, 111, 10, 99, 54, 198, 121, 247, 102, // }Z#.o.c6.y.f + 3, 42, 85, 55, 12, 102, 64, 191, 204, 152, 230, 26, // .*U7.f@..... + 224, 129, 38, 128, 211, 188, 210, 88, 101, 174, 135, 176, // ..&....Xe... + 19, 230, 90, 215, 185, 215, 171, 119, 60, 53, 112, 70, // ..Z....w<5pF + 115, 1, 27, 203, 240, 39, 17, 104, 65, 108, 26, 189, // s....'.hAl.. + 49, 213, 132, 18, 45, 97, 190, 92, 228, 85, 114, 223, // 1...-a...Ur. + 63, 127, 45, 190, 251, 85, 193, 79, 233, 10, 79, 15, // ?.-..U.O..O. + 174, 40, 197, 145, 141, 18, 179, 105, 144, 175, 60, 103, // .(.....i..|6 + 210, 152, 255, 59, 194, 35, 51, 163, 255, 220, 253, 51, // ...;.#3....3 + 246, 46, 203, 238, 159, 205, 176, 12, 42, 253, 20, 184, // ........*... + 30, 76, 3, 88, 194, 239, 10, 132, 159, 248, 5, 136, // .L.X........ + 172, 220, 78, 222, 61, 160, 106, 148, 252, 199, 47, 96, // ..N.=.j.../` + 30, 26, 107, 224, 239, 31, 77, 152, 153, 196, 157, 99, // ..k...M....c + 34, 240, 150, 15, 39, 77, 184, 123, 49, 248, 124, 14, // "...'M.{1.|. + 216, 156, 98, 3, 156, 88, 247, 73, 215, 2, 245, 171, // ..b..X.I.... + 246, 37, 229, 75, 121, 3, 186, 231, 6, 15, 126, 141, // .%.Ky.....~. + 110, 199, 163, 2, 32, 253, 129, 219, 85, 28, 15, 17, // n... ...U... + 10, 119, 38, 27, 159, 241, 42, 78, 143, 70, 140, 11, // .w&...*N.F.. + 227, 31, 141, 116, 136, 124, 73, 242, 234, 76, 137, 83, // ...t.|I..L.S + 27, 183, 90, 26, 181, 247, 89, 209, 87, 162, 62, 67, // ..Z...Y.W.>C + 93, 253, 159, 63, 87, 61, 111, 134, 108, 0, 147, 7, // ]..?W=o.l... + 193, 40, 252, 117, 20, 140, 255, 249, 167, 201, 119, 192, // .(.u......w. + 5, 193, 159, 6, 223, 177, 209, 211, 3, 96, 46, 53, // .........`.5 + 88, 145, 166, 164, 204, 124, 88, 23, 236, 216, 172, 215, // X....|X..... + 203, 48, 101, 216, 173, 184, 17, 248, 74, 81, 106, 29, // .0e.....JQj. + 116, 123, 93, 102, 9, 113, 211, 32, 68, 67, 111, 27, // t{]f.q. DCo. + 164, 53, 219, 83, 96, 30, 243, 120, 46, 227, 108, 46, // .5.S`..x..l. + 63, 95, 188, 245, 142, 121, 16, 35, 198, 38, 162, 173, // ?_...y.#.&.. + 197, 230, 20, 31, 177, 193, 111, 89, 162, 104, 14, 182, // ......oY.h.. + 83, 226, 22, 118, 228, 25, 60, 119, 233, 202, 80, 171, // S..v.... + 55, 106, 190, 131, 154, 45, 208, 116, 65, 221, 201, 221, // 7j...-.tA... + 193, 75, 98, 252, 94, 166, 214, 107, 212, 101, 199, 135, // .Kb.^..k.e.. + 101, 185, 4, 224, 166, 24, 44, 242, 41, 20, 9, 126, // e.....,.)..~ + 61, 213, 130, 203, 45, 227, 160, 111, 231, 236, 158, 58, // =...-..o...: + 40, 139, 217, 130, 1, 176, 235, 224, 97, 127, 135, 241, // (.......a... + 131, 174, 77, 96, 219, 249, 148, 114, 220, 34, 105, 230, // ..M`...r."i. + 98, 210, 88, 220, 80, 94, 208, 193, 120, 184, 116, 223, // b.X.P^..x.t. + 254, 98, 102, 114, 199, 72, 185, 164, 150, 232, 191, 31, // .bfr.H...... + 109, 205, 35, 117, 13, 202, 23, 31, 160, 88, 205, 251, // m.#u.....X.. + 75, 251, 254, 12, 43, 104, 227, 207, 180, 121, 214, 242, // K...+h...y.. + 247, 247, 39, 162, 118, 240, 244, 205, 20, 173, 193, 123, // ..'.v......{ + 235, 85, 91, 0, 71, 135, 33, 145, 147, 169, 92, 3, // .U[.G.!..... + 189, 24, 148, 252, 168, 28, 10, 186, 12, 57, 152, 219, // .........9.. + 46, 181, 92, 233, 230, 172, 53, 194, 248, 245, 160, 95, // ......5...._ + 194, 127, 71, 23, 142, 3, 0, 151, 181, 100, 233, 218, // ..G......d.. + 104, 34, 58, 85, 17, 220, 232, 168, 223, 253, 174, 63, // h":U.......? + 234, 86, 55, 64, 174, 77, 249, 15, 73, 24, 80, 213, // .V7@.M..I.P. + 15, 225, 11, 146, 26, 159, 80, 70, 240, 11, 133, 134, // ......PF.... + 246, 59, 250, 125, 175, 140, 239, 247, 21, 90, 54, 121, // .;.}.....Z6y + 26, 190, 5, 3, 116, 199, 191, 40, 241, 52, 248, 10, // ....t..(.4.. + 246, 116, 117, 231, 91, 185, 216, 133, 10, 190, 40, 114, // .tu.[.....(r + 175, 21, 28, 224, 87, 175, 228, 49, 38, 0, 12, 63, // ....W..1&..? + 204, 91, 99, 33, 239, 148, 191, 30, 104, 109, 180, 151, // .[c!....hm.. + 89, 239, 148, 223, 139, 198, 219, 44, 23, 142, 50, 29, // Y......,..2. + 199, 138, 127, 172, 199, 161, 223, 122, 168, 220, 231, 196, // .......z.... + 221, 126, 0, 96, 189, 7, 149, 248, 94, 81, 110, 17, // .~.`....^Qn. + 246, 27, 213, 202, 161, 109, 195, 171, 66, 19, 88, 122, // .....m..B.Xz + 87, 235, 245, 176, 54, 0, 193, 191, 1, 136, 22, 137, // W...6....... + 146, 243, 234, 210, 221, 79, 237, 231, 253, 4, 116, 128, // .....O....t. + 84, 161, 200, 1, 132, 211, 236, 227, 183, 22, 96, 201, // T.........`. + 99, 28, 164, 91, 63, 209, 143, 77, 90, 244, 119, 67, // c..[?..MZ.wC + 154, 236, 116, 202, 215, 176, 95, 134, 116, 106, 23, 52, // ..t..._.tj.4 + 106, 0, 231, 67, 61, 60, 9, 113, 252, 242, 25, 106, // j..C=<.q...j + 155, 113, 242, 42, 218, 113, 225, 117, 190, 198, 196, 20, // .q.*.q.u.... + 56, 177, 11, 252, 132, 96, 0, 206, 196, 69, 134, 89, // 8....`...E.Y + 253, 138, 85, 161, 108, 91, 56, 218, 209, 7, 201, 123, // ..U.l[8....{ + 119, 80, 77, 16, 187, 120, 146, 32, 125, 12, 42, 97, // wPM..x. }.*a + 198, 17, 253, 162, 53, 221, 134, 43, 48, 226, 116, 150, // ....5..+0.t. + 223, 245, 122, 182, 48, 214, 253, 46, 69, 224, 187, 147, // ..z.0...E... + 182, 186, 160, 246, 177, 41, 114, 20, 215, 163, 174, 221, // .....)r..... + 48, 208, 191, 93, 250, 169, 106, 252, 209, 132, 167, 123, // 0..]..j....{ + 59, 199, 228, 94, 144, 218, 242, 184, 66, 129, 4, 233, // ;..^....B... + 125, 129, 234, 111, 144, 227, 222, 63, 101, 180, 79, 68, // }..o...?e.OD + 248, 97, 219, 55, 120, 191, 249, 224, 57, 162, 254, 170, // .a.7x...9... + 150, 194, 86, 5, 210, 235, 181, 129, 249, 214, 131, 145, // ..V......... + 219, 212, 108, 208, 160, 207, 165, 54, 95, 231, 208, 229, // ..l....6_... + 172, 21, 251, 192, 254, 7, 244, 97, 119, 71, 98, 102, // .......awGbf + 179, 171, 157, 142, 10, 153, 46, 158, 30, 36, 213, 23, // .........$.. + 94, 31, 233, 202, 188, 2, 238, 166, 41, 81, 0, 131, // ^.......)Q.. + 235, 183, 171, 149, 156, 39, 128, 64, 204, 190, 142, 174, // .....'.@.... + 136, 38, 17, 242, 199, 218, 2, 202, 65, 132, 198, 150, // .&......A... + 254, 251, 221, 214, 57, 125, 137, 241, 163, 17, 132, 80, // ....9}.....P + 5, 84, 226, 97, 121, 237, 16, 213, 65, 233, 163, 243, // .T.ay...A... + 244, 23, 121, 135, 78, 220, 74, 234, 200, 22, 163, 84, // ..y.N.J....T + 219, 18, 197, 189, 108, 25, 144, 163, 51, 197, 42, 116, // ....l...3.*t + 26, 60, 13, 231, 25, 125, 28, 21, 145, 126, 173, 242, // .<...}...~.. + 3, 17, 113, 109, 8, 55, 151, 0, 131, 101, 84, 212, // ..qm.7...eT. + 154, 48, 177, 238, 153, 130, 29, 108, 101, 151, 161, 247, // .0.....le... + 216, 108, 118, 45, 22, 191, 120, 48, 191, 33, 138, 29, // .lv-..x0.!.. + 190, 9, 191, 59, 155, 219, 139, 225, 192, 218, 135, 139, // ...;........ + 59, 146, 164, 191, 40, 212, 103, 30, 9, 111, 108, 84, // ;...(.g..olT + 195, 147, 122, 128, 130, 213, 189, 178, 218, 253, 171, 17, // ..z......... + 179, 196, 182, 101, 73, 210, 118, 7, 166, 218, 27, 85, // ...eI.v....U + 93, 73, 154, 207, 45, 248, 125, 235, 189, 68, 248, 80, // ]I..-.}..D.P + 81, 117, 14, 233, 198, 6, 103, 79, 48, 121, 21, 167, // Qu....gO0y.. + 118, 151, 194, 70, 89, 209, 90, 106, 144, 169, 147, 37, // v..FY.Zj...% + 102, 6, 54, 27, 93, 237, 142, 59, 177, 240, 32, 35, // f.6.]..;.. # + 67, 139, 179, 160, 54, 194, 165, 19, 120, 182, 169, 190, // C...6...x... + 12, 165, 36, 12, 186, 134, 219, 113, 203, 102, 141, 217, // ..$....q.f.. + 12, 30, 252, 5, 28, 161, 98, 231, 82, 33, 76, 218, // ......b.R!L. + 81, 37, 155, 26, 89, 32, 107, 56, 69, 124, 214, 110, // Q%..Y k8E|.n + 145, 3, 252, 116, 149, 63, 252, 78, 34, 172, 41, 24, // ...t.?.N".). + 51, 22, 120, 188, 214, 209, 125, 19, 81, 239, 103, 163, // 3.x...}.Q.g. + 199, 208, 123, 248, 11, 122, 134, 120, 190, 135, 32, 224, // ..{..z.x.. . + 202, 242, 193, 71, 104, 221, 53, 32, 129, 68, 21, 175, // ...Gh.5 .D.. + 235, 57, 16, 65, 120, 156, 20, 201, 122, 56, 38, 6, // .9.Ax...z8&. + 237, 118, 221, 229, 175, 209, 194, 191, 112, 170, 16, 221, // .v......p... + 97, 18, 162, 6, 187, 27, 129, 122, 138, 134, 212, 3, // a......z.... + 29, 254, 6, 195, 235, 48, 64, 197, 80, 121, 49, 134, // .....0@.Py1. + 58, 79, 238, 171, 30, 89, 87, 61, 140, 194, 129, 14, // :O...YW=.... + 21, 71, 123, 56, 179, 185, 37, 117, 108, 180, 69, 75, // .G{8..%ul.EK + 8, 66, 123, 39, 143, 238, 202, 133, 215, 217, 23, 53, // .B{'.......5 + 157, 77, 91, 2, 181, 205, 91, 110, 239, 254, 133, 115, // .M[...[n...s + 121, 188, 35, 64, 125, 181, 151, 87, 132, 28, 102, 227, // y.#@}..W..f. + 145, 31, 64, 249, 210, 159, 121, 184, 84, 149, 85, 111, // ..@...y.T.Uo + 52, 64, 67, 1, 216, 155, 53, 84, 3, 224, 222, 156, // 4@C...5T.... + 99, 24, 105, 90, 179, 232, 220, 139, 185, 161, 181, 210, // c.iZ........ + 96, 12, 158, 208, 100, 7, 244, 76, 105, 6, 123, 48, // `...d..Li.{0 + 216, 128, 35, 125, 45, 238, 56, 137, 227, 223, 233, 0, // ..#}-.8..... + 210, 6, 207, 200, 144, 52, 134, 132, 12, 103, 156, 5, // .....4...g.. + 85, 54, 14, 195, 175, 20, 241, 219, 100, 114, 9, 63, // U6......dr.? + 6, 24, 120, 225, 32, 11, 224, 31, 49, 70, 198, 73, // ..x. ...1F.I + 35, 200, 34, 148, 224, 31, 29, 77, 40, 51, 227, 30, // #."....M(3.. + 255, 172, 141, 187, 222, 148, 139, 176, 138, 141, 115, 252, // ..........s. + 203, 33, 1, 221, 114, 162, 73, 192, 238, 97, 158, 175, // .!..r.I..a.. + 202, 195, 32, 236, 156, 40, 203, 147, 108, 83, 132, 174, // .. ..(..lS.. + 39, 119, 87, 127, 83, 142, 40, 8, 167, 163, 58, 70, // 'wW.S.(...:F + 76, 114, 156, 7, 4, 179, 99, 12, 225, 229, 38, 237, // Lr....c...&. + 42, 25, 68, 49, 202, 82, 112, 246, 199, 211, 73, 56, // *.D1.Rp...I8 + 158, 120, 236, 167, 226, 93, 21, 114, 64, 243, 227, 29, // .x...].r@... + 186, 223, 120, 233, 222, 22, 81, 196, 132, 192, 32, 241, // ..x...Q... . + 254, 240, 18, 76, 76, 159, 162, 196, 239, 205, 247, 110, // ...LL......n + 201, 142, 178, 67, 141, 184, 248, 93, 181, 217, 236, 75, // ...C...]...K + 212, 27, 136, 196, 123, 56, 12, 100, 185, 240, 181, 218, // ....{8.d.... + 113, 188, 22, 228, 63, 63, 50, 160, 150, 105, 133, 98, // q...??2..i.b + 107, 40, 191, 173, 129, 144, 238, 239, 158, 68, 197, 19, // k(.......D.. + 47, 124, 249, 10, 95, 127, 202, 163, 43, 74, 50, 252, // /|.._...+J2. + 93, 225, 235, 187, 68, 93, 195, 180, 88, 36, 145, 197, // ]...D]..X$.. + 223, 84, 229, 156, 127, 196, 114, 156, 194, 112, 151, 154, // .T....r..p.. + 248, 148, 106, 40, 121, 220, 38, 168, 241, 101, 85, 229, // ..j(y.&..eU. + 122, 109, 171, 170, 11, 185, 224, 231, 52, 167, 252, 38, // zm......4..& + 99, 254, 150, 138, 149, 137, 250, 25, 14, 111, 201, 207, // c........o.. + 168, 22, 179, 164, 249, 91, 42, 221, 205, 115, 188, 88, // .....[*..s.X + 159, 226, 75, 82, 124, 137, 210, 100, 238, 230, 214, 88, // ..KR|..d...X + 103, 50, 136, 11, 254, 19, 190, 24, 162, 6, 171, 154, // g2.......... + 94, 104, 23, 103, 88, 212, 25, 37, 210, 81, 190, 52, // ^h.gX..%.Q.4 + 143, 168, 117, 83, 200, 147, 40, 77, 103, 81, 124, 205, // ..uS..(MgQ|. + 11, 95, 99, 55, 178, 112, 21, 213, 133, 34, 207, 93, // ._c7.p...".] + 221, 233, 98, 33, 99, 205, 215, 254, 29, 147, 181, 94, // ..b!c......^ + 131, 208, 153, 71, 249, 29, 95, 186, 234, 183, 115, 158, // ...G.._...s. + 250, 242, 106, 45, 115, 210, 210, 103, 145, 154, 167, 192, // ..j-s..g.... + 83, 174, 229, 93, 116, 7, 96, 218, 41, 99, 87, 251, // S..]t.`.)cW. + 94, 174, 50, 62, 117, 111, 23, 114, 190, 137, 97, 91, // ^.2>uo.r..a[ + 155, 170, 98, 193, 127, 242, 47, 230, 128, 164, 123, 39, // ..b.../...{' + 101, 180, 27, 254, 15, 228, 255, 0, 84, 79, 76, 0, // e.......TOL. + 0, 0 // . +}; +static const unsigned char v2[] = { + 31, 139, 8, 8, 116, 140, 100, 101, 0, 3, 104, 105, // ....t.de..hi + 115, 116, 111, 114, 121, 46, 109, 105, 110, 46, 106, 115, // story.min.js + 0, 237, 91, 109, 111, 219, 186, 146, 254, 43, 182, 47, // ..[mo....+./ + 214, 144, 96, 86, 181, 123, 206, 61, 187, 43, 151, 215, // ..`V.{.=.+.. + 72, 211, 52, 9, 144, 32, 65, 147, 246, 124, 8, 140, // H.4.. A..|.. + 3, 197, 166, 109, 181, 50, 233, 82, 146, 147, 192, 214, // ...m.2.R.... + 127, 223, 25, 190, 72, 148, 45, 167, 233, 222, 158, 189, // ....H.-..... + 7, 187, 251, 37, 150, 248, 50, 28, 14, 135, 51, 207, // ...%..2...3. + 67, 49, 237, 89, 206, 39, 89, 44, 184, 151, 17, 238, // C1.Y.'Y,.... + 111, 58, 226, 254, 11, 155, 100, 29, 74, 179, 167, 21, // o:....d.J... + 19, 179, 22, 123, 92, 9, 153, 165, 221, 238, 94, 205, // ...{......^. + 82, 76, 243, 132, 141, 244, 79, 96, 218, 81, 238, 249, // RL....O`.Q.. + 97, 199, 202, 172, 26, 79, 217, 44, 230, 172, 219, 213, // a....O.,.... + 191, 65, 180, 156, 142, 244, 163, 119, 55, 134, 113, 195, // .A.....w7.q. + 67, 227, 142, 204, 111, 112, 22, 167, 153, 144, 79, 74, // C...op....OJ + 126, 230, 190, 21, 94, 182, 136, 83, 82, 78, 195, 223, // ~...^..SRN.. + 72, 150, 229, 146, 183, 170, 137, 249, 27, 251, 220, 226, // H........... + 158, 240, 55, 241, 204, 99, 119, 98, 236, 155, 134, 248, // ..7..cwb.... + 108, 245, 31, 174, 35, 217, 146, 20, 139, 232, 198, 148, // l...#....... + 133, 155, 130, 196, 211, 80, 144, 68, 68, 83, 54, 13, // .....P.DDS6. + 219, 131, 98, 104, 186, 102, 216, 117, 18, 37, 137, 39, // ..bh.f.u.%.' + 173, 4, 34, 73, 245, 204, 125, 120, 209, 221, 104, 187, // .."I..}x..h. + 95, 85, 20, 56, 12, 163, 155, 82, 16, 15, 150, 20, // _U.8...R.... + 22, 32, 152, 80, 6, 127, 87, 180, 211, 33, 220, 235, // . .P..W..!.. + 195, 228, 238, 220, 245, 33, 12, 86, 40, 79, 89, 43, // .....!.V(OY+ + 205, 100, 12, 214, 26, 150, 243, 18, 56, 75, 171, 84, // .d......8K.T + 183, 155, 5, 127, 252, 193, 210, 75, 189, 66, 89, 184, // .......K.BY. + 1, 91, 71, 121, 146, 133, 89, 81, 112, 167, 10, 117, // .[Gy..YQp..u + 130, 49, 37, 139, 50, 118, 29, 101, 11, 10, 67, 71, // .1%.2v.e..CG + 50, 181, 207, 137, 152, 68, 40, 61, 61, 146, 236, 228, // 2....D(==... + 91, 30, 37, 212, 54, 190, 48, 53, 101, 193, 37, 91, // [.%.6.05e.%[ + 194, 122, 148, 203, 98, 74, 207, 162, 116, 177, 91, 246, // .z..bJ..t.[. + 78, 138, 135, 148, 73, 91, 188, 22, 241, 180, 213, 183, // N...I[...... + 102, 247, 222, 248, 195, 43, 229, 9, 129, 118, 143, 107, // f....+...v.k + 41, 86, 76, 102, 79, 30, 39, 157, 250, 208, 29, 178, // )VLfO.'..... + 97, 60, 95, 50, 25, 221, 39, 44, 132, 137, 204, 89, // a<_2..',...Y + 22, 238, 123, 129, 220, 209, 184, 40, 124, 114, 112, 132, // ..{....(|rp. + 189, 9, 191, 120, 144, 189, 158, 48, 142, 154, 84, 12, // ...x...0..T. + 147, 26, 60, 51, 169, 210, 222, 47, 28, 42, 174, 86, // ..<3.../.*.V + 232, 217, 169, 84, 139, 250, 98, 193, 85, 23, 171, 124, // ...T..b.U..| + 4, 202, 255, 187, 79, 38, 84, 120, 145, 79, 114, 120, // ....O&Tx.Orx + 251, 15, 159, 164, 240, 150, 251, 100, 6, 111, 255, 233, // .......d.o.. + 147, 4, 222, 102, 254, 240, 192, 234, 78, 2, 227, 121, // ...f....N..y + 164, 201, 37, 210, 189, 218, 186, 27, 37, 182, 190, 32, // ..%.....%.. + 59, 81, 202, 221, 3, 59, 14, 13, 239, 209, 116, 122, // ;Q...;....tz + 193, 162, 105, 204, 231, 55, 9, 12, 71, 221, 72, 160, // ..i..7..G.H. + 103, 219, 121, 13, 145, 134, 102, 193, 100, 17, 201, 163, // g.y...f.d... + 12, 54, 26, 108, 18, 40, 235, 193, 72, 60, 64, 193, // .6.l.(..H<@. + 171, 31, 23, 16, 164, 249, 61, 116, 133, 213, 14, 43, // ......=t...+ + 49, 215, 18, 86, 230, 145, 214, 213, 55, 22, 239, 43, // 1..V....7..+ + 9, 49, 159, 178, 199, 171, 153, 199, 29, 17, 176, 245, // .1.......... + 24, 159, 103, 11, 87, 210, 173, 140, 226, 228, 229, 26, // ..g.W....... + 101, 70, 196, 171, 129, 146, 155, 196, 19, 230, 245, 201, // eF.......... + 43, 171, 92, 181, 205, 93, 73, 184, 230, 156, 102, 219, // +....]I...f. + 45, 8, 35, 12, 131, 144, 192, 63, 18, 54, 175, 85, // -.#....?.6.U + 179, 243, 183, 142, 63, 148, 109, 74, 95, 13, 186, 93, // ....?.mJ_..] + 79, 64, 141, 209, 89, 250, 132, 87, 111, 16, 235, 124, // O@..Y..Wo..| + 187, 1, 156, 206, 35, 236, 108, 252, 205, 202, 96, 85, // ....#.l...`U + 175, 120, 71, 70, 236, 99, 193, 148, 77, 196, 148, 125, // .xGF.c..M..} + 250, 120, 14, 54, 34, 155, 21, 40, 205, 163, 37, 11, // .x.6"..(..%. + 57, 73, 89, 36, 39, 139, 16, 164, 194, 204, 217, 168, // 9IY$'....... + 211, 9, 25, 89, 128, 117, 66, 80, 18, 74, 4, 150, // ...Y.uBP.J.. + 136, 162, 168, 135, 184, 134, 249, 6, 86, 38, 204, 25, // ........V&.. + 108, 165, 164, 194, 204, 179, 0, 133, 193, 236, 25, 47, // l........../ + 21, 80, 166, 41, 231, 0, 9, 13, 6, 135, 137, 192, // .P.)........ + 131, 39, 123, 212, 104, 226, 120, 5, 67, 237, 122, 204, // .'{.h.x.C.z. + 39, 2, 154, 254, 13, 155, 10, 211, 84, 171, 232, 52, // '.......T..4 + 21, 168, 118, 79, 64, 198, 40, 234, 254, 254, 231, 68, // ..vO@.(....D + 253, 23, 4, 247, 90, 108, 54, 145, 38, 74, 211, 120, // ....Zl6.&J.x + 14, 102, 168, 101, 87, 33, 61, 109, 202, 193, 144, 191, // .f.eW!=m.... + 141, 228, 28, 162, 13, 135, 156, 173, 61, 112, 200, 123, // ........=p.{ + 61, 109, 106, 70, 203, 186, 59, 62, 30, 218, 110, 162, // =mjF..;>..n. + 21, 131, 41, 125, 51, 192, 74, 138, 76, 32, 8, 64, // ..)}3.J.L .@ + 235, 95, 61, 112, 27, 212, 116, 154, 101, 68, 248, 96, // ._=p..t.eD.` + 64, 204, 187, 42, 73, 251, 133, 157, 62, 228, 104, 12, // @..*I...>.h. + 181, 125, 159, 68, 16, 146, 98, 140, 90, 240, 58, 192, // .}.D..b.Z.:. + 176, 37, 188, 9, 134, 45, 21, 136, 247, 38, 89, 183, // .%...-...&Y. + 52, 136, 223, 104, 175, 53, 147, 55, 155, 11, 77, 207, // 4..h.5.7..M. + 231, 21, 60, 201, 70, 94, 76, 193, 67, 211, 106, 39, // ..<.F^L.C.j' + 249, 96, 10, 18, 195, 102, 5, 233, 20, 32, 13, 52, // .`...f... .4 + 144, 30, 64, 7, 40, 213, 178, 96, 189, 227, 210, 213, // ..@.(..`.... + 96, 18, 213, 11, 108, 50, 213, 85, 121, 222, 72, 187, // `...l2.Uy.H. + 148, 125, 173, 60, 68, 117, 209, 133, 232, 105, 61, 251, // .}..?...G#F + 171, 85, 242, 228, 105, 167, 39, 101, 156, 242, 75, 132, // .U..i.'e..K. + 14, 254, 151, 167, 11, 143, 213, 76, 6, 178, 6, 48, // .......L...0 + 142, 8, 102, 113, 146, 49, 233, 237, 167, 229, 86, 134, // ..fq.1....V. + 233, 161, 64, 243, 196, 238, 152, 54, 248, 101, 116, 55, // ..@....6.et7 + 94, 130, 241, 143, 164, 140, 158, 48, 156, 48, 218, 31, // ^......0.0.. + 178, 183, 217, 144, 65, 8, 229, 119, 108, 236, 4, 80, // ....A..wl..P + 54, 30, 194, 176, 66, 158, 68, 147, 69, 227, 184, 245, // 6...B.D.E... + 25, 113, 191, 40, 231, 178, 73, 89, 6, 97, 117, 185, // .q.(..IY.au. + 202, 32, 137, 78, 4, 159, 197, 114, 9, 240, 130, 167, // . .N...r.... + 49, 202, 184, 21, 144, 70, 161, 47, 227, 211, 11, 0, // 1....F./.... + 98, 140, 51, 25, 74, 194, 69, 22, 207, 158, 108, 65, // b.3.J.E...lA + 26, 198, 136, 17, 185, 221, 10, 52, 254, 65, 136, 54, // .......4.A.6 + 137, 248, 167, 148, 189, 191, 186, 164, 109, 175, 147, 115, // ........m..s + 141, 95, 167, 213, 2, 63, 0, 100, 16, 15, 219, 109, // ._...?.d...m + 91, 63, 4, 83, 49, 81, 243, 222, 47, 49, 241, 252, // [?.S1Q../1.. + 36, 97, 248, 6, 120, 1, 225, 223, 201, 26, 158, 173, // $a..x....... + 178, 116, 119, 91, 85, 22, 218, 105, 57, 218, 47, 82, // .tw[U..i9./R + 158, 220, 70, 216, 20, 68, 89, 6, 182, 86, 181, 94, // ..F..DY..V.^ + 7, 188, 177, 135, 194, 48, 18, 73, 64, 173, 107, 246, // .....0.I@.k. + 194, 49, 27, 26, 143, 26, 75, 157, 145, 167, 236, 192, // .1....K..... + 200, 0, 229, 143, 245, 250, 237, 39, 179, 114, 76, 238, // .......'.rL. + 25, 147, 153, 165, 6, 39, 81, 157, 211, 124, 165, 34, // .....'Q..|." + 143, 133, 219, 123, 161, 192, 116, 227, 209, 58, 158, 71, // ...{..t..:.G + 208, 36, 128, 53, 149, 71, 115, 208, 194, 56, 146, 87, // .$.5.Gs..8.W + 193, 215, 206, 17, 159, 74, 116, 181, 55, 65, 199, 167, // .....Jt.7A.. + 26, 218, 53, 212, 254, 26, 244, 77, 245, 118, 235, 84, // ..5....M.v.T + 95, 138, 251, 56, 97, 173, 155, 104, 22, 201, 184, 169, // _..8a..h.... + 193, 241, 2, 252, 149, 117, 252, 246, 94, 205, 239, 74, // .....u..^..J + 201, 180, 117, 189, 16, 220, 54, 192, 92, 99, 148, 95, // ..u...6..c._ + 232, 201, 1, 250, 194, 237, 123, 131, 97, 186, 3, 112, // ......{.a..p + 163, 94, 91, 51, 199, 181, 88, 169, 102, 87, 28, 185, // .^[3..X.fW.. + 202, 241, 34, 226, 243, 90, 180, 48, 86, 61, 108, 156, // .."..Z.0V=l. + 74, 183, 91, 25, 79, 161, 192, 76, 200, 29, 228, 84, // J.[.O..L...T + 252, 30, 103, 11, 145, 103, 31, 25, 30, 15, 124, 74, // ..g..g....|J + 33, 230, 157, 213, 128, 253, 15, 13, 244, 33, 6, 158, // !........!.. + 33, 30, 157, 129, 226, 244, 228, 49, 131, 61, 205, 68, // !......1.=.D + 142, 51, 82, 249, 73, 57, 80, 3, 117, 104, 149, 169, // .3R.I9P.uh.. + 62, 179, 169, 254, 217, 209, 142, 101, 124, 117, 99, 199, // >......e|uc. + 250, 177, 148, 103, 64, 22, 145, 36, 38, 17, 153, 168, // ...g@..$&... + 252, 208, 54, 129, 57, 31, 194, 75, 169, 10, 247, 115, // ..6.9..K...s + 202, 217, 67, 235, 68, 74, 8, 149, 157, 203, 152, 199, // ..C.DJ...... + 179, 152, 77, 91, 236, 113, 194, 86, 58, 15, 78, 38, // ..M[.q.V:.N& + 185, 148, 108, 58, 108, 225, 128, 217, 130, 181, 184, 224, // ..l:l....... + 175, 150, 182, 225, 148, 173, 91, 140, 175, 99, 41, 56, // ......[..c)8 + 70, 134, 22, 196, 74, 213, 104, 6, 233, 168, 197, 80, // F...J.h....P + 106, 107, 201, 210, 52, 154, 179, 86, 196, 167, 45, 216, // jk..4..V..-. + 248, 42, 252, 69, 73, 107, 193, 146, 21, 180, 106, 61, // .*.EIk....j= + 68, 146, 195, 186, 164, 224, 209, 67, 76, 44, 74, 203, // D......CL,J. + 148, 222, 57, 19, 24, 3, 15, 238, 15, 93, 77, 49, // ..9......]M1 + 28, 172, 146, 8, 232, 214, 235, 127, 75, 95, 207, 27, // ........K_.. + 14, 166, 210, 187, 89, 175, 55, 46, 0, 67, 229, 129, // ....Y.7..C.. + 70, 127, 231, 28, 36, 199, 17, 40, 249, 57, 22, 137, // F...$..(.9.. + 62, 222, 40, 50, 112, 249, 135, 86, 30, 204, 36, 180, // >.(2p..V..$. + 73, 111, 5, 172, 34, 29, 144, 188, 248, 151, 96, 6, // Io..".....`. + 175, 33, 9, 223, 60, 45, 239, 69, 2, 59, 43, 85, // .!..<-.E.;+U + 15, 187, 21, 65, 12, 25, 17, 93, 104, 212, 148, 157, // ...A...]h... + 76, 226, 47, 194, 166, 74, 144, 121, 120, 184, 12, 227, // L./..J.yx... + 24, 76, 48, 159, 128, 108, 112, 148, 178, 188, 109, 159, // .L0..lp...m. + 43, 14, 49, 178, 186, 133, 229, 128, 228, 47, 79, 100, // +.1....../Od + 124, 197, 100, 126, 65, 34, 227, 41, 38, 195, 188, 223, // |.d~A".)&... + 252, 218, 41, 204, 27, 75, 103, 212, 41, 204, 175, 246, // ..)..Kg.)... + 20, 134, 76, 225, 237, 239, 62, 1, 40, 191, 50, 91, // ..L...>.(.2[ + 30, 32, 61, 237, 32, 146, 157, 168, 56, 214, 33, 43, // . =. ...8.!+ + 55, 194, 100, 242, 105, 39, 202, 152, 128, 168, 195, 192, // 7.d.i'...... + 118, 187, 41, 10, 0, 217, 0, 48, 202, 197, 129, 146, // v.)....0.... + 130, 52, 228, 138, 93, 99, 253, 163, 111, 25, 4, 44, // .4..]c..o.., + 75, 101, 173, 254, 120, 228, 190, 132, 128, 128, 167, 21, // Ke..x....... + 24, 24, 233, 30, 33, 160, 236, 73, 133, 178, 33, 7, // ....!..I..!. + 14, 245, 170, 212, 149, 36, 138, 69, 76, 119, 243, 152, // .....$.ELw.. + 239, 1, 219, 6, 88, 225, 86, 53, 197, 116, 108, 23, // ....X.V5.tl. + 67, 196, 131, 213, 155, 176, 143, 108, 38, 25, 144, 253, // C......l&... + 136, 150, 74, 199, 221, 110, 12, 246, 205, 48, 201, 130, // ..J..n...0.. + 122, 210, 77, 180, 196, 30, 92, 130, 255, 205, 70, 211, // z.M.......F. + 221, 60, 28, 206, 200, 156, 42, 230, 112, 161, 33, 221, // .<....*.p.!. + 178, 106, 62, 31, 253, 22, 206, 201, 3, 84, 223, 71, // .j>......T.G + 41, 83, 156, 73, 241, 200, 253, 67, 30, 223, 83, 21, // )S.I...C..S. + 59, 167, 89, 200, 58, 108, 79, 96, 72, 64, 218, 174, // ;.Y.:lO`H@.. + 155, 207, 112, 54, 8, 200, 21, 109, 33, 234, 152, 70, // ..p6...m!..F + 49, 149, 216, 218, 208, 178, 39, 152, 177, 67, 190, 38, // 1.....'..C.& + 37, 237, 4, 63, 211, 180, 16, 76, 16, 245, 38, 189, // %..?...L..&. + 220, 226, 224, 7, 240, 218, 25, 173, 84, 214, 39, 92, // ........T.'. + 190, 55, 35, 15, 224, 164, 138, 241, 238, 242, 98, 240, // .7#.......b. + 204, 141, 26, 62, 20, 4, 212, 9, 17, 14, 147, 251, // ...>........ + 134, 84, 119, 9, 205, 3, 72, 90, 83, 177, 244, 252, // .Tw...HZS... + 32, 19, 55, 138, 11, 120, 191, 252, 230, 219, 51, 161, // .7..x....3. + 55, 100, 9, 125, 175, 112, 252, 164, 242, 16, 159, 60, // 7d.}.p.....< + 214, 211, 154, 119, 138, 180, 251, 212, 248, 34, 181, 231, // ...w.....".. + 105, 228, 42, 216, 193, 177, 222, 105, 101, 137, 211, 32, // i.*....ie.. + 82, 18, 96, 128, 139, 154, 56, 229, 74, 7, 19, 42, // R.`...8.J..* + 242, 254, 237, 246, 200, 187, 182, 116, 16, 209, 213, 141, // .......t.... + 59, 59, 172, 91, 121, 62, 150, 159, 32, 97, 56, 170, // ;;.[y>.. a8. + 73, 135, 164, 119, 226, 171, 242, 71, 207, 201, 51, 156, // I..w...G..3. + 118, 174, 175, 174, 59, 195, 171, 160, 1, 161, 171, 96, // v...;......` + 255, 84, 197, 126, 136, 251, 108, 244, 232, 109, 244, 4, // .T.~..l..m.. + 0, 213, 219, 73, 65, 68, 247, 195, 63, 96, 24, 197, // ...IAD..?`.. + 64, 254, 104, 240, 20, 199, 0, 140, 94, 86, 199, 145, // @.h.....^V.. + 232, 56, 160, 14, 45, 79, 233, 250, 190, 73, 230, 85, // .8..-O...I.U + 163, 76, 55, 18, 180, 60, 14, 52, 141, 128, 100, 190, // .L7..<.4..d. + 18, 67, 9, 69, 39, 200, 182, 142, 129, 105, 194, 228, // .C.E'....i.. + 191, 82, 109, 7, 114, 73, 239, 190, 98, 215, 49, 185, // .Rm.rI..b.1. + 109, 130, 35, 15, 61, 229, 65, 213, 161, 29, 154, 184, // m.#.=.A..... + 32, 103, 46, 140, 48, 231, 52, 18, 172, 244, 233, 230, // g..0.4..... + 172, 67, 212, 105, 76, 190, 115, 184, 227, 99, 67, 114, // .C.iL.s..cCr + 239, 41, 87, 176, 101, 7, 44, 10, 116, 210, 181, 168, // .)W.e.,.t... + 94, 24, 99, 37, 65, 111, 245, 137, 146, 58, 244, 80, // ^.c%Ao...:.P + 91, 67, 173, 52, 2, 22, 230, 35, 197, 13, 74, 116, // [C.4...#..Jt + 233, 109, 208, 197, 39, 68, 59, 124, 14, 88, 12, 9, // .m..'D;|.X.. + 181, 128, 104, 238, 239, 108, 189, 96, 1, 91, 135, 10, // ..h..l.`.[.. + 23, 90, 84, 166, 173, 20, 86, 54, 134, 93, 120, 89, // .ZT...V6.]xY + 158, 226, 166, 202, 222, 163, 126, 152, 246, 32, 52, 206, // ......~.. 4. + 52, 49, 141, 117, 187, 75, 58, 35, 149, 35, 200, 202, // 41.u.K:#.#.. + 17, 226, 194, 176, 227, 102, 45, 10, 220, 147, 95, 154, // .....f-..._. + 45, 252, 241, 228, 250, 226, 232, 248, 228, 95, 111, 100, // -........_od + 131, 172, 126, 212, 206, 22, 144, 9, 255, 69, 182, 30, // ..~......E.. + 166, 246, 104, 250, 242, 46, 29, 83, 99, 216, 31, 51, // ..h....Sc..3 + 106, 53, 164, 50, 236, 113, 205, 205, 129, 183, 9, 229, // j5.2.q...... + 209, 159, 26, 98, 224, 177, 7, 252, 165, 32, 31, 27, // ...b..... .. + 171, 176, 230, 156, 246, 201, 183, 154, 188, 243, 30, 205, // ............ + 200, 0, 156, 226, 124, 228, 169, 88, 181, 75, 98, 125, // ....|..X.Kb} + 195, 134, 200, 130, 92, 168, 163, 232, 231, 91, 173, 201, // .........[.. + 13, 100, 22, 76, 86, 231, 208, 84, 181, 109, 224, 167, // .d.LV..T.m.. + 205, 66, 159, 107, 168, 228, 22, 228, 29, 198, 186, 15, // .B.k........ + 255, 4, 132, 232, 118, 221, 55, 194, 233, 85, 80, 158, // ....v.7..UP. + 104, 128, 61, 108, 166, 122, 183, 221, 122, 223, 16, 36, // h.=l.z..z..$ + 193, 128, 125, 191, 1, 136, 191, 3, 157, 149, 50, 223, // ..}.......2. + 208, 230, 62, 193, 175, 201, 5, 121, 223, 16, 36, 175, // ..>....y..$. + 130, 250, 129, 136, 51, 138, 26, 193, 145, 173, 100, 25, // ....3.....d. + 81, 167, 116, 163, 167, 18, 150, 25, 200, 248, 144, 138, // Q.t......... + 237, 149, 31, 125, 37, 230, 235, 24, 236, 197, 240, 150, // ...}%....... + 224, 134, 14, 207, 136, 113, 162, 240, 11, 153, 139, 240, // .....q...... + 24, 254, 188, 139, 38, 95, 195, 79, 240, 240, 65, 72, // ....&_.O..AH + 32, 39, 211, 240, 35, 185, 7, 25, 95, 195, 15, 36, // '..#..._..$ + 81, 154, 133, 239, 203, 243, 170, 211, 194, 57, 158, 121, // Q........9.y + 250, 159, 226, 9, 127, 121, 112, 253, 19, 176, 181, 11, // .....yp..... + 167, 215, 116, 131, 175, 247, 240, 22, 110, 244, 119, 34, // ..t.....n.w" + 76, 88, 13, 172, 166, 211, 110, 248, 228, 216, 126, 221, // LX....n...~. + 233, 85, 80, 106, 7, 230, 193, 86, 209, 159, 190, 94, // .UPj...V...^ + 46, 177, 246, 13, 18, 66, 162, 72, 81, 86, 77, 179, // .....B.HQVM. + 134, 177, 220, 97, 246, 240, 102, 65, 154, 100, 236, 52, // ...a..fA.d.4 + 122, 94, 66, 81, 103, 29, 181, 195, 165, 90, 26, 34, // z^BQg....Z." + 220, 249, 32, 170, 191, 52, 154, 35, 44, 157, 241, 58, // .. ..4.#,..: + 192, 227, 204, 20, 17, 23, 242, 30, 198, 195, 167, 70, // ...........F + 8, 177, 43, 29, 207, 86, 96, 245, 231, 13, 155, 187, // ..+..V`..... + 73, 147, 186, 22, 135, 162, 123, 99, 79, 155, 165, 249, // I.....{cO... + 63, 104, 127, 196, 195, 190, 223, 195, 111, 45, 184, 154, // ?h......o-.. + 203, 191, 12, 109, 170, 145, 163, 67, 103, 81, 136, 171, // ...m...CgQ.. + 27, 217, 15, 242, 171, 146, 207, 176, 6, 250, 195, 20, // ............ + 177, 66, 155, 223, 194, 22, 45, 73, 21, 126, 75, 2, // .B....-I.~K. + 70, 142, 62, 209, 9, 53, 183, 250, 89, 28, 8, 8, // F.>..5..Y... + 214, 93, 52, 6, 90, 181, 12, 42, 63, 5, 102, 180, // .]4.Z..*?.f. + 12, 42, 207, 172, 83, 14, 109, 127, 13, 72, 173, 155, // .*..S.m..H.. + 205, 212, 231, 140, 125, 110, 147, 145, 25, 4, 137, 253, // ....}n...... + 207, 125, 47, 97, 34, 159, 145, 137, 124, 126, 1, 19, // .}/a"...|~.. + 249, 92, 1, 241, 207, 46, 19, 129, 252, 116, 163, 191, // .........t.. + 202, 156, 236, 235, 15, 218, 195, 166, 121, 192, 124, 132, // ........y.|. + 72, 10, 191, 220, 249, 176, 49, 28, 160, 195, 232, 189, // H.....1..... + 34, 196, 149, 120, 108, 217, 190, 48, 223, 178, 246, 190, // "..xl..0.... + 162, 249, 158, 128, 244, 96, 238, 70, 97, 211, 27, 88, // .....`.Fa..X + 182, 61, 60, 94, 181, 48, 186, 29, 121, 234, 243, 215, // .=<^.0..y... + 30, 181, 185, 240, 47, 254, 27, 212, 70, 252, 20, 106, // ..../...F..j + 243, 217, 165, 54, 103, 1, 120, 78, 118, 110, 182, 245, // ...6g.xNvn.. + 222, 132, 184, 223, 76, 118, 190, 211, 45, 243, 159, 167, // ....Lv..-... + 63, 23, 72, 127, 62, 90, 250, 131, 171, 117, 9, 171, // ?.H.>Z...u.. + 245, 213, 31, 126, 133, 165, 186, 236, 118, 231, 222, 165, // ...~....v... + 238, 114, 171, 150, 233, 140, 222, 237, 13, 113, 235, 143, // .r.......q.. + 107, 192, 188, 12, 255, 16, 85, 30, 188, 89, 19, 87, // k.....U..Y.W + 218, 65, 156, 248, 45, 64, 187, 130, 33, 75, 242, 16, // .A..-@..!K.. + 142, 55, 31, 139, 204, 207, 231, 239, 226, 121, 169, 14, // .7.......y.. + 115, 155, 241, 60, 223, 247, 26, 137, 142, 136, 58, 115, // s..<......:s + 60, 122, 1, 107, 224, 125, 8, 244, 177, 216, 223, 128, // v... .Q + 5, 104, 142, 42, 136, 184, 106, 8, 179, 47, 57, 73, // .h.*..j../9I + 159, 106, 242, 228, 229, 164, 79, 68, 117, 93, 20, 56, // .j....ODu].8 + 146, 128, 117, 89, 53, 92, 42, 105, 186, 6, 135, 156, // ..uY5.*i.... + 227, 96, 46, 68, 112, 29, 62, 223, 68, 217, 112, 187, // .`.Dp.>.D.p. + 197, 150, 224, 96, 75, 26, 57, 249, 10, 240, 188, 227, // ...`K.9..... + 69, 204, 158, 19, 186, 40, 166, 73, 50, 195, 113, 201, // E....(.I2.q. + 145, 147, 128, 23, 7, 18, 176, 32, 252, 96, 2, 62, // ....... .`.> + 210, 89, 20, 63, 162, 244, 6, 224, 14, 213, 250, 24, // .Y.?........ + 172, 1, 144, 219, 122, 37, 27, 197, 65, 186, 82, 197, // ....z%..A.R. + 224, 57, 214, 150, 12, 111, 40, 197, 26, 130, 64, 246, // .9...o(...@. + 94, 151, 217, 85, 56, 217, 149, 168, 81, 192, 225, 140, // ^..U8...Q... + 116, 117, 166, 136, 249, 246, 186, 121, 238, 117, 28, 242, // tu.....y.u.. + 115, 167, 15, 241, 205, 43, 167, 121, 103, 12, 48, 166, // s....+.yg.0. + 242, 128, 234, 5, 46, 89, 237, 75, 78, 102, 195, 208, // .....Y.KNf.. + 204, 51, 189, 123, 25, 120, 215, 174, 107, 163, 151, 9, // .3.{.x..k... + 77, 2, 96, 26, 213, 136, 108, 252, 114, 85, 71, 207, // M.`...l.rUG. + 155, 19, 184, 193, 218, 83, 234, 93, 53, 108, 143, 123, // .....S.]5l.{ + 13, 80, 30, 27, 171, 6, 123, 31, 128, 106, 14, 209, // .P....{..j.. + 203, 202, 83, 9, 96, 248, 221, 46, 127, 187, 59, 189, // ..S.`.....;. + 157, 207, 63, 255, 20, 216, 176, 99, 45, 106, 136, 163, // ..?....c-j.. + 112, 185, 96, 149, 159, 22, 251, 168, 1, 41, 153, 197, // p.`......).. + 4, 243, 231, 49, 193, 252, 238, 105, 108, 204, 247, 84, // ...1...il..T + 122, 227, 220, 5, 10, 75, 13, 20, 30, 74, 160, 112, // z....K...J.p + 141, 64, 225, 222, 2, 133, 43, 7, 40, 60, 146, 73, // .@....+.(<.I + 196, 79, 69, 120, 97, 0, 195, 141, 5, 12, 39, 37, // .OExa.....'% + 96, 56, 114, 1, 67, 242, 236, 5, 50, 227, 84, 223, // `8r.C...2.T. + 191, 134, 143, 183, 254, 234, 114, 108, 14, 132, 109, 12, // ......rl..m. + 117, 12, 182, 178, 164, 246, 114, 252, 80, 188, 149, 67, // u.....r.P..C + 214, 163, 3, 34, 224, 143, 159, 225, 13, 59, 76, 124, // ...".....;L| + 67, 72, 146, 2, 54, 81, 209, 120, 125, 112, 119, 37, // CH..6Q.x}pw% + 223, 210, 193, 118, 91, 6, 255, 106, 241, 6, 99, 60, // ...v[..j..c< + 176, 114, 223, 113, 104, 117, 241, 20, 66, 69, 230, 225, // .r.qhu..BE.. + 77, 242, 237, 246, 14, 108, 142, 247, 40, 249, 110, 105, // M....l..(.ni + 132, 109, 25, 222, 2, 156, 96, 61, 67, 22, 147, 211, // .m....`=C... + 104, 187, 157, 40, 170, 175, 235, 70, 49, 149, 161, 52, // h..(...F1..4 + 138, 232, 27, 182, 168, 56, 136, 140, 113, 35, 193, 202, // .....8..q#.. + 34, 247, 36, 109, 27, 147, 252, 210, 110, 67, 253, 21, // ".$m....nC.. + 196, 92, 115, 70, 14, 102, 155, 168, 105, 206, 104, 124, // ..sF.f..i.h| + 87, 6, 178, 193, 120, 152, 210, 78, 128, 182, 158, 109, // W...x..N...m + 183, 157, 160, 124, 82, 191, 154, 62, 165, 128, 107, 75, // ...|R..>..kK + 192, 145, 0, 190, 159, 82, 219, 127, 56, 133, 141, 50, // .....R..8..2 + 156, 190, 122, 165, 69, 47, 64, 244, 116, 60, 212, 242, // ..z.E/@.t<.. + 22, 234, 38, 231, 212, 15, 141, 212, 197, 200, 211, 5, // ..&......... + 36, 1, 80, 19, 38, 72, 171, 205, 59, 244, 47, 240, // $.P.&H..;./. + 232, 34, 247, 113, 152, 33, 188, 15, 19, 63, 14, 114, // .".q.!...?.r + 158, 46, 226, 25, 24, 46, 192, 123, 58, 237, 220, 168, // .......{:... + 21, 195, 230, 217, 110, 99, 181, 161, 152, 135, 191, 96, // ....nc.....` + 86, 167, 117, 71, 179, 165, 53, 104, 249, 69, 0, 28, // V.uG..5h.E.. + 113, 239, 245, 227, 191, 187, 169, 123, 204, 107, 155, 45, // q......{.k.- + 245, 157, 178, 117, 143, 98, 51, 178, 118, 239, 224, 200, // ...u.b3.v... + 31, 186, 250, 104, 216, 228, 255, 26, 208, 90, 109, 183, // ...h.....Zm. + 22, 222, 225, 213, 255, 93, 135, 199, 181, 194, 184, 90, // .....].....Z + 91, 57, 23, 158, 17, 81, 10, 168, 86, 63, 148, 149, // [9...Q..V?.. + 3, 172, 84, 215, 93, 131, 56, 213, 215, 94, 185, 61, // ..T.].8..^.= + 90, 106, 123, 237, 122, 141, 128, 21, 180, 188, 6, 201, // Zj{.z....... + 175, 117, 88, 220, 60, 108, 205, 228, 83, 5, 89, 106, // .uX..V.+..... + 182, 227, 111, 124, 21, 27, 56, 69, 123, 193, 199, 173, // ..o|..8E{... + 54, 238, 130, 62, 138, 214, 245, 180, 229, 123, 209, 240, // 6..>.....{.. + 96, 254, 185, 5, 161, 132, 19, 76, 6, 182, 97, 146, // `......L..a. + 211, 152, 68, 127, 131, 73, 161, 94, 192, 112, 73, 145, // ..D..I.^.pI. + 240, 33, 16, 184, 195, 214, 199, 21, 3, 235, 120, 104, // .!........xh + 247, 221, 251, 215, 65, 34, 232, 13, 223, 80, 212, 50, // ....A"...P.2 + 199, 238, 174, 144, 219, 218, 43, 224, 21, 101, 41, 158, // ......+..e). + 186, 185, 11, 195, 113, 28, 201, 152, 18, 109, 186, 48, // ....q....m.0 + 137, 162, 104, 162, 98, 216, 8, 41, 41, 86, 90, 113, // ..h.b..))VZq + 12, 83, 205, 31, 244, 43, 197, 17, 68, 144, 100, 254, // .S...+..D.d. + 195, 96, 157, 209, 47, 199, 114, 41, 142, 73, 126, 50, // .`../.r).I~2 + 81, 220, 236, 140, 241, 141, 61, 104, 169, 13, 94, 67, // Q.....=h..^C + 237, 47, 168, 63, 241, 125, 241, 188, 97, 91, 138, 141, // ./.?.}..a[.. + 222, 169, 22, 95, 154, 159, 181, 80, 103, 123, 75, 241, // ..._...Pg{K. + 231, 56, 35, 85, 94, 66, 92, 146, 168, 74, 88, 146, // .8#U^B...JX. + 146, 42, 171, 224, 40, 124, 37, 81, 78, 178, 60, 11, // .*..(|%QN.<. + 98, 146, 198, 247, 21, 89, 21, 37, 44, 167, 135, 226, // b....Y.%,... + 184, 130, 21, 41, 243, 125, 64, 202, 31, 171, 251, 2, // ...).}@..... + 138, 217, 161, 128, 213, 222, 91, 217, 91, 118, 144, 248, // ......[.[v.. + 24, 9, 20, 36, 74, 146, 38, 38, 101, 154, 146, 34, // ...$J.&&e.." + 131, 148, 228, 5, 248, 155, 175, 114, 152, 50, 229, 48, // .......r.2.0 + 101, 26, 114, 82, 198, 25, 68, 44, 201, 72, 226, 109, // e.rR..D,.H.m + 71, 49, 71, 57, 66, 103, 74, 10, 169, 7, 226, 51, // G1G9BgJ....3 + 128, 253, 8, 161, 158, 174, 119, 253, 102, 154, 203, 180, // ......w.f... + 6, 38, 20, 105, 172, 69, 203, 116, 173, 59, 72, 110, // .&.i.E.t.;Hn + 123, 206, 221, 63, 217, 211, 240, 172, 159, 158, 177, 131, // {..?........ + 37, 3, 15, 133, 127, 77, 102, 57, 255, 23, 164, 14, // %....Mf9.... + 79, 75, 80, 63, 233, 246, 112, 189, 46, 200, 47, 196, // OKP?..p.../. + 100, 157, 97, 219, 24, 177, 117, 96, 77, 227, 97, 97, // d.a...u`M.aa + 157, 54, 7, 50, 248, 10, 159, 237, 68, 91, 208, 75, // .6.2....D[.K + 226, 242, 14, 7, 221, 238, 166, 101, 152, 221, 230, 142, // .......e.... + 174, 249, 62, 255, 188, 182, 127, 0, 125, 38, 185, 82, // ..>.....}&.R + 199, 3, 0, 0, 0 // .... +}; +static const unsigned char v4[] = { + 31, 139, 8, 8, 211, 8, 101, 101, 0, 3, 109, 97, // ......ee..ma + 105, 110, 46, 99, 115, 115, 0, 221, 27, 219, 142, 236, // in.css...... + 182, 237, 87, 220, 19, 4, 216, 61, 181, 125, 108, 207, // ..W....=.}l. + 101, 119, 61, 104, 81, 160, 64, 209, 0, 73, 31, 218, // ew=hQ.@..I.. + 62, 52, 200, 158, 7, 141, 173, 153, 81, 214, 183, 250, // >4......Q... + 178, 179, 179, 174, 251, 237, 37, 117, 179, 124, 217, 153, // ......%u.|.. + 217, 38, 105, 147, 228, 96, 176, 22, 73, 145, 20, 69, // .&i..`..I..E + 81, 164, 164, 124, 250, 248, 27, 171, 38, 44, 57, 178, // Q..|....&,9. + 44, 142, 170, 202, 122, 94, 184, 11, 55, 176, 254, 101, // ,...z^..7..e + 125, 243, 213, 223, 173, 175, 89, 68, 179, 138, 66, 235, // }.....YD..B. + 80, 215, 69, 21, 126, 250, 100, 144, 186, 81, 158, 126, // P.E.~.d..Q.~ + 252, 244, 209, 14, 201, 174, 166, 165, 29, 110, 233, 46, // .........n.. + 47, 105, 187, 205, 95, 156, 138, 189, 178, 108, 31, 110, // /i.._....l.n + 243, 50, 166, 165, 3, 144, 141, 248, 12, 61, 171, 202, // .2.......=.. + 19, 22, 91, 95, 208, 21, 189, 163, 219, 110, 212, 215, // ..[_.....n.. + 113, 234, 163, 19, 229, 89, 77, 179, 58, 252, 240, 161, // q....YM.:... + 59, 212, 105, 210, 38, 44, 163, 206, 129, 178, 253, 161, // ;.i.&,...... + 14, 125, 119, 181, 113, 142, 116, 251, 196, 106, 167, 166, // .}w.q.t..j.. + 47, 53, 74, 162, 14, 137, 191, 111, 42, 64, 122, 222, // /5J....o*@z. + 151, 27, 39, 205, 95, 157, 154, 108, 57, 38, 92, 110, // ..'._..l9&.n + 156, 220, 108, 25, 159, 59, 16, 227, 236, 72, 202, 146, // ..l..;...H.. + 83, 248, 21, 72, 44, 173, 103, 82, 218, 127, 166, 201, // S..H,.gR.... + 51, 173, 89, 68, 236, 138, 100, 149, 83, 209, 146, 237, // 3.YD..d.S... + 36, 41, 37, 117, 83, 82, 0, 213, 53, 12, 174, 10, // $)%uSR..5... + 63, 68, 207, 190, 255, 193, 254, 80, 85, 158, 255, 65, // ?D.....PU..A + 208, 0, 7, 70, 106, 150, 103, 6, 85, 94, 84, 175, // ...Fj.g.U^T. + 31, 172, 69, 208, 109, 243, 248, 212, 166, 164, 220, 179, // ..E.m....... + 44, 244, 54, 230, 168, 88, 118, 0, 57, 117, 119, 40, // ,.6..Xv.9uw( + 91, 9, 241, 54, 81, 158, 228, 165, 194, 72, 243, 57, // [..6Q....H.9 + 117, 94, 56, 71, 22, 215, 135, 208, 47, 94, 58, 178, // u^8G..../^:. + 221, 150, 225, 17, 8, 232, 205, 119, 53, 171, 19, 250, // .......w5... + 249, 182, 29, 24, 39, 166, 81, 94, 114, 125, 194, 38, // ....'.Q^r}.& + 131, 254, 40, 211, 138, 243, 186, 166, 241, 230, 18, 65, // ..(........A + 119, 240, 237, 67, 96, 31, 22, 246, 97, 105, 31, 86, // w..C`...ai.V + 246, 97, 221, 242, 33, 114, 235, 41, 181, 56, 228, 56, // .a..!r.).8.8 + 28, 4, 105, 135, 170, 143, 5, 41, 186, 173, 93, 213, // ..i....)..]. + 101, 158, 237, 91, 147, 201, 54, 79, 64, 141, 46, 202, // e..[..6O@... + 99, 106, 63, 109, 99, 187, 40, 41, 76, 68, 90, 180, // cj?mc.()LDZ. + 230, 108, 53, 12, 38, 57, 203, 171, 130, 68, 212, 254, // .l5.&9...D.. + 219, 159, 190, 129, 111, 231, 175, 116, 223, 36, 48, 127, // ....o..t.$0. + 223, 208, 44, 201, 109, 0, 145, 40, 183, 255, 152, 103, // ..,.m..(...g + 224, 110, 164, 178, 191, 102, 91, 42, 196, 91, 72, 13, // .n...f[*.[H. + 136, 166, 100, 48, 227, 127, 161, 71, 91, 179, 218, 244, // ..d0...G[... + 227, 243, 105, 218, 85, 41, 73, 18, 99, 204, 247, 222, // ..i.U)I.c... + 151, 93, 213, 128, 214, 77, 97, 64, 239, 86, 95, 14, // .]...Ma@.V_. + 166, 210, 219, 20, 121, 197, 248, 64, 75, 154, 128, 200, // ....y..@K... + 103, 186, 121, 166, 37, 122, 84, 226, 144, 132, 237, 209, // g.y.%zT..... + 0, 128, 39, 9, 50, 131, 197, 82, 215, 121, 26, 58, // ..'.2..R.y.: + 110, 176, 66, 145, 192, 26, 166, 24, 154, 216, 2, 95, // n.B........_ + 77, 104, 203, 205, 7, 11, 14, 87, 132, 167, 252, 96, // Mh.....W...` + 214, 57, 0, 152, 144, 162, 162, 161, 250, 232, 182, 13, // .9.......... + 112, 207, 108, 150, 21, 77, 109, 231, 69, 189, 47, 243, // p.l..Mm.E./. + 166, 176, 43, 154, 208, 168, 182, 145, 49, 41, 41, 25, // ..+.....1)). + 152, 118, 48, 177, 194, 20, 184, 168, 102, 230, 121, 206, // .v0.....f.y. + 129, 71, 78, 171, 125, 189, 32, 113, 140, 241, 192, 83, // .GN.}. q...S + 26, 9, 21, 196, 216, 234, 18, 22, 26, 172, 254, 52, // ...........4 + 204, 242, 140, 118, 223, 213, 167, 130, 254, 78, 208, 125, // ...v.....N.} + 182, 69, 171, 164, 176, 156, 84, 3, 204, 150, 50, 104, // .E....T...2h + 9, 18, 237, 240, 164, 40, 40, 1, 86, 17, 13, 5, // .....((.V... + 102, 179, 37, 209, 19, 142, 56, 139, 181, 189, 184, 225, // f.%...8..... + 77, 4, 75, 201, 158, 10, 193, 33, 143, 28, 187, 60, // M.K....!...< + 106, 170, 18, 148, 109, 243, 166, 198, 33, 134, 164, 169, // j...m...!... + 115, 137, 4, 199, 99, 217, 51, 204, 98, 44, 162, 220, // s...c.3.b,.. + 129, 196, 249, 81, 244, 46, 202, 124, 15, 106, 86, 237, // ...Q...|.jV. + 27, 147, 29, 134, 74, 81, 150, 101, 48, 89, 85, 193, // ....JQ.e0YU. + 50, 71, 90, 163, 199, 129, 204, 33, 78, 197, 3, 174, // 2GZ....!N... + 132, 28, 63, 12, 51, 58, 124, 158, 27, 56, 218, 115, // ..?.3:|..8.s + 199, 104, 18, 111, 164, 242, 78, 190, 219, 129, 233, 66, // .h.o..N....B + 39, 128, 112, 209, 139, 17, 44, 140, 69, 57, 199, 76, // '.p...,.E9.L + 24, 69, 247, 217, 177, 132, 58, 77, 145, 228, 36, 118, // .E....:M..$v + 46, 154, 30, 253, 69, 47, 244, 170, 73, 193, 19, 78, // ....E/..I..N + 109, 204, 170, 34, 33, 167, 48, 97, 21, 88, 161, 6, // m.."!.0a.X.. + 15, 223, 38, 121, 244, 244, 207, 38, 175, 169, 29, 199, // ..&y...&.... + 118, 156, 216, 59, 182, 135, 16, 107, 79, 66, 143, 125, // v..;...kOB.} + 40, 237, 2, 131, 129, 142, 159, 29, 31, 39, 140, 109, // (........'.m + 10, 177, 19, 186, 167, 89, 220, 246, 94, 151, 210, 172, // .....Y..^... + 177, 243, 196, 110, 112, 51, 1, 225, 85, 125, 74, 196, // ...np3..U}J. + 0, 231, 124, 84, 47, 12, 152, 79, 92, 1, 106, 70, // ..|T/..O..jF + 59, 190, 142, 66, 225, 10, 48, 146, 136, 30, 120, 180, // ;..B..0...x. + 210, 43, 105, 138, 106, 115, 8, 44, 172, 62, 133, 190, // .+i.js.,.>.. + 92, 26, 95, 60, 68, 100, 65, 118, 138, 213, 60, 151, // .._T + 207, 123, 251, 153, 197, 52, 215, 19, 199, 167, 107, 28, // .{...4....k. + 205, 82, 22, 199, 9, 237, 176, 163, 160, 78, 201, 139, // .R.......N.. + 218, 163, 48, 116, 12, 28, 248, 0, 196, 52, 251, 172, // ..0t.....4.. + 57, 114, 31, 131, 12, 34, 196, 37, 25, 151, 121, 49, // 9r...".%..y1 + 78, 38, 120, 66, 32, 227, 27, 6, 105, 152, 33, 231, // N&xB ...i.!. + 5, 102, 107, 14, 126, 82, 112, 30, 81, 32, 246, 210, // .fk.~Rp.Q .. + 158, 180, 7, 105, 170, 50, 175, 161, 173, 90, 213, 19, // ...i.2...Z.. + 61, 246, 228, 188, 165, 41, 43, 24, 45, 242, 242, 205, // =....)+.-... + 230, 73, 53, 11, 146, 1, 206, 234, 27, 39, 221, 96, // .I5......'.` + 25, 172, 178, 215, 28, 2, 188, 165, 186, 194, 180, 37, // ...........% + 78, 149, 145, 2, 156, 176, 100, 81, 157, 65, 204, 8, // N.....dQ.A.. + 33, 120, 188, 48, 8, 106, 39, 65, 181, 47, 73, 204, // !x.0.j'A./I. + 40, 6, 229, 50, 79, 29, 189, 159, 88, 35, 236, 51, // (..2O...X#.3 + 35, 111, 35, 235, 124, 130, 3, 107, 177, 140, 36, 90, // #o#.|..k..$Z + 23, 216, 24, 15, 52, 118, 94, 105, 153, 43, 88, 214, // ....4v^i.+X. + 164, 176, 100, 35, 71, 172, 195, 49, 84, 26, 122, 66, // ..d#G..1T.zB + 92, 146, 200, 148, 131, 209, 19, 162, 28, 198, 29, 19, // ............ + 34, 66, 145, 116, 13, 175, 120, 153, 162, 164, 135, 239, // "B.t..x..... + 118, 59, 3, 39, 129, 139, 237, 125, 176, 91, 223, 123, // v;.'...}.[.{ + 211, 94, 50, 10, 123, 150, 103, 125, 225, 193, 127, 6, // .^2.{.g}.... + 197, 60, 234, 28, 84, 136, 163, 241, 24, 187, 77, 154, // .<..T.....M. + 82, 141, 102, 91, 162, 71, 243, 137, 147, 16, 204, 88, // R.f[.G.....X + 75, 82, 213, 198, 44, 156, 184, 151, 40, 192, 161, 161, // KR..,...(... + 202, 223, 36, 4, 246, 17, 88, 71, 122, 46, 48, 181, // ..$...XGz.0. + 52, 176, 21, 45, 24, 81, 13, 92, 23, 74, 105, 165, // 4..-.Q...Ji. + 130, 92, 46, 67, 189, 52, 112, 162, 160, 70, 141, 53, // ...C.4p..F.5 + 213, 136, 137, 202, 26, 51, 213, 93, 163, 134, 131, 208, // .....3.].... + 96, 21, 179, 198, 240, 241, 40, 123, 132, 24, 110, 231, // `.....({..n. + 86, 165, 147, 103, 201, 169, 213, 174, 75, 182, 144, 192, // V..g....K... + 193, 166, 184, 209, 89, 175, 10, 40, 248, 169, 99, 182, // ....Y..(..c. + 10, 227, 14, 66, 115, 80, 106, 151, 128, 177, 68, 180, // ...BsPj...D. + 217, 68, 9, 43, 32, 25, 139, 234, 27, 207, 230, 255, // .D.+ ....... + 110, 55, 199, 3, 236, 63, 220, 159, 113, 27, 56, 150, // n7...?..q.8. + 164, 80, 73, 148, 116, 207, 206, 149, 65, 212, 161, 207, // .PI.t...A... + 176, 156, 42, 7, 35, 85, 59, 132, 137, 232, 53, 38, // ..*.#U;...5& + 196, 64, 55, 38, 228, 193, 207, 221, 177, 23, 8, 197, // .@7&........ + 122, 104, 188, 217, 185, 106, 132, 211, 49, 119, 174, 202, // zh...j..1w.. + 32, 219, 73, 78, 9, 166, 130, 32, 252, 100, 88, 74, // .IN... .dXJ + 180, 59, 151, 47, 60, 199, 107, 197, 2, 132, 129, 136, // .;./<.k..... + 20, 19, 32, 50, 215, 4, 80, 66, 119, 72, 130, 127, // .. 2..PBwH.. + 176, 201, 221, 69, 40, 94, 246, 193, 218, 197, 98, 195, // ...E(^....b. + 227, 249, 40, 208, 188, 58, 190, 215, 190, 242, 68, 20, // ..(..:....D. + 2, 33, 7, 60, 126, 183, 188, 127, 252, 172, 129, 203, // .!.<~....... + 123, 1, 92, 123, 6, 112, 13, 148, 169, 179, 84, 155, // {..{.p....T. + 180, 95, 194, 174, 239, 166, 39, 224, 43, 32, 14, 103, // ._....'.+ .g + 47, 167, 207, 233, 53, 4, 18, 223, 36, 129, 252, 24, // /...5...$... + 186, 142, 232, 4, 144, 19, 7, 3, 226, 57, 90, 73, // .........9ZI + 186, 237, 249, 142, 185, 36, 206, 66, 161, 184, 101, 220, // .....$.B..e. + 59, 141, 88, 14, 16, 114, 20, 101, 47, 85, 152, 77, // ;.X..r.e/U.M + 201, 168, 231, 116, 231, 240, 169, 154, 28, 188, 24, 128, // ...t........ + 165, 88, 150, 241, 12, 142, 111, 186, 122, 195, 52, 129, // .X....o.z.4. + 224, 81, 9, 125, 209, 40, 108, 232, 94, 3, 140, 1, // .Q.}.(l.^... + 235, 220, 125, 9, 217, 171, 194, 96, 163, 115, 197, 58, // ..}....`.s.: + 25, 110, 202, 238, 1, 39, 92, 174, 181, 64, 170, 10, // .n...'...@.. + 176, 64, 193, 22, 18, 178, 106, 117, 105, 30, 40, 170, // .@....jui.(. + 117, 15, 83, 160, 93, 3, 197, 148, 130, 66, 94, 0, // u.S.]....B^. + 227, 134, 60, 65, 194, 249, 231, 0, 7, 182, 56, 224, // .. + 155, 17, 90, 67, 124, 78, 141, 52, 39, 88, 114, 98, // ..ZC|N.4'Xrb + 52, 47, 76, 60, 254, 9, 125, 203, 183, 144, 154, 195, // 4/L<..}..... + 170, 3, 108, 70, 79, 142, 103, 187, 234, 171, 53, 224, // ..lFO.g...5. + 56, 4, 40, 70, 142, 10, 138, 223, 124, 217, 146, 138, // 8.(F....|... + 85, 176, 156, 22, 176, 85, 194, 130, 226, 56, 14, 11, // U....U...8.. + 17, 210, 185, 102, 150, 35, 212, 156, 228, 62, 142, 80, // ...f.#...>.P + 121, 66, 105, 187, 38, 4, 150, 184, 174, 192, 52, 252, // yBi.&.....4. + 230, 153, 148, 55, 99, 134, 183, 246, 12, 244, 116, 123, // ...7c.....t{ + 107, 137, 237, 161, 239, 35, 218, 128, 192, 60, 234, 31, // k....#...<.. + 61, 92, 36, 89, 18, 254, 237, 8, 142, 140, 248, 14, // =.$Y........ + 100, 118, 16, 153, 151, 194, 124, 59, 198, 64, 159, 110, // dv....|;.@.n + 52, 152, 105, 6, 136, 214, 50, 105, 86, 83, 26, 237, // 4.i...2iVS.. + 21, 3, 58, 211, 78, 167, 95, 147, 157, 78, 83, 59, // ..:.N._..NS; + 157, 198, 118, 194, 152, 58, 165, 113, 13, 51, 161, 37, // ..v..:.q.3.% + 236, 81, 143, 95, 182, 137, 254, 240, 68, 79, 188, 14, // .Q._....DO.. + 170, 44, 172, 193, 97, 239, 51, 6, 36, 53, 243, 33, // .,..a.3.$5.! + 135, 201, 110, 59, 216, 184, 51, 150, 18, 158, 69, 0, // ..n;..3...E. + 165, 104, 240, 125, 24, 154, 150, 95, 89, 24, 114, 73, // .h.}..._Y.rI + 105, 177, 108, 135, 71, 0, 16, 80, 69, 13, 230, 200, // i.l.G..PE... + 212, 96, 92, 171, 241, 184, 140, 217, 103, 5, 49, 132, // .`......g.1. + 127, 67, 129, 92, 112, 179, 0, 176, 73, 179, 10, 246, // .C..p...I... + 126, 40, 179, 235, 27, 223, 134, 128, 8, 209, 7, 178, // ~(.......... + 25, 127, 87, 226, 196, 246, 93, 131, 243, 93, 131, 73, // ..W...]..].I + 87, 30, 86, 128, 74, 196, 151, 152, 97, 154, 132, 163, // W.V.J...a... + 16, 29, 33, 185, 193, 82, 84, 157, 200, 58, 188, 170, // ..!..RT..:.. + 54, 33, 33, 64, 96, 207, 1, 121, 21, 212, 51, 164, // 6!!@`..y..3. + 172, 91, 94, 20, 242, 234, 190, 10, 69, 148, 67, 176, // .[^.....E.C. + 162, 65, 6, 19, 10, 131, 71, 68, 185, 109, 76, 18, // .A....GD.mL. + 1, 234, 92, 60, 225, 101, 187, 147, 34, 209, 77, 169, // ...<.e..".M. + 136, 34, 219, 67, 101, 5, 86, 32, 122, 123, 69, 192, // .".Ce.V z{E. + 146, 3, 124, 221, 126, 129, 29, 151, 151, 234, 98, 152, // ..|.~.....b. + 14, 39, 231, 91, 199, 102, 2, 81, 61, 150, 147, 30, // .'.[.f.Q=... + 254, 136, 190, 231, 127, 130, 189, 5, 67, 58, 135, 74, // ........C:.J + 61, 120, 178, 9, 152, 229, 239, 97, 131, 173, 111, 84, // =x.....a..oT + 41, 124, 251, 239, 97, 83, 172, 57, 69, 92, 66, 2, // )|..aS.9E.B. + 89, 86, 180, 207, 144, 48, 65, 0, 119, 141, 110, 80, // YV...0A.w.nP + 216, 199, 27, 223, 114, 172, 222, 143, 135, 157, 110, 111, // ....r.....no + 111, 71, 57, 80, 223, 241, 237, 62, 157, 27, 51, 172, // oG9P...>..3. + 227, 157, 211, 53, 122, 42, 90, 67, 209, 201, 73, 181, // ...5z*ZC..I. + 144, 90, 188, 140, 180, 29, 119, 69, 117, 245, 125, 1, // .Z....wEu.}. + 207, 88, 71, 221, 207, 244, 4, 235, 210, 100, 55, 240, // .XG......d7. + 64, 4, 12, 28, 80, 82, 148, 180, 142, 14, 38, 141, // @...PR....&. + 4, 117, 174, 42, 27, 68, 34, 172, 139, 8, 145, 11, // .u.*.D"..... + 107, 164, 204, 149, 70, 53, 134, 65, 32, 74, 252, 158, // k...F5.A J.. + 64, 180, 13, 130, 211, 80, 0, 68, 85, 153, 110, 151, // @....P.DU.n. + 77, 22, 193, 162, 29, 243, 158, 41, 86, 128, 24, 79, // M......)V..O + 78, 105, 2, 149, 13, 100, 4, 118, 223, 151, 195, 53, // Ni...d.v...5 + 3, 69, 0, 41, 62, 158, 118, 82, 60, 182, 228, 22, // .E.)>.vR<... + 198, 83, 130, 166, 210, 153, 169, 196, 138, 52, 98, 72, // .S.......4bH + 242, 0, 255, 225, 198, 160, 72, 146, 253, 152, 199, 144, // ......H..... + 69, 58, 145, 177, 144, 203, 72, 128, 219, 65, 157, 133, // E:....H..A.. + 183, 24, 18, 1, 171, 118, 128, 10, 12, 212, 182, 157, // .....v...... + 243, 12, 179, 179, 86, 155, 151, 54, 83, 188, 150, 43, // ....V..6S..+ + 106, 157, 41, 1, 214, 191, 78, 224, 121, 131, 19, 167, // j.)...N.y... + 254, 240, 109, 112, 238, 94, 238, 183, 55, 65, 240, 96, // ..mp.^..7A.` + 5, 11, 31, 126, 171, 79, 218, 51, 135, 221, 208, 47, // ...~.O.3.../ + 77, 238, 139, 119, 112, 247, 128, 187, 191, 128, 223, 195, // M..wp....... + 21, 220, 75, 176, 251, 123, 84, 95, 45, 173, 192, 11, // ..K..{T_-... + 240, 119, 5, 115, 190, 1, 22, 164, 132, 248, 218, 14, // .w.s........ + 88, 241, 211, 17, 32, 219, 227, 33, 4, 117, 214, 90, // X... ..!.u.Z + 129, 189, 41, 124, 124, 6, 143, 10, 44, 238, 172, 135, // ..)||...,... + 135, 145, 229, 246, 3, 209, 123, 97, 49, 255, 122, 158, // ......{a1.z. + 193, 18, 172, 181, 132, 129, 45, 215, 151, 184, 6, 239, // ......-..... + 224, 58, 59, 203, 99, 174, 104, 255, 247, 168, 138, 246, // .:;.c.h..... + 15, 214, 248, 59, 195, 84, 164, 68, 239, 178, 0, 232, // ...;.T.D.... + 185, 92, 193, 239, 225, 34, 219, 213, 59, 184, 222, 91, // ....."..;..[ + 193, 202, 131, 95, 112, 134, 235, 51, 203, 19, 90, 191, // ..._p..3..Z. + 75, 91, 112, 130, 96, 1, 115, 182, 90, 158, 225, 203, // K[p.`.s.Z... + 67, 223, 245, 118, 133, 193, 139, 223, 91, 44, 49, 55, // C..v....[,17 + 80, 135, 70, 50, 112, 97, 118, 160, 64, 98, 7, 47, // P.F2pav.@b./ + 176, 140, 147, 32, 121, 18, 32, 78, 31, 20, 76, 86, // ... y. N..LV + 251, 50, 120, 2, 121, 48, 34, 159, 163, 238, 137, 31, // .2x.y0"..... + 221, 213, 136, 126, 61, 203, 127, 221, 11, 88, 14, 59, // ...~=....X.; + 248, 83, 106, 173, 250, 136, 183, 63, 171, 187, 174, 119, // .Sj....?...w + 10, 44, 5, 20, 78, 156, 197, 168, 86, 127, 24, 131, // .,..N...V... + 68, 166, 210, 252, 148, 194, 31, 242, 85, 135, 41, 126, // D.......U.)~ + 207, 216, 31, 118, 152, 167, 55, 200, 39, 34, 196, 206, // ...v..7.'".. + 49, 233, 162, 54, 148, 226, 100, 24, 190, 63, 247, 25, // 1..6..d..?.. + 147, 107, 226, 245, 128, 216, 159, 165, 86, 217, 90, 145, // .k......V.Z. + 224, 97, 192, 208, 146, 226, 76, 160, 168, 199, 22, 19, // .a....L..... + 176, 55, 12, 36, 183, 234, 42, 53, 238, 140, 221, 123, // .7.$..*5...{ + 49, 176, 225, 195, 6, 147, 252, 197, 188, 120, 86, 83, // 1........xVS + 56, 36, 191, 51, 201, 43, 147, 251, 12, 115, 113, 64, // 8$.3.+...sq@ + 129, 36, 120, 193, 62, 184, 113, 191, 195, 32, 206, 1, // .$x.>.q.. .. + 9, 182, 7, 184, 133, 198, 165, 20, 54, 243, 116, 128, // ........6.t. + 92, 105, 100, 6, 229, 17, 73, 6, 200, 165, 70, 86, // .id...I...FV + 52, 101, 19, 161, 107, 68, 55, 69, 65, 203, 136, 84, // 4e..kD7EA..T + 116, 124, 15, 172, 17, 120, 82, 73, 184, 69, 215, 227, // t|...xRI.E.. + 87, 32, 253, 224, 135, 187, 143, 72, 128, 70, 151, 102, // W .....H.F.f + 111, 108, 58, 38, 45, 47, 144, 177, 205, 183, 136, 229, // ol:&-/...... + 69, 118, 254, 106, 109, 249, 235, 133, 229, 223, 93, 197, // Ev.jm.....]. + 112, 117, 153, 161, 119, 103, 249, 254, 210, 242, 131, 251, // pu..wg...... + 107, 24, 94, 30, 240, 221, 202, 186, 95, 193, 152, 175, // k.^....._... + 225, 118, 119, 145, 27, 196, 213, 53, 48, 244, 175, 225, // .vw....50... + 246, 112, 121, 176, 16, 252, 151, 214, 226, 178, 110, 148, // .py.......n. + 102, 87, 76, 198, 29, 110, 168, 193, 85, 166, 67, 134, // fWL..n..U.C. + 151, 109, 135, 204, 96, 114, 239, 150, 23, 248, 225, 206, // .m..`r...... + 127, 89, 61, 220, 67, 125, 200, 230, 224, 119, 129, 159, // .Y=.C}...w.. + 216, 157, 175, 240, 62, 228, 136, 222, 119, 127, 73, 67, // ....>...w.IC + 181, 223, 95, 118, 63, 15, 244, 3, 159, 190, 56, 41, // .._v?.....8) + 198, 158, 252, 246, 136, 231, 182, 226, 49, 55, 249, 9, // ........17.. + 225, 84, 177, 240, 122, 32, 166, 18, 154, 51, 84, 111, // .T..z ...3To + 252, 250, 171, 29, 222, 223, 65, 254, 110, 45, 224, 39, // ......A.n-.' + 111, 234, 60, 207, 39, 182, 128, 66, 241, 96, 225, 93, // o.<.'..B.`.] + 80, 143, 120, 227, 146, 175, 103, 209, 151, 196, 6, 205, // P.x...g..... + 237, 152, 223, 60, 149, 210, 207, 150, 127, 69, 149, 164, // ...<.....E.. + 31, 136, 244, 135, 89, 147, 107, 75, 91, 223, 51, 26, // ....Y.kK[.3. + 39, 98, 198, 221, 229, 44, 94, 160, 180, 84, 148, 54, // 'b...,^..T.6 + 50, 140, 7, 170, 250, 43, 84, 122, 97, 26, 1, 184, // 2....+Tza... + 45, 161, 189, 70, 196, 242, 26, 235, 12, 249, 188, 105, // -..F.......i + 162, 1, 211, 243, 38, 194, 157, 112, 58, 139, 129, 57, // ....&..p:..9 + 139, 94, 124, 102, 178, 130, 51, 147, 181, 249, 95, 216, // .^|f..3..._. + 156, 19, 202, 213, 52, 115, 13, 61, 100, 200, 47, 225, // ....4s.=d./. + 110, 45, 143, 255, 155, 85, 137, 87, 162, 183, 243, 56, // n-...U.W...8 + 57, 170, 201, 125, 246, 25, 25, 252, 180, 228, 140, 160, // 9..}........ + 177, 36, 53, 57, 98, 84, 182, 248, 235, 95, 233, 188, // .$59bT..._.. + 243, 230, 155, 24, 205, 176, 103, 167, 4, 252, 156, 205, // ......g..... + 135, 110, 246, 219, 115, 226, 206, 26, 113, 155, 64, 109, // .n..s...q.@m + 98, 142, 79, 135, 199, 81, 7, 30, 40, 185, 216, 79, // b.O..Q..(..O + 35, 89, 125, 136, 52, 219, 234, 222, 98, 192, 213, 115, // #Y}.4...b..s + 189, 21, 222, 44, 39, 120, 38, 42, 254, 244, 227, 195, // ...,'x&*.... + 199, 1, 134, 174, 253, 179, 0, 3, 168, 30, 4, 24, // ............ + 32, 253, 20, 192, 128, 245, 143, 0, 12, 160, 184, 254, // ........... + 55, 0, 234, 130, 223, 4, 225, 213, 190, 209, 54, 30, // 7.........6. + 51, 168, 43, 9, 126, 127, 221, 246, 159, 78, 1, 52, // 3.+.~....N.4 + 192, 248, 20, 114, 59, 217, 227, 98, 207, 54, 143, 33, // ...r;..b.6.! + 236, 209, 243, 82, 9, 5, 83, 36, 252, 125, 233, 19, // ...R..S$.}.. + 181, 165, 173, 236, 222, 169, 237, 254, 254, 66, 216, 204, // .........B.. + 86, 79, 217, 244, 147, 4, 1, 223, 252, 127, 181, 250, // VO.......... + 89, 107, 115, 141, 205, 106, 150, 162, 183, 238, 154, 76, // Yks..j.....L + 94, 43, 52, 91, 22, 57, 91, 250, 202, 104, 121, 227, // ^+4[.9[..hy. + 46, 109, 136, 56, 129, 237, 223, 154, 93, 226, 70, 190, // .m.8....].F. + 19, 118, 253, 85, 101, 122, 136, 131, 207, 113, 231, 44, // .v.Uez...q., + 0, 240, 159, 76, 38, 183, 84, 245, 211, 57, 231, 143, // ...L&.T..9.. + 171, 184, 106, 242, 35, 174, 89, 178, 192, 164, 90, 188, // ..j.#.Y...Z. + 69, 181, 0, 42, 10, 245, 23, 172, 112, 124, 146, 218, // E..*....p|.. + 190, 95, 73, 217, 255, 61, 157, 189, 190, 175, 241, 0, // ._I..=...... + 242, 49, 28, 84, 101, 51, 79, 44, 127, 132, 58, 237, // .1.Te3O,..:. + 156, 188, 31, 89, 212, 1, 15, 231, 31, 67, 117, 106, // ...Y.....Cuj + 10, 137, 121, 200, 65, 215, 30, 114, 173, 30, 32, 69, // ..y.A..r.. E + 247, 206, 29, 115, 246, 18, 100, 229, 249, 62, 1, 193, // ...s..d..>.. + 242, 65, 30, 248, 249, 23, 36, 12, 170, 111, 83, 200, // .A....$..oS. + 15, 169, 193, 77, 222, 170, 114, 190, 138, 247, 85, 245, // ...M..r...U. + 51, 127, 221, 253, 24, 170, 215, 209, 248, 210, 37, 228, // 3.........%. + 48, 253, 218, 27, 243, 75, 249, 191, 168, 240, 215, 127, // 0....K...... + 163, 135, 212, 252, 86, 66, 114, 17, 57, 147, 236, 255, // ....VBr.9... + 115, 78, 104, 222, 157, 202, 92, 153, 72, 255, 55, 249, // sNh.....H.7. + 159, 122, 146, 252, 24, 202, 251, 240, 44, 175, 49, 178, // .z......,.1. + 231, 71, 72, 241, 199, 239, 149, 13, 156, 217, 83, 45, // .GH.......S- + 30, 92, 159, 186, 203, 149, 238, 253, 128, 107, 20, 11, // .........k.. + 83, 239, 45, 239, 30, 200, 81, 215, 16, 239, 150, 115, // S.-...Q....s + 197, 125, 68, 47, 104, 232, 237, 67, 81, 63, 200, 225, // .}D/h..CQ?.. + 255, 128, 231, 118, 196, 186, 193, 39, 84, 226, 206, 107, // ...v...'T..k + 189, 132, 154, 238, 182, 117, 171, 244, 49, 52, 222, 99, // .....u..14.c + 188, 249, 112, 102, 66, 103, 79, 64, 191, 244, 87, 31, // ..pfBgO@..W. + 51, 3, 154, 218, 66, 221, 226, 15, 72, 223, 122, 71, // 3...B...H.zG + 179, 249, 21, 24, 228, 154, 71, 29, 61, 221, 219, 15, // ......G.=... + 59, 144, 166, 232, 207, 222, 213, 217, 237, 140, 107, 222, // ;.........k. + 173, 239, 185, 107, 166, 176, 34, 126, 192, 107, 152, 97, // ...k.."~.k.a + 247, 247, 190, 136, 153, 209, 203, 247, 130, 37, 87, 44, // .........%W, + 217, 63, 134, 195, 231, 152, 242, 29, 38, 34, 14, 206, // .?......&".. + 178, 29, 28, 183, 35, 240, 232, 20, 47, 173, 113, 217, // ....#.../.q. + 140, 48, 241, 156, 100, 61, 125, 78, 226, 142, 31, 160, // .0..d=}N.... + 168, 99, 110, 46, 247, 167, 184, 188, 236, 254, 3, 150, // .cn......... + 68, 179, 86, 253, 57, 0, 0, 0 // D.V.9.. +}; +static const unsigned char v5[] = { + 31, 139, 8, 8, 202, 8, 101, 101, 0, 3, 109, 97, // ......ee..ma + 105, 110, 46, 106, 115, 0, 229, 124, 251, 119, 219, 70, // in.js..|.w.F + 150, 230, 239, 249, 43, 42, 236, 236, 144, 218, 16, 16, // ....+*...... + 222, 36, 101, 75, 125, 220, 78, 114, 228, 57, 118, 210, // .$eK}.Nr.9v. + 107, 187, 189, 179, 235, 241, 38, 16, 9, 145, 140, 65, // k.....&....A + 130, 3, 128, 122, 68, 205, 255, 125, 191, 239, 86, 225, // ...zD..}..V. + 69, 81, 178, 211, 157, 156, 211, 39, 147, 200, 100, 161, // EQ.....'..d. + 30, 183, 110, 221, 119, 161, 110, 241, 248, 88, 169, 239, // ..n.w.n..X.. + 127, 120, 251, 237, 137, 122, 246, 215, 23, 106, 26, 167, // .x...z...j.. + 105, 161, 86, 219, 162, 84, 69, 25, 231, 165, 186, 94, // i.V..TE....^ + 150, 11, 213, 143, 55, 203, 227, 190, 90, 174, 85, 150, // ....7...Z.U. + 207, 146, 92, 149, 153, 42, 146, 252, 42, 81, 229, 34, // .....*..*Q." + 81, 241, 102, 163, 226, 82, 197, 235, 91, 245, 183, 215, // Q.f..R..[... + 47, 190, 248, 162, 191, 45, 18, 12, 206, 151, 211, 178, // /....-...... + 255, 228, 139, 229, 106, 147, 1, 204, 157, 90, 12, 85, // ....j....Z.U + 158, 172, 49, 122, 168, 208, 225, 77, 25, 151, 137, 148, // ..1z...M.... + 190, 189, 188, 76, 166, 165, 20, 95, 39, 151, 67, 181, // ...L..._'.C. + 40, 87, 233, 80, 189, 206, 182, 37, 38, 218, 169, 203, // (W.P...%&... + 60, 91, 41, 213, 183, 143, 47, 182, 235, 89, 154, 216, // <[).../..Y.. + 63, 23, 0, 250, 197, 52, 91, 3, 195, 23, 252, 82, // ?....4[....R + 167, 234, 238, 11, 165, 166, 217, 252, 68, 109, 242, 108, // ........Dm.l + 131, 138, 51, 1, 242, 211, 211, 226, 106, 174, 166, 105, // ..3.....j..i + 92, 20, 167, 95, 221, 73, 147, 45, 79, 59, 117, 179, // ..._.I.-O;u. + 74, 215, 197, 105, 111, 81, 150, 155, 147, 227, 227, 235, // J..ioQ...... + 235, 107, 251, 218, 183, 179, 124, 126, 236, 57, 142, 115, // .k....|~.9.s + 140, 97, 61, 117, 185, 76, 211, 211, 222, 58, 91, 39, // .a=u.L...:[' + 61, 117, 181, 76, 174, 255, 146, 221, 156, 246, 28, 229, // =u.L........ + 40, 47, 192, 95, 143, 11, 204, 62, 38, 214, 245, 114, // (/._...>&..r + 86, 46, 78, 123, 174, 29, 86, 85, 167, 189, 233, 54, // V.N{..VU...6 + 199, 74, 203, 231, 89, 154, 229, 189, 51, 245, 116, 19, // .J..Y...3.t. + 131, 132, 166, 127, 186, 92, 39, 211, 120, 115, 218, 203, // ......'.xs.. + 51, 172, 167, 215, 174, 254, 57, 91, 174, 235, 250, 217, // 3.....9[.... + 105, 239, 213, 196, 14, 39, 129, 242, 237, 73, 48, 181, // i....'...I0. + 157, 137, 101, 135, 129, 103, 135, 145, 133, 103, 229, 218, // ..e..g...g.. + 174, 203, 194, 2, 53, 19, 127, 106, 135, 33, 48, 115, // ....5..j.!0s + 109, 199, 179, 253, 201, 88, 90, 209, 152, 218, 158, 235, // m....XZ..... + 227, 193, 27, 187, 0, 16, 249, 182, 63, 10, 108, 223, // ........?.l. + 245, 237, 104, 28, 217, 81, 16, 218, 227, 145, 237, 160, // ..h..Q...... + 202, 9, 108, 55, 64, 113, 236, 219, 158, 103, 187, 222, // ..l7@q...g.. + 200, 246, 61, 84, 77, 34, 123, 228, 217, 94, 56, 34, // ..=TM"{..^8" + 224, 81, 136, 134, 32, 5, 48, 119, 100, 217, 65, 24, // .Q.. .0wd.A. + 197, 152, 196, 11, 149, 254, 4, 93, 48, 163, 63, 178, // .......]0.?. + 131, 9, 187, 76, 34, 133, 129, 193, 232, 94, 31, 203, // ...L"....^.. + 246, 34, 60, 6, 190, 155, 90, 0, 234, 248, 246, 216, // ."<...Z..... + 27, 77, 81, 59, 193, 212, 1, 224, 250, 99, 59, 114, // .MQ;.....c;r + 125, 22, 176, 128, 137, 23, 3, 133, 112, 162, 244, 39, // }.......p..' + 1, 56, 10, 8, 133, 24, 225, 56, 192, 114, 52, 182, // .8.....8.r4. + 93, 140, 0, 110, 1, 168, 196, 169, 29, 7, 171, 242, // ]..n........ + 198, 83, 59, 192, 10, 252, 208, 14, 253, 192, 158, 132, // .S;......... + 65, 53, 45, 103, 245, 64, 160, 7, 176, 195, 18, 162, // A5-g.@...... + 9, 214, 32, 216, 85, 11, 197, 100, 126, 24, 90, 152, // .. .U..d~.Z. + 9, 120, 141, 80, 112, 70, 30, 145, 31, 69, 164, 8, // .x.PpF...E.. + 48, 4, 129, 228, 195, 44, 144, 20, 28, 115, 16, 150, // 0....,...s.. + 224, 142, 49, 38, 28, 99, 234, 9, 6, 70, 65, 96, // ..1&.c...FA` + 143, 163, 73, 106, 213, 124, 225, 66, 192, 229, 128, 189, // ..Ij.|.B.... + 34, 112, 140, 40, 8, 235, 220, 133, 69, 206, 6, 232, // "p.(....E... + 64, 214, 114, 62, 207, 34, 111, 173, 138, 243, 26, 138, // @.r>."o..... + 165, 185, 11, 48, 17, 219, 71, 160, 161, 239, 162, 4, // ...0..G..... + 14, 203, 124, 22, 120, 76, 20, 61, 37, 31, 21, 138, // ..|.xL.=%... + 22, 185, 76, 28, 61, 46, 108, 130, 190, 88, 19, 89, // ..L.=.l..X.Y + 173, 23, 102, 9, 175, 53, 13, 14, 242, 90, 83, 202, // ..f..5...ZS. + 34, 187, 133, 162, 35, 235, 48, 69, 65, 119, 75, 179, // "...#.0EAwK. + 155, 172, 33, 54, 152, 22, 253, 57, 89, 128, 122, 80, // ..!6...9Y.zP + 24, 236, 182, 185, 126, 205, 237, 137, 79, 76, 249, 41, // ....~...OL.) + 220, 182, 132, 219, 100, 54, 23, 55, 38, 19, 198, 154, // ....d6.7&... + 9, 122, 136, 150, 34, 129, 59, 62, 40, 108, 50, 123, // .z..".;>(l2{ + 250, 24, 138, 20, 91, 75, 120, 206, 229, 70, 194, 113, // ....[Kx..F.q + 48, 60, 34, 191, 49, 19, 233, 225, 169, 134, 42, 194, // 0<".1.....*. + 125, 104, 12, 85, 6, 53, 14, 84, 72, 147, 115, 12, // }h.U.5.TH.s. + 134, 179, 0, 37, 10, 199, 30, 33, 134, 134, 1, 224, // ...%...!.... + 56, 32, 7, 154, 85, 191, 244, 212, 241, 63, 97, 18, // 8 ..U....?a. + 92, 160, 238, 197, 190, 242, 169, 238, 174, 21, 225, 75, // ...........K + 63, 56, 46, 202, 6, 56, 13, 216, 217, 79, 67, 24, // ?8...8...OC. + 197, 229, 250, 50, 251, 163, 89, 69, 112, 140, 12, 228, // ...2..YEp... + 103, 10, 70, 128, 205, 142, 23, 211, 6, 140, 42, 134, // g.F.......*. + 210, 212, 141, 67, 15, 26, 50, 114, 168, 235, 99, 63, // ...C..2r..c? + 106, 117, 112, 170, 14, 126, 61, 220, 125, 229, 185, 164, // jup..~=.}... + 235, 68, 77, 52, 93, 221, 49, 190, 245, 19, 0, 226, // .DM4].1..... + 225, 151, 149, 53, 177, 40, 15, 11, 200, 219, 248, 138, // ...5.(...... + 31, 231, 174, 247, 110, 12, 36, 238, 17, 253, 34, 75, // ....n.$..."K + 203, 63, 26, 209, 185, 116, 5, 77, 13, 83, 215, 177, // .?...t.M.S.. + 67, 75, 168, 255, 210, 133, 98, 224, 105, 65, 42, 188, // CK....b.iA*. + 156, 176, 135, 231, 74, 63, 79, 186, 158, 115, 208, 61, // ....J?O..s.= + 234, 44, 178, 85, 242, 71, 163, 142, 39, 18, 233, 165, // .,.U.G..'... + 99, 250, 26, 139, 159, 48, 90, 129, 248, 179, 9, 77, // c....0Z....M + 77, 232, 85, 197, 112, 226, 42, 231, 101, 69, 166, 87, // M.U.p.*.eE.W + 129, 29, 42, 18, 238, 10, 116, 132, 65, 154, 194, 189, // ..*...t.A... + 69, 104, 12, 157, 64, 181, 237, 148, 124, 158, 75, 71, // Eh..@...|.KG + 11, 46, 100, 132, 142, 86, 213, 209, 106, 117, 209, 229, // ..d..V..ju.. + 5, 209, 153, 178, 93, 98, 2, 212, 236, 3, 124, 231, // ....]b....|. + 185, 139, 64, 38, 108, 247, 178, 154, 110, 26, 208, 59, // ..@&l...n..; + 206, 248, 138, 220, 5, 99, 133, 203, 45, 102, 42, 225, // .....c..-f*. + 102, 17, 95, 253, 225, 184, 9, 39, 16, 42, 202, 238, // f._....'.*.. + 59, 150, 68, 202, 3, 210, 96, 132, 106, 214, 188, 99, // ;.D...`.j..c + 219, 10, 182, 225, 220, 29, 63, 19, 214, 203, 7, 77, // ......?....M + 133, 231, 176, 20, 93, 185, 222, 94, 3, 108, 136, 180, // ....]..^.l.. + 157, 71, 123, 13, 90, 177, 198, 239, 246, 235, 35, 193, // .G{.Z.....#. + 96, 129, 5, 114, 166, 133, 53, 185, 103, 101, 226, 188, // `..r..5.ge.. + 240, 255, 104, 164, 23, 106, 68, 178, 112, 16, 218, 88, // ..h..jD.p..X + 29, 79, 30, 86, 150, 240, 37, 4, 129, 228, 185, 75, // .O.V..%....K + 143, 29, 246, 4, 151, 219, 245, 180, 92, 102, 107, 245, // .........fk. + 54, 185, 41, 223, 197, 233, 54, 25, 220, 93, 241, 107, // 6.)...6..].k + 136, 205, 74, 121, 185, 30, 170, 217, 178, 136, 47, 210, // ..Jy....../. + 100, 54, 84, 155, 52, 158, 38, 139, 44, 149, 237, 72, // d6T.4.&.,..H + 121, 187, 65, 159, 120, 54, 203, 214, 175, 151, 243, 69, // y.A.x6.....E + 105, 202, 47, 147, 75, 22, 203, 18, 93, 86, 75, 12, // i./.K...]VK. + 95, 197, 55, 0, 85, 38, 27, 20, 183, 105, 185, 59, // _.7.U&...i.; + 50, 27, 15, 110, 69, 222, 95, 204, 101, 154, 191, 204, // 2..nE._.e... + 63, 96, 67, 82, 109, 112, 6, 253, 139, 185, 117, 189, // ?`CRmp....u. + 88, 150, 73, 255, 232, 9, 250, 214, 219, 157, 193, 224, // X.I......... + 136, 76, 187, 83, 203, 75, 53, 224, 252, 234, 244, 84, // .L.S.K5....T + 245, 215, 219, 213, 69, 146, 247, 143, 212, 116, 145, 76, // ....E....t.L + 63, 2, 247, 193, 215, 50, 241, 215, 50, 243, 215, 178, // ?....2..2... + 152, 163, 39, 106, 55, 84, 239, 63, 8, 60, 34, 163, // ..'j7T.?.<". + 254, 254, 119, 12, 117, 251, 26, 41, 121, 114, 159, 212, // ..w.u..)yr.. + 120, 85, 144, 128, 84, 69, 159, 65, 179, 152, 43, 189, // xU..TE.A..+. + 4, 165, 49, 223, 199, 86, 9, 118, 232, 173, 254, 237, // ..1..V.v.... + 223, 212, 149, 122, 74, 42, 28, 181, 186, 230, 201, 204, // ...zJ*...... + 114, 29, 7, 14, 143, 155, 66, 121, 132, 52, 117, 198, // r.....By.4u. + 198, 55, 122, 236, 25, 231, 251, 220, 177, 187, 6, 253, // .7z......... + 21, 240, 230, 34, 237, 85, 92, 78, 23, 131, 227, 255, // ...".U.N.... + 103, 127, 253, 159, 246, 192, 254, 250, 232, 248, 168, 233, // g........... + 52, 91, 206, 151, 37, 247, 129, 43, 245, 103, 181, 122, // 4[..%..+.g.z + 239, 126, 176, 211, 100, 61, 135, 4, 158, 40, 167, 233, // .~..d=...(.. + 149, 173, 167, 139, 120, 61, 7, 165, 85, 114, 37, 196, // ....x=..Ur%. + 23, 52, 211, 164, 4, 126, 172, 179, 177, 223, 157, 39, // .4...~.....' + 165, 45, 100, 110, 214, 112, 159, 59, 122, 160, 122, 136, // .-dn.p.;z.z. + 75, 102, 253, 74, 192, 126, 61, 216, 64, 81, 147, 239, // Kf.J.~=.@Q.. + 210, 44, 46, 7, 32, 247, 177, 112, 233, 200, 46, 179, // .,.. ..p.... + 239, 150, 55, 201, 108, 160, 113, 55, 67, 118, 21, 47, // ..7.l.q7Cv./ + 46, 215, 131, 171, 134, 20, 135, 177, 16, 52, 101, 6, // .........4e. + 93, 250, 159, 15, 67, 206, 147, 114, 155, 175, 181, 137, // ]...C..r.... + 248, 226, 233, 108, 121, 101, 108, 68, 239, 50, 77, 110, // ...lyelD.2Mn + 212, 181, 117, 185, 77, 83, 5, 182, 175, 10, 107, 10, // ..u.MS....k. + 53, 198, 190, 91, 116, 50, 153, 25, 246, 168, 98, 17, // 5..[t2....b. + 207, 178, 107, 171, 88, 169, 175, 238, 46, 230, 187, 222, // ..k.X....... + 25, 128, 126, 117, 87, 107, 9, 121, 108, 236, 207, 38, // ..~uWk.yl..& + 94, 87, 192, 151, 107, 234, 184, 37, 115, 92, 102, 235, // ^W..k..%s.f. + 210, 90, 103, 249, 10, 146, 88, 230, 16, 68, 40, 135, // .Zg...X..D(. + 218, 220, 90, 110, 45, 0, 10, 66, 81, 164, 168, 22, // ..Zn-..BQ... + 177, 232, 32, 99, 186, 204, 243, 248, 214, 242, 209, 184, // .. c........ + 185, 177, 60, 85, 66, 201, 117, 85, 136, 42, 121, 186, // ..].7.R...Qh + 249, 247, 191, 171, 62, 71, 245, 119, 181, 89, 64, 83, // ....>G.w.Y@S + 85, 220, 105, 242, 162, 70, 190, 13, 99, 32, 136, 168, // U.i..F..c .. + 225, 215, 142, 186, 128, 50, 62, 119, 20, 109, 22, 227, // .....2>w.m.. + 155, 157, 146, 126, 149, 164, 161, 178, 42, 238, 148, 109, // ...~....*..m + 219, 192, 13, 198, 68, 195, 50, 52, 18, 114, 118, 169, // ....D.24.rv. + 195, 149, 128, 208, 21, 7, 12, 119, 72, 69, 80, 11, // .......wHEP. + 36, 67, 196, 181, 79, 129, 17, 137, 210, 88, 180, 147, // $C..O....X.. + 166, 37, 64, 203, 101, 54, 221, 22, 39, 217, 182, 20, // .%@.e6..'... + 118, 208, 190, 215, 43, 62, 129, 225, 46, 178, 28, 149, // v...+>...... + 165, 21, 167, 105, 118, 141, 9, 235, 54, 48, 68, 96, // ...iv...60D` + 144, 31, 117, 101, 135, 236, 189, 246, 172, 244, 56, 205, // ..ue......8. + 211, 14, 230, 185, 17, 18, 49, 171, 191, 129, 148, 164, // ......1..... + 191, 137, 148, 168, 236, 42, 201, 47, 83, 10, 244, 52, // .....*./S..4 + 207, 210, 148, 62, 233, 54, 133, 27, 3, 55, 181, 123, // ...>.6...7.{ + 59, 81, 161, 243, 63, 158, 212, 210, 36, 232, 215, 226, // ;Q..?...$... + 36, 223, 79, 186, 46, 231, 77, 146, 194, 170, 31, 116, // $.O...M....t + 58, 217, 134, 61, 138, 198, 251, 116, 252, 70, 153, 189, // :..=...t.F.. + 88, 151, 208, 226, 27, 90, 164, 27, 106, 184, 216, 11, // X....Z..j... + 84, 14, 96, 47, 255, 220, 121, 58, 81, 55, 143, 152, // T.`/..y:Q7.. + 51, 109, 54, 4, 222, 96, 207, 152, 29, 29, 176, 2, // 3m6..`...... + 133, 96, 124, 88, 86, 13, 107, 140, 232, 85, 146, 216, // .`|XV.k..U.. + 230, 142, 177, 11, 141, 56, 186, 45, 82, 71, 135, 133, // .....8.-RG.. + 174, 146, 236, 71, 132, 175, 119, 80, 23, 181, 32, 25, // ...G..wP.. . + 58, 194, 19, 108, 6, 87, 77, 196, 163, 171, 27, 117, // :..l.WM....u + 125, 239, 124, 216, 41, 189, 56, 129, 194, 10, 146, 85, // }.|.).8....U + 235, 241, 25, 43, 220, 15, 154, 151, 71, 15, 49, 243, // ...+....G.1. + 122, 9, 103, 115, 128, 153, 29, 206, 129, 92, 233, 114, // z.gs.......r + 250, 113, 143, 254, 95, 26, 39, 93, 119, 187, 152, 163, // .q.._.']w... + 199, 151, 186, 26, 252, 164, 239, 187, 64, 145, 68, 234, // ........@.D. + 131, 163, 253, 74, 203, 232, 253, 154, 81, 101, 222, 29, // ...J....Qe.. + 85, 230, 241, 90, 203, 253, 141, 21, 202, 184, 118, 141, // U..Z......v. + 30, 217, 229, 239, 197, 182, 44, 177, 22, 49, 121, 61, // ......,..1y= + 253, 208, 171, 112, 214, 204, 102, 105, 215, 53, 68, 109, // ...p..fi.5Dm + 101, 92, 88, 17, 140, 143, 235, 106, 211, 83, 44, 242, // e.X....j.S,. + 229, 250, 163, 229, 40, 195, 180, 13, 66, 183, 150, 163, // ....(...B... + 208, 146, 98, 84, 208, 171, 10, 130, 35, 36, 24, 10, // ..bT....#$.. + 170, 164, 188, 36, 125, 173, 41, 195, 196, 66, 205, 182, // ...$}.)..B.. + 121, 44, 207, 88, 186, 74, 226, 34, 177, 160, 126, 144, // y,.X.J."..~. + 152, 67, 178, 163, 171, 128, 194, 28, 40, 232, 175, 30, // .C......(... + 230, 166, 210, 22, 194, 173, 158, 138, 243, 101, 108, 137, // .........el. + 75, 22, 190, 27, 226, 137, 240, 104, 131, 35, 29, 22, // K......h.#.. + 203, 217, 44, 65, 208, 9, 243, 130, 48, 183, 94, 60, // ..,A....0.^< + 204, 178, 50, 75, 178, 146, 43, 224, 91, 232, 121, 13, // ..2K..+.[.y. + 65, 46, 210, 12, 156, 94, 88, 33, 40, 18, 234, 165, // A....^X!(... + 92, 66, 17, 246, 86, 111, 130, 39, 227, 45, 13, 154, // .B..Vo.'.-.. + 93, 212, 27, 42, 60, 184, 252, 222, 25, 162, 90, 224, // ]..*<.....Z. + 123, 6, 217, 212, 124, 59, 96, 109, 202, 18, 240, 6, // {...|;`m.... + 18, 225, 107, 153, 100, 24, 163, 157, 220, 105, 19, 255, // ..k.d....i.. + 86, 193, 131, 222, 9, 212, 33, 132, 166, 24, 66, 136, // V.....!...B. + 106, 64, 75, 224, 31, 26, 34, 10, 213, 30, 210, 24, // j@K..."..... + 188, 199, 34, 140, 102, 23, 82, 136, 199, 157, 231, 203, // ..".f.R..... + 153, 226, 7, 133, 160, 128, 164, 204, 227, 13, 62, 87, // ..........>W + 176, 241, 125, 205, 170, 52, 190, 72, 210, 78, 124, 210, // ..}..4.H.N|. + 177, 242, 149, 17, 233, 58, 191, 21, 133, 78, 236, 211, // .....:...N.. + 42, 153, 45, 183, 43, 90, 110, 179, 130, 101, 153, 38, // *.-.+Zn..e.& + 162, 238, 4, 190, 31, 250, 180, 65, 115, 204, 98, 32, // .......As.b + 235, 27, 234, 109, 213, 145, 30, 119, 200, 68, 252, 69, // ...m...w.D.E + 24, 51, 184, 19, 240, 195, 74, 175, 218, 59, 12, 172, // .3....J..;.. + 120, 168, 150, 208, 102, 30, 123, 92, 226, 89, 132, 126, // x...f.{..Y.~ + 168, 22, 116, 62, 242, 208, 244, 150, 199, 238, 118, 162, // ..t>......v. + 216, 48, 164, 132, 77, 121, 131, 66, 103, 75, 113, 25, // .0..My.BgKq. + 167, 69, 219, 192, 76, 47, 218, 177, 125, 82, 135, 244, // .E..L/..}R.. + 186, 53, 79, 24, 24, 87, 182, 234, 207, 85, 105, 64, // .5O..W...Ui@ + 111, 178, 134, 212, 54, 113, 46, 123, 194, 67, 147, 229, // o...6q.{.C.. + 153, 126, 180, 167, 12, 186, 177, 81, 161, 4, 84, 51, // .~.....Q..T3 + 180, 226, 95, 131, 221, 128, 186, 84, 7, 189, 245, 56, // .._....T...8 + 179, 197, 209, 232, 218, 229, 34, 89, 155, 154, 106, 152, // ......"Y..j. + 110, 105, 133, 190, 117, 176, 251, 165, 38, 214, 145, 33, // ni..u...&..! + 26, 22, 208, 54, 155, 154, 132, 39, 85, 77, 216, 14, // ...6...'UM.. + 79, 170, 202, 192, 249, 108, 155, 120, 32, 14, 249, 121, // O....l.x ..y + 91, 148, 203, 203, 219, 74, 230, 58, 2, 168, 5, 182, // [....J.:.... + 242, 137, 12, 50, 232, 0, 33, 191, 248, 170, 132, 83, // ...2..!....S + 36, 177, 72, 86, 203, 11, 196, 66, 186, 182, 109, 25, // $.HV...B..m. + 116, 28, 173, 215, 182, 99, 41, 45, 118, 61, 65, 246, // t....c)-v=A. + 18, 10, 131, 207, 93, 203, 80, 79, 47, 14, 6, 168, // ....].PO/... + 212, 38, 202, 200, 78, 105, 239, 168, 229, 156, 50, 142, // .&..Ni....2. + 0, 21, 245, 96, 181, 156, 142, 217, 0, 7, 150, 112, // ...`.......p + 47, 68, 97, 108, 249, 246, 64, 213, 61, 251, 241, 122, // /Dal..@.=..z + 185, 162, 43, 225, 179, 120, 151, 254, 142, 251, 107, 45, // ..+..x....k- + 250, 93, 201, 255, 62, 3, 105, 150, 83, 49, 93, 131, // .]..>.i.S1]. + 187, 12, 50, 207, 245, 81, 222, 179, 34, 233, 200, 176, // ..2..Q.."... + 212, 92, 148, 107, 45, 188, 175, 147, 203, 1, 5, 174, // ...k-....... + 37, 185, 114, 180, 119, 218, 118, 101, 112, 131, 136, 151, // %.r.w.vep... + 226, 233, 178, 68, 96, 161, 138, 213, 73, 187, 105, 175, // ...D`...I.i. + 2, 148, 111, 59, 204, 108, 31, 146, 83, 67, 98, 168, // ..o;.l..SCb. + 184, 55, 180, 237, 107, 223, 115, 131, 15, 161, 124, 155, // .7..k.s...|. + 119, 245, 12, 216, 237, 109, 218, 107, 45, 107, 109, 155, // w....m.k-km. + 223, 230, 136, 185, 176, 41, 175, 159, 151, 171, 4, 86, // .....).....V + 124, 160, 131, 130, 154, 6, 208, 172, 170, 108, 155, 183, // |........l.. + 37, 182, 214, 201, 7, 91, 6, 71, 67, 229, 66, 186, // %....[.GC.B. + 245, 70, 176, 222, 243, 55, 209, 7, 6, 53, 155, 89, // .F...7...5.Y + 131, 139, 198, 186, 141, 136, 244, 27, 42, 159, 128, 180, // ........*... + 138, 221, 55, 214, 226, 26, 211, 229, 21, 212, 2, 210, // ..7......... + 145, 228, 37, 138, 181, 102, 252, 2, 2, 30, 116, 142, // ..%..f....t. + 241, 69, 145, 165, 219, 146, 94, 18, 243, 209, 213, 53, // .E....^....5 + 54, 53, 89, 139, 114, 4, 84, 141, 136, 212, 215, 213, // 65Y.r.T..... + 250, 76, 25, 143, 27, 43, 234, 29, 52, 201, 237, 253, // .L...+..4... + 14, 84, 164, 171, 124, 240, 139, 83, 242, 54, 104, 32, // .T..|..S.6h + 98, 34, 1, 212, 5, 181, 135, 110, 188, 133, 124, 24, // b".....n..|. + 200, 216, 167, 89, 162, 130, 245, 46, 64, 199, 4, 181, // ...Y....@... + 51, 79, 231, 251, 174, 156, 85, 226, 192, 93, 253, 117, // 3O....U..].u + 129, 125, 206, 71, 93, 172, 100, 172, 29, 21, 136, 51, // .}.G].d....3 + 103, 32, 83, 187, 120, 238, 71, 90, 174, 95, 226, 13, // g S.x.GZ._.. + 131, 245, 30, 222, 86, 80, 215, 63, 232, 175, 132, 136, // ....VP.?.... + 173, 110, 247, 59, 214, 225, 90, 167, 151, 24, 135, 236, // .n.;..Z..... + 99, 109, 26, 80, 60, 49, 197, 203, 120, 153, 214, 182, // cm.P<1..x... + 65, 71, 126, 145, 50, 157, 251, 198, 215, 38, 201, 90, // AG~.2....&.Z + 236, 170, 68, 159, 172, 226, 75, 27, 86, 104, 91, 209, // ..D...K.Vh[. + 154, 229, 248, 248, 33, 228, 86, 169, 229, 3, 182, 83, // ....!.V....S + 239, 103, 75, 110, 32, 246, 177, 220, 84, 221, 59, 6, // .gKn ...T.;. + 85, 187, 246, 150, 231, 159, 96, 7, 10, 167, 205, 10, // U.....`..... + 120, 234, 205, 67, 64, 12, 123, 87, 101, 181, 73, 233, // x..C@.{We.I. + 132, 15, 220, 198, 158, 61, 91, 223, 82, 160, 37, 215, // .....=[.R.%. + 33, 86, 112, 4, 31, 213, 20, 17, 227, 26, 81, 28, // !Vp.......Q. + 223, 132, 170, 114, 177, 44, 248, 126, 52, 177, 247, 230, // ...r.,.~4... + 121, 124, 169, 129, 214, 136, 71, 57, 114, 208, 39, 105, // y|....G9r.'i + 79, 80, 153, 133, 221, 94, 220, 78, 67, 123, 200, 109, // OP...^.NC{.m + 85, 2, 188, 154, 53, 2, 220, 125, 21, 160, 61, 103, // U...5..}..=g + 119, 83, 124, 63, 218, 222, 67, 177, 138, 159, 205, 140, // wS|?..C..... + 69, 110, 101, 235, 244, 182, 119, 246, 156, 136, 84, 177, // Ene...w...T. + 234, 254, 128, 250, 61, 116, 207, 68, 205, 251, 239, 148, // ....=t.D.... + 249, 87, 189, 115, 238, 188, 62, 62, 16, 167, 239, 131, // .W.s..>>.... + 87, 230, 13, 51, 95, 25, 71, 182, 55, 230, 91, 225, // W..3_.G.7.[. + 246, 25, 160, 156, 151, 243, 196, 223, 137, 94, 142, 37, // .........^.% + 93, 194, 73, 121, 122, 231, 241, 165, 122, 171, 163, 235, // ].Iyz...z... + 52, 253, 92, 30, 252, 161, 144, 62, 216, 207, 210, 253, // 4......>.... + 244, 16, 71, 250, 89, 221, 126, 102, 98, 171, 2, 40, // ..G.Y.~fb..( + 115, 215, 8, 254, 178, 167, 38, 7, 228, 231, 190, 64, // s.....&....@ + 181, 31, 91, 15, 117, 177, 138, 108, 247, 2, 85, 237, // ..[.u..l..U. + 36, 94, 102, 115, 186, 197, 223, 240, 140, 160, 195, 67, // $^fs.......C + 38, 49, 248, 216, 174, 204, 146, 203, 226, 236, 169, 188, // &1.......... + 67, 57, 179, 211, 212, 66, 60, 99, 185, 119, 100, 237, // C9...B`..... + 235, 143, 82, 172, 218, 118, 227, 22, 117, 80, 13, 53, // ..R..v..uP.5 + 119, 131, 22, 21, 89, 21, 216, 193, 168, 226, 72, 77, // w...Y.....HM + 120, 215, 210, 15, 231, 204, 69, 170, 216, 217, 16, 223, // x.....E..... + 210, 108, 137, 206, 201, 150, 54, 163, 217, 194, 110, 239, // .l....6...n. + 192, 201, 182, 104, 128, 145, 110, 8, 50, 0, 43, 17, // ...h..n.2.+. + 154, 70, 162, 216, 226, 219, 174, 59, 236, 202, 158, 163, // .F.....;.... + 87, 33, 4, 62, 158, 155, 127, 114, 44, 246, 196, 152, // W!.>...r,... + 129, 87, 217, 236, 98, 91, 28, 52, 6, 95, 136, 53, // .W..b[.4._.5 + 128, 83, 40, 16, 151, 240, 80, 207, 237, 253, 195, 182, // .S(...P..... + 65, 186, 156, 220, 208, 123, 30, 234, 232, 78, 38, 147, // A....{...N&. + 99, 105, 69, 87, 24, 144, 205, 77, 79, 221, 154, 239, // ciEW...MO... + 142, 89, 137, 66, 79, 185, 19, 6, 5, 218, 166, 24, // .Y.BO....... + 223, 72, 175, 117, 60, 45, 138, 222, 153, 178, 87, 23, // .H.u<-....W. + 63, 22, 165, 163, 77, 204, 159, 190, 11, 38, 240, 99, // ?...M....&.c + 79, 118, 166, 218, 173, 170, 159, 63, 119, 90, 213, 158, // Ov.....?wZ.. + 169, 118, 252, 103, 158, 63, 169, 171, 125, 83, 237, 186, // .v.g.?..}S.. + 19, 239, 249, 119, 168, 174, 236, 206, 23, 176, 38, 117, // ...w......&u + 72, 71, 63, 100, 54, 15, 3, 71, 89, 158, 23, 30, // HG?d6..GY... + 17, 189, 182, 60, 107, 148, 140, 52, 143, 193, 212, 161, // ....d..Bh.. + 19, 155, 234, 140, 9, 219, 227, 218, 125, 119, 162, 62, // ........}w.> + 135, 254, 99, 65, 155, 130, 164, 152, 57, 13, 37, 0, // ..cA....9.%. + 15, 213, 72, 44, 49, 138, 35, 33, 58, 122, 48, 225, // ..H,1.#!:z0. + 88, 202, 80, 227, 192, 151, 178, 76, 233, 79, 136, 30, // X.P....L.O.. + 202, 168, 247, 100, 57, 194, 48, 170, 247, 72, 72, 15, // ...d9.0..HH. + 84, 153, 240, 140, 242, 152, 104, 249, 92, 254, 72, 186, // T.....h...H. + 68, 164, 208, 8, 48, 192, 68, 79, 141, 200, 67, 31, // D...0.DO..C. + 34, 21, 169, 17, 49, 130, 216, 127, 214, 2, 8, 119, // "...1......w + 36, 236, 227, 220, 20, 16, 50, 152, 229, 136, 107, 112, // $.....2...kp + 193, 102, 5, 199, 66, 74, 33, 40, 84, 156, 20, 76, // .f..BJ!(T..L + 152, 168, 80, 251, 166, 17, 208, 9, 38, 34, 130, 124, // ..P.....&".| + 219, 25, 6, 194, 127, 202, 2, 88, 65, 184, 204, 99, // .......XA..c + 11, 133, 162, 142, 112, 200, 161, 237, 226, 34, 48, 148, // ....p...."0. + 197, 80, 214, 230, 115, 157, 88, 51, 69, 76, 151, 61, // .P..s.X3EL.= + 44, 238, 179, 240, 135, 106, 211, 222, 144, 236, 110, 16, // ,....j....n. + 74, 217, 175, 196, 105, 44, 43, 241, 104, 217, 125, 95, // J...i,+.h.}_ + 139, 86, 84, 209, 220, 23, 195, 192, 76, 94, 244, 240, // .VT.....L^.. + 88, 239, 105, 94, 136, 45, 131, 7, 30, 139, 56, 147, // X.i^.-....8. + 95, 1, 69, 17, 125, 200, 11, 81, 24, 45, 184, 136, // _.E.}..Q.-.. + 204, 70, 34, 78, 190, 204, 239, 9, 76, 148, 33, 174, // .F"N....L.!. + 90, 160, 233, 141, 199, 232, 255, 89, 235, 24, 251, 130, // Z......Y.... + 155, 168, 209, 72, 148, 203, 23, 113, 197, 44, 26, 31, // ...H...q.,.. + 192, 212, 174, 31, 52, 35, 124, 159, 245, 158, 43, 245, // ....4#|...+. + 130, 15, 176, 101, 78, 212, 88, 234, 67, 193, 199, 39, // ...eN.X.C..' + 254, 62, 49, 214, 210, 19, 9, 198, 161, 72, 155, 152, // .>1......H.. + 132, 49, 226, 9, 222, 29, 192, 156, 24, 21, 68, 50, // .1........D2 + 59, 214, 25, 140, 185, 230, 177, 192, 146, 246, 7, 215, // ;........... + 224, 183, 141, 145, 168, 191, 54, 42, 192, 15, 38, 132, // ......6*..&. + 129, 44, 32, 82, 190, 77, 121, 226, 16, 19, 161, 181, // ., R.My..... + 7, 154, 134, 166, 222, 11, 235, 82, 224, 212, 80, 60, // .......R..P< + 175, 85, 6, 61, 2, 17, 35, 64, 159, 200, 234, 245, // .U.=..#@.... + 76, 154, 90, 186, 12, 177, 156, 72, 159, 136, 47, 72, // L.Z....H../H + 41, 3, 82, 127, 216, 202, 251, 38, 181, 204, 147, 142, // ).R....&.... + 16, 123, 216, 114, 143, 230, 153, 118, 28, 140, 176, 2, // .{.r...v.... + 203, 11, 172, 0, 6, 30, 177, 57, 13, 60, 53, 28, // .......9.<5. + 98, 96, 81, 35, 177, 243, 240, 166, 22, 173, 47, 254, // b`Q#....../. + 89, 35, 9, 24, 170, 2, 167, 156, 114, 23, 229, 90, // Y#......r..Z + 92, 45, 71, 251, 140, 202, 32, 48, 83, 17, 111, 110, // .-G... 0S.on + 90, 184, 2, 250, 6, 143, 205, 40, 76, 169, 43, 136, // Z......(L.+. + 217, 73, 20, 75, 8, 3, 88, 22, 40, 55, 133, 206, // .I.K..X.(7.. + 89, 148, 142, 49, 80, 242, 40, 182, 16, 75, 11, 124, // Y..1P.(..K.| + 142, 212, 115, 94, 199, 24, 107, 53, 21, 165, 161, 101, // ..s^..k5...e + 211, 241, 65, 189, 38, 245, 202, 119, 68, 47, 124, 250, // ..A.&..wD/|. + 49, 158, 70, 8, 198, 84, 144, 17, 195, 79, 89, 10, // 1.F..T...OY. + 189, 24, 3, 51, 52, 184, 220, 159, 194, 211, 249, 252, // ...34....... + 2, 65, 184, 203, 67, 27, 86, 194, 74, 33, 143, 167, // .A..C.V.J!.. + 80, 143, 22, 151, 153, 119, 178, 28, 203, 133, 160, 79, // P....w.....O + 73, 27, 87, 16, 157, 8, 124, 116, 71, 183, 41, 201, // I.W...|tG.). + 230, 232, 245, 179, 128, 160, 10, 127, 246, 232, 57, 220, // ..........9. + 135, 56, 128, 128, 159, 142, 104, 169, 16, 163, 133, 239, // .8....h..... + 227, 140, 27, 79, 180, 204, 164, 86, 40, 130, 196, 245, // ...O...V(... + 145, 111, 32, 154, 197, 181, 161, 2, 136, 89, 82, 95, // .o ......YR_ + 241, 80, 60, 4, 241, 163, 76, 130, 135, 197, 63, 192, // .P<...L...?. + 187, 145, 102, 28, 116, 79, 51, 142, 204, 65, 128, 0, // ..f.tO3..A.. + 18, 88, 180, 48, 156, 3, 192, 70, 188, 131, 128, 232, // .X.0...F.... + 220, 30, 47, 56, 121, 42, 196, 131, 157, 30, 157, 3, // ../8y*...... + 241, 95, 192, 22, 236, 41, 161, 92, 234, 0, 233, 109, // ._...).....m + 41, 20, 247, 9, 255, 207, 210, 93, 182, 240, 35, 44, // )......]..#, + 16, 195, 249, 79, 194, 25, 110, 18, 64, 124, 152, 21, // ...O..n.@|.. + 185, 179, 129, 194, 228, 57, 45, 154, 177, 131, 140, 230, // .....9-..... + 36, 136, 18, 205, 213, 72, 63, 202, 151, 96, 36, 118, // $....H?..`$v + 16, 129, 129, 40, 20, 239, 196, 144, 30, 99, 203, 39, // ...(.....c.' + 186, 144, 229, 169, 37, 210, 239, 240, 17, 70, 194, 30, // ....%....F.. + 89, 158, 15, 228, 131, 52, 164, 232, 99, 226, 243, 192, // Y....4..c... + 157, 188, 12, 28, 237, 220, 66, 146, 111, 148, 2, 69, // ......B.o..E + 139, 158, 110, 234, 9, 217, 39, 148, 226, 33, 61, 147, // ..n...'..!=. + 231, 240, 171, 82, 31, 153, 129, 190, 199, 243, 33, 21, // ...R......!. + 193, 20, 61, 173, 64, 100, 156, 179, 96, 153, 162, 60, // ..=.@d..`..< + 136, 143, 158, 7, 163, 200, 232, 14, 248, 57, 210, 126, // .........9.~ + 107, 50, 108, 33, 175, 94, 5, 122, 79, 69, 73, 84, // k2l!.^.zOEIT + 191, 145, 234, 252, 26, 14, 170, 7, 85, 39, 16, 255, // ........U'.. + 171, 85, 39, 208, 70, 79, 219, 145, 6, 225, 71, 89, // .U'.FO....GY + 20, 250, 18, 114, 80, 233, 22, 164, 214, 148, 175, 29, // ...rP....... + 2, 9, 164, 176, 48, 90, 17, 174, 43, 16, 19, 133, // ....0Z..+... + 117, 209, 10, 67, 178, 105, 21, 105, 171, 162, 169, 32, // u..C.i.i... + 233, 64, 179, 60, 139, 194, 206, 215, 51, 150, 38, 146, // .@.<....3.&. + 112, 83, 148, 70, 108, 212, 72, 0, 0, 31, 127, 65, // pS.Fl.H....A + 21, 244, 101, 34, 58, 43, 116, 27, 113, 47, 203, 205, // ..e":+t.q/.. + 166, 47, 210, 24, 112, 149, 178, 84, 143, 235, 143, 166, // ./..p..T.... + 52, 130, 156, 57, 148, 239, 9, 57, 199, 111, 18, 11, // 4..9...9.o.. + 140, 14, 129, 15, 41, 66, 242, 78, 212, 148, 108, 151, // ....)B.N..l. + 113, 35, 139, 108, 5, 121, 35, 65, 43, 101, 45, 190, // q#.l.y#A+e-. + 37, 53, 56, 5, 87, 45, 250, 133, 133, 115, 46, 36, // %58.W-...s.$ + 248, 229, 81, 42, 69, 48, 68, 180, 171, 62, 7, 115, // ..Q*E0D..>.s + 15, 224, 144, 7, 150, 70, 151, 226, 197, 116, 123, 134, // .....F...t{. + 159, 166, 150, 36, 176, 184, 72, 20, 2, 249, 231, 145, // ...$..H..... + 253, 62, 101, 38, 144, 102, 95, 177, 141, 164, 115, 39, // .>e&.f_...s' + 34, 24, 210, 2, 57, 39, 77, 3, 33, 154, 236, 7, // "...9'M.!... + 68, 214, 193, 234, 80, 232, 51, 22, 47, 19, 202, 54, // D...P.3./..6 + 130, 43, 19, 74, 65, 45, 38, 34, 57, 124, 107, 196, // .+.JA-&"9|k. + 119, 1, 84, 79, 126, 251, 66, 101, 122, 17, 87, 180, // w.TO~.Bez.W. + 100, 98, 145, 13, 12, 180, 22, 100, 224, 164, 194, 128, // db.....d.... + 26, 225, 136, 149, 28, 89, 193, 21, 197, 111, 97, 85, // .....Y...oaU + 235, 20, 219, 231, 9, 134, 99, 12, 245, 4, 96, 32, // ......c...` + 76, 10, 5, 93, 87, 252, 31, 39, 231, 63, 55, 16, // L..]W..'.?7. + 30, 122, 66, 46, 114, 67, 203, 235, 144, 151, 5, 45, // .zB.rC.....- + 71, 219, 102, 159, 23, 20, 166, 129, 124, 211, 42, 122, // G.f.....|.*z + 150, 236, 71, 164, 16, 9, 37, 101, 131, 133, 149, 179, // ..G...%e.... + 138, 115, 143, 72, 20, 209, 43, 33, 54, 73, 76, 29, // .s.H..+!6IL. + 230, 23, 234, 67, 177, 231, 24, 202, 246, 80, 23, 64, // ...C.....P.@ + 94, 71, 76, 24, 53, 78, 54, 94, 20, 71, 20, 158, // ^GL.5N6^.G.. + 71, 142, 68, 12, 80, 182, 104, 104, 216, 42, 209, 93, // G.D.P.hh.*.] + 205, 98, 17, 132, 227, 57, 63, 204, 43, 178, 230, 100, // .b...9?.+..d + 251, 60, 137, 103, 73, 62, 184, 75, 179, 121, 182, 213, // .<.gI>.K.y.. + 23, 82, 245, 193, 240, 155, 69, 118, 253, 102, 57, 75, // .R....Ev.f9K + 46, 98, 62, 55, 15, 230, 180, 251, 193, 236, 218, 230, // .b>7........ + 20, 177, 92, 78, 63, 222, 170, 50, 219, 88, 142, 250, // ...N?..2.X.. + 197, 122, 31, 140, 63, 168, 155, 235, 78, 206, 212, 5, // .z..?...N... + 15, 74, 61, 30, 201, 55, 240, 121, 52, 220, 223, 164, // .J=..7.y4... + 214, 200, 235, 239, 218, 249, 83, 49, 134, 221, 63, 90, // ......S1..?Z + 228, 123, 170, 123, 71, 170, 146, 4, 105, 102, 98, 178, // .{.{G...ifb. + 30, 51, 109, 58, 231, 180, 85, 238, 203, 23, 15, 31, // .3m:..U..... + 70, 53, 135, 79, 117, 162, 91, 139, 34, 58, 23, 239, // F5.Ou.[.":.. + 203, 171, 163, 93, 247, 208, 78, 14, 218, 3, 167, 57, // ...]..N....9 + 239, 122, 250, 213, 157, 62, 107, 148, 155, 11, 237, 195, // .z...>k..... + 198, 250, 92, 164, 57, 213, 216, 63, 248, 52, 199, 133, // ....9..?.4.. + 76, 190, 224, 161, 114, 145, 164, 151, 86, 81, 130, 242, // L...r...VQ.. + 211, 133, 74, 231, 39, 186, 62, 58, 120, 164, 154, 39, // ..J.'.>:x..' + 64, 101, 121, 149, 180, 206, 226, 120, 10, 208, 58, 75, // @ey....x..:K + 121, 44, 43, 168, 158, 242, 192, 44, 123, 7, 99, 157, // y,+....,{.c. + 179, 197, 214, 250, 103, 201, 85, 146, 102, 27, 230, 242, // ....g.U.f... + 242, 124, 241, 85, 182, 158, 103, 60, 186, 127, 185, 188, // .|.U..g<.... + 200, 227, 252, 182, 123, 196, 211, 194, 197, 156, 91, 98, // ....{.....[b + 98, 157, 126, 134, 194, 66, 35, 114, 109, 109, 110, 164, // b.~..B#rmmn. + 190, 201, 29, 60, 120, 108, 214, 5, 45, 7, 117, 224, // ...31..M + 82, 165, 38, 120, 104, 146, 124, 235, 92, 161, 121, 158, // R.&xh.|...y. + 109, 55, 205, 145, 117, 157, 49, 214, 58, 9, 189, 159, // m7..u.1.:... + 87, 100, 206, 70, 205, 224, 157, 150, 28, 205, 125, 191, // Wd.F......}. + 125, 202, 186, 169, 50, 140, 193, 245, 20, 214, 131, 9, // }...2....... + 1, 81, 55, 251, 167, 45, 254, 123, 9, 56, 17, 83, // .Q7..-.{.8.S + 44, 123, 53, 193, 91, 57, 60, 66, 237, 154, 234, 63, // ,{5.[9..mZ.7i.. + 97, 37, 0, 6, 181, 243, 101, 1, 123, 85, 244, 63, // a%....e.{U.? + 232, 85, 189, 15, 208, 61, 216, 239, 254, 66, 82, 250, // .U...=...BR. + 239, 117, 62, 62, 86, 239, 35, 244, 143, 78, 212, 255, // .u>>V.#..N.. + 206, 233, 177, 223, 0, 230, 1, 232, 53, 112, 151, 189, // ........5p.. + 221, 186, 251, 231, 160, 67, 244, 131, 10, 127, 152, 181, // .....C...... + 229, 20, 232, 124, 163, 219, 63, 180, 86, 13, 66, 129, // ...|..?.V.B. + 198, 36, 118, 59, 215, 29, 156, 133, 201, 105, 162, 0, // .$v;.....i.. + 96, 252, 189, 220, 142, 84, 217, 37, 133, 66, 207, 166, // `....T.%.B.. + 244, 173, 166, 89, 149, 160, 171, 117, 116, 240, 44, 71, // ...Y...ut.,G + 144, 33, 32, 108, 102, 0, 64, 165, 109, 94, 71, 22, // .! lf.@.m^G. + 201, 56, 122, 34, 192, 222, 25, 17, 250, 37, 201, 51, // .8z".....%.3 + 139, 157, 16, 225, 196, 28, 38, 160, 140, 223, 105, 244, // ......&...i. + 88, 128, 61, 81, 247, 255, 3, 168, 103, 235, 25, 123, // X.=Q....g..{ + 202, 239, 37, 173, 219, 56, 22, 58, 239, 253, 49, 63, // ..%..8.:..1? + 38, 241, 72, 247, 222, 132, 222, 9, 5, 106, 53, 59, // &.H......j5; + 105, 85, 222, 223, 253, 241, 234, 28, 158, 17, 161, 91, // iU.........[ + 183, 213, 157, 173, 250, 106, 103, 21, 137, 117, 162, 159, // .....jg..u.. + 67, 254, 143, 222, 39, 149, 27, 124, 219, 13, 188, 206, // C...'..|.... + 52, 46, 146, 251, 91, 200, 189, 251, 95, 85, 238, 175, // 4...[..._U.. + 87, 59, 75, 189, 237, 128, 175, 32, 87, 20, 12, 84, // W;K.... W..T + 129, 168, 245, 225, 192, 70, 182, 195, 2, 229, 115, 214, // .....F....s. + 206, 105, 30, 216, 206, 153, 192, 168, 137, 239, 170, 13, // .i.......... + 97, 123, 31, 247, 213, 157, 9, 101, 154, 208, 134, 214, // a{.....e.... + 69, 253, 237, 245, 203, 94, 125, 183, 172, 50, 63, 59, // E....^}..2?; + 125, 215, 75, 95, 14, 173, 118, 196, 166, 77, 132, 96, // }.K_..v..M.` + 103, 118, 208, 157, 132, 191, 3, 115, 24, 43, 93, 217, // gv.....s.+]. + 154, 102, 166, 174, 205, 57, 52, 95, 215, 192, 119, 102, // .f...94_..wf + 213, 242, 213, 107, 93, 104, 231, 205, 198, 52, 93, 22, // ...k]h...4]. + 9, 224, 206, 16, 137, 241, 238, 106, 47, 196, 142, 143, // .......j/... + 55, 87, 81, 64, 216, 243, 56, 162, 154, 24, 47, 190, // 7WQ@..8.../. + 217, 163, 197, 139, 217, 131, 164, 120, 49, 59, 136, 147, // .......x1;.. + 204, 236, 154, 137, 189, 208, 239, 98, 233, 42, 219, 86, // .......b.*.V + 82, 251, 9, 116, 104, 235, 219, 38, 165, 133, 151, 113, // R..th..&...q + 3, 7, 17, 51, 109, 15, 99, 86, 145, 36, 10, 67, // ...3m.cV.$.C + 63, 236, 226, 230, 16, 55, 83, 255, 56, 118, 21, 82, // ?....7S.8v.R + 144, 241, 237, 186, 197, 84, 227, 37, 26, 204, 26, 171, // .....T.%.... + 246, 40, 153, 92, 47, 60, 64, 38, 215, 251, 36, 34, // .(../<@&..$" + 250, 6, 99, 113, 52, 84, 137, 61, 199, 8, 149, 229, // ..cq4T.=.... + 202, 29, 122, 67, 191, 215, 189, 221, 92, 28, 34, 150, // ..zC......". + 49, 147, 154, 84, 247, 102, 55, 132, 152, 166, 76, 20, // 1..T.f7...L. + 163, 65, 230, 102, 220, 141, 232, 101, 171, 167, 136, 27, // .A.f...e.... + 115, 217, 121, 235, 151, 18, 253, 221, 39, 208, 253, 206, // s.y.....'... + 216, 245, 6, 59, 130, 58, 132, 27, 123, 118, 152, 168, // ...;.:..{v.. + 175, 167, 245, 170, 187, 182, 102, 104, 209, 157, 177, 109, // ......fh...m + 82, 47, 96, 21, 86, 37, 118, 243, 122, 147, 192, 123, // R/`.V%v.z..{ + 203, 176, 13, 176, 99, 48, 117, 188, 186, 160, 111, 249, // ....c0u...o. + 116, 115, 236, 191, 186, 211, 183, 190, 118, 221, 205, 14, // ts......v... + 127, 238, 167, 155, 161, 205, 48, 167, 94, 213, 183, 120, // ......0.^..x + 216, 150, 73, 151, 87, 123, 175, 89, 254, 25, 203, 181, // ..I.W{.Y.... + 201, 147, 189, 49, 237, 123, 219, 237, 55, 20, 245, 102, // ...1.{..7..f + 90, 54, 195, 188, 6, 97, 182, 154, 103, 188, 116, 164, // Z6...a..g.t. + 195, 144, 221, 65, 212, 62, 249, 10, 200, 236, 241, 238, // ...A.>...... + 237, 1, 76, 189, 14, 164, 205, 67, 39, 180, 220, 187, // ..L....C'... + 17, 244, 158, 191, 39, 131, 144, 8, 161, 131, 30, 83, // ....'......S + 63, 62, 54, 170, 186, 226, 116, 170, 204, 149, 179, 38, // ?>6...t....& + 240, 172, 48, 56, 158, 39, 101, 255, 94, 252, 245, 88, // ..08.'e.^..X + 96, 86, 175, 41, 63, 218, 187, 5, 100, 166, 51, 23, // `V.)?...d.3. + 114, 106, 44, 86, 31, 69, 80, 129, 197, 71, 137, 139, // rj,V.EP..G.. + 175, 246, 1, 201, 21, 239, 31, 46, 126, 6, 12, 27, // ........~... + 252, 90, 206, 185, 103, 26, 170, 27, 196, 195, 239, 63, // .Z..g......? + 126, 56, 81, 87, 59, 134, 122, 170, 21, 104, 147, 26, // ~8QW;.z..h.. + 117, 160, 125, 104, 85, 40, 244, 127, 85, 56, 93, 141, // u.}hU(..U8]. + 252, 117, 65, 106, 195, 6, 82, 163, 221, 65, 147, 66, // .uAj..R..A.B + 147, 65, 110, 238, 53, 19, 152, 120, 166, 223, 186, 105, // .An.5..x...i + 149, 102, 243, 31, 180, 134, 50, 130, 125, 239, 32, 250, // .f....2.}. . + 251, 70, 223, 103, 67, 200, 135, 0, 18, 207, 223, 230, // .F.gC....... + 121, 150, 203, 147, 135, 167, 23, 216, 87, 203, 3, 3, // y.......W... + 197, 111, 146, 139, 237, 188, 255, 225, 195, 163, 175, 195, // .o.......... + 62, 55, 88, 50, 1, 195, 191, 110, 180, 244, 191, 222, // >7X2...n.... + 190, 85, 223, 101, 249, 117, 156, 51, 120, 254, 116, 156, // .U.e.u.3x.t. + 20, 170, 207, 51, 25, 112, 59, 53, 55, 155, 95, 100, // ...3.p;57._d + 248, 234, 174, 125, 175, 15, 230, 140, 150, 172, 233, 8, // ...}........ + 9, 138, 203, 109, 177, 171, 205, 14, 209, 239, 246, 88, // ...m.......X + 37, 69, 17, 235, 31, 15, 200, 10, 26, 239, 230, 178, // %E.......... + 103, 35, 61, 162, 184, 180, 202, 63, 85, 160, 14, 248, // g#=....?U... + 129, 111, 215, 148, 8, 77, 129, 203, 154, 2, 45, 23, // .o...M....-. + 111, 68, 204, 94, 253, 87, 89, 254, 152, 172, 205, 15, // oD.^.WY..... + 118, 84, 110, 194, 232, 225, 160, 223, 110, 238, 55, 174, // vTn.....n.7. + 194, 92, 23, 111, 191, 214, 218, 199, 64, 166, 126, 195, // ...o....@.~. + 31, 56, 205, 247, 34, 192, 206, 212, 242, 19, 168, 249, // .8.."....... + 143, 219, 118, 68, 216, 157, 189, 233, 209, 111, 5, 133, // ..vD.....o.. + 173, 235, 156, 95, 62, 176, 152, 79, 98, 247, 54, 219, // ..._>..Ob.6. + 44, 167, 234, 245, 127, 60, 132, 91, 201, 246, 31, 243, // ,....<.[.... + 155, 135, 48, 171, 218, 127, 31, 188, 222, 126, 2, 175, // ..0......~.. + 242, 19, 120, 149, 255, 56, 94, 191, 194, 203, 247, 206, // ..x..8^..... + 30, 242, 233, 148, 235, 174, 79, 215, 53, 85, 252, 73, // ......O.5U.I + 187, 220, 188, 251, 108, 157, 155, 180, 61, 229, 158, 121, // ....l...=..y + 217, 123, 243, 221, 62, 71, 16, 99, 144, 32, 66, 223, // .{..>G.c. B. + 20, 203, 162, 235, 167, 171, 95, 57, 136, 211, 164, 190, // ......_9.... + 243, 7, 172, 59, 47, 70, 119, 237, 197, 55, 161, 193, // ...;/Fw..7.. + 158, 2, 129, 224, 8, 254, 117, 173, 81, 86, 222, 154, // ......u.QV.. + 229, 142, 244, 237, 127, 40, 161, 59, 60, 77, 146, 223, // .....(.;.>?.l + 59, 96, 246, 234, 182, 254, 189, 237, 76, 253, 83, 86, // ;`......L.SV + 216, 126, 90, 126, 123, 123, 211, 68, 82, 255, 162, 182, // .~Z~{{.DR... + 239, 222, 93, 196, 103, 155, 77, 251, 221, 221, 222, 78, // ..].g.M....N + 97, 107, 222, 239, 223, 123, 181, 127, 220, 125, 141, 223, // ak...{...}.. + 201, 196, 232, 228, 33, 116, 134, 153, 95, 164, 120, 52, // ....!t.._.x4 + 80, 92, 174, 177, 255, 41, 166, 60, 127, 233, 252, 170, // P....).<.... + 148, 126, 139, 6, 254, 154, 36, 143, 246, 185, 21, 231, // .~....$..... + 63, 237, 228, 104, 24, 242, 163, 191, 78, 31, 217, 181, // ?..h....N... + 19, 68, 246, 187, 118, 49, 214, 2, 242, 230, 62, 172, // .D..v1....>. + 22, 150, 191, 69, 62, 136, 96, 167, 127, 79, 157, 124, // ...E>.`..O.| + 125, 94, 253, 222, 83, 157, 205, 193, 215, 86, 201, 149, // }^..S....V.. + 141, 21, 66, 2, 23, 203, 162, 204, 242, 91, 180, 159, // ..B......[.. + 235, 146, 13, 18, 129, 52, 231, 113, 177, 48, 53, 131, // .....4.q.05. + 35, 253, 171, 19, 6, 52, 79, 127, 118, 106, 150, 92, // #....4O.vj.. + 198, 208, 21, 254, 188, 26, 136, 127, 48, 82, 128, 172, // ........0R.. + 50, 7, 139, 242, 221, 136, 207, 99, 27, 76, 24, 224, // 2......c.L.. + 89, 118, 109, 103, 235, 52, 139, 103, 245, 246, 78, 255, // Yvmg.4.g..N. + 138, 252, 96, 49, 128, 72, 29, 13, 213, 44, 155, 110, // ..`1.H...,.n + 87, 252, 209, 4, 110, 120, 192, 244, 255, 15, 216, 205, // W...nx...... + 80, 211, 208, 94, 0, 0, 0 // P..^.. +}; +static const unsigned char v6[] = { + 45, 45, 45, 45, 45, 66, 69, 71, 73, 78, 32, 67, // -----BEGIN C + 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, // ERTIFICATE-- + 45, 45, 45, 10, 77, 73, 73, 66, 67, 84, 67, 66, // ---.MIIBCTCB + 115, 65, 73, 74, 65, 75, 57, 119, 98, 73, 68, 107, // sAIJAK9wbIDk + 72, 110, 65, 111, 77, 65, 111, 71, 67, 67, 113, 71, // HnAoMAoGCCqG + 83, 77, 52, 57, 66, 65, 77, 67, 77, 65, 48, 120, // SM49BAMCMA0x + 67, 122, 65, 74, 66, 103, 78, 86, 66, 65, 89, 84, // CzAJBgNVBAYT + 65, 107, 108, 70, 77, 66, 52, 88, 10, 68, 84, 73, // AklFMB4X.DTI + 122, 77, 68, 69, 121, 79, 84, 73, 120, 77, 106, 69, // zMDEyOTIxMjE + 122, 79, 70, 111, 88, 68, 84, 77, 122, 77, 68, 69, // zOFoXDTMzMDE + 121, 78, 106, 73, 120, 77, 106, 69, 122, 79, 70, 111, // yNjIxMjEzOFo + 119, 68, 84, 69, 76, 77, 65, 107, 71, 65, 49, 85, // wDTELMAkGA1U + 69, 66, 104, 77, 67, 83, 85, 85, 119, 87, 84, 65, // EBhMCSUUwWTA + 84, 10, 66, 103, 99, 113, 104, 107, 106, 79, 80, 81, // T.BgcqhkjOPQ + 73, 66, 66, 103, 103, 113, 104, 107, 106, 79, 80, 81, // IBBggqhkjOPQ + 77, 66, 66, 119, 78, 67, 65, 65, 82, 122, 83, 81, // MBBwNCAARzSQ + 83, 53, 79, 72, 100, 49, 55, 108, 85, 101, 78, 73, // S5OHd17lUeNI + 43, 54, 107, 112, 57, 87, 89, 117, 48, 99, 120, 117, // +6kp9WYu0cxu + 69, 73, 105, 47, 74, 84, 10, 106, 112, 104, 98, 67, // EIi/JT.jphbC + 109, 100, 74, 68, 49, 99, 85, 118, 104, 109, 122, 77, // mdJD1cUvhmzM + 57, 47, 112, 104, 118, 74, 84, 57, 107, 97, 49, 48, // 9/phvJT9ka10 + 90, 57, 116, 111, 90, 104, 103, 110, 66, 113, 48, 111, // Z9toZhgnBq0o + 48, 120, 102, 84, 81, 52, 106, 67, 49, 118, 119, 77, // 0xfTQ4jC1vwM + 65, 111, 71, 67, 67, 113, 71, 83, 77, 52, 57, 10, // AoGCCqGSM49. + 66, 65, 77, 67, 65, 48, 103, 65, 77, 69, 85, 67, // BAMCA0gAMEUC + 73, 81, 67, 101, 48, 84, 50, 69, 48, 71, 79, 105, // IQCe0T2E0GOi + 86, 101, 57, 75, 119, 118, 73, 69, 80, 101, 88, 49, // Ve9KwvIEPeX1 + 74, 49, 74, 48, 84, 55, 84, 78, 97, 99, 103, 82, // J1J0T7TNacgR + 48, 89, 97, 51, 51, 72, 86, 57, 86, 103, 73, 103, // 0Ya33HV9VgIg + 78, 118, 100, 110, 10, 97, 69, 87, 105, 66, 112, 49, // Nvdn.aEWiBp1 + 120, 115, 104, 115, 52, 105, 122, 54, 87, 98, 112, 120, // xshs4iz6Wbpx + 114, 83, 49, 73, 72, 117, 99, 114, 113, 107, 90, 117, // rS1IHucrqkZu + 74, 76, 102, 78, 90, 71, 90, 73, 61, 10, 45, 45, // JLfNZGZI=.-- + 45, 45, 45, 69, 78, 68, 32, 67, 69, 82, 84, 73, // ---END CERTI + 70, 73, 67, 65, 84, 69, 45, 45, 45, 45, 45, 10, 0 // FICATE-----. +}; +static const unsigned char v7[] = { + 45, 45, 45, 45, 45, 66, 69, 71, 73, 78, 32, 69, // -----BEGIN E + 67, 32, 80, 82, 73, 86, 65, 84, 69, 32, 75, 69, // C PRIVATE KE + 89, 45, 45, 45, 45, 45, 10, 77, 72, 99, 67, 65, // Y-----.MHcCA + 81, 69, 69, 73, 67, 66, 122, 51, 72, 79, 107, 81, // QEEICBz3HOkQ + 76, 80, 66, 68, 116, 100, 107, 110, 113, 67, 55, 107, // LPBDtdknqC7k + 49, 80, 78, 115, 87, 106, 54, 72, 102, 104, 121, 78, // 1PNsWj6HfhyN + 66, 53, 77, 101, 110, 102, 106, 109, 113, 105, 111, 111, // B5Menfjmqioo + 65, 111, 71, 67, 67, 113, 71, 83, 77, 52, 57, 10, // AoGCCqGSM49. + 65, 119, 69, 72, 111, 85, 81, 68, 81, 103, 65, 69, // AwEHoUQDQgAE + 99, 48, 107, 69, 117, 84, 104, 51, 100, 101, 53, 86, // c0kEuTh3de5V + 72, 106, 83, 80, 117, 112, 75, 102, 86, 109, 76, 116, // HjSPupKfVmLt + 72, 77, 98, 104, 67, 73, 118, 121, 85, 52, 54, 89, // HMbhCIvyU46Y + 87, 119, 112, 110, 83, 81, 57, 88, 70, 76, 52, 90, // WwpnSQ9XFL4Z + 115, 122, 80, 102, 10, 54, 89, 98, 121, 85, 47, 90, // szPf.6YbyU/Z + 71, 116, 100, 71, 102, 98, 97, 71, 89, 89, 74, 119, // GtdGfbaGYYJw + 97, 116, 75, 78, 77, 88, 48, 48, 79, 73, 119, 116, // atKNMX00OIwt + 98, 56, 65, 61, 61, 10, 45, 45, 45, 45, 45, 69, // b8A==.-----E + 78, 68, 32, 69, 67, 32, 80, 82, 73, 86, 65, 84, // ND EC PRIVAT + 69, 32, 75, 69, 89, 45, 45, 45, 45, 45, 10, 0 // E KEY-----. +}; + +static const struct packed_file { + const char *name; + const unsigned char *data; + size_t size; + time_t mtime; +} packed_files[] = { + {"/web_root/bundle.js.gz", v1, sizeof(v1), 1701088380}, + {"/web_root/history.min.js.gz", v2, sizeof(v2), 1701088372}, + {"/web_root/index.html.gz", v3, sizeof(v3), 1700929619}, + {"/web_root/main.css.gz", v4, sizeof(v4), 1701120211}, + {"/web_root/main.js.gz", v5, sizeof(v5), 1701120202}, + {"/certs/server_cert.pem", v6, sizeof(v6), 1692695603}, + {"/certs/server_key.pem", v7, sizeof(v7), 1692695603}, + {NULL, NULL, 0, 0} +}; + +static int scmp(const char *a, const char *b) { + while (*a && (*a == *b)) a++, b++; + return *(const unsigned char *) a - *(const unsigned char *) b; +} +const char *mg_unlist(size_t no) { + return packed_files[no].name; +} +const char *mg_unpack(const char *name, size_t *size, time_t *mtime) { + const struct packed_file *p; + for (p = packed_files; p->name != NULL; p++) { + if (scmp(p->name, name) != 0) continue; + if (size != NULL) *size = p->size - 1; + if (mtime != NULL) *mtime = p->mtime; + return (const char *) p->data; + } + return NULL; +} diff --git a/examples/modbus-dashboard/tailwind.config.js b/examples/modbus-dashboard/tailwind.config.js new file mode 100644 index 00000000..a1233992 --- /dev/null +++ b/examples/modbus-dashboard/tailwind.config.js @@ -0,0 +1,17 @@ +module.exports = { + content: ['./web_root/*.{html,js}'], + xplugins: [ 'tailwindcss', 'xautoprefixer' ], + corePlugins: {outline: false}, + theme: { + extend: {}, + fontFamily: { + sans: + [ + "Inter var, Helvetica, sans-serif", { + fontFeatureSettings: '"cv11", "ss01"', + fontVariationSettings: '"opsz" 32', + } + ] + } + } +} diff --git a/examples/modbus-dashboard/web_root/bundle.js b/examples/modbus-dashboard/web_root/bundle.js new file mode 100644 index 00000000..58426ace --- /dev/null +++ b/examples/modbus-dashboard/web_root/bundle.js @@ -0,0 +1 @@ +var n,t,e,_,r,o,i,u,l,c={},a=[],s=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function f(n,t){for(var e in t)n[e]=t[e];return n}function p(n){var t=n.parentNode;t&&t.removeChild(n)}function h(t,e,_){var r,o,i,u={};for(i in e)"key"==i?r=e[i]:"ref"==i?o=e[i]:u[i]=e[i];if(arguments.length>2&&(u.children=arguments.length>3?n.call(arguments,2):_),"function"==typeof t&&null!=t.defaultProps)for(i in t.defaultProps)void 0===u[i]&&(u[i]=t.defaultProps[i]);return d(t,u,r,o,null)}function d(n,_,r,o,i){var u={type:n,props:_,key:r,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==i?++e:i};return null==i&&null!=t.vnode&&t.vnode(u),u}function v(){return{current:null}}function m(n){return n.children}function y(n,t){this.props=n,this.context=t}function g(n,t){if(null==t)return n.__?g(n.__,n.__.__k.indexOf(n)+1):null;for(var e;tt&&r.sort(u));C.__r=0}function x(n,t,e,_,r,o,i,u,l,s){var f,p,h,v,y,b,k,C=_&&_.__k||a,x=C.length;for(e.__k=[],f=0;f0?d(v.type,v.props,v.key,v.ref?v.ref:null,v.__v):v)){if(v.__=e,v.__b=e.__b+1,null===(h=C[f])||h&&v.key==h.key&&v.type===h.type)C[f]=void 0;else for(p=0;p=0;t--)if((e=n.__k[t])&&(_=A(e)))return _;return null}function P(n,t,e,_,r){var o;for(o in e)"children"===o||"key"===o||o in t||N(n,o,null,e[o],_);for(o in t)r&&"function"!=typeof t[o]||"children"===o||"key"===o||"value"===o||"checked"===o||e[o]===t[o]||N(n,o,t[o],e[o],_)}function S(n,t,e){"-"===t[0]?n.setProperty(t,null==e?"":e):n[t]=null==e?"":"number"!=typeof e||s.test(t)?e:e+"px"}function N(n,t,e,_,r){var o;n:if("style"===t)if("string"==typeof e)n.style.cssText=e;else{if("string"==typeof _&&(n.style.cssText=_=""),_)for(t in _)e&&t in e||S(n.style,t,"");if(e)for(t in e)_&&e[t]===_[t]||S(n.style,t,e[t])}else if("o"===t[0]&&"n"===t[1])o=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in n?t.toLowerCase().slice(2):t.slice(2),n.l||(n.l={}),n.l[t+o]=e,e?_||n.addEventListener(t,o?D:w,o):n.removeEventListener(t,o?D:w,o);else if("dangerouslySetInnerHTML"!==t){if(r)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!==t&&"height"!==t&&"href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in n)try{n[t]=null==e?"":e;break n}catch(n){}"function"==typeof e||(null==e||!1===e&&"-"!==t[4]?n.removeAttribute(t):n.setAttribute(t,e))}}function w(n){return this.l[n.type+!1](t.event?t.event(n):n)}function D(n){return this.l[n.type+!0](t.event?t.event(n):n)}function T(n,e,_,r,o,i,u,l,c){var a,s,p,h,d,v,g,b,k,C,E,H,U,A,P,S=e.type;if(void 0!==e.constructor)return null;null!=_.__h&&(c=_.__h,l=e.__e=_.__e,e.__h=null,i=[l]),(a=t.__b)&&a(e);try{n:if("function"==typeof S){if(b=e.props,k=(a=S.contextType)&&r[a.__c],C=a?k?k.props.value:a.__:r,_.__c?g=(s=e.__c=_.__c).__=s.__E:("prototype"in S&&S.prototype.render?e.__c=s=new S(b,C):(e.__c=s=new y(b,C),s.constructor=S,s.render=V),k&&k.sub(s),s.props=b,s.state||(s.state={}),s.context=C,s.__n=r,p=s.__d=!0,s.__h=[],s._sb=[]),null==s.__s&&(s.__s=s.state),null!=S.getDerivedStateFromProps&&(s.__s==s.state&&(s.__s=f({},s.__s)),f(s.__s,S.getDerivedStateFromProps(b,s.__s))),h=s.props,d=s.state,s.__v=e,p)null==S.getDerivedStateFromProps&&null!=s.componentWillMount&&s.componentWillMount(),null!=s.componentDidMount&&s.__h.push(s.componentDidMount);else{if(null==S.getDerivedStateFromProps&&b!==h&&null!=s.componentWillReceiveProps&&s.componentWillReceiveProps(b,C),!s.__e&&null!=s.shouldComponentUpdate&&!1===s.shouldComponentUpdate(b,s.__s,C)||e.__v===_.__v){for(e.__v!==_.__v&&(s.props=b,s.state=s.__s,s.__d=!1),s.__e=!1,e.__e=_.__e,e.__k=_.__k,e.__k.forEach((function(n){n&&(n.__=e)})),E=0;E2&&(u.children=arguments.length>3?n.call(arguments,2):_),d(t.type,u,r||t.key,o||t.ref,null)}function $(n,t){var e={__c:t="__cC"+l++,__:n,Consumer:function(n,t){return n.children(t)},Provider:function(n){var e,_;return this.getChildContext||(e=[],(_={})[t]=this,this.getChildContext=function(){return _},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&e.some((function(n){n.__e=!0,k(n)}))},this.sub=function(n){e.push(n);var t=n.componentWillUnmount;n.componentWillUnmount=function(){e.splice(e.indexOf(n),1),t&&t.call(n)}}),n.children}};return e.Provider.__=e.Consumer.contextType=e}n=a.slice,t={__e:function(n,t,e,_){for(var r,o,i;t=t.__;)if((r=t.__c)&&!r.__)try{if((o=r.constructor)&&null!=o.getDerivedStateFromError&&(r.setState(o.getDerivedStateFromError(n)),i=r.__d),null!=r.componentDidCatch&&(r.componentDidCatch(n,_||{}),i=r.__d),i)return r.__E=r}catch(t){n=t}throw n}},e=0,_=function(n){return null!=n&&void 0===n.constructor},y.prototype.setState=function(n,t){var e;e=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=f({},this.state),"function"==typeof n&&(n=n(f({},e),this.props)),n&&f(e,n),null!=n&&this.__v&&(t&&this._sb.push(t),k(this))},y.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),k(this))},y.prototype.render=m,r=[],i="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,u=function(n,t){return n.__v.__b-t.__v.__b},C.__r=0,l=0;var j,q,B,K,G=0,z=[],J=[],Q=t.__b,X=t.__r,Y=t.diffed,Z=t.__c,nn=t.unmount;function tn(n,e){t.__h&&t.__h(q,n,G||e),G=0;var _=q.__H||(q.__H={__:[],__h:[]});return n>=_.__.length&&_.__.push({__V:J}),_.__[n]}function en(n){return G=1,_n(kn,n)}function _n(n,t,e){var _=tn(j++,2);if(_.t=n,!_.__c&&(_.__=[e?e(t):kn(void 0,t),function(n){var t=_.__N?_.__N[0]:_.__[0],e=_.t(t,n);t!==e&&(_.__N=[e,_.__[1]],_.__c.setState({}))}],_.__c=q,!q.u)){var r=function(n,t,e){if(!_.__c.__H)return!0;var r=_.__c.__H.__.filter((function(n){return n.__c}));if(r.every((function(n){return!n.__N})))return!o||o.call(this,n,t,e);var i=!1;return r.forEach((function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}})),!(!i&&_.__c.props===n)&&(!o||o.call(this,n,t,e))};q.u=!0;var o=q.shouldComponentUpdate,i=q.componentWillUpdate;q.componentWillUpdate=function(n,t,e){if(this.__e){var _=o;o=void 0,r(n,t,e),o=_}i&&i.call(this,n,t,e)},q.shouldComponentUpdate=r}return _.__N||_.__}function rn(n,e){var _=tn(j++,3);!t.__s&&bn(_.__H,e)&&(_.__=n,_.i=e,q.__H.__h.push(_))}function on(n,e){var _=tn(j++,4);!t.__s&&bn(_.__H,e)&&(_.__=n,_.i=e,q.__h.push(_))}function un(n){return G=5,cn((function(){return{current:n}}),[])}function ln(n,t,e){G=6,on((function(){return"function"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0}),null==e?e:e.concat(n))}function cn(n,t){var e=tn(j++,7);return bn(e.__H,t)?(e.__V=n(),e.i=t,e.__h=n,e.__V):e.__}function an(n,t){return G=8,cn((function(){return n}),t)}function sn(n){var t=q.context[n.__c],e=tn(j++,9);return e.c=n,t?(null==e.__&&(e.__=!0,t.sub(q)),t.props.value):n.__}function fn(n,e){t.useDebugValue&&t.useDebugValue(e?e(n):n)}function pn(n){var t=tn(j++,10),e=en();return t.__=n,q.componentDidCatch||(q.componentDidCatch=function(n,_){t.__&&t.__(n,_),e[1](n)}),[e[0],function(){e[1](void 0)}]}function hn(){var n=tn(j++,11);if(!n.__){for(var t=q.__v;null!==t&&!t.__m&&null!==t.__;)t=t.__;var e=t.__m||(t.__m=[0,0]);n.__="P"+e[0]+"-"+e[1]++}return n.__}function dn(){for(var n;n=z.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(yn),n.__H.__h.forEach(gn),n.__H.__h=[]}catch(o){n.__H.__h=[],t.__e(o,n.__v)}}t.__b=function(n){q=null,Q&&Q(n)},t.__r=function(n){X&&X(n),j=0;var t=(q=n.__c).__H;t&&(B===q?(t.__h=[],q.__h=[],t.__.forEach((function(n){n.__N&&(n.__=n.__N),n.__V=J,n.__N=n.i=void 0}))):(t.__h.forEach(yn),t.__h.forEach(gn),t.__h=[])),B=q},t.diffed=function(n){Y&&Y(n);var e=n.__c;e&&e.__H&&(e.__H.__h.length&&(1!==z.push(e)&&K===t.requestAnimationFrame||((K=t.requestAnimationFrame)||mn)(dn)),e.__H.__.forEach((function(n){n.i&&(n.__H=n.i),n.__V!==J&&(n.__=n.__V),n.i=void 0,n.__V=J}))),B=q=null},t.__c=function(n,_){_.some((function(n){try{n.__h.forEach(yn),n.__h=n.__h.filter((function(n){return!n.__||gn(n)}))}catch(e){_.some((function(n){n.__h&&(n.__h=[])})),_=[],t.__e(e,n.__v)}})),Z&&Z(n,_)},t.unmount=function(n){nn&&nn(n);var e,_=n.__c;_&&_.__H&&(_.__H.__.forEach((function(n){try{yn(n)}catch(n){e=n}})),_.__H=void 0,e&&t.__e(e,_.__v))};var vn="function"==typeof requestAnimationFrame;function mn(n){var t,e=function(){clearTimeout(_),vn&&cancelAnimationFrame(t),setTimeout(n)},_=setTimeout(e,100);vn&&(t=requestAnimationFrame(e))}function yn(n){var t=q,e=n.__c;"function"==typeof e&&(n.__c=void 0,e()),q=t}function gn(n){var t=q;n.__c=n.__(),q=t}function bn(n,t){return!n||n.length!==t.length||t.some((function(t,e){return t!==n[e]}))}function kn(n,t){return"function"==typeof t?t(n):t}var Cn=function(n,t,e,_){var r;t[0]=0;for(var o=1;o=5&&((r||!n&&5===_)&&(i.push(_,0,r,e),_=6),n&&(i.push(_,n,0,e),_=6)),r=""},l=0;l"===t?(_=1,r=""):r=t+r[0]:o?t===o?o="":r+=t:'"'===t||"'"===t?o=t:">"===t?(u(),_=1):_&&("="===t?(_=5,e=r,r=""):"/"===t&&(_<5||">"===n[l][c+1])?(u(),3===_&&(i=i[0]),_=i,(i=i[0]).push(2,0,_),_=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(u(),_=2):r+=t),3===_&&"!--"===r&&(_=4,i=i[0])}return u(),i}(n)),t),arguments,[])).length>1?t:t[0]}var Hn=En.bind(h);var Un={};function An(n,t){for(var e in t)n[e]=t[e];return n}function Pn(n,t,e){var _,r=/(?:\?([^#]*))?(#.*)?$/,o=n.match(r),i={};if(o&&o[1])for(var u=o[1].split("&"),l=0;lt.rank?-1:n.index-t.index}function Nn(n,t){return n.index=t,n.rank=function(n){return n.props.default?0:wn(n.props.path).map(Dn).join("")}(n),n.props}function wn(n){return n.replace(/(^\/+|\/+$)/g,"").split("/")}function Dn(n){return":"==n.charAt(0)?1+"*+?".indexOf(n.charAt(n.length-1))||4:5}var Tn={},Rn=[],Ln=[],Mn=null,Wn={url:In()},Vn=$(Wn);function Fn(){var n=sn(Vn);if(n===Wn){var t=en()[1];rn((function(){return Ln.push(t),function(){return Ln.splice(Ln.indexOf(t),1)}}),[])}return[n,On]}function In(){var n;return""+((n=Mn&&Mn.location?Mn.location:Mn&&Mn.getCurrentLocation?Mn.getCurrentLocation():"undefined"!=typeof location?location:Tn).pathname||"")+(n.search||"")}function On(n,t){return void 0===t&&(t=!1),"string"!=typeof n&&n.url&&(t=n.replace,n=n.url),function(n){for(var t=Rn.length;t--;)if(Rn[t].canRoute(n))return!0;return!1}(n)&&function(n,t){void 0===t&&(t="push"),Mn&&Mn[t]?Mn[t](n):"undefined"!=typeof history&&history[t+"State"]&&history[t+"State"](null,null,n)}(n,t?"replace":"push"),$n(n)}function $n(n){for(var t=!1,e=0;e0&&void 0!==arguments[0]?arguments[0]:{};d.canUseDOM?void 0:(0,c.default)(!1);var n=window.history,e=(0,d.supportsHistory)(),o=!(0,d.supportsPopStateOnHashChange)(),i=t.forceRefresh,a=void 0!==i&&i,f=t.getUserConfirmation,y=void 0===f?d.getConfirmation:f,g=t.keyLength,m=void 0===g?6:g,w=t.basename?(0,s.stripTrailingSlash)((0,s.addLeadingSlash)(t.basename)):"",P=function(t){var n=t||{},e=n.key,o=n.state,i=window.location,a=i.pathname,c=i.search,u=i.hash,f=a+c+u;return w&&(f=(0,s.stripPrefix)(f,w)),r({},(0,s.parsePath)(f),{state:o,key:e})},b=function(){return Math.random().toString(36).substr(2,m)},O=(0,l.default)(),x=function(t){r(G,t),G.length=n.length,O.notifyListeners(G.location,G.action)},L=function(t){(0,d.isExtraneousPopstateEvent)(t)||A(P(t.state))},S=function(){A(P(p()))},E=!1,A=function(t){if(E)E=!1,x();else{var n="POP";O.confirmTransitionTo(t,n,y,function(e){e?x({action:n,location:t}):_(t)})}},_=function(t){var n=G.location,e=M.indexOf(n.key);e===-1&&(e=0);var o=M.indexOf(t.key);o===-1&&(o=0);var r=e-o;r&&(E=!0,C(r))},k=P(p()),M=[k.key],T=function(t){return w+(0,s.createPath)(t)},H=function(t,o){var r="PUSH",i=(0,u.createLocation)(t,o,b(),G.location);O.confirmTransitionTo(i,r,y,function(t){if(t){var o=T(i),c=i.key,u=i.state;if(e)if(n.pushState({key:c,state:u},null,o),a)window.location.href=o;else{var s=M.indexOf(G.location.key),f=M.slice(0,s===-1?0:s+1);f.push(i.key),M=f,x({action:r,location:i})}else window.location.href=o}})},j=function(t,o){var r="REPLACE",i=(0,u.createLocation)(t,o,b(),G.location);O.confirmTransitionTo(i,r,y,function(t){if(t){var o=T(i),c=i.key,u=i.state;if(e)if(n.replaceState({key:c,state:u},null,o),a)window.location.replace(o);else{var s=M.indexOf(G.location.key);s!==-1&&(M[s]=i.key),x({action:r,location:i})}else window.location.replace(o)}})},C=function(t){n.go(t)},U=function(){return C(-1)},R=function(){return C(1)},I=0,q=function(t){I+=t,1===I?((0,d.addEventListener)(window,h,L),o&&(0,d.addEventListener)(window,v,S)):0===I&&((0,d.removeEventListener)(window,h,L),o&&(0,d.removeEventListener)(window,v,S))},B=!1,F=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=O.setPrompt(t);return B||(q(1),B=!0),function(){return B&&(B=!1,q(-1)),n()}},D=function(t){var n=O.appendListener(t);return q(1),function(){q(-1),n()}},G={length:n.length,action:"POP",location:k,createHref:T,push:H,replace:j,go:C,goBack:U,goForward:R,block:F,listen:D};return G};n.default=y},function(t,n,e){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}n.__esModule=!0;var r=Object.assign||function(t){for(var n=1;n=0?n:0)+"#"+t)},m=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};d.canUseDOM?void 0:(0,c.default)(!1);var n=window.history,e=((0,d.supportsGoWithoutReloadUsingHash)(),t.getUserConfirmation),o=void 0===e?d.getConfirmation:e,i=t.hashType,a=void 0===i?"slash":i,f=t.basename?(0,s.stripTrailingSlash)((0,s.addLeadingSlash)(t.basename)):"",m=v[a],w=m.encodePath,P=m.decodePath,b=function(){var t=P(p());return f&&(t=(0,s.stripPrefix)(t,f)),(0,s.parsePath)(t)},O=(0,l.default)(),x=function(t){r(V,t),V.length=n.length,O.notifyListeners(V.location,V.action)},L=!1,S=null,E=function(){var t=p(),n=w(t);if(t!==n)g(n);else{var e=b(),o=V.location;if(!L&&(0,u.locationsAreEqual)(o,e))return;if(S===(0,s.createPath)(e))return;S=null,A(e)}},A=function(t){if(L)L=!1,x();else{var n="POP";O.confirmTransitionTo(t,n,o,function(e){e?x({action:n,location:t}):_(t)})}},_=function(t){var n=V.location,e=H.lastIndexOf((0,s.createPath)(n));e===-1&&(e=0);var o=H.lastIndexOf((0,s.createPath)(t));o===-1&&(o=0);var r=e-o;r&&(L=!0,R(r))},k=p(),M=w(k);k!==M&&g(M);var T=b(),H=[(0,s.createPath)(T)],j=function(t){return"#"+w(f+(0,s.createPath)(t))},C=function(t,n){var e="PUSH",r=(0,u.createLocation)(t,void 0,void 0,V.location);O.confirmTransitionTo(r,e,o,function(t){if(t){var n=(0,s.createPath)(r),o=w(f+n),i=p()!==o;if(i){S=n,y(o);var a=H.lastIndexOf((0,s.createPath)(V.location)),c=H.slice(0,a===-1?0:a+1);c.push(n),H=c,x({action:e,location:r})}else x()}})},U=function(t,n){var e="REPLACE",r=(0,u.createLocation)(t,void 0,void 0,V.location);O.confirmTransitionTo(r,e,o,function(t){if(t){var n=(0,s.createPath)(r),o=w(f+n),i=p()!==o;i&&(S=n,g(o));var a=H.indexOf((0,s.createPath)(V.location));a!==-1&&(H[a]=n),x({action:e,location:r})}})},R=function(t){n.go(t)},I=function(){return R(-1)},q=function(){return R(1)},B=0,F=function(t){B+=t,1===B?(0,d.addEventListener)(window,h,E):0===B&&(0,d.removeEventListener)(window,h,E)},D=!1,G=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=O.setPrompt(t);return D||(F(1),D=!0),function(){return D&&(D=!1,F(-1)),n()}},W=function(t){var n=O.appendListener(t);return F(1),function(){F(-1),n()}},V={length:n.length,action:"POP",location:T,createHref:j,push:C,replace:U,go:R,goBack:I,goForward:q,block:G,listen:W};return V};n.default=m},function(t,n,e){"use strict";function o(t){return t&&t.__esModule?t:{default:t}}n.__esModule=!0;var r=("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Object.assign||function(t){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:{},n=t.getUserConfirmation,e=t.initialEntries,o=void 0===e?["/"]:e,i=t.initialIndex,u=void 0===i?0:i,l=t.keyLength,d=void 0===l?6:l,h=(0,s.default)(),v=function(t){r(A,t),A.length=A.entries.length,h.notifyListeners(A.location,A.action)},p=function(){return Math.random().toString(36).substr(2,d)},y=f(u,0,o.length-1),g=o.map(function(t){return"string"==typeof t?(0,c.createLocation)(t,void 0,p()):(0,c.createLocation)(t,void 0,t.key||p())}),m=a.createPath,w=function(t,e){var o="PUSH",r=(0,c.createLocation)(t,e,p(),A.location);h.confirmTransitionTo(r,o,n,function(t){if(t){var n=A.index,e=n+1,i=A.entries.slice(0);i.length>e?i.splice(e,i.length-e,r):i.push(r),v({action:o,location:r,index:e,entries:i})}})},P=function(t,e){var o="REPLACE",r=(0,c.createLocation)(t,e,p(),A.location);h.confirmTransitionTo(r,o,n,function(t){t&&(A.entries[A.index]=r,v({action:o,location:r}))})},b=function(t){var e=f(A.index+t,0,A.entries.length-1),o="POP",r=A.entries[e];h.confirmTransitionTo(r,o,n,function(t){t?v({action:o,location:r,index:e}):v()})},O=function(){return b(-1)},x=function(){return b(1)},L=function(t){var n=A.index+t;return n>=0&&n0&&void 0!==arguments[0]&&arguments[0];return h.setPrompt(t)},E=function(t){return h.appendListener(t)},A={length:g.length,action:"POP",location:g[y],index:y,entries:g,createHref:m,push:w,replace:P,go:b,goBack:O,goForward:x,canGo:L,block:S,listen:E};return A};n.default=l},function(t,n){"use strict";var e=function(t){return"/"===t.charAt(0)},o=function(t,n){for(var e=n,o=e+1,r=t.length;o=0;d--){var h=i[d];"."===h?o(i,d):".."===h?(o(i,d),l++):l&&(o(i,d),l--)}if(!u)for(;l--;l)i.unshift("..");!u||""===i[0]||i[0]&&e(i[0])||i.unshift("");var v=i.join("/");return s&&"/"!==v.substr(-1)&&(v+="/"),v};t.exports=r},function(t,n){"use strict";n.__esModule=!0;var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function t(n,o){if(n===o)return!0;if(null==n||null==o)return!1;if(Array.isArray(n))return!(!Array.isArray(o)||n.length!==o.length)&&n.every(function(n,e){return t(n,o[e])});var r="undefined"==typeof n?"undefined":e(n),i="undefined"==typeof o?"undefined":e(o);if(r!==i)return!1;if("object"===r){var a=n.valueOf(),c=o.valueOf();if(a!==n||c!==o)return t(a,c);var u=Object.keys(n),s=Object.keys(o);return u.length===s.length&&u.every(function(e){return t(n[e],o[e])})}return!1};n.default=o}])}); \ No newline at end of file diff --git a/examples/modbus-dashboard/web_root/index.html b/examples/modbus-dashboard/web_root/index.html new file mode 100644 index 00000000..7ad0821c --- /dev/null +++ b/examples/modbus-dashboard/web_root/index.html @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/examples/modbus-dashboard/web_root/main.css b/examples/modbus-dashboard/web_root/main.css new file mode 100644 index 00000000..8a757d00 --- /dev/null +++ b/examples/modbus-dashboard/web_root/main.css @@ -0,0 +1 @@ +/*! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter var,Helvetica,sans-serif;font-feature-settings:"cv11","ss01";font-variation-settings:"opsz" 32}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.left-0{left:0}.right-auto{right:auto}.top-0{top:0}.z-10{z-index:10}.z-\[48\]{z-index:48}.z-\[60\]{z-index:60}.m-4{margin:1rem}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-1{margin-bottom:.25rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-full{height:100%}.max-h-64{max-height:16rem}.min-h-screen{min-height:100vh}.w-0{width:0}.w-11{width:2.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-full{width:100%}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow-0{flex-grow:0}.basis-\[30px\]{flex-basis:30px}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-5,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-2{--tw-translate-y:0.5rem}.transform,.translate-y-2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.place-content-end{place-content:end}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-6{row-gap:1.5rem}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.border-transparent{border-color:#0000}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-violet-100{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.p-2{padding:.5rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pl-72{padding-left:18rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-6{line-height:1.5rem}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-0,.ring-1{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity:0.05}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.hover\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-blue-400:disabled{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.disabled\:bg-gray-100:disabled{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}@media (min-width:640px){.sm\:translate-x-0{--tw-translate-x:0px}.sm\:translate-x-0,.sm\:translate-x-2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:translate-x-2{--tw-translate-x:0.5rem}.sm\:translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:p-6{padding:1.5rem}}@media (min-width:768px){.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:block{display:block}.lg\:h-4{height:1rem}.lg\:w-px{width:1px}.lg\:gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.lg\:bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}} \ No newline at end of file diff --git a/examples/modbus-dashboard/web_root/main.js b/examples/modbus-dashboard/web_root/main.js new file mode 100644 index 00000000..95550bca --- /dev/null +++ b/examples/modbus-dashboard/web_root/main.js @@ -0,0 +1,365 @@ +// NOTE: API calls must start with 'api/' in order to serve the app at any URI + +'use strict'; +import { h, render, useState, useEffect, useRef, html, Router } from './bundle.js'; + +const Icons = { + cog: props => html` `, + info: props => html` `, + bolt: props => html` `, + home: props => html` `, + save: props => html` `, + bars3: props => html` `, +}; + +function TextValue({value, setfn, disabled, placeholder, type, addonRight, addonLeft, attr, min, max, step, mult}) { + const [bg, setBg] = useState('bg-white'); + useEffect(() => { if (type == 'number') checkval(+min, +max, +value); }, []); + step ||= '1', mult ||= 1; + const checkval = function(min, max, v) { + setBg('bg-white'); + if (min && v < min) setBg('bg-red-100 border-red-200'); + if (max && v > max) setBg('bg-red-100 border-red-200'); + }; + const m = step.match(/^.+\.(.+)/); + const digits = m ? m[1].length : 0; + const onchange = ev => { + let v = ev.target.value; + if (type == 'number') { + checkval(+min, +max, +v); + v = +(parseFloat(v) / mult).toFixed(digits); + } + setfn(v); + }; + if (type == 'number') value = +(value * mult).toFixed(digits); + return html` +
+ ${addonLeft && html`${addonLeft}` } + + ${addonRight && html`${addonRight}` } +`; +}; + +function SelectValue({value, setfn, options, disabled}) { + const toInt = x => x == parseInt(x) ? parseInt(x) : x; + const onchange = ev => setfn(toInt(ev.target.value)); + return html` +