From: server Date: Mon, 20 Jan 2025 21:20:50 +0000 (-0500) Subject: Mon Jan 20 04:20:50 PM EST 2025 X-Git-Url: http://www.foleosoft.com/?a=commitdiff_plain;h=f56660c526401ec13f3e771a8220df6a692d293b;p=RosadoAPI.git Mon Jan 20 04:20:50 PM EST 2025 --- diff --git a/build.sh b/build.sh index 352afca..d2fb72b 100644 --- a/build.sh +++ b/build.sh @@ -1,20 +1,22 @@ #!/bin/bash +set -e if [ "$1" == "run" ] then while [ 1 ] do - ./bin/rosado + ./bin/rosado-api done elif [ "$1" = "install" ] then - sudo cp bin/rosado /usr/local/bin/rosado + sudo cp bin/rosado-api /usr/local/bin/rosado-api elif [ "$1" = "uninstall" ] then - sudo rm /usr/local/bin/rosado + sudo rm /usr/local/bin/rosado-api else + uglifyjs src/www/rosado-api.js -o src/www/rosado-api.min.js cat src/www/frontend.html | xxd -i > src/frontend.h - cat src/www/rosado-api.js | xxd -i > src/javascript.h + cat src/www/rosado-api.min.js | xxd -i > src/javascript.h cat src/www/favicon.ico | xxd -i > src/favicon.h - gcc ./src/main.c -o ./bin/rosado $(mysql_config --cflags --libs) -lCryptoFoleo + gcc ./src/main.c -o ./bin/rosado-api $(mysql_config --cflags --libs) -lCryptoFoleo rm ./src/frontend.h fi diff --git a/src/http.c b/src/http.c index 6316f77..b62247c 100644 --- a/src/http.c +++ b/src/http.c @@ -234,59 +234,69 @@ void httpError(int session_fd, int error, char *msg) free(page); } -int httpFileOut(int session_fd, char* path, uint8_t fileType) +int httpFileOut(int session_fd, char* path, const char* fileType, size_t bufferSize) { - char* safePath; - int safePathLen; - int pathLen = strlen(path); - if (pathLen == 0) return 0; - if (path[0] == '/') + char* fileData; + size_t fileSize; + if (bufferSize == 0) { - safePath = malloc(1); - safePath[0] = '.'; - safePathLen = 1; - } - else - { - safePath = malloc(0); - safePathLen = 0; - } - for (int i = 0; i < pathLen; i++) - { - if (i > 0 && path[i] == '.') + char* safePath; + int safePathLen; + int pathLen = strlen(path); + if (pathLen == 0) return 0; + if (path[0] == '/') { - if (path[i - 1] == '/' || path[i - 1] == '.') - { - continue; - } + safePath = malloc(1); + safePath[0] = '.'; + safePathLen = 1; } - if (path[i] == '/' && safePathLen > 0) + else { - if (safePath[safePathLen - 1] == '/') + safePath = malloc(0); + safePathLen = 0; + } + for (int i = 0; i < pathLen; i++) + { + if (i > 0 && path[i] == '.') + { + if (path[i - 1] == '/' || path[i - 1] == '.') + { + continue; + } + } + if (path[i] == '/' && safePathLen > 0) { - continue; + if (safePath[safePathLen - 1] == '/') + { + continue; + } } + safePath = realloc(safePath, ++safePathLen); + safePath[safePathLen - 1] = path[i]; } safePath = realloc(safePath, ++safePathLen); - safePath[safePathLen - 1] = path[i]; - } - safePath = realloc(safePath, ++safePathLen); - safePath[safePathLen - 1] = 0; + safePath[safePathLen - 1] = 0; - FILE *fd = fopen(safePath, "r"); - free(safePath); - if (fd == NULL) + FILE *fd = fopen(safePath, "r"); + free(safePath); + if (fd == NULL) + { + httpError(session_fd, 404, "Page Not Found"); + return 1; + } + fseek(fd, 0, SEEK_END); + size_t fileSize = ftell(fd); + rewind(fd); + char* fileData = malloc(fileSize); + fread(fileData, 1, fileSize, fd); + fclose(fd); + } + else { - httpError(session_fd, 404, "Page Not Found"); - return 1; + fileSize = bufferSize; + fileData = malloc(fileSize); + memcpy(fileData, path, fileSize); } - fseek(fd, 0, SEEK_END); - size_t fileSize = ftell(fd); - rewind(fd); - char* fileData = malloc(fileSize); - fread(fileData, 1, fileSize, fd); - fclose(fd); - if (fileSize < 0) { @@ -299,35 +309,21 @@ int httpFileOut(int session_fd, char* path, uint8_t fileType) httpRespond(session_fd, HTTP_SERVER); //Spit out file content length part of the HTTP message - char* contentLengthTemplate; - const char contentLengthTemplate0[] = "Access-Control-Allow-Origin: *\nContent-Type: application/octet-stream\nContent-Length: %i\n\n"; - const char contentLengthTemplate1[] = "Access-Control-Allow-Origin: *\nContent-Type: image/x-icon\nContent-Length: %i\n\n"; - switch (fileType) - { - case 0: - contentLengthTemplate = malloc(strlen(contentLengthTemplate0) + 1); - strcpy(contentLengthTemplate, contentLengthTemplate0); - break; - case 1: - contentLengthTemplate = malloc(strlen(contentLengthTemplate1) + 1); - strcpy(contentLengthTemplate, contentLengthTemplate1); - break; - } - size_t contentLengthLen = snprintf(NULL, 0, contentLengthTemplate, fileSize); + const char contentLengthTemplate[] = "Access-Control-Allow-Origin: *\nContent-Type: %s\nContent-Length: %i\n\n"; + size_t contentLengthLen = snprintf(NULL, 0, contentLengthTemplate, fileType, fileSize); char* contentLength = malloc(contentLengthLen + 1); - sprintf(contentLength, contentLengthTemplate, fileSize); + sprintf(contentLength, contentLengthTemplate, fileType, fileSize); httpRespond(session_fd, contentLength); free(contentLength); for (size_t i = 0; i < fileSize; i++) { if (i == 0) { - printf(">%02X<\n", fileData[i]); + //printf(">%02X<\n", fileData[i]); } httpRespondByte(session_fd, fileData[i]); } free(fileData); - free(contentLengthTemplate); } int httpStringOut(int session_fd, char* str) diff --git a/src/javascript.h b/src/javascript.h index 3c232cd..86d188a 100644 --- a/src/javascript.h +++ b/src/javascript.h @@ -1,810 +1,590 @@ 0x76, 0x61, 0x72, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, - 0x49, 0x20, 0x3d, 0x0a, 0x7b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x3a, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, - 0x65, 0x64, 0x2c, 0x0a, 0x09, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x3a, - 0x20, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x2c, 0x0a, - 0x09, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3a, 0x20, 0x75, - 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x2c, 0x0a, 0x0a, 0x09, - 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x3a, 0x0a, 0x09, 0x7b, 0x0a, 0x09, - 0x09, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x3a, 0x20, 0x61, 0x20, 0x3d, 0x3e, - 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x77, 0x68, 0x69, 0x6c, - 0x65, 0x20, 0x28, 0x61, 0x20, 0x3c, 0x20, 0x30, 0x20, 0x7c, 0x7c, 0x20, - 0x61, 0x20, 0x3e, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, - 0x46, 0x46, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x61, 0x20, 0x2b, 0x3d, - 0x20, 0x61, 0x20, 0x3c, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x30, 0x78, 0x31, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x3a, 0x20, 0x2d, - 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3b, - 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, - 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x2c, 0x0a, 0x09, 0x09, 0x73, 0x68, 0x6c, - 0x3a, 0x20, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x20, 0x3d, 0x3e, 0x20, - 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, - 0x74, 0x68, 0x33, 0x32, 0x2e, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x61, - 0x20, 0x3c, 0x3c, 0x20, 0x62, 0x29, 0x2c, 0x0a, 0x09, 0x09, 0x73, 0x68, - 0x72, 0x3a, 0x20, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x20, 0x3d, 0x3e, - 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, - 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, - 0x61, 0x20, 0x3e, 0x3e, 0x3e, 0x20, 0x62, 0x29, 0x2c, 0x0a, 0x09, 0x09, - 0x72, 0x74, 0x6c, 0x3a, 0x20, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x20, - 0x3d, 0x3e, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, - 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x63, 0x6c, 0x61, 0x6d, - 0x70, 0x28, 0x28, 0x61, 0x20, 0x3c, 0x3c, 0x20, 0x62, 0x29, 0x20, 0x7c, - 0x20, 0x28, 0x61, 0x20, 0x3e, 0x3e, 0x3e, 0x20, 0x28, 0x33, 0x32, 0x20, - 0x2d, 0x20, 0x62, 0x29, 0x29, 0x29, 0x2c, 0x0a, 0x09, 0x09, 0x72, 0x74, - 0x72, 0x3a, 0x20, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x20, 0x3d, 0x3e, - 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, - 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, - 0x28, 0x61, 0x20, 0x3e, 0x3e, 0x3e, 0x20, 0x62, 0x29, 0x20, 0x7c, 0x20, - 0x28, 0x61, 0x20, 0x3c, 0x3c, 0x20, 0x28, 0x33, 0x32, 0x20, 0x2d, 0x20, - 0x62, 0x29, 0x29, 0x29, 0x2c, 0x0a, 0x09, 0x09, 0x61, 0x64, 0x64, 0x3a, - 0x20, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x52, + 0x49, 0x3d, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x3a, + 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x2c, 0x61, 0x70, + 0x69, 0x6b, 0x65, 0x79, 0x3a, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x65, 0x64, 0x2c, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3a, + 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x2c, 0x4d, 0x61, + 0x74, 0x68, 0x33, 0x32, 0x3a, 0x7b, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x3a, + 0x61, 0x3d, 0x3e, 0x7b, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x61, 0x3c, + 0x30, 0x7c, 0x7c, 0x61, 0x3e, 0x34, 0x32, 0x39, 0x34, 0x39, 0x36, 0x37, + 0x32, 0x39, 0x35, 0x29, 0x61, 0x2b, 0x3d, 0x61, 0x3c, 0x30, 0x3f, 0x34, + 0x32, 0x39, 0x34, 0x39, 0x36, 0x37, 0x32, 0x39, 0x36, 0x3a, 0x2d, 0x34, + 0x32, 0x39, 0x34, 0x39, 0x36, 0x37, 0x32, 0x39, 0x36, 0x3b, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x7d, 0x2c, 0x73, 0x68, 0x6c, 0x3a, + 0x28, 0x61, 0x2c, 0x62, 0x29, 0x3d, 0x3e, 0x52, 0x6f, 0x73, 0x61, 0x64, + 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, + 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x61, 0x3c, 0x3c, 0x62, 0x29, 0x2c, + 0x73, 0x68, 0x72, 0x3a, 0x28, 0x61, 0x2c, 0x62, 0x29, 0x3d, 0x3e, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, - 0x68, 0x33, 0x32, 0x2e, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x61, 0x20, - 0x2b, 0x20, 0x62, 0x29, 0x2c, 0x0a, 0x09, 0x09, 0x73, 0x75, 0x62, 0x3a, - 0x20, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x52, + 0x68, 0x33, 0x32, 0x2e, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x61, 0x3e, + 0x3e, 0x3e, 0x62, 0x29, 0x2c, 0x72, 0x74, 0x6c, 0x3a, 0x28, 0x61, 0x2c, + 0x62, 0x29, 0x3d, 0x3e, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, + 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x63, 0x6c, 0x61, + 0x6d, 0x70, 0x28, 0x61, 0x3c, 0x3c, 0x62, 0x7c, 0x61, 0x3e, 0x3e, 0x3e, + 0x33, 0x32, 0x2d, 0x62, 0x29, 0x2c, 0x72, 0x74, 0x72, 0x3a, 0x28, 0x61, + 0x2c, 0x62, 0x29, 0x3d, 0x3e, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, + 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x63, 0x6c, + 0x61, 0x6d, 0x70, 0x28, 0x61, 0x3e, 0x3e, 0x3e, 0x62, 0x7c, 0x61, 0x3c, + 0x3c, 0x33, 0x32, 0x2d, 0x62, 0x29, 0x2c, 0x61, 0x64, 0x64, 0x3a, 0x28, + 0x61, 0x2c, 0x62, 0x29, 0x3d, 0x3e, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, + 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x63, + 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x61, 0x2b, 0x62, 0x29, 0x2c, 0x73, 0x75, + 0x62, 0x3a, 0x28, 0x61, 0x2c, 0x62, 0x29, 0x3d, 0x3e, 0x52, 0x6f, 0x73, + 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, + 0x32, 0x2e, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x61, 0x2b, 0x62, 0x29, + 0x2c, 0x6f, 0x72, 0x3a, 0x28, 0x61, 0x2c, 0x62, 0x29, 0x3d, 0x3e, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, - 0x68, 0x33, 0x32, 0x2e, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x61, 0x20, - 0x2b, 0x20, 0x62, 0x29, 0x2c, 0x0a, 0x09, 0x09, 0x6f, 0x72, 0x3a, 0x20, - 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x52, 0x6f, - 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, - 0x33, 0x32, 0x2e, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x61, 0x20, 0x7c, - 0x20, 0x62, 0x29, 0x2c, 0x0a, 0x09, 0x09, 0x78, 0x6f, 0x72, 0x3a, 0x20, - 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x52, 0x6f, + 0x68, 0x33, 0x32, 0x2e, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x61, 0x7c, + 0x62, 0x29, 0x2c, 0x78, 0x6f, 0x72, 0x3a, 0x28, 0x61, 0x2c, 0x62, 0x29, + 0x3d, 0x3e, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, + 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x63, 0x6c, 0x61, 0x6d, 0x70, + 0x28, 0x61, 0x5e, 0x62, 0x29, 0x7d, 0x2c, 0x48, 0x4d, 0x41, 0x43, 0x53, + 0x48, 0x41, 0x32, 0x35, 0x36, 0x3a, 0x7b, 0x73, 0x69, 0x67, 0x6e, 0x3a, + 0x61, 0x73, 0x79, 0x6e, 0x63, 0x28, 0x6b, 0x65, 0x79, 0x2c, 0x6d, 0x73, + 0x67, 0x29, 0x3d, 0x3e, 0x7b, 0x6b, 0x65, 0x79, 0x3d, 0x6e, 0x65, 0x77, + 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, + 0x6b, 0x65, 0x79, 0x29, 0x3b, 0x6d, 0x73, 0x67, 0x3d, 0x6e, 0x65, 0x77, + 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, + 0x6d, 0x73, 0x67, 0x29, 0x3b, 0x76, 0x61, 0x72, 0x20, 0x69, 0x6b, 0x65, + 0x79, 0x3d, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x6f, 0x2e, 0x73, 0x75, 0x62, 0x74, 0x6c, 0x65, 0x2e, 0x69, 0x6d, + 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x65, 0x79, 0x28, 0x22, 0x72, 0x61, 0x77, + 0x22, 0x2c, 0x6b, 0x65, 0x79, 0x2c, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3a, + 0x22, 0x48, 0x4d, 0x41, 0x43, 0x22, 0x2c, 0x68, 0x61, 0x73, 0x68, 0x3a, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x22, 0x53, 0x48, 0x41, 0x2d, 0x32, + 0x35, 0x36, 0x22, 0x7d, 0x7d, 0x2c, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, + 0x5b, 0x22, 0x73, 0x69, 0x67, 0x6e, 0x22, 0x2c, 0x22, 0x76, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x22, 0x5d, 0x29, 0x3b, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x28, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x77, + 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x2e, 0x73, 0x75, 0x62, 0x74, 0x6c, 0x65, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x28, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x22, 0x48, 0x4d, 0x41, 0x43, + 0x22, 0x7d, 0x2c, 0x69, 0x6b, 0x65, 0x79, 0x2c, 0x6d, 0x73, 0x67, 0x29, + 0x29, 0x7d, 0x7d, 0x2c, 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, + 0x3a, 0x7b, 0x51, 0x52, 0x3a, 0x28, 0x63, 0x63, 0x2c, 0x61, 0x2c, 0x62, + 0x2c, 0x63, 0x2c, 0x64, 0x29, 0x3d, 0x3e, 0x7b, 0x63, 0x63, 0x5b, 0x61, + 0x5d, 0x3d, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, + 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x61, 0x64, 0x64, 0x28, 0x63, + 0x63, 0x5b, 0x61, 0x5d, 0x2c, 0x63, 0x63, 0x5b, 0x62, 0x5d, 0x29, 0x3b, + 0x63, 0x63, 0x5b, 0x64, 0x5d, 0x3d, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, + 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x78, + 0x6f, 0x72, 0x28, 0x63, 0x63, 0x5b, 0x64, 0x5d, 0x2c, 0x63, 0x63, 0x5b, + 0x61, 0x5d, 0x29, 0x3b, 0x63, 0x63, 0x5b, 0x64, 0x5d, 0x3d, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, - 0x33, 0x32, 0x2e, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x61, 0x20, 0x5e, - 0x20, 0x62, 0x29, 0x0a, 0x09, 0x7d, 0x2c, 0x0a, 0x09, 0x48, 0x4d, 0x41, - 0x43, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x3a, 0x0a, 0x09, 0x7b, 0x0a, - 0x09, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x3a, 0x20, 0x61, 0x73, 0x79, 0x6e, - 0x63, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x2c, 0x20, 0x6d, 0x73, 0x67, 0x29, - 0x20, 0x3d, 0x3e, 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x6b, - 0x65, 0x79, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, - 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x6b, 0x65, 0x79, 0x29, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x6d, 0x73, 0x67, 0x20, 0x3d, 0x20, 0x6e, - 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x28, 0x6d, 0x73, 0x67, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x76, - 0x61, 0x72, 0x20, 0x69, 0x6b, 0x65, 0x79, 0x20, 0x3d, 0x20, 0x61, 0x77, - 0x61, 0x69, 0x74, 0x20, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x73, - 0x75, 0x62, 0x74, 0x6c, 0x65, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, - 0x4b, 0x65, 0x79, 0x0a, 0x09, 0x09, 0x09, 0x28, 0x0a, 0x09, 0x09, 0x09, - 0x09, 0x22, 0x72, 0x61, 0x77, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x09, - 0x6b, 0x65, 0x79, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x7b, 0x20, 0x6e, - 0x61, 0x6d, 0x65, 0x3a, 0x20, 0x22, 0x48, 0x4d, 0x41, 0x43, 0x22, 0x2c, - 0x20, 0x68, 0x61, 0x73, 0x68, 0x3a, 0x20, 0x7b, 0x20, 0x6e, 0x61, 0x6d, - 0x65, 0x3a, 0x20, 0x22, 0x53, 0x48, 0x41, 0x2d, 0x32, 0x35, 0x36, 0x22, - 0x20, 0x7d, 0x7d, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x66, 0x61, 0x6c, - 0x73, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x5b, 0x22, 0x73, 0x69, - 0x67, 0x6e, 0x22, 0x2c, 0x20, 0x22, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x22, 0x5d, 0x0a, 0x09, 0x09, 0x09, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x55, - 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x61, 0x77, - 0x61, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x73, 0x75, 0x62, 0x74, 0x6c, 0x65, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x28, 0x7b, 0x20, 0x6e, 0x61, 0x6d, 0x65, - 0x3a, 0x20, 0x22, 0x48, 0x4d, 0x41, 0x43, 0x22, 0x2c, 0x20, 0x7d, 0x2c, - 0x20, 0x69, 0x6b, 0x65, 0x79, 0x2c, 0x20, 0x6d, 0x73, 0x67, 0x29, 0x29, - 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, 0x2c, 0x0a, 0x09, 0x43, - 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x3a, 0x0a, 0x09, 0x7b, 0x0a, - 0x09, 0x09, 0x51, 0x52, 0x3a, 0x20, 0x28, 0x63, 0x63, 0x2c, 0x20, 0x61, - 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x63, 0x2c, 0x20, 0x64, 0x29, 0x20, 0x3d, - 0x3e, 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x63, 0x5b, - 0x61, 0x5d, 0x20, 0x3d, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, - 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x61, 0x64, - 0x64, 0x28, 0x63, 0x63, 0x5b, 0x61, 0x5d, 0x2c, 0x20, 0x63, 0x63, 0x5b, - 0x62, 0x5d, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x63, 0x5b, 0x64, - 0x5d, 0x20, 0x3d, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, - 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x78, 0x6f, 0x72, - 0x28, 0x63, 0x63, 0x5b, 0x64, 0x5d, 0x2c, 0x20, 0x63, 0x63, 0x5b, 0x61, - 0x5d, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x63, 0x5b, 0x64, 0x5d, - 0x20, 0x3d, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, - 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x72, 0x74, 0x6c, 0x28, - 0x63, 0x63, 0x5b, 0x64, 0x5d, 0x2c, 0x20, 0x31, 0x36, 0x29, 0x3b, 0x0a, - 0x0a, 0x09, 0x09, 0x09, 0x63, 0x63, 0x5b, 0x63, 0x5d, 0x20, 0x3d, 0x20, - 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, - 0x74, 0x68, 0x33, 0x32, 0x2e, 0x61, 0x64, 0x64, 0x28, 0x63, 0x63, 0x5b, - 0x63, 0x5d, 0x2c, 0x20, 0x63, 0x63, 0x5b, 0x64, 0x5d, 0x29, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x63, 0x63, 0x5b, 0x62, 0x5d, 0x20, 0x3d, 0x20, 0x52, + 0x33, 0x32, 0x2e, 0x72, 0x74, 0x6c, 0x28, 0x63, 0x63, 0x5b, 0x64, 0x5d, + 0x2c, 0x31, 0x36, 0x29, 0x3b, 0x63, 0x63, 0x5b, 0x63, 0x5d, 0x3d, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, - 0x68, 0x33, 0x32, 0x2e, 0x78, 0x6f, 0x72, 0x28, 0x63, 0x63, 0x5b, 0x62, - 0x5d, 0x2c, 0x20, 0x63, 0x63, 0x5b, 0x63, 0x5d, 0x29, 0x3b, 0x0a, 0x09, - 0x09, 0x09, 0x63, 0x63, 0x5b, 0x62, 0x5d, 0x20, 0x3d, 0x20, 0x52, 0x6f, - 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, - 0x33, 0x32, 0x2e, 0x72, 0x74, 0x6c, 0x28, 0x63, 0x63, 0x5b, 0x62, 0x5d, - 0x2c, 0x20, 0x31, 0x32, 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x63, - 0x63, 0x5b, 0x61, 0x5d, 0x20, 0x3d, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, + 0x68, 0x33, 0x32, 0x2e, 0x61, 0x64, 0x64, 0x28, 0x63, 0x63, 0x5b, 0x63, + 0x5d, 0x2c, 0x63, 0x63, 0x5b, 0x64, 0x5d, 0x29, 0x3b, 0x63, 0x63, 0x5b, + 0x62, 0x5d, 0x3d, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, + 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x78, 0x6f, 0x72, 0x28, + 0x63, 0x63, 0x5b, 0x62, 0x5d, 0x2c, 0x63, 0x63, 0x5b, 0x63, 0x5d, 0x29, + 0x3b, 0x63, 0x63, 0x5b, 0x62, 0x5d, 0x3d, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, - 0x61, 0x64, 0x64, 0x28, 0x63, 0x63, 0x5b, 0x61, 0x5d, 0x2c, 0x20, 0x63, - 0x63, 0x5b, 0x62, 0x5d, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x63, - 0x5b, 0x64, 0x5d, 0x20, 0x3d, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, - 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x78, - 0x6f, 0x72, 0x28, 0x63, 0x63, 0x5b, 0x64, 0x5d, 0x2c, 0x20, 0x63, 0x63, - 0x5b, 0x61, 0x5d, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x63, 0x5b, - 0x64, 0x5d, 0x20, 0x3d, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, - 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x72, 0x74, - 0x6c, 0x28, 0x63, 0x63, 0x5b, 0x64, 0x5d, 0x2c, 0x20, 0x38, 0x29, 0x3b, - 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x63, 0x5b, 0x63, 0x5d, 0x20, 0x3d, - 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, - 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x61, 0x64, 0x64, 0x28, 0x63, 0x63, - 0x5b, 0x63, 0x5d, 0x2c, 0x20, 0x63, 0x63, 0x5b, 0x64, 0x5d, 0x29, 0x3b, - 0x0a, 0x09, 0x09, 0x09, 0x63, 0x63, 0x5b, 0x62, 0x5d, 0x20, 0x3d, 0x20, + 0x72, 0x74, 0x6c, 0x28, 0x63, 0x63, 0x5b, 0x62, 0x5d, 0x2c, 0x31, 0x32, + 0x29, 0x3b, 0x63, 0x63, 0x5b, 0x61, 0x5d, 0x3d, 0x52, 0x6f, 0x73, 0x61, + 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, + 0x2e, 0x61, 0x64, 0x64, 0x28, 0x63, 0x63, 0x5b, 0x61, 0x5d, 0x2c, 0x63, + 0x63, 0x5b, 0x62, 0x5d, 0x29, 0x3b, 0x63, 0x63, 0x5b, 0x64, 0x5d, 0x3d, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x78, 0x6f, 0x72, 0x28, 0x63, 0x63, 0x5b, - 0x62, 0x5d, 0x2c, 0x20, 0x63, 0x63, 0x5b, 0x63, 0x5d, 0x29, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x63, 0x63, 0x5b, 0x62, 0x5d, 0x20, 0x3d, 0x20, 0x52, - 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, - 0x68, 0x33, 0x32, 0x2e, 0x72, 0x74, 0x6c, 0x28, 0x63, 0x63, 0x5b, 0x62, - 0x5d, 0x2c, 0x20, 0x37, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x2c, 0x0a, - 0x09, 0x09, 0x44, 0x52, 0x3a, 0x20, 0x28, 0x63, 0x63, 0x29, 0x20, 0x3d, - 0x3e, 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x52, 0x6f, 0x73, - 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, - 0x61, 0x32, 0x30, 0x2e, 0x51, 0x52, 0x28, 0x63, 0x63, 0x2c, 0x20, 0x30, - 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x20, 0x38, 0x2c, 0x20, 0x31, 0x32, 0x29, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, - 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, - 0x51, 0x52, 0x28, 0x63, 0x63, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x35, 0x2c, - 0x20, 0x20, 0x39, 0x2c, 0x20, 0x31, 0x33, 0x29, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, + 0x64, 0x5d, 0x2c, 0x63, 0x63, 0x5b, 0x61, 0x5d, 0x29, 0x3b, 0x63, 0x63, + 0x5b, 0x64, 0x5d, 0x3d, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, + 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x72, 0x74, 0x6c, + 0x28, 0x63, 0x63, 0x5b, 0x64, 0x5d, 0x2c, 0x38, 0x29, 0x3b, 0x63, 0x63, + 0x5b, 0x63, 0x5d, 0x3d, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, + 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x61, 0x64, 0x64, + 0x28, 0x63, 0x63, 0x5b, 0x63, 0x5d, 0x2c, 0x63, 0x63, 0x5b, 0x64, 0x5d, + 0x29, 0x3b, 0x63, 0x63, 0x5b, 0x62, 0x5d, 0x3d, 0x52, 0x6f, 0x73, 0x61, + 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, + 0x2e, 0x78, 0x6f, 0x72, 0x28, 0x63, 0x63, 0x5b, 0x62, 0x5d, 0x2c, 0x63, + 0x63, 0x5b, 0x63, 0x5d, 0x29, 0x3b, 0x63, 0x63, 0x5b, 0x62, 0x5d, 0x3d, + 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, + 0x74, 0x68, 0x33, 0x32, 0x2e, 0x72, 0x74, 0x6c, 0x28, 0x63, 0x63, 0x5b, + 0x62, 0x5d, 0x2c, 0x37, 0x29, 0x7d, 0x2c, 0x44, 0x52, 0x3a, 0x63, 0x63, + 0x3d, 0x3e, 0x7b, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, + 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x51, 0x52, + 0x28, 0x63, 0x63, 0x2c, 0x30, 0x2c, 0x34, 0x2c, 0x38, 0x2c, 0x31, 0x32, + 0x29, 0x3b, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, + 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x51, 0x52, 0x28, + 0x63, 0x63, 0x2c, 0x31, 0x2c, 0x35, 0x2c, 0x39, 0x2c, 0x31, 0x33, 0x29, + 0x3b, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x51, 0x52, 0x28, 0x63, - 0x63, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x36, 0x2c, 0x20, 0x31, 0x30, 0x2c, - 0x20, 0x31, 0x34, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x52, 0x6f, 0x73, - 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, - 0x61, 0x32, 0x30, 0x2e, 0x51, 0x52, 0x28, 0x63, 0x63, 0x2c, 0x20, 0x33, - 0x2c, 0x20, 0x37, 0x2c, 0x20, 0x31, 0x31, 0x2c, 0x20, 0x31, 0x35, 0x29, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, - 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, - 0x51, 0x52, 0x28, 0x63, 0x63, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x35, 0x2c, - 0x20, 0x31, 0x30, 0x2c, 0x20, 0x31, 0x35, 0x29, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, + 0x63, 0x2c, 0x32, 0x2c, 0x36, 0x2c, 0x31, 0x30, 0x2c, 0x31, 0x34, 0x29, + 0x3b, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, + 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x51, 0x52, 0x28, 0x63, + 0x63, 0x2c, 0x33, 0x2c, 0x37, 0x2c, 0x31, 0x31, 0x2c, 0x31, 0x35, 0x29, + 0x3b, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, + 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x51, 0x52, 0x28, 0x63, + 0x63, 0x2c, 0x30, 0x2c, 0x35, 0x2c, 0x31, 0x30, 0x2c, 0x31, 0x35, 0x29, + 0x3b, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x51, 0x52, 0x28, 0x63, - 0x63, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x36, 0x2c, 0x20, 0x31, 0x31, 0x2c, - 0x20, 0x31, 0x32, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x52, 0x6f, 0x73, + 0x63, 0x2c, 0x31, 0x2c, 0x36, 0x2c, 0x31, 0x31, 0x2c, 0x31, 0x32, 0x29, + 0x3b, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, + 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x51, 0x52, 0x28, 0x63, + 0x63, 0x2c, 0x32, 0x2c, 0x37, 0x2c, 0x38, 0x2c, 0x31, 0x33, 0x29, 0x3b, + 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, + 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x51, 0x52, 0x28, 0x63, 0x63, + 0x2c, 0x33, 0x2c, 0x34, 0x2c, 0x39, 0x2c, 0x31, 0x34, 0x29, 0x7d, 0x2c, + 0x43, 0x42, 0x3a, 0x63, 0x63, 0x3d, 0x3e, 0x7b, 0x76, 0x61, 0x72, 0x20, + 0x69, 0x3b, 0x76, 0x61, 0x72, 0x20, 0x78, 0x3d, 0x6e, 0x65, 0x77, 0x20, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x31, 0x36, 0x29, 0x3b, 0x66, 0x6f, + 0x72, 0x28, 0x69, 0x3d, 0x30, 0x3b, 0x69, 0x3c, 0x31, 0x36, 0x3b, 0x69, + 0x2b, 0x2b, 0x29, 0x7b, 0x78, 0x5b, 0x69, 0x5d, 0x3d, 0x63, 0x63, 0x5b, + 0x69, 0x5d, 0x7d, 0x66, 0x6f, 0x72, 0x28, 0x69, 0x3d, 0x30, 0x3b, 0x69, + 0x3c, 0x31, 0x30, 0x3b, 0x69, 0x2b, 0x2b, 0x29, 0x7b, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, - 0x61, 0x32, 0x30, 0x2e, 0x51, 0x52, 0x28, 0x63, 0x63, 0x2c, 0x20, 0x32, - 0x2c, 0x20, 0x37, 0x2c, 0x20, 0x20, 0x38, 0x2c, 0x20, 0x31, 0x33, 0x29, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, - 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, - 0x51, 0x52, 0x28, 0x63, 0x63, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x34, 0x2c, - 0x20, 0x20, 0x39, 0x2c, 0x20, 0x31, 0x34, 0x29, 0x3b, 0x0a, 0x09, 0x09, - 0x7d, 0x2c, 0x0a, 0x09, 0x09, 0x43, 0x42, 0x3a, 0x20, 0x28, 0x63, 0x63, - 0x29, 0x20, 0x3d, 0x3e, 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, - 0x76, 0x61, 0x72, 0x20, 0x69, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x61, - 0x72, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x41, 0x72, - 0x72, 0x61, 0x79, 0x28, 0x31, 0x36, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, - 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, - 0x69, 0x20, 0x3c, 0x20, 0x31, 0x36, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, - 0x0a, 0x09, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x78, 0x5b, - 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x63, 0x63, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, - 0x28, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, - 0x31, 0x30, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x0a, 0x09, 0x09, 0x09, - 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, - 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, - 0x2e, 0x44, 0x52, 0x28, 0x63, 0x63, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, - 0x7d, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x20, - 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x31, 0x36, 0x3b, - 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x7b, 0x0a, 0x09, - 0x09, 0x09, 0x09, 0x63, 0x63, 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x52, + 0x61, 0x32, 0x30, 0x2e, 0x44, 0x52, 0x28, 0x63, 0x63, 0x29, 0x7d, 0x66, + 0x6f, 0x72, 0x28, 0x69, 0x3d, 0x30, 0x3b, 0x69, 0x3c, 0x31, 0x36, 0x3b, + 0x69, 0x2b, 0x2b, 0x29, 0x7b, 0x63, 0x63, 0x5b, 0x69, 0x5d, 0x3d, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x4d, 0x61, 0x74, 0x68, 0x33, 0x32, 0x2e, 0x61, 0x64, 0x64, 0x28, 0x63, 0x63, 0x5b, 0x69, - 0x5d, 0x2c, 0x20, 0x78, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x7d, 0x2c, 0x0a, 0x09, 0x09, 0x53, 0x3a, - 0x20, 0x28, 0x63, 0x63, 0x2c, 0x20, 0x63, 0x73, 0x29, 0x20, 0x3d, 0x3e, - 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, - 0x28, 0x76, 0x61, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, - 0x69, 0x20, 0x3c, 0x20, 0x31, 0x36, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, - 0x0a, 0x09, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x63, 0x73, - 0x5b, 0x34, 0x20, 0x2a, 0x20, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x63, - 0x63, 0x5b, 0x69, 0x5d, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x29, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x63, 0x73, 0x5b, 0x34, 0x20, 0x2a, - 0x20, 0x69, 0x20, 0x2b, 0x20, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, - 0x63, 0x63, 0x5b, 0x69, 0x5d, 0x20, 0x3e, 0x3e, 0x20, 0x38, 0x29, 0x20, - 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, - 0x09, 0x63, 0x73, 0x5b, 0x34, 0x20, 0x2a, 0x20, 0x69, 0x20, 0x2b, 0x20, - 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x63, 0x63, 0x5b, 0x69, 0x5d, - 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, - 0x46, 0x46, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x63, 0x73, 0x5b, - 0x34, 0x20, 0x2a, 0x20, 0x69, 0x20, 0x2b, 0x20, 0x33, 0x5d, 0x20, 0x3d, - 0x20, 0x28, 0x28, 0x63, 0x63, 0x5b, 0x69, 0x5d, 0x20, 0x3e, 0x3e, 0x20, - 0x32, 0x34, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x29, 0x3b, - 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x7d, 0x2c, 0x0a, 0x09, - 0x09, 0x42, 0x3a, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x2c, 0x20, 0x6e, 0x6f, - 0x6e, 0x63, 0x65, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, - 0x6f, 0x75, 0x74, 0x29, 0x20, 0x3d, 0x3e, 0x0a, 0x09, 0x09, 0x7b, 0x0a, - 0x09, 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x63, 0x63, 0x20, 0x3d, 0x0a, - 0x09, 0x09, 0x09, 0x5b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x30, 0x78, 0x36, - 0x31, 0x37, 0x30, 0x37, 0x38, 0x36, 0x35, 0x2c, 0x20, 0x30, 0x78, 0x33, - 0x33, 0x32, 0x30, 0x36, 0x34, 0x36, 0x65, 0x2c, 0x20, 0x30, 0x78, 0x37, - 0x39, 0x36, 0x32, 0x32, 0x64, 0x33, 0x32, 0x2c, 0x20, 0x30, 0x78, 0x36, - 0x62, 0x32, 0x30, 0x36, 0x35, 0x37, 0x34, 0x2c, 0x0a, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x6b, 0x65, 0x79, 0x5b, 0x30, 0x5d, 0x20, 0x7c, 0x20, 0x28, - 0x6b, 0x65, 0x79, 0x5b, 0x31, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x38, 0x29, - 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, 0x32, 0x5d, 0x20, 0x3c, - 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, - 0x5b, 0x33, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x34, 0x29, 0x2c, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x6b, 0x65, 0x79, 0x5b, 0x34, 0x5d, 0x20, 0x7c, - 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, 0x35, 0x5d, 0x20, 0x3c, 0x3c, 0x20, - 0x38, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, 0x36, 0x5d, - 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x6b, - 0x65, 0x79, 0x5b, 0x37, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x34, 0x29, - 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6b, 0x65, 0x79, 0x5b, 0x38, 0x5d, - 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, 0x39, 0x5d, 0x20, 0x3c, - 0x3c, 0x20, 0x38, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, - 0x31, 0x30, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, 0x7c, - 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, 0x31, 0x31, 0x5d, 0x20, 0x3c, 0x3c, - 0x20, 0x32, 0x34, 0x29, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6b, 0x65, - 0x79, 0x5b, 0x31, 0x32, 0x5d, 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, - 0x5b, 0x31, 0x33, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x38, 0x29, 0x20, 0x7c, - 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, 0x31, 0x34, 0x5d, 0x20, 0x3c, 0x3c, - 0x20, 0x31, 0x36, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, - 0x31, 0x35, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x34, 0x29, 0x2c, 0x0a, - 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6b, 0x65, 0x79, 0x5b, 0x31, 0x36, 0x5d, - 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, 0x31, 0x37, 0x5d, 0x20, - 0x3c, 0x3c, 0x20, 0x38, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, - 0x5b, 0x31, 0x38, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, - 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, 0x31, 0x39, 0x5d, 0x20, 0x3c, - 0x3c, 0x20, 0x32, 0x34, 0x29, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6b, - 0x65, 0x79, 0x5b, 0x32, 0x30, 0x5d, 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, - 0x79, 0x5b, 0x32, 0x31, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x38, 0x29, 0x20, - 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, 0x32, 0x32, 0x5d, 0x20, 0x3c, - 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, - 0x5b, 0x32, 0x33, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x34, 0x29, 0x2c, - 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6b, 0x65, 0x79, 0x5b, 0x32, 0x34, 0x5d, - 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, 0x32, 0x35, 0x5d, 0x20, - 0x3c, 0x3c, 0x20, 0x38, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, - 0x5b, 0x32, 0x36, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, - 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, 0x32, 0x37, 0x5d, 0x20, 0x3c, - 0x3c, 0x20, 0x32, 0x34, 0x29, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6b, - 0x65, 0x79, 0x5b, 0x32, 0x38, 0x5d, 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, - 0x79, 0x5b, 0x32, 0x39, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x38, 0x29, 0x20, - 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x5b, 0x33, 0x30, 0x5d, 0x20, 0x3c, - 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x6b, 0x65, 0x79, - 0x5b, 0x33, 0x31, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x34, 0x29, 0x2c, - 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, - 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5b, - 0x30, 0x5d, 0x20, 0x7c, 0x20, 0x28, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5b, - 0x31, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x38, 0x29, 0x20, 0x7c, 0x20, 0x28, - 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5b, 0x32, 0x5d, 0x20, 0x3c, 0x3c, 0x20, - 0x31, 0x36, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x6e, 0x6f, 0x6e, 0x63, 0x65, - 0x5b, 0x33, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x34, 0x29, 0x2c, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5b, 0x34, 0x5d, - 0x20, 0x7c, 0x20, 0x28, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5b, 0x35, 0x5d, - 0x20, 0x3c, 0x3c, 0x20, 0x38, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x6e, 0x6f, - 0x6e, 0x63, 0x65, 0x5b, 0x36, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x36, - 0x29, 0x20, 0x7c, 0x20, 0x28, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5b, 0x37, - 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x34, 0x29, 0x2c, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5b, 0x38, 0x5d, 0x20, 0x7c, - 0x20, 0x28, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5b, 0x39, 0x5d, 0x20, 0x3c, - 0x3c, 0x20, 0x38, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x6e, 0x6f, 0x6e, 0x63, - 0x65, 0x5b, 0x31, 0x30, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x36, 0x29, - 0x20, 0x7c, 0x20, 0x28, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5b, 0x31, 0x31, - 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x32, 0x34, 0x29, 0x0a, 0x09, 0x09, 0x09, - 0x5d, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x52, 0x6f, 0x73, 0x61, 0x64, - 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, - 0x30, 0x2e, 0x43, 0x42, 0x28, 0x63, 0x63, 0x29, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, - 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x53, 0x28, 0x63, 0x63, - 0x2c, 0x20, 0x6f, 0x75, 0x74, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x2c, - 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x3a, 0x20, - 0x61, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x2c, 0x20, - 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x2c, 0x20, 0x64, 0x61, 0x74, 0x61, 0x29, 0x20, 0x3d, 0x3e, 0x0a, 0x09, - 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, - 0x20, 0x28, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x3e, 0x20, 0x28, 0x32, - 0x37, 0x34, 0x38, 0x37, 0x37, 0x39, 0x30, 0x36, 0x39, 0x34, 0x34, 0x20, - 0x2d, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x20, 0x36, 0x34, - 0x29, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x75, - 0x6c, 0x6c, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x72, - 0x65, 0x74, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x61, - 0x72, 0x20, 0x63, 0x63, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x3d, 0x20, + 0x5d, 0x2c, 0x78, 0x5b, 0x69, 0x5d, 0x29, 0x7d, 0x7d, 0x2c, 0x53, 0x3a, + 0x28, 0x63, 0x63, 0x2c, 0x63, 0x73, 0x29, 0x3d, 0x3e, 0x7b, 0x66, 0x6f, + 0x72, 0x28, 0x76, 0x61, 0x72, 0x20, 0x69, 0x3d, 0x30, 0x3b, 0x69, 0x3c, + 0x31, 0x36, 0x3b, 0x69, 0x2b, 0x2b, 0x29, 0x7b, 0x63, 0x73, 0x5b, 0x34, + 0x2a, 0x69, 0x5d, 0x3d, 0x63, 0x63, 0x5b, 0x69, 0x5d, 0x26, 0x32, 0x35, + 0x35, 0x3b, 0x63, 0x73, 0x5b, 0x34, 0x2a, 0x69, 0x2b, 0x31, 0x5d, 0x3d, + 0x63, 0x63, 0x5b, 0x69, 0x5d, 0x3e, 0x3e, 0x38, 0x26, 0x32, 0x35, 0x35, + 0x3b, 0x63, 0x73, 0x5b, 0x34, 0x2a, 0x69, 0x2b, 0x32, 0x5d, 0x3d, 0x63, + 0x63, 0x5b, 0x69, 0x5d, 0x3e, 0x3e, 0x31, 0x36, 0x26, 0x32, 0x35, 0x35, + 0x3b, 0x63, 0x73, 0x5b, 0x34, 0x2a, 0x69, 0x2b, 0x33, 0x5d, 0x3d, 0x63, + 0x63, 0x5b, 0x69, 0x5d, 0x3e, 0x3e, 0x32, 0x34, 0x26, 0x32, 0x35, 0x35, + 0x7d, 0x7d, 0x2c, 0x42, 0x3a, 0x28, 0x6b, 0x65, 0x79, 0x2c, 0x6e, 0x6f, + 0x6e, 0x63, 0x65, 0x2c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x6f, 0x75, + 0x74, 0x29, 0x3d, 0x3e, 0x7b, 0x76, 0x61, 0x72, 0x20, 0x63, 0x63, 0x3d, + 0x5b, 0x31, 0x36, 0x33, 0x34, 0x37, 0x36, 0x30, 0x38, 0x30, 0x35, 0x2c, + 0x38, 0x35, 0x37, 0x37, 0x36, 0x30, 0x38, 0x37, 0x38, 0x2c, 0x32, 0x30, + 0x33, 0x36, 0x34, 0x37, 0x37, 0x32, 0x33, 0x34, 0x2c, 0x31, 0x37, 0x39, + 0x37, 0x32, 0x38, 0x35, 0x32, 0x33, 0x36, 0x2c, 0x6b, 0x65, 0x79, 0x5b, + 0x30, 0x5d, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x31, 0x5d, 0x3c, 0x3c, 0x38, + 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x32, 0x5d, 0x3c, 0x3c, 0x31, 0x36, 0x7c, + 0x6b, 0x65, 0x79, 0x5b, 0x33, 0x5d, 0x3c, 0x3c, 0x32, 0x34, 0x2c, 0x6b, + 0x65, 0x79, 0x5b, 0x34, 0x5d, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x35, 0x5d, + 0x3c, 0x3c, 0x38, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x36, 0x5d, 0x3c, 0x3c, + 0x31, 0x36, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x37, 0x5d, 0x3c, 0x3c, 0x32, + 0x34, 0x2c, 0x6b, 0x65, 0x79, 0x5b, 0x38, 0x5d, 0x7c, 0x6b, 0x65, 0x79, + 0x5b, 0x39, 0x5d, 0x3c, 0x3c, 0x38, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x31, + 0x30, 0x5d, 0x3c, 0x3c, 0x31, 0x36, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x31, + 0x31, 0x5d, 0x3c, 0x3c, 0x32, 0x34, 0x2c, 0x6b, 0x65, 0x79, 0x5b, 0x31, + 0x32, 0x5d, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x31, 0x33, 0x5d, 0x3c, 0x3c, + 0x38, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x31, 0x34, 0x5d, 0x3c, 0x3c, 0x31, + 0x36, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x31, 0x35, 0x5d, 0x3c, 0x3c, 0x32, + 0x34, 0x2c, 0x6b, 0x65, 0x79, 0x5b, 0x31, 0x36, 0x5d, 0x7c, 0x6b, 0x65, + 0x79, 0x5b, 0x31, 0x37, 0x5d, 0x3c, 0x3c, 0x38, 0x7c, 0x6b, 0x65, 0x79, + 0x5b, 0x31, 0x38, 0x5d, 0x3c, 0x3c, 0x31, 0x36, 0x7c, 0x6b, 0x65, 0x79, + 0x5b, 0x31, 0x39, 0x5d, 0x3c, 0x3c, 0x32, 0x34, 0x2c, 0x6b, 0x65, 0x79, + 0x5b, 0x32, 0x30, 0x5d, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x32, 0x31, 0x5d, + 0x3c, 0x3c, 0x38, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x32, 0x32, 0x5d, 0x3c, + 0x3c, 0x31, 0x36, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x32, 0x33, 0x5d, 0x3c, + 0x3c, 0x32, 0x34, 0x2c, 0x6b, 0x65, 0x79, 0x5b, 0x32, 0x34, 0x5d, 0x7c, + 0x6b, 0x65, 0x79, 0x5b, 0x32, 0x35, 0x5d, 0x3c, 0x3c, 0x38, 0x7c, 0x6b, + 0x65, 0x79, 0x5b, 0x32, 0x36, 0x5d, 0x3c, 0x3c, 0x31, 0x36, 0x7c, 0x6b, + 0x65, 0x79, 0x5b, 0x32, 0x37, 0x5d, 0x3c, 0x3c, 0x32, 0x34, 0x2c, 0x6b, + 0x65, 0x79, 0x5b, 0x32, 0x38, 0x5d, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x32, + 0x39, 0x5d, 0x3c, 0x3c, 0x38, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x33, 0x30, + 0x5d, 0x3c, 0x3c, 0x31, 0x36, 0x7c, 0x6b, 0x65, 0x79, 0x5b, 0x33, 0x31, + 0x5d, 0x3c, 0x3c, 0x32, 0x34, 0x2c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, + 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5b, 0x30, 0x5d, 0x7c, 0x6e, 0x6f, 0x6e, + 0x63, 0x65, 0x5b, 0x31, 0x5d, 0x3c, 0x3c, 0x38, 0x7c, 0x6e, 0x6f, 0x6e, + 0x63, 0x65, 0x5b, 0x32, 0x5d, 0x3c, 0x3c, 0x31, 0x36, 0x7c, 0x6e, 0x6f, + 0x6e, 0x63, 0x65, 0x5b, 0x33, 0x5d, 0x3c, 0x3c, 0x32, 0x34, 0x2c, 0x6e, + 0x6f, 0x6e, 0x63, 0x65, 0x5b, 0x34, 0x5d, 0x7c, 0x6e, 0x6f, 0x6e, 0x63, + 0x65, 0x5b, 0x35, 0x5d, 0x3c, 0x3c, 0x38, 0x7c, 0x6e, 0x6f, 0x6e, 0x63, + 0x65, 0x5b, 0x36, 0x5d, 0x3c, 0x3c, 0x31, 0x36, 0x7c, 0x6e, 0x6f, 0x6e, + 0x63, 0x65, 0x5b, 0x37, 0x5d, 0x3c, 0x3c, 0x32, 0x34, 0x2c, 0x6e, 0x6f, + 0x6e, 0x63, 0x65, 0x5b, 0x38, 0x5d, 0x7c, 0x6e, 0x6f, 0x6e, 0x63, 0x65, + 0x5b, 0x39, 0x5d, 0x3c, 0x3c, 0x38, 0x7c, 0x6e, 0x6f, 0x6e, 0x63, 0x65, + 0x5b, 0x31, 0x30, 0x5d, 0x3c, 0x3c, 0x31, 0x36, 0x7c, 0x6e, 0x6f, 0x6e, + 0x63, 0x65, 0x5b, 0x31, 0x31, 0x5d, 0x3c, 0x3c, 0x32, 0x34, 0x5d, 0x3b, + 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, + 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x43, 0x42, 0x28, 0x63, 0x63, + 0x29, 0x3b, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, + 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x53, 0x28, 0x63, + 0x63, 0x2c, 0x6f, 0x75, 0x74, 0x29, 0x7d, 0x2c, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x3a, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x28, 0x6b, 0x65, + 0x79, 0x2c, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x2c, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x29, 0x3d, 0x3e, 0x7b, 0x76, 0x61, + 0x72, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3d, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3b, 0x69, 0x66, 0x28, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x3e, 0x32, 0x37, 0x34, 0x38, 0x37, 0x37, 0x39, + 0x30, 0x36, 0x39, 0x34, 0x34, 0x2d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2a, + 0x36, 0x34, 0x29, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x75, + 0x6c, 0x6c, 0x3b, 0x76, 0x61, 0x72, 0x20, 0x72, 0x65, 0x74, 0x3d, 0x6e, + 0x65, 0x77, 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x30, 0x29, 0x3b, + 0x76, 0x61, 0x72, 0x20, 0x63, 0x63, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3d, 0x6e, 0x65, 0x77, 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x36, 0x34, - 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x73, 0x69, - 0x7a, 0x65, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x77, - 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, - 0x3e, 0x20, 0x36, 0x34, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x7b, 0x0a, 0x09, - 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x2b, 0x20, 0x36, - 0x34, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x52, 0x6f, 0x73, 0x61, 0x64, - 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, - 0x30, 0x2e, 0x42, 0x28, 0x6b, 0x65, 0x79, 0x2c, 0x20, 0x6e, 0x6f, 0x6e, - 0x63, 0x65, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2b, 0x2b, 0x2c, - 0x20, 0x63, 0x63, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x29, 0x3b, 0x0a, 0x09, - 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x76, 0x61, 0x72, 0x20, - 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x36, - 0x34, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x20, 0x72, 0x65, 0x74, 0x5b, - 0x73, 0x69, 0x7a, 0x65, 0x20, 0x2b, 0x20, 0x69, 0x5d, 0x20, 0x3d, 0x20, - 0x63, 0x63, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x2b, 0x3d, 0x20, - 0x36, 0x34, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x20, 0x2d, 0x3d, 0x20, 0x36, 0x34, 0x3b, 0x0a, 0x09, 0x09, 0x09, - 0x7d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x20, 0x3e, 0x20, 0x30, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x7b, - 0x0a, 0x09, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x2e, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x2b, - 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, + 0x29, 0x3b, 0x76, 0x61, 0x72, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x3d, 0x30, + 0x3b, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x28, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x3e, 0x36, 0x34, 0x29, 0x7b, 0x72, 0x65, 0x74, 0x2e, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x3d, 0x73, 0x69, 0x7a, 0x65, 0x2b, 0x36, 0x34, 0x3b, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x42, 0x28, 0x6b, 0x65, 0x79, - 0x2c, 0x20, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x2c, 0x20, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x63, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x29, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x76, - 0x61, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, - 0x3c, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x20, 0x69, 0x2b, 0x2b, - 0x29, 0x20, 0x72, 0x65, 0x74, 0x5b, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x2b, - 0x20, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x63, 0x63, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x0a, 0x09, - 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x76, 0x61, 0x72, 0x20, 0x69, - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3b, 0x20, 0x69, - 0x2b, 0x2b, 0x29, 0x20, 0x72, 0x65, 0x74, 0x5b, 0x69, 0x5d, 0x20, 0x5e, - 0x3d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x09, - 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x65, 0x77, + 0x2c, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x2c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x2b, 0x2b, 0x2c, 0x63, 0x63, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x29, 0x3b, + 0x66, 0x6f, 0x72, 0x28, 0x76, 0x61, 0x72, 0x20, 0x69, 0x3d, 0x30, 0x3b, + 0x69, 0x3c, 0x36, 0x34, 0x3b, 0x69, 0x2b, 0x2b, 0x29, 0x72, 0x65, 0x74, + 0x5b, 0x73, 0x69, 0x7a, 0x65, 0x2b, 0x69, 0x5d, 0x3d, 0x63, 0x63, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5b, 0x69, 0x5d, 0x3b, 0x73, 0x69, 0x7a, 0x65, + 0x2b, 0x3d, 0x36, 0x34, 0x3b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2d, 0x3d, + 0x36, 0x34, 0x7d, 0x69, 0x66, 0x28, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3e, + 0x30, 0x29, 0x7b, 0x72, 0x65, 0x74, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x3d, 0x73, 0x69, 0x7a, 0x65, 0x2b, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x3b, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, + 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x42, 0x28, 0x6b, 0x65, + 0x79, 0x2c, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x2c, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x2c, 0x63, 0x63, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x29, 0x3b, 0x66, + 0x6f, 0x72, 0x28, 0x76, 0x61, 0x72, 0x20, 0x69, 0x3d, 0x30, 0x3b, 0x69, + 0x3c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x69, 0x2b, 0x2b, 0x29, 0x72, + 0x65, 0x74, 0x5b, 0x73, 0x69, 0x7a, 0x65, 0x2b, 0x69, 0x5d, 0x3d, 0x63, + 0x63, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5b, 0x69, 0x5d, 0x7d, 0x66, 0x6f, + 0x72, 0x28, 0x76, 0x61, 0x72, 0x20, 0x69, 0x3d, 0x30, 0x3b, 0x69, 0x3c, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3b, + 0x69, 0x2b, 0x2b, 0x29, 0x72, 0x65, 0x74, 0x5b, 0x69, 0x5d, 0x5e, 0x3d, + 0x64, 0x61, 0x74, 0x61, 0x5b, 0x69, 0x5d, 0x3b, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x72, 0x65, 0x74, 0x29, 0x7d, 0x7d, + 0x2c, 0x42, 0x61, 0x73, 0x65, 0x36, 0x34, 0x3a, 0x7b, 0x65, 0x6e, 0x63, + 0x6f, 0x64, 0x65, 0x3a, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x78, 0x3d, + 0x3e, 0x7b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x77, 0x61, + 0x69, 0x74, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x50, 0x72, 0x6f, 0x6d, 0x69, + 0x73, 0x65, 0x28, 0x72, 0x3d, 0x3e, 0x7b, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x20, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3d, 0x6e, 0x65, 0x77, 0x20, + 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3b, 0x72, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, + 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x2c, 0x28, 0x29, 0x3d, 0x3e, 0x72, 0x28, + 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22, 0x2c, 0x22, 0x29, + 0x5b, 0x31, 0x5d, 0x29, 0x29, 0x3b, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x2e, 0x72, 0x65, 0x61, 0x64, 0x41, 0x73, 0x44, 0x61, 0x74, 0x61, 0x55, + 0x52, 0x4c, 0x28, 0x6e, 0x65, 0x77, 0x20, 0x42, 0x6c, 0x6f, 0x62, 0x28, + 0x5b, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x28, 0x78, 0x29, 0x5d, 0x29, 0x29, 0x7d, 0x29, 0x7d, + 0x2c, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x62, 0x36, 0x34, 0x3d, + 0x3e, 0x7b, 0x76, 0x61, 0x72, 0x20, 0x64, 0x65, 0x63, 0x31, 0x3d, 0x76, + 0x3d, 0x3e, 0x7b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x28, 0x76, 0x29, + 0x7b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x41, 0x22, 0x3a, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x30, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x42, + 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x3b, 0x63, + 0x61, 0x73, 0x65, 0x22, 0x43, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x32, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x44, 0x22, 0x3a, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x33, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x45, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x34, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x46, 0x22, 0x3a, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x35, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, + 0x47, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x36, 0x3b, + 0x63, 0x61, 0x73, 0x65, 0x22, 0x48, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x37, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x49, 0x22, + 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x38, 0x3b, 0x63, 0x61, + 0x73, 0x65, 0x22, 0x4a, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x39, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x4b, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x30, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x4c, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x31, 0x31, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x4d, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x32, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x4e, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x31, 0x33, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x4f, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x34, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x50, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x31, 0x35, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x51, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x36, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x52, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x31, 0x37, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x53, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x38, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x54, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x31, 0x39, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x55, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x32, 0x30, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x56, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x32, 0x31, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x57, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x32, 0x32, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x58, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x32, 0x33, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x59, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x32, 0x34, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x5a, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x32, 0x35, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x61, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x32, 0x36, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x62, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x32, 0x37, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x63, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x32, 0x38, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x64, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x32, 0x39, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x65, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x33, 0x30, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x66, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x33, 0x31, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x67, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x33, 0x32, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x68, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x33, 0x33, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x69, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x33, 0x34, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x6a, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x33, 0x35, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x6b, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x33, 0x36, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x6c, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x33, 0x37, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x6d, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x33, 0x38, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x6e, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x33, 0x39, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x6f, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, 0x30, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x70, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x34, 0x31, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x71, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, 0x32, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x72, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x34, 0x33, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x73, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, 0x34, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x74, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x34, 0x35, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x75, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, 0x36, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x76, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x34, 0x37, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x77, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, 0x38, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x78, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x34, 0x39, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x79, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x35, 0x30, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x7a, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x35, 0x31, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x30, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x35, 0x32, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x31, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x35, 0x33, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x32, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x35, 0x34, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x33, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x35, 0x35, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x34, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x35, 0x36, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x35, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x35, 0x37, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x36, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x35, 0x38, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x37, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x35, 0x39, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x38, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x36, 0x30, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x39, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x36, 0x31, 0x3b, 0x63, 0x61, 0x73, 0x65, 0x22, 0x2b, 0x22, 0x3a, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x36, 0x32, 0x3b, 0x63, 0x61, 0x73, + 0x65, 0x22, 0x2f, 0x22, 0x3a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x36, 0x33, 0x7d, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x32, 0x35, + 0x35, 0x7d, 0x3b, 0x76, 0x61, 0x72, 0x20, 0x72, 0x65, 0x74, 0x3d, 0x6e, + 0x65, 0x77, 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x30, 0x29, 0x3b, + 0x76, 0x61, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3d, 0x30, + 0x3b, 0x76, 0x61, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, + 0x3d, 0x30, 0x3b, 0x66, 0x6f, 0x72, 0x28, 0x76, 0x61, 0x72, 0x20, 0x69, + 0x3d, 0x30, 0x3b, 0x69, 0x3c, 0x62, 0x36, 0x34, 0x2e, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x3b, 0x69, 0x2b, 0x2b, 0x29, 0x7b, 0x69, 0x66, 0x28, + 0x62, 0x36, 0x34, 0x5b, 0x69, 0x5d, 0x3d, 0x3d, 0x22, 0x3d, 0x22, 0x29, + 0x7b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x3d, 0x30, 0x3b, 0x63, + 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x7d, 0x76, 0x61, 0x72, 0x20, + 0x76, 0x61, 0x6c, 0x3d, 0x64, 0x65, 0x63, 0x31, 0x28, 0x62, 0x36, 0x34, + 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x69, 0x66, 0x28, 0x76, 0x61, 0x6c, 0x3d, + 0x3d, 0x32, 0x35, 0x35, 0x29, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x6e, 0x75, 0x6c, 0x6c, 0x3b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3d, + 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3c, 0x3c, 0x36, 0x7c, 0x76, + 0x61, 0x6c, 0x29, 0x26, 0x36, 0x35, 0x35, 0x33, 0x35, 0x3b, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x53, 0x2b, 0x3d, 0x36, 0x3b, 0x69, 0x66, 0x28, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x3e, 0x3d, 0x38, 0x29, 0x7b, + 0x76, 0x61, 0x72, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x3d, 0x31, 0x36, + 0x2d, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x26, 0x32, 0x35, 0x35, + 0x3b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3d, 0x62, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x3c, 0x3c, 0x73, 0x68, 0x69, 0x66, 0x74, 0x26, 0x36, 0x35, + 0x35, 0x33, 0x35, 0x3b, 0x72, 0x65, 0x74, 0x5b, 0x72, 0x65, 0x74, 0x2e, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5d, 0x3d, 0x62, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x3e, 0x3e, 0x3e, 0x38, 0x26, 0x32, 0x35, 0x35, 0x3b, 0x62, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x3d, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x26, 0x32, 0x35, 0x35, 0x3b, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3d, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3e, 0x3e, 0x3e, 0x73, 0x68, 0x69, + 0x66, 0x74, 0x26, 0x36, 0x35, 0x35, 0x33, 0x35, 0x3b, 0x62, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x53, 0x2d, 0x3d, 0x38, 0x7d, 0x7d, 0x69, 0x66, 0x28, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x3e, 0x30, 0x29, 0x7b, 0x62, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x3d, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x3c, 0x3c, 0x31, 0x36, 0x2d, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, + 0x26, 0x36, 0x35, 0x35, 0x33, 0x35, 0x3b, 0x72, 0x65, 0x74, 0x5b, 0x72, + 0x65, 0x74, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5d, 0x3d, 0x62, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x3e, 0x3e, 0x3e, 0x38, 0x26, 0x32, 0x35, + 0x35, 0x7d, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, - 0x72, 0x65, 0x74, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, - 0x2c, 0x0a, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, 0x36, 0x34, 0x3a, 0x0a, - 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x3a, - 0x20, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x28, 0x78, 0x29, 0x20, 0x3d, - 0x3e, 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x6e, 0x65, - 0x77, 0x20, 0x50, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, 0x28, 0x72, 0x20, - 0x3d, 0x3e, 0x0a, 0x09, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x09, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x52, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x28, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, - 0x09, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x64, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, - 0x28, 0x22, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x2c, 0x20, 0x28, 0x29, 0x20, - 0x3d, 0x3e, 0x20, 0x72, 0x28, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, - 0x28, 0x22, 0x2c, 0x22, 0x29, 0x5b, 0x31, 0x5d, 0x29, 0x29, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x72, - 0x65, 0x61, 0x64, 0x41, 0x73, 0x44, 0x61, 0x74, 0x61, 0x55, 0x52, 0x4c, - 0x28, 0x6e, 0x65, 0x77, 0x20, 0x42, 0x6c, 0x6f, 0x62, 0x28, 0x5b, 0x6e, - 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x28, 0x78, 0x29, 0x5d, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, - 0x7d, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x2c, 0x0a, 0x0a, 0x09, 0x09, - 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x20, 0x28, 0x62, 0x36, 0x34, - 0x29, 0x20, 0x3d, 0x3e, 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, - 0x76, 0x61, 0x72, 0x20, 0x64, 0x65, 0x63, 0x31, 0x20, 0x3d, 0x20, 0x28, - 0x76, 0x29, 0x20, 0x3d, 0x3e, 0x0a, 0x09, 0x09, 0x09, 0x7b, 0x0a, 0x09, - 0x09, 0x09, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x20, 0x28, 0x76, - 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x41, 0x27, 0x3a, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x20, 0x30, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x42, 0x27, 0x3a, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x20, 0x31, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x43, - 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x20, 0x32, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, - 0x27, 0x44, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x20, 0x33, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, - 0x65, 0x20, 0x27, 0x45, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x20, 0x34, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, - 0x61, 0x73, 0x65, 0x20, 0x27, 0x46, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x20, 0x35, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x47, 0x27, 0x3a, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x20, 0x36, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x48, 0x27, 0x3a, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x20, 0x37, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x49, - 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x20, 0x38, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, - 0x27, 0x4a, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x20, 0x39, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, - 0x65, 0x20, 0x27, 0x4b, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x31, 0x30, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, - 0x61, 0x73, 0x65, 0x20, 0x27, 0x4c, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x31, 0x31, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x4d, 0x27, 0x3a, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x32, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x4e, 0x27, 0x3a, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x33, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x4f, - 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x34, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, - 0x27, 0x50, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x31, 0x35, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, - 0x65, 0x20, 0x27, 0x51, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x31, 0x36, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, - 0x61, 0x73, 0x65, 0x20, 0x27, 0x52, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x31, 0x37, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x53, 0x27, 0x3a, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x38, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x54, 0x27, 0x3a, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x39, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x55, - 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x32, 0x30, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, - 0x27, 0x56, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x32, 0x31, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, - 0x65, 0x20, 0x27, 0x57, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x32, 0x32, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, - 0x61, 0x73, 0x65, 0x20, 0x27, 0x58, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x32, 0x33, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x59, 0x27, 0x3a, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x32, 0x34, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x5a, 0x27, 0x3a, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x32, 0x35, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x61, - 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x32, 0x36, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, - 0x27, 0x62, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x32, 0x37, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, - 0x65, 0x20, 0x27, 0x63, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x32, 0x38, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, - 0x61, 0x73, 0x65, 0x20, 0x27, 0x64, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x32, 0x39, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x65, 0x27, 0x3a, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x33, 0x30, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x66, 0x27, 0x3a, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x33, 0x31, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x67, - 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x33, 0x32, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, - 0x27, 0x68, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x33, 0x33, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, - 0x65, 0x20, 0x27, 0x69, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x33, 0x34, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, - 0x61, 0x73, 0x65, 0x20, 0x27, 0x6a, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x33, 0x35, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x6b, 0x27, 0x3a, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x33, 0x36, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x6c, 0x27, 0x3a, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x33, 0x37, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x6d, - 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x33, 0x38, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, - 0x27, 0x6e, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x33, 0x39, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, - 0x65, 0x20, 0x27, 0x6f, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x34, 0x30, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, - 0x61, 0x73, 0x65, 0x20, 0x27, 0x70, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x34, 0x31, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x71, 0x27, 0x3a, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, 0x32, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x72, 0x27, 0x3a, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, 0x33, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x73, - 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, 0x34, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, - 0x27, 0x74, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x34, 0x35, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, - 0x65, 0x20, 0x27, 0x75, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x34, 0x36, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, - 0x61, 0x73, 0x65, 0x20, 0x27, 0x76, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x34, 0x37, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x77, 0x27, 0x3a, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, 0x38, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x78, 0x27, 0x3a, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x34, 0x39, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x79, - 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x35, 0x30, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, - 0x27, 0x7a, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x35, 0x31, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, - 0x65, 0x20, 0x27, 0x30, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x35, 0x32, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, - 0x61, 0x73, 0x65, 0x20, 0x27, 0x31, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x35, 0x33, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x32, 0x27, 0x3a, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x35, 0x34, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x33, 0x27, 0x3a, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x35, 0x35, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x34, - 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x35, 0x36, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, - 0x27, 0x35, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x35, 0x37, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, - 0x65, 0x20, 0x27, 0x36, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x35, 0x38, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, - 0x61, 0x73, 0x65, 0x20, 0x27, 0x37, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x35, 0x39, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x38, 0x27, 0x3a, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x36, 0x30, 0x3b, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x39, 0x27, 0x3a, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x36, 0x31, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, 0x27, 0x2b, - 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x36, 0x32, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x63, 0x61, 0x73, 0x65, 0x20, - 0x27, 0x2f, 0x27, 0x3a, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x36, 0x33, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, - 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x32, 0x35, 0x35, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x09, - 0x76, 0x61, 0x72, 0x20, 0x72, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x6e, 0x65, - 0x77, 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x30, 0x29, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, - 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x61, - 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x20, 0x3d, 0x20, - 0x30, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x76, - 0x61, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, - 0x3c, 0x20, 0x62, 0x36, 0x34, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x7b, 0x0a, - 0x09, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x62, 0x36, 0x34, 0x5b, - 0x69, 0x5d, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x3d, 0x27, 0x29, 0x20, 0x7b, - 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x20, 0x3d, 0x20, 0x30, - 0x3b, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x3b, 0x20, - 0x7d, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x76, - 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x64, 0x65, 0x63, 0x31, 0x28, 0x62, 0x36, - 0x34, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x69, - 0x66, 0x20, 0x28, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x3d, 0x20, 0x32, 0x35, - 0x35, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x75, - 0x6c, 0x6c, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, - 0x72, 0x20, 0x3c, 0x3c, 0x20, 0x36, 0x29, 0x20, 0x7c, 0x20, 0x76, 0x61, - 0x6c, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x3b, - 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, - 0x20, 0x2b, 0x3d, 0x20, 0x36, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x69, - 0x66, 0x20, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x20, 0x3e, - 0x3d, 0x20, 0x38, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x7b, 0x0a, 0x09, - 0x09, 0x09, 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x73, 0x68, 0x69, 0x66, - 0x74, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x36, 0x20, 0x2d, 0x20, 0x62, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x53, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, - 0x46, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x62, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x20, 0x3c, 0x3c, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x29, 0x20, 0x26, - 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x3b, 0x0a, 0x09, 0x09, 0x09, - 0x09, 0x09, 0x72, 0x65, 0x74, 0x5b, 0x72, 0x65, 0x74, 0x2e, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x20, 0x3e, 0x3e, 0x3e, 0x20, 0x38, 0x29, 0x20, 0x26, - 0x20, 0x30, 0x78, 0x46, 0x46, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, - 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x62, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x20, 0x26, 0x20, 0x30, 0x78, 0x30, 0x30, 0x46, 0x46, - 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x62, 0x75, 0x66, 0x66, 0x65, - 0x72, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, - 0x3e, 0x3e, 0x3e, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x29, 0x20, 0x26, - 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x3b, 0x0a, 0x09, 0x09, 0x09, - 0x09, 0x09, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x20, 0x2d, 0x3d, - 0x20, 0x38, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, - 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x62, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x53, 0x20, 0x3e, 0x20, 0x30, 0x29, 0x0a, 0x09, - 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x20, 0x3c, 0x3c, 0x20, 0x28, 0x31, 0x36, 0x20, 0x2d, 0x20, 0x62, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x53, 0x29, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, - 0x46, 0x46, 0x46, 0x46, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x72, 0x65, - 0x74, 0x5b, 0x72, 0x65, 0x74, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, - 0x3e, 0x3e, 0x3e, 0x20, 0x38, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, - 0x46, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x09, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, - 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x72, 0x65, 0x74, - 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, 0x2c, 0x0a, 0x0a, - 0x09, 0x48, 0x65, 0x78, 0x3a, 0x0a, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x65, - 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x20, 0x28, 0x78, 0x29, 0x20, 0x3d, - 0x3e, 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x61, 0x72, - 0x20, 0x72, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x22, 0x22, 0x3b, 0x0a, 0x09, - 0x09, 0x09, 0x78, 0x2e, 0x66, 0x6f, 0x72, 0x45, 0x61, 0x63, 0x68, 0x28, - 0x79, 0x20, 0x3d, 0x3e, 0x20, 0x7b, 0x20, 0x72, 0x65, 0x74, 0x20, 0x2b, - 0x3d, 0x20, 0x79, 0x2e, 0x74, 0x6f, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x28, 0x31, 0x36, 0x29, 0x2e, 0x70, 0x61, 0x64, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x28, 0x32, 0x2c, 0x20, 0x22, 0x30, 0x22, 0x29, 0x3b, 0x20, 0x7d, - 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x72, 0x65, 0x74, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x2c, 0x0a, 0x09, - 0x09, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x20, 0x28, 0x78, 0x29, - 0x20, 0x3d, 0x3e, 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x76, - 0x61, 0x72, 0x20, 0x61, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, - 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x09, - 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x76, 0x61, 0x72, 0x20, 0x69, - 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x78, 0x2e, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3b, 0x20, 0x69, 0x20, 0x2b, 0x3d, - 0x20, 0x32, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, - 0x09, 0x61, 0x72, 0x72, 0x5b, 0x61, 0x72, 0x72, 0x2e, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x72, 0x65, 0x74, 0x29, 0x7d, 0x7d, 0x2c, 0x48, 0x65, 0x78, 0x3a, 0x7b, + 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x78, 0x3d, 0x3e, 0x7b, 0x76, + 0x61, 0x72, 0x20, 0x72, 0x65, 0x74, 0x3d, 0x22, 0x22, 0x3b, 0x78, 0x2e, + 0x66, 0x6f, 0x72, 0x45, 0x61, 0x63, 0x68, 0x28, 0x79, 0x3d, 0x3e, 0x7b, + 0x72, 0x65, 0x74, 0x2b, 0x3d, 0x79, 0x2e, 0x74, 0x6f, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x28, 0x31, 0x36, 0x29, 0x2e, 0x70, 0x61, 0x64, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x28, 0x32, 0x2c, 0x22, 0x30, 0x22, 0x29, 0x7d, + 0x29, 0x3b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x74, + 0x7d, 0x2c, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x78, 0x3d, 0x3e, + 0x7b, 0x76, 0x61, 0x72, 0x20, 0x61, 0x72, 0x72, 0x3d, 0x6e, 0x65, 0x77, + 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x30, 0x29, 0x3b, 0x66, 0x6f, + 0x72, 0x28, 0x76, 0x61, 0x72, 0x20, 0x69, 0x3d, 0x30, 0x3b, 0x69, 0x3c, + 0x78, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3b, 0x69, 0x2b, 0x3d, + 0x32, 0x29, 0x7b, 0x61, 0x72, 0x72, 0x5b, 0x61, 0x72, 0x72, 0x2e, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5d, 0x3d, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x74, 0x28, 0x78, 0x2e, 0x63, 0x68, 0x61, 0x72, 0x41, 0x74, - 0x28, 0x69, 0x29, 0x20, 0x2b, 0x20, 0x78, 0x2e, 0x63, 0x68, 0x61, 0x72, - 0x41, 0x74, 0x28, 0x69, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x2c, 0x20, 0x31, - 0x36, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x09, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x55, - 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x61, 0x72, - 0x72, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x7d, 0x2c, 0x0a, - 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x3a, 0x20, 0x61, 0x73, 0x79, 0x6e, 0x63, - 0x20, 0x28, 0x6d, 0x73, 0x67, 0x29, 0x20, 0x3d, 0x3e, 0x0a, 0x09, 0x7b, - 0x0a, 0x09, 0x09, 0x6d, 0x73, 0x67, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, - 0x20, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, - 0x28, 0x29, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x6d, 0x73, - 0x67, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x6b, 0x65, - 0x79, 0x20, 0x3d, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, - 0x49, 0x2e, 0x48, 0x65, 0x78, 0x2e, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, - 0x28, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x61, - 0x70, 0x69, 0x6b, 0x65, 0x79, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x2f, 0x2f, - 0x76, 0x61, 0x72, 0x20, 0x73, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x67, 0x65, 0x74, 0x52, 0x61, 0x6e, - 0x64, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x28, 0x6e, 0x65, - 0x77, 0x20, 0x55, 0x69, 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x28, 0x31, 0x32, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x76, 0x61, 0x72, - 0x20, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x7b, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x4d, 0x61, 0x74, 0x68, - 0x2e, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x28, 0x4d, 0x61, 0x74, 0x68, 0x2e, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x28, 0x29, 0x20, 0x2a, 0x20, 0x31, - 0x30, 0x30, 0x30, 0x30, 0x29, 0x20, 0x25, 0x20, 0x32, 0x35, 0x36, 0x20, - 0x7d, 0x3b, 0x3b, 0x0a, 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x73, 0x65, - 0x73, 0x73, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, - 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x5b, 0x72, 0x28, 0x29, - 0x2c, 0x20, 0x72, 0x28, 0x29, 0x2c, 0x20, 0x72, 0x28, 0x29, 0x2c, 0x20, - 0x72, 0x28, 0x29, 0x2c, 0x20, 0x72, 0x28, 0x29, 0x2c, 0x20, 0x72, 0x28, - 0x29, 0x2c, 0x20, 0x72, 0x28, 0x29, 0x2c, 0x20, 0x72, 0x28, 0x29, 0x2c, - 0x20, 0x72, 0x28, 0x29, 0x2c, 0x20, 0x72, 0x28, 0x29, 0x2c, 0x20, 0x72, - 0x28, 0x29, 0x2c, 0x20, 0x72, 0x28, 0x29, 0x5d, 0x29, 0x3b, 0x0a, 0x09, - 0x09, 0x76, 0x61, 0x72, 0x20, 0x72, 0x61, 0x77, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x3d, 0x20, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x52, 0x6f, 0x73, - 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, - 0x61, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x28, - 0x6b, 0x65, 0x79, 0x2c, 0x20, 0x73, 0x65, 0x73, 0x73, 0x2c, 0x20, 0x30, - 0x2c, 0x20, 0x6d, 0x73, 0x67, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x76, 0x61, - 0x72, 0x20, 0x64, 0x67, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x61, 0x77, 0x61, - 0x69, 0x74, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, - 0x2e, 0x48, 0x65, 0x78, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, + 0x28, 0x69, 0x29, 0x2b, 0x78, 0x2e, 0x63, 0x68, 0x61, 0x72, 0x41, 0x74, + 0x28, 0x69, 0x2b, 0x31, 0x29, 0x2c, 0x31, 0x36, 0x29, 0x7d, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, 0x6e, + 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x61, 0x72, 0x72, 0x29, + 0x7d, 0x7d, 0x2c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x3a, 0x61, 0x73, 0x79, 0x6e, 0x63, + 0x20, 0x6d, 0x73, 0x67, 0x3d, 0x3e, 0x7b, 0x6d, 0x73, 0x67, 0x3d, 0x28, + 0x6e, 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, + 0x64, 0x65, 0x72, 0x29, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, + 0x6d, 0x73, 0x67, 0x29, 0x3b, 0x76, 0x61, 0x72, 0x20, 0x6b, 0x65, 0x79, + 0x3d, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x48, + 0x65, 0x78, 0x2e, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x52, 0x6f, + 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x61, 0x70, 0x69, 0x6b, + 0x65, 0x79, 0x29, 0x3b, 0x76, 0x61, 0x72, 0x20, 0x72, 0x3d, 0x28, 0x29, + 0x3d, 0x3e, 0x7b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x4d, 0x61, + 0x74, 0x68, 0x2e, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x28, 0x4d, 0x61, 0x74, + 0x68, 0x2e, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x28, 0x29, 0x2a, 0x31, + 0x65, 0x34, 0x29, 0x25, 0x32, 0x35, 0x36, 0x7d, 0x3b, 0x76, 0x61, 0x72, + 0x20, 0x73, 0x65, 0x73, 0x73, 0x3d, 0x6e, 0x65, 0x77, 0x20, 0x55, 0x69, + 0x6e, 0x74, 0x38, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x5b, 0x72, 0x28, + 0x29, 0x2c, 0x72, 0x28, 0x29, 0x2c, 0x72, 0x28, 0x29, 0x2c, 0x72, 0x28, + 0x29, 0x2c, 0x72, 0x28, 0x29, 0x2c, 0x72, 0x28, 0x29, 0x2c, 0x72, 0x28, + 0x29, 0x2c, 0x72, 0x28, 0x29, 0x2c, 0x72, 0x28, 0x29, 0x2c, 0x72, 0x28, + 0x29, 0x2c, 0x72, 0x28, 0x29, 0x2c, 0x72, 0x28, 0x29, 0x5d, 0x29, 0x3b, + 0x76, 0x61, 0x72, 0x20, 0x72, 0x61, 0x77, 0x64, 0x61, 0x74, 0x61, 0x3d, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, - 0x41, 0x50, 0x49, 0x2e, 0x48, 0x4d, 0x41, 0x43, 0x53, 0x48, 0x41, 0x32, - 0x35, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x28, 0x6b, 0x65, 0x79, 0x2c, - 0x20, 0x72, 0x61, 0x77, 0x64, 0x61, 0x74, 0x61, 0x29, 0x29, 0x3b, 0x0a, - 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x3d, - 0x20, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, - 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x36, 0x34, 0x2e, - 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x72, 0x61, 0x77, 0x64, 0x61, - 0x74, 0x61, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x72, - 0x65, 0x73, 0x70, 0x20, 0x3d, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3d, - 0x22, 0x20, 0x2b, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, - 0x49, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x3b, 0x0a, - 0x09, 0x09, 0x72, 0x65, 0x73, 0x70, 0x20, 0x2b, 0x3d, 0x20, 0x22, 0x26, - 0x73, 0x65, 0x73, 0x73, 0x3d, 0x22, 0x20, 0x2b, 0x20, 0x52, 0x6f, 0x73, - 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x48, 0x65, 0x78, 0x2e, 0x65, - 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x73, 0x65, 0x73, 0x73, 0x29, 0x3b, - 0x0a, 0x09, 0x09, 0x72, 0x65, 0x73, 0x70, 0x20, 0x2b, 0x3d, 0x20, 0x22, - 0x26, 0x64, 0x67, 0x73, 0x74, 0x3d, 0x22, 0x20, 0x2b, 0x20, 0x64, 0x67, - 0x73, 0x74, 0x3b, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x73, 0x70, 0x20, 0x2b, - 0x3d, 0x20, 0x22, 0x26, 0x64, 0x61, 0x74, 0x61, 0x3d, 0x22, 0x20, 0x2b, - 0x20, 0x64, 0x61, 0x74, 0x61, 0x3b, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x70, 0x3b, 0x0a, 0x09, 0x7d, - 0x2c, 0x0a, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x20, 0x61, 0x73, 0x79, 0x6e, 0x63, - 0x20, 0x28, 0x6d, 0x73, 0x67, 0x29, 0x20, 0x3d, 0x3e, 0x0a, 0x09, 0x7b, - 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x21, 0x6d, 0x73, 0x67, 0x2e, - 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x28, 0x22, 0x75, 0x73, - 0x65, 0x72, 0x3d, 0x22, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x21, 0x6d, 0x73, - 0x67, 0x2e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x28, 0x22, - 0x26, 0x73, 0x65, 0x73, 0x73, 0x3d, 0x22, 0x29, 0x20, 0x7c, 0x7c, 0x20, - 0x21, 0x6d, 0x73, 0x67, 0x2e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x73, 0x28, 0x22, 0x26, 0x64, 0x67, 0x73, 0x74, 0x3d, 0x22, 0x29, 0x20, - 0x7c, 0x7c, 0x20, 0x21, 0x6d, 0x73, 0x67, 0x2e, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x73, 0x28, 0x22, 0x26, 0x64, 0x61, 0x74, 0x61, 0x3d, - 0x22, 0x29, 0x29, 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x20, 0x73, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x20, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x20, 0x22, 0x69, - 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x20, 0x7d, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, - 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x3d, - 0x20, 0x6d, 0x73, 0x67, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22, - 0x75, 0x73, 0x65, 0x72, 0x3d, 0x22, 0x29, 0x5b, 0x31, 0x5d, 0x2e, 0x73, - 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22, 0x26, 0x22, 0x29, 0x5b, 0x30, 0x5d, - 0x2e, 0x74, 0x72, 0x69, 0x6d, 0x28, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x76, - 0x61, 0x72, 0x20, 0x73, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x6d, 0x73, - 0x67, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22, 0x26, 0x73, 0x65, - 0x73, 0x73, 0x3d, 0x22, 0x29, 0x5b, 0x31, 0x5d, 0x2e, 0x73, 0x70, 0x6c, - 0x69, 0x74, 0x28, 0x22, 0x26, 0x22, 0x29, 0x5b, 0x30, 0x5d, 0x2e, 0x74, - 0x72, 0x69, 0x6d, 0x28, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x76, 0x61, 0x72, - 0x20, 0x64, 0x67, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x6d, 0x73, 0x67, 0x2e, - 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22, 0x26, 0x64, 0x67, 0x73, 0x74, - 0x3d, 0x22, 0x29, 0x5b, 0x31, 0x5d, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, - 0x28, 0x22, 0x26, 0x22, 0x29, 0x5b, 0x30, 0x5d, 0x2e, 0x74, 0x72, 0x69, - 0x6d, 0x28, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x20, 0x3d, 0x20, 0x6d, 0x73, 0x67, 0x2e, 0x73, 0x70, - 0x6c, 0x69, 0x74, 0x28, 0x22, 0x26, 0x64, 0x61, 0x74, 0x61, 0x3d, 0x22, - 0x29, 0x5b, 0x31, 0x5d, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22, - 0x26, 0x22, 0x29, 0x5b, 0x30, 0x5d, 0x2e, 0x74, 0x72, 0x69, 0x6d, 0x28, - 0x29, 0x3b, 0x0a, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x75, 0x73, - 0x65, 0x72, 0x20, 0x21, 0x3d, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, - 0x41, 0x50, 0x49, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, - 0x29, 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x20, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x20, 0x22, 0x69, 0x6e, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x69, 0x6e, - 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x7d, - 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x3d, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, - 0x2e, 0x42, 0x61, 0x73, 0x65, 0x36, 0x34, 0x2e, 0x64, 0x65, 0x63, 0x6f, - 0x64, 0x65, 0x28, 0x64, 0x61, 0x74, 0x61, 0x29, 0x3b, 0x0a, 0x09, 0x09, - 0x73, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, - 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x48, 0x65, 0x78, 0x2e, 0x64, 0x65, 0x63, - 0x6f, 0x64, 0x65, 0x28, 0x73, 0x65, 0x73, 0x73, 0x29, 0x3b, 0x0a, 0x09, - 0x09, 0x76, 0x61, 0x72, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x3d, 0x20, 0x52, - 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x48, 0x65, 0x78, - 0x2e, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x52, 0x6f, 0x73, 0x61, - 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, - 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x76, 0x61, 0x72, 0x20, 0x73, 0x69, 0x67, - 0x20, 0x3d, 0x20, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x52, 0x6f, 0x73, - 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x48, 0x65, 0x78, 0x2e, 0x65, - 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, - 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x48, 0x4d, - 0x41, 0x43, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x2e, 0x73, 0x69, 0x67, - 0x6e, 0x28, 0x6b, 0x65, 0x79, 0x2c, 0x20, 0x64, 0x61, 0x74, 0x61, 0x29, - 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x73, 0x69, 0x67, - 0x20, 0x21, 0x3d, 0x20, 0x64, 0x67, 0x73, 0x74, 0x29, 0x0a, 0x09, 0x09, - 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x7b, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x66, - 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x3a, 0x20, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x20, - 0x7d, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x76, 0x61, 0x72, - 0x20, 0x72, 0x65, 0x73, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x77, 0x61, 0x69, + 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, + 0x2e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x28, 0x6b, 0x65, 0x79, + 0x2c, 0x73, 0x65, 0x73, 0x73, 0x2c, 0x30, 0x2c, 0x6d, 0x73, 0x67, 0x29, + 0x3b, 0x76, 0x61, 0x72, 0x20, 0x64, 0x67, 0x73, 0x74, 0x3d, 0x61, 0x77, + 0x61, 0x69, 0x74, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, + 0x49, 0x2e, 0x48, 0x65, 0x78, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, + 0x28, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, + 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x48, 0x4d, 0x41, 0x43, 0x53, 0x48, 0x41, + 0x32, 0x35, 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x28, 0x6b, 0x65, 0x79, + 0x2c, 0x72, 0x61, 0x77, 0x64, 0x61, 0x74, 0x61, 0x29, 0x29, 0x3b, 0x76, + 0x61, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x3d, 0x61, 0x77, 0x61, 0x69, + 0x74, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, + 0x42, 0x61, 0x73, 0x65, 0x36, 0x34, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, + 0x65, 0x28, 0x72, 0x61, 0x77, 0x64, 0x61, 0x74, 0x61, 0x29, 0x3b, 0x76, + 0x61, 0x72, 0x20, 0x72, 0x65, 0x73, 0x70, 0x3d, 0x22, 0x75, 0x73, 0x65, + 0x72, 0x3d, 0x22, 0x2b, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, + 0x49, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x3b, 0x72, + 0x65, 0x73, 0x70, 0x2b, 0x3d, 0x22, 0x26, 0x73, 0x65, 0x73, 0x73, 0x3d, + 0x22, 0x2b, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, + 0x48, 0x65, 0x78, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x73, + 0x65, 0x73, 0x73, 0x29, 0x3b, 0x72, 0x65, 0x73, 0x70, 0x2b, 0x3d, 0x22, + 0x26, 0x64, 0x67, 0x73, 0x74, 0x3d, 0x22, 0x2b, 0x64, 0x67, 0x73, 0x74, + 0x3b, 0x72, 0x65, 0x73, 0x70, 0x2b, 0x3d, 0x22, 0x26, 0x64, 0x61, 0x74, + 0x61, 0x3d, 0x22, 0x2b, 0x64, 0x61, 0x74, 0x61, 0x3b, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x70, 0x7d, 0x2c, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, + 0x61, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x6d, 0x73, 0x67, 0x3d, 0x3e, 0x7b, + 0x69, 0x66, 0x28, 0x21, 0x6d, 0x73, 0x67, 0x2e, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x73, 0x28, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3d, 0x22, + 0x29, 0x7c, 0x7c, 0x21, 0x6d, 0x73, 0x67, 0x2e, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x73, 0x28, 0x22, 0x26, 0x73, 0x65, 0x73, 0x73, 0x3d, + 0x22, 0x29, 0x7c, 0x7c, 0x21, 0x6d, 0x73, 0x67, 0x2e, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x73, 0x28, 0x22, 0x26, 0x64, 0x67, 0x73, 0x74, + 0x3d, 0x22, 0x29, 0x7c, 0x7c, 0x21, 0x6d, 0x73, 0x67, 0x2e, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x28, 0x22, 0x26, 0x64, 0x61, 0x74, + 0x61, 0x3d, 0x22, 0x29, 0x29, 0x7b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x7b, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x3a, 0x66, 0x61, 0x6c, + 0x73, 0x65, 0x2c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, + 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7d, 0x7d, 0x76, 0x61, 0x72, 0x20, + 0x75, 0x73, 0x65, 0x72, 0x3d, 0x6d, 0x73, 0x67, 0x2e, 0x73, 0x70, 0x6c, + 0x69, 0x74, 0x28, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3d, 0x22, 0x29, 0x5b, + 0x31, 0x5d, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22, 0x26, 0x22, + 0x29, 0x5b, 0x30, 0x5d, 0x2e, 0x74, 0x72, 0x69, 0x6d, 0x28, 0x29, 0x3b, + 0x76, 0x61, 0x72, 0x20, 0x73, 0x65, 0x73, 0x73, 0x3d, 0x6d, 0x73, 0x67, + 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22, 0x26, 0x73, 0x65, 0x73, + 0x73, 0x3d, 0x22, 0x29, 0x5b, 0x31, 0x5d, 0x2e, 0x73, 0x70, 0x6c, 0x69, + 0x74, 0x28, 0x22, 0x26, 0x22, 0x29, 0x5b, 0x30, 0x5d, 0x2e, 0x74, 0x72, + 0x69, 0x6d, 0x28, 0x29, 0x3b, 0x76, 0x61, 0x72, 0x20, 0x64, 0x67, 0x73, + 0x74, 0x3d, 0x6d, 0x73, 0x67, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, + 0x22, 0x26, 0x64, 0x67, 0x73, 0x74, 0x3d, 0x22, 0x29, 0x5b, 0x31, 0x5d, + 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22, 0x26, 0x22, 0x29, 0x5b, + 0x30, 0x5d, 0x2e, 0x74, 0x72, 0x69, 0x6d, 0x28, 0x29, 0x3b, 0x76, 0x61, + 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x3d, 0x6d, 0x73, 0x67, 0x2e, 0x73, + 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22, 0x26, 0x64, 0x61, 0x74, 0x61, 0x3d, + 0x22, 0x29, 0x5b, 0x31, 0x5d, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, + 0x22, 0x26, 0x22, 0x29, 0x5b, 0x30, 0x5d, 0x2e, 0x74, 0x72, 0x69, 0x6d, + 0x28, 0x29, 0x3b, 0x69, 0x66, 0x28, 0x75, 0x73, 0x65, 0x72, 0x21, 0x3d, + 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x7b, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x7b, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x3a, 0x66, + 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x3a, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x75, + 0x73, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x7d, 0x7d, 0x64, 0x61, 0x74, 0x61, 0x3d, 0x52, + 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x42, 0x61, 0x73, + 0x65, 0x36, 0x34, 0x2e, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x64, + 0x61, 0x74, 0x61, 0x29, 0x3b, 0x73, 0x65, 0x73, 0x73, 0x3d, 0x52, 0x6f, + 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x48, 0x65, 0x78, 0x2e, + 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x73, 0x65, 0x73, 0x73, 0x29, + 0x3b, 0x76, 0x61, 0x72, 0x20, 0x6b, 0x65, 0x79, 0x3d, 0x52, 0x6f, 0x73, + 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x48, 0x65, 0x78, 0x2e, 0x64, + 0x65, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, + 0x41, 0x50, 0x49, 0x2e, 0x61, 0x70, 0x69, 0x6b, 0x65, 0x79, 0x29, 0x3b, + 0x76, 0x61, 0x72, 0x20, 0x73, 0x69, 0x67, 0x3d, 0x61, 0x77, 0x61, 0x69, + 0x74, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, + 0x48, 0x65, 0x78, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x61, + 0x77, 0x61, 0x69, 0x74, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, + 0x50, 0x49, 0x2e, 0x48, 0x4d, 0x41, 0x43, 0x53, 0x48, 0x41, 0x32, 0x35, + 0x36, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x28, 0x6b, 0x65, 0x79, 0x2c, 0x64, + 0x61, 0x74, 0x61, 0x29, 0x29, 0x3b, 0x69, 0x66, 0x28, 0x73, 0x69, 0x67, + 0x21, 0x3d, 0x64, 0x67, 0x73, 0x74, 0x29, 0x7b, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x7b, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x3a, 0x66, + 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x3a, 0x22, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x7d, 0x7d, 0x76, + 0x61, 0x72, 0x20, 0x72, 0x65, 0x73, 0x70, 0x3d, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x43, 0x68, 0x61, 0x43, 0x68, 0x61, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x28, 0x6b, 0x65, 0x79, 0x2c, 0x20, 0x73, 0x65, - 0x73, 0x73, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x64, 0x61, 0x74, 0x61, 0x29, - 0x3b, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x73, 0x70, 0x20, 0x3d, 0x20, 0x6e, - 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, 0x44, 0x65, 0x63, 0x6f, 0x64, - 0x65, 0x72, 0x28, 0x29, 0x2e, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x28, - 0x72, 0x65, 0x73, 0x70, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x73, - 0x70, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x73, 0x70, 0x20, 0x3f, 0x20, 0x72, - 0x65, 0x73, 0x70, 0x20, 0x3a, 0x20, 0x22, 0x28, 0x6e, 0x75, 0x6c, 0x6c, - 0x29, 0x22, 0x3b, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x7b, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x3a, 0x20, - 0x74, 0x72, 0x75, 0x65, 0x2c, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x3a, 0x20, 0x72, 0x65, 0x73, 0x70, 0x20, 0x7d, 0x3b, 0x0a, - 0x09, 0x7d, 0x2c, 0x0a, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x3a, 0x20, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x28, 0x6d, 0x73, - 0x67, 0x29, 0x20, 0x3d, 0x3e, 0x0a, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x69, - 0x66, 0x20, 0x28, 0x6d, 0x73, 0x67, 0x2e, 0x74, 0x72, 0x69, 0x6d, 0x28, - 0x29, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x3d, 0x3d, 0x20, - 0x30, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x7b, 0x20, - 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x74, 0x72, 0x75, - 0x65, 0x2c, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, - 0x20, 0x22, 0x22, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x09, 0x09, 0x76, - 0x61, 0x72, 0x20, 0x72, 0x65, 0x71, 0x20, 0x3d, 0x20, 0x61, 0x77, 0x61, - 0x69, 0x74, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, - 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x28, 0x6d, 0x73, 0x67, 0x29, 0x3b, 0x0a, 0x09, - 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x77, 0x61, 0x69, - 0x74, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x50, 0x72, 0x6f, 0x6d, 0x69, 0x73, - 0x65, 0x28, 0x72, 0x20, 0x3d, 0x3e, 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, - 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x78, 0x68, 0x72, 0x20, - 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x58, 0x4d, 0x4c, 0x48, 0x74, 0x74, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x28, 0x29, 0x3b, 0x0a, - 0x09, 0x09, 0x09, 0x78, 0x68, 0x72, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x28, - 0x22, 0x50, 0x4f, 0x53, 0x54, 0x22, 0x2c, 0x20, 0x52, 0x6f, 0x73, 0x61, - 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x0a, 0x09, - 0x09, 0x09, 0x78, 0x68, 0x72, 0x2e, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x28, 0x22, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, - 0x22, 0x2c, 0x20, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x72, 0x79, 0x70, 0x74, 0x28, 0x6b, 0x65, 0x79, 0x2c, 0x73, 0x65, 0x73, + 0x73, 0x2c, 0x30, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x29, 0x3b, 0x72, 0x65, + 0x73, 0x70, 0x3d, 0x28, 0x6e, 0x65, 0x77, 0x20, 0x54, 0x65, 0x78, 0x74, + 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x29, 0x2e, 0x64, 0x65, 0x63, + 0x6f, 0x64, 0x65, 0x28, 0x72, 0x65, 0x73, 0x70, 0x29, 0x3b, 0x72, 0x65, + 0x73, 0x70, 0x3d, 0x72, 0x65, 0x73, 0x70, 0x3f, 0x72, 0x65, 0x73, 0x70, + 0x3a, 0x22, 0x28, 0x6e, 0x75, 0x6c, 0x6c, 0x29, 0x22, 0x3b, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x7b, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x3a, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x3a, 0x72, 0x65, 0x73, 0x70, 0x7d, 0x7d, 0x2c, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x3a, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x20, + 0x6d, 0x73, 0x67, 0x3d, 0x3e, 0x7b, 0x69, 0x66, 0x28, 0x6d, 0x73, 0x67, + 0x2e, 0x74, 0x72, 0x69, 0x6d, 0x28, 0x29, 0x2e, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x3d, 0x3d, 0x30, 0x29, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x7b, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x3a, 0x74, 0x72, 0x75, + 0x65, 0x2c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x22, + 0x22, 0x7d, 0x3b, 0x76, 0x61, 0x72, 0x20, 0x72, 0x65, 0x71, 0x3d, 0x61, + 0x77, 0x61, 0x69, 0x74, 0x20, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, + 0x50, 0x49, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x28, 0x6d, 0x73, 0x67, 0x29, 0x3b, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x77, 0x61, 0x69, 0x74, + 0x20, 0x6e, 0x65, 0x77, 0x20, 0x50, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x65, + 0x28, 0x72, 0x3d, 0x3e, 0x7b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x78, + 0x68, 0x72, 0x3d, 0x6e, 0x65, 0x77, 0x20, 0x58, 0x4d, 0x4c, 0x48, 0x74, + 0x74, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x3b, 0x78, 0x68, + 0x72, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x22, 0x50, 0x4f, 0x53, 0x54, + 0x22, 0x2c, 0x52, 0x6f, 0x73, 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x74, 0x72, 0x75, + 0x65, 0x29, 0x3b, 0x78, 0x68, 0x72, 0x2e, 0x73, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x28, + 0x22, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, + 0x65, 0x22, 0x2c, 0x22, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x2d, 0x77, 0x77, 0x77, 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x2d, 0x75, 0x72, 0x6c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, - 0x64, 0x22, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x09, 0x78, 0x68, 0x72, 0x2e, - 0x6f, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x79, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x28, 0x78, 0x29, - 0x20, 0x3d, 0x3e, 0x0a, 0x09, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x20, - 0x20, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x78, 0x68, 0x72, 0x2e, 0x72, - 0x65, 0x61, 0x64, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x20, 0x3d, 0x3d, - 0x3d, 0x20, 0x58, 0x4d, 0x4c, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x4f, 0x4e, 0x45, 0x29, 0x0a, 0x09, - 0x09, 0x20, 0x20, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x20, 0x20, 0x09, - 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x78, 0x68, 0x72, 0x2e, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x20, 0x3d, 0x3d, 0x3d, 0x20, 0x32, 0x30, 0x30, - 0x29, 0x0a, 0x09, 0x09, 0x20, 0x20, 0x09, 0x09, 0x09, 0x7b, 0x0a, 0x09, - 0x09, 0x20, 0x20, 0x09, 0x09, 0x09, 0x09, 0x52, 0x6f, 0x73, 0x61, 0x64, - 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x78, 0x68, 0x72, 0x2e, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x65, 0x78, 0x74, 0x29, - 0x2e, 0x74, 0x68, 0x65, 0x6e, 0x28, 0x70, 0x72, 0x20, 0x3d, 0x3e, 0x20, - 0x7b, 0x20, 0x72, 0x28, 0x70, 0x72, 0x29, 0x3b, 0x20, 0x7d, 0x29, 0x2e, - 0x63, 0x61, 0x74, 0x63, 0x68, 0x28, 0x78, 0x20, 0x3d, 0x3e, 0x20, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x28, 0x22, 0x45, 0x52, 0x52, 0x28, 0x33, 0x29, - 0x22, 0x29, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x20, 0x20, 0x09, 0x09, 0x09, - 0x7d, 0x0a, 0x09, 0x09, 0x20, 0x20, 0x09, 0x09, 0x09, 0x65, 0x6c, 0x73, - 0x65, 0x0a, 0x09, 0x09, 0x20, 0x20, 0x09, 0x09, 0x09, 0x7b, 0x0a, 0x09, - 0x09, 0x20, 0x20, 0x09, 0x09, 0x09, 0x09, 0x72, 0x28, 0x7b, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, - 0x2c, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x20, - 0x78, 0x68, 0x72, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x74, - 0x6f, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x29, 0x7d, 0x29, 0x3b, - 0x0a, 0x09, 0x20, 0x20, 0x09, 0x09, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, - 0x20, 0x20, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x20, 0x20, 0x09, 0x09, 0x7d, - 0x0a, 0x09, 0x09, 0x09, 0x78, 0x68, 0x72, 0x2e, 0x73, 0x65, 0x6e, 0x64, - 0x28, 0x72, 0x65, 0x71, 0x29, 0x3b, 0x0a, 0x09, 0x09, 0x7d, 0x29, 0x2e, - 0x63, 0x61, 0x74, 0x63, 0x68, 0x28, 0x78, 0x20, 0x3d, 0x3e, 0x20, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x28, 0x22, 0x45, 0x52, 0x52, 0x28, 0x31, 0x29, - 0x3a, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x78, 0x29, 0x29, 0x3b, 0x0a, 0x09, - 0x7d, 0x0a, 0x7d, 0x3b, 0x0a, 0x0a + 0x64, 0x22, 0x29, 0x3b, 0x78, 0x68, 0x72, 0x2e, 0x6f, 0x6e, 0x72, 0x65, + 0x61, 0x64, 0x79, 0x73, 0x74, 0x61, 0x74, 0x65, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x3d, 0x78, 0x3d, 0x3e, 0x7b, 0x69, 0x66, 0x28, 0x78, 0x68, + 0x72, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x3d, 0x3d, 0x3d, 0x58, 0x4d, 0x4c, 0x48, 0x74, 0x74, 0x70, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x4f, 0x4e, 0x45, 0x29, 0x7b, + 0x69, 0x66, 0x28, 0x78, 0x68, 0x72, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x3d, 0x3d, 0x3d, 0x32, 0x30, 0x30, 0x29, 0x7b, 0x52, 0x6f, 0x73, + 0x61, 0x64, 0x6f, 0x41, 0x50, 0x49, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x78, 0x68, 0x72, + 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x65, 0x78, + 0x74, 0x29, 0x2e, 0x74, 0x68, 0x65, 0x6e, 0x28, 0x70, 0x72, 0x3d, 0x3e, + 0x7b, 0x72, 0x28, 0x70, 0x72, 0x29, 0x7d, 0x29, 0x2e, 0x63, 0x61, 0x74, + 0x63, 0x68, 0x28, 0x78, 0x3d, 0x3e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x28, + 0x22, 0x45, 0x52, 0x52, 0x28, 0x33, 0x29, 0x22, 0x29, 0x29, 0x7d, 0x65, + 0x6c, 0x73, 0x65, 0x7b, 0x72, 0x28, 0x7b, 0x73, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x3a, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x3a, 0x78, 0x68, 0x72, 0x2e, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x2e, 0x74, 0x6f, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x28, 0x29, 0x7d, 0x29, 0x7d, 0x7d, 0x7d, 0x3b, 0x78, 0x68, 0x72, + 0x2e, 0x73, 0x65, 0x6e, 0x64, 0x28, 0x72, 0x65, 0x71, 0x29, 0x7d, 0x29, + 0x2e, 0x63, 0x61, 0x74, 0x63, 0x68, 0x28, 0x78, 0x3d, 0x3e, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x28, 0x22, 0x45, 0x52, 0x52, 0x28, 0x31, 0x29, 0x3a, + 0x20, 0x22, 0x2b, 0x78, 0x29, 0x29, 0x7d, 0x7d, 0x3b diff --git a/src/main.c b/src/main.c index 8f686ff..9fb1c2c 100644 --- a/src/main.c +++ b/src/main.c @@ -360,27 +360,15 @@ void *handleRequest(void *vargp) info = httpParse("Path", buff, buff_len); if ( strcmp(info, "/") == 0 ) { - uint8_t* frontend = malloc(sizeof(FRONTEND) + 1); - memcpy(frontend, FRONTEND, sizeof(FRONTEND)); - frontend[sizeof(FRONTEND)] = 0; - httpStringOut(session_fd, frontend); - free(frontend); + httpFileOut(session_fd, FRONTEND, "text/html", sizeof(FRONTEND)); } - else if ( strcmp(info, "/rosado-api.js") == 0 ) + else if ( strcmp(info, "/rosado-api.min.js") == 0 ) { - uint8_t* frontend = malloc(sizeof(JAVASCRIPT) + 1); - memcpy(frontend, JAVASCRIPT, sizeof(JAVASCRIPT)); - frontend[sizeof(JAVASCRIPT)] = 0; - httpStringOut(session_fd, frontend); - free(frontend); + httpFileOut(session_fd, JAVASCRIPT, "application/javascript", sizeof(JAVASCRIPT)); } else if ( strcmp(info, "/favicon.ico") == 0 ) { - uint8_t* frontend = malloc(sizeof(FAVICON) + 1); - memcpy(frontend, FAVICON, sizeof(FAVICON)); - frontend[sizeof(FAVICON)] = 0; - httpStringOutByType(session_fd, frontend, "image/x-icon"); - free(frontend); + httpFileOut(session_fd, FAVICON, "image/x-icon", sizeof(FAVICON)); } else { @@ -404,12 +392,12 @@ void *handleRequest(void *vargp) httpEnd(session_fd); } -void get_sqlpass() +void get_conf() { - FILE *f = fopen("/usr/share/rosadoapi/password", "r"); + FILE *f = fopen("/etc/rosado-api.conf", "r"); if (!f) { - fprintf(stderr, "RosadoAPI: Could not access /usr/share/rosadoapi/password\n"); + fprintf(stderr, "RosadoAPI: Could not access /etc/rosado-api.conf\n"); exit(1); } int c; @@ -421,33 +409,14 @@ void get_sqlpass() if (plen == sizeof(SQLPASS) - 2) break; } SQLPASS[plen] = 0; -} - -void get_webport() -{ - FILE *f = fopen("/usr/share/rosadoapi/port", "r"); - if (!f) - { - WEBPORT[0] = '8'; - WEBPORT[1] = '6'; - WEBPORT[2] = '6'; - WEBPORT[3] = '6'; - WEBPORT[4] = 0; - fprintf(stderr, "RosadoAPI: Could not access /usr/share/rosadoapi/port\n"); - fprintf(stderr, "RosadoAPI: Using default port %s.\n", WEBPORT); - printf("RosadoAPI: Listening on port %s...\n", WEBPORT); - return; - } - int c; - int plen = 0; + plen = 0; while ( (c = fgetc(f)) != EOF) { - if (c == '\n' || c == '\r' || c == ' ') break; + if (c == '\n' || c == '\r' || c == ' ') continue; WEBPORT[plen++] = c; if (plen == sizeof(WEBPORT) - 2) break; } WEBPORT[plen] = 0; - printf("RosadoAPI: Listening on port %s...\n", WEBPORT); } void get_hostname() @@ -486,8 +455,8 @@ void get_hostname() void main() { get_hostname(); - get_sqlpass(); - get_webport(); + get_conf(); + printf("Listening on port %s...\n", WEBPORT); MYSQL *conn; MYSQL_RES *res; diff --git a/src/www/.frontend.html.swp b/src/www/.frontend.html.swp new file mode 100644 index 0000000..5effef6 Binary files /dev/null and b/src/www/.frontend.html.swp differ diff --git a/src/www/frontend.html b/src/www/frontend.html index f132617..2c97901 100644 --- a/src/www/frontend.html +++ b/src/www/frontend.html @@ -2,7 +2,7 @@ RosadoAPI - +