Commit 4ca182f34b131303b0e882ce60889054038b2180

Authored by Imanol-Mikel Barba Sabariego
1 parent d6d037be

--no commit message

Project/applications/smartcities/callbacks.c
@@ -33,3 +33,74 @@ void wifi_connect_ap_result_cb(int result) @@ -33,3 +33,74 @@ void wifi_connect_ap_result_cb(int result)
33 33
34 printf("New WiFi Network state: %s\r\n", (result == WISMART_WIFI_CONNECTED) ? "Created": "Failed\r\n"); 34 printf("New WiFi Network state: %s\r\n", (result == WISMART_WIFI_CONNECTED) ? "Created": "Failed\r\n");
35 } 35 }
  36 +
  37 +void softapMode_apStartedCb(int result){
  38 + if (result == WISMART_WIFI_CONNECTED){
  39 + wifiConnected(WIFI_MODE_SOFTAP);
  40 + }
  41 +}
  42 +
  43 +
  44 +/**
  45 + * @brief Informs the application about client events in softap mode
  46 +*/
  47 +void softapMode_clientIndicationCb(wismart_softap_cb_t reason, const uint8_t *mac, const libwismart_ip_addr_t *ip){
  48 +#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
  49 +#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
  50 +
  51 + switch(reason){
  52 + case WISMART_WIFI_AP_CLIENT_CONNECTED:
  53 + printf("Client: "MACSTR" connected\r\n",MAC2STR(mac));
  54 + break;
  55 + case WISMART_WIFI_AP_CLIENT_DISCONNECTED:
  56 + printf("Client: "MACSTR" disconnected\r\n",MAC2STR(mac));
  57 + break;
  58 + case WISMART_WIFI_AP_CLIENT_EXPIRED:
  59 + printf("Client: "MACSTR" connection have expired\r\n",MAC2STR(mac));
  60 + break;
  61 + case WISMART_WIFI_AP_CLIENT_GET_IP:
  62 + printf("Client: "MACSTR" got ip: %s\r\n", MAC2STR(mac), inet_ntoa(*ip));
  63 + break;
  64 + }
  65 +
  66 +#undef MAC2STR
  67 +#undef MACSTR
  68 +}
  69 +
  70 +void wifiConnected(uint8_t wifiMode){
  71 + static uint8_t networkInited = 0;
  72 +
  73 + printWifiInfo(wifiMode);
  74 +
  75 + if(networkInited != 0){
  76 + return;
  77 + }else{
  78 + networkInited = 1;
  79 + }
  80 +
  81 + switch(wifiMode){
  82 + case WIFI_MODE_SOFTAP:
  83 +
  84 + configServer_connect();
  85 + break;
  86 + case WIFI_MODE_CLIENT:
  87 +
  88 + configServer_connect();
  89 + break;
  90 + }
  91 +
  92 +}
  93 +
  94 +void printWifiInfo(uint8_t wifiMode){
  95 +
  96 + libwismart_ip_addr_t ip, nm, gw;
  97 + libwismart_GetCurrentIP(&ip, &nm, &gw);
  98 +
  99 + printf("\r\n\r\n");
  100 + printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n");
  101 + printf("| Network Is Ready!\r\n");
  102 + printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n");
  103 + printf("| Mode : %s\r\n", (wifiMode == WIFI_MODE_CLIENT) ? "Client":"Soft Access Point");
  104 + printf("| IP : %u.%u.%u.%u\r\n", ip.addr[3], ip.addr[2], ip.addr[1], ip.addr[0]);
  105 + printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n");
  106 +}
36 \ No newline at end of file 107 \ No newline at end of file
Project/applications/smartcities/configServer.c 0 โ†’ 100644
  1 +#include "configServer.h"
  2 +
  3 +char arg_networkNameStr[100];
  4 +char arg_passphraseStr[100];
  5 +char arg_securityTypeStr[100];
  6 +char arg_radUserStr[100];
  7 +char arg_radPassStr[100];
  8 +wismart_timer_t rebootTimer;
  9 +
  10 +/* This is the array that stores the http resources */
  11 +wismart_server_resource_t configServerResources[22];
  12 +
  13 +
  14 +void configServer_start(uint8_t enableApScan)
  15 +{
  16 + configServer_buildResources();
  17 + libwismart_server_start(80, "WismartServer", configServer_dynamicCb, chHeapFree, configServerResources);
  18 +}
  19 +
  20 +void configServer_connect()
  21 +{
  22 + libwismart_server_connect();
  23 +}
  24 +
  25 +void configServer_reboot()
  26 +{
  27 + libwismart_TimerSet(&rebootTimer, 5000, configServer_rebootTimerHandler, NULL);
  28 +}
  29 +
  30 +void configServer_rebootTimerHandler(void *arg)
  31 +{
  32 + libwismart_Reboot();
  33 +}
  34 +
  35 +void configServer_setClientParameters()
  36 +{
  37 + char asciiBuf[20];
  38 + libwismart_server_GET("networkName", arg_networkNameStr, sizeof(arg_networkNameStr));
  39 + libwismart_server_GET("passphrase", arg_passphraseStr, sizeof(arg_passphraseStr));
  40 + libwismart_server_GET("securityType", arg_securityTypeStr, sizeof(arg_securityTypeStr));
  41 + libwismart_server_GET("radUser", arg_radUserStr, sizeof(arg_radUserStr));
  42 + libwismart_server_GET("radPass", arg_radPassStr, sizeof(arg_radPassStr));
  43 +
  44 + CONFIG_SERVER_DBG("The following client settings where retrieved:\r\n");
  45 + CONFIG_SERVER_DBG("networkName : %s\r\n",arg_networkNameStr);
  46 + CONFIG_SERVER_DBG("securityType : %s\r\n",arg_securityTypeStr);
  47 + CONFIG_SERVER_DBG("passphrase : %s\r\n",arg_passphraseStr);
  48 + CONFIG_SERVER_DBG("radUser : %s\r\n",arg_radUserStr);
  49 + CONFIG_SERVER_DBG("radPass : %s\r\n",arg_radPassStr);
  50 +
  51 + /* Value validation */
  52 + if((strlen((char*)arg_networkNameStr) > 32) || (strlen((char*)arg_networkNameStr) == 0))
  53 + {
  54 + CONFIG_SERVER_DBG_WARNING("Invalid network name![%s]\r\n",(char*)arg_networkNameStr);
  55 + strcpy((char*)arg_networkNameStr,"modularsense");
  56 + }
  57 +
  58 + libwismart_ProfileSet_Str("ssid", (char*)arg_networkNameStr);
  59 + if(strcmp((char*)arg_securityTypeStr, SECURITY_TYPE_OPEN) == 0)
  60 + {
  61 + /* OPEN ----------------------------------------------------------- */
  62 + libwismart_ProfileSet_Str("passphrase", (char*)"");
  63 + libwismart_ProfileSet_Int("securityType", PROFILE_SECURITY_OPEN);
  64 + }
  65 + else if(strcmp((char*)arg_securityTypeStr, SECURITY_TYPE_WPA) == 0)
  66 + {
  67 + /* WPA ------------------------------------------------------------- */
  68 + if((strlen((char*)arg_passphraseStr) < 8) || (strlen((char*)arg_passphraseStr) > 64))
  69 + {
  70 + CONFIG_SERVER_DBG_WARNING("Invalid passphrase length![%s]\r\n", arg_passphraseStr);
  71 + strcpy((char*)arg_passphraseStr,"");
  72 + }
  73 + libwismart_ProfileSet_Str("wepkey", (char*)arg_passphraseStr);
  74 + libwismart_ProfileSet_Str("passphrase", (char*)arg_passphraseStr);
  75 + libwismart_ProfileSet_Int("securityType", PROFILE_SECURITY_WPA_WPA2);
  76 + libwismart_ProfileSet_Str("radUser", (char*)arg_radUserStr);
  77 + libwismart_ProfileSet_Str("radPass", (char*)arg_radPassStr);
  78 + }
  79 + else
  80 + {
  81 + /* WEP ------------------------------------------------------------- */
  82 + if(strlen((char*)arg_passphraseStr) == 5)
  83 + {
  84 + libwismart_ProfileSet_Int("securityType", PROFILE_SECURITY_WEP40);
  85 + }
  86 + else if(strlen((char*)arg_passphraseStr) == 13)
  87 + {
  88 + libwismart_ProfileSet_Int("securityType", PROFILE_SECURITY_WEP104);
  89 + }
  90 + else if(strlen((char*)arg_passphraseStr) == 10)
  91 + {
  92 + libwismart_ProfileSet_Int("securityType", PROFILE_SECURITY_WEP104);
  93 + CONFIG_SERVER_DBG("WEP hex2ascii conversion for '%s' ...\r\n",arg_passphraseStr);
  94 + int ret;
  95 + ret = configServer_hex2bin((char*)arg_passphraseStr, (char*)asciiBuf, 5);
  96 + if(ret == 0)
  97 + {
  98 + //successful conversion
  99 + memset(arg_passphraseStr, 0, sizeof(arg_passphraseStr));
  100 + memcpy(arg_passphraseStr, asciiBuf, 5);
  101 + }
  102 + else
  103 + {
  104 + //failed conversion
  105 + memset(arg_passphraseStr, 0, sizeof(arg_passphraseStr));
  106 + CONFIG_SERVER_DBG_WARNING("WEP hex2ascii conversion failed!\r\n");
  107 + }
  108 + CONFIG_SERVER_DBG("WEP hex2ascii conversion result is '%s'\r\n",arg_passphraseStr);
  109 + }
  110 + else if(strlen((char*)arg_passphraseStr) == 26)
  111 + {
  112 + libwismart_ProfileSet_Int("securityType", PROFILE_SECURITY_WEP104);
  113 + CONFIG_SERVER_DBG("WEP hex2ascii conversion for '%s' ...\r\n",arg_passphraseStr);
  114 + int ret;
  115 + ret = configServer_hex2bin((char*)arg_passphraseStr, (char*)asciiBuf, 13);
  116 +
  117 + if(ret == 0)
  118 + {
  119 + memset(arg_passphraseStr, 0, sizeof(arg_passphraseStr));
  120 + memcpy(arg_passphraseStr, asciiBuf, 13);
  121 + }
  122 + else
  123 + {
  124 + memset(arg_passphraseStr, 0, sizeof(arg_passphraseStr));
  125 + CONFIG_SERVER_DBG_WARNING("WEP hex2ascii conversion failed!\r\n");
  126 + }
  127 + CONFIG_SERVER_DBG("WEP hex2ascii conversion result is '%s'\r\n",arg_passphraseStr);
  128 + }
  129 + else
  130 + {
  131 + CONFIG_SERVER_DBG_WARNING("Invalid WEP key length![%s]\r\n",(char*)arg_passphraseStr);
  132 + libwismart_ProfileSet_Int("securityType", PROFILE_SECURITY_WEP104);
  133 + strcpy((char*)arg_passphraseStr,"");
  134 + }
  135 +
  136 + libwismart_ProfileSet_Str("passphrase", (char*)arg_passphraseStr);
  137 + libwismart_ProfileSet_Str("wepkey", (char*)arg_passphraseStr);
  138 + }
  139 +}
  140 +
  141 +/*----------------------------------------------------------------------------------------------------------------------------------------------
  142 +// DYNAMIC CONTENT
  143 +-----------------------------------------------------------------------------------------------------------------------------------------------*/
  144 +
  145 +/*
  146 + * This callback function is called everytime the browser requests a page with the 'hasDynamicContent'
  147 + * field equal to 1. The user must return only the following values, depending the case:
  148 + * - WISMART_SERVER_ERR_MEM : if program is out of memory. This will tell the server to not drop the
  149 + * http request, and ask in ~200ms again for the value of the variable.
  150 + * After ~5 seconds of failed rerties, the http request will be dropped by the server.
  151 + * - WISMART_SERVER_ERR_OK : The program filled the 'varValue' and 'varAllocType' fields,
  152 + * and server can use them for the reply.
  153 + *
  154 + */
  155 +uint32_t configServer_dynamicCb(char* varName, char** varValue, uint8_t* varAllocType)
  156 +{
  157 + char* value;
  158 + uint16_t profile_enabled;
  159 +
  160 + CONFIG_SERVER_DBG("Quering configuration server for variable '%s'", varName);
  161 +
  162 + libwismart_ProfileGet_Int("profile_enabled", &profile_enabled);
  163 +
  164 + if(strcmp((char*)varName,"WIFI_MODE") == 0){
  165 + uint16_t wifi_mode;
  166 +
  167 + /* Alocate space for the value */
  168 + value = chHeapAlloc(NULL, 100);
  169 + if(value == NULL){
  170 + return WISMART_SERVER_ERR_MEM;
  171 + }
  172 +
  173 + if(profile_enabled == PROFILE_ENABLED) {
  174 + libwismart_ProfileGet_Int("wifi_mode", &wifi_mode);
  175 + if(wifi_mode == PROFILE_WIFI_MODE_SOFTAP){
  176 + strcpy((char*)value, "SoftAp");
  177 + }else{
  178 + strcpy((char*)value, "Client");
  179 + }
  180 + }else{
  181 + strcpy((char*)value, "N/A");
  182 + }
  183 +
  184 + /*
  185 + * Instruct server to automatically free the memory by calling the
  186 + * appropriate free() function when the request is replied.
  187 + */
  188 + *varAllocType = WISMART_SERVER_ALLOC_DYNAMIC;
  189 + (*varValue) = value;
  190 +
  191 + return WISMART_SERVER_ERR_OK;
  192 + }
  193 +
  194 +
  195 + if(strcmp((char*)varName,"WIFI_SSID") == 0){
  196 + /* Alocate space for the value */
  197 + value = chHeapAlloc(NULL, 100);
  198 + if(value == NULL){
  199 + return WISMART_SERVER_ERR_MEM;
  200 + }
  201 +
  202 + if(profile_enabled == PROFILE_ENABLED) {
  203 + libwismart_ProfileGet_Str("ssid", (char*)value);
  204 + }else{
  205 + strcpy((char*)value, "N/A");
  206 + }
  207 +
  208 + /*
  209 + * Instruct server to automatically free the memory by calling the
  210 + * appropriate free() function when the request is replied.
  211 + */
  212 + *varAllocType = WISMART_SERVER_ALLOC_DYNAMIC;
  213 + (*varValue) = value;
  214 +
  215 + return WISMART_SERVER_ERR_OK;
  216 + }
  217 +
  218 + if(strcmp((char*)varName,"WIFI_PASSPHRASE") == 0){
  219 +
  220 + /* Alocate space for the value */
  221 + value = chHeapAlloc(NULL, 100);
  222 + if(value == NULL){
  223 + return WISMART_SERVER_ERR_MEM;
  224 + }
  225 +
  226 + if(profile_enabled == PROFILE_ENABLED) {
  227 + libwismart_ProfileGet_Str("passphrase", (char*)value);
  228 + }else{
  229 + strcpy((char*)value, "N/A");
  230 + }
  231 +
  232 + /* Display only visible characters */
  233 + uint32_t index;
  234 + char* ascci = (char*)value;
  235 + for(index = 0; index < strlen(ascci); index++){
  236 + if((ascci[index] < 32) || (ascci[index] > 126)){
  237 + ascci[index] = '?';
  238 + }
  239 + }
  240 +
  241 + /*
  242 + * Instruct server to automatically free the memory by calling the
  243 + * appropriate free() function when the request is replied.
  244 + */
  245 + *varAllocType = WISMART_SERVER_ALLOC_DYNAMIC;
  246 + (*varValue) = value;
  247 +
  248 + return WISMART_SERVER_ERR_OK;
  249 + }
  250 +
  251 +
  252 + /* We should never reach here */
  253 + CONFIG_SERVER_DBG_WARNING("Unknown dynamic content asked!!");
  254 +
  255 + return WISMART_SERVER_ERR_MEM;
  256 +}
  257 +
  258 +/*----------------------------------------------------------------------------------------------------------------------------------------------
  259 +HEX2BIN conversion
  260 +-----------------------------------------------------------------------------------------------------------------------------------------------*/
  261 +/*
  262 + * This function converts a string in hex format to a string of ascii format. for
  263 + * example it will convert the string "313131" (byte array [3][1][3][1][3][1])
  264 + * into "111" (byte array [49][49][49]). This is needed because WEP keys can be
  265 + * givent either as HEX strigs or as ASCII strings.
  266 + */
  267 +int configServer_hex2bin(char *hex, char *buf, size_t hexLen){
  268 +
  269 + size_t i;
  270 + char *ipos = hex;
  271 + char *opos = buf;
  272 +
  273 + if( (hexLen%2) != 0){
  274 + return -1;
  275 + }
  276 +
  277 + for (i = 0; i < hexLen; i += 2) {
  278 + *opos++ = (ipos[i] << 4) | (ipos[i + 1]);
  279 + }
  280 +
  281 + return 0;
  282 +}
  283 +
  284 +/*----------------------------------------------------------------------------------------------------------------------------------------------
  285 +HTTP RESOURCES
  286 +-----------------------------------------------------------------------------------------------------------------------------------------------*/
  287 +/*
  288 + * This function builds a list of all the files of our http server. The next-to-last
  289 + * entry must have the 'name' field point to NULL so the server can understand
  290 + * that this was the last entry into the array.
  291 + */
  292 +void configServer_buildResources()
  293 +{
  294 + uint32_t index;
  295 +
  296 + /* --------------------------------------------------------------------------------------------- */
  297 + // STATIC FILES
  298 + /* --------------------------------------------------------------------------------------------- */
  299 +
  300 + index = 0; /* The root html file can be queried as '/' or as '/en_index.html' */
  301 + configServerResources[index].name = "/";
  302 + configServerResources[index].mimeType = CONFIG_SERVER_MIME_TYPE_HTML;
  303 + configServerResources[index].dataPtr = (uint8_t*)data_en_index_html;
  304 + configServerResources[index].dataSize = sizeof(data_en_index_html);
  305 + configServerResources[index].hasDynamicContent = 1; /* This page has dynamic content ( $_DYNAMIC[XYZ] code inside the html ) */
  306 + configServerResources[index].canBeCached = 0;
  307 + configServerResources[index].scriptCb = NULL;
  308 +
  309 + index++;
  310 + configServerResources[index].name = "/en_index.html";
  311 + configServerResources[index].mimeType = CONFIG_SERVER_MIME_TYPE_HTML;
  312 + configServerResources[index].dataPtr = (uint8_t*)data_en_index_html;
  313 + configServerResources[index].dataSize = sizeof(data_en_index_html);
  314 + configServerResources[index].hasDynamicContent = 1; /* This page has dynamic content ( $_DYNAMIC[XYZ] code inside the html ) */
  315 + configServerResources[index].canBeCached = 0;
  316 + configServerResources[index].scriptCb = NULL;
  317 +
  318 + /* --------------------------------------------------------------------------------------------- */
  319 +
  320 + index++;
  321 + configServerResources[index].name = "/en_client.html";
  322 + configServerResources[index].mimeType = CONFIG_SERVER_MIME_TYPE_HTML;
  323 + configServerResources[index].dataPtr = (uint8_t*)data_en_client_html;
  324 + configServerResources[index].dataSize = sizeof(data_en_client_html);
  325 + configServerResources[index].hasDynamicContent = 0;
  326 + configServerResources[index].canBeCached = 0;
  327 + configServerResources[index].scriptCb = NULL;
  328 +
  329 + /* --------------------------------------------------------------------------------------------- */
  330 +
  331 + index++;
  332 + configServerResources[index].name = "/en_reboot.html";
  333 + configServerResources[index].mimeType = CONFIG_SERVER_MIME_TYPE_HTML;
  334 + configServerResources[index].dataPtr = (uint8_t*)data_en_reboot_html;
  335 + configServerResources[index].dataSize = sizeof(data_en_reboot_html);
  336 + configServerResources[index].hasDynamicContent = 0;
  337 + configServerResources[index].canBeCached = 0;
  338 + configServerResources[index].scriptCb = NULL;
  339 +
  340 + /* --------------------------------------------------------------------------------------------- */
  341 +
  342 + index++;
  343 + configServerResources[index].name = "/css.css";
  344 + configServerResources[index].mimeType = CONFIG_SERVER_MIME_TYPE_CSS;
  345 + configServerResources[index].dataPtr = (uint8_t*)data_css_css;
  346 + configServerResources[index].dataSize = sizeof(data_css_css);
  347 + configServerResources[index].hasDynamicContent = 0;
  348 + configServerResources[index].canBeCached = 0;
  349 + configServerResources[index].scriptCb = NULL;
  350 +
  351 +
  352 + /* --------------------------------------------------------------------------------------------- */
  353 +
  354 + index++;
  355 + configServerResources[index].name = "/logo.png";
  356 + configServerResources[index].mimeType = CONFIG_SERVER_MIME_TYPE_PNG;
  357 + configServerResources[index].dataPtr = (uint8_t*)data_logo_png;
  358 + configServerResources[index].dataSize = sizeof(data_logo_png);
  359 + configServerResources[index].hasDynamicContent = 0;
  360 + configServerResources[index].canBeCached = 0;
  361 + configServerResources[index].scriptCb = NULL;
  362 +
  363 + /* --------------------------------------------------------------------------------------------- */
  364 + // SCRIPTS
  365 + /* --------------------------------------------------------------------------------------------- */
  366 +
  367 + index++;
  368 + configServerResources[index].name = "/en_clientParams";
  369 + configServerResources[index].mimeType = CONFIG_SERVER_MIME_TYPE_HTML;
  370 + configServerResources[index].dataPtr = (uint8_t*)data_en_reboot_html;
  371 + configServerResources[index].dataSize = sizeof(data_en_reboot_html);
  372 + configServerResources[index].hasDynamicContent = 0;
  373 + configServerResources[index].canBeCached = 0;
  374 + configServerResources[index].scriptCb = configServer_setClientParameters; /* Function to be called when Server receives request for this script */
  375 +
  376 + /* --------------------------------------------------------------------------------------------- */
  377 +
  378 + index++;
  379 + configServerResources[index].name = "/en_reboot";
  380 + configServerResources[index].mimeType = CONFIG_SERVER_MIME_TYPE_HTML;
  381 + configServerResources[index].dataPtr = (uint8_t*)data_en_rebooting_html;
  382 + configServerResources[index].dataSize = sizeof(data_en_rebooting_html);
  383 + configServerResources[index].hasDynamicContent = 0;
  384 + configServerResources[index].canBeCached = 0;
  385 + configServerResources[index].scriptCb = configServer_reboot; /* Function to be called when Server receives request for this script */
  386 +
  387 + /* --------------------------------------------------------------------------------------------- */
  388 + // END OF LIST INDICATOR
  389 + /* --------------------------------------------------------------------------------------------- */
  390 +
  391 + index++;
  392 + configServerResources[index].name = NULL;
  393 +
  394 + /* --------------------------------------------------------------------------------------------- */
  395 + // RESOURCE NUMBER CHECK
  396 + /* --------------------------------------------------------------------------------------------- */
  397 + if(index + 1 > sizeof(configServerResources)/sizeof(wismart_server_resource_t)){
  398 + CONFIG_SERVER_DBG_WARNING("configServerResources[] size is too small! [%u/%u]",index + 1, sizeof(configServerResources)/sizeof(wismart_server_resource_t));
  399 + while(1){}
  400 + }
  401 +
  402 +}
Project/applications/smartcities/include/callbacks.h
@@ -2,11 +2,20 @@ @@ -2,11 +2,20 @@
2 #define CALLBACKS_H 2 #define CALLBACKS_H
3 3
4 #include "libwismart.h" 4 #include "libwismart.h"
  5 +#include "lwip/inet.h"
  6 +#include "configServer.h"
  7 +
  8 +#define WIFI_MODE_CLIENT 1
  9 +#define WIFI_MODE_SOFTAP 2
5 10
6 void dhcp_connect_result_cb(int result); 11 void dhcp_connect_result_cb(int result);
7 void wifi_connect_result_cb(int result); 12 void wifi_connect_result_cb(int result);
8 void wifi_connect_ap_result_cb(int result); 13 void wifi_connect_ap_result_cb(int result);
9 void wifi_connect_result_cb(int result); 14 void wifi_connect_result_cb(int result);
  15 +void softapMode_clientIndicationCb(wismart_softap_cb_t reason, const uint8_t *mac, const libwismart_ip_addr_t *ip);
  16 +void softapMode_apStartedCb(int result);
  17 +void wifiConnected(uint8_t wifiMode);
  18 +void printWifiInfo(uint8_t wifiMode);
10 19
11 extern uint8_t connected; 20 extern uint8_t connected;
12 extern uint8_t timeout; 21 extern uint8_t timeout;
Project/applications/smartcities/include/configServer.h 0 โ†’ 100644
  1 +#ifndef CONFIG_SERVER_H
  2 +#define CONFIG_SERVER_H
  3 +
  4 +#include "libwismart.h"
  5 +#include "lwip/opt.h"
  6 +#include "lwip/tcp.h"
  7 +#include "lwip/udp.h"
  8 +#include "lwip/sys.h"
  9 +#include "lwip/api.h"
  10 +#include "ch.h"
  11 +#include "fsdata.c"
  12 +
  13 +#define CONFIG_SERVER_DBG(fmt,...) if(1){printf("[SRV] "fmt"\r\n", ##__VA_ARGS__);}else{({});}
  14 +#define CONFIG_SERVER_DBG_WARNING(fmt,...) if(1){printf("[SRV_WARNING] "fmt"\r\n", ##__VA_ARGS__);}else{({});}
  15 +
  16 +
  17 +void configServer_start(uint8_t enableApScan);
  18 +void configServer_connect(void);
  19 +uint32_t condigServer_dynamicCb(char* varName, char** varValue, uint8_t* varAllocType);
  20 +void configServer_buildResources(void);
  21 +void configServer_setClientParameters(void);
  22 +void configServer_reboot(void);
  23 +void configServer_rebootTimerHandler(void *arg);
  24 +int configServer_hex2bin(char *hex, char *buf, size_t hexLen);
  25 +uint32_t configServer_dynamicCb(char* varName, char** varValue, uint8_t* varAllocType);
  26 +
  27 +
  28 +#define SECURITY_TYPE_OPEN "open"
  29 +#define SECURITY_TYPE_WPA "wpa"
  30 +#define SECURITY_TYPE_WEP1 "wep1"
  31 +#define SECURITY_TYPE_WEP2 "wep2"
  32 +#define SECURITY_TYPE_WEP3 "wep3"
  33 +#define SECURITY_TYPE_WEP4 "wep4"
  34 +
  35 +#define CONFIG_SERVER_MIME_TYPE_HTML "text/html; charset=UTF-8"
  36 +#define CONFIG_SERVER_MIME_TYPE_CSS "text/css; charset=UTF-8"
  37 +#define CONFIG_SERVER_MIME_TYPE_PNG "image/png"
  38 +
  39 +
  40 +#endif
Project/applications/smartcities/main.c
@@ -7,21 +7,22 @@ @@ -7,21 +7,22 @@
7 #include "callbacks.h" 7 #include "callbacks.h"
8 #include "buffer.h" 8 #include "buffer.h"
9 #include "i2c.h" 9 #include "i2c.h"
  10 +#include "configServer.h"
10 11
11 -#define WIFI_MODE WIFI_MODE_CLIENT  
12 -#define NETWORK_SSID "linksys" 12 +#define WIFI_MODE WIFI_MODE_CLIENT
  13 +#define NETWORK_SSID "linksys"
13 #define NETWORK_KEY "" 14 #define NETWORK_KEY ""
14 -#define WPA_USER "smartcities"  
15 -#define WPA_PASS "superpass"  
16 -#define ENCRYPT_MODE "WPA Enterprise"  
17 -#define NETWORK_SSID_AP "linksysAP" 15 +#define WPA_USER "smartcities"
  16 +#define WPA_PASS "superpass"
  17 +#define ENCRYPT_MODE "WPA Enterprise"
  18 +#define NETWORK_SSID_AP "modularsens"
18 #define NETWORK_KEY_AP NULL 19 #define NETWORK_KEY_AP NULL
19 #define NETWORK_CHANNEL_AP 1 20 #define NETWORK_CHANNEL_AP 1
20 21
21 void initLibwismart(void) 22 void initLibwismart(void)
22 { 23 {
23 - wismart_hwif_t hwif = libwismart_GetDefaultHWIF();  
24 - libwismart_Init(hwif); 24 + wismart_hwif_t hwif = libwismart_GetDefaultHWIF();
  25 + libwismart_Init(hwif);
25 } 26 }
26 27
27 uint8_t connected=0; 28 uint8_t connected=0;
@@ -30,240 +31,118 @@ char ssid[32]; // ssid clave red usuario contrasenya tipicript @@ -30,240 +31,118 @@ char ssid[32]; // ssid clave red usuario contrasenya tipicript
30 char net_key[13]; 31 char net_key[13];
31 char user[64]; 32 char user[64];
32 char password[64]; 33 char password[64];
33 -char encrypt_type[64];  
34 -//Declare the registers 34 +uint16_t security;
35 35
36 - wismart_registryKey_t key_1;  
37 - wismart_registryKey_t key_2;  
38 - wismart_registryKey_t key_3;  
39 - wismart_registryKey_t key_4;  
40 - wismart_registryKey_t key_5;  
41 -  
42 -void init_registry(void){  
43 -  
44 - uint32_t retval;  
45 -  
46 - /*  
47 - Inform registry module about the size of the variables we are going to work with.  
48 -  
49 - NOTE: A flash erase should be perfomed every time:  
50 - 1. The order with which these variables are created is changed  
51 - 2. The size of one or more varaibles is changed  
52 - */  
53 - retval = libwismart_RegistryCreateKey(&key_1, 1, sizeof(ssid));  
54 - if(retval != WISMART_SUCCESS){  
55 - printf("libwismart_RegistryCreateKey(1) Failed!!\r\n");  
56 - while(1);  
57 - }  
58 -  
59 - retval = libwismart_RegistryCreateKey(&key_2, 1, sizeof(net_key));  
60 - if(retval != WISMART_SUCCESS){  
61 - printf("libwismart_RegistryCreateKey(2) Failed!!\r\n");  
62 - while(1);  
63 - }  
64 -  
65 - retval = libwismart_RegistryCreateKey(&key_3, 1, sizeof(user));  
66 - if(retval != WISMART_SUCCESS){  
67 - printf("libwismart_RegistryCreateKey(3) Failed!!\r\n");  
68 - while(1);  
69 - }  
70 -  
71 - retval = libwismart_RegistryCreateKey(&key_4, 1, sizeof(password));  
72 - if(retval != WISMART_SUCCESS){  
73 - printf("libwismart_RegistryCreateKey(4) Failed!!\r\n");  
74 - while(1); 36 +void init_registry(void)
  37 +{
  38 + libwismart_ProfileGet_Int("security", &security);
  39 + libwismart_ProfileGet_Str("ssid", ssid);
  40 + libwismart_ProfileGet_Str("passphrase", net_key);
  41 + libwismart_ProfileGet_Str("radUser", user);
  42 + libwismart_ProfileGet_Str("radPass", password);
  43 + printf("SSID = %s\r\n",ssid);
  44 + printf("Net key = %s\r\n",net_key);
  45 + printf("User = %s\r\n",user);
  46 + printf("Password = %s\r\n",password);
  47 + printf("Encryption type = %d\r\n",security);
  48 +
  49 + if(security == PROFILE_SECURITY_OPEN)
  50 + {
  51 + libwismart_WiFiConnect(ssid,NULL,wifi_connect_result_cb);
75 } 52 }
76 -  
77 - retval = libwismart_RegistryCreateKey(&key_5, 1, sizeof(encrypt_type));  
78 - if(retval != WISMART_SUCCESS){  
79 - printf("libwismart_RegistryCreateKey(5) Failed!!\r\n");  
80 - while(1); 53 + else if(security == PROFILE_SECURITY_WPA_WPA2)
  54 + {
  55 + struct wpa_param wpa;
  56 + wpa.eap_method = WISMART_EAP_METHOD_TTLS;
  57 + wpa.u.ttls.identity=user;
  58 + wpa.u.ttls.password=password;
  59 + wpa.u.ttls.ca_cert=NULL;
  60 + libwismart_WiFiConnectEnterprise(NETWORK_SSID, &wpa, wifi_connect_result_cb);
81 } 61 }
82 -  
83 - /*  
84 - Open the registry file. Now we can perform get/set operations  
85 - */  
86 - retval = libwismart_RegistryOpen(1);  
87 - if(retval != WISMART_SUCCESS){  
88 - printf("libwismart_RegistryOpen() Failed!!\r\n");  
89 - while(1);  
90 - }  
91 -  
92 -  
93 - if(libwismart_RegistryIsValueEmpty(&key_1)){  
94 -  
95 - /*  
96 - Init and save registry variable.1  
97 - */  
98 -  
99 - strcpy(ssid,NETWORK_SSID);  
100 - libwismart_RegistrySet(&key_1,&ssid);  
101 -  
102 - /*  
103 - Init and save registry variable.2  
104 - */  
105 - strcpy(user,WPA_USER);  
106 - libwismart_RegistrySet(&key_3, &user);  
107 -  
108 - /*  
109 - Init and save registry variable.3  
110 - */  
111 - strcpy(password,WPA_PASS);  
112 - libwismart_RegistrySet(&key_4, &password);  
113 -  
114 - /*  
115 - Init and save registry variable.4  
116 - */  
117 - strcpy(net_key,NETWORK_KEY);  
118 - libwismart_RegistrySet(&key_2, &net_key);  
119 -  
120 - /*  
121 - Init and save registry variable.4  
122 - */  
123 - strcpy(encrypt_type,ENCRYPT_MODE);  
124 - libwismart_RegistrySet(&key_5, &encrypt_type); 62 + else
  63 + {
  64 + //Is WEP
  65 + libwismart_WiFiConnect(ssid,net_key,wifi_connect_result_cb);
125 } 66 }
126 - else{  
127 -  
128 - printf("------------------------------------------\r\n");  
129 - printf("Registry values...\r\n");  
130 - printf("------------------------------------------\r\n");  
131 -  
132 - /*  
133 - Restore registry variable.1  
134 - */  
135 - retval = libwismart_RegistryGet(&key_1,&ssid);  
136 - if(retval != WISMART_SUCCESS){  
137 - printf("libwismart_RegistryGet(1) Failed!!\r\n");  
138 - while(1);  
139 - }  
140 -  
141 - /*  
142 - Restore registry variable.2  
143 - */  
144 - retval = libwismart_RegistryGet(&key_2,&net_key);  
145 - if(retval != WISMART_SUCCESS){  
146 - printf("libwismart_RegistryGet(2) Failed!!\r\n");  
147 - while(1);  
148 - }  
149 -  
150 - /*  
151 - Restore registry variable.3  
152 - */  
153 - retval = libwismart_RegistryGet(&key_3,&user);  
154 - if(retval != WISMART_SUCCESS){  
155 - printf("libwismart_RegistryGet(3) Failed!!\r\n");  
156 - while(1);  
157 - }  
158 67
159 - retval = libwismart_RegistryGet(&key_4,&password);  
160 - if(retval != WISMART_SUCCESS){  
161 - printf("libwismart_RegistryGet(4) Failed!!\r\n");  
162 - while(1);  
163 - }  
164 -  
165 - retval = libwismart_RegistryGet(&key_5,&encrypt_type);  
166 - if(retval != WISMART_SUCCESS){  
167 - printf("libwismart_RegistryGet(5) Failed!!\r\n");  
168 - while(1);  
169 - }  
170 -  
171 -  
172 - /*  
173 - Print restored values:  
174 - */  
175 - printf("SSID = %s\r\n",ssid);  
176 - printf("Net key = %s\r\n",net_key);  
177 - printf("User = %s\r\n",user);  
178 - printf("Password = %s\r\n",password);  
179 - printf("Encryption type = %s\r\n",encrypt_type);  
180 - }  
181 -  
182 -  
183 } 68 }
184 69
185 -  
186 -  
187 int main(void) 70 int main(void)
188 { 71 {
189 - initLibwismart();  
190 -  
191 - uint32_t ind[4]={0};  
192 - char** buffers[4];  
193 - uint32_t sizes[4]={0};  
194 - int i;  
195 - int num_sensors;  
196 -  
197 -  
198 - struct wpa_param wpa;  
199 - wpa.eap_method = WISMART_EAP_METHOD_TTLS;  
200 - wpa.u.ttls.identity=WPA_USER;  
201 - wpa.u.ttls.password=WPA_PASS;  
202 - wpa.u.ttls.ca_cert=NULL;  
203 -  
204 - struct httpHeaders head200 = { get, "/", 1, "http://www.w3.org/", 19 };  
205 - struct httpHeaders head301 = { get, "/", 1, "w3.org", 6 };  
206 - struct httpHeaders head404 = { get, "/errorerrorerror", 15, "www.w3.org" };  
207 -  
208 - // init_registry();  
209 - libwismart_EnableBsdSocketAPI();  
210 - libwismart_PowerSave_Enable();  
211 - libwismart_PowerSave_HigherProfile(TRUE);  
212 - libwismart_RegisterDhcpCB(dhcp_connect_result_cb);  
213 - libwismart_WiFiInit();  
214 - libwismart_SetScanRunsForConnTimeout(4);  
215 - libwismart_WiFiConnectEnterprise(NETWORK_SSID, &wpa, wifi_connect_result_cb);  
216 -  
217 -  
218 - if(timeout==1){  
219 - printf("esta a timeout\r\n");  
220 - //corroborar los parametros del AP  
221 - libwismart_WiFi_SoftAP_Start(NETWORK_SSID_AP,NETWORK_CHANNEL_AP,(unsigned char*)NETWORK_KEY_AP,wifi_connect_ap_result_cb,NULL); 72 + initLibwismart();
  73 + libwismart_PowerSave_Enable();
  74 + libwismart_PowerSave_HigherProfile(TRUE);
  75 + libwismart_RegisterDhcpCB(dhcp_connect_result_cb);
  76 + libwismart_WiFiInit();
  77 + libwismart_SetScanRunsForConnTimeout(1); //Edit a 4
  78 +
  79 + struct httpHeaders head200 = { get, "/", 1, "http://www.w3.org/", 19 };
  80 + struct httpHeaders head301 = { get, "/", 1, "w3.org", 6 };
  81 + struct httpHeaders head404 = { get, "/errorerrorerror", 15, "www.w3.org" };
  82 +
  83 + uint32_t ind[4]={0};
  84 + char** buffers[4];
  85 + uint32_t sizes[4]={0};
  86 + int i;
  87 + int num_sensors;
  88 +
  89 + init_registry();
  90 + timeout = 1; //Quitar
  91 + if(timeout==1)
  92 + {
  93 + printf("Creating AP\r\n");
  94 + //corroborar los parametros del AP
  95 + configServer_start(1);
  96 + libwismart_WiFi_SoftAP_Start(NETWORK_SSID_AP,NETWORK_CHANNEL_AP,(unsigned char*)NETWORK_KEY_AP,softapMode_apStartedCb, softapMode_clientIndicationCb);
  97 + for(;;)
  98 + {
  99 + chThdSleepMilliseconds(1000);
222 } 100 }
  101 + }
223 102
224 - //int httpRequest(struct httpHeaders head, char* content, int content_size)  
225 - //chThdSleepMilliseconds(5000);  
226 -  
227 - //httpRequest(head200, NULL, 0);  
228 - /*httpRequest(head301, NULL, 0);  
229 - httpRequest(head404, NULL, 0);*/  
230 - // i2c scans the sensors active and returns how many thay are  
231 - // num_sensors value  
232 - printf("waiting\r\n");  
233 - chThdSleepMilliseconds(10000);  
234 - for(;;)  
235 - {  
236 - // i2c gets the data and combines it with the time stamp  
237 - char* data="message,0";  
238 - char* data2="message,1";  
239 - char* data3="message,2";  
240 - for(i=0;i<4;i++){  
241 -  
242 - printf("------------------BUFFER %d ----------------------\r\n",i);  
243 - printf("index=%d\r\n",ind[i]);  
244 - buffers[i]=put_message(data, buffers[i] ,&ind[i],&sizes[i]);  
245 - buffers[i]=put_message(data2, buffers[i] ,&ind[i],&sizes[i]);  
246 - buffers[i]=put_message(data3, buffers[i] ,&ind[i],&sizes[i]);  
247 - printf("mirant memoria\r\n");  
248 - int res=check_memory();  
249 - if(res==SOFT_REACHED){  
250 - printf("--------------soft limit-------------\r\n");  
251 - int ok=send(buffers[i],&ind[i],&sizes[i], "bmp", "085");  
252 - if(ok==JSON_COMM_ERROR)  
253 - {  
254 - printf("wismart is not connected\r\n");  
255 - }  
256 - else if( ok==JSON_OTHER_ERROR){  
257 - printf("some error ocurred\r\n");  
258 - }  
259 - else if(ok ==JSON_POST_OK){  
260 - printf(" send OK \r\n");  
261 - }  
262 - }  
263 - else if(res==HARD_REACHED){  
264 - destroy(buffers);  
265 - }  
266 - }  
267 - //chThdSleepMilliseconds(100);  
268 - } 103 + //int httpRequest(struct httpHeaders head, char* content, int content_size)
  104 + //chThdSleepMilliseconds(5000);
  105 +
  106 + //httpRequest(head200, NULL, 0);
  107 + /*httpRequest(head301, NULL, 0);
  108 + httpRequest(head404, NULL, 0);*/
  109 + // i2c scans the sensors active and returns how many thay are
  110 + // num_sensors value
  111 + printf("waiting\r\n");
  112 + chThdSleepMilliseconds(10000);
  113 + for(;;)
  114 + {
  115 + // i2c gets the data and combines it with the time stamp
  116 + char* data="message,0";
  117 + char* data2="message,1";
  118 + char* data3="message,2";
  119 + for(i=0;i<4;i++){
  120 +
  121 + printf("------------------BUFFER %d ----------------------\r\n",i);
  122 + printf("index=%d\r\n",ind[i]);
  123 + buffers[i]=put_message(data, buffers[i] ,&ind[i],&sizes[i]);
  124 + buffers[i]=put_message(data2, buffers[i] ,&ind[i],&sizes[i]);
  125 + buffers[i]=put_message(data3, buffers[i] ,&ind[i],&sizes[i]);
  126 + printf("mirant memoria\r\n");
  127 + int res=check_memory();
  128 + if(res==SOFT_REACHED){
  129 + printf("--------------soft limit-------------\r\n");
  130 + int ok=send(buffers[i],&ind[i],&sizes[i], "bmp", "085");
  131 + if(ok==JSON_COMM_ERROR)
  132 + {
  133 + printf("wismart is not connected\r\n");
  134 + }
  135 + else if( ok==JSON_OTHER_ERROR){
  136 + printf("some error ocurred\r\n");
  137 + }
  138 + else if(ok ==JSON_POST_OK){
  139 + printf(" send OK \r\n");
  140 + }
  141 + }
  142 + else if(res==HARD_REACHED){
  143 + destroy(buffers);
  144 + }
  145 + }
  146 + //chThdSleepMilliseconds(100);
  147 + }
269 } 148 }
Project/applications/smartcities/makefsdata/fs/css.css 0 โ†’ 100644
  1 +*{
  2 +margin:0px;padding:0px;border-style:solid;border-width:0px;border-color:black;
  3 +}
  4 +
  5 +body{
  6 +font-family: verdana,arial, verdana , sans-serif;font-size:14px;background-color:rgb(69,121,166);background-color:rgb(210,201,185);
  7 +}
  8 +
  9 +/* -------------------------------------------------------- Header */
  10 +img.logo{
  11 + padding-left:10px;
  12 + padding-top:20px;
  13 +}
  14 +
  15 +a.lanImg{
  16 +float:right;
  17 +margin-right:10px;
  18 +margin-top:5px;
  19 +}
  20 +
  21 +a.lanImgNow{
  22 +float:right;
  23 +margin-right:10px;
  24 +margin-top:5px;
  25 +border-bottom-width:1px;
  26 +border-bottom-style:solid;
  27 +border-color:rgb(65,65,65);
  28 +}
  29 +
  30 +
  31 +#proHeader{
  32 +font-size:10px;font-weight:bold;text-align:right;color:rgb(230,230,230);color:yellow;padding-right:10px;padding-top:5px;
  33 +}
  34 +
  35 +#header{
  36 +padding-top:0px;padding-bottom:10px;padding-left:15px;
  37 +}
  38 +
  39 +
  40 +
  41 +#header .bigFont{
  42 +font-size:30px;text-align:center;color:rgb(230,230,230);color:rgb(55,49,36);
  43 +}
  44 +
  45 +/* -------------------------------------------------------- Menu */
  46 +#menu{
  47 +background-color:rgb(200,200,200);
  48 +background-color:rgb(148,130,95);
  49 +border-bottom-width:1px;
  50 +border-bottom-color:black;
  51 +border-top-width:1px;
  52 +border-top-color:white;
  53 +padding-top:5px;
  54 +padding-bottom:5px;
  55 +margin-bottom:20px;
  56 +line-height:25px;
  57 +}
  58 +
  59 +#menu .menuItem{
  60 +width:270px;
  61 +float:left;
  62 +border-right-width:1px;
  63 +border-right-style:dotted;
  64 +text-align:center;
  65 +}
  66 +
  67 +.menuItem a:link{
  68 +color:rgb(50,50,50);
  69 +text-decoration:none;
  70 +}
  71 +
  72 +.menuItem a:visited{
  73 +color:rgb(50,50,50);
  74 +text-decoration:none;
  75 +}
  76 +
  77 +.menuItem a:hover{
  78 +color:white;
  79 +text-decoration:none;
  80 +}
  81 +
  82 +/* -------------------------------------------------------- Main */
  83 +#main{
  84 +width:100%;
  85 +}
  86 +
  87 +#main .form{
  88 +width:600px;
  89 +margin-left:auto;
  90 +margin-right:auto;
  91 +padding-bottom:5px;
  92 +}
  93 +
  94 +.form .formError{
  95 +font-size:80%;
  96 +padding: 5px;
  97 +width:590px;
  98 +color:red;
  99 +text-align:center;
  100 +}
  101 +
  102 +.form .formCaption{
  103 +font-size:150%;
  104 +padding: 5px;
  105 +color:black;
  106 +text-align:center;
  107 +width:590px;
  108 +}
  109 +
  110 +.form .formSection{
  111 +font-size:130%;
  112 +padding-top: 15px;
  113 +padding-bottom: 5px;
  114 +padding-left:15px;
  115 +clear:both;
  116 +color:black;
  117 +}
  118 +
  119 +.form .formLabel{
  120 +width: 285px;
  121 +padding-left:15px;
  122 +font-size:100%;
  123 +float:left;
  124 +clear:both;
  125 +color:rgb(200,200,200);
  126 +color:rgb(55,49,36);
  127 +padding-top:5px;
  128 +padding-bottom:5px;
  129 +}
  130 +
  131 +.form .formText{
  132 +width: 300px;
  133 +font-size:100%;
  134 +float:left;
  135 +margin-bottom:10px;
  136 +}
  137 +
  138 +.form .formSelect{
  139 +width: 300px;
  140 +font-size:100%;
  141 +float:left;
  142 +margin-bottom:10px;
  143 +}
  144 +
  145 +.form .formButton{
  146 +width: 300px;
  147 +font-size:100%;
  148 +float:left;
  149 +}
  150 +
  151 +.form .inputText{
  152 +width: 280px;
  153 +padding:5px;
  154 +font-size:100%;
  155 +float:left;
  156 +background-color:rgb(230,230,230);
  157 +color:rgb(50,50,50);
  158 +border-width:1px;
  159 +border-bottom-color:black;
  160 +}
  161 +
  162 +
  163 +
  164 +.form .comboBox{
  165 +width: 290px;
  166 +padding:5px;
  167 +padding-right:0px;
  168 +font-size:100%;
  169 +float:left;
  170 +background-color:rgb(230,230,230);
  171 +color:rgb(50,50,50);
  172 +border-width:1px;
  173 +border-bottom-color:black;
  174 +}
  175 +
  176 +.form .inputText:focus{
  177 +font-size:115%;
  178 +border-color:rgb(200,200,200);
  179 +border-color:yellow;
  180 +}
  181 +
  182 +.form .inputButton{
  183 +background-color:rgb(200,200,200);
  184 +font-size:120%;
  185 +width: 290px;
  186 +padding:5px;
  187 +margin-bottom:20px;
  188 +float:left;
  189 +border-color:gray;
  190 +border-width:1px;
  191 +}
  192 +
  193 +.form .formRadio{
  194 +width:280px;
  195 +float:left;
  196 +}
  197 +
  198 +.form .inputRadio{
  199 +width:30px;
  200 +float:left;
  201 +}
  202 +
  203 +.radioText{
  204 +width: 220px;
  205 +float:left;
  206 +color:rgb(200,200,200);
  207 +padding-left:10px;
  208 +}
  209 +
  210 +.cleaner{
  211 +clear:both;
  212 +}
  213 +
  214 +/* -------------------------------------------------------- Footer */
  215 +#footer{
  216 +width:100%;
  217 +background-color:rgb(200,200,200);
  218 +background-color:rgb(148,130,95);
  219 +color:rgb(50,50,50);
  220 +left:0px;
  221 +top:95%;
  222 +position:fixed;
  223 +padding-top:5px;
  224 +padding-bottom:5px;
  225 +border-bottom-color:black;
  226 +border-bottom-width:1px;
  227 +border-top-width:1px;
  228 +border-top-color:white;
  229 +}
  230 +
  231 +#footer .medFont{
  232 +float:right;
  233 +padding-right:15px;
  234 +font-size:90%;
  235 +}
0 \ No newline at end of file 236 \ No newline at end of file
Project/applications/smartcities/makefsdata/fs/en_client.html 0 โ†’ 100644
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="el-gr" lang="el-gr" >
  3 +
  4 +<head>
  5 +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6 +<link rel="stylesheet" type="text/css" href="css.css" />
  7 +<title>WiSmart Wireless Settings</title>
  8 +
  9 +<script>
  10 +function validateForm(){
  11 +
  12 + var networkName = document.forms["clientParametersForm"]["networkName"].value;
  13 + var securityType = document.forms["clientParametersForm"]["securityType"].value;
  14 + var passphrase = document.forms["clientParametersForm"]["passphrase"].value;
  15 +
  16 + if ((networkName.length < 1)||(networkName.length > 32)){
  17 + document.getElementById('formError').innerHTML = "&lt;Network name&gt; must be between 1 and 32 characters long, please input again!";
  18 + return false;}
  19 + if ((securityType=="wpa") && ((passphrase.length < 8) || (passphrase.length > 64))){
  20 + document.getElementById('formError').innerHTML = "WPA/WPA2 &lt;Security Key&gt; must be between 8 and 64 characters long, please input again!";
  21 + return false;}
  22 + if ((securityType=="wep1") && (passphrase.length != 5 && passphrase.length != 10 && passphrase.length != 13 && passphrase.length != 26) ){
  23 + document.getElementById('formError').innerHTML = "WEP &lt;Security Key&gt; must be 5 or 13 characters long (10 or 26 characters if HEX format is used), please input again!";
  24 + return false;}
  25 + if (securityType=="open" && passphrase.length != 0 ){
  26 + document.getElementById('formError').innerHTML = "&lt;Security Key&gt; must be empty when Open encryption is used!";
  27 + return false;}
  28 +}
  29 +</script>
  30 +
  31 +</head>
  32 +
  33 +<body>
  34 +<div>
  35 +<img class="logo" src="logo.png" alt="logo" />
  36 +<div class="cleaner"></div>
  37 +</div>
  38 +<div id="header">
  39 +<div class="bigFont">WiSmart Wireless Settings</div>
  40 +</div>
  41 +
  42 +<div id="menu">
  43 + <div class="menuItem"><a href="en_index.html">Home</a></div>
  44 + <div class="menuItem"><a href="en_client.html">Client mode configuration (Manual)</a></div>
  45 + <div class="cleaner"></div>
  46 +</div>
  47 +
  48 +<div id="main">
  49 +<div class="form">
  50 + <div class="formCaption">
  51 + Client mode configuration
  52 + </div>
  53 +
  54 + <div class="formMain">
  55 + <div class="formMain">
  56 + <div class="formError" id='formError'></div>
  57 + <form name="clientParametersForm" action="en_clientParams" onsubmit="return validateForm()" method="get">
  58 + <div class="formSection">1. Enter Network Name</div>
  59 + <div class="formLabel">Network Name:</div>
  60 + <div class="formText"><input class = "inputText" type="text" name="networkName" value=""/></div>
  61 +
  62 + <div class="formSection">2. Select Security Type</div>
  63 + <div class="formLabel">Security Type:</div>
  64 + <select class="comboBox" name="securityType">
  65 + <option value="open">Open</option>
  66 + <option value="wpa">WPA / WPA2</option>
  67 + <option value="wep1">WEP</option>
  68 +
  69 + </select>
  70 +
  71 + <div class="formSection">3. Enter Security Key</div>
  72 + <div class="formLabel">Security Key:</div>
  73 + <div class="formText"><input class = "inputText" type="text" name="passphrase"/></div>
  74 +
  75 + <div class="formSection">4. Enter RADIUS User</div>
  76 + <div class="formLabel">User:</div>
  77 + <div class="formText"><input class = "inputText" type="text" name="radUser"/></div>
  78 +
  79 + <div class="formSection">5. Enter RADIUS User</div>
  80 + <div class="formLabel">Password:</div>
  81 + <div class="formText"><input class = "inputText" type="text" name="radPass"/></div>
  82 +
  83 + <div class="formSection"></div>
  84 + <div class="formLabel"></div>
  85 + <div class="formButton"><input class = "inputButton" type="submit" value="Apply Settings"/></div>
  86 + <div class="cleaner"></div>
  87 + </form>
  88 +
  89 + </div>
  90 + </div>
  91 +</div>
  92 +</div>
  93 +
  94 +<div id="footer">
  95 +<div class="medFont">Copyright&copy;2013</div>
  96 +</div>
  97 +
  98 +</body>
  99 +
  100 +
  101 +</html>
  102 +
Project/applications/smartcities/makefsdata/fs/en_index.html 0 โ†’ 100644
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="el-gr" lang="el-gr" >
  3 +
  4 +<head>
  5 +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6 +<link rel="stylesheet" type="text/css" href="css.css" />
  7 +<title>WiSmart Wireless Settings</title>
  8 +</head>
  9 +
  10 +<body>
  11 +<div>
  12 +<img class="logo"src="logo.png" alt="logo" />
  13 +<div class="cleaner"></div>
  14 +</div>
  15 +
  16 +<div id="header">
  17 +<div class="bigFont">WiSmart Wireless Settings</div>
  18 +</div>
  19 +
  20 +<div id="menu">
  21 + <div class="menuItem"><a href="en_index.html">Home</a></div>
  22 + <div class="menuItem"><a href="en_client.html">Client mode configuration (Manual)</a></div>
  23 + <div class="cleaner"></div>
  24 +</div>
  25 +
  26 +<div id="main">
  27 +
  28 + <div style="margin:auto;font-size:100%;color:black;width:400px;">
  29 + <div style="width:400px;padding-bottom:5px;color:rgb(55,49,36);font-size:150%;">Registry Configuration:</div>
  30 + <div style="width:150px;float:left;color:rgb(55,49,36);">Mode:</div><div style="width:250px;float:left;color:black;">$_DYNAMIC[WIFI_MODE]</div><div style="clear:both;"></div>
  31 + <div style="width:150px;float:left;color:rgb(55,49,36);">Network Name:</div><div style="width:250px;float:left;color:black;">$_DYNAMIC[WIFI_SSID]</div><div style="clear:both;"></div>
  32 + <div style="width:150px;float:left;color:rgb(55,49,36);">Passphrase:</div><div style="width:250px;float:left;color:black;">$_DYNAMIC[WIFI_PASSPHRASE]</div><div style="clear:both;"></div>
  33 + </div>
  34 +
  35 +</div>
  36 +
  37 +<div id="footer">
  38 +<div class="medFont">Copyright&copy;2013</div>
  39 +
  40 +</div>
  41 +
  42 +
  43 +</body>
  44 +</html>
  45 +
Project/applications/smartcities/makefsdata/fs/en_reboot.html 0 โ†’ 100644
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="el-gr" lang="el-gr" >
  3 +
  4 +<head>
  5 +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6 +<link rel="stylesheet" type="text/css" href="css.css" />
  7 +<title>WiSmart Wireless Settings</title>
  8 +</head>
  9 +
  10 +<body>
  11 +<div>
  12 +<img class="logo" src="logo.png" alt="logo" />
  13 +<div class="cleaner"></div>
  14 +</div>
  15 +<div id="header">
  16 +<div class="bigFont">WiSmart Wireless Settings</div>
  17 +</div>
  18 +
  19 +<div id="menu">
  20 + <div class="menuItem"><a href="en_index.html">Home</a></div>
  21 + <div class="menuItem"><a href="en_client.html">Client mode configuration (Manual)</a></div>
  22 + <div class="cleaner"></div>
  23 +</div>
  24 +
  25 +<div id="main">
  26 + <div style="margin:auto;text-align:center;font-size:100%;color:black;">Please Reboot The Device To Apply Changes</div>
  27 + <div style="margin:auto;text-align:center;"><a style="color:red;text-decoration:none;font-size:100%;" href="en_reboot">Reboot!</a> </div>
  28 +</div>
  29 +
  30 +<div id="footer">
  31 +<div class="medFont">Copyright&copy;2013</div>
  32 +</div>
  33 +
  34 +</body>
  35 +
  36 +
  37 +</html>
  38 +
Project/applications/smartcities/makefsdata/fs/en_rebooting.html 0 โ†’ 100644
  1 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="el-gr" lang="el-gr" >
  3 +
  4 +<head>
  5 +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6 +<link rel="stylesheet" type="text/css" href="css.css" />
  7 +<title>WiSmart Wireless Settings</title>
  8 +</head>
  9 +
  10 +<body>
  11 +<div>
  12 +<img class="logo"src="logo.png" alt="logo" />
  13 +<div class="cleaner"></div>
  14 +</div>
  15 +<div id="header">
  16 +<div class="bigFont">WiSmart Wireless Settings</div>
  17 +</div>
  18 +
  19 +<div id="menu">
  20 + <div class="menuItem"><a href="en_index.html">Home</a></div>
  21 + <div class="cleaner"></div>
  22 +</div>
  23 +
  24 +<div id="main">
  25 + <div style="margin:auto;text-align:center;font-size:120%;color:black;">Device will reboot in 5 seconds. Please Wait. </div>
  26 +</div>
  27 +
  28 +<div id="footer">
  29 +<div class="medFont">Copyright&copy;2013</div>
  30 +</div>
  31 +
  32 +</body>
  33 +
  34 +
  35 +</html>
  36 +
Project/applications/smartcities/makefsdata/fs/logo.png 0 โ†’ 100644

484 Bytes

Project/applications/smartcities/makefsdata/fsdata.c 0 โ†’ 100644
  1 +static const char data_css_css[] = {
  2 + /* /css.css */
  3 + 0x2a, 0x7b, 0xd, 0xa, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e,
  4 + 0x3a, 0x30, 0x70, 0x78, 0x3b, 0x70, 0x61, 0x64, 0x64, 0x69,
  5 + 0x6e, 0x67, 0x3a, 0x30, 0x70, 0x78, 0x3b, 0x62, 0x6f, 0x72,
  6 + 0x64, 0x65, 0x72, 0x2d, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3a,
  7 + 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x3b, 0x62, 0x6f, 0x72, 0x64,
  8 + 0x65, 0x72, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x30,
  9 + 0x70, 0x78, 0x3b, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d,
  10 + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63,
  11 + 0x6b, 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x62,
  12 + 0x6f, 0x64, 0x79, 0x7b, 0xd, 0xa, 0x66, 0x6f, 0x6e, 0x74,
  13 + 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x20, 0x76,
  14 + 0x65, 0x72, 0x64, 0x61, 0x6e, 0x61, 0x2c, 0x61, 0x72, 0x69,
  15 + 0x61, 0x6c, 0x2c, 0x20, 0x76, 0x65, 0x72, 0x64, 0x61, 0x6e,
  16 + 0x61, 0x20, 0x2c, 0x20, 0x73, 0x61, 0x6e, 0x73, 0x2d, 0x73,
  17 + 0x65, 0x72, 0x69, 0x66, 0x3b, 0x66, 0x6f, 0x6e, 0x74, 0x2d,
  18 + 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31, 0x34, 0x70, 0x78, 0x3b,
  19 + 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64,
  20 + 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62,
  21 + 0x28, 0x36, 0x39, 0x2c, 0x31, 0x32, 0x31, 0x2c, 0x31, 0x36,
  22 + 0x36, 0x29, 0x3b, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f,
  23 + 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a,
  24 + 0x72, 0x67, 0x62, 0x28, 0x32, 0x31, 0x30, 0x2c, 0x32, 0x30,
  25 + 0x31, 0x2c, 0x31, 0x38, 0x35, 0x29, 0x3b, 0xd, 0xa, 0x7d,
  26 + 0xd, 0xa, 0xd, 0xa, 0x2f, 0x2a, 0x20, 0x2d, 0x2d, 0x2d,
  27 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  28 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  29 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  30 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  31 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  32 + 0x2d, 0x2d, 0x2d, 0x20, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
  33 + 0x20, 0x2a, 0x2f, 0xd, 0xa, 0x69, 0x6d, 0x67, 0x2e, 0x6c,
  34 + 0x6f, 0x67, 0x6f, 0x7b, 0xd, 0xa, 0x9, 0x70, 0x61, 0x64,
  35 + 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x6c, 0x65, 0x66, 0x74, 0x3a,
  36 + 0x31, 0x30, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x9, 0x70, 0x61,
  37 + 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x74, 0x6f, 0x70, 0x3a,
  38 + 0x32, 0x30, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa,
  39 + 0xd, 0xa, 0x61, 0x2e, 0x6c, 0x61, 0x6e, 0x49, 0x6d, 0x67,
  40 + 0x7b, 0xd, 0xa, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x72,
  41 + 0x69, 0x67, 0x68, 0x74, 0x3b, 0xd, 0xa, 0x6d, 0x61, 0x72,
  42 + 0x67, 0x69, 0x6e, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3a,
  43 + 0x31, 0x30, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x6d, 0x61, 0x72,
  44 + 0x67, 0x69, 0x6e, 0x2d, 0x74, 0x6f, 0x70, 0x3a, 0x35, 0x70,
  45 + 0x78, 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x61,
  46 + 0x2e, 0x6c, 0x61, 0x6e, 0x49, 0x6d, 0x67, 0x4e, 0x6f, 0x77,
  47 + 0x7b, 0xd, 0xa, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x72,
  48 + 0x69, 0x67, 0x68, 0x74, 0x3b, 0xd, 0xa, 0x6d, 0x61, 0x72,
  49 + 0x67, 0x69, 0x6e, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3a,
  50 + 0x31, 0x30, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x6d, 0x61, 0x72,
  51 + 0x67, 0x69, 0x6e, 0x2d, 0x74, 0x6f, 0x70, 0x3a, 0x35, 0x70,
  52 + 0x78, 0x3b, 0xd, 0xa, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72,
  53 + 0x2d, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x2d, 0x77, 0x69,
  54 + 0x64, 0x74, 0x68, 0x3a, 0x31, 0x70, 0x78, 0x3b, 0xd, 0xa,
  55 + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x62, 0x6f, 0x74,
  56 + 0x74, 0x6f, 0x6d, 0x2d, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3a,
  57 + 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x3b, 0xd, 0xa, 0x62, 0x6f,
  58 + 0x72, 0x64, 0x65, 0x72, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
  59 + 0x3a, 0x72, 0x67, 0x62, 0x28, 0x36, 0x35, 0x2c, 0x36, 0x35,
  60 + 0x2c, 0x36, 0x35, 0x29, 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa,
  61 + 0xd, 0xa, 0xd, 0xa, 0x23, 0x70, 0x72, 0x6f, 0x48, 0x65,
  62 + 0x61, 0x64, 0x65, 0x72, 0x7b, 0xd, 0xa, 0x66, 0x6f, 0x6e,
  63 + 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31, 0x30, 0x70,
  64 + 0x78, 0x3b, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x77, 0x65, 0x69,
  65 + 0x67, 0x68, 0x74, 0x3a, 0x62, 0x6f, 0x6c, 0x64, 0x3b, 0x74,
  66 + 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a,
  67 + 0x72, 0x69, 0x67, 0x68, 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f,
  68 + 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28, 0x32, 0x33, 0x30, 0x2c,
  69 + 0x32, 0x33, 0x30, 0x2c, 0x32, 0x33, 0x30, 0x29, 0x3b, 0x63,
  70 + 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x79, 0x65, 0x6c, 0x6c, 0x6f,
  71 + 0x77, 0x3b, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d,
  72 + 0x72, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x31, 0x30, 0x70, 0x78,
  73 + 0x3b, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x74,
  74 + 0x6f, 0x70, 0x3a, 0x35, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x7d,
  75 + 0xd, 0xa, 0xd, 0xa, 0x23, 0x68, 0x65, 0x61, 0x64, 0x65,
  76 + 0x72, 0x7b, 0xd, 0xa, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e,
  77 + 0x67, 0x2d, 0x74, 0x6f, 0x70, 0x3a, 0x30, 0x70, 0x78, 0x3b,
  78 + 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x62, 0x6f,
  79 + 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b,
  80 + 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x6c, 0x65,
  81 + 0x66, 0x74, 0x3a, 0x31, 0x35, 0x70, 0x78, 0x3b, 0xd, 0xa,
  82 + 0x7d, 0xd, 0xa, 0xd, 0xa, 0xd, 0xa, 0xd, 0xa, 0x23,
  83 + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x2e, 0x62, 0x69,
  84 + 0x67, 0x46, 0x6f, 0x6e, 0x74, 0x7b, 0xd, 0xa, 0x66, 0x6f,
  85 + 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x33, 0x30,
  86 + 0x70, 0x78, 0x3b, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c,
  87 + 0x69, 0x67, 0x6e, 0x3a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
  88 + 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62,
  89 + 0x28, 0x32, 0x33, 0x30, 0x2c, 0x32, 0x33, 0x30, 0x2c, 0x32,
  90 + 0x33, 0x30, 0x29, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a,
  91 + 0x72, 0x67, 0x62, 0x28, 0x35, 0x35, 0x2c, 0x34, 0x39, 0x2c,
  92 + 0x33, 0x36, 0x29, 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd,
  93 + 0xa, 0x2f, 0x2a, 0x20, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  94 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  95 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  96 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  97 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  98 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  99 + 0x20, 0x4d, 0x65, 0x6e, 0x75, 0x20, 0x2a, 0x2f, 0xd, 0xa,
  100 + 0x23, 0x6d, 0x65, 0x6e, 0x75, 0x7b, 0xd, 0xa, 0x62, 0x61,
  101 + 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63,
  102 + 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28, 0x32,
  103 + 0x30, 0x30, 0x2c, 0x32, 0x30, 0x30, 0x2c, 0x32, 0x30, 0x30,
  104 + 0x29, 0x3b, 0xd, 0xa, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72,
  105 + 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
  106 + 0x3a, 0x72, 0x67, 0x62, 0x28, 0x31, 0x34, 0x38, 0x2c, 0x31,
  107 + 0x33, 0x30, 0x2c, 0x39, 0x35, 0x29, 0x3b, 0xd, 0xa, 0x62,
  108 + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x62, 0x6f, 0x74, 0x74,
  109 + 0x6f, 0x6d, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31,
  110 + 0x70, 0x78, 0x3b, 0xd, 0xa, 0x62, 0x6f, 0x72, 0x64, 0x65,
  111 + 0x72, 0x2d, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x2d, 0x63,
  112 + 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b,
  113 + 0x3b, 0xd, 0xa, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d,
  114 + 0x74, 0x6f, 0x70, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a,
  115 + 0x31, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x62, 0x6f, 0x72, 0x64,
  116 + 0x65, 0x72, 0x2d, 0x74, 0x6f, 0x70, 0x2d, 0x63, 0x6f, 0x6c,
  117 + 0x6f, 0x72, 0x3a, 0x77, 0x68, 0x69, 0x74, 0x65, 0x3b, 0xd,
  118 + 0xa, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x74,
  119 + 0x6f, 0x70, 0x3a, 0x35, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x70,
  120 + 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x62, 0x6f, 0x74,
  121 + 0x74, 0x6f, 0x6d, 0x3a, 0x35, 0x70, 0x78, 0x3b, 0xd, 0xa,
  122 + 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x62, 0x6f, 0x74,
  123 + 0x74, 0x6f, 0x6d, 0x3a, 0x32, 0x30, 0x70, 0x78, 0x3b, 0xd,
  124 + 0xa, 0x6c, 0x69, 0x6e, 0x65, 0x2d, 0x68, 0x65, 0x69, 0x67,
  125 + 0x68, 0x74, 0x3a, 0x32, 0x35, 0x70, 0x78, 0x3b, 0xd, 0xa,
  126 + 0x7d, 0xd, 0xa, 0xd, 0xa, 0x23, 0x6d, 0x65, 0x6e, 0x75,
  127 + 0x20, 0x2e, 0x6d, 0x65, 0x6e, 0x75, 0x49, 0x74, 0x65, 0x6d,
  128 + 0x7b, 0xd, 0xa, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x32,
  129 + 0x37, 0x30, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x66, 0x6c, 0x6f,
  130 + 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0xd, 0xa,
  131 + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x72, 0x69, 0x67,
  132 + 0x68, 0x74, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31,
  133 + 0x70, 0x78, 0x3b, 0xd, 0xa, 0x62, 0x6f, 0x72, 0x64, 0x65,
  134 + 0x72, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2d, 0x73, 0x74,
  135 + 0x79, 0x6c, 0x65, 0x3a, 0x64, 0x6f, 0x74, 0x74, 0x65, 0x64,
  136 + 0x3b, 0xd, 0xa, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c,
  137 + 0x69, 0x67, 0x6e, 0x3a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
  138 + 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e, 0x6d,
  139 + 0x65, 0x6e, 0x75, 0x49, 0x74, 0x65, 0x6d, 0x20, 0x61, 0x3a,
  140 + 0x6c, 0x69, 0x6e, 0x6b, 0x7b, 0xd, 0xa, 0x63, 0x6f, 0x6c,
  141 + 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28, 0x35, 0x30, 0x2c,
  142 + 0x35, 0x30, 0x2c, 0x35, 0x30, 0x29, 0x3b, 0xd, 0xa, 0x74,
  143 + 0x65, 0x78, 0x74, 0x2d, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61,
  144 + 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x6e, 0x6f, 0x6e, 0x65, 0x3b,
  145 + 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e, 0x6d, 0x65,
  146 + 0x6e, 0x75, 0x49, 0x74, 0x65, 0x6d, 0x20, 0x61, 0x3a, 0x76,
  147 + 0x69, 0x73, 0x69, 0x74, 0x65, 0x64, 0x7b, 0xd, 0xa, 0x63,
  148 + 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28, 0x35,
  149 + 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x29, 0x3b, 0xd,
  150 + 0xa, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x64, 0x65, 0x63, 0x6f,
  151 + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x6e, 0x6f, 0x6e,
  152 + 0x65, 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e,
  153 + 0x6d, 0x65, 0x6e, 0x75, 0x49, 0x74, 0x65, 0x6d, 0x20, 0x61,
  154 + 0x3a, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x7b, 0xd, 0xa, 0x63,
  155 + 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x77, 0x68, 0x69, 0x74, 0x65,
  156 + 0x3b, 0xd, 0xa, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x64, 0x65,
  157 + 0x63, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x6e,
  158 + 0x6f, 0x6e, 0x65, 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd,
  159 + 0xa, 0x2f, 0x2a, 0x20, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  160 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  161 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  162 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  163 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  164 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  165 + 0x20, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x2a, 0x2f, 0xd, 0xa,
  166 + 0x23, 0x6d, 0x61, 0x69, 0x6e, 0x7b, 0xd, 0xa, 0x77, 0x69,
  167 + 0x64, 0x74, 0x68, 0x3a, 0x31, 0x30, 0x30, 0x25, 0x3b, 0xd,
  168 + 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x23, 0x6d, 0x61, 0x69,
  169 + 0x6e, 0x20, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x7b, 0xd, 0xa,
  170 + 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x36, 0x30, 0x30, 0x70,
  171 + 0x78, 0x3b, 0xd, 0xa, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e,
  172 + 0x2d, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x61, 0x75, 0x74, 0x6f,
  173 + 0x3b, 0xd, 0xa, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d,
  174 + 0x72, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x61, 0x75, 0x74, 0x6f,
  175 + 0x3b, 0xd, 0xa, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67,
  176 + 0x2d, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x35, 0x70,
  177 + 0x78, 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e,
  178 + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2e, 0x66, 0x6f, 0x72, 0x6d,
  179 + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x7b, 0xd, 0xa, 0x66, 0x6f,
  180 + 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x38, 0x30,
  181 + 0x25, 0x3b, 0xd, 0xa, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e,
  182 + 0x67, 0x3a, 0x20, 0x35, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x77,
  183 + 0x69, 0x64, 0x74, 0x68, 0x3a, 0x35, 0x39, 0x30, 0x70, 0x78,
  184 + 0x3b, 0xd, 0xa, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72,
  185 + 0x65, 0x64, 0x3b, 0xd, 0xa, 0x74, 0x65, 0x78, 0x74, 0x2d,
  186 + 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x63, 0x65, 0x6e, 0x74,
  187 + 0x65, 0x72, 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa,
  188 + 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x2e, 0x66, 0x6f, 0x72,
  189 + 0x6d, 0x43, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x7b, 0xd,
  190 + 0xa, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65,
  191 + 0x3a, 0x31, 0x35, 0x30, 0x25, 0x3b, 0xd, 0xa, 0x70, 0x61,
  192 + 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x20, 0x35, 0x70, 0x78,
  193 + 0x3b, 0xd, 0xa, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62,
  194 + 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0xd, 0xa, 0x74, 0x65, 0x78,
  195 + 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x63, 0x65,
  196 + 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xd, 0xa, 0x77, 0x69, 0x64,
  197 + 0x74, 0x68, 0x3a, 0x35, 0x39, 0x30, 0x70, 0x78, 0x3b, 0xd,
  198 + 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e, 0x66, 0x6f, 0x72,
  199 + 0x6d, 0x20, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x65, 0x63,
  200 + 0x74, 0x69, 0x6f, 0x6e, 0x7b, 0xd, 0xa, 0x66, 0x6f, 0x6e,
  201 + 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31, 0x33, 0x30,
  202 + 0x25, 0x3b, 0xd, 0xa, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e,
  203 + 0x67, 0x2d, 0x74, 0x6f, 0x70, 0x3a, 0x20, 0x31, 0x35, 0x70,
  204 + 0x78, 0x3b, 0xd, 0xa, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e,
  205 + 0x67, 0x2d, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x20,
  206 + 0x35, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x70, 0x61, 0x64, 0x64,
  207 + 0x69, 0x6e, 0x67, 0x2d, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x31,
  208 + 0x35, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x63, 0x6c, 0x65, 0x61,
  209 + 0x72, 0x3a, 0x62, 0x6f, 0x74, 0x68, 0x3b, 0xd, 0xa, 0x63,
  210 + 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b,
  211 + 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e, 0x66,
  212 + 0x6f, 0x72, 0x6d, 0x20, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x4c,
  213 + 0x61, 0x62, 0x65, 0x6c, 0x7b, 0xd, 0xa, 0x77, 0x69, 0x64,
  214 + 0x74, 0x68, 0x3a, 0x20, 0x32, 0x38, 0x35, 0x70, 0x78, 0x3b,
  215 + 0xd, 0xa, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d,
  216 + 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x31, 0x35, 0x70, 0x78, 0x3b,
  217 + 0xd, 0xa, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a,
  218 + 0x65, 0x3a, 0x31, 0x30, 0x30, 0x25, 0x3b, 0xd, 0xa, 0x66,
  219 + 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b,
  220 + 0xd, 0xa, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x3a, 0x62, 0x6f,
  221 + 0x74, 0x68, 0x3b, 0xd, 0xa, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
  222 + 0x3a, 0x72, 0x67, 0x62, 0x28, 0x32, 0x30, 0x30, 0x2c, 0x32,
  223 + 0x30, 0x30, 0x2c, 0x32, 0x30, 0x30, 0x29, 0x3b, 0xd, 0xa,
  224 + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28,
  225 + 0x35, 0x35, 0x2c, 0x34, 0x39, 0x2c, 0x33, 0x36, 0x29, 0x3b,
  226 + 0xd, 0xa, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d,
  227 + 0x74, 0x6f, 0x70, 0x3a, 0x35, 0x70, 0x78, 0x3b, 0xd, 0xa,
  228 + 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x62, 0x6f,
  229 + 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x35, 0x70, 0x78, 0x3b, 0xd,
  230 + 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e, 0x66, 0x6f, 0x72,
  231 + 0x6d, 0x20, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x78,
  232 + 0x74, 0x7b, 0xd, 0xa, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a,
  233 + 0x20, 0x33, 0x30, 0x30, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x66,
  234 + 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31,
  235 + 0x30, 0x30, 0x25, 0x3b, 0xd, 0xa, 0x66, 0x6c, 0x6f, 0x61,
  236 + 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0xd, 0xa, 0x6d,
  237 + 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x62, 0x6f, 0x74, 0x74,
  238 + 0x6f, 0x6d, 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xd, 0xa,
  239 + 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e, 0x66, 0x6f, 0x72, 0x6d,
  240 + 0x20, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x65, 0x6c, 0x65,
  241 + 0x63, 0x74, 0x7b, 0xd, 0xa, 0x77, 0x69, 0x64, 0x74, 0x68,
  242 + 0x3a, 0x20, 0x33, 0x30, 0x30, 0x70, 0x78, 0x3b, 0xd, 0xa,
  243 + 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a,
  244 + 0x31, 0x30, 0x30, 0x25, 0x3b, 0xd, 0xa, 0x66, 0x6c, 0x6f,
  245 + 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0xd, 0xa,
  246 + 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x62, 0x6f, 0x74,
  247 + 0x74, 0x6f, 0x6d, 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xd,
  248 + 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e, 0x66, 0x6f, 0x72,
  249 + 0x6d, 0x20, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x75, 0x74,
  250 + 0x74, 0x6f, 0x6e, 0x7b, 0xd, 0xa, 0x77, 0x69, 0x64, 0x74,
  251 + 0x68, 0x3a, 0x20, 0x33, 0x30, 0x30, 0x70, 0x78, 0x3b, 0xd,
  252 + 0xa, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65,
  253 + 0x3a, 0x31, 0x30, 0x30, 0x25, 0x3b, 0xd, 0xa, 0x66, 0x6c,
  254 + 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0xd,
  255 + 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e, 0x66, 0x6f, 0x72,
  256 + 0x6d, 0x20, 0x2e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65,
  257 + 0x78, 0x74, 0x7b, 0xd, 0xa, 0x77, 0x69, 0x64, 0x74, 0x68,
  258 + 0x3a, 0x20, 0x32, 0x38, 0x30, 0x70, 0x78, 0x3b, 0xd, 0xa,
  259 + 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x35, 0x70,
  260 + 0x78, 0x3b, 0xd, 0xa, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73,
  261 + 0x69, 0x7a, 0x65, 0x3a, 0x31, 0x30, 0x30, 0x25, 0x3b, 0xd,
  262 + 0xa, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66,
  263 + 0x74, 0x3b, 0xd, 0xa, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72,
  264 + 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
  265 + 0x3a, 0x72, 0x67, 0x62, 0x28, 0x32, 0x33, 0x30, 0x2c, 0x32,
  266 + 0x33, 0x30, 0x2c, 0x32, 0x33, 0x30, 0x29, 0x3b, 0xd, 0xa,
  267 + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28,
  268 + 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x29, 0x3b,
  269 + 0xd, 0xa, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x77,
  270 + 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x70, 0x78, 0x3b, 0xd,
  271 + 0xa, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x62, 0x6f,
  272 + 0x74, 0x74, 0x6f, 0x6d, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
  273 + 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0xd, 0xa, 0x7d,
  274 + 0xd, 0xa, 0xd, 0xa, 0xd, 0xa, 0xd, 0xa, 0x2e, 0x66,
  275 + 0x6f, 0x72, 0x6d, 0x20, 0x2e, 0x63, 0x6f, 0x6d, 0x62, 0x6f,
  276 + 0x42, 0x6f, 0x78, 0x7b, 0xd, 0xa, 0x77, 0x69, 0x64, 0x74,
  277 + 0x68, 0x3a, 0x20, 0x32, 0x39, 0x30, 0x70, 0x78, 0x3b, 0xd,
  278 + 0xa, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x35,
  279 + 0x70, 0x78, 0x3b, 0xd, 0xa, 0x70, 0x61, 0x64, 0x64, 0x69,
  280 + 0x6e, 0x67, 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x30,
  281 + 0x70, 0x78, 0x3b, 0xd, 0xa, 0x66, 0x6f, 0x6e, 0x74, 0x2d,
  282 + 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31, 0x30, 0x30, 0x25, 0x3b,
  283 + 0xd, 0xa, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65,
  284 + 0x66, 0x74, 0x3b, 0xd, 0xa, 0x62, 0x61, 0x63, 0x6b, 0x67,
  285 + 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f,
  286 + 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28, 0x32, 0x33, 0x30, 0x2c,
  287 + 0x32, 0x33, 0x30, 0x2c, 0x32, 0x33, 0x30, 0x29, 0x3b, 0xd,
  288 + 0xa, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62,
  289 + 0x28, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x29,
  290 + 0x3b, 0xd, 0xa, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d,
  291 + 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x70, 0x78, 0x3b,
  292 + 0xd, 0xa, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x62,
  293 + 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x2d, 0x63, 0x6f, 0x6c, 0x6f,
  294 + 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0xd, 0xa,
  295 + 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e, 0x66, 0x6f, 0x72, 0x6d,
  296 + 0x20, 0x2e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65, 0x78,
  297 + 0x74, 0x3a, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x7b, 0xd, 0xa,
  298 + 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a,
  299 + 0x31, 0x31, 0x35, 0x25, 0x3b, 0xd, 0xa, 0x62, 0x6f, 0x72,
  300 + 0x64, 0x65, 0x72, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a,
  301 + 0x72, 0x67, 0x62, 0x28, 0x32, 0x30, 0x30, 0x2c, 0x32, 0x30,
  302 + 0x30, 0x2c, 0x32, 0x30, 0x30, 0x29, 0x3b, 0xd, 0xa, 0x62,
  303 + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x63, 0x6f, 0x6c, 0x6f,
  304 + 0x72, 0x3a, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x3b, 0xd,
  305 + 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e, 0x66, 0x6f, 0x72,
  306 + 0x6d, 0x20, 0x2e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75,
  307 + 0x74, 0x74, 0x6f, 0x6e, 0x7b, 0xd, 0xa, 0x62, 0x61, 0x63,
  308 + 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f,
  309 + 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28, 0x32, 0x30,
  310 + 0x30, 0x2c, 0x32, 0x30, 0x30, 0x2c, 0x32, 0x30, 0x30, 0x29,
  311 + 0x3b, 0xd, 0xa, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69,
  312 + 0x7a, 0x65, 0x3a, 0x31, 0x32, 0x30, 0x25, 0x3b, 0xd, 0xa,
  313 + 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x32, 0x39, 0x30,
  314 + 0x70, 0x78, 0x3b, 0xd, 0xa, 0x70, 0x61, 0x64, 0x64, 0x69,
  315 + 0x6e, 0x67, 0x3a, 0x35, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x6d,
  316 + 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x62, 0x6f, 0x74, 0x74,
  317 + 0x6f, 0x6d, 0x3a, 0x32, 0x30, 0x70, 0x78, 0x3b, 0xd, 0xa,
  318 + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74,
  319 + 0x3b, 0xd, 0xa, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d,
  320 + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x67, 0x72, 0x61, 0x79,
  321 + 0x3b, 0xd, 0xa, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d,
  322 + 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x70, 0x78, 0x3b,
  323 + 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e, 0x66, 0x6f,
  324 + 0x72, 0x6d, 0x20, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x61,
  325 + 0x64, 0x69, 0x6f, 0x7b, 0xd, 0xa, 0x77, 0x69, 0x64, 0x74,
  326 + 0x68, 0x3a, 0x32, 0x38, 0x30, 0x70, 0x78, 0x3b, 0xd, 0xa,
  327 + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74,
  328 + 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e, 0x66,
  329 + 0x6f, 0x72, 0x6d, 0x20, 0x2e, 0x69, 0x6e, 0x70, 0x75, 0x74,
  330 + 0x52, 0x61, 0x64, 0x69, 0x6f, 0x7b, 0xd, 0xa, 0x77, 0x69,
  331 + 0x64, 0x74, 0x68, 0x3a, 0x33, 0x30, 0x70, 0x78, 0x3b, 0xd,
  332 + 0xa, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66,
  333 + 0x74, 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2e,
  334 + 0x72, 0x61, 0x64, 0x69, 0x6f, 0x54, 0x65, 0x78, 0x74, 0x7b,
  335 + 0xd, 0xa, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x32,
  336 + 0x32, 0x30, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x66, 0x6c, 0x6f,
  337 + 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0xd, 0xa,
  338 + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28,
  339 + 0x32, 0x30, 0x30, 0x2c, 0x32, 0x30, 0x30, 0x2c, 0x32, 0x30,
  340 + 0x30, 0x29, 0x3b, 0xd, 0xa, 0x70, 0x61, 0x64, 0x64, 0x69,
  341 + 0x6e, 0x67, 0x2d, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x31, 0x30,
  342 + 0x70, 0x78, 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa,
  343 + 0x2e, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x65, 0x72, 0x7b, 0xd,
  344 + 0xa, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x3a, 0x62, 0x6f, 0x74,
  345 + 0x68, 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa, 0x2f,
  346 + 0x2a, 0x20, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  347 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  348 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  349 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  350 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
  351 + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x20, 0x46,
  352 + 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x20, 0x2a, 0x2f, 0xd, 0xa,
  353 + 0x23, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x7b, 0xd, 0xa,
  354 + 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x30, 0x30, 0x25,
  355 + 0x3b, 0xd, 0xa, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f,
  356 + 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a,
  357 + 0x72, 0x67, 0x62, 0x28, 0x32, 0x30, 0x30, 0x2c, 0x32, 0x30,
  358 + 0x30, 0x2c, 0x32, 0x30, 0x30, 0x29, 0x3b, 0xd, 0xa, 0x62,
  359 + 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d,
  360 + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28,
  361 + 0x31, 0x34, 0x38, 0x2c, 0x31, 0x33, 0x30, 0x2c, 0x39, 0x35,
  362 + 0x29, 0x3b, 0xd, 0xa, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a,
  363 + 0x72, 0x67, 0x62, 0x28, 0x35, 0x30, 0x2c, 0x35, 0x30, 0x2c,
  364 + 0x35, 0x30, 0x29, 0x3b, 0xd, 0xa, 0x6c, 0x65, 0x66, 0x74,
  365 + 0x3a, 0x30, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x74, 0x6f, 0x70,
  366 + 0x3a, 0x39, 0x35, 0x25, 0x3b, 0xd, 0xa, 0x70, 0x6f, 0x73,
  367 + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x66, 0x69, 0x78, 0x65,
  368 + 0x64, 0x3b, 0xd, 0xa, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e,
  369 + 0x67, 0x2d, 0x74, 0x6f, 0x70, 0x3a, 0x35, 0x70, 0x78, 0x3b,
  370 + 0xd, 0xa, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d,
  371 + 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x35, 0x70, 0x78,
  372 + 0x3b, 0xd, 0xa, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d,
  373 + 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x2d, 0x63, 0x6f, 0x6c,
  374 + 0x6f, 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0xd,
  375 + 0xa, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x62, 0x6f,
  376 + 0x74, 0x74, 0x6f, 0x6d, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68,
  377 + 0x3a, 0x31, 0x70, 0x78, 0x3b, 0xd, 0xa, 0x62, 0x6f, 0x72,
  378 + 0x64, 0x65, 0x72, 0x2d, 0x74, 0x6f, 0x70, 0x2d, 0x77, 0x69,
  379 + 0x64, 0x74, 0x68, 0x3a, 0x31, 0x70, 0x78, 0x3b, 0xd, 0xa,
  380 + 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x74, 0x6f, 0x70,
  381 + 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x77, 0x68, 0x69,
  382 + 0x74, 0x65, 0x3b, 0xd, 0xa, 0x7d, 0xd, 0xa, 0xd, 0xa,
  383 + 0x23, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x20, 0x2e, 0x6d,
  384 + 0x65, 0x64, 0x46, 0x6f, 0x6e, 0x74, 0x7b, 0xd, 0xa, 0x66,
  385 + 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x72, 0x69, 0x67, 0x68, 0x74,
  386 + 0x3b, 0xd, 0xa, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67,
  387 + 0x2d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x31, 0x35, 0x70,
  388 + 0x78, 0x3b, 0xd, 0xa, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73,
  389 + 0x69, 0x7a, 0x65, 0x3a, 0x39, 0x30, 0x25, 0x3b, 0xd, 0xa,
  390 + 0x7d, };
  391 +
  392 +static const char data_en_client_html[] = {
  393 + /* /en_client.html */
  394 + 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
  395 + 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
  396 + 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
  397 + 0x2f, 0x44, 0x54, 0x44, 0x20, 0x58, 0x48, 0x54, 0x4d, 0x4c,
  398 + 0x20, 0x31, 0x2e, 0x30, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
  399 + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
  400 + 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
  401 + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
  402 + 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x78, 0x68, 0x74, 0x6d, 0x6c,
  403 + 0x31, 0x2f, 0x44, 0x54, 0x44, 0x2f, 0x78, 0x68, 0x74, 0x6d,
  404 + 0x6c, 0x31, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74,
  405 + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x64, 0x74, 0x64, 0x22,
  406 + 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x78,
  407 + 0x6d, 0x6c, 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
  408 + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e,
  409 + 0x6f, 0x72, 0x67, 0x2f, 0x31, 0x39, 0x39, 0x39, 0x2f, 0x78,
  410 + 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x3a,
  411 + 0x6c, 0x61, 0x6e, 0x67, 0x3d, 0x22, 0x65, 0x6c, 0x2d, 0x67,
  412 + 0x72, 0x22, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x3d, 0x22, 0x65,
  413 + 0x6c, 0x2d, 0x67, 0x72, 0x22, 0x20, 0x3e, 0xd, 0xa, 0xd,
  414 + 0xa, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x3c,
  415 + 0x6d, 0x65, 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d,
  416 + 0x65, 0x71, 0x75, 0x69, 0x76, 0x3d, 0x22, 0x43, 0x6f, 0x6e,
  417 + 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x22,
  418 + 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22,
  419 + 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3b,
  420 + 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x75,
  421 + 0x74, 0x66, 0x2d, 0x38, 0x22, 0x20, 0x2f, 0x3e, 0xd, 0xa,
  422 + 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d,
  423 + 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65,
  424 + 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74,
  425 + 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22, 0x20, 0x68,
  426 + 0x72, 0x65, 0x66, 0x3d, 0x22, 0x63, 0x73, 0x73, 0x2e, 0x63,
  427 + 0x73, 0x73, 0x22, 0x20, 0x2f, 0x3e, 0xd, 0xa, 0x3c, 0x74,
  428 + 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x57, 0x69, 0x53, 0x6d, 0x61,
  429 + 0x72, 0x74, 0x20, 0x57, 0x69, 0x72, 0x65, 0x6c, 0x65, 0x73,
  430 + 0x73, 0x20, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
  431 + 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xd, 0xa,
  432 + 0xd, 0xa, 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e,
  433 + 0xd, 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  434 + 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x46,
  435 + 0x6f, 0x72, 0x6d, 0x28, 0x29, 0x7b, 0xd, 0xa, 0xd, 0xa,
  436 + 0x9, 0x76, 0x61, 0x72, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f,
  437 + 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x64,
  438 + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x66, 0x6f,
  439 + 0x72, 0x6d, 0x73, 0x5b, 0x22, 0x63, 0x6c, 0x69, 0x65, 0x6e,
  440 + 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
  441 + 0x73, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x5d, 0x5b, 0x22, 0x6e,
  442 + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65,
  443 + 0x22, 0x5d, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3b, 0xd,
  444 + 0xa, 0x9, 0x76, 0x61, 0x72, 0x20, 0x73, 0x65, 0x63, 0x75,
  445 + 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x20, 0x3d,
  446 + 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
  447 + 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5b, 0x22, 0x63, 0x6c, 0x69,
  448 + 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
  449 + 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x5d, 0x5b,
  450 + 0x22, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x54,
  451 + 0x79, 0x70, 0x65, 0x22, 0x5d, 0x2e, 0x76, 0x61, 0x6c, 0x75,
  452 + 0x65, 0x3b, 0xd, 0xa, 0x9, 0x76, 0x61, 0x72, 0x20, 0x70,
  453 + 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x20,
  454 + 0x3d, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
  455 + 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x5b, 0x22, 0x63, 0x6c,
  456 + 0x69, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
  457 + 0x74, 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x5d,
  458 + 0x5b, 0x22, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61,
  459 + 0x73, 0x65, 0x22, 0x5d, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65,
  460 + 0x3b, 0xd, 0xa, 0xd, 0xa, 0x9, 0x69, 0x66, 0x20, 0x28,
  461 + 0x28, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61,
  462 + 0x6d, 0x65, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20,
  463 + 0x3c, 0x20, 0x31, 0x29, 0x7c, 0x7c, 0x28, 0x6e, 0x65, 0x74,
  464 + 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x2e, 0x6c,
  465 + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x3e, 0x20, 0x33, 0x32,
  466 + 0x29, 0x29, 0x7b, 0xd, 0xa, 0x9, 0x9, 0x64, 0x6f, 0x63,
  467 + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45,
  468 + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64,
  469 + 0x28, 0x27, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f,
  470 + 0x72, 0x27, 0x29, 0x2e, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x48,
  471 + 0x54, 0x4d, 0x4c, 0x20, 0x3d, 0x20, 0x22, 0x26, 0x6c, 0x74,
  472 + 0x3b, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x6e,
  473 + 0x61, 0x6d, 0x65, 0x26, 0x67, 0x74, 0x3b, 0x20, 0x6d, 0x75,
  474 + 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x62, 0x65, 0x74, 0x77,
  475 + 0x65, 0x65, 0x6e, 0x20, 0x31, 0x20, 0x61, 0x6e, 0x64, 0x20,
  476 + 0x33, 0x32, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74,
  477 + 0x65, 0x72, 0x73, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x2c, 0x20,
  478 + 0x70, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x70,
  479 + 0x75, 0x74, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x21, 0x22,
  480 + 0x3b, 0xd, 0xa, 0x9, 0x9, 0x72, 0x65, 0x74, 0x75, 0x72,
  481 + 0x6e, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x7d, 0xd,
  482 + 0xa, 0x9, 0x69, 0x66, 0x20, 0x28, 0x28, 0x73, 0x65, 0x63,
  483 + 0x75, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x3d,
  484 + 0x3d, 0x22, 0x77, 0x70, 0x61, 0x22, 0x29, 0x20, 0x26, 0x26,
  485 + 0x20, 0x28, 0x28, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72,
  486 + 0x61, 0x73, 0x65, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68,
  487 + 0x20, 0x3c, 0x20, 0x38, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x28,
  488 + 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65,
  489 + 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x3e, 0x20,
  490 + 0x36, 0x34, 0x29, 0x29, 0x29, 0x7b, 0xd, 0xa, 0x9, 0x9,
  491 + 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67,
  492 + 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42,
  493 + 0x79, 0x49, 0x64, 0x28, 0x27, 0x66, 0x6f, 0x72, 0x6d, 0x45,
  494 + 0x72, 0x72, 0x6f, 0x72, 0x27, 0x29, 0x2e, 0x69, 0x6e, 0x6e,
  495 + 0x65, 0x72, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x3d, 0x20, 0x22,
  496 + 0x57, 0x50, 0x41, 0x2f, 0x57, 0x50, 0x41, 0x32, 0x20, 0x26,
  497 + 0x6c, 0x74, 0x3b, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
  498 + 0x79, 0x20, 0x4b, 0x65, 0x79, 0x26, 0x67, 0x74, 0x3b, 0x20,
  499 + 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x62, 0x65,
  500 + 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x38, 0x20, 0x61, 0x6e,
  501 + 0x64, 0x20, 0x36, 0x34, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61,
  502 + 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x6c, 0x6f, 0x6e, 0x67,
  503 + 0x2c, 0x20, 0x70, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x20, 0x69,
  504 + 0x6e, 0x70, 0x75, 0x74, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e,
  505 + 0x21, 0x22, 0x3b, 0xd, 0xa, 0x9, 0x9, 0x72, 0x65, 0x74,
  506 + 0x75, 0x72, 0x6e, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b,
  507 + 0x7d, 0xd, 0xa, 0x9, 0x69, 0x66, 0x20, 0x28, 0x28, 0x73,
  508 + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70,
  509 + 0x65, 0x3d, 0x3d, 0x22, 0x77, 0x65, 0x70, 0x31, 0x22, 0x29,
  510 + 0x20, 0x26, 0x26, 0x20, 0x28, 0x70, 0x61, 0x73, 0x73, 0x70,
  511 + 0x68, 0x72, 0x61, 0x73, 0x65, 0x2e, 0x6c, 0x65, 0x6e, 0x67,
  512 + 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20, 0x35, 0x20, 0x26, 0x26,
  513 + 0x20, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73,
  514 + 0x65, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x21,
  515 + 0x3d, 0x20, 0x31, 0x30, 0x20, 0x26, 0x26, 0x20, 0x70, 0x61,
  516 + 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x2e, 0x6c,
  517 + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20, 0x31,
  518 + 0x33, 0x20, 0x26, 0x26, 0x20, 0x70, 0x61, 0x73, 0x73, 0x70,
  519 + 0x68, 0x72, 0x61, 0x73, 0x65, 0x2e, 0x6c, 0x65, 0x6e, 0x67,
  520 + 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20, 0x32, 0x36, 0x29, 0x20,
  521 + 0x29, 0x7b, 0xd, 0xa, 0x9, 0x9, 0x64, 0x6f, 0x63, 0x75,
  522 + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c,
  523 + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 0x28,
  524 + 0x27, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72,
  525 + 0x27, 0x29, 0x2e, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x48, 0x54,
  526 + 0x4d, 0x4c, 0x20, 0x3d, 0x20, 0x22, 0x57, 0x45, 0x50, 0x20,
  527 + 0x26, 0x6c, 0x74, 0x3b, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
  528 + 0x74, 0x79, 0x20, 0x4b, 0x65, 0x79, 0x26, 0x67, 0x74, 0x3b,
  529 + 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x35,
  530 + 0x20, 0x6f, 0x72, 0x20, 0x31, 0x33, 0x20, 0x63, 0x68, 0x61,
  531 + 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x6c, 0x6f,
  532 + 0x6e, 0x67, 0x20, 0x28, 0x31, 0x30, 0x20, 0x6f, 0x72, 0x20,
  533 + 0x32, 0x36, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74,
  534 + 0x65, 0x72, 0x73, 0x20, 0x69, 0x66, 0x20, 0x48, 0x45, 0x58,
  535 + 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x69, 0x73,
  536 + 0x20, 0x75, 0x73, 0x65, 0x64, 0x29, 0x2c, 0x20, 0x70, 0x6c,
  537 + 0x65, 0x61, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74,
  538 + 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x21, 0x22, 0x3b, 0xd,
  539 + 0xa, 0x9, 0x9, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
  540 + 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x7d, 0xd, 0xa, 0x9,
  541 + 0x69, 0x66, 0x20, 0x28, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
  542 + 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x3d, 0x3d, 0x22, 0x6f,
  543 + 0x70, 0x65, 0x6e, 0x22, 0x20, 0x26, 0x26, 0x20, 0x70, 0x61,
  544 + 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x2e, 0x6c,
  545 + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20, 0x30,
  546 + 0x20, 0x29, 0x7b, 0xd, 0xa, 0x9, 0x9, 0x64, 0x6f, 0x63,
  547 + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45,
  548 + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64,
  549 + 0x28, 0x27, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f,
  550 + 0x72, 0x27, 0x29, 0x2e, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x48,
  551 + 0x54, 0x4d, 0x4c, 0x20, 0x3d, 0x20, 0x22, 0x26, 0x6c, 0x74,
  552 + 0x3b, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20,
  553 + 0x4b, 0x65, 0x79, 0x26, 0x67, 0x74, 0x3b, 0x20, 0x6d, 0x75,
  554 + 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74,
  555 + 0x79, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x4f, 0x70, 0x65,
  556 + 0x6e, 0x20, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69,
  557 + 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64,
  558 + 0x21, 0x22, 0x3b, 0xd, 0xa, 0x9, 0x9, 0x72, 0x65, 0x74,
  559 + 0x75, 0x72, 0x6e, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b,
  560 + 0x7d, 0xd, 0xa, 0x7d, 0xd, 0xa, 0x3c, 0x2f, 0x73, 0x63,
  561 + 0x72, 0x69, 0x70, 0x74, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c,
  562 + 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20, 0xd,
  563 + 0xa, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c,
  564 + 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6d, 0x67,
  565 + 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6c, 0x6f,
  566 + 0x67, 0x6f, 0x22, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x6c,
  567 + 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20, 0x61,
  568 + 0x6c, 0x74, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x22, 0x20,
  569 + 0x2f, 0x3e, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63,
  570 + 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61,
  571 + 0x6e, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76,
  572 + 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd,
  573 + 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22,
  574 + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3e, 0xd, 0xa,
  575 + 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
  576 + 0x3d, 0x22, 0x62, 0x69, 0x67, 0x46, 0x6f, 0x6e, 0x74, 0x22,
  577 + 0x3e, 0x57, 0x69, 0x53, 0x6d, 0x61, 0x72, 0x74, 0x20, 0x57,
  578 + 0x69, 0x72, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x53, 0x65,
  579 + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x3c, 0x2f, 0x64, 0x69,
  580 + 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
  581 + 0xd, 0xa, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69,
  582 + 0x64, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x22, 0x3e, 0xd,
  583 + 0xa, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61,
  584 + 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x49, 0x74,
  585 + 0x65, 0x6d, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
  586 + 0x66, 0x3d, 0x22, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65,
  587 + 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x48, 0x6f,
  588 + 0x6d, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69,
  589 + 0x76, 0x3e, 0xd, 0xa, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20,
  590 + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e,
  591 + 0x75, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x3e, 0x3c, 0x61, 0x20,
  592 + 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x65, 0x6e, 0x5f, 0x63,
  593 + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x68, 0x74, 0x6d, 0x6c,
  594 + 0x22, 0x3e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x6d,
  595 + 0x6f, 0x64, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  596 + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x4d,
  597 + 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x29, 0x3c, 0x2f, 0x61, 0x3e,
  598 + 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x3c,
  599 + 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
  600 + 0x22, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x65, 0x72, 0x22, 0x3e,
  601 + 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x2f,
  602 + 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x64,
  603 + 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6d, 0x61, 0x69,
  604 + 0x6e, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20,
  605 + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72,
  606 + 0x6d, 0x22, 0x3e, 0xd, 0xa, 0x9, 0x3c, 0x64, 0x69, 0x76,
  607 + 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f,
  608 + 0x72, 0x6d, 0x43, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22,
  609 + 0x3e, 0xd, 0xa, 0x9, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
  610 + 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66,
  611 + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xd,
  612 + 0xa, 0x9, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa,
  613 + 0x9, 0xd, 0xa, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63,
  614 + 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72, 0x6d,
  615 + 0x4d, 0x61, 0x69, 0x6e, 0x22, 0x3e, 0xd, 0xa, 0x9, 0x9,
  616 + 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
  617 + 0x3d, 0x22, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x61, 0x69, 0x6e,
  618 + 0x22, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76,
  619 + 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f,
  620 + 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x20, 0x69,
  621 + 0x64, 0x3d, 0x27, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72,
  622 + 0x6f, 0x72, 0x27, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
  623 + 0xd, 0xa, 0x9, 0x9, 0x9, 0x3c, 0x66, 0x6f, 0x72, 0x6d,
  624 + 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x63, 0x6c, 0x69,
  625 + 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
  626 + 0x65, 0x72, 0x73, 0x46, 0x6f, 0x72, 0x6d, 0x22, 0x20, 0x61,
  627 + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x65, 0x6e, 0x5f,
  628 + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61,
  629 + 0x6d, 0x73, 0x22, 0x20, 0x6f, 0x6e, 0x73, 0x75, 0x62, 0x6d,
  630 + 0x69, 0x74, 0x3d, 0x22, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
  631 + 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x46,
  632 + 0x6f, 0x72, 0x6d, 0x28, 0x29, 0x22, 0x20, 0x6d, 0x65, 0x74,
  633 + 0x68, 0x6f, 0x64, 0x3d, 0x22, 0x67, 0x65, 0x74, 0x22, 0x3e,
  634 + 0xd, 0xa, 0x9, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20,
  635 + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72,
  636 + 0x6d, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3e,
  637 + 0x31, 0x2e, 0x20, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x4e,
  638 + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x4e, 0x61, 0x6d,
  639 + 0x65, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9,
  640 + 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61,
  641 + 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x61,
  642 + 0x62, 0x65, 0x6c, 0x22, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f,
  643 + 0x72, 0x6b, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0x3c, 0x2f,
  644 + 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x3c,
  645 + 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
  646 + 0x22, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x78, 0x74, 0x22,
  647 + 0x3e, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x63, 0x6c,
  648 + 0x61, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x22, 0x69, 0x6e, 0x70,
  649 + 0x75, 0x74, 0x54, 0x65, 0x78, 0x74, 0x22, 0x20, 0x74, 0x79,
  650 + 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74, 0x22, 0x20,
  651 + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x6e, 0x65, 0x74, 0x77,
  652 + 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x76,
  653 + 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x22, 0x2f, 0x3e, 0x3c,
  654 + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9,
  655 + 0xd, 0xa, 0x9, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20,
  656 + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72,
  657 + 0x6d, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3e,
  658 + 0x32, 0x2e, 0x20, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20,
  659 + 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x54,
  660 + 0x79, 0x70, 0x65, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd,
  661 + 0xa, 0x9, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63,
  662 + 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72, 0x6d,
  663 + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x3e, 0x53, 0x65, 0x63,
  664 + 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x54, 0x79, 0x70, 0x65,
  665 + 0x3a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9,
  666 + 0x9, 0x9, 0x3c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20,
  667 + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6d,
  668 + 0x62, 0x6f, 0x42, 0x6f, 0x78, 0x22, 0x20, 0x6e, 0x61, 0x6d,
  669 + 0x65, 0x3d, 0x22, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
  670 + 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3e, 0xd, 0xa, 0x9,
  671 + 0x9, 0x9, 0x9, 0x3c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
  672 + 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x6f, 0x70,
  673 + 0x65, 0x6e, 0x22, 0x3e, 0x4f, 0x70, 0x65, 0x6e, 0x3c, 0x2f,
  674 + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3e, 0xd, 0xa, 0x9,
  675 + 0x9, 0x9, 0x9, 0x3c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
  676 + 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x77, 0x70,
  677 + 0x61, 0x22, 0x3e, 0x57, 0x50, 0x41, 0x20, 0x2f, 0x20, 0x57,
  678 + 0x50, 0x41, 0x32, 0x3c, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
  679 + 0x6e, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6f,
  680 + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x76, 0x61, 0x6c, 0x75,
  681 + 0x65, 0x3d, 0x22, 0x77, 0x65, 0x70, 0x31, 0x22, 0x3e, 0x57,
  682 + 0x45, 0x50, 0x3c, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
  683 + 0x3e, 0xd, 0xa, 0xd, 0xa, 0x9, 0x9, 0x9, 0x3c, 0x2f,
  684 + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x3e, 0xd, 0xa, 0x9,
  685 + 0x9, 0x9, 0xd, 0xa, 0x9, 0x9, 0x9, 0x3c, 0x64, 0x69,
  686 + 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66,
  687 + 0x6f, 0x72, 0x6d, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  688 + 0x22, 0x3e, 0x33, 0x2e, 0x20, 0x45, 0x6e, 0x74, 0x65, 0x72,
  689 + 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20,
  690 + 0x4b, 0x65, 0x79, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd,
  691 + 0xa, 0x9, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63,
  692 + 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72, 0x6d,
  693 + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x3e, 0x53, 0x65, 0x63,
  694 + 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x4b, 0x65, 0x79, 0x3a,
  695 + 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x9,
  696 + 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73,
  697 + 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65, 0x78,
  698 + 0x74, 0x22, 0x3e, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20,
  699 + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x22, 0x69,
  700 + 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65, 0x78, 0x74, 0x22, 0x20,
  701 + 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74,
  702 + 0x22, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x70, 0x61,
  703 + 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x22, 0x2f,
  704 + 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9,
  705 + 0x9, 0x9, 0xd, 0xa, 0x9, 0x9, 0x9, 0x3c, 0x64, 0x69,
  706 + 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66,
  707 + 0x6f, 0x72, 0x6d, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  708 + 0x22, 0x3e, 0x34, 0x2e, 0x20, 0x45, 0x6e, 0x74, 0x65, 0x72,
  709 + 0x20, 0x52, 0x41, 0x44, 0x49, 0x55, 0x53, 0x20, 0x55, 0x73,
  710 + 0x65, 0x72, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa,
  711 + 0x9, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c,
  712 + 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72, 0x6d, 0x4c,
  713 + 0x61, 0x62, 0x65, 0x6c, 0x22, 0x3e, 0x55, 0x73, 0x65, 0x72,
  714 + 0x3a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9,
  715 + 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61,
  716 + 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x65,
  717 + 0x78, 0x74, 0x22, 0x3e, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74,
  718 + 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x22,
  719 + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65, 0x78, 0x74, 0x22,
  720 + 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78,
  721 + 0x74, 0x22, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x72,
  722 + 0x61, 0x64, 0x55, 0x73, 0x65, 0x72, 0x22, 0x2f, 0x3e, 0x3c,
  723 + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9,
  724 + 0xd, 0xa, 0x9, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20,
  725 + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72,
  726 + 0x6d, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3e,
  727 + 0x35, 0x2e, 0x20, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x52,
  728 + 0x41, 0x44, 0x49, 0x55, 0x53, 0x20, 0x55, 0x73, 0x65, 0x72,
  729 + 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x9,
  730 + 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73,
  731 + 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x61, 0x62,
  732 + 0x65, 0x6c, 0x22, 0x3e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f,
  733 + 0x72, 0x64, 0x3a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd,
  734 + 0xa, 0x9, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63,
  735 + 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72, 0x6d,
  736 + 0x54, 0x65, 0x78, 0x74, 0x22, 0x3e, 0x3c, 0x69, 0x6e, 0x70,
  737 + 0x75, 0x74, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x3d,
  738 + 0x20, 0x22, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65, 0x78,
  739 + 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74,
  740 + 0x65, 0x78, 0x74, 0x22, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
  741 + 0x22, 0x72, 0x61, 0x64, 0x50, 0x61, 0x73, 0x73, 0x22, 0x2f,
  742 + 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9,
  743 + 0x9, 0x9, 0xd, 0xa, 0x9, 0x9, 0x9, 0x3c, 0x64, 0x69,
  744 + 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66,
  745 + 0x6f, 0x72, 0x6d, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  746 + 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa,
  747 + 0x9, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c,
  748 + 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66, 0x6f, 0x72, 0x6d, 0x4c,
  749 + 0x61, 0x62, 0x65, 0x6c, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69,
  750 + 0x76, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x3c, 0x64, 0x69,
  751 + 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x66,
  752 + 0x6f, 0x72, 0x6d, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22,
  753 + 0x3e, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x63, 0x6c,
  754 + 0x61, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x22, 0x69, 0x6e, 0x70,
  755 + 0x75, 0x74, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22, 0x20,
  756 + 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x73, 0x75, 0x62, 0x6d,
  757 + 0x69, 0x74, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d,
  758 + 0x22, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x20, 0x53, 0x65, 0x74,
  759 + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x2f, 0x3e, 0x3c, 0x2f,
  760 + 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x3c,
  761 + 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
  762 + 0x22, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x65, 0x72, 0x22, 0x3e,
  763 + 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x9,
  764 + 0x9, 0x3c, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x3e, 0x20, 0xd,
  765 + 0xa, 0xd, 0xa, 0x9, 0x9, 0x3c, 0x2f, 0x64, 0x69, 0x76,
  766 + 0x3e, 0xd, 0xa, 0x9, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
  767 + 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa,
  768 + 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa,
  769 + 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x66,
  770 + 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x22, 0x3e, 0xd, 0xa, 0x3c,
  771 + 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
  772 + 0x22, 0x6d, 0x65, 0x64, 0x46, 0x6f, 0x6e, 0x74, 0x22, 0x3e,
  773 + 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x26,
  774 + 0x63, 0x6f, 0x70, 0x79, 0x3b, 0x32, 0x30, 0x31, 0x33, 0x3c,
  775 + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64,
  776 + 0x69, 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x2f, 0x62,
  777 + 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0xd, 0xa, 0xd, 0xa,
  778 + 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd,
  779 + 0xa, };
  780 +
  781 +static const char data_en_index_html[] = {
  782 + /* /en_index.html */
  783 + 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
  784 + 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
  785 + 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
  786 + 0x2f, 0x44, 0x54, 0x44, 0x20, 0x58, 0x48, 0x54, 0x4d, 0x4c,
  787 + 0x20, 0x31, 0x2e, 0x30, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
  788 + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
  789 + 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
  790 + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
  791 + 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x78, 0x68, 0x74, 0x6d, 0x6c,
  792 + 0x31, 0x2f, 0x44, 0x54, 0x44, 0x2f, 0x78, 0x68, 0x74, 0x6d,
  793 + 0x6c, 0x31, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74,
  794 + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x64, 0x74, 0x64, 0x22,
  795 + 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x78,
  796 + 0x6d, 0x6c, 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
  797 + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e,
  798 + 0x6f, 0x72, 0x67, 0x2f, 0x31, 0x39, 0x39, 0x39, 0x2f, 0x78,
  799 + 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x3a,
  800 + 0x6c, 0x61, 0x6e, 0x67, 0x3d, 0x22, 0x65, 0x6c, 0x2d, 0x67,
  801 + 0x72, 0x22, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x3d, 0x22, 0x65,
  802 + 0x6c, 0x2d, 0x67, 0x72, 0x22, 0x20, 0x3e, 0xd, 0xa, 0xd,
  803 + 0xa, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x3c,
  804 + 0x6d, 0x65, 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d,
  805 + 0x65, 0x71, 0x75, 0x69, 0x76, 0x3d, 0x22, 0x43, 0x6f, 0x6e,
  806 + 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x22,
  807 + 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22,
  808 + 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3b,
  809 + 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x75,
  810 + 0x74, 0x66, 0x2d, 0x38, 0x22, 0x20, 0x2f, 0x3e, 0xd, 0xa,
  811 + 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d,
  812 + 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65,
  813 + 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74,
  814 + 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22, 0x20, 0x68,
  815 + 0x72, 0x65, 0x66, 0x3d, 0x22, 0x63, 0x73, 0x73, 0x2e, 0x63,
  816 + 0x73, 0x73, 0x22, 0x20, 0x2f, 0x3e, 0xd, 0xa, 0x3c, 0x74,
  817 + 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x57, 0x69, 0x53, 0x6d, 0x61,
  818 + 0x72, 0x74, 0x20, 0x57, 0x69, 0x72, 0x65, 0x6c, 0x65, 0x73,
  819 + 0x73, 0x20, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
  820 + 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xd, 0xa,
  821 + 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20,
  822 + 0xd, 0xa, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa,
  823 + 0x3c, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6d,
  824 + 0x67, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6c,
  825 + 0x6f, 0x67, 0x6f, 0x22, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x6c,
  826 + 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20, 0x61,
  827 + 0x6c, 0x74, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x22, 0x20,
  828 + 0x2f, 0x3e, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63,
  829 + 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61,
  830 + 0x6e, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76,
  831 + 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd,
  832 + 0xa, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64,
  833 + 0x3d, 0x22, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3e,
  834 + 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61,
  835 + 0x73, 0x73, 0x3d, 0x22, 0x62, 0x69, 0x67, 0x46, 0x6f, 0x6e,
  836 + 0x74, 0x22, 0x3e, 0x57, 0x69, 0x53, 0x6d, 0x61, 0x72, 0x74,
  837 + 0x20, 0x57, 0x69, 0x72, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x20,
  838 + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x3c, 0x2f,
  839 + 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69,
  840 + 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76,
  841 + 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x22,
  842 + 0x3e, 0xd, 0xa, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63,
  843 + 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75,
  844 + 0x49, 0x74, 0x65, 0x6d, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68,
  845 + 0x72, 0x65, 0x66, 0x3d, 0x22, 0x65, 0x6e, 0x5f, 0x69, 0x6e,
  846 + 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e,
  847 + 0x48, 0x6f, 0x6d, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f,
  848 + 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x3c, 0x64, 0x69,
  849 + 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d,
  850 + 0x65, 0x6e, 0x75, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x3e, 0x3c,
  851 + 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x65, 0x6e,
  852 + 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x68, 0x74,
  853 + 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
  854 + 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66,
  855 + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
  856 + 0x28, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x29, 0x3c, 0x2f,
  857 + 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa,
  858 + 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73,
  859 + 0x73, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x65, 0x72,
  860 + 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa,
  861 + 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa,
  862 + 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6d,
  863 + 0x61, 0x69, 0x6e, 0x22, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x9,
  864 + 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65,
  865 + 0x3d, 0x22, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x61,
  866 + 0x75, 0x74, 0x6f, 0x3b, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73,
  867 + 0x69, 0x7a, 0x65, 0x3a, 0x31, 0x30, 0x30, 0x25, 0x3b, 0x63,
  868 + 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b,
  869 + 0x3b, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x34, 0x30, 0x30,
  870 + 0x70, 0x78, 0x3b, 0x22, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x3c,
  871 + 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d,
  872 + 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x34, 0x30, 0x30,
  873 + 0x70, 0x78, 0x3b, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67,
  874 + 0x2d, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x35, 0x70,
  875 + 0x78, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67,
  876 + 0x62, 0x28, 0x35, 0x35, 0x2c, 0x34, 0x39, 0x2c, 0x33, 0x36,
  877 + 0x29, 0x3b, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a,
  878 + 0x65, 0x3a, 0x31, 0x35, 0x30, 0x25, 0x3b, 0x22, 0x3e, 0x52,
  879 + 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x20, 0x43, 0x6f,
  880 + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
  881 + 0x6e, 0x3a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x20, 0xd,
  882 + 0xa, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74,
  883 + 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68,
  884 + 0x3a, 0x31, 0x35, 0x30, 0x70, 0x78, 0x3b, 0x66, 0x6c, 0x6f,
  885 + 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x63, 0x6f,
  886 + 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28, 0x35, 0x35,
  887 + 0x2c, 0x34, 0x39, 0x2c, 0x33, 0x36, 0x29, 0x3b, 0x22, 0x3e,
  888 + 0x4d, 0x6f, 0x64, 0x65, 0x3a, 0x3c, 0x2f, 0x64, 0x69, 0x76,
  889 + 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c,
  890 + 0x65, 0x3d, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x32,
  891 + 0x35, 0x30, 0x70, 0x78, 0x3b, 0x66, 0x6c, 0x6f, 0x61, 0x74,
  892 + 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f,
  893 + 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0x22, 0x3e,
  894 + 0x24, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5b,
  895 + 0x57, 0x49, 0x46, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5d,
  896 + 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64, 0x69, 0x76,
  897 + 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x63, 0x6c,
  898 + 0x65, 0x61, 0x72, 0x3a, 0x62, 0x6f, 0x74, 0x68, 0x3b, 0x22,
  899 + 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9,
  900 + 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c,
  901 + 0x65, 0x3d, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31,
  902 + 0x35, 0x30, 0x70, 0x78, 0x3b, 0x66, 0x6c, 0x6f, 0x61, 0x74,
  903 + 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f,
  904 + 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28, 0x35, 0x35, 0x2c, 0x34,
  905 + 0x39, 0x2c, 0x33, 0x36, 0x29, 0x3b, 0x22, 0x3e, 0x4e, 0x65,
  906 + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x4e, 0x61, 0x6d, 0x65,
  907 + 0x3a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64, 0x69,
  908 + 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x77,
  909 + 0x69, 0x64, 0x74, 0x68, 0x3a, 0x32, 0x35, 0x30, 0x70, 0x78,
  910 + 0x3b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66,
  911 + 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x6c,
  912 + 0x61, 0x63, 0x6b, 0x3b, 0x22, 0x3e, 0x24, 0x5f, 0x44, 0x59,
  913 + 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5b, 0x57, 0x49, 0x46, 0x49,
  914 + 0x5f, 0x53, 0x53, 0x49, 0x44, 0x5d, 0x3c, 0x2f, 0x64, 0x69,
  915 + 0x76, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79,
  916 + 0x6c, 0x65, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x3a,
  917 + 0x62, 0x6f, 0x74, 0x68, 0x3b, 0x22, 0x3e, 0x3c, 0x2f, 0x64,
  918 + 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x3c, 0x64, 0x69,
  919 + 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x77,
  920 + 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x35, 0x30, 0x70, 0x78,
  921 + 0x3b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66,
  922 + 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67,
  923 + 0x62, 0x28, 0x35, 0x35, 0x2c, 0x34, 0x39, 0x2c, 0x33, 0x36,
  924 + 0x29, 0x3b, 0x22, 0x3e, 0x50, 0x61, 0x73, 0x73, 0x70, 0x68,
  925 + 0x72, 0x61, 0x73, 0x65, 0x3a, 0x3c, 0x2f, 0x64, 0x69, 0x76,
  926 + 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c,
  927 + 0x65, 0x3d, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x32,
  928 + 0x35, 0x30, 0x70, 0x78, 0x3b, 0x66, 0x6c, 0x6f, 0x61, 0x74,
  929 + 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f,
  930 + 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0x22, 0x3e,
  931 + 0x24, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5b,
  932 + 0x57, 0x49, 0x46, 0x49, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x50,
  933 + 0x48, 0x52, 0x41, 0x53, 0x45, 0x5d, 0x3c, 0x2f, 0x64, 0x69,
  934 + 0x76, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79,
  935 + 0x6c, 0x65, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x3a,
  936 + 0x62, 0x6f, 0x74, 0x68, 0x3b, 0x22, 0x3e, 0x3c, 0x2f, 0x64,
  937 + 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x3c, 0x2f, 0x64, 0x69,
  938 + 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69,
  939 + 0x76, 0x3e, 0xd, 0xa, 0x9, 0xd, 0xa, 0x3c, 0x64, 0x69,
  940 + 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x66, 0x6f, 0x6f, 0x74,
  941 + 0x65, 0x72, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76,
  942 + 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65,
  943 + 0x64, 0x46, 0x6f, 0x6e, 0x74, 0x22, 0x3e, 0x43, 0x6f, 0x70,
  944 + 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x26, 0x63, 0x6f, 0x70,
  945 + 0x79, 0x3b, 0x32, 0x30, 0x31, 0x33, 0x3c, 0x2f, 0x64, 0x69,
  946 + 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69,
  947 + 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x2f,
  948 + 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68,
  949 + 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, };
  950 +
  951 +static const char data_en_reboot_html[] = {
  952 + /* /en_reboot.html */
  953 + 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
  954 + 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
  955 + 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
  956 + 0x2f, 0x44, 0x54, 0x44, 0x20, 0x58, 0x48, 0x54, 0x4d, 0x4c,
  957 + 0x20, 0x31, 0x2e, 0x30, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
  958 + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
  959 + 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
  960 + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
  961 + 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x78, 0x68, 0x74, 0x6d, 0x6c,
  962 + 0x31, 0x2f, 0x44, 0x54, 0x44, 0x2f, 0x78, 0x68, 0x74, 0x6d,
  963 + 0x6c, 0x31, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74,
  964 + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x64, 0x74, 0x64, 0x22,
  965 + 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x78,
  966 + 0x6d, 0x6c, 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
  967 + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e,
  968 + 0x6f, 0x72, 0x67, 0x2f, 0x31, 0x39, 0x39, 0x39, 0x2f, 0x78,
  969 + 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x3a,
  970 + 0x6c, 0x61, 0x6e, 0x67, 0x3d, 0x22, 0x65, 0x6c, 0x2d, 0x67,
  971 + 0x72, 0x22, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x3d, 0x22, 0x65,
  972 + 0x6c, 0x2d, 0x67, 0x72, 0x22, 0x20, 0x3e, 0xd, 0xa, 0xd,
  973 + 0xa, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x3c,
  974 + 0x6d, 0x65, 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d,
  975 + 0x65, 0x71, 0x75, 0x69, 0x76, 0x3d, 0x22, 0x43, 0x6f, 0x6e,
  976 + 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x22,
  977 + 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22,
  978 + 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3b,
  979 + 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x75,
  980 + 0x74, 0x66, 0x2d, 0x38, 0x22, 0x20, 0x2f, 0x3e, 0xd, 0xa,
  981 + 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d,
  982 + 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65,
  983 + 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74,
  984 + 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22, 0x20, 0x68,
  985 + 0x72, 0x65, 0x66, 0x3d, 0x22, 0x63, 0x73, 0x73, 0x2e, 0x63,
  986 + 0x73, 0x73, 0x22, 0x20, 0x2f, 0x3e, 0xd, 0xa, 0x3c, 0x74,
  987 + 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x57, 0x69, 0x53, 0x6d, 0x61,
  988 + 0x72, 0x74, 0x20, 0x57, 0x69, 0x72, 0x65, 0x6c, 0x65, 0x73,
  989 + 0x73, 0x20, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
  990 + 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xd, 0xa,
  991 + 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20,
  992 + 0xd, 0xa, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa,
  993 + 0x3c, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6d,
  994 + 0x67, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6c,
  995 + 0x6f, 0x67, 0x6f, 0x22, 0x20, 0x73, 0x72, 0x63, 0x3d, 0x22,
  996 + 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20,
  997 + 0x61, 0x6c, 0x74, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x22,
  998 + 0x20, 0x2f, 0x3e, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20,
  999 + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6c, 0x65,
  1000 + 0x61, 0x6e, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69,
  1001 + 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
  1002 + 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d,
  1003 + 0x22, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3e, 0xd,
  1004 + 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73,
  1005 + 0x73, 0x3d, 0x22, 0x62, 0x69, 0x67, 0x46, 0x6f, 0x6e, 0x74,
  1006 + 0x22, 0x3e, 0x57, 0x69, 0x53, 0x6d, 0x61, 0x72, 0x74, 0x20,
  1007 + 0x57, 0x69, 0x72, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x53,
  1008 + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x3c, 0x2f, 0x64,
  1009 + 0x69, 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76,
  1010 + 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20,
  1011 + 0x69, 0x64, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x22, 0x3e,
  1012 + 0xd, 0xa, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c,
  1013 + 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x49,
  1014 + 0x74, 0x65, 0x6d, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72,
  1015 + 0x65, 0x66, 0x3d, 0x22, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x64,
  1016 + 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x48,
  1017 + 0x6f, 0x6d, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64,
  1018 + 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x3c, 0x64, 0x69, 0x76,
  1019 + 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65,
  1020 + 0x6e, 0x75, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x3e, 0x3c, 0x61,
  1021 + 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x65, 0x6e, 0x5f,
  1022 + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x68, 0x74, 0x6d,
  1023 + 0x6c, 0x22, 0x3e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20,
  1024 + 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69,
  1025 + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28,
  1026 + 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x29, 0x3c, 0x2f, 0x61,
  1027 + 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9,
  1028 + 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
  1029 + 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x65, 0x72, 0x22,
  1030 + 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x3c,
  1031 + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c,
  1032 + 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6d, 0x61,
  1033 + 0x69, 0x6e, 0x22, 0x3e, 0xd, 0xa, 0x9, 0x3c, 0x64, 0x69,
  1034 + 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6d,
  1035 + 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x61, 0x75, 0x74, 0x6f,
  1036 + 0x3b, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67,
  1037 + 0x6e, 0x3a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0x66,
  1038 + 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a, 0x31,
  1039 + 0x30, 0x30, 0x25, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a,
  1040 + 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0x22, 0x3e, 0x50, 0x6c,
  1041 + 0x65, 0x61, 0x73, 0x65, 0x20, 0x52, 0x65, 0x62, 0x6f, 0x6f,
  1042 + 0x74, 0x20, 0x54, 0x68, 0x65, 0x20, 0x44, 0x65, 0x76, 0x69,
  1043 + 0x63, 0x65, 0x20, 0x54, 0x6f, 0x20, 0x41, 0x70, 0x70, 0x6c,
  1044 + 0x79, 0x20, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x3c,
  1045 + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x3c, 0x64,
  1046 + 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22,
  1047 + 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x3a, 0x61, 0x75, 0x74,
  1048 + 0x6f, 0x3b, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69,
  1049 + 0x67, 0x6e, 0x3a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b,
  1050 + 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65,
  1051 + 0x3d, 0x22, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x65,
  1052 + 0x64, 0x3b, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x64, 0x65, 0x63,
  1053 + 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x6e, 0x6f,
  1054 + 0x6e, 0x65, 0x3b, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69,
  1055 + 0x7a, 0x65, 0x3a, 0x31, 0x30, 0x30, 0x25, 0x3b, 0x22, 0x20,
  1056 + 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x65, 0x6e, 0x5f, 0x72,
  1057 + 0x65, 0x62, 0x6f, 0x6f, 0x74, 0x22, 0x3e, 0x52, 0x65, 0x62,
  1058 + 0x6f, 0x6f, 0x74, 0x21, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c,
  1059 + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64,
  1060 + 0x69, 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x64, 0x69,
  1061 + 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x66, 0x6f, 0x6f, 0x74,
  1062 + 0x65, 0x72, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76,
  1063 + 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65,
  1064 + 0x64, 0x46, 0x6f, 0x6e, 0x74, 0x22, 0x3e, 0x43, 0x6f, 0x70,
  1065 + 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x26, 0x63, 0x6f, 0x70,
  1066 + 0x79, 0x3b, 0x32, 0x30, 0x31, 0x33, 0x3c, 0x2f, 0x64, 0x69,
  1067 + 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
  1068 + 0xd, 0xa, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79,
  1069 + 0x3e, 0xd, 0xa, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x2f, 0x68,
  1070 + 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, };
  1071 +
  1072 +static const char data_en_rebooting_html[] = {
  1073 + /* /en_rebooting.html */
  1074 + 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
  1075 + 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
  1076 + 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
  1077 + 0x2f, 0x44, 0x54, 0x44, 0x20, 0x58, 0x48, 0x54, 0x4d, 0x4c,
  1078 + 0x20, 0x31, 0x2e, 0x30, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
  1079 + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
  1080 + 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
  1081 + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
  1082 + 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x78, 0x68, 0x74, 0x6d, 0x6c,
  1083 + 0x31, 0x2f, 0x44, 0x54, 0x44, 0x2f, 0x78, 0x68, 0x74, 0x6d,
  1084 + 0x6c, 0x31, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74,
  1085 + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x64, 0x74, 0x64, 0x22,
  1086 + 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x20, 0x78,
  1087 + 0x6d, 0x6c, 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
  1088 + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e,
  1089 + 0x6f, 0x72, 0x67, 0x2f, 0x31, 0x39, 0x39, 0x39, 0x2f, 0x78,
  1090 + 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x3a,
  1091 + 0x6c, 0x61, 0x6e, 0x67, 0x3d, 0x22, 0x65, 0x6c, 0x2d, 0x67,
  1092 + 0x72, 0x22, 0x20, 0x6c, 0x61, 0x6e, 0x67, 0x3d, 0x22, 0x65,
  1093 + 0x6c, 0x2d, 0x67, 0x72, 0x22, 0x20, 0x3e, 0xd, 0xa, 0xd,
  1094 + 0xa, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x3c,
  1095 + 0x6d, 0x65, 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d,
  1096 + 0x65, 0x71, 0x75, 0x69, 0x76, 0x3d, 0x22, 0x43, 0x6f, 0x6e,
  1097 + 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x22,
  1098 + 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3d, 0x22,
  1099 + 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3b,
  1100 + 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3d, 0x75,
  1101 + 0x74, 0x66, 0x2d, 0x38, 0x22, 0x20, 0x2f, 0x3e, 0xd, 0xa,
  1102 + 0x3c, 0x6c, 0x69, 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d,
  1103 + 0x22, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65,
  1104 + 0x74, 0x22, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74,
  1105 + 0x65, 0x78, 0x74, 0x2f, 0x63, 0x73, 0x73, 0x22, 0x20, 0x68,
  1106 + 0x72, 0x65, 0x66, 0x3d, 0x22, 0x63, 0x73, 0x73, 0x2e, 0x63,
  1107 + 0x73, 0x73, 0x22, 0x20, 0x2f, 0x3e, 0xd, 0xa, 0x3c, 0x74,
  1108 + 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x57, 0x69, 0x53, 0x6d, 0x61,
  1109 + 0x72, 0x74, 0x20, 0x57, 0x69, 0x72, 0x65, 0x6c, 0x65, 0x73,
  1110 + 0x73, 0x20, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
  1111 + 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xd, 0xa,
  1112 + 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xd, 0xa, 0x20,
  1113 + 0xd, 0xa, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa,
  1114 + 0x3c, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x69, 0x6d,
  1115 + 0x67, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6c,
  1116 + 0x6f, 0x67, 0x6f, 0x22, 0x73, 0x72, 0x63, 0x3d, 0x22, 0x6c,
  1117 + 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x20, 0x61,
  1118 + 0x6c, 0x74, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x22, 0x20,
  1119 + 0x2f, 0x3e, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63,
  1120 + 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61,
  1121 + 0x6e, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76,
  1122 + 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd,
  1123 + 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22,
  1124 + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3e, 0xd, 0xa,
  1125 + 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
  1126 + 0x3d, 0x22, 0x62, 0x69, 0x67, 0x46, 0x6f, 0x6e, 0x74, 0x22,
  1127 + 0x3e, 0x57, 0x69, 0x53, 0x6d, 0x61, 0x72, 0x74, 0x20, 0x57,
  1128 + 0x69, 0x72, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x53, 0x65,
  1129 + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x3c, 0x2f, 0x64, 0x69,
  1130 + 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
  1131 + 0xd, 0xa, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69,
  1132 + 0x64, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x22, 0x3e, 0xd,
  1133 + 0xa, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61,
  1134 + 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x49, 0x74,
  1135 + 0x65, 0x6d, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
  1136 + 0x66, 0x3d, 0x22, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65,
  1137 + 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x48, 0x6f,
  1138 + 0x6d, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x64, 0x69,
  1139 + 0x76, 0x3e, 0xd, 0xa, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20,
  1140 + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6c, 0x65,
  1141 + 0x61, 0x6e, 0x65, 0x72, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69,
  1142 + 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
  1143 + 0xd, 0xa, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69,
  1144 + 0x64, 0x3d, 0x22, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x3e, 0xd,
  1145 + 0xa, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79,
  1146 + 0x6c, 0x65, 0x3d, 0x22, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e,
  1147 + 0x3a, 0x61, 0x75, 0x74, 0x6f, 0x3b, 0x74, 0x65, 0x78, 0x74,
  1148 + 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x63, 0x65, 0x6e,
  1149 + 0x74, 0x65, 0x72, 0x3b, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73,
  1150 + 0x69, 0x7a, 0x65, 0x3a, 0x31, 0x32, 0x30, 0x25, 0x3b, 0x63,
  1151 + 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b,
  1152 + 0x3b, 0x22, 0x3e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20,
  1153 + 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x62, 0x6f, 0x6f,
  1154 + 0x74, 0x20, 0x69, 0x6e, 0x20, 0x35, 0x20, 0x73, 0x65, 0x63,
  1155 + 0x6f, 0x6e, 0x64, 0x73, 0x2e, 0x20, 0x50, 0x6c, 0x65, 0x61,
  1156 + 0x73, 0x65, 0x20, 0x57, 0x61, 0x69, 0x74, 0x2e, 0x20, 0x3c,
  1157 + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64,
  1158 + 0x69, 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x64, 0x69,
  1159 + 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x66, 0x6f, 0x6f, 0x74,
  1160 + 0x65, 0x72, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76,
  1161 + 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65,
  1162 + 0x64, 0x46, 0x6f, 0x6e, 0x74, 0x22, 0x3e, 0x43, 0x6f, 0x70,
  1163 + 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x26, 0x63, 0x6f, 0x70,
  1164 + 0x79, 0x3b, 0x32, 0x30, 0x31, 0x33, 0x3c, 0x2f, 0x64, 0x69,
  1165 + 0x76, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
  1166 + 0xd, 0xa, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79,
  1167 + 0x3e, 0xd, 0xa, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x2f, 0x68,
  1168 + 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, };
  1169 +
  1170 +static const char data_logo_png[] = {
  1171 + /* /logo.png */
  1172 + 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00,
  1173 + 00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x18,
  1174 + 00, 00, 00, 0x18, 0x8, 0x6, 00, 00, 00, 0xe0,
  1175 + 0x77, 0x3d, 0xf8, 00, 00, 00, 0x6, 0x62, 0x4b, 0x47,
  1176 + 0x44, 00, 0xff, 00, 0xff, 00, 0xff, 0xa0, 0xbd, 0xa7,
  1177 + 0x93, 00, 00, 0x1, 0x99, 0x49, 0x44, 0x41, 0x54, 0x48,
  1178 + 0x89, 0xd5, 0xd4, 0xbd, 0x6b, 0x15, 0x51, 0x10, 0x5, 0xf0,
  1179 + 0x9f, 0x26, 0x20, 0x18, 0x9b, 0x80, 0x21, 0x85, 0x26, 0xa4,
  1180 + 0x10, 0xb, 0x51, 0x8, 0x7e, 0x17, 0x96, 0xf, 0xff, 00,
  1181 + 0x85, 0x54, 0x62, 0x4a, 0x7b, 0x41, 0xb4, 0xb4, 0x51, 0x23,
  1182 + 0x18, 0xb0, 0xd2, 0xd2, 0x42, 0xcb, 0x60, 0x82, 0x85, 0x20,
  1183 + 0x51, 0x6c, 0x6c, 0x14, 0xab, 0x10, 0xd2, 0x24, 0x90, 0x10,
  1184 + 0x41, 0x10, 0x91, 0x14, 0x6a, 0xfc, 0x42, 0x9f, 0xc5, 0x9d,
  1185 + 0xe7, 0x5b, 0xd7, 0xd, 0x6f, 0xef, 0x8b, 0x16, 0x1e, 0x18,
  1186 + 0x76, 0xef, 0x9d, 0x99, 0x73, 0xf6, 0xce, 0xce, 0x5c, 0xfe,
  1187 + 0x31, 0xb6, 0x64, 0xc4, 0x36, 0xc2, 0xe0, 0x71, 0x58, 0x47,
  1188 + 0xf4, 0x66, 0x8, 0x9c, 0xc0, 0xc5, 0x78, 0xff, 0x5c, 0x57,
  1189 + 0x60, 0x6b, 0x86, 0x40, 0x57, 0xf8, 0xff, 0x5, 0x3a, 0x61,
  1190 + 0xf, 0x5e, 0xa1, 0xb9, 0x81, 0xad, 0x46, 0xcc, 0xa6, 0x30,
  1191 + 0x8c, 0xa5, 0xa, 0xf2, 0x25, 0xc, 0x6d, 0x96, 0xbc, 0x85,
  1192 + 0xa1, 0x92, 0xc8, 0xe2, 0xdf, 0x24, 0x2f, 0x8a, 0x2c, 0x86,
  1193 + 0xed, 0xae, 0x9b, 0x94, 0x33, 0x68, 0x30, 0x12, 0xcf, 0x15,
  1194 + 0x69, 0x86, 0x8e, 0x61, 0x14, 0x7d, 0x78, 0x8d, 0x59, 0xbc,
  1195 + 0xc9, 0xe4, 0xac, 0xc4, 0x29, 0x2c, 0xfb, 0xf3, 0xbf, 0x7c,
  1196 + 0xc7, 0x5d, 0xc, 0x94, 0x13, 0x2e, 0x57, 0x4, 0x77, 0xb2,
  1197 + 0x97, 0x18, 0xc3, 0x4e, 0xf4, 0xe3, 00, 0x26, 0xf1, 0x49,
  1198 + 0x45, 0x3, 0xe4, 0xa, 0xdc, 0xd1, 0xbe, 0x66, 0x1a, 0x98,
  1199 + 0x28, 0x70, 0x1d, 0xc5, 0x1a, 0x5e, 0xa0, 0xa7, 0x1b, 0x81,
  1200 + 0xe7, 0x91, 0x78, 0x12, 0x57, 0x71, 0x33, 0xf6, 0xf, 0x45,
  1201 + 0x79, 0xfa, 0xa2, 0x84, 0x4d, 0x8c, 0x97, 0x5, 0x8a, 0xd8,
  1202 + 0x48, 0xe0, 0x74, 0xf8, 0x27, 0x2b, 0x7c, 0x6f, 0xb1, 0x2f,
  1203 + 0xfc, 0xb, 0x98, 0x2d, 0xdf, 0xa6, 0x13, 0x3a, 0xe3, 0xa9,
  1204 + 0x54, 0x96, 0x1d, 0xb1, 0xbe, 0x82, 0x7, 0x98, 0xc2, 0x7b,
  1205 + 0x9c, 0xc5, 0xa5, 0x88, 0x1b, 0x2b, 0x9f, 0xa0, 0x8e, 0x6d,
  1206 + 0x2b, 0xc5, 0x1f, 0x9, 0x8e, 0x87, 0x85, 0x3d, 0xb8, 0x8e,
  1207 + 0xf5, 0x1a, 0x1f, 0xfc, 0xb, 0x67, 0x22, 0x79, 0x7f, 0xac,
  1208 + 0x8f, 0xc7, 0x7a, 0x25, 0xc8, 0x7f, 0xe0, 0x91, 0xf6, 0x6c,
  1209 + 0x4d, 0x4b, 0x43, 0x59, 0x1b, 0xbb, 0xf0, 0xd, 0xd7, 0x62,
  1210 + 0x7d, 0x4f, 0xaa, 0xf9, 0x7c, 0x8, 0x3d, 0x9, 0xff, 0x61,
  1211 + 0xc, 0xe2, 0x3, 0x6e, 0xe5, 0x8, 0x90, 0xba, 0x64, 0x1d,
  1212 + 0x7, 0xb1, 0x1d, 0x7b, 0xfd, 0xde, 0x20, 0xa3, 0x71, 0x82,
  1213 + 0x29, 0x7c, 0xd, 0x7f, 0x16, 0x6, 0xa4, 0x21, 0x7a, 0xa7,
  1214 + 0xdd, 0x4d, 0x45, 0xc, 0xe2, 0x7e, 0x8, 0x5e, 0xc8, 0x25,
  1215 + 0x6f, 0x61, 0x58, 0x1a, 0xa2, 0x26, 0xe6, 0x70, 0x1b, 0x37,
  1216 + 0x30, 0x23, 0x75, 0xd1, 0x17, 0x9c, 0xef, 0x96, 0xbc, 0x85,
  1217 + 0x5e, 0x9c, 0xc3, 0x33, 0x7c, 0x94, 0xca, 0xb1, 0x10, 0x42,
  1218 + 0x23, 0xc5, 0xc0, 0x9f, 0x54, 0xf1, 0x9e, 0xda, 0xdb, 0x57,
  1219 + 0x6c, 0xb, 00, 00, 00, 00, 0x49, 0x45, 0x4e, 0x44,
  1220 + 0xae, 0x42, 0x60, 0x82, };
  1221 +
  1222 +#define FS_NUMFILES 6