From 16cca612af50f4f205374461273f3781936bd789 Mon Sep 17 00:00:00 2001 From: Stevanatto Date: Sat, 8 Dec 2018 15:31:53 -0200 Subject: [PATCH] PC source code in only one file for all OS - Windows, Linux and Mac. Included delay in Linux for slow down. The BlkTot not multiple of 512 implemented for all OS. It was tested in Windows and Linux. --- SourceCode/Linux/main.c | 538 -------------------------- SourceCode/MacOSX/main.c | 488 ------------------------ SourceCode/Windows/main.c | 454 ---------------------- SourceCode/ccloader | Bin 0 -> 19406 bytes SourceCode/ccloader.exe | Bin 0 -> 78533 bytes SourceCode/main.c | 735 ++++++++++++++++++++++++++++++++++++ Windows/CCLoader.exe | Bin 332529 -> 0 bytes Windows/CCLoader_x86_64.exe | Bin 144275 -> 0 bytes 8 files changed, 735 insertions(+), 1480 deletions(-) delete mode 100644 SourceCode/Linux/main.c delete mode 100644 SourceCode/MacOSX/main.c delete mode 100644 SourceCode/Windows/main.c create mode 100755 SourceCode/ccloader create mode 100644 SourceCode/ccloader.exe create mode 100644 SourceCode/main.c delete mode 100644 Windows/CCLoader.exe delete mode 100644 Windows/CCLoader_x86_64.exe diff --git a/SourceCode/Linux/main.c b/SourceCode/Linux/main.c deleted file mode 100644 index b6755a1..0000000 --- a/SourceCode/Linux/main.c +++ /dev/null @@ -1,538 +0,0 @@ -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int RS232_OpenComport(int, int); -int RS232_PollComport(int, unsigned char *, int); -int RS232_SendByte(int, unsigned char); -int RS232_SendBuf(int, unsigned char *, int); -void RS232_CloseComport(int); -void RS232_cputs(int, const char *); -int RS232_IsCTSEnabled(int); -int RS232_IsDSREnabled(int); -void RS232_enableDTR(int); -void RS232_disableDTR(int); -void RS232_enableRTS(int); -void RS232_disableRTS(int); - -#define SBEGIN 0x01 -#define SDATA 0x02 -#define SRSP 0x03 -#define SEND 0x04 -#define ERRO 0x05 - -FILE *pfile = NULL; -long fsize = 0; -int BlkTot = 0; -int Remain = 0; -int BlkNum = 0; -int DownloadProgress = 0; -int com = -1; -int end = 0; - -int Cport[30], error; - -struct termios new_port_settings, old_port_settings[30]; - -char comports[30][16]={"/dev/ttyS0","/dev/ttyS1","/dev/ttyS2","/dev/ttyS3","/dev/ttyS4","/dev/ttyS5", - "/dev/ttyS6","/dev/ttyS7","/dev/ttyS8","/dev/ttyS9","/dev/ttyS10","/dev/ttyS11", - "/dev/ttyS12","/dev/ttyS13","/dev/ttyS14","/dev/ttyS15","/dev/ttyUSB0", - "/dev/ttyUSB1","/dev/ttyUSB2","/dev/ttyUSB3","/dev/ttyUSB4","/dev/ttyUSB5", - "/dev/ttyAMA0","/dev/ttyAMA1","/dev/ttyACM0","/dev/ttyACM1", - "/dev/rfcomm0","/dev/rfcomm1","/dev/ircomm0","/dev/ircomm1"}; - -void ProcessProgram(void); - -/* -* argv[0]----.exe file name -* argv[1]----ComPort number -* argv[2]----file path -*/ -int main(int arg, char *argv[]) -{ - int fLen = 0; - int device = 0; - - if(arg < 4) - { - printf("Invalid parameters.\n"); - printf("Usage: %s \n", argv[0]); - printf("Example: %s 2 abc.bin 0\n", argv[0]); - printf(" : 0 -- Default (e.g. UNO)\n"); - printf(" 1 -- Leonardo\n"); - return 0; - } - int i; - for(i=0; i<30; i++) - { - if(NULL != strstr(comports[i], argv[1])) - { - com = i; - break; - } - else if(i == 29 && com == -1) - { - printf("Port not found, check if arguments are in the correct order.\n"); - return 0; - } - } - if(1 == RS232_OpenComport(com, 115200)) - { - return 0; // Open comprt error - } - printf("Comport open:\n"); - - device = atoi(argv[3]); - if(device == 0) - { - printf("Device : Default (e.g. UNO)\n\n"); - printf("Baud:115200 data:8 parity:none stopbit:1 DTR:off RTS:off\n"); - RS232_disableDTR(com); - } - else - { - printf("Device: Leonardo\n\n"); - printf("Baud:115200 data:8 parity:none stopbit:1 DTR:on RTS:off\n"); - RS232_enableDTR(com); - } - RS232_disableRTS(com); - - char form[5] = ".bin"; - char format[5] = " "; - fLen = strlen(argv[2]); - if(fLen < 5) - { - printf("File path is invalid!\n"); - return 0; // file path is not valid - } - format[3] = argv[2][fLen-1]; - format[2] = argv[2][fLen-2]; - format[1] = argv[2][fLen-3]; - format[0] = argv[2][fLen-4]; - if(0 != strcmp(form, format)) - { - printf("File format must be .bin"); - return 0; - } - pfile = fopen(argv[2], "rb"); // read only - if(NULL == pfile) - { - printf("file doesn't exist or is occupied!\n"); - return 0; - } - printf("File open success!\n"); - fseek(pfile,0,SEEK_SET); - fseek(pfile,0,SEEK_END); - fsize = ftell(pfile); - fseek(pfile,0,SEEK_SET); - //BlkTot = fsize / 512; - Remain = fsize % 512; - if(Remain != 0) - { - BlkTot = fsize / 512 + 1; - printf("Warning: file size isn't the integer multiples of 512, last bytes will be set to 0xFF\n"); - } - else - { - BlkTot = fsize / 512; - } - - printf("Block total: %d\n", BlkTot); - BlkNum = 0; - - printf("Enable transmission...\n"); - unsigned char buf[2] = {SBEGIN, 0}; // Enable transmission, do not verify - if(RS232_SendBuf(com, buf, 2) != 2) - { - printf("Enable failed!\n"); - fclose(pfile); - printf("File closed!\n"); - RS232_CloseComport(com); - printf("Comport closed!\n"); - return 0; - } - else - { - printf("Request sent already! Waiting for respond...\n"); - } - - while(!end) - { - ProcessProgram(); - } - printf("Program successfully!\n"); - BlkNum = 0; - DownloadProgress = 0; - fclose(pfile); - printf("File closed!\n"); - RS232_CloseComport(com); - printf("Comport closed!\n"); - - return 0; -} - -void ProcessProgram() -{ - int len; - unsigned char rx; - len = RS232_PollComport(com, &rx, 1); - if(len > 0) - { - switch(rx) - { - case SRSP: - { - if(BlkNum == BlkTot) - { - unsigned char temp = SEND; - RS232_SendByte(com, temp); - end = 1; - } - else - { - if(BlkNum == 0) - { - printf("Begin programming...\n"); - } - DownloadProgress = 1; - unsigned char buf[515]; - buf[0] = SDATA; - - if((BlkNum == (BlkTot-1)) && (Remain != 0)) - { - fread(buf+1, Remain, 1, pfile); - int filled = 512 - Remain; - //int i = 0; - for(int i = 0; i> 8) & 0x00FF; - buf[514] = CheckSum & 0x00FF; - - RS232_SendBuf(com, buf, 515); - BlkNum++; - printf("%d ", BlkNum); - } - break; - } - - case ERRO: - { - if(DownloadProgress == 1) - { - end = 1; - printf("Verify failed!\n"); - } - else - { - end = 1; - printf("No chip detected!\n"); - } - break; - } - - default: - break; - } - len = 0; - } -} - -int RS232_OpenComport(int comport_number, int baudrate) -{ - int baudr, status; - - if((comport_number>29)||(comport_number<0)) - { - printf("illegal comport number\n"); - return(1); - } - - switch(baudrate) - { - case 50 : baudr = B50; - break; - case 75 : baudr = B75; - break; - case 110 : baudr = B110; - break; - case 134 : baudr = B134; - break; - case 150 : baudr = B150; - break; - case 200 : baudr = B200; - break; - case 300 : baudr = B300; - break; - case 600 : baudr = B600; - break; - case 1200 : baudr = B1200; - break; - case 1800 : baudr = B1800; - break; - case 2400 : baudr = B2400; - break; - case 4800 : baudr = B4800; - break; - case 9600 : baudr = B9600; - break; - case 19200 : baudr = B19200; - break; - case 38400 : baudr = B38400; - break; - case 57600 : baudr = B57600; - break; - case 115200 : baudr = B115200; - break; - case 230400 : baudr = B230400; - break; - case 460800 : baudr = B460800; - break; - case 500000 : baudr = B500000; - break; - case 576000 : baudr = B576000; - break; - case 921600 : baudr = B921600; - break; - case 1000000 : baudr = B1000000; - break; - default : printf("invalid baudrate\n"); - return(1); - break; - } - - Cport[comport_number] = open(comports[comport_number], O_RDWR | O_NOCTTY | O_NDELAY); - if(Cport[comport_number]==-1) - { - perror("unable to open comport "); - return(1); - } - - error = tcgetattr(Cport[comport_number], old_port_settings + comport_number); - if(error==-1) - { - close(Cport[comport_number]); - perror("unable to read portsettings "); - return(1); - } - memset(&new_port_settings, 0, sizeof(new_port_settings)); /* clear the new struct */ - - new_port_settings.c_cflag = baudr | CS8 | CLOCAL | CREAD; - new_port_settings.c_iflag = IGNPAR; - new_port_settings.c_oflag = 0; - new_port_settings.c_lflag = 0; - new_port_settings.c_cc[VMIN] = 0; /* block untill n bytes are received */ - new_port_settings.c_cc[VTIME] = 0; /* block untill a timer expires (n * 100 mSec.) */ - error = tcsetattr(Cport[comport_number], TCSANOW, &new_port_settings); - if(error==-1) - { - close(Cport[comport_number]); - perror("unable to adjust portsettings "); - return(1); - } - - if(ioctl(Cport[comport_number], TIOCMGET, &status) == -1) - { - perror("unable to get portstatus"); - return(1); - } - - status |= TIOCM_DTR; /* turn on DTR */ - status |= TIOCM_RTS; /* turn on RTS */ - - if(ioctl(Cport[comport_number], TIOCMSET, &status) == -1) - { - perror("unable to set portstatus"); - return(1); - } - - return(0); -} - - -int RS232_PollComport(int comport_number, unsigned char *buf, int size) -{ - int n; - -#ifndef __STRICT_ANSI__ /* __STRICT_ANSI__ is defined when the -ansi option is used for gcc */ - if(size>SSIZE_MAX) size = (int)SSIZE_MAX; /* SSIZE_MAX is defined in limits.h */ -#else - if(size>4096) size = 4096; -#endif - - n = read(Cport[comport_number], buf, size); - - return(n); -} - - -int RS232_SendByte(int comport_number, unsigned char byte) -{ - int n; - - n = write(Cport[comport_number], &byte, 1); - if(n<0) return(1); - - return(0); -} - - -int RS232_SendBuf(int comport_number, unsigned char *buf, int size) -{ - return(write(Cport[comport_number], buf, size)); -} - - -void RS232_CloseComport(int comport_number) -{ - int status; - - if(ioctl(Cport[comport_number], TIOCMGET, &status) == -1) - { - perror("unable to get portstatus"); - } - - status &= ~TIOCM_DTR; /* turn off DTR */ - status &= ~TIOCM_RTS; /* turn off RTS */ - - if(ioctl(Cport[comport_number], TIOCMSET, &status) == -1) - { - perror("unable to set portstatus"); - } - - close(Cport[comport_number]); - tcsetattr(Cport[comport_number], TCSANOW, old_port_settings + comport_number); -} - -/* -Constant Description -TIOCM_LE DSR (data set ready/line enable) -TIOCM_DTR DTR (data terminal ready) -TIOCM_RTS RTS (request to send) -TIOCM_ST Secondary TXD (transmit) -TIOCM_SR Secondary RXD (receive) -TIOCM_CTS CTS (clear to send) -TIOCM_CAR DCD (data carrier detect) -TIOCM_CD Synonym for TIOCM_CAR -TIOCM_RNG RNG (ring) -TIOCM_RI Synonym for TIOCM_RNG -TIOCM_DSR DSR (data set ready) -*/ - -int RS232_IsCTSEnabled(int comport_number) -{ - int status; - - ioctl(Cport[comport_number], TIOCMGET, &status); - - if(status&TIOCM_CTS) return(1); - else return(0); -} - -int RS232_IsDSREnabled(int comport_number) -{ - int status; - - ioctl(Cport[comport_number], TIOCMGET, &status); - - if(status&TIOCM_DSR) return(1); - else return(0); -} - -void RS232_enableDTR(int comport_number) -{ - int status; - - if(ioctl(Cport[comport_number], TIOCMGET, &status) == -1) - { - perror("unable to get portstatus"); - } - - status |= TIOCM_DTR; /* turn on DTR */ - - if(ioctl(Cport[comport_number], TIOCMSET, &status) == -1) - { - perror("unable to set portstatus"); - } -} - -void RS232_disableDTR(int comport_number) -{ - int status; - - if(ioctl(Cport[comport_number], TIOCMGET, &status) == -1) - { - perror("unable to get portstatus"); - } - - status &= ~TIOCM_DTR; /* turn off DTR */ - - if(ioctl(Cport[comport_number], TIOCMSET, &status) == -1) - { - perror("unable to set portstatus"); - } -} - -void RS232_enableRTS(int comport_number) -{ - int status; - - if(ioctl(Cport[comport_number], TIOCMGET, &status) == -1) - { - perror("unable to get portstatus"); - } - - status |= TIOCM_RTS; /* turn on RTS */ - - if(ioctl(Cport[comport_number], TIOCMSET, &status) == -1) - { - perror("unable to set portstatus"); - } -} - -void RS232_disableRTS(int comport_number) -{ - int status; - - if(ioctl(Cport[comport_number], TIOCMGET, &status) == -1) - { - perror("unable to get portstatus"); - } - - status &= ~TIOCM_RTS; /* turn off RTS */ - - if(ioctl(Cport[comport_number], TIOCMSET, &status) == -1) - { - perror("unable to set portstatus"); - } -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif - diff --git a/SourceCode/MacOSX/main.c b/SourceCode/MacOSX/main.c deleted file mode 100644 index fb73521..0000000 --- a/SourceCode/MacOSX/main.c +++ /dev/null @@ -1,488 +0,0 @@ -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int RS232_OpenComport(int, int); -int RS232_PollComport(int, unsigned char *, int); -int RS232_SendByte(int, unsigned char); -int RS232_SendBuf(int, unsigned char *, int); -void RS232_CloseComport(int); -void RS232_cputs(int, const char *); -int RS232_IsCTSEnabled(int); -int RS232_IsDSREnabled(int); -void RS232_enableDTR(int); -void RS232_disableDTR(int); -void RS232_enableRTS(int); -void RS232_disableRTS(int); - -#define SBEGIN 0x01 -#define SDATA 0x02 -#define SRSP 0x03 -#define SEND 0x04 -#define ERRO 0x05 - -FILE *pfile = NULL; -long fsize = 0; -int BlkTot = 0; -int BlkNum = 0; -int DownloadProgress = 0; -int end = 0; - -int Cport[30], error; - -struct termios new_port_settings, old_port_settings[30]; - -char comports[1][26]={"/dev/tty.usbmodem1431"}; - -void ProcessProgram(void); - -/* -* argv[0]----.exe file name -* argv[1]----ComPort number -* argv[2]----file path -*/ -int main(int arg, char *argv[]) -{ - int fLen = 0; - if(arg < 3) - { - printf("Input parameters error, it should be:\n"); - printf("for example:CCLoader.exe [/dev/]ttyS0 abc.bin\n"); - return 0; - } - - strcpy(comports[0], argv[1]); - - if(1 == RS232_OpenComport(0, 115200)) - { - printf("Open Comport failed!\n"); - printf("Please confirm comport:\"/dev/*\"\n"); - return 0; // Open comprt error - } - RS232_disableDTR(0); - RS232_disableRTS(0); - printf("Baud:115200 data:8 parity:none stopbit:1 DTR:off RTS:off\n"); - - char form[5] = ".bin"; - char format[5] = " "; - fLen = strlen(argv[2]); - if(fLen < 5) - { - printf("File path is invalid!\n"); - return 0; // file path is not valid - } - format[3] = argv[2][fLen-1]; - format[2] = argv[2][fLen-2]; - format[1] = argv[2][fLen-3]; - format[0] = argv[2][fLen-4]; - if(0 != strcmp(form, format)) - { - printf("File format must be .bin"); - return 0; - } - pfile = fopen(argv[2], "rb"); // read only - if(NULL == pfile) - { - printf("file doesn't exist or is occupied!\n"); - return 0; - } - printf("File open success!\n"); - fseek(pfile,0,SEEK_SET); - fseek(pfile,0,SEEK_END); - fsize = ftell(pfile); - fseek(pfile,0,SEEK_SET); - BlkTot = fsize / 512; - if((fsize%512) != 0) - { - printf("Warning: file size isn't the integer multiples of 512, last bytes will miss to be sent!\n"); - } - printf("Block total: %d\n", BlkTot); - BlkNum = 0; - - printf("Waiting for Arduino setup...\n"); - unsigned char j = 0; - for(j=5; j>0; j--) - { - printf("Remain: %d\n", j); - sleep(1); - } - - printf("Enable transmission...\n"); - unsigned char buf[2] = {SBEGIN, 0}; // Enable transmission, do not verify - if(RS232_SendBuf(0, buf, 2) != 2) - { - printf("Enable failed!\n"); - fclose(pfile); - printf("File closed!\n"); - RS232_CloseComport(0); - printf("Comport closed!\n"); - return 0; - } - else - { - printf("Request sent already!Waiting for respond...\n"); - } - - while(!end) - { - ProcessProgram(); - } - printf("Program successfully!\n"); - BlkNum = 0; - DownloadProgress = 0; - fclose(pfile); - printf("File closed!\n"); - RS232_CloseComport(0); - printf("Comport closed!\n"); - sleep(2); - printf("Exit: 0\n"); - - return 0; -} - -void ProcessProgram() -{ - int len; - unsigned char rx; - len = RS232_PollComport(0, &rx, 1); - if(len > 0) - { - switch(rx) - { - case SRSP: - { - if(BlkNum == BlkTot) - { - unsigned char temp = SEND; - RS232_SendByte(0, temp); - end = 1; - } - else - { - if(BlkNum == 0) - { - printf("Begin programming...\n"); - } - DownloadProgress = 1; - unsigned char buf[515]; - buf[0] = SDATA; - fread(buf+1, 512, 1, pfile); - - unsigned short CheckSum = 0x0000; - unsigned int i; - for(i=0; i<512; i++) - { - CheckSum += (unsigned char)buf[i+1]; - } - buf[513] = (CheckSum >> 8) & 0x00FF; - buf[514] = CheckSum & 0x00FF; - - RS232_SendBuf(0, buf, 515); - BlkNum++; - printf("%d ", BlkNum); - } - break; - } - - case ERRO: - { - if(DownloadProgress == 1) - { - end = 1; - printf("Verify failed!\n"); - } - else - { - end = 1; - printf("No chip detected!\n"); - } - break; - } - - default: - break; - } - len = 0; - } -} - -int RS232_OpenComport(int comport_number, int baudrate) -{ - int baudr, status; - - if((comport_number>29)||(comport_number<0)) - { - printf("illegal comport number\n"); - return(1); - } - - switch(baudrate) - { - case 50 : baudr = B50; - break; - case 75 : baudr = B75; - break; - case 110 : baudr = B110; - break; - case 134 : baudr = B134; - break; - case 150 : baudr = B150; - break; - case 200 : baudr = B200; - break; - case 300 : baudr = B300; - break; - case 600 : baudr = B600; - break; - case 1200 : baudr = B1200; - break; - case 1800 : baudr = B1800; - break; - case 2400 : baudr = B2400; - break; - case 4800 : baudr = B4800; - break; - case 9600 : baudr = B9600; - break; - case 19200 : baudr = B19200; - break; - case 38400 : baudr = B38400; - break; - case 57600 : baudr = B57600; - break; - case 115200 : baudr = B115200; - break; - case 230400 : baudr = B230400; - break; - default : printf("invalid baudrate\n"); - return(1); - break; - } - - printf("Opening comport...\n"); - Cport[comport_number] = open(comports[comport_number], O_RDWR | O_NOCTTY | O_NDELAY); - if(Cport[comport_number]==-1) - { - perror("unable to open comport "); - return(1); - } - printf("Comport open!\n"); - - printf("Read portsettings...\n"); - error = tcgetattr(Cport[comport_number], old_port_settings + comport_number); - if(error==-1) - { - close(Cport[comport_number]); - perror("unable to read portsettings "); - return(1); - } - memset(&new_port_settings, 0, sizeof(new_port_settings)); /* clear the new struct */ - - cfsetispeed(&new_port_settings, baudr); - cfsetospeed(&new_port_settings, baudr); - new_port_settings.c_cflag |= (CS8 | CLOCAL | CREAD); - new_port_settings.c_iflag |= IGNPAR; - new_port_settings.c_oflag = 0; - new_port_settings.c_lflag = 0; - new_port_settings.c_cc[VMIN] = 0; /* block untill n bytes are received */ - new_port_settings.c_cc[VTIME] = 0; /* block untill a timer expires (n * 100 mSec.) */ - printf("Changing portsettings...\n"); - error = tcsetattr(Cport[comport_number], TCSANOW, &new_port_settings); - if(error==-1) - { - close(Cport[comport_number]); - perror("unable to adjust portsettings "); - return(1); - } - - if(ioctl(Cport[comport_number], TIOCMGET, &status) == -1) - { - perror("unable to get portstatus"); - return(1); - } - - status |= TIOCM_DTR; /* turn on DTR */ - status |= TIOCM_RTS; /* turn on RTS */ - - if(ioctl(Cport[comport_number], TIOCMSET, &status) == -1) - { - perror("unable to set portstatus"); - return(1); - } - - return(0); -} - - -int RS232_PollComport(int comport_number, unsigned char *buf, int size) -{ - int n; - -#ifndef __STRICT_ANSI__ /* __STRICT_ANSI__ is defined when the -ansi option is used for gcc */ - if(size>SSIZE_MAX) size = (int)SSIZE_MAX; /* SSIZE_MAX is defined in limits.h */ -#else - if(size>4096) size = 4096; -#endif - - n = read(Cport[comport_number], buf, size); - - return(n); -} - - -int RS232_SendByte(int comport_number, unsigned char byte) -{ - int n; - - n = write(Cport[comport_number], &byte, 1); - if(n<0) return(1); - - return(0); -} - - -int RS232_SendBuf(int comport_number, unsigned char *buf, int size) -{ - return(write(Cport[comport_number], buf, size)); -} - - -void RS232_CloseComport(int comport_number) -{ - int status; - - if(ioctl(Cport[comport_number], TIOCMGET, &status) == -1) - { - perror("unable to get portstatus"); - } - - status &= ~TIOCM_DTR; - status &= ~TIOCM_RTS; - - if(ioctl(Cport[comport_number], TIOCMSET, &status) == -1) - { - perror("unable to set portstatus"); - } - - tcsetattr(Cport[comport_number], TCSANOW, old_port_settings + comport_number); - close(Cport[comport_number]); -} - -/* -Constant Description -TIOCM_LE DSR (data set ready/line enable) -TIOCM_DTR DTR (data terminal ready) -TIOCM_RTS RTS (request to send) -TIOCM_ST Secondary TXD (transmit) -TIOCM_SR Secondary RXD (receive) -TIOCM_CTS CTS (clear to send) -TIOCM_CAR DCD (data carrier detect) -TIOCM_CD Synonym for TIOCM_CAR -TIOCM_RNG RNG (ring) -TIOCM_RI Synonym for TIOCM_RNG -TIOCM_DSR DSR (data set ready) -*/ - -int RS232_IsCTSEnabled(int comport_number) -{ - int status; - - ioctl(Cport[comport_number], TIOCMGET, &status); - - if(status&TIOCM_CTS) return(1); - else return(0); -} - -int RS232_IsDSREnabled(int comport_number) -{ - int status; - - ioctl(Cport[comport_number], TIOCMGET, &status); - - if(status&TIOCM_DSR) return(1); - else return(0); -} - -void RS232_enableDTR(int comport_number) -{ - int status; - - if(ioctl(Cport[comport_number], TIOCMGET, &status) == -1) - { - perror("unable to get portstatus"); - } - - status |= TIOCM_DTR; /* turn on DTR */ - - if(ioctl(Cport[comport_number], TIOCMSET, &status) == -1) - { - perror("unable to set portstatus"); - } -} - -void RS232_disableDTR(int comport_number) -{ - int status; - - if(ioctl(Cport[comport_number], TIOCMGET, &status) == -1) - { - perror("unable to get portstatus"); - } - - status &= ~TIOCM_DTR; /* turn off DTR */ - - if(ioctl(Cport[comport_number], TIOCMSET, &status) == -1) - { - perror("unable to set portstatus"); - } -} - -void RS232_enableRTS(int comport_number) -{ - int status; - - if(ioctl(Cport[comport_number], TIOCMGET, &status) == -1) - { - perror("unable to get portstatus"); - } - - status |= TIOCM_RTS; /* turn on RTS */ - - if(ioctl(Cport[comport_number], TIOCMSET, &status) == -1) - { - perror("unable to set portstatus"); - } -} - -void RS232_disableRTS(int comport_number) -{ - int status; - - if(ioctl(Cport[comport_number], TIOCMGET, &status) == -1) - { - perror("unable to get portstatus"); - } - - status &= ~TIOCM_RTS; /* turn off RTS */ - - if(ioctl(Cport[comport_number], TIOCMSET, &status) == -1) - { - perror("unable to set portstatus"); - } -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif - diff --git a/SourceCode/Windows/main.c b/SourceCode/Windows/main.c deleted file mode 100644 index e36c80f..0000000 --- a/SourceCode/Windows/main.c +++ /dev/null @@ -1,454 +0,0 @@ -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -int RS232_OpenComport(int, int); -int RS232_PollComport(int, unsigned char *, int); -int RS232_SendByte(int, unsigned char); -int RS232_SendBuf(int, unsigned char *, int); -void RS232_CloseComport(int); -void RS232_cputs(int, const char *); -int RS232_IsCTSEnabled(int); -int RS232_IsDSREnabled(int); -void RS232_enableDTR(int); -void RS232_disableDTR(int); -void RS232_enableRTS(int); -void RS232_disableRTS(int); - -#define SBEGIN 0x01 -#define SDATA 0x02 -#define SRSP 0x03 -#define SEND 0x04 -#define ERRO 0x05 - -FILE *pfile = NULL; -long fsize = 0; -int BlkTot = 0; -int Remain = 0; -int BlkNum = 0; -int DownloadProgress = 0; -int com; -int end = 0; - -HANDLE Cport[16]; -char comports[16][10]={"\\\\.\\COM1", "\\\\.\\COM2", "\\\\.\\COM3", "\\\\.\\COM4", - "\\\\.\\COM5", "\\\\.\\COM6", "\\\\.\\COM7", "\\\\.\\COM8", - "\\\\.\\COM9", "\\\\.\\COM10", "\\\\.\\COM11", "\\\\.\\COM12", - "\\\\.\\COM13", "\\\\.\\COM14", "\\\\.\\COM15", "\\\\.\\COM16"}; -char baudr[64]; - -void ProcessProgram(void); - -/* -* argv[0]----.exe file name -* argv[1]----ComPort number -* argv[2]----file path -* argv[3]----Device -*/ -int main(int arg, char *argv[]) -{ - int fLen = 0; - int device = 0; - - printf("Copyright (c) 2013 RedBearLab.com\n"); - printf("%s version 0.5\n", argv[0]); - if(arg < 4) - { - printf("Invalid parameters.\n"); - printf("Usage: %s \n", argv[0]); - printf("Example: %s 2 abc.bin 0\n", argv[0]); - printf(" : 0 -- Default (e.g. UNO)\n"); - printf(" 1 -- Leonardo\n"); - return 0; - } - - char form[5] = ".bin"; - char format[5] = " "; - fLen = strlen(argv[2]); - if(fLen < 5) - { - printf("The .bin file name is invalid!\n\n"); - return 0; // file path is not valid - } - format[3] = argv[2][fLen-1]; - format[2] = argv[2][fLen-2]; - format[1] = argv[2][fLen-3]; - format[0] = argv[2][fLen-4]; - if(0 != strcmp(form, format)) - { - printf("File format must be .bin\n\n"); - return 0; - } - - com = atoi(argv[1]); - device = atoi(argv[3]); - printf("Comport : COM%d\n", com); - printf("Bin file: %s\n", argv[2]); - if(device == 0) - { - printf("Device : Default (e.g. UNO)\n\n"); - } - else - { - printf("Device: Leonardo\n\n"); - } - - com = atoi(argv[1]) - 1; - if(1 == RS232_OpenComport(com, 115200)) - { - return 0; // Open comprt error - } - printf("Comport open!\n"); - if(device == 0) - { - RS232_disableDTR(com); - printf(" \n\n"); - } - else - { - RS232_enableDTR(com); - printf(" \n\n"); - } - RS232_disableRTS(com); - - pfile = fopen(argv[2], "rb"); // read only - if(NULL == pfile) - { - printf("The file doesn't exist or is occupied!\n"); - RS232_CloseComport(com); - printf("Comport closed!\n\n"); - return 0; - } - printf("File open!\n"); - fseek(pfile,0,SEEK_SET); - fseek(pfile,0,SEEK_END); - fsize = ftell(pfile); - fseek(pfile,0,SEEK_SET); - Remain = fsize % 512; - if(Remain != 0) - { - BlkTot = fsize / 512 + 1; - printf("!!WARNING: File's size isn't the integer multiples of 512 bytes, and \n"); - printf(" the last block will be filled in up to 512 bytes with 0xFF! \n"); - } - else - { - BlkTot = fsize / 512; - } - printf("Block total: %d\n\n", BlkTot); - BlkNum = 0; - - printf("Enable transmission...\n"); - unsigned char buf[2] = {SBEGIN, 0}; // Enable transmission, do not verify - if(RS232_SendBuf(com, buf, 2) != 2) - { - printf("Enable failed!\n"); - fclose(pfile); - printf("File closed!\n"); - RS232_CloseComport(com); - printf("Comport closed!\n\n"); - return 0; - } - else - { - printf("Request sent already!\n"); - } - - printf("/********************************************************************/\n"); - printf("* If there is no respond last for 3s, please press \"Ctrl+C\" to exit!\n"); - printf("* And pay attention to :\n* 1. The connection between computer and Arduino;\n"); - printf("* 2. The connection between Arduino and CC2540;\n"); - printf("* 3. Whether the device you using is Leonardo or not;\n"); - printf("* 4. Other unexpected errors.\n"); - printf("/********************************************************************/\n\n"); - printf("Waiting for respond from Arduino...\n\n"); - while(!end) - { - ProcessProgram(); - } - if(end == 2) - { - printf("Upload successfully!\n"); - } - else - { - printf("Upload Failed!\n"); - } - BlkNum = 0; - DownloadProgress = 0; - fclose(pfile); - printf("File closed!\n"); - RS232_CloseComport(com); - printf("Comport closed!\n\n"); - - return 0; -} - -void ProcessProgram() -{ - int len; - unsigned char rx; - len = RS232_PollComport(com, &rx, 1); - if(len > 0) - { - switch(rx) - { - case SRSP: - { - if(BlkNum == BlkTot) - { - unsigned char temp = SEND; - RS232_SendByte(com, temp); - end = 2; - } - else - { - if(BlkNum == 0) - { - printf("Uploading firmware...\n\n"); - } - DownloadProgress = 1; - unsigned char buf[515]; - buf[0] = SDATA; - if((BlkNum == (BlkTot-1)) && (Remain != 0)) - { - fread(buf+1, Remain, 1, pfile); - int filled = 512 - Remain; - int i = 0; - for(i; i> 8) & 0x00FF; - buf[514] = CheckSum & 0x00FF; - RS232_SendBuf(com, buf, 515); - BlkNum++; - printf("%d ", BlkNum); - } - break; - } - - case ERRO: - { - if(DownloadProgress == 1) - { - end = 1; - printf("Verify failed!\n"); - } - else - { - end = 1; - printf("No chip detected!\n"); - } - break; - } - - default: - break; - } - len = 0; - } -} - -int RS232_OpenComport(int comport_number, int baudrate) -{ - if((comport_number>15)||(comport_number<0)) - { - printf("illegal comport number\n\n"); - return(1); - } - - switch(baudrate) - { - case 110 : strcpy(baudr, "baud=110 data=8 parity=N stop=1 dtr=on rts=on"); - break; - case 300 : strcpy(baudr, "baud=300 data=8 parity=N stop=1 dtr=on rts=on"); - break; - case 600 : strcpy(baudr, "baud=600 data=8 parity=N stop=1 dtr=on rts=on"); - break; - case 1200 : strcpy(baudr, "baud=1200 data=8 parity=N stop=1 dtr=on rts=on"); - break; - case 2400 : strcpy(baudr, "baud=2400 data=8 parity=N stop=1 dtr=on rts=on"); - break; - case 4800 : strcpy(baudr, "baud=4800 data=8 parity=N stop=1 dtr=on rts=on"); - break; - case 9600 : strcpy(baudr, "baud=9600 data=8 parity=N stop=1 dtr=off rts=off"); - break; - case 19200 : strcpy(baudr, "baud=19200 data=8 parity=N stop=1 dtr=on rts=on"); - break; - case 38400 : strcpy(baudr, "baud=38400 data=8 parity=N stop=1 dtr=on rts=on"); - break; - case 57600 : strcpy(baudr, "baud=57600 data=8 parity=N stop=1 dtr=on rts=on"); - break; - case 115200 : strcpy(baudr, "baud=115200 data=8 parity=N stop=1 dtr=off rts=off"); - break; - case 128000 : strcpy(baudr, "baud=128000 data=8 parity=N stop=1 dtr=on rts=on"); - break; - case 256000 : strcpy(baudr, "baud=256000 data=8 parity=N stop=1 dtr=on rts=on"); - break; - case 500000 : strcpy(baudr, "baud=500000 data=8 parity=N stop=1 dtr=on rts=on"); - break; - case 1000000 : strcpy(baudr, "baud=1000000 data=8 parity=N stop=1 dtr=on rts=on"); - break; - default : printf("invalid baudrate\n"); - return(1); - break; - } - - Cport[comport_number] = CreateFileA(comports[comport_number], - GENERIC_READ|GENERIC_WRITE, - 0, /* no share */ - NULL, /* no security */ - OPEN_EXISTING, - 0, /* no threads */ - NULL); /* no templates */ - - if(Cport[comport_number]==INVALID_HANDLE_VALUE) - { - printf("unable to open comport!\n\n"); - return(1); - } - - DCB port_settings; - memset(&port_settings, 0, sizeof(port_settings)); /* clear the new struct */ - port_settings.DCBlength = sizeof(port_settings); - - if(!BuildCommDCBA(baudr, &port_settings)) - { - printf("unable to set comport dcb settings\n\n"); - CloseHandle(Cport[comport_number]); - return(1); - } - - if(!SetCommState(Cport[comport_number], &port_settings)) - { - printf("unable to set comport cfg settings\n\n"); - CloseHandle(Cport[comport_number]); - return(1); - } - - COMMTIMEOUTS Cptimeouts; - - Cptimeouts.ReadIntervalTimeout = MAXDWORD; - Cptimeouts.ReadTotalTimeoutMultiplier = 0; - Cptimeouts.ReadTotalTimeoutConstant = 0; - Cptimeouts.WriteTotalTimeoutMultiplier = 0; - Cptimeouts.WriteTotalTimeoutConstant = 0; - - if(!SetCommTimeouts(Cport[comport_number], &Cptimeouts)) - { - printf("unable to set comport time-out settings\n\n"); - CloseHandle(Cport[comport_number]); - return(1); - } - - return(0); -} - - -int RS232_PollComport(int comport_number, unsigned char *buf, int size) -{ - int n; - - if(size>4096) size = 4096; -/* added the void pointer cast, otherwise gcc will complain about */ -/* "warning: dereferencing type-punned pointer will break strict aliasing rules" */ - - ReadFile(Cport[comport_number], buf, size, (LPDWORD)((void *)&n), NULL); - - return(n); -} - -int RS232_SendByte(int comport_number, unsigned char byte) -{ - int n; - - WriteFile(Cport[comport_number], &byte, 1, (LPDWORD)((void *)&n), NULL); - - if(n<0) return(1); - - return(0); -} - -int RS232_SendBuf(int comport_number, unsigned char *buf, int size) -{ - int n; - - if(WriteFile(Cport[comport_number], buf, size, (LPDWORD)((void *)&n), NULL)) - { - return(n); - } - - return(-1); -} - -void RS232_CloseComport(int comport_number) -{ - CloseHandle(Cport[comport_number]); -} - -int RS232_IsCTSEnabled(int comport_number) -{ - int status; - - GetCommModemStatus(Cport[comport_number], (LPDWORD)((void *)&status)); - - if(status&MS_CTS_ON) return(1); - else return(0); -} - -int RS232_IsDSREnabled(int comport_number) -{ - int status; - - GetCommModemStatus(Cport[comport_number], (LPDWORD)((void *)&status)); - - if(status&MS_DSR_ON) return(1); - else return(0); -} - -void RS232_enableDTR(int comport_number) -{ - EscapeCommFunction(Cport[comport_number], SETDTR); -} - -void RS232_disableDTR(int comport_number) -{ - EscapeCommFunction(Cport[comport_number], CLRDTR); -} - -void RS232_enableRTS(int comport_number) -{ - EscapeCommFunction(Cport[comport_number], SETRTS); -} - -void RS232_disableRTS(int comport_number) -{ - EscapeCommFunction(Cport[comport_number], CLRRTS); -} - -void RS232_cputs(int comport_number, const char *text) /* sends a string to serial port */ -{ - while(*text != 0) RS232_SendByte(comport_number, *(text++)); -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif - diff --git a/SourceCode/ccloader b/SourceCode/ccloader new file mode 100755 index 0000000000000000000000000000000000000000..33ea7179764fabaee08082005a83ee7acb496060 GIT binary patch literal 19406 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 literal 0 HcmV?d00001 diff --git a/SourceCode/ccloader.exe b/SourceCode/ccloader.exe new file mode 100644 index 0000000000000000000000000000000000000000..3b66b72a8270fd41309203dfd7b9ca61a62438f5 GIT binary patch literal 78533 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 literal 0 HcmV?d00001 diff --git a/SourceCode/main.c b/SourceCode/main.c new file mode 100644 index 0000000..2a9b7f6 --- /dev/null +++ b/SourceCode/main.c @@ -0,0 +1,735 @@ +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(_WIN32) || defined(_WIN64) +#elif defined(__linux__) || defined(__unix__) +#elif defined(__APPLE__) || defined(__MACH__) +#endif + + +#define _BSD_SOURCE +#include +#include +#include +#if defined(_WIN32) || defined(_WIN64) + #include +#elif defined(__linux__) || defined(__unix__) + #include + #include + #include + #include + #include + #include + #include +#endif + +#define SBEGIN 0x01 +#define SDATA 0x02 +#define SRSP 0x03 +#define SEND 0x04 +#define ERRO 0x05 + +#define N_TRIES 5 + +FILE *pfile = NULL; +long fsize = 0; +int BlkTot = 0; +int Remain = 0; +int BlkNum = 0; +int DownloadProgress = 0; +int com = -1; +int tries = N_TRIES; +int end = 0; + +#if defined(_WIN32) || defined(_WIN64) +HANDLE Cport[16]; +char comports[16][10]={"\\\\.\\COM1", "\\\\.\\COM2", "\\\\.\\COM3", "\\\\.\\COM4", + "\\\\.\\COM5", "\\\\.\\COM6", "\\\\.\\COM7", "\\\\.\\COM8", + "\\\\.\\COM9", "\\\\.\\COM10", "\\\\.\\COM11", "\\\\.\\COM12", + "\\\\.\\COM13", "\\\\.\\COM14", "\\\\.\\COM15", "\\\\.\\COM16"}; +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) +int Cport, error; +struct termios new_port_settings, old_port_settings; +char comports[30][16]={"/dev/ttyS0","/dev/ttyS1","/dev/ttyS2","/dev/ttyS3","/dev/ttyS4","/dev/ttyS5", + "/dev/ttyS6","/dev/ttyS7","/dev/ttyS8","/dev/ttyS9","/dev/ttyS10","/dev/ttyS11", + "/dev/ttyS12","/dev/ttyS13","/dev/ttyS14","/dev/ttyS15","/dev/ttyUSB0", + "/dev/ttyUSB1","/dev/ttyUSB2","/dev/ttyUSB3","/dev/ttyUSB4","/dev/ttyUSB5", + "/dev/ttyAMA0","/dev/ttyAMA1","/dev/ttyACM0","/dev/ttyACM1", + "/dev/rfcomm0","/dev/rfcomm1","/dev/ircomm0","/dev/ircomm1"}; +#endif + +void ProcessProgram(void); + +int RS232_OpenComport(int, int); +int RS232_PollComport(int, unsigned char *, int); +int RS232_SendByte(int, unsigned char); +int RS232_SendBuf(int, unsigned char *, int); +void RS232_CloseComport(int); +void RS232_cputs(int, const char *); +int RS232_IsCTSEnabled(int); +int RS232_IsDSREnabled(int); +void RS232_enableDTR(int); +void RS232_disableDTR(int); +void RS232_enableRTS(int); +void RS232_disableRTS(int); + +/* +* argv[0]----.exe file name +* argv[1]----ComPort number +* argv[2]----file path +* argv[3]----Device +*/ +int main(int arg, char *argv[]) +{ + int fLen = 0; + int device = 0; + + printf("Copyright (c) 2013 RedBearLab.com\n"); + printf("%s version 0.7\n", argv[0]); + if(arg < 4) + { + printf("Invalid parameters.\n"); + printf("Usage: %s \n", argv[0]); + printf("Example: %s 2 abc.bin 0\n", argv[0]); + printf(" : 0 -- Default (e.g. UNO)\n"); + printf(" 1 -- Leonardo\n\n"); + return 0; + } + + + /// Open the file + char form[5] = ".bin"; + char format[5] = " "; + fLen = strlen(argv[2]); + if(fLen < 5) + { + printf("The .bin file name is invalid!\n\n"); + return 0; // file path is not valid + } + format[3] = argv[2][fLen-1]; + format[2] = argv[2][fLen-2]; + format[1] = argv[2][fLen-3]; + format[0] = argv[2][fLen-4]; + if(0 != strcmp(form, format)) + { + printf("File format must be .bin\n\n"); + return 0; + } + pfile = fopen(argv[2], "rb"); // read only + if(NULL == pfile) + { + printf("The file doesn't exist or is occupied!\n\n"); + return 0; + } + printf("Bin file: %s ,\t", argv[2]); + printf(" file open successfully!\n"); + fseek(pfile,0,SEEK_SET); + fseek(pfile,0,SEEK_END); + fsize = ftell(pfile); + fseek(pfile,0,SEEK_SET); + Remain = fsize % 512; + if(Remain != 0) + { + BlkTot = fsize / 512 + 1; + printf("!!WARNING: File's size isn't the integer multiples of 512 bytes, and \n"); + printf(" the last block will be filled in up to 512 bytes with 0xFF! \n"); + } + else + { + BlkTot = fsize / 512; + } + printf("Block total: %d\n", BlkTot); + BlkNum = 0; + + + /// Open serial comPort + device = atoi(argv[3]); + com = atoi(argv[1]) - 1; +#if defined(_WIN32) || defined(_WIN64) + printf("ComPort: COM%d ", com+1); +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + for(int i=0; i<30; i++) + { + if(NULL != strstr(comports[i], argv[1])) + { + com = i; + break; + } + else if(i == 29 && com == -1) + { + printf("Port not found, check the arguments.\n"); + return 0; + } + } + printf("ComPort: %s ", comports[com]); +#endif + if(1 == RS232_OpenComport(com, 115200)) + return 0; // Open comport error + printf("open successfully.\n"); + + printf("Waiting for Arduino setup...\n"); + + printf("Device: "); + if(device == 0) + { + printf("Default (e.g. UNO)\n"); + RS232_disableDTR(com); + } + else + { + printf("Leonardo\n"); + RS232_enableDTR(com); + } + printf(" \n"); + RS232_disableRTS(com); +#if defined(__APPLE__) || defined(__MACH__) || defined(__linux__) || defined(__unix__) + // I don't know why, but I need this. + sleep(2); // slow down @Linux +#endif + + printf("Enable transmission..."); + unsigned char buf[2] = {SBEGIN, 0}; // Enable transmission, do not verify + if(RS232_SendBuf(com, buf, 2) != 2) + { + printf("Enable failed!\n"); + fclose(pfile); + printf("File closed!\t"); + RS232_CloseComport(com); + printf("Comport closed!\n\n"); + return 0; + } + else + { + printf("Request sent already!\n"); + } +#if defined(__APPLE__) || defined(__MACH__) || defined(__linux__) || defined(__unix__) + usleep(5e5); // 0.1 seconds - delay to wait transmission send +#endif + + // Replaced by !tries-- + //printf("/********************************************************************/\n"); + //printf("* If there is no respond last for 3s, please press \"Ctrl+C\" to exit!\n"); + //printf("* And pay attention to :\n"); + //printf("* 1. The connection between computer and Arduino;\n"); + //printf("* 2. The connection between Arduino and CC254x;\n"); + //printf("* 3. Whether the device you using is Leonardo or not;\n"); + //printf("* 4. Other unexpected errors.\n"); + //printf("/********************************************************************/\n\n"); + + printf("Waiting for respond from Arduino..."); + while(!end) + { + ProcessProgram(); + } + + if(end != 2) + printf("Upload Failed!\n"); + + BlkNum = 0; + DownloadProgress = 0; + fclose(pfile); + printf("File closed!\n"); + RS232_CloseComport(com); + printf("Comport closed!\n\n"); + + return 0; +} + +void ProcessProgram() +{ + int len; + unsigned char rx; + len = RS232_PollComport(com, &rx, 1); +#if defined(__APPLE__) || defined(__MACH__) || defined(__linux__) || defined(__unix__) + usleep(1e5); // slow down @Linux +#endif + if(len > 0) + { + switch(rx) + { + case SRSP: + { + if(BlkNum == BlkTot) + { + unsigned char temp = SEND; + RS232_SendByte(com, temp); + printf("Upload successfully!\n"); + end = 2; + } + else + { + if(BlkNum == 0) + { + printf("OK.\nUploading firmware.../n"); + } + DownloadProgress = 1; + unsigned char buf[515]; + buf[0] = SDATA; + if((BlkNum == (BlkTot-1)) && (Remain != 0)) + { + fread(buf+1, Remain, 1, pfile); + int filled = 512 - Remain; + for(int i = 0; i> 8) & 0x00FF; + buf[514] = CheckSum & 0x00FF; + RS232_SendBuf(com, buf, 515); + BlkNum++; + printf("%d\t \r", BlkNum); + } + break; + } + + case ERRO: + { + if(DownloadProgress == 1) + { + end = 1; + printf("Verify failed!\n"); + } + else + { + end = 1; + printf("No chip detected!\n"); + } + break; + } + + default: + { + printf("Something wrong happened with the Arduino answer's!\n"); + break; + } + } + len = 0; + } + else + { + printf("try:%d ", N_TRIES+1-tries); + if( !tries-- ) + { + end = 1; + printf("I tried with no success!\n"); + } +#if defined(__APPLE__) || defined(__MACH__) || defined(__linux__) || defined(__unix__) + else + usleep(1e5); // 0.1 second +#endif + } +} + +int RS232_OpenComport(int comport_number, int baudrate) +{ +#if defined(_WIN32) || defined(_WIN64) + char baudr[64]; + if((comport_number>15)||(comport_number<0)) +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + int baudr, status; + if((comport_number>29)||(comport_number<0)) +#endif + { + printf("Illegal comport number\n\n"); + return(1); + } + + switch(baudrate) + { +#if defined(_WIN32) || defined(_WIN64) + case 110 : strcpy(baudr, "baud=110 data=8 parity=N stop=1 dtr=on rts=on"); + break; + case 300 : strcpy(baudr, "baud=300 data=8 parity=N stop=1 dtr=on rts=on"); + break; + case 600 : strcpy(baudr, "baud=600 data=8 parity=N stop=1 dtr=on rts=on"); + break; + case 1200 : strcpy(baudr, "baud=1200 data=8 parity=N stop=1 dtr=on rts=on"); + break; + case 2400 : strcpy(baudr, "baud=2400 data=8 parity=N stop=1 dtr=on rts=on"); + break; + case 4800 : strcpy(baudr, "baud=4800 data=8 parity=N stop=1 dtr=on rts=on"); + break; + case 9600 : strcpy(baudr, "baud=9600 data=8 parity=N stop=1 dtr=off rts=off"); + break; + case 19200 : strcpy(baudr, "baud=19200 data=8 parity=N stop=1 dtr=on rts=on"); + break; + case 38400 : strcpy(baudr, "baud=38400 data=8 parity=N stop=1 dtr=on rts=on"); + break; + case 57600 : strcpy(baudr, "baud=57600 data=8 parity=N stop=1 dtr=on rts=on"); + break; + case 115200 : strcpy(baudr, "baud=115200 data=8 parity=N stop=1 dtr=off rts=off"); + break; + case 128000 : strcpy(baudr, "baud=128000 data=8 parity=N stop=1 dtr=on rts=on"); + break; + case 256000 : strcpy(baudr, "baud=256000 data=8 parity=N stop=1 dtr=on rts=on"); + break; + case 500000 : strcpy(baudr, "baud=500000 data=8 parity=N stop=1 dtr=on rts=on"); + break; + case 1000000 : strcpy(baudr, "baud=1000000 data=8 parity=N stop=1 dtr=on rts=on"); + break; + default : printf("Invalid baudrate\n"); + return(1); + break; +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + case 50 : baudr = B50; + break; + case 75 : baudr = B75; + break; + case 110 : baudr = B110; + break; + case 134 : baudr = B134; + break; + case 150 : baudr = B150; + break; + case 200 : baudr = B200; + break; + case 300 : baudr = B300; + break; + case 600 : baudr = B600; + break; + case 1200 : baudr = B1200; + break; + case 1800 : baudr = B1800; + break; + case 2400 : baudr = B2400; + break; + case 4800 : baudr = B4800; + break; + case 9600 : baudr = B9600; + break; + case 19200 : baudr = B19200; + break; + case 38400 : baudr = B38400; + break; + case 57600 : baudr = B57600; + break; + case 115200 : baudr = B115200; + break; + case 230400 : baudr = B230400; + break; + case 460800 : baudr = B460800; + break; + case 500000 : baudr = B500000; + break; + case 576000 : baudr = B576000; + break; + case 921600 : baudr = B921600; + break; + case 1000000 : baudr = B1000000; + break; + default : printf("Invalid baudrate\n"); + return(1); + break; +#endif + } + +#if defined(_WIN32) || defined(_WIN64) + Cport[comport_number] = CreateFileA(comports[comport_number], + GENERIC_READ|GENERIC_WRITE, + 0, /* no share */ + NULL, /* no security */ + OPEN_EXISTING, + 0, /* no threads */ + NULL); /* no templates */ + + if(Cport[comport_number]==INVALID_HANDLE_VALUE) + { + printf("unable to open comport!\n\n"); + return(1); + } + + DCB port_settings; + memset(&port_settings, 0, sizeof(port_settings)); /* clear the new struct */ + port_settings.DCBlength = sizeof(port_settings); + + if(!BuildCommDCBA(baudr, &port_settings)) + { + printf("unable to set comport dcb settings\n\n"); + CloseHandle(Cport[comport_number]); + return(1); + } + + if(!SetCommState(Cport[comport_number], &port_settings)) + { + printf("unable to set comport cfg settings\n\n"); + CloseHandle(Cport[comport_number]); + return(1); + } + + COMMTIMEOUTS Cptimeouts; + + Cptimeouts.ReadIntervalTimeout = MAXDWORD; + Cptimeouts.ReadTotalTimeoutMultiplier = 0; + Cptimeouts.ReadTotalTimeoutConstant = 0; + Cptimeouts.WriteTotalTimeoutMultiplier = 0; + Cptimeouts.WriteTotalTimeoutConstant = 0; + + if(!SetCommTimeouts(Cport[comport_number], &Cptimeouts)) + { + printf("Unable to set comport time-out settings\n\n"); + CloseHandle(Cport[comport_number]); + return(1); + } + +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + Cport = open(comports[comport_number], O_RDWR | O_NOCTTY | O_NDELAY); + if(Cport <0) + { + perror("unable to open comport! \n\n"); + return(1); + } + + error = tcgetattr(Cport, &old_port_settings); + if(error !=0) + { + close(Cport); + perror("unable to read portsettings "); + return(1); + } + memset(&new_port_settings, 0, sizeof(new_port_settings)); /* clear the new struct */ + + new_port_settings.c_cflag = baudr | CS8 | CLOCAL | CREAD; + new_port_settings.c_iflag = IGNPAR; + new_port_settings.c_oflag = 0; + new_port_settings.c_lflag = 0; + new_port_settings.c_cc[VMIN] = 0; /* block untill n bytes are received */ + new_port_settings.c_cc[VTIME] = 0; /* block untill a timer expires (n * 100 mSec.) */ + error = tcsetattr(Cport, TCSANOW, &new_port_settings); + if(error !=0) + { + close(Cport); + perror("unable to adjust portsettings "); + return(1); + } + + if(ioctl(Cport, TIOCMGET, &status) !=0) + { + perror("unable to get portstatus "); + return(1); + } + + status |= TIOCM_DTR; /* turn on DTR */ + status |= TIOCM_RTS; /* turn on RTS */ + + if(ioctl(Cport, TIOCMSET, &status) !=0) + { + perror("unable to set portstatus "); + return(1); + } +#endif + + return(0); +} + + +int RS232_PollComport(int comport_number, unsigned char *buf, int size) +{ + int n; + +#if defined(_WIN32) || defined(_WIN64) + if(size>4096) + size = 4096; +/* added the void pointer cast, otherwise gcc will complain about */ +/* "warning: dereferencing type-punned pointer will break strict aliasing rules" */ + + ReadFile(Cport[comport_number], buf, size, (LPDWORD)((void *)&n), NULL); +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + #ifndef __STRICT_ANSI__ /* __STRICT_ANSI__ is defined when the -ansi option is used for gcc */ + if(size>SSIZE_MAX) size = (int)SSIZE_MAX; /* SSIZE_MAX is defined in limits.h */ + #else + if(size>4096) + size = 4096; + #endif + + n = read(Cport, buf, size); +#endif + return(n); +} + +int RS232_SendByte(int comport_number, unsigned char byte) +{ + int n; +#if defined(_WIN32) || defined(_WIN64) + WriteFile(Cport[comport_number], &byte, 1, (LPDWORD)((void *)&n), NULL); +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + n = write(Cport, &byte, 1); +#endif + if(n<0) + return(1); + else + return(0); +} + +int RS232_SendBuf(int comport_number, unsigned char *buf, int size) +{ +#if defined(_WIN32) || defined(_WIN64) + int n; + if(WriteFile(Cport[comport_number], buf, size, (LPDWORD)((void *)&n), NULL)) + return(n); + else +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + return(write(Cport, buf, size)); +#endif + return(-1); +} + +void RS232_CloseComport(int comport_number) +{ +#if defined(_WIN32) || defined(_WIN64) + CloseHandle(Cport[comport_number]); +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + int status; + + if(ioctl(Cport, TIOCMGET, &status) !=0) + { + perror("unable to get portstatus"); + } + + status &= ~TIOCM_DTR; /* turn off DTR */ + status &= ~TIOCM_RTS; /* turn off RTS */ + + if(ioctl(Cport, TIOCMSET, &status) !=0) + { + perror("unable to set portstatus"); + } + + close(Cport); + tcsetattr(Cport, TCSANOW, &old_port_settings); +#endif +} + +/* +Constant Description @UNIX +TIOCM_LE DSR (data set ready/line enable) +TIOCM_DTR DTR (data terminal ready) +TIOCM_RTS RTS (request to send) +TIOCM_ST Secondary TXD (transmit) +TIOCM_SR Secondary RXD (receive) +TIOCM_CTS CTS (clear to send) +TIOCM_CAR DCD (data carrier detect) +TIOCM_CD Synonym for TIOCM_CAR +TIOCM_RNG RNG (ring) +TIOCM_RI Synonym for TIOCM_RNG +TIOCM_DSR DSR (data set ready) +*/ + +int RS232_IsCTSEnabled(int comport_number) +{ + int status; +#if defined(_WIN32) || defined(_WIN64) + GetCommModemStatus(Cport[comport_number], (LPDWORD)((void *)&status)); + if(status&MS_CTS_ON) + return(1); +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + ioctl(Cport, TIOCMGET, &status); + if(status&TIOCM_CTS) + return(1); +#endif + else + return(0); +} + +int RS232_IsDSREnabled(int comport_number) +{ + int status; +#if defined(_WIN32) || defined(_WIN64) + GetCommModemStatus(Cport[comport_number], (LPDWORD)((void *)&status)); + if(status&MS_DSR_ON) + return(1); +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + ioctl(Cport, TIOCMGET, &status); + if(status&TIOCM_DSR) + return(1); +#endif + else + return(0); +} + +void RS232_enableDTR(int comport_number) +{ +#if defined(_WIN32) || defined(_WIN64) + EscapeCommFunction(Cport[comport_number], SETDTR); +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + int status; + + if(ioctl(Cport, TIOCMGET, &status) !=0) + perror("unable to get portstatus"); + + status |= TIOCM_DTR; /* turn on DTR */ + + if(ioctl(Cport, TIOCMSET, &status) !=0) + perror("unable to set portstatus"); +#endif +} + +void RS232_disableDTR(int comport_number) +{ +#if defined(_WIN32) || defined(_WIN64) + EscapeCommFunction(Cport[comport_number], CLRDTR); +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + int status; + + if(ioctl(Cport, TIOCMGET, &status) !=0) + perror("unable to get portstatus"); + + status &= ~TIOCM_DTR; /* turn off DTR */ + + if(ioctl(Cport, TIOCMSET, &status) !=0) + perror("unable to set portstatus"); +#endif +} + +void RS232_enableRTS(int comport_number) +{ +#if defined(_WIN32) || defined(_WIN64) + EscapeCommFunction(Cport[comport_number], SETRTS); +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + int status; + + if(ioctl(Cport, TIOCMGET, &status) !=0) + perror("unable to get portstatus"); + + status |= TIOCM_RTS; /* turn on RTS */ + + if(ioctl(Cport, TIOCMSET, &status) !=0) + perror("unable to set portstatus"); +#endif +} + +void RS232_disableRTS(int comport_number) +{ +#if defined(_WIN32) || defined(_WIN64) + EscapeCommFunction(Cport, CLRRTS); +#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__) + int status; + + if(ioctl(Cport, TIOCMGET, &status) !=0) + perror("unable to get portstatus"); + + status &= ~TIOCM_RTS; /* turn off RTS */ + + if(ioctl(Cport, TIOCMSET, &status) !=0) + perror("unable to set portstatus"); +#endif +} + +void RS232_cputs(int comport_number, const char *text) /* sends a string to serial port */ +{ + while(*text != 0) RS232_SendByte(comport_number, *(text++)); +} + +#ifdef __cplusplus +} /* extern "C" */ +#endif diff --git a/Windows/CCLoader.exe b/Windows/CCLoader.exe deleted file mode 100644 index 7f84b588f9aef9a1cce26901513622c019883c4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332529 zcmcd!4PX?-_1{Y_a6n*B2^cj<&{Gpd%pqt32L_UZ@M$yzP(b`lp<1N4N085hy@RaV z#aI!)m56P%wUzo2AShf&$bq1ZU@?kSM6A0WVi1K8ko(yqVn{cT1@dF9?Di|C*WvVFRx8m(6~E`p1vrZoMnI39om0r_To4*mwF&m@)JI z)Y)_H`_-J=f0KIW?XzaxC#BwTcj_G9tkjvaQgd%8Nd3)ycir8uYuC;$6Lr2<5XRb^ z!q=snZW0d13zu{eg#AKCTNhj0dBU?cLAWJO5S++MLIqrfb;u*?D2*bbn{w#N{z{R; z|Mz{K!1^T!sT`InP#yf47k=Z96J{s!tR8tnwHbeoWWTfe(*mu|=Ht}*zbzK_NAd0b=uvW441{pN7MsRO70jJXz;{8-7HSuH>&`*ALXlY9o-I`JEK1#%b6w74esv`BtKEU?TFNX7ts5qU z?JhggO0FwW-`m$FtWCk4T-~=yD{p}>#T_bIIz$k%g>kop6Al50x*ATLzMa^Lk%kio9M_s`l`JvZc_9Y=LZ%_8_HvesTSc$wf;WyV#`b=@KUf ze~m`vjR92dCN7_b8};D^+_*!*-QuGmV+?Y%xkO#)kJ*Ag;ZZ80hUEt&ROm|;6rESt zK@~1QPEl#0JEVNE@f_q&ny3}NP@sGuA6j_yFY7Y&-Omd`dbO78x=`L<9~O4uFPv@X z7YDy2@{5ySlK3T=UsC8IAFMZdC55`!V%J7u-VaPN~FY+^t_Rdyc?iGg8+CqaNj zh{Y_M0ez3#;67i+`W3whSDC*zlWL094z6}oB^s#Nrdl+lU-KBx_(QhP)FT9XLD*X1 zw;<)Er%{3`f&f`V8G78tN*z#?PK3gV8nt@PGa$hQb#U(pCxpj2C6$~vNO6{xm z=cxD%6l=3>$^e)CJV6$gD)uMUr03)+n7Pun~qW#6G#OY z{mV2A-vk07aU1#%O-)J?1UQ3>*O-P3UQP{A?POj%k!rt$+QuKL4tnqcZis(Sm2d*d zgKFrfpMof>6OBKf!eC@(C|ZtULI1=oUykxp_E)HUQ6L{mQhQAW4WKg>O4YQdqV!NU zDI8R)Cy{YYD^*jr26s#6P)RD9rtW2<+U~OLCx?-}%0$j6j)?^XqDMOnF+{5tt1=LM=oRO z>nQyN(i^B{;|&ZJka0=BJ7&(R$#q>$Hy5Si4>uPRF>=TOdLViQbwF2Nd7-PXeMwKC z%_me(Mp6A5sH_U=1OR?zv(<{_LP@TxPs{u`D?hbme!P|6yJf!J%D)J9`66Ntu9px| zebGA87Q1UUQIi;@=3|&uhQ-dw?~IbQlc6>&lX#5k-(Sl5lvYLsCet4zJiAa}(O~93 zMftBI9}GwneBHo+mniEAWJMBj7p6Pas%SR*2vyK+tYy{;X|J#q&7%3D1ZXKn?W#~9 zBz5Kjae;0i`;d?gjkb0nrx0}(VbVgmPURO-)8|Kv2J@nfI26UBC|d9s3as8x`#wNW z`=>D}ugyl+%jgF-`f6aFN7buQ60M#I=L`kUQNdqOzzJOdV}jgul=~=w6AoZ!a~SI- z^ov?q6I)0YD7H|x3JG#CZr0{n^t6X-0)Z366O~_`XRE!m3HB$wcI{ZILqE`kfvj9B zr6Np^d0Q(RI$BbWYw z@K(xQg)LU(WD}`ne>fobr3+0A5_#qH@9xD5&@+4Gd+#`@>gdg^R z3WibvQ%w}Sin=IZQn(ZaTngWFA|57ikym|@((yc9PwC?qGnAQjq$50CLg`O=`b|pj z;py)v9p>qz1f)0d^i)c}f^;N751`4ishrv0vIM%s#=}yAQV5F1!)m%)K=qs1l`z3% zT(rNx=MAv_jz>D$->q<^t^N)~0qbvs=4Acwn}V>T3O0J_p-ixtRUvlMWTX{-YH@oO z7MO}xmlx@RxUvC-V!8KIu{~hkRv(y!V|Agp)L|dcvPu=ycKTMOR`Ko+d%r^)WB{nXmTyzN-`Q$w0twV; zlZ+c=4EF9{_-W({&Tgz3tR`@^6D}>bnQmyNDD3?f{q!EpIf zWLvuE5RI_8pNQ+d-xgKsjuP*`C|TnDBr1=1YT!{K#}dgZ#2FYHXhbrW(~mj6-Xsp* zlnV73Tt+N}Y4jy?juSV*<4S@^BZ!vywUqCqe4#Y#C3jzlbdE6VvlVL$rYrKH$(TmP zB^~f9JV5i;0jl*;Z>ScbH-^Bagq0j3V9hTEhGRBk$t6>VtV3E1T!P-POOISWSq5ZpbxO z;Xa(O27J8ZcHdp$gcpz+;&x|*6JA6r74d^`!plhAJ|r_WoUjh5*|*P`8BTZ|Dd~YB z@ zR4|?MdFteS*(!F$1Y4a(A{`~3&}FG9xLM@X7jny_ZxU>560hj@8Fb5#Cfh$8Mw1F$b9B2bqh9S@f zt_%{ifh&U>+Q5}z4z!^y4H$thlN;H3^k0)X;D6Hi)$KJt@VaaNCyl=f)7qxzZudam zcz^Jnvz-E{ob51xvpL&g0Kr(YdoX~2BfAF!h*Gk9Fn|yl**zFQSVa4 zB-xV=?8a3vE^U{X{uumZgfq@EF|fuUpNN4qhDG3dSca*o4MX}5j7sC|GNgSPdbLNx zK+7oqZ}{*8X6810aL3R9>p&ACpBiaGd*JgUJQwa}r|R_@2j*cM7ir8sY{D;WgSHOag>F|6nweki-f zuCzjM6U)+;Asm7*UJ7BeKYAO;P`wV-9;B4q(Bz}WyL3R~2YXtLk0i;!cTV9rVYA?~ zc|Rtvvm+=Bdq1WU%7Mp->T7_iEX8aH!9Tuuy$U5RLaYLDbDKm|stIf7Ue*V|)(oH( zer&piWiPacGmmgy_j5R9;0$}W!|QDddw1amceVWTKEKq_CAQh^RGnusL{4av*AJ5AN`Fp5hMOI=zbG$6?}_pwuf9?aFuua9e?H zb3d$5`R63%9}|_mAQ*96HJds{8wkD;o-tx@5h}|$i8i^(cK&WTC!>RW;0Jl@MeZF+ z9Y!yq);mKHgCV7ZG)kLoS97SoXO6gPt7oFPs?t|ZwXw-?9>+knQ-G&a<*0Y1-^fwpqEwP`x4lcdLHA){*_m_2t|>%&27O+$_Epb8idI0YCcHstnBfh=qKHd zAK$gqo>-n^ll2Twr{c@S@-cB*PMmggt^Z^vrK)%zi_ceKW2K8Wtk%51$pHxk|*@kTZWpbkb0h{0(=iZ@C zc2q{<<(DWNpj+?@8_^(sxx5H#__%W=YpD)h!;Zc7VBahe|cOU+Jmk4y%Re z{=$n|(_rQW;ceipO*@*$^|ov4=r1eUQzT#2nHL0yoj=GfC4vTDSKR^t9xj>E3m zuLE(uLGtNNi`jNDd732AyiN$#d0cw0u58;ST{)sOq7SD}5a0UB)lRY@q*ne+m#>od zF|rZkSu7vv@br@$V4vON@`e3NI*s>LsyP`OdjNICjle61dZyPaIT^tBH{gr>4FdeD zJH+jAWKBzbnHby+j{15so(ewBQ<@nIFu0v^;|%F4xpA&f*X~b*fqRzb#vE{ex^J(^ z_TKeNDyiA_s<1zqv>#oL&Yap7+zF)o${yOW+%2Wa zgY$~JsogPA&j4STJyi=ZS?GJ2uJ}5sQykbWt|N;Gt6c^DYOH)BE0?|`S`L_HTz?^d zNFQbqb;khI9HvRh*rB=(qsF#Y6lF~)c6s0GGV4OsTX&KL)^jE zfb1IdVzJ$-GFMQ?Ct`wsla3o;GvKwjxgBi#fV+{-GN>J37xZsYnY=HhgL11QqVmi) zkjY(v@Cdf@2#?^4nh|7P1U|Qz^9h>{Q<%WVN+OPUSaUHmV|g}ZJSNI~93hx4uB!4k z-r~CmQ_Mw>X5%eVn!nNO+eIdLd?ISHStPIz(?MPwuNKGPe02bE??x7wJrnya=$2T1 zPNcFF_X@@yhD}%s$eEW)v%$5u=!_HDgjv!J9wfM)W>JXQ48Ab}A#+@`!8c@FBMPIkgx zEk`PSM24{duH~~)p>ozaySR0JhtK`+Kp^Tln=9cykY>Ma2m$sonRN= zl@b}m!G4P|S3!hULc_m#_ogG&AA>`i?Vt{OrCU8?rO}H+p2>WC`udUG ztHXHFhhauyR?#bUA`ML?n?R+NG@72}@W7h|fh&~}jnR+$^I?{hN@G6gVD=1iMvAha zFDh9$D&sg!V_-LNyu@_$`hdR3S>cu@5nj5 zO>q8V+kn4GW67ca$HfVF9~jmlMLuY=;~yfQj5V840}Nz z@xu6qdRMOpv8BQIGzxqQW zf=yyzYzz(ACJi2w24fmBP(O@qaCGxdjud0>1TqhNi?Xo)WPy|huKP2+(n!K*L*J}E zecuWn;2;}gI-w z!=GA4kJLV4!3#kheUzcbJtraYLbco*$o_K zrU}Oy5h!zPI&z9W<3SjmB@}( zxRK?Hfj=X2BW$Wr@jH?*`iCYkR3Z-so0LV^wNe1UMSuk!VF=mOsjvYf5{(+%a>HS* z4^4yD7Y0wKrh6tzQ#@m&Nm@RJ$>?IQSiT!G=s{|$PJbDLui|<%ZdwiKQ=R^0 zJ?jeW3_No3;{-{h1;Q9I1Y%%0z{!C1Wk!J3mTZ*X4zkI8l0F9t2_nEv2Wc-kx8Ufz zYEJ6l9M_^6bxewqw3K-psbtD5JiHq;71g03{Z6p6f?Uj4!p4IzIMFFIxX2!=1*wAz zFt}z>8hGsw!+0?JSdePr1u-2@@@kQAX^h>6_ite8Vyi`Q#nl}k?)OTm{V~udzKEPl zE5kbdI?j(8DUopl6<0@Qhv=N?dVCD|(;(hBwSkV={fvhLL-Vh2PC$pcF{B ze%I-*qj?}#D#^?8iotQ{5!vDGF!M$>Zp`rz&$q-jugG_Gvor&F5DX3w8RO!x+^Q0cDY(X8?P}#jUzH z24JKDMgvMQA6ohnPr#|IfG@IuccPT>BMQF%%Oz};|FA$I9wbDT_T&UYT4~qt7)#L zU&NZGOJs#rtyBBe$aOJWbMn^cV$d+NYW@S0R6BGQHrG7G8>EZT9W^%+_bNW-mh{|1 z(BCf`fiEY?eQa<}@*lIh*F8GLv(Z`7%EamIK&`r zctD)j0gHmA2!yN7wg-=i0S!5{vi=$)5DPZMaWVy|8(-Ja&HV`A5qOc3-`ThW!2So~ zV5Wi`-+5#A_7ys`4ImbS5DadQK?Bf; z$=XcLTDlnDay7pPXe&mdW~`lB4%BQAUlT>YsGuF*e@OMXp54Y#)5UlUs0rE=)yfT| zm9#+P(8_GPLE}m7!S&m?8#nG_(Z23&V0}$P1>V>14fORxkSbTk(HOWJbU_gB!s~#+ z17pQNXDZE17K1C0FisPOx}sA39(c&iCIDX4B&NwB`Z0 zQp2K5oH*lc8g6VH8a^aj`Rf!Pkq^1By0g|NERZdY!BS%+0tY#4xzb;$tmqrV<2v1i z4zc<7VysM9l-G%0dA*@ z!F;-%L1*is+GN@~((--~a^1%~E~LOlvD|)LAS8A1xTKEQOUXLC@N2}!jwp5M-|HX! z8~VQ>(RLgNX%v%dfvFQ=6Rayy7aCOIAxYHfHvp6k$3!vkAxI2tD+aT2)57R! z05djG7v@r}PVh@B;O4flKz4$83@`xDnR!Iw8!}5rDtZz&=97H#1)zQlD5e&(VMHp< zYlUbNfs6-;e_kAz^9RfpT7Eo4g8Nxw@KM~e%GXfk5v?jOrpo7_a>ZO~vrZp^Nraei zlI#`v7pGtnDrjFc)_jhnYP7EffGa_K1#N`K0$fG_8#%yN7#nydvL!$Q0X)tDb}&zZ z#QhL68e+*J6qufF@V7`u?dG$D3nvw^$CQy^`5GG!0@ql8Rm?yMNSX(&p-xB6N_yZflcSll@b6w*A@%# z7Xlc{0q!FJtlwJzJV*e&IKX%UpkWh>VI~2bLSM-qBR*{N6i5r;d(Osa3LZfIMi*-E zNqNysng<6&=fQQbxf7KmgAOh+ue*fY@*Vj--)?Gos=|q61>p0gb~?%gF?N* zsZ2`J5}zOoQGz1UH9xN6<_SPL%%N-#+cI!3f0d!!Xpj8b-Bbhg!X{z{9&bbBHR4oG zW`4NXO99-$2;WP&ShCoalQ=;9UZv67_V#;?HcEbGSN|S54~Fz5`W4H&W$yHC6U)cj zGRL~QNCkuNyJQnW5QM|`X0z4yFLZU8>syHq-svkbJ9GyPR5wUymUV-^=rbssY3liW zfNsJczaeSx4atkvsgtlN!}dFFKw#oYETf+Z$B{U2&iU7fGV?it_0FIu3ZCCH*Z+LJ zbZVn({U;C_`vdA|qo4DiKxoWh>9_nRY~u1~AQXQif?~O_Q~t(6F*pqg9xlFD415Am zf1@M@M>4Z!bAQd|nmn8Tgyg$Z4$)c?yx4E1 zAOON=xd0V^*8$DL(73q1?>mS!z;!E*(rTX$a!bVs(b$gbevk;R4K z#09Mpl2Z#(l)fx1my>Et1Ejg$SMTW?{8|jq)7a`F#L&dxxs)t)V3o!EA%r;Tw6*_4 zt{Ciy1ecv#4E%*|R^Cfxjs4*qv&2A}rpb2`gLfhW=NvF3anOOps!{xu=#HLu@NA^; z+=a*{8oE<4#MMI;0b88Dqe87+t-Hb14`A9HeP( zP%wWp-@avlIGl$#vF#N<+@bcDLmjc-b@Y#7umBZMeppHQW(?yrr_DB%1616HE);(7kYYxoAbzcI=S-;`KBEb6B&z=GF0^O5)v zLjM;+ea~a#c&0;nCv59Tggjt3n$Qy3A$Li6&$tg4e`5x*7_5THdxjT#Kn6TBD_?pT zRcLiW85mcBu?X^x-poKHx*_k=xYI0QH{@kBk8e8u5a+?r{RB8XaElMp6+uwiNA?tn zfl46I@@V`Qr-O$ybC9Kc5Ma=2rH0}afp>66%2kVuAsD#V~AA@&rwoK{P>A$9o8sk?q2H5_>Y~KoPI9VG1{5W*;T#ig8%ZaCC z1LUz(<=f1+#lXwN zDFUCADC0awKt&J4m2-$!jd5b&CD0%@#*4vv5QqWh*pg!n2w)1RR6Ez@@MprEdCU+%crmch0*83jb|Y^@W4UV;z&&B?L6Lcl8KcGc@O*x#<91tlE-+!Xdo*up&vx< z5i2me??cv83g|O?g*lA4cPAcuAyDWmN|^gYk{c8&xo^;QCeI`=<4*Nb*!J{W8>}(EO?E(sb_WiOGq<=VNeJW8S@B+lMsdsBQ-^(*#6zi=y57ZF8y8j zf><%!qpEcFLi2QpT!;+{TA`m-WXdW@>QeFuopF*zDwX^Mlvv)=_mL{o6bJV?u|{qJ zBiSJsN{9AgHr7_Y$Jr{2FL+WS;&TSl3N88m-+Hb#MPMu^1^TnfnC3nPHs&!l9#%4(daU3&TnWVC8q40yrTX!|{Vd!ns7 ze@cpNT6adC<{jO9FEx9K)#lRn+8lbp*=m!ok9dD?YTe&^+H3n2ycFlG_IGfL{@&PL zo5Omatu|x(dwJ{r4r;IMS8-JKtoHZ37X7`fy*BSTYi-8%_Y~&G7W&+?y|!P$so}HQ z-><0Is6L;>U7Il!!6Biu(`Iac-*4StqrJ8Z&sy8&_^oQu-#zWM`R-Y>8L|Cc*Sf!3 z+iUy!v(~oR-{)KO_m%eAeD?pvUIkkB_v!Z9e*SFRs|79kE4SC?g=ekJSoz-9y1(<= zYkLJw#GRe7#O2Fp)<7}hqqOhw2zf9xPuJMv7b|r&GC4Af)o~7eFOKjTC$RNYs*ZA) zbNN=v`vQ3?^E1NimwXHLw|2M}IMI#?6dPIOil{x2n*uF@G6RR0 z(JZ4%4k562P(Beiw^9W*wxP8@omP=?zJ=;UhZ-k0ATE@S)?__}cBqP!hRXf+cn~c& z#fvL;U=x~lqv0eaNAM;aNA0p^l>F}~l$_TP&Te2d#8iza0_BHiS}PAXiC zLKLX|f?xX%wUFgNREI3p@uymdGu0Ajs(uApimYeBnL2fpU1`)CsNY}OIUX@M7F#x( z$C5%`ig=&tAB}HMABO?*?C9e$3bTp9tWaG2x&)vpb!_iV=OWo#Y$eSjwwT|S>{HW%+?hhzzGuI8rW=oWY|H@y~ZUhDT zKi;Dyj2IXR8;hgZV&Ebq)Yq6pk8@{G??))jh`a_wDy+!J$1Xe{l#H!0BNJGm(vnl{ z4_CjlJl}znNE4t-%6o(ZEq;wr;on5#-XjL4USjpzG!$Wor?sK*Sek|PghT&pwEj@+ zV6?7(Q*3=0nW5ao48=0TG!Dip?3k$!n7Rm65AN;>Z5#}4M=qy$f~Akwx5xiUv@>U| z7h?H;rW)`x*MJdFddA$nX%;7%HDFA8BVrA97TcxZj8_cSdW9*%Wwl%py2I+>SO!!f zxE?L3d3YKQ@iI!{VSyTYSm1!_W#(5K(d4FZK{A3ON!-XNn^GWHy%RcegHP$#XTw`!?Is9}cwVKVA*^XzvOI-|pxTJJaqx#mCd;zf-eO2Xbe7jmE_`8Y|Q@ zZS!f;pRjB_IANq?pSx7O(IF2Si1Tq=!Teubwr9&mt!w- zqi{!H1}5ZY{_5XkvRkKV(@V23LsnrMi)j;6q;~*etfMTxE<4ns|KGRQ|98%6|FQ7i z{5hK8?W>C%&D@W)*ZLOhwnjxB%l$JRQrv#W_B(d{-EP;v__4;%SoDy9>O+J=>S7u? zJ58@l2BvKr0^hlXZBvfGLM^bY+X8(zyrdR2_QDuPYXEi;w`PlsS~|%z3PUs6+G?u1 z$U#&0YgEV^{sB&cxFQGxw}lNq#*f)H_!CQ;*!X*mhm_1%2#)YNA&h!69&(-)k3eh< z*%Mqp$rS970>X@lM4m2^ALxudtqigpR_aKRZ^&oEZ?iTu7*PcebN=GfvijijHlaHgmG(p7b)3xo* z4@=-0w%hbivaXGXK=GVm6h*gBqd5Q(JQi+46r9eNI`zqW!MdJuja^&Tbo%t^kdn= z4#GnfR_hzG~@A=us`?}{CZ#WUpO<o7P$(Ix=ySa>q;iy!cIrL=+Vq7)G&?_IzHl7l7L;&^}*Ba z$@d>WHr~!uMXmVhGHNvHE6c)=V-(R=8!gtTNY8-c8wJQ>%O03$G5Cj0s6WrHrqR@!NzhDtf5CdP z3+=X9)6{>vo`e&LW3&ly7~y8hjeW$xO)z~~g_t%+AtB>!)j>L-1BagXHg>NjxC6sG zgH17v6XuQ%!X#pFFe(|>P)#0z80#89tccm>X;YCRIH-#uO>dWgamd7~p?TY<3(qvS zeGEGH8MCEC5gK!;rksX9oQ(4cw6zpAiE6dQBnEDWTSZR^Bd~Hl0xRN*e2P)lbDssV z7(C{m6zPg%(<%-ZpHF9hZ{$a*bLGGtp8##1xKHk%O()7dx=6 zUJ7R}>$n&!#=%8n12Qm=nA*CGW(B5==Cs=pCqAPSP|R#%_*>K)je5p!2siV8qWJn# zejx)zP-*ir3|KZQE{L`h>C+s~Sx1&iimEfmY5X?((+W=uo9R{Xe_@OcTJ4~MQg$olPg z5NUZ&2n&ylEgagEiWg3$;{?OS1j6KCJ09uH;|ti%ZMhGL6UMYwdg$C4R5d4H=fmA zll`!I{{D~kJf4n;MhEFTu#QGO9V3cn(E)PfU&v}T{+_4&Z5HU}XRKJ-gJfVCgJboz ztZg(+x;fh0*zxvX*dvih>d#2BOw1`b7)EbowHa>*s3gInpAEHtP}aAf#PyZRw6AYYH&hcDnfQY(0vyiUKHDwniq=_bnZwaB`jvhHY+ z)t9nvKvo-i&ZUxp4A|;?6D{{+r=Y%|p!@pvTl)8z|r|6ZaJ(wlM;J;9w#ljV0 z@I9pE!*L3`HL7qIv&ea!5P7kM1G|wV1}9?0Xsn^Ud5M_M$xHh^-7%uzrCIj4^|=td z0~ugZ{rE5av&|opyW1kZ{At_yQ4AdaIHt|mwZ)m*(5E+NlV=|@ACLI|v)9aXq_?ls zSY}&+6HS4NSGN6s8ms>w6HOngYS%>HvJZO0oIhooaSA6Gxk+Vbpv)PU)(-lw;r|&| z5inwcaLhA^75>F^LUAVf;#mmrN@xUS&BqgIWsS2yfo5bOm}JcazXyCQgRL+h+$du!o$+T?Ht(V#)4cwFuf6e7hS41zqp{=VOl|nn z*a=P4MmhK@NB;M7q`}{UTfJztGLG$n+(L&tDK8y{))PLC9(A+vXRGPL99xvBaNsD zr;yiV$AY6r@r>swl*JY32F&=DeP4QdYCH4)*;XbztyfS zWdYmw`fRrXww0BJ6|Ak)Mk84Jo)D5hioX)UbZHK>()3uhzWvb`ir40|bBu>Mi%SyY zOH_6obgWWq#_hZL_L*xdsK!s7BW%e!Ql!WWJR-mOcH$k6509qymY%+=nSb`~CG6w| zj-bA6#_r2IAU@2*OFeGgD8w8+g35j5-PX}bK;w;3OYFuS?4ZXPN_zrUy}Yljn~YVF zmZx5gC2aTl3|k7*mfCM=tIl>j>-3xf#@K(t1%f)-!{w%(|ud~i{lD?8?{;SS>Mck6|c#{O98jy$vZsihINUpGV2E{ z4H4$VM?SDQLT}0ZR2#m|C z>E}4viv5kW0nbh=|CG#H>ZZ{^VTUuV^zeUDX%Z&xm^tk3J^w+&3(2WJQ))Z1N|rYf z8=u3FY7=Bbgc8#dN+{0uIP?RFjoK2xE zmCo2D2)+gYxdD3~7oaG5m}CuZXb)z^7Qi;S-gy69eEh5%Il6WF3pmkW{0aFLU3kVL zl(CvJ96VzgWdteXUe2VlzaT@R3?I)ZrHng~p$&hIM%>>qFS8Lh$(TluZ@?3))78K6 zqZ2!5d4(V>j!rDVo`%Z(r1LD#h<^cvove5ckn}D_7S9udrBspLcYxP}FdW8Ust@0S zOVaoZg#Nrb@nL2eR->E(IW4wVcOaM^D>BRPGL~S~5u@^RsJRw3dnEiw%^+&FnE%HR zq~&0k4#^a2k827=M-Ks_MHQXMvZ}y2h=$z0`UiYQzBL?t_=jJ@0(Z3cw*y`*AF35U zqtttBbGvHAD=8taSWL#B?L}c9Y7HGPt79)S&|i271$aSqBSPemsuyIU=#Nkp{pNS0 zMdUzVfg;N{o`qV*Fc1oHB^%%WC#G#|J!=1~v1nyPZ>5&z*tgt`S$QLrMj#jQG4i+B zs(~0SgRd3$(yU#lKlTpDJWj=!Z@IU>m@s79nYTX&=?a7j3H0d~k&g#A3LVB2WS4>o zQ&6G@C_i=`aS7p{#w+~_g~p!%E(T9=ywK+0YjBZEjR<8lkL|uVjbPkEd9)FExzxE? z^O`qW))P<%0{U6Tw6Y}2*pa?7G(SCmQKeQQ@DOG0daugWGF4lsRR%n@6plzlW zv2&nK!nW<@qBl&wmO(Ec{CPGtd&o>cKg-r;_{Ryqsa1Bp7YM7kjvLTnpxDUeL|R>c z9)3=c;CJsBdS`=2O5z`|NSXJMT9&ZI})%GakXxkR8!Aolv5JdQwds64Ow`!o&u7?5z-g%I<^45St@w&;F%k_70JBgd2gfR zV}4nmqEu{Z{6$n-4;2~oE~sD7%P4#h@Yb79KX?IkF@kqDAZqpv~B zg#=%WE4AW^!MGDQ(_8h*P)j*%j7CO`2=7E^o3{_Hf+$Gq@oC9S!Spl&Kj6rbF&J_!5j~QE)Wo<-%3b_apRWPn#vndc53_R-A>0%?5PG z_i0L7%oW3FdYNtGkw458))a;|;09%?GOxttp6dyk9ZE$Rcd6H{9It+7wo;TRMktYc75f_^%uB?j+? zgA&8kBHXq(uT~G&rNw^u31qa{Bf1*Z+KqQ4{}fGaJon`2^J0zEZ1lWCJTas7z7##O zd3M_5@gu%Cx04)V_y0S$*Y@>it!?bsCu6(*F!Liw++4bW6IevWdLLJCKlTcv8jx&# z7aMaK&l_1v$QTI>eE<%tn=TO zwnzUfm`TnK?=Yh#!!(&s(XXh6`n-M_(;sFp0`!px^$|wuZt2RUKky@DO8}vHquYm9 zTIa!xo*>NBKOlxJ9|(*pvuly9)E2TXMwZb97KEEKenR3*%$X60PD$>sTN|7<0T(Nb zcSE$rpQ_Tzje8P`!uu0rG;e@4D2=)QH}3!AzSJ>GaE6ZJKf&f!?*nA-|JW%X8jFSZ z1e}$-*L9n8FWwr!-k*<0xf3I|s>_)iL%s>>0_;HfMyg}%!LL=D&!OeB7tmdcC)nkN z%fony9qHs|_WZ?a`o;TO8`2~%4z@_QLySpy8Szfc=?Vi;FT`8ypO>r0@&~8mch+FN`C~62~58ZZK})3Y{HHv*%b!p z`_)_Y5D#A8l+44dbgZ8}#Gx) z0c*Zmo{Ae=%8qx@>?YzeR|#RgZs`7E3QVE$mhH8!52NxuNXjJ+HDYJ;?&hyyr;O;HwT!z z{+ss5jRrVYDI6m;Dkd9>R=YAHIh*a>NbGs zczvGC*+H%jPB@^QjTA5jH`vre++gA2mfXN62V$r5?l@lFqRlhl$kUwtkrKRL3-2qi zUg?km&ol#L?oxKbi@$xGozVIQlxEPv%6!X)J_7co#msRHIu`2(Se~VIHvJ7Mk2#w@ zh0pv5Y0$Se=sk9g`Z;i%TOjqeLTZIJ@WK=}WSM_Ki@P+uQyj47BwokoQa&G8^U+6b z=cBWB-li3E(rLXE69AIN$M!rr=g?b1etv;s4Iuui1mme+RLN2^UMV70 zv+*q(GwACMt<~i`n)nz;j7Zeek7hKT}1CtT1`1Y{iG!{Eca1kltAogA<}8U9tj{CO7EOois8iX2+UY zV_BGkY(FbXnp6lB+?cf492JARSerj5oK}kZ<^B5$l!OY}af==)*V2jAXh zudL|{Ma{BHDeAgph=A1oT?orsar5zqFA*fGFOmv{{ZY5V&paIdY$-jtos8))1;-y~ z5q}RrEe*lz(16fp zxq|V!L#M$B|KEQh3TUU zfm@&REKoi}-;@gn>5YQ);$r2Qr`i1r_{FUd4z4p(N~LCxSAsMqG+D~Ucngk+p+NDtG}bBo_s`(2 zkv)BNo(g1@@YC^@tVg%vae}Sc*1YuegBXac*Tk719-Vs!lUxXNyF>W&=|W8N^HlbBQSF&(fbq9Pd#eE; z)Ofe!E28gHQt|FmgCzK{w~p?^-u?VS>ll>Q!qM=4OlkeD*Fd+oS}m*v-8F#(!b%UN z(z7P^rovrn;m7U}UZ%Gyq}}};_pVtyP79L6b>HK}5j9BcgSs_;zf5_z^54BHPxqE< z;*DC&b7FacP0O(<3=&^t6N6Vkf#s?=W`sF+IKwdpzgdH4ftWJkqhY?@&FGJz89siL zw*mJ7n2y%p;H~$>`~Jn?9!ALse9YuId?0J?2Y8|M9`?rNxx4U2H-nUmhK*d+6>o-S z0*f{~56$8OWGMh)@pJi5U(6=iI4zW`PIZl?r~{15rHDo3;r$)Gg8T6BEO;2EPqN^P z2-a-I<6YRAtC-zCo0j5uz!p$g;hR?+{Ac$#0|yBV$C`=Om}R)ZnlFXL!-H%`O3b|% zPwF&DUNk!k8mV`HQ;X4`H#qM8@w8T5i1S{2m88 z-6wUCf3Qgt!tv-~48g<^;Hu~0#c=hJH%xvv7%8ZPVyA+S`Tc;_ z5G8p7pE20T`Wuc%DSZ}#iD<5X55E#Dh{d;pCHgL651>reCtwi->wSJm-hW!IPOREM zyo-EaN?$(6b-4iB17~?8C!1z532jX@zkfIZ+kj9>0HreZ1Q8`*Yz&;~7`=HpbsJwh zOqPedkMF3*5nk+vCa@dg2%T%FA7PeCi229ypLmY$?v=}YV{#DkPLd`rE` z&NF>q$3m9^X&OXI?l)V?GrB<2cR0it`BPCTeL6JuuPjN%r`h*MvjA^rAEL0nPfGXE z($Z4;9&6e5#aR6VDK^5vH1<{qe6kHK!s?JE*Z=l}AVi_CXU;&%s?BN`o0LIs;h`6o z)6>rMmLB3EeXl~FhuZimDdpmBKA_i9i^!l4x#}~KVK%guQ0n=B$2VXRT*dcCIgX|t z`REsA(s#nxhbTG!xja(|j~jTn$g5MLU8K)ZCSg>is`08YIxTxDGWQLJi7nsx_vAHaQnVtxEgI*15#-}Y^GOOx`9z!{~v2DwlE z7uO`LD(HQg=xT?5)zN=)wTFMt8S=KTC4|N;Xc_x|hddPle4_^W*{VY}Z1RbO;*M&P zwk8#gW^?S>PS#Mi0~gwEr-4fyU4@EJ#Kf{ZQl3yYX~~tNXp&>?Q72lD9~#dLoa%2t z8;IN?T*s=`=P|pL3h}aOD;8}M(CQoY3EVx>O{{#9X&d|@-xUu?U9Ha z_daY`XVuKVOP925g!>YBPg_KS9|IBxIFshpb0_E%_KfiG`VRHtY|PqHWUw@ z5>2i~y3%2>@O@0OcMRQz_$;4T^ zE3FU6M`QXMY{`xJ4j(C`T~Hog?tSiK+M->-&=P0luQ*EpQU?#Df<@0UQ6UKLgfH<$RO{gZkzpYPpi#sI z48C>_PH5ik5Mv^ju$^=s03f$RrZTOt+IB=4SG_R~jq6X7pJVY^Tt@31;{rld zo}nCH`VSyz!l%u|yyLub`d(HSIM^O9zd+MT$RKRT_VjXX&7PFHVzu zOWE_2yV&6KS4H3NJh1>Z5;0*r0V%GZ(?MK69Ip!0a^sSv3*Ea*@fpsn4~sj-=Q*-= z&Pl}UqUBIp*0*zX_N{a9m*NfN6VOBFaAb!dBr7*Kif4d0>Y#ov7=qz5xy*w*aeZkL zE-P*I$2?itLaE>`2GTlhaI(+|SqzY_VOU^L%Y_M4eWJsB*p9gLiltb(jlVTtB)4@fC}`RQGPPzsIsKPn9~t ztrz78W*^4hx91o%W7?u-K4JbqlZ|?j4%xdD4YLhbX1s;5vc`jUIvxTpjczw@;h3hc(ntGHhBjaRWOJqfQ z0II3SRGt+Ku}tZGtS{hLn}7R0k0x18SuK__w6P)ehK(yKZK`ECI4e!&uLqSvfCiRS zN7=Fh`j)Kr+W+Taf_$<`a*^URB|XFLBQ}gj-w}|Ou?{2eCLG;mO}qC+;*=^Z($%CO z0pbgH^^qD=|J1I@#Lyj52aZ3SK=+sqgvcr)5Igl{p_9XC+u8#GXJcuaJ7oO7vo~SB z&%+Q+r9p!$h77jf`y8)bTMcL^ibn-B%t9_LtKk4xql{by;?ljGOMplP1TylF;r>Rc z!O{aMrK+jNJi5Ze!R(pF>Xh<2*DQ3U;a^|(ardXVrYvnDf}|v+;drewgs5di7;~Wx z8`hn_C3njWDCh5k!2FFBnCi7_g<$VN^fjCyNW+Crb|Dl_up>o%Ut5QQwTZanz5{h` z?JneTUU=)vsF#ZOyQUr?P7}DkohihAe&5t17YQ)NPM8_>yI6@se^?a+QyWUncti@S z--XtidSn7f?X{3vzUqBS4tF!boz1N$dBNvfF?ivP{N{|EJP2-q%g3hs2T~F&wfZ7?#0)(j1j7@q zl18bJo{3zE$BhgAE~mMSNLCo(aE!Ut;yof7lzQaEHnAC^X`=mT(q~2xN>f2fN2o03 zma1qM7(;pxc4ESAsh1j;Rp)a?#+va~N7jc@D&FHYoIU_Z%HP~7Dwx>lQO?m0a86Hw zKhzp1@*!%kWgV!Ed}Iy`bN$ZOyDs=xQZBx?h!Dm!D>T8zBcmNH&twUJ`Synsh{5z1 zZ774wAyQpx!b_KPDB^E>_@pQG12CbHN1`Yenkd5h4l1w|=*IjZ0>UL4yyZDPmKv0n zI|*0Ol@%06(kqcM`DU1%BK$YWy@t6*V*|gM4Mppnv^~A=S%i{E?0K!^hsd% zJVQRwySSTtAY1BGL6X{YpwnLEI#V?;rq(C+VBcY&FoKQA z1tcoJ>K%XM*sKrkpB47*A^?0JuiObsO%^ufKank^`cL?!DgF~7JZFw_f8*8SikFeV z2Ow)PoDi?^I^+Y_i?5WfL$0k+DJ8s0-C*zg_n)u&YC(lMF{ZVNXl>3@md}duqU=RD z_utpMo7_A2{6qbn+@yRYA6T;I0QL8Sz`l8gI?W-zvWZ&Ol8%Ol^YG80$m3@F;oMp~ z%Fu8mh_A&24#S1Nj)F9x1t=rXW5v8YyEGFe$vO|?<54+VJH&H>Tim{|N6 z|1f6h#jpxK2R;Tuf)ig^ZE|KcamM%@6BH|r7uV;XZe6;~Dos%HPqi+jkiGjDK6gOb&wgT24XK1uM@(e;(w2YhbCrOg>TNi@mvMLz7Ffp_7mcB4i36AZG&C3_ z7|tj(mXp?5Y#-Pt?{)ED@K5O=R_c45~mtx*ZGW_B8`9tV*ES`P>omO}dTMMVK zSR!#e#>RT$aq*SHgW+L(yq{zI;ipl6BEn*dL0@O$Dm*B@!tgaSPkD^QU=#u$Zj}Kd1kksBh@$@3zcfc+N2%H}U)k%Ug&Cb_(L5 z@$}>J$@^)1XVg_v?c<-Kvq#YduHM`q_)%4@Rf=aA+o;3yY;q_83%e#MNiD4QFWTu8 zbN47mZH<9_55%eG(jb291(M!l7Iddbtr-$A?nEcV^@JimvWau?r3T{S!N|+v7M{PB zcSV^NYDFAwpH#xK9)mq&0(tVvkKFOTxeYJPc)UmoX| zhjBp*rF3b%-Yiu9Nhe$?h(P#qV~=km(ZFkWia{r|;&_;hfEYZVX0rF(p-Lm}*w(nC ze~~(2;TDc7QbwMZ57?ymnvN7xbcVBM03675jW6CPQD$#+So zyEQ2uyAKyY=K-GNpXb0^?k03Z%o^j4^tlF;;l$Xyx7HDvuuTZCX6k>$!&WeT zVW7ywt~76(kOB4IV7l?6PLfQQf)chQz>ccg zUFqx6CUm#!Pt&1Ll3P9;sUT790d*-rC-3j*!Pf@+p_;h7KYl&&)W5*hl(cVh0#ppH z#jkA-&NRGLfs}v{){nU}wokQOkEr~mtd(=nEcHH#dVevsgWfxk z>B;bUntPrC6e#!%I;1qPJ{MoaKTY0%{*ril0=vh_0t-_0 z1jaOcc{dgI2u!rqGJ7Q8ECr}!UXYqUR?W-v&p!=^p-~N0F0^ zRWa#LydB5ZZ@~kYP;m1bt;`{4fAneg>o8kEUsGy=q%9au@rHuF@G+yX4jH$SYr`x< z=NV$K4n|kSptCE%H&KNOw8>qJN}A{S^Gsa3gBPQ_pkf20B=EI2UvFuPY_D$NMzO{V z?FxKJv*HeB3U4?qe-+0*zo(6~%ll7hcu}fgoB}4UYZGXc8IN*;FzTkV`ylSI>(POO zfeS8=-jiPRfrJt^%8)N^AuWqH9;Nhpo~B(8m_wI)Hw+g&le?Gu%kA?D?_&XsF#(kV zA<5x^vScD{87!j_MEK{Qnt@NcVuX-7$|C#pI@GRO4E_qRP__;DJTo;rEK@D524k8v zEJnY)+!@=GzEdk9Bb)x7GEUG+UNDo%S_#=#%5`WZG&Csb)JoQv$qcQ8JW$Hb)JjMx z6UdCD*CNN8jgL$|Lkb-B(tDY3F?E=owG4adG%hkd{L+^$%D6O3qoXQr+F#=}2oD3U z7JVfK3__=8FizMS#30ig8^U--H(D7&w;ecz(i;pQ8NnBwjYruLxuBO)R2m(TFRlkr z9Bzo6p!6dM#s%@z&<3~Z-)x1N-U62=W^sn~t8xUxAQdul8Jkg8++rg7J8tNW#Dei} zkP1^2Tnbg)M8nj0A2~{cF`mih)HpFnTI?Tm7Y;B{V!llkgMUK`Po5iNVK=ybaF?aP zuEra)fxKBWQ;hF{kl&MLrWjw~-cyC|!lDJ^Te3X(pic1LsD)R#z{q@zlw1>MJPg0a zIuD5b1bpCe=^>IpRy`*CM0J%bA2-+!bmBGxAqK1p*zJvdtPbjDz82F$6!#=}i&?#q3bR#RJ6d<@

~+Q-7@(wAM$S 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