Repository: Misfittech/nano_stepper Branch: master Commit: ddaf3ad388c0 Files: 84 Total size: 1.3 MB Directory structure: gitextract_ktl3d9ev/ ├── README.md ├── firmware/ │ └── stepper_nano_zero/ │ ├── .cproject │ ├── .project │ ├── A1333.cpp │ ├── A1333.h │ ├── A4954.cpp │ ├── A4954.h │ ├── A5995.cpp │ ├── A5995.h │ ├── Adafruit_GFX.cpp │ ├── Adafruit_GFX.h │ ├── Adafruit_SSD1306.cpp │ ├── Adafruit_SSD1306.h │ ├── Flash.cpp │ ├── Flash.h │ ├── angle.h │ ├── as5047d.cpp │ ├── as5047d.h │ ├── board.h │ ├── calibration.cpp │ ├── calibration.h │ ├── command.cpp │ ├── command.h │ ├── commands.cpp │ ├── commands.h │ ├── eeprom.cpp │ ├── eeprom.h │ ├── fet_driver.cpp │ ├── fet_driver.h │ ├── ftoa.cpp │ ├── ftoa.h │ ├── gfxfont.h │ ├── glcdfont.c │ ├── nonvolatile.cpp │ ├── nonvolatile.h │ ├── nzs.cpp │ ├── nzs.h │ ├── nzs_lcd.cpp │ ├── nzs_lcd.h │ ├── planner.cpp │ ├── planner.h │ ├── sine.cpp │ ├── sine.h │ ├── stepper_controller.cpp │ ├── stepper_controller.h │ ├── stepper_nano_zero.ino │ ├── steppin.cpp │ ├── steppin.h │ ├── syslog.cpp │ ├── syslog.h │ ├── utils.cpp │ └── utils.h └── hardware/ ├── NZS_A4954_R2.0.PrjPcb ├── NZS_A4954_R2_0.PcbDoc ├── Nano_stepper.SchDoc ├── Status Report.Txt ├── panel-RoundHoles.TXT ├── panel-SlotHoles.TXT ├── panel-macro.APR_LIB ├── panel.1 ├── panel.DRR ├── panel.EXTREP ├── panel.GBL ├── panel.GBO ├── panel.GBP ├── panel.GBS ├── panel.GD1 ├── panel.GKO ├── panel.GM1 ├── panel.GM13 ├── panel.GM15 ├── panel.GM2 ├── panel.GM3 ├── panel.GML ├── panel.GPB ├── panel.GPT ├── panel.GTL ├── panel.GTO ├── panel.GTP ├── panel.GTS ├── panel.LDP ├── panel.REP ├── panel.RUL └── panel.apr ================================================ FILE CONTENTS ================================================ ================================================ FILE: README.md ================================================ # Smart Stepper (also known as the nano zero stepper) Firmware to turn a stepper motor into servo motor: see http://misfittech.net for hardware! If you have a MKS Servo42, this firmware is not fully tested. MKS has taken this firmware but has not provided source back and hardware designs back to the community. Test submissions are appreciated. __Test at you own RISK!__ If you want to support the work on the firmware and hardware consider buying hardware from www.misfittech.net or buying me a beer using the donation button. [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4JAEK4G24W2U4) # How to Install [Hardware install and manual](https://github.com/Misfittech/nano_stepper/raw/master/documentation/Smart%20Stepper%20Manual.pdf) [Arduino install](http://misfittech.net/blog/arduino-package-install/) for building firmware [Further Details and to purchase Hardware](http://misfittech.net/smart-steppers/) # Google groups forum [Google groups forum](https://groups.google.com/forum/#!forum/smart-stepper) # Command List ## Smart Stepper Command Line Interface The smart stepper uses a command line interface where the prompt is “:>” ### help The help command will return a list of commands that the smart stepper supports. ### getcal This command will print out the 200 point calibration table. This is useful if you are doing firmware development and do not want to calibrate each time you update firmware. You can take this table and copy it into the nonvolatile.cpp file as shown below ### calibrate This will run a 200 point calibration of the encoder. ### testcal This will test the calibration and report the maximum error in degrees. ### microsteps This command gets/sets the number of microsteps the smart stepper will use for the step command and the step pin. The number of microsteps does not affect the resolution of the controller but rather how fine you can set the position. ### step This will move the motor one step clockwise, the step size is based on the current microstep setting. To move the motor counterclockwise use “step 1”. To move the motor clockwise 16 steps used “step 0 16” to move motor counterclockwise 16 steps use “step 1 16” ### feedback This commands disable/enables feedback control loop. The plan is to discountinue this command in the future and use the “controlmode” command to put controller in open or one of the many closed loop operational modes. ### readpos Reads the current motor position and reports it as degrees. ### encoderdiag This command will read and report the AS5047D internal registers for diagnostic purposes. ### spid This command sets the Kp, Ki, and Kd terms for the simple positional PID controller. ### ppid This command sets the Kp, Ki, and Kd terms for the positional PID controller. ### vpid This command sets the Kp, Ki, and Kd terms for the velocity PID controller. ### velocity This sets the velocity to rotate motor when unit is configured for velocity PID mode of operation. ### boot This command will put the microprocessor in the boot loader mode. Alternatively this can be done by double pressing the reset button. ### factoryreset This erases the calibration and other system and motor parameters such that unit is reset to the factory ship state. After this command the unit will need to be calibrated to the motor again. ### dirpin This command sets which direction the motor will rotate when direction pin is pulled high. The direction pin is only sampled when the step pin has a rising edge. ‘dirpin 0’ will set the motor to rotate clockwise when dir pin is high ‘dirpin 1’ will set the motor to rotate counter-clockwise when dir pin is high ### errorlimit Gets set the maximum number of degrees of error that is acceptable, any posistioning error about the error limit will assert the error pin, when error pin is set as error output. For example: ~~~~ :>errorlimit 1.8 ~~~~ Will set the error limit to 1.8 degrees. ### ctrlmode Gets/Sets the feedback controller mode of operation. The command takes an integer from 0 through 4 to set the control mode per table below: * Controller off - 0 -- this is not currently used * Open-Loop - 1 -- this is open loop with no feedback * Simple PID - 2 -- simple positional PID, which is factory default * Positional PID - 3 -- current based PID mode, requires tuning for your machine * Velocity PID - 4 -- velocity based PID, requires tuning for your machine and speed range If you are unsure what you are doing leave unit in the Simple PID mode of operation. ### maxcurrent This sets the maximum current that will be pushed into the motor. To set the current for maximum of 2.0A you would use command “maxcurrent 2000” as the argument is in milliAmps. ### holdcurrent For the Simple Positional PID mode the minimal current (ie current with no positional error) is the hold current. You set this current based on the required holding torque you need for your application. The higher the hold current, the hotter and noisier the motor will be but also the larger the holding torque. For the Positional PID mode the PID tuning params have to be set correctly such that the control loop will dynamically determine the holding torque. This tuning of the PID can be difficult, hence the simple PID mode will work most of the time out of the box by setting maximum current and holding current. ### motorwiring The firmware always uses a positive angle as a clockwise rotation. A stepper motor however could have wiring done with one coil reversed wired, which will cause motor to normally operate in opposite direction. The Smart Stepper firmware will detect the motor wiring direction, using the encoder, and the firmware will compensate for a reverse wired motor. The reverse or forward wiring of a motor is detected on first power up after factory reset. If the wiring changes after that you can compensate using this command. HOWEVER it is better to do a factory reset and recalibrate motor if wiring changes. ### stepsperrotation The Smart Stepper firmware will with first power on after factory reset detect the number of full steps per rotation for the stepper motor and store in flash memory. This command will read this parameter from flash and allow user to change this parameter if motor is changed. HOWEVER it is better to do a factory reset and recalibrate motor if motorchanges. ### move The move command will request the motor to move to an absolute angle position. Optionally the user can specify the rotational speed (RPMs) by which the move should happen. For example if the current motor position is at angle 0 and you issue ‘move 3600” the motor will turn 10 rotations clockwise to angle of 3600 degrees. If issue the ‘move 3600’ again nothing will happen as motor is already at angle 3600. If motor is at angle 0 and user issues the command ‘move 3600 20’ then motor will move to 10 rotations clockwise to angle of 3600 at a rate of 20 RPMs. ### stop If user issues a move command that takes a long time and wants to stop the move before completion then user can issue the stop command command which will stop a move operation. ### setzero This command will take the current motor position and set it to absolute angle of zero. Note that if you are in the middle move it will take the position at the time of the command and use it, thus it is recommend a move be stopped or wait for completion before issuing the setzero. ### data This command will toggle output of binary data. ### looptime This command will display the time it takes for a single processing loop to execute. ### eepromerror This command displays the motor error in degrees difference from the stored eeprom value at motor power up. ### eepromloc Displays the location of the shaft angle in degrees at motor power on. ### eepromwrite Forces the eeprom to store all current values in ram to eeprom. ### eepromsetloc Forces the eeprom to write the current shaft angle overwriting the stored location from powerup. ### setpos Overwrites the current shaft angle in the motion planner. ### reboot Forces the smart stepper to reboot ### homecurrent If using built in homing routine (command "home") this will specify the amount of current applied when motor is moving during homing operation when homepin is logic active.__EXPERIMENTAL USE WITH CAUTION__ ### homepin Allows setting of pin for current limited enable for homing. This triggers a current drop during homing movements. Current set using command "homecurrent". This pin is pulled low to activate. __EXPERIMENTAL USE WITH CAUTION__ ### homeangledelay Currently unused. ### home Tells the motion controller to move motor until the home switch (enable pin) is pulled low. (Only on boards 3/21/2017 or newer) (Must be enabled in firmware). For example: ~~~~ :>home 360 0.5 ~~~~ Will move up to 360 degrees at 0.5 RPM. __EXPERIMENTAL USE WITH CAUTION__ ### pinread Displays the binary states of all pins (Step, Dir, Enable, Error, A3, TX, RX) ### errorpinmode Sets or displays the error pin mode. Allows someone to swap usage of the error pin as an enable pin on older boards. (Not compiled for use on boards 3/21/2017 or newer since they have separate enable and error pins) (Must be enabled in firmware) Modes are: * "0" - Enable mode, active high (digital input). * "1" - Enable mode, active low (digital input). * "2" - Error mode, active low (digital output). Active level is reached when there is an angle error. * "3" - Error mode, bi-directional, (digital input/output open collector). (Not currently used). ### errorpin Sets or displays the binary state of the enable pin. Acceptable values are 0 or 1 For example: ~~~~ :>errorpin 1 ~~~~ Will set the error pin on the terminal block to output a logic high when the error level is reached ### enablepinmode Sets or displays the enable pin mode. Allows someone to swap usage of the enable pin as an error pin on older boards. (Only on boards 3/21/2017 or newer since they have separate enable and error pins) (Must be enabled in firmware) Modes are: * "0" - Enable mode, active high (digital input). * "1" - Enable mode, active low (digital input). * "2" - Error mode, active low (digital output). Active level is reached when there is an angle error. * "3" - Error mode, bi-directional, (digital input/output open collector). (Not currently used). ### geterror Displays the current motor shaft error in degrees. ### getsteps Displays the number of steps that have been seen from the DIR pin. ### debug Sets if syslog debugging will be output on USB serial. Allowed values are 0 for disable, 1 for enable. ## License: The smart stepper related hardware is released under the Creative Commons Attribution Share-Alike 4.0 License as much of the work is based on Mechaduino project by J. Church. https://github.com/jcchurch13/Mechaduino-Firmware The firmware is licensed as GPL V3 for non-commercial use. If you want to release a closed source version of this product, please contact MisfitTech.net for licensing details. ================================================ FILE: firmware/stepper_nano_zero/.cproject ================================================ ================================================ FILE: firmware/stepper_nano_zero/.project ================================================ NZS org.eclipse.cdt.managedbuilder.core.genmakebuilder clean,full,incremental, org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder full,incremental, org.eclipse.cdt.core.cnature org.eclipse.cdt.core.ccnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature arduino 2 C:/Users/tramp_000/AppData/Local/Arduino15/packages/arduino/hardware/samd/1.6.8/cores/arduino ================================================ FILE: firmware/stepper_nano_zero/A1333.cpp ================================================ /********************************************************************** Copyright (C) 2019 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include #include "syslog.h" #include "A1333.h" #include "SPI.h" #include #include "board.h" #define A1333_CMD_NOP (0x0000) #define A1333_ANG15 (0x3200) SPISettings settingsA(500000, MSBFIRST, SPI_MODE3); ///400000, MSBFIRST, SPI_MODE1); boolean A1333::begin(int csPin) { digitalWrite(PIN_AS5047D_CS,LOW); //pull CS LOW by default (chip powered off) digitalWrite(PIN_MOSI,LOW); digitalWrite(PIN_SCK,LOW); digitalWrite(PIN_MISO,LOW); pinMode(PIN_MISO,OUTPUT); delay(1000); digitalWrite(PIN_AS5047D_CS,HIGH); //pull CS high pinMode(PIN_MISO,INPUT); chipSelectPin=csPin; LOG("csPin is %d",csPin); pinMode(chipSelectPin,OUTPUT); digitalWrite(chipSelectPin,HIGH); //pull CS high by default delay(1); SPI.begin(); //AS5047D SPI uses mode=1 (CPOL=0, CPHA=1) LOG("Begin A1333..."); LOG("Address is 0x%04X",readAddress(A1333_ANG15)); } //read the encoders int16_t A1333::readAddress(uint16_t addr) { uint16_t data; //make sure it is a write by setting bit 14 //addr=addr | 0x4000; SPI.beginTransaction(settingsA); digitalWrite(chipSelectPin, LOW); delayMicroseconds(1); //clock out the address to read //LOG("address 0x%04X",addr); SPI.transfer16(addr); digitalWrite(chipSelectPin, HIGH); delayMicroseconds(1); digitalWrite(chipSelectPin, LOW); //clock out zeros to read in the data from address data=SPI.transfer16(0x00); digitalWrite(chipSelectPin, HIGH); SPI.endTransaction(); return data; } //read the encoders int16_t A1333::readEncoderAngle(void) { return readAddress(A1333_ANG15)>>1; } int16_t A1333::readEncoderAnglePipeLineRead(void) { static bool first=true; uint16_t addr = A1333_ANG15; uint16_t addr2; uint16_t data; if (first) { //make sure it is a write by setting bit 14 //addr2=addr | 0x4000; SPI.beginTransaction(settingsA); digitalWrite(chipSelectPin, LOW); delayMicroseconds(1); //clock out the address to read SPI.transfer16(addr); digitalWrite(chipSelectPin, HIGH); delayMicroseconds(1); digitalWrite(chipSelectPin, LOW); delayMicroseconds(1); //clock out zeros to read in the data from address data=SPI.transfer16(addr); digitalWrite(chipSelectPin, HIGH); SPI.endTransaction(); first=false; return data>>1; } SPI.beginTransaction(settingsA); digitalWrite(chipSelectPin, LOW); delayMicroseconds(1); //clock out zeros to read in the data from address data=SPI.transfer16(addr); digitalWrite(chipSelectPin, HIGH); SPI.endTransaction(); return data>>1; } ================================================ FILE: firmware/stepper_nano_zero/A1333.h ================================================ /********************************************************************** Copyright (C) 2019 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef A1333_H_ #define A1333_H_ #include #define A1333_DEGREES_PER_BIT (360.0/(float)(0x7FFF)) class A1333 { private: int chipSelectPin; public: boolean begin(int csPin); int16_t readEncoderAngle(void); int16_t readAddress(uint16_t addr); int16_t readEncoderAnglePipeLineRead(void); void diagnostics(char *ptrStr) {return;}; bool getError(void) {return false;}; }; #endif /* A1333_H_ */ ================================================ FILE: firmware/stepper_nano_zero/A4954.cpp ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "A4954.h" #include "wiring_private.h" #include "syslog.h" #include "angle.h" #include "Arduino.h" #include "sine.h" static uint8_t pinState=0; #pragma GCC push_options #pragma GCC optimize ("-Ofast") #define DAC_MAX (0x01FFL) // Wait for synchronization of registers between the clock domains static __inline__ void syncTCC(Tcc* TCCx) __attribute__((always_inline, unused)); static void syncTCC(Tcc* TCCx) { //int32_t t0=1000; while (TCCx->SYNCBUSY.reg & TCC_SYNCBUSY_MASK) { // t0--; // if (t0==0) // { // break; // } // delay(1); } } static inline void bridge1(int state) { if (state==0) { PORT->Group[g_APinDescription[PIN_A4954_IN1].ulPort].PINCFG[g_APinDescription[PIN_A4954_IN1].ulPin].bit.PMUXEN = 0; GPIO_OUTPUT(PIN_A4954_IN1);//pinMode(PIN_A4954_IN1,OUTPUT); GPIO_OUTPUT(PIN_A4954_IN2);//pinMode(PIN_A4954_IN2,OUTPUT); GPIO_HIGH(PIN_A4954_IN1);// digitalWrite(PIN_A4954_IN1, HIGH); GPIO_LOW(PIN_A4954_IN2);//digitalWrite(PIN_A4954_IN2, LOW); //pinPeripheral(PIN_A4954_IN2, PIO_TIMER_ALT); pinState=(pinState & 0x0C) | 0x1; } if (state==1) { PORT->Group[g_APinDescription[PIN_A4954_IN2].ulPort].PINCFG[g_APinDescription[PIN_A4954_IN2].ulPin].bit.PMUXEN = 0; GPIO_OUTPUT(PIN_A4954_IN2);//pinMode(PIN_A4954_IN2,OUTPUT); GPIO_OUTPUT(PIN_A4954_IN1);pinMode(PIN_A4954_IN1,OUTPUT); GPIO_LOW(PIN_A4954_IN1);//digitalWrite(PIN_A4954_IN1, LOW); GPIO_HIGH(PIN_A4954_IN2);//digitalWrite(PIN_A4954_IN2, HIGH); //pinPeripheral(PIN_A4954_IN1, PIO_TIMER); pinState=(pinState & 0x0C) | 0x2; } if (state==3) { GPIO_LOW(PIN_A4954_IN1); GPIO_LOW(PIN_A4954_IN2); //digitalWrite(PIN_A4954_IN1, LOW); //digitalWrite(PIN_A4954_IN2, LOW); } } static inline void bridge2(int state) { if (state==0) { PORT->Group[g_APinDescription[PIN_A4954_IN3].ulPort].PINCFG[g_APinDescription[PIN_A4954_IN3].ulPin].bit.PMUXEN = 0; GPIO_OUTPUT(PIN_A4954_IN3); //pinMode(PIN_A4954_IN3,OUTPUT); GPIO_OUTPUT(PIN_A4954_IN4);//pinMode(PIN_A4954_IN4,OUTPUT); GPIO_HIGH(PIN_A4954_IN3);//digitalWrite(PIN_A4954_IN3, HIGH); GPIO_LOW(PIN_A4954_IN4);//digitalWrite(PIN_A4954_IN4, LOW); //pinPeripheral(PIN_A4954_IN4, PIO_TIMER_ALT); pinState=(pinState & 0x03) | 0x4; } if (state==1) { PORT->Group[g_APinDescription[PIN_A4954_IN4].ulPort].PINCFG[g_APinDescription[PIN_A4954_IN4].ulPin].bit.PMUXEN = 0; GPIO_OUTPUT(PIN_A4954_IN4);//pinMode(PIN_A4954_IN4,OUTPUT); GPIO_OUTPUT(PIN_A4954_IN3);//pinMode(PIN_A4954_IN3,OUTPUT); GPIO_LOW(PIN_A4954_IN3);//digitalWrite(PIN_A4954_IN3, LOW); GPIO_HIGH(PIN_A4954_IN4);//digitalWrite(PIN_A4954_IN4, HIGH); //pinPeripheral(PIN_A4954_IN3, PIO_TIMER_ALT); pinState=(pinState & 0x03) | 0x8; } if (state==3) { GPIO_LOW(PIN_A4954_IN3); GPIO_LOW(PIN_A4954_IN4); //digitalWrite(PIN_A4954_IN3, LOW); //digitalWrite(PIN_A4954_IN4, LOW); } } static void enableTCC0(uint8_t percent) { #ifdef MECHADUINO_HARDWARE return; #else Tcc* TCCx = TCC0 ; uint32_t ulValue=((uint32_t)(100-percent)*480)/100; //ERROR("Enable TCC0"); GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TCC0_TCC1 )) ; while ( GCLK->STATUS.bit.SYNCBUSY == 1 ) ; //ERROR("Setting TCC %d %d",ulValue,ulPin); TCCx->CTRLA.reg &= ~TCC_CTRLA_ENABLE; syncTCC(TCCx); // Set TCx as normal PWM TCCx->WAVE.reg |= TCC_WAVE_WAVEGEN_NPWM; syncTCC(TCCx); // Set TCx in waveform mode Normal PWM TCCx->CC[1].reg = (uint32_t)ulValue; //ch5 //IN3 syncTCC(TCCx); TCCx->CC[2].reg = (uint32_t)ulValue; //ch6 //IN4 syncTCC(TCCx); TCCx->CC[3].reg = (uint32_t)ulValue; //ch7 //IN2 syncTCC(TCCx); TCCx->CC[1].reg = (uint32_t)ulValue; //ch1 == ch5 //IN1 syncTCC(TCCx); // Set PER to maximum counter value (resolution : 0xFF) TCCx->PER.reg = DAC_MAX; syncTCC(TCCx); // Enable TCCx TCCx->CTRLA.reg |= TCC_CTRLA_ENABLE ; syncTCC(TCCx); //ERROR("Enable TCC0 DONE"); #endif } static void setDAC(uint32_t DAC1, uint32_t DAC2) { TCC1->CC[1].reg = (uint32_t)DAC1; //D9 PA07 - VREF12 syncTCC(TCC1); TCC1->CC[0].reg = (uint32_t)DAC2; //D4 - VREF34 syncTCC(TCC1); } static void setupDAC(void) { Tcc* TCCx = TCC1 ; pinPeripheral(PIN_A4954_VREF34, PIO_TIMER_ALT); pinPeripheral(PIN_A4954_VREF12, PIO_TIMER); GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TCC0_TCC1 )) ; while ( GCLK->STATUS.bit.SYNCBUSY == 1 ) ; //ERROR("Setting TCC %d %d",ulValue,ulPin); TCCx->CTRLA.reg &= ~TCC_CTRLA_ENABLE; syncTCC(TCCx); // Set TCx as normal PWM TCCx->WAVE.reg |= TCC_WAVE_WAVEGEN_NPWM; syncTCC(TCCx); // Set TCx in waveform mode Normal PWM TCCx->CC[1].reg = (uint32_t)0; syncTCC(TCCx); TCCx->CC[0].reg = (uint32_t)0; syncTCC(TCCx); // Set PER to maximum counter value (resolution : 0xFFF = 12 bits) // =48e6/2^12=11kHz frequency TCCx->PER.reg = DAC_MAX; syncTCC(TCCx); // Enable TCCx TCCx->CTRLA.reg |= TCC_CTRLA_ENABLE ; syncTCC(TCCx); } void A4954::begin() { //setup the A4954 pins digitalWrite(PIN_A4954_IN3,LOW); pinMode(PIN_A4954_IN3,OUTPUT); digitalWrite(PIN_A4954_IN4,LOW); pinMode(PIN_A4954_IN4,OUTPUT); digitalWrite(PIN_A4954_IN2,LOW); pinMode(PIN_A4954_IN2,OUTPUT); digitalWrite(PIN_A4954_IN1,LOW); pinMode(PIN_A4954_IN1,OUTPUT); //setup the PWM for current on the A4954, set for low current digitalWrite(PIN_A4954_VREF12,LOW); digitalWrite(PIN_A4954_VREF34,LOW); pinMode(PIN_A4954_VREF34, OUTPUT); pinMode(PIN_A4954_VREF12, OUTPUT); enabled=true; lastStepMicros=0; forwardRotation=true; enableTCC0(90); setupDAC(); // // int i=0; // bridge1(0); // bridge2(0); //while (1) // { // int32_t x; // WARNING("MA %d",i); // x=(int32_t)((int64_t)i*(DAC_MAX))/3300; // setDAC(x,x); // delay(1000); // i=i+10; // if (i>1000) // { // i=0; // } // // } // // WARNING("Setting DAC for 500mA output"); // setDAC((int32_t)((int64_t)1000*(DAC_MAX))/3300,(int32_t)((int64_t)1000*(DAC_MAX))/3300); // bridge1(0); // bridge2(0); // while(1) // { // // } return; } void A4954::limitCurrent(uint8_t percent) { #ifdef MECHADUINO_HARDWARE return; #else //WARNING("current limit %d",percent); enableTCC0(percent); if (pinState & 0x01) { pinPeripheral(PIN_A4954_IN2, PIO_TIMER_ALT); //TCC0 WO[7] } if (pinState & 0x02) { pinPeripheral(PIN_A4954_IN1, PIO_TIMER); //TCC0 WO[1] } if (pinState & 0x04) { pinPeripheral(PIN_A4954_IN4, PIO_TIMER_ALT); } if (pinState & 0x08) { pinPeripheral(PIN_A4954_IN3, PIO_TIMER_ALT); } #endif } void A4954::enable(bool enable) { enabled=enable; if (enabled == false) { WARNING("A4954 disabled"); setDAC(0,0); //turn current off bridge1(3); //tri state bridge outputs bridge2(3); //tri state bridge outputs } } //this is precise move and modulo of A4954_NUM_MICROSTEPS is a full step. // stepAngle is in A4954_NUM_MICROSTEPS units.. // The A4954 has no idea where the motor is, so the calling function has to // to tell the A4954 what phase to drive motor coils. // A4954_NUM_MICROSTEPS is 256 by default so stepAngle of 1024 is 360 degrees // Note you can only move up to +/-A4954_NUM_MICROSTEPS from where you // currently are. int32_t A4954::move(int32_t stepAngle, uint32_t mA) { uint16_t angle; int32_t cos,sin; int32_t dacSin,dacCos; //static int i=0; if (enabled == false) { //WARNING("A4954 disabled"); setDAC(0,0); //turn current off bridge1(3); //tri state bridge outputs bridge2(3); //tri state bridge outputs return stepAngle; } //WARNING("move %d %d",stepAngle,mA); //handle roll overs, could do with modulo operator stepAngle=stepAngle%SINE_STEPS; //figure out our sine Angle // note our SINE_STEPS is 4x of microsteps for a reason //angle=(stepAngle+(SINE_STEPS/8)) % SINE_STEPS; angle=(stepAngle); //calculate the sine and cosine of our angle sin=sine(angle); cos=cosine(angle); //if we are reverse swap the sign of one of the angels if (false == forwardRotation) { cos=-cos; } //scale sine result by current(mA) dacSin=((int32_t)mA*(int64_t)abs(sin))/SINE_MAX; //scale cosine result by current(mA) dacCos=((int32_t)mA*(int64_t)abs(cos))/SINE_MAX; // if (i==0) // { // WARNING("dacs are %d %d",dacSin,dacCos); // } //convert value into DAC scaled to 3300mA max dacCos=(int32_t)((int64_t)dacCos*(DAC_MAX))/3300; //convert value into DAC scaled to 3300mA max dacSin=(int32_t)((int64_t)dacSin*(DAC_MAX))/3300; //WARNING("dacs are %d %d ",dacSin,dacCos); setDAC(dacSin,dacCos); if (sin>0) { bridge1(1); }else { bridge1(0); } if (cos>0) { bridge2(1); }else { bridge2(0); } // if (i++>3000) // { // i=0; // } // YELLOW_LED(led); // led=(led+1) & 0x01; lastStepMicros=micros(); return stepAngle; } #pragma GCC pop_options ================================================ FILE: firmware/stepper_nano_zero/A4954.h ================================================ /********************************************************************** Copyright (C) 2019 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef __A4954__H__ #define __A4954__H__ #include #include "board.h" #include "angle.h" #include "sine.h" #define A4954_NUM_MICROSTEPS (256) #define A4954_MIN_TIME_BETWEEN_STEPS_MICROS (1000) //prevent someone for making a mistake with the code #if ((A4954_NUM_MICROSTEPS*4) != SINE_STEPS) #error "SINE_STEPS must be 4x of Micro steps for the move function" #endif /* * When it comes to the stepper driver if we use angles * we will always have a rounding error. For example * a 0-65536(360) angle for 1.8 degree step is 327.68 so * if you increment 200 of these as 327 you have a 13.6 error * after one rotation. * If you use floating point the effect is the same but takes longer. * * The only error-less accumulation system is to use native units, ie full * steps and microsteps. * */ class A4954 { private: uint32_t lastStepMicros; // time in microseconds that last step happened bool forwardRotation=true; volatile bool enabled=true; public: void begin(void); //moves motor where the modulo of A4954_NUM_MICROSTEPS is a full step. int32_t move(int32_t stepAngle, uint32_t mA); uint32_t microsSinceStep(void) {return micros()-lastStepMicros;}; void setRotationDirection(bool forward) {forwardRotation=forward;}; void enable(bool enable); void limitCurrent(uint8_t percent); //higher more current }; #endif //__A4954__H__ ================================================ FILE: firmware/stepper_nano_zero/A5995.cpp ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "A5995.h" #include "wiring_private.h" #include "syslog.h" #include "angle.h" #include "Arduino.h" #include "sine.h" static uint8_t pinState=0; #pragma GCC push_options #pragma GCC optimize ("-Ofast") #define DAC_MAX (0x01FFL) // Wait for synchronization of registers between the clock domains static __inline__ void syncTCC(Tcc* TCCx) __attribute__((always_inline, unused)); static void syncTCC(Tcc* TCCx) { //int32_t t0=1000; while (TCCx->SYNCBUSY.reg & TCC_SYNCBUSY_MASK) { // t0--; // if (t0==0) // { // break; // } // delay(1); } } static void setDAC(uint32_t DAC1, uint32_t DAC2) { TCC1->CC[1].reg = (uint32_t)DAC1; //D9 PA07 - VREF2 syncTCC(TCC1); TCC1->CC[0].reg = (uint32_t)DAC2; //D4 - VREF1 syncTCC(TCC1); } static void setupDAC(void) { Tcc* TCCx = TCC1 ; pinPeripheral(PIN_A5995_VREF1, PIO_TIMER_ALT); pinPeripheral(PIN_A5995_VREF2, PIO_TIMER); GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TCC0_TCC1 )) ; while ( GCLK->STATUS.bit.SYNCBUSY == 1 ) ; //ERROR("Setting TCC %d %d",ulValue,ulPin); TCCx->CTRLA.reg &= ~TCC_CTRLA_ENABLE; syncTCC(TCCx); // Set TCx as normal PWM TCCx->WAVE.reg |= TCC_WAVE_WAVEGEN_NPWM; syncTCC(TCCx); // Set TCx in waveform mode Normal PWM TCCx->CC[1].reg = (uint32_t)0; syncTCC(TCCx); TCCx->CC[0].reg = (uint32_t)0; syncTCC(TCCx); // Set PER to maximum counter value (resolution : 0xFFF = 12 bits) // =48e6/2^12=11kHz frequency TCCx->PER.reg = DAC_MAX; syncTCC(TCCx); // Enable TCCx TCCx->CTRLA.reg |= TCC_CTRLA_ENABLE ; syncTCC(TCCx); } void A5995::begin() { //setup the A5995 pins digitalWrite(PIN_A5995_ENABLE1,LOW); pinMode(PIN_A5995_ENABLE1,OUTPUT); digitalWrite(PIN_A5995_ENABLE2,LOW); pinMode(PIN_A5995_ENABLE2,OUTPUT); digitalWrite(PIN_A5995_MODE1,LOW); pinMode(PIN_A5995_MODE1,OUTPUT); digitalWrite(PIN_A5995_MODE2,LOW); pinMode(PIN_A5995_MODE2,OUTPUT); digitalWrite(PIN_A5995_PHASE1,LOW); pinMode(PIN_A5995_PHASE1,OUTPUT); digitalWrite(PIN_A5995_PHASE2,LOW); pinMode(PIN_A5995_PHASE2,OUTPUT); digitalWrite(PIN_A5995_SLEEPn,HIGH); pinMode(PIN_A5995_SLEEPn,OUTPUT); //setup the PWM for current on the A4954, set for low current digitalWrite(PIN_A5995_VREF1,LOW); digitalWrite(PIN_A5995_VREF2,LOW); pinMode(PIN_A5995_VREF1, OUTPUT); pinMode(PIN_A5995_VREF2, OUTPUT); enabled=true; lastStepMicros=0; forwardRotation=true; setupDAC(); // // GPIO_HIGH(PIN_A5995_ENABLE1); // GPIO_HIGH(PIN_A5995_ENABLE2); // GPIO_LOW(PIN_A5995_MODE1); // GPIO_LOW(PIN_A5995_MODE2); // GPIO_HIGH(PIN_A5995_PHASE1); // GPIO_HIGH(PIN_A5995_PHASE2); // int i=0;; // while (1) // { // int32_t x; // WARNING("MA %d",i); // x=(int32_t)((int64_t)i*(DAC_MAX))/3300; // setDAC(x,x); // delay(1000); // i=i+10; // if (i>1000) // { // i=0; // } // // } return; } void A5995::enable(bool enable) { enabled=enable; if (enabled == false) { WARNING("A4954 disabled"); setDAC(0,0); //turn current off GPIO_LOW(PIN_A5995_ENABLE1); GPIO_LOW(PIN_A5995_ENABLE2); GPIO_LOW(PIN_A5995_MODE1); GPIO_LOW(PIN_A5995_MODE2); GPIO_LOW(PIN_A5995_PHASE1); GPIO_LOW(PIN_A5995_PHASE2); } } //this is precise move and modulo of A4954_NUM_MICROSTEPS is a full step. // stepAngle is in A4954_NUM_MICROSTEPS units.. // The A4954 has no idea where the motor is, so the calling function has to // to tell the A4954 what phase to drive motor coils. // A4954_NUM_MICROSTEPS is 256 by default so stepAngle of 1024 is 360 degrees // Note you can only move up to +/-A4954_NUM_MICROSTEPS from where you // currently are. int32_t A5995::move(int32_t stepAngle, uint32_t mA) { uint16_t angle; int32_t cos,sin; int32_t dacSin,dacCos; static int32_t lastSin=0,lastCos=0; static int i=1; if (enabled == false) { WARNING("A4954 disabled"); setDAC(0,0); //turn current off GPIO_LOW(PIN_A5995_ENABLE1); GPIO_LOW(PIN_A5995_ENABLE2); GPIO_LOW(PIN_A5995_MODE1); GPIO_LOW(PIN_A5995_MODE2); GPIO_LOW(PIN_A5995_PHASE1); GPIO_LOW(PIN_A5995_PHASE2); return stepAngle; } //WARNING("move %d %d",stepAngle,mA); stepAngle=(stepAngle) % SINE_STEPS; //figure out our sine Angle // note our SINE_STEPS is 4x of microsteps for a reason //angle=(stepAngle+(SINE_STEPS/8)) % SINE_STEPS; angle=stepAngle; if (i==0) { WARNING("angle %d ",angle); } //calculate the sine and cosine of our angle sin=sine(angle); cos=cosine(angle); //if we are reverse swap the sign of one of the angels if (false == forwardRotation) { cos=-cos; } //scale sine result by current(mA) dacSin=((int32_t)mA*(int64_t)(sin))/SINE_MAX; if (i==0) { WARNING("dacsine %d ",dacSin); } // if ((lastSin-dacSin)>100) //decreasing current // { // GPIO_LOW(PIN_A5995_MODE2); //fast decay // } else // { // GPIO_HIGH(PIN_A5995_MODE2); //slow decay // } lastSin=dacSin; //convert value into DAC scaled to 3300mA max dacSin=(int32_t)((int64_t)abs(dacSin)*(DAC_MAX))/3300; //scale cosine result by current(mA) dacCos=((int32_t)mA*(int64_t)(cos))/SINE_MAX; if (i==0) { WARNING("daccos %d ",dacCos); } // if ((lastCos-dacCos)>100) //decreasing current // { // GPIO_LOW(PIN_A5995_MODE1); //fast decay // } else // { // GPIO_HIGH(PIN_A5995_MODE1); //slow decay // } lastCos=dacCos; //convert value into DAC scaled to 3300mA max dacCos=(int32_t)((int64_t)abs(dacCos)*(DAC_MAX))/3300; if (i==0) { WARNING("dacs are %d %d",dacSin,dacCos); } setDAC(dacSin,dacCos); GPIO_HIGH(PIN_A5995_ENABLE1); GPIO_HIGH(PIN_A5995_ENABLE2); GPIO_LOW(PIN_A5995_MODE1); GPIO_LOW(PIN_A5995_MODE2); if (i==0) { WARNING("sins are %d %d",sin,cos); } if (sin>0) { GPIO_HIGH(PIN_A5995_PHASE2); }else { GPIO_LOW(PIN_A5995_PHASE2); } if (cos>0) { GPIO_HIGH(PIN_A5995_PHASE1); }else { GPIO_LOW(PIN_A5995_PHASE1); } // i++; // if (i>3000) i=0; // YELLOW_LED(led); // led=(led+1) & 0x01; lastStepMicros=micros(); return stepAngle; } #pragma GCC pop_options ================================================ FILE: firmware/stepper_nano_zero/A5995.h ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef A5995_H_ #define A5995_H_ #include #include "board.h" #include "angle.h" #include "sine.h" #define A5995_NUM_MICROSTEPS (256) //prevent someone for making a mistake with the code #if ((A5995_NUM_MICROSTEPS*4) != SINE_STEPS) #error "SINE_STEPS must be 4x of Micro steps for the move function" #endif /* * When it comes to the stepper driver if we use angles * we will always have a rounding error. For example * a 0-65536(360) angle for 1.8 degree step is 327.68 so * if you increment 200 of these as 327 you have a 13.6 error * after one rotation. * If you use floating point the effect is the same but takes longer. * * The only error-less accumulation system is to use native units, ie full * steps and microsteps. * */ class A5995 { private: uint32_t lastStepMicros; // time in microseconds that last step happened bool forwardRotation=true; volatile bool enabled=true; public: void begin(void); //moves motor where the modulo of A4954_NUM_MICROSTEPS is a full step. int32_t move(int32_t stepAngle, uint32_t mA); uint32_t microsSinceStep(void) {return micros()-lastStepMicros;}; void setRotationDirection(bool forward) {forwardRotation=forward;}; void enable(bool enable); void limitCurrent(uint8_t percent) {return;}; //Not used }; #endif /* A5995_H_ */ ================================================ FILE: firmware/stepper_nano_zero/Adafruit_GFX.cpp ================================================ /* This is the core graphics library for all our displays, providing a common set of graphics primitives (points, lines, circles, etc.). It needs to be paired with a hardware-specific library for each display device we carry (to handle the lower-level functions). Adafruit invests time and resources providing this open source code, please support Adafruit & open-source hardware by purchasing products from Adafruit! Copyright (c) 2013 Adafruit Industries. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef __AVR__ #include #elif defined(ESP8266) #include #endif #include "Adafruit_GFX.h" #include "glcdfont.c" // Many (but maybe not all) non-AVR board installs define macros // for compatibility with existing PROGMEM-reading AVR code. // Do our own checks and defines here for good measure... #ifndef pgm_read_byte #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) #endif #ifndef pgm_read_word #define pgm_read_word(addr) (*(const unsigned short *)(addr)) #endif #ifndef pgm_read_dword #define pgm_read_dword(addr) (*(const unsigned long *)(addr)) #endif // Pointers are a peculiar case...typically 16-bit on AVR boards, // 32 bits elsewhere. Try to accommodate both... #if !defined(__INT_MAX__) || (__INT_MAX__ > 0xFFFF) #define pgm_read_pointer(addr) ((void *)pgm_read_dword(addr)) #else #define pgm_read_pointer(addr) ((void *)pgm_read_word(addr)) #endif #ifndef min #define min(a,b) (((a) < (b)) ? (a) : (b)) #endif #ifndef _swap_int16_t #define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; } #endif Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h): WIDTH(w), HEIGHT(h) { _width = WIDTH; _height = HEIGHT; rotation = 0; cursor_y = cursor_x = 0; textsize = 1; textcolor = textbgcolor = 0xFFFF; wrap = true; _cp437 = false; gfxFont = NULL; } // Draw a circle outline void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color) { int16_t f = 1 - r; int16_t ddF_x = 1; int16_t ddF_y = -2 * r; int16_t x = 0; int16_t y = r; drawPixel(x0 , y0+r, color); drawPixel(x0 , y0-r, color); drawPixel(x0+r, y0 , color); drawPixel(x0-r, y0 , color); while (x= 0) { y--; ddF_y += 2; f += ddF_y; } x++; ddF_x += 2; f += ddF_x; drawPixel(x0 + x, y0 + y, color); drawPixel(x0 - x, y0 + y, color); drawPixel(x0 + x, y0 - y, color); drawPixel(x0 - x, y0 - y, color); drawPixel(x0 + y, y0 + x, color); drawPixel(x0 - y, y0 + x, color); drawPixel(x0 + y, y0 - x, color); drawPixel(x0 - y, y0 - x, color); } } void Adafruit_GFX::drawCircleHelper( int16_t x0, int16_t y0, int16_t r, uint8_t cornername, uint16_t color) { int16_t f = 1 - r; int16_t ddF_x = 1; int16_t ddF_y = -2 * r; int16_t x = 0; int16_t y = r; while (x= 0) { y--; ddF_y += 2; f += ddF_y; } x++; ddF_x += 2; f += ddF_x; if (cornername & 0x4) { drawPixel(x0 + x, y0 + y, color); drawPixel(x0 + y, y0 + x, color); } if (cornername & 0x2) { drawPixel(x0 + x, y0 - y, color); drawPixel(x0 + y, y0 - x, color); } if (cornername & 0x8) { drawPixel(x0 - y, y0 + x, color); drawPixel(x0 - x, y0 + y, color); } if (cornername & 0x1) { drawPixel(x0 - y, y0 - x, color); drawPixel(x0 - x, y0 - y, color); } } } void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color) { drawFastVLine(x0, y0-r, 2*r+1, color); fillCircleHelper(x0, y0, r, 3, 0, color); } // Used to do circles and roundrects void Adafruit_GFX::fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, int16_t delta, uint16_t color) { int16_t f = 1 - r; int16_t ddF_x = 1; int16_t ddF_y = -2 * r; int16_t x = 0; int16_t y = r; while (x= 0) { y--; ddF_y += 2; f += ddF_y; } x++; ddF_x += 2; f += ddF_x; if (cornername & 0x1) { drawFastVLine(x0+x, y0-y, 2*y+1+delta, color); drawFastVLine(x0+y, y0-x, 2*x+1+delta, color); } if (cornername & 0x2) { drawFastVLine(x0-x, y0-y, 2*y+1+delta, color); drawFastVLine(x0-y, y0-x, 2*x+1+delta, color); } } } // Bresenham's algorithm - thx wikpedia void Adafruit_GFX::drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color) { int16_t steep = abs(y1 - y0) > abs(x1 - x0); if (steep) { _swap_int16_t(x0, y0); _swap_int16_t(x1, y1); } if (x0 > x1) { _swap_int16_t(x0, x1); _swap_int16_t(y0, y1); } int16_t dx, dy; dx = x1 - x0; dy = abs(y1 - y0); int16_t err = dx / 2; int16_t ystep; if (y0 < y1) { ystep = 1; } else { ystep = -1; } for (; x0<=x1; x0++) { if (steep) { drawPixel(y0, x0, color); } else { drawPixel(x0, y0, color); } err -= dy; if (err < 0) { y0 += ystep; err += dx; } } } // Draw a rectangle void Adafruit_GFX::drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { drawFastHLine(x, y, w, color); drawFastHLine(x, y+h-1, w, color); drawFastVLine(x, y, h, color); drawFastVLine(x+w-1, y, h, color); } void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color) { // Update in subclasses if desired! drawLine(x, y, x, y+h-1, color); } void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) { // Update in subclasses if desired! drawLine(x, y, x+w-1, y, color); } void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { // Update in subclasses if desired! for (int16_t i=x; i= y1 >= y0) if (y0 > y1) { _swap_int16_t(y0, y1); _swap_int16_t(x0, x1); } if (y1 > y2) { _swap_int16_t(y2, y1); _swap_int16_t(x2, x1); } if (y0 > y1) { _swap_int16_t(y0, y1); _swap_int16_t(x0, x1); } if(y0 == y2) { // Handle awkward all-on-same-line case as its own thing a = b = x0; if(x1 < a) a = x1; else if(x1 > b) b = x1; if(x2 < a) a = x2; else if(x2 > b) b = x2; drawFastHLine(a, y0, b-a+1, color); return; } int16_t dx01 = x1 - x0, dy01 = y1 - y0, dx02 = x2 - x0, dy02 = y2 - y0, dx12 = x2 - x1, dy12 = y2 - y1; int32_t sa = 0, sb = 0; // For upper part of triangle, find scanline crossings for segments // 0-1 and 0-2. If y1=y2 (flat-bottomed triangle), the scanline y1 // is included here (and second loop will be skipped, avoiding a /0 // error there), otherwise scanline y1 is skipped here and handled // in the second loop...which also avoids a /0 error here if y0=y1 // (flat-topped triangle). if(y1 == y2) last = y1; // Include y1 scanline else last = y1-1; // Skip it for(y=y0; y<=last; y++) { a = x0 + sa / dy01; b = x0 + sb / dy02; sa += dx01; sb += dx02; /* longhand: a = x0 + (x1 - x0) * (y - y0) / (y1 - y0); b = x0 + (x2 - x0) * (y - y0) / (y2 - y0); */ if(a > b) _swap_int16_t(a,b); drawFastHLine(a, y, b-a+1, color); } // For lower part of triangle, find scanline crossings for segments // 0-2 and 1-2. This loop is skipped if y1=y2. sa = dx12 * (y - y1); sb = dx02 * (y - y0); for(; y<=y2; y++) { a = x1 + sa / dy12; b = x0 + sb / dy02; sa += dx12; sb += dx02; /* longhand: a = x1 + (x2 - x1) * (y - y1) / (y2 - y1); b = x0 + (x2 - x0) * (y - y0) / (y2 - y0); */ if(a > b) _swap_int16_t(a,b); drawFastHLine(a, y, b-a+1, color); } } // Draw a 1-bit image (bitmap) at the specified (x,y) position from the // provided bitmap buffer (must be PROGMEM memory) using the specified // foreground color (unset bits are transparent). void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color) { int16_t i, j, byteWidth = (w + 7) / 8; uint8_t byte; for(j=0; j>= 1; else byte = pgm_read_byte(bitmap + j * byteWidth + i / 8); if(byte & 0x01) drawPixel(x+i, y+j, color); } } } #if ARDUINO >= 100 size_t Adafruit_GFX::write(uint8_t c) { #else void Adafruit_GFX::write(uint8_t c) { #endif if(!gfxFont) { // 'Classic' built-in font if(c == '\n') { cursor_y += textsize*8; cursor_x = 0; } else if(c == '\r') { // skip em } else { if(wrap && ((cursor_x + textsize * 6) >= _width)) { // Heading off edge? cursor_x = 0; // Reset x to zero cursor_y += textsize * 8; // Advance y one line } drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize); cursor_x += textsize * 6; } } else { // Custom font if(c == '\n') { cursor_x = 0; cursor_y += (int16_t)textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); } else if(c != '\r') { uint8_t first = pgm_read_byte(&gfxFont->first); if((c >= first) && (c <= (uint8_t)pgm_read_byte(&gfxFont->last))) { uint8_t c2 = c - pgm_read_byte(&gfxFont->first); GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c2]); uint8_t w = pgm_read_byte(&glyph->width), h = pgm_read_byte(&glyph->height); if((w > 0) && (h > 0)) { // Is there an associated bitmap? int16_t xo = (int8_t)pgm_read_byte(&glyph->xOffset); // sic if(wrap && ((cursor_x + textsize * (xo + w)) >= _width)) { // Drawing character would go off right edge; wrap to new line cursor_x = 0; cursor_y += (int16_t)textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); } drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize); } cursor_x += pgm_read_byte(&glyph->xAdvance) * (int16_t)textsize; } } } #if ARDUINO >= 100 return 1; #endif } // Draw a character void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size) { if(!gfxFont) { // 'Classic' built-in font if((x >= _width) || // Clip right (y >= _height) || // Clip bottom ((x + 6 * size - 1) < 0) || // Clip left ((y + 8 * size - 1) < 0)) // Clip top return; if(!_cp437 && (c >= 176)) c++; // Handle 'classic' charset behavior for(int8_t i=0; i<6; i++ ) { uint8_t line; if(i < 5) line = pgm_read_byte(font+(c*5)+i); else line = 0x0; for(int8_t j=0; j<8; j++, line >>= 1) { if(line & 0x1) { if(size == 1) drawPixel(x+i, y+j, color); else fillRect(x+(i*size), y+(j*size), size, size, color); } else if(bg != color) { if(size == 1) drawPixel(x+i, y+j, bg); else fillRect(x+i*size, y+j*size, size, size, bg); } } } } else { // Custom font // Character is assumed previously filtered by write() to eliminate // newlines, returns, non-printable characters, etc. Calling drawChar() // directly with 'bad' characters of font may cause mayhem! c -= pgm_read_byte(&gfxFont->first); GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]); uint8_t *bitmap = (uint8_t *)pgm_read_pointer(&gfxFont->bitmap); uint16_t bo = pgm_read_word(&glyph->bitmapOffset); uint8_t w = pgm_read_byte(&glyph->width), h = pgm_read_byte(&glyph->height), xa = pgm_read_byte(&glyph->xAdvance); int8_t xo = pgm_read_byte(&glyph->xOffset), yo = pgm_read_byte(&glyph->yOffset); uint8_t xx, yy, bits, bit = 0; int16_t xo16, yo16; if(size > 1) { xo16 = xo; yo16 = yo; } // Todo: Add character clipping here // NOTE: THERE IS NO 'BACKGROUND' COLOR OPTION ON CUSTOM FONTS. // THIS IS ON PURPOSE AND BY DESIGN. The background color feature // has typically been used with the 'classic' font to overwrite old // screen contents with new data. This ONLY works because the // characters are a uniform size; it's not a sensible thing to do with // proportionally-spaced fonts with glyphs of varying sizes (and that // may overlap). To replace previously-drawn text when using a custom // font, use the getTextBounds() function to determine the smallest // rectangle encompassing a string, erase the area with fillRect(), // then draw new text. This WILL infortunately 'blink' the text, but // is unavoidable. Drawing 'background' pixels will NOT fix this, // only creates a new set of problems. Have an idea to work around // this (a canvas object type for MCUs that can afford the RAM and // displays supporting setAddrWindow() and pushColors()), but haven't // implemented this yet. for(yy=0; yy 0) ? s : 1; } void Adafruit_GFX::setTextColor(uint16_t c) { // For 'transparent' background, we'll set the bg // to the same as fg instead of using a flag textcolor = textbgcolor = c; } void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) { textcolor = c; textbgcolor = b; } void Adafruit_GFX::setTextWrap(boolean w) { wrap = w; } uint8_t Adafruit_GFX::getRotation(void) const { return rotation; } void Adafruit_GFX::setRotation(uint8_t x) { rotation = (x & 3); switch(rotation) { case 0: case 2: _width = WIDTH; _height = HEIGHT; break; case 1: case 3: _width = HEIGHT; _height = WIDTH; break; } } // Enable (or disable) Code Page 437-compatible charset. // There was an error in glcdfont.c for the longest time -- one character // (#176, the 'light shade' block) was missing -- this threw off the index // of every character that followed it. But a TON of code has been written // with the erroneous character indices. By default, the library uses the // original 'wrong' behavior and old sketches will still work. Pass 'true' // to this function to use correct CP437 character values in your code. void Adafruit_GFX::cp437(boolean x) { _cp437 = x; } void Adafruit_GFX::setFont(const GFXfont *f) { if(f) { // Font struct pointer passed in? if(!gfxFont) { // And no current font struct? // Switching from classic to new font behavior. // Move cursor pos down 6 pixels so it's on baseline. cursor_y += 6; } } else if(gfxFont) { // NULL passed. Current font struct defined? // Switching from new to classic font behavior. // Move cursor pos up 6 pixels so it's at top-left of char. cursor_y -= 6; } gfxFont = (GFXfont *)f; } // Pass string and a cursor position, returns UL corner and W,H. void Adafruit_GFX::getTextBounds(char *str, int16_t x, int16_t y, int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) { uint8_t c; // Current character *x1 = x; *y1 = y; *w = *h = 0; if(gfxFont) { GFXglyph *glyph; uint8_t first = pgm_read_byte(&gfxFont->first), last = pgm_read_byte(&gfxFont->last), gw, gh, xa; int8_t xo, yo; int16_t minx = _width, miny = _height, maxx = -1, maxy = -1, gx1, gy1, gx2, gy2, ts = (int16_t)textsize, ya = ts * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); while((c = *str++)) { if(c != '\n') { // Not a newline if(c != '\r') { // Not a carriage return, is normal char if((c >= first) && (c <= last)) { // Char present in current font c -= first; glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]); gw = pgm_read_byte(&glyph->width); gh = pgm_read_byte(&glyph->height); xa = pgm_read_byte(&glyph->xAdvance); xo = pgm_read_byte(&glyph->xOffset); yo = pgm_read_byte(&glyph->yOffset); if(wrap && ((x + (((int16_t)xo + gw) * ts)) >= _width)) { // Line wrap x = 0; // Reset x to 0 y += ya; // Advance y by 1 line } gx1 = x + xo * ts; gy1 = y + yo * ts; gx2 = gx1 + gw * ts - 1; gy2 = gy1 + gh * ts - 1; if(gx1 < minx) minx = gx1; if(gy1 < miny) miny = gy1; if(gx2 > maxx) maxx = gx2; if(gy2 > maxy) maxy = gy2; x += xa * ts; } } // Carriage return = do nothing } else { // Newline x = 0; // Reset x y += ya; // Advance y by 1 line } } // End of string *x1 = minx; *y1 = miny; if(maxx >= minx) *w = maxx - minx + 1; if(maxy >= miny) *h = maxy - miny + 1; } else { // Default font uint16_t lineWidth = 0, maxWidth = 0; // Width of current, all lines while((c = *str++)) { if(c != '\n') { // Not a newline if(c != '\r') { // Not a carriage return, is normal char if(wrap && ((x + textsize * 6) >= _width)) { x = 0; // Reset x to 0 y += textsize * 8; // Advance y by 1 line if(lineWidth > maxWidth) maxWidth = lineWidth; // Save widest line lineWidth = textsize * 6; // First char on new line } else { // No line wrap, just keep incrementing X lineWidth += textsize * 6; // Includes interchar x gap } } // Carriage return = do nothing } else { // Newline x = 0; // Reset x to 0 y += textsize * 8; // Advance y by 1 line if(lineWidth > maxWidth) maxWidth = lineWidth; // Save widest line lineWidth = 0; // Reset lineWidth for new line } } // End of string if(lineWidth) y += textsize * 8; // Add height of last (or only) line if(lineWidth > maxWidth) maxWidth = lineWidth; // Is the last or only line the widest? *w = maxWidth - 1; // Don't include last interchar x gap *h = y - *y1; } // End classic vs custom font } // Same as above, but for PROGMEM strings void Adafruit_GFX::getTextBounds(const __FlashStringHelper *str, int16_t x, int16_t y, int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) { uint8_t *s = (uint8_t *)str, c; *x1 = x; *y1 = y; *w = *h = 0; if(gfxFont) { GFXglyph *glyph; uint8_t first = pgm_read_byte(&gfxFont->first), last = pgm_read_byte(&gfxFont->last), gw, gh, xa; int8_t xo, yo; int16_t minx = _width, miny = _height, maxx = -1, maxy = -1, gx1, gy1, gx2, gy2, ts = (int16_t)textsize, ya = ts * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); while((c = pgm_read_byte(s++))) { if(c != '\n') { // Not a newline if(c != '\r') { // Not a carriage return, is normal char if((c >= first) && (c <= last)) { // Char present in current font c -= first; glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]); gw = pgm_read_byte(&glyph->width); gh = pgm_read_byte(&glyph->height); xa = pgm_read_byte(&glyph->xAdvance); xo = pgm_read_byte(&glyph->xOffset); yo = pgm_read_byte(&glyph->yOffset); if(wrap && ((x + (((int16_t)xo + gw) * ts)) >= _width)) { // Line wrap x = 0; // Reset x to 0 y += ya; // Advance y by 1 line } gx1 = x + xo * ts; gy1 = y + yo * ts; gx2 = gx1 + gw * ts - 1; gy2 = gy1 + gh * ts - 1; if(gx1 < minx) minx = gx1; if(gy1 < miny) miny = gy1; if(gx2 > maxx) maxx = gx2; if(gy2 > maxy) maxy = gy2; x += xa * ts; } } // Carriage return = do nothing } else { // Newline x = 0; // Reset x y += ya; // Advance y by 1 line } } // End of string *x1 = minx; *y1 = miny; if(maxx >= minx) *w = maxx - minx + 1; if(maxy >= miny) *h = maxy - miny + 1; } else { // Default font uint16_t lineWidth = 0, maxWidth = 0; // Width of current, all lines while((c = pgm_read_byte(s++))) { if(c != '\n') { // Not a newline if(c != '\r') { // Not a carriage return, is normal char if(wrap && ((x + textsize * 6) >= _width)) { x = 0; // Reset x to 0 y += textsize * 8; // Advance y by 1 line if(lineWidth > maxWidth) maxWidth = lineWidth; // Save widest line lineWidth = textsize * 6; // First char on new line } else { // No line wrap, just keep incrementing X lineWidth += textsize * 6; // Includes interchar x gap } } // Carriage return = do nothing } else { // Newline x = 0; // Reset x to 0 y += textsize * 8; // Advance y by 1 line if(lineWidth > maxWidth) maxWidth = lineWidth; // Save widest line lineWidth = 0; // Reset lineWidth for new line } } // End of string if(lineWidth) y += textsize * 8; // Add height of last (or only) line if(lineWidth > maxWidth) maxWidth = lineWidth; // Is the last or only line the widest? *w = maxWidth - 1; // Don't include last interchar x gap *h = y - *y1; } // End classic vs custom font } // Return the size of the display (per current rotation) int16_t Adafruit_GFX::width(void) const { return _width; } int16_t Adafruit_GFX::height(void) const { return _height; } void Adafruit_GFX::invertDisplay(boolean i) { // Do nothing, must be subclassed if supported by hardware } /***************************************************************************/ // code for the GFX button UI element Adafruit_GFX_Button::Adafruit_GFX_Button(void) { _gfx = 0; } void Adafruit_GFX_Button::initButton( Adafruit_GFX *gfx, int16_t x, int16_t y, uint8_t w, uint8_t h, uint16_t outline, uint16_t fill, uint16_t textcolor, char *label, uint8_t textsize) { _x = x; _y = y; _w = w; _h = h; _outlinecolor = outline; _fillcolor = fill; _textcolor = textcolor; _textsize = textsize; _gfx = gfx; strncpy(_label, label, 9); _label[9] = 0; } void Adafruit_GFX_Button::drawButton(boolean inverted) { uint16_t fill, outline, text; if(!inverted) { fill = _fillcolor; outline = _outlinecolor; text = _textcolor; } else { fill = _textcolor; outline = _outlinecolor; text = _fillcolor; } _gfx->fillRoundRect(_x - (_w/2), _y - (_h/2), _w, _h, min(_w,_h)/4, fill); _gfx->drawRoundRect(_x - (_w/2), _y - (_h/2), _w, _h, min(_w,_h)/4, outline); _gfx->setCursor(_x - strlen(_label)*3*_textsize, _y-4*_textsize); _gfx->setTextColor(text); _gfx->setTextSize(_textsize); _gfx->print(_label); } boolean Adafruit_GFX_Button::contains(int16_t x, int16_t y) { if ((x < (_x - _w/2)) || (x > (_x + _w/2))) return false; if ((y < (_y - _h/2)) || (y > (_y + _h/2))) return false; return true; } void Adafruit_GFX_Button::press(boolean p) { laststate = currstate; currstate = p; } boolean Adafruit_GFX_Button::isPressed() { return currstate; } boolean Adafruit_GFX_Button::justPressed() { return (currstate && !laststate); } boolean Adafruit_GFX_Button::justReleased() { return (!currstate && laststate); } // ------------------------------------------------------------------------- // GFXcanvas1 and GFXcanvas16 (currently a WIP, don't get too comfy with the // implementation) provide 1- and 16-bit offscreen canvases, the address of // which can be passed to drawBitmap() or pushColors() (the latter appears // to only be in Adafruit_TFTLCD at this time). This is here mostly to // help with the recently-added proportionally-spaced fonts; adds a way to // refresh a section of the screen without a massive flickering clear-and- // redraw...but maybe you'll find other uses too. VERY RAM-intensive, since // the buffer is in MCU memory and not the display driver...GXFcanvas1 might // be minimally useful on an Uno-class board, but this and GFXcanvas16 are // much more likely to require at least a Mega or various recent ARM-type // boards (recomment, as the text+bitmap draw can be pokey). GFXcanvas1 // requires 1 bit per pixel (rounded up to nearest byte per scanline), // GFXcanvas16 requires 2 bytes per pixel (no scanline pad). // NOT EXTENSIVELY TESTED YET. MAY CONTAIN WORST BUGS KNOWN TO HUMANKIND. GFXcanvas1::GFXcanvas1(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { uint16_t bytes = ((w + 7) / 8) * h; if((buffer = (uint8_t *)malloc(bytes))) { memset(buffer, 0, bytes); } } GFXcanvas1::~GFXcanvas1(void) { if(buffer) free(buffer); } uint8_t* GFXcanvas1::getBuffer(void) { return buffer; } void GFXcanvas1::drawPixel(int16_t x, int16_t y, uint16_t color) { // Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR static const uint8_t PROGMEM GFXsetBit[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }, GFXclrBit[] = { 0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE }; if(buffer) { if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; int16_t t; switch(rotation) { case 1: t = x; x = WIDTH - 1 - y; y = t; break; case 2: x = WIDTH - 1 - x; y = HEIGHT - 1 - y; break; case 3: t = x; x = y; y = HEIGHT - 1 - t; break; } uint8_t *ptr = &buffer[(x / 8) + y * ((WIDTH + 7) / 8)]; if(color) *ptr |= pgm_read_byte(&GFXsetBit[x & 7]); else *ptr &= pgm_read_byte(&GFXclrBit[x & 7]); } } void GFXcanvas1::fillScreen(uint16_t color) { if(buffer) { uint16_t bytes = ((WIDTH + 7) / 8) * HEIGHT; memset(buffer, color ? 0xFF : 0x00, bytes); } } GFXcanvas16::GFXcanvas16(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { uint16_t bytes = w * h * 2; if((buffer = (uint16_t *)malloc(bytes))) { memset(buffer, 0, bytes); } } GFXcanvas16::~GFXcanvas16(void) { if(buffer) free(buffer); } uint16_t* GFXcanvas16::getBuffer(void) { return buffer; } void GFXcanvas16::drawPixel(int16_t x, int16_t y, uint16_t color) { if(buffer) { if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; int16_t t; switch(rotation) { case 1: t = x; x = WIDTH - 1 - y; y = t; break; case 2: x = WIDTH - 1 - x; y = HEIGHT - 1 - y; break; case 3: t = x; x = y; y = HEIGHT - 1 - t; break; } buffer[x + y * WIDTH] = color; } } void GFXcanvas16::fillScreen(uint16_t color) { if(buffer) { uint8_t hi = color >> 8, lo = color & 0xFF; if(hi == lo) { memset(buffer, lo, WIDTH * HEIGHT * 2); } else { uint16_t i, pixels = WIDTH * HEIGHT; for(i=0; i= 100 #include "Arduino.h" #include "Print.h" #else #include "WProgram.h" #endif #include "gfxfont.h" class Adafruit_GFX : public Print { public: Adafruit_GFX(int16_t w, int16_t h); // Constructor // This MUST be defined by the subclass: virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; // These MAY be overridden by the subclass to provide device-specific // optimized code. Otherwise 'generic' versions are used. virtual void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color), drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color), drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color), drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color), fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color), fillScreen(uint16_t color), invertDisplay(boolean i); // These exist only with Adafruit_GFX (no subclass overrides) void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, uint16_t color), fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, int16_t delta, uint16_t color), drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color), fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color), drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color), fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color), drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color), drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color, uint16_t bg), drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, uint16_t color), drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, uint16_t color, uint16_t bg), drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, uint16_t color), drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size), setCursor(int16_t x, int16_t y), setTextColor(uint16_t c), setTextColor(uint16_t c, uint16_t bg), setTextSize(uint8_t s), setTextWrap(boolean w), setRotation(uint8_t r), cp437(boolean x=true), setFont(const GFXfont *f = NULL), getTextBounds(char *string, int16_t x, int16_t y, int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h), getTextBounds(const __FlashStringHelper *s, int16_t x, int16_t y, int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h); #if ARDUINO >= 100 virtual size_t write(uint8_t); #else virtual void write(uint8_t); #endif int16_t height(void) const; int16_t width(void) const; uint8_t getRotation(void) const; // get current cursor position (get rotation safe maximum values, using: width() for x, height() for y) int16_t getCursorX(void) const; int16_t getCursorY(void) const; protected: const int16_t WIDTH, HEIGHT; // This is the 'raw' display w/h - never changes int16_t _width, _height, // Display w/h as modified by current rotation cursor_x, cursor_y; uint16_t textcolor, textbgcolor; uint8_t textsize, rotation; boolean wrap, // If set, 'wrap' text at right edge of display _cp437; // If set, use correct CP437 charset (default is off) GFXfont *gfxFont; }; class Adafruit_GFX_Button { public: Adafruit_GFX_Button(void); void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, uint8_t w, uint8_t h, uint16_t outline, uint16_t fill, uint16_t textcolor, char *label, uint8_t textsize); void drawButton(boolean inverted = false); boolean contains(int16_t x, int16_t y); void press(boolean p); boolean isPressed(); boolean justPressed(); boolean justReleased(); private: Adafruit_GFX *_gfx; int16_t _x, _y; uint16_t _w, _h; uint8_t _textsize; uint16_t _outlinecolor, _fillcolor, _textcolor; char _label[10]; boolean currstate, laststate; }; class GFXcanvas1 : public Adafruit_GFX { public: GFXcanvas1(uint16_t w, uint16_t h); ~GFXcanvas1(void); void drawPixel(int16_t x, int16_t y, uint16_t color), fillScreen(uint16_t color); uint8_t *getBuffer(void); private: uint8_t *buffer; }; class GFXcanvas16 : public Adafruit_GFX { GFXcanvas16(uint16_t w, uint16_t h); ~GFXcanvas16(void); void drawPixel(int16_t x, int16_t y, uint16_t color), fillScreen(uint16_t color); uint16_t *getBuffer(void); private: uint16_t *buffer; }; #endif // _ADAFRUIT_GFX_H ================================================ FILE: firmware/stepper_nano_zero/Adafruit_SSD1306.cpp ================================================ /********************************************************************* This is a library for our Monochrome OLEDs based on SSD1306 drivers Pick one up today in the adafruit shop! ------> http://www.adafruit.com/category/63_98 These displays use SPI to communicate, 4 or 5 pins are required to interface Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, check license.txt for more information All text above, and the splash screen below must be included in any redistribution *********************************************************************/ #ifdef __AVR__ #include #elif defined(ESP8266) #include #else #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) #endif #if !defined(__ARM_ARCH) && !defined(ENERGIA) && !defined(ESP8266) #include #endif #include #include #include #include "Adafruit_GFX.h" #include "Adafruit_SSD1306.h" #include "syslog.h" // the memory buffer for the LCD static uint8_t buffer[SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH / 8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xFF, #if (SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH > 96*16) 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x8C, 0x8E, 0x84, 0x00, 0x00, 0x80, 0xF8, 0xF8, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0xE0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xC7, 0x01, 0x01, 0x01, 0x01, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0xFE, 0xC7, 0x01, 0x01, 0x01, 0x01, 0x83, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0xFE, 0xC7, 0x83, 0x01, 0x01, 0x01, 0x83, 0xC7, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0xFF, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xC7, 0xC7, 0x8F, 0x8F, 0x9F, 0xBF, 0xFF, 0xFF, 0xC3, 0xC0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, #if (SSD1306_LCDHEIGHT == 64) 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x0F, 0x87, 0xC7, 0xF7, 0xFF, 0xFF, 0x1F, 0x1F, 0x3D, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0x7C, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x0F, 0x07, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0x00, 0x00, 0xF0, 0xF8, 0x1C, 0x0E, 0x06, 0x06, 0x06, 0x0C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFC, 0x00, 0x18, 0x3C, 0x7E, 0x66, 0xE6, 0xCE, 0x84, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0x06, 0x06, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0x4E, 0x46, 0x46, 0x46, 0x4E, 0x7C, 0x78, 0x40, 0x18, 0x3C, 0x76, 0xE6, 0xCE, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x0C, 0x18, 0x18, 0x0C, 0x06, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x01, 0x0F, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, 0x07, 0x01, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x07, 0x07, 0x0C, 0x0C, 0x18, 0x1C, 0x0C, 0x06, 0x06, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 #endif #endif }; #define ssd1306_swap(a, b) { int16_t t = a; a = b; b = t; } // the most basic function, set a single pixel void Adafruit_SSD1306::drawPixel(int16_t x, int16_t y, uint16_t color) { if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) return; // check rotation, move pixel around if necessary switch (getRotation()) { case 1: ssd1306_swap(x, y); x = WIDTH - x - 1; break; case 2: x = WIDTH - x - 1; y = HEIGHT - y - 1; break; case 3: ssd1306_swap(x, y); y = HEIGHT - y - 1; break; } // x is which column switch (color) { case WHITE: buffer[x+ (y/8)*SSD1306_LCDWIDTH] |= (1 << (y&7)); break; case BLACK: buffer[x+ (y/8)*SSD1306_LCDWIDTH] &= ~(1 << (y&7)); break; case INVERSE: buffer[x+ (y/8)*SSD1306_LCDWIDTH] ^= (1 << (y&7)); break; } } Adafruit_SSD1306::Adafruit_SSD1306(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS) : Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { cs = CS; rst = RST; dc = DC; sclk = SCLK; sid = SID; hwSPI = false; } // constructor for hardware SPI - we indicate DataCommand, ChipSelect, Reset Adafruit_SSD1306::Adafruit_SSD1306(int8_t DC, int8_t RST, int8_t CS) : Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { dc = DC; rst = RST; cs = CS; hwSPI = true; } // initializer for I2C - we only indicate the reset pin! Adafruit_SSD1306::Adafruit_SSD1306(int8_t reset) : Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { sclk = dc = cs = sid = -1; rst = reset; } bool Adafruit_SSD1306::begin(uint8_t vccstate, uint8_t i2caddr, bool reset) { _vccstate = vccstate; _i2caddr = i2caddr; // set pin directions if (sid != -1){ pinMode(dc, OUTPUT); pinMode(cs, OUTPUT); #ifdef HAVE_PORTREG csport = portOutputRegister(digitalPinToPort(cs)); cspinmask = digitalPinToBitMask(cs); dcport = portOutputRegister(digitalPinToPort(dc)); dcpinmask = digitalPinToBitMask(dc); #endif if (!hwSPI){ // set pins for software-SPI pinMode(sid, OUTPUT); pinMode(sclk, OUTPUT); #ifdef HAVE_PORTREG clkport = portOutputRegister(digitalPinToPort(sclk)); clkpinmask = digitalPinToBitMask(sclk); mosiport = portOutputRegister(digitalPinToPort(sid)); mosipinmask = digitalPinToBitMask(sid); #endif } if (hwSPI){ SPI.begin(); #ifdef SPI_HAS_TRANSACTION SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0)); #else SPI.setClockDivider (4); #endif } } else { // I2C Init Wire.begin(); #ifdef __SAM3X8E__ // Force 400 KHz I2C, rawr! (Uses pins 20, 21 for SDA, SCL) TWI1->TWI_CWGR = 0; TWI1->TWI_CWGR = ((VARIANT_MCK / (2 * 400000)) - 4) * 0x101; #endif } if ((reset) && (rst >= 0)) { // Setup reset pin direction (used by both SPI and I2C) pinMode(rst, OUTPUT); digitalWrite(rst, HIGH); // VDD (3.3V) goes high at start, lets just chill for a ms delay(1); // bring reset low digitalWrite(rst, LOW); // wait 10ms delay(10); // bring out of reset digitalWrite(rst, HIGH); // turn on VCC (9V?) } uint8_t ret; // Init sequence LOG("Sending LCD display off"); ret=ssd1306_command(SSD1306_DISPLAYOFF); // 0xAE LOG("Display off returned %d",ret); if (ret != 0) { return false; } ssd1306_command(SSD1306_SETDISPLAYCLOCKDIV); // 0xD5 ssd1306_command(0x80); // the suggested ratio 0x80 ssd1306_command(SSD1306_SETMULTIPLEX); // 0xA8 ssd1306_command(SSD1306_LCDHEIGHT - 1); ssd1306_command(SSD1306_SETDISPLAYOFFSET); // 0xD3 ssd1306_command(0x0); // no offset ssd1306_command(SSD1306_SETSTARTLINE | 0x0); // line #0 ssd1306_command(SSD1306_CHARGEPUMP); // 0x8D if (vccstate == SSD1306_EXTERNALVCC) { ssd1306_command(0x10); } else { ssd1306_command(0x14); } ssd1306_command(SSD1306_MEMORYMODE); // 0x20 ssd1306_command(0x00); // 0x0 act like ks0108 ssd1306_command(SSD1306_SEGREMAP | 0x1); ssd1306_command(SSD1306_COMSCANDEC); #if defined SSD1306_128_32 ssd1306_command(SSD1306_SETCOMPINS); // 0xDA ssd1306_command(0x02); ssd1306_command(SSD1306_SETCONTRAST); // 0x81 ssd1306_command(0x8F); #elif defined SSD1306_128_64 ssd1306_command(SSD1306_SETCOMPINS); // 0xDA ssd1306_command(0x12); ssd1306_command(SSD1306_SETCONTRAST); // 0x81 if (vccstate == SSD1306_EXTERNALVCC) { ssd1306_command(0x9F); } else { ssd1306_command(0xCF); } #elif defined SSD1306_96_16 ssd1306_command(SSD1306_SETCOMPINS); // 0xDA ssd1306_command(0x2); //ada x12 ssd1306_command(SSD1306_SETCONTRAST); // 0x81 if (vccstate == SSD1306_EXTERNALVCC) { ssd1306_command(0x10); } else { ssd1306_command(0xAF); } #endif ssd1306_command(SSD1306_SETPRECHARGE); // 0xd9 if (vccstate == SSD1306_EXTERNALVCC) { ssd1306_command(0x22); } else { ssd1306_command(0xF1); } ssd1306_command(SSD1306_SETVCOMDETECT); // 0xDB ssd1306_command(0x40); ssd1306_command(SSD1306_DISPLAYALLON_RESUME); // 0xA4 ssd1306_command(SSD1306_NORMALDISPLAY); // 0xA6 ssd1306_command(SSD1306_DEACTIVATE_SCROLL); ssd1306_command(SSD1306_DISPLAYON);//--turn on oled panel return true; } void Adafruit_SSD1306::invertDisplay(uint8_t i) { if (i) { ssd1306_command(SSD1306_INVERTDISPLAY); } else { ssd1306_command(SSD1306_NORMALDISPLAY); } } // Errors: // 0 : Success // 1 : Data too long // 2 : NACK on transmit of address // 3 : NACK on transmit of data // 4 : Other error uint8_t Adafruit_SSD1306::ssd1306_command(uint8_t c) { if (sid != -1) { // SPI #ifdef HAVE_PORTREG *csport |= cspinmask; *dcport &= ~dcpinmask; *csport &= ~cspinmask; #else digitalWrite(cs, HIGH); digitalWrite(dc, LOW); digitalWrite(cs, LOW); #endif fastSPIwrite(c); #ifdef HAVE_PORTREG *csport |= cspinmask; #else digitalWrite(cs, HIGH); #endif } else { // I2C uint8_t control = 0x00; // Co = 0, D/C = 0 //LOG("wire begin"); Wire.beginTransmission(_i2caddr); //LOG("wire write"); Wire.write(control); //LOG("wire write c"); Wire.write(c); //LOG("wire end"); Wire.endTransmission(); //LOG("wire done"); } } // startscrollright // Activate a right handed scroll for rows start through stop // Hint, the display is 16 rows tall. To scroll the whole display, run: // display.scrollright(0x00, 0x0F) void Adafruit_SSD1306::startscrollright(uint8_t start, uint8_t stop){ ssd1306_command(SSD1306_RIGHT_HORIZONTAL_SCROLL); ssd1306_command(0X00); ssd1306_command(start); ssd1306_command(0X00); ssd1306_command(stop); ssd1306_command(0X00); ssd1306_command(0XFF); ssd1306_command(SSD1306_ACTIVATE_SCROLL); } // startscrollleft // Activate a right handed scroll for rows start through stop // Hint, the display is 16 rows tall. To scroll the whole display, run: // display.scrollright(0x00, 0x0F) void Adafruit_SSD1306::startscrollleft(uint8_t start, uint8_t stop){ ssd1306_command(SSD1306_LEFT_HORIZONTAL_SCROLL); ssd1306_command(0X00); ssd1306_command(start); ssd1306_command(0X00); ssd1306_command(stop); ssd1306_command(0X00); ssd1306_command(0XFF); ssd1306_command(SSD1306_ACTIVATE_SCROLL); } // startscrolldiagright // Activate a diagonal scroll for rows start through stop // Hint, the display is 16 rows tall. To scroll the whole display, run: // display.scrollright(0x00, 0x0F) void Adafruit_SSD1306::startscrolldiagright(uint8_t start, uint8_t stop){ ssd1306_command(SSD1306_SET_VERTICAL_SCROLL_AREA); ssd1306_command(0X00); ssd1306_command(SSD1306_LCDHEIGHT); ssd1306_command(SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL); ssd1306_command(0X00); ssd1306_command(start); ssd1306_command(0X00); ssd1306_command(stop); ssd1306_command(0X01); ssd1306_command(SSD1306_ACTIVATE_SCROLL); } // startscrolldiagleft // Activate a diagonal scroll for rows start through stop // Hint, the display is 16 rows tall. To scroll the whole display, run: // display.scrollright(0x00, 0x0F) void Adafruit_SSD1306::startscrolldiagleft(uint8_t start, uint8_t stop){ ssd1306_command(SSD1306_SET_VERTICAL_SCROLL_AREA); ssd1306_command(0X00); ssd1306_command(SSD1306_LCDHEIGHT); ssd1306_command(SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL); ssd1306_command(0X00); ssd1306_command(start); ssd1306_command(0X00); ssd1306_command(stop); ssd1306_command(0X01); ssd1306_command(SSD1306_ACTIVATE_SCROLL); } void Adafruit_SSD1306::stopscroll(void){ ssd1306_command(SSD1306_DEACTIVATE_SCROLL); } // Dim the display // dim = true: display is dimmed // dim = false: display is normal void Adafruit_SSD1306::dim(boolean dim) { uint8_t contrast; if (dim) { contrast = 0; // Dimmed display } else { if (_vccstate == SSD1306_EXTERNALVCC) { contrast = 0x9F; } else { contrast = 0xCF; } } // the range of contrast to too small to be really useful // it is useful to dim the display ssd1306_command(SSD1306_SETCONTRAST); ssd1306_command(contrast); } void Adafruit_SSD1306::display(void) { ssd1306_command(SSD1306_COLUMNADDR); ssd1306_command(0); // Column start address (0 = reset) ssd1306_command(SSD1306_LCDWIDTH-1); // Column end address (127 = reset) ssd1306_command(SSD1306_PAGEADDR); ssd1306_command(0); // Page start address (0 = reset) #if SSD1306_LCDHEIGHT == 64 ssd1306_command(7); // Page end address #endif #if SSD1306_LCDHEIGHT == 32 ssd1306_command(3); // Page end address #endif #if SSD1306_LCDHEIGHT == 16 ssd1306_command(1); // Page end address #endif if (sid != -1) { // SPI #ifdef HAVE_PORTREG *csport |= cspinmask; *dcport |= dcpinmask; *csport &= ~cspinmask; #else digitalWrite(cs, HIGH); digitalWrite(dc, HIGH); digitalWrite(cs, LOW); #endif for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { fastSPIwrite(buffer[i]); } #ifdef HAVE_PORTREG *csport |= cspinmask; #else digitalWrite(cs, HIGH); #endif } else { // save I2C bitrate #ifdef TWBR uint8_t twbrbackup = TWBR; TWBR = 12; // upgrade to 400KHz! #endif //Serial.println(TWBR, DEC); //Serial.println(TWSR & 0x3, DEC); // I2C for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { // send a bunch of data in one xmission Wire.beginTransmission(_i2caddr); WIRE_WRITE(0x40); for (uint8_t x=0; x<16; x++) { WIRE_WRITE(buffer[i]); i++; } i--; Wire.endTransmission(); } #ifdef TWBR TWBR = twbrbackup; #endif } } // clear everything void Adafruit_SSD1306::clearDisplay(void) { memset(buffer, 0, (SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8)); } inline void Adafruit_SSD1306::fastSPIwrite(uint8_t d) { if(hwSPI) { (void)SPI.transfer(d); } else { for(uint8_t bit = 0x80; bit; bit >>= 1) { #ifdef HAVE_PORTREG *clkport &= ~clkpinmask; if(d & bit) *mosiport |= mosipinmask; else *mosiport &= ~mosipinmask; *clkport |= clkpinmask; #else digitalWrite(sclk, LOW); if(d & bit) digitalWrite(sid, HIGH); else digitalWrite(sid, LOW); digitalWrite(sclk, HIGH); #endif } } } void Adafruit_SSD1306::drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) { boolean bSwap = false; switch(rotation) { case 0: // 0 degree rotation, do nothing break; case 1: // 90 degree rotation, swap x & y for rotation, then invert x bSwap = true; ssd1306_swap(x, y); x = WIDTH - x - 1; break; case 2: // 180 degree rotation, invert x and y - then shift y around for height. x = WIDTH - x - 1; y = HEIGHT - y - 1; x -= (w-1); break; case 3: // 270 degree rotation, swap x & y for rotation, then invert y and adjust y for w (not to become h) bSwap = true; ssd1306_swap(x, y); y = HEIGHT - y - 1; y -= (w-1); break; } if(bSwap) { drawFastVLineInternal(x, y, w, color); } else { drawFastHLineInternal(x, y, w, color); } } void Adafruit_SSD1306::drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color) { // Do bounds/limit checks if(y < 0 || y >= HEIGHT) { return; } // make sure we don't try to draw below 0 if(x < 0) { w += x; x = 0; } // make sure we don't go off the edge of the display if( (x + w) > WIDTH) { w = (WIDTH - x); } // if our width is now negative, punt if(w <= 0) { return; } // set up the pointer for movement through the buffer register uint8_t *pBuf = buffer; // adjust the buffer pointer for the current row pBuf += ((y/8) * SSD1306_LCDWIDTH); // and offset x columns in pBuf += x; register uint8_t mask = 1 << (y&7); switch (color) { case WHITE: while(w--) { *pBuf++ |= mask; }; break; case BLACK: mask = ~mask; while(w--) { *pBuf++ &= mask; }; break; case INVERSE: while(w--) { *pBuf++ ^= mask; }; break; } } void Adafruit_SSD1306::drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color) { bool bSwap = false; switch(rotation) { case 0: break; case 1: // 90 degree rotation, swap x & y for rotation, then invert x and adjust x for h (now to become w) bSwap = true; ssd1306_swap(x, y); x = WIDTH - x - 1; x -= (h-1); break; case 2: // 180 degree rotation, invert x and y - then shift y around for height. x = WIDTH - x - 1; y = HEIGHT - y - 1; y -= (h-1); break; case 3: // 270 degree rotation, swap x & y for rotation, then invert y bSwap = true; ssd1306_swap(x, y); y = HEIGHT - y - 1; break; } if(bSwap) { drawFastHLineInternal(x, y, h, color); } else { drawFastVLineInternal(x, y, h, color); } } void Adafruit_SSD1306::drawFastVLineInternal(int16_t x, int16_t __y, int16_t __h, uint16_t color) { // do nothing if we're off the left or right side of the screen if(x < 0 || x >= WIDTH) { return; } // make sure we don't try to draw below 0 if(__y < 0) { // __y is negative, this will subtract enough from __h to account for __y being 0 __h += __y; __y = 0; } // make sure we don't go past the height of the display if( (__y + __h) > HEIGHT) { __h = (HEIGHT - __y); } // if our height is now negative, punt if(__h <= 0) { return; } // this display doesn't need ints for coordinates, use local byte registers for faster juggling register uint8_t y = __y; register uint8_t h = __h; // set up the pointer for fast movement through the buffer register uint8_t *pBuf = buffer; // adjust the buffer pointer for the current row pBuf += ((y/8) * SSD1306_LCDWIDTH); // and offset x columns in pBuf += x; // do the first partial byte, if necessary - this requires some masking register uint8_t mod = (y&7); if(mod) { // mask off the high n bits we want to set mod = 8-mod; // note - lookup table results in a nearly 10% performance improvement in fill* functions // register uint8_t mask = ~(0xFF >> (mod)); static uint8_t premask[8] = {0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE }; register uint8_t mask = premask[mod]; // adjust the mask if we're not going to reach the end of this byte if( h < mod) { mask &= (0XFF >> (mod-h)); } switch (color) { case WHITE: *pBuf |= mask; break; case BLACK: *pBuf &= ~mask; break; case INVERSE: *pBuf ^= mask; break; } // fast exit if we're done here! if(h= 8) { if (color == INVERSE) { // separate copy of the code so we don't impact performance of the black/white write version with an extra comparison per loop do { *pBuf=~(*pBuf); // adjust the buffer forward 8 rows worth of data pBuf += SSD1306_LCDWIDTH; // adjust h & y (there's got to be a faster way for me to do this, but this should still help a fair bit for now) h -= 8; } while(h >= 8); } else { // store a local value to work with register uint8_t val = (color == WHITE) ? 255 : 0; do { // write our value in *pBuf = val; // adjust the buffer forward 8 rows worth of data pBuf += SSD1306_LCDWIDTH; // adjust h & y (there's got to be a faster way for me to do this, but this should still help a fair bit for now) h -= 8; } while(h >= 8); } } // now do the final partial byte, if necessary if(h) { mod = h & 7; // this time we want to mask the low bits of the byte, vs the high bits we did above // register uint8_t mask = (1 << mod) - 1; // note - lookup table results in a nearly 10% performance improvement in fill* functions static uint8_t postmask[8] = {0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F }; register uint8_t mask = postmask[mod]; switch (color) { case WHITE: *pBuf |= mask; break; case BLACK: *pBuf &= ~mask; break; case INVERSE: *pBuf ^= mask; break; } } } ================================================ FILE: firmware/stepper_nano_zero/Adafruit_SSD1306.h ================================================ /********************************************************************* This is a library for our Monochrome OLEDs based on SSD1306 drivers Pick one up today in the adafruit shop! ------> http://www.adafruit.com/category/63_98 These displays use SPI to communicate, 4 or 5 pins are required to interface Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, check license.txt for more information All text above, and the splash screen must be included in any redistribution *********************************************************************/ #ifndef _Adafruit_SSD1306_H_ #define _Adafruit_SSD1306_H_ #if ARDUINO >= 100 #include "Arduino.h" #define WIRE_WRITE Wire.write #else #include "WProgram.h" #define WIRE_WRITE Wire.send #endif #if defined(__SAM3X8E__) typedef volatile RwReg PortReg; typedef uint32_t PortMask; #define HAVE_PORTREG #elif defined(ARDUINO_ARCH_SAMD) // not supported #elif defined(ESP8266) || defined(ARDUINO_STM32_FEATHER) typedef volatile uint32_t PortReg; typedef uint32_t PortMask; #else typedef volatile uint8_t PortReg; typedef uint8_t PortMask; #define HAVE_PORTREG #endif #include #include "Adafruit_GFX.h" #define BLACK 0 #define WHITE 1 #define INVERSE 2 #define SSD1306_I2C_ADDRESS 0x3C // 011110+SA0+RW - 0x3C or 0x3D // Address for 128x32 is 0x3C // Address for 128x64 is 0x3D (default) or 0x3C (if SA0 is grounded) /*========================================================================= SSD1306 Displays ----------------------------------------------------------------------- The driver is used in multiple displays (128x64, 128x32, etc.). Select the appropriate display below to create an appropriately sized framebuffer, etc. SSD1306_128_64 128x64 pixel display SSD1306_128_32 128x32 pixel display SSD1306_96_16 -----------------------------------------------------------------------*/ #define SSD1306_128_64 // #define SSD1306_128_32 // #define SSD1306_96_16 /*=========================================================================*/ #if defined SSD1306_128_64 && defined SSD1306_128_32 #error "Only one SSD1306 display can be specified at once in SSD1306.h" #endif #if !defined SSD1306_128_64 && !defined SSD1306_128_32 && !defined SSD1306_96_16 #error "At least one SSD1306 display must be specified in SSD1306.h" #endif #if defined SSD1306_128_64 #define SSD1306_LCDWIDTH 128 #define SSD1306_LCDHEIGHT 64 #endif #if defined SSD1306_128_32 #define SSD1306_LCDWIDTH 128 #define SSD1306_LCDHEIGHT 32 #endif #if defined SSD1306_96_16 #define SSD1306_LCDWIDTH 96 #define SSD1306_LCDHEIGHT 16 #endif #define SSD1306_SETCONTRAST 0x81 #define SSD1306_DISPLAYALLON_RESUME 0xA4 #define SSD1306_DISPLAYALLON 0xA5 #define SSD1306_NORMALDISPLAY 0xA6 #define SSD1306_INVERTDISPLAY 0xA7 #define SSD1306_DISPLAYOFF 0xAE #define SSD1306_DISPLAYON 0xAF #define SSD1306_SETDISPLAYOFFSET 0xD3 #define SSD1306_SETCOMPINS 0xDA #define SSD1306_SETVCOMDETECT 0xDB #define SSD1306_SETDISPLAYCLOCKDIV 0xD5 #define SSD1306_SETPRECHARGE 0xD9 #define SSD1306_SETMULTIPLEX 0xA8 #define SSD1306_SETLOWCOLUMN 0x00 #define SSD1306_SETHIGHCOLUMN 0x10 #define SSD1306_SETSTARTLINE 0x40 #define SSD1306_MEMORYMODE 0x20 #define SSD1306_COLUMNADDR 0x21 #define SSD1306_PAGEADDR 0x22 #define SSD1306_COMSCANINC 0xC0 #define SSD1306_COMSCANDEC 0xC8 #define SSD1306_SEGREMAP 0xA0 #define SSD1306_CHARGEPUMP 0x8D #define SSD1306_EXTERNALVCC 0x1 #define SSD1306_SWITCHCAPVCC 0x2 // Scrolling #defines #define SSD1306_ACTIVATE_SCROLL 0x2F #define SSD1306_DEACTIVATE_SCROLL 0x2E #define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3 #define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26 #define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27 #define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29 #define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A class Adafruit_SSD1306 : public Adafruit_GFX { public: Adafruit_SSD1306(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS); Adafruit_SSD1306(int8_t DC, int8_t RST, int8_t CS); Adafruit_SSD1306(int8_t RST = -1); bool begin(uint8_t switchvcc = SSD1306_SWITCHCAPVCC, uint8_t i2caddr = SSD1306_I2C_ADDRESS, bool reset=true); uint8_t ssd1306_command(uint8_t c); void clearDisplay(void); void invertDisplay(uint8_t i); void display(); void startscrollright(uint8_t start, uint8_t stop); void startscrollleft(uint8_t start, uint8_t stop); void startscrolldiagright(uint8_t start, uint8_t stop); void startscrolldiagleft(uint8_t start, uint8_t stop); void stopscroll(void); void dim(boolean dim); void drawPixel(int16_t x, int16_t y, uint16_t color); virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); private: int8_t _i2caddr, _vccstate, sid, sclk, dc, rst, cs; void fastSPIwrite(uint8_t c); boolean hwSPI; #ifdef HAVE_PORTREG PortReg *mosiport, *clkport, *csport, *dcport; PortMask mosipinmask, clkpinmask, cspinmask, dcpinmask; #endif inline void drawFastVLineInternal(int16_t x, int16_t y, int16_t h, uint16_t color) __attribute__((always_inline)); inline void drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color) __attribute__((always_inline)); }; #endif /* _Adafruit_SSD1306_H_ */ ================================================ FILE: firmware/stepper_nano_zero/Flash.cpp ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "Flash.h" #include "syslog.h" bool flashInit(void){ if (NVMCTRL->PARAM.bit.PSZ != 3) { ERROR("FLASH PAGE SIZE is not 64 bytes"); return false; } return true; } static void erase(const volatile void *flash_ptr) { NVMCTRL->ADDR.reg = ((uint32_t)flash_ptr) / 2; NVMCTRL->CTRLA.reg = NVMCTRL_CTRLA_CMDEX_KEY | NVMCTRL_CTRLA_CMD_ER; while (!NVMCTRL->INTFLAG.bit.READY) { } } bool flashErase(const volatile void *flash_ptr, uint32_t size) { const uint8_t *ptr = (const uint8_t *)flash_ptr; while (size > FLASH_ROW_SIZE) { erase(ptr); ptr += FLASH_ROW_SIZE; size -= FLASH_ROW_SIZE; } if (size>0) { erase(ptr); } return true; //TODO should verify the erase } static inline uint32_t read_unaligned_uint32(const void *data) { union { uint32_t u32; uint8_t u8[4]; } res; const uint8_t *d = (const uint8_t *)data; res.u8[0] = d[0]; res.u8[1] = d[1]; res.u8[2] = d[2]; res.u8[3] = d[3]; return res.u32; } void flashWrite(const volatile void *flash_ptr,const void *data, uint32_t size) { uint32_t *ptrPage; uint8_t *destPtr; uint8_t *srcPtr; uint32_t bytesInBlock; __attribute__((__aligned__(4))) uint8_t buffer[FLASH_ROW_SIZE]; uint32_t offset; destPtr=(uint8_t *)flash_ptr; srcPtr=(uint8_t *)data; //LOG("flash write called"); while(size>0) { uint32_t i,j; //calculate the maximum number of bytes we can write in page offset=((uint32_t)destPtr)%(FLASH_ROW_SIZE); //offset into page bytesInBlock=FLASH_ROW_SIZE-offset; //this is how many bytes we need to overwrite in this page //LOG("offset %d, bytesInBlock %d size %d", offset, bytesInBlock,size); //get pointer to start of page ptrPage=(uint32_t *) ((((uint32_t)destPtr)/(FLASH_ROW_SIZE)) * FLASH_ROW_SIZE); //LOG("pointer to page %d(0x%08x) %d",(uint32_t)ptrPage,(uint32_t)ptrPage,destPtr); //fill page buffer with data from flash memcpy(buffer,ptrPage,FLASH_ROW_SIZE); //now fill buffer with new data that needs changing i=bytesInBlock; if (sizeCTRLB.bit.MANW = 1; // Do writes in pages while (size) { // Execute "PBC" Page Buffer Clear NVMCTRL->CTRLA.reg = NVMCTRL_CTRLA_CMDEX_KEY | NVMCTRL_CTRLA_CMD_PBC; while (NVMCTRL->INTFLAG.bit.READY == 0) { } // Fill page buffer uint32_t i; for (i=0; i<(FLASH_PAGE_SIZE/4) && size; i++) //we write 4 bytes at a time { *dst_addr = read_unaligned_uint32(src_addr); src_addr += 4; dst_addr++; size--; //size is set to number of 32bit words in first line above } // Execute "WP" Write Page NVMCTRL->CTRLA.reg = NVMCTRL_CTRLA_CMDEX_KEY | NVMCTRL_CTRLA_CMD_WP; while (NVMCTRL->INTFLAG.bit.READY == 0) { } } } ================================================ FILE: firmware/stepper_nano_zero/Flash.h ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef __FLASH__H__ #define __FLASH__H__ #include #include "syslog.h" #define FLASH_PAGE_SIZE_NZS (64) //bytes #define FLASH_ROW_SIZE (FLASH_PAGE_SIZE_NZS*4) //defined in the datasheet as 4x page size #define FLASH_ERASE_VALUE (0xFF) //value of flash after an erase #define FLASH_ALLOCATE(name, size) \ __attribute__((__aligned__(FLASH_ROW_SIZE))) \ const uint8_t name[(size+(FLASH_ROW_SIZE-1))/FLASH_ROW_SIZE*FLASH_ROW_SIZE] = { }; bool flashInit(void); //this checks that our assumptions are true bool flashErase(const volatile void *flash_ptr, uint32_t size); void flashWrite(const volatile void *flash_ptr,const void *data,uint32_t size); void flashWritePage(const volatile void *flash_ptr, const void *data, uint32_t size); //you can read by dereferencing pointer but we will add a read static inline int32_t flashRead(const volatile void *flash_ptr, void *data, uint32_t size) { memcpy(data, (const void *)flash_ptr, size); } #endif //__FLASH__H__ ================================================ FILE: firmware/stepper_nano_zero/angle.h ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef ANGLE_H_ #define ANGLE_H_ #include #include #include #define ANGLE_STEPS (0x010000UL) #define ANGLE_MAX ((uint16_t)0x0FFFF) #define ANGLE_FROM_DEGREES(x) ((int32_t) ( ((float)ANGLE_STEPS*(float)(x)+180.0)/360.0 ) ) #define ANGLE_T0_DEGREES(x) ( (float) ((float(x)*360.0)/((float)ANGLE_STEPS) )) class Angle { private: uint16_t angle; public: Angle(void) {angle=0;} Angle(int32_t x) {angle=(uint16_t)x;} Angle(const Angle &x) {angle=x.angle;} int16_t operator-( const Angle &a2) { int32_t x,y,dx; x=(int32_t)angle; y=(int32_t)a2.angle; dx=x-y; if (abs(x-y)>ANGLE_STEPS/2) { //we have a wrap condition if (x>y) { dx=x-(y+ANGLE_STEPS); }else if (xANGLE_MAX) // { // y=y-ANGLE_STEPS; // } // while(y<-ANGLE_MAX) // { // y=y+ANGLE_STEPS; // } // // dx=x-y; // if (abs(x-y)>ANGLE_STEPS/2) // { // //we have a wrap condition // if (x>y) // { // dx=x-(y+ANGLE_STEPS); // }else if (x=ANGLE_STEPS) { a=a-ANGLE_STEPS; } while (a<0) { a=a+ANGLE_STEPS; } return Angle((uint16_t)a); } Angle operator+(const unsigned long int x) { uint32_t a; a=(uint32_t)angle+ x; while (a>=ANGLE_STEPS) { a=a-ANGLE_STEPS; } return Angle((uint16_t)a); } operator uint16_t() const {return angle;} operator uint32_t() const {return (uint32_t)angle;} operator int32_t() const {return (int32_t)angle;} }; #endif /* ANGLE_H_ */ ================================================ FILE: firmware/stepper_nano_zero/as5047d.cpp ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include #include "syslog.h" #include "as5047d.h" #include "SPI.h" #include #include "board.h" #define AS5047D_CMD_NOP (0x0000) #define AS5047D_CMD_ERRFL (0x0001) #define AS5047D_CMD_PROG (0x0003) #define AS5047D_CMD_DIAAGC (0x3FFC) #define AS5047D_CMD_MAG (0x3FFD) #define AS5047D_CMD_ANGLEUNC (0x3FFE) #define AS5047D_CMD_ANGLECOM (0x3FFF) #define AS5048A_CMD_NOP (0x0000) #define AS5048A_CMD_ERRFL (0x0001) #define AS5048A_CMD_PROG (0x0003) #define AS5048A_CMD_DIAAGC (0x3FFD) #define AS5048A_CMD_MAG (0x3FFE) #define AS5048A_CMD_ANGLE (0x3FFF) #pragma GCC push_options #pragma GCC optimize ("-Ofast") static int getBit(int16_t data, int bit) { return (data>>bit) & 0x01; } static int getParity(uint16_t data) { int i,bits; data=data & 0x7FFF; //mask out upper bit //count number of bits, brute force bits=0; for(i=0; i<16; i++) { if (0 != (data & ((0x0001)<0) { delay(1); t0--; if (t0==0) { ERROR("LF bit not set"); error=true; break; //return false; } LOG("AS5047D diag data is 0x%04X",data); data=readAddress(AS5047D_CMD_DIAAGC); } if (error) { error=false; uint16_t data=0,t0=100; while (getBit(data,8)==0 && t0>0) { delay(1); t0--; if (t0==0) { ERROR("AS5048A OCF bit not set"); error=true; return false; } data=readAddress(AS5048A_CMD_DIAAGC); LOG("AS5048A diag data is 0x%04X",data); } as5047d=false; } #ifdef NZS_AS5047_PIPELINE //read encoder a few times to flush the pipeline readEncoderAnglePipeLineRead(); readEncoderAnglePipeLineRead(); #endif return true; } //read the encoders int16_t AS5047D::readAddress(uint16_t addr) { uint16_t data; error=false; //make sure it is a read by setting bit 14 addr=addr | 0x4000; //add the parity to the command if (1 == getParity(addr)) { addr=(addr & 0x7FFF) | 0x8000; //add parity bit to make command even number of bits } digitalWrite(chipSelectPin, LOW); delayMicroseconds(1); //clock out the address to read SPI.transfer16(addr); digitalWrite(chipSelectPin, HIGH); delayMicroseconds(1); digitalWrite(chipSelectPin, LOW); //clock out zeros to read in the data from address data=SPI.transfer16(0x00); digitalWrite(chipSelectPin, HIGH); if (data & (1<<14)) { //if bit 14 is set then we have an error ERROR("read command 0x%04X failed",addr); error=true; return -1; } if (data>>15 != getParity(data)) { //parity did not match ERROR("read command parity error 0x%04X ",addr); error=true; return -2; } data=data & 0x3FFF; //mask off the error and parity bits return data; } //read the encoders int16_t AS5047D::readEncoderAngle(void) { if (as5047d) { return readAddress(AS5047D_CMD_ANGLECOM); } return readAddress(AS5048A_CMD_ANGLE); } //pipelined read of the encoder angle used for high speed reads, but value is always one read behind int16_t AS5047D::readEncoderAnglePipeLineRead(void) { int16_t data; int error, t0=10; GPIO_LOW(chipSelectPin);//(chipSelectPin, LOW); //delayMicroseconds(1); do { // doing two 8 bit transfers is faster than one 16 bit data =(uint16_t)SPI.transfer(0xFF)<<8 | ((uint16_t)SPI.transfer(0xFF) & 0x0FF); t0--; if (t0<=0) { ERROR("AS5047D problem"); break; } //data=SPI.transfer16(0xFFFF); //to speed things up we know the parity and address for the read }while(data & (1<<14)); //while error bit is set data=data & 0x3FFF; //mask off the error and parity bits GPIO_HIGH(chipSelectPin); //digitalWrite(chipSelectPin, HIGH); //TODO we really should check for errors and return a negative result or something return data; } void AS5047D::diagnostics(char *ptrStr) { int16_t data; int m,d; if (as5047d) { data=readAddress(AS5047D_CMD_DIAAGC); if (NULL == ptrStr) { LOG("DIAAGC: 0x%04X", data); LOG("MAGL: %d", getBit(data,11)); LOG("MAGH: %d", getBit(data,10)); LOG("COF: %d", getBit(data,9)); LOG("LFGL: %d", getBit(data,8)); LOG("AGC: %d", data & 0x0FF); data=readAddress(AS5047D_CMD_MAG); LOG("CMAG: 0x%04X(%d)",data,data); data=readAddress(AS5047D_CMD_ANGLEUNC); m=(int)((float)data*AS5047D_DEGREES_PER_BIT); d=(int)((float)data*AS5047D_DEGREES_PER_BIT*100 -m*100); LOG("CORDICANG: 0x%04X(%d) %d.%02d deg(est)",data,data,m,d); data=readAddress(AS5047D_CMD_ANGLECOM); m=(int)((float)data*AS5047D_DEGREES_PER_BIT); d=(int)((float)data*AS5047D_DEGREES_PER_BIT*100 -m*100); LOG("DAECANG: 0x%04X(%d) %d.%02d deg(est)",data,data,m,d); }else { sprintf(ptrStr,"DIAAGC: 0x%04X\n\r", data); sprintf(ptrStr,"%sMAGL: %d\n\r", ptrStr,getBit(data,11)); sprintf(ptrStr,"%sMAGH: %d\n\r", ptrStr,getBit(data,10)); sprintf(ptrStr,"%sCOF: %d\n\r", ptrStr, getBit(data,9)); sprintf(ptrStr,"%sLFGL: %d\n\r", ptrStr, getBit(data,8)); sprintf(ptrStr,"%sAGC: %d\n\r", ptrStr,data & 0x0FF); data=readAddress(AS5047D_CMD_MAG); sprintf(ptrStr,"%sCMAG: 0x%04X(%d)\n\r", ptrStr,data,data); data=readAddress(AS5047D_CMD_ANGLEUNC); m=(int)((float)data*AS5047D_DEGREES_PER_BIT); d=(int)((float)data*AS5047D_DEGREES_PER_BIT*100 -m*100); sprintf(ptrStr,"%sCORDICANG: 0x%04X(%d) %d.%02d deg(est)\n\r", ptrStr,data,data,m,d); data=readAddress(AS5047D_CMD_ANGLECOM); m=(int)((float)data*AS5047D_DEGREES_PER_BIT); d=(int)((float)data*AS5047D_DEGREES_PER_BIT*100 -m*100); sprintf(ptrStr,"%sDAECANG: 0x%04X(%d) %d.%02d deg(est)\n\r", ptrStr,data,data,m,d); } } else { data=readAddress(AS5048A_CMD_DIAAGC); sprintf(ptrStr,"AS5048A DIAAGC: 0x%04X\n\r", data); data=readAddress(AS5048A_CMD_MAG); sprintf(ptrStr,"%sMagnitude: %d\n\r", ptrStr,data); data=readAddress(AS5048A_CMD_ANGLE); sprintf(ptrStr,"%sAngle: %d\n\r", ptrStr,data); } } #pragma GCC pop_options ================================================ FILE: firmware/stepper_nano_zero/as5047d.h ================================================ /********************************************************************** Copyright (C) 2019 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef __AS5047D_H__ #define __AS5047D_H__ #include #define AS5047D_DEGREES_PER_BIT (360.0/(float)(0x3FFF)) class AS5047D { private: int chipSelectPin; int16_t readAddress(uint16_t addr); bool error=false; bool as5047d=true; public: boolean begin(int csPin); int16_t readEncoderAngle(void); void diagnostics(char *ptrStr); int16_t readEncoderAnglePipeLineRead(void); bool getError(void) {return error;}; }; #endif //__AS5047D_H__ ================================================ FILE: firmware/stepper_nano_zero/board.h ================================================ /********************************************************************** /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef __BOARD_H__ #define __BOARD_H__ #include //uncomment this if you are using the Mechaduino hardware //#define MECHADUINO_HARDWARE //uncomment the follow lines if using the NEMA 23 10A hardware //#define NEMA_23_10A_HW //uncomment the following if the board uses the A5995 driver (NEMA 23 3.2A boards) //#define A5995_DRIVER //The March 21 2017 NEMA 17 Smart Stepper has changed some pin outs // A1 was changed to read motor voltage, hence SW4 is now using D4 // comment out this next line if using the older hardware #define NEMA17_SMART_STEPPER_3_21_2017 #if defined(MECHADUINO_HARDWARE) && defined(NEMA17_SMART_STEPPER_3_21_2017) #error "Cannot have both MECHADUINO_HARDWARE and NEMA17_SMART_STEPPER_3_21_2017 defined in board.h" #endif //The MKS Servo42 uses the A1333_Encoder // Please uncomment this line and make sure the NEMA17_SMART_STEPPER_3_21_2017 is // uncommented for the Servo42 //#define A1333_ENCODER #ifdef A5995_DRIVER #ifdef NEMA17_SMART_STEPPER_3_21_2017 #error "Only NEMA17_SMART_STEPPER_3_21_2017 or A5595_DRIVER may be defined" #endif #endif #define NZS_FAST_CAL // define this to use 32k of flash for fast calibration table #define NZS_FAST_SINE //uses 2048 extra bytes to implement faster sine tables #define NZS_AS5047_PIPELINE //does a pipeline read of encoder, which is slightly faster #define NZS_CONTROL_LOOP_HZ (6000) //update rate of control loop #define NZS_LCD_ABSOULTE_ANGLE //define this to show angle from zero in positive and negative direction // for example 2 rotations from start will be angle of 720 degrees //#define ENABLE_PHASE_PREDICTION //this enables prediction of phase at high velocity to increase motor speed //as of FW0.11 it is considered development only #define VERSION "FW: 0.40" //this is what prints on LCD during splash screen //Define this to allow command out serial port, else hardware serial is debug log //#define CMD_SERIAL_PORT #define SERIAL_BAUD (115200) //baud rate for the serial ports //This section is for using the step and dir pins as serial port // when the enable pin is inactive. #ifndef MECHADUINO_HARDWARE #define USE_STEP_DIR_SERIAL #define STEP_DIR_BAUD (19200) //this is the baud rate we will use #endif // These are used as an attempt to use TC4 to count steps // currently this is not working. //#define USE_NEW_STEP //define this to use new step method #define USE_TC_STEP //use timer counter for step pin #ifndef F_CPU #define F_CPU (48000000UL) #endif /* TODO are flaged with TODO * TODO - add detection of magnet to make sure PCB is on motor */ /* change log * 0.02 added fixes for 0.9 degree motor * 0.03 added code for using error pin as an enable pin, enable feedback by default * 0.04 * 0.05 added different modes added support for mechaduino * 0.06 added time out pipeline read, add some error logging on encoder failure for mechaduino * 0.07 many changes including * - fixed error on display when doing a move 99999 * - added velocity and position PID modes * - fixed LCD menu and put LCD code in own file * - include LCD source files from adafruit as that ssd1306 need lcd resoultion fix * - added motor parameters to NVM such step size and rotation are only check on first boot * - added test on power up to see if motor power is applied. * - added factory reset command * - pPID is not stable in my testing. * 0.08 * - moved enable pin processing out of interrupt context * - added mode for inverted logic on the enable pin * - added pin definitions for NEMA23 10A hardware * - Changed enable such that it does not move motor but just sets current posistion * 0.09 * - enabled auto detection of LCD * - cleaned up the commands, made motorparams and systemparams individual commands * - added the option to the move command to move at a constant RPM * - Added the setzero command to zero the relative location of motor * - Added the stop command to stop the planner based moves. * 0.10 * -Fixed bug in switching control mode to 3 * 0.11 * - Fixed bug where output current was half of what it should have been (sine.h) * - Added #define for phase predictive advancement * - Changed calibration to be done with one coil/phase on * - Added smoothing for calibration * - Continue to work on the Fet Driver code. * 0.12 * - Continue to work on the FET driver code * - fixed a constant issue with the DAC for the A4954 driver * - added command for setting the operational mode of the enable pin * - added the start of the A5995 driver. * 0.13 * - Added delay in for the 0.9 degree motor calibration and testing * - changed calibration to move 1/2 step at time as it was causing problems on A5995 due to current ramp down * 0.14 - Added in data logging * - Averaged the encoder when the motor is stationary to reduce noise/vibrations * 0.15 - Fixed some fet driver code * - Added support for the NEMA17 smart stepper * - Fixed RPM display bug on the LCD * 0.16 - Added support for enable and error pins on the 3-21-2017 hardware * * 0.17 - Added the ability for the command line to go over the hardwired serial port * - Fixed a bug where step and direction pin were setup as pulled down pins * which could cause false stepping in nosiey environments * 0.18 - Added support for EEPROM writting of last location during brown out - currently brown out is too fast to write * - Added commands to support reading and restoring location from eeprom * - Check for pull up on SDA/SCL before doing a I2C read as that SERCOM driver has not time outs and locks. * - Added faster detection of USB not being plugged in, reduces power up time with no USB * 0.19 - removed debug information in the ssd1306 driver which caused LCD not always to be found * 0.20 - Fixed bug in calibration, thanks to Oliver E. * 0.21 - Fixed issues compiling for mechaduino, including disabling LCD for MEchaduino * 0.22 - Added home command; * 0.23 -- added motor voltage sense to remove stepping on power up * 0.24 - Disabled the home command which used the enable pin if you do not have enable pin * 0.25 - Added pin read command * 0.26 - changed the step/dir pins to be input_pullups * 0.27 - added the option to make the step/dir uart when enable is low. * - fixed enable to line to disable the A4954 driver * 0.28 - Enabled some homing options (still under development) * 0.29 - fixed rounding bug in ANGLE_T0_DEGREES * 0.30 - Added support for the AS5048A encoder * 0.31 - Added reading enable pin on during main loop * 0.32 - Fixed issue where steps were not being counted correctly * 0.33 - changed sPID parameters back to 0.9 0.0001 0.01 * 0.34 - Added board type to the splash screen * 0.35 - fixed usign TC4 (USE_TC_STEP) for counting steps. We can measure steps * - at over 125khz, however the dir pin has ~8us setup time due to interrupt latency. * - Added debug command to allow debug messages out the USB serial port * 0.36 - eeprom set location math was wrong. * 0.37 - fixed bug where the motor would pause periodically do the the TC4 counter. * 0.38 - fixed bug in the velocity feedback mode. * 0.39 - changed step count to TCC2, improved the dir pin setup/hold times * - added support for the MKS Servo42 (A1333 encoder) * 0.40 - fixed compiling errors for Mechaduino. Added sanity checks for different hardware boards (AK) */ /* * Typedefs that are used across multiple files/modules */ typedef enum { CW_ROTATION=0, CCW_ROTATION=1, } RotationDir_t; typedef enum { ERROR_PIN_MODE_ENABLE=0, //error pin works like enable on step sticks ERROR_PIN_MODE_ACTIVE_LOW_ENABLE=1, //error pin works like enable on step sticks ERROR_PIN_MODE_ERROR=2, //error pin is low when there is angle error ERROR_PIN_MODE_BIDIR=3, //error pin is bidirection open collector } ErrorPinMode_t; typedef enum { CTRL_OFF =0, //controller is disabled CTRL_OPEN=1, //controller is in open loop mode CTRL_SIMPLE = 2, //simple error controller CTRL_POS_PID =3, //PID Position controller CTRL_POS_VELOCITY_PID =4, //PID Velocity controller } feedbackCtrl_t; // ******** EVENT SYS USAGAE ************ // Channel 0 - Step pin event // ******** TIMER USAGE A4954 versions ************ //TCC1 is used for DAC PWM to the A4954 //TCC0 can be used as PWM for the input pins on the A4954 //TCC2 is used for the step count //D0 step input could use TCC1 or TCC0 if not used //TC3 is used for planner tick //TC5 is use for timing the control loop // ******** TIMER USAGE NEMA23 10A versions ************ //TCC0 PWM for the FET IN pins //D10 step input could use TC3 or TCC0 if not used //TC3 is used for planner tick //TC4 is used for step count //TC5 is use for timing the control loop //mechaduio and Arduino Zero has defined serial ports differently than NZS #ifdef MECHADUINO_HARDWARE #warning "Compiling source for Mechaduino NOT NZS" #define DISABLE_LCD #undef Serial5 #define Serial5 Serial #else #define SerialUSB Serial #endif #define PIN_TXD (30) #define PIN_RXD (31) #define PIN_STEP_INPUT (0) #define PIN_DIR_INPUT (1) #define PIN_MOSI (23) #define PIN_SCK (24) #define PIN_MISO (22) #ifdef MECHADUINO_HARDWARE #ifdef USE_STEP_DIR_SERIAL #error "Step/Dir UART not supported on Mechaduino yet" #endif #define PIN_ERROR (19) //analogInputToDigitalPin(PIN_A5)) #else //not Mechaduino hardware #ifdef NEMA17_SMART_STEPPER_3_21_2017 #define PIN_SW1 (19)//analogInputToDigitalPin(PIN_A5)) #define PIN_SW3 (14)//analogInputToDigitalPin(PIN_A0)) #ifdef A1333_ENCODER //the MKS Servo42 uses A1 for this switch #define PIN_SW4 (15)//analogInputToDigitalPin(PIN_A1)) #else #define PIN_SW4 (2)//D2 #endif #define PIN_ENABLE (10) #define PIN_ERROR (3) #define PIN_VMOTOR (A1) //analog pin for the motor #else #define PIN_SW1 (19)//analogInputToDigitalPin(PIN_A5)) #define PIN_SW3 (14)//analogInputToDigitalPin(PIN_A0)) #define PIN_SW4 (15)//analogInputToDigitalPin(PIN_A1)) #define PIN_ERROR (10) #endif #endif #ifdef A5995_DRIVER #define PIN_ENABLE (3) #endif #define PIN_SCL (21) #define PIN_SDA (20) #define PIN_USB_PWR (38) // this pin is high when usb is connected #define PIN_AS5047D_CS (16)//analogInputToDigitalPin(PIN_A2)) #ifndef MECHADUINO_HARDWARE #define PIN_AS5047D_PWR (11) //pull low to power on AS5047D #endif //these pins use the TIMER in the A4954 driver // changing the pin definitions here may require changes in the A4954.cpp file #define PIN_FET_IN1 (5) //PA15 TC3/WO[1] TCC0/WO[5]1 #define PIN_FET_IN2 (6) //PA20 TC7/W0[0] TCC0/WO[6]2 #define PIN_FET_IN3 (7) //PA21 TC7/WO[1] TCC0/WO[7]3 #define PIN_FET_IN4 (2) //PA14 TC3/W0[0] TCC0/WO[4] 0 #define PIN_FET_VREF1 (4) #define PIN_FET_VREF2 (3) #define PIN_FET_ENABLE (12) //current sense pin from each H-bridge #define ISENSE_FET_A (17) //analogInputToDigitalPin(PIN_A3) #define ISENSE_FET_B (8) //Comparators analog inputs //#define COMP_FET_A (18)//analogInputToDigitalPin(PIN_A4)) //#define COMP_FET_B (9) //these are the pins used on the A5995 driver #define PIN_A5995_ENABLE1 (2) //PA14 #define PIN_A5995_ENABLE2 (18) //PA05 analogInputToDigitalPin(PIN_A4)) #define PIN_A5995_MODE1 (8) //PA06 TCC1 WO[0] #define PIN_A5995_MODE2 (7) //PA21 TCC0 WO[4] //3 #define PIN_A5995_PHASE1 (6) //PA20 TCC0 WO[6] //2 #define PIN_A5995_PHASE2 (5) //PA15 TCC0 W0[5] //1 #define PIN_A5995_VREF1 (4) //PA08 #define PIN_A5995_VREF2 (9) //PA07 #define PIN_A5995_SLEEPn (25) //RXLED #ifndef MECHADUINO_HARDWARE #define PIN_YELLOW_LED (8) #endif #ifdef NEMA_23_10A_HW #undef PIN_YELLOW_LED #define PIN_YELLOW_LED (26) //TXLED (PA27) #endif //NEMA_23_10A_HW #define PIN_RED_LED (13) #define PIN_A4954_IN3 (5) #define PIN_A4954_IN4 (6) #define PIN_A4954_IN2 (7) #ifdef MECHADUINO_HARDWARE #define PIN_A4954_IN1 (8) #else #define PIN_A4954_IN1 (18) //analogInputToDigitalPin(PIN_A4)) #endif #define PIN_A4954_VREF34 (4) #define PIN_A4954_VREF12 (9) //Here are some useful macros #define DIVIDE_WITH_ROUND(x,y) (((x)+(y)/2)/(y)) #define GPIO_LOW(pin) {PORT->Group[g_APinDescription[(pin)].ulPort].OUTCLR.reg = (1ul << g_APinDescription[(pin)].ulPin);} #define GPIO_HIGH(pin) {PORT->Group[g_APinDescription[(pin)].ulPort].OUTSET.reg = (1ul << g_APinDescription[(pin)].ulPin);} #define GPIO_OUTPUT(pin) {PORT->Group[g_APinDescription[(pin)].ulPort].PINCFG[g_APinDescription[(pin)].ulPin].reg &=~(uint8_t)(PORT_PINCFG_INEN) ; PORT->Group[g_APinDescription[(pin)].ulPort].DIRSET.reg = (uint32_t)(1<Group[g_APinDescription[(pin)].ulPort].PINCFG[g_APinDescription[(pin)].ulPin].reg &=~(uint8_t)(PORT_PINCFG_INEN | PORT_PINCFG_PMUXEN) ; PORT->Group[g_APinDescription[(pin)].ulPort].DIRSET.reg = (uint32_t)(1<Group[g_APinDescription[(pin)].ulPort].PINCFG[g_APinDescription[(pin)].ulPin].reg &=~(uint8_t)(PORT_PINCFG_INEN | PORT_PINCFG_PMUXEN);} #define GPIO_READ(ulPin) {(PORT->Group[g_APinDescription[ulPin].ulPort].IN.reg & (1ul << g_APinDescription[ulPin].ulPin)) != 0} #define PIN_PERIPH(pin) {PORT->Group[g_APinDescription[(pin)].ulPort].PINCFG[g_APinDescription[(pin)].ulPin].reg |= PORT_PINCFG_PMUXEN;} //sets up the pins for the board static void boardSetupPins(void) { //setup switch pins #ifdef PIN_SW1 pinMode(PIN_SW1, INPUT_PULLUP); pinMode(PIN_SW3, INPUT_PULLUP); pinMode(PIN_SW4, INPUT_PULLUP); #endif pinMode(PIN_STEP_INPUT, INPUT_PULLUP); pinMode(PIN_DIR_INPUT, INPUT_PULLUP); #ifdef PIN_ENABLE pinMode(PIN_ENABLE, INPUT_PULLUP); //default error pin as enable pin with pull up #endif pinMode(PIN_ERROR, INPUT_PULLUP); //default error pin as enable pin with pull up pinMode(PIN_AS5047D_CS,OUTPUT); digitalWrite(PIN_AS5047D_CS,LOW); //pull CS LOW by default (chip powered off) //turn the AS5047D off by default #ifdef PIN_AS5047D_PWR pinMode(PIN_AS5047D_PWR,OUTPUT); digitalWrite(PIN_AS5047D_PWR,HIGH); #endif pinMode(PIN_MOSI,OUTPUT); digitalWrite(PIN_MOSI,LOW); pinMode(PIN_SCK,OUTPUT); digitalWrite(PIN_SCK,LOW); pinMode(PIN_MISO,INPUT); //setup the A4954 pins digitalWrite(PIN_A4954_IN3,LOW); pinMode(PIN_A4954_IN3,OUTPUT); digitalWrite(PIN_A4954_IN4,LOW); pinMode(PIN_A4954_IN4,OUTPUT); digitalWrite(PIN_A4954_IN2,LOW); pinMode(PIN_A4954_IN2,OUTPUT); digitalWrite(PIN_A4954_IN1,LOW); pinMode(PIN_A4954_IN1,OUTPUT); //setup the PWM for current on the A4954, set for low current digitalWrite(PIN_A4954_VREF12,LOW); digitalWrite(PIN_A4954_VREF34,LOW); pinMode(PIN_A4954_VREF34, OUTPUT); pinMode(PIN_A4954_VREF12, OUTPUT); pinMode(PIN_RED_LED,OUTPUT); #ifdef PIN_YELLOW_LED pinMode(PIN_YELLOW_LED,OUTPUT); digitalWrite(PIN_YELLOW_LED,HIGH); #endif } #ifdef NEMA17_SMART_STEPPER_3_21_2017 static float GetMotorVoltage(void) { uint32_t x; float f; //the motor voltage is 1/101 of the adc x=analogRead(PIN_VMOTOR); //this should be a 10bit value mapped to 3.3V f=(float)x*3.3/1024.0*101.0; return f; } #endif static void inline YELLOW_LED(bool state) { #ifdef PIN_YELLOW_LED digitalWrite(PIN_YELLOW_LED,!state); #endif } static void inline RED_LED(bool state) { digitalWrite(PIN_RED_LED,state); } #define MIN(a,b) (((a)<(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b)) #define ABS(a) (((a)>(0))?(a):(-(a))) #define DIV(x,y) (((y)>(0))?((x)/(y)):(4294967295)) #define SIGN(x) (((x) > 0) - ((x) < 0)) #define NVIC_IS_IRQ_ENABLED(x) (NVIC->ISER[0] & (1 << ((uint32_t)(x) & 0x1F)))!=0 static inline uint8_t getPinMux(uint16_t ulPin) { uint8_t temp; if ((ulPin & 0x01)==0) { temp = (PORT->Group[g_APinDescription[ulPin].ulPort].PMUX[g_APinDescription[ulPin].ulPin >> 1].reg) & PORT_PMUX_PMUXE( 0xF ) ; }else { temp = (PORT->Group[g_APinDescription[ulPin].ulPort].PMUX[g_APinDescription[ulPin].ulPin >> 1].reg)>>4 & 0xF; } return temp; } static inline uint8_t getPinCfg(uint16_t ulPin) { uint8_t temp; temp = PORT->Group[g_APinDescription[ulPin].ulPort].PINCFG[g_APinDescription[ulPin].ulPin].reg; return temp; } static inline void setPinCfg(uint16_t ulPin, uint8_t val) { PORT->Group[g_APinDescription[ulPin].ulPort].PINCFG[g_APinDescription[ulPin].ulPin].reg=val; } static inline void setPinMux(uint16_t ulPin, uint8_t val) { uint8_t temp; temp = (PORT->Group[g_APinDescription[ulPin].ulPort].PMUX[g_APinDescription[ulPin].ulPin >> 1].reg); if ((ulPin & 0x01)==0) { //if an even pin temp = (temp & 0xF0) | (val & 0x0F); }else { temp = (temp & 0x0F) | ((val<<4) & 0x0F); } PORT->Group[g_APinDescription[ulPin].ulPort].PMUX[g_APinDescription[ulPin].ulPin >> 1].reg=temp; PORT->Group[g_APinDescription[ulPin].ulPort].PINCFG[g_APinDescription[ulPin].ulPin].reg |= PORT_PINCFG_PMUXEN ; // Enable port mux } static inline void SET_PIN_PERHERIAL(uint16_t ulPin,EPioType ulPeripheral) { if ( g_APinDescription[ulPin].ulPin & 1 ) // is pin odd? { uint32_t temp ; // Get whole current setup for both odd and even pins and remove odd one temp = (PORT->Group[g_APinDescription[ulPin].ulPort].PMUX[g_APinDescription[ulPin].ulPin >> 1].reg) & PORT_PMUX_PMUXE( 0xF ) ; // Set new muxing PORT->Group[g_APinDescription[ulPin].ulPort].PMUX[g_APinDescription[ulPin].ulPin >> 1].reg = temp|PORT_PMUX_PMUXO( ulPeripheral ) ; // Enable port mux PORT->Group[g_APinDescription[ulPin].ulPort].PINCFG[g_APinDescription[ulPin].ulPin].reg |= PORT_PINCFG_PMUXEN ; } else // even pin { uint32_t temp ; temp = (PORT->Group[g_APinDescription[ulPin].ulPort].PMUX[g_APinDescription[ulPin].ulPin >> 1].reg) & PORT_PMUX_PMUXO( 0xF ) ; PORT->Group[g_APinDescription[ulPin].ulPort].PMUX[g_APinDescription[ulPin].ulPin >> 1].reg = temp|PORT_PMUX_PMUXE( ulPeripheral ) ; PORT->Group[g_APinDescription[ulPin].ulPort].PINCFG[g_APinDescription[ulPin].ulPin].reg |= PORT_PINCFG_PMUXEN ; // Enable port mux } } //the Arduino delay function requires interrupts to work. // if interrupts are disabled use the delayMicroseconds which is a spin loop static inline void DelayMs(uint32_t ms) { uint32_t prim; /* Read PRIMASK register, check interrupt status before you disable them */ /* Returns 0 if they are enabled, or non-zero if disabled */ prim = __get_PRIMASK(); if (prim==0) { delay(ms); }else { while(ms) { delayMicroseconds(1000); ms--; } } } #endif//__BOARD_H__ ================================================ FILE: firmware/stepper_nano_zero/calibration.cpp ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "calibration.h" #include "Flash.h" #include "nonvolatile.h" #include "board.h" //for divide with rounding macro #include "utils.h" static uint16_t getTableIndex(uint16_t value) { int32_t x; x=((int32_t)value*CALIBRATION_TABLE_SIZE)/CALIBRATION_STEPS; //the divide is a floor not a round which is what we want return (uint16_t)x; } static uint16_t interp(Angle x1, Angle y1, Angle x2, Angle y2, Angle x) { int32_t dx,dy,dx2,y; dx=x2-x1; dy=y2-y1; dx2=x-x1; y=(int32_t)y1+DIVIDE_WITH_ROUND((dx2*dy),dx); if (y<0) { y=y+CALIBRATION_STEPS; } return (uint16_t)y; } static void printData(int32_t *data, int32_t n) { int32_t i; Serial.print("\n\r"); for (i=0; iFastCal.angle[x]; }else { return reverseLookup(encoderAngle); } #else return reverseLookup(encoderAngle) #endif } Angle CalibrationTable::reverseLookup(Angle encoderAngle) { int32_t i=0; int32_t a1,a2; int32_t x; int16_t y; int32_t min,max; min=(uint16_t)table[0].value; max=min; for (i=0; imax) { max=x; } } x=(uint16_t)encoderAngle; if (xCALIBRATION_STEPS/2) { if (a1=a1 && x<=a2) || (x>=a2 && x<=a1) ) { //LOG("%d", i); // inerpolate results and return //LOG("%d %d %d",a1,a2,x); //LOG("%d,%d",(i*CALIBRATION_MAX)/CALIBRATION_TABLE_SIZE,((i+2)*CALIBRATION_MAX)/CALIBRATION_TABLE_SIZE); y=interp(a1, DIVIDE_WITH_ROUND((i*CALIBRATION_STEPS),CALIBRATION_TABLE_SIZE), a2, DIVIDE_WITH_ROUND( ((i+1)*CALIBRATION_STEPS),CALIBRATION_TABLE_SIZE), x); return y; } i++; } ERROR("WE did some thing wrong"); } void CalibrationTable::smoothTable(void) { uint16_t b[]={1,2,4,5,4,2,1}; uint16_t sum_b=19; //sum of b filter int32_t data[CALIBRATION_TABLE_SIZE]; int32_t table2[CALIBRATION_TABLE_SIZE]; int32_t i; int32_t offset=0; int32_t startNum; //first lets handle the wrap around in the table for (i=0; i0 && offset==0) { if(((uint16_t)table[i-1].value-(uint16_t)table[i].value) <-32768) { offset=-65536; } if (((uint16_t)table[i-1].value-(uint16_t)table[i].value) > 32768) { offset=65536; } } table2[i]=(int32_t)((uint16_t)table[i].value)+offset; } //Serial.print("after wrap\n\r"); //printData(table2,CALIBRATION_TABLE_SIZE); //remove the starting offset and compensate table for index startNum=table2[0]; for (i=0; i=CALIBRATION_TABLE_SIZE) { ix=ix-CALIBRATION_TABLE_SIZE; } if (i==0) { LOG("index %d",ix); } sum=sum+table2[ix]*b[ib]; ib++; } sum=DIVIDE_WITH_ROUND(sum,sum_b); data[i]=sum; } //Serial.print("after filter\n\r"); //printData(data,CALIBRATION_TABLE_SIZE); //add in offset and the phase compenstation for (i=0; i=65536) { data[i]=data[i]-65536; } } //Serial.print("after wrap added\n\r"); //printData(data,CALIBRATION_TABLE_SIZE); //save new table for (i=0; iCalibrationTable,sizeof(data)); createFastCal(); LOG("after writting status is %d",data.status); loadFromFlash(); } void CalibrationTable::loadFromFlash(void) { FlashCalData_t data; int i; LOG("Reading Calbiration to Flash"); memcpy(&data, &NVM->CalibrationTable,sizeof(data)); for (i=0; iCalibrationTable.status); return NVM->CalibrationTable.status; } void CalibrationTable::createFastCal(void) { #ifdef NZS_FAST_CAL int32_t i; uint16_t cs=0; uint16_t data[256]; int32_t j; j=0; cs=0; LOG("setting fast calibration"); for (i=0; i<16384; i++) { uint16_t x; x=reverseLookup(i*4); data[j]=x; j++; if (j>=256) { flashWrite(&NVM->FastCal.angle[i-255],data,256*sizeof(uint16_t)); //LOG("Wrote fastcal at index %d-%d", i-255, i); j=0; } cs+=x; } //update the checksum flashWrite(&NVM->FastCal.checkSum,&cs,sizeof(uint16_t)); fastCalVaild=true; //this is a quick test /* for (i=0; i<16384; i++) { LOG("fast Cal %d,%d,%d",i,NVM->FastCal.angle[i],(uint32_t)reverseLookup(i*4)); } */ #endif } void CalibrationTable::updateFastCal(void) { #ifdef NZS_FAST_CAL int32_t i; uint16_t cs=0; uint16_t data[256]; int32_t j; bool NonZero=false; for (i=0; i<16384; i++) { cs+=NVM->FastCal.angle[i]; if (cs != 0) { NonZero=true; } } if (cs!=NVM->FastCal.checkSum || NonZero==false) { createFastCal(); } else { LOG("fast cal is valid"); fastCalVaild=true; } #endif } void CalibrationTable::init(void) { int i; if (true == flashGood()) { loadFromFlash(); updateFastCal(); }else { for (i=0; iCALIBRATION_STEPS/2) { dist=dist-CALIBRATION_STEPS; } //if our distance is larger than size between calibration points in table we will ignore this sample if (dist>CALIBRATION_STEPS/CALIBRATION_TABLE_SIZE) { //spans two or more table calibration points for this implementation we will not use lastIndex=(int32_t)index; lastValue=value; return; } //now lets see if the values are above and below a table calibration point dist= abs(getTableIndex(lastAngle)-getTableIndex(actualAngle)); if (dist != 0) //if the two indexs into table are not the same it spans a calibration point in table. { //the two span a set calibation table point. uint16_t newValue; newValue=interp(lastAngle, lastEncoderValue, actualAngle, encoderValue, getTableIndex(actualAngle)*(CALIBRATION_STEPS/CALIBRATION_TABLE_SIZE)) //this new value is our best guess as to the correct calibration value. updateTableValue(getTableIndex(actualAngle),newValue); } else { //we should calibate the table value for the point the closest } } lastAngle=(int32_t)actualAngle; lastEncoderValue=encoderValue; } #endif //when we are microstepping and are in between steps the probability the stepper motor did not move // is high. That is the actualAngle will be correct but the encoderValue will be behind due to not having enough torque to move motor. // Therefore we only want to update the calibration on whole steps where we have highest probability of things being correct. void CalibrationTable::updateTable(Angle actualAngle, Angle encoderValue) { int32_t dist, index; Angle tableAngle; index = getTableIndex((uint32_t)actualAngle+CALIBRATION_STEPS/CALIBRATION_TABLE_SIZE/2); //add half of distance to next entry to round to closest table index tableAngle=(index*CALIBRATION_STEPS)/CALIBRATION_TABLE_SIZE; //calculate the angle for this index dist=tableAngle-actualAngle; //distance to calibration table angle //LOG("Dist is %d",dist); if (abs(dist)=CALIBRATION_TABLE_SIZE) { indexHigh -= CALIBRATION_TABLE_SIZE; } //LOG("AngleLow %d, AngleHigh %d",angleLow,angleHigh); //LOG("TableLow %u, TableHigh %d",(uint16_t)table[indexLow].value,(uint16_t)table[indexHigh].value); y1=table[indexLow].value; y2=table[indexHigh].value; //handle the wrap condition if (abs(y2-y1)>CALIBRATION_STEPS/2) { if (y2=CALIBRATION_STEPS) { value=value-CALIBRATION_STEPS; } err=table[indexLow].error; if (table[indexHigh].error > err) { err=table[indexHigh].error; } if (table[indexLow].error == CALIBRATION_ERROR_NOT_SET || table[indexHigh].error == CALIBRATION_ERROR_NOT_SET) { err=CALIBRATION_ERROR_NOT_SET; } ptrData->value=value; ptrData->error=err; return 0; } Angle CalibrationTable::getCal(Angle actualAngle) { CalData_t data; getValue(actualAngle, &data); return data.value; } ================================================ FILE: firmware/stepper_nano_zero/calibration.h ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef __CALIBRAITON_H__ #define __CALIBRAITON_H__ #include #include "syslog.h" #include "angle.h" //this file implements a table that is linearly interpolated circular calibration table // it is assumed the data wraps around, ie you interpolated 65536==0 //we want this to be "whole" steps, for 1.8 degree motors this should be 200. // 200 will work for 0.9 degree too, but could be 400. However 400 is not good for 1.8 degree motors #define CALIBRATION_TABLE_SIZE (200) #define CALIBRATION_STEPS ((uint32_t)ANGLE_STEPS) // this is one rotation ie 0-65535 aka 65536 steps is 0-360 degrees #define CALIBRATION_ERROR_NOT_SET (-1) //indicated that the calibration value is not set. #define CALIBRATION_UPDATE_RATE (32) //number of samples to keep 1 pole running average #define CALIBRATION_MIN_ERROR (4) //the minimal expected error on our calibration 4 ~=+/0.2 degrees typedef struct { uint16_t table[CALIBRATION_TABLE_SIZE]; bool status; } FlashCalData_t; typedef struct { Angle value; //cal value int16_t error; //error assuming it is constantly updated } CalData_t; class CalibrationTable { private: CalData_t table[CALIBRATION_TABLE_SIZE]; bool fastCalVaild=false; void loadFromFlash(void); bool flashGood(void); //returns true if the flash copy of calibration is valid void updateFastCal(void); void createFastCal(void); public: void init(void); void saveToFlash(void); //saves the calibration to flash bool updateTableValue(int32_t index, int32_t value); void updateTable(Angle actualAngle, Angle encoderValue); int getValue(Angle actualAngle, CalData_t *ptrData); Angle getCal(Angle actualAngle); bool calValid(void); Angle reverseLookup(Angle encoderAngle); //this turns encoder angle into real angle void printCalTable(void); void smoothTable(void); Angle fastReverseLookup(Angle encoderAngle); }; #endif //__CALIBRAITON_H__ ================================================ FILE: firmware/stepper_nano_zero/command.cpp ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "command.h" #include #define ASCII_BACKSPACE 0x08 #define ASCII_ESC 0x1B #define ASCII_UP_ARROW 0x9b //const char CMD_ANSI_UP[]= {ASCII_ESC,'[','A',0}; int strcicmp(char const *a, char const *b) { for (;; a++, b++) { int d = tolower(*a) - tolower(*b); if (d != 0 || !*a) return d; } } int CommandInit(sCmdUart *ptrUart, uint8_t (*kbhit)(void), uint8_t (*getch)(void),uint8_t (*putch)(char data),uint8_t (*puts)(uint8_t *buffer, uint8_t size) ) { ptrUart->kbhit=kbhit; ptrUart->getch=getch; ptrUart->putch=putch; ptrUart->puts=puts; ptrUart->histIndex=0; ptrUart->buffIndex=0; return 0; } #ifdef PGM_P //check and see if the PGM_P is defined for the AVR int CommandPrintf(sCmdUart *ptrUart, const char *fmt, ...) { int ret=0; char vastr[MAX_STRING]={0}; //char str[MAX_STRING]={0}; char *ptr; va_list ap; //LOG("Command printf"); memset(vastr,0,MAX_STRING); va_start(ap,fmt); ret=vsprintf(vastr,(const char *)fmt,ap); //ret=sprintf(vastr,"%s\r\n",str); //LOG("%s",vastr); if (ptrUart->puts!=NULL) { return ptrUart->puts((uint8_t *)vastr, (uint8_t)ret); } if (ptrUart->putch!=NULL) { ptr=vastr; while(*ptr) { ptrUart->putch(*ptr++); } return ret; } return 0; } #else int CommandPrintf(sCmdUart *ptrUart, char *fmt, ...) { int ret=0; char vastr[MAX_STRING]={0}; char *ptr; va_list ap; memset(vastr,0,MAX_STRING); va_start(ap,fmt); ret=vsprintf(vastr,(char *)fmt,ap); if (ptrUart->puts!=NULL) { return ptrUart->puts((uint8_t *)vastr, (uint8_t)ret); } if (ptrUart->putch!=NULL) { ptr=vastr; while(*ptr) { ptrUart->putch(*ptr++); } return ret; } return 0; } #endif // the delimiter is command/parameter delimiter // by default a ' '0x20 is used but for the TDR with GUI a ':' was preferred, not sure why // set to ' '/0x20 if you want normal command parsing, like DOS unsigned int CommandParse(sCmdUart *ptrUart,sCommand *ptrCmds, char *str, char delimitor ) { char *ptr; char *ptr2; unsigned int i; //char cmd[MAX_STRING]; char buff[MAX_CMD_LENGTH]; char argv[MAX_ARGS][MAX_ARG_LENGTH]; char *ptrArgv[MAX_ARGS]; unsigned int numArgs; int emptyArg=0; sCommand cmd_list; while (*str==0x20 || *str=='\n' || *str=='\r' || *str=='\t') str++; //first we need find command and arguments ptr=strchr(str,delimitor); //find first char //LOG("2parsing %s",str); if (ptr==0) { //we have two options, frist whole thing is command //second bad command if(strlen(str)>0) ptr=str+strlen(str); else return 0; //bad command } //copy string to command buffer. i=0; ptr2=str; while(ptr!=0 && ptr!=ptr2 && i<(MAX_CMD_LENGTH-1)) { //if (*ptr2!='\n' && *ptr2!='\r') //do not include newlines { buff[i++]=*ptr2; } ptr2++; } buff[i]=0; //now buff contains the command let's get the args numArgs=0; while(*ptr!=0 && (*ptr==' ' || *ptr==delimitor)) ptr++; //increment pointer past ' ' if (*ptr!=0) { if (*ptr==34) // " char { ptr++; ptr2=strchr(ptr,34); //find match } else if (*ptr==39) // 'char { ptr++; ptr2=strchr(ptr,39); //find match } else { ptr2=strchr(ptr,delimitor); } if (ptr2==0) { //we have two options, frist whole thing is command //second bad command //LOG("strlen ptr is %d",strlen(ptr)); if(strlen(ptr)>0) ptr2=ptr+strlen(ptr); } emptyArg=0; while((ptr2!=0 && numArgs0) ptr2=ptr+strlen(ptr); } } } } for(i=0; ikbhit()) { ptrUart->data=ptrUart->getch(); //echo the data ptrUart->putch(ptrUart->data); //if the data is the CR we need to process buffer if (ptrUart->data==0x0D) { ptrUart->putch(0x0A); if (strlen(ptrUart->buffer)>0) { if (ptrUart->lastChar!=ASCII_UP_ARROW) { strcpy(ptrUart->bufferHist[ptrUart->histIndex],ptrUart->buffer); ptrUart->histIndex=(ptrUart->histIndex+1) % CMD_HISTORY; } CommandParse(ptrUart,ptrCmds,ptrUart->buffer,delimitor); } CommandPrintf(ptrUart,PSTR("\n\r%s"),cmdPrompt); ptrUart->buffIndex=0; ptrUart->buffer[ptrUart->buffIndex]=0; } if (ptrUart->data==ASCII_BACKSPACE) //backspace { if (ptrUart->buffIndex>0) { ptrUart->buffIndex--; ptrUart->buffer[ptrUart->buffIndex]='\0'; //Echo the backspace ptrUart->putch(' '); ptrUart->putch(ASCII_BACKSPACE); } }else if (ptrUart->data != 0x0A && ptrUart->data !=0x0D && ptrUart->data<127) { ptrUart->buffer[ptrUart->buffIndex++]=ptrUart->data; ptrUart->buffer[ptrUart->buffIndex]=0; } if (ptrUart->buffIndex>=(MAX_CMD_LENGTH-1)) { CommandPrintf(ptrUart,PSTR("\n\rERROR: Command buffer overflow\n\r"));\ ERROR("Command buffer overflow"); ptrUart->buffIndex=0; ptrUart->buffer[0]=0; CommandPrintf(ptrUart,PSTR("\n\r%s"),cmdPrompt); } } if (strstr(ptrUart->buffer,ANSI_UP)) //up arrow { uint8_t i; CommandPrintf(ptrUart,PSTR("\n\r%s"),cmdPrompt); i=CMD_HISTORY-1; if (ptrUart->histIndex>0) { i=ptrUart->histIndex-1; } if (strlen(ptrUart->bufferHist[i])>0) { strcpy(ptrUart->buffer,ptrUart->bufferHist[i]); ptrUart->buffIndex=strlen(ptrUart->buffer); CommandPrintf(ptrUart,PSTR("%s"),ptrUart->buffer); }else { ptrUart->buffIndex=0; ptrUart->buffer[0]=0; } ptrUart->data=ASCII_UP_ARROW; } ptrUart->lastChar=ptrUart->data; return 0; } ================================================ FILE: firmware/stepper_nano_zero/command.h ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef __COMMAND_H #define __COMMAND_H #include #include #include "syslog.h" /* * Usage: * #include #include "uart_e0.h" sCmdUart KeyfobCmdUart; // UART used for the keyfob command line interface CMD_STR(help,"Displays this message"); //List of supported commands sCommand KeyfobCmds[] = { COMMAND(help), {"",0,""}, //End of list signal }; // print out the help strings for the commands static int help_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { sCommand cmd_list; int i; //now let's parse the command i=0; memcpy(&cmd_list, &KeyfobCmds[i], sizeof(sCommand)); while(cmd_list.function!=0) { CommandPrintf(ptrUart,(cmd_list.name)); CommandPrintf(ptrUart,PSTR(" - ")); CommandPrintf(ptrUart,(cmd_list.help)); CommandPrintf(ptrUart,PSTR("\n\r")); i=i+1; memcpy(&cmd_list, &KeyfobCmds[i], sizeof(sCommand)); } return 0; } uint8_t KeyfobCmdGetChar(void) { uint8_t c; if (UARTE0_getc(&c)!=0) { ERROR("Uart getchar failed"); return 0; } return c; } int KeyfobCmdInit(PIN tx_pin, PIN rx_pin, uint32_t baud) { LOG("UARTE0 init"); UARTE0_Init(tx_pin, rx_pin, baud); CommandInit(&KeyfobCmdUart, UARTE0_kbhit, KeyfobCmdGetChar, UARTE0_putc,NULL); //set up the UART structure return 0; } int KeyfobCmdProcess(void) { return CommandProcess(&KeyfobCmdUart,KeyfobCmds,' ',KEYFOB_CMD_PROMPT); } Advantages: 1. You can actually have more than one UART/device connected to same command line interface. 2. works with harvard machines to save SRAM space using the PSTR functionality 3. You can swap out commands "on the fly" */ #define MAX_CMD_LENGTH 60 #define MAX_ARGS 10 #define MAX_ARG_LENGTH 40 #define CMD_HISTORY 3 //number of commands in history buffer #define ASCII_BACKSPACE 0x08 #define ASCII_ESC 0x1B #define ASCII_UP_ARROW 0x9b #define ANSI_UP "\x1B[A\0" #define MAX_STRING 255 //const char ANSI_UP[]= {ASCII_ESC,'[','A',0}; typedef struct { uint8_t (*kbhit)(void); uint8_t (*getch)(void); uint8_t (*putch)(char data); uint8_t (*puts)(uint8_t *buffer, uint8_t size); uint8_t data; char buffer[MAX_CMD_LENGTH]; char bufferHist[CMD_HISTORY][MAX_CMD_LENGTH]; uint8_t histIndex; uint8_t buffIndex; uint8_t lastChar; }sCmdUart; #define COMMAND(NAME) { NAME ## _str, NAME ## _cmd, NAME ## _help} #ifdef PGM_P //check and see if the PGM_P is defined for the AVR //If so then we use the strings in flash not SRAM #define CMD_STR(NAME,STR) static const char NAME ## _help[] PROGMEM = STR; static const char NAME ## _str[] PROGMEM = #NAME; static int NAME ##_cmd(sCmdUart *ptrUart,int, char **); //Command structure typedef struct { PGM_P name; int (*function) (sCmdUart *ptrUart,int, char **); PGM_P help; } sCommand; int CommandPrintf(sCmdUart *ptrUart, const char *fmt, ...); #else #define CMD_STR(NAME,STR) static char NAME ## _help[] = STR; static char NAME ## _str[] = #NAME; static int NAME ##_cmd(sCmdUart *ptrUart,int, char **); //Command structure typedef struct { char *name; int (*function) (sCmdUart *ptrUart,int, char **); char *help; } sCommand; int CommandPrintf(sCmdUart *ptrUart, char *fmt, ...); #endif int CommandInit(sCmdUart *ptrUart, uint8_t (*kbhit)(void), uint8_t (*getch)(void),uint8_t (*putch)(char data),uint8_t (*puts)(uint8_t *buffer, uint8_t size)); unsigned int CommandParse(sCmdUart *ptrUart,sCommand *ptrCmds, char *str, char delimitor); int CommandProcess(sCmdUart *ptrUart,sCommand *ptrCmds, char delimitor, char *cmdPrompt); #endif ================================================ FILE: firmware/stepper_nano_zero/commands.cpp ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "commands.h" #include "command.h" #include "calibration.h" #include "stepper_controller.h" #include #include "nonvolatile.h" #include "Reset.h" #include "nzs.h" #include "ftoa.h" #include "board.h" #include "eeprom.h" #include "steppin.h" extern int32_t dataEnabled; #define COMMANDS_PROMPT (":>") sCmdUart UsbUart; sCmdUart SerialUart; sCmdUart HostUart; //uart on the step/dir pins static int isPowerOfTwo (unsigned int x) { while (((x % 2) == 0) && x > 1) /* While x is even and > 1 */ x /= 2; return (x == 1); } CMD_STR(help,"Displays this message"); CMD_STR(getcal,"Prints the calibration table"); CMD_STR(calibrate,"Calbirates the encoder, should be done with motor disconnected from machine"); CMD_STR(testcal,"tests the calibaration of the encoder"); CMD_STR(microsteps,"gets/sets the microstep size, example 'microsteps 16'"); CMD_STR(step, "Steps motor one step, optionally direction can be set is 'step 1' for reverse"); CMD_STR(feedback, "enable or disable feedback controller, 'feedback 0' - disables, 'feedback 1' - enables"); CMD_STR(readpos, "reads the current angle as 16bit number, applies calibration if valid"); CMD_STR(encoderdiag, "Prints encoder diagnostic") CMD_STR(spid, "with no arguments prints SIMPLE PID parameters, with arguments sets PID 'sPID Kp Ki Kd' " "Where Kp,Ki,Kd are floating point numbers"); CMD_STR(vpid, "with no arguments prints VELOCITY PID parameters, with arguments sets PID 'sPID Kp Ki Kd' " "Where Kp,Ki,Kd are floating point numbers"); CMD_STR(ppid, "with no arguments prints POSITIONAL PID parameters, with arguments sets PID 'sPID Kp Ki Kd' " "Where Kp,Ki,Kd are floating point numbers"); //CMD_STR(testringing ,"Steps motor at various currents and measures encoder"); //CMD_STR(microsteperror ,"test error on microstepping") CMD_STR(dirpin, "with no arguments read dirpin setting, with argument sets direction pin rotation"); #ifndef PIN_ENABLE CMD_STR(errorpinmode,"gets/sets the functionality of the error/enable pin"); #else CMD_STR(enablepinmode,"gets/sets the functionality of the enable pin"); #endif CMD_STR(errorlimit, "gets/set the error limit which will assert error pin (when error pin is set for error output)"); CMD_STR(ctrlmode, "gets/set the feedback controller mode of operation"); CMD_STR(maxcurrent, "gets/set the maximum motor current allowed in milliAmps"); CMD_STR(holdcurrent, "gets/set the motor holding current in milliAmps, only used in the simple positional PID mode"); CMD_STR(homecurrent, "gets/set the motor moving and holding currents that will be used when pin A3 is low"); CMD_STR(motorwiring, "gets/set the motor wiring direction, should only be used by experts"); CMD_STR(stepsperrotation, "gets/set the motor steps per rotation, should only be used by experts"); //CMD_STR(sysparams, "with no arguments read parameters, will set with arguments"); //CMD_STR(motorparams, "with no arguments read parameters, will set with arguments"); CMD_STR(boot, "Enters the bootloader"); CMD_STR(move, "moves encoder to absolute angle in degrees 'move 400.1'"); //CMD_STR(printdata, "prints last n error terms"); CMD_STR(velocity, "gets/set velocity in RPMs"); CMD_STR(factoryreset, "resets board to factory defaults"); CMD_STR(stop, "stops the motion planner"); CMD_STR(setzero, "set the reference angle to zero"); CMD_STR(data, "enables/disables binary data output"); CMD_STR(looptime, "returns the control loop processing time"); CMD_STR(eepromerror, "returns error in degreees from eeprom at power up realtive to current encoder"); CMD_STR(eepromloc, "returns location in degreees eeprom on power up"); CMD_STR(eepromwrite, "forces write of location to eeprom"); CMD_STR(eepromsetloc, "sets the device angle based on EEPROM last reading, compenstates for error") CMD_STR(setpos, "sets the current angle in degrees"); CMD_STR(reboot, "reboots the unit"); CMD_STR(homepin, "sets the pin used to drop to homing current"); CMD_STR(homeangledelay, "sets the angle delay in dropping to homing current"); #ifdef PIN_ENABLE CMD_STR(home, "moves the motor until home switch (enable pin) is pulled low. example 'home 360 0.5' move up to 360 degrees at 0.5 RPM ") #endif CMD_STR(pinread, "reads pins as binary (bit 0-step, bit 1 - Dir, bit 2 - Enable, bit 3 - Error, bit 4 - A3, bit 5- TX, bit 6 - RX") CMD_STR(errorpin, "Sets the logic level of error pin") CMD_STR(geterror, "gets current error") CMD_STR(getsteps, "returns number of steps seen") CMD_STR(debug, "enables debug commands out USB") //List of supported commands sCommand Cmds[] = { COMMAND(help), COMMAND(calibrate), COMMAND(getcal), COMMAND(testcal), COMMAND(microsteps), COMMAND(step), COMMAND(feedback), COMMAND(readpos), COMMAND(encoderdiag), COMMAND(spid), COMMAND(vpid), COMMAND(ppid), //COMMAND(testringing), //COMMAND(microsteperror), COMMAND(dirpin), #ifndef PIN_ENABLE COMMAND(errorpinmode), #else COMMAND(enablepinmode), #endif COMMAND(errorlimit), COMMAND(ctrlmode), COMMAND(maxcurrent), COMMAND(holdcurrent), COMMAND(homecurrent), COMMAND(motorwiring), COMMAND(stepsperrotation), //COMMAND(sysparams), //COMMAND(motorparams), COMMAND(boot), COMMAND(move), //COMMAND(printdata), COMMAND(velocity), COMMAND(factoryreset), COMMAND(stop), COMMAND(setzero), COMMAND(data), COMMAND(looptime), COMMAND(eepromerror), COMMAND(eepromloc), COMMAND(eepromwrite), COMMAND(setpos), COMMAND(reboot), COMMAND(eepromsetloc), COMMAND(homepin), COMMAND(homeangledelay), #ifdef PIN_ENABLE COMMAND(home), #endif COMMAND(pinread), COMMAND(errorpin), COMMAND(geterror), COMMAND(getsteps), COMMAND(debug), {"",0,""}, //End of list signal }; static int debug_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { uint32_t i; if (argc>=1) { i=atol(argv[0]); SysLogDebug(i); } } static int getsteps_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { int32_t s; s=(int32_t)getSteps(); // s=(int32_t)stepperCtrl.getSteps(); CommandPrintf(ptrUart,"steps %" PRIi32 "\n\r",s); return 0; } static int geterror_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { float f; char str[30]; f=ANGLE_T0_DEGREES(stepperCtrl.getLoopError()); ftoa(f,str,2,'f'); CommandPrintf(ptrUart,"error %s deg",str); return 0; } static int errorpin_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { if (argc==1) { SystemParams_t params; memcpy(¶ms,&NVM->SystemParams, sizeof(SystemParams_t) ); params.errorLogic=atol(argv[0]); nvmWriteSystemParms(params); stepperCtrl.updateParamsFromNVM(); } CommandPrintf(ptrUart,"error pin assert level is %d\n\r",NVM->SystemParams.errorLogic); return 0; } static int pinread_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { uint8_t ret=0; if (digitalRead(PIN_STEP_INPUT)) { ret |= 0x01; } if (digitalRead(PIN_DIR_INPUT)) { ret |= 0x02; } #ifdef PIN_ENABLE if (digitalRead(PIN_ENABLE)) { ret |= 0x04; } #endif if (digitalRead(PIN_ERROR)) { ret |= 0x08; } if (digitalRead(PIN_A3)) { ret |= 0x10; } if (digitalRead(30)) { ret |= 0x20; } if (digitalRead(31)) { ret |= 0x40; } CommandPrintf(ptrUart,"0x%02X\n\r",ret); return 0; } #ifdef PIN_ENABLE static void errorPinISR(void) { SmartPlanner.stop(); //stop the planner } static int home_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { float rpm=1; float startDegrees=ANGLE_T0_DEGREES(stepperCtrl.getCurrentAngle()); float finalDegrees=startDegrees+360.0; char str[20]; float deg; if (argc>=1) { finalDegrees=startDegrees+atof(argv[0]); } if (argc>=2) { rpm=atof(argv[1]); } //setup a interrupt for the enable pin attachInterrupt(digitalPinToInterrupt(PIN_ENABLE), errorPinISR, FALLING); SmartPlanner.moveConstantVelocity(finalDegrees,rpm); while(!SmartPlanner.done()) { //do nothing } detachInterrupt(digitalPinToInterrupt(PIN_ENABLE)); deg=ANGLE_T0_DEGREES(stepperCtrl.getCurrentAngle()); ftoa(deg,str,2,'f'); CommandPrintf(ptrUart,"home is %s deg\n\r",str); stepperCtrl.setZero(); return 0; } #endif static int reboot_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { NVIC_SystemReset(); return 0; } static int setpos_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { if (argc>=1) { int64_t a; float x; x=fabs(atof(argv[0])); a=ANGLE_FROM_DEGREES(x); stepperCtrl.setAngle(a); return 0; } return 1; } static int eepromwrite_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { eepromFlush(); return 0; } static int eepromerror_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { Angle a; uint16_t error; float deg; char str[20]; a=(Angle)PowerupEEPROM.encoderAngle; LOG("EEPROM encoder %d",(uint16_t)a); LOG("start encoder %d",(uint16_t)stepperCtrl.getStartupEncoder()); LOG("current encoder %d",(uint16_t)stepperCtrl.getEncoderAngle()); a=(a-(Angle)stepperCtrl.getStartupEncoder()); deg=ANGLE_T0_DEGREES((uint16_t)a) ; if (deg>360.0) { deg=deg-360.0; } ftoa(deg,str,2,'f'); CommandPrintf(ptrUart,"startup error(+/-) %s deg\n\r",str); a=(Angle)PowerupEEPROM.encoderAngle; a=(a-(Angle)stepperCtrl.getEncoderAngle()); deg=ANGLE_T0_DEGREES((uint16_t)a); if (deg>360.0) { deg=deg-360.0; } ftoa(deg,str,2,'f'); CommandPrintf(ptrUart,"current error(+/-) %s deg\n\r",str); return 0; } static int eepromsetloc_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { Angle a; int64_t deg; int32_t x; x=(uint32_t)PowerupEEPROM.encoderAngle-(uint32_t)stepperCtrl.getEncoderAngle(); deg=PowerupEEPROM.angle-x; stepperCtrl.setAngle(deg); return 0; } static int eepromloc_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { Angle a; int64_t deg; int32_t x,y; deg=PowerupEEPROM.angle; deg=(deg*360*100)/(int32_t)ANGLE_STEPS; x=(deg)/100; y=abs(deg-(x*100)); CommandPrintf(ptrUart,"%d.%0.2d deg\n\r",x,y); return 0; } static int looptime_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { CommandPrintf(ptrUart,"%dus",stepperCtrl.getLoopTime()); return 0; } static int setzero_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { stepperCtrl.setZero(); return 0; } static int stop_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { SmartPlanner.stop(); return 0; } static int data_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { if (argc == 1) { uint32_t x; x=atol(argv[0]); dataEnabled=x; return 0; } return 1; } static int stepsperrotation_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { if (argc == 0) { uint32_t x; x=NVM->motorParams.fullStepsPerRotation; CommandPrintf(ptrUart,"full steps per rotation %u\n\r",x); return 0; } if (argc == 1) { uint32_t x; x=atol(argv[0]); if (x==200 || x==400) { MotorParams_t motorParams; memcpy(&motorParams,&NVM->motorParams, sizeof(motorParams) ); motorParams.fullStepsPerRotation=x; nvmWriteMotorParms(motorParams); stepperCtrl.updateParamsFromNVM(); x=NVM->motorParams.fullStepsPerRotation; CommandPrintf(ptrUart,"full steps per rotation %u\n\r",x); CommandPrintf(ptrUart,"please power cycle board\n\r"); return 0; } } CommandPrintf(ptrUart,"usage 'stepsperrotation 200' or 'stepsperrotation 400'\n\r"); return 1; } static int motorwiring_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { if (argc == 0) { uint32_t x; x=NVM->motorParams.motorWiring; CommandPrintf(ptrUart,"motor wiring %u\n\r",x); return 0; } if (argc == 1) { uint32_t x; x=atol(argv[0]); if (x<=1) { MotorParams_t motorParams; memcpy(&motorParams,&NVM->motorParams, sizeof(motorParams) ); motorParams.motorWiring=x; nvmWriteMotorParms(motorParams); stepperCtrl.updateParamsFromNVM(); x=NVM->motorParams.motorWiring; CommandPrintf(ptrUart,"motor wiring %u\n\r",x); CommandPrintf(ptrUart,"please power cycle board\n\r"); return 0; } } CommandPrintf(ptrUart,"usage 'motorwiring 0' or 'motorwiring 1'\n\r"); return 1; } static int homeangledelay_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { float f; char str[30]; if (argc == 1) { f=atof(argv[0]); SystemParams_t params; memcpy(¶ms,&NVM->SystemParams, sizeof(SystemParams_t) ); params.homeAngleDelay=ANGLE_FROM_DEGREES(f); nvmWriteSystemParms(params); stepperCtrl.updateParamsFromNVM(); } f=ANGLE_T0_DEGREES(NVM->SystemParams.homeAngleDelay); ftoa(f,str,2,'f'); CommandPrintf(ptrUart,"home angle delay %s\n\r",str); return 0; } static int homepin_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { int32_t x; if (argc == 0) { x=NVM->SystemParams.homePin; CommandPrintf(ptrUart,"home pin %d\n\r",x); return 0; } if (argc == 1) { x=atol(argv[0]); SystemParams_t params; memcpy(¶ms,&NVM->SystemParams, sizeof(SystemParams_t) ); params.homePin=x; nvmWriteSystemParms(params); stepperCtrl.updateParamsFromNVM(); x=NVM->SystemParams.homePin; CommandPrintf(ptrUart,"home pin %d\n\r",x); return 0; } CommandPrintf(ptrUart, "use 'sethomepin 17' to set maximum home pin to A3"); return 1; } static int homecurrent_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { uint32_t x,y; if (argc == 0) { x=NVM->motorParams.homeMa; y=NVM->motorParams.homeHoldMa; CommandPrintf(ptrUart,"current %umA, %umA\n\r",x,y); return 0; } if (argc == 1) { x=atol(argv[0]); MotorParams_t motorParams; memcpy(&motorParams,&NVM->motorParams, sizeof(motorParams) ); motorParams.homeMa=x; nvmWriteMotorParms(motorParams); stepperCtrl.updateParamsFromNVM(); x=NVM->motorParams.homeMa; y=NVM->motorParams.homeHoldMa; CommandPrintf(ptrUart,"current %umA, %umA\n\r",x,y); return 0; } if (argc == 2) { x=atol(argv[0]); y=atol(argv[1]); MotorParams_t motorParams; memcpy(&motorParams,&NVM->motorParams, sizeof(motorParams) ); motorParams.homeMa=x; motorParams.homeHoldMa=y; nvmWriteMotorParms(motorParams); stepperCtrl.updateParamsFromNVM(); x=NVM->motorParams.homeMa; y=NVM->motorParams.homeHoldMa; CommandPrintf(ptrUart,"current %umA, %umA\n\r",x,y); return 0; } CommandPrintf(ptrUart, "use 'homecurrent 1000 500' to set maximum home current to 1.0A and hold to 500ma"); return 1; } static int holdcurrent_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { if (argc == 0) { uint32_t x; x=NVM->motorParams.currentHoldMa; CommandPrintf(ptrUart,"hold current %u mA\n\r",x); return 0; } if (argc == 1) { uint32_t x; x=atol(argv[0]); MotorParams_t motorParams; memcpy(&motorParams,&NVM->motorParams, sizeof(motorParams) ); motorParams.currentHoldMa=x; nvmWriteMotorParms(motorParams); stepperCtrl.updateParamsFromNVM(); x=NVM->motorParams.currentHoldMa; CommandPrintf(ptrUart,"hold current %u mA\n\r",x); return 0; } CommandPrintf(ptrUart, "use 'holdcurrent 1000' to set maximum current to 1.0A"); return 1; } static int maxcurrent_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { if (argc == 0) { uint32_t x; x=NVM->motorParams.currentMa; CommandPrintf(ptrUart,"max current %u mA\n\r",x); return 0; } if (argc == 1) { uint32_t x; x=atol(argv[0]); MotorParams_t motorParams; memcpy(&motorParams,&NVM->motorParams, sizeof(motorParams) ); motorParams.currentMa=x; nvmWriteMotorParms(motorParams); stepperCtrl.updateParamsFromNVM(); x=NVM->motorParams.currentMa; CommandPrintf(ptrUart,"max current %u mA\n\r",x); return 0; } CommandPrintf(ptrUart, "use 'maxcurrent 2000' to set maximum current to 2.0A"); return 1; } static int ctrlmode_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { bool ret; if (argc == 0) { switch(NVM->SystemParams.controllerMode) { case CTRL_OFF: CommandPrintf(ptrUart,"controller Off(0)"); return 0; case CTRL_OPEN: CommandPrintf(ptrUart,"controller Open-loop(1)"); return 0; case CTRL_SIMPLE: CommandPrintf(ptrUart,"controller Simple-Position-PID(2)"); return 0; case CTRL_POS_PID: CommandPrintf(ptrUart,"controller Current-Position-PID(3)"); return 0; case CTRL_POS_VELOCITY_PID: CommandPrintf(ptrUart,"controller Velocity-PID(4)"); return 0; } return 1; } if (argc == 1) { uint32_t x; x=atol(argv[0]); if (x<=4) { SystemParams_t systemParams; memcpy(&systemParams,&NVM->SystemParams, sizeof(systemParams) ); systemParams.controllerMode=(feedbackCtrl_t)(x); nvmWriteSystemParms(systemParams); stepperCtrl.updateParamsFromNVM(); switch(NVM->SystemParams.controllerMode) { case CTRL_OFF: CommandPrintf(ptrUart,"controller Off(0)"); return 0; case CTRL_OPEN: CommandPrintf(ptrUart,"controller Open-loop(1)"); return 0; case CTRL_SIMPLE: CommandPrintf(ptrUart,"controller Simple-Position-PID(2)"); return 0; case CTRL_POS_PID: CommandPrintf(ptrUart,"controller Current-Position-PID(3)"); return 0; case CTRL_POS_VELOCITY_PID: CommandPrintf(ptrUart,"controller Velocity-PID(4)"); return 0; } return 1; } } CommandPrintf(ptrUart, "use 'ctrlmode [0 .. 4]' to set control mode"); return 1; } static int errorlimit_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { bool ret; char str[20]; if (argc == 0) { float x; x=ANGLE_T0_DEGREES(NVM->SystemParams.errorLimit); ftoa(x,str,2,'f'); CommandPrintf(ptrUart,"errorLimit %s deg\n\r",str); return 0; } if (argc == 1) { float x; x=fabs(atof(argv[0])); SystemParams_t systemParams; memcpy(&systemParams,&NVM->SystemParams, sizeof(systemParams) ); systemParams.errorLimit=ANGLE_FROM_DEGREES(x); nvmWriteSystemParms(systemParams); stepperCtrl.updateParamsFromNVM(); x=ANGLE_T0_DEGREES(NVM->SystemParams.errorLimit); ftoa(x,str,2,'f'); CommandPrintf(ptrUart,"errorLimit %s deg\n\r",str); return 0; } CommandPrintf(ptrUart, "use 'errorlimit 1.8' to set error limit to 1.8 degrees"); return 1; } static int dirpin_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { bool ret; if (argc == 0) { if (CW_ROTATION == NVM->SystemParams.dirPinRotation) { CommandPrintf(ptrUart,"dirpin CW(%d)\n\r",(uint32_t)NVM->SystemParams.dirPinRotation); }else { CommandPrintf(ptrUart,"dirpin CCW(%d)\n\r",(uint32_t)NVM->SystemParams.dirPinRotation); } return 0; } if (argc == 1) { uint32_t x; x=abs(atol(argv[0])); if (x<=1) { SystemParams_t systemParams; memcpy(&systemParams,&NVM->SystemParams, sizeof(systemParams) ); systemParams.dirPinRotation=(RotationDir_t)x; nvmWriteSystemParms(systemParams); stepperCtrl.updateParamsFromNVM(); if (CW_ROTATION == NVM->SystemParams.dirPinRotation) { CommandPrintf(ptrUart,"dirpin CW(%d)\n\r",(uint32_t)NVM->SystemParams.dirPinRotation); }else { CommandPrintf(ptrUart,"dirpin CCW(%d)\n\r",(uint32_t)NVM->SystemParams.dirPinRotation); } return 0; } } CommandPrintf(ptrUart, "used 'dirpin 0' for CW rotation and 'dirpin 1' for CCW"); return 1; } #ifndef PIN_ENABLE static int errorpinmode_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { bool ret; if (argc == 0) { if (ERROR_PIN_MODE_ENABLE == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Error pin - Enable Active High(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); }else if (ERROR_PIN_MODE_ACTIVE_LOW_ENABLE == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Error pin - Enable active low(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); }else if (ERROR_PIN_MODE_ERROR == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Error pin - Error pin(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); } else if (ERROR_PIN_MODE_BIDIR == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Error pin - Bidi error(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); } return 0; } if (argc == 1) { uint32_t x; x=abs(atol(argv[0])); if (x<=3) { SystemParams_t systemParams; memcpy(&systemParams,&NVM->SystemParams, sizeof(systemParams) ); systemParams.errorPinMode=(ErrorPinMode_t)x; nvmWriteSystemParms(systemParams); stepperCtrl.updateParamsFromNVM(); if (ERROR_PIN_MODE_ENABLE == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Error pin - Enable Active High(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); }else if (ERROR_PIN_MODE_ACTIVE_LOW_ENABLE == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Error pin - Enable active low(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); }else if (ERROR_PIN_MODE_ERROR == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Error pin - Error pin(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); } else if (ERROR_PIN_MODE_BIDIR == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Error pin - Bidi error(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); } return 0; } } CommandPrintf(ptrUart, "use 'errorpinmode 0' for enable active high, 'errorpinmode 1' for enable active low and 'errorpinmode 2' for error output" ); return 1; } #else static int enablepinmode_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { bool ret; if (argc == 0) { if (ERROR_PIN_MODE_ENABLE == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Enable pin - Enable Active High(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); }else if (ERROR_PIN_MODE_ACTIVE_LOW_ENABLE == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Enable pin - Enable active low(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); } else if (ERROR_PIN_MODE_BIDIR == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Enable pin - Bidi error(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); } else { CommandPrintf(ptrUart,"UNDEFINED Pin Mode error(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); } return 0; } if (argc == 1) { uint32_t x; x=abs(atol(argv[0])); if (x<=1) { SystemParams_t systemParams; memcpy(&systemParams,&NVM->SystemParams, sizeof(systemParams) ); systemParams.errorPinMode=(ErrorPinMode_t)x; nvmWriteSystemParms(systemParams); stepperCtrl.updateParamsFromNVM(); if (ERROR_PIN_MODE_ENABLE == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Enable pin - Enable Active High(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); }else if (ERROR_PIN_MODE_ACTIVE_LOW_ENABLE == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Enable pin - Enable active low(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); }else if (ERROR_PIN_MODE_BIDIR == NVM->SystemParams.errorPinMode) { CommandPrintf(ptrUart,"Enable pin - Bidi error(%d)\n\r",(uint32_t)NVM->SystemParams.errorPinMode); } return 0; } } CommandPrintf(ptrUart, "use 'enablepinmode 0' for enable active high, 'enablepinmode 1' for enable active low " ); return 1; } #endif static int factoryreset_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { nvmErase(); //erase all of the flash NVIC_SystemReset(); } static int velocity_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { int64_t x; if (1 == argc) { float rpm; rpm=atof(argv[0]); x=(int64_t)(DIVIDE_WITH_ROUND(rpm*ANGLE_STEPS,60)); //divide with r stepperCtrl.setVelocity(x); } int64_t y; x=(stepperCtrl.getVelocity()*100 *60)/(ANGLE_STEPS); y=abs(x-((x/100)*100)); CommandPrintf(ptrUart,"Velocity is %d.%02d - %d\n\r",(int32_t)(x/100),(int32_t)y,(int32_t)stepperCtrl.getVelocity()); return 0; } // //static int printdata_cmd(sCmdUart *ptrUart,int argc, char * argv[]) //{ // int32_t x; // // stepperCtrl.printData(); // // return 0; //} static int move_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { int32_t x,ma; //CommandPrintf(ptrUart, "Move %d",argc); if (1 == argc) { float f; f=atof(argv[0]); // if (f>1.8) // f=1.8; // if (f<-1.8) // f=-1.8; x=ANGLE_FROM_DEGREES(f); LOG("moving %d", x); stepperCtrl.moveToAbsAngle(x); } if (2 == argc) { float f,rpm,a,y; float pos,dx; f=atof(argv[0]); rpm=atof(argv[1]); // if (f>1.8) // f=1.8; // if (f<-1.8) // f=-1.8; SmartPlanner.moveConstantVelocity(f,rpm); return 0; a=360*rpm/60/1000; //rotations/100ms pos=ANGLE_T0_DEGREES(stepperCtrl.getCurrentAngle()); y=pos; if (y>f) a=-a; #ifndef MECHADUINO_HARDWARE SerialUSB.println(f); SerialUSB.println(y); SerialUSB.println(a); #endif while (abs(y-f)>(2*abs(a))) { // SerialUSB.println(); // SerialUSB.println(f); // SerialUSB.println(y); // SerialUSB.println(a); y=y+a; x=ANGLE_FROM_DEGREES(y); //LOG("moving %d", x); stepperCtrl.moveToAbsAngle(x); delay(1); //y=stepperCtrl.getCurrentAngle(); } x=ANGLE_FROM_DEGREES(f); LOG("moving %d", x); stepperCtrl.moveToAbsAngle(x); } return 0; } static int boot_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { initiateReset(250); } /* static int microsteperror_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { int i,n,j; bool feedback=stepperCtrl.getFeedback(); n=200*stepperCtrl.getMicroSteps(); CommandPrintf(ptrUart, "Function needs fixed"); return 0; stepperCtrl.feedback(false); for (j=0; j<2; j++) { for (i=0; iSystemParams.microsteps); // CommandPrintf(ptrUart,"dirPinRotation %d\n\r",NVM->SystemParams.dirPinRotation); // CommandPrintf(ptrUart,"errorLimit %d\n\r",NVM->SystemParams.errorLimit); // CommandPrintf(ptrUart,"errorPinMode %d\n\r",NVM->SystemParams.errorPinMode); // CommandPrintf(ptrUart,"controllerMode %d\n\r",NVM->SystemParams.controllerMode); // // } else if (5 == argc) // { // int32_t x; // SystemParams_t systemParams; // // systemParams.microsteps=atol(argv[0]); // x=atol(argv[1]); // systemParams.dirPinRotation=CCW_ROTATION; // if (x==0) // { // systemParams.dirPinRotation=CW_ROTATION; // } // systemParams.errorLimit=atol(argv[2]); // systemParams.errorPinMode=(ErrorPinMode_t)atol(argv[3]); // systemParams.controllerMode=(feedbackCtrl_t)atol(argv[4]); // // nvmWriteSystemParms(systemParams); // stepperCtrl.updateParamsFromNVM(); // // CommandPrintf(ptrUart,"microsteps %d\n\r",NVM->SystemParams.microsteps); // CommandPrintf(ptrUart,"dirPinRotation %d\n\r",NVM->SystemParams.dirPinRotation); // CommandPrintf(ptrUart,"errorLimit %d\n\r",NVM->SystemParams.errorLimit); // CommandPrintf(ptrUart,"errorPinMode %d\n\r",NVM->SystemParams.errorPinMode); // CommandPrintf(ptrUart,"controllerMode %d\n\r",NVM->SystemParams.controllerMode); // } else // { // CommandPrintf(ptrUart, "try 'sysparams microsteps dirPinRotation errorLimit errorPinMode controllerMode'\n\r\tlike 'sysparams 16 0 327 0 2'\n\e"); // } // return 0; //} /* static int motorparams_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { if (0 == argc) { CommandPrintf(ptrUart,"currentMa %d\n\r",NVM->motorParams.currentMa); CommandPrintf(ptrUart,"currentHoldMa %d\n\r",NVM->motorParams.currentHoldMa); CommandPrintf(ptrUart,"motorWiring %d\n\r",NVM->motorParams.motorWiring); CommandPrintf(ptrUart,"fullStepsPerRotation %d\n\r",NVM->motorParams.fullStepsPerRotation); } else if (4 == argc) { int32_t x; MotorParams_t motorParams; motorParams.currentMa=atol(argv[0]); motorParams.currentHoldMa=atol(argv[1]); motorParams.motorWiring=atol(argv[2]); motorParams.fullStepsPerRotation=atol(argv[3]); nvmWriteMotorParms(motorParams); stepperCtrl.updateParamsFromNVM(); CommandPrintf(ptrUart,"currentMa %d\n\r",NVM->motorParams.currentMa); CommandPrintf(ptrUart,"currentHoldMa %d\n\r",NVM->motorParams.currentHoldMa); CommandPrintf(ptrUart,"motorWiring %d\n\r",NVM->motorParams.motorWiring); CommandPrintf(ptrUart,"fullStepsPerRotation %d\n\r",NVM->motorParams.fullStepsPerRotation); } else { CommandPrintf(ptrUart, "try 'motorparams currentMa currentHoldMa motorWiring fullStepsPerRotation'\n\r\tlike 'motroparams 2200 1500 0 200'\n\e"); } return 0; } */ static int vpid_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { CommandPrintf(ptrUart, "args %d\n\r",argc); if (0 == argc) { int32_t x,y; x=(int32_t)NVM->vPID.Kp; y=abs(1000*NVM->vPID.Kp-(x*1000)); CommandPrintf(ptrUart,"Kp %d.%03d\n\r",x,y); x=(int32_t)NVM->vPID.Ki; y=abs(1000*NVM->vPID.Ki-(x*1000)); CommandPrintf(ptrUart,"Ki %d.%03d\n\r",x,y); x=(int32_t)NVM->vPID.Kd; y=abs(1000*NVM->vPID.Kd-(x*1000)); CommandPrintf(ptrUart,"Kd %d.%03d\n\r",x,y); } if (3 == argc) { float Kp,Ki,Kd; int32_t x,y; Kp=atof(argv[0]); Ki=atof(argv[1]); Kd=atof(argv[2]); nvmWrite_vPID(Kp,Ki,Kd); stepperCtrl.updateParamsFromNVM(); //force the controller to use the new parameters x=(int32_t)NVM->vPID.Kp; y=abs(1000*NVM->vPID.Kp-(x*1000)); CommandPrintf(ptrUart,"Kp %d.%03d\n\r",x,y); x=(int32_t)NVM->vPID.Ki; y=abs(1000*NVM->vPID.Ki-(x*1000)); CommandPrintf(ptrUart,"Ki %d.%03d\n\r",x,y); x=(int32_t)NVM->vPID.Kd; y=abs(1000*NVM->vPID.Kd-(x*1000)); CommandPrintf(ptrUart,"Kd %d.%03d\n\r",x,y); } return 0; } static int ppid_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { if (0 == argc) { int32_t x,y; x=(int32_t)NVM->pPID.Kp; y=abs(1000*NVM->pPID.Kp-(x*1000)); CommandPrintf(ptrUart,"Kp %d.%03d\n\r",x,y); x=(int32_t)NVM->pPID.Ki; y=abs(1000*NVM->pPID.Ki-(x*1000)); CommandPrintf(ptrUart,"Ki %d.%03d\n\r",x,y); x=(int32_t)NVM->pPID.Kd; y=abs(1000*NVM->pPID.Kd-(x*1000)); CommandPrintf(ptrUart,"Kd %d.%03d\n\r",x,y); } if (3 == argc) { float Kp,Ki,Kd; int32_t x,y; Kp=atof(argv[0]); Ki=atof(argv[1]); Kd=atof(argv[2]); nvmWrite_pPID(Kp,Ki,Kd); stepperCtrl.updateParamsFromNVM(); //force the controller to use the new parameters x=(int32_t)NVM->pPID.Kp; y=abs(1000*NVM->pPID.Kp-(x*1000)); CommandPrintf(ptrUart,"Kp %d.%03d\n\r",x,y); x=(int32_t)NVM->pPID.Ki; y=abs(1000*NVM->pPID.Ki-(x*1000)); CommandPrintf(ptrUart,"Ki %d.%03d\n\r",x,y); x=(int32_t)NVM->pPID.Kd; y=abs(1000*NVM->pPID.Kd-(x*1000)); CommandPrintf(ptrUart,"Kd %d.%03d\n\r",x,y); } return 0; } static int spid_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { if (0 == argc) { int32_t x,y; x=(int32_t)NVM->sPID.Kp; y=abs(1000*NVM->sPID.Kp-(x*1000)); CommandPrintf(ptrUart,"Kp %d.%03d\n\r",x,y); x=(int32_t)NVM->sPID.Ki; y=abs(1000*NVM->sPID.Ki-(x*1000)); CommandPrintf(ptrUart,"Ki %d.%03d\n\r",x,y); x=(int32_t)NVM->sPID.Kd; y=abs(1000*NVM->sPID.Kd-(x*1000)); CommandPrintf(ptrUart,"Kd %d.%03d\n\r",x,y); } if (3 == argc) { float Kp,Ki,Kd; int32_t x,y; Kp=atof(argv[0]); Ki=atof(argv[1]); Kd=atof(argv[2]); nvmWrite_sPID(Kp,Ki,Kd); stepperCtrl.updateParamsFromNVM(); //force the controller to use the new parameters x=(int32_t)NVM->sPID.Kp; y=abs(1000*NVM->sPID.Kp-(x*1000)); CommandPrintf(ptrUart,"Kp %d.%03d\n\r",x,y); x=(int32_t)NVM->sPID.Ki; y=abs(1000*NVM->sPID.Ki-(x*1000)); CommandPrintf(ptrUart,"Ki %d.%03d\n\r",x,y); x=(int32_t)NVM->sPID.Kd; y=abs(1000*NVM->sPID.Kd-(x*1000)); CommandPrintf(ptrUart,"Kd %d.%03d\n\r",x,y); } return 0; } static int encoderdiag_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { char str[512]; stepperCtrl.encoderDiagnostics(str); CommandPrintf(ptrUart,"%s",str); return 0; } static int readpos_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { float pos; int32_t x,y; pos=ANGLE_T0_DEGREES(stepperCtrl.getCurrentAngle()); x=int(pos); y=abs((pos-x)*100); CommandPrintf(ptrUart,"encoder %d.%02d",x,y); return 0; } static int feedback_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { if (0 == argc) { CommandPrintf(ptrUart,"must pass argument, 'feedback 0' - disables, 'feedback 1' - enables"); return 1; } stepperCtrl.feedback(atoi(argv[0])); return 0; } static int step_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { if (argc == 0 ) { stepperCtrl.move(0, 1); //stepperCtrl.step(STEPPER_FORWARD); }else { int d, steps=1; d=atoi(argv[0]); if (argc >1) { steps=atoi(argv[1]); } if (1 == d) { stepperCtrl.move(1, steps); } else { stepperCtrl.move(0, steps); } } return 0; } static int microsteps_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { bool ret; if (argc != 1) { CommandPrintf(ptrUart,"microsteps %d\n\r",NVM->SystemParams.microsteps); return 0; } int32_t x; x=atol(argv[0]); if (isPowerOfTwo(x) && x>0 && x<=256) { SystemParams_t systemParams; memcpy(&systemParams,&NVM->SystemParams, sizeof(systemParams) ); systemParams.microsteps=atol(argv[0]); nvmWriteSystemParms(systemParams); stepperCtrl.updateParamsFromNVM(); CommandPrintf(ptrUart,"microsteps %d\n\r",NVM->SystemParams.microsteps); }else { CommandPrintf(ptrUart,"number of microsteps must be a power of 2 between 1 and 256"); return 1; //return error } return 0; } // print out the help strings for the commands static int help_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { sCommand cmd_list; int i; //now let's parse the command i=0; memcpy(&cmd_list, &Cmds[i], sizeof(sCommand)); while(cmd_list.function!=0) { CommandPrintf(ptrUart,(cmd_list.name)); CommandPrintf(ptrUart,(" - ")); CommandPrintf(ptrUart,(cmd_list.help)); CommandPrintf(ptrUart,("\n\r")); i=i+1; memcpy(&cmd_list, &Cmds[i], sizeof(sCommand)); } return 0; } static int getcal_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { stepperCtrl.calTable.printCalTable(); return 0; } static int calibrate_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { stepperCtrl.calibrateEncoder(); CommandPrintf(ptrUart,"Calibration DONE!\n\r"); return 0; } static int testcal_cmd(sCmdUart *ptrUart,int argc, char * argv[]) { Angle a; int32_t x; a=stepperCtrl.maxCalibrationError(); x=(uint16_t)a*(int32_t)360000L/(int32_t)ANGLE_MAX; CommandPrintf(ptrUart,"Max error is %d.%03d degrees\n\r", x/1000,abs(x)%1000); return 0; } #ifndef MECHADUINO_HARDWARE uint8_t kbhit(void) { return SerialUSB.available(); //return SerialUSB.peek() != -1; } uint8_t getChar(void) { return SerialUSB.read(); } uint8_t putch(char data) { return SerialUSB.write((uint8_t)data); } #endif uint8_t kbhit_hw(void) { return Serial5.available(); //return SerialUSB.peek() != -1; } uint8_t getChar_hw(void) { return Serial5.read(); } uint8_t putch_hw(char data) { return Serial5.write((uint8_t)data); } uint8_t kbhit_step_dir(void) { return Serial1.available(); //return SerialUSB.peek() != -1; } uint8_t getChar_step_dir(void) { return Serial1.read(); } uint8_t putch_step_dir(char data) { return Serial1.write((uint8_t)data); } void commandsInit(void) { #ifndef MECHADUINO_HARDWARE CommandInit(&UsbUart, kbhit, getChar, putch ,NULL); //set up the UART structure SerialUSB.print("\n\rPower Up\n\r"); SerialUSB.print(COMMANDS_PROMPT); #endif CommandInit(&HostUart, kbhit_step_dir, getChar_step_dir, putch_step_dir ,NULL); //set up the UART structure for step and dir pins #ifdef CMD_SERIAL_PORT CommandInit(&SerialUart, kbhit_hw, getChar_hw, putch_hw ,NULL); //set up the UART structure Serial5.print("\n\rPower Up\n\r"); Serial5.print(COMMANDS_PROMPT); #endif } int commandsProcess(void) { #ifdef USE_STEP_DIR_SERIAL //if the step pin is configured to the SerialCom 0 then we need to process commands //if PA11 (D0) is configured to perpherial C then the step pin is UART if (getPinMux(PIN_STEP_INPUT) == PORT_PMUX_PMUXE_C_Val) { //SerialUSB.println("host"); CommandProcess(&HostUart,Cmds,' ',COMMANDS_PROMPT); } #endif //USE_STEP_DIR_SERIAL #ifdef CMD_SERIAL_PORT CommandProcess(&SerialUart,Cmds,' ',COMMANDS_PROMPT); #endif #ifndef MECHADUINO_HARDWARE if (SerialUSB.dtr()) { return CommandProcess(&UsbUart,Cmds,' ',COMMANDS_PROMPT); } #endif } ================================================ FILE: firmware/stepper_nano_zero/commands.h ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef __COMMANDS_H__ #define __COMMANDS_H__ #include #include "stepper_controller.h" #include "nzs.h" extern StepperCtrl stepperCtrl; extern eepromData_t PowerupEEPROM; void commandsInit(void); int commandsProcess(void); #endif //__COMMANDS_H__ ================================================ FILE: firmware/stepper_nano_zero/eeprom.cpp ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "eeprom.h" #include "calibration.h" #include "Flash.h" #include "board.h" //for divide with rounding macro #include #include "syslog.h" //since we will write the following structure into each page, we need to find our latest page // to do this we will use the header to contain a checksum and write counter. #define EEPROM_SIZE (FLASH_ROW_SIZE*2) typedef struct { uint16_t checksum; uint16_t count; }eepromHeader_t; #define EEPROM_DATA_SIZE (FLASH_PAGE_SIZE_NZS-sizeof(eepromHeader_t)) typedef struct { eepromHeader_t header; uint8_t data[EEPROM_DATA_SIZE]; } eepromData_t; static eepromData_t EEPROMCache; static int32_t NextPageWrite=-1; //we need to reserve two pages for EEPROM __attribute__((__aligned__(FLASH_ROW_SIZE))) const uint8_t NVM_eeprom[EEPROM_SIZE]={0xFF}; static uint16_t checksum(uint8_t *ptrData, uint32_t nBytes) { uint16_t sum=0; uint32_t i; i=0; //LOG("running checksum %d",nBytes); while(idata, EEPROM_DATA_SIZE); //LOG("checksum is %d %d",cs,ptrData->header.checksum); if (cs==ptrData->header.checksum) { //LOG("Page good %d",page); return true; } //LOG("page bad %d",page); return false; } static void printEEPROM(uint32_t page) { eepromData_t *ptrData; int i; ptrData=(eepromData_t *)&NVM_eeprom[page]; LOG("count %d", ptrData->header.count); LOG("checksum %d", ptrData->header.checksum); for (i=0; i<10; i++) { LOG("Data[%d]=%02X",i,ptrData->data[i]); } } static uint32_t findLastGoodPage(void) { uint32_t lastGoodPage=0; uint32_t page; uint16_t lastCnt=0; eepromData_t *ptrData; page=0; while(page < (EEPROM_SIZE)) { //LOG("checking page %d",page); if (isPageGood(page)) { ptrData=(eepromData_t *)&NVM_eeprom[page]; //check for roll over which is OK if (lastCnt==16534 && ptrData->header.count==1) { lastCnt=ptrData->header.count; lastGoodPage=page; } if (ptrData->header.count>lastCnt) { //make sure we have not rolled over. if ((ptrData->header.count-lastCnt)<(16534/2)) { lastCnt=ptrData->header.count; lastGoodPage=page; } } } page=page + FLASH_PAGE_SIZE_NZS; } //LOG("last good page %d",lastGoodPage); return lastGoodPage; } //find the next page to write static uint32_t eepromGetNextWritPage(void) { eepromHeader_t *ptrHeader; uint32_t page; uint32_t row; int blockCount; int done=0; //start at first address: page=0; while(page < (EEPROM_SIZE)) { //LOG("checking page %d",page); ptrHeader=(eepromHeader_t *) &NVM_eeprom[page]; if (ptrHeader->count == 0xFFFF) { uint32_t i; uint8_t *ptrData; //uint8_t erasedByte=(uint8_t)ptrHeader->count; bool erased=true; //verify page is erased ptrData= (uint8_t *)&NVM_eeprom[page]; for (i=0; i=EEPROM_SIZE) { row=0; //TODO we should make sure this not where good data is // however if it is what should we do? } //now we need to erase that row //WARNING("Erasing page %d",row*FLASH_ROW_SIZE); flashErase(&NVM_eeprom[row*FLASH_ROW_SIZE],FLASH_ROW_SIZE); page=row*FLASH_ROW_SIZE; //LOG("Next free page is %d",page); return page; } eepromError_t eepromInit(void) { uint32_t page; //find the last good page offset in flash page=findLastGoodPage(); LOG("EEPROM Init found page %d",page); if (isPageGood(page)) { LOG("EEPROM page good %d",page); memcpy(&EEPROMCache, &NVM_eeprom[page], sizeof(EEPROMCache)); NextPageWrite=eepromGetNextWritPage(); return EEPROM_OK; } //ERROR("page is bad"); memset(&EEPROMCache, 0, sizeof(EEPROMCache)); NextPageWrite=eepromGetNextWritPage(); return EEPROM_CORRUPT; } int eepromWriteCache(uint8_t *ptrData, uint32_t size) { //LOG("Cache write %d",size); if (NextPageWrite==-1) //some one did not init the module { //lets handle gracefully and do it ourselves eepromInit(); } if (size>EEPROM_DATA_SIZE) { size =EEPROM_DATA_SIZE; } memcpy(EEPROMCache.data, ptrData, size); EEPROMCache.header.checksum=checksum(EEPROMCache.data,EEPROM_DATA_SIZE); return size; } int eepromRead(uint8_t *ptrData, uint32_t size) //returns number of bytes actually read, whcih could be less than size requested { if (NextPageWrite==-1) //some one did not init the module { //lets handle gracefully and do it ourselves eepromInit(); } if (size>EEPROM_DATA_SIZE) { size =EEPROM_DATA_SIZE; } if (EEPROMCache.header.count == 0) { return 0; //cache is new/corrupt } memcpy(ptrData, EEPROMCache.data, size); return size; } eepromError_t eepromFlush(void) //flush the cache to flash memory { if (NextPageWrite==-1) { ERROR("EEPROM WRITE FAILED"); return EEPROM_FAILED; //most likely no one has written to cache } EEPROMCache.header.count++; if (EEPROMCache.header.count>=16535) { EEPROMCache.header.count=1; } //WARNING("Writting to Page %d",NextPageWrite); flashWrite(&NVM_eeprom[NextPageWrite], &EEPROMCache, sizeof(EEPROMCache)); // printEEPROM(NextPageWrite); if (!SYSCTRL->PCLKSR.bit.BOD33DET) //if not in brown out condition find next write location { //LOG("getting next page to write"); NextPageWrite=eepromGetNextWritPage(); //find next write location and erase if needed } else { //LOG("BOD active"); NextPageWrite=-1; //else we will just clear NextPageWrite location just in case we recover from brown out } return EEPROM_OK; } ================================================ FILE: firmware/stepper_nano_zero/eeprom.h ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef EEPROM_H_ #define EEPROM_H_ #include "Flash.h" #include "calibration.h" #include "board.h" /* * This EEPROM implementation provides 60bytes of "eeprom space" (we reserve 4 bytes for overhead) * The EEPROM uses two rows of flash (256 bytes per row), which * for the SAMD21G18A this allows a minimual 200k writes, but typically 1200k */ typedef enum { EEPROM_OK =0, EEPROM_FAILED=1, EEPROM_CORRUPT=2, } eepromError_t; eepromError_t eepromInit(void); int eepromWriteCache(uint8_t *ptrData, uint32_t size); //returns number bytes written to cache eepromError_t eepromFlush(void); //flush the cache to flash memory int eepromRead(uint8_t *ptrData, uint32_t size); //returns number of bytes actually read, whcih could be less than size requested #endif /* EEPROM_H_ */ ================================================ FILE: firmware/stepper_nano_zero/fet_driver.cpp ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "fet_driver.h" #include "wiring_private.h" #include "syslog.h" #include "angle.h" #include "Arduino.h" #include "sine.h" #include "nonvolatile.h" #pragma GCC push_options #pragma GCC optimize ("-Ofast") #ifdef NEMA_23_10A_HW #define FET_DRIVER_FREQ (46875UL) //FET PWM pin driver frequency FetDriver *FetDriver::ptrInstance=0; // Wait for synchronization of registers between the clock domains static __inline__ void syncDAC() __attribute__((always_inline, unused)); static void syncDAC() { while (DAC->STATUS.bit.SYNCBUSY == 1) ; } volatile uint32_t coilA_Value=0; /* * The discrete FETs on the NEMA 23 10A board are configured such that each H-bridge has: * IN1 - Input 1 * IN2 - Input 2 * Enable - Enable driver * Isense - current sense * * The truth table for the H-Bridge is: * Enable IN1 IN2 Bridge State * 0 x x floating (FETs off) * 1 0 0 coil shorted to Gnd * 1 0 1 forward * 1 1 0 reverse * 1 1 1 coil shorted to VCC * * For peak current control there is two state (fast decay, and slow decay) * * Fast Decay * When driving coil in forward direction and current peak is reached the fast decay turns * The bridge in the reverse direction. This cause the reverse EMF from coil to charge * capacitors back up and the current on the coil to drop very quickly * * Slow Decay * During this mode the current decay is slower by shorting the coil leads to ground. * This in effect shorts the coil leads and reverse EMF is converted to heat. * * In the Fast Decay mode we reverse the motor, this in effect is trying to drive coil * current in the reverse direction. This in effect reduces current faster than just * shorting the coil out. * * see www.misfittech.net's blog for more information on this subject * */ /* driver code's logic * * This driver code needs not only to control the FETs but also handle the current limits. * * The way the code handles limiting current is by using two comparators internal to * the microprocessor. * * We first use two PWM signals to generate reference voltage for each comparator. * Then when the current sense voltage exceeds this reference voltage an interrupt is * generated. In the interrupt handler we will then set the decay mode as needed. * * It will have to be determined if we will use a fixed time decay mode like the A4954, * or use current as the threshold. There is a lot to do here to maintain quite operation, * that is we need this current control to be running at more than 20khz to be quite. * * Additionally we can use ADC on the current sense for detecting the flyback and * get some idea of the inductance. This can be used for stall dection as well as * auto tuning of some of the driver parameters. */ #pragma GCC push_options #pragma GCC optimize ("-Ofast") #define WAIT_TC16_REGS_SYNC(x) while(x->COUNT16.STATUS.bit.SYNCBUSY); typedef enum { CURRENT_ON = 0, CURRENT_FAST_DECAY = 1, CURRENT_SLOW_DECAY = 2, } CurrentMode_t; typedef enum { COIL_FORWARD =0, COIL_REVERSE =1, COIL_BRAKE =2 } CoilState_t; typedef struct { bool currentIncreasing; //true when we are increasing current CurrentMode_t currentState; //how is bridge driven } BridgeState_t; volatile BridgeState_t BridgeA, BridgeB; #define DAC_MAX (0x01FFL) // Wait for synchronization of registers between the clock domains static __inline__ void syncTCC(Tcc* TCCx) __attribute__((always_inline, unused)); static void syncTCC(Tcc* TCCx) { //int32_t t0=1000; while (TCCx->SYNCBUSY.reg & TCC_SYNCBUSY_MASK) { // t0--; // if (t0==0) // { // break; // } } } static inline void coilA(CoilState_t state) { PIN_GPIO_OUTPUT(PIN_FET_IN1); PIN_GPIO_OUTPUT(PIN_FET_IN2); switch(state){ case COIL_FORWARD: GPIO_HIGH(PIN_FET_IN1); GPIO_LOW(PIN_FET_IN2); break; case COIL_REVERSE: GPIO_HIGH(PIN_FET_IN2); GPIO_LOW(PIN_FET_IN1); break; case COIL_BRAKE: GPIO_LOW(PIN_FET_IN2); GPIO_LOW(PIN_FET_IN1); break; default: ERROR("Not a known state"); break; } } static inline void coilB(CoilState_t state) { PIN_GPIO_OUTPUT(PIN_FET_IN3); PIN_GPIO_OUTPUT(PIN_FET_IN4); switch(state){ case COIL_FORWARD: GPIO_HIGH(PIN_FET_IN3); GPIO_LOW(PIN_FET_IN4); break; case COIL_REVERSE: GPIO_HIGH(PIN_FET_IN4); GPIO_LOW(PIN_FET_IN3); break; case COIL_BRAKE: GPIO_LOW(PIN_FET_IN3); GPIO_LOW(PIN_FET_IN4); break; default: ERROR("Not a known state"); break; } } int FetDriver::coilA_PWM(int32_t value) { int32_t x; // PIN_FET_IN1 (PA15) (5) (TCC0 WO[5], aka ch1) //PIN_FET_IN2 (PA20) (6) (TCC0 WO[6], aka ch2) Tcc* TCCx = TCC0 ; // // if (value==0) // { // GPIO_LOW(PIN_FET_IN1); // GPIO_LOW(PIN_FET_IN2); // PIN_GPIO(PIN_FET_IN1); // PIN_GPIO(PIN_FET_IN2); // return; // } if (value<0) { GPIO_LOW(PIN_FET_IN1); PIN_GPIO(PIN_FET_IN1); PIN_PERIPH(PIN_FET_IN2); //pinPeripheral(PIN_FET_IN2, PIO_TIMER_ALT); //TCC0 WO[7] value=-value; }else { GPIO_LOW(PIN_FET_IN2); PIN_GPIO(PIN_FET_IN2); PIN_PERIPH(PIN_FET_IN1); //pinPeripheral(PIN_FET_IN1, PIO_TIMER_ALT); } #if (F_CPU/FET_DRIVER_FREQ)==1024 x=value & 0x3FF; #else x=MIN(value, (int32_t)(F_CPU/FET_DRIVER_FREQ)); #endif syncTCC(TCCx); TCCx->CC[1].reg = (uint32_t)x; //ch1 == ch5 //IN3 //syncTCC(TCCx); TCCx->CC[2].reg = (uint32_t)x; //ch2 == ch6 //IN4 if (x!=value) { return 1; } return 0; } void FetDriver::coilB_PWM(int32_t value) { //PIN_FET_IN3 (PA21) (7) (TCC0 WO[7], aka ch3) //PIN_FET_IN4 (PA14) (2) (TCC0 WO[4], aka ch0) Tcc* TCCx = TCC0 ; // // if (value==0) // { // GPIO_LOW(PIN_FET_IN3); // GPIO_LOW(PIN_FET_IN4); // PIN_GPIO(PIN_FET_IN3); // PIN_GPIO(PIN_FET_IN4); // return; // } if (value<=0) { GPIO_LOW(PIN_FET_IN3); PIN_GPIO(PIN_FET_IN3); PIN_PERIPH(PIN_FET_IN4); //SET_PIN_PERHERIAL(PIN_FET_IN4, PIO_TIMER_ALT); //TCC0 WO[7] value=-value; }else { GPIO_LOW(PIN_FET_IN4); PIN_GPIO(PIN_FET_IN4); PIN_PERIPH(PIN_FET_IN3); //SET_PIN_PERHERIAL(PIN_FET_IN3, PIO_TIMER_ALT); } #if (F_CPU/FET_DRIVER_FREQ)==1024 value=value & 0x3FF; #else value=MIN(value, (int32_t)(F_CPU/FET_DRIVER_FREQ)); #endif //LOG("value is %d",value); // if (value> 300) //(F_CPU/FET_DRIVER_FREQ)) // { // value= 300; //F_CPU/FET_DRIVER_FREQ; // } syncTCC(TCCx); TCCx->CC[0].reg = (uint32_t)value; //ch0 == ch4 //IN4 //syncTCC(TCCx); TCCx->CC[3].reg = (uint32_t)value; //ch3 == ch7 //IN3 } static void enableTCC0(void) { Tcc* TCCx = TCC0 ; GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TCC0_TCC1 )) ; while ( GCLK->STATUS.bit.SYNCBUSY == 1 ) ; //ERROR("Setting TCC %d %d",ulValue,ulPin); TCCx->CTRLA.reg &= ~TCC_CTRLA_ENABLE; syncTCC(TCCx); // Set TCx as normal PWM TCCx->WAVE.reg |= TCC_WAVE_WAVEGEN_NPWM; syncTCC(TCCx); // Set PER to maximum counter value (resolution : 0xFF) TCCx->PER.reg = F_CPU/FET_DRIVER_FREQ; //set frequency to 100Khz syncTCC(TCCx); // Enable TCCx TCCx->CTRLA.reg |= TCC_CTRLA_ENABLE ; syncTCC(TCCx); //ERROR("Enable TCC0 DONE"); } static void setDAC(uint32_t DAC1, uint32_t DAC2) { TCC1->CC[1].reg = (uint32_t)DAC1; //D9 PA07 - VREF12 syncTCC(TCC1); TCC1->CC[0].reg = (uint32_t)DAC2; //D4 - VREF34 syncTCC(TCC1); } static void setupDAC(void) { Tcc* TCCx = TCC1 ; pinPeripheral(PIN_FET_VREF1, PIO_TIMER_ALT); pinPeripheral(PIN_FET_VREF2, PIO_TIMER_ALT); GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TCC0_TCC1 )) ; while ( GCLK->STATUS.bit.SYNCBUSY == 1 ) ; //ERROR("Setting TCC %d %d",ulValue,ulPin); TCCx->CTRLA.reg &= ~TCC_CTRLA_ENABLE; syncTCC(TCCx); // Set TCx as normal PWM TCCx->WAVE.reg |= TCC_WAVE_WAVEGEN_NPWM; syncTCC(TCCx); // Set TCx in waveform mode Normal PWM TCCx->CC[1].reg = (uint32_t)0; syncTCC(TCCx); TCCx->CC[0].reg = (uint32_t)0; syncTCC(TCCx); // Set PER to maximum counter value (resolution : 0xFFF = 12 bits) // =48e6/2^12=11kHz frequency TCCx->PER.reg = DAC_MAX; syncTCC(TCCx); // Enable TCCx TCCx->CTRLA.reg |= TCC_CTRLA_ENABLE ; syncTCC(TCCx); } /* * The SAMD21 has two analog comparators * COMP_FET_A(A4/PA05) and COMP_FET_B(D9/PA07) are the reference voltages * * ISENSE_FET_A(A3/PA04) and ISENSE_FET_B(D8/PA06) are the current sense * */ /* static void setupComparators(void) { //setup the pins as analog inputs pinPeripheral(COMP_FET_A, PIO_ANALOG); //AIN[1] pinPeripheral(COMP_FET_B, PIO_ANALOG); //AIN[3] pinPeripheral(ISENSE_FET_A, PIO_ANALOG); //AIN[0] pinPeripheral(ISENSE_FET_B, PIO_ANALOG); //AIN[2] //enable the clock for the Analog comparator PM->APBCMASK.reg |= PM_APBCMASK_AC; //enable clock in the power manager //setup the GCLK for the analog and digital clock to the AC GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_AC_ANA )) ; while ( GCLK->STATUS.bit.SYNCBUSY == 1 ) ; GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_AC_DIG )) ; while ( GCLK->STATUS.bit.SYNCBUSY == 1 ) ; //we will drive the CMP0 and CMP1 high when our current is exceeded. // To do this we will set ISense Pins as the non-inverting input AC->CTRLA.reg=0x01; //disable AC_COMPCTRL_ENABLE and reset while ( AC->STATUSB.bit.SYNCBUSY == 1 ) ; AC->CTRLB.reg=0x0; // set start bits low (will not be used) while ( AC->STATUSB.bit.SYNCBUSY == 1 ) ; AC->COMPCTRL[0].reg = AC_COMPCTRL_FLEN_MAJ3_Val | //add a 3 bit majority digital filter AC_COMPCTRL_HYST | //enable hysterisis AC_COMPCTRL_MUXPOS_PIN0 | //non-inverting is AIN[0] AC_COMPCTRL_MUXNEG_PIN1 | //inverting pin is AIN[1] AC_COMPCTRL_INTSEL_RISING | //interrupt on the rising edge (TODO we might want on both edges) AC_COMPCTRL_SPEED_HIGH | AC_COMPCTRL_ENABLE; //set to high speed mode, we don't care about power consumption while ( AC->STATUSB.bit.SYNCBUSY == 1 ) ; AC->COMPCTRL[1].reg = //AC_COMPCTRL_FLEN_MAJ3_Val | //add a 3 bit majority digital filter //AC_COMPCTRL_HYST | //enable hysterisis AC_COMPCTRL_MUXPOS_PIN2 | //non-inverting is AIN[2] AC_COMPCTRL_MUXNEG_PIN3 | //inverting pin is AIN[3] AC_COMPCTRL_INTSEL_RISING | //interrupt on the rising edge (TODO we might want on both edges) AC_COMPCTRL_SPEED_HIGH | //AC_COMPCTRL_SWAP | AC_COMPCTRL_ENABLE; //set to high speed mode, we don't care about power consumption while ( AC->STATUSB.bit.SYNCBUSY == 1 ) ; //enable the comparator AC->CTRLA.reg=AC_CTRLA_ENABLE; while ( AC->STATUSB.bit.SYNCBUSY == 1 ); AC->INTENSET.bit.COMP0=1; AC->INTENSET.bit.COMP1=1; NVIC_EnableIRQ(AC_IRQn); //enable the comparator interrupt } */ static __inline__ void syncADC() __attribute__((always_inline, unused)); static void syncADC() { volatile int32_t t0=100; while ((ADC->STATUS.bit.SYNCBUSY == 1))// && t0>0) { t0--; if (t0>0) { break; } } if (t0<=0) { ERROR("sync ADC timeout"); } } static uint32_t ADCRead(uint32_t ulPin) { uint32_t valueRead = 0; uint32_t gainValue=0; if ( ulPin <= 5 ) // turn '0' -> 'A0' { ulPin += A0 ; } if (ulPin == 6) ulPin = PIN_A6; if (ulPin == 7) ulPin = PIN_A7; pinPeripheral(PIN_A4, PIO_ANALOG); pinPeripheral(ulPin, PIO_ANALOG); syncADC(); ADC->CTRLB.reg = ADC_CTRLB_PRESCALER_DIV32 | // Divide Clock by 512. ADC_CTRLB_RESSEL_12BIT; // 10 bits resolution as default // syncADC(); // ADC->INPUTCTRL.reg = 0; // syncADC(); // ADC->INPUTCTRL.bit.MUXNEG= ADC_INPUTCTRL_MUXNEG_GND;//g_APinDescription[ulPin].ulADCChannelNumber; //ADC_INPUTCTRL_MUXNEG_GND; //ADC_INPUTCTRL_MUXNEG_IOGND; //ADC_INPUTCTRL_MUXNEG_PIN5; // No Negative input (Internal Ground) syncADC(); ADC->INPUTCTRL.bit.MUXPOS = g_APinDescription[ulPin].ulADCChannelNumber;//ADC_INPUTCTRL_MUXPOS_DAC;// g_APinDescription[ulPin].ulADCChannelNumber; // Selection for the positive ADC input syncADC(); ADC->INPUTCTRL.bit.GAIN = 0xF; //0x0F == gain of 1/2 syncADC(); ADC->REFCTRL.reg=ADC_REFCTRL_REFSEL_INTVCC1; //set the ADC reference to 1/2VDDANA syncADC(); ADC->SAMPCTRL.reg=0x02; /* * Bit 1 ENABLE: Enable * 0: The ADC is disabled. * 1: The ADC is enabled. * Due to synchronization, there is a delay from writing CTRLA.ENABLE until the peripheral is enabled/disabled. The * value written to CTRL.ENABLE will read back immediately and the Synchronization Busy bit in the Status register * (STATUS.SYNCBUSY) will be set. STATUS.SYNCBUSY will be cleared when the operation is complete. * * Before enabling the ADC, the asynchronous clock source must be selected and enabled, and the ADC reference must be * configured. The first conversion after the reference is changed must not be used. */ syncADC(); ADC->CTRLA.bit.ENABLE = 0x01; // Enable ADC // Clear the Data Ready flag syncADC(); ADC->INTFLAG.bit.RESRDY = 1; // Start conversion syncADC(); ADC->SWTRIG.bit.START = 1; // wait for conversion to be done while ( ADC->INTFLAG.bit.RESRDY == 0 ); // Waiting for conversion to complete // Clear the Data Ready flag syncADC(); ADC->INTFLAG.bit.RESRDY = 1; // Start conversion again, since The first conversion after the reference is changed must not be used. syncADC(); ADC->SWTRIG.bit.START = 1; while ( ADC->INTFLAG.bit.RESRDY == 0 ); // Waiting for conversion to complete valueRead = ADC->RESULT.reg; // syncADC(); // ADC->CTRLA.bit.ENABLE = 0x00; // Disable ADC // syncADC(); return valueRead; //mapResolution(valueRead, _ADCResolution, _readResolution); } int32_t fastADCRead(uint32_t ulPin) { int32_t valueRead; if ( ulPin <= 5 ) // turn '0' -> 'A0' { ulPin += A0 ; } if (ulPin == 6) ulPin = PIN_A6; if (ulPin == 7) ulPin = PIN_A7; syncADC(); ADC->INPUTCTRL.bit.MUXPOS = g_APinDescription[ulPin].ulADCChannelNumber;//ADC_INPUTCTRL_MUXPOS_DAC;// g_APinDescription[ulPin].ulADCChannelNumber; // Selection for the positive ADC input // Clear the Data Ready flag syncADC(); ADC->INTFLAG.bit.RESRDY = 1; // Start conversion again, since The first conversion after the reference is changed must not be used. syncADC(); ADC->SWTRIG.bit.START = 1; while ( ADC->INTFLAG.bit.RESRDY == 0 ); // Waiting for conversion to complete valueRead = ADC->RESULT.reg; return valueRead; } int32_t GetMeanAdc(uint16_t pin, uint16_t samples) { int32_t i=0; int32_t mean=0; int32_t adc; while (i 'A0' { ulPin += A0 ; } if (ulPin == 6) ulPin = PIN_A6; if (ulPin == 7) ulPin = PIN_A7; pinPeripheral(PIN_A4, PIO_ANALOG); pinPeripheral(ulPin, PIO_ANALOG); syncADC(); ADC->CTRLB.reg = ADC_CTRLB_PRESCALER_DIV64 | // Divide Clock by 512. ADC_CTRLB_RESSEL_12BIT; // 10 bits resolution as default // syncADC(); // ADC->INPUTCTRL.reg = 0; // syncADC(); // ADC->INPUTCTRL.bit.MUXNEG= ADC_INPUTCTRL_MUXNEG_GND;//g_APinDescription[ulPin].ulADCChannelNumber; //ADC_INPUTCTRL_MUXNEG_GND; //ADC_INPUTCTRL_MUXNEG_IOGND; //ADC_INPUTCTRL_MUXNEG_PIN5; // No Negative input (Internal Ground) syncADC(); ADC->INPUTCTRL.bit.MUXPOS = g_APinDescription[ulPin].ulADCChannelNumber;//ADC_INPUTCTRL_MUXPOS_DAC;// g_APinDescription[ulPin].ulADCChannelNumber; // Selection for the positive ADC input syncADC(); ADC->INPUTCTRL.bit.INPUTSCAN=0; // // switch (gain) // { // case 1: // gainValue=ADC_INPUTCTRL_GAIN_1X_Val; // break; // case 2: // gainValue=ADC_INPUTCTRL_GAIN_2X_Val; // break; // case 4: // gainValue=ADC_INPUTCTRL_GAIN_4X_Val; // break; // case 8: // gainValue=ADC_INPUTCTRL_GAIN_8X_Val; // break; // case 16: // gainValue=ADC_INPUTCTRL_GAIN_16X_Val; // break; // default: // gainValue=ADC_INPUTCTRL_GAIN_1X_Val; // break; // } // syncADC(); // ADC->CTRLB.bit.DIFFMODE = 0; //set to differential mode syncADC(); ADC->INPUTCTRL.bit.GAIN = 0xF; //0x0F == gain of 1/2 // syncADC(); // ADC->AVGCTRL.reg=5; syncADC(); ADC->REFCTRL.reg=ADC_REFCTRL_REFSEL_INTVCC1; //set the ADC reference to 1/2VDDANA syncADC(); ADC->SAMPCTRL.reg=0x0F; /* * Bit 1 ENABLE: Enable * 0: The ADC is disabled. * 1: The ADC is enabled. * Due to synchronization, there is a delay from writing CTRLA.ENABLE until the peripheral is enabled/disabled. The * value written to CTRL.ENABLE will read back immediately and the Synchronization Busy bit in the Status register * (STATUS.SYNCBUSY) will be set. STATUS.SYNCBUSY will be cleared when the operation is complete. * * Before enabling the ADC, the asynchronous clock source must be selected and enabled, and the ADC reference must be * configured. The first conversion after the reference is changed must not be used. */ syncADC(); ADC->CTRLA.bit.ENABLE = 0x01; // Enable ADC //Setup up for ISR ADC->INTENCLR.reg=0x0F; ADC->INTENSET.bit.RESRDY=1; NVIC_SetPriority(ADC_IRQn, 3); // Clear the Data Ready flag ADC->INTFLAG.bit.RESRDY = 1; // Start conversion syncADC(); ADC->SWTRIG.bit.START = 1; // Start conversion again, since The first conversion after the reference is changed must not be used. //syncADC(); //ADC->SWTRIG.bit.START = 1; //ADC->INTENSET.bit.RESRDY=1; // // Store the value while ( ADC->INTFLAG.bit.RESRDY == 0 ); // Waiting for conversion to complete // valueRead = ADC->RESULT.reg; // // syncADC(); // ADC->CTRLA.bit.ENABLE = 0x00; // Disable ADC // syncADC(); uint32_t reg; syncADC(); reg=ADC->CTRLA.reg; LOG("ADC CTRLA 0x%04X",reg); syncADC(); reg=ADC->REFCTRL.reg; LOG("ADC REFCTRL 0x%04X",reg); syncADC(); reg=ADC->AVGCTRL.reg; LOG("ADC AVGCTRL 0x%04X",reg); syncADC(); reg=ADC->SAMPCTRL.reg; LOG("ADC SAMPCTRL 0x%04X",reg); syncADC(); reg=ADC->CTRLB.reg; LOG("ADC CTRLB 0x%04X",reg); syncADC(); reg=ADC->INPUTCTRL.reg; LOG("ADC INPUTCTRL 0x%04X",reg); syncADC(); reg=ADC->GAINCORR.reg; LOG("ADC GAINCORR 0x%04X",reg); syncADC(); reg=ADC->OFFSETCORR.reg; LOG("ADC OFFSETCORR 0x%04X",reg); syncADC(); reg=ADC->CALIB.reg; LOG("ADC CALIB 0x%04X",reg); // Enable InterruptVector NVIC_EnableIRQ(ADC_IRQn); // Clear the Data Ready flag ADC->INTFLAG.bit.RESRDY = 1; // Start conversion syncADC(); ADC->SWTRIG.bit.START = 1; return 0;//valueRead; //mapResolution(valueRead, _ADCResolution, _readResolution); } void ADC_Handler(void) { uint16_t channel; uint16_t value; static uint16_t lastChannel=0; //static int state=0; YELLOW_LED(1); //state=(state+1)&0x01; value=ADC->RESULT.reg; channel=ADC->INPUTCTRL.bit.MUXPOS;// + ADC->INPUTCTRL.bit.INPUTOFFSET; //LOG("channel is %d %d", lastChannel,value); FetDriver::ADC_Callback(lastChannel,value); lastChannel=channel; if (channel == g_APinDescription[ISENSE_FET_B].ulADCChannelNumber) { syncADC(); ADC->INPUTCTRL.bit.MUXPOS = g_APinDescription[ISENSE_FET_A].ulADCChannelNumber; } else { syncADC(); ADC->INPUTCTRL.bit.MUXPOS = g_APinDescription[ISENSE_FET_B].ulADCChannelNumber; } //LOG("channel is %d %d", ADC->INPUTCTRL.bit.MUXPOS ,value); //syncADC(); ADC->INTFLAG.bit.RESRDY = 1; //syncADC(); ADC->SWTRIG.bit.START = 1; YELLOW_LED(0); //state=(state+1)&0x01; } void FetDriver::ADC_Callback(uint16_t channel, uint16_t value) { //ptrInstance->begin(); if (ptrInstance==NULL) { return; } ptrInstance->ctrl_update(channel,value); } void FetDriver::ctrl_update(uint16_t channel, uint16_t value) { int32_t x,error; if (channel == g_APinDescription[ISENSE_FET_A].ulADCChannelNumber) { static int32_t iterm; x=value-coilA_Zero; error=coilA_SetPoint-x; coilA_error=x; iterm+=error; x=error*15;//+iterm/10; x=x/1024; coilA_value+=x; // if (error>0) // coilA_value++; // else // coilA_value--; // // coilA_value+= iterm/1024; coilA_PWM(coilA_value); // if (error>0) // { // coilA(COIL_FORWARD); // }else // { // coilA(COIL_BRAKE); // } } if (channel == g_APinDescription[ISENSE_FET_B].ulADCChannelNumber) { static int32_t itermB; x=value-coilB_Zero; error=coilB_SetPoint-x; coilB_error=error; x=error*15+itermB/10; x=x/1024; coilB_value+=x; //coilB_PWM(coilB_value); // if (error>0) // { // coilB(COIL_FORWARD); // }else // { // coilB(COIL_BRAKE); // } } return; //LOG("channel is %d %d", channel,value); if (channel == g_APinDescription[ISENSE_FET_B].ulADCChannelNumber) { static int32_t ib=0; static int32_t meanb=0; int32_t error,u,de; static int32_t itermb=0;; static int32_t lastErrorb=0; adc=value; x=value-coilB_Zero; if (coilB_Zero==-1) { if(ib0) // u=1; // else // u=-1; de=error-lastErrorb; lastErrorb=error; if (ABS(error)<50) { itermb=itermb+1*error; }else { itermb=0; } u=error*320 + itermb +100*de; u=u/16382; if (u>10) u=10; if (u<-10) u=-10; coilB_value+=u;; //LOG("coil value %d, %d",coilB_value,u); coilB_value=MIN(coilB_value,(int32_t)(F_CPU/FET_DRIVER_FREQ)); coilB_value=MAX(coilB_value,(int32_t)(-(F_CPU/FET_DRIVER_FREQ))); coilB_PWM(coilB_value); return; } if (channel == g_APinDescription[ISENSE_FET_A].ulADCChannelNumber) { static int32_t i=0; static int32_t mean=0; int32_t error,u,de; static int32_t iterm=0;; static int32_t lastError=0; x=value-coilA_Zero; if (coilA_Zero==-1) { if(i10) u=10; if (u<-10) u=-10; coilA_value+=u; //LOG("coil value %d, %d",coilB_value,u); coilA_value=MIN(coilA_value,(int32_t)(F_CPU/FET_DRIVER_FREQ)); coilA_value=MAX(coilA_value,(int32_t)(-(F_CPU/FET_DRIVER_FREQ))); coilA_PWM(coilA_value); return; } } void FetDriver::measureCoilB_zero(void) { coilB_Zero=GetMeanAdc(ISENSE_FET_B,FET_DRIVER_NUM_ZERO_AVG); LOG("Coil B Zero is %d",coilB_Zero); return; } void FetDriver::measureCoilA_zero(void) { coilA_Zero=GetMeanAdc(ISENSE_FET_A,FET_DRIVER_NUM_ZERO_AVG); LOG("Coil A Zero is %d",coilA_Zero); return; } void FetDriver::CalTableA(int32_t maxMA) { int16_t table2[512]={0}; int32_t pwm=0; int32_t mA=0; int i; while (mA>-maxMA) { int32_t adc; //LOG("Running %d",pwm); adc=GetMeanAdc(ISENSE_FET_A,10)-coilA_Zero; //LOG("ADC is %d",adc); mA=FET_ADC_TO_MA(adc); //LOG("mA is %d, ADC %d",mA,ADC); pwm=pwm-1; if (coilA_PWM(pwm)==1) { ERROR("CoilA PWM maxed"); break; } //delay(5); } //LOG("First PWM is %d %d",pwm, mA); PWM_Table_A[0]=pwm; table2[0]=mA; i=1; while (i<512) { int32_t adc; adc=GetMeanAdc(ISENSE_FET_A,10)-coilA_Zero; mA=FET_ADC_TO_MA(adc); //LOG("PWM %d, %d %d",i,mA,pwm); if (mA>((i-255)*maxMA/256)) { PWM_Table_A[i]=pwm; table2[i]=mA; i++; }else { pwm=pwm+1; coilA_PWM(pwm); //delay(5); } } coilA_PWM(0); Serial.print("\n\r TABLE A \n\r");; for (i=0; i<512; i++) { Serial.print(PWM_Table_A[i]); Serial.print(","); } Serial.print("\n\r"); Serial.print("\n\r"); for (i=0; i<512; i++) { Serial.print(table2[i]); Serial.print(","); } Serial.print("\n\r"); } void FetDriver::CalTableB(int32_t maxMA) { int16_t table2[512]={0}; int32_t pwm=0; int32_t mA=0; int i; while (mA>-maxMA) { int32_t adc; adc=GetMeanAdc(ISENSE_FET_B,10)-coilB_Zero; mA=FET_ADC_TO_MA(adc); pwm=pwm-1; coilB_PWM(pwm); //delay(5); } //LOG("First PWM is %d %d",pwm, mA); PWM_Table_B[0]=pwm; table2[0]=mA; i=1; while (i<512) { int32_t adc; adc=GetMeanAdc(ISENSE_FET_B,10)-coilB_Zero; mA=FET_ADC_TO_MA(adc); //LOG("PWM %d, %d %d",i,mA,pwm); if (mA>((i-255)*maxMA/256)) { PWM_Table_B[i]=pwm; table2[i]=mA; i++; }else { pwm=pwm+1; coilB_PWM(pwm); //delay(5); } } coilB_PWM(0); Serial.print("\n\r TABLE B \n\r"); for (i=0; i<512; i++) { Serial.print(PWM_Table_B[i]); Serial.print(","); } Serial.print("\n\r"); Serial.print("\n\r"); for (i=0; i<512; i++) { Serial.print(table2[i]); Serial.print(","); } Serial.print("\n\r"); } void FetDriver::begin() { int16_t i; uint32_t t0; int32_t i0=0; uint32_t zero,x,k; int32_t max_mA; ptrInstance=(FetDriver *)this; //enable 1V reference SYSCTRL->VREF.reg |= SYSCTRL_VREF_BGOUTEN; ADCRead(ISENSE_FET_A); //setup the adc with fast timing //nt32_t min,max,avg; //Setup the FET inputs GPIO_OUTPUT(PIN_FET_IN1); GPIO_OUTPUT(PIN_FET_IN2); GPIO_OUTPUT(PIN_FET_IN3); GPIO_OUTPUT(PIN_FET_IN4); GPIO_OUTPUT(PIN_FET_ENABLE); GPIO_HIGH(PIN_FET_ENABLE); //setup the Pin peripheral setting correct pinPeripheral(PIN_FET_IN2, PIO_TIMER_ALT); //TCC0 WO[7] pinPeripheral(PIN_FET_IN1, PIO_TIMER_ALT); SET_PIN_PERHERIAL(PIN_FET_IN4, PIO_TIMER_ALT); //TCC0 WO[7] SET_PIN_PERHERIAL(PIN_FET_IN3, PIO_TIMER_ALT); pinPeripheral(ISENSE_FET_A, PIO_ANALOG); //AIN[0] pinPeripheral(ISENSE_FET_B, PIO_ANALOG); //AIN[2] enableTCC0(); coilB_PWM(0); coilA_PWM(0); delay(100); measureCoilA_zero(); measureCoilB_zero(); // ADCStart(ISENSE_FET_A); //return; // while(1) // { // LOG("tick %d %d", TCC0->CC[1].reg,TCC0->CC[0].reg); // LOG("%d %d",coilA_error,coilB_error); // } // uint16_t data[1000]; // ADCRead(ISENSE_FET_A); // // t0=micros(); // GPIO_LOW(PIN_FET_IN2); // GPIO_GPIO_OUTPUT(PIN_FET_IN2); // GPIO_HIGH(PIN_FET_IN1); // GPIO_GPIO_OUTPUT(PIN_FET_IN1); // // for (i=0; i<1000; i++) // { // data[i]=fastADCRead(ISENSE_FET_A); // } // coilA_PWM(0); // // t0=micros()-t0; // // Serial.print("\n\r Step response \n\r"); // Serial.print(t0); // // Serial.print("\n\r Step response \n\r"); // for (i=0; i<1000; i++) // { // Serial.print(data[i]); // Serial.print(","); // } // Serial.print("\n\r"); // // while(1) // { // // } max_mA=NVM->motorParams.currentMa; WARNING("Maximum current is %d",max_mA); if (NVM->motorParams.parametersVaild && max_mA!=0) { CalTableA(max_mA); CalTableB(max_mA); }else { WARNING("NVM is not correct default to 1500mA"); max_mA=1500; WARNING("calibrating phase A %dmA",max_mA); CalTableA(max_mA); WARNING("calibrating phase B %dmA",max_mA); CalTableB(max_mA); } return; //coilA_PWM(100); x=0; while(1) { //LOG("Trying to move motor %d",x); delay(1); move(x, 1000); x=x+256; } return; // all done // //set DAC to mid level // syncDAC(); // DAC->DATA.reg = 0x2FF; // DAC on 10 bits. // syncDAC(); // DAC->CTRLA.bit.ENABLE = 0x01; // Enable DAC // syncDAC(); // WARNING("Running ADC ISR test"); // ADCRead(3); //LOG("coil value %d %d",coilB_value,coilB_Zero); i=47; x=0; while(1) { int32_t adc,value; int32_t mA; if (0) { coilB_PWM(i); delayMicroseconds(1000); //LOG("%d",i); //if (i==47 ) delay(50); if (x==0) { i=i+1; if (i>200) { x=1; //i=47; } } if (x == 1) { i=i-1; if (i<47) { x=2; i=-47; } } if (x == 2) { i=i-1; if (i<-200) { x=3; } } if (x == 3) { i=i+1; if (i>-47) { x=0; i=47; } } }else { adc=ADCRead(ISENSE_FET_A); value=adc-coilA_Zero; mA=(value*2206)/1000; // //delay(500); //NVIC_DisableIRQ(ADC_IRQn); LOG("coil A %d %d, %d ",coilA_Zero, value, mA ); } // NVIC_DisableIRQ(ADC_IRQn); // // NVIC_EnableIRQ(ADC_IRQn); } x=0; for (k=0; k<128; k++) { x=x+ADCRead(8); } zero=x/32; //setupDAC(); //setDAC(5,5); enableTCC0(); //setupComparators(); ERROR("Enable PWM"); pinPeripheral(PIN_FET_IN4, PIO_TIMER_ALT); //TCC0 WO[7] // // for (i=40; i<55; i++) // { // coilB_PWM(i); // delay(200); // ADCRead(8,16); // LOG("COMP is 0x%04X ", AC->STATUSA.reg); // LOG("%d ADC is %d ",i, ADCRead(8,16)); // YELLOW_LED(0); // } //ADCRead(8,16); //AC->INTENCLR.bit.COMP1=1; //coilA_Value=0; coilB_PWM(0); i=47; coilB_PWM(i); while(1) { int32_t x=0,k; coilB_PWM(i); delay(3000); for (k=0; k<128; k++) { x=x+ADCRead(8); } x=x/32; LOG("%d %d %d",i,x-zero,(x*3300)/(4096*4)); LOG("%d",((x-zero)*5517)/10000); i=i+20; if (i>140) { i=47; } } /* AC->INTENSET.bit.COMP1=1; while(1) { AC->INTENCLR.bit.COMP1=1; YELLOW_LED(0); AC->INTENSET.bit.COMP1=1; if ((millis()-t0)>10000) { int j; min=0xFFFFFF; max=(int16_t)ADCRead(8,16); avg=0; j=0; t0=micros(); while( (micros()-t0)<1000) { int16_t valueRead; valueRead = ADCRead(8,16); if (valueReadmax) { max=valueRead; } avg+=valueRead; j++; } int32_t ma,x,duty; duty=i-45; duty=(1000*duty)/(F_CPU/FET_DRIVER_FREQ); LOG("min %d max %d, avg %d j %d, %d", min, max, (avg*10)/j, j,(avg*10)/j*(1000-duty)/1000); x=(avg*10)/j*(1000-duty)/1000; x=(x*600)/1000+200; LOG("mA %d\n\r",x); if (i<150) { i=100; }else { i=45; } LOG("COMP is 0x%04X ", AC->STATUSA.reg); LOG("%d ADC is %d %d",i, ADCRead(8,16),coilA_Value); t0=millis(); AC->INTENCLR.bit.COMP1=1; coilA_Value=0; coilB_PWM(i); AC->INTENSET.bit.COMP1=1; } } */ return; //setup the PWM for current on the A4954, set for low current digitalWrite(PIN_A4954_VREF12,LOW); digitalWrite(PIN_A4954_VREF34,LOW); pinMode(PIN_A4954_VREF34, OUTPUT); pinMode(PIN_A4954_VREF12, OUTPUT); enabled=true; lastStepMicros=0; forwardRotation=true; enableTCC0(); setupDAC(); // // WARNING("Setting DAC for 500mA output"); // setDAC((int32_t)((int64_t)1000*(DAC_MAX))/3300,(int32_t)((int64_t)1000*(DAC_MAX))/3300); // bridge1(0); // bridge2(0); // while(1) // { // // } return; } int32_t FetDriver::getCoilB_mA(void) { int32_t adc,ret; //fastADCRead(ISENSE_FET_B); adc=(int32_t)fastADCRead(ISENSE_FET_B); ret=FET_ADC_TO_MA(adc-coilB_Zero); //LOG("coilb %d %d",adc,ret); return ret; } int32_t FetDriver::getCoilA_mA(void) { int32_t adc,ret; //fastADCRead(ISENSE_FET_A); adc=(int32_t)fastADCRead(ISENSE_FET_A); ret=FET_ADC_TO_MA(adc-coilA_Zero); //LOG("coila %d %d",adc,ret); return ret; } //this is precise move and modulo of A4954_NUM_MICROSTEPS is a full step. // stepAngle is in A4954_NUM_MICROSTEPS units.. // The A4954 has no idea where the motor is, so the calling function has to // to tell the A4954 what phase to drive motor coils. // A4954_NUM_MICROSTEPS is 256 by default so stepAngle of 1024 is 360 degrees // Note you can only move up to +/-A4954_NUM_MICROSTEPS from where you // currently are. int32_t FetDriver::move(int32_t stepAngle, uint32_t mA) { uint16_t angle; int32_t cos,sin; int32_t dacSin,dacCos; int32_t dacSin_mA,dacCos_mA; int32_t maxMa; static int32_t last_dacSin_mA=0,last_dacCos_mA=0;; if (enabled == false) { WARNING("FET Driver disabled"); //turn the current off to FETs coilA_PWM(0); coilB_PWM(0); //float the FET outputs by disabling FET driver. GPIO_LOW(PIN_FET_ENABLE); return stepAngle; } GPIO_HIGH(PIN_FET_ENABLE); maxMa=NVM->motorParams.currentMa; if (maxMa==0) { maxMa=2200; } //WARNING("move %d %d",stepAngle,mA); //handle roll overs, could do with modulo operator //stepAngle=stepAngle%SINE_STEPS; // while (stepAngle<0) // { // stepAngle=stepAngle+SINE_STEPS; // } // while (stepAngle>=SINE_STEPS) // { // stepAngle=stepAngle-SINE_STEPS; // } //figure out our sine Angle // note our SINE_STEPS is 4x of microsteps for a reason //angle=(stepAngle+(SINE_STEPS/8)) % SINE_STEPS; angle=(stepAngle) % SINE_STEPS; //calculate the sine and cosine of our angle sin=sine(angle); cos=cosine(angle); //if we are reverse swap the sign of one of the angels if (false == forwardRotation) { cos=-cos; } //LOG("sin/cos %d %d %d", sin,cos,angle); //scale sine result by current(mA) dacSin_mA=((int32_t)mA*(int32_t)(sin))/SINE_MAX; //scale cosine result by current(mA) dacCos_mA=((int32_t)mA*(int32_t)(cos))/SINE_MAX; coilA_SetPoint=FET_MA_TO_ADC(dacSin_mA); coilB_SetPoint=FET_MA_TO_ADC(dacCos_mA); //LOG("sin/cos %d %d", dacSin,dacCos); //convert value into 12bit DAC scaled to 3300mA max dacSin=(int32_t)((int64_t)dacSin_mA*(255))/maxMa; //convert value into 12bit DAC scaled to 3300mA max dacCos=(int32_t)((int64_t)dacCos_mA*(255))/maxMa; //LOG("sin/cos %d %d", dacSin,dacCos); //limit the table index to +/-255 dacCos=MIN(dacCos,(int32_t)255); dacCos=MAX(dacCos,(int32_t)-255); dacSin=MIN(dacSin,(int32_t)255); dacSin=MAX(dacSin,(int32_t)-255); if ((dacSin_mA-last_dacSin_mA)>200) { GPIO_LOW(PIN_FET_IN2); PIN_GPIO_OUTPUT(PIN_FET_IN2); GPIO_HIGH(PIN_FET_IN1); PIN_GPIO_OUTPUT(PIN_FET_IN1); }else if ((dacSin_mA-last_dacSin_mA)<-200) { GPIO_HIGH(PIN_FET_IN2); PIN_GPIO_OUTPUT(PIN_FET_IN2); GPIO_LOW(PIN_FET_IN1); PIN_GPIO_OUTPUT(PIN_FET_IN1); } if ((dacCos_mA-last_dacCos_mA)>200) { GPIO_LOW(PIN_FET_IN4); PIN_GPIO_OUTPUT(PIN_FET_IN4); GPIO_HIGH(PIN_FET_IN3); PIN_GPIO_OUTPUT(PIN_FET_IN3); }else if ((dacCos_mA-last_dacCos_mA)<-200) { GPIO_HIGH(PIN_FET_IN4); PIN_GPIO_OUTPUT(PIN_FET_IN4); GPIO_LOW(PIN_FET_IN3); PIN_GPIO_OUTPUT(PIN_FET_IN3); } delayMicroseconds(20); last_dacSin_mA=dacSin_mA; last_dacCos_mA=dacCos_mA; // YELLOW_LED(1); // uint32_t t0=micros(); // int done=0; // int32_t a,b; // a=FET_MA_TO_ADC(dacSin_mA); // b=FET_MA_TO_ADC(dacCos_mA); // while ((micros()-t0)<20 && done!=0x03) // { // if ( (fastADCRead(ISENSE_FET_A)-a)FET_MA_TO_ADC(200)) // { // GPIO_HIGH(PIN_FET_IN2); // PIN_GPIO_OUTPUT(PIN_FET_IN2); // GPIO_LOW(PIN_FET_IN1); // PIN_GPIO_OUTPUT(PIN_FET_IN1); // done |=0x01; // } // if ((fastADCRead(ISENSE_FET_B)-b)FET_MA_TO_ADC(200)) // { // GPIO_HIGH(PIN_FET_IN4); // PIN_GPIO_OUTPUT(PIN_FET_IN4); // GPIO_LOW(PIN_FET_IN3); // PIN_GPIO_OUTPUT(PIN_FET_IN3); // done |=0x02; // } // // } // // YELLOW_LED(0); //LOG("sin/cos %d %d", dacSin,dacCos); //loop up the current from table and set the PWM coilA_PWM(PWM_Table_A[dacSin+255]); coilB_PWM(PWM_Table_B[dacCos+255]); lastStepMicros=micros(); return stepAngle; } #pragma GCC pop_options //fast optimization #endif //NEMA_23_10A_HW #pragma GCC pop_options ================================================ FILE: firmware/stepper_nano_zero/fet_driver.h ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef FET_DRIVER_H_ #define FET_DRIVER_H_ #include #include "board.h" #include "angle.h" #include "sine.h" #ifdef NEMA_23_10A_HW #define FET_DRIVER_NUM_MICROSTEPS (SINE_STEPS/4) //number of steps to use for microstepping, default is 256 #define FET_DRIVER_NUM_ZERO_AVG (100) #define FET_ADC_TO_MA(x) (((x)*2537)/1000) #define FET_MA_TO_ADC(x) (((x)*1000)/2537) //prvent someone for making a mistake with the code #if ((FET_DRIVER_NUM_MICROSTEPS*4) != SINE_STEPS) #error "SINE_STEPS must be 4x of Micro steps for the move function" #endif /* * When it comes to the stepper driver if we use angles * we will always have a rounding error. For example * a 0-65536(360) angle for 1.8 degree step is 327.68 so * if you increment 200 of these as 327 you have a 13.6 error * after one rotation. * If you use floating point the effect is the same but takes longer. * * The only error-less accumulation system is to use native units, ie full * steps and microsteps. * */ class FetDriver { static FetDriver *ptrInstance; private: uint32_t lastStepMicros; // time in microseconds that last step happened int32_t PWM_Table_B[512]; int32_t PWM_Table_A[512]; bool forwardRotation=true; volatile bool enabled=true; volatile int32_t adc; volatile int32_t coilB_value=0; volatile int32_t coilB_Zero=-1; volatile int32_t coilB_SetPoint=100; volatile int32_t coilB_error=0; volatile int32_t coilA_value=0; volatile int32_t coilA_Zero=-1; volatile int32_t coilA_SetPoint=200; volatile int32_t coilA_error=0; void ctrl_update(uint16_t channel, uint16_t value); void measureCoilB_zero(void); void measureCoilA_zero(void); void CalTableB(int32_t maxMA); void CalTableA(int32_t maxMA); int coilA_PWM(int32_t value); void coilB_PWM(int32_t value); int32_t getCoilB_mA(void); int32_t getCoilA_mA(void); public: static void ADC_Callback(uint16_t channel, uint16_t value); void begin(void); //moves motor where the modulo of A4954_NUM_MICROSTEPS is a full step. int32_t move(int32_t stepAngle, uint32_t mA); uint32_t microsSinceStep(void) {return micros()-lastStepMicros;}; void setRotationDirection(bool forward) {forwardRotation=forward;}; void enable(bool enable) {enabled=enable;}; void limitCurrent(uint8_t x) {return;}; }; #endif //#ifdef NEMA_23_10A_HW #endif /* FET_DRIVER_H_ */ ================================================ FILE: firmware/stepper_nano_zero/ftoa.cpp ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "board.h" #include "ftoa.h" /******************************************************************* * FUNCTION: ftoa * AUTHOR = TRAMPAS STERN * FILE = strio.c * DATE = 2/6/2003 4:27:14 PM * * PARAMETERS: long,*str, int count * * DESCRIPTION: Convets an float to string * format 'f', 'E', or 'e' * * * RETURNS: * * NOTE this code was found on the web and modified to actually work *******************************************************************/ int ftoa (float x, char *str, char prec, char format) { int ie, i, k, ndig, fstyle; double y; char *start; start=str; //based on percission set number digits ndig=prec+1; if (prec<0) ndig=7; if (prec>22) ndig=23; fstyle = 0; //exponent 'e' if (format == 'f' || format == 'F') fstyle = 1; //normal 'f' if (format=='g' || format=='G') fstyle=2; ie = 0; /* if x negative, write minus and reverse */ if ( x < 0) { *str++ = '-'; x = -x; } //if (x<0.0) then increment by 10 till betwen 1.0 and 10.0 if (x!=0.0) { while (x < 1.0) { x =x* 10.0; ie--; } } //if x>10 then let's shift it down while (x >= 10.0) { x = x*(1.0/10.0); ie++; } if (ABS(ie)>MAX_MANTISA) { if (fstyle==1) { fstyle=0; format='e'; //ie=2; } } /* in f format, number of digits is related to size */ if (fstyle) ndig =ndig + ie; if(prec==0 && ie>ndig && fstyle) { ndig=ie; } /* round. x is between 1 and 10 and ndig will be printed to right of decimal point so rounding is ... */ y=1; for (i = 1; i < ndig; i++) //find lest significant digit y = y *(1.0/10.0); //multiply by 1/10 is faster than divides x = x+ y *(1.0/2.0); //add rounding /* repair rounding disasters */ if (x >= 10.0) { x = 1.0; ie++; ndig++; } //check and see if the number is less than 1.0 if (fstyle && ie<0) { *str++ = '0'; if (prec!=0) *str++ = '.'; if (ndig < 0) ie = ie-ndig; /* limit zeros if underflow */ for (i = -1; i > ie; i--) *str++ = '0'; } //for each digit for (i=0; i < ndig; i++) { float b; k = x; //k = most significant digit *str++ = k + '0'; //output the char representation if (((!fstyle && i==0) || (fstyle && i==ie)) && prec!=0) *str++ = '.'; //output a decimal point b=(float)k; //multiply by 10 before subtraction to remove //errors from limited number of bits in float. b=b*10.0; x=x*10.0; x =x - b; //subtract k from x //b=x+b; //x =x* 10.0; //get next digit } /* now, in estyle, put out exponent if not zero */ if (!fstyle && ie != 0) { *str++ = format; if (ie < 0) //if number has negative exponent { ie = -ie; *str++ = '-'; } //now we need to convert the exponent to string for (k=1000; k>ie; k=k/10); //find the decade of exponent for (; k > 0; k=k/10) { char t; t=DIV(ie,k); *str++ = t + '0'; ie = ie -(t*k); } } *str++ = '\0'; return (str-start); //return string length } ================================================ FILE: firmware/stepper_nano_zero/ftoa.h ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef FTOA_H_ #define FTOA_H_ #define MAX_MANTISA (1000) int ftoa (float x, char *str, char prec, char format); #endif /* FTOA_H_ */ ================================================ FILE: firmware/stepper_nano_zero/gfxfont.h ================================================ // Font structures for newer Adafruit_GFX (1.1 and later). // Example fonts are included in 'Fonts' directory. // To use a font in your Arduino sketch, #include the corresponding .h // file and pass address of GFXfont struct to setFont(). Pass NULL to // revert to 'classic' fixed-space bitmap font. #ifndef _GFXFONT_H_ #define _GFXFONT_H_ typedef struct { // Data stored PER GLYPH uint16_t bitmapOffset; // Pointer into GFXfont->bitmap uint8_t width, height; // Bitmap dimensions in pixels uint8_t xAdvance; // Distance to advance cursor (x axis) int8_t xOffset, yOffset; // Dist from cursor pos to UL corner } GFXglyph; typedef struct { // Data stored for FONT AS A WHOLE: uint8_t *bitmap; // Glyph bitmaps, concatenated GFXglyph *glyph; // Glyph array uint8_t first, last; // ASCII extents uint8_t yAdvance; // Newline distance (y axis) } GFXfont; #endif // _GFXFONT_H_ ================================================ FILE: firmware/stepper_nano_zero/glcdfont.c ================================================ // This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. // See gfxfont.h for newer custom bitmap font info. #ifndef FONT5X7_H #define FONT5X7_H #ifdef __AVR__ #include #include #elif defined(ESP8266) #include #else #define PROGMEM #endif // Standard ASCII 5x7 font static const unsigned char font[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, 0x18, 0x3C, 0x18, 0x00, 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, 0x18, 0x24, 0x18, 0x00, 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x26, 0x29, 0x79, 0x29, 0x26, 0x40, 0x7F, 0x05, 0x05, 0x07, 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, 0x66, 0x89, 0x95, 0x6A, 0x60, 0x60, 0x60, 0x60, 0x60, 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x08, 0x04, 0x7E, 0x04, 0x08, 0x10, 0x20, 0x7E, 0x20, 0x10, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x30, 0x38, 0x3E, 0x38, 0x30, 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x23, 0x13, 0x08, 0x64, 0x62, 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x80, 0x70, 0x30, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x60, 0x60, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x72, 0x49, 0x49, 0x49, 0x46, 0x21, 0x41, 0x49, 0x4D, 0x33, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x27, 0x45, 0x45, 0x45, 0x39, 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x41, 0x21, 0x11, 0x09, 0x07, 0x36, 0x49, 0x49, 0x49, 0x36, 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x41, 0x22, 0x14, 0x08, 0x02, 0x01, 0x59, 0x09, 0x06, 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x3E, 0x41, 0x41, 0x51, 0x73, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x7F, 0x08, 0x14, 0x22, 0x41, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x26, 0x49, 0x49, 0x49, 0x32, 0x03, 0x01, 0x7F, 0x01, 0x03, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x63, 0x14, 0x08, 0x14, 0x63, 0x03, 0x04, 0x78, 0x04, 0x03, 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x41, 0x41, 0x41, 0x7F, 0x04, 0x02, 0x01, 0x02, 0x04, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x03, 0x07, 0x08, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x7F, 0x28, 0x44, 0x44, 0x38, 0x38, 0x44, 0x44, 0x44, 0x28, 0x38, 0x44, 0x44, 0x28, 0x7F, 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x08, 0x7E, 0x09, 0x02, 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x44, 0x7D, 0x40, 0x00, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, 0x7C, 0x04, 0x78, 0x04, 0x78, 0x7C, 0x08, 0x04, 0x04, 0x78, 0x38, 0x44, 0x44, 0x44, 0x38, 0xFC, 0x18, 0x24, 0x24, 0x18, 0x18, 0x24, 0x24, 0x18, 0xFC, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x48, 0x54, 0x54, 0x54, 0x24, 0x04, 0x04, 0x3F, 0x44, 0x24, 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x44, 0x28, 0x10, 0x28, 0x44, 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x41, 0x36, 0x08, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x1E, 0xA1, 0xA1, 0x61, 0x12, 0x3A, 0x40, 0x40, 0x20, 0x7A, 0x38, 0x54, 0x54, 0x55, 0x59, 0x21, 0x55, 0x55, 0x79, 0x41, 0x22, 0x54, 0x54, 0x78, 0x42, // a-umlaut 0x21, 0x55, 0x54, 0x78, 0x40, 0x20, 0x54, 0x55, 0x79, 0x40, 0x0C, 0x1E, 0x52, 0x72, 0x12, 0x39, 0x55, 0x55, 0x55, 0x59, 0x39, 0x54, 0x54, 0x54, 0x59, 0x39, 0x55, 0x54, 0x54, 0x58, 0x00, 0x00, 0x45, 0x7C, 0x41, 0x00, 0x02, 0x45, 0x7D, 0x42, 0x00, 0x01, 0x45, 0x7C, 0x40, 0x7D, 0x12, 0x11, 0x12, 0x7D, // A-umlaut 0xF0, 0x28, 0x25, 0x28, 0xF0, 0x7C, 0x54, 0x55, 0x45, 0x00, 0x20, 0x54, 0x54, 0x7C, 0x54, 0x7C, 0x0A, 0x09, 0x7F, 0x49, 0x32, 0x49, 0x49, 0x49, 0x32, 0x3A, 0x44, 0x44, 0x44, 0x3A, // o-umlaut 0x32, 0x4A, 0x48, 0x48, 0x30, 0x3A, 0x41, 0x41, 0x21, 0x7A, 0x3A, 0x42, 0x40, 0x20, 0x78, 0x00, 0x9D, 0xA0, 0xA0, 0x7D, 0x3D, 0x42, 0x42, 0x42, 0x3D, // O-umlaut 0x3D, 0x40, 0x40, 0x40, 0x3D, 0x3C, 0x24, 0xFF, 0x24, 0x24, 0x48, 0x7E, 0x49, 0x43, 0x66, 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, 0xFF, 0x09, 0x29, 0xF6, 0x20, 0xC0, 0x88, 0x7E, 0x09, 0x03, 0x20, 0x54, 0x54, 0x79, 0x41, 0x00, 0x00, 0x44, 0x7D, 0x41, 0x30, 0x48, 0x48, 0x4A, 0x32, 0x38, 0x40, 0x40, 0x22, 0x7A, 0x00, 0x7A, 0x0A, 0x0A, 0x72, 0x7D, 0x0D, 0x19, 0x31, 0x7D, 0x26, 0x29, 0x29, 0x2F, 0x28, 0x26, 0x29, 0x29, 0x29, 0x26, 0x30, 0x48, 0x4D, 0x40, 0x20, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x38, 0x2F, 0x10, 0xC8, 0xAC, 0xBA, 0x2F, 0x10, 0x28, 0x34, 0xFA, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x08, 0x14, 0x2A, 0x14, 0x22, 0x22, 0x14, 0x2A, 0x14, 0x08, 0x55, 0x00, 0x55, 0x00, 0x55, // #176 (25% block) missing in old code 0xAA, 0x55, 0xAA, 0x55, 0xAA, // 50% block 0xFF, 0x55, 0xFF, 0x55, 0xFF, // 75% block 0x00, 0x00, 0x00, 0xFF, 0x00, 0x10, 0x10, 0x10, 0xFF, 0x00, 0x14, 0x14, 0x14, 0xFF, 0x00, 0x10, 0x10, 0xFF, 0x00, 0xFF, 0x10, 0x10, 0xF0, 0x10, 0xF0, 0x14, 0x14, 0x14, 0xFC, 0x00, 0x14, 0x14, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x14, 0x14, 0xF4, 0x04, 0xFC, 0x14, 0x14, 0x17, 0x10, 0x1F, 0x10, 0x10, 0x1F, 0x10, 0x1F, 0x14, 0x14, 0x14, 0x1F, 0x00, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x10, 0x10, 0x10, 0x1F, 0x10, 0x10, 0x10, 0x10, 0xF0, 0x10, 0x00, 0x00, 0x00, 0xFF, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xFF, 0x10, 0x00, 0x00, 0x00, 0xFF, 0x14, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0x10, 0x17, 0x00, 0x00, 0xFC, 0x04, 0xF4, 0x14, 0x14, 0x17, 0x10, 0x17, 0x14, 0x14, 0xF4, 0x04, 0xF4, 0x00, 0x00, 0xFF, 0x00, 0xF7, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0xF7, 0x00, 0xF7, 0x14, 0x14, 0x14, 0x17, 0x14, 0x10, 0x10, 0x1F, 0x10, 0x1F, 0x14, 0x14, 0x14, 0xF4, 0x14, 0x10, 0x10, 0xF0, 0x10, 0xF0, 0x00, 0x00, 0x1F, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x14, 0x00, 0x00, 0x00, 0xFC, 0x14, 0x00, 0x00, 0xF0, 0x10, 0xF0, 0x10, 0x10, 0xFF, 0x10, 0xFF, 0x14, 0x14, 0x14, 0xFF, 0x14, 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x38, 0x44, 0x44, 0x38, 0x44, 0xFC, 0x4A, 0x4A, 0x4A, 0x34, // sharp-s or beta 0x7E, 0x02, 0x02, 0x06, 0x06, 0x02, 0x7E, 0x02, 0x7E, 0x02, 0x63, 0x55, 0x49, 0x41, 0x63, 0x38, 0x44, 0x44, 0x3C, 0x04, 0x40, 0x7E, 0x20, 0x1E, 0x20, 0x06, 0x02, 0x7E, 0x02, 0x02, 0x99, 0xA5, 0xE7, 0xA5, 0x99, 0x1C, 0x2A, 0x49, 0x2A, 0x1C, 0x4C, 0x72, 0x01, 0x72, 0x4C, 0x30, 0x4A, 0x4D, 0x4D, 0x30, 0x30, 0x48, 0x78, 0x48, 0x30, 0xBC, 0x62, 0x5A, 0x46, 0x3D, 0x3E, 0x49, 0x49, 0x49, 0x00, 0x7E, 0x01, 0x01, 0x01, 0x7E, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x44, 0x44, 0x5F, 0x44, 0x44, 0x40, 0x51, 0x4A, 0x44, 0x40, 0x40, 0x44, 0x4A, 0x51, 0x40, 0x00, 0x00, 0xFF, 0x01, 0x03, 0xE0, 0x80, 0xFF, 0x00, 0x00, 0x08, 0x08, 0x6B, 0x6B, 0x08, 0x36, 0x12, 0x36, 0x24, 0x36, 0x06, 0x0F, 0x09, 0x0F, 0x06, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x30, 0x40, 0xFF, 0x01, 0x01, 0x00, 0x1F, 0x01, 0x01, 0x1E, 0x00, 0x19, 0x1D, 0x17, 0x12, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00 // #255 NBSP }; #endif // FONT5X7_H ================================================ FILE: firmware/stepper_nano_zero/nonvolatile.cpp ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "nonvolatile.h" #include "Flash.h" //thanks to Kent Larsen for pointing out the lower case error #include //we use this so we can hard code calibration table // be sure to set the last word as status flag // this save time calibrating each time we do a code build #ifdef NZS_FAST_CAL __attribute__((__aligned__(FLASH_ROW_SIZE))) const uint16_t NVM_flash[16767]={ //allocates 33280 bytes #else __attribute__((__aligned__(FLASH_ROW_SIZE))) const uint16_t NVM_flash[256]={ //allocates 512 bytes #endif //59962,60291,60621,60949,61267,61596,61924,62252,62567,62897,63223,63548,63865,64192,64518,64842,65157,65482,274,600,917,1247,1573,1902,2225,2560,2892,3225,3550,3888,4226,4564,4893,5234,5575,5914,6246,6587,6930,7267,7596,7937,8275,8611,8936,9274,9606,9940,10262,10594,10925,11253,11572,11902,12228,12553,12870,13195,13518,13844,14159,14480,14801,15123,15435,15756,16078,16398,16708,17031,17350,17675,17988,18312,18640,18965,19282,19609,19943,20271,20593,20924,21257,21589,21914,22250,22586,22920,23241,23578,23912,24245,24570,24902,25236,25567,25887,26219,26549,26877,27196,27524,27851,28178,28496,28823,29145,29470,29788,30112,30436,30759,31074,31396,31720,32041,32355,32681,33003,33329,33644,33971,34297,34625,34947,35278,35610,35941,36271,36605,36944,37280,37609,37948,38287,38625,38960,39300,39640,39977,40308,40651,40988,41325,41653,41989,42326,42655,42982,43316,43646,43976,44294,44626,44951,45277,45598,45924,46250,46572,46888,47212,47536,47856,48167,48490,48813,49133,49447,49769,50091,50412,50726,51051,51377,51701,52022,52353,52681,53013,53334,53668,53999,54334,54661,54997,55331,55665,55991,56330,56664,57001,57326,57662,57994,58327,58650,58981,59313,59641, 0xFFFF }; static_assert (sizeof(nvm_t)CalibrationTable,ptrData,size); return true; } bool nvmWrite_sPID(float Kp, float Ki, float Kd) { PIDparams_t pid; pid.Kp=Kp; pid.Ki=Ki; pid.Kd=Kd; pid.parametersVaild=true; flashWrite((void *)&NVM->sPID,&pid,sizeof(pid)); return true; } bool nvmWrite_vPID(float Kp, float Ki, float Kd) { PIDparams_t pid; pid.Kp=Kp; pid.Ki=Ki; pid.Kd=Kd; pid.parametersVaild=true; flashWrite((void *)&NVM->vPID,&pid,sizeof(pid)); return true; } bool nvmWrite_pPID(float Kp, float Ki, float Kd) { PIDparams_t pid; pid.Kp=Kp; pid.Ki=Ki; pid.Kd=Kd; pid.parametersVaild=true; flashWrite((void *)&NVM->pPID,&pid,sizeof(pid)); return true; } bool nvmWriteSystemParms(SystemParams_t &systemParams) { systemParams.parametersVaild=true; flashWrite((void *)&NVM->SystemParams,&systemParams,sizeof(systemParams)); return true; } bool nvmWriteMotorParms(MotorParams_t &motorParams) { motorParams.parametersVaild=true; flashWrite((void *)&NVM->motorParams,&motorParams,sizeof(motorParams)); return true; } bool nvmErase(void) { bool data=false; uint16_t cs=0; flashWrite((void *)&NVM->CalibrationTable.status,&data,sizeof(data)); flashWrite((void *)&NVM->sPID.parametersVaild ,&data,sizeof(data)); flashWrite((void *)&NVM->vPID.parametersVaild ,&data,sizeof(data)); flashWrite((void *)&NVM->pPID.parametersVaild ,&data,sizeof(data)); flashWrite((void *)&NVM->motorParams.parametersVaild ,&data,sizeof(data)); flashWrite((void *)&NVM->SystemParams.parametersVaild ,&data,sizeof(data)); #ifdef NZS_FAST_CAL flashWrite((void *)&NVM->FastCal.checkSum,&cs,sizeof(cs)); #endif } ================================================ FILE: firmware/stepper_nano_zero/nonvolatile.h ================================================ /********************************************************************** Copyright (C) 2018 MisfitTech LLC, All rights reserved. MisfitTech uses a dual license model that allows the software to be used under a standard GPL open source license, or a commercial license. The standard GPL license requires that all software statically linked with MisfitTec Code is also distributed under the same GPL V2 license terms. Details of both license options follow: - Open source licensing - MisfitTech is a free download and may be used, modified, evaluated and distributed without charge provided the user adheres to version two of the GNU General Public License (GPL) and does not remove the copyright notice or this text. The GPL V2 text is available on the gnu.org web site - Commercial licensing - Businesses and individuals that for commercial or other reasons cannot comply with the terms of the GPL V2 license must obtain a low cost commercial license before incorporating MisfitTech code into proprietary software for distribution in any form. Commercial licenses can be purchased from www.misfittech.net and do not require any source files to be changed. This code is distributed in the hope that it will be useful. You cannot use MisfitTech's code unless you agree that you use the software 'as is'. MisfitTech's code is provided WITHOUT ANY WARRANTY; without even the implied warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. MisfitTech LLC disclaims all conditions and terms, be they implied, expressed, or statutory. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef __NONVOLATILE__H__ #define __NONVOLATILE__H__ #include "calibration.h" #include "board.h" typedef struct { float Kp; float Ki; float Kd; bool parametersVaild; } PIDparams_t; typedef struct { int32_t currentMa; //maximum current for the motor int32_t currentHoldMa; //hold current for the motor int32_t homeMa; //maximum current when error homing int32_t homeHoldMa; //hold current when error homing bool motorWiring; //forward wiring of motor or reverse int32_t fullStepsPerRotation; //how many full steps per rotation is the motor bool parametersVaild; } MotorParams_t; typedef struct { int32_t microsteps; //number of microsteps on the dir/step pin interface from host RotationDir_t dirPinRotation; //is the direction pin high for clockwise or counterClockWise int32_t errorLimit; //error limit before error pin asserts 65536==360degrees ErrorPinMode_t errorPinMode; //is error pin used for enable, error, or bidirectional feedbackCtrl_t controllerMode; //feedback mode for the controller int32_t homePin; //if greater than zero this is the pin we use trigger home current settings bool errorLogic; //if high and error will be high on output pin int32_t homeAngleDelay; //the angle to delay before switching to lower homing current bool parametersVaild; } SystemParams_t; #ifdef NZS_FAST_CAL typedef struct { uint16_t angle[16384]; uint16_t checkSum; }FastCal_t; #endif typedef struct { FlashCalData_t CalibrationTable; __attribute__((__aligned__(8))) PIDparams_t sPID; //simple PID parameters __attribute__((__aligned__(8))) PIDparams_t pPID; //position PID parameters __attribute__((__aligned__(8))) PIDparams_t vPID; //velocity PID parameters __attribute__((__aligned__(8))) SystemParams_t SystemParams; __attribute__((__aligned__(8))) MotorParams_t motorParams; #ifdef NZS_FAST_CAL __attribute__((__aligned__(8))) FastCal_t FastCal; #endif } nvm_t; #ifdef NZS_FAST_CAL extern const uint16_t NVM_flash[16767]; #else extern const uint16_t NVM_flash[256]; #endif #define NVM ((const nvm_t *)NVM_flash) bool nvmWriteCalTable(void *ptrData, uint32_t size); bool nvmWrite_sPID(float Kp, float Ki, float Kd); bool nvmWrite_pPID(float Kp, float Ki, float Kd); bool nvmWrite_vPID(float Kp, float Ki, float Kd); bool nvmWriteSystemParms(SystemParams_t &systemParams); bool nvmWriteMotorParms(MotorParams_t &motorParams); bool nvmErase(void); #endif // __NONVOLATILE__H__ ================================================ FILE: firmware/stepper_nano_zero/nzs.cpp ================================================ /* * nzs.cpp * * Created on: Dec 8, 2016 * Author: trampas * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "nzs.h" #include "commands.h" #include "nonvolatile.h" #include "angle.h" #include "eeprom.h" #include "steppin.h" #include "wiring_private.h" #pragma GCC push_options #pragma GCC optimize ("-Ofast") eepromData_t PowerupEEPROM={0}; volatile bool enableState=true; int32_t dataEnabled=0; StepperCtrl stepperCtrl; LCD Lcd; int menuCalibrate(int argc, char *argv[]) { stepperCtrl.calibrateEncoder(); } int menuTestCal(int argc, char *argv[]) { Angle error; int32_t x,y; char str[25]; error=stepperCtrl.maxCalibrationError(); x=(36000*(int32_t)error)/ANGLE_STEPS; LOG("Error %d %d", (int32_t)error, x); y=x/100; x=x-(y*100); x=abs(x); sprintf(str, "%d.%02d deg",y,x); #ifndef DISABLE_LCD Lcd.lcdShow("Cal Error", str,""); #endif LOG("Calibration error %s",str); #ifndef MECHADUINO_HARDWARE while(digitalRead(PIN_SW3)==1) { //wait for button press } while(digitalRead(PIN_SW3)==0) { //wait for button release } #endif } static options_t stepOptions[] { {"200"}, {"400"}, {""}, }; //returns the index of the stepOptions when called // with no arguments. int motorSteps(int argc, char *argv[]) { if (argc==0) { int i; i=NVM->motorParams.fullStepsPerRotation; if (i==400) { return 1; } return 0; //default to 200 } if (argc>0) { int32_t i; MotorParams_t params; memcpy((void *)¶ms, (void *)&NVM->motorParams, sizeof(params)); i=atol(argv[0]); if (i!=params.fullStepsPerRotation) { params.fullStepsPerRotation=i; nvmWriteMotorParms(params); } } return 0; } static options_t currentOptions[] { {"0"}, {"100"}, {"200"}, {"300"}, {"400"}, {"500"}, {"600"}, {"700"}, {"800"}, {"900"}, {"1000"}, {"1100"}, {"1200"}, {"1300"}, {"1400"}, {"1500"}, {"1600"}, {"1700"}, {"1800"}, {"1900"}, {"2000"}, {"2100"}, {"2200"}, {"2300"}, {"2400"}, {"2500"}, {"2600"}, {"2700"}, {"2800"}, {"2900"}, {"3000"}, {"3100"}, {"3200"}, {"3300"}, {""}, }; int motorCurrent(int argc, char *argv[]) { LOG("called motorCurrent %d",argc); if (argc==1) { int i; LOG("called %s",argv[0]); i=atol(argv[0]); i=i*100; MotorParams_t params; memcpy((void *)¶ms, (void *)&NVM->motorParams, sizeof(params)); if (i!=params.currentMa) { params.currentMa=i; nvmWriteMotorParms(params); } return i/100; } int i; i=NVM->motorParams.currentMa/100; LOG(" motorCurrent return %d",i); return i; } int motorHoldCurrent(int argc, char *argv[]) { if (argc==1) { int i; i=atol(argv[0]); i=i*100; MotorParams_t params; memcpy((void *)¶ms, (void *)&NVM->motorParams, sizeof(params)); if (i!=params.currentHoldMa) { params.currentHoldMa=i; nvmWriteMotorParms(params); } return i/100; }else { int i; i=NVM->motorParams.currentHoldMa/100; return i; } } static options_t microstepOptions[] { {"1"}, {"2"}, {"4"}, {"8"}, {"16"}, {"32"}, {"64"}, {"128"}, {"256"}, {""} }; int microsteps(int argc, char *argv[]) { if (argc==1) { int i,steps; i=atol(argv[0]); SystemParams_t params; memcpy((void *)¶ms, (void *)&NVM->SystemParams, sizeof(params)); steps=0x01<SystemParams.microsteps; for (j=0; j<9; j++) { if ((0x01<SystemParams, sizeof(params)); if (i!=params.controllerMode) { params.controllerMode=(feedbackCtrl_t)i; nvmWriteSystemParms(params); } return i; } return NVM->SystemParams.controllerMode; } #ifndef PIN_ENABLE static options_t errorPinOptions[] { {"Enable"}, {"!Enable"}, //error pin works like enable on step sticks {"Error"}, // {"BiDir"}, //12/12/2016 not implemented yet {""} }; int errorPin(int argc, char *argv[]) { if (argc==1) { int i; i=atol(argv[0]); SystemParams_t params; memcpy((void *)¶ms, (void *)&NVM->SystemParams, sizeof(params)); if (i!=params.errorPinMode) { params.errorPinMode=(ErrorPinMode_t)i; nvmWriteSystemParms(params); } return i; } return NVM->SystemParams.errorPinMode; } #else static options_t errorPinOptions[] { {"Enable"}, {"!Enable"}, //error pin works like enable on step sticks // {"Error"}, // {"BiDir"}, //12/12/2016 not implemented yet {""} }; int enablePin(int argc, char *argv[]) { if (argc==1) { int i; i=atol(argv[0]); SystemParams_t params; memcpy((void *)¶ms, (void *)&NVM->SystemParams, sizeof(params)); if (i!=params.errorPinMode) { params.errorPinMode=(ErrorPinMode_t)i; nvmWriteSystemParms(params); } return i; } return NVM->SystemParams.errorPinMode; } #endif static options_t dirPinOptions[] { {"High CW"}, {"High CCW"}, {""} }; int dirPin(int argc, char *argv[]) { if (argc==1) { int i; i=atol(argv[0]); SystemParams_t params; memcpy((void *)¶ms, (void *)&NVM->SystemParams, sizeof(params)); if (i!=params.dirPinRotation) { params.dirPinRotation=(RotationDir_t)i; nvmWriteSystemParms(params); } return i; } return NVM->SystemParams.dirPinRotation; } static menuItem_t MenuMain[] { {"Calibrate", menuCalibrate,NULL}, {"Test Cal", menuTestCal,NULL}, // {"Mtr steps", motorSteps,stepOptions}, NOT GOOD for user to call this {"Motor mA", motorCurrent,currentOptions}, {"Hold mA", motorHoldCurrent,currentOptions}, {"Microstep", microsteps,microstepOptions}, // {"Ctlr Mode", controlLoop,controlLoopOptions}, //this may not be good for user to call #ifndef PIN_ENABLE {"Error Pin", errorPin,errorPinOptions}, #else {"EnablePin", enablePin,errorPinOptions}, #endif {"Dir Pin", dirPin,dirPinOptions}, { "", NULL} }; static menuItem_t MenuCal[] { {"Calibrate", menuCalibrate,NULL}, //{"Test Cal", menuTestCal,NULL}, { "", NULL} }; //this function is called when error pin changes as enable signal static void enableInput(void) { static bool lastState=true; #ifdef PIN_ENABLE if (NVM->SystemParams.errorPinMode == ERROR_PIN_MODE_ENABLE) { static int enable; //read our enable pin enable = digitalRead(PIN_ENABLE); if (enable != enableState) { WARNING("Enable now %d",enable); } enableState=enable; //stepperCtrl.enable(enable); } if (NVM->SystemParams.errorPinMode == ERROR_PIN_MODE_ACTIVE_LOW_ENABLE) { static int enable; //read our enable pin enable = !digitalRead(PIN_ENABLE); if (enable != enableState) { WARNING("Enable now %d",enable); } enableState=enable; //stepperCtrl.enable(enable); } #else if (NVM->SystemParams.errorPinMode == ERROR_PIN_MODE_ENABLE) { static int enable; //read our enable pin enable = digitalRead(PIN_ERROR); enableState=enable; //stepperCtrl.enable(enable); } if (NVM->SystemParams.errorPinMode == ERROR_PIN_MODE_ACTIVE_LOW_ENABLE) { static int enable; //read our enable pin enable = !digitalRead(PIN_ERROR); enableState=enable; //stepperCtrl.enable(enable); } #endif #ifdef USE_STEP_DIR_SERIAL static uint8_t pinCFG[2]; static uint8_t pinMux[2]; if (enableState == false && lastState==true) { // turn the step/dir to serial port //save pin config for restoring pinCFG[0]=getPinCfg(PIN_STEP_INPUT); pinCFG[1]=getPinCfg(PIN_DIR_INPUT); pinMux[0]=getPinMux(PIN_STEP_INPUT); pinMux[1]=getPinMux(PIN_DIR_INPUT); //lets see if the step pin has interrupt enabled if (pinMux[0] == PORT_PMUX_PMUXE_A_Val) { EExt_Interrupts in = g_APinDescription[PIN_STEP_INPUT].ulExtInt; EIC->INTENCLR.reg = EIC_INTENCLR_EXTINT(1 << in); //disable the interrupt //we need to disable the interrupt } //now we need to set the pins to serial port peripheral (sercom0) setPinMux(PIN_STEP_INPUT,PORT_PMUX_PMUXE_C_Val); setPinMux(PIN_DIR_INPUT,PORT_PMUX_PMUXE_C_Val); //make sure that step pin is input with mux to peripheral setPinCfg(PIN_STEP_INPUT, PORT_PINCFG_PMUXEN | PORT_PINCFG_INEN | PORT_PINCFG_PULLEN); //make sure that dir pin is an output with mux to peripheral setPinCfg(PIN_DIR_INPUT, PORT_PINCFG_PMUXEN ); Serial1.begin(STEP_DIR_BAUD); } if (enableState == true && lastState==false) { Serial1.end(); setPinMux(PIN_STEP_INPUT,pinMux[0]); setPinMux(PIN_DIR_INPUT,pinMux[1]); setPinCfg(PIN_STEP_INPUT,pinCFG[0]); setPinCfg(PIN_DIR_INPUT,pinCFG[1]); //turn step/dir pins back to GPIO if (PORT_PMUX_PMUXE_A_Val == pinMux[0]) { //if interrupt was enabled for step pin renable it. EExt_Interrupts in = g_APinDescription[PIN_STEP_INPUT].ulExtInt; EIC->INTENSET.reg = EIC_INTENCLR_EXTINT(1 << in); //enable the interrupt } } #endif //USE_STEP_DIR_SERIAL lastState=enableState; } void TC5_Handler() { // static bool led=false; // YELLOW_LED(led); // led=!led; interrupts(); //allow other interrupts if (TC5->COUNT16.INTFLAG.bit.OVF == 1) { int error=0; error=(stepperCtrl.processFeedback()); //handle the control loop YELLOW_LED(error); #ifdef PIN_ENABLE GPIO_OUTPUT(PIN_ERROR); bool level; level = !NVM->SystemParams.errorLogic; if (error) { //assume high is inactive and low is active on error pin digitalWrite(PIN_ERROR,level); }else { digitalWrite(PIN_ERROR,!level); } #else if (NVM->SystemParams.errorPinMode == ERROR_PIN_MODE_ERROR) { GPIO_OUTPUT(PIN_ERROR); if (error) { //assume high is inactive and low is active on error pin digitalWrite(PIN_ERROR,LOW); }else { digitalWrite(PIN_ERROR,HIGH); } } #endif TC5->COUNT16.INTFLAG.bit.OVF = 1; // writing a one clears the flag ovf flag } } //check the NVM and set to defaults if there is any void validateAndInitNVMParams(void) { if (false == NVM->sPID.parametersVaild) { nvmWrite_sPID(0.9,0.0001, 0.01); } if (false == NVM->pPID.parametersVaild) { nvmWrite_pPID(1.0, 0, 0); } if (false == NVM->vPID.parametersVaild) { nvmWrite_vPID(2.0, 1.0, 1.0); } if (false == NVM->SystemParams.parametersVaild) { SystemParams_t params; params.microsteps=16; params.controllerMode=CTRL_SIMPLE; params.dirPinRotation=CW_ROTATION; //default to clockwise rotation when dir is high params.errorLimit=(int32_t)ANGLE_FROM_DEGREES(1.8); params.errorPinMode=ERROR_PIN_MODE_ENABLE; //default to enable pin params.homePin=-1; params.errorLogic=false; params.homeAngleDelay=ANGLE_FROM_DEGREES(10); nvmWriteSystemParms(params); } //the motor parameters are check in the stepper_controller code // as that there we can auto set much of them. } void SYSCTRL_Handler(void) { if (SYSCTRL->INTFLAG.reg & SYSCTRL_INTFLAG_BOD33DET) { eepromFlush(); //flush the eeprom SYSCTRL->INTFLAG.reg |= SYSCTRL_INTFLAG_BOD33DET; } } // Wait for synchronization of registers between the clock domains static __inline__ void syncBOD33(void) __attribute__((always_inline, unused)); static void syncBOD33(void) { //int32_t t0=1000; while (SYSCTRL->PCLKSR.bit.BOD33RDY==1) { // t0--; // if (t0==0) // { // break; // } } } static void configure_bod(void) { //syncBOD33(); //SYSCTRL->BOD33.reg=0; //disable BOD33 before starting //syncBOD33(); SYSCTRL->BOD33.reg=SYSCTRL_BOD33_ACTION_INTERRUPT | //generate interrupt when BOD is triggered SYSCTRL_BOD33_LEVEL(48) | //about 3.2V //SYSCTRL_BOD33_HYST | //enable hysteresis SYSCTRL_BOD33_ENABLE; //turn module on LOG("BOD33 %02X", SYSCTRL->BOD33.reg ); SYSCTRL->INTENSET.reg |= SYSCTRL_INTENSET_BOD33DET; NVIC_SetPriority(SYSCTRL_IRQn, 1); //make highest priority as we need to save eeprom // Enable InterruptVector NVIC_EnableIRQ(SYSCTRL_IRQn); } void NZS::begin(void) { int to=20; stepCtrlError_t stepCtrlError; //set up the pins correctly on the board. boardSetupPins(); //start up the USB serial interface //TODO check for power on USB before doing this... #ifndef MECHADUINO_HARDWARE SerialUSB.begin(SERIAL_BAUD); #endif //setup the serial port for syslog Serial5.begin(SERIAL_BAUD); #ifndef CMD_SERIAL_PORT SysLogInit(&Serial5,LOG_DEBUG); pinPeripheral(PIN_TXD, PIO_SERCOM_ALT); pinPeripheral(PIN_RXD, PIO_SERCOM_ALT); #else SysLogInit(NULL, LOG_WARNING); #endif LOG("Power up!"); pinMode(PIN_USB_PWR, INPUT); #ifndef MECHADUINO_HARDWARE if (digitalRead(PIN_USB_PWR)) { //wait for USB serial port to come alive while (!SerialUSB) { to--; if (to == 0) { break; } delay(500); }; //wait for serial } else { WARNING("USB Not connected"); } #endif validateAndInitNVMParams(); LOG("EEPROM INIT"); if (EEPROM_OK == eepromInit()) //init the EEPROM { eepromRead((uint8_t *)&PowerupEEPROM, sizeof(PowerupEEPROM)); } configure_bod(); //configure the BOD #ifndef DISABLE_LCD LOG("Testing LCD"); Lcd.begin(&stepperCtrl); #ifdef A5995_DRIVER Lcd.lcdShow("MisfitTech","NEMA 23", VERSION); #else Lcd.lcdShow("MisfitTech","NEMA 17", VERSION); #endif #endif LOG("command init!"); commandsInit(); //setup command handler system stepCtrlError=STEPCTRL_NO_CAL; while (STEPCTRL_NO_ERROR != stepCtrlError) { LOG("init the stepper controller"); stepCtrlError=stepperCtrl.begin(); //start controller before accepting step inputs //todo we need to handle error on LCD and through command line if (STEPCTRL_NO_POWER == stepCtrlError) { #ifndef MECHADUINO_HARDWARE SerialUSB.println("Appears that there is no Motor Power"); SerialUSB.println("Connect motor power!"); #else Serial5.println("Appears that there is no Motor Power"); Serial5.println("Connect motor power!"); #endif #ifndef DISABLE_LCD Lcd.lcdShow("Waiting", "MOTOR", "POWER"); #endif while (STEPCTRL_NO_POWER == stepCtrlError) { stepCtrlError=stepperCtrl.begin(); //start controller before accepting step inputs } } if (STEPCTRL_NO_CAL == stepCtrlError) { #ifndef MECHADUINO_HARDWARE SerialUSB.println("You need to Calibrate"); #else Serial5.println("You need to Calibrate"); #endif #ifndef DISABLE_LCD Lcd.lcdShow(" NOT ", "Calibrated", " "); delay(1000); Lcd.setMenu(MenuCal); Lcd.forceMenuActive(); #endif //TODO add code here for LCD and command line loop while(false == stepperCtrl.calibrationValid()) { commandsProcess(); //handle commands #ifndef DISABLE_LCD Lcd.process(); #endif } #ifndef DISABLE_LCD Lcd.setMenu(NULL); #endif } if (STEPCTRL_NO_ENCODER == stepCtrlError) { #ifndef MECHADUINO_HARDWARE SerialUSB.println("AS5047D not working"); SerialUSB.println(" try disconnecting power from board for 15+mins"); SerialUSB.println(" you might have to short out power pins to ground"); #else Serial5.println("AS5047D not working"); Serial5.println(" try disconnecting power from board for 15+mins"); Serial5.println(" you might have to short out power pins to ground"); #endif #ifndef DISABLE_LCD Lcd.lcdShow("Encoder", " Error!", " REBOOT"); #endif while(1) { } } } #ifndef DISABLE_LCD Lcd.setMenu(MenuMain); #endif stepPinSetup(); //setup the step pin #ifdef PIN_ENABLE //attachInterrupt(digitalPinToInterrupt(PIN_ENABLE), enableInput, CHANGE); NVIC_SetPriority(EIC_IRQn, 0); //set port A interrupt as highest priority #else attachInterrupt(digitalPinToInterrupt(PIN_ERROR), enableInput, CHANGE); #endif SmartPlanner.begin(&stepperCtrl); RED_LED(false); LOG("SETUP DONE!"); } void printLocation(void) { char buf[128]={0}; Location_t loc; int32_t n, i, len; int32_t pktSize; if (dataEnabled==0) { //RED_LED(false); return; } //the packet length for binary print is 12bytes // assuming rate of 6Khz this would be 72,000 baud i=0; n=stepperCtrl.getLocation(&loc); if (n==-1) { //RED_LED(false); return; } len=0; pktSize=sizeof(Location_t)+1; //packet lenght is size location plus sync byte // //binary write while(n>=0 && (len)<=(128-pktSize)) { memcpy(&buf[len],&loc,sizeof(Location_t)); len+=sizeof(Location_t); buf[len]=0XAA; //sync len++; buf[len]=sizeof(Location_t); //data len len++; n=stepperCtrl.getLocation(&loc); i++; } #ifndef MECHADUINO_HARDWARE SerialUSB.write(buf,len); #endif //hex write // hex write is 29 bytes per tick, @ 6khz this 174000 baud // while(n>=0 && (i*29)<(200-29)) // { // sprintf(buf,"%s%08X\t%08X\t%08X\n\r",buf,loc.microSecs,loc.desiredLoc,loc.actualLoc); // n=stepperCtrl.getLocation(&loc); // i++; // } // SerialUSB.write(buf,strlen(buf)); // if (n<=0) // { // RED_LED(false); // }else // { // RED_LED(true); // } return; } void NZS::loop(void) { eepromData_t eepromData; // if (dataEnabled==0) // { // LOG("loop time is %dus",stepperCtrl.getLoopTime()); // } //read the enable pin and update // this is also done as an edge interrupt but does not always see // to trigger the ISR. enableInput(); if (enableState != stepperCtrl.getEnable()) { stepperCtrl.enable(enableState); } //handle EEPROM eepromData.angle=stepperCtrl.getCurrentAngle(); eepromData.encoderAngle=stepperCtrl.getEncoderAngle(); eepromData.valid=1; eepromWriteCache((uint8_t *)&eepromData,sizeof(eepromData)); commandsProcess(); //handle commands #ifndef DISABLE_LCD Lcd.process(); #endif //stepperCtrl.PrintData(); //prints steps and angle to serial USB. printLocation(); //print out the current location return; } #pragma GCC pop_options ================================================ FILE: firmware/stepper_nano_zero/nzs.h ================================================ /* * nzs.h * * Created on: Dec 8, 2016 * Author: trampas * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef NZS_H_ #define NZS_H_ #include "board.h" #include "nzs_lcd.h" #include "stepper_controller.h" #include "planner.h" typedef struct { int64_t angle; uint16_t encoderAngle; uint8_t valid; }eepromData_t; class NZS //nano Zero Stepper { public: void begin(void); void loop(void); }; #endif /* NZS_H_ */ ================================================ FILE: firmware/stepper_nano_zero/nzs_lcd.cpp ================================================ /* * nzs_lcd.cpp * * Created on: Dec 8, 2016 * Author: trampas * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "nzs_lcd.h" #include #include #include #ifndef DISABLE_LCD void LCD::begin(StepperCtrl *ptrsCtrl) { #ifndef MECHADUINO_HARDWARE pinMode(PIN_SW1, INPUT_PULLUP); pinMode(PIN_SW3, INPUT_PULLUP); pinMode(PIN_SW4, INPUT_PULLUP); #endif buttonState=0; //we need access to the stepper controller ptrStepperCtrl=ptrsCtrl; //save a pointer to the stepper controller ptrMenu=NULL; menuIndex=0; menuActive=false; optionIndex=0; ptrOptions=NULL; displayEnabled=true; //check that the SCL and SDA are pulled high pinMode(PIN_SDA, INPUT); pinMode(PIN_SCL, INPUT); if (digitalRead(PIN_SDA)==0) { //pin is not pulled up displayEnabled=false; } if (digitalRead(PIN_SCL)==0) { //pin is not pulled up displayEnabled=false; } if (displayEnabled) { displayEnabled=display.begin(SSD1306_SWITCHCAPVCC, 0x3C); }else { WARNING("SCL/SDA not pulled up"); } if (false == displayEnabled) { WARNING("NO display found, LCD will not be used"); } Wire.setClock(800000); //showSplash(); } void __attribute__ ((optimize("Ofast"))) LCD::lcdShow(const char *line1, const char *line2,const char *line3) { if (false == displayEnabled) { return; } display.clearDisplay(); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0,0); display.println(line1); display.setCursor(0,20); display.println(line2); display.setCursor(0,40); display.println(line3); display.display(); } void LCD::showSplash(void) { if (false == displayEnabled) { return; } #ifdef A5995_DRIVER lcdShow("MisfitTech","NEMA 23", VERSION); #else lcdShow("MisfitTech","NEMA 17", VERSION); #endif } void LCD::setMenu(menuItem_t *pMenu) { if (false == displayEnabled) { return; } ptrMenu=pMenu; menuIndex=0; } void LCD::showOptions(void) { int32_t i,j; char str[3][26]={0}; if (false == displayEnabled) { return; } i=optionIndex; j=0; while(strlen(ptrOptions[i].str)>0 && j<3) { if (i == optionIndex) { sprintf(str[j],"*%s",ptrOptions[i].str); }else { sprintf(str[j]," %s",ptrOptions[i].str); } j++; i++; } lcdShow(str[0], str[1], str[2]); return; } void __attribute__ ((optimize("Ofast"))) LCD::showMenu(void) { int32_t i,j; char str[3][26]={0}; if (false == displayEnabled) { return; } i=menuIndex; j=0; while(ptrMenu[i].func!=NULL && j<3) { if (i == menuIndex) { sprintf(str[j],"*%s",ptrMenu[i].str); }else { sprintf(str[j]," %s",ptrMenu[i].str); } j++; i++; } //show exit if there is room if (j<3) { if (j==0) { sprintf(str[j],"*Exit"); }else { sprintf(str[j]," Exit"); } } lcdShow(str[0], str[1], str[2]); return; } void __attribute__ ((optimize("Ofast"))) LCD::updateMenu(void) { if (false == displayEnabled) { return; } if (ptrOptions != NULL) { showOptions(); }else { showMenu(); } //handle push buttons if (digitalRead(PIN_SW3)==0 && (buttonState & 0x02)==0) { buttonState |= 0x02; LOG("SW3 pressed"); if (ptrMenu[menuIndex].func == NULL) { //exit pressed menuIndex=0; //reset menu index menuActive=false; return; } if (ptrMenu[menuIndex].func != NULL) { LOG("Calling function for %s",ptrMenu[menuIndex].str); if (ptrOptions != NULL) { char *ptrArgV[1]; char str[25]={0}; ptrArgV[0]=str; sprintf(str,"%d",optionIndex); LOG("Calling function for %s %s",ptrMenu[menuIndex].str,str); ptrMenu[menuIndex].func(1,ptrArgV); ptrOptions=NULL; optionIndex=0; }else { int i; i=ptrMenu[menuIndex].func(0,NULL); if (ptrMenu[menuIndex].ptrOptions != NULL) { LOG("displaying options for %s %d",ptrMenu[menuIndex].str,i); ptrOptions=ptrMenu[menuIndex].ptrOptions; optionIndex=i; } } return; } } if (digitalRead(PIN_SW1)==0 && (buttonState & 0x01)==0) { buttonState |= 0x01; LOG("SW1 pressed"); if (ptrOptions != NULL) { optionIndex++; if (strlen(ptrOptions[optionIndex].str) == 0) { optionIndex=0; } } else { if (ptrMenu[menuIndex].func != NULL) { menuIndex++; } else { menuIndex=0; } } } if (digitalRead(PIN_SW1)) { buttonState &= ~0x01; } if (digitalRead(PIN_SW3)) { buttonState &= ~0x02; } } void LCD::forceMenuActive(void) { menuActive=true; } void __attribute__((optimize("Ofast")))LCD::process(void) { if (false == displayEnabled) { return; } if (false == menuActive || ptrMenu==NULL) { updateLCD(); }else { updateMenu(); } if (digitalRead(PIN_SW4)==0 && (buttonState & 0x04)==0) { buttonState |= 0x04; menuActive=!menuActive; } if (digitalRead(PIN_SW4)) { buttonState &= ~0x04; } } #endif /* //does the LCD menu system void StepperCtrl::menu(void) { bool done=false; int menuItem=0; char str[100]; int sw1State=0; int sw3State=0; pinMode(PIN_SW1, INPUT_PULLUP); pinMode(PIN_SW3, INPUT_PULLUP); pinMode(PIN_SW4, INPUT_PULLUP); while (!done) { display.clearDisplay(); display.setTextSize(2); display.setTextColor(WHITE); if (menuItem==0) { sprintf(str,"*Run Cal"); display.setCursor(0,0); display.println(str); }else { sprintf(str," Run Cal"); display.setCursor(0,0); display.println(str); } if (menuItem==1) { sprintf(str,"*Check Cal"); display.setCursor(0,20); display.println(str); }else { sprintf(str," Check Cal"); display.setCursor(0,20); display.println(str); } if (menuItem==2) { sprintf(str,"*Exit"); display.setCursor(0,40); display.println(str); }else { sprintf(str," Exit"); display.setCursor(0,40); display.println(str); } display.display(); if (sw1State==1) { while (digitalRead(PIN_SW1)==0); sw1State=0; } if (digitalRead(PIN_SW1)==0) { sw1State=1; menuItem=(menuItem+1)%3; } if (sw3State==1) { while (digitalRead(PIN_SW3)==0); sw3State=0; } if (digitalRead(PIN_SW3)==0) { sw3State=1; switch(menuItem) { case 0: display.clearDisplay(); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0,0); display.println("Running"); display.setCursor(0,20); display.println("Cal"); display.display(); calibrateEncoder(); break; case 1: { display.clearDisplay(); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0,0); display.println("Testing"); display.setCursor(0,20); display.println("Cal"); display.display(); int32_t error,x,y,m; error=maxCalibrationError(); x=(error*100 *360)/ANGLE_STEPS; m=x/100; y=abs(x-(m*100)); display.clearDisplay(); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0,0); display.println("Error"); sprintf(str, "%02d.%02d deg",m,y); display.setCursor(0,20); display.println(str); display.display(); while (digitalRead(PIN_SW3)); break; } case 2: return; break; } } } } */ void LCD::updateLCD(void) { if (false == displayEnabled) { return; } char str[3][25]; static int highRPM=0; int32_t y,z,err; static int64_t lastAngle,deg; static int32_t RPM=0; static int32_t lasttime=0; bool state; static int32_t dt=40; static uint32_t t0=0; static bool rpmDone=false; if ((millis()-t0)>500) { int32_t x,d; //do first half of RPM measurement if (!rpmDone) { //LOG("loop time is %dus",ptrStepperCtrl->getLoopTime()); lastAngle=ptrStepperCtrl->getCurrentAngle(); lasttime=millis(); rpmDone=true; return; } //do the second half of rpm measurement and update LCD. if (rpmDone && (millis()-lasttime)>(dt)) { rpmDone=false; deg=ptrStepperCtrl->getCurrentAngle(); y=millis()-lasttime; err=ptrStepperCtrl->getLoopError(); t0=millis(); d=(int64_t)(lastAngle-deg); d=abs(d); x=0; if (d>0) { x=((int64_t)d*(60*1000UL))/((int64_t)y * ANGLE_STEPS); } lastAngle=deg; RPM=(int32_t)x; //(7*RPM+x)/8; //average RPMs if (RPM>500) { dt=10; } if (RPM<100) { dt=100; } str[0][0]='\0'; //LOG("RPMs is %d, %d, %d",(int32_t)x,(int32_t)d,(int32_t)y); switch(ptrStepperCtrl->getControlMode()) { case CTRL_SIMPLE: sprintf(str[0], "%dRPM simp",RPM); break; case CTRL_POS_PID: sprintf(str[0], "%dRPM pPID",RPM); break; case CTRL_POS_VELOCITY_PID: sprintf(str[0], "%dRPM vPID",RPM); break; case CTRL_OPEN: sprintf(str[0], "%dRPM open",RPM); break; case CTRL_OFF: sprintf(str[0], "%dRPM off",RPM); break; default: sprintf(str[0], "error %u",ptrStepperCtrl->getControlMode()); break; } err=(err*360*100)/(int32_t)ANGLE_STEPS; //LOG("error is %d %d %d",err,(int32_t)ptrStepperCtrl->getCurrentLocation(),(int32_t)ptrStepperCtrl->getDesiredLocation()); z=(err)/100; y=abs(err-(z*100)); sprintf(str[1],"%01d.%02d err", z,y); deg=ptrStepperCtrl->getDesiredAngle(); #ifndef NZS_LCD_ABSOULTE_ANGLE deg=deg & ANGLE_MAX; //limit to 360 degrees #endif deg=(deg*360*10)/(int32_t)ANGLE_STEPS; int K=0; if (abs(deg)>9999) { K=1; deg=deg/1000; } x=(deg)/10; y=abs(deg-(x*10)); if (K==1) { sprintf(str[2],"%03d.%01uKdeg", x,y); }else { sprintf(str[2],"%03d.%01udeg", x,y); } str[0][10]='\0'; str[1][10]='\0'; str[2][10]='\0'; lcdShow(str[0],str[1],str[2]); } } } ================================================ FILE: firmware/stepper_nano_zero/nzs_lcd.h ================================================ /* * nzs_lcd.h * * Created on: Dec 8, 2016 * Author: trampas * * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef NZS_LCD_H_ #define NZS_LCD_H_ #include "Arduino.h" #include "syslog.h" #include "board.h" #include "stepper_controller.h" #include "Adafruit_GFX.h" #include "Adafruit_SSD1306.h" #include "gfxfont.h" typedef struct { char str[15]; } options_t; typedef struct { char str[15]; //only one of the following should be not null int (*func)(int argc, char *argv[]); options_t *ptrOptions; } menuItem_t; class LCD { private: bool displayEnabled; Adafruit_SSD1306 display; StepperCtrl *ptrStepperCtrl; menuItem_t *ptrMenu; int32_t menuIndex; bool menuActive; options_t *ptrOptions; int32_t optionIndex; int32_t buttonState; void updateLCD(void); void showMenu(void); void updateMenu(void); void showOptions(void); public: void forceMenuActive(void); void setMenu(menuItem_t *pMenu); void begin(StepperCtrl *ptrStepperCtrl); //sets up the LCD void process(void); //processes the LCD and updates as needed void showSplash(void); void lcdShow(const char *line1, const char *line2,const char *line3); }; #endif /* NZS_LCD_H_ */ ================================================ FILE: firmware/stepper_nano_zero/planner.cpp ================================================ /********************************************************************** * Author: tstern * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "planner.h" #include "board.h" #include "wiring_private.h" #include "syslog.h" #include "angle.h" #include "Arduino.h" #define WAIT_TC16_REGS_SYNC(x) while(x->COUNT16.STATUS.bit.SYNCBUSY); //define the planner class as being global Planner SmartPlanner; static bool enterTC3CriticalSection() { bool state=NVIC_IS_IRQ_ENABLED(TC3_IRQn); NVIC_DisableIRQ(TC3_IRQn); return state; } static void exitTC3CriticalSection(bool prevState) { if (prevState) { NVIC_EnableIRQ(TC3_IRQn); } //else do nothing } void TC3_Init(void) { // Enable GCLK for TC3 GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID( GCM_TCC2_TC3 )) ; while (GCLK->STATUS.bit.SYNCBUSY); TC3->COUNT16.CTRLA.reg &= ~TC_CTRLA_ENABLE; // Disable TCx WAIT_TC16_REGS_SYNC(TC3) // wait for sync TC3->COUNT16.CTRLA.reg |= TC_CTRLA_MODE_COUNT16; // Set Timer counter Mode to 16 bits WAIT_TC16_REGS_SYNC(TC3) TC3->COUNT16.CTRLA.reg |= TC_CTRLA_WAVEGEN_MFRQ; // Set TC as normal Normal Frq WAIT_TC16_REGS_SYNC(TC3) TC3->COUNT16.CTRLA.reg |= TC_CTRLA_PRESCALER_DIV2; // Set perscaler WAIT_TC16_REGS_SYNC(TC3) TC3->COUNT16.CC[0].reg = F_CPU/PLANNER_UPDATE_RATE_HZ/2; //divide by two because of prescaler WAIT_TC16_REGS_SYNC(TC3) TC3->COUNT16.INTENSET.reg = 0; // disable all interrupts TC3->COUNT16.INTENSET.bit.OVF = 1; // enable overfollow NVIC_SetPriority(TC3_IRQn, 3); // Enable InterruptVector NVIC_EnableIRQ(TC3_IRQn); // Enable TC TC3->COUNT16.CTRLA.reg |= TC_CTRLA_ENABLE; WAIT_TC16_REGS_SYNC(TC3); } void TC3_Handler(void) { interrupts(); //allow other interrupts //do the planner tick SmartPlanner.tick(); //SerialUSB.println('x'); TC3->COUNT16.INTFLAG.bit.OVF = 1; //clear interrupt by writing 1 to flag } void Planner::begin(StepperCtrl *ptrStepper) { ptrStepperCtrl=ptrStepper; currentMode=PLANNER_NONE; //setup the timer and interrupt as the last thing TC3_Init(); } void Planner::tick(void) { if (currentMode == PLANNER_NONE) { return; //do nothing } if (PLANNER_CV == currentMode) { // SerialUSB.println(currentSetAngle); // SerialUSB.println(endAngle); // SerialUSB.println(tickIncrement); // SerialUSB.println(fabs(currentSetAngle-endAngle)); // SerialUSB.println(fabs(tickIncrement*2)); // SerialUSB.println(); int32_t x; if (fabs(currentSetAngle-endAngle) >= fabs(tickIncrement)) { currentSetAngle+=tickIncrement; x=ANGLE_FROM_DEGREES(currentSetAngle); ptrStepperCtrl->moveToAbsAngle(x); }else { //we are done, make sure we end at the right point //SerialUSB.println("done"); x=ANGLE_FROM_DEGREES(endAngle); ptrStepperCtrl->moveToAbsAngle(x); currentMode=PLANNER_NONE; } } } void Planner::stop(void) { bool state; state = enterTC3CriticalSection(); currentMode=PLANNER_NONE; exitTC3CriticalSection(state); } bool Planner::moveConstantVelocity(float finalAngle, float rpm) { bool state; state = enterTC3CriticalSection(); //first determine if operation is in progress if (PLANNER_NONE != currentMode) { #ifndef MECHADUINO_HARDWARE //we are in operation return false SerialUSB.println("planner operational"); #else Serial5.println("planner operational"); #endif exitTC3CriticalSection(state); return false; } //get current posistion startAngle = ANGLE_T0_DEGREES(ptrStepperCtrl->getCurrentAngle()); //deterime the tick increment tickIncrement=360.0*fabs(rpm)/60/PLANNER_UPDATE_RATE_HZ; //set the desired end angle endAngle=finalAngle; //set the current angle currentSetAngle=startAngle; if (startAngle>endAngle) { #ifndef MECHADUINO_HARDWARE SerialUSB.println("reverse"); #endif tickIncrement=-tickIncrement; } // SerialUSB.println(currentSetAngle); // SerialUSB.println(endAngle); // SerialUSB.println(tickIncrement); // SerialUSB.println(); currentMode=PLANNER_CV; exitTC3CriticalSection(state); return true; } ================================================ FILE: firmware/stepper_nano_zero/planner.h ================================================ /********************************************************************** * Author: tstern * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ /* * This file implements a trajectory planner for use with serial * interface. It allows the smart stepper to move at constant velocity. * Additionally you can move to some location at constant velocity or * with a trajectory curve */ #ifndef PLANNER_H_ #define PLANNER_H_ #include "board.h" #include "stepper_controller.h" #define PLANNER_UPDATE_RATE_HZ (3000UL) //how often planner updates PID typedef enum { PLANNER_NONE =0, PLANNER_CV =1, //constant velocity //PLANNER_CA =2, //constant accleration //PLANNER_S_CURVE =3, //s-curve move } PlannerMode; class Planner { private: StepperCtrl *ptrStepperCtrl; volatile PlannerMode currentMode=PLANNER_NONE; //todo we should not use floating point, rather use "Angle" volatile float endAngle; volatile float startAngle; volatile float currentSetAngle; volatile float tickIncrement; public: void begin(StepperCtrl *ptrStepper); bool moveConstantVelocity(float finalAngle, float rpm); //moves to the final location at a constant RPM void tick(void); //this is called on regular tick interval void stop(void); bool done(void) {return currentMode==PLANNER_NONE;} }; extern Planner SmartPlanner; #endif /* PLANNER_H_ */ ================================================ FILE: firmware/stepper_nano_zero/sine.cpp ================================================ /* * since.cpp * * Created on: Dec 24, 2016 * Author: tstern * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "sine.h" #pragma GCC push_options #pragma GCC optimize ("-Ofast") #ifdef NZS_FAST_SINE static const int16_t sineTable[1280]={ 0,201,402,603,804,1005,1206,1407,1608,1808,2009,2210,2410,2611,2811,3011, 3212,3412,3611,3811,4011,4210,4410,4609,4808,5007,5205,5404,5602,5800,5998,6195, 6392,6589,6786,6983,7179,7375,7571,7766,7962,8156,8351,8545,8739,8933,9126,9319, 9512,9704,9896,10087,10278,10469,10659,10849,11039,11228,11417,11605,11793,11980,12167,12353, 12539,12725,12910,13094,13278,13462,13645,13828,14010,14191,14372,14553,14732,14912,15090,15269, 15446,15623,15800,15976,16151,16325,16499,16673,16846,17018,17189,17360,17530,17700,17869,18037, 18204,18371,18537,18703,18868,19032,19195,19357,19519,19680,19841,20000,20159,20317,20475,20631, 20787,20942,21097,21250,21403,21554,21705,21856,22005,22154,22301,22448,22594,22739,22884,23027, 23170,23312,23452,23592,23732,23870,24007,24143,24279,24413,24547,24680,24812,24942,25072,25201, 25329,25456,25583,25708,25832,25955,26077,26199,26319,26438,26556,26674,26790,26905,27019,27133, 27245,27356,27466,27575,27683,27791,27897,28001,28105,28208,28310,28411,28510,28609,28706,28803, 28898,28992,29085,29178,29268,29358,29447,29535,29621,29707,29791,29874,29956,30037,30117,30195, 30273,30349,30425,30499,30572,30643,30714,30783,30852,30919,30985,31050,31113,31176,31237,31297, 31356,31414,31471,31526,31580,31633,31685,31736,31785,31834,31881,31926,31971,32015,32057,32098, 32138,32176,32214,32250,32285,32319,32351,32382,32413,32441,32469,32496,32521,32545,32568,32589, 32609,32629,32646,32663,32678,32693,32706,32717,32728,32737,32745,32752,32757,32762,32765,32767, 32767,32767,32765,32762,32757,32752,32745,32737,32728,32717,32706,32693,32678,32663,32646,32629, 32609,32589,32568,32545,32521,32496,32469,32441,32413,32382,32351,32319,32285,32250,32214,32176, 32138,32098,32057,32015,31971,31926,31881,31834,31785,31736,31685,31633,31580,31526,31471,31414, 31356,31297,31237,31176,31113,31050,30985,30919,30852,30783,30714,30643,30572,30499,30425,30349, 30273,30195,30117,30037,29956,29874,29791,29707,29621,29535,29447,29358,29268,29178,29085,28992, 28898,28803,28706,28609,28510,28411,28310,28208,28105,28001,27897,27791,27683,27575,27466,27356, 27245,27133,27019,26905,26790,26674,26556,26438,26319,26199,26077,25955,25832,25708,25583,25456, 25329,25201,25072,24942,24812,24680,24547,24413,24279,24143,24007,23870,23732,23592,23452,23312, 23170,23027,22884,22739,22594,22448,22301,22154,22005,21856,21705,21554,21403,21250,21097,20942, 20787,20631,20475,20317,20159,20000,19841,19680,19519,19357,19195,19032,18868,18703,18537,18371, 18204,18037,17869,17700,17530,17360,17189,17018,16846,16673,16499,16325,16151,15976,15800,15623, 15446,15269,15090,14912,14732,14553,14372,14191,14010,13828,13645,13462,13278,13094,12910,12725, 12539,12353,12167,11980,11793,11605,11417,11228,11039,10849,10659,10469,10278,10087,9896,9704, 9512,9319,9126,8933,8739,8545,8351,8156,7962,7766,7571,7375,7179,6983,6786,6589, 6392,6195,5998,5800,5602,5404,5205,5007,4808,4609,4410,4210,4011,3811,3611,3412, 3212,3011,2811,2611,2410,2210,2009,1808,1608,1407,1206,1005,804,603,402,201, 0,-201,-402,-603,-804,-1005,-1206,-1407,-1608,-1809,-2010,-2210,-2411,-2611,-2812,-3012, -3212,-3412,-3612,-3812,-4011,-4211,-4410,-4609,-4808,-5007,-5206,-5404,-5602,-5800,-5998,-6196, -6393,-6590,-6787,-6983,-7180,-7376,-7571,-7767,-7962,-8157,-8352,-8546,-8740,-8933,-9127,-9320, -9512,-9704,-9896,-10088,-10279,-10470,-10660,-10850,-11039,-11228,-11417,-11605,-11793,-11980,-12167,-12354, -12540,-12725,-12910,-13095,-13279,-13463,-13646,-13828,-14010,-14192,-14373,-14553,-14733,-14912,-15091,-15269, -15447,-15624,-15800,-15976,-16151,-16326,-16500,-16673,-16846,-17018,-17190,-17361,-17531,-17700,-17869,-18037, -18205,-18372,-18538,-18703,-18868,-19032,-19195,-19358,-19520,-19681,-19841,-20001,-20160,-20318,-20475,-20632, -20788,-20943,-21097,-21250,-21403,-21555,-21706,-21856,-22006,-22154,-22302,-22449,-22595,-22740,-22884,-23028, -23170,-23312,-23453,-23593,-23732,-23870,-24007,-24144,-24279,-24414,-24548,-24680,-24812,-24943,-25073,-25202, -25330,-25457,-25583,-25708,-25832,-25956,-26078,-26199,-26319,-26439,-26557,-26674,-26790,-26906,-27020,-27133, -27245,-27357,-27467,-27576,-27684,-27791,-27897,-28002,-28106,-28209,-28310,-28411,-28511,-28609,-28707,-28803, -28899,-28993,-29086,-29178,-29269,-29359,-29448,-29535,-29622,-29707,-29791,-29875,-29957,-30038,-30117,-30196, -30273,-30350,-30425,-30499,-30572,-30644,-30715,-30784,-30852,-30919,-30985,-31050,-31114,-31176,-31238,-31298, -31357,-31415,-31471,-31527,-31581,-31634,-31686,-31736,-31786,-31834,-31881,-31927,-31972,-32015,-32057,-32098, -32138,-32177,-32214,-32250,-32285,-32319,-32352,-32383,-32413,-32442,-32470,-32496,-32521,-32545,-32568,-32590, -32610,-32629,-32647,-32664,-32679,-32693,-32706,-32718,-32728,-32738,-32746,-32752,-32758,-32762,-32765,-32767, -32768,-32767,-32765,-32762,-32758,-32752,-32746,-32738,-32728,-32718,-32706,-32693,-32679,-32664,-32647,-32629, -32610,-32590,-32568,-32545,-32521,-32496,-32470,-32442,-32413,-32383,-32352,-32319,-32285,-32250,-32214,-32177, -32138,-32098,-32057,-32015,-31972,-31927,-31881,-31834,-31786,-31736,-31686,-31634,-31581,-31527,-31471,-31415, -31357,-31298,-31238,-31176,-31114,-31050,-30985,-30919,-30852,-30784,-30715,-30644,-30572,-30499,-30425,-30350, -30273,-30196,-30117,-30038,-29957,-29875,-29791,-29707,-29622,-29535,-29448,-29359,-29269,-29178,-29086,-28993, -28899,-28803,-28707,-28609,-28511,-28411,-28310,-28209,-28106,-28002,-27897,-27791,-27684,-27576,-27467,-27357, -27245,-27133,-27020,-26906,-26790,-26674,-26557,-26439,-26319,-26199,-26078,-25956,-25832,-25708,-25583,-25457, -25330,-25202,-25073,-24943,-24812,-24680,-24548,-24414,-24279,-24144,-24007,-23870,-23732,-23593,-23453,-23312, -23170,-23028,-22884,-22740,-22595,-22449,-22302,-22154,-22006,-21856,-21706,-21555,-21403,-21250,-21097,-20943, -20788,-20632,-20475,-20318,-20160,-20001,-19841,-19681,-19520,-19358,-19195,-19032,-18868,-18703,-18538,-18372, -18205,-18037,-17869,-17700,-17531,-17361,-17190,-17018,-16846,-16673,-16500,-16326,-16151,-15976,-15800,-15624, -15447,-15269,-15091,-14912,-14733,-14553,-14373,-14192,-14010,-13828,-13646,-13463,-13279,-13095,-12910,-12725, -12540,-12354,-12167,-11980,-11793,-11605,-11417,-11228,-11039,-10850,-10660,-10470,-10279,-10088,-9896,-9704, -9512,-9320,-9127,-8933,-8740,-8546,-8352,-8157,-7962,-7767,-7571,-7376,-7180,-6983,-6787,-6590, -6393,-6196,-5998,-5800,-5602,-5404,-5206,-5007,-4808,-4609,-4410,-4211,-4011,-3812,-3612,-3412, -3212,-3012,-2812,-2611,-2411,-2210,-2010,-1809,-1608,-1407,-1206,-1005,-804,-603,-402,-201, 0,201,402,603,804,1005,1206,1407,1608,1808,2009,2210,2410,2611,2811,3011, 3212,3412,3611,3811,4011,4210,4410,4609,4808,5007,5205,5404,5602,5800,5998,6195, 6392,6589,6786,6983,7179,7375,7571,7766,7962,8156,8351,8545,8739,8933,9126,9319, 9512,9704,9896,10087,10278,10469,10659,10849,11039,11228,11417,11605,11793,11980,12167,12353, 12539,12725,12910,13094,13278,13462,13645,13828,14010,14191,14372,14553,14732,14912,15090,15269, 15446,15623,15800,15976,16151,16325,16499,16673,16846,17018,17189,17360,17530,17700,17869,18037, 18204,18371,18537,18703,18868,19032,19195,19357,19519,19680,19841,20000,20159,20317,20475,20631, 20787,20942,21097,21250,21403,21554,21705,21856,22005,22154,22301,22448,22594,22739,22884,23027, 23170,23312,23452,23592,23732,23870,24007,24143,24279,24413,24547,24680,24812,24942,25072,25201, 25329,25456,25583,25708,25832,25955,26077,26199,26319,26438,26556,26674,26790,26905,27019,27133, 27245,27356,27466,27575,27683,27791,27897,28001,28105,28208,28310,28411,28510,28609,28706,28803, 28898,28992,29085,29178,29268,29358,29447,29535,29621,29707,29791,29874,29956,30037,30117,30195, 30273,30349,30425,30499,30572,30643,30714,30783,30852,30919,30985,31050,31113,31176,31237,31297, 31356,31414,31471,31526,31580,31633,31685,31736,31785,31834,31881,31926,31971,32015,32057,32098, 32138,32176,32214,32250,32285,32319,32351,32382,32413,32441,32469,32496,32521,32545,32568,32589, 32609,32629,32646,32663,32678,32693,32706,32717,32728,32737,32745,32752,32757,32762,32765,32767 }; #else static const uint16_t sineTable[257]={ 0,402,804,1206,1608,2010,2412,2814,3216,3617,4019,4420,4821,5222,5623,6023, 6424,6824,7223,7623,8022,8421,8820,9218,9616,10014,10411,10808,11204,11600,11996,12391, 12785,13179,13573,13966,14359,14751,15142,15533,15924,16313,16703,17091,17479,17866,18253,18639, 19024,19408,19792,20175,20557,20939,21319,21699,22078,22456,22834,23210,23586,23960,24334,24707, 25079,25450,25820,26189,26557,26925,27291,27656,28020,28383,28745,29106,29465,29824,30181,30538, 30893,31247,31600,31952,32302,32651,32999,33346,33692,34036,34379,34721,35061,35400,35738,36074, 36409,36743,37075,37406,37736,38064,38390,38715,39039,39361,39682,40001,40319,40635,40950,41263, 41575,41885,42194,42500,42806,43109,43411,43712,44011,44308,44603,44897,45189,45479,45768,46055, 46340,46624,46905,47185,47464,47740,48014,48287,48558,48827,49095,49360,49624,49885,50145,50403, 50659,50913,51166,51416,51664,51911,52155,52398,52638,52877,53113,53348,53580,53811,54039,54266, 54490,54713,54933,55151,55367,55582,55794,56003,56211,56417,56620,56822,57021,57218,57413,57606, 57797,57985,58171,58356,58537,58717,58895,59070,59243,59414,59582,59749,59913,60075,60234,60391, 60546,60699,60850,60998,61144,61287,61429,61567,61704,61838,61970,62100,62227,62352,62475,62595, 62713,62829,62942,63053,63161,63267,63371,63472,63571,63668,63762,63853,63943,64030,64114,64196, 64276,64353,64428,64500,64570,64638,64703,64765,64826,64883,64939,64992,65042,65090,65136,65179, 65219,65258,65293,65327,65357,65386,65412,65435,65456,65475,65491,65504,65515,65524,65530,65534, 65535, }; #endif int16_t sine(uint16_t angle) { #ifdef NZS_FAST_SINE return sineTable[angle]; #else int sign=1; int16_t ret; //our sine table has 1024 points per rotation so convert angle to closest step if (angle>=(SINE_STEPS/2)) { sign=-1; } angle=angle % (SINE_STEPS/2); //limit to 0-180 as sign takes care of 180-360 if (angle>(SINE_STEPS/4-1)) //if we are greater than 90 we need to look up table backwards { angle=(SINE_STEPS/2)-angle; } ret=(int16_t)(sineTable[angle]/2)*sign; return ret; #endif } int16_t cosine(uint16_t angle) { #ifdef NZS_FAST_SINE angle=angle+(SINE_STEPS/4); return sineTable[angle]; #else int sign=1; int16_t ret; //our sine table has 1024 points per rotation so convert angle to closest step if (angle>=(SINE_STEPS/4) and angle<(3*(SINE_STEPS/4))) { sign=-1; } angle=angle % (SINE_STEPS/2); //limit to 0-180 as sign takes care of 180-360 if (angle>(SINE_STEPS/4-1)) //if we are greater than 90 we need to look up table backwards { angle=(SINE_STEPS/2)-angle; } //for cosine we need 90 degree phase shift angle=(SINE_STEPS/4)-angle; ret=(int16_t)(sineTable[angle]/2)*sign; return ret; #endif } #pragma GCC pop_options ================================================ FILE: firmware/stepper_nano_zero/sine.h ================================================ /********************************************************************** * sine.h * * Created on: Dec 24, 2016 * Author: tstern * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef SINE_H_ #define SINE_H_ #include "board.h" #define SINE_STEPS (1024L) #define SINE_MAX ((int32_t)(32768L)) int16_t sine(uint16_t angle); int16_t cosine(uint16_t angle); #endif /* SINE_H_ */ ================================================ FILE: firmware/stepper_nano_zero/stepper_controller.cpp ================================================ /********************************************************************** * Author: tstern * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "stepper_controller.h" #include "nonvolatile.h" //for programmable parameters #include #include #include "steppin.h" #pragma GCC push_options #pragma GCC optimize ("-Ofast") #define WAIT_TC16_REGS_SYNC(x) while(x->COUNT16.STATUS.bit.SYNCBUSY); volatile bool TC5_ISR_Enabled=false; void setupTCInterrupts() { // Enable GCLK for TC4 and TC5 (timer counter input clock) GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID(GCM_TC4_TC5)); while (GCLK->STATUS.bit.SYNCBUSY); TC5->COUNT16.CTRLA.reg &= ~TC_CTRLA_ENABLE; // Disable TCx WAIT_TC16_REGS_SYNC(TC5) // wait for sync TC5->COUNT16.CTRLA.reg |= TC_CTRLA_MODE_COUNT16; // Set Timer counter Mode to 16 bits WAIT_TC16_REGS_SYNC(TC5) TC5->COUNT16.CTRLA.reg |= TC_CTRLA_WAVEGEN_MFRQ; // Set TC as normal Normal Frq WAIT_TC16_REGS_SYNC(TC5) TC5->COUNT16.CTRLA.reg |= TC_CTRLA_PRESCALER_DIV1; // Set perscaler WAIT_TC16_REGS_SYNC(TC5) TC5->COUNT16.CC[0].reg = F_CPU/NZS_CONTROL_LOOP_HZ; WAIT_TC16_REGS_SYNC(TC5) TC5->COUNT16.INTENSET.reg = 0; // disable all interrupts TC5->COUNT16.INTENSET.bit.OVF = 1; // enable overfollow // TC5->COUNT16.INTENSET.bit.MC0 = 1; // enable compare match to CC0 NVIC_SetPriority(TC5_IRQn, 2); // Enable InterruptVector NVIC_EnableIRQ(TC5_IRQn); // Enable TC TC5->COUNT16.CTRLA.reg |= TC_CTRLA_ENABLE; WAIT_TC16_REGS_SYNC(TC5) } static void enableTCInterrupts() { TC5_ISR_Enabled=true; NVIC_EnableIRQ(TC5_IRQn); TC5->COUNT16.INTENSET.bit.OVF = 1; // TC5->COUNT16.CTRLA.reg |= TC_CTRLA_ENABLE; //Enable TC5 // WAIT_TC16_REGS_SYNC(TC5) //wait for sync } static void disableTCInterrupts() { TC5_ISR_Enabled=false; //NVIC_DisableIRQ(TC5_IRQn); TC5->COUNT16.INTENCLR.bit.OVF = 1; } static bool enterCriticalSection() { bool state=TC5_ISR_Enabled; disableTCInterrupts(); return state; } static void exitCriticalSection(bool prevState) { if (prevState) { enableTCInterrupts(); } //else do nothing } void StepperCtrl::updateParamsFromNVM(void) { bool state=enterCriticalSection(); pPID.Kd=NVM->pPID.Kd*CTRL_PID_SCALING; pPID.Ki=NVM->pPID.Ki*CTRL_PID_SCALING; pPID.Kp=NVM->pPID.Kp*CTRL_PID_SCALING; vPID.Kd=NVM->vPID.Kd*CTRL_PID_SCALING; vPID.Ki=NVM->vPID.Ki*CTRL_PID_SCALING; vPID.Kp=NVM->vPID.Kp*CTRL_PID_SCALING; sPID.Kd=NVM->sPID.Kd*CTRL_PID_SCALING; sPID.Ki=NVM->sPID.Ki*CTRL_PID_SCALING; sPID.Kp=NVM->sPID.Kp*CTRL_PID_SCALING; if (NVM->SystemParams.parametersVaild) { memcpy((void *)&systemParams, (void *)&NVM->SystemParams, sizeof(systemParams)); LOG("Home pin %d",systemParams.homePin); }else { ERROR("This should never happen but just in case"); systemParams.microsteps=16; systemParams.controllerMode=CTRL_SIMPLE; systemParams.dirPinRotation=CW_ROTATION; //default to clockwise rotation when dir is high systemParams.errorLimit=(int32_t)ANGLE_FROM_DEGREES(1.8); systemParams.errorPinMode=ERROR_PIN_MODE_ENABLE; //default to enable pin systemParams.errorLogic=false; systemParams.homeAngleDelay=ANGLE_FROM_DEGREES(10); systemParams.homePin=-1; //no homing pin configured } //default the error pin to input, if it is an error pin the // handler for this will change the pin to be an output. // for bidirection error it has to handle input/output it's self as well. // This is not the cleanest way to handle this... // TODO implement this cleaner? pinMode(PIN_ERROR, INPUT_PULLUP); //we have input pin if (NVM->motorParams.parametersVaild) { memcpy((void *)&motorParams, (void *)&NVM->motorParams, sizeof(motorParams)); } else { //MotorParams_t Params; motorParams.fullStepsPerRotation=200; motorParams.currentHoldMa=500; motorParams.currentMa=1500; motorParams.homeHoldMa=200; motorParams.homeMa=800; motorParams.motorWiring=true; //memcpy((void *)&Params, (void *)&motorParams, sizeof(motorParams)); //nvmWriteMotorParms(Params); } stepperDriver.setRotationDirection(motorParams.motorWiring); exitCriticalSection(state); } void StepperCtrl::motorReset(void) { //when we reset the motor we want to also sync the motor // phase. Therefore we move forward a few full steps then back // to sync motor phasing, leaving the motor at "phase 0" bool state=enterCriticalSection(); // stepperDriver.move(0,motorParams.currentMa); // delay(100); // stepperDriver.move(A4954_NUM_MICROSTEPS,motorParams.currentMa); // delay(100); // stepperDriver.move(A4954_NUM_MICROSTEPS*2,motorParams.currentMa); // delay(100); // stepperDriver.move(A4954_NUM_MICROSTEPS*3,motorParams.currentMa); // delay(100); // stepperDriver.move(A4954_NUM_MICROSTEPS*2,motorParams.currentMa); // delay(100); // stepperDriver.move(A4954_NUM_MICROSTEPS,motorParams.currentMa); // delay(100); stepperDriver.move(0,motorParams.currentMa); delay(1000); setLocationFromEncoder(); //measure new starting point exitCriticalSection(state); } void StepperCtrl::setLocationFromEncoder(void) { numSteps=0; currentLocation=0; if (calTable.calValid()) { int32_t n,x; int32_t calIndex; Angle a; //set our angles based on previous cal data x=sampleMeanEncoder(200); a=calTable.fastReverseLookup(x); //our cal table starts at angle zero, so lets set starting based on this and stepsize LOG("start angle %d, encoder %d", (uint16_t)a,x); // we were rounding to nearest full step, but this should not be needed TBS 10/12/2017 // //TODO we need to handle 0.9 degree motor // if (CALIBRATION_TABLE_SIZE == motorParams.fullStepsPerRotation) // { // n=(int32_t)ANGLE_STEPS/CALIBRATION_TABLE_SIZE; // // calIndex=((int32_t)((uint16_t)a+n/2)*CALIBRATION_TABLE_SIZE)/ANGLE_STEPS; //find calibration index // if (calIndex>CALIBRATION_TABLE_SIZE) // { // calIndex-=CALIBRATION_TABLE_SIZE; // } // a=(uint16_t)((calIndex*ANGLE_STEPS)/CALIBRATION_TABLE_SIZE); // } x=(int32_t)((((float)(uint16_t)a)*360.0/(float)ANGLE_STEPS)*1000); LOG("start angle after rounding %d %d.%03d", (uint16_t)a,x/1000,x%1000); //we need to set our numSteps numSteps=DIVIDE_WITH_ROUND( ((int32_t)a *motorParams.fullStepsPerRotation*systemParams.microsteps),ANGLE_STEPS); currentLocation=(uint16_t)a; } zeroAngleOffset=getCurrentLocation(); //zero the angle shown on LCD } int64_t StepperCtrl::getZeroAngleOffset(void) { int64_t x; bool state=enterCriticalSection(); x=zeroAngleOffset; exitCriticalSection(state); return x; } void StepperCtrl::setAngle(int64_t angle) { bool state=enterCriticalSection(); zeroAngleOffset=getCurrentLocation()-angle; exitCriticalSection(state); } void StepperCtrl::setZero(void) { //we want to set the starting angle to zero. bool state=enterCriticalSection(); zeroAngleOffset=getCurrentLocation(); exitCriticalSection(state); } void StepperCtrl::encoderDiagnostics(char *ptrStr) { bool state=TC5_ISR_Enabled; disableTCInterrupts(); encoder.diagnostics(ptrStr); if (state) enableTCInterrupts(); } //TODO This function does two things, set rotation direction // and measures step size, it should be two functions. //return is anlge in degreesx100 ie 360.0 is returned as 36000 float StepperCtrl::measureStepSize(void) { int32_t angle1,angle2,x,i; bool feedback=enableFeedback; int32_t microsteps=systemParams.microsteps; systemParams.microsteps=1; enableFeedback=false; motorParams.motorWiring=true; //assume we are forward wiring to start with stepperDriver.setRotationDirection(motorParams.motorWiring); ///////////////////////////////////////// //// Measure the full step size ///// /// Note we assume machine can take one step without issue/// LOG("reset motor"); motorReset(); //this puts stepper motor at stepAngle of zero LOG("sample encoder"); angle1=sampleMeanEncoder(200); LOG("move"); stepperDriver.move(A4954_NUM_MICROSTEPS/2,motorParams.currentMa); //move one half step 'forward' delay(100); stepperDriver.move(A4954_NUM_MICROSTEPS,motorParams.currentMa); //move one half step 'forward' delay(500); LOG("sample encoder"); angle2=sampleMeanEncoder(200); LOG("Angles %d %d",angle1,angle2); if ((abs(angle2-angle1))>(ANGLE_STEPS/2)) { //we crossed the wrap around if (angle1>angle2) { angle1=angle1+(int32_t)ANGLE_STEPS; }else { angle2=angle2+(int32_t)ANGLE_STEPS; } } LOG("Angles %d %d",angle1,angle2); //when we are increase the steps in the stepperDriver.move() command // we want the encoder increasing. This ensures motor is moving clock wise // when encoder is increasing. // if (angle2>angle1) // { // motorParams.motorWiring=true; // stepperDriver.setRotationDirection(true); // LOG("Forward rotating"); // }else // { // //the motor is wired backwards so correct in stepperDriver // motorParams.motorWiring=false; // stepperDriver.setRotationDirection(false); // LOG("Reverse rotating"); // } x=((int64_t)(angle2-angle1)*36000)/(int32_t)ANGLE_STEPS; // if x is ~180 we have a 1.8 degree step motor, if it is ~90 we have 0.9 degree step LOG("%angle delta %d %d (%d %d)",x,abs(angle2-angle1),angle1,angle2 ); //move back stepperDriver.move(-A4954_NUM_MICROSTEPS/2,motorParams.currentMa); //move one half step 'forward' delay(100); stepperDriver.move(-A4954_NUM_MICROSTEPS,motorParams.currentMa); //move one half step 'forward' systemParams.microsteps=microsteps; enableFeedback=feedback; return ((float)x)/100.0; } int32_t StepperCtrl::measureError(void) { //LOG("current %d desired %d %d",(int32_t) currentLocation, (int32_t)getDesiredLocation(), numSteps); return ((int32_t)currentLocation-(int32_t)getDesiredLocation()); } /* bool StepperCtrl::changeMicrostep(uint16_t microSteps) { bool state=TC5_ISR_Enabled; disableTCInterrupts(); systemParams.microsteps=microSteps; motorReset(); if (state) enableTCInterrupts(); return true; } */ Angle StepperCtrl::maxCalibrationError(void) { //Angle startingAngle; bool done=false; int32_t mean; int32_t maxError=0, j; int16_t dist; uint16_t angle=0; bool feedback=enableFeedback; uint16_t microSteps=systemParams.microsteps; int32_t steps; bool state=TC5_ISR_Enabled; disableTCInterrupts(); if (false == calTable.calValid()) { return ANGLE_MAX; } enableFeedback=false; j=0; LOG("Running calibration test"); systemParams.microsteps=1; motorReset(); steps=0; while(!done) { Angle cal; Angle act, desiredAngle; //todo we should measure mean and wait until stable. delay(200); mean=sampleMeanEncoder(200); desiredAngle=(uint16_t)(getDesiredLocation() & 0x0FFFFLL); cal=calTable.getCal(desiredAngle); dist=Angle(mean)-cal; act=calTable.fastReverseLookup(cal); LOG("actual %d, cal %d",mean,(uint16_t)cal); LOG("desired %d",(uint16_t)desiredAngle); LOG("numSteps %d", numSteps); LOG("cal error for step %d is %d",j,dist); LOG("mean %d, cal %d",mean, (uint16_t)cal); updateStep(0,1); // move one half step at a time, a full step move could cause a move backwards depending on how current ramps down steps+=A4954_NUM_MICROSTEPS/2; stepperDriver.move(steps,motorParams.currentMa); delay(50); steps+=A4954_NUM_MICROSTEPS/2; stepperDriver.move(steps,motorParams.currentMa); if (400==motorParams.fullStepsPerRotation) { delay(100); updateStep(0,1); // move one half step at a time, a full step move could cause a move backwards depending on how current ramps down steps+=A4954_NUM_MICROSTEPS/2; stepperDriver.move(steps,motorParams.currentMa); delay(100); steps+=A4954_NUM_MICROSTEPS/2; stepperDriver.move(steps,motorParams.currentMa); } //delay(400); if (abs(dist)>maxError) { maxError=abs(dist); } j++; if (j>=(1*CALIBRATION_TABLE_SIZE+3)) { done=true; } } systemParams.microsteps=microSteps; motorReset(); enableFeedback=feedback; if (state) enableTCInterrupts(); LOG("max error is %d cnts", maxError); return Angle((uint16_t)maxError); } //The encoder needs to be calibrated to the motor. // we will assume full step detents are correct, // ex 1.8 degree motor will have 200 steps for 360 degrees. // We also need to calibrate the phasing of the motor // to the A4954. This requires that the A4954 "step angle" of // zero is the first entry in the calibration table. bool StepperCtrl::calibrateEncoder(void) { int32_t x,i,j; uint32_t angle=0; int32_t steps; bool done=false; int32_t mean; uint16_t microSteps=systemParams.microsteps; bool feedback=enableFeedback; bool state=TC5_ISR_Enabled; disableTCInterrupts(); enableFeedback=false; systemParams.microsteps=1; LOG("reset motor"); motorReset(); LOG("Starting calibration"); delay(200); steps=0; j=0; while(!done) { int ii,N; Angle cal,desiredAngle; desiredAngle=(uint16_t)(getDesiredLocation() & 0x0FFFFLL); cal=calTable.getCal(desiredAngle); delay(200); mean=sampleMeanEncoder(200); LOG("Previous cal distance %d, %d, mean %d, cal %d",j, cal-Angle((uint16_t)mean), mean, (uint16_t)cal); calTable.updateTableValue(j,mean); updateStep(0,1); N=2; // move one half step at a time, a full step move could cause a move backwards depending on how current ramps down for (ii=0; ii=CALIBRATION_TABLE_SIZE) { done=true; } } //calTable.printCalTable(); //calTable.smoothTable(); //calTable.printCalTable(); calTable.saveToFlash(); //saves the calibration to flash calTable.printCalTable(); systemParams.microsteps=microSteps; motorReset(); enableFeedback=feedback; if (state) enableTCInterrupts(); return done; } stepCtrlError_t StepperCtrl::begin(void) { int i; float x; enableFeedback=false; velocity=0; currentLocation=0; numSteps=0; //we have to update from NVM before moving motor updateParamsFromNVM(); //update the local cache from the NVM LOG("start up encoder"); if (false == encoder.begin(PIN_AS5047D_CS)) { return STEPCTRL_NO_ENCODER; } LOG("cal table init"); calTable.init(); startUpEncoder=(uint16_t)getEncoderAngle(); WARNING("start up encoder %d",startUpEncoder); LOG("start stepper driver"); stepperDriver.begin(); #ifdef NEMA17_SMART_STEPPER_3_21_2017 if (NVM->motorParams.parametersVaild) { //lets read the motor voltage if (GetMotorVoltage()<5) { //if we have less than 5 volts the motor is not powered uint32_t x; x=(uint32_t)(GetMotorVoltage()*1000.0); ERROR("Motor voltage is %" PRId32 "mV",x); //default printf does not support floating point numbers ERROR("Motor may not have power"); return STEPCTRL_NO_POWER; } bool state=enterCriticalSection(); setLocationFromEncoder(); //measure new starting point exitCriticalSection(state); }else { LOG("measuring step size"); x=measureStepSize(); if (abs(x)<0.5) { ERROR("Motor may not have power"); return STEPCTRL_NO_POWER; } } #else LOG("measuring step size"); x=measureStepSize(); if (abs(x)<0.5) { ERROR("Motor may not have power"); return STEPCTRL_NO_POWER; } #endif LOG("Checking the motor parameters"); //todo we might want to move this up a level to the NZS // especially since it has default values if (false == NVM->motorParams.parametersVaild) { MotorParams_t params; WARNING("NVM motor parameters are not set, we will update"); //power could have just been applied and step size read wrong // if we are more than 200 steps/rotation which is most common // lets read again just to be sure. if (abs(x)<1.5) { //run step test a second time to be sure x=measureStepSize(); } if (x>0) { motorParams.motorWiring=true; } else { motorParams.motorWiring=false; } if (abs(x)<=1.2) { motorParams.fullStepsPerRotation=400; }else { motorParams.fullStepsPerRotation=200; } memcpy((void *)¶ms, (void *)&motorParams,sizeof(motorParams)); nvmWriteMotorParms(params); } LOG("Motor params are now good"); LOG("fullSteps %d", motorParams.fullStepsPerRotation); LOG("motorWiring %d", motorParams.motorWiring); LOG("currentMa %d", motorParams.currentMa); LOG("holdCurrentMa %d", motorParams.currentHoldMa); LOG("homeMa %d", motorParams.homeMa); LOG("homeHoldMa %d", motorParams.homeHoldMa); updateParamsFromNVM(); //update the local cache from the NVM if (false == calTable.calValid()) { return STEPCTRL_NO_CAL; } enableFeedback=true; setupTCInterrupts(); enableTCInterrupts(); return STEPCTRL_NO_ERROR; } Angle StepperCtrl::sampleAngle(void) { uint16_t angle; int32_t x,y; #ifdef NZS_AS5047_PIPELINE //read encoder twice such that we get the latest sample as the pipeline is always once sample behind y=encoder.readEncoderAnglePipeLineRead(); //convert the 14 bit encoder value to a 16 bit number x=encoder.readEncoderAnglePipeLineRead(); angle=((uint32_t)(x)*4); //convert the 14 bit encoder value to a 16 bit number #else angle=((uint32_t)encoder.readEncoderAngle())<<2; //convert the 14 bit encoder value to a 16 bit number #endif return Angle(angle); } //when sampling the mean of encoder if we are on roll over // edge we can have an issue so we have this function // to do the mean correctly Angle StepperCtrl::sampleMeanEncoder(int32_t numSamples) { int32_t i,last,x=0; int64_t mean=0; int32_t min,max; mean=0; for (i=0; i<(numSamples); i++) { int32_t d; last=x; x=(((int32_t)encoder.readEncoderAngle())*4); if (encoder.getError()) { #ifndef MECHADUINO_HARDWARE SerialUSB.println("AS5047 Error"); #else Serial5.print("AS5047 Error"); #endif delay(1000); return 0; } if(i==0) { last=x; min=x; max=x; } //LOG("i %d,min %d, max %d, last %d, x %d", i, min, max, last, x); if (abs(last-x)>65536/2) { if (last>x) { x=x+65536; } else { x=x-65536; } } if (x>max) { max=x; } if (xn) { ret-=n; } while(ret<-n) { ret+=n; } n=(int32_t)(ret); LOG("s is %d %d",n,steps); stepperDriver.move(n,motorParams.currentMa); } } int64_t StepperCtrl::getDesiredLocation(void) { int64_t ret; int32_t n; bool state=TC5_ISR_Enabled; disableTCInterrupts(); n=motorParams.fullStepsPerRotation * systemParams.microsteps; ret=((int64_t)numSteps * (int64_t)ANGLE_STEPS+(n/2))/n ; if (state) enableTCInterrupts(); return ret; } //int32_t StepperCtrl::getSteps(void) //{ // int32_t ret; // bool state=enterCriticalSection(); // ret=numSteps; // exitCriticalSection(state); // return ret; //} void StepperCtrl::moveToAbsAngle(int32_t a) { int64_t ret; int32_t n; n=motorParams.fullStepsPerRotation * systemParams.microsteps; ret=(((int64_t)a+zeroAngleOffset)*n+ANGLE_STEPS/2)/(int32_t)ANGLE_STEPS; bool state=enterCriticalSection(); numSteps=ret; exitCriticalSection(state); } void StepperCtrl::moveToAngle(int32_t a, uint32_t ma) { //we need to convert 'Angle' to A4954 steps a=a % ANGLE_STEPS; //we only interested in the current angle a=DIVIDE_WITH_ROUND( (a*motorParams.fullStepsPerRotation*A4954_NUM_MICROSTEPS), ANGLE_STEPS); //LOG("move %d %d",a,ma); stepperDriver.move(a,ma); } Angle StepperCtrl::getEncoderAngle(void) { Angle a; bool state=enterCriticalSection(); a=calTable.fastReverseLookup(sampleAngle()); exitCriticalSection(state); return a; } int64_t StepperCtrl::getCurrentLocation(void) { Angle a; int32_t x; bool state=TC5_ISR_Enabled; disableTCInterrupts(); a=calTable.fastReverseLookup(sampleAngle()); x=(int32_t)a - (int32_t)((currentLocation) & ANGLE_MAX); if (x>((int32_t)ANGLE_STEPS/2)) { currentLocation -= ANGLE_STEPS; } if (x<-((int32_t)ANGLE_STEPS/2)) { currentLocation += ANGLE_STEPS; } currentLocation=(currentLocation & 0xFFFFFFFFFFFF0000UL) | (uint16_t)a; if (state) enableTCInterrupts(); return currentLocation; } int64_t StepperCtrl::getCurrentAngle(void) { int64_t x; x=getCurrentLocation()-zeroAngleOffset; return x; } int64_t StepperCtrl::getDesiredAngle(void) { int64_t x; x=getDesiredLocation()-zeroAngleOffset; return x; } void StepperCtrl::setVelocity(int64_t vel) { bool state=enterCriticalSection(); velocity=vel; exitCriticalSection(state); } int64_t StepperCtrl::getVelocity(void) { int64_t vel; bool state=enterCriticalSection(); vel=velocity; exitCriticalSection(state); return vel; } void StepperCtrl::PrintData(void) { char s[128]; bool state=enterCriticalSection(); sprintf(s, "%u,%u,%u", (uint32_t)numSteps,(uint32_t)getDesiredAngle(),(uint32_t)getCurrentAngle()); #ifndef MECHADUINO_HARDWARE SerialUSB.println(s); #endif exitCriticalSection(state); } //this is the velocity PID feedback loop bool StepperCtrl::vpidFeedback(int64_t desiredLoc, int64_t currentLoc, Control_t *ptrCtrl) { int32_t fullStep=ANGLE_STEPS/motorParams.fullStepsPerRotation; static int64_t lastY=getCurrentLocation(); static int32_t lastError=0; static int64_t Iterm=0; int64_t y,z; int64_t v,dy; int64_t u; //get the current location y =currentLoc; v=y-lastY; //add in phase prediction y=y+calculatePhasePrediction(currentLoc); z=y; lastY=y; v=v*NZS_CONTROL_LOOP_HZ; if (enableFeedback) //if ((micros()-lastCall)>(updateRate/10)) { int64_t error,U; error = velocity-v; Iterm += (vPID.Ki * error); if (Iterm>(16*4096*CTRL_PID_SCALING *(int64_t)motorParams.currentMa)) { Iterm=(16*4096*CTRL_PID_SCALING *(int64_t)motorParams.currentMa); } if (Iterm<-(16*4096*CTRL_PID_SCALING *(int64_t)motorParams.currentMa)) { Iterm=-(16*4096*CTRL_PID_SCALING*(int64_t)motorParams.currentMa); } u=((vPID.Kp * error) + Iterm - (vPID.Kd *(lastError-error))); U=abs(u)/CTRL_PID_SCALING/1024; //scale the error to make PID params close to 1.0;//scale the error to make PID params close to 1.0 by dividing by 1024 if (U>motorParams.currentMa) { U=motorParams.currentMa; } //when error is positive we need to move reverse direction if (u>0) { z=z+(fullStep); }else { z=z-(fullStep); } ptrCtrl->ma=U; ptrCtrl->angle=(int32_t)z; moveToAngle(z,U); loopError=error; lastError=error; } else { lastError=0; Iterm=0; } if (abs(lastError)>(systemParams.errorLimit)) { return 1; } return 0; } //Since we are doing fixed point math our // threshold needs to be large. // We need a large threshold when we have fast update // rate as well. But for most part it is random bool StepperCtrl::pidFeedback(int64_t desiredLoc, int64_t currentLoc, Control_t *ptrCtrl) { static int count=0; static int32_t maxError=0; static int32_t lastError=0; static int32_t Iterm=0; int32_t ma; int64_t y; int32_t fullStep=ANGLE_STEPS/motorParams.fullStepsPerRotation; int32_t dy; y=currentLoc; //add in phase prediction y=y+calculatePhasePrediction(currentLoc); if (enableFeedback) //if ((micros()-lastCall)>(updateRate/10)) { int64_t error,u; int32_t U,x; //error is in units of degrees when 360 degrees == 65536 error=(desiredLoc-y); //error is currentPos-desiredPos Iterm+=(pPID.Ki * error); if (systemParams.homePin>0 && digitalRead(systemParams.homePin)==0) { ma=motorParams.homeMa; } else { ma=motorParams.currentMa; } //Over the long term we do not want error // to be much more than our threshold if (Iterm> (ma*CTRL_PID_SCALING) ) { Iterm=(ma*CTRL_PID_SCALING) ; } if (Iterm<-(ma*CTRL_PID_SCALING) ) { Iterm=-(ma*CTRL_PID_SCALING) ; } u=((pPID.Kp * error) + Iterm - (pPID.Kd *(lastError-error))); U=abs(u)/CTRL_PID_SCALING; if (U>ma) { U=ma; } //when error is positive we need to move reverse direction if (u>0) { y=y+fullStep; }else { y=y-fullStep; } ptrCtrl->ma=U; ptrCtrl->angle=(int32_t)y; moveToAngle(y,U); loopError=error; lastError=error; }else { lastError=0; Iterm=0; } if (abs(lastError)>(systemParams.errorLimit)) { return 1; } return 0; } // the phase prediction tries to predict error from sensor based // on current location and previous location. // TODO our error can help in the phase prediction. // if the error int64_t StepperCtrl::calculatePhasePrediction(int64_t currentLoc) { static int64_t lastLoc=0; static int32_t mean=0; int32_t dx,x; #ifndef ENABLE_PHASE_PREDICTION return 0; #endif //what was our change in the location dx=currentLoc-lastLoc; //max value is typically less than 327(1.8 degrees) or 163(0.9 degree) //if the motor direction changes, zero phase prediction if (SIGN(dx) != SIGN(mean)) { //last thing we want is phase prediction during direction change. mean=0; } else { if (abs(dx)>abs(mean)) { //increase mean really slowly, 2048 ~ 1/3 second with 6khz processing loop // in fixed point since the dx is so small we need to scale it up to average // dx has be be greater than 8 to change the mean... // this limits the acceleration of motor above max processing speed (6k*1.8)=1800RPM // however I doubt the motor can accelerate that fast with any load... // The average helps prevent external impulse error from causing prediction to cause issues. mean=DIVIDE_WITH_ROUND(2047*mean + dx*128, 2048); }else { //decrease fast //do not add more phase prediction than the difference in last two samples. mean=dx*128; } } lastLoc=currentLoc; x= mean/128; //scale back to normal return x; } bool StepperCtrl::determineError(int64_t currentLoc,int64_t error) { static int64_t lastLocation=0; static int64_t lastError=0; static int64_t lastVelocity=0; int64_t velocity; //since this is called on periodic timer the velocity // is propotional to the change in location // one rotation per second is velocity of 10, assumming 6khz update rate // one rotation per minute is 10/60 velocity units // since this is less than 1 we will scale the velo velocity=(currentLoc-lastLocation); if (velocity>0 && lastVelocity>0) { } lastVelocity=velocity; lastError=error; lastLocation=currentLoc; } //this was written to do the PID loop not modeling a DC servo // but rather using features of stepper motor. bool StepperCtrl::simpleFeedback(int64_t desiredLoc, int64_t currentLoc, Control_t *ptrCtrl) { static uint32_t t0=0; static uint32_t calls=0; bool ret=false; static int32_t maxError=0; static int32_t lastError=0; static int32_t i=0; static int32_t iTerm=0; //static int64_t lastY=getCurrentLocation(); static int32_t velocity=0; static int32_t errorCount=0; static bool lastProbeState=false; static int64_t probeStartAngle=0; static int32_t maxMa=0; static int64_t filteredError=0; static int32_t probeCount=0; int32_t fullStep=ANGLE_STEPS/motorParams.fullStepsPerRotation; int32_t ma=0; int64_t y; //estimate our current location based on the encoder y=currentLoc; //add in phase prediction y=y+calculatePhasePrediction(currentLoc); //we can limit the velocity by controlling the amount we move per call to this function // this only works for velocity greater than 100rpm /* if (velocity!=0) { fullStep=velocity/NZS_CONTROL_LOOP_HZ; } if (fullStep==0) { fullStep=1; //this RPM of (1*NZS_CONTROL_LOOP_HZ)/60 ie at 6Khz it is 100RPM } */ if (enableFeedback) { int64_t error; int32_t u; int32_t x; int32_t kp; //error is in units of degrees when 360 degrees == 65536 error=(desiredLoc-y);//measureError(); //error is currentPos-desiredPos //data[i]=(int16_t)error; //i++; if (i>=N_DATA) { i=0; } kp=sPID.Kp; if (1)//(abs(error)<(fullStep)) { iTerm+=(sPID.Ki*error); x=iTerm/CTRL_PID_SCALING; }else { kp=(CTRL_PID_SCALING*9)/10; x=0; iTerm=0; } if (x>fullStep) { x=fullStep; iTerm=fullStep; } if (x<-fullStep) { x=-fullStep; iTerm=-fullStep; } u=(kp * error)/CTRL_PID_SCALING+x+(sPID.Kd *(error-lastError))/CTRL_PID_SCALING; //limit error to full step if (u>fullStep) { u=fullStep; } if (u<-fullStep) { u=-fullStep; } ma=(abs(u)*(motorParams.currentMa-motorParams.currentHoldMa))/ fullStep + motorParams.currentHoldMa; if (ma>motorParams.currentMa) { ma=motorParams.currentMa; } //maxMa=motorParams.currentMa; if (systemParams.homePin>=0) { if (digitalRead(systemParams.homePin)==0) { if (lastProbeState==false) { //record our current angle for homing probeStartAngle=desiredLoc; probeCount=0; maxMa=0; } lastProbeState=true; probeCount++; //we will lower current after whe have moved some amount if (probeCount > NZS_CONTROL_LOOP_HZ && probeCount <(2* NZS_CONTROL_LOOP_HZ)) { maxMa+=ma; if (abs(error)>maxError) { maxError=abs(error); } } if (probeCount>(2*NZS_CONTROL_LOOP_HZ)) { // ma=(abs(u)*(maxMa))/ fullStep;// + motorParams.homeHoldMa; // if (ma>motorParams.homeMa) // { // ma=motorParams.homeMa; // } //if (ma>maxMa/NZS_CONTROL_LOOP_HZ) { ma=((maxMa/NZS_CONTROL_LOOP_HZ)*9)/10; } } } else { lastProbeState=false; } }else { maxError=0; probeCount=0; //maxMa=0; } y=y+u; ptrCtrl->ma=ma; ptrCtrl->angle=(int32_t)y; moveToAngle(y,ma); //35us lastError=error; loopError=error; //stepperDriver.limitCurrent(99); } //filteredError=(filteredError*15+lastError)/16; if (probeCount>(2*NZS_CONTROL_LOOP_HZ)) { if (abs(lastError) > maxError ) { errorCount++; if (errorCount>(10)) { return 1; } return 0; } } else { if (abs(lastError) > systemParams.errorLimit) { errorCount++; if (errorCount>(NZS_CONTROL_LOOP_HZ/128)) // error needs to exist for some time period { return 1; } return 0; } } if (errorCount>0) { errorCount--; } //errorCount=0; stepperDriver.limitCurrent(99); //reduce noise on low error return 0; } void StepperCtrl::enable(bool enable) { bool state=TC5_ISR_Enabled; disableTCInterrupts(); bool feedback=enableFeedback; stepperDriver.enable(enable); //enable or disable the stepper driver as needed if (enabled==true && enable==false) { feedback = false; } if (enabled==false && enable==true) //if we are enabling previous disabled motor { feedback = true; setLocationFromEncoder(); } enabled=enable; enableFeedback=feedback; if (state) enableTCInterrupts(); } /* void StepperCtrl::testRinging(void) { uint16_t c; int32_t steps; int32_t microSteps=systemParams.microsteps; bool feedback=enableFeedback; enableFeedback=false; systemParams.microsteps=1; motorReset(); for (c=2000; c>10; c=c-10) { SerialUSB.print("Current "); SerialUSB.println(c); steps+=A4954_NUM_MICROSTEPS; stepperDriver.move(steps,NVM->SystemParams.currentMa); currentLimit=false; measure(); } systemParams.microsteps=microSteps; motorReset(); enableFeedback=feedback; } */ //returns -1 if no data, else returns number of data points remaining. int32_t StepperCtrl::getLocation(Location_t *ptrLoc) { bool state=enterCriticalSection(); int32_t n; //check for empty if (locReadIndx==locWriteIndx) { //empty data exitCriticalSection(state); return -1; } //else read data memcpy(ptrLoc,(void *)&locs[locReadIndx], sizeof(Location_t)); //update the read index locReadIndx=(locReadIndx+1)%MAX_NUM_LOCATIONS; //calculate number of locations left n=((locWriteIndx+MAX_NUM_LOCATIONS)-locReadIndx)%MAX_NUM_LOCATIONS; exitCriticalSection(state); return n; } void StepperCtrl::updateLocTable(int64_t desiredLoc, int64_t currentLoc, Control_t *ptrCtrl) { bool state=enterCriticalSection(); int32_t next; // set the next write location next=(locWriteIndx+1)%MAX_NUM_LOCATIONS; if (next==locReadIndx) { //we are full, exit exitCriticalSection(state); //RED_LED(true); //turn Red LED on to indciate buffer full return; } //use ticks for the moment so we can tell if we miss data on the print. locs[locWriteIndx].microSecs=(int32_t)micros(); locs[locWriteIndx].desiredLoc=(int32_t)(desiredLoc-zeroAngleOffset); locs[locWriteIndx].actualLoc=(int32_t)(currentLoc-zeroAngleOffset); locs[locWriteIndx].angle=(ptrCtrl->angle-zeroAngleOffset); locs[locWriteIndx].ma=ptrCtrl->ma; locWriteIndx=next; exitCriticalSection(state); } bool StepperCtrl::processFeedback(void) { bool ret; int32_t us,j; Control_t ctrl; int64_t desiredLoc; int64_t currentLoc; int32_t steps; static int64_t mean=0;; us=micros(); #ifdef USE_TC_STEP static int64_t lastSteps; int64_t x; x=getSteps()-lastSteps; updateSteps(x); lastSteps+=x; #endif // steps=getSteps(); // if (steps>0) // { // requestStep(1, (uint16_t)steps); // }else // { // requestStep(0, (uint16_t)(-steps)); // } desiredLoc=getDesiredLocation(); currentLoc=getCurrentLocation(); mean=(31*mean+currentLoc+16)/32; #ifdef A5995_DRIVER //the A5995 is has more driver noise if (abs(currentLoc-mean)PIDparams.Kp; // pKi=NVM->PIDparams.Ki; // pKd=NVM->PIDparams.Kd; // threshold=NVM->PIDparams.Threshold; //enableTCInterrupts(); moveToAngle(angle,motorParams.currentMa); //moveToAngle(angle,NVM->SystemParams.currentMa); /* //next lets measure our noise on the encoder noiseMin=(int32_t)ANGLE_MAX; noiseMax=-(int32_t)ANGLE_MAX; mean=0; j=1000000UL/NZS_CONTROL_LOOP_HZ; prevAngle=sampleAngle(); for (i=0; i<(NZS_CONTROL_LOOP_HZ/2); i++) { Angle a; a=sampleAngle(); error=(int32_t)(prevAngle-a); if (errornoiseMax) { noiseMax=error; } mean=mean+(int32_t)a; delayMicroseconds(j); } mean=mean/i; while (mean>ANGLE_MAX) { mean=mean-ANGLE_STEPS; } while (mean<0) { mean=mean+ANGLE_STEPS; } //mean is the average of the encoder. */ stepperDriver.move(0,motorParams.currentMa); delay(1000); //now we need to do the relay control for (i=0; i<10; i++) { startAngle=getCurrentLocation(); LOG("Start %d", (int32_t)startAngle); } thres=startAngle + (int32_t)((ANGLE_STEPS/motorParams.fullStepsPerRotation)*10/9); LOG("Thres %d, start %d",(int32_t)thres,(int32_t)startAngle); eMin=(int32_t)ANGLE_MAX; eMax=-(int32_t)ANGLE_MAX; int32_t reset=0; int32_t force=(motorParams.currentMa); for (i=0; i<100; i++) { int32_t error; if (reset) { motorReset(); stepperDriver.move(0,motorParams.currentMa); delay(1000); startAngle=getCurrentLocation(); LOG("Start %d", (int32_t)startAngle); force=force-100; eMin=(int32_t)ANGLE_MAX; eMax=-(int32_t)ANGLE_MAX; if (force<100) { i=100; break; } LOG("force set to %d",force); i=0; } reset=0; stepperDriver.move(A4954_NUM_MICROSTEPS,force); //moveToAngle(startAngle+(ANGLE_STEPS/motorParams.fullStepsPerRotation),force); //stepperDriver.move(A4954_NUM_MICROSTEPS,NVM->SystemParams.currentMa); t0=micros(); error=0; while(error<=((ANGLE_STEPS/motorParams.fullStepsPerRotation)/2+40)) { int32_t y; y=getCurrentLocation(); error=y-startAngle; //LOG("Error1 %d",error); if (erroreMax) { eMax=error; } if (abs(error)>ANGLE_STEPS/motorParams.fullStepsPerRotation*2) { LOG("large Error1 %d, %d, %d",error, y, startAngle); reset=1; break; } } stepperDriver.move(0,force); //stepperDriver.move(0,NVM->SystemParams.currentMa); t1=micros(); error=(ANGLE_STEPS/motorParams.fullStepsPerRotation); while(error>=((ANGLE_STEPS/motorParams.fullStepsPerRotation)/2-40)) { error=getCurrentLocation()-startAngle; //LOG("Error2 %d",error); if (erroreMax) { eMax=error; } if (abs(error)>ANGLE_STEPS/motorParams.fullStepsPerRotation*2) { LOG("large Error2 %d",error); reset=1; break; } } times[i]=t1-t0; } for (i=0; i<100; i++) { LOG("Time %d %d",i,times[i]); } LOG("errorMin=%d",eMin); LOG("errorMax=%d",eMax); motorReset(); systemParams.controllerMode=prevCtrl; systemParams.microsteps=microSteps; enableFeedback=feedback; if (state) enableTCInterrupts(); } //void StepperCtrl::printData(void) //{ // bool state=TC5_ISR_Enabled; // disableTCInterrupts(); // int32_t i; // for(i=0; i. Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef __STEPPER_CONTROLLER_H__ #define __STEPPER_CONTROLLER_H__ #include "syslog.h" #include "board.h" #include "as5047d.h" #include "A1333.h" #include "calibration.h" #include "A4954.h" #include "A5995.h" #include "nonvolatile.h" #include "fet_driver.h" //for the NEMA23 10A #define N_DATA (1024) typedef enum { STEPCTRL_NO_ERROR=0, STEPCTRL_NO_POWER=1, //no power to motor STEPCTRL_NO_CAL=2, //calibration not set STEPCTRL_NO_ENCODER=3, //encoder not working } stepCtrlError_t; typedef struct { int32_t Kp; int32_t Ki; int32_t Kd; } PID_t; typedef __attribute__((aligned(4))) struct { int32_t microSecs; int32_t desiredLoc; int32_t actualLoc; int32_t angle; int32_t ma; } Location_t; typedef struct { int32_t angle; int32_t ma; }Control_t; #define MAX_NUM_LOCATIONS (64) //maximum number of locations to buffer //this scales the PID parameters from Flash to floating point // to fixed point int32_t values #define CTRL_PID_SCALING (1024) class StepperCtrl { private: volatile bool enableFeedback; //true if we are using PID control algorithm #ifdef A1333_ENCODER A1333 encoder; #else AS5047D encoder; #endif #ifdef NEMA_23_10A_HW FetDriver stepperDriver; #else #ifdef A5995_DRIVER A5995 stepperDriver; #else A4954 stepperDriver; #endif #endif uint16_t startUpEncoder; volatile int32_t ticks=0; volatile Location_t locs[MAX_NUM_LOCATIONS]; volatile int32_t locReadIndx=0; volatile int32_t locWriteIndx=0; volatile MotorParams_t motorParams; volatile SystemParams_t systemParams; volatile bool enabled; volatile int32_t loopTimeus; //time to run loop in microseconds volatile PID_t sPID; //simple control loop PID parameters volatile PID_t pPID; //positional current based PID control parameters volatile PID_t vPID; //velocity PID control parameters volatile int64_t numSteps; //this is the number of steps we have taken from our start angle volatile int32_t loopError; volatile int64_t currentLocation; //estimate of the current location from encoder feedback // the current location lower 16 bits is angle (0-360 degrees in 65536 steps) while upper // bits is the number of full rotations. //this is used for the velocity PID feedback // units are in Angles/sec where 1 Angle=360deg/65536 volatile int64_t velocity; int64_t zeroAngleOffset=0; //volatile int16_t data[N_DATA]; //does linear interpolation of the encoder calibration table int32_t getAngleCalibration(int32_t encoderAngle); //updates the currentMeasuredAngle with our best guess where we are Angle sampleAngle(void); Angle sampleMeanEncoder(int32_t numSamples); float measureStepSize(void); //steps motor and estimates step size uint32_t measureMaxCalibrationError(void); void setLocationFromEncoder(void); void motorReset(void); void updateStep(int dir, uint16_t steps); bool pidFeedback(int64_t desiredLoc, int64_t currentLoc, Control_t *ptrCtrl); bool simpleFeedback(int64_t desiredLoc, int64_t currentLoc,Control_t *ptrCtrl); bool vpidFeedback(int64_t desiredLoc, int64_t currentLoc,Control_t *ptrCtrl); int64_t getCurrentLocation(void); int64_t getDesiredLocation(void); void updateLocTable(int64_t desiredLoc, int64_t currentLoc,Control_t *ptrCtrl); int64_t calculatePhasePrediction(int64_t currentLoc); bool determineError(int64_t currentLoc, int64_t error); public: uint16_t getStartupEncoder(void) {return startUpEncoder;} int32_t getLocation(Location_t *ptrLoc); //int32_t getSteps(void); Angle getEncoderAngle(void); void setAngle(int64_t loc); int64_t getZeroAngleOffset(void); void PrintData(void); void setVelocity(int64_t vel); //set velocity for vPID mode int64_t getVelocity(void); int32_t getLoopError(void) {return loopError;}; //assume atomic read bool calibrationValid(void) { return calTable.calValid();} //returns true if calbiration is good void updateParamsFromNVM(void); //updates the parameters from NVM CalibrationTable calTable; //void printData(void); bool calibrateEncoder(void); //do manual calibration of the encoder Angle maxCalibrationError(void); //measures the maximum calibration error as an angle void moveToAbsAngle(int32_t a); void moveToAngle(int32_t a, uint32_t ma); stepCtrlError_t begin(void); //returns false if we can not use motor bool processFeedback(void); // does the feedback loop feedbackCtrl_t getControlMode(void) { return systemParams.controllerMode;}; void updateSteps(int64_t steps); void requestStep(int dir, uint16_t steps); //requests a step, if feedback controller is off motor does not move void feedback(bool enable); bool getFeedback(void) {return enableFeedback;} void encoderDiagnostics(char *ptrStr); int32_t measureError(void); //these two functions are compenstated by the zero offset int64_t getCurrentAngle(void); int64_t getDesiredAngle(void); void move(int dir, uint16_t steps); //forces motor to move even if feedback controller is turned off. void enable(bool enable); bool getEnable(void) {return enabled;} int32_t getLoopTime(void) { return loopTimeus;} void PID_Autotune(void); void setZero(void); }; #endif //__STEPPER_CONTROLLER_H__ ================================================ FILE: firmware/stepper_nano_zero/stepper_nano_zero.ino ================================================ #include "nzs.h" NZS nzs; void setup() { nzs.begin(); } void loop() { nzs.loop(); } ================================================ FILE: firmware/stepper_nano_zero/steppin.cpp ================================================ /* * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! */ #include "steppin.h" #include "stepper_controller.h" #include "wiring_private.h" #include "Arduino.h" extern StepperCtrl stepperCtrl; volatile int32_t stepsChanged=0; volatile int64_t steps=0; #if (PIN_STEP_INPUT != 0) #error "this code only works with step pin being D0 (PA11, EXTINT11)" #endif #define WAIT_TCC2_SYNC() while(TCC2->SYNCBUSY.reg) void checkDir(void) { int dir=1; static int lastDir=-1; if (CW_ROTATION == NVM->SystemParams.dirPinRotation) { dir=0; //reverse the rotation } if (lastDir != dir) { if (dir) { EIC->CONFIG[1].reg &= ~EIC_CONFIG_SENSE2_Msk; EIC->CONFIG[1].reg |= EIC_CONFIG_SENSE2_HIGH; } else { EIC->CONFIG[1].reg &= ~EIC_CONFIG_SENSE2_Msk; EIC->CONFIG[1].reg |= EIC_CONFIG_SENSE2_LOW; } lastDir=dir; } } //this function can not be called in interrupt context as the overflow interrupt for tC4 needs to run. int64_t getSteps(void) { //#ifndef USE_NEW_STEP // return 0; //#endif int64_t x; #ifdef USE_TC_STEP uint16_t y; static uint16_t lasty=0; TCC2->CTRLBSET.reg=TCC_CTRLBSET_CMD_READSYNC; WAIT_TCC2_SYNC(); y=(uint16_t)(TCC2->COUNT.reg & 0x0FFFFul); //use only lowest 16bits //LOG("count is %d",y); steps += (int16_t)(y-lasty); lasty=y; checkDir(); return steps; #else EIC->INTENCLR.reg = EIC_INTENCLR_EXTINT11; x=stepsChanged; stepsChanged=0; EIC->INTENSET.reg = EIC_INTENSET_EXTINT11; return x; #endif } //this function is called on the rising edge of a step from external device static void stepInput(void) { static int dir; //read our direction pin dir = digitalRead(PIN_DIR_INPUT); if (CW_ROTATION == NVM->SystemParams.dirPinRotation) { dir=!dir; //reverse the rotation } #ifndef USE_NEW_STEP stepperCtrl.requestStep(dir,1); #else if (dir) { stepsChanged++; }else { stepsChanged--; } #endif } void enableEIC(void) { PM->APBAMASK.reg |= PM_APBAMASK_EIC; if (EIC->CTRL.bit.ENABLE == 0) { // Enable GCLK for IEC (External Interrupt Controller) GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID(GCM_EIC)); // Enable EIC EIC->CTRL.bit.ENABLE = 1; while (EIC->STATUS.bit.SYNCBUSY == 1) { } } } void setupStepEvent(void) { //we will set up the EIC to generate an even on rising edge of step pin //make sure EIC is setup enableEIC(); // Assign step pin to EIC // Step pin is PA11, EXTINT11 pinPeripheral(PIN_STEP_INPUT, PIO_EXTINT); //set up the direction pin PA10 to trigger external interrupt pinPeripheral(PIN_DIR_INPUT, PIO_EXTINT); //EXTINT10 //***** setup EIC ****** EIC->EVCTRL.bit.EXTINTEO11=1; //enable event for EXTINT11 EIC->EVCTRL.bit.EXTINTEO10=1; //enable event for EXTINT10 //setup up external interurpt 11 to be rising edge triggered //setup up external interurpt 10 to be both edge triggered EIC->CONFIG[1].reg |= EIC_CONFIG_SENSE3_RISE | EIC_CONFIG_SENSE2_HIGH; checkDir(); //disable actually generating an interrupt, we only want event triggered EIC->INTENCLR.reg = EIC_INTENCLR_EXTINT11; EIC->INTENCLR.reg = EIC_INTENCLR_EXTINT10; //**** setup the event system *** // Enable GCLK for EVSYS channel 0 PM->APBCMASK.reg |= PM_APBCMASK_EVSYS; GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID(GCM_EVSYS_CHANNEL_0)); while (GCLK->STATUS.bit.SYNCBUSY); GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID(GCM_EVSYS_CHANNEL_1)); while (GCLK->STATUS.bit.SYNCBUSY); //setup the step pin to trigger event 0 on the TCC2 (step) EVSYS->CHANNEL.reg=EVSYS_CHANNEL_CHANNEL(0) | EVSYS_CHANNEL_EDGSEL_RISING_EDGE | EVSYS_CHANNEL_EVGEN(EVSYS_ID_GEN_EIC_EXTINT_11) | EVSYS_CHANNEL_PATH_ASYNCHRONOUS; EVSYS->USER.reg = EVSYS_USER_CHANNEL(1) | EVSYS_USER_USER(EVSYS_ID_USER_TCC2_EV_0); //setup the dir pin to trigger event 2 on the TCC2 (dir change) EVSYS->CHANNEL.reg=EVSYS_CHANNEL_CHANNEL(1) | EVSYS_CHANNEL_EDGSEL_BOTH_EDGES | EVSYS_CHANNEL_EVGEN(EVSYS_ID_GEN_EIC_EXTINT_10) | EVSYS_CHANNEL_PATH_ASYNCHRONOUS; EVSYS->USER.reg = EVSYS_USER_CHANNEL(2) | EVSYS_USER_USER(EVSYS_ID_USER_TCC2_EV_1); //**** setup the Timer counter ****** PM->APBCMASK.reg |= PM_APBCMASK_TCC2; // Enable GCLK for TCC2 (timer counter input clock) GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID(GCM_TCC2_TC3)); while (GCLK->STATUS.bit.SYNCBUSY); TCC2->CTRLA.reg &= ~TCC_CTRLA_ENABLE; WAIT_TCC2_SYNC(); TCC2->CTRLA.reg= TCC_CTRLA_SWRST; //reset TCC2 WAIT_TCC2_SYNC(); while(TCC2->CTRLA.bit.SWRST ==1); //TCC2->WAVE.reg = TCC_WAVE_WAVEGEN_NFRQ; //WAIT_TCC2_SYNC(); TCC2->EVCTRL.reg=TCC_EVCTRL_EVACT0_COUNTEV | TCC_EVCTRL_TCEI0 | TCC_EVCTRL_EVACT1_DIR | TCC_EVCTRL_TCEI1; WAIT_TCC2_SYNC(); TCC2->COUNT.reg=0; WAIT_TCC2_SYNC(); //TCC2->CTRLBSET.bit.CMD=TCC_CTRLBSET_CMD_RETRIGGER; //checkDirPin(); TCC2->CTRLBSET.bit.DIR=1; WAIT_TCC2_SYNC(); TCC2->CTRLA.reg |=TCC_CTRLA_ENABLE; WAIT_TCC2_SYNC(); //checkDirPin(); // // TC4->COUNT16.CTRLA.reg = TC_CTRLA_MODE_COUNT16 // Set Timer counter Mode to 16 bits // | TC_CTRLA_WAVEGEN_NFRQ //normal counting mode (not using waveforms) // | TC_CTRLA_PRESCALER_DIV1; //count each pulse // WAIT_TC32_REGS_SYNC(TC4) // // TC4->COUNT16.CTRLBCLR.reg=0xFF; //clear all values. // WAIT_TC32_REGS_SYNC(TC4) // // TC4->COUNT16.EVCTRL.reg=TC_EVCTRL_TCEI | TC_EVCTRL_EVACT_COUNT; //enable event input and count // WAIT_TC32_REGS_SYNC(TC4) // // TC4->COUNT16.COUNT.reg=0; // WAIT_TC32_REGS_SYNC(TC4) // // TC4->COUNT16.INTENSET.bit.OVF = 1; //enable over/under flow interrupt // //setup the TC overflow/underflow interrupt // NVIC_SetPriority(TC4_IRQn, 0); // // Enable InterruptVector // NVIC_EnableIRQ(TC4_IRQn); // // // // Enable TC // TC4->COUNT16.CTRLA.reg |= TC_CTRLA_ENABLE; // WAIT_TC32_REGS_SYNC(TC4) } //static void dirChanged_ISR(void) //{ // int dir=0; // //read our direction pin // //dir = digitalRead(PIN_DIR_INPUT); // if ( (PORT->Group[g_APinDescription[PIN_DIR_INPUT].ulPort].IN.reg & (1ul << g_APinDescription[PIN_DIR_INPUT].ulPin)) != 0 ) // { // dir=1; // } // // // if (CW_ROTATION == NVM->SystemParams.dirPinRotation) // { // dir=!dir; //reverse the rotation // } // if (dir) // { // TC4->COUNT16.CTRLBSET.bit.DIR=1; // } else // { // TC4->COUNT16.CTRLBCLR.bit.DIR=1; // } //} void stepPinSetup(void) { #ifdef USE_TC_STEP // //setup the direction pin // dirChanged_ISR(); // // //attachInterrupt configures the EIC as highest priority interrupts. // attachInterrupt(digitalPinToInterrupt(PIN_DIR_INPUT), dirChanged_ISR, CHANGE); setupStepEvent(); // NVIC_SetPriority(EIC_IRQn, 1); //set port A interrupt as highest priority #else attachInterrupt(digitalPinToInterrupt(PIN_STEP_INPUT), stepInput, RISING); NVIC_SetPriority(EIC_IRQn, 0); //set port A interrupt as highest priority #endif } ================================================ FILE: firmware/stepper_nano_zero/steppin.h ================================================ /* * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! */ #ifndef __STEPPIN_H___ #define __STEPPIN_H___ #include "board.h" void stepPinSetup(void); //setup step pin int64_t getSteps(void); //returns the number of steps changed since last call #endif // __STEPPIN_H___ ================================================ FILE: firmware/stepper_nano_zero/syslog.cpp ================================================ /* * syslog.c * * Created on: Sep 14, 2011 * Author: trampas.stern * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "syslog.h" #include #include "board.h" #define ANSI_WHITE "\033[37m" #define ANSI_NORMAL "\033[0m" #define ANSI_BLINK "\033[5m" #define ANSI_BLUE "\033[34m" #define ANSI_MAGENTA "\033[35m" #define ANSI_CYAN "\033[36m" #define ANSI_WHITE "\033[37m" #define ANSI_RED "\033[31m" #define ANSI_GREEN "\033[32m" #define ANSI_PINK "\033[35m\033[1m" #define ANSI_BROWN "\033[33m" #define ANSI_YELLOW "\033[33m\033[1m" #define ANSI_BLACK "\033[30m" #define ANSI_BELL_AND_RED "\a\033[31m" #define NEW_LINE "\n\r" Stream *ptrSerial=NULL; eLogLevel SyslogLevelToWrite; bool DebugUART=false; static char buffer[SYSLOG_BUFFER_SIZE]; static unsigned int BufIndex=0; static int SysLog_Enabled=1; int SysLogDisable(void) { SysLog_Enabled=0; return 0; } int SysLogEnable(void) { SysLog_Enabled=1; return 0; } int SysLogIsEnabled(void) { return SysLog_Enabled; } void SysLogDebug(bool x) { DebugUART=x; } void SysLogPuts(const char *ptrStr) { if (!SysLog_Enabled) return; if (NULL == ptrSerial) { while(*ptrStr) { SYSLOG_PUTC(*ptrStr); ptrStr++; } } else { ptrSerial->write(ptrStr); } #ifndef MECHADUINO_HARDWARE if (DebugUART) { SerialUSB.write(ptrStr); } #endif } int SysLogInitDone=0; void SysLogInit(Stream *ptrSerialObj, eLogLevel LevelToWrite) { ptrSerial=ptrSerialObj; SyslogLevelToWrite=LevelToWrite; SysLogInitDone=1; BufIndex=0; memset(buffer,0,SYSLOG_BUFFER_SIZE); } int SysLogProcessing=0; // this is used such that syslog can be reentrent int SysLogMissed=0; void SysLog(eLogLevel priorty, const char *fmt, ...) { //UINT32 ret; int previousState=SysLog_Enabled; char vastr[MAX_SYSLOG_STRING]={0}; //char outstr[MAX_SYSLOG_STRING]={0}; va_list ap; if (SysLogProcessing) { //we have a syslog from a syslog call thus return as not much we can do... //memset(buffer,0,SYSLOG_BUFFER_SIZE); va_start(ap,fmt); vsnprintf(&buffer[BufIndex],SYSLOG_BUFFER_SIZE-BufIndex,(char *)fmt,ap); BufIndex=strlen(buffer); snprintf(&buffer[BufIndex],SYSLOG_BUFFER_SIZE-BufIndex,NEW_LINE); BufIndex=strlen(buffer); SysLogMissed++; //set flag that we missed a call return; } SysLogProcessing=1; //stop the watch dog will doing a SysLog print Sys_WDogHoldOn(); if(!SysLogInitDone) { SysLogInit(NULL, LOG_WARNING); //not sure who is reseting serial port but before we print set it up WARNING("You should init SysLog"); //SysLogInitDone=0; } //Send out a * that we missed a SysLog Message before this current message if (SysLogMissed) { //SysLogPuts(ANSI_RED); SysLogPuts("*** Reentrant Log call possible loss of message(s):"); SysLogPuts(NEW_LINE); if (BufIndex>0) { SysLogPuts(buffer); memset(buffer,0,SYSLOG_BUFFER_SIZE); BufIndex=0; } //SysLogPuts(ANSI_RED); SysLogPuts("***********"); SysLogPuts(NEW_LINE); SysLogMissed=0; } memset(vastr,0,MAX_SYSLOG_STRING); va_start(ap,fmt); //#ifndef PGM_P #if 1 vsnprintf(vastr,MAX_SYSLOG_STRING,(char *)fmt,ap); #else vsprintf_P(vastr,(const char *)fmt,ap); #endif //get time and store in datetimestr if desired //sprintf(outstr, "[%s] %s\r\n", datetimestr, vastr); if (priorty<=LOG_ERROR) { SysLog_Enabled=1; SysLogPuts(ANSI_RED); }else if (priorty==LOG_DEBUG) { SysLogPuts(ANSI_WHITE); }else if (priorty==LOG_WARNING) { SysLogPuts(ANSI_BLUE); } #ifdef RTC_H_ #ifdef TIME_H_ { struct tm tp; RTC_Time_s tm; time_t secs; char datetimestr[MAX_SYSLOG_STRING]={0}; RTC_ReadTime(&tm); secs=tm.seconds; convertFlexNetTime((time_t *)&secs, &tp); time_str(datetimestr,&tp); SysLogPuts(datetimestr); if (priorty<=SyslogLevelToWrite && SysLogWriteFunc!=NULL) { SysLogWriteFunc(datetimestr,strlen(datetimestr)); } } #endif #endif SysLogPuts(vastr); // // if (priorty<=SyslogLevelToWrite && SysLogWriteFunc!=NULL) // { // SysLogWriteFunc(vastr,strlen(vastr)); // SysLogWriteFunc(NEW_LINE,strlen(NEW_LINE)); // } SysLogPuts(ANSI_NORMAL); SysLogPuts(NEW_LINE); if (priorty == LOG_EMERG) { //you can reboot processor here } //start the watch dog where left off.. Sys_WDogHoldOff(); SysLogProcessing=0; SysLog_Enabled=previousState; return; } ================================================ FILE: firmware/stepper_nano_zero/syslog.h ================================================ /* * syslog.h * * Created on: Sep 14, 2011 * Author: trampas.stern Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #ifndef SYSLOG_H_ #define SYSLOG_H_ #include #include #include #include "Arduino.h" #include "variant.h" #ifdef __cplusplus extern "C" { #endif // __cplusplus #define SYSLOG_BUFFER_SIZE (250) #define MAX_SYSLOG_STRING (250) #define __FILENAME1__ (__builtin_strrchr(__FILE__, '\\') ? __builtin_strrchr(__FILE__, '\\') + 1 : __FILE__) #define __FILENAME__ (__builtin_strrchr(__FILENAME1__, '/') ? __builtin_strrchr(__FILENAME1__, '/') + 1 : __FILENAME1__) #define SYSLOG_WRITE(buffer,nBytes) #ifdef CMD_SERIAL_PORT #define SYSLOG_PUTC(x) #else #define SYSLOG_PUTC(x) //SerialUSB.write(x) #endif #define Sys_WDogHoldOn() #define Sys_WDogHoldOff() /* * priorities/facilities are encoded into a single 32-bit quantity, where the * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility * (0-big number). Both the priorities and the facilities map roughly * one-to-one to strings in the syslogd(8) source code. This mapping is * included in this file. * * priorities (these are ordered) */ typedef enum _eLogLevel { LOG_EMERG = 0, // system is unusable LOG_ALERT = 1, // action must be taken immediately LOG_CRIT = 2, // critical conditions LOG_ERROR = 3, // error conditions LOG_WARNING = 4, // warning conditions LOG_NOTICE = 5, // normal but significant condition LOG_INFO = 6, // informational LOG_DEBUG = 7, // debug-level messages LOG_DISABLED = 8 // disabled messages } eLogLevel; #if 0 #define CONCAT(x, y) CONCAT_(x, y) #define CONCAT_(x, y) x##y #define ID(...) __VA_ARGS__ #define IFMULTIARG(if,then,else) \ CONCAT(IFMULTIARG_, IFMULTIARG_(if, \ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ 1, 1, 0, ))(then,else) #define IFMULTIARG_(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, \ _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, \ _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, \ _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, \ _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, \ _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, \ _60, _61, _62, _63, ...) _63 #define IFMULTIARG_0(then, else) else #define IFMULTIARG_1(then, else) then #define PROVIDE_SECOND_ARGUMENT(x, ...) CONCAT( IFMULTIARG(ID(__VA_ARGS__), INSERT_, ADD_), SECOND_ARGUMENT ) (x, __VA_ARGS__) #define PROVIDE_SECOND_ARGUMENT2(x, y, ...) CONCAT( IFMULTIARG(ID(__VA_ARGS__), INSERT_, ADD_), SECOND_ARGUMENT2 ) (x, y, __VA_ARGS__) #define ADD_SECOND_ARGUMENT(x, y) y, x #define INSERT_SECOND_ARGUMENT(x, y, ...) y, x, __VA_ARGS__ #define ADD_SECOND_ARGUMENT2(x, z, y) y, x, z #define INSERT_SECOND_ARGUMENT2(x, z, y, ...) y, x, z, __VA_ARGS__ #endif //#define DEBUG1(...) printf( "DEBUG %s %s: " //PROVIDE_SECOND_ARGUMENT2(__FILE__, __LINE__, __VA_ARGS__)) //TXT(x) macro is used for system which can store strings in flash, like AVR processors #ifndef TXT #define TXT(x) x #endif void SysLog(eLogLevel priorty, const char *fmt, ...); static inline const char * __file__( const char *filename ) { char const *p = strrchr( filename, '/' ); if ( p ) return p+1; else return filename; } // __file__ //These macros abstract the logging and append the file and line number to errors. #ifndef SYSLOG_DISABLE //#ifndef PGM_P #if 1 //EMERG means system is unstable thus will force a reboot! #define EMERG(fmt, ...) SysLog( LOG_EMERG, "EMERG: %s %4d: " fmt, __FILENAME__, __LINE__, ## __VA_ARGS__ ) #define ALERT(fmt, ...) SysLog( LOG_ALERT, "ALERT: %s %4d: " fmt, __FILENAME__, __LINE__, ## __VA_ARGS__ ) #define CRITICAL(fmt, ...) SysLog( LOG_CRIT, "CRITICAL: %s %4d: " fmt, __FILENAME__, __LINE__, ## __VA_ARGS__ ) #define ERROR(fmt, ...) SysLog( LOG_ERROR, "ERROR: %s %4d: " fmt, __FILENAME__, __LINE__, ## __VA_ARGS__ ) #define WARNING(fmt, ...) SysLog( LOG_WARNING, "WARNING: %s %4d: " fmt, __FILENAME__, __LINE__, ## __VA_ARGS__ ) #define NOTICE(fmt, ...) SysLog( LOG_NOTICE, "NOTICE: %s %4d: " fmt, __FILENAME__, __LINE__, ## __VA_ARGS__ ) #define INFO(fmt, ...) SysLog( LOG_INFO, "INFO: %s %4d: " fmt, __FILENAME__, __LINE__, ## __VA_ARGS__ ) #define LOG(fmt, ...) SysLog( LOG_DEBUG, "%s %4d: " fmt, __FILENAME__ , __LINE__, ## __VA_ARGS__ ) // //#define EMERG(...) SysLog( LOG_EMERG, "EMERG: %15s %4d: " PROVIDE_SECOND_ARGUMENT2(BASE_FILE_NAME, __LINE__,__VA_ARGS__ ) ) //#define ALERT(...) SysLog( LOG_ALERT, "ALERT: %15s %4d: " PROVIDE_SECOND_ARGUMENT2(BASE_FILE_NAME, __LINE__,__VA_ARGS__ ) ) //#define CRITICAL(...) SysLog( LOG_CRIT, "CRITICAL: %15s %4d: " PROVIDE_SECOND_ARGUMENT2(BASE_FILE_NAME, __LINE__,__VA_ARGS__ ) ) //#define ERROR(...) SysLog( LOG_ERROR, "ERROR: %15s %4d: " PROVIDE_SECOND_ARGUMENT2(BASE_FILE_NAME, __LINE__,__VA_ARGS__ ) ) //#define WARNING(...) SysLog( LOG_WARNING, "WARNING: %15s %4d: " PROVIDE_SECOND_ARGUMENT2(BASE_FILE_NAME, __LINE__,__VA_ARGS__ ) ) //#define NOTICE(...) SysLog( LOG_NOTICE, "NOTICE: %15s %4d: " PROVIDE_SECOND_ARGUMENT2(BASE_FILE_NAME, __LINE__,__VA_ARGS__ ) ) //#define INFO(...) SysLog( LOG_INFO, "INFO: %15s %4d: " PROVIDE_SECOND_ARGUMENT2(BASE_FILE_NAME, __LINE__,__VA_ARGS__ ) ) //#define LOG(...) SysLog( LOG_DEBUG, "%s %4d: " PROVIDE_SECOND_ARGUMENT2(BASE_FILE_NAME, __LINE__,__VA_ARGS__ ) ) #else //EMERG means system is unstable thus will force a reboot! #define EMERG(fmt, ...) SysLog( LOG_EMERG, PSTR("EMERG: %15s %4d: " fmt), __file__(__FILE__), __LINE__, ## __VA_ARGS__ ) #define ALERT(fmt, ...) SysLog( LOG_ALERT, PSTR("ALERT: %15s %4d: " fmt), __file__(__FILE__), __LINE__, ## __VA_ARGS__ ) #define CRITICAL(fmt, ...) SysLog( LOG_CRIT, PSTR("CRITICAL: %15s %4d: " fmt), __file__(__FILE__), __LINE__, ## __VA_ARGS__ ) #define ERROR(fmt, ...) SysLog( LOG_ERROR, PSTR("ERROR: %15s %4d: " fmt), __file__(__FILE__), __LINE__, ## __VA_ARGS__ ) #define WARNING(fmt, ...) SysLog( LOG_WARNING, PSTR("WARNING: %15s %4d: " fmt), __file__(__FILE__), __LINE__, ## __VA_ARGS__ ) #define NOTICE(fmt, ...) SysLog( LOG_NOTICE, PSTR("NOTICE: %15s %4d: " fmt), __file__(__FILE__), __LINE__, ## __VA_ARGS__ ) #define INFO(fmt, ...) SysLog( LOG_INFO, PSTR("INFO: %15s %4d: " fmt), __file__(__FILE__), __LINE__, ## __VA_ARGS__ ) #define LOG(fmt, ...) SysLog( LOG_DEBUG, PSTR("%15s %4d: " fmt), __file__(__FILE__), __LINE__, ## __VA_ARGS__ ) #endif #else #define EMERG(fmt, ...) #define ALERT(fmt, ...) #define CRITICAL(fmt, ...) #define ERROR(fmt, ...) #define WARNING(fmt, ...) #define NOTICE(fmt, ...) #define INFO(fmt, ...) #define LOG(fmt, ...) #endif //SYSLOG_DIABLE //Note that if you are running debug code with JTAG the assert will stop // However you might want to run release code with syslog enabled for testing // where you want error logging, but asserts are not enabled. // Thus this macro does error logging and an assert. //This macro assumed to take a constant string as argument //this can be enabled to log asserts to the history file, if you have code space to do it. #ifdef ASSERT_HISTORY #define ASSERT(x) {if(!(x)){ERROR(#x); HISTORY_ASSERT();} assert(x);} #define ASSERT_ERROR(x) {HISTORY_ASSERT(); ERROR(x); ASSERT_FAIL(x);} #else #define ASSERT(x) {if(!(x)){ERROR(#x);} assert(x);} #define ASSERT_ERROR(x) {ERROR(x); ASSERT_FAIL(x);} #endif void SysLogInit(Stream *ptrSerialObj, eLogLevel LevelToWrite); int SysLogDisable(void); int SysLogEnable(void); int SysLogIsEnabled(void); void SysLogDebug(bool x); #ifdef __cplusplus } #endif // __cplusplus #endif /* SYSLOG_H_ */ ================================================ FILE: firmware/stepper_nano_zero/utils.cpp ================================================ /********************************************************************** * Author: tstern * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ #include "utils.h" #include "syslog.h" double CubicInterpolate( double y0,double y1, double y2,double y3, double mu) { double a0,a1,a2,a3,mu2; mu2 = mu*mu; a0 = y3 - y2 - y0 + y1; a1 = y0 - y1 - a0; a2 = y2 - y0; a3 = y1; return(a0*mu*mu2+a1*mu2+a2*mu+a3); } ================================================ FILE: firmware/stepper_nano_zero/utils.h ================================================ /********************************************************************** * Author: tstern * Copyright (C) 2018 MisfitTech, All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Written by Trampas Stern for MisfitTech. Misfit Tech invests time and resources providing this open source code, please support MisfitTech and open-source hardware by purchasing products from MisfitTech, www.misifittech.net! *********************************************************************/ /* this file contains generic utilities and functions */ #ifndef UTILS_H_ #define UTILS_H_ double CubicInterpolate( double y0,double y1, double y2,double y3, double mu); #endif /* UTILS_H_ */ ================================================ FILE: hardware/NZS_A4954_R2.0.PrjPcb ================================================ [Design] Version=1.0 HierarchyMode=0 ChannelRoomNamingStyle=0 ReleasesFolder= ReleaseVaultGUID= ReleaseVaultName= ChannelDesignatorFormatString=$Component_$RoomName ChannelRoomLevelSeperator=_ OpenOutputs=1 ArchiveProject=0 TimestampOutput=0 SeparateFolders=0 TemplateLocationPath= PinSwapBy_Netlabel=1 PinSwapBy_Pin=1 AllowPortNetNames=0 AllowSheetEntryNetNames=1 AppendSheetNumberToLocalNets=0 NetlistSinglePinNets=0 DefaultConfiguration=Default Configuration UserID=0xFFFFFFFF DefaultPcbProtel=1 DefaultPcbPcad=0 ReorderDocumentsOnCompile=1 NameNetsHierarchically=0 PowerPortNamesTakePriority=0 PushECOToAnnotationFile=1 DItemRevisionGUID= ReportSuppressedErrorsInMessages=0 OutputPath= LogFolderPath= ManagedProjectGUID= [Preferences] PrefsVaultGUID= PrefsRevisionGUID= [Document1] DocumentPath=Nano_stepper.SchDoc AnnotationEnabled=1 AnnotateStartValue=1 AnnotationIndexControlEnabled=0 AnnotateSuffix= AnnotateScope=All AnnotateOrder=0 DoLibraryUpdate=1 DoDatabaseUpdate=1 ClassGenCCAutoEnabled=1 ClassGenCCAutoRoomEnabled=0 ClassGenNCAutoScope=None DItemRevisionGUID= GenerateClassCluster=0 DocumentUniqueId=JDFVPUVV [Document2] DocumentPath=..\..\..\..\Altium\DBlib\SYM\A4954.SchLib AnnotationEnabled=1 AnnotateStartValue=1 AnnotationIndexControlEnabled=0 AnnotateSuffix= AnnotateScope=All AnnotateOrder=-1 DoLibraryUpdate=1 DoDatabaseUpdate=1 ClassGenCCAutoEnabled=1 ClassGenCCAutoRoomEnabled=1 ClassGenNCAutoScope=None DItemRevisionGUID= GenerateClassCluster=0 DocumentUniqueId=KQAKUJIP [Document3] DocumentPath=..\..\..\..\Altium\DBlib\FTPT\A4954.PcbLib AnnotationEnabled=1 AnnotateStartValue=1 AnnotationIndexControlEnabled=0 AnnotateSuffix= AnnotateScope=All AnnotateOrder=-1 DoLibraryUpdate=1 DoDatabaseUpdate=1 ClassGenCCAutoEnabled=1 ClassGenCCAutoRoomEnabled=1 ClassGenNCAutoScope=None DItemRevisionGUID= GenerateClassCluster=0 DocumentUniqueId=MHDBBAFF [Document4] DocumentPath=NZS_A4954_R2_0.PcbDoc AnnotationEnabled=1 AnnotateStartValue=1 AnnotationIndexControlEnabled=0 AnnotateSuffix= AnnotateScope=All AnnotateOrder=-1 DoLibraryUpdate=1 DoDatabaseUpdate=1 ClassGenCCAutoEnabled=1 ClassGenCCAutoRoomEnabled=1 ClassGenNCAutoScope=None DItemRevisionGUID= GenerateClassCluster=0 DocumentUniqueId=IUPHFOFT [GeneratedDocument1] DocumentPath=Project Outputs for NZS_A4954_R2.0\Design Rule Check - NZS_A4954_R2_0.html DItemRevisionGUID= [Configuration1] Name=Default Configuration ParameterCount=0 ConstraintFileCount=0 ReleaseItemId= CurrentRevision= Variant=[No Variations] GenerateBOM=1 OutputJobsCount=0 [OutputGroup1] Name=Netlist Outputs Description= TargetPrinter=Microsoft Print to PDF PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintWhat=1 OutputType1=CadnetixNetlist OutputName1=Cadnetix Netlist OutputDocumentPath1= OutputVariantName1= OutputDefault1=0 OutputType2=CalayNetlist OutputName2=Calay Netlist OutputDocumentPath2= OutputVariantName2= OutputDefault2=0 OutputType3=EDIF OutputName3=EDIF for PCB OutputDocumentPath3= OutputVariantName3= OutputDefault3=0 OutputType4=EESofNetlist OutputName4=EESof Netlist OutputDocumentPath4= OutputVariantName4= OutputDefault4=0 OutputType5=IntergraphNetlist OutputName5=Intergraph Netlist OutputDocumentPath5= OutputVariantName5= OutputDefault5=0 OutputType6=MentorBoardStationNetlist OutputName6=Mentor BoardStation Netlist OutputDocumentPath6= OutputVariantName6= OutputDefault6=0 OutputType7=MultiWire OutputName7=MultiWire OutputDocumentPath7= OutputVariantName7= OutputDefault7=0 OutputType8=OrCadPCB2Netlist OutputName8=Orcad/PCB2 Netlist OutputDocumentPath8= OutputVariantName8= OutputDefault8=0 OutputType9=PADSNetlist OutputName9=PADS ASCII Netlist OutputDocumentPath9= OutputVariantName9= OutputDefault9=0 OutputType10=Pcad OutputName10=Pcad for PCB OutputDocumentPath10= OutputVariantName10= OutputDefault10=0 OutputType11=PCADNetlist OutputName11=PCAD Netlist OutputDocumentPath11= OutputVariantName11= OutputDefault11=0 OutputType12=PCADnltNetlist OutputName12=PCADnlt Netlist OutputDocumentPath12= OutputVariantName12= OutputDefault12=0 OutputType13=Protel2Netlist OutputName13=Protel2 Netlist OutputDocumentPath13= OutputVariantName13= OutputDefault13=0 OutputType14=ProtelNetlist OutputName14=Protel OutputDocumentPath14= OutputVariantName14= OutputDefault14=0 OutputType15=RacalNetlist OutputName15=Racal Netlist OutputDocumentPath15= OutputVariantName15= OutputDefault15=0 OutputType16=RINFNetlist OutputName16=RINF Netlist OutputDocumentPath16= OutputVariantName16= OutputDefault16=0 OutputType17=SciCardsNetlist OutputName17=SciCards Netlist OutputDocumentPath17= OutputVariantName17= OutputDefault17=0 OutputType18=SIMetrixNetlist OutputName18=SIMetrix OutputDocumentPath18= OutputVariantName18= OutputDefault18=0 OutputType19=SIMPLISNetlist OutputName19=SIMPLIS OutputDocumentPath19= OutputVariantName19= OutputDefault19=0 OutputType20=TangoNetlist OutputName20=Tango Netlist OutputDocumentPath20= OutputVariantName20= OutputDefault20=0 OutputType21=TelesisNetlist OutputName21=Telesis Netlist OutputDocumentPath21= OutputVariantName21= OutputDefault21=0 OutputType22=Verilog OutputName22=Verilog File OutputDocumentPath22= OutputVariantName22= OutputDefault22=0 OutputType23=VHDL OutputName23=VHDL File OutputDocumentPath23= OutputVariantName23= OutputDefault23=0 OutputType24=WireListNetlist OutputName24=WireList Netlist OutputDocumentPath24= OutputVariantName24= OutputDefault24=0 OutputType25=XSpiceNetlist OutputName25=XSpice Netlist OutputDocumentPath25= OutputVariantName25= OutputDefault25=0 [OutputGroup2] Name=Simulator Outputs Description= TargetPrinter=Microsoft Print to PDF PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintWhat=1 OutputType1=AdvSimNetlist OutputName1=Mixed Sim OutputDocumentPath1= OutputVariantName1= OutputDefault1=0 OutputType2=SIMetrixSimulation OutputName2=SIMetrix OutputDocumentPath2= OutputVariantName2= OutputDefault2=0 OutputType3=SIMPLISSimulation OutputName3=SIMPLIS OutputDocumentPath3= OutputVariantName3= OutputDefault3=0 [OutputGroup3] Name=Documentation Outputs Description= TargetPrinter=Virtual Printer PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintWhat=1 OutputType1=Assembler Source Print OutputName1=Assembler Source Prints OutputDocumentPath1= OutputVariantName1= OutputDefault1=0 PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType2=C Source Print OutputName2=C Source Prints OutputDocumentPath2= OutputVariantName2= OutputDefault2=0 PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType3=C/C++ Header Print OutputName3=C/C++ Header Prints OutputDocumentPath3= OutputVariantName3= OutputDefault3=0 PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType4=C++ Source Print OutputName4=C++ Source Prints OutputDocumentPath4= OutputVariantName4= OutputDefault4=0 PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType5=Composite OutputName5=Composite Drawing OutputDocumentPath5=C:\Users\TSTERN\Google Drive\projects\Stepper_feedback\hardware\NZS_A4954\NZS_A4954_R1.0.PcbDoc OutputVariantName5= OutputDefault5=0 PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=0|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=0|PaperKind=Letter (8 x 11 in)|PaperIndex=1 Configuration5_Name1=OutputConfigurationParameter1 Configuration5_Item1=DesignatorDisplayMode=Physical|PrintArea=DesignExtent|PrintAreaLowerLeftCornerX=0|PrintAreaLowerLeftCornerY=0|PrintAreaUpperRightCornerX=0|PrintAreaUpperRightCornerY=0|Record=PcbPrintView Configuration5_Name2=OutputConfigurationParameter2 Configuration5_Item2=IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|IncludeViewports=True|Index=0|Mirror=False|Name=Multilayer Composite Print|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=False|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False Configuration5_Name3=OutputConfigurationParameter3 Configuration5_Item3=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=TopOverlay|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer Configuration5_Name4=OutputConfigurationParameter4 Configuration5_Item4=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=TopLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer Configuration5_Name5=OutputConfigurationParameter5 Configuration5_Item5=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=BottomLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer Configuration5_Name6=OutputConfigurationParameter6 Configuration5_Item6=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=MultiLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer Configuration5_Name7=OutputConfigurationParameter7 Configuration5_Item7=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=BottomOverlay|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer Configuration5_Name8=OutputConfigurationParameter8 Configuration5_Item8=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=KeepOutLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer Configuration5_Name9=OutputConfigurationParameter9 Configuration5_Item9=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical1|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer Configuration5_Name10=OutputConfigurationParameter10 Configuration5_Item10=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical2|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer Configuration5_Name11=OutputConfigurationParameter11 Configuration5_Item11=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical13|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer Configuration5_Name12=OutputConfigurationParameter12 Configuration5_Item12=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical15|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer OutputType6=FSM Print OutputName6=FSM Prints OutputDocumentPath6= OutputVariantName6= OutputDefault6=0 PageOptions6=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType7=OpenBus Print OutputName7=OpenBus Prints OutputDocumentPath7= OutputVariantName7= OutputDefault7=0 PageOptions7=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType8=PCB 3D Print OutputName8=PCB 3D Print OutputDocumentPath8= OutputVariantName8=[No Variations] OutputDefault8=0 PageOptions8=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType9=PCB 3D Video OutputName9=PCB 3D Video OutputDocumentPath9= OutputVariantName9=[No Variations] OutputDefault9=0 PageOptions9=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType10=PCB Print OutputName10=PCB Prints OutputDocumentPath10= OutputVariantName10= OutputDefault10=0 PageOptions10=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType11=PCBLIB Print OutputName11=PCBLIB Prints OutputDocumentPath11= OutputVariantName11= OutputDefault11=0 PageOptions11=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType12=Report Print OutputName12=Report Prints OutputDocumentPath12= OutputVariantName12= OutputDefault12=0 PageOptions12=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType13=Schematic Print OutputName13=Schematic Prints OutputDocumentPath13= OutputVariantName13= OutputDefault13=0 PageOptions13=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType14=SimView Print OutputName14=SimView Prints OutputDocumentPath14= OutputVariantName14= OutputDefault14=0 PageOptions14=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType15=Software Platform Print OutputName15=Software Platform Prints OutputDocumentPath15= OutputVariantName15= OutputDefault15=0 PageOptions15=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType16=VHDL Print OutputName16=VHDL Prints OutputDocumentPath16= OutputVariantName16= OutputDefault16=0 PageOptions16=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType17=Wave Print OutputName17=Wave Prints OutputDocumentPath17= OutputVariantName17= OutputDefault17=0 PageOptions17=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType18=WaveSim Print OutputName18=WaveSim Prints OutputDocumentPath18= OutputVariantName18= OutputDefault18=0 PageOptions18=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType19=Logic Analyser Print OutputName19=Logic Analyser Prints OutputDocumentPath19= OutputVariantName19= OutputDefault19=0 PageOptions19=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 [OutputGroup4] Name=Assembly Outputs Description= TargetPrinter=Microsoft Print to PDF PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintWhat=1 OutputType1=Assembly OutputName1=Assembly Drawings OutputDocumentPath1= OutputVariantName1=[No Variations] OutputDefault1=0 PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType2=Pick Place OutputName2=Generates pick and place files OutputDocumentPath2= OutputVariantName2=[No Variations] OutputDefault2=0 OutputType3=Test Points For Assembly OutputName3=Test Point Report OutputDocumentPath3= OutputVariantName3=[No Variations] OutputDefault3=0 [OutputGroup5] Name=Fabrication Outputs Description= TargetPrinter=Microsoft Print to PDF PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintWhat=1 OutputType1=Plane OutputName1=Power-Plane Prints OutputDocumentPath1= OutputVariantName1= OutputDefault1=0 PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType2=ODB OutputName2=ODB++ Files OutputDocumentPath2= OutputVariantName2=[No Variations] OutputDefault2=0 OutputType3=NC Drill OutputName3=NC Drill Files OutputDocumentPath3= OutputVariantName3= OutputDefault3=0 Configuration3_Name1=OutputConfigurationParameter1 Configuration3_Item1=BoardEdgeRoutToolDia=2000000|GenerateBoardEdgeRout=False|GenerateDrilledSlotsG85=False|GenerateEIADrillFile=False|GenerateSeparatePlatedNonPlatedFiles=False|NumberOfDecimals=5|NumberOfUnits=2|OptimizeChangeLocationCommands=True|OriginPosition=Relative|Record=DrillView|Units=Imperial|ZeroesMode=SuppressTrailingZeroes OutputType4=Test Points OutputName4=Test Point Report OutputDocumentPath4= OutputVariantName4= OutputDefault4=0 OutputType5=Drill OutputName5=Drill Drawing/Guides OutputDocumentPath5= OutputVariantName5= OutputDefault5=0 PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType6=CompositeDrill OutputName6=Composite Drill Drawing OutputDocumentPath6= OutputVariantName6= OutputDefault6=0 PageOptions6=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType7=Board Stack Report OutputName7=Report Board Stack OutputDocumentPath7= OutputVariantName7= OutputDefault7=0 PageOptions7=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType8=Mask OutputName8=Solder/Paste Mask Prints OutputDocumentPath8= OutputVariantName8= OutputDefault8=0 PageOptions8=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType9=Final OutputName9=Final Artwork Prints OutputDocumentPath9= OutputVariantName9=[No Variations] OutputDefault9=0 PageOptions9=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType10=Gerber OutputName10=Gerber Files OutputDocumentPath10= OutputVariantName10=[No Variations] OutputDefault10=0 Configuration10_Name1=OutputConfigurationParameter1 Configuration10_Item1=AddToAllLayerClasses.Set= |AddToAllPlots.Set=SerializeLayerHash.Version~2,ClassName~TLayerToBoolean|CentrePlots=False|DrillDrawingSymbol=GraphicsSymbol|DrillDrawingSymbolSize=200000|EmbeddedApertures=True|FilmBorderSize=10000000|FilmXSize=200000000|FilmYSize=160000000|FlashAllFills=False|FlashPadShapes=True|G54OnApertureChange=False|GenerateDRCRulesFile=True|GenerateDRCRulesFile=True|GenerateReliefShapes=True|GerberUnit=Imperial|GerberUnit=Imperial|IncludeUnconnectedMidLayerPads=False|LayerClassesMirror.Set= |LayerClassesPlot.Set= |LeadingAndTrailingZeroesMode=SuppressLeadingZeroes|MaxApertureSize=2500000|MinusApertureTolerance=50|MinusApertureTolerance=50|Mirror.Set=SerializeLayerHash.Version~2,ClassName~TLayerToBoolean|MirrorDrillDrawingPlots=False|MirrorDrillGuidePlots=False|NoRegularPolygons=False|NumberOfDecimals=5|NumberOfDecimals=5|OptimizeChangeLocationCommands=True|OptimizeChangeLocationCommands=True|OriginPosition=Relative|Panelize=False|Plot.Set=SerializeLayerHash.Version~2,ClassName~TLayerToBoolean,16973830~1,16973832~1,16973834~1,16777217~1,16842751~1,16973835~1,16973833~1,16973831~1,16973837~1,16973848~1,16973849~1|PlotPositivePlaneLayers=False|PlotUsedDrillDrawingLayerPairs=False|PlotUsedDrillGuideLayerPairs=False|PlusApertureTolerance=50|PlusApertureTolerance=50|Record=GerberView|SoftwareArcs=False|Sorted=False|Sorted=False [OutputGroup6] Name=Report Outputs Description= TargetPrinter=Microsoft Print to PDF PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintWhat=1 OutputType1=Script OutputName1=Script Output OutputDocumentPath1= OutputVariantName1=[No Variations] OutputDefault1=0 OutputType2=SimpleBOM OutputName2=Simple BOM OutputDocumentPath2= OutputVariantName2=[No Variations] OutputDefault2=0 OutputType3=SinglePinNetReporter OutputName3=Report Single Pin Nets OutputDocumentPath3= OutputVariantName3=[No Variations] OutputDefault3=0 OutputType4=BOM_PartType OutputName4=Bill of Materials OutputDocumentPath4= OutputVariantName4=[No Variations] OutputDefault4=0 PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 Configuration4_Name1=ColumnNameFormat Configuration4_Item1=CaptionAsName Configuration4_Name2=Filter Configuration4_Item2=545046300E5446696C74657257726170706572000D46696C7465722E416374697665090F46696C7465722E43726974657269610A04000000000000000000 Configuration4_Name3=General Configuration4_Item3=OpenExported=False|AddToProject=False|ForceFit=False|NotFitted=False|Database=True|DatabasePriority=False|IncludePCBData=True|IncludeVaultData=False|IncludeAlternatives=False|ShowExportOptions=True|TemplateFilename=|BatchMode=5|FormWidth=950|FormHeight=661|SupplierProdQty=1|SupplierAutoQty=False|SupplierUseCachedPricing=False|SupplierCurrency= Configuration4_Name4=GroupOrder Configuration4_Item4=Comment=True|Footprint=True Configuration4_Name5=SortOrder Configuration4_Item5=Designator=Up|Comment=Up|Footprint=Up Configuration4_Name6=VisibleOrder Configuration4_Item6=Comment=100|Description=100|Designator=100|Footprint=100|LibRef=100|Quantity=100|Manufacturer_Part_Number=100|Misfit Price=100 OutputType5=ComponentCrossReference OutputName5=Component Cross Reference Report OutputDocumentPath5= OutputVariantName5=[No Variations] OutputDefault5=0 OutputType6=ReportHierarchy OutputName6=Report Project Hierarchy OutputDocumentPath6= OutputVariantName6=[No Variations] OutputDefault6=0 [OutputGroup7] Name=Other Outputs Description= TargetPrinter=Microsoft Print to PDF PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintWhat=1 OutputType1=Text Print OutputName1=Text Print OutputDocumentPath1= OutputVariantName1= OutputDefault1=0 PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType2=Text Print OutputName2=Text Print OutputDocumentPath2= OutputVariantName2= OutputDefault2=0 PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType3=Text Print OutputName3=Text Print OutputDocumentPath3= OutputVariantName3= OutputDefault3=0 PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType4=Text Print OutputName4=Text Print OutputDocumentPath4= OutputVariantName4= OutputDefault4=0 PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType5=Text Print OutputName5=Text Print OutputDocumentPath5= OutputVariantName5= OutputDefault5=0 PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType6=Text Print OutputName6=Text Print OutputDocumentPath6= OutputVariantName6= OutputDefault6=0 PageOptions6=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType7=Text Print OutputName7=Text Print OutputDocumentPath7= OutputVariantName7= OutputDefault7=0 PageOptions7=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType8=Text Print OutputName8=Text Print OutputDocumentPath8= OutputVariantName8= OutputDefault8=0 PageOptions8=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType9=Text Print OutputName9=Text Print OutputDocumentPath9= OutputVariantName9= OutputDefault9=0 PageOptions9=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType10=Text Print OutputName10=Text Print OutputDocumentPath10= OutputVariantName10= OutputDefault10=0 PageOptions10=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType11=Text Print OutputName11=Text Print OutputDocumentPath11= OutputVariantName11= OutputDefault11=0 PageOptions11=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType12=Text Print OutputName12=Text Print OutputDocumentPath12= OutputVariantName12= OutputDefault12=0 PageOptions12=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType13=Text Print OutputName13=Text Print OutputDocumentPath13= OutputVariantName13= OutputDefault13=0 PageOptions13=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType14=Text Print OutputName14=Text Print OutputDocumentPath14= OutputVariantName14= OutputDefault14=0 PageOptions14=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType15=Text Print OutputName15=Text Print OutputDocumentPath15= OutputVariantName15= OutputDefault15=0 PageOptions15=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType16=Text Print OutputName16=Text Print OutputDocumentPath16= OutputVariantName16= OutputDefault16=0 PageOptions16=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType17=Text Print OutputName17=Text Print OutputDocumentPath17= OutputVariantName17= OutputDefault17=0 PageOptions17=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType18=Text Print OutputName18=Text Print OutputDocumentPath18= OutputVariantName18= OutputDefault18=0 PageOptions18=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType19=Text Print OutputName19=Text Print OutputDocumentPath19= OutputVariantName19= OutputDefault19=0 PageOptions19=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType20=Text Print OutputName20=Text Print OutputDocumentPath20= OutputVariantName20= OutputDefault20=0 PageOptions20=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType21=Text Print OutputName21=Text Print OutputDocumentPath21= OutputVariantName21= OutputDefault21=0 PageOptions21=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType22=Text Print OutputName22=Text Print OutputDocumentPath22= OutputVariantName22= OutputDefault22=0 PageOptions22=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType23=Text Print OutputName23=Text Print OutputDocumentPath23= OutputVariantName23= OutputDefault23=0 PageOptions23=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType24=Text Print OutputName24=Text Print OutputDocumentPath24= OutputVariantName24= OutputDefault24=0 PageOptions24=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType25=Text Print OutputName25=Text Print OutputDocumentPath25= OutputVariantName25= OutputDefault25=0 PageOptions25=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType26=Text Print OutputName26=Text Print OutputDocumentPath26= OutputVariantName26= OutputDefault26=0 PageOptions26=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType27=Text Print OutputName27=Text Print OutputDocumentPath27= OutputVariantName27= OutputDefault27=0 PageOptions27=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType28=Text Print OutputName28=Text Print OutputDocumentPath28= OutputVariantName28= OutputDefault28=0 PageOptions28=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType29=Text Print OutputName29=Text Print OutputDocumentPath29= OutputVariantName29= OutputDefault29=0 PageOptions29=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 [OutputGroup8] Name=Validation Outputs Description= TargetPrinter=Microsoft Print to PDF PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintWhat=1 OutputType1=Configuration compliance OutputName1=Environment configuration compliance check OutputDocumentPath1= OutputVariantName1= OutputDefault1=0 OutputType2=Design Rules Check OutputName2=Design Rules Check OutputDocumentPath2= OutputVariantName2= OutputDefault2=0 PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType3=Differences Report OutputName3=Differences Report OutputDocumentPath3= OutputVariantName3= OutputDefault3=0 PageOptions3=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType4=Electrical Rules Check OutputName4=Electrical Rules Check OutputDocumentPath4= OutputVariantName4= OutputDefault4=0 PageOptions4=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 OutputType5=Footprint Comparison Report OutputName5=Footprint Comparison Report OutputDocumentPath5= OutputVariantName5= OutputDefault5=0 [OutputGroup9] Name=Export Outputs Description= TargetPrinter=Microsoft Print to PDF PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintWhat=1 OutputType1=AutoCAD dwg/dxf PCB OutputName1=AutoCAD dwg/dxf File PCB OutputDocumentPath1= OutputVariantName1= OutputDefault1=0 OutputType2=AutoCAD dwg/dxf Schematic OutputName2=AutoCAD dwg/dxf File Schematic OutputDocumentPath2= OutputVariantName2= OutputDefault2=0 OutputType3=ExportIDF OutputName3=Export IDF OutputDocumentPath3= OutputVariantName3= OutputDefault3=0 OutputType4=ExportSTEP OutputName4=Export STEP OutputDocumentPath4= OutputVariantName4=[No Variations] OutputDefault4=0 [Modification Levels] Type1=1 Type2=1 Type3=1 Type4=1 Type5=1 Type6=1 Type7=1 Type8=1 Type9=1 Type10=1 Type11=1 Type12=1 Type13=1 Type14=1 Type15=1 Type16=1 Type17=1 Type18=1 Type19=1 Type20=1 Type21=1 Type22=1 Type23=1 Type24=1 Type25=1 Type26=1 Type27=1 Type28=1 Type29=1 Type30=1 Type31=1 Type32=1 Type33=1 Type34=1 Type35=1 Type36=1 Type37=1 Type38=1 Type39=1 Type40=1 Type41=1 Type42=1 Type43=1 Type44=1 Type45=1 Type46=1 Type47=1 Type48=1 Type49=1 Type50=1 Type51=1 Type52=1 Type53=1 Type54=1 Type55=1 Type56=1 Type57=1 Type58=1 Type59=1 Type60=1 Type61=1 Type62=1 Type63=1 Type64=1 Type65=1 Type66=1 Type67=1 Type68=1 Type69=1 Type70=1 Type71=1 Type72=1 Type73=1 Type74=1 Type75=1 Type76=1 Type77=1 Type78=1 [Difference Levels] Type1=1 Type2=1 Type3=1 Type4=1 Type5=1 Type6=1 Type7=1 Type8=1 Type9=1 Type10=1 Type11=1 Type12=1 Type13=1 Type14=1 Type15=1 Type16=1 Type17=1 Type18=1 Type19=1 Type20=1 Type21=1 Type22=1 Type23=1 Type24=1 Type25=1 Type26=1 Type27=1 Type28=1 Type29=1 Type30=1 Type31=1 Type32=1 Type33=1 Type34=1 Type35=1 Type36=1 Type37=1 Type38=1 Type39=1 Type40=1 Type41=1 Type42=1 Type43=1 [Electrical Rules Check] Type1=1 Type2=1 Type3=2 Type4=1 Type5=2 Type6=2 Type7=1 Type8=1 Type9=1 Type10=1 Type11=2 Type12=2 Type13=2 Type14=1 Type15=1 Type16=1 Type17=1 Type18=1 Type19=1 Type20=1 Type21=1 Type22=1 Type23=1 Type24=1 Type25=2 Type26=2 Type27=2 Type28=1 Type29=1 Type30=1 Type31=1 Type32=2 Type33=2 Type34=2 Type35=1 Type36=2 Type37=1 Type38=2 Type39=2 Type40=2 Type41=0 Type42=2 Type43=1 Type44=1 Type45=2 Type46=1 Type47=2 Type48=2 Type49=1 Type50=2 Type51=1 Type52=1 Type53=1 Type54=1 Type55=1 Type56=2 Type57=1 Type58=1 Type59=0 Type60=1 Type61=2 Type62=2 Type63=1 Type64=0 Type65=2 Type66=3 Type67=2 Type68=2 Type69=1 Type70=2 Type71=2 Type72=2 Type73=2 Type74=1 Type75=2 Type76=1 Type77=1 Type78=1 Type79=1 Type80=2 Type81=3 Type82=3 Type83=3 Type84=3 Type85=3 Type86=2 Type87=2 Type88=2 Type89=1 Type90=1 Type91=3 Type92=3 Type93=2 Type94=2 Type95=2 Type96=2 Type97=2 Type98=0 Type99=1 Type100=2 Type101=1 Type102=2 Type103=2 Type104=1 Type105=2 Type106=2 Type107=2 Type108=2 Type109=1 [ERC Connection Matrix] L1=NNNNNNNNNNNWNNNWW L2=NNWNNNNWWWNWNWNWN L3=NWEENEEEENEWNEEWN L4=NNENNNWEENNWNENWN L5=NNNNNNNNNNNNNNNNN L6=NNENNNNEENNWNENWN L7=NNEWNNWEENNWNENWN L8=NWEENEENEEENNEENN L9=NWEENEEEENEWNEEWW L10=NWNNNNNENNEWNNEWN L11=NNENNNNEEENWNENWN L12=WWWWNWWNWWWNWWWNN L13=NNNNNNNNNNNWNNNWW L14=NWEENEEEENEWNEEWW L15=NNENNNNEEENWNENWW L16=WWWWNWWNWWWNWWWNW L17=WNNNNNNNWNNNWWWWN [Annotate] SortOrder=3 SortLocation=0 MatchParameter1=Comment MatchStrictly1=1 MatchParameter2=Library Reference MatchStrictly2=1 PhysicalNamingFormat=$Component_$RoomName GlobalIndexSortOrder=3 GlobalIndexSortLocation=0 [PrjClassGen] CompClassManualEnabled=0 CompClassManualRoomEnabled=0 NetClassAutoBusEnabled=1 NetClassAutoCompEnabled=0 NetClassAutoNamedHarnessEnabled=0 NetClassManualEnabled=1 [LibraryUpdateOptions] SelectedOnly=0 UpdateVariants=1 PartTypes=0 FullReplace=1 UpdateDesignatorLock=1 UpdatePartIDLock=1 PreserveParameterLocations=1 PreserveParameterVisibility=1 DoGraphics=1 DoParameters=1 DoModels=1 AddParameters=0 RemoveParameters=0 AddModels=1 RemoveModels=1 UpdateCurrentModels=1 [DatabaseUpdateOptions] SelectedOnly=0 UpdateVariants=1 PartTypes=0 [Comparison Options] ComparisonOptions0=Kind=Net|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 ComparisonOptions1=Kind=Net Class|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 ComparisonOptions2=Kind=Component Class|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 ComparisonOptions3=Kind=Rule|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 ComparisonOptions4=Kind=Differential Pair|MinPercent=50|MinMatch=1|ShowMatch=0|Confirm=0|UseName=0|InclAllRules=0 ComparisonOptions5=Kind=Code Memory|MinPercent=75|MinMatch=3|ShowMatch=-1|Confirm=-1|UseName=-1|InclAllRules=0 [SmartPDF] PageOptions=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=1|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-3|MediaType=1|DitherType=10|PrintScaleMode=1|PaperKind=Letter|PaperIndex=1 ================================================ FILE: hardware/Status Report.Txt ================================================ Source PCB Design panel.PcbDoc contains embedded board array. It is recomended to generate individual BOM for each embedded board PCB design. Output: NC Drill Files Type : NC Drill From : Project [Free Documents] Generated File[panel-RoundHoles.TXT] Generated File[panel-SlotHoles.TXT] Generated File[panel.LDP] Generated File[panel.DRR] Files Generated : 4 Documents Printed : 0 Finished Output Generation At 7:25:51 AM On 10/11/2016 ================================================ FILE: hardware/panel-RoundHoles.TXT ================================================ M48 ;Layer_Color=9474304 ;FILE_FORMAT=2:5 INCH,LZ ;TYPE=PLATED T1F00S00C0.00787 T2F00S00C0.01200 T5F00S00C0.02700 T6F00S00C0.04000 T7F00S00C0.04331 T8F00S00C0.05118 T9F00S00C0.13780 ;TYPE=NON_PLATED T10F00S00C0.03100 % T01 X0357013Y0242213 Y0246544 X0361344 Y0242213 X0365675 Y0246544 Y0250875 X0361344 X0357013 X0185675 X0181344 X0177013 Y0246544 X0181344 Y0242213 X0177013 X0185675 Y0246544 Y0422213 Y0426544 Y0430875 X0181344 X0177013 Y0426544 X0181344 Y0422213 X0177013 X0357013 Y0426544 X0361344 Y0422213 X0365675 Y0426544 Y0430875 X0361344 X0357013 T02 X0151744Y0128744 X0171744Y0150744 X01889Y01524 X01926Y01531 Y01495 X01979Y0146186 X01947Y01414 X01845Y0143895 X0214744Y0142244 X0213244Y0148744 X0217744Y0150244 X02223Y015183 X0242618Y0148744 X0242744Y0128945 X0258744Y0134244 X0206744Y0128945 X0331744Y0128744 X0351744Y0150744 X03689Y01524 X03726Y01531 Y01495 X03779Y0146186 X03747Y01414 X03645Y0143895 X0394744Y0142244 X0393244Y0148744 X0397744Y0150244 X04023Y015183 X0422618Y0148744 X0422744Y0128945 X0438744Y0134244 X0386744Y0128945 X03824Y0165244 X0383744Y0178244 Y0190244 X0387744Y0188744 X0392744Y0185744 X0397744Y0187244 X0400244Y0189744 X0401744Y0185244 Y0178244 X0406244Y0191244 X04147Y01922 Y01881 X04189Y0186044 X04255Y01866 X04351Y01904 X04291Y01969 X04261Y02007 X0414744Y0202744 X04107Y02112 X0413941Y0225283 X04189Y02207 X04294Y0229705 X04239Y02372 X0412244Y0238244 X04044Y0227244 X0395244Y0243244 X0379744 X0381244Y0239744 X0382244Y0236244 X0378744Y0234244 X03757Y02302 X0381244Y0229244 X0370244Y02259 X0365744Y0227744 X0363744Y0225244 Y0230744 Y0234244 X0368244 Y0230744 X0366244Y023665 X0356744Y0236744 X0358744Y0234244 X0352444Y0234044 X0349544 X0346644 X0348744Y0225244 X0352744 X0361744Y0221244 X03708Y02173 X03663Y02006 X0358744Y0200744 X0355244Y0202244 X03531Y01913 X0363244Y0187244 X0369744Y0185244 X0367244Y0181244 X0363987Y0168409 X0358Y01566 X0346Y01653 X03346Y0181244 X0339087Y0202744 X0330244Y0207744 X0327744Y0217244 X0320744 X0321044Y0226544 X0321244Y0232244 X0330244 X0329644Y0226644 X0329244Y0246344 X0321244Y0246244 X0321244Y0251244 X0316244Y0260244 Y0269244 X0315744Y0277244 X0323744Y0283744 X0330744 X0338744Y0283244 X0339744Y0262244 X0346744Y0261644 X0346644Y0264944 X0347044Y0268444 X0356244Y0268744 X0360244Y0268744 X0364244Y0264744 X0368244Y0260744 X0372244Y0260744 X0376244Y0264744 Y0268744 X0372244 X0380244Y0264744 X0360244Y0260744 X0362744Y0256744 X0378544Y0199889 X0379744Y0188244 X04105Y0168409 X04126Y01651 X0406418Y0163 X04089Y01601 X04002Y0157244 X04322Y01627 X0439244Y0157244 X0448744Y0170344 X04467Y01818 X0438744Y02027 X0435244Y0215244 X04529Y02052 X04259Y01729 X0422744Y0308945 X0386744 X0331744Y0308744 X0242744Y0308945 X0206744 X0196244Y0268744 Y0264744 X0200244 X0192244Y0260744 X0188244Y0260744 X0180244 X0182744Y0256744 X0184244Y0264744 X0180244Y0268744 X0176244Y0268744 X0167044Y0268444 X0166644Y0264944 X0166744Y0261644 X0159744Y0262244 X0158744Y0283244 X0192244Y0268744 X0199744Y0243244 X0201244Y0239744 X0202244Y0236244 X0198744Y0234244 X01957Y02302 X0201244Y0229244 X0190244Y02259 X0185744Y0227744 X0183744Y0225244 Y0230744 Y0234244 X0188244 Y0230744 X0186244Y023665 X0176744Y0236744 X0178744Y0234244 X0172444Y0234044 X0169544 X0166644 X0168744Y0225244 X0172744 X0181744Y0221244 X01908Y02173 X01863Y02006 X0178744Y0200744 X0175244Y0202244 X01731Y01913 X0183244Y0187244 X0189744Y0185244 X0187244Y0181244 X0183987Y0168409 X0178Y01566 X0166Y01653 X02024Y0165244 X0203744Y0178244 Y0190244 X0207744Y0188744 X0212744Y0185744 X0217744Y0187244 X0220244Y0189744 X0221744Y0185244 Y0178244 X0226244Y0191244 X02347Y01922 Y01881 X02389Y0186044 X02455Y01866 X02551Y01904 X02491Y01969 X02461Y02007 X0234744Y0202744 X02307Y02112 X0233941Y0225283 X02389Y02207 X02494Y0229705 X02439Y02372 X0232244Y0238244 X02244Y0227244 X0215244Y0243244 X0198544Y0199889 X0199744Y0188244 X02305Y0168409 X02326Y01651 X0226418Y0163 X02289Y01601 X02202Y0157244 X02522Y01627 X0259244Y0157244 X0268744Y0170344 X02667Y01818 X0258744Y02027 X0255244Y0215244 X02729Y02052 X02459Y01729 X0159087Y0202744 X0150244Y0207744 X0147744Y0217244 X0140744 X0141044Y0226544 X0141244Y0232244 X0150244 X0149644Y0226644 X0149244Y0246344 X0141244Y0246244 X0141244Y0251244 X0136244Y0260244 Y0269244 X0135744Y0277244 X0143744Y0283744 X0150744 X0151744Y0308744 X01546Y0181244 Y0361244 X0150244Y0387744 X0147744Y0397244 X0140744 X0141044Y0406544 X0141244Y0412244 X0150244 X0149644Y0406644 X0149244Y0426344 X0141244Y0426244 X0141244Y0431244 X0136244Y0440244 Y0449244 X0135744Y0457244 X0143744Y0463744 X0150744 X0158744Y0463244 X0159744Y0442244 X0166744Y0441644 X0166644Y0444944 X0167044Y0448444 X0176244Y0448744 X0180244Y0448744 X0184244Y0444744 X0188244Y0440744 X0192244Y0440744 X0196244Y0444744 Y0448744 X0192244 X0200244Y0444744 X0199744Y0423244 X0201244Y0419744 X0202244Y0416244 X0198744Y0414244 X01957Y04102 X0201244Y0409244 X0190244Y04059 X0185744Y0407744 X0183744Y0405244 Y0410744 Y0414244 X0188244 Y0410744 X0186244Y041665 X0176744Y0416744 X0178744Y0414244 X0172444Y0414044 X0169544 X0166644 X0168744Y0405244 X0172744 X0181744Y0401244 X01908Y03973 X01863Y03806 X0178744Y0380744 X0175244Y0382244 X01731Y03713 X0183244Y0367244 X0189744Y0365244 X0187244Y0361244 X0183987Y0348409 X0178Y03366 X0171744Y0330744 X01889Y03324 X01926Y03331 Y03295 X01979Y0326186 X01947Y03214 X01845Y0323895 X0214744Y0322244 X0213244Y0328744 X0217744Y0330244 X02223Y033183 X02202Y0337244 X02289Y03401 X0226418Y0343 X02326Y03451 X02305Y0348409 X0221744Y0358244 Y0365244 X0220244Y0369744 X0217744Y0367244 X0212744Y0365744 X0207744Y0368744 X0203744Y0370244 X0199744Y0368244 X0198544Y0379889 X0203744Y0358244 X02024Y0345244 X0166Y03453 X0159087Y0382744 X0234744 X02347Y03722 Y03681 X02389Y0366044 X02455Y03666 X02551Y03704 X02491Y03769 X02461Y03807 X0258744Y03827 X0255244Y0395244 X02494Y0409705 X02439Y04172 X0232244Y0418244 X0233941Y0405283 X02389Y04007 X02307Y03912 X02244Y0407244 X0215244Y0423244 X0182744Y0436744 X0180244Y0440744 X0226244Y0371244 X02459Y03529 X02522Y03427 X0259244Y0337244 X0268744Y0350344 X02667Y03618 X02729Y03852 X0258744Y0314244 X0242618Y0328744 X0351744Y0330744 X0358Y03366 X03689Y03324 X03726Y03331 Y03295 X03779Y0326186 X03747Y03214 X03645Y0323895 X0363987Y0348409 X0367244Y0361244 X0369744Y0365244 X0363244Y0367244 X03531Y03713 X0355244Y0382244 X0358744Y0380744 X03663Y03806 X0378544Y0379889 X0379744Y0368244 X0383744Y0370244 X0387744Y0368744 X0392744Y0365744 X0397744Y0367244 X0400244Y0369744 X0401744Y0365244 Y0358244 X0406244Y0371244 X04147Y03722 Y03681 X04189Y0366044 X04255Y03666 X04351Y03704 X04291Y03769 X04261Y03807 X0414744Y0382744 X04107Y03912 X0413941Y0405283 X04189Y04007 X04294Y0409705 X04239Y04172 X0412244Y0418244 X04044Y0407244 X0395244Y0423244 X0379744 X0381244Y0419744 X0382244Y0416244 X0378744Y0414244 X03757Y04102 X0381244Y0409244 X0370244Y04059 X0365744Y0407744 X0363744Y0405244 Y0410744 Y0414244 X0368244 Y0410744 X0366244Y041665 X0356744Y0416744 X0358744Y0414244 X0352444Y0414044 X0349544 X0346644 X0348744Y0405244 X0352744 X0361744Y0401244 X03708Y03973 X0327744Y0397244 X0320744 X0321044Y0406544 X0321244Y0412244 X0330244 X0329644Y0406644 X0330244Y0387744 X0339087Y0382744 X03346Y0361244 X0346Y03453 X03824Y0345244 X0383744Y0358244 X04105Y0348409 X04126Y03451 X0406418Y0343 X04089Y03401 X04002Y0337244 X04023Y033183 X0397744Y0330244 X0393244Y0328744 X0394744Y0322244 X0422618Y0328744 X04322Y03427 X0439244Y0337244 X0448744Y0350344 X04467Y03618 X0438744Y03827 X0435244Y0395244 X04529Y03852 X04259Y03529 X0438744Y0314244 X0380244Y0444744 X0376244 Y0448744 X0372244 X0372244Y0440744 X0368244Y0440744 X0360244 X0362744Y0436744 X0364244Y0444744 X0360244Y0448744 X0356244Y0448744 X0347044Y0448444 X0346644Y0444944 X0346744Y0441644 X0339744Y0442244 X0338744Y0463244 X0330744Y0463744 X0323744 X0315744Y0457244 X0316244Y0449244 Y0440244 X0321244Y0431244 X0321244Y0426244 X0329244Y0426344 T05 X0321744Y0166744 Y0171744 X0326744 Y0166744 X0331744 Y0171744 X0336744 Y0166744 X0341744 Y0171744 X0161744 X0156744 Y0166744 X0161744 X0151744 X0146744 X0141744 Y0171744 X0146744 X0151744 Y0346744 X0146744 X0141744 Y0351744 X0146744 X0151744 X0156744 Y0346744 X0161744 Y0351744 X0321744 Y0346744 X0326744 Y0351744 X0331744 Y0346744 X0336744 Y0351744 X0341744 Y0346744 T06 X0385244Y0252744 X0395244 X0405244 X0415244 X0312044Y0252344 Y0242344 Y0232344 Y0222344 X0235244Y0252744 X0225244 X0215244 X0205244 X0132044Y0252344 Y0242344 Y0232344 Y0222344 Y0402344 Y0412344 Y0422344 Y0432344 X0205244Y0432744 X0215244 X0225244 X0235244 X0312044Y0432344 Y0422344 Y0412344 Y0402344 X0385244Y0432744 X0395244 X0405244 X0415244 T07 X04635Y01612 Y01712 Y01812 Y01912 Y02012 Y02112 Y02212 Y02312 Y02412 Y02512 X02835 Y02412 Y02312 Y02212 Y02112 Y02012 Y01912 Y01812 Y01712 Y01612 Y03412 Y03512 Y03612 Y03712 Y03812 Y03912 Y04012 Y04112 Y04212 Y04312 X04635 Y04212 Y04112 Y04012 Y03912 Y03812 Y03712 Y03612 Y03512 Y03412 T08 X0395744Y0276244 X0415744 X0235744 X0215744 Y0456244 X0235744 X0395744 X0415744 T09 X0147744Y0146744 X0269791 X0327744 X0449791 Y0268791 X0327744 X0269791 X0147744 Y0326744 Y0448791 X0269791 Y0326744 X0327744 X0449791 Y0448791 X0327744 T10 X01246Y01525 X01555Y0124 X01605 X01655 X01705 X01755 X01805 X02363Y01238 X02413 X02463 X02513 X02563 X02613 X02906Y015 Y0155 X03051 Y015 X0332Y0124 X0337 X0342 X0347 X0352 X0357 X04187Y01244 X04237 X04287 X04337 X04387 X04437 X04706Y01525 Y01575 Y01625 Y01675 Y01725 Y01775 X04716Y02161 Y02211 Y02261 Y02311 Y02361 Y02411 X04325Y02901 X04275 X04225 X04175 X04125 X04075 X04064Y03037 X04114 X04164 X04214 X04264 X04314 X03606Y03045 X03556 X03506 X03456 X03406 X03356 X03355Y02899 X03405 X03455 X03505 X03555 X03605 X03048Y02543 Y02493 Y02443 Y02393 Y02343 Y02293 X02914Y02298 Y02348 Y02398 Y02448 Y02498 Y02548 X02611Y02901 X02561 X02511 X02461 X02411 X02361 X02359Y03033 X02409 X02459 X02509 X02559 X02609 X01755Y03039 X01705 X01655 X01605 X01607Y02901 X01657 X01707 X01757 X02906Y0175 Y017 Y0165 Y016 X03051 Y0165 Y017 Y0175 X01246Y01775 Y01725 Y01675 Y01625 Y01575 X0125Y024 Y0245 Y025 Y0255 Y026 Y0265 X01507Y02901 X01557 X01555Y03039 X01505 X01251Y03317 Y03367 Y03417 Y03467 Y03517 Y03567 X01252Y04092 Y04142 Y04192 Y04242 Y04292 Y04342 X0291Y04291 Y04241 Y04191 Y04141 Y04091 Y04041 X03049Y04045 Y04095 Y04145 Y04195 Y04245 Y04295 X03047Y03632 Y03582 Y03532 Y03482 Y03432 Y03382 X02912Y03383 Y03433 Y03483 Y03533 Y03583 Y03633 X04716Y03645 Y03595 Y03545 Y03495 Y03445 Y03395 X04712Y04014 Y04064 Y04114 Y04164 Y04214 Y04264 X0435Y04696 X043 X0425 X042 X0415 X041 X0365 X036 X0355 X035 X0345 X034 X02526 X02476 X02426 X02376 X02326 X02276 X01832Y04698 X01782 X01732 X01682 X01632 X01582 M30 ================================================ FILE: hardware/panel-SlotHoles.TXT ================================================ M48 ;Layer_Color=9474304 ;FILE_FORMAT=2:5 INCH,LZ ;TYPE=PLATED T3F00S00C0.01968 T4F00S00C0.02165 ;TYPE=NON_PLATED % G90 G05 T03 G00X0311728Y0181964 M15 G01X0314287 M16 G00X0311728Y0209524 M15 G01X0314287 M16 G00X0131728Y0209524 M15 G01X0134287 M16 G00X0131728Y0181964 M15 G01X0134287 M16 G00X0131728Y0361964 M15 G01X0134287 M16 G00X0131728Y0389524 M15 G01X0134287 M16 G00X0311728Y0389524 M15 G01X0314287 M16 G00X0311728Y0361964 M15 G01X0314287 M16 T04 G00X0324031Y0186492 M15 G01Y0185311 M16 G00X0324031Y0206177 M15 G01Y0204996 M16 G00X0144031Y0206177 M15 G01Y0204996 M16 G00X0144031Y0186492 M15 G01Y0185311 M16 G00X0144031Y0366492 M15 G01Y0365311 M16 G00X0144031Y0386177 M15 G01Y0384996 M16 G00X0324031Y0386177 M15 G01Y0384996 M16 G00X0324031Y0366492 M15 G01Y0365311 M16 M17 M30 ================================================ FILE: hardware/panel-macro.APR_LIB ================================================ G04:AMPARAMS|DCode=11|XSize=31.5mil|YSize=35.43mil|CornerRadius=7.87mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD11* 21,1,0.03150,0.01969,0,0,270.0* 21,1,0.01575,0.03543,0,0,270.0* 1,1,0.01575,-0.00984,-0.00787* 1,1,0.01575,-0.00984,0.00787* 1,1,0.01575,0.00984,0.00787* 1,1,0.01575,0.00984,-0.00787* % G04:AMPARAMS|DCode=18|XSize=31.5mil|YSize=31.5mil|CornerRadius=7.87mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD18* 21,1,0.03150,0.01575,0,0,90.0* 21,1,0.01575,0.03150,0,0,90.0* 1,1,0.01575,0.00787,0.00787* 1,1,0.01575,0.00787,-0.00787* 1,1,0.01575,-0.00787,-0.00787* 1,1,0.01575,-0.00787,0.00787* % G04:AMPARAMS|DCode=20|XSize=27.56mil|YSize=51.18mil|CornerRadius=6.89mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD20* 21,1,0.02756,0.03740,0,0,90.0* 21,1,0.01378,0.05118,0,0,90.0* 1,1,0.01378,0.01870,0.00689* 1,1,0.01378,0.01870,-0.00689* 1,1,0.01378,-0.01870,-0.00689* 1,1,0.01378,-0.01870,0.00689* % G04:AMPARAMS|DCode=22|XSize=23.62mil|YSize=35.43mil|CornerRadius=5.91mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD22* 21,1,0.02362,0.02362,0,0,270.0* 21,1,0.01181,0.03543,0,0,270.0* 1,1,0.01181,-0.01181,-0.00591* 1,1,0.01181,-0.01181,0.00591* 1,1,0.01181,0.01181,0.00591* 1,1,0.01181,0.01181,-0.00591* % G04:AMPARAMS|DCode=25|XSize=78.74mil|YSize=39.37mil|CornerRadius=9.84mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD25* 21,1,0.07874,0.01969,0,0,0.0* 21,1,0.05906,0.03937,0,0,0.0* 1,1,0.01969,0.02953,-0.00984* 1,1,0.01969,-0.02953,-0.00984* 1,1,0.01969,-0.02953,0.00984* 1,1,0.01969,0.02953,0.00984* % G04:AMPARAMS|DCode=27|XSize=9.84mil|YSize=33.47mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=135.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD27* 21,1,0.02362,0.00984,0.00000,0.00000,225.0* 1,1,0.00984,0.00835,0.00835* 1,1,0.00984,-0.00835,-0.00835* % G04:AMPARAMS|DCode=28|XSize=9.84mil|YSize=35.43mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=135.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD28* 21,1,0.02559,0.00984,0.00000,0.00000,225.0* 1,1,0.00984,0.00905,0.00905* 1,1,0.00984,-0.00905,-0.00905* % G04:AMPARAMS|DCode=29|XSize=9.84mil|YSize=33.47mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD29* 21,1,0.02362,0.00984,0.00000,0.00000,315.0* 1,1,0.00984,-0.00835,0.00835* 1,1,0.00984,0.00835,-0.00835* % G04:AMPARAMS|DCode=30|XSize=9.84mil|YSize=35.43mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD30* 21,1,0.02559,0.00984,0.00000,0.00000,315.0* 1,1,0.00984,-0.00905,0.00905* 1,1,0.00984,0.00905,-0.00905* % G04:AMPARAMS|DCode=31|XSize=9.84mil|YSize=33.47mil|CornerRadius=2.46mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD31* 21,1,0.00984,0.02854,0,0,225.0* 21,1,0.00492,0.03347,0,0,225.0* 1,1,0.00492,-0.01183,0.00835* 1,1,0.00492,-0.00835,0.01183* 1,1,0.00492,0.01183,-0.00835* 1,1,0.00492,0.00835,-0.01183* % G04:AMPARAMS|DCode=63|XSize=23.62mil|YSize=62.99mil|CornerRadius=5.91mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD63* 21,1,0.02362,0.05118,0,0,0.0* 21,1,0.01181,0.06299,0,0,0.0* 1,1,0.01181,0.00591,-0.02559* 1,1,0.01181,-0.00591,-0.02559* 1,1,0.01181,-0.00591,0.02559* 1,1,0.01181,0.00591,0.02559* % G04:AMPARAMS|DCode=72|XSize=39.5mil|YSize=43.43mil|CornerRadius=11.87mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD72* 21,1,0.03950,0.01969,0,0,270.0* 21,1,0.01575,0.04343,0,0,270.0* 1,1,0.02375,-0.00984,-0.00787* 1,1,0.02375,-0.00984,0.00787* 1,1,0.02375,0.00984,0.00787* 1,1,0.02375,0.00984,-0.00787* % G04:AMPARAMS|DCode=79|XSize=39.5mil|YSize=39.5mil|CornerRadius=11.87mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD79* 21,1,0.03950,0.01575,0,0,90.0* 21,1,0.01575,0.03950,0,0,90.0* 1,1,0.02375,0.00787,0.00787* 1,1,0.02375,0.00787,-0.00787* 1,1,0.02375,-0.00787,-0.00787* 1,1,0.02375,-0.00787,0.00787* % G04:AMPARAMS|DCode=81|XSize=35.56mil|YSize=59.18mil|CornerRadius=10.89mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD81* 21,1,0.03556,0.03740,0,0,90.0* 21,1,0.01378,0.05918,0,0,90.0* 1,1,0.02178,0.01870,0.00689* 1,1,0.02178,0.01870,-0.00689* 1,1,0.02178,-0.01870,-0.00689* 1,1,0.02178,-0.01870,0.00689* % G04:AMPARAMS|DCode=83|XSize=31.62mil|YSize=43.43mil|CornerRadius=9.91mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD83* 21,1,0.03162,0.02362,0,0,270.0* 21,1,0.01181,0.04343,0,0,270.0* 1,1,0.01981,-0.01181,-0.00591* 1,1,0.01981,-0.01181,0.00591* 1,1,0.01981,0.01181,0.00591* 1,1,0.01981,0.01181,-0.00591* % G04:AMPARAMS|DCode=86|XSize=86.74mil|YSize=47.37mil|CornerRadius=13.84mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD86* 21,1,0.08674,0.01969,0,0,0.0* 21,1,0.05906,0.04737,0,0,0.0* 1,1,0.02769,0.02953,-0.00984* 1,1,0.02769,-0.02953,-0.00984* 1,1,0.02769,-0.02953,0.00984* 1,1,0.02769,0.02953,0.00984* % G04:AMPARAMS|DCode=88|XSize=17.84mil|YSize=41.47mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=135.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD88* 21,1,0.02362,0.01784,0.00000,0.00000,225.0* 1,1,0.01784,0.00835,0.00835* 1,1,0.01784,-0.00835,-0.00835* % G04:AMPARAMS|DCode=89|XSize=17.84mil|YSize=43.43mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=135.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD89* 21,1,0.02559,0.01784,0.00000,0.00000,225.0* 1,1,0.01784,0.00905,0.00905* 1,1,0.01784,-0.00905,-0.00905* % G04:AMPARAMS|DCode=90|XSize=17.84mil|YSize=41.47mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD90* 21,1,0.02362,0.01784,0.00000,0.00000,315.0* 1,1,0.01784,-0.00835,0.00835* 1,1,0.01784,0.00835,-0.00835* % G04:AMPARAMS|DCode=91|XSize=17.84mil|YSize=43.43mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD91* 21,1,0.02559,0.01784,0.00000,0.00000,315.0* 1,1,0.01784,-0.00905,0.00905* 1,1,0.01784,0.00905,-0.00905* % G04:AMPARAMS|DCode=92|XSize=17.84mil|YSize=41.47mil|CornerRadius=6.46mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD92* 21,1,0.01784,0.02854,0,0,225.0* 21,1,0.00492,0.04147,0,0,225.0* 1,1,0.01292,-0.01183,0.00835* 1,1,0.01292,-0.00835,0.01183* 1,1,0.01292,0.01183,-0.00835* 1,1,0.01292,0.00835,-0.01183* % G04:AMPARAMS|DCode=112|XSize=31.62mil|YSize=70.99mil|CornerRadius=9.91mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD112* 21,1,0.03162,0.05118,0,0,0.0* 21,1,0.01181,0.07099,0,0,0.0* 1,1,0.01981,0.00591,-0.02559* 1,1,0.01981,-0.00591,-0.02559* 1,1,0.01981,-0.00591,0.02559* 1,1,0.01981,0.00591,0.02559* % ================================================ FILE: hardware/panel.1 ================================================ G04 Layer_Color=255* %FSLAX25Y25*% %MOIN*% G70* G01* G75* M02* ================================================ FILE: hardware/panel.DRR ================================================ ---------------------------------------------------------------------------------------------------------------------------------- NCDrill File Report For: panel.PcbDoc 10/11/2016 7:25:51 AM ---------------------------------------------------------------------------------------------------------------------------------- Layer Pair : Top Layer to Bottom Layer ASCII RoundHoles File : panel-RoundHoles.TXT ASCII SlotHoles File : panel-SlotHoles.TXT Tool Hole Size Hole Tolerance Hole Type Hole Count Plated Tool Travel ---------------------------------------------------------------------------------------------------------------------------------- T1 8mil (0.2mm) Round 36 PTH 6.70inch (170.16mm) T2 12mil (0.305mm) Round 492 PTH 63.35inch (1609.14mm) T3 20mil (0.5mm) Slot 8 PTH 13.21inch (335.65mm) T4 22mil (0.55mm) Slot 8 PTH 12.48inch (317.02mm) T5 27mil (0.686mm) Round 40 PTH 7.00inch (177.80mm) T6 40mil (1.016mm) Round 32 PTH 9.08inch (230.70mm) T7 43mil (1.1mm) Round 40 PTH 9.00inch (228.60mm) T8 51mil (1.3mm) Round 8 PTH 6.00inch (152.40mm) T9 138mil (3.5mm) Round 16 PTH 15.74inch (399.88mm) T10 31mil (0.787mm) Round 192 NPTH 28.19inch (715.91mm) ---------------------------------------------------------------------------------------------------------------------------------- Totals 872 Total Processing Time (hh:mm:ss) : 00:00:00 ================================================ FILE: hardware/panel.EXTREP ================================================ ------------------------------------------------------------------------------------------ Gerber File Extension Report For: panel.GBR 10/11/2016 7:23:43 AM ------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------ Layer Extension Layer Description ------------------------------------------------------------------------------------------ .GTL Top Layer .GBL Bottom Layer .GPB Bottom Pad Master .GPT Top Pad Master .GTO Top Overlay .GTP Top Paste .GTS Top Solder .GBS Bottom Solder .GBP Bottom Paste .GBO Bottom Overlay .GKO Keep-Out Layer .GM1 Mechanical 1 .GM3 Mechanical 3 .GM2 Mechanical 2 .GM13 Mechanical 13 .GM15 Mechanical 15 .1 Dielectric 1 .GML Multi-Layer .GD1 Drill Drawing ------------------------------------------------------------------------------------------ ================================================ FILE: hardware/panel.GBL ================================================ G04 Layer_Physical_Order=2* G04 Layer_Color=16711680* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD13R,0.03347X0.03150*% %ADD24R,0.03543X0.02953*% %ADD38C,0.00600*% %ADD40C,0.02000*% %ADD41C,0.04000*% %ADD43C,0.00800*% %ADD48C,0.06000*% %ADD49C,0.01000*% %ADD50O,0.04724X0.09449*% %ADD51O,0.06102X0.03543*% %ADD52O,0.03740X0.04921*% %ADD53C,0.07000*% %ADD54R,0.07000X0.07000*% %ADD55C,0.04000*% %ADD56R,0.04000X0.04000*% %ADD57R,0.07000X0.07000*% %ADD58C,0.07874*% %ADD59C,0.02400*% %ADD60C,0.01969*% %ADD61R,0.03150X0.03347*% %ADD62R,0.02953X0.03543*% G04:AMPARAMS|DCode=63|XSize=23.62mil|YSize=62.99mil|CornerRadius=5.91mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD63* 21,1,0.02362,0.05118,0,0,0.0* 21,1,0.01181,0.06299,0,0,0.0* 1,1,0.01181,0.00591,-0.02559* 1,1,0.01181,-0.00591,-0.02559* 1,1,0.01181,-0.00591,0.02559* 1,1,0.01181,0.00591,0.02559* % %ADD63ROUNDEDRECTD63*% %ADD64R,0.02362X0.06299*% %ADD65R,0.01772X0.05512*% %ADD66O,0.01772X0.05512*% G36* X469325Y459112D02* Y414044D01* Y375657D01* X468825Y375449D01* X467337Y376937D01* X466907Y377225D01* X466610Y377284D01* X466476Y377812D01* X466709Y377991D01* X467431Y378931D01* X467884Y380025D01* X468039Y381200D01* X467884Y382375D01* X467431Y383469D01* X466709Y384409D01* X465769Y385131D01* X464675Y385584D01* X463500Y385739D01* X462325Y385584D01* X461231Y385131D01* X460291Y384409D01* X459569Y383469D01* X459116Y382375D01* X458961Y381200D01* X459116Y380025D01* X459569Y378931D01* X460291Y377991D01* X460540Y377799D01* X460380Y377326D01* X459300D01* X458793Y377225D01* X458363Y376937D01* X458153Y376727D01* X441516D01* Y377878D01* X440069D01* Y378551D01* X442437Y380919D01* X442725Y381349D01* X442826Y381856D01* Y390602D01* X442725Y391109D01* X442437Y391539D01* X441637Y392339D01* X441516Y392420D01* Y393878D01* X440069D01* Y395851D01* X443437Y399219D01* X443725Y399649D01* X443825Y400156D01* Y414044D01* Y419397D01* X443725Y419904D01* X443437Y420334D01* X442624Y421148D01* X441025Y422746D01* Y426532D01* X444819D01* Y427879D01* X451800D01* X452307Y427980D01* X452737Y428268D01* X454344Y429875D01* X459178D01* X459569Y428931D01* X460291Y427991D01* X461231Y427269D01* X462325Y426816D01* X463500Y426661D01* X464675Y426816D01* X465769Y427269D01* X466709Y427991D01* X467431Y428931D01* X467884Y430025D01* X468039Y431200D01* X467884Y432375D01* X467431Y433469D01* X466709Y434409D01* X465769Y435131D01* X464675Y435584D01* X463500Y435739D01* X462325Y435584D01* X461231Y435131D01* X460291Y434409D01* X459569Y433469D01* X459178Y432525D01* X453795D01* X453288Y432425D01* X452858Y432137D01* X451251Y430530D01* X444819D01* Y431878D01* X439669D01* Y430524D01* X439193Y430429D01* X438763Y430142D01* X438475Y429712D01* X438375Y429205D01* Y424353D01* X438094Y424237D01* X437875Y424194D01* X437463Y424469D01* X436956Y424570D01* X407378D01* Y426016D01* X405533D01* X405266Y426516D01* X405335Y426618D01* X407232D01* X407739Y426719D01* X408170Y427007D01* X408581Y427419D01* X411244D01* X411751Y427520D01* X412181Y427807D01* X413125Y428751D01* X414069Y428360D01* X415244Y428205D01* X416419Y428360D01* X417513Y428813D01* X418453Y429535D01* X419175Y430475D01* X419628Y431569D01* X419783Y432744D01* X419628Y433919D01* X419175Y435013D01* X418453Y435953D01* X417513Y436675D01* X416419Y437128D01* X415244Y437283D01* X414069Y437128D01* X412975Y436675D01* X412035Y435953D01* X411313Y435013D01* X410860Y433919D01* X410705Y432744D01* X410860Y431569D01* X411251Y430625D01* X410695Y430070D01* X409423D01* X409214Y430570D01* X409628Y431569D01* X409783Y432744D01* X409628Y433919D01* X409175Y435013D01* X408453Y435953D01* X407513Y436675D01* X406419Y437128D01* X405244Y437283D01* X404069Y437128D01* X402975Y436675D01* X402035Y435953D01* X401313Y435013D01* X400860Y433919D01* X400705Y432744D01* X400860Y431569D01* X401313Y430475D01* X402035Y429535D01* X402837Y428919D01* X402963Y428338D01* X401026Y426400D01* X400769Y426016D01* X397110D01* Y425243D01* X396610Y424977D01* X396102Y425316D01* X395244Y425487D01* X394386Y425316D01* X394319Y425272D01* X393878Y425508D01* Y425819D01* X388532D01* Y420669D01* X393878D01* Y420981D01* X394319Y421216D01* X394386Y421172D01* X395244Y421001D01* X396102Y421172D01* X396610Y421511D01* X397110Y421246D01* Y420472D01* X397110D01* Y420016D01* X397110D01* Y418570D01* X393878D01* Y419819D01* X388532D01* Y416445D01* X387656Y415570D01* X384793D01* X384426Y415937D01* X384487Y416244D01* X384316Y417102D01* X383830Y417830D01* X383403Y418116D01* X383233Y418761D01* X383316Y418886D01* X383487Y419744D01* X383316Y420603D01* X382830Y421330D01* X382102Y421816D01* X381956Y421846D01* X381764Y422308D01* X381816Y422386D01* X381987Y423244D01* X381816Y424102D01* X381330Y424830D01* X380603Y425316D01* X379744Y425487D01* X378886Y425316D01* X378158Y424830D01* X377672Y424102D01* X377501Y423244D01* X377562Y422937D01* X372663Y418037D01* X372375Y417607D01* X372274Y417100D01* Y414044D01* Y409330D01* X372176Y409209D01* X371811Y409098D01* X371621Y409225D01* X371114Y409326D01* X370473D01* X370237Y409766D01* X370316Y409886D01* X370388Y410244D01* X369744D01* Y409326D01* X369374D01* X368867Y409225D01* X368437Y408937D01* X367207Y407707D01* X366919Y407277D01* X366819Y406770D01* Y405030D01* X366919Y404523D01* X367207Y404093D01* X369475Y401825D01* Y399060D01* X369214Y398886D01* X368728Y398158D01* X368557Y397300D01* X368728Y396442D01* X369214Y395714D01* X369744Y395360D01* X369942Y395228D01* X370800Y395057D01* X370929Y394952D01* X370941Y390222D01* X370479Y390031D01* X369282Y391227D01* X368735Y391774D01* X368305Y392062D01* X367798Y392162D01* X360867D01* X360360Y392062D01* X359930Y391774D01* X355500Y387344D01* X352225Y384070D01* X340847D01* X340673Y384330D01* X339945Y384816D01* X339087Y384987D01* X338228Y384816D01* X337501Y384330D01* X337014Y383602D01* X336843Y382744D01* X337014Y381886D01* X337501Y381158D01* X337761Y380984D01* Y380016D01* X337110D01* Y374473D01* X337761D01* Y372113D01* X337862Y371606D01* X338149Y371176D01* X338963Y370363D01* X339393Y370075D01* X339900Y369974D01* X351340D01* X351514Y369714D01* X352242Y369228D01* X353100Y369057D01* X353958Y369228D01* X354686Y369714D01* X354906Y370043D01* X355403Y370092D01* X363088Y362407D01* X363519Y362120D01* X364026Y362019D01* X364761D01* X365078Y361632D01* X365001Y361244D01* X365172Y360386D01* X365658Y359658D01* X365958Y359457D01* Y350819D01* X364610D01* Y350819D01* X364326Y350585D01* X363987Y350653D01* X363128Y350482D01* X362401Y349995D01* X362116Y349570D01* X355731D01* X355223Y349469D01* X354793Y349181D01* X351374Y345762D01* X350912Y345953D01* Y346576D01* X350811Y347083D01* X350524Y347513D01* X345356Y352681D01* X344926Y352969D01* X344744Y353005D01* Y354744D01* X338744D01* Y354556D01* X338296Y354335D01* X338257Y354364D01* X337527Y354667D01* X337244Y354704D01* Y351744D01* X336244D01* Y354704D01* X335961Y354667D01* X335231Y354364D01* X334604Y353884D01* X334494Y353740D01* X333994D01* X333884Y353884D01* X333257Y354364D01* X332527Y354667D01* X332244Y354704D01* Y351744D01* X331244D01* Y354704D01* X330961Y354667D01* X330231Y354364D01* X329604Y353884D01* X329494Y353740D01* X328994D01* X328884Y353884D01* X328257Y354364D01* X327527Y354667D01* X326744Y354770D01* X325961Y354667D01* X325231Y354364D01* X324604Y353884D01* X324494Y353740D01* X323994D01* X323884Y353884D01* X323257Y354364D01* X322527Y354667D01* X321744Y354770D01* X320961Y354667D01* X320598Y354517D01* X320315Y354941D01* X331181Y365807D01* X331469Y366237D01* X331570Y366744D01* Y385984D01* X331830Y386158D01* X332316Y386886D01* X332487Y387744D01* X332316Y388602D01* X331830Y389330D01* X331102Y389816D01* X330244Y389987D01* X329386Y389816D01* X328658Y389330D01* X328172Y388602D01* X328001Y387744D01* X328172Y386886D01* X328658Y386158D01* X328919Y385984D01* Y367293D01* X327426Y365801D01* X326926Y366008D01* Y366492D01* X326828Y367241D01* X326538Y367939D01* X326078Y368539D01* X325479Y368999D01* X324781Y369288D01* X324531Y369321D01* Y365901D01* X324031D01* Y365401D01* X321136D01* Y365311D01* X321235Y364562D01* X321524Y363863D01* X321984Y363264D01* X322584Y362804D01* X323282Y362515D01* X323415Y362497D01* X323595Y361969D01* X317463Y355837D01* X317175Y355407D01* X317074Y354900D01* Y350088D01* X317175Y349581D01* X317463Y349151D01* X318899Y347715D01* X318821Y347527D01* X318718Y346744D01* X318821Y345961D01* X319124Y345231D01* X319604Y344604D01* X320231Y344124D01* X320961Y343821D01* X321744Y343718D01* X322527Y343821D01* X323257Y344124D01* X323884Y344604D01* X323994Y344748D01* X324494D01* X324604Y344604D01* X325231Y344124D01* X325961Y343821D01* X326744Y343718D01* X327527Y343821D01* X328257Y344124D01* X328884Y344604D01* X328994Y344748D01* X329494D01* X329604Y344604D01* X330231Y344124D01* X330418Y344046D01* Y343244D01* X330519Y342737D01* X330807Y342307D01* X339151Y333963D01* X359807Y313307D01* X360237Y313019D01* X360744Y312919D01* X436984D01* X437158Y312658D01* X437886Y312172D01* X438744Y312001D01* X439603Y312172D01* X440330Y312658D01* X440816Y313386D01* X440987Y314244D01* X440816Y315103D01* X440330Y315830D01* X439603Y316316D01* X438744Y316487D01* X437886Y316316D01* X437158Y315830D01* X436984Y315570D01* X361293D01* X357250Y319613D01* X357441Y320075D01* X372939D01* X373113Y319814D01* X373841Y319328D01* X374700Y319157D01* X375558Y319328D01* X376286Y319814D01* X376505Y320143D01* X377003Y320192D01* X379188Y318007D01* X379618Y317720D01* X380125Y317619D01* X418642D01* X419149Y317720D01* X419579Y318007D01* X424530Y322958D01* X435991Y334419D01* X436744D01* X437251Y334520D01* X437681Y334807D01* X438182Y335308D01* X438386Y335172D01* X439244Y335001D01* X440102Y335172D01* X440830Y335658D01* X441316Y336386D01* X441487Y337244D01* X441316Y338103D01* X440830Y338830D01* X440102Y339316D01* X439244Y339487D01* X438386Y339316D01* X437658Y338830D01* X437172Y338103D01* X437158Y338032D01* X436195Y337070D01* X435442D01* X434935Y336969D01* X434505Y336681D01* X422656Y324832D01* X418093Y320270D01* X398267D01* X398076Y320731D01* X400121Y322777D01* X400408Y323207D01* X400509Y323714D01* Y325195D01* X407355Y332041D01* X407643Y332471D01* X407744Y332979D01* Y337671D01* X408244Y337987D01* X408900Y337857D01* X409758Y338028D01* X410486Y338514D01* X410972Y339242D01* X411143Y340100D01* X410972Y340958D01* X410964Y340971D01* X411264Y341421D01* X411500Y341374D01* X430440D01* X430614Y341114D01* X431342Y340628D01* X432200Y340457D01* X433058Y340628D01* X433786Y341114D01* X434272Y341842D01* X434443Y342700D01* X434272Y343558D01* X433786Y344286D01* X433058Y344772D01* X432200Y344943D01* X431342Y344772D01* X430614Y344286D01* X430440Y344025D01* X415084D01* X414729Y344526D01* X414843Y345100D01* X414672Y345958D01* X414186Y346686D01* X413926Y346860D01* Y364847D01* X414387Y365038D01* X417317Y362109D01* X417747Y361821D01* X418254Y361720D01* X418254Y361720D01* X424446D01* X424953Y361821D01* X425383Y362109D01* X427885Y364610D01* X430675D01* Y357878D01* X426972D01* Y355385D01* X426472Y355029D01* X425900Y355143D01* X425042Y354972D01* X424314Y354486D01* X423828Y353758D01* X423657Y352900D01* X423828Y352042D01* X424314Y351314D01* X425042Y350828D01* X425900Y350657D01* X426472Y350771D01* X426972Y350415D01* Y347610D01* X432516D01* Y352425D01* X432516Y352563D01* X432516D01* Y352925D01* X432516D01* Y354183D01* X432937Y354464D01* X433225Y354894D01* X433325Y355402D01* Y368338D01* X433825Y368606D01* X434242Y368328D01* X435100Y368157D01* X435472Y368231D01* X435972Y367821D01* Y367610D01* X441310D01* X441671Y367193D01* X441663Y367137D01* X438307Y363781D01* X438019Y363351D01* X437919Y362844D01* Y360378D01* X436472D01* Y355563D01* X436472Y355425D01* Y355063D01* X436472Y354925D01* Y350110D01* X442016D01* Y351261D01* X442300D01* X442807Y351362D01* X443237Y351649D01* X447637Y356049D01* X447925Y356479D01* X448026Y356987D01* Y360040D01* X448286Y360214D01* X448772Y360942D01* X448943Y361800D01* X448772Y362658D01* X448286Y363386D01* X447558Y363872D01* X446700Y364043D01* X445842Y363872D01* X445114Y363386D01* X444628Y362658D01* X444457Y361800D01* X444628Y360942D01* X445114Y360214D01* X445374Y360040D01* Y357536D01* X442478Y354639D01* X442016Y354830D01* X442016Y355063D01* Y355425D01* X442016Y355563D01* Y360378D01* X440569D01* Y362295D01* X443149Y364875D01* X460133D01* X460218Y364622D01* X460264Y364374D01* X459569Y363469D01* X459116Y362375D01* X458961Y361200D01* X459116Y360025D01* X459569Y358931D01* X460291Y357991D01* X461231Y357269D01* X462325Y356816D01* X463500Y356661D01* X464675Y356816D01* X465769Y357269D01* X466709Y357991D01* X467431Y358931D01* X467884Y360025D01* X468039Y361200D01* X467884Y362375D01* X467431Y363469D01* X466709Y364409D01* X466671Y364439D01* X466796Y364973D01* X466807Y364975D01* X467237Y365263D01* X468825Y366850D01* X469325Y366643D01* Y314888D01* X460466Y306029D01* X331936D01* X331887Y306529D01* X332073Y306566D01* X332603Y306672D01* X333330Y307158D01* X333816Y307886D01* X333888Y308244D01* X329601D01* X329672Y307886D01* X330158Y307158D01* X330886Y306672D01* X331415Y306566D01* X331601Y306529D01* X331552Y306029D01* X315334D01* X307029Y314334D01* Y387344D01* Y402127D01* X307529Y402160D01* X307536Y402110D01* X307544Y402045D01* X307660Y401169D01* X308113Y400075D01* X308835Y399135D01* X309775Y398413D01* X310869Y397960D01* X312044Y397805D01* X313219Y397960D01* X314313Y398413D01* X315253Y399135D01* X315975Y400075D01* X316428Y401169D01* X316583Y402344D01* X316428Y403519D01* X315975Y404613D01* X315253Y405553D01* X314313Y406275D01* X313219Y406728D01* X312044Y406883D01* X310869Y406728D01* X309775Y406275D01* X308835Y405553D01* X308113Y404613D01* X307660Y403519D01* X307544Y402643D01* X307529Y402528D01* X307029Y402561D01* D01* Y412127D01* X307529Y412160D01* X307660Y411169D01* X308113Y410075D01* X308835Y409135D01* X309775Y408413D01* X310869Y407960D01* X312044Y407805D01* X313219Y407960D01* X314313Y408413D01* X315253Y409135D01* X315975Y410075D01* X316428Y411169D01* X316583Y412344D01* X316428Y413519D01* X315975Y414613D01* X315253Y415553D01* X314970Y415771D01* X315131Y416244D01* X343009D01* Y415722D01* X342747Y415088D01* X342610Y414044D01* X342747Y413000D01* X343150Y412027D01* X343791Y411191D01* X344627Y410550D01* X345600Y410147D01* X346644Y410009D01* X352444D01* X353488Y410147D01* X354461Y410550D01* X355297Y411191D01* X355938Y412027D01* X356069Y412344D01* X356082Y412375D01* X356336Y412988D01* X356341Y413000D01* X356479Y414044D01* X356341Y415088D01* X355938Y416061D01* X355297Y416897D01* X354461Y417538D01* X353488Y417941D01* X352444Y418079D01* X351079D01* Y444944D01* Y448444D01* X350941Y449488D01* X350538Y450461D01* X349897Y451297D01* X349061Y451938D01* X348088Y452341D01* X347044Y452479D01* X346000Y452341D01* X345027Y451938D01* X344191Y451297D01* X343550Y450461D01* X343147Y449488D01* X343009Y448444D01* Y444944D01* Y418744D01* X315501D01* X315337Y419244D01* X315975Y420075D01* X316428Y421170D01* X316583Y422344D01* X316428Y423519D01* X315975Y424614D01* X315253Y425554D01* X314313Y426275D01* X313219Y426728D01* X312044Y426883D01* X310869Y426728D01* X309775Y426275D01* X308835Y425554D01* X308113Y424614D01* X307660Y423519D01* X307529Y422528D01* X307029Y422561D01* Y459566D01* X315788Y468325D01* X460112D01* X469325Y459112D01* D02* G37* G36* X289325D02* Y414044D01* Y375657D01* X288825Y375449D01* X287337Y376937D01* X286907Y377225D01* X286610Y377284D01* X286476Y377812D01* X286709Y377991D01* X287431Y378931D01* X287884Y380025D01* X288039Y381200D01* X287884Y382375D01* X287431Y383469D01* X286709Y384409D01* X285769Y385131D01* X284675Y385584D01* X283500Y385739D01* X282325Y385584D01* X281231Y385131D01* X280291Y384409D01* X279569Y383469D01* X279116Y382375D01* X278961Y381200D01* X279116Y380025D01* X279569Y378931D01* X280291Y377991D01* X280540Y377799D01* X280380Y377326D01* X279300D01* X278793Y377225D01* X278363Y376937D01* X278153Y376727D01* X261516D01* Y377878D01* X260069D01* Y378551D01* X262437Y380919D01* X262725Y381349D01* X262825Y381856D01* Y390602D01* X262725Y391109D01* X262437Y391539D01* X261637Y392339D01* X261516Y392420D01* Y393878D01* X260069D01* Y395851D01* X263437Y399219D01* X263725Y399649D01* X263825Y400156D01* Y414044D01* Y419397D01* X263725Y419904D01* X263437Y420334D01* X262624Y421148D01* X261026Y422746D01* Y426532D01* X264819D01* Y427879D01* X271800D01* X272307Y427980D01* X272737Y428268D01* X274344Y429875D01* X279178D01* X279569Y428931D01* X280291Y427991D01* X281231Y427269D01* X282325Y426816D01* X283500Y426661D01* X284675Y426816D01* X285769Y427269D01* X286709Y427991D01* X287431Y428931D01* X287884Y430025D01* X288039Y431200D01* X287884Y432375D01* X287431Y433469D01* X286709Y434409D01* X285769Y435131D01* X284675Y435584D01* X283500Y435739D01* X282325Y435584D01* X281231Y435131D01* X280291Y434409D01* X279569Y433469D01* X279178Y432525D01* X273795D01* X273288Y432425D01* X272858Y432137D01* X271251Y430530D01* X264819D01* Y431878D01* X259669D01* Y430524D01* X259193Y430429D01* X258763Y430142D01* X258475Y429712D01* X258375Y429205D01* Y424353D01* X258094Y424237D01* X257874Y424194D01* X257463Y424469D01* X256956Y424570D01* X227378D01* Y426016D01* X225533D01* X225266Y426516D01* X225335Y426618D01* X227232D01* X227740Y426719D01* X228169Y427007D01* X228581Y427419D01* X231244D01* X231751Y427520D01* X232181Y427807D01* X233125Y428751D01* X234069Y428360D01* X235244Y428205D01* X236419Y428360D01* X237513Y428813D01* X238453Y429535D01* X239175Y430475D01* X239628Y431569D01* X239783Y432744D01* X239628Y433919D01* X239175Y435013D01* X238453Y435953D01* X237513Y436675D01* X236419Y437128D01* X235244Y437283D01* X234069Y437128D01* X232975Y436675D01* X232035Y435953D01* X231313Y435013D01* X230860Y433919D01* X230705Y432744D01* X230860Y431569D01* X231251Y430625D01* X230695Y430070D01* X229423D01* X229214Y430570D01* X229628Y431569D01* X229783Y432744D01* X229628Y433919D01* X229175Y435013D01* X228453Y435953D01* X227513Y436675D01* X226419Y437128D01* X225244Y437283D01* X224069Y437128D01* X222975Y436675D01* X222035Y435953D01* X221313Y435013D01* X220860Y433919D01* X220705Y432744D01* X220860Y431569D01* X221313Y430475D01* X222035Y429535D01* X222837Y428919D01* X222964Y428338D01* X221026Y426400D01* X220769Y426016D01* X217110D01* Y425243D01* X216610Y424977D01* X216103Y425316D01* X215244Y425487D01* X214386Y425316D01* X214319Y425272D01* X213878Y425508D01* Y425819D01* X208532D01* Y420669D01* X213878D01* Y420981D01* X214319Y421216D01* X214386Y421172D01* X215244Y421001D01* X216103Y421172D01* X216610Y421511D01* X217110Y421246D01* Y420472D01* X217110D01* Y420016D01* X217110D01* Y418570D01* X213878D01* Y419819D01* X208532D01* Y416445D01* X207656Y415570D01* X204793D01* X204426Y415937D01* X204487Y416244D01* X204316Y417102D01* X203830Y417830D01* X203403Y418116D01* X203233Y418761D01* X203316Y418886D01* X203487Y419744D01* X203316Y420603D01* X202830Y421330D01* X202102Y421816D01* X201956Y421846D01* X201764Y422308D01* X201816Y422386D01* X201987Y423244D01* X201816Y424102D01* X201330Y424830D01* X200603Y425316D01* X199744Y425487D01* X198886Y425316D01* X198158Y424830D01* X197672Y424102D01* X197501Y423244D01* X197562Y422937D01* X192663Y418037D01* X192375Y417607D01* X192274Y417100D01* Y414044D01* Y409330D01* X192175Y409209D01* X191811Y409098D01* X191621Y409225D01* X191114Y409326D01* X190472D01* X190237Y409766D01* X190316Y409886D01* X190388Y410244D01* X189744D01* Y409326D01* X189374D01* X188867Y409225D01* X188437Y408937D01* X187207Y407707D01* X186919Y407277D01* X186819Y406770D01* Y405030D01* X186919Y404523D01* X187207Y404093D01* X189474Y401825D01* Y399060D01* X189214Y398886D01* X188728Y398158D01* X188557Y397300D01* X188728Y396442D01* X189214Y395714D01* X189744Y395360D01* X189942Y395228D01* X190800Y395057D01* X190929Y394952D01* X190941Y390222D01* X190479Y390031D01* X189282Y391227D01* D01* X188735Y391774D01* X188305Y392062D01* X187798Y392162D01* X180867D01* X180360Y392062D01* X179930Y391774D01* X175500Y387344D01* X172225Y384070D01* X160847D01* X160673Y384330D01* X159945Y384816D01* X159087Y384987D01* X158228Y384816D01* X157501Y384330D01* X157014Y383602D01* X156843Y382744D01* X157014Y381886D01* X157501Y381158D01* X157761Y380984D01* Y380016D01* X157110D01* Y374473D01* X157761D01* Y372113D01* X157862Y371606D01* X158149Y371176D01* X158963Y370363D01* X159393Y370075D01* X159900Y369974D01* X171340D01* X171514Y369714D01* X172242Y369228D01* X173100Y369057D01* X173958Y369228D01* X174686Y369714D01* X174906Y370043D01* X175403Y370092D01* X183089Y362407D01* X183519Y362120D01* X184026Y362019D01* X184761D01* X185078Y361632D01* X185001Y361244D01* X185172Y360386D01* X185658Y359658D01* X185958Y359457D01* Y350819D01* X184610D01* Y350819D01* X184326Y350585D01* X183987Y350653D01* X183128Y350482D01* X182401Y349995D01* X182116Y349570D01* X175731D01* X175223Y349469D01* X174793Y349181D01* X171374Y345762D01* X170912Y345953D01* Y346576D01* X170811Y347083D01* X170524Y347513D01* X165356Y352681D01* X164926Y352969D01* X164744Y353005D01* Y354744D01* X158744D01* Y354556D01* X158296Y354335D01* X158257Y354364D01* X157527Y354667D01* X157244Y354704D01* Y351744D01* X156244D01* Y354704D01* X155961Y354667D01* X155231Y354364D01* X154604Y353884D01* X154494Y353740D01* X153994D01* X153884Y353884D01* X153257Y354364D01* X152527Y354667D01* X152244Y354704D01* Y351744D01* X151244D01* Y354704D01* X150961Y354667D01* X150231Y354364D01* X149604Y353884D01* X149494Y353740D01* X148994D01* X148884Y353884D01* X148257Y354364D01* X147527Y354667D01* X146744Y354770D01* X145961Y354667D01* X145231Y354364D01* X144604Y353884D01* X144494Y353740D01* X143994D01* X143884Y353884D01* X143257Y354364D01* X142527Y354667D01* X141744Y354770D01* X140961Y354667D01* X140598Y354517D01* X140315Y354941D01* X151181Y365807D01* X151469Y366237D01* X151569Y366744D01* Y385984D01* X151830Y386158D01* X152316Y386886D01* X152487Y387744D01* X152316Y388602D01* X151830Y389330D01* X151102Y389816D01* X150244Y389987D01* X149386Y389816D01* X148658Y389330D01* X148172Y388602D01* X148001Y387744D01* X148172Y386886D01* X148658Y386158D01* X148918Y385984D01* Y367293D01* X147426Y365801D01* X146926Y366008D01* Y366492D01* X146828Y367241D01* X146538Y367939D01* X146078Y368539D01* X145479Y368999D01* X144781Y369288D01* X144531Y369321D01* Y365901D01* X144031D01* Y365401D01* X141137D01* Y365311D01* X141235Y364562D01* X141524Y363863D01* X141984Y363264D01* X142584Y362804D01* X143282Y362515D01* X143415Y362497D01* X143595Y361969D01* X137463Y355837D01* X137175Y355407D01* X137074Y354900D01* Y350088D01* X137175Y349581D01* X137463Y349151D01* X138899Y347715D01* X138821Y347527D01* X138718Y346744D01* X138821Y345961D01* X139123Y345231D01* X139604Y344604D01* X140231Y344124D01* X140961Y343821D01* X141744Y343718D01* X142527Y343821D01* X143257Y344124D01* X143884Y344604D01* X143994Y344748D01* X144494D01* X144604Y344604D01* X145231Y344124D01* X145961Y343821D01* X146744Y343718D01* X147527Y343821D01* X148257Y344124D01* X148884Y344604D01* X148994Y344748D01* X149494D01* X149604Y344604D01* X150231Y344124D01* X150418Y344046D01* Y343244D01* X150519Y342737D01* X150807Y342307D01* X159151Y333963D01* X179807Y313307D01* X180237Y313019D01* X180744Y312919D01* X256984D01* X257158Y312658D01* X257886Y312172D01* X258744Y312001D01* X259602Y312172D01* X260330Y312658D01* X260816Y313386D01* X260987Y314244D01* X260816Y315103D01* X260330Y315830D01* X259602Y316316D01* X258744Y316487D01* X257886Y316316D01* X257158Y315830D01* X256984Y315570D01* X181293D01* X177250Y319613D01* X177441Y320075D01* X192939D01* X193114Y319814D01* X193841Y319328D01* X194700Y319157D01* X195558Y319328D01* X196286Y319814D01* X196505Y320143D01* X197003Y320192D01* X199188Y318007D01* X199618Y317720D01* X200125Y317619D01* X238642D01* X239149Y317720D01* X239579Y318007D01* X244530Y322958D01* X255991Y334419D01* X256744D01* X257251Y334520D01* X257681Y334807D01* X258182Y335308D01* X258386Y335172D01* X259244Y335001D01* X260103Y335172D01* X260830Y335658D01* X261316Y336386D01* X261487Y337244D01* X261316Y338103D01* X260830Y338830D01* X260103Y339316D01* X259244Y339487D01* X258386Y339316D01* X257658Y338830D01* X257172Y338103D01* X257158Y338032D01* X256195Y337070D01* X255442D01* X254935Y336969D01* X254505Y336681D01* X242655Y324832D01* X238093Y320270D01* X218267D01* X218076Y320731D01* X220121Y322777D01* X220408Y323207D01* X220509Y323714D01* Y325195D01* X227356Y332041D01* X227643Y332471D01* X227744Y332979D01* Y337671D01* X228244Y337987D01* X228900Y337857D01* X229758Y338028D01* X230486Y338514D01* X230972Y339242D01* X231143Y340100D01* X230972Y340958D01* X230964Y340971D01* X231264Y341421D01* X231500Y341374D01* X250440D01* X250614Y341114D01* X251342Y340628D01* X252200Y340457D01* X253058Y340628D01* X253786Y341114D01* X254272Y341842D01* X254443Y342700D01* X254272Y343558D01* X253786Y344286D01* X253058Y344772D01* X252200Y344943D01* X251342Y344772D01* X250614Y344286D01* X250440Y344025D01* X235084D01* X234729Y344526D01* X234843Y345100D01* X234672Y345958D01* X234186Y346686D01* X233926Y346860D01* Y364847D01* X234387Y365038D01* X237317Y362109D01* X237747Y361821D01* X238254Y361720D01* X238254Y361720D01* X244446D01* X244953Y361821D01* X245383Y362109D01* X247885Y364610D01* X250675D01* Y357878D01* X246972D01* Y355385D01* X246472Y355029D01* X245900Y355143D01* X245042Y354972D01* X244314Y354486D01* X243828Y353758D01* X243657Y352900D01* X243828Y352042D01* X244314Y351314D01* X245042Y350828D01* X245900Y350657D01* X246472Y350771D01* X246972Y350415D01* Y347610D01* X252516D01* Y352425D01* X252516Y352563D01* X252516D01* Y352925D01* X252516D01* Y354183D01* X252937Y354464D01* X253225Y354894D01* X253326Y355402D01* Y368338D01* X253825Y368606D01* X254242Y368328D01* X255100Y368157D01* X255472Y368231D01* X255972Y367821D01* Y367610D01* X261310D01* X261671Y367193D01* X261663Y367137D01* X258307Y363781D01* X258019Y363351D01* X257919Y362844D01* Y360378D01* X256472D01* Y355563D01* X256472Y355425D01* Y355063D01* X256472Y354925D01* Y350110D01* X262016D01* Y351261D01* X262300D01* X262807Y351362D01* X263237Y351649D01* X267637Y356049D01* X267925Y356479D01* X268025Y356987D01* Y360040D01* X268286Y360214D01* X268772Y360942D01* X268943Y361800D01* X268772Y362658D01* X268286Y363386D01* X267558Y363872D01* X266700Y364043D01* X265842Y363872D01* X265114Y363386D01* X264628Y362658D01* X264457Y361800D01* X264628Y360942D01* X265114Y360214D01* X265374Y360040D01* Y357536D01* X262478Y354639D01* X262016Y354830D01* X262016Y355063D01* Y355425D01* X262016Y355563D01* Y360378D01* X260570D01* Y362295D01* X263149Y364875D01* X280133D01* X280219Y364622D01* X280264Y364374D01* X279569Y363469D01* X279116Y362375D01* X278961Y361200D01* X279116Y360025D01* X279569Y358931D01* X280291Y357991D01* X281231Y357269D01* X282325Y356816D01* X283500Y356661D01* X284675Y356816D01* X285769Y357269D01* X286709Y357991D01* X287431Y358931D01* X287884Y360025D01* X288039Y361200D01* X287884Y362375D01* X287431Y363469D01* X286709Y364409D01* X286671Y364439D01* X286796Y364973D01* X286807Y364975D01* X287237Y365263D01* X288825Y366850D01* X289325Y366643D01* Y314888D01* X280467Y306029D01* X151936D01* X151887Y306529D01* X152073Y306566D01* X152603Y306672D01* X153330Y307158D01* X153816Y307886D01* X153888Y308244D01* X149601D01* X149672Y307886D01* X150158Y307158D01* X150886Y306672D01* X151415Y306566D01* X151601Y306529D01* X151552Y306029D01* X135334D01* X127029Y314334D01* Y387344D01* Y402127D01* X127529Y402160D01* D01* X127536Y402110D01* X127544Y402045D01* X127660Y401169D01* X128113Y400075D01* X128835Y399135D01* X129775Y398413D01* X130869Y397960D01* X132044Y397805D01* X133219Y397960D01* X134313Y398413D01* X135253Y399135D01* X135975Y400075D01* X136428Y401169D01* X136583Y402344D01* X136428Y403519D01* X135975Y404613D01* X135253Y405553D01* X134313Y406275D01* X133219Y406728D01* X132044Y406883D01* X130869Y406728D01* X129775Y406275D01* X128835Y405553D01* X128113Y404613D01* X127660Y403519D01* X127544Y402643D01* X127529Y402528D01* X127029Y402561D01* D01* Y412127D01* X127529Y412160D01* X127660Y411169D01* X128113Y410075D01* X128835Y409135D01* X129775Y408413D01* X130869Y407960D01* X132044Y407805D01* X133219Y407960D01* X134313Y408413D01* X135253Y409135D01* X135975Y410075D01* X136428Y411169D01* X136583Y412344D01* X136428Y413519D01* X135975Y414613D01* X135253Y415553D01* X134970Y415771D01* X135131Y416244D01* X163010D01* Y415722D01* X162747Y415088D01* X162610Y414044D01* X162747Y413000D01* X163150Y412027D01* X163791Y411191D01* X164627Y410550D01* X165600Y410147D01* X166644Y410009D01* X172444D01* X173488Y410147D01* X174461Y410550D01* X175297Y411191D01* X175938Y412027D01* X176069Y412344D01* D01* X176082Y412375D01* X176336Y412988D01* X176341Y413000D01* X176479Y414044D01* X176341Y415088D01* X175938Y416061D01* X175297Y416897D01* X174461Y417538D01* X173488Y417941D01* X172444Y418079D01* X171079D01* Y444944D01* Y448444D01* X170941Y449488D01* X170538Y450461D01* X169897Y451297D01* X169061Y451938D01* X168088Y452341D01* X167044Y452479D01* X166000Y452341D01* X165027Y451938D01* X164191Y451297D01* X163550Y450461D01* X163147Y449488D01* X163010Y448444D01* Y444944D01* Y418744D01* X135501D01* X135337Y419244D01* X135975Y420075D01* X136428Y421170D01* X136583Y422344D01* X136428Y423519D01* X135975Y424614D01* X135253Y425554D01* X134313Y426275D01* X133219Y426728D01* X132044Y426883D01* X130869Y426728D01* X129775Y426275D01* X128835Y425554D01* X128113Y424614D01* X127660Y423519D01* X127529Y422528D01* X127029Y422561D01* Y459566D01* X135788Y468325D01* X280112D01* X289325Y459112D01* D02* G37* G36* X439974Y418351D02* Y414378D01* X436319D01* Y414878D01* X431169D01* Y413280D01* X430963Y413142D01* X429707Y411887D01* X429400Y411948D01* X428542Y411777D01* X427814Y411291D01* X427319Y411450D01* Y412378D01* X425244D01* Y409705D01* X424744D01* Y409205D01* X422169D01* Y406958D01* X421755Y406681D01* X421319Y406862D01* Y409705D01* X416169D01* Y406989D01* X416089Y406914D01* X415527Y406870D01* X414799Y407356D01* X413941Y407526D01* X413082Y407356D01* X412355Y406870D01* X412181Y406609D01* X411200D01* X410693Y406508D01* X410263Y406221D01* X407563Y403521D01* X407275Y403091D01* X407174Y402583D01* Y373812D01* X406744Y373459D01* Y371244D01* X405744D01* Y373388D01* X405386Y373316D01* X404658Y372830D01* X404426Y372483D01* X403929Y372434D01* X403400Y372963D01* Y404711D01* X403900Y405100D01* Y406744D01* X402009D01* X401891Y406600D01* X395878D01* Y406744D01* X393205D01* Y407744D01* X395878D01* Y408819D01* X398705D01* X399212Y408919D01* X399642Y409207D01* X402854Y412419D01* X410744D01* X411251Y412520D01* X411681Y412807D01* X413181Y414307D01* X413469Y414737D01* X413570Y415244D01* Y416484D01* X413830Y416658D01* X414316Y417386D01* X414487Y418244D01* X414316Y419102D01* X414105Y419419D01* X414372Y419919D01* X419307D01* X421718Y417507D01* X421657Y417200D01* X421828Y416342D01* X422314Y415614D01* X423042Y415128D01* X423900Y414957D01* X424758Y415128D01* X425486Y415614D01* X425972Y416342D01* X426143Y417200D01* X425972Y418058D01* X425486Y418786D01* X424758Y419272D01* X423900Y419443D01* X423593Y419382D01* X421518Y421457D01* X421709Y421918D01* X436407D01* X439974Y418351D01* D02* G37* G36* X259975D02* Y414378D01* X256319D01* Y414878D01* X251169D01* Y413280D01* X250963Y413142D01* X249707Y411887D01* X249400Y411948D01* X248542Y411777D01* X247814Y411291D01* X247319Y411450D01* Y412378D01* X245244D01* Y409705D01* X244744D01* Y409205D01* X242169D01* Y406958D01* X241755Y406681D01* X241319Y406862D01* Y409705D01* X236169D01* Y406989D01* X236089Y406914D01* X235527Y406870D01* X234799Y407356D01* X233941Y407526D01* X233082Y407356D01* X232355Y406870D01* X232181Y406609D01* X231200D01* X230693Y406508D01* X230263Y406221D01* X227563Y403521D01* X227275Y403091D01* X227174Y402583D01* Y373812D01* X226744Y373459D01* Y371244D01* X225744D01* Y373388D01* X225386Y373316D01* X224658Y372830D01* X224426Y372483D01* X223928Y372434D01* X223400Y372963D01* Y404711D01* X223900Y405100D01* Y406744D01* X222009D01* X221891Y406600D01* X215878D01* Y406744D01* X213205D01* Y407744D01* X215878D01* Y408819D01* X218705D01* X219212Y408919D01* X219642Y409207D01* X222854Y412419D01* X230744D01* X231251Y412520D01* X231681Y412807D01* X233181Y414307D01* X233469Y414737D01* X233570Y415244D01* Y416484D01* X233830Y416658D01* X234316Y417386D01* X234487Y418244D01* X234316Y419102D01* X234105Y419419D01* X234372Y419919D01* X239307D01* X241718Y417507D01* X241657Y417200D01* X241828Y416342D01* X242314Y415614D01* X243042Y415128D01* X243900Y414957D01* X244758Y415128D01* X245486Y415614D01* X245972Y416342D01* X246143Y417200D01* X245972Y418058D01* X245486Y418786D01* X244758Y419272D01* X243900Y419443D01* X243593Y419382D01* X241518Y421457D01* X241709Y421918D01* X256407D01* X259975Y418351D01* D02* G37* G36* X428542Y407632D02* X429400Y407462D01* X430258Y407632D01* X430669Y407907D01* X430900Y407783D01* X433744D01* Y407283D01* X434244D01* Y404610D01* X436169D01* Y404110D01* X438244D01* Y406783D01* X439244D01* Y404110D01* X439974D01* Y403449D01* X435551Y399026D01* X421028D01* X420761Y399525D01* X420972Y399842D01* X421044Y400200D01* X416756D01* X416828Y399842D01* X417314Y399114D01* X418042Y398628D01* X418365Y398563D01* X418510Y398085D01* X412935Y392510D01* X412438Y392559D01* X412286Y392786D01* X411558Y393272D01* X410700Y393443D01* X410325Y393369D01* X409826Y393779D01* Y402034D01* X411716Y403925D01* X412223Y403895D01* X412355Y403697D01* X413082Y403211D01* X413941Y403040D01* X414799Y403211D01* X415527Y403697D01* X416089Y403653D01* X416169Y403578D01* Y402610D01* X416967D01* X417196Y402110D01* X416828Y401558D01* X416756Y401200D01* X421044D01* X420972Y401558D01* X420604Y402110D01* X420833Y402610D01* X421319D01* Y403048D01* X421706Y403336D01* X422169Y403150D01* Y402110D01* X427319D01* Y407960D01* X427814Y408118D01* X428542Y407632D01* D02* G37* G36* X248542D02* X249400Y407462D01* X250258Y407632D01* X250669Y407907D01* X250900Y407783D01* X253744D01* Y407283D01* X254244D01* Y404610D01* X256169D01* Y404110D01* X258244D01* Y406783D01* X259244D01* Y404110D01* X259975D01* Y403449D01* X255551Y399026D01* X241028D01* X240761Y399525D01* X240972Y399842D01* X241044Y400200D01* X236756D01* X236828Y399842D01* X237314Y399114D01* X238042Y398628D01* X238365Y398563D01* X238510Y398085D01* X232936Y392510D01* X232438Y392559D01* X232286Y392786D01* X231558Y393272D01* X230700Y393443D01* X230326Y393369D01* X229825Y393779D01* Y402034D01* X231716Y403925D01* X232223Y403895D01* X232355Y403697D01* X233082Y403211D01* X233941Y403040D01* X234799Y403211D01* X235527Y403697D01* X236089Y403653D01* X236169Y403578D01* Y402610D01* X236967D01* X237196Y402110D01* X236828Y401558D01* X236756Y401200D01* X241044D01* X240972Y401558D01* X240604Y402110D01* X240833Y402610D01* X241319D01* Y403048D01* X241706Y403336D01* X242169Y403150D01* Y402110D01* X247319D01* Y407960D01* X247814Y408118D01* X248542Y407632D01* D02* G37* G36* X359280Y378476D02* X359787Y378375D01* X360323D01* Y375551D01* X361110D01* Y370669D01* X368205D01* Y373244D01* X369205D01* Y370669D01* X370990D01* X370992Y369924D01* X370639Y369570D01* X369144D01* X368637Y369469D01* X368207Y369181D01* X367595Y368570D01* X365004D01* X364830Y368830D01* X364103Y369316D01* X363244Y369487D01* X362386Y369316D01* X361658Y368830D01* X361443Y368509D01* X360799Y368445D01* X355234Y374011D01* X355425Y374473D01* X357878D01* Y376744D01* X355401D01* Y377744D01* X357878D01* Y378164D01* X358378Y378574D01* X358744Y378501D01* X359129Y378577D01* X359280Y378476D01* D02* G37* G36* X179280D02* X179787Y378375D01* X180323D01* Y375551D01* X181110D01* Y370669D01* X188205D01* Y373244D01* X189205D01* Y370669D01* X190990D01* X190992Y369924D01* X190639Y369570D01* X189144D01* X188637Y369469D01* X188207Y369181D01* X187595Y368570D01* X185004D01* X184830Y368830D01* X184102Y369316D01* X183244Y369487D01* X182386Y369316D01* X181658Y368830D01* X181443Y368509D01* X180799Y368445D01* X175234Y374011D01* X175425Y374473D01* X177878D01* Y376744D01* X175401D01* Y377744D01* X177878D01* Y378164D01* X178378Y378574D01* X178744Y378501D01* X179129Y378577D01* X179280Y378476D01* D02* G37* G36* X390555Y366014D02* X390501Y365744D01* X390672Y364886D01* X390996Y364401D01* X386048Y359452D01* X385550Y359501D01* X385330Y359830D01* X384602Y360316D01* X384244Y360388D01* Y358244D01* X383744D01* Y357744D01* X381486D01* X381261Y357470D01* X375293D01* X370670Y362093D01* Y362114D01* X370569Y362621D01* X370549Y362651D01* X370602Y363172D01* X371330Y363658D01* X371504Y363919D01* X381695D01* X382307Y363307D01* X382737Y363019D01* X383244Y362919D01* X383751Y363019D01* X384181Y363307D01* X387275Y366400D01* X390237D01* X390555Y366014D01* D02* G37* G36* X210555D02* X210501Y365744D01* X210672Y364886D01* X210996Y364401D01* X206048Y359452D01* X205550Y359501D01* X205330Y359830D01* X204603Y360316D01* X204244Y360388D01* Y358244D01* X203744D01* Y357744D01* X201486D01* X201261Y357470D01* X195293D01* X190670Y362093D01* Y362114D01* X190569Y362621D01* X190549Y362651D01* X190603Y363172D01* X191330Y363658D01* X191504Y363919D01* X201695D01* X202307Y363307D01* X202737Y363019D01* X203244Y362919D01* X203751Y363019D01* X204181Y363307D01* X207275Y366400D01* X210237D01* X210555Y366014D01* D02* G37* G36* X395377Y364207D02* X395807Y363919D01* X396314Y363819D01* X400051D01* X400158Y363658D01* X400886Y363172D01* X401744Y363001D01* X402132Y363078D01* X402519Y362761D01* Y360727D01* X402132Y360410D01* X401744Y360487D01* X400886Y360316D01* X400158Y359830D01* X399984Y359570D01* X399244D01* X398737Y359469D01* X398307Y359181D01* X395267Y356142D01* X395052Y355819D01* X391783D01* Y353244D01* Y350669D01* X394879D01* Y344319D01* X388284D01* Y341744D01* X387284D01* Y344319D01* X385110D01* Y341819D01* X383705D01* Y339244D01* X382705D01* Y341819D01* X375610D01* Y340384D01* X375307Y340181D01* X373307Y338181D01* X373020Y337751D01* X372919Y337244D01* Y335789D01* X372600Y335343D01* X371742Y335172D01* X371014Y334686D01* X370784Y334342D01* X370486Y333986D01* X370143Y334215D01* X369758Y334472D01* X368900Y334643D01* X368764Y334616D01* X368378Y334933D01* Y335516D01* X364826D01* Y345669D01* X371705D01* Y348244D01* Y350819D01* X368609D01* Y359510D01* X368830Y359658D01* X369309Y359705D01* X373807Y355207D01* X374237Y354920D01* X374744Y354819D01* X384614D01* X385121Y354920D01* X385551Y355207D01* X393681Y363337D01* X393969Y363767D01* X394003Y363939D01* X394330Y364158D01* X394550Y364487D01* X395048Y364536D01* X395377Y364207D01* D02* G37* G36* X215377D02* X215807Y363919D01* X216314Y363819D01* X220051D01* X220158Y363658D01* X220886Y363172D01* X221744Y363001D01* X222132Y363078D01* X222519Y362761D01* Y360727D01* X222132Y360410D01* X221744Y360487D01* X220886Y360316D01* X220158Y359830D01* X219984Y359570D01* X219244D01* X218737Y359469D01* X218307Y359181D01* X215267Y356142D01* X215052Y355819D01* X211783D01* Y353244D01* Y350669D01* X214879D01* Y344319D01* X208284D01* Y341744D01* X207284D01* Y344319D01* X205110D01* Y341819D01* X203705D01* Y339244D01* X202705D01* Y341819D01* X195610D01* Y340384D01* X195307Y340181D01* X193307Y338181D01* X193019Y337751D01* X192919Y337244D01* Y335789D01* X192600Y335343D01* X191742Y335172D01* X191014Y334686D01* X190784Y334342D01* X190486Y333986D01* X190143Y334215D01* X189758Y334472D01* X188900Y334643D01* X188764Y334616D01* X188378Y334933D01* Y335516D01* X184826D01* Y345669D01* X191705D01* Y348244D01* Y350819D01* X188609D01* Y359510D01* X188830Y359658D01* X189309Y359705D01* X193807Y355207D01* X194237Y354920D01* X194744Y354819D01* X204614D01* X205121Y354920D01* X205551Y355207D01* X213681Y363337D01* X213969Y363767D01* X214003Y363939D01* X214330Y364158D01* X214550Y364487D01* X215048Y364536D01* X215377Y364207D01* D02* G37* G36* X469325Y279112D02* Y234044D01* Y195657D01* X468825Y195449D01* X467337Y196937D01* X466907Y197225D01* X466610Y197284D01* X466476Y197812D01* X466709Y197991D01* X467431Y198931D01* X467884Y200025D01* X468039Y201200D01* X467884Y202375D01* X467431Y203469D01* X466709Y204409D01* X465769Y205131D01* X464675Y205584D01* X463500Y205739D01* X462325Y205584D01* X461231Y205131D01* X460291Y204409D01* X459569Y203469D01* X459116Y202375D01* X458961Y201200D01* X459116Y200025D01* X459569Y198931D01* X460291Y197991D01* X460540Y197799D01* X460380Y197326D01* X459300D01* X458793Y197225D01* X458363Y196937D01* X458153Y196727D01* X441516D01* Y197878D01* X440069D01* Y198551D01* X442437Y200919D01* X442725Y201349D01* X442826Y201856D01* Y210602D01* X442725Y211109D01* X442437Y211539D01* X441637Y212339D01* X441516Y212420D01* Y213878D01* X440069D01* Y215851D01* X443437Y219219D01* X443725Y219649D01* X443825Y220156D01* Y234044D01* Y239397D01* X443725Y239904D01* X443437Y240335D01* X442624Y241148D01* X441025Y242746D01* Y246532D01* X444819D01* Y247879D01* X451800D01* X452307Y247980D01* X452737Y248268D01* X454344Y249874D01* X459178D01* X459569Y248931D01* X460291Y247991D01* X461231Y247269D01* X462325Y246816D01* X463500Y246661D01* X464675Y246816D01* X465769Y247269D01* X466709Y247991D01* X467431Y248931D01* X467884Y250025D01* X468039Y251200D01* X467884Y252375D01* X467431Y253469D01* X466709Y254409D01* X465769Y255131D01* X464675Y255584D01* X463500Y255739D01* X462325Y255584D01* X461231Y255131D01* X460291Y254409D01* X459569Y253469D01* X459178Y252525D01* X453795D01* X453288Y252425D01* X452858Y252137D01* X451251Y250530D01* X444819D01* Y251878D01* X439669D01* Y250524D01* X439193Y250429D01* X438763Y250142D01* X438475Y249712D01* X438375Y249205D01* Y244353D01* X438094Y244237D01* X437875Y244194D01* X437463Y244469D01* X436956Y244569D01* X407378D01* Y246016D01* X405533D01* X405266Y246516D01* X405335Y246619D01* X407232D01* X407739Y246719D01* X408170Y247007D01* X408581Y247419D01* X411244D01* X411751Y247519D01* X412181Y247807D01* X413125Y248751D01* X414069Y248360D01* X415244Y248205D01* X416419Y248360D01* X417513Y248813D01* X418453Y249535D01* X419175Y250475D01* X419628Y251569D01* X419783Y252744D01* X419628Y253919D01* X419175Y255013D01* X418453Y255953D01* X417513Y256675D01* X416419Y257128D01* X415244Y257283D01* X414069Y257128D01* X412975Y256675D01* X412035Y255953D01* X411313Y255013D01* X410860Y253919D01* X410705Y252744D01* X410860Y251569D01* X411251Y250625D01* X410695Y250070D01* X409423D01* X409214Y250570D01* X409628Y251569D01* X409783Y252744D01* X409628Y253919D01* X409175Y255013D01* X408453Y255953D01* X407513Y256675D01* X406419Y257128D01* X405244Y257283D01* X404069Y257128D01* X402975Y256675D01* X402035Y255953D01* X401313Y255013D01* X400860Y253919D01* X400705Y252744D01* X400860Y251569D01* X401313Y250475D01* X402035Y249535D01* X402837Y248919D01* X402963Y248338D01* X401026Y246400D01* X400769Y246016D01* X397110D01* Y245243D01* X396610Y244977D01* X396102Y245316D01* X395244Y245487D01* X394386Y245316D01* X394319Y245272D01* X393878Y245508D01* Y245819D01* X388532D01* Y240669D01* X393878D01* Y240981D01* X394319Y241216D01* X394386Y241172D01* X395244Y241001D01* X396102Y241172D01* X396610Y241511D01* X397110Y241246D01* Y240472D01* X397110D01* Y240016D01* X397110D01* Y238569D01* X393878D01* Y239819D01* X388532D01* Y236445D01* X387656Y235570D01* X384793D01* X384426Y235937D01* X384487Y236244D01* X384316Y237103D01* X383830Y237830D01* X383403Y238116D01* X383233Y238761D01* X383316Y238886D01* X383487Y239744D01* X383316Y240602D01* X382830Y241330D01* X382102Y241816D01* X381956Y241846D01* X381764Y242308D01* X381816Y242386D01* X381987Y243244D01* X381816Y244103D01* X381330Y244830D01* X380603Y245316D01* X379744Y245487D01* X378886Y245316D01* X378158Y244830D01* X377672Y244103D01* X377501Y243244D01* X377562Y242937D01* X372663Y238037D01* X372375Y237607D01* X372274Y237100D01* Y234044D01* Y229330D01* X372176Y229209D01* X371811Y229098D01* X371621Y229225D01* X371114Y229326D01* X370473D01* X370237Y229766D01* X370316Y229886D01* X370388Y230244D01* X369744D01* Y229326D01* X369374D01* X368867Y229225D01* X368437Y228937D01* X367207Y227707D01* X366919Y227277D01* X366819Y226770D01* Y225030D01* X366919Y224523D01* X367207Y224093D01* X369475Y221825D01* Y219060D01* X369214Y218886D01* X368728Y218158D01* X368557Y217300D01* X368728Y216442D01* X369214Y215714D01* X369744Y215360D01* X369942Y215228D01* X370800Y215057D01* X370929Y214952D01* X370941Y210222D01* X370479Y210031D01* X369282Y211227D01* X368735Y211774D01* X368305Y212062D01* X367798Y212162D01* X360867D01* X360360Y212062D01* X359930Y211774D01* X355500Y207344D01* X352225Y204070D01* X340847D01* X340673Y204330D01* X339945Y204816D01* X339087Y204987D01* X338228Y204816D01* X337501Y204330D01* X337014Y203603D01* X336843Y202744D01* X337014Y201886D01* X337501Y201158D01* X337761Y200984D01* Y200016D01* X337110D01* Y194473D01* X337761D01* Y192113D01* X337862Y191606D01* X338149Y191176D01* X338963Y190363D01* X339393Y190075D01* X339900Y189974D01* X351340D01* X351514Y189714D01* X352242Y189228D01* X353100Y189057D01* X353958Y189228D01* X354686Y189714D01* X354906Y190043D01* X355403Y190092D01* X363088Y182407D01* X363519Y182120D01* X364026Y182019D01* X364761D01* X365078Y181632D01* X365001Y181244D01* X365172Y180386D01* X365658Y179658D01* X365958Y179457D01* Y170819D01* X364610D01* Y170819D01* X364326Y170585D01* X363987Y170652D01* X363128Y170482D01* X362401Y169995D01* X362116Y169570D01* X355731D01* X355223Y169469D01* X354793Y169181D01* X351374Y165762D01* X350912Y165953D01* Y166576D01* X350811Y167083D01* X350524Y167513D01* X345356Y172681D01* X344926Y172969D01* X344744Y173005D01* Y174744D01* X338744D01* Y174556D01* X338296Y174335D01* X338257Y174364D01* X337527Y174667D01* X337244Y174704D01* Y171744D01* X336244D01* Y174704D01* X335961Y174667D01* X335231Y174364D01* X334604Y173884D01* X334494Y173740D01* X333994D01* X333884Y173884D01* X333257Y174364D01* X332527Y174667D01* X332244Y174704D01* Y171744D01* X331244D01* Y174704D01* X330961Y174667D01* X330231Y174364D01* X329604Y173884D01* X329494Y173740D01* X328994D01* X328884Y173884D01* X328257Y174364D01* X327527Y174667D01* X326744Y174770D01* X325961Y174667D01* X325231Y174364D01* X324604Y173884D01* X324494Y173740D01* X323994D01* X323884Y173884D01* X323257Y174364D01* X322527Y174667D01* X321744Y174770D01* X320961Y174667D01* X320598Y174517D01* X320315Y174941D01* X331181Y185807D01* X331469Y186237D01* X331570Y186744D01* Y205984D01* X331830Y206158D01* X332316Y206886D01* X332487Y207744D01* X332316Y208602D01* X331830Y209330D01* X331102Y209816D01* X330244Y209987D01* X329386Y209816D01* X328658Y209330D01* X328172Y208602D01* X328001Y207744D01* X328172Y206886D01* X328658Y206158D01* X328919Y205984D01* Y187293D01* X327426Y185801D01* X326926Y186008D01* Y186492D01* X326828Y187241D01* X326538Y187939D01* X326078Y188539D01* X325479Y188999D01* X324781Y189288D01* X324531Y189321D01* Y185901D01* X324031D01* Y185401D01* X321136D01* Y185311D01* X321235Y184562D01* X321524Y183863D01* X321984Y183264D01* X322584Y182804D01* X323282Y182515D01* X323415Y182497D01* X323595Y181969D01* X317463Y175837D01* X317175Y175407D01* X317074Y174900D01* Y170088D01* X317175Y169581D01* X317463Y169151D01* X318899Y167715D01* X318821Y167527D01* X318718Y166744D01* X318821Y165961D01* X319124Y165231D01* X319604Y164604D01* X320231Y164123D01* X320961Y163821D01* X321744Y163718D01* X322527Y163821D01* X323257Y164123D01* X323884Y164604D01* X323994Y164748D01* X324494D01* X324604Y164604D01* X325231Y164123D01* X325961Y163821D01* X326744Y163718D01* X327527Y163821D01* X328257Y164123D01* X328884Y164604D01* X328994Y164748D01* X329494D01* X329604Y164604D01* X330231Y164123D01* X330418Y164046D01* Y163244D01* X330519Y162737D01* X330807Y162307D01* X339151Y153963D01* X359807Y133307D01* X360237Y133019D01* X360744Y132919D01* X436984D01* X437158Y132658D01* X437886Y132172D01* X438744Y132001D01* X439603Y132172D01* X440330Y132658D01* X440816Y133386D01* X440987Y134244D01* X440816Y135102D01* X440330Y135830D01* X439603Y136316D01* X438744Y136487D01* X437886Y136316D01* X437158Y135830D01* X436984Y135570D01* X361293D01* X357250Y139613D01* X357441Y140075D01* X372939D01* X373113Y139814D01* X373841Y139328D01* X374700Y139157D01* X375558Y139328D01* X376286Y139814D01* X376505Y140143D01* X377003Y140192D01* X379188Y138007D01* X379618Y137720D01* X380125Y137619D01* X418642D01* X419149Y137720D01* X419579Y138007D01* X424530Y142958D01* X435991Y154419D01* X436744D01* X437251Y154519D01* X437681Y154807D01* X438182Y155308D01* X438386Y155172D01* X439244Y155001D01* X440102Y155172D01* X440830Y155658D01* X441316Y156386D01* X441487Y157244D01* X441316Y158103D01* X440830Y158830D01* X440102Y159316D01* X439244Y159487D01* X438386Y159316D01* X437658Y158830D01* X437172Y158103D01* X437158Y158032D01* X436195Y157070D01* X435442D01* X434935Y156969D01* X434505Y156681D01* X422656Y144832D01* X418093Y140270D01* X398267D01* X398076Y140732D01* X400121Y142777D01* X400408Y143207D01* X400509Y143714D01* Y145195D01* X407355Y152041D01* X407643Y152471D01* X407744Y152979D01* Y157671D01* X408244Y157987D01* X408900Y157857D01* X409758Y158028D01* X410486Y158514D01* X410972Y159242D01* X411143Y160100D01* X410972Y160958D01* X410964Y160971D01* X411264Y161421D01* X411500Y161374D01* X430440D01* X430614Y161114D01* X431342Y160628D01* X432200Y160457D01* X433058Y160628D01* X433786Y161114D01* X434272Y161842D01* X434443Y162700D01* X434272Y163558D01* X433786Y164286D01* X433058Y164772D01* X432200Y164943D01* X431342Y164772D01* X430614Y164286D01* X430440Y164025D01* X415084D01* X414729Y164525D01* X414843Y165100D01* X414672Y165958D01* X414186Y166686D01* X413926Y166860D01* Y184847D01* X414387Y185038D01* X417317Y182109D01* X417747Y181821D01* X418254Y181720D01* X418254Y181720D01* X424446D01* X424953Y181821D01* X425383Y182109D01* X427885Y184610D01* X430675D01* Y177878D01* X426972D01* Y175385D01* X426472Y175029D01* X425900Y175143D01* X425042Y174972D01* X424314Y174486D01* X423828Y173758D01* X423657Y172900D01* X423828Y172042D01* X424314Y171314D01* X425042Y170828D01* X425900Y170657D01* X426472Y170771D01* X426972Y170415D01* Y167610D01* X432516D01* Y172425D01* X432516Y172563D01* X432516D01* Y172925D01* X432516D01* Y174183D01* X432937Y174464D01* X433225Y174894D01* X433325Y175402D01* Y188338D01* X433825Y188606D01* X434242Y188328D01* X435100Y188157D01* X435472Y188231D01* X435972Y187821D01* Y187610D01* X441310D01* X441671Y187193D01* X441663Y187137D01* X438307Y183781D01* X438019Y183351D01* X437919Y182844D01* Y180378D01* X436472D01* Y175563D01* X436472Y175425D01* Y175063D01* X436472Y174925D01* Y170110D01* X442016D01* Y171261D01* X442300D01* X442807Y171362D01* X443237Y171649D01* X447637Y176049D01* X447925Y176479D01* X448026Y176987D01* Y180040D01* X448286Y180214D01* X448772Y180942D01* X448943Y181800D01* X448772Y182658D01* X448286Y183386D01* X447558Y183872D01* X446700Y184043D01* X445842Y183872D01* X445114Y183386D01* X444628Y182658D01* X444457Y181800D01* X444628Y180942D01* X445114Y180214D01* X445374Y180040D01* Y177536D01* X442478Y174639D01* X442016Y174830D01* X442016Y175063D01* Y175425D01* X442016Y175563D01* Y180378D01* X440569D01* Y182295D01* X443149Y184874D01* X460133D01* X460218Y184622D01* X460264Y184374D01* X459569Y183469D01* X459116Y182375D01* X458961Y181200D01* X459116Y180025D01* X459569Y178931D01* X460291Y177991D01* X461231Y177269D01* X462325Y176816D01* X463500Y176661D01* X464675Y176816D01* X465769Y177269D01* X466709Y177991D01* X467431Y178931D01* X467884Y180025D01* X468039Y181200D01* X467884Y182375D01* X467431Y183469D01* X466709Y184409D01* X466671Y184439D01* X466796Y184973D01* X466807Y184975D01* X467237Y185263D01* X468825Y186851D01* X469325Y186643D01* Y134888D01* X460466Y126029D01* X331936D01* X331887Y126529D01* X332073Y126566D01* X332603Y126672D01* X333330Y127158D01* X333816Y127886D01* X333888Y128244D01* X329601D01* X329672Y127886D01* X330158Y127158D01* X330886Y126672D01* X331415Y126566D01* X331601Y126529D01* X331552Y126029D01* X315334D01* X307029Y134334D01* Y207344D01* Y222127D01* X307529Y222160D01* X307536Y222110D01* X307544Y222045D01* X307660Y221169D01* X308113Y220075D01* X308835Y219135D01* X309775Y218413D01* X310869Y217960D01* X312044Y217805D01* X313219Y217960D01* X314313Y218413D01* X315253Y219135D01* X315975Y220075D01* X316428Y221169D01* X316583Y222344D01* X316428Y223519D01* X315975Y224613D01* X315253Y225553D01* X314313Y226275D01* X313219Y226728D01* X312044Y226883D01* X310869Y226728D01* X309775Y226275D01* X308835Y225553D01* X308113Y224613D01* X307660Y223519D01* X307544Y222643D01* X307529Y222528D01* X307029Y222561D01* D01* Y232127D01* X307529Y232160D01* X307660Y231169D01* X308113Y230075D01* X308835Y229135D01* X309775Y228413D01* X310869Y227960D01* X312044Y227805D01* X313219Y227960D01* X314313Y228413D01* X315253Y229135D01* X315975Y230075D01* X316428Y231169D01* X316583Y232344D01* X316428Y233519D01* X315975Y234613D01* X315253Y235553D01* X314970Y235771D01* X315131Y236244D01* X343009D01* Y235722D01* X342747Y235088D01* X342610Y234044D01* X342747Y233000D01* X343150Y232027D01* X343791Y231191D01* X344627Y230550D01* X345600Y230147D01* X346644Y230010D01* X352444D01* X353488Y230147D01* X354461Y230550D01* X355297Y231191D01* X355938Y232027D01* X356069Y232344D01* X356082Y232375D01* X356336Y232988D01* X356341Y233000D01* X356479Y234044D01* X356341Y235088D01* X355938Y236061D01* X355297Y236897D01* X354461Y237538D01* X353488Y237941D01* X352444Y238078D01* X351079D01* Y264944D01* Y268444D01* X350941Y269488D01* X350538Y270461D01* X349897Y271297D01* X349061Y271938D01* X348088Y272341D01* X347044Y272479D01* X346000Y272341D01* X345027Y271938D01* X344191Y271297D01* X343550Y270461D01* X343147Y269488D01* X343009Y268444D01* Y264944D01* Y238744D01* X315501D01* X315337Y239244D01* X315975Y240075D01* X316428Y241170D01* X316583Y242344D01* X316428Y243519D01* X315975Y244614D01* X315253Y245554D01* X314313Y246275D01* X313219Y246728D01* X312044Y246883D01* X310869Y246728D01* X309775Y246275D01* X308835Y245554D01* X308113Y244614D01* X307660Y243519D01* X307529Y242528D01* X307029Y242561D01* Y279567D01* X315788Y288325D01* X460112D01* X469325Y279112D01* D02* G37* G36* X289325D02* Y234044D01* Y195657D01* X288825Y195449D01* X287337Y196937D01* X286907Y197225D01* X286610Y197284D01* X286476Y197812D01* X286709Y197991D01* X287431Y198931D01* X287884Y200025D01* X288039Y201200D01* X287884Y202375D01* X287431Y203469D01* X286709Y204409D01* X285769Y205131D01* X284675Y205584D01* X283500Y205739D01* X282325Y205584D01* X281231Y205131D01* X280291Y204409D01* X279569Y203469D01* X279116Y202375D01* X278961Y201200D01* X279116Y200025D01* X279569Y198931D01* X280291Y197991D01* X280540Y197799D01* X280380Y197326D01* X279300D01* X278793Y197225D01* X278363Y196937D01* X278153Y196727D01* X261516D01* Y197878D01* X260069D01* Y198551D01* X262437Y200919D01* X262725Y201349D01* X262825Y201856D01* Y210602D01* X262725Y211109D01* X262437Y211539D01* X261637Y212339D01* X261516Y212420D01* Y213878D01* X260069D01* Y215851D01* X263437Y219219D01* X263725Y219649D01* X263825Y220156D01* Y234044D01* Y239397D01* X263725Y239904D01* X263437Y240335D01* X262624Y241148D01* X261026Y242746D01* Y246532D01* X264819D01* Y247879D01* X271800D01* X272307Y247980D01* X272737Y248268D01* X274344Y249874D01* X279178D01* X279569Y248931D01* X280291Y247991D01* X281231Y247269D01* X282325Y246816D01* X283500Y246661D01* X284675Y246816D01* X285769Y247269D01* X286709Y247991D01* X287431Y248931D01* X287884Y250025D01* X288039Y251200D01* X287884Y252375D01* X287431Y253469D01* X286709Y254409D01* X285769Y255131D01* X284675Y255584D01* X283500Y255739D01* X282325Y255584D01* X281231Y255131D01* X280291Y254409D01* X279569Y253469D01* X279178Y252525D01* X273795D01* X273288Y252425D01* X272858Y252137D01* X271251Y250530D01* X264819D01* Y251878D01* X259669D01* Y250524D01* X259193Y250429D01* X258763Y250142D01* X258475Y249712D01* X258375Y249205D01* Y244353D01* X258094Y244237D01* X257874Y244194D01* X257463Y244469D01* X256956Y244569D01* X227378D01* Y246016D01* X225533D01* X225266Y246516D01* X225335Y246619D01* X227232D01* X227740Y246719D01* X228169Y247007D01* X228581Y247419D01* X231244D01* X231751Y247519D01* X232181Y247807D01* X233125Y248751D01* X234069Y248360D01* X235244Y248205D01* X236419Y248360D01* X237513Y248813D01* X238453Y249535D01* X239175Y250475D01* X239628Y251569D01* X239783Y252744D01* X239628Y253919D01* X239175Y255013D01* X238453Y255953D01* X237513Y256675D01* X236419Y257128D01* X235244Y257283D01* X234069Y257128D01* X232975Y256675D01* X232035Y255953D01* X231313Y255013D01* X230860Y253919D01* X230705Y252744D01* X230860Y251569D01* X231251Y250625D01* X230695Y250070D01* X229423D01* X229214Y250570D01* X229628Y251569D01* X229783Y252744D01* X229628Y253919D01* X229175Y255013D01* X228453Y255953D01* X227513Y256675D01* X226419Y257128D01* X225244Y257283D01* X224069Y257128D01* X222975Y256675D01* X222035Y255953D01* X221313Y255013D01* X220860Y253919D01* X220705Y252744D01* X220860Y251569D01* X221313Y250475D01* X222035Y249535D01* X222837Y248919D01* X222964Y248338D01* X221026Y246400D01* X220769Y246016D01* X217110D01* Y245243D01* X216610Y244977D01* X216103Y245316D01* X215244Y245487D01* X214386Y245316D01* X214319Y245272D01* X213878Y245508D01* Y245819D01* X208532D01* Y240669D01* X213878D01* Y240981D01* X214319Y241216D01* X214386Y241172D01* X215244Y241001D01* X216103Y241172D01* X216610Y241511D01* X217110Y241246D01* Y240472D01* X217110D01* Y240016D01* X217110D01* Y238569D01* X213878D01* Y239819D01* X208532D01* Y236445D01* X207656Y235570D01* X204793D01* X204426Y235937D01* X204487Y236244D01* X204316Y237103D01* X203830Y237830D01* X203403Y238116D01* X203233Y238761D01* X203316Y238886D01* X203487Y239744D01* X203316Y240602D01* X202830Y241330D01* X202102Y241816D01* X201956Y241846D01* X201764Y242308D01* X201816Y242386D01* X201987Y243244D01* X201816Y244103D01* X201330Y244830D01* X200603Y245316D01* X199744Y245487D01* X198886Y245316D01* X198158Y244830D01* X197672Y244103D01* X197501Y243244D01* X197562Y242937D01* X192663Y238037D01* X192375Y237607D01* X192274Y237100D01* Y234044D01* Y229330D01* X192175Y229209D01* X191811Y229098D01* X191621Y229225D01* X191114Y229326D01* X190472D01* X190237Y229766D01* X190316Y229886D01* X190388Y230244D01* X189744D01* Y229326D01* X189374D01* X188867Y229225D01* X188437Y228937D01* X187207Y227707D01* X186919Y227277D01* X186819Y226770D01* Y225030D01* X186919Y224523D01* X187207Y224093D01* X189474Y221825D01* Y219060D01* X189214Y218886D01* X188728Y218158D01* X188557Y217300D01* X188728Y216442D01* X189214Y215714D01* X189744Y215360D01* X189942Y215228D01* X190800Y215057D01* X190929Y214952D01* X190941Y210222D01* X190479Y210031D01* X189282Y211227D01* D01* X188735Y211774D01* X188305Y212062D01* X187798Y212162D01* X180867D01* X180360Y212062D01* X179930Y211774D01* X175500Y207344D01* X172225Y204070D01* X160847D01* X160673Y204330D01* X159945Y204816D01* X159087Y204987D01* X158228Y204816D01* X157501Y204330D01* X157014Y203603D01* X156843Y202744D01* X157014Y201886D01* X157501Y201158D01* X157761Y200984D01* Y200016D01* X157110D01* Y194473D01* X157761D01* Y192113D01* X157862Y191606D01* X158149Y191176D01* X158963Y190363D01* X159393Y190075D01* X159900Y189974D01* X171340D01* X171514Y189714D01* X172242Y189228D01* X173100Y189057D01* X173958Y189228D01* X174686Y189714D01* X174906Y190043D01* X175403Y190092D01* X183089Y182407D01* X183519Y182120D01* X184026Y182019D01* X184761D01* X185078Y181632D01* X185001Y181244D01* X185172Y180386D01* X185658Y179658D01* X185958Y179457D01* Y170819D01* X184610D01* Y170819D01* X184326Y170585D01* X183987Y170652D01* X183128Y170482D01* X182401Y169995D01* X182116Y169570D01* X175731D01* X175223Y169469D01* X174793Y169181D01* X171374Y165762D01* X170912Y165953D01* Y166576D01* X170811Y167083D01* X170524Y167513D01* X165356Y172681D01* X164926Y172969D01* X164744Y173005D01* Y174744D01* X158744D01* Y174556D01* X158296Y174335D01* X158257Y174364D01* X157527Y174667D01* X157244Y174704D01* Y171744D01* X156244D01* Y174704D01* X155961Y174667D01* X155231Y174364D01* X154604Y173884D01* X154494Y173740D01* X153994D01* X153884Y173884D01* X153257Y174364D01* X152527Y174667D01* X152244Y174704D01* Y171744D01* X151244D01* Y174704D01* X150961Y174667D01* X150231Y174364D01* X149604Y173884D01* X149494Y173740D01* X148994D01* X148884Y173884D01* X148257Y174364D01* X147527Y174667D01* X146744Y174770D01* X145961Y174667D01* X145231Y174364D01* X144604Y173884D01* X144494Y173740D01* X143994D01* X143884Y173884D01* X143257Y174364D01* X142527Y174667D01* X141744Y174770D01* X140961Y174667D01* X140598Y174517D01* X140315Y174941D01* X151181Y185807D01* X151469Y186237D01* X151569Y186744D01* Y205984D01* X151830Y206158D01* X152316Y206886D01* X152487Y207744D01* X152316Y208602D01* X151830Y209330D01* X151102Y209816D01* X150244Y209987D01* X149386Y209816D01* X148658Y209330D01* X148172Y208602D01* X148001Y207744D01* X148172Y206886D01* X148658Y206158D01* X148918Y205984D01* Y187293D01* X147426Y185801D01* X146926Y186008D01* Y186492D01* X146828Y187241D01* X146538Y187939D01* X146078Y188539D01* X145479Y188999D01* X144781Y189288D01* X144531Y189321D01* Y185901D01* X144031D01* Y185401D01* X141137D01* Y185311D01* X141235Y184562D01* X141524Y183863D01* X141984Y183264D01* X142584Y182804D01* X143282Y182515D01* X143415Y182497D01* X143595Y181969D01* X137463Y175837D01* X137175Y175407D01* X137074Y174900D01* Y170088D01* X137175Y169581D01* X137463Y169151D01* X138899Y167715D01* X138821Y167527D01* X138718Y166744D01* X138821Y165961D01* X139123Y165231D01* X139604Y164604D01* X140231Y164123D01* X140961Y163821D01* X141744Y163718D01* X142527Y163821D01* X143257Y164123D01* X143884Y164604D01* X143994Y164748D01* X144494D01* X144604Y164604D01* X145231Y164123D01* X145961Y163821D01* X146744Y163718D01* X147527Y163821D01* X148257Y164123D01* X148884Y164604D01* X148994Y164748D01* X149494D01* X149604Y164604D01* X150231Y164123D01* X150418Y164046D01* Y163244D01* X150519Y162737D01* X150807Y162307D01* X159151Y153963D01* X179807Y133307D01* X180237Y133019D01* X180744Y132919D01* X256984D01* X257158Y132658D01* X257886Y132172D01* X258744Y132001D01* X259602Y132172D01* X260330Y132658D01* X260816Y133386D01* X260987Y134244D01* X260816Y135102D01* X260330Y135830D01* X259602Y136316D01* X258744Y136487D01* X257886Y136316D01* X257158Y135830D01* X256984Y135570D01* X181293D01* X177250Y139613D01* X177441Y140075D01* X192939D01* X193114Y139814D01* X193841Y139328D01* X194700Y139157D01* X195558Y139328D01* X196286Y139814D01* X196505Y140143D01* X197003Y140192D01* X199188Y138007D01* X199618Y137720D01* X200125Y137619D01* X238642D01* X239149Y137720D01* X239579Y138007D01* X244530Y142958D01* X255991Y154419D01* X256744D01* X257251Y154519D01* X257681Y154807D01* X258182Y155308D01* X258386Y155172D01* X259244Y155001D01* X260103Y155172D01* X260830Y155658D01* X261316Y156386D01* X261487Y157244D01* X261316Y158103D01* X260830Y158830D01* X260103Y159316D01* X259244Y159487D01* X258386Y159316D01* X257658Y158830D01* X257172Y158103D01* X257158Y158032D01* X256195Y157070D01* X255442D01* X254935Y156969D01* X254505Y156681D01* X242655Y144832D01* X238093Y140270D01* X218267D01* X218076Y140732D01* X220121Y142777D01* X220408Y143207D01* X220509Y143714D01* Y145195D01* X227356Y152041D01* X227643Y152471D01* X227744Y152979D01* Y157671D01* X228244Y157987D01* X228900Y157857D01* X229758Y158028D01* X230486Y158514D01* X230972Y159242D01* X231143Y160100D01* X230972Y160958D01* X230964Y160971D01* X231264Y161421D01* X231500Y161374D01* X250440D01* X250614Y161114D01* X251342Y160628D01* X252200Y160457D01* X253058Y160628D01* X253786Y161114D01* X254272Y161842D01* X254443Y162700D01* X254272Y163558D01* X253786Y164286D01* X253058Y164772D01* X252200Y164943D01* X251342Y164772D01* X250614Y164286D01* X250440Y164025D01* X235084D01* X234729Y164525D01* X234843Y165100D01* X234672Y165958D01* X234186Y166686D01* X233926Y166860D01* Y184847D01* X234387Y185038D01* X237317Y182109D01* X237747Y181821D01* X238254Y181720D01* X238254Y181720D01* X244446D01* X244953Y181821D01* X245383Y182109D01* X247885Y184610D01* X250675D01* Y177878D01* X246972D01* Y175385D01* X246472Y175029D01* X245900Y175143D01* X245042Y174972D01* X244314Y174486D01* X243828Y173758D01* X243657Y172900D01* X243828Y172042D01* X244314Y171314D01* X245042Y170828D01* X245900Y170657D01* X246472Y170771D01* X246972Y170415D01* Y167610D01* X252516D01* Y172425D01* X252516Y172563D01* X252516D01* Y172925D01* X252516D01* Y174183D01* X252937Y174464D01* X253225Y174894D01* X253326Y175402D01* Y188338D01* X253825Y188606D01* X254242Y188328D01* X255100Y188157D01* X255472Y188231D01* X255972Y187821D01* Y187610D01* X261310D01* X261671Y187193D01* X261663Y187137D01* X258307Y183781D01* X258019Y183351D01* X257919Y182844D01* Y180378D01* X256472D01* Y175563D01* X256472Y175425D01* Y175063D01* X256472Y174925D01* Y170110D01* X262016D01* Y171261D01* X262300D01* X262807Y171362D01* X263237Y171649D01* X267637Y176049D01* X267925Y176479D01* X268025Y176987D01* Y180040D01* X268286Y180214D01* X268772Y180942D01* X268943Y181800D01* X268772Y182658D01* X268286Y183386D01* X267558Y183872D01* X266700Y184043D01* X265842Y183872D01* X265114Y183386D01* X264628Y182658D01* X264457Y181800D01* X264628Y180942D01* X265114Y180214D01* X265374Y180040D01* Y177536D01* X262478Y174639D01* X262016Y174830D01* X262016Y175063D01* Y175425D01* X262016Y175563D01* Y180378D01* X260570D01* Y182295D01* X263149Y184874D01* X280133D01* X280219Y184622D01* X280264Y184374D01* X279569Y183469D01* X279116Y182375D01* X278961Y181200D01* X279116Y180025D01* X279569Y178931D01* X280291Y177991D01* X281231Y177269D01* X282325Y176816D01* X283500Y176661D01* X284675Y176816D01* X285769Y177269D01* X286709Y177991D01* X287431Y178931D01* X287884Y180025D01* X288039Y181200D01* X287884Y182375D01* X287431Y183469D01* X286709Y184409D01* X286671Y184439D01* X286796Y184973D01* X286807Y184975D01* X287237Y185263D01* X288825Y186851D01* X289325Y186643D01* Y134888D01* X280467Y126029D01* X151936D01* X151887Y126529D01* X152073Y126566D01* X152603Y126672D01* X153330Y127158D01* X153816Y127886D01* X153888Y128244D01* X149601D01* X149672Y127886D01* X150158Y127158D01* X150886Y126672D01* X151415Y126566D01* X151601Y126529D01* X151552Y126029D01* X135334D01* X127029Y134334D01* Y207344D01* Y222127D01* X127529Y222160D01* D01* X127536Y222110D01* X127544Y222045D01* X127660Y221169D01* X128113Y220075D01* X128835Y219135D01* X129775Y218413D01* X130869Y217960D01* X132044Y217805D01* X133219Y217960D01* X134313Y218413D01* X135253Y219135D01* X135975Y220075D01* X136428Y221169D01* X136583Y222344D01* X136428Y223519D01* X135975Y224613D01* X135253Y225553D01* X134313Y226275D01* X133219Y226728D01* X132044Y226883D01* X130869Y226728D01* X129775Y226275D01* X128835Y225553D01* X128113Y224613D01* X127660Y223519D01* X127544Y222643D01* X127529Y222528D01* X127029Y222561D01* D01* Y232127D01* X127529Y232160D01* X127660Y231169D01* X128113Y230075D01* X128835Y229135D01* X129775Y228413D01* X130869Y227960D01* X132044Y227805D01* X133219Y227960D01* X134313Y228413D01* X135253Y229135D01* X135975Y230075D01* X136428Y231169D01* X136583Y232344D01* X136428Y233519D01* X135975Y234613D01* X135253Y235553D01* X134970Y235771D01* X135131Y236244D01* X163010D01* Y235722D01* X162747Y235088D01* X162610Y234044D01* X162747Y233000D01* X163150Y232027D01* X163791Y231191D01* X164627Y230550D01* X165600Y230147D01* X166644Y230010D01* X172444D01* X173488Y230147D01* X174461Y230550D01* X175297Y231191D01* X175938Y232027D01* X176069Y232344D01* D01* X176082Y232375D01* X176336Y232988D01* X176341Y233000D01* X176479Y234044D01* X176341Y235088D01* X175938Y236061D01* X175297Y236897D01* X174461Y237538D01* X173488Y237941D01* X172444Y238078D01* X171079D01* Y264944D01* Y268444D01* X170941Y269488D01* X170538Y270461D01* X169897Y271297D01* X169061Y271938D01* X168088Y272341D01* X167044Y272479D01* X166000Y272341D01* X165027Y271938D01* X164191Y271297D01* X163550Y270461D01* X163147Y269488D01* X163010Y268444D01* Y264944D01* Y238744D01* X135501D01* X135337Y239244D01* X135975Y240075D01* X136428Y241170D01* X136583Y242344D01* X136428Y243519D01* X135975Y244614D01* X135253Y245554D01* X134313Y246275D01* X133219Y246728D01* X132044Y246883D01* X130869Y246728D01* X129775Y246275D01* X128835Y245554D01* X128113Y244614D01* X127660Y243519D01* X127529Y242528D01* X127029Y242561D01* Y279567D01* X135788Y288325D01* X280112D01* X289325Y279112D01* D02* G37* G36* X439974Y238351D02* Y234378D01* X436319D01* Y234878D01* X431169D01* Y233280D01* X430963Y233142D01* X429707Y231887D01* X429400Y231948D01* X428542Y231777D01* X427814Y231291D01* X427319Y231450D01* Y232378D01* X425244D01* Y229705D01* X424744D01* Y229205D01* X422169D01* Y226958D01* X421755Y226681D01* X421319Y226862D01* Y229705D01* X416169D01* Y226989D01* X416089Y226914D01* X415527Y226870D01* X414799Y227356D01* X413941Y227526D01* X413082Y227356D01* X412355Y226870D01* X412181Y226609D01* X411200D01* X410693Y226508D01* X410263Y226221D01* X407563Y223521D01* X407275Y223091D01* X407174Y222583D01* Y193812D01* X406744Y193459D01* Y191244D01* X405744D01* Y193388D01* X405386Y193316D01* X404658Y192830D01* X404426Y192483D01* X403929Y192434D01* X403400Y192963D01* Y224711D01* X403900Y225100D01* Y226744D01* X402009D01* X401891Y226600D01* X395878D01* Y226744D01* X393205D01* Y227744D01* X395878D01* Y228819D01* X398705D01* X399212Y228920D01* X399642Y229207D01* X402854Y232419D01* X410744D01* X411251Y232520D01* X411681Y232807D01* X413181Y234307D01* X413469Y234737D01* X413570Y235244D01* Y236484D01* X413830Y236658D01* X414316Y237386D01* X414487Y238244D01* X414316Y239103D01* X414105Y239419D01* X414372Y239919D01* X419307D01* X421718Y237507D01* X421657Y237200D01* X421828Y236342D01* X422314Y235614D01* X423042Y235128D01* X423900Y234957D01* X424758Y235128D01* X425486Y235614D01* X425972Y236342D01* X426143Y237200D01* X425972Y238058D01* X425486Y238786D01* X424758Y239272D01* X423900Y239443D01* X423593Y239382D01* X421518Y241457D01* X421709Y241918D01* X436407D01* X439974Y238351D01* D02* G37* G36* X259975D02* Y234378D01* X256319D01* Y234878D01* X251169D01* Y233280D01* X250963Y233142D01* X249707Y231887D01* X249400Y231948D01* X248542Y231777D01* X247814Y231291D01* X247319Y231450D01* Y232378D01* X245244D01* Y229705D01* X244744D01* Y229205D01* X242169D01* Y226958D01* X241755Y226681D01* X241319Y226862D01* Y229705D01* X236169D01* Y226989D01* X236089Y226914D01* X235527Y226870D01* X234799Y227356D01* X233941Y227526D01* X233082Y227356D01* X232355Y226870D01* X232181Y226609D01* X231200D01* X230693Y226508D01* X230263Y226221D01* X227563Y223521D01* X227275Y223091D01* X227174Y222583D01* Y193812D01* X226744Y193459D01* Y191244D01* X225744D01* Y193388D01* X225386Y193316D01* X224658Y192830D01* X224426Y192483D01* X223928Y192434D01* X223400Y192963D01* Y224711D01* X223900Y225100D01* Y226744D01* X222009D01* X221891Y226600D01* X215878D01* Y226744D01* X213205D01* Y227744D01* X215878D01* Y228819D01* X218705D01* X219212Y228920D01* X219642Y229207D01* X222854Y232419D01* X230744D01* X231251Y232520D01* X231681Y232807D01* X233181Y234307D01* X233469Y234737D01* X233570Y235244D01* Y236484D01* X233830Y236658D01* X234316Y237386D01* X234487Y238244D01* X234316Y239103D01* X234105Y239419D01* X234372Y239919D01* X239307D01* X241718Y237507D01* X241657Y237200D01* X241828Y236342D01* X242314Y235614D01* X243042Y235128D01* X243900Y234957D01* X244758Y235128D01* X245486Y235614D01* X245972Y236342D01* X246143Y237200D01* X245972Y238058D01* X245486Y238786D01* X244758Y239272D01* X243900Y239443D01* X243593Y239382D01* X241518Y241457D01* X241709Y241918D01* X256407D01* X259975Y238351D01* D02* G37* G36* X428542Y227632D02* X429400Y227462D01* X430258Y227632D01* X430669Y227907D01* X430900Y227783D01* X433744D01* Y227283D01* X434244D01* Y224610D01* X436169D01* Y224110D01* X438244D01* Y226783D01* X439244D01* Y224110D01* X439974D01* Y223449D01* X435551Y219025D01* X421028D01* X420761Y219526D01* X420972Y219842D01* X421044Y220200D01* X416756D01* X416828Y219842D01* X417314Y219114D01* X418042Y218628D01* X418365Y218563D01* X418510Y218085D01* X412935Y212510D01* X412438Y212559D01* X412286Y212786D01* X411558Y213272D01* X410700Y213443D01* X410325Y213369D01* X409826Y213779D01* Y222034D01* X411716Y223925D01* X412223Y223895D01* X412355Y223697D01* X413082Y223211D01* X413941Y223040D01* X414799Y223211D01* X415527Y223697D01* X416089Y223653D01* X416169Y223578D01* Y222610D01* X416967D01* X417196Y222110D01* X416828Y221558D01* X416756Y221200D01* X421044D01* X420972Y221558D01* X420604Y222110D01* X420833Y222610D01* X421319D01* Y223048D01* X421706Y223337D01* X422169Y223150D01* Y222110D01* X427319D01* Y227959D01* X427814Y228118D01* X428542Y227632D01* D02* G37* G36* X248542D02* X249400Y227462D01* X250258Y227632D01* X250669Y227907D01* X250900Y227783D01* X253744D01* Y227283D01* X254244D01* Y224610D01* X256169D01* Y224110D01* X258244D01* Y226783D01* X259244D01* Y224110D01* X259975D01* Y223449D01* X255551Y219025D01* X241028D01* X240761Y219526D01* X240972Y219842D01* X241044Y220200D01* X236756D01* X236828Y219842D01* X237314Y219114D01* X238042Y218628D01* X238365Y218563D01* X238510Y218085D01* X232936Y212510D01* X232438Y212559D01* X232286Y212786D01* X231558Y213272D01* X230700Y213443D01* X230326Y213369D01* X229825Y213779D01* Y222034D01* X231716Y223925D01* X232223Y223895D01* X232355Y223697D01* X233082Y223211D01* X233941Y223040D01* X234799Y223211D01* X235527Y223697D01* X236089Y223653D01* X236169Y223578D01* Y222610D01* X236967D01* X237196Y222110D01* X236828Y221558D01* X236756Y221200D01* X241044D01* X240972Y221558D01* X240604Y222110D01* X240833Y222610D01* X241319D01* Y223048D01* X241706Y223337D01* X242169Y223150D01* Y222110D01* X247319D01* Y227959D01* X247814Y228118D01* X248542Y227632D01* D02* G37* G36* X359280Y198476D02* X359787Y198375D01* X360323D01* Y195551D01* X361110D01* Y190669D01* X368205D01* Y193244D01* X369205D01* Y190669D01* X370990D01* X370992Y189924D01* X370639Y189570D01* X369144D01* X368637Y189469D01* X368207Y189181D01* X367595Y188570D01* X365004D01* X364830Y188830D01* X364103Y189316D01* X363244Y189487D01* X362386Y189316D01* X361658Y188830D01* X361443Y188508D01* X360799Y188445D01* X355234Y194011D01* X355425Y194473D01* X357878D01* Y196744D01* X355401D01* Y197744D01* X357878D01* Y198163D01* X358378Y198574D01* X358744Y198501D01* X359129Y198577D01* X359280Y198476D01* D02* G37* G36* X179280D02* X179787Y198375D01* X180323D01* Y195551D01* X181110D01* Y190669D01* X188205D01* Y193244D01* X189205D01* Y190669D01* X190990D01* X190992Y189924D01* X190639Y189570D01* X189144D01* X188637Y189469D01* X188207Y189181D01* X187595Y188570D01* X185004D01* X184830Y188830D01* X184102Y189316D01* X183244Y189487D01* X182386Y189316D01* X181658Y188830D01* X181443Y188508D01* X180799Y188445D01* X175234Y194011D01* X175425Y194473D01* X177878D01* Y196744D01* X175401D01* Y197744D01* X177878D01* Y198163D01* X178378Y198574D01* X178744Y198501D01* X179129Y198577D01* X179280Y198476D01* D02* G37* G36* X390555Y186013D02* X390501Y185744D01* X390672Y184886D01* X390996Y184401D01* X386048Y179452D01* X385550Y179501D01* X385330Y179830D01* X384602Y180316D01* X384244Y180388D01* Y178244D01* X383744D01* Y177744D01* X381486D01* X381261Y177470D01* X375293D01* X370670Y182093D01* Y182114D01* X370569Y182621D01* X370549Y182651D01* X370602Y183172D01* X371330Y183658D01* X371504Y183919D01* X381695D01* X382307Y183307D01* X382737Y183019D01* X383244Y182919D01* X383751Y183019D01* X384181Y183307D01* X387275Y186400D01* X390237D01* X390555Y186013D01* D02* G37* G36* X210555D02* X210501Y185744D01* X210672Y184886D01* X210996Y184401D01* X206048Y179452D01* X205550Y179501D01* X205330Y179830D01* X204603Y180316D01* X204244Y180388D01* Y178244D01* X203744D01* Y177744D01* X201486D01* X201261Y177470D01* X195293D01* X190670Y182093D01* Y182114D01* X190569Y182621D01* X190549Y182651D01* X190603Y183172D01* X191330Y183658D01* X191504Y183919D01* X201695D01* X202307Y183307D01* X202737Y183019D01* X203244Y182919D01* X203751Y183019D01* X204181Y183307D01* X207275Y186400D01* X210237D01* X210555Y186013D01* D02* G37* G36* X395377Y184207D02* X395807Y183920D01* X396314Y183819D01* X400051D01* X400158Y183658D01* X400886Y183172D01* X401744Y183001D01* X402132Y183078D01* X402519Y182761D01* Y180727D01* X402132Y180410D01* X401744Y180487D01* X400886Y180316D01* X400158Y179830D01* X399984Y179570D01* X399244D01* X398737Y179469D01* X398307Y179181D01* X395267Y176142D01* X395052Y175819D01* X391783D01* Y173244D01* Y170669D01* X394879D01* Y164319D01* X388284D01* Y161744D01* X387284D01* Y164319D01* X385110D01* Y161819D01* X383705D01* Y159244D01* X382705D01* Y161819D01* X375610D01* Y160384D01* X375307Y160181D01* X373307Y158181D01* X373020Y157751D01* X372919Y157244D01* Y155789D01* X372600Y155343D01* X371742Y155172D01* X371014Y154686D01* X370784Y154342D01* X370486Y153986D01* X370143Y154215D01* X369758Y154472D01* X368900Y154643D01* X368764Y154616D01* X368378Y154933D01* Y155516D01* X364826D01* Y165669D01* X371705D01* Y168244D01* Y170819D01* X368609D01* Y179510D01* X368830Y179658D01* X369309Y179705D01* X373807Y175207D01* X374237Y174919D01* X374744Y174819D01* X384614D01* X385121Y174919D01* X385551Y175207D01* X393681Y183337D01* X393969Y183767D01* X394003Y183939D01* X394330Y184158D01* X394550Y184487D01* X395048Y184536D01* X395377Y184207D01* D02* G37* G36* X215377D02* X215807Y183920D01* X216314Y183819D01* X220051D01* X220158Y183658D01* X220886Y183172D01* X221744Y183001D01* X222132Y183078D01* X222519Y182761D01* Y180727D01* X222132Y180410D01* X221744Y180487D01* X220886Y180316D01* X220158Y179830D01* X219984Y179570D01* X219244D01* X218737Y179469D01* X218307Y179181D01* X215267Y176142D01* X215052Y175819D01* X211783D01* Y173244D01* Y170669D01* X214879D01* Y164319D01* X208284D01* Y161744D01* X207284D01* Y164319D01* X205110D01* Y161819D01* X203705D01* Y159244D01* X202705D01* Y161819D01* X195610D01* Y160384D01* X195307Y160181D01* X193307Y158181D01* X193019Y157751D01* X192919Y157244D01* Y155789D01* X192600Y155343D01* X191742Y155172D01* X191014Y154686D01* X190784Y154342D01* X190486Y153986D01* X190143Y154215D01* X189758Y154472D01* X188900Y154643D01* X188764Y154616D01* X188378Y154933D01* Y155516D01* X184826D01* Y165669D01* X191705D01* Y168244D01* Y170819D01* X188609D01* Y179510D01* X188830Y179658D01* X189309Y179705D01* X193807Y175207D01* X194237Y174919D01* X194744Y174819D01* X204614D01* X205121Y174919D01* X205551Y175207D01* X213681Y183337D01* X213969Y183767D01* X214003Y183939D01* X214330Y184158D01* X214550Y184487D01* X215048Y184536D01* X215377Y184207D01* D02* G37* %LPC*% G36* X400244Y460744D02* X391244D01* Y451744D01* X400244D01* Y454207D01* Y458281D01* Y460744D01* D02* G37* G36* X415744Y461224D02* X414455Y461054D01* X413254Y460557D01* X412223Y459765D01* X411432Y458734D01* X410934Y457533D01* X410764Y456244D01* X410934Y454955D01* X411432Y453754D01* X412223Y452723D01* X413254Y451931D01* X414455Y451434D01* X415744Y451264D01* X417033Y451434D01* X418234Y451931D01* X419265Y452723D01* X420056Y453754D01* X420554Y454955D01* X420724Y456244D01* X420554Y457533D01* X420056Y458734D01* X419265Y459765D01* X418234Y460557D01* X417033Y461054D01* X415744Y461224D01* D02* G37* G36* X449791Y456719D02* X448245Y456567D01* X446758Y456116D01* X445387Y455383D01* X444185Y454397D01* X443200Y453196D01* X442467Y451825D01* X442016Y450338D01* X441863Y448791D01* X442016Y447245D01* X442467Y445757D01* X443200Y444387D01* X444185Y443186D01* X445387Y442200D01* X446758Y441467D01* X448245Y441016D01* X449791Y440864D01* X451338Y441016D01* X452825Y441467D01* X454196Y442200D01* X455397Y443186D01* X456383Y444387D01* X457116Y445757D01* X457567Y447245D01* X457719Y448791D01* X457567Y450338D01* X457116Y451825D01* X456383Y453196D01* X455397Y454397D01* X454196Y455383D01* X452825Y456116D01* X451338Y456567D01* X449791Y456719D01* D02* G37* G36* X327744D02* X326197Y456567D01* X324710Y456116D01* X323340Y455383D01* X322138Y454397D01* X321152Y453196D01* X320420Y451825D01* X319968Y450338D01* X319816Y448791D01* X319968Y447245D01* X320420Y445757D01* X321152Y444387D01* X322138Y443186D01* X323340Y442200D01* X324710Y441467D01* X326197Y441016D01* X327744Y440864D01* X329291Y441016D01* X330778Y441467D01* X332149Y442200D01* X333350Y443186D01* X334336Y444387D01* X335068Y445757D01* X335520Y447245D01* X335672Y448791D01* X335520Y450338D01* X335068Y451825D01* X334336Y453196D01* X333350Y454397D01* X332149Y455383D01* X330778Y456116D01* X329291Y456567D01* X327744Y456719D01* D02* G37* G36* X389744Y437244D02* X380744D01* Y428244D01* X380744Y428244D01* X390100D01* Y436888D01* X389744Y437244D01* D02* G37* G36* X395244Y437283D02* X394069Y437128D01* X392975Y436675D01* X392035Y435953D01* X391313Y435013D01* X390860Y433919D01* X390705Y432744D01* X390860Y431569D01* X391313Y430475D01* X392035Y429535D01* X392975Y428813D01* X394069Y428360D01* X395244Y428205D01* X396419Y428360D01* X397513Y428813D01* X398453Y429535D01* X399175Y430475D01* X399628Y431569D01* X399783Y432744D01* X399628Y433919D01* X399175Y435013D01* X398453Y435953D01* X397513Y436675D01* X396419Y437128D01* X395244Y437283D01* D02* G37* G36* X316544Y436844D02* X307544D01* Y427844D01* X316544D01* Y436844D01* D02* G37* G36* X463500Y425739D02* X462325Y425584D01* X461231Y425131D01* X460291Y424409D01* X459569Y423469D01* X459116Y422375D01* X458961Y421200D01* X459116Y420025D01* X459569Y418931D01* X460291Y417991D01* X461231Y417269D01* X462325Y416816D01* X463500Y416661D01* X464675Y416816D01* X465769Y417269D01* X466709Y417991D01* X467431Y418931D01* X467884Y420025D01* X468039Y421200D01* X467884Y422375D01* X467431Y423469D01* X466709Y424409D01* X465769Y425131D01* X464675Y425584D01* X463500Y425739D01* D02* G37* G36* X370388Y413744D02* X369744D01* Y411244D01* X370388D01* X370316Y411602D01* X369957Y412141D01* X369870Y412494D01* X369957Y412847D01* X370316Y413386D01* X370388Y413744D01* D02* G37* G36* X463500Y415739D02* X462325Y415584D01* X461231Y415131D01* X460291Y414409D01* X460212Y414307D01* X459569Y413469D01* X459116Y412375D01* X458961Y411200D01* X459116Y410025D01* X459569Y408931D01* X460291Y407991D01* X461231Y407269D01* X462325Y406816D01* X463500Y406661D01* X464675Y406816D01* X465769Y407269D01* X466709Y407991D01* X467431Y408931D01* X467884Y410025D01* X468039Y411200D01* X467884Y412375D01* X467431Y413469D01* X466788Y414307D01* X466709Y414409D01* X465769Y415131D01* X464675Y415584D01* X463500Y415739D01* D02* G37* G36* Y405739D02* X462325Y405584D01* X461231Y405131D01* X460291Y404409D01* X459569Y403469D01* X459116Y402375D01* X458961Y401200D01* X459116Y400025D01* X459569Y398931D01* X460291Y397991D01* X461231Y397269D01* X462325Y396816D01* X463500Y396661D01* X464675Y396816D01* X465769Y397269D01* X466709Y397991D01* X467431Y398931D01* X467884Y400025D01* X468039Y401200D01* X467884Y402375D01* X467431Y403469D01* X466709Y404409D01* X465769Y405131D01* X464675Y405584D01* X463500Y405739D01* D02* G37* G36* X464000Y395673D02* Y391700D01* X467973D01* X467884Y392375D01* X467431Y393469D01* X466709Y394409D01* X465769Y395131D01* X464675Y395584D01* X464000Y395673D01* D02* G37* G36* X463000D02* X462325Y395584D01* X461231Y395131D01* X460291Y394409D01* X459569Y393469D01* X459116Y392375D01* X459027Y391700D01* X463000D01* Y395673D01* D02* G37* G36* X316000Y387344D02* X313508D01* Y386728D01* X314287D01* X315011Y386823D01* X315685Y387103D01* X316000Y387344D01* D02* G37* G36* X312508D02* X310016D01* X310331Y387103D01* X311005Y386823D01* X311728Y386728D01* X312508D01* Y387344D01* D02* G37* G36* X467973Y390700D02* X464000D01* Y386727D01* X464675Y386816D01* X465769Y387269D01* X466709Y387991D01* X467431Y388931D01* X467884Y390025D01* X467973Y390700D01* D02* G37* G36* X463000D02* X459027D01* X459116Y390025D01* X459569Y388931D01* X460291Y387991D01* X461231Y387269D01* X462325Y386816D01* X463000Y386727D01* Y390700D01* D02* G37* G36* X326655Y387344D02* X324531D01* Y386087D01* X326926D01* Y386177D01* X326828Y386926D01* X326655Y387344D01* D02* G37* G36* X323531D02* X321408D01* X321235Y386926D01* X321136Y386177D01* Y386087D01* X323531D01* Y387344D01* D02* G37* G36* X453400Y387344D02* Y385700D01* X455044D01* X454972Y386058D01* X454486Y386786D01* X453758Y387272D01* X453400Y387344D01* D02* G37* G36* X452400D02* X452042Y387272D01* X451314Y386786D01* X450828Y386058D01* X450756Y385700D01* X452400D01* Y387344D01* D02* G37* G36* X455044Y384700D02* X453400D01* Y383056D01* X453758Y383128D01* X454486Y383614D01* X454972Y384342D01* X455044Y384700D01* D02* G37* G36* X452400D02* X450756D01* X450828Y384342D01* X451314Y383614D01* X452042Y383128D01* X452400Y383056D01* Y384700D01* D02* G37* G36* X326926Y385087D02* X324531D01* Y382167D01* X324781Y382200D01* X325479Y382489D01* X326078Y382949D01* X326538Y383549D01* X326828Y384247D01* X326926Y384996D01* Y385087D01* D02* G37* G36* X323531D02* X321136D01* Y384996D01* X321235Y384247D01* X321524Y383549D01* X321984Y382949D01* X322584Y382489D01* X323282Y382200D01* X323531Y382167D01* Y385087D01* D02* G37* G36* Y369321D02* X323282Y369288D01* X322584Y368999D01* X321984Y368539D01* X321524Y367939D01* X321235Y367241D01* X321136Y366492D01* Y366401D01* X323531D01* Y369321D01* D02* G37* G36* X342425Y364016D02* X342063D01* X341925Y364016D01* X337110D01* Y362569D01* X336360D01* X336186Y362830D01* X335458Y363316D01* X334600Y363487D01* X333742Y363316D01* X333014Y362830D01* X332528Y362102D01* X332357Y361244D01* X332528Y360386D01* X333014Y359658D01* X333742Y359172D01* X334600Y359001D01* X335458Y359172D01* X336186Y359658D01* X336360Y359918D01* X337110D01* Y358472D01* X341925D01* X342063Y358472D01* X342425D01* X342563Y358472D01* X344402D01* Y361244D01* Y364016D01* X342563D01* X342425Y364016D01* D02* G37* G36* X314287Y364760D02* X313508D01* Y362464D01* X317017D01* X316988Y362688D01* X316708Y363362D01* X316264Y363941D01* X315685Y364385D01* X315011Y364665D01* X314287Y364760D01* D02* G37* G36* X312508D02* X311728D01* X311005Y364665D01* X310331Y364385D01* X309752Y363941D01* X309307Y363362D01* X309028Y362688D01* X308998Y362464D01* X312508D01* Y364760D01* D02* G37* G36* X345402Y364016D02* Y361744D01* X347378D01* Y364016D01* X345402D01* D02* G37* G36* X317017Y361464D02* X313508D01* Y359169D01* X314287D01* X315011Y359264D01* X315685Y359543D01* X316264Y359988D01* X316708Y360567D01* X316988Y361241D01* X317017Y361464D01* D02* G37* G36* X312508D02* X308998D01* X309028Y361241D01* X309307Y360567D01* X309752Y359988D01* X310331Y359543D01* X311005Y359264D01* X311728Y359169D01* X312508D01* Y361464D01* D02* G37* G36* X347378Y360744D02* X345402D01* Y358472D01* X347378D01* Y360744D01* D02* G37* G36* X449244Y352488D02* Y350844D01* X450888D01* X450816Y351203D01* X450330Y351930D01* X449603Y352416D01* X449244Y352488D01* D02* G37* G36* X448244D02* X447886Y352416D01* X447158Y351930D01* X446672Y351203D01* X446600Y350844D01* X448244D01* Y352488D01* D02* G37* G36* X450888Y349844D02* X449244D01* Y348200D01* X449603Y348272D01* X450330Y348758D01* X450816Y349486D01* X450888Y349844D01* D02* G37* G36* X448244D02* X446600D01* X446672Y349486D01* X447158Y348758D01* X447886Y348272D01* X448244Y348200D01* Y349844D01* D02* G37* G36* X463500Y355739D02* X462325Y355584D01* X461231Y355131D01* X460291Y354409D01* X459569Y353469D01* X459116Y352375D01* X458961Y351200D01* X459116Y350025D01* X459569Y348931D01* X460291Y347991D01* X461231Y347269D01* X462325Y346816D01* X463500Y346661D01* X464675Y346816D01* X465769Y347269D01* X466709Y347991D01* X467431Y348931D01* X467884Y350025D01* X468039Y351200D01* X467884Y352375D01* X467431Y353469D01* X466709Y354409D01* X465769Y355131D01* X464675Y355584D01* X463500Y355739D01* D02* G37* G36* X468000Y345700D02* X464000D01* Y341700D01* X468000D01* Y345700D01* D02* G37* G36* X463000D02* X459000D01* Y341700D01* X463000D01* Y345700D01* D02* G37* G36* X468000Y340700D02* X464000D01* Y336700D01* X468000D01* Y340700D01* D02* G37* G36* X463000D02* X459000D01* Y336700D01* X463000D01* Y340700D01* D02* G37* G36* X423118Y330888D02* Y329244D01* X424762D01* X424690Y329603D01* X424204Y330330D01* X423476Y330816D01* X423118Y330888D01* D02* G37* G36* X422118D02* X421760Y330816D01* X421032Y330330D01* X420546Y329603D01* X420474Y329244D01* X422118D01* Y330888D01* D02* G37* G36* X424762Y328244D02* X423118D01* Y326601D01* X423476Y326672D01* X424204Y327158D01* X424690Y327886D01* X424762Y328244D01* D02* G37* G36* X422118D02* X420474D01* X420546Y327886D01* X421032Y327158D01* X421760Y326672D01* X422118Y326601D01* Y328244D01* D02* G37* G36* X449791Y334672D02* X448245Y334520D01* X446758Y334068D01* X445387Y333336D01* X444185Y332350D01* X443200Y331149D01* X442467Y329778D01* X442016Y328291D01* X441863Y326744D01* X442016Y325197D01* X442467Y323710D01* X443200Y322340D01* X444185Y321138D01* X445387Y320152D01* X446758Y319420D01* X448245Y318968D01* X449791Y318816D01* X451338Y318968D01* X452825Y319420D01* X454196Y320152D01* X455397Y321138D01* X456383Y322340D01* X457116Y323710D01* X457567Y325197D01* X457719Y326744D01* X457567Y328291D01* X457116Y329778D01* X456383Y331149D01* X455397Y332350D01* X454196Y333336D01* X452825Y334068D01* X451338Y334520D01* X449791Y334672D01* D02* G37* G36* X327744D02* X326197Y334520D01* X324710Y334068D01* X323340Y333336D01* X322138Y332350D01* X321152Y331149D01* X320420Y329778D01* X319968Y328291D01* X319816Y326744D01* X319968Y325197D01* X320420Y323710D01* X321152Y322340D01* X322138Y321138D01* X323340Y320152D01* X324710Y319420D01* X326197Y318968D01* X327744Y318816D01* X329291Y318968D01* X330778Y319420D01* X332149Y320152D01* X333350Y321138D01* X334336Y322340D01* X335068Y323710D01* X335520Y325197D01* X335672Y326744D01* X335520Y328291D01* X335068Y329778D01* X334336Y331149D01* X333350Y332350D01* X332149Y333336D01* X330778Y334068D01* X329291Y334520D01* X327744Y334672D01* D02* G37* G36* X423244Y311088D02* Y309445D01* X424888D01* X424816Y309803D01* X424330Y310531D01* X423602Y311017D01* X423244Y311088D01* D02* G37* G36* X422244D02* X421886Y311017D01* X421158Y310531D01* X420672Y309803D01* X420600Y309445D01* X422244D01* Y311088D01* D02* G37* G36* X387244D02* Y309445D01* X388888D01* X388816Y309803D01* X388330Y310531D01* X387602Y311017D01* X387244Y311088D01* D02* G37* G36* X386244D02* X385886Y311017D01* X385158Y310531D01* X384672Y309803D01* X384600Y309445D01* X386244D01* Y311088D01* D02* G37* G36* X332244Y310888D02* Y309244D01* X333888D01* X333816Y309602D01* X333330Y310330D01* X332603Y310816D01* X332244Y310888D01* D02* G37* G36* X331244D02* X330886Y310816D01* X330158Y310330D01* X329672Y309602D01* X329601Y309244D01* X331244D01* Y310888D01* D02* G37* G36* X424888Y308445D02* X423244D01* Y306801D01* X423602Y306872D01* X424330Y307359D01* X424816Y308086D01* X424888Y308445D01* D02* G37* G36* X422244D02* X420600D01* X420672Y308086D01* X421158Y307359D01* X421886Y306872D01* X422244Y306801D01* Y308445D01* D02* G37* G36* X388888D02* X387244D01* Y306801D01* X387602Y306872D01* X388330Y307359D01* X388816Y308086D01* X388888Y308445D01* D02* G37* G36* X386244D02* X384600D01* X384672Y308086D01* X385158Y307359D01* X385886Y306872D01* X386244Y306801D01* Y308445D01* D02* G37* G36* X220244Y460744D02* X211244D01* Y451744D01* X220244D01* Y454207D01* Y458281D01* Y460744D01* D02* G37* G36* X235744Y461224D02* X234455Y461054D01* X233254Y460557D01* X232223Y459765D01* X231432Y458734D01* X230934Y457533D01* X230764Y456244D01* X230934Y454955D01* X231432Y453754D01* X232223Y452723D01* X233254Y451931D01* X234455Y451434D01* X235744Y451264D01* X237033Y451434D01* X238234Y451931D01* X239265Y452723D01* X240056Y453754D01* X240554Y454955D01* X240724Y456244D01* X240554Y457533D01* X240056Y458734D01* X239265Y459765D01* X238234Y460557D01* X237033Y461054D01* X235744Y461224D01* D02* G37* G36* X269791Y456719D02* X268245Y456567D01* X266757Y456116D01* X265387Y455383D01* X264186Y454397D01* X263200Y453196D01* X262467Y451825D01* X262016Y450338D01* X261863Y448791D01* X262016Y447245D01* X262467Y445757D01* X263200Y444387D01* X264186Y443186D01* X265387Y442200D01* X266757Y441467D01* X268245Y441016D01* X269791Y440864D01* X271338Y441016D01* X272825Y441467D01* X274196Y442200D01* X275397Y443186D01* X276383Y444387D01* X277116Y445757D01* X277567Y447245D01* X277719Y448791D01* X277567Y450338D01* X277116Y451825D01* X276383Y453196D01* X275397Y454397D01* X274196Y455383D01* X272825Y456116D01* X271338Y456567D01* X269791Y456719D01* D02* G37* G36* X147744D02* X146197Y456567D01* X144710Y456116D01* X143340Y455383D01* X142138Y454397D01* X141152Y453196D01* X140419Y451825D01* X139968Y450338D01* X139816Y448791D01* X139968Y447245D01* X140419Y445757D01* X141152Y444387D01* X142138Y443186D01* X143340Y442200D01* X144710Y441467D01* X146197Y441016D01* X147744Y440864D01* X149291Y441016D01* X150778Y441467D01* X152148Y442200D01* X153350Y443186D01* X154336Y444387D01* X155069Y445757D01* X155520Y447245D01* X155672Y448791D01* X155520Y450338D01* X155069Y451825D01* X154336Y453196D01* X153350Y454397D01* X152148Y455383D01* X150778Y456116D01* X149291Y456567D01* X147744Y456719D01* D02* G37* G36* X209744Y437244D02* X200744D01* Y428244D01* X200744Y428244D01* X210100D01* Y436888D01* X209744Y437244D01* D02* G37* G36* X215244Y437283D02* X214069Y437128D01* X212975Y436675D01* X212035Y435953D01* X211313Y435013D01* X210860Y433919D01* X210705Y432744D01* X210860Y431569D01* X211313Y430475D01* X212035Y429535D01* X212975Y428813D01* X214069Y428360D01* X215244Y428205D01* X216419Y428360D01* X217513Y428813D01* X218453Y429535D01* X219175Y430475D01* X219628Y431569D01* X219783Y432744D01* X219628Y433919D01* X219175Y435013D01* X218453Y435953D01* X217513Y436675D01* X216419Y437128D01* X215244Y437283D01* D02* G37* G36* X136544Y436844D02* X127544D01* Y427844D01* X136544D01* Y436844D01* D02* G37* G36* X283500Y425739D02* X282325Y425584D01* X281231Y425131D01* X280291Y424409D01* X279569Y423469D01* X279116Y422375D01* X278961Y421200D01* X279116Y420025D01* X279569Y418931D01* X280291Y417991D01* X281231Y417269D01* X282325Y416816D01* X283500Y416661D01* X284675Y416816D01* X285769Y417269D01* X286709Y417991D01* X287431Y418931D01* X287884Y420025D01* X288039Y421200D01* X287884Y422375D01* X287431Y423469D01* X286709Y424409D01* X285769Y425131D01* X284675Y425584D01* X283500Y425739D01* D02* G37* G36* X190388Y413744D02* X189744D01* Y411244D01* X190388D01* X190316Y411602D01* X189957Y412141D01* X189870Y412494D01* X189957Y412847D01* X190316Y413386D01* X190388Y413744D01* D02* G37* G36* X283500Y415739D02* X282325Y415584D01* X281231Y415131D01* X280291Y414409D01* X280212Y414307D01* X279569Y413469D01* X279116Y412375D01* X278961Y411200D01* X279116Y410025D01* X279569Y408931D01* X280291Y407991D01* X281231Y407269D01* X282325Y406816D01* X283500Y406661D01* X284675Y406816D01* X285769Y407269D01* X286709Y407991D01* X287431Y408931D01* X287884Y410025D01* X288039Y411200D01* X287884Y412375D01* X287431Y413469D01* X286788Y414307D01* X286709Y414409D01* X285769Y415131D01* X284675Y415584D01* X283500Y415739D01* D02* G37* G36* Y405739D02* X282325Y405584D01* X281231Y405131D01* X280291Y404409D01* X279569Y403469D01* X279116Y402375D01* X278961Y401200D01* X279116Y400025D01* X279569Y398931D01* X280291Y397991D01* X281231Y397269D01* X282325Y396816D01* X283500Y396661D01* X284675Y396816D01* X285769Y397269D01* X286709Y397991D01* X287431Y398931D01* X287884Y400025D01* X288039Y401200D01* X287884Y402375D01* X287431Y403469D01* X286709Y404409D01* X285769Y405131D01* X284675Y405584D01* X283500Y405739D01* D02* G37* G36* X284000Y395673D02* Y391700D01* X287973D01* X287884Y392375D01* X287431Y393469D01* X286709Y394409D01* X285769Y395131D01* X284675Y395584D01* X284000Y395673D01* D02* G37* G36* X283000D02* X282325Y395584D01* X281231Y395131D01* X280291Y394409D01* X279569Y393469D01* X279116Y392375D01* X279027Y391700D01* X283000D01* Y395673D01* D02* G37* G36* X136000Y387344D02* X133508D01* Y386728D01* X134287D01* X135011Y386823D01* X135685Y387103D01* X136000Y387344D01* D02* G37* G36* X132508D02* X130016D01* X130331Y387103D01* X131005Y386823D01* X131728Y386728D01* X132508D01* Y387344D01* D02* G37* G36* X287973Y390700D02* X284000D01* Y386727D01* X284675Y386816D01* X285769Y387269D01* X286709Y387991D01* X287431Y388931D01* X287884Y390025D01* X287973Y390700D01* D02* G37* G36* X283000D02* X279027D01* X279116Y390025D01* X279569Y388931D01* X280291Y387991D01* X281231Y387269D01* X282325Y386816D01* X283000Y386727D01* Y390700D01* D02* G37* G36* X146655Y387344D02* X144531D01* Y386087D01* X146926D01* Y386177D01* X146828Y386926D01* X146655Y387344D01* D02* G37* G36* X143531D02* X141408D01* X141235Y386926D01* X141137Y386177D01* Y386087D01* X143531D01* Y387344D01* D02* G37* G36* X273400Y387344D02* Y385700D01* X275044D01* X274972Y386058D01* X274486Y386786D01* X273758Y387272D01* X273400Y387344D01* D02* G37* G36* X272400D02* X272042Y387272D01* X271314Y386786D01* X270828Y386058D01* X270756Y385700D01* X272400D01* Y387344D01* D02* G37* G36* X275044Y384700D02* X273400D01* Y383056D01* X273758Y383128D01* X274486Y383614D01* X274972Y384342D01* X275044Y384700D01* D02* G37* G36* X272400D02* X270756D01* X270828Y384342D01* X271314Y383614D01* X272042Y383128D01* X272400Y383056D01* Y384700D01* D02* G37* G36* X146926Y385087D02* X144531D01* Y382167D01* X144781Y382200D01* X145479Y382489D01* X146078Y382949D01* X146538Y383549D01* X146828Y384247D01* X146926Y384996D01* Y385087D01* D02* G37* G36* X143531D02* X141137D01* Y384996D01* X141235Y384247D01* X141524Y383549D01* X141984Y382949D01* X142584Y382489D01* X143282Y382200D01* X143531Y382167D01* Y385087D01* D02* G37* G36* Y369321D02* X143282Y369288D01* X142584Y368999D01* X141984Y368539D01* X141524Y367939D01* X141235Y367241D01* X141137Y366492D01* Y366401D01* X143531D01* Y369321D01* D02* G37* G36* X162425Y364016D02* X162063D01* X161925Y364016D01* X157110D01* Y362569D01* X156360D01* X156186Y362830D01* X155458Y363316D01* X154600Y363487D01* X153742Y363316D01* X153014Y362830D01* X152528Y362102D01* X152357Y361244D01* X152528Y360386D01* X153014Y359658D01* X153742Y359172D01* X154600Y359001D01* X155458Y359172D01* X156186Y359658D01* X156360Y359918D01* X157110D01* Y358472D01* X161925D01* X162063Y358472D01* X162425D01* X162563Y358472D01* X164402D01* Y361244D01* Y364016D01* X162563D01* X162425Y364016D01* D02* G37* G36* X134287Y364760D02* X133508D01* Y362464D01* X137017D01* X136988Y362688D01* X136708Y363362D01* X136264Y363941D01* X135685Y364385D01* X135011Y364665D01* X134287Y364760D01* D02* G37* G36* X132508D02* X131728D01* X131005Y364665D01* X130331Y364385D01* X129752Y363941D01* X129307Y363362D01* X129028Y362688D01* X128998Y362464D01* X132508D01* Y364760D01* D02* G37* G36* X165402Y364016D02* Y361744D01* X167378D01* Y364016D01* X165402D01* D02* G37* G36* X137017Y361464D02* X133508D01* Y359169D01* X134287D01* X135011Y359264D01* X135685Y359543D01* X136264Y359988D01* X136708Y360567D01* X136988Y361241D01* X137017Y361464D01* D02* G37* G36* X132508D02* X128998D01* X129028Y361241D01* X129307Y360567D01* X129752Y359988D01* X130331Y359543D01* X131005Y359264D01* X131728Y359169D01* X132508D01* Y361464D01* D02* G37* G36* X167378Y360744D02* X165402D01* Y358472D01* X167378D01* Y360744D01* D02* G37* G36* X269244Y352488D02* Y350844D01* X270888D01* X270816Y351203D01* X270330Y351930D01* X269602Y352416D01* X269244Y352488D01* D02* G37* G36* X268244D02* X267886Y352416D01* X267158Y351930D01* X266672Y351203D01* X266600Y350844D01* X268244D01* Y352488D01* D02* G37* G36* X270888Y349844D02* X269244D01* Y348200D01* X269602Y348272D01* X270330Y348758D01* X270816Y349486D01* X270888Y349844D01* D02* G37* G36* X268244D02* X266600D01* X266672Y349486D01* X267158Y348758D01* X267886Y348272D01* X268244Y348200D01* Y349844D01* D02* G37* G36* X283500Y355739D02* X282325Y355584D01* X281231Y355131D01* X280291Y354409D01* X279569Y353469D01* X279116Y352375D01* X278961Y351200D01* X279116Y350025D01* X279569Y348931D01* X280291Y347991D01* X281231Y347269D01* X282325Y346816D01* X283500Y346661D01* X284675Y346816D01* X285769Y347269D01* X286709Y347991D01* X287431Y348931D01* X287884Y350025D01* X288039Y351200D01* X287884Y352375D01* X287431Y353469D01* X286709Y354409D01* X285769Y355131D01* X284675Y355584D01* X283500Y355739D01* D02* G37* G36* X288000Y345700D02* X284000D01* Y341700D01* X288000D01* Y345700D01* D02* G37* G36* X283000D02* X279000D01* Y341700D01* X283000D01* Y345700D01* D02* G37* G36* X288000Y340700D02* X284000D01* Y336700D01* X288000D01* Y340700D01* D02* G37* G36* X283000D02* X279000D01* Y336700D01* X283000D01* Y340700D01* D02* G37* G36* X243118Y330888D02* Y329244D01* X244762D01* X244690Y329603D01* X244204Y330330D01* X243476Y330816D01* X243118Y330888D01* D02* G37* G36* X242118D02* X241760Y330816D01* X241032Y330330D01* X240546Y329603D01* X240474Y329244D01* X242118D01* Y330888D01* D02* G37* G36* X244762Y328244D02* X243118D01* Y326601D01* X243476Y326672D01* X244204Y327158D01* X244690Y327886D01* X244762Y328244D01* D02* G37* G36* X242118D02* X240474D01* X240546Y327886D01* X241032Y327158D01* X241760Y326672D01* X242118Y326601D01* Y328244D01* D02* G37* G36* X269791Y334672D02* X268245Y334520D01* X266757Y334068D01* X265387Y333336D01* X264186Y332350D01* X263200Y331149D01* X262467Y329778D01* X262016Y328291D01* X261863Y326744D01* X262016Y325197D01* X262467Y323710D01* X263200Y322340D01* X264186Y321138D01* X265387Y320152D01* X266757Y319420D01* X268245Y318968D01* X269791Y318816D01* X271338Y318968D01* X272825Y319420D01* X274196Y320152D01* X275397Y321138D01* X276383Y322340D01* X277116Y323710D01* X277567Y325197D01* X277719Y326744D01* X277567Y328291D01* X277116Y329778D01* X276383Y331149D01* X275397Y332350D01* X274196Y333336D01* X272825Y334068D01* X271338Y334520D01* X269791Y334672D01* D02* G37* G36* X147744D02* X146197Y334520D01* X144710Y334068D01* X143340Y333336D01* X142138Y332350D01* X141152Y331149D01* X140419Y329778D01* X139968Y328291D01* X139816Y326744D01* X139968Y325197D01* X140419Y323710D01* X141152Y322340D01* X142138Y321138D01* X143340Y320152D01* X144710Y319420D01* X146197Y318968D01* X147744Y318816D01* X149291Y318968D01* X150778Y319420D01* X152148Y320152D01* X153350Y321138D01* X154336Y322340D01* X155069Y323710D01* X155520Y325197D01* X155672Y326744D01* X155520Y328291D01* X155069Y329778D01* X154336Y331149D01* X153350Y332350D01* X152148Y333336D01* X150778Y334068D01* X149291Y334520D01* X147744Y334672D01* D02* G37* G36* X243244Y311088D02* Y309445D01* X244888D01* X244816Y309803D01* X244330Y310531D01* X243602Y311017D01* X243244Y311088D01* D02* G37* G36* X242244D02* X241886Y311017D01* X241158Y310531D01* X240672Y309803D01* X240600Y309445D01* X242244D01* Y311088D01* D02* G37* G36* X207244D02* Y309445D01* X208888D01* X208816Y309803D01* X208330Y310531D01* X207603Y311017D01* X207244Y311088D01* D02* G37* G36* X206244D02* X205886Y311017D01* X205158Y310531D01* X204672Y309803D01* X204601Y309445D01* X206244D01* Y311088D01* D02* G37* G36* X152244Y310888D02* Y309244D01* X153888D01* X153816Y309602D01* X153330Y310330D01* X152603Y310816D01* X152244Y310888D01* D02* G37* G36* X151244D02* X150886Y310816D01* X150158Y310330D01* X149672Y309602D01* X149601Y309244D01* X151244D01* Y310888D01* D02* G37* G36* X244888Y308445D02* X243244D01* Y306801D01* X243602Y306872D01* X244330Y307359D01* X244816Y308086D01* X244888Y308445D01* D02* G37* G36* X242244D02* X240600D01* X240672Y308086D01* X241158Y307359D01* X241886Y306872D01* X242244Y306801D01* Y308445D01* D02* G37* G36* X208888D02* X207244D01* Y306801D01* X207603Y306872D01* X208330Y307359D01* X208816Y308086D01* X208888Y308445D01* D02* G37* G36* X206244D02* X204601D01* X204672Y308086D01* X205158Y307359D01* X205886Y306872D01* X206244Y306801D01* Y308445D01* D02* G37* G36* X421319Y412878D02* X419244D01* Y410705D01* X421319D01* Y412878D01* D02* G37* G36* X418244D02* X416169D01* Y410705D01* X418244D01* Y412878D01* D02* G37* G36* X424244Y412378D02* X422169D01* Y410205D01* X424244D01* Y412378D01* D02* G37* G36* X404900Y409388D02* Y407744D01* X406544D01* X406472Y408102D01* X405986Y408830D01* X405258Y409316D01* X404900Y409388D01* D02* G37* G36* X403900D02* X403542Y409316D01* X402814Y408830D01* X402328Y408102D01* X402256Y407744D01* X403900D01* Y409388D01* D02* G37* G36* X406544Y406744D02* X404900D01* Y405100D01* X405258Y405172D01* X405986Y405658D01* X406472Y406386D01* X406544Y406744D01* D02* G37* G36* X241319Y412878D02* X239244D01* Y410705D01* X241319D01* Y412878D01* D02* G37* G36* X238244D02* X236169D01* Y410705D01* X238244D01* Y412878D01* D02* G37* G36* X244244Y412378D02* X242169D01* Y410205D01* X244244D01* Y412378D01* D02* G37* G36* X224900Y409388D02* Y407744D01* X226544D01* X226472Y408102D01* X225986Y408830D01* X225258Y409316D01* X224900Y409388D01* D02* G37* G36* X223900D02* X223542Y409316D01* X222814Y408830D01* X222328Y408102D01* X222256Y407744D01* X223900D01* Y409388D01* D02* G37* G36* X226544Y406744D02* X224900D01* Y405100D01* X225258Y405172D01* X225986Y405658D01* X226472Y406386D01* X226544Y406744D01* D02* G37* G36* X433244Y406783D02* X431169D01* Y404610D01* X433244D01* Y406783D01* D02* G37* G36* X253244D02* X251169D01* Y404610D01* X253244D01* Y406783D01* D02* G37* G36* X383244Y360388D02* X382886Y360316D01* X382158Y359830D01* X381672Y359103D01* X381600Y358744D01* X383244D01* Y360388D01* D02* G37* G36* X203244D02* X202886Y360316D01* X202158Y359830D01* X201672Y359103D01* X201601Y358744D01* X203244D01* Y360388D01* D02* G37* G36* X390783Y355819D02* X388610D01* Y353744D01* X390783D01* Y355819D01* D02* G37* G36* Y352744D02* X388610D01* Y350669D01* X390783D01* Y352744D01* D02* G37* G36* X374878Y350819D02* X372705D01* Y348744D01* X374878D01* Y350819D01* D02* G37* G36* X382900Y347388D02* Y345744D01* X384544D01* X384472Y346102D01* X383986Y346830D01* X383258Y347316D01* X382900Y347388D01* D02* G37* G36* X381900D02* X381541Y347316D01* X380814Y346830D01* X380328Y346102D01* X380256Y345744D01* X381900D01* Y347388D01* D02* G37* G36* X374878Y347744D02* X372705D01* Y345669D01* X374878D01* Y347744D01* D02* G37* G36* X384544Y344744D02* X382900D01* Y343101D01* X383258Y343172D01* X383986Y343658D01* X384472Y344386D01* X384544Y344744D01* D02* G37* G36* X381900D02* X380256D01* X380328Y344386D01* X380814Y343658D01* X381541Y343172D01* X381900Y343101D01* Y344744D01* D02* G37* G36* X210783Y355819D02* X208610D01* Y353744D01* X210783D01* Y355819D01* D02* G37* G36* Y352744D02* X208610D01* Y350669D01* X210783D01* Y352744D01* D02* G37* G36* X194878Y350819D02* X192705D01* Y348744D01* X194878D01* Y350819D01* D02* G37* G36* X202900Y347388D02* Y345744D01* X204544D01* X204472Y346102D01* X203986Y346830D01* X203258Y347316D01* X202900Y347388D01* D02* G37* G36* X201900D02* X201541Y347316D01* X200814Y346830D01* X200328Y346102D01* X200256Y345744D01* X201900D01* Y347388D01* D02* G37* G36* X194878Y347744D02* X192705D01* Y345669D01* X194878D01* Y347744D01* D02* G37* G36* X204544Y344744D02* X202900D01* Y343101D01* X203258Y343172D01* X203986Y343658D01* X204472Y344386D01* X204544Y344744D01* D02* G37* G36* X201900D02* X200256D01* X200328Y344386D01* X200814Y343658D01* X201541Y343172D01* X201900Y343101D01* Y344744D01* D02* G37* G36* X400244Y280744D02* X391244D01* Y271744D01* X400244D01* Y274207D01* Y278281D01* Y280744D01* D02* G37* G36* X415744Y281224D02* X414455Y281054D01* X413254Y280557D01* X412223Y279765D01* X411432Y278734D01* X410934Y277533D01* X410764Y276244D01* X410934Y274955D01* X411432Y273754D01* X412223Y272723D01* X413254Y271932D01* X414455Y271434D01* X415744Y271264D01* X417033Y271434D01* X418234Y271932D01* X419265Y272723D01* X420056Y273754D01* X420554Y274955D01* X420724Y276244D01* X420554Y277533D01* X420056Y278734D01* X419265Y279765D01* X418234Y280557D01* X417033Y281054D01* X415744Y281224D01* D02* G37* G36* X449791Y276719D02* X448245Y276567D01* X446758Y276116D01* X445387Y275383D01* X444185Y274397D01* X443200Y273196D01* X442467Y271825D01* X442016Y270338D01* X441863Y268791D01* X442016Y267245D01* X442467Y265757D01* X443200Y264387D01* X444185Y263186D01* X445387Y262200D01* X446758Y261467D01* X448245Y261016D01* X449791Y260863D01* X451338Y261016D01* X452825Y261467D01* X454196Y262200D01* X455397Y263186D01* X456383Y264387D01* X457116Y265757D01* X457567Y267245D01* X457719Y268791D01* X457567Y270338D01* X457116Y271825D01* X456383Y273196D01* X455397Y274397D01* X454196Y275383D01* X452825Y276116D01* X451338Y276567D01* X449791Y276719D01* D02* G37* G36* X327744D02* X326197Y276567D01* X324710Y276116D01* X323340Y275383D01* X322138Y274397D01* X321152Y273196D01* X320420Y271825D01* X319968Y270338D01* X319816Y268791D01* X319968Y267245D01* X320420Y265757D01* X321152Y264387D01* X322138Y263186D01* X323340Y262200D01* X324710Y261467D01* X326197Y261016D01* X327744Y260863D01* X329291Y261016D01* X330778Y261467D01* X332149Y262200D01* X333350Y263186D01* X334336Y264387D01* X335068Y265757D01* X335520Y267245D01* X335672Y268791D01* X335520Y270338D01* X335068Y271825D01* X334336Y273196D01* X333350Y274397D01* X332149Y275383D01* X330778Y276116D01* X329291Y276567D01* X327744Y276719D01* D02* G37* G36* X389744Y257244D02* X380744D01* Y248244D01* X380744Y248244D01* X390100D01* Y256888D01* X389744Y257244D01* D02* G37* G36* X395244Y257283D02* X394069Y257128D01* X392975Y256675D01* X392035Y255953D01* X391313Y255013D01* X390860Y253919D01* X390705Y252744D01* X390860Y251569D01* X391313Y250475D01* X392035Y249535D01* X392975Y248813D01* X394069Y248360D01* X395244Y248205D01* X396419Y248360D01* X397513Y248813D01* X398453Y249535D01* X399175Y250475D01* X399628Y251569D01* X399783Y252744D01* X399628Y253919D01* X399175Y255013D01* X398453Y255953D01* X397513Y256675D01* X396419Y257128D01* X395244Y257283D01* D02* G37* G36* X316544Y256844D02* X307544D01* Y247844D01* X316544D01* Y256844D01* D02* G37* G36* X463500Y245739D02* X462325Y245584D01* X461231Y245131D01* X460291Y244409D01* X459569Y243469D01* X459116Y242375D01* X458961Y241200D01* X459116Y240025D01* X459569Y238931D01* X460291Y237991D01* X461231Y237269D01* X462325Y236816D01* X463500Y236661D01* X464675Y236816D01* X465769Y237269D01* X466709Y237991D01* X467431Y238931D01* X467884Y240025D01* X468039Y241200D01* X467884Y242375D01* X467431Y243469D01* X466709Y244409D01* X465769Y245131D01* X464675Y245584D01* X463500Y245739D01* D02* G37* G36* X370388Y233744D02* X369744D01* Y231244D01* X370388D01* X370316Y231603D01* X369957Y232141D01* X369870Y232494D01* X369957Y232847D01* X370316Y233386D01* X370388Y233744D01* D02* G37* G36* X463500Y235739D02* X462325Y235584D01* X461231Y235131D01* X460291Y234409D01* X460212Y234307D01* X459569Y233469D01* X459116Y232375D01* X458961Y231200D01* X459116Y230025D01* X459569Y228931D01* X460291Y227991D01* X461231Y227269D01* X462325Y226816D01* X463500Y226661D01* X464675Y226816D01* X465769Y227269D01* X466709Y227991D01* X467431Y228931D01* X467884Y230025D01* X468039Y231200D01* X467884Y232375D01* X467431Y233469D01* X466788Y234307D01* X466709Y234409D01* X465769Y235131D01* X464675Y235584D01* X463500Y235739D01* D02* G37* G36* Y225739D02* X462325Y225584D01* X461231Y225131D01* X460291Y224409D01* X459569Y223469D01* X459116Y222375D01* X458961Y221200D01* X459116Y220025D01* X459569Y218931D01* X460291Y217991D01* X461231Y217269D01* X462325Y216816D01* X463500Y216661D01* X464675Y216816D01* X465769Y217269D01* X466709Y217991D01* X467431Y218931D01* X467884Y220025D01* X468039Y221200D01* X467884Y222375D01* X467431Y223469D01* X466709Y224409D01* X465769Y225131D01* X464675Y225584D01* X463500Y225739D01* D02* G37* G36* X464000Y215673D02* Y211700D01* X467973D01* X467884Y212375D01* X467431Y213469D01* X466709Y214409D01* X465769Y215131D01* X464675Y215584D01* X464000Y215673D01* D02* G37* G36* X463000D02* X462325Y215584D01* X461231Y215131D01* X460291Y214409D01* X459569Y213469D01* X459116Y212375D01* X459027Y211700D01* X463000D01* Y215673D01* D02* G37* G36* X316000Y207344D02* X313508D01* Y206728D01* X314287D01* X315011Y206823D01* X315685Y207103D01* X316000Y207344D01* D02* G37* G36* X312508D02* X310016D01* X310331Y207103D01* X311005Y206823D01* X311728Y206728D01* X312508D01* Y207344D01* D02* G37* G36* X467973Y210700D02* X464000D01* Y206727D01* X464675Y206816D01* X465769Y207269D01* X466709Y207991D01* X467431Y208931D01* X467884Y210025D01* X467973Y210700D01* D02* G37* G36* X463000D02* X459027D01* X459116Y210025D01* X459569Y208931D01* X460291Y207991D01* X461231Y207269D01* X462325Y206816D01* X463000Y206727D01* Y210700D01* D02* G37* G36* X326655Y207344D02* X324531D01* Y206087D01* X326926D01* Y206177D01* X326828Y206926D01* X326655Y207344D01* D02* G37* G36* X323531D02* X321408D01* X321235Y206926D01* X321136Y206177D01* Y206087D01* X323531D01* Y207344D01* D02* G37* G36* X453400Y207344D02* Y205700D01* X455044D01* X454972Y206058D01* X454486Y206786D01* X453758Y207272D01* X453400Y207344D01* D02* G37* G36* X452400D02* X452042Y207272D01* X451314Y206786D01* X450828Y206058D01* X450756Y205700D01* X452400D01* Y207344D01* D02* G37* G36* X455044Y204700D02* X453400D01* Y203056D01* X453758Y203128D01* X454486Y203614D01* X454972Y204342D01* X455044Y204700D01* D02* G37* G36* X452400D02* X450756D01* X450828Y204342D01* X451314Y203614D01* X452042Y203128D01* X452400Y203056D01* Y204700D01* D02* G37* G36* X326926Y205087D02* X324531D01* Y202167D01* X324781Y202200D01* X325479Y202489D01* X326078Y202949D01* X326538Y203549D01* X326828Y204247D01* X326926Y204996D01* Y205087D01* D02* G37* G36* X323531D02* X321136D01* Y204996D01* X321235Y204247D01* X321524Y203549D01* X321984Y202949D01* X322584Y202489D01* X323282Y202200D01* X323531Y202167D01* Y205087D01* D02* G37* G36* Y189321D02* X323282Y189288D01* X322584Y188999D01* X321984Y188539D01* X321524Y187939D01* X321235Y187241D01* X321136Y186492D01* Y186401D01* X323531D01* Y189321D01* D02* G37* G36* X342425Y184016D02* X342063D01* X341925Y184016D01* X337110D01* Y182570D01* X336360D01* X336186Y182830D01* X335458Y183316D01* X334600Y183487D01* X333742Y183316D01* X333014Y182830D01* X332528Y182102D01* X332357Y181244D01* X332528Y180386D01* X333014Y179658D01* X333742Y179172D01* X334600Y179001D01* X335458Y179172D01* X336186Y179658D01* X336360Y179919D01* X337110D01* Y178472D01* X341925D01* X342063Y178472D01* X342425D01* X342563Y178472D01* X344402D01* Y181244D01* Y184016D01* X342563D01* X342425Y184016D01* D02* G37* G36* X314287Y184760D02* X313508D01* Y182464D01* X317017D01* X316988Y182688D01* X316708Y183362D01* X316264Y183941D01* X315685Y184385D01* X315011Y184665D01* X314287Y184760D01* D02* G37* G36* X312508D02* X311728D01* X311005Y184665D01* X310331Y184385D01* X309752Y183941D01* X309307Y183362D01* X309028Y182688D01* X308998Y182464D01* X312508D01* Y184760D01* D02* G37* G36* X345402Y184016D02* Y181744D01* X347378D01* Y184016D01* X345402D01* D02* G37* G36* X317017Y181464D02* X313508D01* Y179169D01* X314287D01* X315011Y179264D01* X315685Y179543D01* X316264Y179988D01* X316708Y180567D01* X316988Y181241D01* X317017Y181464D01* D02* G37* G36* X312508D02* X308998D01* X309028Y181241D01* X309307Y180567D01* X309752Y179988D01* X310331Y179543D01* X311005Y179264D01* X311728Y179169D01* X312508D01* Y181464D01* D02* G37* G36* X347378Y180744D02* X345402D01* Y178472D01* X347378D01* Y180744D01* D02* G37* G36* X449244Y172488D02* Y170844D01* X450888D01* X450816Y171203D01* X450330Y171930D01* X449603Y172416D01* X449244Y172488D01* D02* G37* G36* X448244D02* X447886Y172416D01* X447158Y171930D01* X446672Y171203D01* X446600Y170844D01* X448244D01* Y172488D01* D02* G37* G36* X450888Y169844D02* X449244D01* Y168201D01* X449603Y168272D01* X450330Y168758D01* X450816Y169486D01* X450888Y169844D01* D02* G37* G36* X448244D02* X446600D01* X446672Y169486D01* X447158Y168758D01* X447886Y168272D01* X448244Y168201D01* Y169844D01* D02* G37* G36* X463500Y175739D02* X462325Y175584D01* X461231Y175131D01* X460291Y174409D01* X459569Y173469D01* X459116Y172375D01* X458961Y171200D01* X459116Y170025D01* X459569Y168931D01* X460291Y167991D01* X461231Y167269D01* X462325Y166816D01* X463500Y166661D01* X464675Y166816D01* X465769Y167269D01* X466709Y167991D01* X467431Y168931D01* X467884Y170025D01* X468039Y171200D01* X467884Y172375D01* X467431Y173469D01* X466709Y174409D01* X465769Y175131D01* X464675Y175584D01* X463500Y175739D01* D02* G37* G36* X468000Y165700D02* X464000D01* Y161700D01* X468000D01* Y165700D01* D02* G37* G36* X463000D02* X459000D01* Y161700D01* X463000D01* Y165700D01* D02* G37* G36* X468000Y160700D02* X464000D01* Y156700D01* X468000D01* Y160700D01* D02* G37* G36* X463000D02* X459000D01* Y156700D01* X463000D01* Y160700D01* D02* G37* G36* X423118Y150888D02* Y149244D01* X424762D01* X424690Y149602D01* X424204Y150330D01* X423476Y150816D01* X423118Y150888D01* D02* G37* G36* X422118D02* X421760Y150816D01* X421032Y150330D01* X420546Y149602D01* X420474Y149244D01* X422118D01* Y150888D01* D02* G37* G36* X424762Y148244D02* X423118D01* Y146600D01* X423476Y146672D01* X424204Y147158D01* X424690Y147886D01* X424762Y148244D01* D02* G37* G36* X422118D02* X420474D01* X420546Y147886D01* X421032Y147158D01* X421760Y146672D01* X422118Y146600D01* Y148244D01* D02* G37* G36* X449791Y154672D02* X448245Y154520D01* X446758Y154069D01* X445387Y153336D01* X444185Y152350D01* X443200Y151148D01* X442467Y149778D01* X442016Y148291D01* X441863Y146744D01* X442016Y145197D01* X442467Y143710D01* X443200Y142340D01* X444185Y141138D01* X445387Y140152D01* X446758Y139419D01* X448245Y138968D01* X449791Y138816D01* X451338Y138968D01* X452825Y139419D01* X454196Y140152D01* X455397Y141138D01* X456383Y142340D01* X457116Y143710D01* X457567Y145197D01* X457719Y146744D01* X457567Y148291D01* X457116Y149778D01* X456383Y151148D01* X455397Y152350D01* X454196Y153336D01* X452825Y154069D01* X451338Y154520D01* X449791Y154672D01* D02* G37* G36* X327744D02* X326197Y154520D01* X324710Y154069D01* X323340Y153336D01* X322138Y152350D01* X321152Y151148D01* X320420Y149778D01* X319968Y148291D01* X319816Y146744D01* X319968Y145197D01* X320420Y143710D01* X321152Y142340D01* X322138Y141138D01* X323340Y140152D01* X324710Y139419D01* X326197Y138968D01* X327744Y138816D01* X329291Y138968D01* X330778Y139419D01* X332149Y140152D01* X333350Y141138D01* X334336Y142340D01* X335068Y143710D01* X335520Y145197D01* X335672Y146744D01* X335520Y148291D01* X335068Y149778D01* X334336Y151148D01* X333350Y152350D01* X332149Y153336D01* X330778Y154069D01* X329291Y154520D01* X327744Y154672D01* D02* G37* G36* X423244Y131088D02* Y129445D01* X424888D01* X424816Y129803D01* X424330Y130531D01* X423602Y131017D01* X423244Y131088D01* D02* G37* G36* X422244D02* X421886Y131017D01* X421158Y130531D01* X420672Y129803D01* X420600Y129445D01* X422244D01* Y131088D01* D02* G37* G36* X387244D02* Y129445D01* X388888D01* X388816Y129803D01* X388330Y130531D01* X387602Y131017D01* X387244Y131088D01* D02* G37* G36* X386244D02* X385886Y131017D01* X385158Y130531D01* X384672Y129803D01* X384600Y129445D01* X386244D01* Y131088D01* D02* G37* G36* X332244Y130888D02* Y129244D01* X333888D01* X333816Y129603D01* X333330Y130330D01* X332603Y130816D01* X332244Y130888D01* D02* G37* G36* X331244D02* X330886Y130816D01* X330158Y130330D01* X329672Y129603D01* X329601Y129244D01* X331244D01* Y130888D01* D02* G37* G36* X424888Y128445D02* X423244D01* Y126801D01* X423602Y126873D01* X424330Y127359D01* X424816Y128086D01* X424888Y128445D01* D02* G37* G36* X422244D02* X420600D01* X420672Y128086D01* X421158Y127359D01* X421886Y126873D01* X422244Y126801D01* Y128445D01* D02* G37* G36* X388888D02* X387244D01* Y126801D01* X387602Y126873D01* X388330Y127359D01* X388816Y128086D01* X388888Y128445D01* D02* G37* G36* X386244D02* X384600D01* X384672Y128086D01* X385158Y127359D01* X385886Y126873D01* X386244Y126801D01* Y128445D01* D02* G37* G36* X220244Y280744D02* X211244D01* Y271744D01* X220244D01* Y274207D01* Y278281D01* Y280744D01* D02* G37* G36* X235744Y281224D02* X234455Y281054D01* X233254Y280557D01* X232223Y279765D01* X231432Y278734D01* X230934Y277533D01* X230764Y276244D01* X230934Y274955D01* X231432Y273754D01* X232223Y272723D01* X233254Y271932D01* X234455Y271434D01* X235744Y271264D01* X237033Y271434D01* X238234Y271932D01* X239265Y272723D01* X240056Y273754D01* X240554Y274955D01* X240724Y276244D01* X240554Y277533D01* X240056Y278734D01* X239265Y279765D01* X238234Y280557D01* X237033Y281054D01* X235744Y281224D01* D02* G37* G36* X269791Y276719D02* X268245Y276567D01* X266757Y276116D01* X265387Y275383D01* X264186Y274397D01* X263200Y273196D01* X262467Y271825D01* X262016Y270338D01* X261863Y268791D01* X262016Y267245D01* X262467Y265757D01* X263200Y264387D01* X264186Y263186D01* X265387Y262200D01* X266757Y261467D01* X268245Y261016D01* X269791Y260863D01* X271338Y261016D01* X272825Y261467D01* X274196Y262200D01* X275397Y263186D01* X276383Y264387D01* X277116Y265757D01* X277567Y267245D01* X277719Y268791D01* X277567Y270338D01* X277116Y271825D01* X276383Y273196D01* X275397Y274397D01* X274196Y275383D01* X272825Y276116D01* X271338Y276567D01* X269791Y276719D01* D02* G37* G36* X147744D02* X146197Y276567D01* X144710Y276116D01* X143340Y275383D01* X142138Y274397D01* X141152Y273196D01* X140419Y271825D01* X139968Y270338D01* X139816Y268791D01* X139968Y267245D01* X140419Y265757D01* X141152Y264387D01* X142138Y263186D01* X143340Y262200D01* X144710Y261467D01* X146197Y261016D01* X147744Y260863D01* X149291Y261016D01* X150778Y261467D01* X152148Y262200D01* X153350Y263186D01* X154336Y264387D01* X155069Y265757D01* X155520Y267245D01* X155672Y268791D01* X155520Y270338D01* X155069Y271825D01* X154336Y273196D01* X153350Y274397D01* X152148Y275383D01* X150778Y276116D01* X149291Y276567D01* X147744Y276719D01* D02* G37* G36* X209744Y257244D02* X200744D01* Y248244D01* X200744Y248244D01* X210100D01* Y256888D01* X209744Y257244D01* D02* G37* G36* X215244Y257283D02* X214069Y257128D01* X212975Y256675D01* X212035Y255953D01* X211313Y255013D01* X210860Y253919D01* X210705Y252744D01* X210860Y251569D01* X211313Y250475D01* X212035Y249535D01* X212975Y248813D01* X214069Y248360D01* X215244Y248205D01* X216419Y248360D01* X217513Y248813D01* X218453Y249535D01* X219175Y250475D01* X219628Y251569D01* X219783Y252744D01* X219628Y253919D01* X219175Y255013D01* X218453Y255953D01* X217513Y256675D01* X216419Y257128D01* X215244Y257283D01* D02* G37* G36* X136544Y256844D02* X127544D01* Y247844D01* X136544D01* Y256844D01* D02* G37* G36* X283500Y245739D02* X282325Y245584D01* X281231Y245131D01* X280291Y244409D01* X279569Y243469D01* X279116Y242375D01* X278961Y241200D01* X279116Y240025D01* X279569Y238931D01* X280291Y237991D01* X281231Y237269D01* X282325Y236816D01* X283500Y236661D01* X284675Y236816D01* X285769Y237269D01* X286709Y237991D01* X287431Y238931D01* X287884Y240025D01* X288039Y241200D01* X287884Y242375D01* X287431Y243469D01* X286709Y244409D01* X285769Y245131D01* X284675Y245584D01* X283500Y245739D01* D02* G37* G36* X190388Y233744D02* X189744D01* Y231244D01* X190388D01* X190316Y231603D01* X189957Y232141D01* X189870Y232494D01* X189957Y232847D01* X190316Y233386D01* X190388Y233744D01* D02* G37* G36* X283500Y235739D02* X282325Y235584D01* X281231Y235131D01* X280291Y234409D01* X280212Y234307D01* X279569Y233469D01* X279116Y232375D01* X278961Y231200D01* X279116Y230025D01* X279569Y228931D01* X280291Y227991D01* X281231Y227269D01* X282325Y226816D01* X283500Y226661D01* X284675Y226816D01* X285769Y227269D01* X286709Y227991D01* X287431Y228931D01* X287884Y230025D01* X288039Y231200D01* X287884Y232375D01* X287431Y233469D01* X286788Y234307D01* X286709Y234409D01* X285769Y235131D01* X284675Y235584D01* X283500Y235739D01* D02* G37* G36* Y225739D02* X282325Y225584D01* X281231Y225131D01* X280291Y224409D01* X279569Y223469D01* X279116Y222375D01* X278961Y221200D01* X279116Y220025D01* X279569Y218931D01* X280291Y217991D01* X281231Y217269D01* X282325Y216816D01* X283500Y216661D01* X284675Y216816D01* X285769Y217269D01* X286709Y217991D01* X287431Y218931D01* X287884Y220025D01* X288039Y221200D01* X287884Y222375D01* X287431Y223469D01* X286709Y224409D01* X285769Y225131D01* X284675Y225584D01* X283500Y225739D01* D02* G37* G36* X284000Y215673D02* Y211700D01* X287973D01* X287884Y212375D01* X287431Y213469D01* X286709Y214409D01* X285769Y215131D01* X284675Y215584D01* X284000Y215673D01* D02* G37* G36* X283000D02* X282325Y215584D01* X281231Y215131D01* X280291Y214409D01* X279569Y213469D01* X279116Y212375D01* X279027Y211700D01* X283000D01* Y215673D01* D02* G37* G36* X136000Y207344D02* X133508D01* Y206728D01* X134287D01* X135011Y206823D01* X135685Y207103D01* X136000Y207344D01* D02* G37* G36* X132508D02* X130016D01* X130331Y207103D01* X131005Y206823D01* X131728Y206728D01* X132508D01* Y207344D01* D02* G37* G36* X287973Y210700D02* X284000D01* Y206727D01* X284675Y206816D01* X285769Y207269D01* X286709Y207991D01* X287431Y208931D01* X287884Y210025D01* X287973Y210700D01* D02* G37* G36* X283000D02* X279027D01* X279116Y210025D01* X279569Y208931D01* X280291Y207991D01* X281231Y207269D01* X282325Y206816D01* X283000Y206727D01* Y210700D01* D02* G37* G36* X146655Y207344D02* X144531D01* Y206087D01* X146926D01* Y206177D01* X146828Y206926D01* X146655Y207344D01* D02* G37* G36* X143531D02* X141408D01* X141235Y206926D01* X141137Y206177D01* Y206087D01* X143531D01* Y207344D01* D02* G37* G36* X273400Y207344D02* Y205700D01* X275044D01* X274972Y206058D01* X274486Y206786D01* X273758Y207272D01* X273400Y207344D01* D02* G37* G36* X272400D02* X272042Y207272D01* X271314Y206786D01* X270828Y206058D01* X270756Y205700D01* X272400D01* Y207344D01* D02* G37* G36* X275044Y204700D02* X273400D01* Y203056D01* X273758Y203128D01* X274486Y203614D01* X274972Y204342D01* X275044Y204700D01* D02* G37* G36* X272400D02* X270756D01* X270828Y204342D01* X271314Y203614D01* X272042Y203128D01* X272400Y203056D01* Y204700D01* D02* G37* G36* X146926Y205087D02* X144531D01* Y202167D01* X144781Y202200D01* X145479Y202489D01* X146078Y202949D01* X146538Y203549D01* X146828Y204247D01* X146926Y204996D01* Y205087D01* D02* G37* G36* X143531D02* X141137D01* Y204996D01* X141235Y204247D01* X141524Y203549D01* X141984Y202949D01* X142584Y202489D01* X143282Y202200D01* X143531Y202167D01* Y205087D01* D02* G37* G36* Y189321D02* X143282Y189288D01* X142584Y188999D01* X141984Y188539D01* X141524Y187939D01* X141235Y187241D01* X141137Y186492D01* Y186401D01* X143531D01* Y189321D01* D02* G37* G36* X162425Y184016D02* X162063D01* X161925Y184016D01* X157110D01* Y182570D01* X156360D01* X156186Y182830D01* X155458Y183316D01* X154600Y183487D01* X153742Y183316D01* X153014Y182830D01* X152528Y182102D01* X152357Y181244D01* X152528Y180386D01* X153014Y179658D01* X153742Y179172D01* X154600Y179001D01* X155458Y179172D01* X156186Y179658D01* X156360Y179919D01* X157110D01* Y178472D01* X161925D01* X162063Y178472D01* X162425D01* X162563Y178472D01* X164402D01* Y181244D01* Y184016D01* X162563D01* X162425Y184016D01* D02* G37* G36* X134287Y184760D02* X133508D01* Y182464D01* X137017D01* X136988Y182688D01* X136708Y183362D01* X136264Y183941D01* X135685Y184385D01* X135011Y184665D01* X134287Y184760D01* D02* G37* G36* X132508D02* X131728D01* X131005Y184665D01* X130331Y184385D01* X129752Y183941D01* X129307Y183362D01* X129028Y182688D01* X128998Y182464D01* X132508D01* Y184760D01* D02* G37* G36* X165402Y184016D02* Y181744D01* X167378D01* Y184016D01* X165402D01* D02* G37* G36* X137017Y181464D02* X133508D01* Y179169D01* X134287D01* X135011Y179264D01* X135685Y179543D01* X136264Y179988D01* X136708Y180567D01* X136988Y181241D01* X137017Y181464D01* D02* G37* G36* X132508D02* X128998D01* X129028Y181241D01* X129307Y180567D01* X129752Y179988D01* X130331Y179543D01* X131005Y179264D01* X131728Y179169D01* X132508D01* Y181464D01* D02* G37* G36* X167378Y180744D02* X165402D01* Y178472D01* X167378D01* Y180744D01* D02* G37* G36* X269244Y172488D02* Y170844D01* X270888D01* X270816Y171203D01* X270330Y171930D01* X269602Y172416D01* X269244Y172488D01* D02* G37* G36* X268244D02* X267886Y172416D01* X267158Y171930D01* X266672Y171203D01* X266600Y170844D01* X268244D01* Y172488D01* D02* G37* G36* X270888Y169844D02* X269244D01* Y168201D01* X269602Y168272D01* X270330Y168758D01* X270816Y169486D01* X270888Y169844D01* D02* G37* G36* X268244D02* X266600D01* X266672Y169486D01* X267158Y168758D01* X267886Y168272D01* X268244Y168201D01* Y169844D01* D02* G37* G36* X283500Y175739D02* X282325Y175584D01* X281231Y175131D01* X280291Y174409D01* X279569Y173469D01* X279116Y172375D01* X278961Y171200D01* X279116Y170025D01* X279569Y168931D01* X280291Y167991D01* X281231Y167269D01* X282325Y166816D01* X283500Y166661D01* X284675Y166816D01* X285769Y167269D01* X286709Y167991D01* X287431Y168931D01* X287884Y170025D01* X288039Y171200D01* X287884Y172375D01* X287431Y173469D01* X286709Y174409D01* X285769Y175131D01* X284675Y175584D01* X283500Y175739D01* D02* G37* G36* X288000Y165700D02* X284000D01* Y161700D01* X288000D01* Y165700D01* D02* G37* G36* X283000D02* X279000D01* Y161700D01* X283000D01* Y165700D01* D02* G37* G36* X288000Y160700D02* X284000D01* Y156700D01* X288000D01* Y160700D01* D02* G37* G36* X283000D02* X279000D01* Y156700D01* X283000D01* Y160700D01* D02* G37* G36* X243118Y150888D02* Y149244D01* X244762D01* X244690Y149602D01* X244204Y150330D01* X243476Y150816D01* X243118Y150888D01* D02* G37* G36* X242118D02* X241760Y150816D01* X241032Y150330D01* X240546Y149602D01* X240474Y149244D01* X242118D01* Y150888D01* D02* G37* G36* X244762Y148244D02* X243118D01* Y146600D01* X243476Y146672D01* X244204Y147158D01* X244690Y147886D01* X244762Y148244D01* D02* G37* G36* X242118D02* X240474D01* X240546Y147886D01* X241032Y147158D01* X241760Y146672D01* X242118Y146600D01* Y148244D01* D02* G37* G36* X269791Y154672D02* X268245Y154520D01* X266757Y154069D01* X265387Y153336D01* X264186Y152350D01* X263200Y151148D01* X262467Y149778D01* X262016Y148291D01* X261863Y146744D01* X262016Y145197D01* X262467Y143710D01* X263200Y142340D01* X264186Y141138D01* X265387Y140152D01* X266757Y139419D01* X268245Y138968D01* X269791Y138816D01* X271338Y138968D01* X272825Y139419D01* X274196Y140152D01* X275397Y141138D01* X276383Y142340D01* X277116Y143710D01* X277567Y145197D01* X277719Y146744D01* X277567Y148291D01* X277116Y149778D01* X276383Y151148D01* X275397Y152350D01* X274196Y153336D01* X272825Y154069D01* X271338Y154520D01* X269791Y154672D01* D02* G37* G36* X147744D02* X146197Y154520D01* X144710Y154069D01* X143340Y153336D01* X142138Y152350D01* X141152Y151148D01* X140419Y149778D01* X139968Y148291D01* X139816Y146744D01* X139968Y145197D01* X140419Y143710D01* X141152Y142340D01* X142138Y141138D01* X143340Y140152D01* X144710Y139419D01* X146197Y138968D01* X147744Y138816D01* X149291Y138968D01* X150778Y139419D01* X152148Y140152D01* X153350Y141138D01* X154336Y142340D01* X155069Y143710D01* X155520Y145197D01* X155672Y146744D01* X155520Y148291D01* X155069Y149778D01* X154336Y151148D01* X153350Y152350D01* X152148Y153336D01* X150778Y154069D01* X149291Y154520D01* X147744Y154672D01* D02* G37* G36* X243244Y131088D02* Y129445D01* X244888D01* X244816Y129803D01* X244330Y130531D01* X243602Y131017D01* X243244Y131088D01* D02* G37* G36* X242244D02* X241886Y131017D01* X241158Y130531D01* X240672Y129803D01* X240600Y129445D01* X242244D01* Y131088D01* D02* G37* G36* X207244D02* Y129445D01* X208888D01* X208816Y129803D01* X208330Y130531D01* X207603Y131017D01* X207244Y131088D01* D02* G37* G36* X206244D02* X205886Y131017D01* X205158Y130531D01* X204672Y129803D01* X204601Y129445D01* X206244D01* Y131088D01* D02* G37* G36* X152244Y130888D02* Y129244D01* X153888D01* X153816Y129603D01* X153330Y130330D01* X152603Y130816D01* X152244Y130888D01* D02* G37* G36* X151244D02* X150886Y130816D01* X150158Y130330D01* X149672Y129603D01* X149601Y129244D01* X151244D01* Y130888D01* D02* G37* G36* X244888Y128445D02* X243244D01* Y126801D01* X243602Y126873D01* X244330Y127359D01* X244816Y128086D01* X244888Y128445D01* D02* G37* G36* X242244D02* X240600D01* X240672Y128086D01* X241158Y127359D01* X241886Y126873D01* X242244Y126801D01* Y128445D01* D02* G37* G36* X208888D02* X207244D01* Y126801D01* X207603Y126873D01* X208330Y127359D01* X208816Y128086D01* X208888Y128445D01* D02* G37* G36* X206244D02* X204601D01* X204672Y128086D01* X205158Y127359D01* X205886Y126873D01* X206244Y126801D01* Y128445D01* D02* G37* G36* X421319Y232878D02* X419244D01* Y230705D01* X421319D01* Y232878D01* D02* G37* G36* X418244D02* X416169D01* Y230705D01* X418244D01* Y232878D01* D02* G37* G36* X424244Y232378D02* X422169D01* Y230205D01* X424244D01* Y232378D01* D02* G37* G36* X404900Y229388D02* Y227744D01* X406544D01* X406472Y228102D01* X405986Y228830D01* X405258Y229316D01* X404900Y229388D01* D02* G37* G36* X403900D02* X403542Y229316D01* X402814Y228830D01* X402328Y228102D01* X402256Y227744D01* X403900D01* Y229388D01* D02* G37* G36* X406544Y226744D02* X404900D01* Y225100D01* X405258Y225172D01* X405986Y225658D01* X406472Y226386D01* X406544Y226744D01* D02* G37* G36* X241319Y232878D02* X239244D01* Y230705D01* X241319D01* Y232878D01* D02* G37* G36* X238244D02* X236169D01* Y230705D01* X238244D01* Y232878D01* D02* G37* G36* X244244Y232378D02* X242169D01* Y230205D01* X244244D01* Y232378D01* D02* G37* G36* X224900Y229388D02* Y227744D01* X226544D01* X226472Y228102D01* X225986Y228830D01* X225258Y229316D01* X224900Y229388D01* D02* G37* G36* X223900D02* X223542Y229316D01* X222814Y228830D01* X222328Y228102D01* X222256Y227744D01* X223900D01* Y229388D01* D02* G37* G36* X226544Y226744D02* X224900D01* Y225100D01* X225258Y225172D01* X225986Y225658D01* X226472Y226386D01* X226544Y226744D01* D02* G37* G36* X433244Y226783D02* X431169D01* Y224610D01* X433244D01* Y226783D01* D02* G37* G36* X253244D02* X251169D01* Y224610D01* X253244D01* Y226783D01* D02* G37* G36* X383244Y180388D02* X382886Y180316D01* X382158Y179830D01* X381672Y179103D01* X381600Y178744D01* X383244D01* Y180388D01* D02* G37* G36* X203244D02* X202886Y180316D01* X202158Y179830D01* X201672Y179103D01* X201601Y178744D01* X203244D01* Y180388D01* D02* G37* G36* X390783Y175819D02* X388610D01* Y173744D01* X390783D01* Y175819D01* D02* G37* G36* Y172744D02* X388610D01* Y170669D01* X390783D01* Y172744D01* D02* G37* G36* X374878Y170819D02* X372705D01* Y168744D01* X374878D01* Y170819D01* D02* G37* G36* X382900Y167388D02* Y165744D01* X384544D01* X384472Y166103D01* X383986Y166830D01* X383258Y167316D01* X382900Y167388D01* D02* G37* G36* X381900D02* X381541Y167316D01* X380814Y166830D01* X380328Y166103D01* X380256Y165744D01* X381900D01* Y167388D01* D02* G37* G36* X374878Y167744D02* X372705D01* Y165669D01* X374878D01* Y167744D01* D02* G37* G36* X384544Y164744D02* X382900D01* Y163101D01* X383258Y163172D01* X383986Y163658D01* X384472Y164386D01* X384544Y164744D01* D02* G37* G36* X381900D02* X380256D01* X380328Y164386D01* X380814Y163658D01* X381541Y163172D01* X381900Y163101D01* Y164744D01* D02* G37* G36* X210783Y175819D02* X208610D01* Y173744D01* X210783D01* Y175819D01* D02* G37* G36* Y172744D02* X208610D01* Y170669D01* X210783D01* Y172744D01* D02* G37* G36* X194878Y170819D02* X192705D01* Y168744D01* X194878D01* Y170819D01* D02* G37* G36* X202900Y167388D02* Y165744D01* X204544D01* X204472Y166103D01* X203986Y166830D01* X203258Y167316D01* X202900Y167388D01* D02* G37* G36* X201900D02* X201541Y167316D01* X200814Y166830D01* X200328Y166103D01* X200256Y165744D01* X201900D01* Y167388D01* D02* G37* G36* X194878Y167744D02* X192705D01* Y165669D01* X194878D01* Y167744D01* D02* G37* G36* X204544Y164744D02* X202900D01* Y163101D01* X203258Y163172D01* X203986Y163658D01* X204472Y164386D01* X204544Y164744D01* D02* G37* G36* X201900D02* X200256D01* X200328Y164386D01* X200814Y163658D01* X201541Y163172D01* X201900Y163101D01* Y164744D01* D02* G37* %LPD*% D13* X211283Y173244D02* D03* X216205D02* D03* X207784Y161744D02* D03* X212705D02* D03* X207784Y156744D02* D03* X212705D02* D03* X188705Y193244D02* D03* X183783D02* D03* X213205Y227244D02* D03* X208283D02* D03* X211205Y237244D02* D03* X206283D02* D03* X211205Y243244D02* D03* X206283D02* D03* X203705Y153744D02* D03* X198783D02* D03* X198283Y159244D02* D03* X203205D02* D03* X192205Y168244D02* D03* X187284D02* D03* X391283Y173244D02* D03* X396205D02* D03* X387784Y161744D02* D03* X392705D02* D03* X387784Y156744D02* D03* X392705D02* D03* X368705Y193244D02* D03* X363783D02* D03* X393205Y227244D02* D03* X388283D02* D03* X391205Y237244D02* D03* X386283D02* D03* X391205Y243244D02* D03* X386283D02* D03* X383705Y153744D02* D03* X378783D02* D03* X378283Y159244D02* D03* X383205D02* D03* X372205Y168244D02* D03* X367284D02* D03* X211283Y353244D02* D03* X216205D02* D03* X207784Y341744D02* D03* X212705D02* D03* X207784Y336744D02* D03* X212705D02* D03* X188705Y373244D02* D03* X183783D02* D03* X213205Y407244D02* D03* X208283D02* D03* X211205Y417244D02* D03* X206283D02* D03* X211205Y423244D02* D03* X206283D02* D03* X203705Y333744D02* D03* X198783D02* D03* X198283Y339244D02* D03* X203205D02* D03* X192205Y348244D02* D03* X187284D02* D03* X391283Y353244D02* D03* X396205D02* D03* X387784Y341744D02* D03* X392705D02* D03* X387784Y336744D02* D03* X392705D02* D03* X368705Y373244D02* D03* X363783D02* D03* X393205Y407244D02* D03* X388283D02* D03* X391205Y417244D02* D03* X386283D02* D03* X391205Y423244D02* D03* X386283D02* D03* X383705Y333744D02* D03* X378783D02* D03* X378283Y339244D02* D03* X383205D02* D03* X372205Y348244D02* D03* X367284D02* D03* D24* X249244Y203587D02* D03* Y208902D02* D03* X258744Y206087D02* D03* Y211402D02* D03* X249744Y170087D02* D03* Y175402D02* D03* X259244Y172587D02* D03* Y177902D02* D03* X258744Y190087D02* D03* Y195402D02* D03* X249244Y187087D02* D03* Y192402D02* D03* X429244Y203587D02* D03* Y208902D02* D03* X438744Y206087D02* D03* Y211402D02* D03* X429744Y170087D02* D03* Y175402D02* D03* X439244Y172587D02* D03* Y177902D02* D03* X438744Y190087D02* D03* Y195402D02* D03* X429244Y187087D02* D03* Y192402D02* D03* X249244Y383587D02* D03* Y388902D02* D03* X258744Y386087D02* D03* Y391402D02* D03* X249744Y350087D02* D03* Y355402D02* D03* X259244Y352587D02* D03* Y357902D02* D03* X258744Y370087D02* D03* Y375402D02* D03* X249244Y367087D02* D03* Y372402D02* D03* X429244Y383587D02* D03* Y388902D02* D03* X438744Y386087D02* D03* Y391402D02* D03* X429744Y350087D02* D03* Y355402D02* D03* X439244Y352587D02* D03* Y357902D02* D03* X438744Y370087D02* D03* Y375402D02* D03* X429244Y367087D02* D03* Y372402D02* D03* D38* X231244Y248744D02* X235244Y252744D01* X228032Y248744D02* X231244D01* X227232Y247944D02* X228032Y248744D01* X224444Y247944D02* X227232D01* X221963Y245463D02* X224444Y247944D01* X221963Y235100D02* Y245463D01* X218208Y231344D02* X221963Y235100D01* X216688Y243244D02* X217087D01* X205900Y161744D02* X206700D01* X176244Y268744D02* X192244D01* X233941Y225283D02* X238744D01* X231200D02* X233941D01* X184152Y168244D02* X185500D01* X183500Y150072D02* Y166244D01* X169587Y162100D02* X175731Y168244D01* X169587Y162100D02* Y166576D01* X183500Y150000D02* X183572D01* X183500D02* Y150072D01* X183572Y150000D02* X184172Y149400D01* X183500Y150072D02* X183572Y150000D01* X159087Y195244D02* Y202744D01* X138400Y170088D02* X141744Y166744D01* X138400Y170088D02* Y174900D01* X150244Y186744D01* Y207744D01* X180244Y260744D02* X188244D01* X141044Y226544D02* X141144Y226644D01* X149644D01* X248517Y227283D02* X253744D01* X247300Y228500D02* X248517Y227283D01* X247300Y228500D02* Y229705D01* X249400D02* X251900Y232205D01* X253744D01* X164418Y171744D02* X169587Y166576D01* X161744Y171744D02* X164418D01* X183987Y168409D02* X184152Y168244D01* X261300Y222900D02* Y238900D01* X256100Y217700D02* X261300Y222900D01* X240000Y217700D02* X256100D01* X186244Y200656D02* X186300Y200600D01* X186244Y200656D02* Y206787D01* X222300Y172300D02* X228500Y178500D01* Y222583D01* X231200Y225283D01* X190500Y147400D02* X194100D01* X189900Y148000D02* X190500Y147400D01* X198783Y151100D02* Y153744D01* X159087Y192113D02* Y195244D01* Y192113D02* X159900Y191300D01* X173100D01* X185901Y152400D02* Y152744D01* X188715Y146771D02* X189300Y146186D01* X197900D01* X192100Y150000D02* X192600Y149500D01* X185500Y168244D02* X187284D01* X192205D02* X199400D01* X205900Y161744D01* X174901Y156600D02* Y157244D01* X154600Y181244D02* X159587D01* X181344Y250875D02* X185675D01* X164902Y179403D02* Y181244D01* X163900Y178402D02* X164902Y179403D01* X160246Y178402D02* X163900D01* X156744Y171744D02* Y174900D01* X169587Y157244D02* Y162100D01* X196244Y264744D02* X200244D01* X141244Y246244D02* X149144D01* X149244Y246344D01* X211205Y237244D02* X216587D01* X212705Y156744D02* Y161744D01* X256400Y226783D02* X258744D01* X255900Y227283D02* X256400Y226783D01* X253744Y227283D02* X255900D01* X241400Y230205D02* X241900Y229705D01* X238744Y230205D02* X241400D01* X207784Y156744D02* Y161744D01* X206700D02* X207784D01* X204200Y159244D02* X206700Y161744D01* X203205Y159244D02* X204200D01* X203205Y156700D02* Y159244D01* Y156700D02* X203705Y156200D01* Y153744D02* Y156200D01* X227361Y230205D02* X238744D01* X213205Y223558D02* Y227244D01* Y223558D02* X213862Y222900D01* Y219406D02* Y222900D01* X256400Y231705D02* X258744D01* X255900Y232205D02* X256400Y231705D01* X253744Y232205D02* X255900D01* X182504Y197079D02* Y199701D01* Y197079D02* X183783Y195800D01* Y193244D02* Y195800D01* X241900Y224783D02* X244744D01* X241400Y225283D02* X241900Y224783D01* X238744Y225283D02* X241400D01* X182244Y238744D02* Y238783D01* X185675Y242213D01* Y246544D02* X185700Y246519D01* X253700Y192402D02* X254198Y192900D01* X270200D01* X271900Y191200D01* X283500D01* X262244Y249205D02* X271800D01* X273795Y251200D01* X283500D01* X249244Y197100D02* X252000Y199856D01* Y208002D01* X251100Y208902D02* X252000Y208002D01* X249244Y208902D02* X251100D01* X258744Y195402D02* X278702D01* X279300Y196000D01* X286400D01* X288300Y194100D01* Y188200D02* Y194100D01* X286300Y186200D02* X288300Y188200D01* X262600Y186200D02* X286300D01* X259244Y182844D02* X262600Y186200D01* X259244Y177902D02* Y182844D01* X249244Y192402D02* X251100D01* X252000Y191502D01* Y175402D02* Y191502D01* X249744Y175402D02* X252000D01* X259700Y249205D02* X262244D01* X259700Y242197D02* Y249205D01* Y242197D02* X262500Y239397D01* Y220156D02* Y239397D01* X258744Y216400D02* X262500Y220156D01* X258744Y211402D02* Y216400D01* X230500Y163700D02* Y168409D01* Y163700D02* X231500Y162700D01* X252200D01* X258744Y202700D02* Y206087D01* Y195402D02* Y199100D01* X261500Y201856D01* Y210602D01* X260700Y211402D02* X261500Y210602D01* X258744Y211402D02* X260700D01* X255413Y190087D02* X258744D01* X255100Y190400D02* X255413Y190087D01* X249100Y192402D02* X249244D01* X208000Y269800D02* X210100Y267700D01* X248500Y222900D02* Y225900D01* X246300Y220700D02* X248500Y222900D01* X238900Y220700D02* X246300D01* X238900Y186044D02* X239744Y186888D01* Y189283D01* X234700Y186600D02* Y188100D01* Y186600D02* X238254Y183046D01* X244446D01* X248487Y187087D01* X272900Y205200D02* Y238483D01* X267100Y244283D02* X272900Y238483D01* X262244Y244283D02* X267100D01* X249744Y170087D02* Y171856D01* X248700Y172900D02* X249744Y171856D01* X245900Y172900D02* X248700D01* X245500Y186600D02* X245987Y187087D01* X246100Y200700D02* Y202587D01* X247100Y203587D01* X239744Y194205D02* X243500D01* X245303Y192402D01* X228900Y160100D02* Y166300D01* X227900Y167300D02* X228900Y166300D01* X227900Y167300D02* Y168900D01* X230700Y171700D01* Y211200D01* X234700Y192200D02* Y198387D01* X239900Y203587D01* X207200Y244600D02* X210100Y247500D01* X259244Y172587D02* X262300D01* X266700Y176987D01* Y181800D01* X239900Y203587D02* X247100D01* X249244D01* X245987Y187087D02* X248487D01* X249244D01* X244695Y229705D02* X248500Y225900D01* X185700Y242213D02* Y246519D01* X193800Y264500D02* X199100Y269800D01* X244695Y229705D02* X244744D01* X247300D01* X207200Y235700D02* Y244600D01* X241900Y229705D02* X244744D01* X199100Y269800D02* X208000D01* X210100Y247500D02* Y267700D01* X174901Y156600D02* X178000D01* X185901Y152400D02* X188900D01* X183500Y166244D02* X185500Y168244D01* X175731D02* X184152D01* X249100Y192402D02* Y196900D01* X245303Y192402D02* X249100D01* X251100D02* X253700D01* X249244D02* Y197100D01* X175244Y202244D02* X175401Y202087D01* X164901Y197244D02* X170087D01* X213862Y192630D02* Y196177D01* Y192630D02* X216748Y189744D01* X220244D01* X211303Y192630D02* Y196177D01* Y192630D02* X216689Y187244D01* X217744D01* X216314Y185144D02* X221644D01* X221744Y185244D01* X208744Y192714D02* X216314Y185144D01* X208744Y192714D02* Y196177D01* X216421D02* X218311D01* X223844Y190644D01* X212705Y154100D02* Y156744D01* X216561Y150244D02* X217744D01* X216874Y148144D02* X218614D01* X212705Y154100D02* X216561Y150244D01* X198783Y151100D02* X213918D01* X216874Y148144D01* X218614D02* X222300Y151830D01* Y172300D01* X226418Y152979D02* Y163000D01* X206185Y192803D02* Y196177D01* Y192803D02* X208144Y190844D01* X208614D01* X209844Y189614D01* Y184344D02* Y189614D01* X203744Y178244D02* X209844Y184344D01* X204614Y176144D02* X212744Y184274D01* Y185744D01* X208744Y219406D02* Y226783D01* X211303Y219406D02* Y224224D01* X208283Y227244D02* X208744Y226783D01* X211303Y224224D01* X213205Y227244D02* X224400D01* X227361Y230205D01* X203214Y190244D02* X203744D01* X189144Y188244D02* X199744D01* X189984Y199701D02* X198441Y191244D01* X202214D01* X203214Y190244D01* X188705Y191205D02* Y193244D01* X187283Y189783D02* X188705Y191205D01* X180862Y189783D02* X187283D01* X175401Y195244D02* X180862Y189783D01* X175401Y195244D02* Y197244D01* Y202087D01* X188144Y187244D02* X189144Y188244D01* X183244Y187244D02* X188144D01* X187284Y168244D02* Y181205D01* X187244Y181244D02* X187284Y181205D01* X170087Y197244D02* X170126D01* X184026Y183344D01* X189344Y181544D02* Y182114D01* Y181544D02* X194744Y176144D01* X204614D01* X179787Y199701D02* X182504D01* X178744Y200744D02* X179787Y199701D01* X211283Y165244D02* Y173244D01* X207784Y161744D02* X211283Y165244D01* X216205Y173244D02* Y175205D01* Y157926D02* Y173244D01* Y157926D02* X222300Y151830D01* X189744Y185244D02* X202244D01* X203244Y184244D02* X207744Y188744D01* X184026Y183344D02* X188114D01* X189344Y182114D01* X202244Y185244D02* X203244Y184244D01* X197030Y148286D02* X198770D01* X194100Y147400D02* X196144D01* X197030Y148286D01* X198770D02* X201312Y145744D01* X219184D02* X226418Y152979D01* X213244Y143744D02* Y148744D01* Y143744D02* X214744Y142244D01* X201312Y145744D02* X208274D01* X213874Y140144D01* X215614D01* X219184Y143714D01* Y145744D01* X238642Y138944D02* X243593Y143895D01* X200125Y138944D02* X238642D01* X195569Y143500D02* X200125Y138944D01* X184895Y143500D02* X195569D01* X184500Y143895D02* X184895Y143500D01* X151744Y171744D02* X152994D01* X155494D02* X156744D01* X151744D02* Y176744D01* X152744Y177744D01* X157402D01* X158495Y176651D01* X156744Y174900D02* X160246Y178402D01* X196214Y153744D02* X198783D01* X184172Y149400D02* X191870D01* X196214Y153744D01* X192600Y153100D02* X194244Y154744D01* X196244Y159244D02* X198283D01* X194244Y157244D02* X196244Y159244D01* X194244Y154744D02* Y157244D01* X224744Y243244D02* X256956D01* X261300Y238900D01* X216587Y237244D02* X219587D01* X217087Y243244D02* X219587D01* X211205D02* X216688D01* X232600Y165100D02* Y210130D01* X232800Y210330D01* Y210500D01* X240000Y217700D01* X202244Y236244D02* X204244Y234244D01* X208205D01* X211205Y237244D01* X199744Y242714D02* Y243244D01* X198744Y234244D02* Y237244D01* X201244Y239744D01* X197714Y229244D02* X201244D01* X196570Y228100D02* X197714Y229244D01* X194830Y228100D02* X196570D01* X193600Y229330D02* X194830Y228100D01* X193600Y229330D02* Y237100D01* X199744Y243244D01* X195700Y230200D02* X196973D01* X198117Y231344D01* X218208D01* X190800Y217300D02* Y222374D01* X188144Y225030D02* X190800Y222374D01* X188144Y225030D02* Y226770D01* X189374Y228000D01* X191114D01* X191370Y227744D01* X193489D01* X190244Y225900D02* X191400Y224744D01* X204244D01* X206744Y227244D01* X208283D01* X193489Y227744D02* X194333Y226900D01* X203000D01* X206244Y230144D01* X218705D01* X222305Y233744D01* X225156Y237244D02* X229156Y241244D01* X239856D01* X243900Y237200D01* X222305Y233744D02* X230744D01* X232244Y235244D01* Y238244D01* X247244Y215244D02* X255244D01* X234744Y202744D02* X247244Y215244D01* X198544Y199889D02* Y200091D01* X187798Y210837D02* X198544Y200091D01* X180867Y210837D02* X187798D01* X172774Y202744D02* X180867Y210837D01* X159087Y202744D02* X172774D01* X243593Y143895D02* X255442Y155744D01* X182244Y238744D02* X183744Y237244D01* Y234244D02* Y237244D01* X216205Y175205D02* X219244Y178244D01* X221744D01* X220200Y157244D02* Y173730D01* X223844Y177374D01* Y190644D01* X255442Y155744D02* X256744D01* X258244Y157244D01* X259244D01* X180487Y152844D02* X180587Y152744D01* X166000Y156310D02* Y165300D01* Y156310D02* X169466Y152844D01* X180487D01* X171744Y150744D02* X174488Y148000D01* X189900D01* X163538Y153951D02* X176088Y141400D01* X194700D01* X172414Y146771D02* X188715D01* X161744Y157441D02* Y166744D01* Y157441D02* X172414Y146771D01* X156744Y160744D02* Y166744D01* Y160744D02* X163538Y153951D01* X160088Y154900D02* X180744Y134244D01* X258744D01* X151744Y163244D02* Y166744D01* Y163244D02* X160088Y154900D01* X411244Y248744D02* X415244Y252744D01* X408032Y248744D02* X411244D01* X407232Y247944D02* X408032Y248744D01* X404444Y247944D02* X407232D01* X401963Y245463D02* X404444Y247944D01* X401963Y235100D02* Y245463D01* X398207Y231344D02* X401963Y235100D01* X396688Y243244D02* X397087D01* X385900Y161744D02* X386700D01* X356244Y268744D02* X372244D01* X413941Y225283D02* X418744D01* X411200D02* X413941D01* X364152Y168244D02* X365500D01* X363500Y150072D02* Y166244D01* X349587Y162100D02* X355731Y168244D01* X349587Y162100D02* Y166576D01* X363500Y150000D02* X363572D01* X363500D02* Y150072D01* X363572Y150000D02* X364172Y149400D01* X363500Y150072D02* X363572Y150000D01* X339087Y195244D02* Y202744D01* X318400Y170088D02* X321744Y166744D01* X318400Y170088D02* Y174900D01* X330244Y186744D01* Y207744D01* X360244Y260744D02* X368244D01* X321044Y226544D02* X321144Y226644D01* X329644D01* X428517Y227283D02* X433744D01* X427300Y228500D02* X428517Y227283D01* X427300Y228500D02* Y229705D01* X429400D02* X431900Y232205D01* X433744D01* X344418Y171744D02* X349587Y166576D01* X341744Y171744D02* X344418D01* X363987Y168409D02* X364152Y168244D01* X441300Y222900D02* Y238900D01* X436100Y217700D02* X441300Y222900D01* X420000Y217700D02* X436100D01* X366244Y200656D02* X366300Y200600D01* X366244Y200656D02* Y206787D01* X402300Y172300D02* X408500Y178500D01* Y222583D01* X411200Y225283D01* X370500Y147400D02* X374100D01* X369900Y148000D02* X370500Y147400D01* X378783Y151100D02* Y153744D01* X339087Y192113D02* Y195244D01* Y192113D02* X339900Y191300D01* X353100D01* X365901Y152400D02* Y152744D01* X368715Y146771D02* X369300Y146186D01* X377900D01* X372100Y150000D02* X372600Y149500D01* X365500Y168244D02* X367284D01* X372205D02* X379400D01* X385900Y161744D01* X354901Y156600D02* Y157244D01* X334600Y181244D02* X339587D01* X361344Y250875D02* X365675D01* X344902Y179403D02* Y181244D01* X343900Y178402D02* X344902Y179403D01* X340246Y178402D02* X343900D01* X336744Y171744D02* Y174900D01* X349587Y157244D02* Y162100D01* X376244Y264744D02* X380244D01* X321244Y246244D02* X329144D01* X329244Y246344D01* X391205Y237244D02* X396587D01* X392705Y156744D02* Y161744D01* X436400Y226783D02* X438744D01* X435900Y227283D02* X436400Y226783D01* X433744Y227283D02* X435900D01* X421400Y230205D02* X421900Y229705D01* X418744Y230205D02* X421400D01* X387784Y156744D02* Y161744D01* X386700D02* X387784D01* X384200Y159244D02* X386700Y161744D01* X383205Y159244D02* X384200D01* X383205Y156700D02* Y159244D01* Y156700D02* X383705Y156200D01* Y153744D02* Y156200D01* X407361Y230205D02* X418744D01* X393205Y223558D02* Y227244D01* Y223558D02* X393862Y222900D01* Y219406D02* Y222900D01* X436400Y231705D02* X438744D01* X435900Y232205D02* X436400Y231705D01* X433744Y232205D02* X435900D01* X362504Y197079D02* Y199701D01* Y197079D02* X363783Y195800D01* Y193244D02* Y195800D01* X421900Y224783D02* X424744D01* X421400Y225283D02* X421900Y224783D01* X418744Y225283D02* X421400D01* X362244Y238744D02* Y238783D01* X365675Y242213D01* Y246544D02* X365700Y246519D01* X433700Y192402D02* X434198Y192900D01* X450200D01* X451900Y191200D01* X463500D01* X442244Y249205D02* X451800D01* X453795Y251200D01* X463500D01* X429244Y197100D02* X432000Y199856D01* Y208002D01* X431100Y208902D02* X432000Y208002D01* X429244Y208902D02* X431100D01* X438744Y195402D02* X458702D01* X459300Y196000D01* X466400D01* X468300Y194100D01* Y188200D02* Y194100D01* X466300Y186200D02* X468300Y188200D01* X442600Y186200D02* X466300D01* X439244Y182844D02* X442600Y186200D01* X439244Y177902D02* Y182844D01* X429244Y192402D02* X431100D01* X432000Y191502D01* Y175402D02* Y191502D01* X429744Y175402D02* X432000D01* X439700Y249205D02* X442244D01* X439700Y242197D02* Y249205D01* Y242197D02* X442500Y239397D01* Y220156D02* Y239397D01* X438744Y216400D02* X442500Y220156D01* X438744Y211402D02* Y216400D01* X410500Y163700D02* Y168409D01* Y163700D02* X411500Y162700D01* X432200D01* X438744Y202700D02* Y206087D01* Y195402D02* Y199100D01* X441500Y201856D01* Y210602D01* X440700Y211402D02* X441500Y210602D01* X438744Y211402D02* X440700D01* X435413Y190087D02* X438744D01* X435100Y190400D02* X435413Y190087D01* X429100Y192402D02* X429244D01* X388000Y269800D02* X390100Y267700D01* X428500Y222900D02* Y225900D01* X426300Y220700D02* X428500Y222900D01* X418900Y220700D02* X426300D01* X418900Y186044D02* X419744Y186888D01* Y189283D01* X414700Y186600D02* Y188100D01* Y186600D02* X418254Y183046D01* X424446D01* X428487Y187087D01* X452900Y205200D02* Y238483D01* X447100Y244283D02* X452900Y238483D01* X442244Y244283D02* X447100D01* X429744Y170087D02* Y171856D01* X428700Y172900D02* X429744Y171856D01* X425900Y172900D02* X428700D01* X425500Y186600D02* X425987Y187087D01* X426100Y200700D02* Y202587D01* X427100Y203587D01* X419744Y194205D02* X423500D01* X425303Y192402D01* X408900Y160100D02* Y166300D01* X407900Y167300D02* X408900Y166300D01* X407900Y167300D02* Y168900D01* X410700Y171700D01* Y211200D01* X414700Y192200D02* Y198387D01* X419900Y203587D01* X387200Y244600D02* X390100Y247500D01* X439244Y172587D02* X442300D01* X446700Y176987D01* Y181800D01* X419900Y203587D02* X427100D01* X429244D01* X425987Y187087D02* X428487D01* X429244D01* X424695Y229705D02* X428500Y225900D01* X365700Y242213D02* Y246519D01* X373800Y264500D02* X379100Y269800D01* X424695Y229705D02* X424744D01* X427300D01* X387200Y235700D02* Y244600D01* X421900Y229705D02* X424744D01* X379100Y269800D02* X388000D01* X390100Y247500D02* Y267700D01* X354901Y156600D02* X358000D01* X365901Y152400D02* X368900D01* X363500Y166244D02* X365500Y168244D01* X355731D02* X364152D01* X429100Y192402D02* Y196900D01* X425303Y192402D02* X429100D01* X431100D02* X433700D01* X429244D02* Y197100D01* X355244Y202244D02* X355401Y202087D01* X344901Y197244D02* X350087D01* X393862Y192630D02* Y196177D01* Y192630D02* X396748Y189744D01* X400244D01* X391303Y192630D02* Y196177D01* Y192630D02* X396689Y187244D01* X397744D01* X396314Y185144D02* X401644D01* X401744Y185244D01* X388744Y192714D02* X396314Y185144D01* X388744Y192714D02* Y196177D01* X396421D02* X398311D01* X403844Y190644D01* X392705Y154100D02* Y156744D01* X396561Y150244D02* X397744D01* X396874Y148144D02* X398614D01* X392705Y154100D02* X396561Y150244D01* X378783Y151100D02* X393918D01* X396874Y148144D01* X398614D02* X402300Y151830D01* Y172300D01* X406418Y152979D02* Y163000D01* X386185Y192803D02* Y196177D01* Y192803D02* X388144Y190844D01* X388614D01* X389844Y189614D01* Y184344D02* Y189614D01* X383744Y178244D02* X389844Y184344D01* X384614Y176144D02* X392744Y184274D01* Y185744D01* X388744Y219406D02* Y226783D01* X391303Y219406D02* Y224224D01* X388283Y227244D02* X388744Y226783D01* X391303Y224224D01* X393205Y227244D02* X404400D01* X407361Y230205D01* X383214Y190244D02* X383744D01* X369144Y188244D02* X379744D01* X369984Y199701D02* X378441Y191244D01* X382214D01* X383214Y190244D01* X368705Y191205D02* Y193244D01* X367283Y189783D02* X368705Y191205D01* X360862Y189783D02* X367283D01* X355401Y195244D02* X360862Y189783D01* X355401Y195244D02* Y197244D01* Y202087D01* X368144Y187244D02* X369144Y188244D01* X363244Y187244D02* X368144D01* X367284Y168244D02* Y181205D01* X367244Y181244D02* X367284Y181205D01* X350087Y197244D02* X350126D01* X364026Y183344D01* X369344Y181544D02* Y182114D01* Y181544D02* X374744Y176144D01* X384614D01* X359787Y199701D02* X362504D01* X358744Y200744D02* X359787Y199701D01* X391283Y165244D02* Y173244D01* X387784Y161744D02* X391283Y165244D01* X396205Y173244D02* Y175205D01* Y157926D02* Y173244D01* Y157926D02* X402300Y151830D01* X369744Y185244D02* X382244D01* X383244Y184244D02* X387744Y188744D01* X364026Y183344D02* X368114D01* X369344Y182114D01* X382244Y185244D02* X383244Y184244D01* X377030Y148286D02* X378770D01* X374100Y147400D02* X376144D01* X377030Y148286D01* X378770D02* X381312Y145744D01* X399184D02* X406418Y152979D01* X393244Y143744D02* Y148744D01* Y143744D02* X394744Y142244D01* X381312Y145744D02* X388274D01* X393874Y140144D01* X395614D01* X399184Y143714D01* Y145744D01* X418642Y138944D02* X423593Y143895D01* X380125Y138944D02* X418642D01* X375569Y143500D02* X380125Y138944D01* X364895Y143500D02* X375569D01* X364500Y143895D02* X364895Y143500D01* X331744Y171744D02* X332994D01* X335494D02* X336744D01* X331744D02* Y176744D01* X332744Y177744D01* X337402D01* X338495Y176651D01* X336744Y174900D02* X340246Y178402D01* X376214Y153744D02* X378783D01* X364172Y149400D02* X371870D01* X376214Y153744D01* X372600Y153100D02* X374244Y154744D01* X376244Y159244D02* X378283D01* X374244Y157244D02* X376244Y159244D01* X374244Y154744D02* Y157244D01* X404744Y243244D02* X436956D01* X441300Y238900D01* X396587Y237244D02* X399587D01* X397087Y243244D02* X399587D01* X391205D02* X396688D01* X412600Y165100D02* Y210130D01* X412800Y210330D01* Y210500D01* X420000Y217700D01* X382244Y236244D02* X384244Y234244D01* X388205D01* X391205Y237244D01* X379744Y242714D02* Y243244D01* X378744Y234244D02* Y237244D01* X381244Y239744D01* X377714Y229244D02* X381244D01* X376570Y228100D02* X377714Y229244D01* X374830Y228100D02* X376570D01* X373600Y229330D02* X374830Y228100D01* X373600Y229330D02* Y237100D01* X379744Y243244D01* X375700Y230200D02* X376973D01* X378117Y231344D01* X398207D01* X370800Y217300D02* Y222374D01* X368144Y225030D02* X370800Y222374D01* X368144Y225030D02* Y226770D01* X369374Y228000D01* X371114D01* X371370Y227744D01* X373489D01* X370244Y225900D02* X371400Y224744D01* X384244D01* X386744Y227244D01* X388283D01* X373489Y227744D02* X374333Y226900D01* X383000D01* X386244Y230144D01* X398705D01* X402305Y233744D01* X405156Y237244D02* X409156Y241244D01* X419856D01* X423900Y237200D01* X402305Y233744D02* X410744D01* X412244Y235244D01* Y238244D01* X427244Y215244D02* X435244D01* X414744Y202744D02* X427244Y215244D01* X378544Y199889D02* Y200091D01* X367798Y210837D02* X378544Y200091D01* X360867Y210837D02* X367798D01* X352774Y202744D02* X360867Y210837D01* X339087Y202744D02* X352774D01* X423593Y143895D02* X435442Y155744D01* X362244Y238744D02* X363744Y237244D01* Y234244D02* Y237244D01* X396205Y175205D02* X399244Y178244D01* X401744D01* X400200Y157244D02* Y173730D01* X403844Y177374D01* Y190644D01* X435442Y155744D02* X436744D01* X438244Y157244D01* X439244D01* X360487Y152844D02* X360587Y152744D01* X346000Y156310D02* Y165300D01* Y156310D02* X349466Y152844D01* X360487D01* X351744Y150744D02* X354488Y148000D01* X369900D01* X343538Y153951D02* X356088Y141400D01* X374700D01* X352414Y146771D02* X368715D01* X341744Y157441D02* Y166744D01* Y157441D02* X352414Y146771D01* X336744Y160744D02* Y166744D01* Y160744D02* X343538Y153951D01* X340088Y154900D02* X360744Y134244D01* X438744D01* X331744Y163244D02* Y166744D01* Y163244D02* X340088Y154900D01* X231244Y428744D02* X235244Y432744D01* X228032Y428744D02* X231244D01* X227232Y427944D02* X228032Y428744D01* X224444Y427944D02* X227232D01* X221963Y425463D02* X224444Y427944D01* X221963Y415099D02* Y425463D01* X218208Y411344D02* X221963Y415099D01* X216688Y423244D02* X217087D01* X205900Y341744D02* X206700D01* X176244Y448744D02* X192244D01* X233941Y405283D02* X238744D01* X231200D02* X233941D01* X184152Y348244D02* X185500D01* X183500Y330072D02* Y346244D01* X169587Y342100D02* X175731Y348244D01* X169587Y342100D02* Y346576D01* X183500Y330000D02* X183572D01* X183500D02* Y330072D01* X183572Y330000D02* X184172Y329400D01* X183500Y330072D02* X183572Y330000D01* X159087Y375244D02* Y382744D01* X138400Y350088D02* X141744Y346744D01* X138400Y350088D02* Y354900D01* X150244Y366744D01* Y387744D01* X180244Y440744D02* X188244D01* X141044Y406544D02* X141144Y406644D01* X149644D01* X248517Y407283D02* X253744D01* X247300Y408500D02* X248517Y407283D01* X247300Y408500D02* Y409705D01* X249400D02* X251900Y412205D01* X253744D01* X164418Y351744D02* X169587Y346576D01* X161744Y351744D02* X164418D01* X183987Y348409D02* X184152Y348244D01* X261300Y402900D02* Y418900D01* X256100Y397700D02* X261300Y402900D01* X240000Y397700D02* X256100D01* X186244Y380656D02* X186300Y380600D01* X186244Y380656D02* Y386787D01* X222300Y352300D02* X228500Y358500D01* Y402583D01* X231200Y405283D01* X190500Y327400D02* X194100D01* X189900Y328000D02* X190500Y327400D01* X198783Y331100D02* Y333744D01* X159087Y372113D02* Y375244D01* Y372113D02* X159900Y371300D01* X173100D01* X185901Y332400D02* Y332744D01* X188715Y326771D02* X189300Y326186D01* X197900D01* X192100Y330000D02* X192600Y329500D01* X185500Y348244D02* X187284D01* X192205D02* X199400D01* X205900Y341744D01* X174901Y336600D02* Y337244D01* X154600Y361244D02* X159587D01* X181344Y430875D02* X185675D01* X164902Y359403D02* Y361244D01* X163900Y358402D02* X164902Y359403D01* X160246Y358402D02* X163900D01* X156744Y351744D02* Y354900D01* X169587Y337244D02* Y342100D01* X196244Y444744D02* X200244D01* X141244Y426244D02* X149144D01* X149244Y426344D01* X211205Y417244D02* X216587D01* X212705Y336744D02* Y341744D01* X256400Y406783D02* X258744D01* X255900Y407283D02* X256400Y406783D01* X253744Y407283D02* X255900D01* X241400Y410205D02* X241900Y409705D01* X238744Y410205D02* X241400D01* X207784Y336744D02* Y341744D01* X206700D02* X207784D01* X204200Y339244D02* X206700Y341744D01* X203205Y339244D02* X204200D01* X203205Y336700D02* Y339244D01* Y336700D02* X203705Y336200D01* Y333744D02* Y336200D01* X227361Y410205D02* X238744D01* X213205Y403558D02* Y407244D01* Y403558D02* X213862Y402900D01* Y399406D02* Y402900D01* X256400Y411705D02* X258744D01* X255900Y412205D02* X256400Y411705D01* X253744Y412205D02* X255900D01* X182504Y377079D02* Y379701D01* Y377079D02* X183783Y375800D01* Y373244D02* Y375800D01* X241900Y404783D02* X244744D01* X241400Y405283D02* X241900Y404783D01* X238744Y405283D02* X241400D01* X182244Y418744D02* Y418783D01* X185675Y422213D01* Y426544D02* X185700Y426519D01* X253700Y372402D02* X254198Y372900D01* X270200D01* X271900Y371200D01* X283500D01* X262244Y429205D02* X271800D01* X273795Y431200D01* X283500D01* X249244Y377100D02* X252000Y379856D01* Y388002D01* X251100Y388902D02* X252000Y388002D01* X249244Y388902D02* X251100D01* X258744Y375402D02* X278702D01* X279300Y376000D01* X286400D01* X288300Y374100D01* Y368200D02* Y374100D01* X286300Y366200D02* X288300Y368200D01* X262600Y366200D02* X286300D01* X259244Y362844D02* X262600Y366200D01* X259244Y357902D02* Y362844D01* X249244Y372402D02* X251100D01* X252000Y371502D01* Y355402D02* Y371502D01* X249744Y355402D02* X252000D01* X259700Y429205D02* X262244D01* X259700Y422197D02* Y429205D01* Y422197D02* X262500Y419397D01* Y400156D02* Y419397D01* X258744Y396400D02* X262500Y400156D01* X258744Y391402D02* Y396400D01* X230500Y343700D02* Y348409D01* Y343700D02* X231500Y342700D01* X252200D01* X258744Y382700D02* Y386087D01* Y375402D02* Y379100D01* X261500Y381856D01* Y390602D01* X260700Y391402D02* X261500Y390602D01* X258744Y391402D02* X260700D01* X255413Y370087D02* X258744D01* X255100Y370400D02* X255413Y370087D01* X249100Y372402D02* X249244D01* X208000Y449800D02* X210100Y447700D01* X248500Y402900D02* Y405900D01* X246300Y400700D02* X248500Y402900D01* X238900Y400700D02* X246300D01* X238900Y366044D02* X239744Y366888D01* Y369283D01* X234700Y366600D02* Y368100D01* Y366600D02* X238254Y363046D01* X244446D01* X248487Y367087D01* X272900Y385200D02* Y418483D01* X267100Y424283D02* X272900Y418483D01* X262244Y424283D02* X267100D01* X249744Y350087D02* Y351856D01* X248700Y352900D02* X249744Y351856D01* X245900Y352900D02* X248700D01* X245500Y366600D02* X245987Y367087D01* X246100Y380700D02* Y382587D01* X247100Y383587D01* X239744Y374205D02* X243500D01* X245303Y372402D01* X228900Y340100D02* Y346300D01* X227900Y347300D02* X228900Y346300D01* X227900Y347300D02* Y348900D01* X230700Y351700D01* Y391200D01* X234700Y372200D02* Y378387D01* X239900Y383587D01* X207200Y424600D02* X210100Y427500D01* X259244Y352587D02* X262300D01* X266700Y356987D01* Y361800D01* X239900Y383587D02* X247100D01* X249244D01* X245987Y367087D02* X248487D01* X249244D01* X244695Y409705D02* X248500Y405900D01* X185700Y422213D02* Y426519D01* X193800Y444500D02* X199100Y449800D01* X244695Y409705D02* X244744D01* X247300D01* X207200Y415700D02* Y424600D01* X241900Y409705D02* X244744D01* X199100Y449800D02* X208000D01* X210100Y427500D02* Y447700D01* X174901Y336600D02* X178000D01* X185901Y332400D02* X188900D01* X183500Y346244D02* X185500Y348244D01* X175731D02* X184152D01* X249100Y372402D02* Y376900D01* X245303Y372402D02* X249100D01* X251100D02* X253700D01* X249244D02* Y377100D01* X175244Y382244D02* X175401Y382087D01* X164901Y377244D02* X170087D01* X213862Y372630D02* Y376177D01* Y372630D02* X216748Y369744D01* X220244D01* X211303Y372630D02* Y376177D01* Y372630D02* X216689Y367244D01* X217744D01* X216314Y365144D02* X221644D01* X221744Y365244D01* X208744Y372714D02* X216314Y365144D01* X208744Y372714D02* Y376177D01* X216421D02* X218311D01* X223844Y370644D01* X212705Y334100D02* Y336744D01* X216561Y330244D02* X217744D01* X216874Y328144D02* X218614D01* X212705Y334100D02* X216561Y330244D01* X198783Y331100D02* X213918D01* X216874Y328144D01* X218614D02* X222300Y331830D01* Y352300D01* X226418Y332979D02* Y343000D01* X206185Y372803D02* Y376177D01* Y372803D02* X208144Y370844D01* X208614D01* X209844Y369614D01* Y364344D02* Y369614D01* X203744Y358244D02* X209844Y364344D01* X204614Y356144D02* X212744Y364274D01* Y365744D01* X208744Y399406D02* Y406783D01* X211303Y399406D02* Y404224D01* X208283Y407244D02* X208744Y406783D01* X211303Y404224D01* X213205Y407244D02* X224400D01* X227361Y410205D01* X203214Y370244D02* X203744D01* X189144Y368244D02* X199744D01* X189984Y379701D02* X198441Y371244D01* X202214D01* X203214Y370244D01* X188705Y371205D02* Y373244D01* X187283Y369783D02* X188705Y371205D01* X180862Y369783D02* X187283D01* X175401Y375244D02* X180862Y369783D01* X175401Y375244D02* Y377244D01* Y382087D01* X188144Y367244D02* X189144Y368244D01* X183244Y367244D02* X188144D01* X187284Y348244D02* Y361205D01* X187244Y361244D02* X187284Y361205D01* X170087Y377244D02* X170126D01* X184026Y363344D01* X189344Y361544D02* Y362114D01* Y361544D02* X194744Y356144D01* X204614D01* X179787Y379701D02* X182504D01* X178744Y380744D02* X179787Y379701D01* X211283Y345244D02* Y353244D01* X207784Y341744D02* X211283Y345244D01* X216205Y353244D02* Y355205D01* Y337926D02* Y353244D01* Y337926D02* X222300Y331830D01* X189744Y365244D02* X202244D01* X203244Y364244D02* X207744Y368744D01* X184026Y363344D02* X188114D01* X189344Y362114D01* X202244Y365244D02* X203244Y364244D01* X197030Y328286D02* X198770D01* X194100Y327400D02* X196144D01* X197030Y328286D01* X198770D02* X201312Y325744D01* X219184D02* X226418Y332979D01* X213244Y323744D02* Y328744D01* Y323744D02* X214744Y322244D01* X201312Y325744D02* X208274D01* X213874Y320144D01* X215614D01* X219184Y323714D01* Y325744D01* X238642Y318944D02* X243593Y323895D01* X200125Y318944D02* X238642D01* X195569Y323500D02* X200125Y318944D01* X184895Y323500D02* X195569D01* X184500Y323895D02* X184895Y323500D01* X151744Y351744D02* X152994D01* X155494D02* X156744D01* X151744D02* Y356744D01* X152744Y357744D01* X157402D01* X158495Y356651D01* X156744Y354900D02* X160246Y358402D01* X196214Y333744D02* X198783D01* X184172Y329400D02* X191870D01* X196214Y333744D01* X192600Y333100D02* X194244Y334744D01* X196244Y339244D02* X198283D01* X194244Y337244D02* X196244Y339244D01* X194244Y334744D02* Y337244D01* X224744Y423244D02* X256956D01* X261300Y418900D01* X216587Y417244D02* X219587D01* X217087Y423244D02* X219587D01* X211205D02* X216688D01* X232600Y345100D02* Y390130D01* X232800Y390330D01* Y390500D01* X240000Y397700D01* X202244Y416244D02* X204244Y414244D01* X208205D01* X211205Y417244D01* X199744Y422714D02* Y423244D01* X198744Y414244D02* Y417244D01* X201244Y419744D01* X197714Y409244D02* X201244D01* X196570Y408100D02* X197714Y409244D01* X194830Y408100D02* X196570D01* X193600Y409330D02* X194830Y408100D01* X193600Y409330D02* Y417100D01* X199744Y423244D01* X195700Y410200D02* X196973D01* X198117Y411344D01* X218208D01* X190800Y397300D02* Y402374D01* X188144Y405030D02* X190800Y402374D01* X188144Y405030D02* Y406770D01* X189374Y408000D01* X191114D01* X191370Y407744D01* X193489D01* X190244Y405900D02* X191400Y404744D01* X204244D01* X206744Y407244D01* X208283D01* X193489Y407744D02* X194333Y406900D01* X203000D01* X206244Y410144D01* X218705D01* X222305Y413744D01* X225156Y417244D02* X229156Y421244D01* X239856D01* X243900Y417200D01* X222305Y413744D02* X230744D01* X232244Y415244D01* Y418244D01* X247244Y395244D02* X255244D01* X234744Y382744D02* X247244Y395244D01* X198544Y379889D02* Y380091D01* X187798Y390837D02* X198544Y380091D01* X180867Y390837D02* X187798D01* X172774Y382744D02* X180867Y390837D01* X159087Y382744D02* X172774D01* X243593Y323895D02* X255442Y335744D01* X182244Y418744D02* X183744Y417244D01* Y414244D02* Y417244D01* X216205Y355205D02* X219244Y358244D01* X221744D01* X220200Y337244D02* Y353730D01* X223844Y357374D01* Y370644D01* X255442Y335744D02* X256744D01* X258244Y337244D01* X259244D01* X180487Y332844D02* X180587Y332744D01* X166000Y336310D02* Y345300D01* Y336310D02* X169466Y332844D01* X180487D01* X171744Y330744D02* X174488Y328000D01* X189900D01* X163538Y333950D02* X176088Y321400D01* X194700D01* X172414Y326771D02* X188715D01* X161744Y337441D02* Y346744D01* Y337441D02* X172414Y326771D01* X156744Y340744D02* Y346744D01* Y340744D02* X163538Y333950D01* X160088Y334900D02* X180744Y314244D01* X258744D01* X151744Y343244D02* Y346744D01* Y343244D02* X160088Y334900D01* X411244Y428744D02* X415244Y432744D01* X408032Y428744D02* X411244D01* X407232Y427944D02* X408032Y428744D01* X404444Y427944D02* X407232D01* X401963Y425463D02* X404444Y427944D01* X401963Y415099D02* Y425463D01* X398207Y411344D02* X401963Y415099D01* X396688Y423244D02* X397087D01* X385900Y341744D02* X386700D01* X356244Y448744D02* X372244D01* X413941Y405283D02* X418744D01* X411200D02* X413941D01* X364152Y348244D02* X365500D01* X363500Y330072D02* Y346244D01* X349587Y342100D02* X355731Y348244D01* X349587Y342100D02* Y346576D01* X363500Y330000D02* X363572D01* X363500D02* Y330072D01* X363572Y330000D02* X364172Y329400D01* X363500Y330072D02* X363572Y330000D01* X339087Y375244D02* Y382744D01* X318400Y350088D02* X321744Y346744D01* X318400Y350088D02* Y354900D01* X330244Y366744D01* Y387744D01* X360244Y440744D02* X368244D01* X321044Y406544D02* X321144Y406644D01* X329644D01* X428517Y407283D02* X433744D01* X427300Y408500D02* X428517Y407283D01* X427300Y408500D02* Y409705D01* X429400D02* X431900Y412205D01* X433744D01* X344418Y351744D02* X349587Y346576D01* X341744Y351744D02* X344418D01* X363987Y348409D02* X364152Y348244D01* X441300Y402900D02* Y418900D01* X436100Y397700D02* X441300Y402900D01* X420000Y397700D02* X436100D01* X366244Y380656D02* X366300Y380600D01* X366244Y380656D02* Y386787D01* X402300Y352300D02* X408500Y358500D01* Y402583D01* X411200Y405283D01* X370500Y327400D02* X374100D01* X369900Y328000D02* X370500Y327400D01* X378783Y331100D02* Y333744D01* X339087Y372113D02* Y375244D01* Y372113D02* X339900Y371300D01* X353100D01* X365901Y332400D02* Y332744D01* X368715Y326771D02* X369300Y326186D01* X377900D01* X372100Y330000D02* X372600Y329500D01* X365500Y348244D02* X367284D01* X372205D02* X379400D01* X385900Y341744D01* X354901Y336600D02* Y337244D01* X334600Y361244D02* X339587D01* X361344Y430875D02* X365675D01* X344902Y359403D02* Y361244D01* X343900Y358402D02* X344902Y359403D01* X340246Y358402D02* X343900D01* X336744Y351744D02* Y354900D01* X349587Y337244D02* Y342100D01* X376244Y444744D02* X380244D01* X321244Y426244D02* X329144D01* X329244Y426344D01* X391205Y417244D02* X396587D01* X392705Y336744D02* Y341744D01* X436400Y406783D02* X438744D01* X435900Y407283D02* X436400Y406783D01* X433744Y407283D02* X435900D01* X421400Y410205D02* X421900Y409705D01* X418744Y410205D02* X421400D01* X387784Y336744D02* Y341744D01* X386700D02* X387784D01* X384200Y339244D02* X386700Y341744D01* X383205Y339244D02* X384200D01* X383205Y336700D02* Y339244D01* Y336700D02* X383705Y336200D01* Y333744D02* Y336200D01* X407361Y410205D02* X418744D01* X393205Y403558D02* Y407244D01* Y403558D02* X393862Y402900D01* Y399406D02* Y402900D01* X436400Y411705D02* X438744D01* X435900Y412205D02* X436400Y411705D01* X433744Y412205D02* X435900D01* X362504Y377079D02* Y379701D01* Y377079D02* X363783Y375800D01* Y373244D02* Y375800D01* X421900Y404783D02* X424744D01* X421400Y405283D02* X421900Y404783D01* X418744Y405283D02* X421400D01* X362244Y418744D02* Y418783D01* X365675Y422213D01* Y426544D02* X365700Y426519D01* X433700Y372402D02* X434198Y372900D01* X450200D01* X451900Y371200D01* X463500D01* X442244Y429205D02* X451800D01* X453795Y431200D01* X463500D01* X429244Y377100D02* X432000Y379856D01* Y388002D01* X431100Y388902D02* X432000Y388002D01* X429244Y388902D02* X431100D01* X438744Y375402D02* X458702D01* X459300Y376000D01* X466400D01* X468300Y374100D01* Y368200D02* Y374100D01* X466300Y366200D02* X468300Y368200D01* X442600Y366200D02* X466300D01* X439244Y362844D02* X442600Y366200D01* X439244Y357902D02* Y362844D01* X429244Y372402D02* X431100D01* X432000Y371502D01* Y355402D02* Y371502D01* X429744Y355402D02* X432000D01* X439700Y429205D02* X442244D01* X439700Y422197D02* Y429205D01* Y422197D02* X442500Y419397D01* Y400156D02* Y419397D01* X438744Y396400D02* X442500Y400156D01* X438744Y391402D02* Y396400D01* X410500Y343700D02* Y348409D01* Y343700D02* X411500Y342700D01* X432200D01* X438744Y382700D02* Y386087D01* Y375402D02* Y379100D01* X441500Y381856D01* Y390602D01* X440700Y391402D02* X441500Y390602D01* X438744Y391402D02* X440700D01* X435413Y370087D02* X438744D01* X435100Y370400D02* X435413Y370087D01* X429100Y372402D02* X429244D01* X388000Y449800D02* X390100Y447700D01* X428500Y402900D02* Y405900D01* X426300Y400700D02* X428500Y402900D01* X418900Y400700D02* X426300D01* X418900Y366044D02* X419744Y366888D01* Y369283D01* X414700Y366600D02* Y368100D01* Y366600D02* X418254Y363046D01* X424446D01* X428487Y367087D01* X452900Y385200D02* Y418483D01* X447100Y424283D02* X452900Y418483D01* X442244Y424283D02* X447100D01* X429744Y350087D02* Y351856D01* X428700Y352900D02* X429744Y351856D01* X425900Y352900D02* X428700D01* X425500Y366600D02* X425987Y367087D01* X426100Y380700D02* Y382587D01* X427100Y383587D01* X419744Y374205D02* X423500D01* X425303Y372402D01* X408900Y340100D02* Y346300D01* X407900Y347300D02* X408900Y346300D01* X407900Y347300D02* Y348900D01* X410700Y351700D01* Y391200D01* X414700Y372200D02* Y378387D01* X419900Y383587D01* X387200Y424600D02* X390100Y427500D01* X439244Y352587D02* X442300D01* X446700Y356987D01* Y361800D01* X419900Y383587D02* X427100D01* X429244D01* X425987Y367087D02* X428487D01* X429244D01* X424695Y409705D02* X428500Y405900D01* X365700Y422213D02* Y426519D01* X373800Y444500D02* X379100Y449800D01* X424695Y409705D02* X424744D01* X427300D01* X387200Y415700D02* Y424600D01* X421900Y409705D02* X424744D01* X379100Y449800D02* X388000D01* X390100Y427500D02* Y447700D01* X354901Y336600D02* X358000D01* X365901Y332400D02* X368900D01* X363500Y346244D02* X365500Y348244D01* X355731D02* X364152D01* X429100Y372402D02* Y376900D01* X425303Y372402D02* X429100D01* X431100D02* X433700D01* X429244D02* Y377100D01* X355244Y382244D02* X355401Y382087D01* X344901Y377244D02* X350087D01* X393862Y372630D02* Y376177D01* Y372630D02* X396748Y369744D01* X400244D01* X391303Y372630D02* Y376177D01* Y372630D02* X396689Y367244D01* X397744D01* X396314Y365144D02* X401644D01* X401744Y365244D01* X388744Y372714D02* X396314Y365144D01* X388744Y372714D02* Y376177D01* X396421D02* X398311D01* X403844Y370644D01* X392705Y334100D02* Y336744D01* X396561Y330244D02* X397744D01* X396874Y328144D02* X398614D01* X392705Y334100D02* X396561Y330244D01* X378783Y331100D02* X393918D01* X396874Y328144D01* X398614D02* X402300Y331830D01* Y352300D01* X406418Y332979D02* Y343000D01* X386185Y372803D02* Y376177D01* Y372803D02* X388144Y370844D01* X388614D01* X389844Y369614D01* Y364344D02* Y369614D01* X383744Y358244D02* X389844Y364344D01* X384614Y356144D02* X392744Y364274D01* Y365744D01* X388744Y399406D02* Y406783D01* X391303Y399406D02* Y404224D01* X388283Y407244D02* X388744Y406783D01* X391303Y404224D01* X393205Y407244D02* X404400D01* X407361Y410205D01* X383214Y370244D02* X383744D01* X369144Y368244D02* X379744D01* X369984Y379701D02* X378441Y371244D01* X382214D01* X383214Y370244D01* X368705Y371205D02* Y373244D01* X367283Y369783D02* X368705Y371205D01* X360862Y369783D02* X367283D01* X355401Y375244D02* X360862Y369783D01* X355401Y375244D02* Y377244D01* Y382087D01* X368144Y367244D02* X369144Y368244D01* X363244Y367244D02* X368144D01* X367284Y348244D02* Y361205D01* X367244Y361244D02* X367284Y361205D01* X350087Y377244D02* X350126D01* X364026Y363344D01* X369344Y361544D02* Y362114D01* Y361544D02* X374744Y356144D01* X384614D01* X359787Y379701D02* X362504D01* X358744Y380744D02* X359787Y379701D01* X391283Y345244D02* Y353244D01* X387784Y341744D02* X391283Y345244D01* X396205Y353244D02* Y355205D01* Y337926D02* Y353244D01* Y337926D02* X402300Y331830D01* X369744Y365244D02* X382244D01* X383244Y364244D02* X387744Y368744D01* X364026Y363344D02* X368114D01* X369344Y362114D01* X382244Y365244D02* X383244Y364244D01* X377030Y328286D02* X378770D01* X374100Y327400D02* X376144D01* X377030Y328286D01* X378770D02* X381312Y325744D01* X399184D02* X406418Y332979D01* X393244Y323744D02* Y328744D01* Y323744D02* X394744Y322244D01* X381312Y325744D02* X388274D01* X393874Y320144D01* X395614D01* X399184Y323714D01* Y325744D01* X418642Y318944D02* X423593Y323895D01* X380125Y318944D02* X418642D01* X375569Y323500D02* X380125Y318944D01* X364895Y323500D02* X375569D01* X364500Y323895D02* X364895Y323500D01* X331744Y351744D02* X332994D01* X335494D02* X336744D01* X331744D02* Y356744D01* X332744Y357744D01* X337402D01* X338495Y356651D01* X336744Y354900D02* X340246Y358402D01* X376214Y333744D02* X378783D01* X364172Y329400D02* X371870D01* X376214Y333744D01* X372600Y333100D02* X374244Y334744D01* X376244Y339244D02* X378283D01* X374244Y337244D02* X376244Y339244D01* X374244Y334744D02* Y337244D01* X404744Y423244D02* X436956D01* X441300Y418900D01* X396587Y417244D02* X399587D01* X397087Y423244D02* X399587D01* X391205D02* X396688D01* X412600Y345100D02* Y390130D01* X412800Y390330D01* Y390500D01* X420000Y397700D01* X382244Y416244D02* X384244Y414244D01* X388205D01* X391205Y417244D01* X379744Y422714D02* Y423244D01* X378744Y414244D02* Y417244D01* X381244Y419744D01* X377714Y409244D02* X381244D01* X376570Y408100D02* X377714Y409244D01* X374830Y408100D02* X376570D01* X373600Y409330D02* X374830Y408100D01* X373600Y409330D02* Y417100D01* X379744Y423244D01* X375700Y410200D02* X376973D01* X378117Y411344D01* X398207D01* X370800Y397300D02* Y402374D01* X368144Y405030D02* X370800Y402374D01* X368144Y405030D02* Y406770D01* X369374Y408000D01* X371114D01* X371370Y407744D01* X373489D01* X370244Y405900D02* X371400Y404744D01* X384244D01* X386744Y407244D01* X388283D01* X373489Y407744D02* X374333Y406900D01* X383000D01* X386244Y410144D01* X398705D01* X402305Y413744D01* X405156Y417244D02* X409156Y421244D01* X419856D01* X423900Y417200D01* X402305Y413744D02* X410744D01* X412244Y415244D01* Y418244D01* X427244Y395244D02* X435244D01* X414744Y382744D02* X427244Y395244D01* X378544Y379889D02* Y380091D01* X367798Y390837D02* X378544Y380091D01* X360867Y390837D02* X367798D01* X352774Y382744D02* X360867Y390837D01* X339087Y382744D02* X352774D01* X423593Y323895D02* X435442Y335744D01* X362244Y418744D02* X363744Y417244D01* Y414244D02* Y417244D01* X396205Y355205D02* X399244Y358244D01* X401744D01* X400200Y337244D02* Y353730D01* X403844Y357374D01* Y370644D01* X435442Y335744D02* X436744D01* X438244Y337244D01* X439244D01* X360487Y332844D02* X360587Y332744D01* X346000Y336310D02* Y345300D01* Y336310D02* X349466Y332844D01* X360487D01* X351744Y330744D02* X354488Y328000D01* X369900D01* X343538Y333950D02* X356088Y321400D01* X374700D01* X352414Y326771D02* X368715D01* X341744Y337441D02* Y346744D01* Y337441D02* X352414Y326771D01* X336744Y340744D02* Y346744D01* Y340744D02* X343538Y333950D01* X340088Y334900D02* X360744Y314244D01* X438744D01* X331744Y343244D02* Y346744D01* Y343244D02* X340088Y334900D01* D40* X205244Y262244D02* X205244Y262244D01* X205244Y252744D02* Y262244D01* X215744Y276244D02* X223744D01* X207744D02* X215744D01* X385244Y262244D02* X385244Y262244D01* X385244Y252744D02* Y262244D01* X395744Y276244D02* X403744D01* X387744D02* X395744D01* X205244Y442244D02* X205244Y442244D01* X205244Y432744D02* Y442244D01* X215744Y456244D02* X223744D01* X207744D02* X215744D01* X385244Y442244D02* X385244Y442244D01* X385244Y432744D02* Y442244D01* X395744Y456244D02* X403744D01* X387744D02* X395744D01* D41* X223744Y276244D02* X223744Y276244D01* X206744Y277244D02* X207744Y276244D01* X403744D02* X403744Y276244D01* X386744Y277244D02* X387744Y276244D01* X223744Y456244D02* X223744Y456244D01* X206744Y457244D02* X207744Y456244D01* X403744D02* X403744Y456244D01* X386744Y457244D02* X387744Y456244D01* D43* X166520Y330658D02* Y325660D01* X169019D01* X169852Y326493D01* Y327326D01* X169019Y328159D01* X166520D01* X169019D01* X169852Y328992D01* Y329825D01* X169019Y330658D01* X166520D01* X172351Y325660D02* X174017D01* X174850Y326493D01* Y328159D01* X174017Y328992D01* X172351D01* X171518Y328159D01* Y326493D01* X172351Y325660D01* X177349Y329825D02* Y328992D01* X176516D01* X178183D01* X177349D01* Y326493D01* X178183Y325660D01* X181515Y329825D02* Y328992D01* X180682D01* X182348D01* X181515D01* Y326493D01* X182348Y325660D01* X185680D02* X187346D01* X188179Y326493D01* Y328159D01* X187346Y328992D01* X185680D01* X184847Y328159D01* Y326493D01* X185680Y325660D01* X189846D02* Y328992D01* X190679D01* X191512Y328159D01* Y325660D01* Y328159D01* X192345Y328992D01* X193178Y328159D01* Y325660D01* X203174Y329825D02* X202341Y330658D01* X200675D01* X199842Y329825D01* Y326493D01* X200675Y325660D01* X202341D01* X203174Y326493D01* X205674Y325660D02* X207340D01* X208173Y326493D01* Y328159D01* X207340Y328992D01* X205674D01* X204841Y328159D01* Y326493D01* X205674Y325660D01* X209839Y323994D02* Y328992D01* X212338D01* X213171Y328159D01* Y326493D01* X212338Y325660D01* X209839D01* X214837Y323994D02* Y328992D01* X217337D01* X218170Y328159D01* Y326493D01* X217337Y325660D01* X214837D01* X222335D02* X220669D01* X219836Y326493D01* Y328159D01* X220669Y328992D01* X222335D01* X223168Y328159D01* Y327326D01* X219836D01* X224834Y328992D02* Y325660D01* Y327326D01* X225667Y328159D01* X226500Y328992D01* X227333D01* X346520Y330658D02* Y325660D01* X349019D01* X349852Y326493D01* Y327326D01* X349019Y328159D01* X346520D01* X349019D01* X349852Y328992D01* Y329825D01* X349019Y330658D01* X346520D01* X352351Y325660D02* X354017D01* X354850Y326493D01* Y328159D01* X354017Y328992D01* X352351D01* X351518Y328159D01* Y326493D01* X352351Y325660D01* X357349Y329825D02* Y328992D01* X356516D01* X358183D01* X357349D01* Y326493D01* X358183Y325660D01* X361515Y329825D02* Y328992D01* X360682D01* X362348D01* X361515D01* Y326493D01* X362348Y325660D01* X365680D02* X367346D01* X368179Y326493D01* Y328159D01* X367346Y328992D01* X365680D01* X364847Y328159D01* Y326493D01* X365680Y325660D01* X369846D02* Y328992D01* X370678D01* X371512Y328159D01* Y325660D01* Y328159D01* X372345Y328992D01* X373178Y328159D01* Y325660D01* X383174Y329825D02* X382341Y330658D01* X380675D01* X379842Y329825D01* Y326493D01* X380675Y325660D01* X382341D01* X383174Y326493D01* X385674Y325660D02* X387340D01* X388173Y326493D01* Y328159D01* X387340Y328992D01* X385674D01* X384841Y328159D01* Y326493D01* X385674Y325660D01* X389839Y323994D02* Y328992D01* X392338D01* X393171Y328159D01* Y326493D01* X392338Y325660D01* X389839D01* X394837Y323994D02* Y328992D01* X397337D01* X398170Y328159D01* Y326493D01* X397337Y325660D01* X394837D01* X402335D02* X400669D01* X399836Y326493D01* Y328159D01* X400669Y328992D01* X402335D01* X403168Y328159D01* Y327326D01* X399836D01* X404834Y328992D02* Y325660D01* Y327326D01* X405667Y328159D01* X406500Y328992D01* X407333D01* X166520Y510658D02* Y505660D01* X169019D01* X169852Y506493D01* Y507326D01* X169019Y508159D01* X166520D01* X169019D01* X169852Y508992D01* Y509825D01* X169019Y510658D01* X166520D01* X172351Y505660D02* X174017D01* X174850Y506493D01* Y508159D01* X174017Y508992D01* X172351D01* X171518Y508159D01* Y506493D01* X172351Y505660D01* X177349Y509825D02* Y508992D01* X176516D01* X178183D01* X177349D01* Y506493D01* X178183Y505660D01* X181515Y509825D02* Y508992D01* X180682D01* X182348D01* X181515D01* Y506493D01* X182348Y505660D01* X185680D02* X187346D01* X188179Y506493D01* Y508159D01* X187346Y508992D01* X185680D01* X184847Y508159D01* Y506493D01* X185680Y505660D01* X189846D02* Y508992D01* X190679D01* X191512Y508159D01* Y505660D01* Y508159D01* X192345Y508992D01* X193178Y508159D01* Y505660D01* X203174Y509825D02* X202341Y510658D01* X200675D01* X199842Y509825D01* Y506493D01* X200675Y505660D01* X202341D01* X203174Y506493D01* X205674Y505660D02* X207340D01* X208173Y506493D01* Y508159D01* X207340Y508992D01* X205674D01* X204841Y508159D01* Y506493D01* X205674Y505660D01* X209839Y503994D02* Y508992D01* X212338D01* X213171Y508159D01* Y506493D01* X212338Y505660D01* X209839D01* X214837Y503994D02* Y508992D01* X217337D01* X218170Y508159D01* Y506493D01* X217337Y505660D01* X214837D01* X222335D02* X220669D01* X219836Y506493D01* Y508159D01* X220669Y508992D01* X222335D01* X223168Y508159D01* Y507326D01* X219836D01* X224834Y508992D02* Y505660D01* Y507326D01* X225667Y508159D01* X226500Y508992D01* X227333D01* X346520Y510658D02* Y505660D01* X349019D01* X349852Y506493D01* Y507326D01* X349019Y508159D01* X346520D01* X349019D01* X349852Y508992D01* Y509825D01* X349019Y510658D01* X346520D01* X352351Y505660D02* X354017D01* X354850Y506493D01* Y508159D01* X354017Y508992D01* X352351D01* X351518Y508159D01* Y506493D01* X352351Y505660D01* X357349Y509825D02* Y508992D01* X356516D01* X358183D01* X357349D01* Y506493D01* X358183Y505660D01* X361515Y509825D02* Y508992D01* X360682D01* X362348D01* X361515D01* Y506493D01* X362348Y505660D01* X365680D02* X367346D01* X368179Y506493D01* Y508159D01* X367346Y508992D01* X365680D01* X364847Y508159D01* Y506493D01* X365680Y505660D01* X369846D02* Y508992D01* X370678D01* X371512Y508159D01* Y505660D01* Y508159D01* X372345Y508992D01* X373178Y508159D01* Y505660D01* X383174Y509825D02* X382341Y510658D01* X380675D01* X379842Y509825D01* Y506493D01* X380675Y505660D01* X382341D01* X383174Y506493D01* X385674Y505660D02* X387340D01* X388173Y506493D01* Y508159D01* X387340Y508992D01* X385674D01* X384841Y508159D01* Y506493D01* X385674Y505660D01* X389839Y503994D02* Y508992D01* X392338D01* X393171Y508159D01* Y506493D01* X392338Y505660D01* X389839D01* X394837Y503994D02* Y508992D01* X397337D01* X398170Y508159D01* Y506493D01* X397337Y505660D01* X394837D01* X402335D02* X400669D01* X399836Y506493D01* Y508159D01* X400669Y508992D01* X402335D01* X403168Y508159D01* Y507326D01* X399836D01* X404834Y508992D02* Y505660D01* Y507326D01* X405667Y508159D01* X406500Y508992D01* X407333D01* D48* X169544Y234044D02* X172444D01* X166644D02* X169544D01* X167044Y234444D02* Y264944D01* Y268444D01* X349544Y234044D02* X352444D01* X346644D02* X349544D01* X347044Y234444D02* Y264944D01* Y268444D01* X169544Y414044D02* X172444D01* X166644D02* X169544D01* X167044Y414444D02* Y444944D01* Y448444D01* X349544Y414044D02* X352444D01* X346644D02* X349544D01* X347044Y414444D02* Y444944D01* Y448444D01* D49* X125000Y260000D02* D03* Y265000D02* D03* Y255000D02* D03* Y250000D02* D03* Y245000D02* D03* Y240000D02* D03* X124600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X290600Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X305100Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X291400Y229800D02* D03* Y234800D02* D03* Y239800D02* D03* Y244800D02* D03* Y254800D02* D03* Y249800D02* D03* X304800Y229300D02* D03* Y234300D02* D03* Y239300D02* D03* Y244300D02* D03* Y254300D02* D03* Y249300D02* D03* X125200Y409200D02* D03* Y414200D02* D03* Y419200D02* D03* Y424200D02* D03* Y434200D02* D03* Y429200D02* D03* X291200Y338300D02* D03* Y343300D02* D03* Y348300D02* D03* Y353300D02* D03* Y363300D02* D03* Y358300D02* D03* X291000Y404100D02* D03* Y409100D02* D03* Y414100D02* D03* Y419100D02* D03* Y429100D02* D03* Y424100D02* D03* X304900Y404500D02* D03* Y409500D02* D03* Y414500D02* D03* Y419500D02* D03* Y429500D02* D03* Y424500D02* D03* X304700Y338200D02* D03* Y343200D02* D03* Y348200D02* D03* Y353200D02* D03* Y363200D02* D03* Y358200D02* D03* X471200Y401400D02* D03* Y406400D02* D03* Y411400D02* D03* Y416400D02* D03* Y426400D02* D03* Y421400D02* D03* X471600Y339500D02* D03* Y344500D02* D03* Y349500D02* D03* Y354500D02* D03* Y364500D02* D03* Y359500D02* D03* Y216100D02* D03* Y221100D02* D03* Y226100D02* D03* Y231100D02* D03* Y241100D02* D03* Y236100D02* D03* X470600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X443700Y124400D02* D03* X438700D02* D03* X433700D02* D03* X428700D02* D03* X418700D02* D03* X423700D02* D03* X357000Y124000D02* D03* X352000D02* D03* X347000D02* D03* X342000D02* D03* X332000D02* D03* X337000D02* D03* X360500Y289900D02* D03* X355500D02* D03* X350500D02* D03* X345500D02* D03* X335500D02* D03* X340500D02* D03* X432500Y290100D02* D03* X427500D02* D03* X422500D02* D03* X417500D02* D03* X407500D02* D03* X412500D02* D03* X431400Y303700D02* D03* X426400D02* D03* X421400D02* D03* X416400D02* D03* X406400D02* D03* X411400D02* D03* X360600Y304500D02* D03* X355600D02* D03* X350600D02* D03* X345600D02* D03* X335600D02* D03* X340600D02* D03* X365000Y469600D02* D03* X360000D02* D03* X355000D02* D03* X350000D02* D03* X340000D02* D03* X345000D02* D03* X435000D02* D03* X430000D02* D03* X425000D02* D03* X420000D02* D03* X410000D02* D03* X415000D02* D03* X252600D02* D03* X247600D02* D03* X242600D02* D03* X237600D02* D03* X227600D02* D03* X232600D02* D03* X183200Y469800D02* D03* X178200D02* D03* X173200D02* D03* X168200D02* D03* X158200D02* D03* X163200D02* D03* X175500Y303900D02* D03* X170500D02* D03* X165500D02* D03* X160500D02* D03* X150500D02* D03* X155500D02* D03* X175700Y290100D02* D03* X170700D02* D03* X165700D02* D03* X160700D02* D03* X150700D02* D03* X155700D02* D03* X260900Y303300D02* D03* X255900D02* D03* X250900D02* D03* X245900D02* D03* X235900D02* D03* X240900D02* D03* X261100Y290100D02* D03* X256100D02* D03* X251100D02* D03* X246100D02* D03* X236100D02* D03* X241100D02* D03* X261300Y123800D02* D03* X256300D02* D03* X251300D02* D03* X246300D02* D03* X236300D02* D03* X241300D02* D03* X180500Y124000D02* D03* X175500D02* D03* X170500D02* D03* X165500D02* D03* X155500D02* D03* X160500D02* D03* X125100Y351700D02* D03* Y356700D02* D03* Y346700D02* D03* Y341700D02* D03* Y336700D02* D03* Y331700D02* D03* D50* X147744Y146744D02* D03* X269791D02* D03* Y268791D02* D03* X147744D02* D03* X327744Y146744D02* D03* X449791D02* D03* Y268791D02* D03* X327744D02* D03* X147744Y326744D02* D03* X269791D02* D03* Y448791D02* D03* X147744D02* D03* X327744Y326744D02* D03* X449791D02* D03* Y448791D02* D03* X327744D02* D03* D51* X133008Y181964D02* D03* Y209524D02* D03* X313008Y181964D02* D03* Y209524D02* D03* X133008Y361964D02* D03* Y389524D02* D03* X313008Y361964D02* D03* Y389524D02* D03* D52* X144031Y185901D02* D03* Y205587D02* D03* X324031Y185901D02* D03* Y205587D02* D03* X144031Y365901D02* D03* Y385587D02* D03* X324031Y365901D02* D03* Y385587D02* D03* D53* X132044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X235244Y252744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X312044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X415244Y252744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X132044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X235244Y432744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* X312044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X415244Y432744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* D54* X132044Y252344D02* D03* X312044D02* D03* X132044Y432344D02* D03* X312044D02* D03* D55* X141744Y166744D02* D03* Y171744D02* D03* X146744Y166744D02* D03* Y171744D02* D03* X151744Y166744D02* D03* Y171744D02* D03* X156744Y166744D02* D03* Y171744D02* D03* X161744Y166744D02* D03* X321744D02* D03* Y171744D02* D03* X326744Y166744D02* D03* Y171744D02* D03* X331744Y166744D02* D03* Y171744D02* D03* X336744Y166744D02* D03* Y171744D02* D03* X341744Y166744D02* D03* X141744Y346744D02* D03* Y351744D02* D03* X146744Y346744D02* D03* Y351744D02* D03* X151744Y346744D02* D03* Y351744D02* D03* X156744Y346744D02* D03* Y351744D02* D03* X161744Y346744D02* D03* X321744D02* D03* Y351744D02* D03* X326744Y346744D02* D03* Y351744D02* D03* X331744Y346744D02* D03* Y351744D02* D03* X336744Y346744D02* D03* Y351744D02* D03* X341744Y346744D02* D03* D56* X161744Y171744D02* D03* X341744D02* D03* X161744Y351744D02* D03* X341744D02* D03* D57* X205244Y252744D02* D03* X283500Y161200D02* D03* X385244Y252744D02* D03* X463500Y161200D02* D03* X205244Y432744D02* D03* X283500Y341200D02* D03* X385244Y432744D02* D03* X463500Y341200D02* D03* D58* X235744Y276244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* X235744Y456244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* D59* X150244Y207744D02* D03* X249400Y229705D02* D03* X184500Y143895D02* D03* X190800Y217300D02* D03* X183987Y168409D02* D03* X233941Y225283D02* D03* X232600Y165100D02* D03* X195700Y230200D02* D03* X186300Y200600D02* D03* X226418Y163000D02* D03* X173100Y191300D02* D03* X194700Y141400D02* D03* X166000Y165300D02* D03* X192600Y153100D02* D03* X188900Y152400D02* D03* X197900Y146186D02* D03* X192600Y149500D02* D03* X178000Y156600D02* D03* X154600Y181244D02* D03* X141244Y246244D02* D03* X141044Y226544D02* D03* X149244Y246344D02* D03* X149644Y226644D02* D03* X172444Y234044D02* D03* X166644D02* D03* X166744Y261644D02* D03* X167044Y268444D02* D03* X166644Y264944D02* D03* X169544Y234044D02* D03* X180244Y260744D02* D03* X188244D02* D03* X196244Y264744D02* D03* X176244Y268744D02* D03* X192244D02* D03* X196244D02* D03* X200244Y264744D02* D03* X230500Y168409D02* D03* X252200Y162700D02* D03* X243900Y237200D02* D03* X258744Y202700D02* D03* X255100Y190400D02* D03* X249100Y196900D02* D03* X238900Y220700D02* D03* Y186044D02* D03* X234700Y188100D02* D03* X272900Y205200D02* D03* X245900Y172900D02* D03* X245500Y186600D02* D03* X246100Y200700D02* D03* X228900Y160100D02* D03* X230700Y211200D02* D03* X234700Y192200D02* D03* X266700Y181800D02* D03* X175244Y202244D02* D03* X159087Y202744D02* D03* X212744Y185744D02* D03* X220244Y189744D02* D03* X221744Y185244D02* D03* X217744Y187244D02* D03* Y150244D02* D03* X222300Y151830D02* D03* X220200Y157244D02* D03* X207744Y188744D02* D03* X203744Y178244D02* D03* X224400Y227244D02* D03* X203744Y190244D02* D03* X199744Y188244D02* D03* X183244Y187244D02* D03* X187244Y181244D02* D03* X178744Y200744D02* D03* X202400Y165244D02* D03* X189744Y185244D02* D03* X213244Y148744D02* D03* X214744Y142244D02* D03* X242618Y148744D02* D03* X215244Y243244D02* D03* X201244Y239744D02* D03* X202244Y236244D02* D03* X199744Y243244D02* D03* X201244Y229244D02* D03* X198744Y234244D02* D03* X190244Y225900D02* D03* X232244Y238244D02* D03* X255244Y215244D02* D03* X234744Y202744D02* D03* X198544Y199889D02* D03* X141244Y232244D02* D03* X150244D02* D03* X141244Y251244D02* D03* X182744Y256744D02* D03* X180244Y268744D02* D03* X184244Y264744D02* D03* X176744Y236744D02* D03* X186244Y236650D02* D03* X188244Y234244D02* D03* Y230744D02* D03* X183744D02* D03* Y225244D02* D03* X192244Y260744D02* D03* X178744Y234244D02* D03* X183744D02* D03* X185744Y227744D02* D03* X172744Y225244D02* D03* X168744D02* D03* X181744Y221244D02* D03* X140744Y217244D02* D03* X136244Y260244D02* D03* Y269244D02* D03* X135744Y277244D02* D03* X143744Y283744D02* D03* X150744D02* D03* X158744Y283244D02* D03* X159744Y262244D02* D03* X147744Y217244D02* D03* X151744Y128744D02* D03* X206744Y128945D02* D03* X268744Y170344D02* D03* X242744Y128945D02* D03* X221744Y178244D02* D03* X226244Y191244D02* D03* X258744Y134244D02* D03* X259244Y157244D02* D03* X171744Y150744D02* D03* X330244Y207744D02* D03* X429400Y229705D02* D03* X364500Y143895D02* D03* X370800Y217300D02* D03* X363987Y168409D02* D03* X413941Y225283D02* D03* X412600Y165100D02* D03* X375700Y230200D02* D03* X366300Y200600D02* D03* X406418Y163000D02* D03* X353100Y191300D02* D03* X374700Y141400D02* D03* X346000Y165300D02* D03* X372600Y153100D02* D03* X368900Y152400D02* D03* X377900Y146186D02* D03* X372600Y149500D02* D03* X358000Y156600D02* D03* X334600Y181244D02* D03* X321244Y246244D02* D03* X321044Y226544D02* D03* X329244Y246344D02* D03* X329644Y226644D02* D03* X352444Y234044D02* D03* X346644D02* D03* X346744Y261644D02* D03* X347044Y268444D02* D03* X346644Y264944D02* D03* X349544Y234044D02* D03* X360244Y260744D02* D03* X368244D02* D03* X376244Y264744D02* D03* X356244Y268744D02* D03* X372244D02* D03* X376244D02* D03* X380244Y264744D02* D03* X410500Y168409D02* D03* X432200Y162700D02* D03* X423900Y237200D02* D03* X438744Y202700D02* D03* X435100Y190400D02* D03* X429100Y196900D02* D03* X418900Y220700D02* D03* Y186044D02* D03* X414700Y188100D02* D03* X452900Y205200D02* D03* X425900Y172900D02* D03* X425500Y186600D02* D03* X426100Y200700D02* D03* X408900Y160100D02* D03* X410700Y211200D02* D03* X414700Y192200D02* D03* X446700Y181800D02* D03* X355244Y202244D02* D03* X339087Y202744D02* D03* X392744Y185744D02* D03* X400244Y189744D02* D03* X401744Y185244D02* D03* X397744Y187244D02* D03* Y150244D02* D03* X402300Y151830D02* D03* X400200Y157244D02* D03* X387744Y188744D02* D03* X383744Y178244D02* D03* X404400Y227244D02* D03* X383744Y190244D02* D03* X379744Y188244D02* D03* X363244Y187244D02* D03* X367244Y181244D02* D03* X358744Y200744D02* D03* X382400Y165244D02* D03* X369744Y185244D02* D03* X393244Y148744D02* D03* X394744Y142244D02* D03* X422618Y148744D02* D03* X395244Y243244D02* D03* X381244Y239744D02* D03* X382244Y236244D02* D03* X379744Y243244D02* D03* X381244Y229244D02* D03* X378744Y234244D02* D03* X370244Y225900D02* D03* X412244Y238244D02* D03* X435244Y215244D02* D03* X414744Y202744D02* D03* X378544Y199889D02* D03* X321244Y232244D02* D03* X330244D02* D03* X321244Y251244D02* D03* X362744Y256744D02* D03* X360244Y268744D02* D03* X364244Y264744D02* D03* X356744Y236744D02* D03* X366244Y236650D02* D03* X368244Y234244D02* D03* Y230744D02* D03* X363744D02* D03* Y225244D02* D03* X372244Y260744D02* D03* X358744Y234244D02* D03* X363744D02* D03* X365744Y227744D02* D03* X352744Y225244D02* D03* X348744D02* D03* X361744Y221244D02* D03* X320744Y217244D02* D03* X316244Y260244D02* D03* Y269244D02* D03* X315744Y277244D02* D03* X323744Y283744D02* D03* X330744D02* D03* X338744Y283244D02* D03* X339744Y262244D02* D03* X327744Y217244D02* D03* X331744Y128744D02* D03* X386744Y128945D02* D03* X448744Y170344D02* D03* X422744Y128945D02* D03* X401744Y178244D02* D03* X406244Y191244D02* D03* X438744Y134244D02* D03* X439244Y157244D02* D03* X351744Y150744D02* D03* X150244Y387744D02* D03* X249400Y409705D02* D03* X184500Y323895D02* D03* X190800Y397300D02* D03* X183987Y348409D02* D03* X233941Y405283D02* D03* X232600Y345100D02* D03* X195700Y410200D02* D03* X186300Y380600D02* D03* X226418Y343000D02* D03* X173100Y371300D02* D03* X194700Y321400D02* D03* X166000Y345300D02* D03* X192600Y333100D02* D03* X188900Y332400D02* D03* X197900Y326186D02* D03* X192600Y329500D02* D03* X178000Y336600D02* D03* X154600Y361244D02* D03* X141244Y426244D02* D03* X141044Y406544D02* D03* X149244Y426344D02* D03* X149644Y406644D02* D03* X172444Y414044D02* D03* X166644D02* D03* X166744Y441644D02* D03* X167044Y448444D02* D03* X166644Y444944D02* D03* X169544Y414044D02* D03* X180244Y440744D02* D03* X188244D02* D03* X196244Y444744D02* D03* X176244Y448744D02* D03* X192244D02* D03* X196244D02* D03* X200244Y444744D02* D03* X230500Y348409D02* D03* X252200Y342700D02* D03* X243900Y417200D02* D03* X258744Y382700D02* D03* X255100Y370400D02* D03* X249100Y376900D02* D03* X238900Y400700D02* D03* Y366044D02* D03* X234700Y368100D02* D03* X272900Y385200D02* D03* X245900Y352900D02* D03* X245500Y366600D02* D03* X246100Y380700D02* D03* X228900Y340100D02* D03* X230700Y391200D02* D03* X234700Y372200D02* D03* X266700Y361800D02* D03* X175244Y382244D02* D03* X159087Y382744D02* D03* X212744Y365744D02* D03* X220244Y369744D02* D03* X221744Y365244D02* D03* X217744Y367244D02* D03* Y330244D02* D03* X222300Y331830D02* D03* X220200Y337244D02* D03* X207744Y368744D02* D03* X203744Y358244D02* D03* X224400Y407244D02* D03* X203744Y370244D02* D03* X199744Y368244D02* D03* X183244Y367244D02* D03* X187244Y361244D02* D03* X178744Y380744D02* D03* X202400Y345244D02* D03* X189744Y365244D02* D03* X213244Y328744D02* D03* X214744Y322244D02* D03* X242618Y328744D02* D03* X215244Y423244D02* D03* X201244Y419744D02* D03* X202244Y416244D02* D03* X199744Y423244D02* D03* X201244Y409244D02* D03* X198744Y414244D02* D03* X190244Y405900D02* D03* X232244Y418244D02* D03* X255244Y395244D02* D03* X234744Y382744D02* D03* X198544Y379889D02* D03* X141244Y412244D02* D03* X150244D02* D03* X141244Y431244D02* D03* X182744Y436744D02* D03* X180244Y448744D02* D03* X184244Y444744D02* D03* X176744Y416744D02* D03* X186244Y416650D02* D03* X188244Y414244D02* D03* Y410744D02* D03* X183744D02* D03* Y405244D02* D03* X192244Y440744D02* D03* X178744Y414244D02* D03* X183744D02* D03* X185744Y407744D02* D03* X172744Y405244D02* D03* X168744D02* D03* X181744Y401244D02* D03* X140744Y397244D02* D03* X136244Y440244D02* D03* Y449244D02* D03* X135744Y457244D02* D03* X143744Y463744D02* D03* X150744D02* D03* X158744Y463244D02* D03* X159744Y442244D02* D03* X147744Y397244D02* D03* X151744Y308744D02* D03* X206744Y308945D02* D03* X268744Y350344D02* D03* X242744Y308945D02* D03* X221744Y358244D02* D03* X226244Y371244D02* D03* X258744Y314244D02* D03* X259244Y337244D02* D03* X171744Y330744D02* D03* X330244Y387744D02* D03* X429400Y409705D02* D03* X364500Y323895D02* D03* X370800Y397300D02* D03* X363987Y348409D02* D03* X413941Y405283D02* D03* X412600Y345100D02* D03* X375700Y410200D02* D03* X366300Y380600D02* D03* X406418Y343000D02* D03* X353100Y371300D02* D03* X374700Y321400D02* D03* X346000Y345300D02* D03* X372600Y333100D02* D03* X368900Y332400D02* D03* X377900Y326186D02* D03* X372600Y329500D02* D03* X358000Y336600D02* D03* X334600Y361244D02* D03* X321244Y426244D02* D03* X321044Y406544D02* D03* X329244Y426344D02* D03* X329644Y406644D02* D03* X352444Y414044D02* D03* X346644D02* D03* X346744Y441644D02* D03* X347044Y448444D02* D03* X346644Y444944D02* D03* X349544Y414044D02* D03* X360244Y440744D02* D03* X368244D02* D03* X376244Y444744D02* D03* X356244Y448744D02* D03* X372244D02* D03* X376244D02* D03* X380244Y444744D02* D03* X410500Y348409D02* D03* X432200Y342700D02* D03* X423900Y417200D02* D03* X438744Y382700D02* D03* X435100Y370400D02* D03* X429100Y376900D02* D03* X418900Y400700D02* D03* Y366044D02* D03* X414700Y368100D02* D03* X452900Y385200D02* D03* X425900Y352900D02* D03* X425500Y366600D02* D03* X426100Y380700D02* D03* X408900Y340100D02* D03* X410700Y391200D02* D03* X414700Y372200D02* D03* X446700Y361800D02* D03* X355244Y382244D02* D03* X339087Y382744D02* D03* X392744Y365744D02* D03* X400244Y369744D02* D03* X401744Y365244D02* D03* X397744Y367244D02* D03* Y330244D02* D03* X402300Y331830D02* D03* X400200Y337244D02* D03* X387744Y368744D02* D03* X383744Y358244D02* D03* X404400Y407244D02* D03* X383744Y370244D02* D03* X379744Y368244D02* D03* X363244Y367244D02* D03* X367244Y361244D02* D03* X358744Y380744D02* D03* X382400Y345244D02* D03* X369744Y365244D02* D03* X393244Y328744D02* D03* X394744Y322244D02* D03* X422618Y328744D02* D03* X395244Y423244D02* D03* X381244Y419744D02* D03* X382244Y416244D02* D03* X379744Y423244D02* D03* X381244Y409244D02* D03* X378744Y414244D02* D03* X370244Y405900D02* D03* X412244Y418244D02* D03* X435244Y395244D02* D03* X414744Y382744D02* D03* X378544Y379889D02* D03* X321244Y412244D02* D03* X330244D02* D03* X321244Y431244D02* D03* X362744Y436744D02* D03* X360244Y448744D02* D03* X364244Y444744D02* D03* X356744Y416744D02* D03* X366244Y416650D02* D03* X368244Y414244D02* D03* Y410744D02* D03* X363744D02* D03* Y405244D02* D03* X372244Y440744D02* D03* X358744Y414244D02* D03* X363744D02* D03* X365744Y407744D02* D03* X352744Y405244D02* D03* X348744D02* D03* X361744Y401244D02* D03* X320744Y397244D02* D03* X316244Y440244D02* D03* Y449244D02* D03* X315744Y457244D02* D03* X323744Y463744D02* D03* X330744D02* D03* X338744Y463244D02* D03* X339744Y442244D02* D03* X327744Y397244D02* D03* X331744Y308744D02* D03* X386744Y308945D02* D03* X448744Y350344D02* D03* X422744Y308945D02* D03* X401744Y358244D02* D03* X406244Y371244D02* D03* X438744Y314244D02* D03* X439244Y337244D02* D03* X351744Y330744D02* D03* D60* X177013Y250875D02* D03* X181344D02* D03* X185675D02* D03* X177013Y246544D02* D03* X181344D02* D03* X185675D02* D03* X177013Y242213D02* D03* X181344D02* D03* X185675D02* D03* X357013Y250875D02* D03* X361344D02* D03* X365675D02* D03* X357013Y246544D02* D03* X361344D02* D03* X365675D02* D03* X357013Y242213D02* D03* X361344D02* D03* X365675D02* D03* X177013Y430875D02* D03* X181344D02* D03* X185675D02* D03* X177013Y426544D02* D03* X181344D02* D03* X185675D02* D03* X177013Y422213D02* D03* X181344D02* D03* X185675D02* D03* X357013Y430875D02* D03* X361344D02* D03* X365675D02* D03* X357013Y426544D02* D03* X361344D02* D03* X365675D02* D03* X357013Y422213D02* D03* X361344D02* D03* X365675D02* D03* D61* X258744Y226783D02* D03* Y231705D02* D03* X253744Y227283D02* D03* Y232205D02* D03* X238744Y230205D02* D03* Y225283D02* D03* X244744Y229705D02* D03* Y224783D02* D03* X262244Y249205D02* D03* Y244283D02* D03* X239744Y194205D02* D03* Y189283D02* D03* X438744Y226783D02* D03* Y231705D02* D03* X433744Y227283D02* D03* Y232205D02* D03* X418744Y230205D02* D03* Y225283D02* D03* X424744Y229705D02* D03* Y224783D02* D03* X442244Y249205D02* D03* Y244283D02* D03* X419744Y194205D02* D03* Y189283D02* D03* X258744Y406783D02* D03* Y411705D02* D03* X253744Y407283D02* D03* Y412205D02* D03* X238744Y410205D02* D03* Y405283D02* D03* X244744Y409705D02* D03* Y404783D02* D03* X262244Y429205D02* D03* Y424283D02* D03* X239744Y374205D02* D03* Y369283D02* D03* X438744Y406783D02* D03* Y411705D02* D03* X433744Y407283D02* D03* Y412205D02* D03* X418744Y410205D02* D03* Y405283D02* D03* X424744Y409705D02* D03* Y404783D02* D03* X442244Y429205D02* D03* Y424283D02* D03* X419744Y374205D02* D03* Y369283D02* D03* D62* X169587Y157244D02* D03* X174901D02* D03* X224902Y237244D02* D03* X219587D02* D03* X224902Y243244D02* D03* X219587D02* D03* X164902Y181244D02* D03* X159587D02* D03* X170087Y197244D02* D03* X175401D02* D03* X159587D02* D03* X164901D02* D03* X180587Y152744D02* D03* X185901D02* D03* X349587Y157244D02* D03* X354901D02* D03* X404902Y237244D02* D03* X399587D02* D03* X404902Y243244D02* D03* X399587D02* D03* X344902Y181244D02* D03* X339587D02* D03* X350087Y197244D02* D03* X355401D02* D03* X339587D02* D03* X344901D02* D03* X360587Y152744D02* D03* X365901D02* D03* X169587Y337244D02* D03* X174901D02* D03* X224902Y417244D02* D03* X219587D02* D03* X224902Y423244D02* D03* X219587D02* D03* X164902Y361244D02* D03* X159587D02* D03* X170087Y377244D02* D03* X175401D02* D03* X159587D02* D03* X164901D02* D03* X180587Y332744D02* D03* X185901D02* D03* X349587Y337244D02* D03* X354901D02* D03* X404902Y417244D02* D03* X399587D02* D03* X404902Y423244D02* D03* X399587D02* D03* X344902Y361244D02* D03* X339587D02* D03* X350087Y377244D02* D03* X355401D02* D03* X339587D02* D03* X344901D02* D03* X360587Y332744D02* D03* X365901D02* D03* D63* X189984Y199701D02* D03* X369984D02* D03* X189984Y379701D02* D03* X369984D02* D03* D64* X182504Y199701D02* D03* X186244Y206787D02* D03* X362504Y199701D02* D03* X366244Y206787D02* D03* X182504Y379701D02* D03* X186244Y386787D02* D03* X362504Y379701D02* D03* X366244Y386787D02* D03* D65* X216421Y196177D02* D03* X396421D02* D03* X216421Y376177D02* D03* X396421D02* D03* D66* X213862Y196177D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X216421Y219406D02* D03* X213862D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X393862Y196177D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* X396421Y219406D02* D03* X393862D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* X213862Y376177D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X216421Y399406D02* D03* X213862D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X393862Y376177D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* X396421Y399406D02* D03* X393862D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* M02* ================================================ FILE: hardware/panel.GBO ================================================ G04 Layer_Color=65280* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD43C,0.00800*% %ADD67C,0.00984*% %ADD69C,0.00787*% %ADD116C,0.02362*% D43* X191501Y214400D02* Y216399D01* X192000Y216899D01* X193000D01* X193500Y216399D01* Y214400D01* X193000Y213900D01* X192000D01* X192500Y214900D02* X191501Y213900D01* X192000D02* X191501Y214400D01* X188502Y213900D02* X190501D01* X188502Y215899D01* Y216399D01* X189001Y216899D01* X190001D01* X190501Y216399D01* X155744Y195244D02* Y198243D01* X154245D01* X153745Y197743D01* Y196744D01* X154245Y196244D01* X155744D01* X154744D02* X153745Y195244D01* X150746Y198243D02* X151745Y197743D01* X152745Y196744D01* Y195744D01* X152245Y195244D01* X151245D01* X150746Y195744D01* Y196244D01* X151245Y196744D01* X152745D01* X173244Y200744D02* Y203743D01* X171745D01* X171245Y203243D01* Y202244D01* X171745Y201744D01* X173244D01* X172244D02* X171245Y200744D01* X168246Y203743D02* X170245D01* Y202244D01* X169245Y202743D01* X168746D01* X168246Y202244D01* Y201244D01* X168746Y200744D01* X169745D01* X170245Y201244D01* X173344Y160444D02* Y163443D01* X171845D01* X171345Y162943D01* Y161944D01* X171845Y161444D01* X173344D01* X172344D02* X171345Y160444D01* X170345Y162943D02* X169845Y163443D01* X168845D01* X168346Y162943D01* Y162443D01* X168845Y161944D01* X168346Y161444D01* Y160944D01* X168845Y160444D01* X169845D01* X170345Y160944D01* Y161444D01* X169845Y161944D01* X170345Y162443D01* Y162943D01* X169845Y161944D02* X168845D01* X173544Y179644D02* Y182643D01* X172045D01* X171545Y182143D01* Y181144D01* X172045Y180644D01* X173544D01* X172544D02* X171545Y179644D01* X170545D02* X169545D01* X170045D01* Y182643D01* X170545Y182143D01* X168046D02* X167546Y182643D01* X166546D01* X166047Y182143D01* Y181643D01* X166546Y181144D01* X167046D01* X166546D01* X166047Y180644D01* Y180144D01* X166546Y179644D01* X167546D01* X168046Y180144D01* X187244Y155244D02* Y158243D01* X185745D01* X185245Y157743D01* Y156744D01* X185745Y156244D01* X187244D01* X186244D02* X185245Y155244D01* X182746D02* Y158243D01* X184245Y156744D01* X182246D01* X212245Y167243D02* X212745Y167743D01* X213744D01* X214244Y167243D01* Y165244D01* X213744Y164744D01* X212745D01* X212245Y165244D01* X209246Y164744D02* X211245D01* X209246Y166743D01* Y167243D01* X209746Y167743D01* X210745D01* X211245Y167243D01* X208246D02* X207746Y167743D01* X206747D01* X206247Y167243D01* Y165244D01* X206747Y164744D01* X207746D01* X208246Y165244D01* Y167243D01* X213561Y153743D02* X214061Y154243D01* X215061D01* X215561Y153743D01* Y151744D01* X215061Y151244D01* X214061D01* X213561Y151744D01* X212562Y151244D02* X211562D01* X212062D01* Y154243D01* X212562Y153743D01* X210063Y151744D02* X209563Y151244D01* X208563D01* X208063Y151744D01* Y153743D01* X208563Y154243D01* X209563D01* X210063Y153743D01* Y153243D01* X209563Y152744D01* X208063D01* X201945Y165443D02* X202445Y165943D01* X203444D01* X203944Y165443D01* Y163444D01* X203444Y162944D01* X202445D01* X201945Y163444D01* X200945Y162944D02* X199945D01* X200445D01* Y165943D01* X200945Y165443D01* X196946Y162944D02* Y165943D01* X198446Y164444D01* X196447D01* X247243Y235743D02* X247743Y235244D01* Y234244D01* X247243Y233744D01* X245244D01* X244744Y234244D01* Y235244D01* X245244Y235743D01* Y236743D02* X244744Y237243D01* Y238243D01* X245244Y238742D01* X247243D01* X247743Y238243D01* Y237243D01* X247243Y236743D01* X246743D01* X246244Y237243D01* Y238742D01* X186145Y189743D02* X186645Y190243D01* X187644D01* X188144Y189743D01* Y187744D01* X187644Y187244D01* X186645D01* X186145Y187744D01* X185145Y189743D02* X184645Y190243D01* X183645D01* X183146Y189743D01* Y189243D01* X183645Y188744D01* X183146Y188244D01* Y187744D01* X183645Y187244D01* X184645D01* X185145Y187744D01* Y188244D01* X184645Y188744D01* X185145Y189243D01* Y189743D01* X184645Y188744D02* X183645D01* X190245Y174243D02* X190745Y174743D01* X191744D01* X192244Y174243D01* Y172244D01* X191744Y171744D01* X190745D01* X190245Y172244D01* X189245Y174743D02* X187246D01* Y174243D01* X189245Y172244D01* Y171744D01* X202245Y226243D02* X202745Y226743D01* X203744D01* X204244Y226243D01* Y224244D01* X203744Y223744D01* X202745D01* X202245Y224244D01* X201245Y223744D02* X200245D01* X200745D01* Y226743D01* X201245Y226243D01* X196747Y226743D02* X198746D01* Y225244D01* X197746Y225743D01* X197246D01* X196747Y225244D01* Y224244D01* X197246Y223744D01* X198246D01* X198746Y224244D01* X214205Y177704D02* X214705Y178204D01* X215705D01* X216205Y177704D01* Y175704D01* X215705Y175205D01* X214705D01* X214205Y175704D01* X211206Y178204D02* X212206Y177704D01* X213206Y176704D01* Y175704D01* X212706Y175205D01* X211706D01* X211206Y175704D01* Y176204D01* X211706Y176704D01* X213206D01* X264243Y228243D02* X264743Y227744D01* Y226744D01* X264243Y226244D01* X262244D01* X261744Y226744D01* Y227744D01* X262244Y228243D01* X261744Y231242D02* Y229243D01* X263743Y231242D01* X264243D01* X264743Y230743D01* Y229743D01* X264243Y229243D01* X201845Y150043D02* X202345Y150543D01* X203344D01* X203844Y150043D01* Y148044D01* X203344Y147544D01* X202345D01* X201845Y148044D01* X199346Y147544D02* Y150543D01* X200845Y149044D01* X198846D01* X254743Y236243D02* X255243Y235744D01* Y234744D01* X254743Y234244D01* X252744D01* X252244Y234744D01* Y235744D01* X252744Y236243D01* X254743Y237243D02* X255243Y237743D01* Y238743D01* X254743Y239243D01* X254243D01* X253744Y238743D01* Y238243D01* Y238743D01* X253244Y239243D01* X252744D01* X252244Y238743D01* Y237743D01* X252744Y237243D01* X240099Y235987D02* X240599Y235488D01* Y234488D01* X240099Y233988D01* X238100D01* X237600Y234488D01* Y235488D01* X238100Y235987D01* X240599Y238987D02* Y236987D01* X239100D01* X239599Y237987D01* Y238487D01* X239100Y238987D01* X238100D01* X237600Y238487D01* Y237487D01* X238100Y236987D01* X225744Y210743D02* Y208244D01* X225244Y207744D01* X224245D01* X223745Y208244D01* Y210743D01* X220746D02* X221745Y210243D01* X222745Y209244D01* Y208244D01* X222245Y207744D01* X221246D01* X220746Y208244D01* Y208744D01* X221246Y209244D01* X222745D01* X210245Y233743D02* X210745Y234243D01* X211744D01* X212244Y233743D01* Y231744D01* X211744Y231244D01* X210745D01* X210245Y231744D01* X207246Y231244D02* X209245D01* X207246Y233243D01* Y233743D01* X207746Y234243D01* X208745D01* X209245Y233743D01* X204247Y231244D02* X206246D01* X204247Y233243D01* Y233743D01* X204747Y234243D01* X205746D01* X206246Y233743D01* X201245Y246743D02* X201745Y247243D01* X202744D01* X203244Y246743D01* Y244744D01* X202744Y244244D01* X201745D01* X201245Y244744D01* X198246Y244244D02* X200245D01* X198246Y246243D01* Y246743D01* X198746Y247243D01* X199745D01* X200245Y246743D01* X197246D02* X196746Y247243D01* X195747D01* X195247Y246743D01* Y246243D01* X195747Y245744D01* X196246D01* X195747D01* X195247Y245244D01* Y244744D01* X195747Y244244D01* X196746D01* X197246Y244744D01* X224744Y230744D02* Y233743D01* X223245D01* X222745Y233243D01* Y232244D01* X223245Y231744D01* X224744D01* X223744D02* X222745Y230744D01* X221745Y233743D02* X219746D01* Y233243D01* X221745Y231244D01* Y230744D01* X226303Y247372D02* Y250371D01* X224803D01* X224303Y249871D01* Y248871D01* X224803Y248371D01* X226303D01* X225303D02* X224303Y247372D01* X223304D02* X222304D01* X222804D01* Y250371D01* X223304Y249871D01* X218805Y247372D02* X220804D01* X218805Y249371D01* Y249871D01* X219305Y250371D01* X220304D01* X220804Y249871D01* X268243Y245743D02* X268743Y245244D01* Y244244D01* X268243Y243744D01* X266244D01* X265744Y244244D01* Y245244D01* X266244Y245743D01* X265744Y246743D02* Y247743D01* Y247243D01* X268743D01* X268243Y246743D01* X235245Y199743D02* X235745Y200243D01* X236744D01* X237244Y199743D01* Y197744D01* X236744Y197244D01* X235745D01* X235245Y197744D01* X234245Y197244D02* X233245D01* X233745D01* Y200243D01* X234245Y199743D01* X231746D02* X231246Y200243D01* X230246D01* X229747Y199743D01* Y197744D01* X230246Y197244D01* X231246D01* X231746Y197744D01* Y199743D01* X267244Y203744D02* Y206743D01* X265745D01* X265245Y206243D01* Y205244D01* X265745Y204744D01* X267244D01* X266244D02* X265245Y203744D01* X264245Y206243D02* X263745Y206743D01* X262745D01* X262246Y206243D01* Y205743D01* X262745Y205244D01* X263245D01* X262745D01* X262246Y204744D01* Y204244D01* X262745Y203744D01* X263745D01* X264245Y204244D01* X245744Y207744D02* Y210743D01* X244245D01* X243745Y210243D01* Y209244D01* X244245Y208744D01* X245744D01* X244744D02* X243745Y207744D01* X242745Y208244D02* X242245Y207744D01* X241246D01* X240746Y208244D01* Y210243D01* X241246Y210743D01* X242245D01* X242745Y210243D01* Y209743D01* X242245Y209244D01* X240746D01* X270244Y187744D02* Y190743D01* X268745D01* X268245Y190243D01* Y189244D01* X268745Y188744D01* X270244D01* X269244D02* X268245Y187744D01* X267245D02* X266245D01* X266745D01* Y190743D01* X267245Y190243D01* X263246Y187744D02* Y190743D01* X264746Y189244D01* X262747D01* X253244Y181244D02* Y184243D01* X251745D01* X251245Y183743D01* Y182744D01* X251745Y182244D01* X253244D01* X252244D02* X251245Y181244D01* X250245D02* X249245D01* X249745D01* Y184243D01* X250245Y183743D01* X245746Y184243D02* X247746D01* Y182744D01* X246746Y183243D01* X246246D01* X245746Y182744D01* Y181744D01* X246246Y181244D01* X247246D01* X247746Y181744D01* X270244Y170244D02* Y173243D01* X268745D01* X268245Y172743D01* Y171744D01* X268745Y171244D01* X270244D01* X269244D02* X268245Y170244D01* X267245D02* X266245D01* X266745D01* Y173243D01* X267245Y172743D01* X262747Y173243D02* X263746Y172743D01* X264746Y171744D01* Y170744D01* X264246Y170244D01* X263246D01* X262747Y170744D01* Y171244D01* X263246Y171744D01* X264746D01* X246744Y167244D02* Y170243D01* X245245D01* X244745Y169743D01* Y168744D01* X245245Y168244D01* X246744D01* X245744D02* X244745Y167244D01* X243745D02* X242745D01* X243245D01* Y170243D01* X243745Y169743D01* X241246Y170243D02* X239247D01* Y169743D01* X241246Y167744D01* Y167244D01* X168120Y328992D02* Y323994D01* X170619D01* X171452Y324827D01* Y325660D01* X170619Y326493D01* X168120D01* X170619D01* X171452Y327326D01* Y328159D01* X170619Y328992D01* X168120D01* X173951Y323994D02* X175617D01* X176450Y324827D01* Y326493D01* X175617Y327326D01* X173951D01* X173118Y326493D01* Y324827D01* X173951Y323994D01* X178949Y328159D02* Y327326D01* X178117D01* X179783D01* X178949D01* Y324827D01* X179783Y323994D01* X183115Y328159D02* Y327326D01* X182282D01* X183948D01* X183115D01* Y324827D01* X183948Y323994D01* X187280D02* X188946D01* X189779Y324827D01* Y326493D01* X188946Y327326D01* X187280D01* X186447Y326493D01* Y324827D01* X187280Y323994D01* X191446D02* Y327326D01* X192279D01* X193112Y326493D01* Y323994D01* Y326493D01* X193945Y327326D01* X194778Y326493D01* Y323994D01* X204774Y328159D02* X203941Y328992D01* X202275D01* X201442Y328159D01* Y327326D01* X202275Y326493D01* X203941D01* X204774Y325660D01* Y324827D01* X203941Y323994D01* X202275D01* X201442Y324827D01* X206441Y323994D02* X208107D01* X207274D01* Y327326D01* X206441D01* X210606Y323994D02* X212272D01* X211439D01* Y328992D01* X210606D01* X214771Y323994D02* Y328992D01* Y325660D02* X217270Y327326D01* X214771Y325660D02* X217270Y323994D01* X219770D02* X222269D01* X223102Y324827D01* X222269Y325660D01* X220603D01* X219770Y326493D01* X220603Y327326D01* X223102D01* X228100D02* X225601D01* X224768Y326493D01* Y324827D01* X225601Y323994D01* X228100D01* X229766Y327326D02* Y323994D01* Y325660D01* X230599Y326493D01* X231433Y327326D01* X232266D01* X237264Y323994D02* X235598D01* X234765Y324827D01* Y326493D01* X235598Y327326D01* X237264D01* X238097Y326493D01* Y325660D01* X234765D01* X242262Y323994D02* X240596D01* X239763Y324827D01* Y326493D01* X240596Y327326D01* X242262D01* X243095Y326493D01* Y325660D01* X239763D01* X244761Y323994D02* Y327326D01* X247261D01* X248094Y326493D01* Y323994D01* X371501Y214400D02* Y216399D01* X372001Y216899D01* X373000D01* X373500Y216399D01* Y214400D01* X373000Y213900D01* X372001D01* X372500Y214900D02* X371501Y213900D01* X372001D02* X371501Y214400D01* X368502Y213900D02* X370501D01* X368502Y215899D01* Y216399D01* X369002Y216899D01* X370001D01* X370501Y216399D01* X335744Y195244D02* Y198243D01* X334245D01* X333745Y197743D01* Y196744D01* X334245Y196244D01* X335744D01* X334744D02* X333745Y195244D01* X330746Y198243D02* X331745Y197743D01* X332745Y196744D01* Y195744D01* X332245Y195244D01* X331245D01* X330746Y195744D01* Y196244D01* X331245Y196744D01* X332745D01* X353244Y200744D02* Y203743D01* X351745D01* X351245Y203243D01* Y202244D01* X351745Y201744D01* X353244D01* X352244D02* X351245Y200744D01* X348246Y203743D02* X350245D01* Y202244D01* X349245Y202743D01* X348745D01* X348246Y202244D01* Y201244D01* X348745Y200744D01* X349745D01* X350245Y201244D01* X353344Y160444D02* Y163443D01* X351845D01* X351345Y162943D01* Y161944D01* X351845Y161444D01* X353344D01* X352344D02* X351345Y160444D01* X350345Y162943D02* X349845Y163443D01* X348846D01* X348346Y162943D01* Y162443D01* X348846Y161944D01* X348346Y161444D01* Y160944D01* X348846Y160444D01* X349845D01* X350345Y160944D01* Y161444D01* X349845Y161944D01* X350345Y162443D01* Y162943D01* X349845Y161944D02* X348846D01* X353544Y179644D02* Y182643D01* X352045D01* X351545Y182143D01* Y181144D01* X352045Y180644D01* X353544D01* X352544D02* X351545Y179644D01* X350545D02* X349545D01* X350045D01* Y182643D01* X350545Y182143D01* X348046D02* X347546Y182643D01* X346546D01* X346046Y182143D01* Y181643D01* X346546Y181144D01* X347046D01* X346546D01* X346046Y180644D01* Y180144D01* X346546Y179644D01* X347546D01* X348046Y180144D01* X367244Y155244D02* Y158243D01* X365745D01* X365245Y157743D01* Y156744D01* X365745Y156244D01* X367244D01* X366244D02* X365245Y155244D01* X362745D02* Y158243D01* X364245Y156744D01* X362246D01* X392245Y167243D02* X392745Y167743D01* X393744D01* X394244Y167243D01* Y165244D01* X393744Y164744D01* X392745D01* X392245Y165244D01* X389246Y164744D02* X391245D01* X389246Y166743D01* Y167243D01* X389745Y167743D01* X390745D01* X391245Y167243D01* X388246D02* X387746Y167743D01* X386747D01* X386247Y167243D01* Y165244D01* X386747Y164744D01* X387746D01* X388246Y165244D01* Y167243D01* X393561Y153743D02* X394061Y154243D01* X395061D01* X395561Y153743D01* Y151744D01* X395061Y151244D01* X394061D01* X393561Y151744D01* X392562Y151244D02* X391562D01* X392062D01* Y154243D01* X392562Y153743D01* X390062Y151744D02* X389563Y151244D01* X388563D01* X388063Y151744D01* Y153743D01* X388563Y154243D01* X389563D01* X390062Y153743D01* Y153243D01* X389563Y152744D01* X388063D01* X381945Y165443D02* X382445Y165943D01* X383444D01* X383944Y165443D01* Y163444D01* X383444Y162944D01* X382445D01* X381945Y163444D01* X380945Y162944D02* X379945D01* X380445D01* Y165943D01* X380945Y165443D01* X376946Y162944D02* Y165943D01* X378446Y164444D01* X376447D01* X427243Y235743D02* X427743Y235244D01* Y234244D01* X427243Y233744D01* X425244D01* X424744Y234244D01* Y235244D01* X425244Y235743D01* Y236743D02* X424744Y237243D01* Y238243D01* X425244Y238742D01* X427243D01* X427743Y238243D01* Y237243D01* X427243Y236743D01* X426743D01* X426244Y237243D01* Y238742D01* X366145Y189743D02* X366645Y190243D01* X367644D01* X368144Y189743D01* Y187744D01* X367644Y187244D01* X366645D01* X366145Y187744D01* X365145Y189743D02* X364645Y190243D01* X363646D01* X363146Y189743D01* Y189243D01* X363646Y188744D01* X363146Y188244D01* Y187744D01* X363646Y187244D01* X364645D01* X365145Y187744D01* Y188244D01* X364645Y188744D01* X365145Y189243D01* Y189743D01* X364645Y188744D02* X363646D01* X370245Y174243D02* X370745Y174743D01* X371744D01* X372244Y174243D01* Y172244D01* X371744Y171744D01* X370745D01* X370245Y172244D01* X369245Y174743D02* X367246D01* Y174243D01* X369245Y172244D01* Y171744D01* X382245Y226243D02* X382745Y226743D01* X383744D01* X384244Y226243D01* Y224244D01* X383744Y223744D01* X382745D01* X382245Y224244D01* X381245Y223744D02* X380245D01* X380745D01* Y226743D01* X381245Y226243D01* X376747Y226743D02* X378746D01* Y225244D01* X377746Y225743D01* X377246D01* X376747Y225244D01* Y224244D01* X377246Y223744D01* X378246D01* X378746Y224244D01* X394205Y177704D02* X394705Y178204D01* X395705D01* X396205Y177704D01* Y175704D01* X395705Y175205D01* X394705D01* X394205Y175704D01* X391206Y178204D02* X392206Y177704D01* X393206Y176704D01* Y175704D01* X392706Y175205D01* X391706D01* X391206Y175704D01* Y176204D01* X391706Y176704D01* X393206D01* X444243Y228243D02* X444743Y227744D01* Y226744D01* X444243Y226244D01* X442244D01* X441744Y226744D01* Y227744D01* X442244Y228243D01* X441744Y231242D02* Y229243D01* X443743Y231242D01* X444243D01* X444743Y230743D01* Y229743D01* X444243Y229243D01* X381845Y150043D02* X382345Y150543D01* X383344D01* X383844Y150043D01* Y148044D01* X383344Y147544D01* X382345D01* X381845Y148044D01* X379345Y147544D02* Y150543D01* X380845Y149044D01* X378846D01* X434743Y236243D02* X435243Y235744D01* Y234744D01* X434743Y234244D01* X432744D01* X432244Y234744D01* Y235744D01* X432744Y236243D01* X434743Y237243D02* X435243Y237743D01* Y238743D01* X434743Y239243D01* X434243D01* X433744Y238743D01* Y238243D01* Y238743D01* X433244Y239243D01* X432744D01* X432244Y238743D01* Y237743D01* X432744Y237243D01* X420099Y235987D02* X420599Y235488D01* Y234488D01* X420099Y233988D01* X418100D01* X417600Y234488D01* Y235488D01* X418100Y235987D01* X420599Y238987D02* Y236987D01* X419100D01* X419599Y237987D01* Y238487D01* X419100Y238987D01* X418100D01* X417600Y238487D01* Y237487D01* X418100Y236987D01* X405744Y210743D02* Y208244D01* X405244Y207744D01* X404245D01* X403745Y208244D01* Y210743D01* X400746D02* X401745Y210243D01* X402745Y209244D01* Y208244D01* X402245Y207744D01* X401245D01* X400746Y208244D01* Y208744D01* X401245Y209244D01* X402745D01* X390245Y233743D02* X390745Y234243D01* X391744D01* X392244Y233743D01* Y231744D01* X391744Y231244D01* X390745D01* X390245Y231744D01* X387246Y231244D02* X389245D01* X387246Y233243D01* Y233743D01* X387745Y234243D01* X388745D01* X389245Y233743D01* X384247Y231244D02* X386246D01* X384247Y233243D01* Y233743D01* X384747Y234243D01* X385746D01* X386246Y233743D01* X381245Y246743D02* X381745Y247243D01* X382744D01* X383244Y246743D01* Y244744D01* X382744Y244244D01* X381745D01* X381245Y244744D01* X378246Y244244D02* X380245D01* X378246Y246243D01* Y246743D01* X378746Y247243D01* X379745D01* X380245Y246743D01* X377246D02* X376746Y247243D01* X375746D01* X375247Y246743D01* Y246243D01* X375746Y245744D01* X376246D01* X375746D01* X375247Y245244D01* Y244744D01* X375746Y244244D01* X376746D01* X377246Y244744D01* X404744Y230744D02* Y233743D01* X403245D01* X402745Y233243D01* Y232244D01* X403245Y231744D01* X404744D01* X403744D02* X402745Y230744D01* X401745Y233743D02* X399746D01* Y233243D01* X401745Y231244D01* Y230744D01* X406302Y247372D02* Y250371D01* X404803D01* X404303Y249871D01* Y248871D01* X404803Y248371D01* X406302D01* X405303D02* X404303Y247372D01* X403303D02* X402304D01* X402804D01* Y250371D01* X403303Y249871D01* X398805Y247372D02* X400804D01* X398805Y249371D01* Y249871D01* X399305Y250371D01* X400304D01* X400804Y249871D01* X448243Y245743D02* X448743Y245244D01* Y244244D01* X448243Y243744D01* X446244D01* X445744Y244244D01* Y245244D01* X446244Y245743D01* X445744Y246743D02* Y247743D01* Y247243D01* X448743D01* X448243Y246743D01* X415245Y199743D02* X415745Y200243D01* X416744D01* X417244Y199743D01* Y197744D01* X416744Y197244D01* X415745D01* X415245Y197744D01* X414245Y197244D02* X413245D01* X413745D01* Y200243D01* X414245Y199743D01* X411746D02* X411246Y200243D01* X410246D01* X409747Y199743D01* Y197744D01* X410246Y197244D01* X411246D01* X411746Y197744D01* Y199743D01* X447244Y203744D02* Y206743D01* X445745D01* X445245Y206243D01* Y205244D01* X445745Y204744D01* X447244D01* X446244D02* X445245Y203744D01* X444245Y206243D02* X443745Y206743D01* X442745D01* X442246Y206243D01* Y205743D01* X442745Y205244D01* X443245D01* X442745D01* X442246Y204744D01* Y204244D01* X442745Y203744D01* X443745D01* X444245Y204244D01* X425744Y207744D02* Y210743D01* X424245D01* X423745Y210243D01* Y209244D01* X424245Y208744D01* X425744D01* X424744D02* X423745Y207744D01* X422745Y208244D02* X422245Y207744D01* X421245D01* X420746Y208244D01* Y210243D01* X421245Y210743D01* X422245D01* X422745Y210243D01* Y209743D01* X422245Y209244D01* X420746D01* X450244Y187744D02* Y190743D01* X448745D01* X448245Y190243D01* Y189244D01* X448745Y188744D01* X450244D01* X449244D02* X448245Y187744D01* X447245D02* X446245D01* X446745D01* Y190743D01* X447245Y190243D01* X443246Y187744D02* Y190743D01* X444746Y189244D01* X442746D01* X433244Y181244D02* Y184243D01* X431745D01* X431245Y183743D01* Y182744D01* X431745Y182244D01* X433244D01* X432244D02* X431245Y181244D01* X430245D02* X429245D01* X429745D01* Y184243D01* X430245Y183743D01* X425746Y184243D02* X427746D01* Y182744D01* X426746Y183243D01* X426246D01* X425746Y182744D01* Y181744D01* X426246Y181244D01* X427246D01* X427746Y181744D01* X450244Y170244D02* Y173243D01* X448745D01* X448245Y172743D01* Y171744D01* X448745Y171244D01* X450244D01* X449244D02* X448245Y170244D01* X447245D02* X446245D01* X446745D01* Y173243D01* X447245Y172743D01* X442746Y173243D02* X443746Y172743D01* X444746Y171744D01* Y170744D01* X444246Y170244D01* X443246D01* X442746Y170744D01* Y171244D01* X443246Y171744D01* X444746D01* X426744Y167244D02* Y170243D01* X425245D01* X424745Y169743D01* Y168744D01* X425245Y168244D01* X426744D01* X425744D02* X424745Y167244D01* X423745D02* X422745D01* X423245D01* Y170243D01* X423745Y169743D01* X421246Y170243D02* X419246D01* Y169743D01* X421246Y167744D01* Y167244D01* X348120Y328992D02* Y323994D01* X350619D01* X351452Y324827D01* Y325660D01* X350619Y326493D01* X348120D01* X350619D01* X351452Y327326D01* Y328159D01* X350619Y328992D01* X348120D01* X353951Y323994D02* X355617D01* X356450Y324827D01* Y326493D01* X355617Y327326D01* X353951D01* X353118Y326493D01* Y324827D01* X353951Y323994D01* X358949Y328159D02* Y327326D01* X358116D01* X359783D01* X358949D01* Y324827D01* X359783Y323994D01* X363115Y328159D02* Y327326D01* X362282D01* X363948D01* X363115D01* Y324827D01* X363948Y323994D01* X367280D02* X368946D01* X369779Y324827D01* Y326493D01* X368946Y327326D01* X367280D01* X366447Y326493D01* Y324827D01* X367280Y323994D01* X371445D02* Y327326D01* X372278D01* X373112Y326493D01* Y323994D01* Y326493D01* X373945Y327326D01* X374778Y326493D01* Y323994D01* X384774Y328159D02* X383941Y328992D01* X382275D01* X381442Y328159D01* Y327326D01* X382275Y326493D01* X383941D01* X384774Y325660D01* Y324827D01* X383941Y323994D01* X382275D01* X381442Y324827D01* X386441Y323994D02* X388107D01* X387274D01* Y327326D01* X386441D01* X390606Y323994D02* X392272D01* X391439D01* Y328992D01* X390606D01* X394771Y323994D02* Y328992D01* Y325660D02* X397270Y327326D01* X394771Y325660D02* X397270Y323994D01* X399770D02* X402269D01* X403102Y324827D01* X402269Y325660D01* X400603D01* X399770Y326493D01* X400603Y327326D01* X403102D01* X408100D02* X405601D01* X404768Y326493D01* Y324827D01* X405601Y323994D01* X408100D01* X409766Y327326D02* Y323994D01* Y325660D01* X410599Y326493D01* X411433Y327326D01* X412266D01* X417264Y323994D02* X415598D01* X414765Y324827D01* Y326493D01* X415598Y327326D01* X417264D01* X418097Y326493D01* Y325660D01* X414765D01* X422262Y323994D02* X420596D01* X419763Y324827D01* Y326493D01* X420596Y327326D01* X422262D01* X423095Y326493D01* Y325660D01* X419763D01* X424761Y323994D02* Y327326D01* X427261D01* X428094Y326493D01* Y323994D01* X191501Y394400D02* Y396399D01* X192000Y396899D01* X193000D01* X193500Y396399D01* Y394400D01* X193000Y393900D01* X192000D01* X192500Y394900D02* X191501Y393900D01* X192000D02* X191501Y394400D01* X188502Y393900D02* X190501D01* X188502Y395899D01* Y396399D01* X189001Y396899D01* X190001D01* X190501Y396399D01* X155744Y375244D02* Y378243D01* X154245D01* X153745Y377743D01* Y376744D01* X154245Y376244D01* X155744D01* X154744D02* X153745Y375244D01* X150746Y378243D02* X151745Y377743D01* X152745Y376744D01* Y375744D01* X152245Y375244D01* X151245D01* X150746Y375744D01* Y376244D01* X151245Y376744D01* X152745D01* X173244Y380744D02* Y383743D01* X171745D01* X171245Y383243D01* Y382244D01* X171745Y381744D01* X173244D01* X172244D02* X171245Y380744D01* X168246Y383743D02* X170245D01* Y382244D01* X169245Y382743D01* X168746D01* X168246Y382244D01* Y381244D01* X168746Y380744D01* X169745D01* X170245Y381244D01* X173344Y340444D02* Y343443D01* X171845D01* X171345Y342943D01* Y341944D01* X171845Y341444D01* X173344D01* X172344D02* X171345Y340444D01* X170345Y342943D02* X169845Y343443D01* X168845D01* X168346Y342943D01* Y342443D01* X168845Y341944D01* X168346Y341444D01* Y340944D01* X168845Y340444D01* X169845D01* X170345Y340944D01* Y341444D01* X169845Y341944D01* X170345Y342443D01* Y342943D01* X169845Y341944D02* X168845D01* X173544Y359644D02* Y362643D01* X172045D01* X171545Y362143D01* Y361144D01* X172045Y360644D01* X173544D01* X172544D02* X171545Y359644D01* X170545D02* X169545D01* X170045D01* Y362643D01* X170545Y362143D01* X168046D02* X167546Y362643D01* X166546D01* X166047Y362143D01* Y361643D01* X166546Y361144D01* X167046D01* X166546D01* X166047Y360644D01* Y360144D01* X166546Y359644D01* X167546D01* X168046Y360144D01* X187244Y335244D02* Y338243D01* X185745D01* X185245Y337743D01* Y336744D01* X185745Y336244D01* X187244D01* X186244D02* X185245Y335244D01* X182746D02* Y338243D01* X184245Y336744D01* X182246D01* X212245Y347243D02* X212745Y347743D01* X213744D01* X214244Y347243D01* Y345244D01* X213744Y344744D01* X212745D01* X212245Y345244D01* X209246Y344744D02* X211245D01* X209246Y346743D01* Y347243D01* X209746Y347743D01* X210745D01* X211245Y347243D01* X208246D02* X207746Y347743D01* X206747D01* X206247Y347243D01* Y345244D01* X206747Y344744D01* X207746D01* X208246Y345244D01* Y347243D01* X213561Y333743D02* X214061Y334243D01* X215061D01* X215561Y333743D01* Y331744D01* X215061Y331244D01* X214061D01* X213561Y331744D01* X212562Y331244D02* X211562D01* X212062D01* Y334243D01* X212562Y333743D01* X210063Y331744D02* X209563Y331244D01* X208563D01* X208063Y331744D01* Y333743D01* X208563Y334243D01* X209563D01* X210063Y333743D01* Y333243D01* X209563Y332744D01* X208063D01* X201945Y345443D02* X202445Y345943D01* X203444D01* X203944Y345443D01* Y343444D01* X203444Y342944D01* X202445D01* X201945Y343444D01* X200945Y342944D02* X199945D01* X200445D01* Y345943D01* X200945Y345443D01* X196946Y342944D02* Y345943D01* X198446Y344444D01* X196447D01* X247243Y415743D02* X247743Y415244D01* Y414244D01* X247243Y413744D01* X245244D01* X244744Y414244D01* Y415244D01* X245244Y415743D01* Y416743D02* X244744Y417243D01* Y418243D01* X245244Y418743D01* X247243D01* X247743Y418243D01* Y417243D01* X247243Y416743D01* X246743D01* X246244Y417243D01* Y418743D01* X186145Y369743D02* X186645Y370243D01* X187644D01* X188144Y369743D01* Y367744D01* X187644Y367244D01* X186645D01* X186145Y367744D01* X185145Y369743D02* X184645Y370243D01* X183645D01* X183146Y369743D01* Y369243D01* X183645Y368744D01* X183146Y368244D01* Y367744D01* X183645Y367244D01* X184645D01* X185145Y367744D01* Y368244D01* X184645Y368744D01* X185145Y369243D01* Y369743D01* X184645Y368744D02* X183645D01* X190245Y354243D02* X190745Y354743D01* X191744D01* X192244Y354243D01* Y352244D01* X191744Y351744D01* X190745D01* X190245Y352244D01* X189245Y354743D02* X187246D01* Y354243D01* X189245Y352244D01* Y351744D01* X202245Y406243D02* X202745Y406743D01* X203744D01* X204244Y406243D01* Y404244D01* X203744Y403744D01* X202745D01* X202245Y404244D01* X201245Y403744D02* X200245D01* X200745D01* Y406743D01* X201245Y406243D01* X196747Y406743D02* X198746D01* Y405244D01* X197746Y405743D01* X197246D01* X196747Y405244D01* Y404244D01* X197246Y403744D01* X198246D01* X198746Y404244D01* X214205Y357704D02* X214705Y358204D01* X215705D01* X216205Y357704D01* Y355704D01* X215705Y355205D01* X214705D01* X214205Y355704D01* X211206Y358204D02* X212206Y357704D01* X213206Y356704D01* Y355704D01* X212706Y355205D01* X211706D01* X211206Y355704D01* Y356204D01* X211706Y356704D01* X213206D01* X264243Y408243D02* X264743Y407744D01* Y406744D01* X264243Y406244D01* X262244D01* X261744Y406744D01* Y407744D01* X262244Y408243D01* X261744Y411242D02* Y409243D01* X263743Y411242D01* X264243D01* X264743Y410743D01* Y409743D01* X264243Y409243D01* X201845Y330043D02* X202345Y330543D01* X203344D01* X203844Y330043D01* Y328044D01* X203344Y327544D01* X202345D01* X201845Y328044D01* X199346Y327544D02* Y330543D01* X200845Y329044D01* X198846D01* X254743Y416243D02* X255243Y415744D01* Y414744D01* X254743Y414244D01* X252744D01* X252244Y414744D01* Y415744D01* X252744Y416243D01* X254743Y417243D02* X255243Y417743D01* Y418743D01* X254743Y419242D01* X254243D01* X253744Y418743D01* Y418243D01* Y418743D01* X253244Y419242D01* X252744D01* X252244Y418743D01* Y417743D01* X252744Y417243D01* X240099Y415987D02* X240599Y415488D01* Y414488D01* X240099Y413988D01* X238100D01* X237600Y414488D01* Y415488D01* X238100Y415987D01* X240599Y418987D02* Y416987D01* X239100D01* X239599Y417987D01* Y418487D01* X239100Y418987D01* X238100D01* X237600Y418487D01* Y417487D01* X238100Y416987D01* X225744Y390743D02* Y388244D01* X225244Y387744D01* X224245D01* X223745Y388244D01* Y390743D01* X220746D02* X221745Y390243D01* X222745Y389244D01* Y388244D01* X222245Y387744D01* X221246D01* X220746Y388244D01* Y388744D01* X221246Y389244D01* X222745D01* X210245Y413743D02* X210745Y414243D01* X211744D01* X212244Y413743D01* Y411744D01* X211744Y411244D01* X210745D01* X210245Y411744D01* X207246Y411244D02* X209245D01* X207246Y413243D01* Y413743D01* X207746Y414243D01* X208745D01* X209245Y413743D01* X204247Y411244D02* X206246D01* X204247Y413243D01* Y413743D01* X204747Y414243D01* X205746D01* X206246Y413743D01* X201245Y426743D02* X201745Y427243D01* X202744D01* X203244Y426743D01* Y424744D01* X202744Y424244D01* X201745D01* X201245Y424744D01* X198246Y424244D02* X200245D01* X198246Y426243D01* Y426743D01* X198746Y427243D01* X199745D01* X200245Y426743D01* X197246D02* X196746Y427243D01* X195747D01* X195247Y426743D01* Y426243D01* X195747Y425744D01* X196246D01* X195747D01* X195247Y425244D01* Y424744D01* X195747Y424244D01* X196746D01* X197246Y424744D01* X224744Y410744D02* Y413743D01* X223245D01* X222745Y413243D01* Y412244D01* X223245Y411744D01* X224744D01* X223744D02* X222745Y410744D01* X221745Y413743D02* X219746D01* Y413243D01* X221745Y411244D01* Y410744D01* X226303Y427372D02* Y430371D01* X224803D01* X224303Y429871D01* Y428871D01* X224803Y428371D01* X226303D01* X225303D02* X224303Y427372D01* X223304D02* X222304D01* X222804D01* Y430371D01* X223304Y429871D01* X218805Y427372D02* X220804D01* X218805Y429371D01* Y429871D01* X219305Y430371D01* X220304D01* X220804Y429871D01* X268243Y425743D02* X268743Y425244D01* Y424244D01* X268243Y423744D01* X266244D01* X265744Y424244D01* Y425244D01* X266244Y425743D01* X265744Y426743D02* Y427743D01* Y427243D01* X268743D01* X268243Y426743D01* X235245Y379743D02* X235745Y380243D01* X236744D01* X237244Y379743D01* Y377744D01* X236744Y377244D01* X235745D01* X235245Y377744D01* X234245Y377244D02* X233245D01* X233745D01* Y380243D01* X234245Y379743D01* X231746D02* X231246Y380243D01* X230246D01* X229747Y379743D01* Y377744D01* X230246Y377244D01* X231246D01* X231746Y377744D01* Y379743D01* X267244Y383744D02* Y386743D01* X265745D01* X265245Y386243D01* Y385244D01* X265745Y384744D01* X267244D01* X266244D02* X265245Y383744D01* X264245Y386243D02* X263745Y386743D01* X262745D01* X262246Y386243D01* Y385743D01* X262745Y385244D01* X263245D01* X262745D01* X262246Y384744D01* Y384244D01* X262745Y383744D01* X263745D01* X264245Y384244D01* X245744Y387744D02* Y390743D01* X244245D01* X243745Y390243D01* Y389244D01* X244245Y388744D01* X245744D01* X244744D02* X243745Y387744D01* X242745Y388244D02* X242245Y387744D01* X241246D01* X240746Y388244D01* Y390243D01* X241246Y390743D01* X242245D01* X242745Y390243D01* Y389743D01* X242245Y389244D01* X240746D01* X270244Y367744D02* Y370743D01* X268745D01* X268245Y370243D01* Y369244D01* X268745Y368744D01* X270244D01* X269244D02* X268245Y367744D01* X267245D02* X266245D01* X266745D01* Y370743D01* X267245Y370243D01* X263246Y367744D02* Y370743D01* X264746Y369244D01* X262747D01* X253244Y361244D02* Y364243D01* X251745D01* X251245Y363743D01* Y362744D01* X251745Y362244D01* X253244D01* X252244D02* X251245Y361244D01* X250245D02* X249245D01* X249745D01* Y364243D01* X250245Y363743D01* X245746Y364243D02* X247746D01* Y362744D01* X246746Y363243D01* X246246D01* X245746Y362744D01* Y361744D01* X246246Y361244D01* X247246D01* X247746Y361744D01* X270244Y350244D02* Y353243D01* X268745D01* X268245Y352743D01* Y351744D01* X268745Y351244D01* X270244D01* X269244D02* X268245Y350244D01* X267245D02* X266245D01* X266745D01* Y353243D01* X267245Y352743D01* X262747Y353243D02* X263746Y352743D01* X264746Y351744D01* Y350744D01* X264246Y350244D01* X263246D01* X262747Y350744D01* Y351244D01* X263246Y351744D01* X264746D01* X246744Y347244D02* Y350243D01* X245245D01* X244745Y349743D01* Y348744D01* X245245Y348244D01* X246744D01* X245744D02* X244745Y347244D01* X243745D02* X242745D01* X243245D01* Y350243D01* X243745Y349743D01* X241246Y350243D02* X239247D01* Y349743D01* X241246Y347744D01* Y347244D01* X168120Y508992D02* Y503994D01* X170619D01* X171452Y504827D01* Y505660D01* X170619Y506493D01* X168120D01* X170619D01* X171452Y507326D01* Y508159D01* X170619Y508992D01* X168120D01* X173951Y503994D02* X175617D01* X176450Y504827D01* Y506493D01* X175617Y507326D01* X173951D01* X173118Y506493D01* Y504827D01* X173951Y503994D01* X178949Y508159D02* Y507326D01* X178117D01* X179783D01* X178949D01* Y504827D01* X179783Y503994D01* X183115Y508159D02* Y507326D01* X182282D01* X183948D01* X183115D01* Y504827D01* X183948Y503994D01* X187280D02* X188946D01* X189779Y504827D01* Y506493D01* X188946Y507326D01* X187280D01* X186447Y506493D01* Y504827D01* X187280Y503994D01* X191446D02* Y507326D01* X192279D01* X193112Y506493D01* Y503994D01* Y506493D01* X193945Y507326D01* X194778Y506493D01* Y503994D01* X204774Y508159D02* X203941Y508992D01* X202275D01* X201442Y508159D01* Y507326D01* X202275Y506493D01* X203941D01* X204774Y505660D01* Y504827D01* X203941Y503994D01* X202275D01* X201442Y504827D01* X206441Y503994D02* X208107D01* X207274D01* Y507326D01* X206441D01* X210606Y503994D02* X212272D01* X211439D01* Y508992D01* X210606D01* X214771Y503994D02* Y508992D01* Y505660D02* X217270Y507326D01* X214771Y505660D02* X217270Y503994D01* X219770D02* X222269D01* X223102Y504827D01* X222269Y505660D01* X220603D01* X219770Y506493D01* X220603Y507326D01* X223102D01* X228100D02* X225601D01* X224768Y506493D01* Y504827D01* X225601Y503994D01* X228100D01* X229766Y507326D02* Y503994D01* Y505660D01* X230599Y506493D01* X231433Y507326D01* X232266D01* X237264Y503994D02* X235598D01* X234765Y504827D01* Y506493D01* X235598Y507326D01* X237264D01* X238097Y506493D01* Y505660D01* X234765D01* X242262Y503994D02* X240596D01* X239763Y504827D01* Y506493D01* X240596Y507326D01* X242262D01* X243095Y506493D01* Y505660D01* X239763D01* X244761Y503994D02* Y507326D01* X247261D01* X248094Y506493D01* Y503994D01* X371501Y394400D02* Y396399D01* X372001Y396899D01* X373000D01* X373500Y396399D01* Y394400D01* X373000Y393900D01* X372001D01* X372500Y394900D02* X371501Y393900D01* X372001D02* X371501Y394400D01* X368502Y393900D02* X370501D01* X368502Y395899D01* Y396399D01* X369002Y396899D01* X370001D01* X370501Y396399D01* X335744Y375244D02* Y378243D01* X334245D01* X333745Y377743D01* Y376744D01* X334245Y376244D01* X335744D01* X334744D02* X333745Y375244D01* X330746Y378243D02* X331745Y377743D01* X332745Y376744D01* Y375744D01* X332245Y375244D01* X331245D01* X330746Y375744D01* Y376244D01* X331245Y376744D01* X332745D01* X353244Y380744D02* Y383743D01* X351745D01* X351245Y383243D01* Y382244D01* X351745Y381744D01* X353244D01* X352244D02* X351245Y380744D01* X348246Y383743D02* X350245D01* Y382244D01* X349245Y382743D01* X348745D01* X348246Y382244D01* Y381244D01* X348745Y380744D01* X349745D01* X350245Y381244D01* X353344Y340444D02* Y343443D01* X351845D01* X351345Y342943D01* Y341944D01* X351845Y341444D01* X353344D01* X352344D02* X351345Y340444D01* X350345Y342943D02* X349845Y343443D01* X348846D01* X348346Y342943D01* Y342443D01* X348846Y341944D01* X348346Y341444D01* Y340944D01* X348846Y340444D01* X349845D01* X350345Y340944D01* Y341444D01* X349845Y341944D01* X350345Y342443D01* Y342943D01* X349845Y341944D02* X348846D01* X353544Y359644D02* Y362643D01* X352045D01* X351545Y362143D01* Y361144D01* X352045Y360644D01* X353544D01* X352544D02* X351545Y359644D01* X350545D02* X349545D01* X350045D01* Y362643D01* X350545Y362143D01* X348046D02* X347546Y362643D01* X346546D01* X346046Y362143D01* Y361643D01* X346546Y361144D01* X347046D01* X346546D01* X346046Y360644D01* Y360144D01* X346546Y359644D01* X347546D01* X348046Y360144D01* X367244Y335244D02* Y338243D01* X365745D01* X365245Y337743D01* Y336744D01* X365745Y336244D01* X367244D01* X366244D02* X365245Y335244D01* X362745D02* Y338243D01* X364245Y336744D01* X362246D01* X392245Y347243D02* X392745Y347743D01* X393744D01* X394244Y347243D01* Y345244D01* X393744Y344744D01* X392745D01* X392245Y345244D01* X389246Y344744D02* X391245D01* X389246Y346743D01* Y347243D01* X389745Y347743D01* X390745D01* X391245Y347243D01* X388246D02* X387746Y347743D01* X386747D01* X386247Y347243D01* Y345244D01* X386747Y344744D01* X387746D01* X388246Y345244D01* Y347243D01* X393561Y333743D02* X394061Y334243D01* X395061D01* X395561Y333743D01* Y331744D01* X395061Y331244D01* X394061D01* X393561Y331744D01* X392562Y331244D02* X391562D01* X392062D01* Y334243D01* X392562Y333743D01* X390062Y331744D02* X389563Y331244D01* X388563D01* X388063Y331744D01* Y333743D01* X388563Y334243D01* X389563D01* X390062Y333743D01* Y333243D01* X389563Y332744D01* X388063D01* X381945Y345443D02* X382445Y345943D01* X383444D01* X383944Y345443D01* Y343444D01* X383444Y342944D01* X382445D01* X381945Y343444D01* X380945Y342944D02* X379945D01* X380445D01* Y345943D01* X380945Y345443D01* X376946Y342944D02* Y345943D01* X378446Y344444D01* X376447D01* X427243Y415743D02* X427743Y415244D01* Y414244D01* X427243Y413744D01* X425244D01* X424744Y414244D01* Y415244D01* X425244Y415743D01* Y416743D02* X424744Y417243D01* Y418243D01* X425244Y418743D01* X427243D01* X427743Y418243D01* Y417243D01* X427243Y416743D01* X426743D01* X426244Y417243D01* Y418743D01* X366145Y369743D02* X366645Y370243D01* X367644D01* X368144Y369743D01* Y367744D01* X367644Y367244D01* X366645D01* X366145Y367744D01* X365145Y369743D02* X364645Y370243D01* X363646D01* X363146Y369743D01* Y369243D01* X363646Y368744D01* X363146Y368244D01* Y367744D01* X363646Y367244D01* X364645D01* X365145Y367744D01* Y368244D01* X364645Y368744D01* X365145Y369243D01* Y369743D01* X364645Y368744D02* X363646D01* X370245Y354243D02* X370745Y354743D01* X371744D01* X372244Y354243D01* Y352244D01* X371744Y351744D01* X370745D01* X370245Y352244D01* X369245Y354743D02* X367246D01* Y354243D01* X369245Y352244D01* Y351744D01* X382245Y406243D02* X382745Y406743D01* X383744D01* X384244Y406243D01* Y404244D01* X383744Y403744D01* X382745D01* X382245Y404244D01* X381245Y403744D02* X380245D01* X380745D01* Y406743D01* X381245Y406243D01* X376747Y406743D02* X378746D01* Y405244D01* X377746Y405743D01* X377246D01* X376747Y405244D01* Y404244D01* X377246Y403744D01* X378246D01* X378746Y404244D01* X394205Y357704D02* X394705Y358204D01* X395705D01* X396205Y357704D01* Y355704D01* X395705Y355205D01* X394705D01* X394205Y355704D01* X391206Y358204D02* X392206Y357704D01* X393206Y356704D01* Y355704D01* X392706Y355205D01* X391706D01* X391206Y355704D01* Y356204D01* X391706Y356704D01* X393206D01* X444243Y408243D02* X444743Y407744D01* Y406744D01* X444243Y406244D01* X442244D01* X441744Y406744D01* Y407744D01* X442244Y408243D01* X441744Y411242D02* Y409243D01* X443743Y411242D01* X444243D01* X444743Y410743D01* Y409743D01* X444243Y409243D01* X381845Y330043D02* X382345Y330543D01* X383344D01* X383844Y330043D01* Y328044D01* X383344Y327544D01* X382345D01* X381845Y328044D01* X379345Y327544D02* Y330543D01* X380845Y329044D01* X378846D01* X434743Y416243D02* X435243Y415744D01* Y414744D01* X434743Y414244D01* X432744D01* X432244Y414744D01* Y415744D01* X432744Y416243D01* X434743Y417243D02* X435243Y417743D01* Y418743D01* X434743Y419242D01* X434243D01* X433744Y418743D01* Y418243D01* Y418743D01* X433244Y419242D01* X432744D01* X432244Y418743D01* Y417743D01* X432744Y417243D01* X420099Y415987D02* X420599Y415488D01* Y414488D01* X420099Y413988D01* X418100D01* X417600Y414488D01* Y415488D01* X418100Y415987D01* X420599Y418987D02* Y416987D01* X419100D01* X419599Y417987D01* Y418487D01* X419100Y418987D01* X418100D01* X417600Y418487D01* Y417487D01* X418100Y416987D01* X405744Y390743D02* Y388244D01* X405244Y387744D01* X404245D01* X403745Y388244D01* Y390743D01* X400746D02* X401745Y390243D01* X402745Y389244D01* Y388244D01* X402245Y387744D01* X401245D01* X400746Y388244D01* Y388744D01* X401245Y389244D01* X402745D01* X390245Y413743D02* X390745Y414243D01* X391744D01* X392244Y413743D01* Y411744D01* X391744Y411244D01* X390745D01* X390245Y411744D01* X387246Y411244D02* X389245D01* X387246Y413243D01* Y413743D01* X387745Y414243D01* X388745D01* X389245Y413743D01* X384247Y411244D02* X386246D01* X384247Y413243D01* Y413743D01* X384747Y414243D01* X385746D01* X386246Y413743D01* X381245Y426743D02* X381745Y427243D01* X382744D01* X383244Y426743D01* Y424744D01* X382744Y424244D01* X381745D01* X381245Y424744D01* X378246Y424244D02* X380245D01* X378246Y426243D01* Y426743D01* X378746Y427243D01* X379745D01* X380245Y426743D01* X377246D02* X376746Y427243D01* X375746D01* X375247Y426743D01* Y426243D01* X375746Y425744D01* X376246D01* X375746D01* X375247Y425244D01* Y424744D01* X375746Y424244D01* X376746D01* X377246Y424744D01* X404744Y410744D02* Y413743D01* X403245D01* X402745Y413243D01* Y412244D01* X403245Y411744D01* X404744D01* X403744D02* X402745Y410744D01* X401745Y413743D02* X399746D01* Y413243D01* X401745Y411244D01* Y410744D01* X406302Y427372D02* Y430371D01* X404803D01* X404303Y429871D01* Y428871D01* X404803Y428371D01* X406302D01* X405303D02* X404303Y427372D01* X403303D02* X402304D01* X402804D01* Y430371D01* X403303Y429871D01* X398805Y427372D02* X400804D01* X398805Y429371D01* Y429871D01* X399305Y430371D01* X400304D01* X400804Y429871D01* X448243Y425743D02* X448743Y425244D01* Y424244D01* X448243Y423744D01* X446244D01* X445744Y424244D01* Y425244D01* X446244Y425743D01* X445744Y426743D02* Y427743D01* Y427243D01* X448743D01* X448243Y426743D01* X415245Y379743D02* X415745Y380243D01* X416744D01* X417244Y379743D01* Y377744D01* X416744Y377244D01* X415745D01* X415245Y377744D01* X414245Y377244D02* X413245D01* X413745D01* Y380243D01* X414245Y379743D01* X411746D02* X411246Y380243D01* X410246D01* X409747Y379743D01* Y377744D01* X410246Y377244D01* X411246D01* X411746Y377744D01* Y379743D01* X447244Y383744D02* Y386743D01* X445745D01* X445245Y386243D01* Y385244D01* X445745Y384744D01* X447244D01* X446244D02* X445245Y383744D01* X444245Y386243D02* X443745Y386743D01* X442745D01* X442246Y386243D01* Y385743D01* X442745Y385244D01* X443245D01* X442745D01* X442246Y384744D01* Y384244D01* X442745Y383744D01* X443745D01* X444245Y384244D01* X425744Y387744D02* Y390743D01* X424245D01* X423745Y390243D01* Y389244D01* X424245Y388744D01* X425744D01* X424744D02* X423745Y387744D01* X422745Y388244D02* X422245Y387744D01* X421245D01* X420746Y388244D01* Y390243D01* X421245Y390743D01* X422245D01* X422745Y390243D01* Y389743D01* X422245Y389244D01* X420746D01* X450244Y367744D02* Y370743D01* X448745D01* X448245Y370243D01* Y369244D01* X448745Y368744D01* X450244D01* X449244D02* X448245Y367744D01* X447245D02* X446245D01* X446745D01* Y370743D01* X447245Y370243D01* X443246Y367744D02* Y370743D01* X444746Y369244D01* X442746D01* X433244Y361244D02* Y364243D01* X431745D01* X431245Y363743D01* Y362744D01* X431745Y362244D01* X433244D01* X432244D02* X431245Y361244D01* X430245D02* X429245D01* X429745D01* Y364243D01* X430245Y363743D01* X425746Y364243D02* X427746D01* Y362744D01* X426746Y363243D01* X426246D01* X425746Y362744D01* Y361744D01* X426246Y361244D01* X427246D01* X427746Y361744D01* X450244Y350244D02* Y353243D01* X448745D01* X448245Y352743D01* Y351744D01* X448745Y351244D01* X450244D01* X449244D02* X448245Y350244D01* X447245D02* X446245D01* X446745D01* Y353243D01* X447245Y352743D01* X442746Y353243D02* X443746Y352743D01* X444746Y351744D01* Y350744D01* X444246Y350244D01* X443246D01* X442746Y350744D01* Y351244D01* X443246Y351744D01* X444746D01* X426744Y347244D02* Y350243D01* X425245D01* X424745Y349743D01* Y348744D01* X425245Y348244D01* X426744D01* X425744D02* X424745Y347244D01* X423745D02* X422745D01* X423245D01* Y350243D01* X423745Y349743D01* X421246Y350243D02* X419246D01* Y349743D01* X421246Y347744D01* Y347244D01* X348120Y508992D02* Y503994D01* X350619D01* X351452Y504827D01* Y505660D01* X350619Y506493D01* X348120D01* X350619D01* X351452Y507326D01* Y508159D01* X350619Y508992D01* X348120D01* X353951Y503994D02* X355617D01* X356450Y504827D01* Y506493D01* X355617Y507326D01* X353951D01* X353118Y506493D01* Y504827D01* X353951Y503994D01* X358949Y508159D02* Y507326D01* X358116D01* X359783D01* X358949D01* Y504827D01* X359783Y503994D01* X363115Y508159D02* Y507326D01* X362282D01* X363948D01* X363115D01* Y504827D01* X363948Y503994D01* X367280D02* X368946D01* X369779Y504827D01* Y506493D01* X368946Y507326D01* X367280D01* X366447Y506493D01* Y504827D01* X367280Y503994D01* X371445D02* Y507326D01* X372278D01* X373112Y506493D01* Y503994D01* Y506493D01* X373945Y507326D01* X374778Y506493D01* Y503994D01* X384774Y508159D02* X383941Y508992D01* X382275D01* X381442Y508159D01* Y507326D01* X382275Y506493D01* X383941D01* X384774Y505660D01* Y504827D01* X383941Y503994D01* X382275D01* X381442Y504827D01* X386441Y503994D02* X388107D01* X387274D01* Y507326D01* X386441D01* X390606Y503994D02* X392272D01* X391439D01* Y508992D01* X390606D01* X394771Y503994D02* Y508992D01* Y505660D02* X397270Y507326D01* X394771Y505660D02* X397270Y503994D01* X399770D02* X402269D01* X403102Y504827D01* X402269Y505660D01* X400603D01* X399770Y506493D01* X400603Y507326D01* X403102D01* X408100D02* X405601D01* X404768Y506493D01* Y504827D01* X405601Y503994D01* X408100D01* X409766Y507326D02* Y503994D01* Y505660D01* X410599Y506493D01* X411433Y507326D01* X412266D01* X417264Y503994D02* X415598D01* X414765Y504827D01* Y506493D01* X415598Y507326D01* X417264D01* X418097Y506493D01* Y505660D01* X414765D01* X422262Y503994D02* X420596D01* X419763Y504827D01* Y506493D01* X420596Y507326D01* X422262D01* X423095Y506493D01* Y505660D01* X419763D01* X424761Y503994D02* Y507326D01* X427261D01* X428094Y506493D01* Y503994D01* D67* X193823Y199701D02* G03* X193823Y199701I-492J0D01* G01* X219965Y196177D02* G03* X219965Y196177I-492J0D01* G01* X373823Y199701D02* G03* X373823Y199701I-492J0D01* G01* X399965Y196177D02* G03* X399965Y196177I-492J0D01* G01* X193823Y379701D02* G03* X193823Y379701I-492J0D01* G01* X219965Y376177D02* G03* X219965Y376177I-492J0D01* G01* X373823Y379701D02* G03* X373823Y379701I-492J0D01* G01* X399965Y376177D02* G03* X399965Y376177I-492J0D01* G01* D69* X171850Y155866D02* X172638D01* X171850Y158622D02* X172638D01* X221850Y238622D02* X222638D01* X221850Y235866D02* X222638D01* X221850Y244622D02* X222638D01* X221850Y241866D02* X222638D01* X161850Y182622D02* X162638D01* X161850Y179866D02* X162638D01* X172350Y195866D02* X173138D01* X172350Y198622D02* X173138D01* X161850Y195866D02* X162638D01* X161850Y198622D02* X162638D01* X182850Y151366D02* X183638D01* X182850Y154122D02* X183638D01* X192150Y204425D02* Y206000D01* X189000D02* X192150D01* X180339Y204425D02* Y206000D01* X183488D01* X250622Y205850D02* Y206638D01* X247866Y205850D02* Y206638D01* X260122Y208350D02* Y209138D01* X257366Y208350D02* Y209138D01* X251122Y172350D02* Y173138D01* X248366Y172350D02* Y173138D01* X260622Y174850D02* Y175638D01* X257866Y174850D02* Y175638D01* X260122Y192350D02* Y193138D01* X257366Y192350D02* Y193138D01* X250622Y189350D02* Y190138D01* X247866Y189350D02* Y190138D01* X198705Y200508D02* X218783D01* X198705Y215075D02* X218783D01* Y200508D02* Y215075D01* X198705Y200508D02* Y215075D01* X351850Y155866D02* X352638D01* X351850Y158622D02* X352638D01* X401850Y238622D02* X402638D01* X401850Y235866D02* X402638D01* X401850Y244622D02* X402638D01* X401850Y241866D02* X402638D01* X341850Y182622D02* X342638D01* X341850Y179866D02* X342638D01* X352350Y195866D02* X353138D01* X352350Y198622D02* X353138D01* X341850Y195866D02* X342638D01* X341850Y198622D02* X342638D01* X362850Y151366D02* X363638D01* X362850Y154122D02* X363638D01* X372150Y204425D02* Y206000D01* X369000D02* X372150D01* X360339Y204425D02* Y206000D01* X363488D01* X430622Y205850D02* Y206638D01* X427866Y205850D02* Y206638D01* X440122Y208350D02* Y209138D01* X437366Y208350D02* Y209138D01* X431122Y172350D02* Y173138D01* X428366Y172350D02* Y173138D01* X440622Y174850D02* Y175638D01* X437866Y174850D02* Y175638D01* X440122Y192350D02* Y193138D01* X437366Y192350D02* Y193138D01* X430622Y189350D02* Y190138D01* X427866Y189350D02* Y190138D01* X378705Y200508D02* X398783D01* X378705Y215075D02* X398783D01* Y200508D02* Y215075D01* X378705Y200508D02* Y215075D01* X171850Y335866D02* X172638D01* X171850Y338622D02* X172638D01* X221850Y418622D02* X222638D01* X221850Y415866D02* X222638D01* X221850Y424622D02* X222638D01* X221850Y421866D02* X222638D01* X161850Y362622D02* X162638D01* X161850Y359866D02* X162638D01* X172350Y375866D02* X173138D01* X172350Y378622D02* X173138D01* X161850Y375866D02* X162638D01* X161850Y378622D02* X162638D01* X182850Y331366D02* X183638D01* X182850Y334122D02* X183638D01* X192150Y384425D02* Y386000D01* X189000D02* X192150D01* X180339Y384425D02* Y386000D01* X183488D01* X250622Y385850D02* Y386638D01* X247866Y385850D02* Y386638D01* X260122Y388350D02* Y389138D01* X257366Y388350D02* Y389138D01* X251122Y352350D02* Y353138D01* X248366Y352350D02* Y353138D01* X260622Y354850D02* Y355638D01* X257866Y354850D02* Y355638D01* X260122Y372350D02* Y373138D01* X257366Y372350D02* Y373138D01* X250622Y369350D02* Y370138D01* X247866Y369350D02* Y370138D01* X198705Y380508D02* X218783D01* X198705Y395075D02* X218783D01* Y380508D02* Y395075D01* X198705Y380508D02* Y395075D01* X351850Y335866D02* X352638D01* X351850Y338622D02* X352638D01* X401850Y418622D02* X402638D01* X401850Y415866D02* X402638D01* X401850Y424622D02* X402638D01* X401850Y421866D02* X402638D01* X341850Y362622D02* X342638D01* X341850Y359866D02* X342638D01* X352350Y375866D02* X353138D01* X352350Y378622D02* X353138D01* X341850Y375866D02* X342638D01* X341850Y378622D02* X342638D01* X362850Y331366D02* X363638D01* X362850Y334122D02* X363638D01* X372150Y384425D02* Y386000D01* X369000D02* X372150D01* X360339Y384425D02* Y386000D01* X363488D01* X430622Y385850D02* Y386638D01* X427866Y385850D02* Y386638D01* X440122Y388350D02* Y389138D01* X437366Y388350D02* Y389138D01* X431122Y352350D02* Y353138D01* X428366Y352350D02* Y353138D01* X440622Y354850D02* Y355638D01* X437866Y354850D02* Y355638D01* X440122Y372350D02* Y373138D01* X437366Y372350D02* Y373138D01* X430622Y369350D02* Y370138D01* X427866Y369350D02* Y370138D01* X378705Y380508D02* X398783D01* X378705Y395075D02* X398783D01* Y380508D02* Y395075D01* X378705Y380508D02* Y395075D01* D116* X216028Y204445D02* G03* X216028Y204445I-1181J0D01* G01* X396028D02* G03* X396028Y204445I-1181J0D01* G01* X216028Y384445D02* G03* X216028Y384445I-1181J0D01* G01* X396028D02* G03* X396028Y384445I-1181J0D01* G01* M02* ================================================ FILE: hardware/panel.GBP ================================================ G04 Layer_Color=128* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD13R,0.03347X0.03150*% %ADD24R,0.03543X0.02953*% %ADD43C,0.00800*% %ADD61R,0.03150X0.03347*% %ADD62R,0.02953X0.03543*% G04:AMPARAMS|DCode=63|XSize=23.62mil|YSize=62.99mil|CornerRadius=5.91mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD63* 21,1,0.02362,0.05118,0,0,0.0* 21,1,0.01181,0.06299,0,0,0.0* 1,1,0.01181,0.00591,-0.02559* 1,1,0.01181,-0.00591,-0.02559* 1,1,0.01181,-0.00591,0.02559* 1,1,0.01181,0.00591,0.02559* % %ADD63ROUNDEDRECTD63*% %ADD64R,0.02362X0.06299*% %ADD65R,0.01772X0.05512*% %ADD66O,0.01772X0.05512*% D13* X211283Y173244D02* D03* X216205D02* D03* X207784Y161744D02* D03* X212705D02* D03* X207784Y156744D02* D03* X212705D02* D03* X188705Y193244D02* D03* X183783D02* D03* X213205Y227244D02* D03* X208283D02* D03* X211205Y237244D02* D03* X206283D02* D03* X211205Y243244D02* D03* X206283D02* D03* X203705Y153744D02* D03* X198783D02* D03* X198283Y159244D02* D03* X203205D02* D03* X192205Y168244D02* D03* X187284D02* D03* X391283Y173244D02* D03* X396205D02* D03* X387784Y161744D02* D03* X392705D02* D03* X387784Y156744D02* D03* X392705D02* D03* X368705Y193244D02* D03* X363783D02* D03* X393205Y227244D02* D03* X388283D02* D03* X391205Y237244D02* D03* X386283D02* D03* X391205Y243244D02* D03* X386283D02* D03* X383705Y153744D02* D03* X378783D02* D03* X378283Y159244D02* D03* X383205D02* D03* X372205Y168244D02* D03* X367284D02* D03* X211283Y353244D02* D03* X216205D02* D03* X207784Y341744D02* D03* X212705D02* D03* X207784Y336744D02* D03* X212705D02* D03* X188705Y373244D02* D03* X183783D02* D03* X213205Y407244D02* D03* X208283D02* D03* X211205Y417244D02* D03* X206283D02* D03* X211205Y423244D02* D03* X206283D02* D03* X203705Y333744D02* D03* X198783D02* D03* X198283Y339244D02* D03* X203205D02* D03* X192205Y348244D02* D03* X187284D02* D03* X391283Y353244D02* D03* X396205D02* D03* X387784Y341744D02* D03* X392705D02* D03* X387784Y336744D02* D03* X392705D02* D03* X368705Y373244D02* D03* X363783D02* D03* X393205Y407244D02* D03* X388283D02* D03* X391205Y417244D02* D03* X386283D02* D03* X391205Y423244D02* D03* X386283D02* D03* X383705Y333744D02* D03* X378783D02* D03* X378283Y339244D02* D03* X383205D02* D03* X372205Y348244D02* D03* X367284D02* D03* D24* X249244Y203587D02* D03* Y208902D02* D03* X258744Y206087D02* D03* Y211402D02* D03* X249744Y170087D02* D03* Y175402D02* D03* X259244Y172587D02* D03* Y177902D02* D03* X258744Y190087D02* D03* Y195402D02* D03* X249244Y187087D02* D03* Y192402D02* D03* X429244Y203587D02* D03* Y208902D02* D03* X438744Y206087D02* D03* Y211402D02* D03* X429744Y170087D02* D03* Y175402D02* D03* X439244Y172587D02* D03* Y177902D02* D03* X438744Y190087D02* D03* Y195402D02* D03* X429244Y187087D02* D03* Y192402D02* D03* X249244Y383587D02* D03* Y388902D02* D03* X258744Y386087D02* D03* Y391402D02* D03* X249744Y350087D02* D03* Y355402D02* D03* X259244Y352587D02* D03* Y357902D02* D03* X258744Y370087D02* D03* Y375402D02* D03* X249244Y367087D02* D03* Y372402D02* D03* X429244Y383587D02* D03* Y388902D02* D03* X438744Y386087D02* D03* Y391402D02* D03* X429744Y350087D02* D03* Y355402D02* D03* X439244Y352587D02* D03* Y357902D02* D03* X438744Y370087D02* D03* Y375402D02* D03* X429244Y367087D02* D03* Y372402D02* D03* D43* X171120Y328192D02* Y323194D01* X173619D01* X174452Y324027D01* Y324860D01* X173619Y325693D01* X171120D01* X173619D01* X174452Y326526D01* Y327359D01* X173619Y328192D01* X171120D01* X176951Y323194D02* X178617D01* X179450Y324027D01* Y325693D01* X178617Y326526D01* X176951D01* X176118Y325693D01* Y324027D01* X176951Y323194D01* X181949Y327359D02* Y326526D01* X181116D01* X182783D01* X181949D01* Y324027D01* X182783Y323194D01* X186115Y327359D02* Y326526D01* X185282D01* X186948D01* X186115D01* Y324027D01* X186948Y323194D01* X190280D02* X191946D01* X192779Y324027D01* Y325693D01* X191946Y326526D01* X190280D01* X189447Y325693D01* Y324027D01* X190280Y323194D01* X194446D02* Y326526D01* X195279D01* X196112Y325693D01* Y323194D01* Y325693D01* X196945Y326526D01* X197778Y325693D01* Y323194D01* X204442D02* Y328192D01* X206941D01* X207774Y327359D01* Y325693D01* X206941Y324860D01* X204442D01* X210274Y326526D02* X211940D01* X212773Y325693D01* Y323194D01* X210274D01* X209441Y324027D01* X210274Y324860D01* X212773D01* X214439Y323194D02* X216938D01* X217771Y324027D01* X216938Y324860D01* X215272D01* X214439Y325693D01* X215272Y326526D01* X217771D01* X220270Y327359D02* Y326526D01* X219437D01* X221104D01* X220270D01* Y324027D01* X221104Y323194D01* X226102D02* X224436D01* X223603Y324027D01* Y325693D01* X224436Y326526D01* X226102D01* X226935Y325693D01* Y324860D01* X223603D01* X351120Y328192D02* Y323194D01* X353619D01* X354452Y324027D01* Y324860D01* X353619Y325693D01* X351120D01* X353619D01* X354452Y326526D01* Y327359D01* X353619Y328192D01* X351120D01* X356951Y323194D02* X358617D01* X359450Y324027D01* Y325693D01* X358617Y326526D01* X356951D01* X356118Y325693D01* Y324027D01* X356951Y323194D01* X361949Y327359D02* Y326526D01* X361116D01* X362783D01* X361949D01* Y324027D01* X362783Y323194D01* X366115Y327359D02* Y326526D01* X365282D01* X366948D01* X366115D01* Y324027D01* X366948Y323194D01* X370280D02* X371946D01* X372779Y324027D01* Y325693D01* X371946Y326526D01* X370280D01* X369447Y325693D01* Y324027D01* X370280Y323194D01* X374446D02* Y326526D01* X375278D01* X376112Y325693D01* Y323194D01* Y325693D01* X376945Y326526D01* X377778Y325693D01* Y323194D01* X384442D02* Y328192D01* X386941D01* X387774Y327359D01* Y325693D01* X386941Y324860D01* X384442D01* X390274Y326526D02* X391940D01* X392773Y325693D01* Y323194D01* X390274D01* X389441Y324027D01* X390274Y324860D01* X392773D01* X394439Y323194D02* X396938D01* X397771Y324027D01* X396938Y324860D01* X395272D01* X394439Y325693D01* X395272Y326526D01* X397771D01* X400270Y327359D02* Y326526D01* X399437D01* X401103D01* X400270D01* Y324027D01* X401103Y323194D01* X406102D02* X404436D01* X403603Y324027D01* Y325693D01* X404436Y326526D01* X406102D01* X406935Y325693D01* Y324860D01* X403603D01* X171120Y508192D02* Y503194D01* X173619D01* X174452Y504027D01* Y504860D01* X173619Y505693D01* X171120D01* X173619D01* X174452Y506526D01* Y507359D01* X173619Y508192D01* X171120D01* X176951Y503194D02* X178617D01* X179450Y504027D01* Y505693D01* X178617Y506526D01* X176951D01* X176118Y505693D01* Y504027D01* X176951Y503194D01* X181949Y507359D02* Y506526D01* X181116D01* X182783D01* X181949D01* Y504027D01* X182783Y503194D01* X186115Y507359D02* Y506526D01* X185282D01* X186948D01* X186115D01* Y504027D01* X186948Y503194D01* X190280D02* X191946D01* X192779Y504027D01* Y505693D01* X191946Y506526D01* X190280D01* X189447Y505693D01* Y504027D01* X190280Y503194D01* X194446D02* Y506526D01* X195279D01* X196112Y505693D01* Y503194D01* Y505693D01* X196945Y506526D01* X197778Y505693D01* Y503194D01* X204442D02* Y508192D01* X206941D01* X207774Y507359D01* Y505693D01* X206941Y504860D01* X204442D01* X210274Y506526D02* X211940D01* X212773Y505693D01* Y503194D01* X210274D01* X209441Y504027D01* X210274Y504860D01* X212773D01* X214439Y503194D02* X216938D01* X217771Y504027D01* X216938Y504860D01* X215272D01* X214439Y505693D01* X215272Y506526D01* X217771D01* X220270Y507359D02* Y506526D01* X219437D01* X221104D01* X220270D01* Y504027D01* X221104Y503194D01* X226102D02* X224436D01* X223603Y504027D01* Y505693D01* X224436Y506526D01* X226102D01* X226935Y505693D01* Y504860D01* X223603D01* X351120Y508192D02* Y503194D01* X353619D01* X354452Y504027D01* Y504860D01* X353619Y505693D01* X351120D01* X353619D01* X354452Y506526D01* Y507359D01* X353619Y508192D01* X351120D01* X356951Y503194D02* X358617D01* X359450Y504027D01* Y505693D01* X358617Y506526D01* X356951D01* X356118Y505693D01* Y504027D01* X356951Y503194D01* X361949Y507359D02* Y506526D01* X361116D01* X362783D01* X361949D01* Y504027D01* X362783Y503194D01* X366115Y507359D02* Y506526D01* X365282D01* X366948D01* X366115D01* Y504027D01* X366948Y503194D01* X370280D02* X371946D01* X372779Y504027D01* Y505693D01* X371946Y506526D01* X370280D01* X369447Y505693D01* Y504027D01* X370280Y503194D01* X374446D02* Y506526D01* X375278D01* X376112Y505693D01* Y503194D01* Y505693D01* X376945Y506526D01* X377778Y505693D01* Y503194D01* X384442D02* Y508192D01* X386941D01* X387774Y507359D01* Y505693D01* X386941Y504860D01* X384442D01* X390274Y506526D02* X391940D01* X392773Y505693D01* Y503194D01* X390274D01* X389441Y504027D01* X390274Y504860D01* X392773D01* X394439Y503194D02* X396938D01* X397771Y504027D01* X396938Y504860D01* X395272D01* X394439Y505693D01* X395272Y506526D01* X397771D01* X400270Y507359D02* Y506526D01* X399437D01* X401103D01* X400270D01* Y504027D01* X401103Y503194D01* X406102D02* X404436D01* X403603Y504027D01* Y505693D01* X404436Y506526D01* X406102D01* X406935Y505693D01* Y504860D01* X403603D01* D61* X258744Y226783D02* D03* Y231705D02* D03* X253744Y227283D02* D03* Y232205D02* D03* X238744Y230205D02* D03* Y225283D02* D03* X244744Y229705D02* D03* Y224783D02* D03* X262244Y249205D02* D03* Y244283D02* D03* X239744Y194205D02* D03* Y189283D02* D03* X438744Y226783D02* D03* Y231705D02* D03* X433744Y227283D02* D03* Y232205D02* D03* X418744Y230205D02* D03* Y225283D02* D03* X424744Y229705D02* D03* Y224783D02* D03* X442244Y249205D02* D03* Y244283D02* D03* X419744Y194205D02* D03* Y189283D02* D03* X258744Y406783D02* D03* Y411705D02* D03* X253744Y407283D02* D03* Y412205D02* D03* X238744Y410205D02* D03* Y405283D02* D03* X244744Y409705D02* D03* Y404783D02* D03* X262244Y429205D02* D03* Y424283D02* D03* X239744Y374205D02* D03* Y369283D02* D03* X438744Y406783D02* D03* Y411705D02* D03* X433744Y407283D02* D03* Y412205D02* D03* X418744Y410205D02* D03* Y405283D02* D03* X424744Y409705D02* D03* Y404783D02* D03* X442244Y429205D02* D03* Y424283D02* D03* X419744Y374205D02* D03* Y369283D02* D03* D62* X169587Y157244D02* D03* X174901D02* D03* X224902Y237244D02* D03* X219587D02* D03* X224902Y243244D02* D03* X219587D02* D03* X164902Y181244D02* D03* X159587D02* D03* X170087Y197244D02* D03* X175401D02* D03* X159587D02* D03* X164901D02* D03* X180587Y152744D02* D03* X185901D02* D03* X349587Y157244D02* D03* X354901D02* D03* X404902Y237244D02* D03* X399587D02* D03* X404902Y243244D02* D03* X399587D02* D03* X344902Y181244D02* D03* X339587D02* D03* X350087Y197244D02* D03* X355401D02* D03* X339587D02* D03* X344901D02* D03* X360587Y152744D02* D03* X365901D02* D03* X169587Y337244D02* D03* X174901D02* D03* X224902Y417244D02* D03* X219587D02* D03* X224902Y423244D02* D03* X219587D02* D03* X164902Y361244D02* D03* X159587D02* D03* X170087Y377244D02* D03* X175401D02* D03* X159587D02* D03* X164901D02* D03* X180587Y332744D02* D03* X185901D02* D03* X349587Y337244D02* D03* X354901D02* D03* X404902Y417244D02* D03* X399587D02* D03* X404902Y423244D02* D03* X399587D02* D03* X344902Y361244D02* D03* X339587D02* D03* X350087Y377244D02* D03* X355401D02* D03* X339587D02* D03* X344901D02* D03* X360587Y332744D02* D03* X365901D02* D03* D63* X189984Y199701D02* D03* X369984D02* D03* X189984Y379701D02* D03* X369984D02* D03* D64* X182504Y199701D02* D03* X186244Y206787D02* D03* X362504Y199701D02* D03* X366244Y206787D02* D03* X182504Y379701D02* D03* X186244Y386787D02* D03* X362504Y379701D02* D03* X366244Y386787D02* D03* D65* X216421Y196177D02* D03* X396421D02* D03* X216421Y376177D02* D03* X396421D02* D03* D66* X213862Y196177D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X216421Y219406D02* D03* X213862D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X393862Y196177D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* X396421Y219406D02* D03* X393862D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* X213862Y376177D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X216421Y399406D02* D03* X213862D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X393862Y376177D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* X396421Y399406D02* D03* X393862D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* M02* ================================================ FILE: hardware/panel.GBS ================================================ G04 Layer_Color=16711935* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD43C,0.00800*% %ADD74R,0.04147X0.03950*% %ADD85R,0.04343X0.03753*% %ADD99C,0.01800*% %ADD100O,0.05524X0.10249*% %ADD101O,0.06902X0.04343*% %ADD102O,0.04540X0.05721*% %ADD103C,0.07800*% %ADD104R,0.07800X0.07800*% %ADD105C,0.04800*% %ADD106R,0.04800X0.04800*% %ADD107R,0.07800X0.07800*% %ADD108C,0.08674*% %ADD109R,0.13000X0.25000*% %ADD110R,0.03950X0.04147*% %ADD111R,0.03753X0.04343*% G04:AMPARAMS|DCode=112|XSize=31.62mil|YSize=70.99mil|CornerRadius=9.91mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD112* 21,1,0.03162,0.05118,0,0,0.0* 21,1,0.01181,0.07099,0,0,0.0* 1,1,0.01981,0.00591,-0.02559* 1,1,0.01981,-0.00591,-0.02559* 1,1,0.01981,-0.00591,0.02559* 1,1,0.01981,0.00591,0.02559* % %ADD112ROUNDEDRECTD112*% %ADD113R,0.03162X0.07099*% %ADD114R,0.02572X0.06312*% %ADD115O,0.02572X0.06312*% D43* X169520Y330492D02* Y325494D01* X172019D01* X172852Y326327D01* Y327160D01* X172019Y327993D01* X169520D01* X172019D01* X172852Y328826D01* Y329659D01* X172019Y330492D01* X169520D01* X175351Y325494D02* X177017D01* X177850Y326327D01* Y327993D01* X177017Y328826D01* X175351D01* X174518Y327993D01* Y326327D01* X175351Y325494D01* X180350Y328826D02* X182016D01* X182849Y327993D01* Y325494D01* X180350D01* X179516Y326327D01* X180350Y327160D01* X182849D01* X184515Y328826D02* Y325494D01* Y327160D01* X185348Y327993D01* X186181Y328826D01* X187014D01* X192845Y330492D02* Y325494D01* X190346D01* X189513Y326327D01* Y327993D01* X190346Y328826D01* X192845D01* X202009Y330492D02* X200343D01* X199510Y329659D01* Y326327D01* X200343Y325494D01* X202009D01* X202842Y326327D01* Y329659D01* X202009Y330492D01* X204508Y328826D02* Y326327D01* X205341Y325494D01* X207841D01* Y328826D01* X210340Y329659D02* Y328826D01* X209507D01* X211173D01* X210340D01* Y326327D01* X211173Y325494D01* X213672D02* X215338D01* X214505D01* Y330492D01* X213672D01* X217837Y325494D02* X219503D01* X218670D01* Y328826D01* X217837D01* X222003Y325494D02* Y328826D01* X224502D01* X225335Y327993D01* Y325494D01* X229500D02* X227834D01* X227001Y326327D01* Y327993D01* X227834Y328826D01* X229500D01* X230333Y327993D01* Y327160D01* X227001D01* X172620Y332792D02* Y327794D01* X175119D01* X175952Y328627D01* Y329460D01* X175119Y330293D01* X172620D01* X175119D01* X175952Y331126D01* Y331959D01* X175119Y332792D01* X172620D01* X178451Y327794D02* X180117D01* X180950Y328627D01* Y330293D01* X180117Y331126D01* X178451D01* X177618Y330293D01* Y328627D01* X178451Y327794D01* X183449Y331959D02* Y331126D01* X182616D01* X184283D01* X183449D01* Y328627D01* X184283Y327794D01* X187615Y331959D02* Y331126D01* X186782D01* X188448D01* X187615D01* Y328627D01* X188448Y327794D01* X191780D02* X193446D01* X194279Y328627D01* Y330293D01* X193446Y331126D01* X191780D01* X190947Y330293D01* Y328627D01* X191780Y327794D01* X195946D02* Y331126D01* X196779D01* X197612Y330293D01* Y327794D01* Y330293D01* X198445Y331126D01* X199278Y330293D01* Y327794D01* X209275Y331959D02* X208441Y332792D01* X206775D01* X205942Y331959D01* Y331126D01* X206775Y330293D01* X208441D01* X209275Y329460D01* Y328627D01* X208441Y327794D01* X206775D01* X205942Y328627D01* X211774Y327794D02* X213440D01* X214273Y328627D01* Y330293D01* X213440Y331126D01* X211774D01* X210941Y330293D01* Y328627D01* X211774Y327794D01* X215939D02* X217605D01* X216772D01* Y332792D01* X215939D01* X223437D02* Y327794D01* X220937D01* X220104Y328627D01* Y330293D01* X220937Y331126D01* X223437D01* X227602Y327794D02* X225936D01* X225103Y328627D01* Y330293D01* X225936Y331126D01* X227602D01* X228435Y330293D01* Y329460D01* X225103D01* X230101Y331126D02* Y327794D01* Y329460D01* X230934Y330293D01* X231767Y331126D01* X232600D01* X349520Y330492D02* Y325494D01* X352019D01* X352852Y326327D01* Y327160D01* X352019Y327993D01* X349520D01* X352019D01* X352852Y328826D01* Y329659D01* X352019Y330492D01* X349520D01* X355351Y325494D02* X357017D01* X357850Y326327D01* Y327993D01* X357017Y328826D01* X355351D01* X354518Y327993D01* Y326327D01* X355351Y325494D01* X360349Y328826D02* X362016D01* X362849Y327993D01* Y325494D01* X360349D01* X359516Y326327D01* X360349Y327160D01* X362849D01* X364515Y328826D02* Y325494D01* Y327160D01* X365348Y327993D01* X366181Y328826D01* X367014D01* X372846Y330492D02* Y325494D01* X370346D01* X369513Y326327D01* Y327993D01* X370346Y328826D01* X372846D01* X382009Y330492D02* X380343D01* X379510Y329659D01* Y326327D01* X380343Y325494D01* X382009D01* X382842Y326327D01* Y329659D01* X382009Y330492D01* X384508Y328826D02* Y326327D01* X385341Y325494D01* X387841D01* Y328826D01* X390340Y329659D02* Y328826D01* X389507D01* X391173D01* X390340D01* Y326327D01* X391173Y325494D01* X393672D02* X395338D01* X394505D01* Y330492D01* X393672D01* X397837Y325494D02* X399503D01* X398670D01* Y328826D01* X397837D01* X402003Y325494D02* Y328826D01* X404502D01* X405335Y327993D01* Y325494D01* X409500D02* X407834D01* X407001Y326327D01* Y327993D01* X407834Y328826D01* X409500D01* X410333Y327993D01* Y327160D01* X407001D01* X352620Y332792D02* Y327794D01* X355119D01* X355952Y328627D01* Y329460D01* X355119Y330293D01* X352620D01* X355119D01* X355952Y331126D01* Y331959D01* X355119Y332792D01* X352620D01* X358451Y327794D02* X360117D01* X360950Y328627D01* Y330293D01* X360117Y331126D01* X358451D01* X357618Y330293D01* Y328627D01* X358451Y327794D01* X363450Y331959D02* Y331126D01* X362616D01* X364283D01* X363450D01* Y328627D01* X364283Y327794D01* X367615Y331959D02* Y331126D01* X366782D01* X368448D01* X367615D01* Y328627D01* X368448Y327794D01* X371780D02* X373446D01* X374279Y328627D01* Y330293D01* X373446Y331126D01* X371780D01* X370947Y330293D01* Y328627D01* X371780Y327794D01* X375945D02* Y331126D01* X376779D01* X377612Y330293D01* Y327794D01* Y330293D01* X378445Y331126D01* X379278Y330293D01* Y327794D01* X389275Y331959D02* X388441Y332792D01* X386775D01* X385942Y331959D01* Y331126D01* X386775Y330293D01* X388441D01* X389275Y329460D01* Y328627D01* X388441Y327794D01* X386775D01* X385942Y328627D01* X391774Y327794D02* X393440D01* X394273Y328627D01* Y330293D01* X393440Y331126D01* X391774D01* X390941Y330293D01* Y328627D01* X391774Y327794D01* X395939D02* X397605D01* X396772D01* Y332792D01* X395939D01* X403437D02* Y327794D01* X400937D01* X400104Y328627D01* Y330293D01* X400937Y331126D01* X403437D01* X407602Y327794D02* X405936D01* X405103Y328627D01* Y330293D01* X405936Y331126D01* X407602D01* X408435Y330293D01* Y329460D01* X405103D01* X410101Y331126D02* Y327794D01* Y329460D01* X410934Y330293D01* X411767Y331126D01* X412600D01* X169520Y510492D02* Y505494D01* X172019D01* X172852Y506327D01* Y507160D01* X172019Y507993D01* X169520D01* X172019D01* X172852Y508826D01* Y509659D01* X172019Y510492D01* X169520D01* X175351Y505494D02* X177017D01* X177850Y506327D01* Y507993D01* X177017Y508826D01* X175351D01* X174518Y507993D01* Y506327D01* X175351Y505494D01* X180350Y508826D02* X182016D01* X182849Y507993D01* Y505494D01* X180350D01* X179516Y506327D01* X180350Y507160D01* X182849D01* X184515Y508826D02* Y505494D01* Y507160D01* X185348Y507993D01* X186181Y508826D01* X187014D01* X192845Y510492D02* Y505494D01* X190346D01* X189513Y506327D01* Y507993D01* X190346Y508826D01* X192845D01* X202009Y510492D02* X200343D01* X199510Y509659D01* Y506327D01* X200343Y505494D01* X202009D01* X202842Y506327D01* Y509659D01* X202009Y510492D01* X204508Y508826D02* Y506327D01* X205341Y505494D01* X207841D01* Y508826D01* X210340Y509659D02* Y508826D01* X209507D01* X211173D01* X210340D01* Y506327D01* X211173Y505494D01* X213672D02* X215338D01* X214505D01* Y510492D01* X213672D01* X217837Y505494D02* X219503D01* X218670D01* Y508826D01* X217837D01* X222003Y505494D02* Y508826D01* X224502D01* X225335Y507993D01* Y505494D01* X229500D02* X227834D01* X227001Y506327D01* Y507993D01* X227834Y508826D01* X229500D01* X230333Y507993D01* Y507160D01* X227001D01* X172620Y512792D02* Y507794D01* X175119D01* X175952Y508627D01* Y509460D01* X175119Y510293D01* X172620D01* X175119D01* X175952Y511126D01* Y511959D01* X175119Y512792D01* X172620D01* X178451Y507794D02* X180117D01* X180950Y508627D01* Y510293D01* X180117Y511126D01* X178451D01* X177618Y510293D01* Y508627D01* X178451Y507794D01* X183449Y511959D02* Y511126D01* X182616D01* X184283D01* X183449D01* Y508627D01* X184283Y507794D01* X187615Y511959D02* Y511126D01* X186782D01* X188448D01* X187615D01* Y508627D01* X188448Y507794D01* X191780D02* X193446D01* X194279Y508627D01* Y510293D01* X193446Y511126D01* X191780D01* X190947Y510293D01* Y508627D01* X191780Y507794D01* X195946D02* Y511126D01* X196779D01* X197612Y510293D01* Y507794D01* Y510293D01* X198445Y511126D01* X199278Y510293D01* Y507794D01* X209275Y511959D02* X208441Y512792D01* X206775D01* X205942Y511959D01* Y511126D01* X206775Y510293D01* X208441D01* X209275Y509460D01* Y508627D01* X208441Y507794D01* X206775D01* X205942Y508627D01* X211774Y507794D02* X213440D01* X214273Y508627D01* Y510293D01* X213440Y511126D01* X211774D01* X210941Y510293D01* Y508627D01* X211774Y507794D01* X215939D02* X217605D01* X216772D01* Y512792D01* X215939D01* X223437D02* Y507794D01* X220937D01* X220104Y508627D01* Y510293D01* X220937Y511126D01* X223437D01* X227602Y507794D02* X225936D01* X225103Y508627D01* Y510293D01* X225936Y511126D01* X227602D01* X228435Y510293D01* Y509460D01* X225103D01* X230101Y511126D02* Y507794D01* Y509460D01* X230934Y510293D01* X231767Y511126D01* X232600D01* X349520Y510492D02* Y505494D01* X352019D01* X352852Y506327D01* Y507160D01* X352019Y507993D01* X349520D01* X352019D01* X352852Y508826D01* Y509659D01* X352019Y510492D01* X349520D01* X355351Y505494D02* X357017D01* X357850Y506327D01* Y507993D01* X357017Y508826D01* X355351D01* X354518Y507993D01* Y506327D01* X355351Y505494D01* X360349Y508826D02* X362016D01* X362849Y507993D01* Y505494D01* X360349D01* X359516Y506327D01* X360349Y507160D01* X362849D01* X364515Y508826D02* Y505494D01* Y507160D01* X365348Y507993D01* X366181Y508826D01* X367014D01* X372846Y510492D02* Y505494D01* X370346D01* X369513Y506327D01* Y507993D01* X370346Y508826D01* X372846D01* X382009Y510492D02* X380343D01* X379510Y509659D01* Y506327D01* X380343Y505494D01* X382009D01* X382842Y506327D01* Y509659D01* X382009Y510492D01* X384508Y508826D02* Y506327D01* X385341Y505494D01* X387841D01* Y508826D01* X390340Y509659D02* Y508826D01* X389507D01* X391173D01* X390340D01* Y506327D01* X391173Y505494D01* X393672D02* X395338D01* X394505D01* Y510492D01* X393672D01* X397837Y505494D02* X399503D01* X398670D01* Y508826D01* X397837D01* X402003Y505494D02* Y508826D01* X404502D01* X405335Y507993D01* Y505494D01* X409500D02* X407834D01* X407001Y506327D01* Y507993D01* X407834Y508826D01* X409500D01* X410333Y507993D01* Y507160D01* X407001D01* X352620Y512792D02* Y507794D01* X355119D01* X355952Y508627D01* Y509460D01* X355119Y510293D01* X352620D01* X355119D01* X355952Y511126D01* Y511959D01* X355119Y512792D01* X352620D01* X358451Y507794D02* X360117D01* X360950Y508627D01* Y510293D01* X360117Y511126D01* X358451D01* X357618Y510293D01* Y508627D01* X358451Y507794D01* X363450Y511959D02* Y511126D01* X362616D01* X364283D01* X363450D01* Y508627D01* X364283Y507794D01* X367615Y511959D02* Y511126D01* X366782D01* X368448D01* X367615D01* Y508627D01* X368448Y507794D01* X371780D02* X373446D01* X374279Y508627D01* Y510293D01* X373446Y511126D01* X371780D01* X370947Y510293D01* Y508627D01* X371780Y507794D01* X375945D02* Y511126D01* X376779D01* X377612Y510293D01* Y507794D01* Y510293D01* X378445Y511126D01* X379278Y510293D01* Y507794D01* X389275Y511959D02* X388441Y512792D01* X386775D01* X385942Y511959D01* Y511126D01* X386775Y510293D01* X388441D01* X389275Y509460D01* Y508627D01* X388441Y507794D01* X386775D01* X385942Y508627D01* X391774Y507794D02* X393440D01* X394273Y508627D01* Y510293D01* X393440Y511126D01* X391774D01* X390941Y510293D01* Y508627D01* X391774Y507794D01* X395939D02* X397605D01* X396772D01* Y512792D01* X395939D01* X403437D02* Y507794D01* X400937D01* X400104Y508627D01* Y510293D01* X400937Y511126D01* X403437D01* X407602Y507794D02* X405936D01* X405103Y508627D01* Y510293D01* X405936Y511126D01* X407602D01* X408435Y510293D01* Y509460D01* X405103D01* X410101Y511126D02* Y507794D01* Y509460D01* X410934Y510293D01* X411767Y511126D01* X412600D01* D74* X211283Y173244D02* D03* X216205D02* D03* X207784Y161744D02* D03* X212705D02* D03* X207784Y156744D02* D03* X212705D02* D03* X188705Y193244D02* D03* X183783D02* D03* X213205Y227244D02* D03* X208283D02* D03* X211205Y237244D02* D03* X206283D02* D03* X211205Y243244D02* D03* X206283D02* D03* X203705Y153744D02* D03* X198783D02* D03* X198283Y159244D02* D03* X203205D02* D03* X192205Y168244D02* D03* X187284D02* D03* X391283Y173244D02* D03* X396205D02* D03* X387784Y161744D02* D03* X392705D02* D03* X387784Y156744D02* D03* X392705D02* D03* X368705Y193244D02* D03* X363783D02* D03* X393205Y227244D02* D03* X388283D02* D03* X391205Y237244D02* D03* X386283D02* D03* X391205Y243244D02* D03* X386283D02* D03* X383705Y153744D02* D03* X378783D02* D03* X378283Y159244D02* D03* X383205D02* D03* X372205Y168244D02* D03* X367284D02* D03* X211283Y353244D02* D03* X216205D02* D03* X207784Y341744D02* D03* X212705D02* D03* X207784Y336744D02* D03* X212705D02* D03* X188705Y373244D02* D03* X183783D02* D03* X213205Y407244D02* D03* X208283D02* D03* X211205Y417244D02* D03* X206283D02* D03* X211205Y423244D02* D03* X206283D02* D03* X203705Y333744D02* D03* X198783D02* D03* X198283Y339244D02* D03* X203205D02* D03* X192205Y348244D02* D03* X187284D02* D03* X391283Y353244D02* D03* X396205D02* D03* X387784Y341744D02* D03* X392705D02* D03* X387784Y336744D02* D03* X392705D02* D03* X368705Y373244D02* D03* X363783D02* D03* X393205Y407244D02* D03* X388283D02* D03* X391205Y417244D02* D03* X386283D02* D03* X391205Y423244D02* D03* X386283D02* D03* X383705Y333744D02* D03* X378783D02* D03* X378283Y339244D02* D03* X383205D02* D03* X372205Y348244D02* D03* X367284D02* D03* D85* X249244Y203587D02* D03* Y208902D02* D03* X258744Y206087D02* D03* Y211402D02* D03* X249744Y170087D02* D03* Y175402D02* D03* X259244Y172587D02* D03* Y177902D02* D03* X258744Y190087D02* D03* Y195402D02* D03* X249244Y187087D02* D03* Y192402D02* D03* X429244Y203587D02* D03* Y208902D02* D03* X438744Y206087D02* D03* Y211402D02* D03* X429744Y170087D02* D03* Y175402D02* D03* X439244Y172587D02* D03* Y177902D02* D03* X438744Y190087D02* D03* Y195402D02* D03* X429244Y187087D02* D03* Y192402D02* D03* X249244Y383587D02* D03* Y388902D02* D03* X258744Y386087D02* D03* Y391402D02* D03* X249744Y350087D02* D03* Y355402D02* D03* X259244Y352587D02* D03* Y357902D02* D03* X258744Y370087D02* D03* Y375402D02* D03* X249244Y367087D02* D03* Y372402D02* D03* X429244Y383587D02* D03* Y388902D02* D03* X438744Y386087D02* D03* Y391402D02* D03* X429744Y350087D02* D03* Y355402D02* D03* X439244Y352587D02* D03* Y357902D02* D03* X438744Y370087D02* D03* Y375402D02* D03* X429244Y367087D02* D03* Y372402D02* D03* D99* X125000Y260000D02* D03* Y265000D02* D03* Y255000D02* D03* Y250000D02* D03* Y245000D02* D03* Y240000D02* D03* X124600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X290600Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X305100Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X291400Y229800D02* D03* Y234800D02* D03* Y239800D02* D03* Y244800D02* D03* Y254800D02* D03* Y249800D02* D03* X304800Y229300D02* D03* Y234300D02* D03* Y239300D02* D03* Y244300D02* D03* Y254300D02* D03* Y249300D02* D03* X125200Y409200D02* D03* Y414200D02* D03* Y419200D02* D03* Y424200D02* D03* Y434200D02* D03* Y429200D02* D03* X291200Y338300D02* D03* Y343300D02* D03* Y348300D02* D03* Y353300D02* D03* Y363300D02* D03* Y358300D02* D03* X291000Y404100D02* D03* Y409100D02* D03* Y414100D02* D03* Y419100D02* D03* Y429100D02* D03* Y424100D02* D03* X304900Y404500D02* D03* Y409500D02* D03* Y414500D02* D03* Y419500D02* D03* Y429500D02* D03* Y424500D02* D03* X304700Y338200D02* D03* Y343200D02* D03* Y348200D02* D03* Y353200D02* D03* Y363200D02* D03* Y358200D02* D03* X471200Y401400D02* D03* Y406400D02* D03* Y411400D02* D03* Y416400D02* D03* Y426400D02* D03* Y421400D02* D03* X471600Y339500D02* D03* Y344500D02* D03* Y349500D02* D03* Y354500D02* D03* Y364500D02* D03* Y359500D02* D03* Y216100D02* D03* Y221100D02* D03* Y226100D02* D03* Y231100D02* D03* Y241100D02* D03* Y236100D02* D03* X470600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X443700Y124400D02* D03* X438700D02* D03* X433700D02* D03* X428700D02* D03* X418700D02* D03* X423700D02* D03* X357000Y124000D02* D03* X352000D02* D03* X347000D02* D03* X342000D02* D03* X332000D02* D03* X337000D02* D03* X360500Y289900D02* D03* X355500D02* D03* X350500D02* D03* X345500D02* D03* X335500D02* D03* X340500D02* D03* X432500Y290100D02* D03* X427500D02* D03* X422500D02* D03* X417500D02* D03* X407500D02* D03* X412500D02* D03* X431400Y303700D02* D03* X426400D02* D03* X421400D02* D03* X416400D02* D03* X406400D02* D03* X411400D02* D03* X360600Y304500D02* D03* X355600D02* D03* X350600D02* D03* X345600D02* D03* X335600D02* D03* X340600D02* D03* X365000Y469600D02* D03* X360000D02* D03* X355000D02* D03* X350000D02* D03* X340000D02* D03* X345000D02* D03* X435000D02* D03* X430000D02* D03* X425000D02* D03* X420000D02* D03* X410000D02* D03* X415000D02* D03* X252600D02* D03* X247600D02* D03* X242600D02* D03* X237600D02* D03* X227600D02* D03* X232600D02* D03* X183200Y469800D02* D03* X178200D02* D03* X173200D02* D03* X168200D02* D03* X158200D02* D03* X163200D02* D03* X175500Y303900D02* D03* X170500D02* D03* X165500D02* D03* X160500D02* D03* X150500D02* D03* X155500D02* D03* X175700Y290100D02* D03* X170700D02* D03* X165700D02* D03* X160700D02* D03* X150700D02* D03* X155700D02* D03* X260900Y303300D02* D03* X255900D02* D03* X250900D02* D03* X245900D02* D03* X235900D02* D03* X240900D02* D03* X261100Y290100D02* D03* X256100D02* D03* X251100D02* D03* X246100D02* D03* X236100D02* D03* X241100D02* D03* X261300Y123800D02* D03* X256300D02* D03* X251300D02* D03* X246300D02* D03* X236300D02* D03* X241300D02* D03* X180500Y124000D02* D03* X175500D02* D03* X170500D02* D03* X165500D02* D03* X155500D02* D03* X160500D02* D03* X125100Y351700D02* D03* Y356700D02* D03* Y346700D02* D03* Y341700D02* D03* Y336700D02* D03* Y331700D02* D03* D100* X147744Y146744D02* D03* X269791D02* D03* Y268791D02* D03* X147744D02* D03* X327744Y146744D02* D03* X449791D02* D03* Y268791D02* D03* X327744D02* D03* X147744Y326744D02* D03* X269791D02* D03* Y448791D02* D03* X147744D02* D03* X327744Y326744D02* D03* X449791D02* D03* Y448791D02* D03* X327744D02* D03* D101* X133008Y181964D02* D03* Y209524D02* D03* X313008Y181964D02* D03* Y209524D02* D03* X133008Y361964D02* D03* Y389524D02* D03* X313008Y361964D02* D03* Y389524D02* D03* D102* X144031Y185901D02* D03* Y205587D02* D03* X324031Y185901D02* D03* Y205587D02* D03* X144031Y365901D02* D03* Y385587D02* D03* X324031Y365901D02* D03* Y385587D02* D03* D103* X132044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X235244Y252744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X312044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X415244Y252744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X132044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X235244Y432744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* X312044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X415244Y432744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* D104* X132044Y252344D02* D03* X312044D02* D03* X132044Y432344D02* D03* X312044D02* D03* D105* X141744Y166744D02* D03* Y171744D02* D03* X146744Y166744D02* D03* Y171744D02* D03* X151744Y166744D02* D03* Y171744D02* D03* X156744Y166744D02* D03* Y171744D02* D03* X161744Y166744D02* D03* X321744D02* D03* Y171744D02* D03* X326744Y166744D02* D03* Y171744D02* D03* X331744Y166744D02* D03* Y171744D02* D03* X336744Y166744D02* D03* Y171744D02* D03* X341744Y166744D02* D03* X141744Y346744D02* D03* Y351744D02* D03* X146744Y346744D02* D03* Y351744D02* D03* X151744Y346744D02* D03* Y351744D02* D03* X156744Y346744D02* D03* Y351744D02* D03* X161744Y346744D02* D03* X321744D02* D03* Y351744D02* D03* X326744Y346744D02* D03* Y351744D02* D03* X331744Y346744D02* D03* Y351744D02* D03* X336744Y346744D02* D03* Y351744D02* D03* X341744Y346744D02* D03* D106* X161744Y171744D02* D03* X341744D02* D03* X161744Y351744D02* D03* X341744D02* D03* D107* X205244Y252744D02* D03* X283500Y161200D02* D03* X385244Y252744D02* D03* X463500Y161200D02* D03* X205244Y432744D02* D03* X283500Y341200D02* D03* X385244Y432744D02* D03* X463500Y341200D02* D03* D108* X235744Y276244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* X235744Y456244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* D109* X181744Y249744D02* D03* X361744D02* D03* X181744Y429744D02* D03* X361744D02* D03* D110* X258744Y226783D02* D03* Y231705D02* D03* X253744Y227283D02* D03* Y232205D02* D03* X238744Y230205D02* D03* Y225283D02* D03* X244744Y229705D02* D03* Y224783D02* D03* X262244Y249205D02* D03* Y244283D02* D03* X239744Y194205D02* D03* Y189283D02* D03* X438744Y226783D02* D03* Y231705D02* D03* X433744Y227283D02* D03* Y232205D02* D03* X418744Y230205D02* D03* Y225283D02* D03* X424744Y229705D02* D03* Y224783D02* D03* X442244Y249205D02* D03* Y244283D02* D03* X419744Y194205D02* D03* Y189283D02* D03* X258744Y406783D02* D03* Y411705D02* D03* X253744Y407283D02* D03* Y412205D02* D03* X238744Y410205D02* D03* Y405283D02* D03* X244744Y409705D02* D03* Y404783D02* D03* X262244Y429205D02* D03* Y424283D02* D03* X239744Y374205D02* D03* Y369283D02* D03* X438744Y406783D02* D03* Y411705D02* D03* X433744Y407283D02* D03* Y412205D02* D03* X418744Y410205D02* D03* Y405283D02* D03* X424744Y409705D02* D03* Y404783D02* D03* X442244Y429205D02* D03* Y424283D02* D03* X419744Y374205D02* D03* Y369283D02* D03* D111* X169587Y157244D02* D03* X174901D02* D03* X224902Y237244D02* D03* X219587D02* D03* X224902Y243244D02* D03* X219587D02* D03* X164902Y181244D02* D03* X159587D02* D03* X170087Y197244D02* D03* X175401D02* D03* X159587D02* D03* X164901D02* D03* X180587Y152744D02* D03* X185901D02* D03* X349587Y157244D02* D03* X354901D02* D03* X404902Y237244D02* D03* X399587D02* D03* X404902Y243244D02* D03* X399587D02* D03* X344902Y181244D02* D03* X339587D02* D03* X350087Y197244D02* D03* X355401D02* D03* X339587D02* D03* X344901D02* D03* X360587Y152744D02* D03* X365901D02* D03* X169587Y337244D02* D03* X174901D02* D03* X224902Y417244D02* D03* X219587D02* D03* X224902Y423244D02* D03* X219587D02* D03* X164902Y361244D02* D03* X159587D02* D03* X170087Y377244D02* D03* X175401D02* D03* X159587D02* D03* X164901D02* D03* X180587Y332744D02* D03* X185901D02* D03* X349587Y337244D02* D03* X354901D02* D03* X404902Y417244D02* D03* X399587D02* D03* X404902Y423244D02* D03* X399587D02* D03* X344902Y361244D02* D03* X339587D02* D03* X350087Y377244D02* D03* X355401D02* D03* X339587D02* D03* X344901D02* D03* X360587Y332744D02* D03* X365901D02* D03* D112* X189984Y199701D02* D03* X369984D02* D03* X189984Y379701D02* D03* X369984D02* D03* D113* X182504Y199701D02* D03* X186244Y206787D02* D03* X362504Y199701D02* D03* X366244Y206787D02* D03* X182504Y379701D02* D03* X186244Y386787D02* D03* X362504Y379701D02* D03* X366244Y386787D02* D03* D114* X216421Y196177D02* D03* X396421D02* D03* X216421Y376177D02* D03* X396421D02* D03* D115* X213862Y196177D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X216421Y219406D02* D03* X213862D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X393862Y196177D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* X396421Y219406D02* D03* X393862D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* X213862Y376177D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X216421Y399406D02* D03* X213862D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X393862Y376177D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* X396421Y399406D02* D03* X393862D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* M02* ================================================ FILE: hardware/panel.GD1 ================================================ G04 Layer_Color=2752767* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD120C,0.00200*% %ADD121C,0.00267*% %ADD122C,0.00133*% D120* X124200Y259200D02* Y260800D01* X125800D01* Y259200D01* X124200D01* Y264200D02* Y265800D01* X125800D01* Y264200D01* X124200D01* Y254200D02* Y255800D01* X125800D01* Y254200D01* X124200D01* Y249200D02* Y250800D01* X125800D01* Y249200D01* X124200D01* Y244200D02* Y245800D01* X125800D01* Y244200D01* X124200D01* Y239200D02* Y240800D01* X125800D01* Y239200D01* X124200D01* X123800Y151700D02* Y153300D01* X125400D01* Y151700D01* X123800D01* Y156700D02* Y158300D01* X125400D01* Y156700D01* X123800D01* Y161700D02* Y163300D01* X125400D01* Y161700D01* X123800D01* Y166700D02* Y168300D01* X125400D01* Y166700D01* X123800D01* Y176700D02* Y178300D01* X125400D01* Y176700D01* X123800D01* Y171700D02* Y173300D01* X125400D01* Y171700D01* X123800D01* X289800Y149200D02* Y150800D01* X291400D01* Y149200D01* X289800D01* Y154200D02* Y155800D01* X291400D01* Y154200D01* X289800D01* Y159200D02* Y160800D01* X291400D01* Y159200D01* X289800D01* Y164200D02* Y165800D01* X291400D01* Y164200D01* X289800D01* Y174200D02* Y175800D01* X291400D01* Y174200D01* X289800D01* Y169200D02* Y170800D01* X291400D01* Y169200D01* X289800D01* X304300Y149200D02* Y150800D01* X305900D01* Y149200D01* X304300D01* Y154200D02* Y155800D01* X305900D01* Y154200D01* X304300D01* Y159200D02* Y160800D01* X305900D01* Y159200D01* X304300D01* Y164200D02* Y165800D01* X305900D01* Y164200D01* X304300D01* Y174200D02* Y175800D01* X305900D01* Y174200D01* X304300D01* Y169200D02* Y170800D01* X305900D01* Y169200D01* X304300D01* X290600Y229000D02* Y230600D01* X292200D01* Y229000D01* X290600D01* Y234000D02* Y235600D01* X292200D01* Y234000D01* X290600D01* Y239000D02* Y240600D01* X292200D01* Y239000D01* X290600D01* Y244000D02* Y245600D01* X292200D01* Y244000D01* X290600D01* Y254000D02* Y255600D01* X292200D01* Y254000D01* X290600D01* Y249000D02* Y250600D01* X292200D01* Y249000D01* X290600D01* X304000Y228500D02* Y230100D01* X305600D01* Y228500D01* X304000D01* Y233500D02* Y235100D01* X305600D01* Y233500D01* X304000D01* Y238500D02* Y240100D01* X305600D01* Y238500D01* X304000D01* Y243500D02* Y245100D01* X305600D01* Y243500D01* X304000D01* Y253500D02* Y255100D01* X305600D01* Y253500D01* X304000D01* Y248500D02* Y250100D01* X305600D01* Y248500D01* X304000D01* X124400Y408400D02* Y410000D01* X126000D01* Y408400D01* X124400D01* Y413400D02* Y415000D01* X126000D01* Y413400D01* X124400D01* Y418400D02* Y420000D01* X126000D01* Y418400D01* X124400D01* Y423400D02* Y425000D01* X126000D01* Y423400D01* X124400D01* Y433400D02* Y435000D01* X126000D01* Y433400D01* X124400D01* Y428400D02* Y430000D01* X126000D01* Y428400D01* X124400D01* X290400Y337500D02* Y339100D01* X292000D01* Y337500D01* X290400D01* Y342500D02* Y344100D01* X292000D01* Y342500D01* X290400D01* Y347500D02* Y349100D01* X292000D01* Y347500D01* X290400D01* Y352500D02* Y354100D01* X292000D01* Y352500D01* X290400D01* Y362500D02* Y364100D01* X292000D01* Y362500D01* X290400D01* Y357500D02* Y359100D01* X292000D01* Y357500D01* X290400D01* X290200Y403300D02* Y404900D01* X291800D01* Y403300D01* X290200D01* Y408300D02* Y409900D01* X291800D01* Y408300D01* X290200D01* Y413300D02* Y414900D01* X291800D01* Y413300D01* X290200D01* Y418300D02* Y419900D01* X291800D01* Y418300D01* X290200D01* Y428300D02* Y429900D01* X291800D01* Y428300D01* X290200D01* Y423300D02* Y424900D01* X291800D01* Y423300D01* X290200D01* X304100Y403700D02* Y405300D01* X305700D01* Y403700D01* X304100D01* Y408700D02* Y410300D01* X305700D01* Y408700D01* X304100D01* Y413700D02* Y415300D01* X305700D01* Y413700D01* X304100D01* Y418700D02* Y420300D01* X305700D01* Y418700D01* X304100D01* Y428700D02* Y430300D01* X305700D01* Y428700D01* X304100D01* Y423700D02* Y425300D01* X305700D01* Y423700D01* X304100D01* X303900Y337400D02* Y339000D01* X305500D01* Y337400D01* X303900D01* Y342400D02* Y344000D01* X305500D01* Y342400D01* X303900D01* Y347400D02* Y349000D01* X305500D01* Y347400D01* X303900D01* Y352400D02* Y354000D01* X305500D01* Y352400D01* X303900D01* Y362400D02* Y364000D01* X305500D01* Y362400D01* X303900D01* Y357400D02* Y359000D01* X305500D01* Y357400D01* X303900D01* X470400Y400600D02* Y402200D01* X472000D01* Y400600D01* X470400D01* Y405600D02* Y407200D01* X472000D01* Y405600D01* X470400D01* Y410600D02* Y412200D01* X472000D01* Y410600D01* X470400D01* Y415600D02* Y417200D01* X472000D01* Y415600D01* X470400D01* Y425600D02* Y427200D01* X472000D01* Y425600D01* X470400D01* Y420600D02* Y422200D01* X472000D01* Y420600D01* X470400D01* X470800Y338700D02* Y340300D01* X472400D01* Y338700D01* X470800D01* Y343700D02* Y345300D01* X472400D01* Y343700D01* X470800D01* Y348700D02* Y350300D01* X472400D01* Y348700D01* X470800D01* Y353700D02* Y355300D01* X472400D01* Y353700D01* X470800D01* Y363700D02* Y365300D01* X472400D01* Y363700D01* X470800D01* Y358700D02* Y360300D01* X472400D01* Y358700D01* X470800D01* Y215300D02* Y216900D01* X472400D01* Y215300D01* X470800D01* Y220300D02* Y221900D01* X472400D01* Y220300D01* X470800D01* Y225300D02* Y226900D01* X472400D01* Y225300D01* X470800D01* Y230300D02* Y231900D01* X472400D01* Y230300D01* X470800D01* Y240300D02* Y241900D01* X472400D01* Y240300D01* X470800D01* Y235300D02* Y236900D01* X472400D01* Y235300D01* X470800D01* X469800Y151700D02* Y153300D01* X471400D01* Y151700D01* X469800D01* Y156700D02* Y158300D01* X471400D01* Y156700D01* X469800D01* Y161700D02* Y163300D01* X471400D01* Y161700D01* X469800D01* Y166700D02* Y168300D01* X471400D01* Y166700D01* X469800D01* Y176700D02* Y178300D01* X471400D01* Y176700D01* X469800D01* Y171700D02* Y173300D01* X471400D01* Y171700D01* X469800D01* X442900Y123600D02* Y125200D01* X444500D01* Y123600D01* X442900D01* X437900D02* Y125200D01* X439500D01* Y123600D01* X437900D01* X432900D02* Y125200D01* X434500D01* Y123600D01* X432900D01* X427900D02* Y125200D01* X429500D01* Y123600D01* X427900D01* X417900D02* Y125200D01* X419500D01* Y123600D01* X417900D01* X422900D02* Y125200D01* X424500D01* Y123600D01* X422900D01* X356200Y123200D02* Y124800D01* X357800D01* Y123200D01* X356200D01* X351200D02* Y124800D01* X352800D01* Y123200D01* X351200D01* X346200D02* Y124800D01* X347800D01* Y123200D01* X346200D01* X341200D02* Y124800D01* X342800D01* Y123200D01* X341200D01* X331200D02* Y124800D01* X332800D01* Y123200D01* X331200D01* X336200D02* Y124800D01* X337800D01* Y123200D01* X336200D01* X359700Y289100D02* Y290700D01* X361300D01* Y289100D01* X359700D01* X354700D02* Y290700D01* X356300D01* Y289100D01* X354700D01* X349700D02* Y290700D01* X351300D01* Y289100D01* X349700D01* X344700D02* Y290700D01* X346300D01* Y289100D01* X344700D01* X334700D02* Y290700D01* X336300D01* Y289100D01* X334700D01* X339700D02* Y290700D01* X341300D01* Y289100D01* X339700D01* X431700Y289300D02* Y290900D01* X433300D01* Y289300D01* X431700D01* X426700D02* Y290900D01* X428300D01* Y289300D01* X426700D01* X421700D02* Y290900D01* X423300D01* Y289300D01* X421700D01* X416700D02* Y290900D01* X418300D01* Y289300D01* X416700D01* X406700D02* Y290900D01* X408300D01* Y289300D01* X406700D01* X411700D02* Y290900D01* X413300D01* Y289300D01* X411700D01* X430600Y302900D02* Y304500D01* X432200D01* Y302900D01* X430600D01* X425600D02* Y304500D01* X427200D01* Y302900D01* X425600D01* X420600D02* Y304500D01* X422200D01* Y302900D01* X420600D01* X415600D02* Y304500D01* X417200D01* Y302900D01* X415600D01* X405600D02* Y304500D01* X407200D01* Y302900D01* X405600D01* X410600D02* Y304500D01* X412200D01* Y302900D01* X410600D01* X359800Y303700D02* Y305300D01* X361400D01* Y303700D01* X359800D01* X354800D02* Y305300D01* X356400D01* Y303700D01* X354800D01* X349800D02* Y305300D01* X351400D01* Y303700D01* X349800D01* X344800D02* Y305300D01* X346400D01* Y303700D01* X344800D01* X334800D02* Y305300D01* X336400D01* Y303700D01* X334800D01* X339800D02* Y305300D01* X341400D01* Y303700D01* X339800D01* X364200Y468800D02* Y470400D01* X365800D01* Y468800D01* X364200D01* X359200D02* Y470400D01* X360800D01* Y468800D01* X359200D01* X354200D02* Y470400D01* X355800D01* Y468800D01* X354200D01* X349200D02* Y470400D01* X350800D01* Y468800D01* X349200D01* X339200D02* Y470400D01* X340800D01* Y468800D01* X339200D01* X344200D02* Y470400D01* X345800D01* Y468800D01* X344200D01* X434200D02* Y470400D01* X435800D01* Y468800D01* X434200D01* X429200D02* Y470400D01* X430800D01* Y468800D01* X429200D01* X424200D02* Y470400D01* X425800D01* Y468800D01* X424200D01* X419200D02* Y470400D01* X420800D01* Y468800D01* X419200D01* X409200D02* Y470400D01* X410800D01* Y468800D01* X409200D01* X414200D02* Y470400D01* X415800D01* Y468800D01* X414200D01* X251800D02* Y470400D01* X253400D01* Y468800D01* X251800D01* X246800D02* Y470400D01* X248400D01* Y468800D01* X246800D01* X241800D02* Y470400D01* X243400D01* Y468800D01* X241800D01* X236800D02* Y470400D01* X238400D01* Y468800D01* X236800D01* X226800D02* Y470400D01* X228400D01* Y468800D01* X226800D01* X231800D02* Y470400D01* X233400D01* Y468800D01* X231800D01* X182400Y469000D02* Y470600D01* X184000D01* Y469000D01* X182400D01* X177400D02* Y470600D01* X179000D01* Y469000D01* X177400D01* X172400D02* Y470600D01* X174000D01* Y469000D01* X172400D01* X167400D02* Y470600D01* X169000D01* Y469000D01* X167400D01* X157400D02* Y470600D01* X159000D01* Y469000D01* X157400D01* X162400D02* Y470600D01* X164000D01* Y469000D01* X162400D01* X174700Y303100D02* Y304700D01* X176300D01* Y303100D01* X174700D01* X169700D02* Y304700D01* X171300D01* Y303100D01* X169700D01* X164700D02* Y304700D01* X166300D01* Y303100D01* X164700D01* X159700D02* Y304700D01* X161300D01* Y303100D01* X159700D01* X149700D02* Y304700D01* X151300D01* Y303100D01* X149700D01* X154700D02* Y304700D01* X156300D01* Y303100D01* X154700D01* X174900Y289300D02* Y290900D01* X176500D01* Y289300D01* X174900D01* X169900D02* Y290900D01* X171500D01* Y289300D01* X169900D01* X164900D02* Y290900D01* X166500D01* Y289300D01* X164900D01* X159900D02* Y290900D01* X161500D01* Y289300D01* X159900D01* X149900D02* Y290900D01* X151500D01* Y289300D01* X149900D01* X154900D02* Y290900D01* X156500D01* Y289300D01* X154900D01* X260100Y302500D02* Y304100D01* X261700D01* Y302500D01* X260100D01* X255100D02* Y304100D01* X256700D01* Y302500D01* X255100D01* X250100D02* Y304100D01* X251700D01* Y302500D01* X250100D01* X245100D02* Y304100D01* X246700D01* Y302500D01* X245100D01* X235100D02* Y304100D01* X236700D01* Y302500D01* X235100D01* X240100D02* Y304100D01* X241700D01* Y302500D01* X240100D01* X260300Y289300D02* Y290900D01* X261900D01* Y289300D01* X260300D01* X255300D02* Y290900D01* X256900D01* Y289300D01* X255300D01* X250300D02* Y290900D01* X251900D01* Y289300D01* X250300D01* X245300D02* Y290900D01* X246900D01* Y289300D01* X245300D01* X235300D02* Y290900D01* X236900D01* Y289300D01* X235300D01* X240300D02* Y290900D01* X241900D01* Y289300D01* X240300D01* X260500Y123000D02* Y124600D01* X262100D01* Y123000D01* X260500D01* X255500D02* Y124600D01* X257100D01* Y123000D01* X255500D01* X250500D02* Y124600D01* X252100D01* Y123000D01* X250500D01* X245500D02* Y124600D01* X247100D01* Y123000D01* X245500D01* X235500D02* Y124600D01* X237100D01* Y123000D01* X235500D01* X240500D02* Y124600D01* X242100D01* Y123000D01* X240500D01* X179700Y123200D02* Y124800D01* X181300D01* Y123200D01* X179700D01* X174700D02* Y124800D01* X176300D01* Y123200D01* X174700D01* X169700D02* Y124800D01* X171300D01* Y123200D01* X169700D01* X164700D02* Y124800D01* X166300D01* Y123200D01* X164700D01* X154700D02* Y124800D01* X156300D01* Y123200D01* X154700D01* X159700D02* Y124800D01* X161300D01* Y123200D01* X159700D01* X124300Y350900D02* Y352500D01* X125900D01* Y350900D01* X124300D01* Y355900D02* Y357500D01* X125900D01* Y355900D01* X124300D01* Y345900D02* Y347500D01* X125900D01* Y345900D01* X124300D01* Y340900D02* Y342500D01* X125900D01* Y340900D01* X124300D01* Y335900D02* Y337500D01* X125900D01* Y335900D01* X124300D01* Y330900D02* Y332500D01* X125900D01* Y330900D01* X124300D01* X133008Y181164D02* X132208Y182764D01* X133808D01* X133008Y181164D01* X144031Y185101D02* X144431Y185501D01* X144831D01* X144431Y185901D01* X144831Y186301D01* X144431D01* X144031Y186701D01* X143631Y186301D01* X143231D01* X143631Y185901D01* X143231Y185501D01* X143631D01* X144031Y185101D01* Y204787D02* X144431Y205187D01* X144831D01* X144431Y205587D01* X144831Y205987D01* X144431D01* X144031Y206387D01* X143631Y205987D01* X143231D01* X143631Y205587D01* X143231Y205187D01* X143631D01* X144031Y204787D01* X133008Y208724D02* X132208Y210324D01* X133808D01* X133008Y208724D01* X131244Y221544D02* X131644Y222344D01* X131244Y223144D01* X132044Y222744D01* X132844Y223144D01* X132444Y222344D01* X132844Y221544D01* X132044Y221944D01* X131244Y221544D01* Y231544D02* X131644Y232344D01* X131244Y233144D01* X132044Y232744D01* X132844Y233144D01* X132444Y232344D01* X132844Y231544D01* X132044Y231944D01* X131244Y231544D01* Y241544D02* X131644Y242344D01* X131244Y243144D01* X132044Y242744D01* X132844Y243144D01* X132444Y242344D01* X132844Y241544D01* X132044Y241944D01* X131244Y241544D01* Y251544D02* X131644Y252344D01* X131244Y253144D01* X132044Y252744D01* X132844Y253144D01* X132444Y252344D01* X132844Y251544D01* X132044Y251944D01* X131244Y251544D01* X141344Y166344D02* Y165944D01* X142144D01* Y166344D01* X142544D01* Y167144D01* X142144D01* Y167544D01* X141344D01* Y167144D01* X140944D01* Y166344D01* X141344D01* Y171344D02* Y170944D01* X142144D01* Y171344D01* X142544D01* Y172144D01* X142144D01* Y172544D01* X141344D01* Y172144D01* X140944D01* Y171344D01* X141344D01* X146344Y166344D02* Y165944D01* X147144D01* Y166344D01* X147544D01* Y167144D01* X147144D01* Y167544D01* X146344D01* Y167144D01* X145944D01* Y166344D01* X146344D01* Y171344D02* Y170944D01* X147144D01* Y171344D01* X147544D01* Y172144D01* X147144D01* Y172544D01* X146344D01* Y172144D01* X145944D01* Y171344D01* X146344D01* X151344Y166344D02* Y165944D01* X152144D01* Y166344D01* X152544D01* Y167144D01* X152144D01* Y167544D01* X151344D01* Y167144D01* X150944D01* Y166344D01* X151344D01* Y171344D02* Y170944D01* X152144D01* Y171344D01* X152544D01* Y172144D01* X152144D01* Y172544D01* X151344D01* Y172144D01* X150944D01* Y171344D01* X151344D01* X156344Y166344D02* Y165944D01* X157144D01* Y166344D01* X157544D01* Y167144D01* X157144D01* Y167544D01* X156344D01* Y167144D01* X155944D01* Y166344D01* X156344D01* Y171344D02* Y170944D01* X157144D01* Y171344D01* X157544D01* Y172144D01* X157144D01* Y172544D01* X156344D01* Y172144D01* X155944D01* Y171344D01* X156344D01* X161344Y166344D02* Y165944D01* X162144D01* Y166344D01* X162544D01* Y167144D01* X162144D01* Y167544D01* X161344D01* Y167144D01* X160944D01* Y166344D01* X161344D01* Y171344D02* Y170944D01* X162144D01* Y171344D01* X162544D01* Y172144D01* X162144D01* Y172544D01* X161344D01* Y172144D01* X160944D01* Y171344D01* X161344D01* X234444Y251944D02* X234844Y252744D01* X234444Y253544D01* X235244Y253144D01* X236044Y253544D01* X235644Y252744D01* X236044Y251944D01* X235244Y252344D01* X234444Y251944D01* X224444D02* X224844Y252744D01* X224444Y253544D01* X225244Y253144D01* X226044Y253544D01* X225644Y252744D01* X226044Y251944D01* X225244Y252344D01* X224444Y251944D01* X214444D02* X214844Y252744D01* X214444Y253544D01* X215244Y253144D01* X216044Y253544D01* X215644Y252744D01* X216044Y251944D01* X215244Y252344D01* X214444Y251944D01* X204444D02* X204844Y252744D01* X204444Y253544D01* X205244Y253144D01* X206044Y253544D01* X205644Y252744D01* X206044Y251944D01* X205244Y252344D01* X204444Y251944D01* X282700Y160400D02* X283100D01* X283500Y160800D01* X283900Y160400D01* X284300D01* Y160800D01* X283900Y161200D01* X284300Y161600D01* Y162000D01* X283900D01* X283500Y161600D01* X283100Y162000D01* X282700D01* Y161600D01* X283100Y161200D01* X282700Y160800D01* Y160400D01* Y170400D02* X283100D01* X283500Y170800D01* X283900Y170400D01* X284300D01* Y170800D01* X283900Y171200D01* X284300Y171600D01* Y172000D01* X283900D01* X283500Y171600D01* X283100Y172000D01* X282700D01* Y171600D01* X283100Y171200D01* X282700Y170800D01* Y170400D01* Y180400D02* X283100D01* X283500Y180800D01* X283900Y180400D01* X284300D01* Y180800D01* X283900Y181200D01* X284300Y181600D01* Y182000D01* X283900D01* X283500Y181600D01* X283100Y182000D01* X282700D01* Y181600D01* X283100Y181200D01* X282700Y180800D01* Y180400D01* Y190400D02* X283100D01* X283500Y190800D01* X283900Y190400D01* X284300D01* Y190800D01* X283900Y191200D01* X284300Y191600D01* Y192000D01* X283900D01* X283500Y191600D01* X283100Y192000D01* X282700D01* Y191600D01* X283100Y191200D01* X282700Y190800D01* Y190400D01* Y200400D02* X283100D01* X283500Y200800D01* X283900Y200400D01* X284300D01* Y200800D01* X283900Y201200D01* X284300Y201600D01* Y202000D01* X283900D01* X283500Y201600D01* X283100Y202000D01* X282700D01* Y201600D01* X283100Y201200D01* X282700Y200800D01* Y200400D01* Y210400D02* X283100D01* X283500Y210800D01* X283900Y210400D01* X284300D01* Y210800D01* X283900Y211200D01* X284300Y211600D01* Y212000D01* X283900D01* X283500Y211600D01* X283100Y212000D01* X282700D01* Y211600D01* X283100Y211200D01* X282700Y210800D01* Y210400D01* Y220400D02* X283100D01* X283500Y220800D01* X283900Y220400D01* X284300D01* Y220800D01* X283900Y221200D01* X284300Y221600D01* Y222000D01* X283900D01* X283500Y221600D01* X283100Y222000D01* X282700D01* Y221600D01* X283100Y221200D01* X282700Y220800D01* Y220400D01* Y230400D02* X283100D01* X283500Y230800D01* X283900Y230400D01* X284300D01* Y230800D01* X283900Y231200D01* X284300Y231600D01* Y232000D01* X283900D01* X283500Y231600D01* X283100Y232000D01* X282700D01* Y231600D01* X283100Y231200D01* X282700Y230800D01* Y230400D01* Y240400D02* X283100D01* X283500Y240800D01* X283900Y240400D01* X284300D01* Y240800D01* X283900Y241200D01* X284300Y241600D01* Y242000D01* X283900D01* X283500Y241600D01* X283100Y242000D01* X282700D01* Y241600D01* X283100Y241200D01* X282700Y240800D01* Y240400D01* Y250400D02* X283100D01* X283500Y250800D01* X283900Y250400D01* X284300D01* Y250800D01* X283900Y251200D01* X284300Y251600D01* Y252000D01* X283900D01* X283500Y251600D01* X283100Y252000D01* X282700D01* Y251600D01* X283100Y251200D01* X282700Y250800D01* Y250400D01* X234944Y276244D02* X235744Y277044D01* X236544Y276244D01* X235744Y275444D01* X234944Y276244D01* X214944D02* X215744Y277044D01* X216544Y276244D01* X215744Y275444D01* X214944Y276244D01* X149444Y206944D02* Y208544D01* X151044D01* Y206944D01* X149444D01* X149844Y207344D02* Y208144D01* X150644D01* Y207344D01* X149844D01* X248600Y228905D02* Y230505D01* X250200D01* Y228905D01* X248600D01* X249000Y229305D02* Y230105D01* X249800D01* Y229305D01* X249000D01* X183700Y143095D02* Y144695D01* X185300D01* Y143095D01* X183700D01* X184100Y143495D02* Y144295D01* X184900D01* Y143495D01* X184100D01* X190000Y216500D02* Y218100D01* X191600D01* Y216500D01* X190000D01* X190400Y216900D02* Y217700D01* X191200D01* Y216900D01* X190400D01* X183187Y167609D02* Y169209D01* X184787D01* Y167609D01* X183187D01* X183587Y168009D02* Y168809D01* X184387D01* Y168009D01* X183587D01* X233141Y224483D02* Y226083D01* X234741D01* Y224483D01* X233141D01* X233541Y224883D02* Y225683D01* X234341D01* Y224883D01* X233541D01* X231800Y164300D02* Y165900D01* X233400D01* Y164300D01* X231800D01* X232200Y164700D02* Y165500D01* X233000D01* Y164700D01* X232200D01* X194900Y229400D02* Y231000D01* X196500D01* Y229400D01* X194900D01* X195300Y229800D02* Y230600D01* X196100D01* Y229800D01* X195300D01* X185500Y199800D02* Y201400D01* X187100D01* Y199800D01* X185500D01* X185900Y200200D02* Y201000D01* X186700D01* Y200200D01* X185900D01* X225618Y162200D02* Y163800D01* X227218D01* Y162200D01* X225618D01* X226018Y162600D02* Y163400D01* X226818D01* Y162600D01* X226018D01* X172300Y190500D02* Y192100D01* X173900D01* Y190500D01* X172300D01* X172700Y190900D02* Y191700D01* X173500D01* Y190900D01* X172700D01* X193900Y140600D02* Y142200D01* X195500D01* Y140600D01* X193900D01* X194300Y141000D02* Y141800D01* X195100D01* Y141000D01* X194300D01* X165200Y164500D02* Y166100D01* X166800D01* Y164500D01* X165200D01* X165600Y164900D02* Y165700D01* X166400D01* Y164900D01* X165600D01* X191800Y152300D02* Y153900D01* X193400D01* Y152300D01* X191800D01* X192200Y152700D02* Y153500D01* X193000D01* Y152700D01* X192200D01* X188100Y151600D02* Y153200D01* X189700D01* Y151600D01* X188100D01* X188500Y152000D02* Y152800D01* X189300D01* Y152000D01* X188500D01* X197100Y145386D02* Y146986D01* X198700D01* Y145386D01* X197100D01* X197500Y145786D02* Y146586D01* X198300D01* Y145786D01* X197500D01* X191800Y148700D02* Y150300D01* X193400D01* Y148700D01* X191800D01* X192200Y149100D02* Y149900D01* X193000D01* Y149100D01* X192200D01* X177200Y155800D02* Y157400D01* X178800D01* Y155800D01* X177200D01* X177600Y156200D02* Y157000D01* X178400D01* Y156200D01* X177600D01* X153800Y180444D02* Y182044D01* X155400D01* Y180444D01* X153800D01* X154200Y180844D02* Y181644D01* X155000D01* Y180844D01* X154200D01* X140444Y245444D02* Y247044D01* X142044D01* Y245444D01* X140444D01* X140844Y245844D02* Y246644D01* X141644D01* Y245844D01* X140844D01* X140244Y225744D02* Y227344D01* X141844D01* Y225744D01* X140244D01* X140644Y226144D02* Y226944D01* X141444D01* Y226144D01* X140644D01* X148444Y245544D02* Y247144D01* X150044D01* Y245544D01* X148444D01* X148844Y245944D02* Y246744D01* X149644D01* Y245944D01* X148844D01* Y225844D02* Y227444D01* X150444D01* Y225844D01* X148844D01* X149244Y226244D02* Y227044D01* X150044D01* Y226244D01* X149244D01* X171644Y233244D02* Y234844D01* X173244D01* Y233244D01* X171644D01* X172044Y233644D02* Y234444D01* X172844D01* Y233644D01* X172044D01* X165844Y233244D02* Y234844D01* X167444D01* Y233244D01* X165844D01* X166244Y233644D02* Y234444D01* X167044D01* Y233644D01* X166244D01* X165944Y260844D02* Y262444D01* X167544D01* Y260844D01* X165944D01* X166344Y261244D02* Y262044D01* X167144D01* Y261244D01* X166344D01* X166244Y267644D02* Y269244D01* X167844D01* Y267644D01* X166244D01* X166644Y268044D02* Y268844D01* X167444D01* Y268044D01* X166644D01* X165844Y264144D02* Y265744D01* X167444D01* Y264144D01* X165844D01* X166244Y264544D02* Y265344D01* X167044D01* Y264544D01* X166244D01* X168744Y233244D02* Y234844D01* X170344D01* Y233244D01* X168744D01* X169144Y233644D02* Y234444D01* X169944D01* Y233644D01* X169144D01* X179444Y259944D02* Y261544D01* X181044D01* Y259944D01* X179444D01* X179844Y260344D02* Y261144D01* X180644D01* Y260344D01* X179844D01* X187444Y259944D02* Y261544D01* X189044D01* Y259944D01* X187444D01* X187844Y260344D02* Y261144D01* X188644D01* Y260344D01* X187844D01* X195444Y263944D02* Y265544D01* X197044D01* Y263944D01* X195444D01* X195844Y264344D02* Y265144D01* X196644D01* Y264344D01* X195844D01* X175444Y267944D02* Y269544D01* X177044D01* Y267944D01* X175444D01* X175844Y268344D02* Y269144D01* X176644D01* Y268344D01* X175844D01* X191444Y267944D02* Y269544D01* X193044D01* Y267944D01* X191444D01* X191844Y268344D02* Y269144D01* X192644D01* Y268344D01* X191844D01* X195444Y267944D02* Y269544D01* X197044D01* Y267944D01* X195444D01* X195844Y268344D02* Y269144D01* X196644D01* Y268344D01* X195844D01* X199444Y263944D02* Y265544D01* X201044D01* Y263944D01* X199444D01* X199844Y264344D02* Y265144D01* X200644D01* Y264344D01* X199844D01* X229700Y167609D02* Y169209D01* X231300D01* Y167609D01* X229700D01* X230100Y168009D02* Y168809D01* X230900D01* Y168009D01* X230100D01* X251400Y161900D02* Y163500D01* X253000D01* Y161900D01* X251400D01* X251800Y162300D02* Y163100D01* X252600D01* Y162300D01* X251800D01* X243100Y236400D02* Y238000D01* X244700D01* Y236400D01* X243100D01* X243500Y236800D02* Y237600D01* X244300D01* Y236800D01* X243500D01* X257944Y201900D02* Y203500D01* X259544D01* Y201900D01* X257944D01* X258344Y202300D02* Y203100D01* X259144D01* Y202300D01* X258344D01* X254300Y189600D02* Y191200D01* X255900D01* Y189600D01* X254300D01* X254700Y190000D02* Y190800D01* X255500D01* Y190000D01* X254700D01* X248300Y196100D02* Y197700D01* X249900D01* Y196100D01* X248300D01* X248700Y196500D02* Y197300D01* X249500D01* Y196500D01* X248700D01* X238100Y219900D02* Y221500D01* X239700D01* Y219900D01* X238100D01* X238500Y220300D02* Y221100D01* X239300D01* Y220300D01* X238500D01* X238100Y185244D02* Y186844D01* X239700D01* Y185244D01* X238100D01* X238500Y185644D02* Y186444D01* X239300D01* Y185644D01* X238500D01* X233900Y187300D02* Y188900D01* X235500D01* Y187300D01* X233900D01* X234300Y187700D02* Y188500D01* X235100D01* Y187700D01* X234300D01* X272100Y204400D02* Y206000D01* X273700D01* Y204400D01* X272100D01* X272500Y204800D02* Y205600D01* X273300D01* Y204800D01* X272500D01* X245100Y172100D02* Y173700D01* X246700D01* Y172100D01* X245100D01* X245500Y172500D02* Y173300D01* X246300D01* Y172500D01* X245500D01* X244700Y185800D02* Y187400D01* X246300D01* Y185800D01* X244700D01* X245100Y186200D02* Y187000D01* X245900D01* Y186200D01* X245100D01* X245300Y199900D02* Y201500D01* X246900D01* Y199900D01* X245300D01* X245700Y200300D02* Y201100D01* X246500D01* Y200300D01* X245700D01* X228100Y159300D02* Y160900D01* X229700D01* Y159300D01* X228100D01* X228500Y159700D02* Y160500D01* X229300D01* Y159700D01* X228500D01* X229900Y210400D02* Y212000D01* X231500D01* Y210400D01* X229900D01* X230300Y210800D02* Y211600D01* X231100D01* Y210800D01* X230300D01* X233900Y191400D02* Y193000D01* X235500D01* Y191400D01* X233900D01* X234300Y191800D02* Y192600D01* X235100D01* Y191800D01* X234300D01* X265900Y181000D02* Y182600D01* X267500D01* Y181000D01* X265900D01* X266300Y181400D02* Y182200D01* X267100D01* Y181400D01* X266300D01* X174444Y201444D02* Y203044D01* X176044D01* Y201444D01* X174444D01* X174844Y201844D02* Y202644D01* X175644D01* Y201844D01* X174844D01* X158287Y201944D02* Y203544D01* X159887D01* Y201944D01* X158287D01* X158687Y202344D02* Y203144D01* X159487D01* Y202344D01* X158687D01* X211944Y184944D02* Y186544D01* X213544D01* Y184944D01* X211944D01* X212344Y185344D02* Y186144D01* X213144D01* Y185344D01* X212344D01* X219444Y188944D02* Y190544D01* X221044D01* Y188944D01* X219444D01* X219844Y189344D02* Y190144D01* X220644D01* Y189344D01* X219844D01* X220944Y184444D02* Y186044D01* X222544D01* Y184444D01* X220944D01* X221344Y184844D02* Y185644D01* X222144D01* Y184844D01* X221344D01* X216944Y186444D02* Y188044D01* X218544D01* Y186444D01* X216944D01* X217344Y186844D02* Y187644D01* X218144D01* Y186844D01* X217344D01* X216944Y149444D02* Y151044D01* X218544D01* Y149444D01* X216944D01* X217344Y149844D02* Y150644D01* X218144D01* Y149844D01* X217344D01* X221500Y151030D02* Y152630D01* X223100D01* Y151030D01* X221500D01* X221900Y151430D02* Y152230D01* X222700D01* Y151430D01* X221900D01* X219400Y156444D02* Y158044D01* X221000D01* Y156444D01* X219400D01* X219800Y156844D02* Y157644D01* X220600D01* Y156844D01* X219800D01* X206944Y187944D02* Y189544D01* X208544D01* Y187944D01* X206944D01* X207344Y188344D02* Y189144D01* X208144D01* Y188344D01* X207344D01* X202944Y177444D02* Y179044D01* X204544D01* Y177444D01* X202944D01* X203344Y177844D02* Y178644D01* X204144D01* Y177844D01* X203344D01* X223600Y226444D02* Y228044D01* X225200D01* Y226444D01* X223600D01* X224000Y226844D02* Y227644D01* X224800D01* Y226844D01* X224000D01* X202944Y189444D02* Y191044D01* X204544D01* Y189444D01* X202944D01* X203344Y189844D02* Y190644D01* X204144D01* Y189844D01* X203344D01* X198944Y187444D02* Y189044D01* X200544D01* Y187444D01* X198944D01* X199344Y187844D02* Y188644D01* X200144D01* Y187844D01* X199344D01* X182444Y186444D02* Y188044D01* X184044D01* Y186444D01* X182444D01* X182844Y186844D02* Y187644D01* X183644D01* Y186844D01* X182844D01* X186444Y180444D02* Y182044D01* X188044D01* Y180444D01* X186444D01* X186844Y180844D02* Y181644D01* X187644D01* Y180844D01* X186844D01* X177944Y199944D02* Y201544D01* X179544D01* Y199944D01* X177944D01* X178344Y200344D02* Y201144D01* X179144D01* Y200344D01* X178344D01* X201600Y164444D02* Y166044D01* X203200D01* Y164444D01* X201600D01* X202000Y164844D02* Y165644D01* X202800D01* Y164844D01* X202000D01* X188944Y184444D02* Y186044D01* X190544D01* Y184444D01* X188944D01* X189344Y184844D02* Y185644D01* X190144D01* Y184844D01* X189344D01* X212444Y147944D02* Y149544D01* X214044D01* Y147944D01* X212444D01* X212844Y148344D02* Y149144D01* X213644D01* Y148344D01* X212844D01* X213944Y141444D02* Y143044D01* X215544D01* Y141444D01* X213944D01* X214344Y141844D02* Y142644D01* X215144D01* Y141844D01* X214344D01* X241818Y147944D02* Y149544D01* X243418D01* Y147944D01* X241818D01* X242218Y148344D02* Y149144D01* X243018D01* Y148344D01* X242218D01* X214444Y242444D02* Y244044D01* X216044D01* Y242444D01* X214444D01* X214844Y242844D02* Y243644D01* X215644D01* Y242844D01* X214844D01* X200444Y238944D02* Y240544D01* X202044D01* Y238944D01* X200444D01* X200844Y239344D02* Y240144D01* X201644D01* Y239344D01* X200844D01* X201444Y235444D02* Y237044D01* X203044D01* Y235444D01* X201444D01* X201844Y235844D02* Y236644D01* X202644D01* Y235844D01* X201844D01* X198944Y242444D02* Y244044D01* X200544D01* Y242444D01* X198944D01* X199344Y242844D02* Y243644D01* X200144D01* Y242844D01* X199344D01* X200444Y228444D02* Y230044D01* X202044D01* Y228444D01* X200444D01* X200844Y228844D02* Y229644D01* X201644D01* Y228844D01* X200844D01* X197944Y233444D02* Y235044D01* X199544D01* Y233444D01* X197944D01* X198344Y233844D02* Y234644D01* X199144D01* Y233844D01* X198344D01* X189444Y225100D02* Y226700D01* X191044D01* Y225100D01* X189444D01* X189844Y225500D02* Y226300D01* X190644D01* Y225500D01* X189844D01* X231444Y237444D02* Y239044D01* X233044D01* Y237444D01* X231444D01* X231844Y237844D02* Y238644D01* X232644D01* Y237844D01* X231844D01* X254444Y214444D02* Y216044D01* X256044D01* Y214444D01* X254444D01* X254844Y214844D02* Y215644D01* X255644D01* Y214844D01* X254844D01* X233944Y201944D02* Y203544D01* X235544D01* Y201944D01* X233944D01* X234344Y202344D02* Y203144D01* X235144D01* Y202344D01* X234344D01* X197744Y199089D02* Y200689D01* X199344D01* Y199089D01* X197744D01* X198144Y199489D02* Y200289D01* X198944D01* Y199489D01* X198144D01* X140444Y231444D02* Y233044D01* X142044D01* Y231444D01* X140444D01* X140844Y231844D02* Y232644D01* X141644D01* Y231844D01* X140844D01* X149444Y231444D02* Y233044D01* X151044D01* Y231444D01* X149444D01* X149844Y231844D02* Y232644D01* X150644D01* Y231844D01* X149844D01* X140444Y250444D02* Y252044D01* X142044D01* Y250444D01* X140444D01* X140844Y250844D02* Y251644D01* X141644D01* Y250844D01* X140844D01* X181944Y255944D02* Y257544D01* X183544D01* Y255944D01* X181944D01* X182344Y256344D02* Y257144D01* X183144D01* Y256344D01* X182344D01* X179444Y267944D02* Y269544D01* X181044D01* Y267944D01* X179444D01* X179844Y268344D02* Y269144D01* X180644D01* Y268344D01* X179844D01* X183444Y263944D02* Y265544D01* X185044D01* Y263944D01* X183444D01* X183844Y264344D02* Y265144D01* X184644D01* Y264344D01* X183844D01* X175944Y235944D02* Y237544D01* X177544D01* Y235944D01* X175944D01* X176344Y236344D02* Y237144D01* X177144D01* Y236344D01* X176344D01* X185444Y235850D02* Y237450D01* X187044D01* Y235850D01* X185444D01* X185844Y236250D02* Y237050D01* X186644D01* Y236250D01* X185844D01* X187444Y233444D02* Y235044D01* X189044D01* Y233444D01* X187444D01* X187844Y233844D02* Y234644D01* X188644D01* Y233844D01* X187844D01* X187444Y229944D02* Y231544D01* X189044D01* Y229944D01* X187444D01* X187844Y230344D02* Y231144D01* X188644D01* Y230344D01* X187844D01* X182944Y229944D02* Y231544D01* X184544D01* Y229944D01* X182944D01* X183344Y230344D02* Y231144D01* X184144D01* Y230344D01* X183344D01* X182944Y224444D02* Y226044D01* X184544D01* Y224444D01* X182944D01* X183344Y224844D02* Y225644D01* X184144D01* Y224844D01* X183344D01* X191444Y259944D02* Y261544D01* X193044D01* Y259944D01* X191444D01* X191844Y260344D02* Y261144D01* X192644D01* Y260344D01* X191844D01* X177944Y233444D02* Y235044D01* X179544D01* Y233444D01* X177944D01* X178344Y233844D02* Y234644D01* X179144D01* Y233844D01* X178344D01* X182944Y233444D02* Y235044D01* X184544D01* Y233444D01* X182944D01* X183344Y233844D02* Y234644D01* X184144D01* Y233844D01* X183344D01* X184944Y226944D02* Y228544D01* X186544D01* Y226944D01* X184944D01* X185344Y227344D02* Y228144D01* X186144D01* Y227344D01* X185344D01* X171944Y224444D02* Y226044D01* X173544D01* Y224444D01* X171944D01* X172344Y224844D02* Y225644D01* X173144D01* Y224844D01* X172344D01* X167944Y224444D02* Y226044D01* X169544D01* Y224444D01* X167944D01* X168344Y224844D02* Y225644D01* X169144D01* Y224844D01* X168344D01* X180944Y220444D02* Y222044D01* X182544D01* Y220444D01* X180944D01* X181344Y220844D02* Y221644D01* X182144D01* Y220844D01* X181344D01* X139944Y216444D02* Y218044D01* X141544D01* Y216444D01* X139944D01* X140344Y216844D02* Y217644D01* X141144D01* Y216844D01* X140344D01* X135444Y259444D02* Y261044D01* X137044D01* Y259444D01* X135444D01* X135844Y259844D02* Y260644D01* X136644D01* Y259844D01* X135844D01* X135444Y268444D02* Y270044D01* X137044D01* Y268444D01* X135444D01* X135844Y268844D02* Y269644D01* X136644D01* Y268844D01* X135844D01* X134944Y276444D02* Y278044D01* X136544D01* Y276444D01* X134944D01* X135344Y276844D02* Y277644D01* X136144D01* Y276844D01* X135344D01* X142944Y282944D02* Y284544D01* X144544D01* Y282944D01* X142944D01* X143344Y283344D02* Y284144D01* X144144D01* Y283344D01* X143344D01* X149944Y282944D02* Y284544D01* X151544D01* Y282944D01* X149944D01* X150344Y283344D02* Y284144D01* X151144D01* Y283344D01* X150344D01* X157944Y282444D02* Y284044D01* X159544D01* Y282444D01* X157944D01* X158344Y282844D02* Y283644D01* X159144D01* Y282844D01* X158344D01* X158944Y261444D02* Y263044D01* X160544D01* Y261444D01* X158944D01* X159344Y261844D02* Y262644D01* X160144D01* Y261844D01* X159344D01* X146944Y216444D02* Y218044D01* X148544D01* Y216444D01* X146944D01* X147344Y216844D02* Y217644D01* X148144D01* Y216844D01* X147344D01* X150944Y127944D02* Y129544D01* X152544D01* Y127944D01* X150944D01* X151344Y128344D02* Y129144D01* X152144D01* Y128344D01* X151344D01* X205944Y128145D02* Y129745D01* X207544D01* Y128145D01* X205944D01* X206344Y128545D02* Y129345D01* X207144D01* Y128545D01* X206344D01* X267944Y169544D02* Y171144D01* X269544D01* Y169544D01* X267944D01* X268344Y169944D02* Y170744D01* X269144D01* Y169944D01* X268344D01* X241944Y128145D02* Y129745D01* X243544D01* Y128145D01* X241944D01* X242344Y128545D02* Y129345D01* X243144D01* Y128545D01* X242344D01* X220944Y177444D02* Y179044D01* X222544D01* Y177444D01* X220944D01* X221344Y177844D02* Y178644D01* X222144D01* Y177844D01* X221344D01* X225444Y190444D02* Y192044D01* X227044D01* Y190444D01* X225444D01* X225844Y190844D02* Y191644D01* X226644D01* Y190844D01* X225844D01* X257944Y133444D02* Y135044D01* X259544D01* Y133444D01* X257944D01* X258344Y133844D02* Y134644D01* X259144D01* Y133844D01* X258344D01* X258444Y156444D02* Y158044D01* X260044D01* Y156444D01* X258444D01* X258844Y156844D02* Y157644D01* X259644D01* Y156844D01* X258844D01* X170944Y149944D02* Y151544D01* X172544D01* Y149944D01* X170944D01* X171344Y150344D02* Y151144D01* X172144D01* Y150344D01* X171344D01* X313008Y181164D02* X312208Y182764D01* X313808D01* X313008Y181164D01* X324031Y185101D02* X324431Y185501D01* X324831D01* X324431Y185901D01* X324831Y186301D01* X324431D01* X324031Y186701D01* X323631Y186301D01* X323231D01* X323631Y185901D01* X323231Y185501D01* X323631D01* X324031Y185101D01* Y204787D02* X324431Y205187D01* X324831D01* X324431Y205587D01* X324831Y205987D01* X324431D01* X324031Y206387D01* X323631Y205987D01* X323231D01* X323631Y205587D01* X323231Y205187D01* X323631D01* X324031Y204787D01* X313008Y208724D02* X312208Y210324D01* X313808D01* X313008Y208724D01* X311244Y221544D02* X311644Y222344D01* X311244Y223144D01* X312044Y222744D01* X312844Y223144D01* X312444Y222344D01* X312844Y221544D01* X312044Y221944D01* X311244Y221544D01* Y231544D02* X311644Y232344D01* X311244Y233144D01* X312044Y232744D01* X312844Y233144D01* X312444Y232344D01* X312844Y231544D01* X312044Y231944D01* X311244Y231544D01* Y241544D02* X311644Y242344D01* X311244Y243144D01* X312044Y242744D01* X312844Y243144D01* X312444Y242344D01* X312844Y241544D01* X312044Y241944D01* X311244Y241544D01* Y251544D02* X311644Y252344D01* X311244Y253144D01* X312044Y252744D01* X312844Y253144D01* X312444Y252344D01* X312844Y251544D01* X312044Y251944D01* X311244Y251544D01* X321344Y166344D02* Y165944D01* X322144D01* Y166344D01* X322544D01* Y167144D01* X322144D01* Y167544D01* X321344D01* Y167144D01* X320944D01* Y166344D01* X321344D01* Y171344D02* Y170944D01* X322144D01* Y171344D01* X322544D01* Y172144D01* X322144D01* Y172544D01* X321344D01* Y172144D01* X320944D01* Y171344D01* X321344D01* X326344Y166344D02* Y165944D01* X327144D01* Y166344D01* X327544D01* Y167144D01* X327144D01* Y167544D01* X326344D01* Y167144D01* X325944D01* Y166344D01* X326344D01* Y171344D02* Y170944D01* X327144D01* Y171344D01* X327544D01* Y172144D01* X327144D01* Y172544D01* X326344D01* Y172144D01* X325944D01* Y171344D01* X326344D01* X331344Y166344D02* Y165944D01* X332144D01* Y166344D01* X332544D01* Y167144D01* X332144D01* Y167544D01* X331344D01* Y167144D01* X330944D01* Y166344D01* X331344D01* Y171344D02* Y170944D01* X332144D01* Y171344D01* X332544D01* Y172144D01* X332144D01* Y172544D01* X331344D01* Y172144D01* X330944D01* Y171344D01* X331344D01* X336344Y166344D02* Y165944D01* X337144D01* Y166344D01* X337544D01* Y167144D01* X337144D01* Y167544D01* X336344D01* Y167144D01* X335944D01* Y166344D01* X336344D01* Y171344D02* Y170944D01* X337144D01* Y171344D01* X337544D01* Y172144D01* X337144D01* Y172544D01* X336344D01* Y172144D01* X335944D01* Y171344D01* X336344D01* X341344Y166344D02* Y165944D01* X342144D01* Y166344D01* X342544D01* Y167144D01* X342144D01* Y167544D01* X341344D01* Y167144D01* X340944D01* Y166344D01* X341344D01* Y171344D02* Y170944D01* X342144D01* Y171344D01* X342544D01* Y172144D01* X342144D01* Y172544D01* X341344D01* Y172144D01* X340944D01* Y171344D01* X341344D01* X414444Y251944D02* X414844Y252744D01* X414444Y253544D01* X415244Y253144D01* X416044Y253544D01* X415644Y252744D01* X416044Y251944D01* X415244Y252344D01* X414444Y251944D01* X404444D02* X404844Y252744D01* X404444Y253544D01* X405244Y253144D01* X406044Y253544D01* X405644Y252744D01* X406044Y251944D01* X405244Y252344D01* X404444Y251944D01* X394444D02* X394844Y252744D01* X394444Y253544D01* X395244Y253144D01* X396044Y253544D01* X395644Y252744D01* X396044Y251944D01* X395244Y252344D01* X394444Y251944D01* X384444D02* X384844Y252744D01* X384444Y253544D01* X385244Y253144D01* X386044Y253544D01* X385644Y252744D01* X386044Y251944D01* X385244Y252344D01* X384444Y251944D01* X462700Y160400D02* X463100D01* X463500Y160800D01* X463900Y160400D01* X464300D01* Y160800D01* X463900Y161200D01* X464300Y161600D01* Y162000D01* X463900D01* X463500Y161600D01* X463100Y162000D01* X462700D01* Y161600D01* X463100Y161200D01* X462700Y160800D01* Y160400D01* Y170400D02* X463100D01* X463500Y170800D01* X463900Y170400D01* X464300D01* Y170800D01* X463900Y171200D01* X464300Y171600D01* Y172000D01* X463900D01* X463500Y171600D01* X463100Y172000D01* X462700D01* Y171600D01* X463100Y171200D01* X462700Y170800D01* Y170400D01* Y180400D02* X463100D01* X463500Y180800D01* X463900Y180400D01* X464300D01* Y180800D01* X463900Y181200D01* X464300Y181600D01* Y182000D01* X463900D01* X463500Y181600D01* X463100Y182000D01* X462700D01* Y181600D01* X463100Y181200D01* X462700Y180800D01* Y180400D01* Y190400D02* X463100D01* X463500Y190800D01* X463900Y190400D01* X464300D01* Y190800D01* X463900Y191200D01* X464300Y191600D01* Y192000D01* X463900D01* X463500Y191600D01* X463100Y192000D01* X462700D01* Y191600D01* X463100Y191200D01* X462700Y190800D01* Y190400D01* Y200400D02* X463100D01* X463500Y200800D01* X463900Y200400D01* X464300D01* Y200800D01* X463900Y201200D01* X464300Y201600D01* Y202000D01* X463900D01* X463500Y201600D01* X463100Y202000D01* X462700D01* Y201600D01* X463100Y201200D01* X462700Y200800D01* Y200400D01* Y210400D02* X463100D01* X463500Y210800D01* X463900Y210400D01* X464300D01* Y210800D01* X463900Y211200D01* X464300Y211600D01* Y212000D01* X463900D01* X463500Y211600D01* X463100Y212000D01* X462700D01* Y211600D01* X463100Y211200D01* X462700Y210800D01* Y210400D01* Y220400D02* X463100D01* X463500Y220800D01* X463900Y220400D01* X464300D01* Y220800D01* X463900Y221200D01* X464300Y221600D01* Y222000D01* X463900D01* X463500Y221600D01* X463100Y222000D01* X462700D01* Y221600D01* X463100Y221200D01* X462700Y220800D01* Y220400D01* Y230400D02* X463100D01* X463500Y230800D01* X463900Y230400D01* X464300D01* Y230800D01* X463900Y231200D01* X464300Y231600D01* Y232000D01* X463900D01* X463500Y231600D01* X463100Y232000D01* X462700D01* Y231600D01* X463100Y231200D01* X462700Y230800D01* Y230400D01* Y240400D02* X463100D01* X463500Y240800D01* X463900Y240400D01* X464300D01* Y240800D01* X463900Y241200D01* X464300Y241600D01* Y242000D01* X463900D01* X463500Y241600D01* X463100Y242000D01* X462700D01* Y241600D01* X463100Y241200D01* X462700Y240800D01* Y240400D01* Y250400D02* X463100D01* X463500Y250800D01* X463900Y250400D01* X464300D01* Y250800D01* X463900Y251200D01* X464300Y251600D01* Y252000D01* X463900D01* X463500Y251600D01* X463100Y252000D01* X462700D01* Y251600D01* X463100Y251200D01* X462700Y250800D01* Y250400D01* X414944Y276244D02* X415744Y277044D01* X416544Y276244D01* X415744Y275444D01* X414944Y276244D01* X394944D02* X395744Y277044D01* X396544Y276244D01* X395744Y275444D01* X394944Y276244D01* X329444Y206944D02* Y208544D01* X331044D01* Y206944D01* X329444D01* X329844Y207344D02* Y208144D01* X330644D01* Y207344D01* X329844D01* X428600Y228905D02* Y230505D01* X430200D01* Y228905D01* X428600D01* X429000Y229305D02* Y230105D01* X429800D01* Y229305D01* X429000D01* X363700Y143095D02* Y144695D01* X365300D01* Y143095D01* X363700D01* X364100Y143495D02* Y144295D01* X364900D01* Y143495D01* X364100D01* X370000Y216500D02* Y218100D01* X371600D01* Y216500D01* X370000D01* X370400Y216900D02* Y217700D01* X371200D01* Y216900D01* X370400D01* X363187Y167609D02* Y169209D01* X364787D01* Y167609D01* X363187D01* X363587Y168009D02* Y168809D01* X364387D01* Y168009D01* X363587D01* X413141Y224483D02* Y226083D01* X414741D01* Y224483D01* X413141D01* X413541Y224883D02* Y225683D01* X414341D01* Y224883D01* X413541D01* X411800Y164300D02* Y165900D01* X413400D01* Y164300D01* X411800D01* X412200Y164700D02* Y165500D01* X413000D01* Y164700D01* X412200D01* X374900Y229400D02* Y231000D01* X376500D01* Y229400D01* X374900D01* X375300Y229800D02* Y230600D01* X376100D01* Y229800D01* X375300D01* X365500Y199800D02* Y201400D01* X367100D01* Y199800D01* X365500D01* X365900Y200200D02* Y201000D01* X366700D01* Y200200D01* X365900D01* X405618Y162200D02* Y163800D01* X407218D01* Y162200D01* X405618D01* X406018Y162600D02* Y163400D01* X406818D01* Y162600D01* X406018D01* X352300Y190500D02* Y192100D01* X353900D01* Y190500D01* X352300D01* X352700Y190900D02* Y191700D01* X353500D01* Y190900D01* X352700D01* X373900Y140600D02* Y142200D01* X375500D01* Y140600D01* X373900D01* X374300Y141000D02* Y141800D01* X375100D01* Y141000D01* X374300D01* X345200Y164500D02* Y166100D01* X346800D01* Y164500D01* X345200D01* X345600Y164900D02* Y165700D01* X346400D01* Y164900D01* X345600D01* X371800Y152300D02* Y153900D01* X373400D01* Y152300D01* X371800D01* X372200Y152700D02* Y153500D01* X373000D01* Y152700D01* X372200D01* X368100Y151600D02* Y153200D01* X369700D01* Y151600D01* X368100D01* X368500Y152000D02* Y152800D01* X369300D01* Y152000D01* X368500D01* X377100Y145386D02* Y146986D01* X378700D01* Y145386D01* X377100D01* X377500Y145786D02* Y146586D01* X378300D01* Y145786D01* X377500D01* X371800Y148700D02* Y150300D01* X373400D01* Y148700D01* X371800D01* X372200Y149100D02* Y149900D01* X373000D01* Y149100D01* X372200D01* X357200Y155800D02* Y157400D01* X358800D01* Y155800D01* X357200D01* X357600Y156200D02* Y157000D01* X358400D01* Y156200D01* X357600D01* X333800Y180444D02* Y182044D01* X335400D01* Y180444D01* X333800D01* X334200Y180844D02* Y181644D01* X335000D01* Y180844D01* X334200D01* X320444Y245444D02* Y247044D01* X322044D01* Y245444D01* X320444D01* X320844Y245844D02* Y246644D01* X321644D01* Y245844D01* X320844D01* X320244Y225744D02* Y227344D01* X321844D01* Y225744D01* X320244D01* X320644Y226144D02* Y226944D01* X321444D01* Y226144D01* X320644D01* X328444Y245544D02* Y247144D01* X330044D01* Y245544D01* X328444D01* X328844Y245944D02* Y246744D01* X329644D01* Y245944D01* X328844D01* Y225844D02* Y227444D01* X330444D01* Y225844D01* X328844D01* X329244Y226244D02* Y227044D01* X330044D01* Y226244D01* X329244D01* X351644Y233244D02* Y234844D01* X353244D01* Y233244D01* X351644D01* X352044Y233644D02* Y234444D01* X352844D01* Y233644D01* X352044D01* X345844Y233244D02* Y234844D01* X347444D01* Y233244D01* X345844D01* X346244Y233644D02* Y234444D01* X347044D01* Y233644D01* X346244D01* X345944Y260844D02* Y262444D01* X347544D01* Y260844D01* X345944D01* X346344Y261244D02* Y262044D01* X347144D01* Y261244D01* X346344D01* X346244Y267644D02* Y269244D01* X347844D01* Y267644D01* X346244D01* X346644Y268044D02* Y268844D01* X347444D01* Y268044D01* X346644D01* X345844Y264144D02* Y265744D01* X347444D01* Y264144D01* X345844D01* X346244Y264544D02* Y265344D01* X347044D01* Y264544D01* X346244D01* X348744Y233244D02* Y234844D01* X350344D01* Y233244D01* X348744D01* X349144Y233644D02* Y234444D01* X349944D01* Y233644D01* X349144D01* X359444Y259944D02* Y261544D01* X361044D01* Y259944D01* X359444D01* X359844Y260344D02* Y261144D01* X360644D01* Y260344D01* X359844D01* X367444Y259944D02* Y261544D01* X369044D01* Y259944D01* X367444D01* X367844Y260344D02* Y261144D01* X368644D01* Y260344D01* X367844D01* X375444Y263944D02* Y265544D01* X377044D01* Y263944D01* X375444D01* X375844Y264344D02* Y265144D01* X376644D01* Y264344D01* X375844D01* X355444Y267944D02* Y269544D01* X357044D01* Y267944D01* X355444D01* X355844Y268344D02* Y269144D01* X356644D01* Y268344D01* X355844D01* X371444Y267944D02* Y269544D01* X373044D01* Y267944D01* X371444D01* X371844Y268344D02* Y269144D01* X372644D01* Y268344D01* X371844D01* X375444Y267944D02* Y269544D01* X377044D01* Y267944D01* X375444D01* X375844Y268344D02* Y269144D01* X376644D01* Y268344D01* X375844D01* X379444Y263944D02* Y265544D01* X381044D01* Y263944D01* X379444D01* X379844Y264344D02* Y265144D01* X380644D01* Y264344D01* X379844D01* X409700Y167609D02* Y169209D01* X411300D01* Y167609D01* X409700D01* X410100Y168009D02* Y168809D01* X410900D01* Y168009D01* X410100D01* X431400Y161900D02* Y163500D01* X433000D01* Y161900D01* X431400D01* X431800Y162300D02* Y163100D01* X432600D01* Y162300D01* X431800D01* X423100Y236400D02* Y238000D01* X424700D01* Y236400D01* X423100D01* X423500Y236800D02* Y237600D01* X424300D01* Y236800D01* X423500D01* X437944Y201900D02* Y203500D01* X439544D01* Y201900D01* X437944D01* X438344Y202300D02* Y203100D01* X439144D01* Y202300D01* X438344D01* X434300Y189600D02* Y191200D01* X435900D01* Y189600D01* X434300D01* X434700Y190000D02* Y190800D01* X435500D01* Y190000D01* X434700D01* X428300Y196100D02* Y197700D01* X429900D01* Y196100D01* X428300D01* X428700Y196500D02* Y197300D01* X429500D01* Y196500D01* X428700D01* X418100Y219900D02* Y221500D01* X419700D01* Y219900D01* X418100D01* X418500Y220300D02* Y221100D01* X419300D01* Y220300D01* X418500D01* X418100Y185244D02* Y186844D01* X419700D01* Y185244D01* X418100D01* X418500Y185644D02* Y186444D01* X419300D01* Y185644D01* X418500D01* X413900Y187300D02* Y188900D01* X415500D01* Y187300D01* X413900D01* X414300Y187700D02* Y188500D01* X415100D01* Y187700D01* X414300D01* X452100Y204400D02* Y206000D01* X453700D01* Y204400D01* X452100D01* X452500Y204800D02* Y205600D01* X453300D01* Y204800D01* X452500D01* X425100Y172100D02* Y173700D01* X426700D01* Y172100D01* X425100D01* X425500Y172500D02* Y173300D01* X426300D01* Y172500D01* X425500D01* X424700Y185800D02* Y187400D01* X426300D01* Y185800D01* X424700D01* X425100Y186200D02* Y187000D01* X425900D01* Y186200D01* X425100D01* X425300Y199900D02* Y201500D01* X426900D01* Y199900D01* X425300D01* X425700Y200300D02* Y201100D01* X426500D01* Y200300D01* X425700D01* X408100Y159300D02* Y160900D01* X409700D01* Y159300D01* X408100D01* X408500Y159700D02* Y160500D01* X409300D01* Y159700D01* X408500D01* X409900Y210400D02* Y212000D01* X411500D01* Y210400D01* X409900D01* X410300Y210800D02* Y211600D01* X411100D01* Y210800D01* X410300D01* X413900Y191400D02* Y193000D01* X415500D01* Y191400D01* X413900D01* X414300Y191800D02* Y192600D01* X415100D01* Y191800D01* X414300D01* X445900Y181000D02* Y182600D01* X447500D01* Y181000D01* X445900D01* X446300Y181400D02* Y182200D01* X447100D01* Y181400D01* X446300D01* X354444Y201444D02* Y203044D01* X356044D01* Y201444D01* X354444D01* X354844Y201844D02* Y202644D01* X355644D01* Y201844D01* X354844D01* X338287Y201944D02* Y203544D01* X339887D01* Y201944D01* X338287D01* X338687Y202344D02* Y203144D01* X339487D01* Y202344D01* X338687D01* X391944Y184944D02* Y186544D01* X393544D01* Y184944D01* X391944D01* X392344Y185344D02* Y186144D01* X393144D01* Y185344D01* X392344D01* X399444Y188944D02* Y190544D01* X401044D01* Y188944D01* X399444D01* X399844Y189344D02* Y190144D01* X400644D01* Y189344D01* X399844D01* X400944Y184444D02* Y186044D01* X402544D01* Y184444D01* X400944D01* X401344Y184844D02* Y185644D01* X402144D01* Y184844D01* X401344D01* X396944Y186444D02* Y188044D01* X398544D01* Y186444D01* X396944D01* X397344Y186844D02* Y187644D01* X398144D01* Y186844D01* X397344D01* X396944Y149444D02* Y151044D01* X398544D01* Y149444D01* X396944D01* X397344Y149844D02* Y150644D01* X398144D01* Y149844D01* X397344D01* X401500Y151030D02* Y152630D01* X403100D01* Y151030D01* X401500D01* X401900Y151430D02* Y152230D01* X402700D01* Y151430D01* X401900D01* X399400Y156444D02* Y158044D01* X401000D01* Y156444D01* X399400D01* X399800Y156844D02* Y157644D01* X400600D01* Y156844D01* X399800D01* X386944Y187944D02* Y189544D01* X388544D01* Y187944D01* X386944D01* X387344Y188344D02* Y189144D01* X388144D01* Y188344D01* X387344D01* X382944Y177444D02* Y179044D01* X384544D01* Y177444D01* X382944D01* X383344Y177844D02* Y178644D01* X384144D01* Y177844D01* X383344D01* X403600Y226444D02* Y228044D01* X405200D01* Y226444D01* X403600D01* X404000Y226844D02* Y227644D01* X404800D01* Y226844D01* X404000D01* X382944Y189444D02* Y191044D01* X384544D01* Y189444D01* X382944D01* X383344Y189844D02* Y190644D01* X384144D01* Y189844D01* X383344D01* X378944Y187444D02* Y189044D01* X380544D01* Y187444D01* X378944D01* X379344Y187844D02* Y188644D01* X380144D01* Y187844D01* X379344D01* X362444Y186444D02* Y188044D01* X364044D01* Y186444D01* X362444D01* X362844Y186844D02* Y187644D01* X363644D01* Y186844D01* X362844D01* X366444Y180444D02* Y182044D01* X368044D01* Y180444D01* X366444D01* X366844Y180844D02* Y181644D01* X367644D01* Y180844D01* X366844D01* X357944Y199944D02* Y201544D01* X359544D01* Y199944D01* X357944D01* X358344Y200344D02* Y201144D01* X359144D01* Y200344D01* X358344D01* X381600Y164444D02* Y166044D01* X383200D01* Y164444D01* X381600D01* X382000Y164844D02* Y165644D01* X382800D01* Y164844D01* X382000D01* X368944Y184444D02* Y186044D01* X370544D01* Y184444D01* X368944D01* X369344Y184844D02* Y185644D01* X370144D01* Y184844D01* X369344D01* X392444Y147944D02* Y149544D01* X394044D01* Y147944D01* X392444D01* X392844Y148344D02* Y149144D01* X393644D01* Y148344D01* X392844D01* X393944Y141444D02* Y143044D01* X395544D01* Y141444D01* X393944D01* X394344Y141844D02* Y142644D01* X395144D01* Y141844D01* X394344D01* X421818Y147944D02* Y149544D01* X423418D01* Y147944D01* X421818D01* X422218Y148344D02* Y149144D01* X423018D01* Y148344D01* X422218D01* X394444Y242444D02* Y244044D01* X396044D01* Y242444D01* X394444D01* X394844Y242844D02* Y243644D01* X395644D01* Y242844D01* X394844D01* X380444Y238944D02* Y240544D01* X382044D01* Y238944D01* X380444D01* X380844Y239344D02* Y240144D01* X381644D01* Y239344D01* X380844D01* X381444Y235444D02* Y237044D01* X383044D01* Y235444D01* X381444D01* X381844Y235844D02* Y236644D01* X382644D01* Y235844D01* X381844D01* X378944Y242444D02* Y244044D01* X380544D01* Y242444D01* X378944D01* X379344Y242844D02* Y243644D01* X380144D01* Y242844D01* X379344D01* X380444Y228444D02* Y230044D01* X382044D01* Y228444D01* X380444D01* X380844Y228844D02* Y229644D01* X381644D01* Y228844D01* X380844D01* X377944Y233444D02* Y235044D01* X379544D01* Y233444D01* X377944D01* X378344Y233844D02* Y234644D01* X379144D01* Y233844D01* X378344D01* X369444Y225100D02* Y226700D01* X371044D01* Y225100D01* X369444D01* X369844Y225500D02* Y226300D01* X370644D01* Y225500D01* X369844D01* X411444Y237444D02* Y239044D01* X413044D01* Y237444D01* X411444D01* X411844Y237844D02* Y238644D01* X412644D01* Y237844D01* X411844D01* X434444Y214444D02* Y216044D01* X436044D01* Y214444D01* X434444D01* X434844Y214844D02* Y215644D01* X435644D01* Y214844D01* X434844D01* X413944Y201944D02* Y203544D01* X415544D01* Y201944D01* X413944D01* X414344Y202344D02* Y203144D01* X415144D01* Y202344D01* X414344D01* X377744Y199089D02* Y200689D01* X379344D01* Y199089D01* X377744D01* X378144Y199489D02* Y200289D01* X378944D01* Y199489D01* X378144D01* X320444Y231444D02* Y233044D01* X322044D01* Y231444D01* X320444D01* X320844Y231844D02* Y232644D01* X321644D01* Y231844D01* X320844D01* X329444Y231444D02* Y233044D01* X331044D01* Y231444D01* X329444D01* X329844Y231844D02* Y232644D01* X330644D01* Y231844D01* X329844D01* X320444Y250444D02* Y252044D01* X322044D01* Y250444D01* X320444D01* X320844Y250844D02* Y251644D01* X321644D01* Y250844D01* X320844D01* X361944Y255944D02* Y257544D01* X363544D01* Y255944D01* X361944D01* X362344Y256344D02* Y257144D01* X363144D01* Y256344D01* X362344D01* X359444Y267944D02* Y269544D01* X361044D01* Y267944D01* X359444D01* X359844Y268344D02* Y269144D01* X360644D01* Y268344D01* X359844D01* X363444Y263944D02* Y265544D01* X365044D01* Y263944D01* X363444D01* X363844Y264344D02* Y265144D01* X364644D01* Y264344D01* X363844D01* X355944Y235944D02* Y237544D01* X357544D01* Y235944D01* X355944D01* X356344Y236344D02* Y237144D01* X357144D01* Y236344D01* X356344D01* X365444Y235850D02* Y237450D01* X367044D01* Y235850D01* X365444D01* X365844Y236250D02* Y237050D01* X366644D01* Y236250D01* X365844D01* X367444Y233444D02* Y235044D01* X369044D01* Y233444D01* X367444D01* X367844Y233844D02* Y234644D01* X368644D01* Y233844D01* X367844D01* X367444Y229944D02* Y231544D01* X369044D01* Y229944D01* X367444D01* X367844Y230344D02* Y231144D01* X368644D01* Y230344D01* X367844D01* X362944Y229944D02* Y231544D01* X364544D01* Y229944D01* X362944D01* X363344Y230344D02* Y231144D01* X364144D01* Y230344D01* X363344D01* X362944Y224444D02* Y226044D01* X364544D01* Y224444D01* X362944D01* X363344Y224844D02* Y225644D01* X364144D01* Y224844D01* X363344D01* X371444Y259944D02* Y261544D01* X373044D01* Y259944D01* X371444D01* X371844Y260344D02* Y261144D01* X372644D01* Y260344D01* X371844D01* X357944Y233444D02* Y235044D01* X359544D01* Y233444D01* X357944D01* X358344Y233844D02* Y234644D01* X359144D01* Y233844D01* X358344D01* X362944Y233444D02* Y235044D01* X364544D01* Y233444D01* X362944D01* X363344Y233844D02* Y234644D01* X364144D01* Y233844D01* X363344D01* X364944Y226944D02* Y228544D01* X366544D01* Y226944D01* X364944D01* X365344Y227344D02* Y228144D01* X366144D01* Y227344D01* X365344D01* X351944Y224444D02* Y226044D01* X353544D01* Y224444D01* X351944D01* X352344Y224844D02* Y225644D01* X353144D01* Y224844D01* X352344D01* X347944Y224444D02* Y226044D01* X349544D01* Y224444D01* X347944D01* X348344Y224844D02* Y225644D01* X349144D01* Y224844D01* X348344D01* X360944Y220444D02* Y222044D01* X362544D01* Y220444D01* X360944D01* X361344Y220844D02* Y221644D01* X362144D01* Y220844D01* X361344D01* X319944Y216444D02* Y218044D01* X321544D01* Y216444D01* X319944D01* X320344Y216844D02* Y217644D01* X321144D01* Y216844D01* X320344D01* X315444Y259444D02* Y261044D01* X317044D01* Y259444D01* X315444D01* X315844Y259844D02* Y260644D01* X316644D01* Y259844D01* X315844D01* X315444Y268444D02* Y270044D01* X317044D01* Y268444D01* X315444D01* X315844Y268844D02* Y269644D01* X316644D01* Y268844D01* X315844D01* X314944Y276444D02* Y278044D01* X316544D01* Y276444D01* X314944D01* X315344Y276844D02* Y277644D01* X316144D01* Y276844D01* X315344D01* X322944Y282944D02* Y284544D01* X324544D01* Y282944D01* X322944D01* X323344Y283344D02* Y284144D01* X324144D01* Y283344D01* X323344D01* X329944Y282944D02* Y284544D01* X331544D01* Y282944D01* X329944D01* X330344Y283344D02* Y284144D01* X331144D01* Y283344D01* X330344D01* X337944Y282444D02* Y284044D01* X339544D01* Y282444D01* X337944D01* X338344Y282844D02* Y283644D01* X339144D01* Y282844D01* X338344D01* X338944Y261444D02* Y263044D01* X340544D01* Y261444D01* X338944D01* X339344Y261844D02* Y262644D01* X340144D01* Y261844D01* X339344D01* X326944Y216444D02* Y218044D01* X328544D01* Y216444D01* X326944D01* X327344Y216844D02* Y217644D01* X328144D01* Y216844D01* X327344D01* X330944Y127944D02* Y129544D01* X332544D01* Y127944D01* X330944D01* X331344Y128344D02* Y129144D01* X332144D01* Y128344D01* X331344D01* X385944Y128145D02* Y129745D01* X387544D01* Y128145D01* X385944D01* X386344Y128545D02* Y129345D01* X387144D01* Y128545D01* X386344D01* X447944Y169544D02* Y171144D01* X449544D01* Y169544D01* X447944D01* X448344Y169944D02* Y170744D01* X449144D01* Y169944D01* X448344D01* X421944Y128145D02* Y129745D01* X423544D01* Y128145D01* X421944D01* X422344Y128545D02* Y129345D01* X423144D01* Y128545D01* X422344D01* X400944Y177444D02* Y179044D01* X402544D01* Y177444D01* X400944D01* X401344Y177844D02* Y178644D01* X402144D01* Y177844D01* X401344D01* X405444Y190444D02* Y192044D01* X407044D01* Y190444D01* X405444D01* X405844Y190844D02* Y191644D01* X406644D01* Y190844D01* X405844D01* X437944Y133444D02* Y135044D01* X439544D01* Y133444D01* X437944D01* X438344Y133844D02* Y134644D01* X439144D01* Y133844D01* X438344D01* X438444Y156444D02* Y158044D01* X440044D01* Y156444D01* X438444D01* X438844Y156844D02* Y157644D01* X439644D01* Y156844D01* X438844D01* X350944Y149944D02* Y151544D01* X352544D01* Y149944D01* X350944D01* X351344Y150344D02* Y151144D01* X352144D01* Y150344D01* X351344D01* X133008Y361164D02* X132208Y362764D01* X133808D01* X133008Y361164D01* X144031Y365101D02* X144431Y365501D01* X144831D01* X144431Y365901D01* X144831Y366301D01* X144431D01* X144031Y366701D01* X143631Y366301D01* X143231D01* X143631Y365901D01* X143231Y365501D01* X143631D01* X144031Y365101D01* Y384787D02* X144431Y385187D01* X144831D01* X144431Y385587D01* X144831Y385987D01* X144431D01* X144031Y386387D01* X143631Y385987D01* X143231D01* X143631Y385587D01* X143231Y385187D01* X143631D01* X144031Y384787D01* X133008Y388724D02* X132208Y390324D01* X133808D01* X133008Y388724D01* X131244Y401544D02* X131644Y402344D01* X131244Y403144D01* X132044Y402744D01* X132844Y403144D01* X132444Y402344D01* X132844Y401544D01* X132044Y401944D01* X131244Y401544D01* Y411544D02* X131644Y412344D01* X131244Y413144D01* X132044Y412744D01* X132844Y413144D01* X132444Y412344D01* X132844Y411544D01* X132044Y411944D01* X131244Y411544D01* Y421544D02* X131644Y422344D01* X131244Y423144D01* X132044Y422744D01* X132844Y423144D01* X132444Y422344D01* X132844Y421544D01* X132044Y421944D01* X131244Y421544D01* Y431544D02* X131644Y432344D01* X131244Y433144D01* X132044Y432744D01* X132844Y433144D01* X132444Y432344D01* X132844Y431544D01* X132044Y431944D01* X131244Y431544D01* X141344Y346344D02* Y345944D01* X142144D01* Y346344D01* X142544D01* Y347144D01* X142144D01* Y347544D01* X141344D01* Y347144D01* X140944D01* Y346344D01* X141344D01* Y351344D02* Y350944D01* X142144D01* Y351344D01* X142544D01* Y352144D01* X142144D01* Y352544D01* X141344D01* Y352144D01* X140944D01* Y351344D01* X141344D01* X146344Y346344D02* Y345944D01* X147144D01* Y346344D01* X147544D01* Y347144D01* X147144D01* Y347544D01* X146344D01* Y347144D01* X145944D01* Y346344D01* X146344D01* Y351344D02* Y350944D01* X147144D01* Y351344D01* X147544D01* Y352144D01* X147144D01* Y352544D01* X146344D01* Y352144D01* X145944D01* Y351344D01* X146344D01* X151344Y346344D02* Y345944D01* X152144D01* Y346344D01* X152544D01* Y347144D01* X152144D01* Y347544D01* X151344D01* Y347144D01* X150944D01* Y346344D01* X151344D01* Y351344D02* Y350944D01* X152144D01* Y351344D01* X152544D01* Y352144D01* X152144D01* Y352544D01* X151344D01* Y352144D01* X150944D01* Y351344D01* X151344D01* X156344Y346344D02* Y345944D01* X157144D01* Y346344D01* X157544D01* Y347144D01* X157144D01* Y347544D01* X156344D01* Y347144D01* X155944D01* Y346344D01* X156344D01* Y351344D02* Y350944D01* X157144D01* Y351344D01* X157544D01* Y352144D01* X157144D01* Y352544D01* X156344D01* Y352144D01* X155944D01* Y351344D01* X156344D01* X161344Y346344D02* Y345944D01* X162144D01* Y346344D01* X162544D01* Y347144D01* X162144D01* Y347544D01* X161344D01* Y347144D01* X160944D01* Y346344D01* X161344D01* Y351344D02* Y350944D01* X162144D01* Y351344D01* X162544D01* Y352144D01* X162144D01* Y352544D01* X161344D01* Y352144D01* X160944D01* Y351344D01* X161344D01* X234444Y431944D02* X234844Y432744D01* X234444Y433544D01* X235244Y433144D01* X236044Y433544D01* X235644Y432744D01* X236044Y431944D01* X235244Y432344D01* X234444Y431944D01* X224444D02* X224844Y432744D01* X224444Y433544D01* X225244Y433144D01* X226044Y433544D01* X225644Y432744D01* X226044Y431944D01* X225244Y432344D01* X224444Y431944D01* X214444D02* X214844Y432744D01* X214444Y433544D01* X215244Y433144D01* X216044Y433544D01* X215644Y432744D01* X216044Y431944D01* X215244Y432344D01* X214444Y431944D01* X204444D02* X204844Y432744D01* X204444Y433544D01* X205244Y433144D01* X206044Y433544D01* X205644Y432744D01* X206044Y431944D01* X205244Y432344D01* X204444Y431944D01* X282700Y340400D02* X283100D01* X283500Y340800D01* X283900Y340400D01* X284300D01* Y340800D01* X283900Y341200D01* X284300Y341600D01* Y342000D01* X283900D01* X283500Y341600D01* X283100Y342000D01* X282700D01* Y341600D01* X283100Y341200D01* X282700Y340800D01* Y340400D01* Y350400D02* X283100D01* X283500Y350800D01* X283900Y350400D01* X284300D01* Y350800D01* X283900Y351200D01* X284300Y351600D01* Y352000D01* X283900D01* X283500Y351600D01* X283100Y352000D01* X282700D01* Y351600D01* X283100Y351200D01* X282700Y350800D01* Y350400D01* Y360400D02* X283100D01* X283500Y360800D01* X283900Y360400D01* X284300D01* Y360800D01* X283900Y361200D01* X284300Y361600D01* Y362000D01* X283900D01* X283500Y361600D01* X283100Y362000D01* X282700D01* Y361600D01* X283100Y361200D01* X282700Y360800D01* Y360400D01* Y370400D02* X283100D01* X283500Y370800D01* X283900Y370400D01* X284300D01* Y370800D01* X283900Y371200D01* X284300Y371600D01* Y372000D01* X283900D01* X283500Y371600D01* X283100Y372000D01* X282700D01* Y371600D01* X283100Y371200D01* X282700Y370800D01* Y370400D01* Y380400D02* X283100D01* X283500Y380800D01* X283900Y380400D01* X284300D01* Y380800D01* X283900Y381200D01* X284300Y381600D01* Y382000D01* X283900D01* X283500Y381600D01* X283100Y382000D01* X282700D01* Y381600D01* X283100Y381200D01* X282700Y380800D01* Y380400D01* Y390400D02* X283100D01* X283500Y390800D01* X283900Y390400D01* X284300D01* Y390800D01* X283900Y391200D01* X284300Y391600D01* Y392000D01* X283900D01* X283500Y391600D01* X283100Y392000D01* X282700D01* Y391600D01* X283100Y391200D01* X282700Y390800D01* Y390400D01* Y400400D02* X283100D01* X283500Y400800D01* X283900Y400400D01* X284300D01* Y400800D01* X283900Y401200D01* X284300Y401600D01* Y402000D01* X283900D01* X283500Y401600D01* X283100Y402000D01* X282700D01* Y401600D01* X283100Y401200D01* X282700Y400800D01* Y400400D01* Y410400D02* X283100D01* X283500Y410800D01* X283900Y410400D01* X284300D01* Y410800D01* X283900Y411200D01* X284300Y411600D01* Y412000D01* X283900D01* X283500Y411600D01* X283100Y412000D01* X282700D01* Y411600D01* X283100Y411200D01* X282700Y410800D01* Y410400D01* Y420400D02* X283100D01* X283500Y420800D01* X283900Y420400D01* X284300D01* Y420800D01* X283900Y421200D01* X284300Y421600D01* Y422000D01* X283900D01* X283500Y421600D01* X283100Y422000D01* X282700D01* Y421600D01* X283100Y421200D01* X282700Y420800D01* Y420400D01* Y430400D02* X283100D01* X283500Y430800D01* X283900Y430400D01* X284300D01* Y430800D01* X283900Y431200D01* X284300Y431600D01* Y432000D01* X283900D01* X283500Y431600D01* X283100Y432000D01* X282700D01* Y431600D01* X283100Y431200D01* X282700Y430800D01* Y430400D01* X234944Y456244D02* X235744Y457044D01* X236544Y456244D01* X235744Y455444D01* X234944Y456244D01* X214944D02* X215744Y457044D01* X216544Y456244D01* X215744Y455444D01* X214944Y456244D01* X149444Y386944D02* Y388544D01* X151044D01* Y386944D01* X149444D01* X149844Y387344D02* Y388144D01* X150644D01* Y387344D01* X149844D01* X248600Y408905D02* Y410505D01* X250200D01* Y408905D01* X248600D01* X249000Y409305D02* Y410105D01* X249800D01* Y409305D01* X249000D01* X183700Y323095D02* Y324695D01* X185300D01* Y323095D01* X183700D01* X184100Y323495D02* Y324295D01* X184900D01* Y323495D01* X184100D01* X190000Y396500D02* Y398100D01* X191600D01* Y396500D01* X190000D01* X190400Y396900D02* Y397700D01* X191200D01* Y396900D01* X190400D01* X183187Y347609D02* Y349209D01* X184787D01* Y347609D01* X183187D01* X183587Y348009D02* Y348809D01* X184387D01* Y348009D01* X183587D01* X233141Y404483D02* Y406083D01* X234741D01* Y404483D01* X233141D01* X233541Y404883D02* Y405683D01* X234341D01* Y404883D01* X233541D01* X231800Y344300D02* Y345900D01* X233400D01* Y344300D01* X231800D01* X232200Y344700D02* Y345500D01* X233000D01* Y344700D01* X232200D01* X194900Y409400D02* Y411000D01* X196500D01* Y409400D01* X194900D01* X195300Y409800D02* Y410600D01* X196100D01* Y409800D01* X195300D01* X185500Y379800D02* Y381400D01* X187100D01* Y379800D01* X185500D01* X185900Y380200D02* Y381000D01* X186700D01* Y380200D01* X185900D01* X225618Y342200D02* Y343800D01* X227218D01* Y342200D01* X225618D01* X226018Y342600D02* Y343400D01* X226818D01* Y342600D01* X226018D01* X172300Y370500D02* Y372100D01* X173900D01* Y370500D01* X172300D01* X172700Y370900D02* Y371700D01* X173500D01* Y370900D01* X172700D01* X193900Y320600D02* Y322200D01* X195500D01* Y320600D01* X193900D01* X194300Y321000D02* Y321800D01* X195100D01* Y321000D01* X194300D01* X165200Y344500D02* Y346100D01* X166800D01* Y344500D01* X165200D01* X165600Y344900D02* Y345700D01* X166400D01* Y344900D01* X165600D01* X191800Y332300D02* Y333900D01* X193400D01* Y332300D01* X191800D01* X192200Y332700D02* Y333500D01* X193000D01* Y332700D01* X192200D01* X188100Y331600D02* Y333200D01* X189700D01* Y331600D01* X188100D01* X188500Y332000D02* Y332800D01* X189300D01* Y332000D01* X188500D01* X197100Y325386D02* Y326986D01* X198700D01* Y325386D01* X197100D01* X197500Y325786D02* Y326586D01* X198300D01* Y325786D01* X197500D01* X191800Y328700D02* Y330300D01* X193400D01* Y328700D01* X191800D01* X192200Y329100D02* Y329900D01* X193000D01* Y329100D01* X192200D01* X177200Y335800D02* Y337400D01* X178800D01* Y335800D01* X177200D01* X177600Y336200D02* Y337000D01* X178400D01* Y336200D01* X177600D01* X153800Y360444D02* Y362044D01* X155400D01* Y360444D01* X153800D01* X154200Y360844D02* Y361644D01* X155000D01* Y360844D01* X154200D01* X140444Y425444D02* Y427044D01* X142044D01* Y425444D01* X140444D01* X140844Y425844D02* Y426644D01* X141644D01* Y425844D01* X140844D01* X140244Y405744D02* Y407344D01* X141844D01* Y405744D01* X140244D01* X140644Y406144D02* Y406944D01* X141444D01* Y406144D01* X140644D01* X148444Y425544D02* Y427144D01* X150044D01* Y425544D01* X148444D01* X148844Y425944D02* Y426744D01* X149644D01* Y425944D01* X148844D01* Y405844D02* Y407444D01* X150444D01* Y405844D01* X148844D01* X149244Y406244D02* Y407044D01* X150044D01* Y406244D01* X149244D01* X171644Y413244D02* Y414844D01* X173244D01* Y413244D01* X171644D01* X172044Y413644D02* Y414444D01* X172844D01* Y413644D01* X172044D01* X165844Y413244D02* Y414844D01* X167444D01* Y413244D01* X165844D01* X166244Y413644D02* Y414444D01* X167044D01* Y413644D01* X166244D01* X165944Y440844D02* Y442444D01* X167544D01* Y440844D01* X165944D01* X166344Y441244D02* Y442044D01* X167144D01* Y441244D01* X166344D01* X166244Y447644D02* Y449244D01* X167844D01* Y447644D01* X166244D01* X166644Y448044D02* Y448844D01* X167444D01* Y448044D01* X166644D01* X165844Y444144D02* Y445744D01* X167444D01* Y444144D01* X165844D01* X166244Y444544D02* Y445344D01* X167044D01* Y444544D01* X166244D01* X168744Y413244D02* Y414844D01* X170344D01* Y413244D01* X168744D01* X169144Y413644D02* Y414444D01* X169944D01* Y413644D01* X169144D01* X179444Y439944D02* Y441544D01* X181044D01* Y439944D01* X179444D01* X179844Y440344D02* Y441144D01* X180644D01* Y440344D01* X179844D01* X187444Y439944D02* Y441544D01* X189044D01* Y439944D01* X187444D01* X187844Y440344D02* Y441144D01* X188644D01* Y440344D01* X187844D01* X195444Y443944D02* Y445544D01* X197044D01* Y443944D01* X195444D01* X195844Y444344D02* Y445144D01* X196644D01* Y444344D01* X195844D01* X175444Y447944D02* Y449544D01* X177044D01* Y447944D01* X175444D01* X175844Y448344D02* Y449144D01* X176644D01* Y448344D01* X175844D01* X191444Y447944D02* Y449544D01* X193044D01* Y447944D01* X191444D01* X191844Y448344D02* Y449144D01* X192644D01* Y448344D01* X191844D01* X195444Y447944D02* Y449544D01* X197044D01* Y447944D01* X195444D01* X195844Y448344D02* Y449144D01* X196644D01* Y448344D01* X195844D01* X199444Y443944D02* Y445544D01* X201044D01* Y443944D01* X199444D01* X199844Y444344D02* Y445144D01* X200644D01* Y444344D01* X199844D01* X229700Y347609D02* Y349209D01* X231300D01* Y347609D01* X229700D01* X230100Y348009D02* Y348809D01* X230900D01* Y348009D01* X230100D01* X251400Y341900D02* Y343500D01* X253000D01* Y341900D01* X251400D01* X251800Y342300D02* Y343100D01* X252600D01* Y342300D01* X251800D01* X243100Y416400D02* Y418000D01* X244700D01* Y416400D01* X243100D01* X243500Y416800D02* Y417600D01* X244300D01* Y416800D01* X243500D01* X257944Y381900D02* Y383500D01* X259544D01* Y381900D01* X257944D01* X258344Y382300D02* Y383100D01* X259144D01* Y382300D01* X258344D01* X254300Y369600D02* Y371200D01* X255900D01* Y369600D01* X254300D01* X254700Y370000D02* Y370800D01* X255500D01* Y370000D01* X254700D01* X248300Y376100D02* Y377700D01* X249900D01* Y376100D01* X248300D01* X248700Y376500D02* Y377300D01* X249500D01* Y376500D01* X248700D01* X238100Y399900D02* Y401500D01* X239700D01* Y399900D01* X238100D01* X238500Y400300D02* Y401100D01* X239300D01* Y400300D01* X238500D01* X238100Y365244D02* Y366844D01* X239700D01* Y365244D01* X238100D01* X238500Y365644D02* Y366444D01* X239300D01* Y365644D01* X238500D01* X233900Y367300D02* Y368900D01* X235500D01* Y367300D01* X233900D01* X234300Y367700D02* Y368500D01* X235100D01* Y367700D01* X234300D01* X272100Y384400D02* Y386000D01* X273700D01* Y384400D01* X272100D01* X272500Y384800D02* Y385600D01* X273300D01* Y384800D01* X272500D01* X245100Y352100D02* Y353700D01* X246700D01* Y352100D01* X245100D01* X245500Y352500D02* Y353300D01* X246300D01* Y352500D01* X245500D01* X244700Y365800D02* Y367400D01* X246300D01* Y365800D01* X244700D01* X245100Y366200D02* Y367000D01* X245900D01* Y366200D01* X245100D01* X245300Y379900D02* Y381500D01* X246900D01* Y379900D01* X245300D01* X245700Y380300D02* Y381100D01* X246500D01* Y380300D01* X245700D01* X228100Y339300D02* Y340900D01* X229700D01* Y339300D01* X228100D01* X228500Y339700D02* Y340500D01* X229300D01* Y339700D01* X228500D01* X229900Y390400D02* Y392000D01* X231500D01* Y390400D01* X229900D01* X230300Y390800D02* Y391600D01* X231100D01* Y390800D01* X230300D01* X233900Y371400D02* Y373000D01* X235500D01* Y371400D01* X233900D01* X234300Y371800D02* Y372600D01* X235100D01* Y371800D01* X234300D01* X265900Y361000D02* Y362600D01* X267500D01* Y361000D01* X265900D01* X266300Y361400D02* Y362200D01* X267100D01* Y361400D01* X266300D01* X174444Y381444D02* Y383044D01* X176044D01* Y381444D01* X174444D01* X174844Y381844D02* Y382644D01* X175644D01* Y381844D01* X174844D01* X158287Y381944D02* Y383544D01* X159887D01* Y381944D01* X158287D01* X158687Y382344D02* Y383144D01* X159487D01* Y382344D01* X158687D01* X211944Y364944D02* Y366544D01* X213544D01* Y364944D01* X211944D01* X212344Y365344D02* Y366144D01* X213144D01* Y365344D01* X212344D01* X219444Y368944D02* Y370544D01* X221044D01* Y368944D01* X219444D01* X219844Y369344D02* Y370144D01* X220644D01* Y369344D01* X219844D01* X220944Y364444D02* Y366044D01* X222544D01* Y364444D01* X220944D01* X221344Y364844D02* Y365644D01* X222144D01* Y364844D01* X221344D01* X216944Y366444D02* Y368044D01* X218544D01* Y366444D01* X216944D01* X217344Y366844D02* Y367644D01* X218144D01* Y366844D01* X217344D01* X216944Y329444D02* Y331044D01* X218544D01* Y329444D01* X216944D01* X217344Y329844D02* Y330644D01* X218144D01* Y329844D01* X217344D01* X221500Y331030D02* Y332630D01* X223100D01* Y331030D01* X221500D01* X221900Y331430D02* Y332230D01* X222700D01* Y331430D01* X221900D01* X219400Y336444D02* Y338044D01* X221000D01* Y336444D01* X219400D01* X219800Y336844D02* Y337644D01* X220600D01* Y336844D01* X219800D01* X206944Y367944D02* Y369544D01* X208544D01* Y367944D01* X206944D01* X207344Y368344D02* Y369144D01* X208144D01* Y368344D01* X207344D01* X202944Y357444D02* Y359044D01* X204544D01* Y357444D01* X202944D01* X203344Y357844D02* Y358644D01* X204144D01* Y357844D01* X203344D01* X223600Y406444D02* Y408044D01* X225200D01* Y406444D01* X223600D01* X224000Y406844D02* Y407644D01* X224800D01* Y406844D01* X224000D01* X202944Y369444D02* Y371044D01* X204544D01* Y369444D01* X202944D01* X203344Y369844D02* Y370644D01* X204144D01* Y369844D01* X203344D01* X198944Y367444D02* Y369044D01* X200544D01* Y367444D01* X198944D01* X199344Y367844D02* Y368644D01* X200144D01* Y367844D01* X199344D01* X182444Y366444D02* Y368044D01* X184044D01* Y366444D01* X182444D01* X182844Y366844D02* Y367644D01* X183644D01* Y366844D01* X182844D01* X186444Y360444D02* Y362044D01* X188044D01* Y360444D01* X186444D01* X186844Y360844D02* Y361644D01* X187644D01* Y360844D01* X186844D01* X177944Y379944D02* Y381544D01* X179544D01* Y379944D01* X177944D01* X178344Y380344D02* Y381144D01* X179144D01* Y380344D01* X178344D01* X201600Y344444D02* Y346044D01* X203200D01* Y344444D01* X201600D01* X202000Y344844D02* Y345644D01* X202800D01* Y344844D01* X202000D01* X188944Y364444D02* Y366044D01* X190544D01* Y364444D01* X188944D01* X189344Y364844D02* Y365644D01* X190144D01* Y364844D01* X189344D01* X212444Y327944D02* Y329544D01* X214044D01* Y327944D01* X212444D01* X212844Y328344D02* Y329144D01* X213644D01* Y328344D01* X212844D01* X213944Y321444D02* Y323044D01* X215544D01* Y321444D01* X213944D01* X214344Y321844D02* Y322644D01* X215144D01* Y321844D01* X214344D01* X241818Y327944D02* Y329544D01* X243418D01* Y327944D01* X241818D01* X242218Y328344D02* Y329144D01* X243018D01* Y328344D01* X242218D01* X214444Y422444D02* Y424044D01* X216044D01* Y422444D01* X214444D01* X214844Y422844D02* Y423644D01* X215644D01* Y422844D01* X214844D01* X200444Y418944D02* Y420544D01* X202044D01* Y418944D01* X200444D01* X200844Y419344D02* Y420144D01* X201644D01* Y419344D01* X200844D01* X201444Y415444D02* Y417044D01* X203044D01* Y415444D01* X201444D01* X201844Y415844D02* Y416644D01* X202644D01* Y415844D01* X201844D01* X198944Y422444D02* Y424044D01* X200544D01* Y422444D01* X198944D01* X199344Y422844D02* Y423644D01* X200144D01* Y422844D01* X199344D01* X200444Y408444D02* Y410044D01* X202044D01* Y408444D01* X200444D01* X200844Y408844D02* Y409644D01* X201644D01* Y408844D01* X200844D01* X197944Y413444D02* Y415044D01* X199544D01* Y413444D01* X197944D01* X198344Y413844D02* Y414644D01* X199144D01* Y413844D01* X198344D01* X189444Y405100D02* Y406700D01* X191044D01* Y405100D01* X189444D01* X189844Y405500D02* Y406300D01* X190644D01* Y405500D01* X189844D01* X231444Y417444D02* Y419044D01* X233044D01* Y417444D01* X231444D01* X231844Y417844D02* Y418644D01* X232644D01* Y417844D01* X231844D01* X254444Y394444D02* Y396044D01* X256044D01* Y394444D01* X254444D01* X254844Y394844D02* Y395644D01* X255644D01* Y394844D01* X254844D01* X233944Y381944D02* Y383544D01* X235544D01* Y381944D01* X233944D01* X234344Y382344D02* Y383144D01* X235144D01* Y382344D01* X234344D01* X197744Y379088D02* Y380689D01* X199344D01* Y379088D01* X197744D01* X198144Y379488D02* Y380289D01* X198944D01* Y379488D01* X198144D01* X140444Y411444D02* Y413044D01* X142044D01* Y411444D01* X140444D01* X140844Y411844D02* Y412644D01* X141644D01* Y411844D01* X140844D01* X149444Y411444D02* Y413044D01* X151044D01* Y411444D01* X149444D01* X149844Y411844D02* Y412644D01* X150644D01* Y411844D01* X149844D01* X140444Y430444D02* Y432044D01* X142044D01* Y430444D01* X140444D01* X140844Y430844D02* Y431644D01* X141644D01* Y430844D01* X140844D01* X181944Y435944D02* Y437544D01* X183544D01* Y435944D01* X181944D01* X182344Y436344D02* Y437144D01* X183144D01* Y436344D01* X182344D01* X179444Y447944D02* Y449544D01* X181044D01* Y447944D01* X179444D01* X179844Y448344D02* Y449144D01* X180644D01* Y448344D01* X179844D01* X183444Y443944D02* Y445544D01* X185044D01* Y443944D01* X183444D01* X183844Y444344D02* Y445144D01* X184644D01* Y444344D01* X183844D01* X175944Y415944D02* Y417544D01* X177544D01* Y415944D01* X175944D01* X176344Y416344D02* Y417144D01* X177144D01* Y416344D01* X176344D01* X185444Y415850D02* Y417450D01* X187044D01* Y415850D01* X185444D01* X185844Y416250D02* Y417050D01* X186644D01* Y416250D01* X185844D01* X187444Y413444D02* Y415044D01* X189044D01* Y413444D01* X187444D01* X187844Y413844D02* Y414644D01* X188644D01* Y413844D01* X187844D01* X187444Y409944D02* Y411544D01* X189044D01* Y409944D01* X187444D01* X187844Y410344D02* Y411144D01* X188644D01* Y410344D01* X187844D01* X182944Y409944D02* Y411544D01* X184544D01* Y409944D01* X182944D01* X183344Y410344D02* Y411144D01* X184144D01* Y410344D01* X183344D01* X182944Y404444D02* Y406044D01* X184544D01* Y404444D01* X182944D01* X183344Y404844D02* Y405644D01* X184144D01* Y404844D01* X183344D01* X191444Y439944D02* Y441544D01* X193044D01* Y439944D01* X191444D01* X191844Y440344D02* Y441144D01* X192644D01* Y440344D01* X191844D01* X177944Y413444D02* Y415044D01* X179544D01* Y413444D01* X177944D01* X178344Y413844D02* Y414644D01* X179144D01* Y413844D01* X178344D01* X182944Y413444D02* Y415044D01* X184544D01* Y413444D01* X182944D01* X183344Y413844D02* Y414644D01* X184144D01* Y413844D01* X183344D01* X184944Y406944D02* Y408544D01* X186544D01* Y406944D01* X184944D01* X185344Y407344D02* Y408144D01* X186144D01* Y407344D01* X185344D01* X171944Y404444D02* Y406044D01* X173544D01* Y404444D01* X171944D01* X172344Y404844D02* Y405644D01* X173144D01* Y404844D01* X172344D01* X167944Y404444D02* Y406044D01* X169544D01* Y404444D01* X167944D01* X168344Y404844D02* Y405644D01* X169144D01* Y404844D01* X168344D01* X180944Y400444D02* Y402044D01* X182544D01* Y400444D01* X180944D01* X181344Y400844D02* Y401644D01* X182144D01* Y400844D01* X181344D01* X139944Y396444D02* Y398044D01* X141544D01* Y396444D01* X139944D01* X140344Y396844D02* Y397644D01* X141144D01* Y396844D01* X140344D01* X135444Y439444D02* Y441044D01* X137044D01* Y439444D01* X135444D01* X135844Y439844D02* Y440644D01* X136644D01* Y439844D01* X135844D01* X135444Y448444D02* Y450044D01* X137044D01* Y448444D01* X135444D01* X135844Y448844D02* Y449644D01* X136644D01* Y448844D01* X135844D01* X134944Y456444D02* Y458044D01* X136544D01* Y456444D01* X134944D01* X135344Y456844D02* Y457644D01* X136144D01* Y456844D01* X135344D01* X142944Y462944D02* Y464544D01* X144544D01* Y462944D01* X142944D01* X143344Y463344D02* Y464144D01* X144144D01* Y463344D01* X143344D01* X149944Y462944D02* Y464544D01* X151544D01* Y462944D01* X149944D01* X150344Y463344D02* Y464144D01* X151144D01* Y463344D01* X150344D01* X157944Y462444D02* Y464044D01* X159544D01* Y462444D01* X157944D01* X158344Y462844D02* Y463644D01* X159144D01* Y462844D01* X158344D01* X158944Y441444D02* Y443044D01* X160544D01* Y441444D01* X158944D01* X159344Y441844D02* Y442644D01* X160144D01* Y441844D01* X159344D01* X146944Y396444D02* Y398044D01* X148544D01* Y396444D01* X146944D01* X147344Y396844D02* Y397644D01* X148144D01* Y396844D01* X147344D01* X150944Y307944D02* Y309544D01* X152544D01* Y307944D01* X150944D01* X151344Y308344D02* Y309144D01* X152144D01* Y308344D01* X151344D01* X205944Y308145D02* Y309745D01* X207544D01* Y308145D01* X205944D01* X206344Y308545D02* Y309345D01* X207144D01* Y308545D01* X206344D01* X267944Y349544D02* Y351144D01* X269544D01* Y349544D01* X267944D01* X268344Y349944D02* Y350744D01* X269144D01* Y349944D01* X268344D01* X241944Y308145D02* Y309745D01* X243544D01* Y308145D01* X241944D01* X242344Y308545D02* Y309345D01* X243144D01* Y308545D01* X242344D01* X220944Y357444D02* Y359044D01* X222544D01* Y357444D01* X220944D01* X221344Y357844D02* Y358644D01* X222144D01* Y357844D01* X221344D01* X225444Y370444D02* Y372044D01* X227044D01* Y370444D01* X225444D01* X225844Y370844D02* Y371644D01* X226644D01* Y370844D01* X225844D01* X257944Y313444D02* Y315044D01* X259544D01* Y313444D01* X257944D01* X258344Y313844D02* Y314644D01* X259144D01* Y313844D01* X258344D01* X258444Y336444D02* Y338044D01* X260044D01* Y336444D01* X258444D01* X258844Y336844D02* Y337644D01* X259644D01* Y336844D01* X258844D01* X170944Y329944D02* Y331544D01* X172544D01* Y329944D01* X170944D01* X171344Y330344D02* Y331144D01* X172144D01* Y330344D01* X171344D01* X313008Y361164D02* X312208Y362764D01* X313808D01* X313008Y361164D01* X324031Y365101D02* X324431Y365501D01* X324831D01* X324431Y365901D01* X324831Y366301D01* X324431D01* X324031Y366701D01* X323631Y366301D01* X323231D01* X323631Y365901D01* X323231Y365501D01* X323631D01* X324031Y365101D01* Y384787D02* X324431Y385187D01* X324831D01* X324431Y385587D01* X324831Y385987D01* X324431D01* X324031Y386387D01* X323631Y385987D01* X323231D01* X323631Y385587D01* X323231Y385187D01* X323631D01* X324031Y384787D01* X313008Y388724D02* X312208Y390324D01* X313808D01* X313008Y388724D01* X311244Y401544D02* X311644Y402344D01* X311244Y403144D01* X312044Y402744D01* X312844Y403144D01* X312444Y402344D01* X312844Y401544D01* X312044Y401944D01* X311244Y401544D01* Y411544D02* X311644Y412344D01* X311244Y413144D01* X312044Y412744D01* X312844Y413144D01* X312444Y412344D01* X312844Y411544D01* X312044Y411944D01* X311244Y411544D01* Y421544D02* X311644Y422344D01* X311244Y423144D01* X312044Y422744D01* X312844Y423144D01* X312444Y422344D01* X312844Y421544D01* X312044Y421944D01* X311244Y421544D01* Y431544D02* X311644Y432344D01* X311244Y433144D01* X312044Y432744D01* X312844Y433144D01* X312444Y432344D01* X312844Y431544D01* X312044Y431944D01* X311244Y431544D01* X321344Y346344D02* Y345944D01* X322144D01* Y346344D01* X322544D01* Y347144D01* X322144D01* Y347544D01* X321344D01* Y347144D01* X320944D01* Y346344D01* X321344D01* Y351344D02* Y350944D01* X322144D01* Y351344D01* X322544D01* Y352144D01* X322144D01* Y352544D01* X321344D01* Y352144D01* X320944D01* Y351344D01* X321344D01* X326344Y346344D02* Y345944D01* X327144D01* Y346344D01* X327544D01* Y347144D01* X327144D01* Y347544D01* X326344D01* Y347144D01* X325944D01* Y346344D01* X326344D01* Y351344D02* Y350944D01* X327144D01* Y351344D01* X327544D01* Y352144D01* X327144D01* Y352544D01* X326344D01* Y352144D01* X325944D01* Y351344D01* X326344D01* X331344Y346344D02* Y345944D01* X332144D01* Y346344D01* X332544D01* Y347144D01* X332144D01* Y347544D01* X331344D01* Y347144D01* X330944D01* Y346344D01* X331344D01* Y351344D02* Y350944D01* X332144D01* Y351344D01* X332544D01* Y352144D01* X332144D01* Y352544D01* X331344D01* Y352144D01* X330944D01* Y351344D01* X331344D01* X336344Y346344D02* Y345944D01* X337144D01* Y346344D01* X337544D01* Y347144D01* X337144D01* Y347544D01* X336344D01* Y347144D01* X335944D01* Y346344D01* X336344D01* Y351344D02* Y350944D01* X337144D01* Y351344D01* X337544D01* Y352144D01* X337144D01* Y352544D01* X336344D01* Y352144D01* X335944D01* Y351344D01* X336344D01* X341344Y346344D02* Y345944D01* X342144D01* Y346344D01* X342544D01* Y347144D01* X342144D01* Y347544D01* X341344D01* Y347144D01* X340944D01* Y346344D01* X341344D01* Y351344D02* Y350944D01* X342144D01* Y351344D01* X342544D01* Y352144D01* X342144D01* Y352544D01* X341344D01* Y352144D01* X340944D01* Y351344D01* X341344D01* X414444Y431944D02* X414844Y432744D01* X414444Y433544D01* X415244Y433144D01* X416044Y433544D01* X415644Y432744D01* X416044Y431944D01* X415244Y432344D01* X414444Y431944D01* X404444D02* X404844Y432744D01* X404444Y433544D01* X405244Y433144D01* X406044Y433544D01* X405644Y432744D01* X406044Y431944D01* X405244Y432344D01* X404444Y431944D01* X394444D02* X394844Y432744D01* X394444Y433544D01* X395244Y433144D01* X396044Y433544D01* X395644Y432744D01* X396044Y431944D01* X395244Y432344D01* X394444Y431944D01* X384444D02* X384844Y432744D01* X384444Y433544D01* X385244Y433144D01* X386044Y433544D01* X385644Y432744D01* X386044Y431944D01* X385244Y432344D01* X384444Y431944D01* X462700Y340400D02* X463100D01* X463500Y340800D01* X463900Y340400D01* X464300D01* Y340800D01* X463900Y341200D01* X464300Y341600D01* Y342000D01* X463900D01* X463500Y341600D01* X463100Y342000D01* X462700D01* Y341600D01* X463100Y341200D01* X462700Y340800D01* Y340400D01* Y350400D02* X463100D01* X463500Y350800D01* X463900Y350400D01* X464300D01* Y350800D01* X463900Y351200D01* X464300Y351600D01* Y352000D01* X463900D01* X463500Y351600D01* X463100Y352000D01* X462700D01* Y351600D01* X463100Y351200D01* X462700Y350800D01* Y350400D01* Y360400D02* X463100D01* X463500Y360800D01* X463900Y360400D01* X464300D01* Y360800D01* X463900Y361200D01* X464300Y361600D01* Y362000D01* X463900D01* X463500Y361600D01* X463100Y362000D01* X462700D01* Y361600D01* X463100Y361200D01* X462700Y360800D01* Y360400D01* Y370400D02* X463100D01* X463500Y370800D01* X463900Y370400D01* X464300D01* Y370800D01* X463900Y371200D01* X464300Y371600D01* Y372000D01* X463900D01* X463500Y371600D01* X463100Y372000D01* X462700D01* Y371600D01* X463100Y371200D01* X462700Y370800D01* Y370400D01* Y380400D02* X463100D01* X463500Y380800D01* X463900Y380400D01* X464300D01* Y380800D01* X463900Y381200D01* X464300Y381600D01* Y382000D01* X463900D01* X463500Y381600D01* X463100Y382000D01* X462700D01* Y381600D01* X463100Y381200D01* X462700Y380800D01* Y380400D01* Y390400D02* X463100D01* X463500Y390800D01* X463900Y390400D01* X464300D01* Y390800D01* X463900Y391200D01* X464300Y391600D01* Y392000D01* X463900D01* X463500Y391600D01* X463100Y392000D01* X462700D01* Y391600D01* X463100Y391200D01* X462700Y390800D01* Y390400D01* Y400400D02* X463100D01* X463500Y400800D01* X463900Y400400D01* X464300D01* Y400800D01* X463900Y401200D01* X464300Y401600D01* Y402000D01* X463900D01* X463500Y401600D01* X463100Y402000D01* X462700D01* Y401600D01* X463100Y401200D01* X462700Y400800D01* Y400400D01* Y410400D02* X463100D01* X463500Y410800D01* X463900Y410400D01* X464300D01* Y410800D01* X463900Y411200D01* X464300Y411600D01* Y412000D01* X463900D01* X463500Y411600D01* X463100Y412000D01* X462700D01* Y411600D01* X463100Y411200D01* X462700Y410800D01* Y410400D01* Y420400D02* X463100D01* X463500Y420800D01* X463900Y420400D01* X464300D01* Y420800D01* X463900Y421200D01* X464300Y421600D01* Y422000D01* X463900D01* X463500Y421600D01* X463100Y422000D01* X462700D01* Y421600D01* X463100Y421200D01* X462700Y420800D01* Y420400D01* Y430400D02* X463100D01* X463500Y430800D01* X463900Y430400D01* X464300D01* Y430800D01* X463900Y431200D01* X464300Y431600D01* Y432000D01* X463900D01* X463500Y431600D01* X463100Y432000D01* X462700D01* Y431600D01* X463100Y431200D01* X462700Y430800D01* Y430400D01* X414944Y456244D02* X415744Y457044D01* X416544Y456244D01* X415744Y455444D01* X414944Y456244D01* X394944D02* X395744Y457044D01* X396544Y456244D01* X395744Y455444D01* X394944Y456244D01* X329444Y386944D02* Y388544D01* X331044D01* Y386944D01* X329444D01* X329844Y387344D02* Y388144D01* X330644D01* Y387344D01* X329844D01* X428600Y408905D02* Y410505D01* X430200D01* Y408905D01* X428600D01* X429000Y409305D02* Y410105D01* X429800D01* Y409305D01* X429000D01* X363700Y323095D02* Y324695D01* X365300D01* Y323095D01* X363700D01* X364100Y323495D02* Y324295D01* X364900D01* Y323495D01* X364100D01* X370000Y396500D02* Y398100D01* X371600D01* Y396500D01* X370000D01* X370400Y396900D02* Y397700D01* X371200D01* Y396900D01* X370400D01* X363187Y347609D02* Y349209D01* X364787D01* Y347609D01* X363187D01* X363587Y348009D02* Y348809D01* X364387D01* Y348009D01* X363587D01* X413141Y404483D02* Y406083D01* X414741D01* Y404483D01* X413141D01* X413541Y404883D02* Y405683D01* X414341D01* Y404883D01* X413541D01* X411800Y344300D02* Y345900D01* X413400D01* Y344300D01* X411800D01* X412200Y344700D02* Y345500D01* X413000D01* Y344700D01* X412200D01* X374900Y409400D02* Y411000D01* X376500D01* Y409400D01* X374900D01* X375300Y409800D02* Y410600D01* X376100D01* Y409800D01* X375300D01* X365500Y379800D02* Y381400D01* X367100D01* Y379800D01* X365500D01* X365900Y380200D02* Y381000D01* X366700D01* Y380200D01* X365900D01* X405618Y342200D02* Y343800D01* X407218D01* Y342200D01* X405618D01* X406018Y342600D02* Y343400D01* X406818D01* Y342600D01* X406018D01* X352300Y370500D02* Y372100D01* X353900D01* Y370500D01* X352300D01* X352700Y370900D02* Y371700D01* X353500D01* Y370900D01* X352700D01* X373900Y320600D02* Y322200D01* X375500D01* Y320600D01* X373900D01* X374300Y321000D02* Y321800D01* X375100D01* Y321000D01* X374300D01* X345200Y344500D02* Y346100D01* X346800D01* Y344500D01* X345200D01* X345600Y344900D02* Y345700D01* X346400D01* Y344900D01* X345600D01* X371800Y332300D02* Y333900D01* X373400D01* Y332300D01* X371800D01* X372200Y332700D02* Y333500D01* X373000D01* Y332700D01* X372200D01* X368100Y331600D02* Y333200D01* X369700D01* Y331600D01* X368100D01* X368500Y332000D02* Y332800D01* X369300D01* Y332000D01* X368500D01* X377100Y325386D02* Y326986D01* X378700D01* Y325386D01* X377100D01* X377500Y325786D02* Y326586D01* X378300D01* Y325786D01* X377500D01* X371800Y328700D02* Y330300D01* X373400D01* Y328700D01* X371800D01* X372200Y329100D02* Y329900D01* X373000D01* Y329100D01* X372200D01* X357200Y335800D02* Y337400D01* X358800D01* Y335800D01* X357200D01* X357600Y336200D02* Y337000D01* X358400D01* Y336200D01* X357600D01* X333800Y360444D02* Y362044D01* X335400D01* Y360444D01* X333800D01* X334200Y360844D02* Y361644D01* X335000D01* Y360844D01* X334200D01* X320444Y425444D02* Y427044D01* X322044D01* Y425444D01* X320444D01* X320844Y425844D02* Y426644D01* X321644D01* Y425844D01* X320844D01* X320244Y405744D02* Y407344D01* X321844D01* Y405744D01* X320244D01* X320644Y406144D02* Y406944D01* X321444D01* Y406144D01* X320644D01* X328444Y425544D02* Y427144D01* X330044D01* Y425544D01* X328444D01* X328844Y425944D02* Y426744D01* X329644D01* Y425944D01* X328844D01* Y405844D02* Y407444D01* X330444D01* Y405844D01* X328844D01* X329244Y406244D02* Y407044D01* X330044D01* Y406244D01* X329244D01* X351644Y413244D02* Y414844D01* X353244D01* Y413244D01* X351644D01* X352044Y413644D02* Y414444D01* X352844D01* Y413644D01* X352044D01* X345844Y413244D02* Y414844D01* X347444D01* Y413244D01* X345844D01* X346244Y413644D02* Y414444D01* X347044D01* Y413644D01* X346244D01* X345944Y440844D02* Y442444D01* X347544D01* Y440844D01* X345944D01* X346344Y441244D02* Y442044D01* X347144D01* Y441244D01* X346344D01* X346244Y447644D02* Y449244D01* X347844D01* Y447644D01* X346244D01* X346644Y448044D02* Y448844D01* X347444D01* Y448044D01* X346644D01* X345844Y444144D02* Y445744D01* X347444D01* Y444144D01* X345844D01* X346244Y444544D02* Y445344D01* X347044D01* Y444544D01* X346244D01* X348744Y413244D02* Y414844D01* X350344D01* Y413244D01* X348744D01* X349144Y413644D02* Y414444D01* X349944D01* Y413644D01* X349144D01* X359444Y439944D02* Y441544D01* X361044D01* Y439944D01* X359444D01* X359844Y440344D02* Y441144D01* X360644D01* Y440344D01* X359844D01* X367444Y439944D02* Y441544D01* X369044D01* Y439944D01* X367444D01* X367844Y440344D02* Y441144D01* X368644D01* Y440344D01* X367844D01* X375444Y443944D02* Y445544D01* X377044D01* Y443944D01* X375444D01* X375844Y444344D02* Y445144D01* X376644D01* Y444344D01* X375844D01* X355444Y447944D02* Y449544D01* X357044D01* Y447944D01* X355444D01* X355844Y448344D02* Y449144D01* X356644D01* Y448344D01* X355844D01* X371444Y447944D02* Y449544D01* X373044D01* Y447944D01* X371444D01* X371844Y448344D02* Y449144D01* X372644D01* Y448344D01* X371844D01* X375444Y447944D02* Y449544D01* X377044D01* Y447944D01* X375444D01* X375844Y448344D02* Y449144D01* X376644D01* Y448344D01* X375844D01* X379444Y443944D02* Y445544D01* X381044D01* Y443944D01* X379444D01* X379844Y444344D02* Y445144D01* X380644D01* Y444344D01* X379844D01* X409700Y347609D02* Y349209D01* X411300D01* Y347609D01* X409700D01* X410100Y348009D02* Y348809D01* X410900D01* Y348009D01* X410100D01* X431400Y341900D02* Y343500D01* X433000D01* Y341900D01* X431400D01* X431800Y342300D02* Y343100D01* X432600D01* Y342300D01* X431800D01* X423100Y416400D02* Y418000D01* X424700D01* Y416400D01* X423100D01* X423500Y416800D02* Y417600D01* X424300D01* Y416800D01* X423500D01* X437944Y381900D02* Y383500D01* X439544D01* Y381900D01* X437944D01* X438344Y382300D02* Y383100D01* X439144D01* Y382300D01* X438344D01* X434300Y369600D02* Y371200D01* X435900D01* Y369600D01* X434300D01* X434700Y370000D02* Y370800D01* X435500D01* Y370000D01* X434700D01* X428300Y376100D02* Y377700D01* X429900D01* Y376100D01* X428300D01* X428700Y376500D02* Y377300D01* X429500D01* Y376500D01* X428700D01* X418100Y399900D02* Y401500D01* X419700D01* Y399900D01* X418100D01* X418500Y400300D02* Y401100D01* X419300D01* Y400300D01* X418500D01* X418100Y365244D02* Y366844D01* X419700D01* Y365244D01* X418100D01* X418500Y365644D02* Y366444D01* X419300D01* Y365644D01* X418500D01* X413900Y367300D02* Y368900D01* X415500D01* Y367300D01* X413900D01* X414300Y367700D02* Y368500D01* X415100D01* Y367700D01* X414300D01* X452100Y384400D02* Y386000D01* X453700D01* Y384400D01* X452100D01* X452500Y384800D02* Y385600D01* X453300D01* Y384800D01* X452500D01* X425100Y352100D02* Y353700D01* X426700D01* Y352100D01* X425100D01* X425500Y352500D02* Y353300D01* X426300D01* Y352500D01* X425500D01* X424700Y365800D02* Y367400D01* X426300D01* Y365800D01* X424700D01* X425100Y366200D02* Y367000D01* X425900D01* Y366200D01* X425100D01* X425300Y379900D02* Y381500D01* X426900D01* Y379900D01* X425300D01* X425700Y380300D02* Y381100D01* X426500D01* Y380300D01* X425700D01* X408100Y339300D02* Y340900D01* X409700D01* Y339300D01* X408100D01* X408500Y339700D02* Y340500D01* X409300D01* Y339700D01* X408500D01* X409900Y390400D02* Y392000D01* X411500D01* Y390400D01* X409900D01* X410300Y390800D02* Y391600D01* X411100D01* Y390800D01* X410300D01* X413900Y371400D02* Y373000D01* X415500D01* Y371400D01* X413900D01* X414300Y371800D02* Y372600D01* X415100D01* Y371800D01* X414300D01* X445900Y361000D02* Y362600D01* X447500D01* Y361000D01* X445900D01* X446300Y361400D02* Y362200D01* X447100D01* Y361400D01* X446300D01* X354444Y381444D02* Y383044D01* X356044D01* Y381444D01* X354444D01* X354844Y381844D02* Y382644D01* X355644D01* Y381844D01* X354844D01* X338287Y381944D02* Y383544D01* X339887D01* Y381944D01* X338287D01* X338687Y382344D02* Y383144D01* X339487D01* Y382344D01* X338687D01* X391944Y364944D02* Y366544D01* X393544D01* Y364944D01* X391944D01* X392344Y365344D02* Y366144D01* X393144D01* Y365344D01* X392344D01* X399444Y368944D02* Y370544D01* X401044D01* Y368944D01* X399444D01* X399844Y369344D02* Y370144D01* X400644D01* Y369344D01* X399844D01* X400944Y364444D02* Y366044D01* X402544D01* Y364444D01* X400944D01* X401344Y364844D02* Y365644D01* X402144D01* Y364844D01* X401344D01* X396944Y366444D02* Y368044D01* X398544D01* Y366444D01* X396944D01* X397344Y366844D02* Y367644D01* X398144D01* Y366844D01* X397344D01* X396944Y329444D02* Y331044D01* X398544D01* Y329444D01* X396944D01* X397344Y329844D02* Y330644D01* X398144D01* Y329844D01* X397344D01* X401500Y331030D02* Y332630D01* X403100D01* Y331030D01* X401500D01* X401900Y331430D02* Y332230D01* X402700D01* Y331430D01* X401900D01* X399400Y336444D02* Y338044D01* X401000D01* Y336444D01* X399400D01* X399800Y336844D02* Y337644D01* X400600D01* Y336844D01* X399800D01* X386944Y367944D02* Y369544D01* X388544D01* Y367944D01* X386944D01* X387344Y368344D02* Y369144D01* X388144D01* Y368344D01* X387344D01* X382944Y357444D02* Y359044D01* X384544D01* Y357444D01* X382944D01* X383344Y357844D02* Y358644D01* X384144D01* Y357844D01* X383344D01* X403600Y406444D02* Y408044D01* X405200D01* Y406444D01* X403600D01* X404000Y406844D02* Y407644D01* X404800D01* Y406844D01* X404000D01* X382944Y369444D02* Y371044D01* X384544D01* Y369444D01* X382944D01* X383344Y369844D02* Y370644D01* X384144D01* Y369844D01* X383344D01* X378944Y367444D02* Y369044D01* X380544D01* Y367444D01* X378944D01* X379344Y367844D02* Y368644D01* X380144D01* Y367844D01* X379344D01* X362444Y366444D02* Y368044D01* X364044D01* Y366444D01* X362444D01* X362844Y366844D02* Y367644D01* X363644D01* Y366844D01* X362844D01* X366444Y360444D02* Y362044D01* X368044D01* Y360444D01* X366444D01* X366844Y360844D02* Y361644D01* X367644D01* Y360844D01* X366844D01* X357944Y379944D02* Y381544D01* X359544D01* Y379944D01* X357944D01* X358344Y380344D02* Y381144D01* X359144D01* Y380344D01* X358344D01* X381600Y344444D02* Y346044D01* X383200D01* Y344444D01* X381600D01* X382000Y344844D02* Y345644D01* X382800D01* Y344844D01* X382000D01* X368944Y364444D02* Y366044D01* X370544D01* Y364444D01* X368944D01* X369344Y364844D02* Y365644D01* X370144D01* Y364844D01* X369344D01* X392444Y327944D02* Y329544D01* X394044D01* Y327944D01* X392444D01* X392844Y328344D02* Y329144D01* X393644D01* Y328344D01* X392844D01* X393944Y321444D02* Y323044D01* X395544D01* Y321444D01* X393944D01* X394344Y321844D02* Y322644D01* X395144D01* Y321844D01* X394344D01* X421818Y327944D02* Y329544D01* X423418D01* Y327944D01* X421818D01* X422218Y328344D02* Y329144D01* X423018D01* Y328344D01* X422218D01* X394444Y422444D02* Y424044D01* X396044D01* Y422444D01* X394444D01* X394844Y422844D02* Y423644D01* X395644D01* Y422844D01* X394844D01* X380444Y418944D02* Y420544D01* X382044D01* Y418944D01* X380444D01* X380844Y419344D02* Y420144D01* X381644D01* Y419344D01* X380844D01* X381444Y415444D02* Y417044D01* X383044D01* Y415444D01* X381444D01* X381844Y415844D02* Y416644D01* X382644D01* Y415844D01* X381844D01* X378944Y422444D02* Y424044D01* X380544D01* Y422444D01* X378944D01* X379344Y422844D02* Y423644D01* X380144D01* Y422844D01* X379344D01* X380444Y408444D02* Y410044D01* X382044D01* Y408444D01* X380444D01* X380844Y408844D02* Y409644D01* X381644D01* Y408844D01* X380844D01* X377944Y413444D02* Y415044D01* X379544D01* Y413444D01* X377944D01* X378344Y413844D02* Y414644D01* X379144D01* Y413844D01* X378344D01* X369444Y405100D02* Y406700D01* X371044D01* Y405100D01* X369444D01* X369844Y405500D02* Y406300D01* X370644D01* Y405500D01* X369844D01* X411444Y417444D02* Y419044D01* X413044D01* Y417444D01* X411444D01* X411844Y417844D02* Y418644D01* X412644D01* Y417844D01* X411844D01* X434444Y394444D02* Y396044D01* X436044D01* Y394444D01* X434444D01* X434844Y394844D02* Y395644D01* X435644D01* Y394844D01* X434844D01* X413944Y381944D02* Y383544D01* X415544D01* Y381944D01* X413944D01* X414344Y382344D02* Y383144D01* X415144D01* Y382344D01* X414344D01* X377744Y379088D02* Y380689D01* X379344D01* Y379088D01* X377744D01* X378144Y379488D02* Y380289D01* X378944D01* Y379488D01* X378144D01* X320444Y411444D02* Y413044D01* X322044D01* Y411444D01* X320444D01* X320844Y411844D02* Y412644D01* X321644D01* Y411844D01* X320844D01* X329444Y411444D02* Y413044D01* X331044D01* Y411444D01* X329444D01* X329844Y411844D02* Y412644D01* X330644D01* Y411844D01* X329844D01* X320444Y430444D02* Y432044D01* X322044D01* Y430444D01* X320444D01* X320844Y430844D02* Y431644D01* X321644D01* Y430844D01* X320844D01* X361944Y435944D02* Y437544D01* X363544D01* Y435944D01* X361944D01* X362344Y436344D02* Y437144D01* X363144D01* Y436344D01* X362344D01* X359444Y447944D02* Y449544D01* X361044D01* Y447944D01* X359444D01* X359844Y448344D02* Y449144D01* X360644D01* Y448344D01* X359844D01* X363444Y443944D02* Y445544D01* X365044D01* Y443944D01* X363444D01* X363844Y444344D02* Y445144D01* X364644D01* Y444344D01* X363844D01* X355944Y415944D02* Y417544D01* X357544D01* Y415944D01* X355944D01* X356344Y416344D02* Y417144D01* X357144D01* Y416344D01* X356344D01* X365444Y415850D02* Y417450D01* X367044D01* Y415850D01* X365444D01* X365844Y416250D02* Y417050D01* X366644D01* Y416250D01* X365844D01* X367444Y413444D02* Y415044D01* X369044D01* Y413444D01* X367444D01* X367844Y413844D02* Y414644D01* X368644D01* Y413844D01* X367844D01* X367444Y409944D02* Y411544D01* X369044D01* Y409944D01* X367444D01* X367844Y410344D02* Y411144D01* X368644D01* Y410344D01* X367844D01* X362944Y409944D02* Y411544D01* X364544D01* Y409944D01* X362944D01* X363344Y410344D02* Y411144D01* X364144D01* Y410344D01* X363344D01* X362944Y404444D02* Y406044D01* X364544D01* Y404444D01* X362944D01* X363344Y404844D02* Y405644D01* X364144D01* Y404844D01* X363344D01* X371444Y439944D02* Y441544D01* X373044D01* Y439944D01* X371444D01* X371844Y440344D02* Y441144D01* X372644D01* Y440344D01* X371844D01* X357944Y413444D02* Y415044D01* X359544D01* Y413444D01* X357944D01* X358344Y413844D02* Y414644D01* X359144D01* Y413844D01* X358344D01* X362944Y413444D02* Y415044D01* X364544D01* Y413444D01* X362944D01* X363344Y413844D02* Y414644D01* X364144D01* Y413844D01* X363344D01* X364944Y406944D02* Y408544D01* X366544D01* Y406944D01* X364944D01* X365344Y407344D02* Y408144D01* X366144D01* Y407344D01* X365344D01* X351944Y404444D02* Y406044D01* X353544D01* Y404444D01* X351944D01* X352344Y404844D02* Y405644D01* X353144D01* Y404844D01* X352344D01* X347944Y404444D02* Y406044D01* X349544D01* Y404444D01* X347944D01* X348344Y404844D02* Y405644D01* X349144D01* Y404844D01* X348344D01* X360944Y400444D02* Y402044D01* X362544D01* Y400444D01* X360944D01* X361344Y400844D02* Y401644D01* X362144D01* Y400844D01* X361344D01* X319944Y396444D02* Y398044D01* X321544D01* Y396444D01* X319944D01* X320344Y396844D02* Y397644D01* X321144D01* Y396844D01* X320344D01* X315444Y439444D02* Y441044D01* X317044D01* Y439444D01* X315444D01* X315844Y439844D02* Y440644D01* X316644D01* Y439844D01* X315844D01* X315444Y448444D02* Y450044D01* X317044D01* Y448444D01* X315444D01* X315844Y448844D02* Y449644D01* X316644D01* Y448844D01* X315844D01* X314944Y456444D02* Y458044D01* X316544D01* Y456444D01* X314944D01* X315344Y456844D02* Y457644D01* X316144D01* Y456844D01* X315344D01* X322944Y462944D02* Y464544D01* X324544D01* Y462944D01* X322944D01* X323344Y463344D02* Y464144D01* X324144D01* Y463344D01* X323344D01* X329944Y462944D02* Y464544D01* X331544D01* Y462944D01* X329944D01* X330344Y463344D02* Y464144D01* X331144D01* Y463344D01* X330344D01* X337944Y462444D02* Y464044D01* X339544D01* Y462444D01* X337944D01* X338344Y462844D02* Y463644D01* X339144D01* Y462844D01* X338344D01* X338944Y441444D02* Y443044D01* X340544D01* Y441444D01* X338944D01* X339344Y441844D02* Y442644D01* X340144D01* Y441844D01* X339344D01* X326944Y396444D02* Y398044D01* X328544D01* Y396444D01* X326944D01* X327344Y396844D02* Y397644D01* X328144D01* Y396844D01* X327344D01* X330944Y307944D02* Y309544D01* X332544D01* Y307944D01* X330944D01* X331344Y308344D02* Y309144D01* X332144D01* Y308344D01* X331344D01* X385944Y308145D02* Y309745D01* X387544D01* Y308145D01* X385944D01* X386344Y308545D02* Y309345D01* X387144D01* Y308545D01* X386344D01* X447944Y349544D02* Y351144D01* X449544D01* Y349544D01* X447944D01* X448344Y349944D02* Y350744D01* X449144D01* Y349944D01* X448344D01* X421944Y308145D02* Y309745D01* X423544D01* Y308145D01* X421944D01* X422344Y308545D02* Y309345D01* X423144D01* Y308545D01* X422344D01* X400944Y357444D02* Y359044D01* X402544D01* Y357444D01* X400944D01* X401344Y357844D02* Y358644D01* X402144D01* Y357844D01* X401344D01* X405444Y370444D02* Y372044D01* X407044D01* Y370444D01* X405444D01* X405844Y370844D02* Y371644D01* X406644D01* Y370844D01* X405844D01* X437944Y313444D02* Y315044D01* X439544D01* Y313444D01* X437944D01* X438344Y313844D02* Y314644D01* X439144D01* Y313844D01* X438344D01* X438444Y336444D02* Y338044D01* X440044D01* Y336444D01* X438444D01* X438844Y336844D02* Y337644D01* X439644D01* Y336844D01* X438844D01* X350944Y329944D02* Y331544D01* X352544D01* Y329944D01* X350944D01* X351344Y330344D02* Y331144D01* X352144D01* Y330344D01* X351344D01* D121* X148544Y146744D02* G03* X148544Y146744I-800J0D01* G01* X270591D02* G03* X270591Y146744I-800J0D01* G01* Y268791D02* G03* X270591Y268791I-800J0D01* G01* X148544D02* G03* X148544Y268791I-800J0D01* G01* X177813Y250875D02* G03* X177813Y250875I-800J0D01* G01* X182144D02* G03* X182144Y250875I-800J0D01* G01* X186475D02* G03* X186475Y250875I-800J0D01* G01* X177813Y246544D02* G03* X177813Y246544I-800J0D01* G01* X182144D02* G03* X182144Y246544I-800J0D01* G01* X186475D02* G03* X186475Y246544I-800J0D01* G01* X177813Y242213D02* G03* X177813Y242213I-800J0D01* G01* X182144D02* G03* X182144Y242213I-800J0D01* G01* X186475D02* G03* X186475Y242213I-800J0D01* G01* X328544Y146744D02* G03* X328544Y146744I-800J0D01* G01* X450591D02* G03* X450591Y146744I-800J0D01* G01* Y268791D02* G03* X450591Y268791I-800J0D01* G01* X328544D02* G03* X328544Y268791I-800J0D01* G01* X357813Y250875D02* G03* X357813Y250875I-800J0D01* G01* X362144D02* G03* X362144Y250875I-800J0D01* G01* X366475D02* G03* X366475Y250875I-800J0D01* G01* X357813Y246544D02* G03* X357813Y246544I-800J0D01* G01* X362144D02* G03* X362144Y246544I-800J0D01* G01* X366475D02* G03* X366475Y246544I-800J0D01* G01* X357813Y242213D02* G03* X357813Y242213I-800J0D01* G01* X362144D02* G03* X362144Y242213I-800J0D01* G01* X366475D02* G03* X366475Y242213I-800J0D01* G01* X148544Y326744D02* G03* X148544Y326744I-800J0D01* G01* X270591D02* G03* X270591Y326744I-800J0D01* G01* Y448791D02* G03* X270591Y448791I-800J0D01* G01* X148544D02* G03* X148544Y448791I-800J0D01* G01* X177813Y430875D02* G03* X177813Y430875I-800J0D01* G01* X182144D02* G03* X182144Y430875I-800J0D01* G01* X186475D02* G03* X186475Y430875I-800J0D01* G01* X177813Y426544D02* G03* X177813Y426544I-800J0D01* G01* X182144D02* G03* X182144Y426544I-800J0D01* G01* X186475D02* G03* X186475Y426544I-800J0D01* G01* X177813Y422213D02* G03* X177813Y422213I-800J0D01* G01* X182144D02* G03* X182144Y422213I-800J0D01* G01* X186475D02* G03* X186475Y422213I-800J0D01* G01* X328544Y326744D02* G03* X328544Y326744I-800J0D01* G01* X450591D02* G03* X450591Y326744I-800J0D01* G01* Y448791D02* G03* X450591Y448791I-800J0D01* G01* X328544D02* G03* X328544Y448791I-800J0D01* G01* X357813Y430875D02* G03* X357813Y430875I-800J0D01* G01* X362144D02* G03* X362144Y430875I-800J0D01* G01* X366475D02* G03* X366475Y430875I-800J0D01* G01* X357813Y426544D02* G03* X357813Y426544I-800J0D01* G01* X362144D02* G03* X362144Y426544I-800J0D01* G01* X366475D02* G03* X366475Y426544I-800J0D01* G01* X357813Y422213D02* G03* X357813Y422213I-800J0D01* G01* X362144D02* G03* X362144Y422213I-800J0D01* G01* X366475D02* G03* X366475Y422213I-800J0D01* G01* D122* X177413Y250875D02* G03* X177413Y250875I-400J0D01* G01* X181744D02* G03* X181744Y250875I-400J0D01* G01* X186075D02* G03* X186075Y250875I-400J0D01* G01* X177413Y246544D02* G03* X177413Y246544I-400J0D01* G01* X181744D02* G03* X181744Y246544I-400J0D01* G01* X186075D02* G03* X186075Y246544I-400J0D01* G01* X177413Y242213D02* G03* X177413Y242213I-400J0D01* G01* X181744D02* G03* X181744Y242213I-400J0D01* G01* X186075D02* G03* X186075Y242213I-400J0D01* G01* X357413Y250875D02* G03* X357413Y250875I-400J0D01* G01* X361744D02* G03* X361744Y250875I-400J0D01* G01* X366075D02* G03* X366075Y250875I-400J0D01* G01* X357413Y246544D02* G03* X357413Y246544I-400J0D01* G01* X361744D02* G03* X361744Y246544I-400J0D01* G01* X366075D02* G03* X366075Y246544I-400J0D01* G01* X357413Y242213D02* G03* X357413Y242213I-400J0D01* G01* X361744D02* G03* X361744Y242213I-400J0D01* G01* X366075D02* G03* X366075Y242213I-400J0D01* G01* X177413Y430875D02* G03* X177413Y430875I-400J0D01* G01* X181744D02* G03* X181744Y430875I-400J0D01* G01* X186075D02* G03* X186075Y430875I-400J0D01* G01* X177413Y426544D02* G03* X177413Y426544I-400J0D01* G01* X181744D02* G03* X181744Y426544I-400J0D01* G01* X186075D02* G03* X186075Y426544I-400J0D01* G01* X177413Y422213D02* G03* X177413Y422213I-400J0D01* G01* X181744D02* G03* X181744Y422213I-400J0D01* G01* X186075D02* G03* X186075Y422213I-400J0D01* G01* X357413Y430875D02* G03* X357413Y430875I-400J0D01* G01* X361744D02* G03* X361744Y430875I-400J0D01* G01* X366075D02* G03* X366075Y430875I-400J0D01* G01* X357413Y426544D02* G03* X357413Y426544I-400J0D01* G01* X361744D02* G03* X361744Y426544I-400J0D01* G01* X366075D02* G03* X366075Y426544I-400J0D01* G01* X357413Y422213D02* G03* X357413Y422213I-400J0D01* G01* X361744D02* G03* X361744Y422213I-400J0D01* G01* X366075D02* G03* X366075Y422213I-400J0D01* G01* M02* ================================================ FILE: hardware/panel.GKO ================================================ G04 Layer_Color=16711935* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD38C,0.00600*% %ADD45C,0.01000*% D38* X187583Y307201D02* X189583D01* X188583D01* Y313199D01* X187583Y312199D01* X196580Y313199D02* X194581Y312199D01* X192582Y310200D01* Y308201D01* X193581Y307201D01* X195581D01* X196580Y308201D01* Y309200D01* X195581Y310200D01* X192582D01* X202578Y313199D02* X198580D01* Y310200D01* X200579Y311200D01* X201579D01* X202578Y310200D01* Y308201D01* X201579Y307201D01* X199580D01* X198580Y308201D01* X204578Y312199D02* X205577Y313199D01* X207577D01* X208576Y312199D01* Y311200D01* X207577Y310200D01* X206577D01* X207577D01* X208576Y309200D01* Y308201D01* X207577Y307201D01* X205577D01* X204578Y308201D01* X210576Y307201D02* Y308201D01* X211576D01* Y307201D01* X210576D01* X219573Y313199D02* X215574D01* Y310200D01* X217574Y311200D01* X218573D01* X219573Y310200D01* Y308201D01* X218573Y307201D01* X216574D01* X215574Y308201D01* X224571Y307201D02* Y313199D01* X221572Y310200D01* X225571D01* X317399Y186583D02* Y188583D01* Y187583D01* X311401D01* X312401Y186583D01* X311401Y195580D02* X312401Y193581D01* X314400Y191582D01* X316399D01* X317399Y192581D01* Y194581D01* X316399Y195580D01* X315400D01* X314400Y194581D01* Y191582D01* X311401Y201578D02* Y197580D01* X314400D01* X313400Y199579D01* Y200579D01* X314400Y201578D01* X316399D01* X317399Y200579D01* Y198580D01* X316399Y197580D01* X312401Y203578D02* X311401Y204577D01* Y206577D01* X312401Y207576D01* X313400D01* X314400Y206577D01* Y205577D01* Y206577D01* X315400Y207576D01* X316399D01* X317399Y206577D01* Y204577D01* X316399Y203578D01* X317399Y209576D02* X316399D01* Y210576D01* X317399D01* Y209576D01* X311401Y218573D02* Y214574D01* X314400D01* X313400Y216574D01* Y217573D01* X314400Y218573D01* X316399D01* X317399Y217573D01* Y215574D01* X316399Y214574D01* X317399Y223571D02* X311401D01* X314400Y220572D01* Y224571D01* X367583Y307201D02* X369583D01* X368583D01* Y313199D01* X367583Y312199D01* X376580Y313199D02* X374581Y312199D01* X372582Y310200D01* Y308201D01* X373581Y307201D01* X375581D01* X376580Y308201D01* Y309200D01* X375581Y310200D01* X372582D01* X382578Y313199D02* X378580D01* Y310200D01* X380579Y311200D01* X381579D01* X382578Y310200D01* Y308201D01* X381579Y307201D01* X379579D01* X378580Y308201D01* X384578Y312199D02* X385578Y313199D01* X387577D01* X388577Y312199D01* Y311200D01* X387577Y310200D01* X386577D01* X387577D01* X388577Y309200D01* Y308201D01* X387577Y307201D01* X385578D01* X384578Y308201D01* X390576Y307201D02* Y308201D01* X391576D01* Y307201D01* X390576D01* X399573Y313199D02* X395574D01* Y310200D01* X397574Y311200D01* X398573D01* X399573Y310200D01* Y308201D01* X398573Y307201D01* X396574D01* X395574Y308201D01* X404571Y307201D02* Y313199D01* X401572Y310200D01* X405571D01* X497399Y186583D02* Y188583D01* Y187583D01* X491401D01* X492401Y186583D01* X491401Y195580D02* X492401Y193581D01* X494400Y191582D01* X496399D01* X497399Y192581D01* Y194581D01* X496399Y195580D01* X495400D01* X494400Y194581D01* Y191582D01* X491401Y201578D02* Y197580D01* X494400D01* X493400Y199579D01* Y200579D01* X494400Y201578D01* X496399D01* X497399Y200579D01* Y198580D01* X496399Y197580D01* X492401Y203578D02* X491401Y204577D01* Y206577D01* X492401Y207576D01* X493400D01* X494400Y206577D01* Y205577D01* Y206577D01* X495400Y207576D01* X496399D01* X497399Y206577D01* Y204577D01* X496399Y203578D01* X497399Y209576D02* X496399D01* Y210576D01* X497399D01* Y209576D01* X491401Y218573D02* Y214574D01* X494400D01* X493400Y216574D01* Y217573D01* X494400Y218573D01* X496399D01* X497399Y217573D01* Y215574D01* X496399Y214574D01* X497399Y223571D02* X491401D01* X494400Y220572D01* Y224571D01* X187583Y487201D02* X189583D01* X188583D01* Y493199D01* X187583Y492199D01* X196580Y493199D02* X194581Y492199D01* X192582Y490200D01* Y488201D01* X193581Y487201D01* X195581D01* X196580Y488201D01* Y489200D01* X195581Y490200D01* X192582D01* X202578Y493199D02* X198580D01* Y490200D01* X200579Y491200D01* X201579D01* X202578Y490200D01* Y488201D01* X201579Y487201D01* X199580D01* X198580Y488201D01* X204578Y492199D02* X205577Y493199D01* X207577D01* X208576Y492199D01* Y491200D01* X207577Y490200D01* X206577D01* X207577D01* X208576Y489200D01* Y488201D01* X207577Y487201D01* X205577D01* X204578Y488201D01* X210576Y487201D02* Y488201D01* X211576D01* Y487201D01* X210576D01* X219573Y493199D02* X215574D01* Y490200D01* X217574Y491200D01* X218573D01* X219573Y490200D01* Y488201D01* X218573Y487201D01* X216574D01* X215574Y488201D01* X224571Y487201D02* Y493199D01* X221572Y490200D01* X225571D01* X317399Y366583D02* Y368583D01* Y367583D01* X311401D01* X312401Y366583D01* X311401Y375580D02* X312401Y373581D01* X314400Y371582D01* X316399D01* X317399Y372581D01* Y374581D01* X316399Y375580D01* X315400D01* X314400Y374581D01* Y371582D01* X311401Y381578D02* Y377580D01* X314400D01* X313400Y379579D01* Y380579D01* X314400Y381578D01* X316399D01* X317399Y380579D01* Y378579D01* X316399Y377580D01* X312401Y383578D02* X311401Y384577D01* Y386577D01* X312401Y387577D01* X313400D01* X314400Y386577D01* Y385577D01* Y386577D01* X315400Y387577D01* X316399D01* X317399Y386577D01* Y384577D01* X316399Y383578D01* X317399Y389576D02* X316399D01* Y390576D01* X317399D01* Y389576D01* X311401Y398573D02* Y394574D01* X314400D01* X313400Y396574D01* Y397573D01* X314400Y398573D01* X316399D01* X317399Y397573D01* Y395574D01* X316399Y394574D01* X317399Y403571D02* X311401D01* X314400Y400572D01* Y404571D01* X367583Y487201D02* X369583D01* X368583D01* Y493199D01* X367583Y492199D01* X376580Y493199D02* X374581Y492199D01* X372582Y490200D01* Y488201D01* X373581Y487201D01* X375581D01* X376580Y488201D01* Y489200D01* X375581Y490200D01* X372582D01* X382578Y493199D02* X378580D01* Y490200D01* X380579Y491200D01* X381579D01* X382578Y490200D01* Y488201D01* X381579Y487201D01* X379579D01* X378580Y488201D01* X384578Y492199D02* X385578Y493199D01* X387577D01* X388577Y492199D01* Y491200D01* X387577Y490200D01* X386577D01* X387577D01* X388577Y489200D01* Y488201D01* X387577Y487201D01* X385578D01* X384578Y488201D01* X390576Y487201D02* Y488201D01* X391576D01* Y487201D01* X390576D01* X399573Y493199D02* X395574D01* Y490200D01* X397574Y491200D01* X398573D01* X399573Y490200D01* Y488201D01* X398573Y487201D01* X396574D01* X395574Y488201D01* X404571Y487201D02* Y493199D01* X401572Y490200D01* X405571D01* X497399Y366583D02* Y368583D01* Y367583D01* X491401D01* X492401Y366583D01* X491401Y375580D02* X492401Y373581D01* X494400Y371582D01* X496399D01* X497399Y372581D01* Y374581D01* X496399Y375580D01* X495400D01* X494400Y374581D01* Y371582D01* X491401Y381578D02* Y377580D01* X494400D01* X493400Y379579D01* Y380579D01* X494400Y381578D01* X496399D01* X497399Y380579D01* Y378579D01* X496399Y377580D01* X492401Y383578D02* X491401Y384577D01* Y386577D01* X492401Y387577D01* X493400D01* X494400Y386577D01* Y385577D01* Y386577D01* X495400Y387577D01* X496399D01* X497399Y386577D01* Y384577D01* X496399Y383578D01* X497399Y389576D02* X496399D01* Y390576D01* X497399D01* Y389576D01* X491401Y398573D02* Y394574D01* X494400D01* X493400Y396574D01* Y397573D01* X494400Y398573D01* X496399D01* X497399Y397573D01* Y395574D01* X496399Y394574D01* X497399Y403571D02* X491401D01* X494400Y400572D01* Y404571D01* D45* X290854Y281246D02* Y311800D01* X125500Y281700D02* Y311800D01* X227171Y310800D02* X290854D01* X125500D02* X185983D01* X284854Y312800D02* X290854Y310800D01* X284854Y308800D02* X290854Y310800D01* X125500D02* X131500Y308800D01* X125500Y310800D02* X131500Y312800D01* X282600Y124500D02* X314800D01* X282246Y289854D02* X314800D01* X313800Y124500D02* Y184983D01* Y226171D02* Y289854D01* Y124500D02* X315800Y130500D01* X311800D02* X313800Y124500D01* X311800Y283854D02* X313800Y289854D01* X315800Y283854D01* X135154Y289854D02* X280746D01* X125500Y280200D02* X135154Y289854D01* X125500Y133700D02* Y280200D01* X134700Y124500D02* X281100D01* X125500Y133700D02* X134700Y124500D01* X281100D02* X290854Y134254D01* Y279746D01* X280746Y289854D02* X290854Y279746D01* X470854Y281246D02* Y311800D01* X305500Y281700D02* Y311800D01* X407171Y310800D02* X470854D01* X305500D02* X365983D01* X464854Y312800D02* X470854Y310800D01* X464854Y308800D02* X470854Y310800D01* X305500D02* X311500Y308800D01* X305500Y310800D02* X311500Y312800D01* X462600Y124500D02* X494800D01* X462246Y289854D02* X494800D01* X493800Y124500D02* Y184983D01* Y226171D02* Y289854D01* Y124500D02* X495800Y130500D01* X491800D02* X493800Y124500D01* X491800Y283854D02* X493800Y289854D01* X495800Y283854D01* X315154Y289854D02* X460746D01* X305500Y280200D02* X315154Y289854D01* X305500Y133700D02* Y280200D01* X314700Y124500D02* X461100D01* X305500Y133700D02* X314700Y124500D01* X461100D02* X470854Y134254D01* Y279746D01* X460746Y289854D02* X470854Y279746D01* X290854Y461246D02* Y491800D01* X125500Y461700D02* Y491800D01* X227171Y490800D02* X290854D01* X125500D02* X185983D01* X284854Y492800D02* X290854Y490800D01* X284854Y488800D02* X290854Y490800D01* X125500D02* X131500Y488800D01* X125500Y490800D02* X131500Y492800D01* X282600Y304500D02* X314800D01* X282246Y469854D02* X314800D01* X313800Y304500D02* Y364983D01* Y406171D02* Y469854D01* Y304500D02* X315800Y310500D01* X311800D02* X313800Y304500D01* X311800Y463854D02* X313800Y469854D01* X315800Y463854D01* X135154Y469854D02* X280746D01* X125500Y460200D02* X135154Y469854D01* X125500Y313700D02* Y460200D01* X134700Y304500D02* X281100D01* X125500Y313700D02* X134700Y304500D01* X281100D02* X290854Y314254D01* Y459746D01* X280746Y469854D02* X290854Y459746D01* X470854Y461246D02* Y491800D01* X305500Y461700D02* Y491800D01* X407171Y490800D02* X470854D01* X305500D02* X365983D01* X464854Y492800D02* X470854Y490800D01* X464854Y488800D02* X470854Y490800D01* X305500D02* X311500Y488800D01* X305500Y490800D02* X311500Y492800D01* X462600Y304500D02* X494800D01* X462246Y469854D02* X494800D01* X493800Y304500D02* Y364983D01* Y406171D02* Y469854D01* Y304500D02* X495800Y310500D01* X491800D02* X493800Y304500D01* X491800Y463854D02* X493800Y469854D01* X495800Y463854D01* X315154Y469854D02* X460746D01* X305500Y460200D02* X315154Y469854D01* X305500Y313700D02* Y460200D01* X314700Y304500D02* X461100D01* X305500Y313700D02* X314700Y304500D01* X461100D02* X470854Y314254D01* Y459746D01* X460746Y469854D02* X470854Y459746D01* M02* ================================================ FILE: hardware/panel.GM1 ================================================ G04 Layer_Color=16711935* %FSLAX25Y25*% %MOIN*% G70* G01* G75* M02* ================================================ FILE: hardware/panel.GM13 ================================================ G04 Layer_Color=16711935* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD118C,0.00394*% D118* X206869Y152124D02* G03* X206869Y152124I-1969J0D01* G01* X188628Y240048D02* G03* X188628Y240048I-1969J0D01* G01* X217209Y202476D02* G03* X217209Y202476I-1969J0D01* G01* X210398Y171472D02* X217090D01* X210398Y175016D02* X217090D01* X210398Y171472D02* Y175016D01* X217090Y171472D02* Y175016D01* X260516Y225898D02* Y232590D01* X256972Y225898D02* Y232590D01* Y225898D02* X260516D01* X256972Y232590D02* X260516D01* X255516Y226398D02* Y233090D01* X251972Y226398D02* Y233090D01* Y226398D02* X255516D01* X251972Y233090D02* X255516D01* X236972Y224398D02* Y231090D01* X240516Y224398D02* Y231090D01* X236972D02* X240516D01* X236972Y224398D02* X240516D01* X242972Y223898D02* Y230590D01* X246516Y223898D02* Y230590D01* X242972D02* X246516D01* X242972Y223898D02* X246516D01* X168996Y155374D02* X175492D01* X168996Y159114D02* X175492D01* X168996Y155374D02* Y159114D01* X175492Y155374D02* Y159114D01* X206898Y159972D02* X213591D01* X206898Y163516D02* X213591D01* X206898Y159972D02* Y163516D01* X213591Y159972D02* Y163516D01* X206898Y154972D02* X213591D01* X206898Y158516D02* X213591D01* X206898Y154972D02* Y158516D01* X213591Y154972D02* Y158516D01* X182898Y195016D02* X189590D01* X182898Y191472D02* X189590D01* Y195016D01* X182898Y191472D02* Y195016D01* X207398Y229016D02* X214090D01* X207398Y225472D02* X214090D01* Y229016D01* X207398Y225472D02* Y229016D01* X225492Y235374D02* Y239114D01* X218996Y235374D02* Y239114D01* X225492D01* X218996Y235374D02* X225492D01* X212091Y235472D02* Y239016D01* X205398Y235472D02* Y239016D01* X212091D01* X205398Y235472D02* X212091D01* X225492Y241374D02* Y245114D01* X218996Y241374D02* Y245114D01* X225492D01* X218996Y241374D02* X225492D01* X212091Y241472D02* Y245016D01* X205398Y241472D02* Y245016D01* X212091D01* X205398Y241472D02* X212091D01* X158996Y183114D02* X165492D01* X158996Y179374D02* X165492D01* Y183114D01* X158996Y179374D02* Y183114D01* X169496Y195374D02* X175992D01* X169496Y199114D02* X175992D01* X169496Y195374D02* Y199114D01* X175992Y195374D02* Y199114D01* X158996Y195374D02* X165492D01* X158996Y199114D02* X165492D01* X158996Y195374D02* Y199114D01* X165492Y195374D02* Y199114D01* X179996Y150874D02* X186492D01* X179996Y154614D02* X186492D01* X179996Y150874D02* Y154614D01* X186492Y150874D02* Y154614D01* X197898Y155516D02* X204590D01* X197898Y151972D02* X204590D01* Y155516D01* X197898Y151972D02* Y155516D01* X197398Y157472D02* X204090D01* X197398Y161016D02* X204090D01* X197398Y157472D02* Y161016D01* X204090Y157472D02* Y161016D01* X186398Y170016D02* X193091D01* X186398Y166472D02* X193091D01* Y170016D01* X186398Y166472D02* Y170016D01* X172898Y228473D02* X179590D01* X172898Y232016D02* X179590D01* Y228473D02* Y232016D01* X172898Y228473D02* Y232016D01* X159547Y179669D02* Y182819D01* X165846Y179669D02* Y182819D01* X159547D02* X165846D01* X159547Y179669D02* X165846D01* X159101Y186242D02* Y198446D01* X166187Y186242D02* Y198446D01* X159101D02* X166187D01* X159101Y186242D02* X166187D01* X252250Y221791D02* Y233209D01* X245950Y221791D02* Y233209D01* Y221791D02* X252250D01* X245950Y233209D02* X252250D01* X235730Y224252D02* Y230748D01* X239470Y224252D02* Y230748D01* X235730Y224252D02* X239470D01* X235730Y230748D02* X239470D01* Y235252D02* Y241748D01* X235730Y235252D02* Y241748D01* X239470D01* X235730Y235252D02* X239470D01* X168803Y155425D02* Y158575D01* X175102Y155425D02* Y158575D01* X168803D02* X175102D01* X168803Y155425D02* X175102D01* X236811Y142228D02* X243504D01* X236811Y145772D02* X243504D01* Y142228D02* Y145772D01* X236811Y142228D02* Y145772D01* Y152228D02* X243504D01* X236811Y155772D02* X243504D01* Y152228D02* Y155772D01* X236811Y152228D02* Y155772D01* X204900Y186087D02* X224387Y166600D01* X185413Y166600D02* X204900Y147113D01* X185413Y166600D02* X204900Y186087D01* Y147113D02* X224387Y166600D01* X144648Y232289D02* X157640D01* X144648Y225399D02* X157640D01* X144648D02* Y232289D01* X157640Y225399D02* Y232289D01* X144548Y251989D02* X157540D01* X144548Y245099D02* X157540D01* X144548D02* Y251989D01* X157540Y245099D02* Y251989D01* X172486Y256583D02* X190202D01* X172486Y236505D02* X190202D01* X172486D02* Y256583D01* X190202Y236505D02* Y256583D01* X180260Y200488D02* X192228D01* X180260Y206000D02* X192228D01* Y200488D02* Y206000D01* X180260Y200488D02* Y206000D01* X251291Y166602D02* X257197D01* X251291Y178886D02* X257197D01* Y166602D02* Y178886D01* X251291Y166602D02* Y178886D01* X250791Y184102D02* X256697D01* X250791Y196386D02* X256697D01* Y184102D02* Y196386D01* X250791Y184102D02* Y196386D01* X251291Y200102D02* X257197D01* X251291Y212386D02* X257197D01* Y200102D02* Y212386D01* X251291Y200102D02* Y212386D01* X260472Y250091D02* X264016D01* X260472Y243398D02* X264016D01* X260472D02* Y250091D01* X264016Y243398D02* Y250091D01* X247374Y202996D02* X251114D01* X247374Y209492D02* X251114D01* Y202996D02* Y209492D01* X247374Y202996D02* Y209492D01* X256874Y205496D02* X260614D01* X256874Y211992D02* X260614D01* Y205496D02* Y211992D01* X256874Y205496D02* Y211992D01* X247874Y169496D02* X251614D01* X247874Y175992D02* X251614D01* Y169496D02* Y175992D01* X247874Y169496D02* Y175992D01* X257374Y171996D02* X261114D01* X257374Y178492D02* X261114D01* Y171996D02* Y178492D01* X257374Y171996D02* Y178492D01* X256874Y189496D02* X260614D01* X256874Y195992D02* X260614D01* Y189496D02* Y195992D01* X256874Y189496D02* Y195992D01* X247374Y186496D02* X251114D01* X247374Y192992D02* X251114D01* Y186496D02* Y192992D01* X247374Y186496D02* Y192992D01* X237972Y195091D02* X241516D01* X237972Y188398D02* X241516D01* X237972D02* Y195091D01* X241516Y188398D02* Y195091D01* X198705Y198933D02* X218783D01* X198705Y216650D02* X218783D01* Y198933D02* Y216650D01* X198705Y198933D02* Y216650D01* X386869Y152124D02* G03* X386869Y152124I-1969J0D01* G01* X368628Y240048D02* G03* X368628Y240048I-1969J0D01* G01* X397209Y202476D02* G03* X397209Y202476I-1969J0D01* G01* X390398Y171472D02* X397090D01* X390398Y175016D02* X397090D01* X390398Y171472D02* Y175016D01* X397090Y171472D02* Y175016D01* X440516Y225898D02* Y232590D01* X436972Y225898D02* Y232590D01* Y225898D02* X440516D01* X436972Y232590D02* X440516D01* X435516Y226398D02* Y233090D01* X431972Y226398D02* Y233090D01* Y226398D02* X435516D01* X431972Y233090D02* X435516D01* X416972Y224398D02* Y231090D01* X420516Y224398D02* Y231090D01* X416972D02* X420516D01* X416972Y224398D02* X420516D01* X422972Y223898D02* Y230590D01* X426516Y223898D02* Y230590D01* X422972D02* X426516D01* X422972Y223898D02* X426516D01* X348996Y155374D02* X355492D01* X348996Y159114D02* X355492D01* X348996Y155374D02* Y159114D01* X355492Y155374D02* Y159114D01* X386898Y159972D02* X393591D01* X386898Y163516D02* X393591D01* X386898Y159972D02* Y163516D01* X393591Y159972D02* Y163516D01* X386898Y154972D02* X393591D01* X386898Y158516D02* X393591D01* X386898Y154972D02* Y158516D01* X393591Y154972D02* Y158516D01* X362898Y195016D02* X369590D01* X362898Y191472D02* X369590D01* Y195016D01* X362898Y191472D02* Y195016D01* X387398Y229016D02* X394090D01* X387398Y225472D02* X394090D01* Y229016D01* X387398Y225472D02* Y229016D01* X405492Y235374D02* Y239114D01* X398996Y235374D02* Y239114D01* X405492D01* X398996Y235374D02* X405492D01* X392091Y235472D02* Y239016D01* X385398Y235472D02* Y239016D01* X392091D01* X385398Y235472D02* X392091D01* X405492Y241374D02* Y245114D01* X398996Y241374D02* Y245114D01* X405492D01* X398996Y241374D02* X405492D01* X392091Y241472D02* Y245016D01* X385398Y241472D02* Y245016D01* X392091D01* X385398Y241472D02* X392091D01* X338996Y183114D02* X345492D01* X338996Y179374D02* X345492D01* Y183114D01* X338996Y179374D02* Y183114D01* X349496Y195374D02* X355992D01* X349496Y199114D02* X355992D01* X349496Y195374D02* Y199114D01* X355992Y195374D02* Y199114D01* X338996Y195374D02* X345492D01* X338996Y199114D02* X345492D01* X338996Y195374D02* Y199114D01* X345492Y195374D02* Y199114D01* X359996Y150874D02* X366492D01* X359996Y154614D02* X366492D01* X359996Y150874D02* Y154614D01* X366492Y150874D02* Y154614D01* X377898Y155516D02* X384590D01* X377898Y151972D02* X384590D01* Y155516D01* X377898Y151972D02* Y155516D01* X377398Y157472D02* X384090D01* X377398Y161016D02* X384090D01* X377398Y157472D02* Y161016D01* X384090Y157472D02* Y161016D01* X366398Y170016D02* X373091D01* X366398Y166472D02* X373091D01* Y170016D01* X366398Y166472D02* Y170016D01* X352898Y228473D02* X359590D01* X352898Y232016D02* X359590D01* Y228473D02* Y232016D01* X352898Y228473D02* Y232016D01* X339547Y179669D02* Y182819D01* X345846Y179669D02* Y182819D01* X339547D02* X345846D01* X339547Y179669D02* X345846D01* X339101Y186242D02* Y198446D01* X346187Y186242D02* Y198446D01* X339101D02* X346187D01* X339101Y186242D02* X346187D01* X432250Y221791D02* Y233209D01* X425950Y221791D02* Y233209D01* Y221791D02* X432250D01* X425950Y233209D02* X432250D01* X415730Y224252D02* Y230748D01* X419470Y224252D02* Y230748D01* X415730Y224252D02* X419470D01* X415730Y230748D02* X419470D01* Y235252D02* Y241748D01* X415730Y235252D02* Y241748D01* X419470D01* X415730Y235252D02* X419470D01* X348803Y155425D02* Y158575D01* X355102Y155425D02* Y158575D01* X348803D02* X355102D01* X348803Y155425D02* X355102D01* X416811Y142228D02* X423504D01* X416811Y145772D02* X423504D01* Y142228D02* Y145772D01* X416811Y142228D02* Y145772D01* Y152228D02* X423504D01* X416811Y155772D02* X423504D01* Y152228D02* Y155772D01* X416811Y152228D02* Y155772D01* X384900Y186087D02* X404387Y166600D01* X365413Y166600D02* X384900Y147113D01* X365413Y166600D02* X384900Y186087D01* Y147113D02* X404387Y166600D01* X324648Y232289D02* X337640D01* X324648Y225399D02* X337640D01* X324648D02* Y232289D01* X337640Y225399D02* Y232289D01* X324548Y251989D02* X337540D01* X324548Y245099D02* X337540D01* X324548D02* Y251989D01* X337540Y245099D02* Y251989D01* X352486Y256583D02* X370202D01* X352486Y236505D02* X370202D01* X352486D02* Y256583D01* X370202Y236505D02* Y256583D01* X360260Y200488D02* X372228D01* X360260Y206000D02* X372228D01* Y200488D02* Y206000D01* X360260Y200488D02* Y206000D01* X431291Y166602D02* X437197D01* X431291Y178886D02* X437197D01* Y166602D02* Y178886D01* X431291Y166602D02* Y178886D01* X430791Y184102D02* X436697D01* X430791Y196386D02* X436697D01* Y184102D02* Y196386D01* X430791Y184102D02* Y196386D01* X431291Y200102D02* X437197D01* X431291Y212386D02* X437197D01* Y200102D02* Y212386D01* X431291Y200102D02* Y212386D01* X440472Y250091D02* X444016D01* X440472Y243398D02* X444016D01* X440472D02* Y250091D01* X444016Y243398D02* Y250091D01* X427374Y202996D02* X431114D01* X427374Y209492D02* X431114D01* Y202996D02* Y209492D01* X427374Y202996D02* Y209492D01* X436874Y205496D02* X440614D01* X436874Y211992D02* X440614D01* Y205496D02* Y211992D01* X436874Y205496D02* Y211992D01* X427874Y169496D02* X431614D01* X427874Y175992D02* X431614D01* Y169496D02* Y175992D01* X427874Y169496D02* Y175992D01* X437374Y171996D02* X441114D01* X437374Y178492D02* X441114D01* Y171996D02* Y178492D01* X437374Y171996D02* Y178492D01* X436874Y189496D02* X440614D01* X436874Y195992D02* X440614D01* Y189496D02* Y195992D01* X436874Y189496D02* Y195992D01* X427374Y186496D02* X431114D01* X427374Y192992D02* X431114D01* Y186496D02* Y192992D01* X427374Y186496D02* Y192992D01* X417972Y195091D02* X421516D01* X417972Y188398D02* X421516D01* X417972D02* Y195091D01* X421516Y188398D02* Y195091D01* X378705Y198933D02* X398783D01* X378705Y216650D02* X398783D01* Y198933D02* Y216650D01* X378705Y198933D02* Y216650D01* X206869Y332124D02* G03* X206869Y332124I-1969J0D01* G01* X188628Y420048D02* G03* X188628Y420048I-1969J0D01* G01* X217209Y382476D02* G03* X217209Y382476I-1969J0D01* G01* X210398Y351472D02* X217090D01* X210398Y355016D02* X217090D01* X210398Y351472D02* Y355016D01* X217090Y351472D02* Y355016D01* X260516Y405898D02* Y412590D01* X256972Y405898D02* Y412590D01* Y405898D02* X260516D01* X256972Y412590D02* X260516D01* X255516Y406398D02* Y413090D01* X251972Y406398D02* Y413090D01* Y406398D02* X255516D01* X251972Y413090D02* X255516D01* X236972Y404398D02* Y411090D01* X240516Y404398D02* Y411090D01* X236972D02* X240516D01* X236972Y404398D02* X240516D01* X242972Y403898D02* Y410590D01* X246516Y403898D02* Y410590D01* X242972D02* X246516D01* X242972Y403898D02* X246516D01* X168996Y335374D02* X175492D01* X168996Y339114D02* X175492D01* X168996Y335374D02* Y339114D01* X175492Y335374D02* Y339114D01* X206898Y339972D02* X213591D01* X206898Y343516D02* X213591D01* X206898Y339972D02* Y343516D01* X213591Y339972D02* Y343516D01* X206898Y334972D02* X213591D01* X206898Y338516D02* X213591D01* X206898Y334972D02* Y338516D01* X213591Y334972D02* Y338516D01* X182898Y375016D02* X189590D01* X182898Y371472D02* X189590D01* Y375016D01* X182898Y371472D02* Y375016D01* X207398Y409016D02* X214090D01* X207398Y405472D02* X214090D01* Y409016D01* X207398Y405472D02* Y409016D01* X225492Y415374D02* Y419114D01* X218996Y415374D02* Y419114D01* X225492D01* X218996Y415374D02* X225492D01* X212091Y415472D02* Y419016D01* X205398Y415472D02* Y419016D01* X212091D01* X205398Y415472D02* X212091D01* X225492Y421374D02* Y425114D01* X218996Y421374D02* Y425114D01* X225492D01* X218996Y421374D02* X225492D01* X212091Y421472D02* Y425016D01* X205398Y421472D02* Y425016D01* X212091D01* X205398Y421472D02* X212091D01* X158996Y363114D02* X165492D01* X158996Y359374D02* X165492D01* Y363114D01* X158996Y359374D02* Y363114D01* X169496Y375374D02* X175992D01* X169496Y379114D02* X175992D01* X169496Y375374D02* Y379114D01* X175992Y375374D02* Y379114D01* X158996Y375374D02* X165492D01* X158996Y379114D02* X165492D01* X158996Y375374D02* Y379114D01* X165492Y375374D02* Y379114D01* X179996Y330874D02* X186492D01* X179996Y334614D02* X186492D01* X179996Y330874D02* Y334614D01* X186492Y330874D02* Y334614D01* X197898Y335516D02* X204590D01* X197898Y331972D02* X204590D01* Y335516D01* X197898Y331972D02* Y335516D01* X197398Y337472D02* X204090D01* X197398Y341016D02* X204090D01* X197398Y337472D02* Y341016D01* X204090Y337472D02* Y341016D01* X186398Y350016D02* X193091D01* X186398Y346472D02* X193091D01* Y350016D01* X186398Y346472D02* Y350016D01* X172898Y408473D02* X179590D01* X172898Y412016D02* X179590D01* Y408473D02* Y412016D01* X172898Y408473D02* Y412016D01* X159547Y359669D02* Y362819D01* X165846Y359669D02* Y362819D01* X159547D02* X165846D01* X159547Y359669D02* X165846D01* X159101Y366242D02* Y378446D01* X166187Y366242D02* Y378446D01* X159101D02* X166187D01* X159101Y366242D02* X166187D01* X252250Y401791D02* Y413209D01* X245950Y401791D02* Y413209D01* Y401791D02* X252250D01* X245950Y413209D02* X252250D01* X235730Y404252D02* Y410748D01* X239470Y404252D02* Y410748D01* X235730Y404252D02* X239470D01* X235730Y410748D02* X239470D01* Y415252D02* Y421748D01* X235730Y415252D02* Y421748D01* X239470D01* X235730Y415252D02* X239470D01* X168803Y335425D02* Y338575D01* X175102Y335425D02* Y338575D01* X168803D02* X175102D01* X168803Y335425D02* X175102D01* X236811Y322228D02* X243504D01* X236811Y325772D02* X243504D01* Y322228D02* Y325772D01* X236811Y322228D02* Y325772D01* Y332228D02* X243504D01* X236811Y335772D02* X243504D01* Y332228D02* Y335772D01* X236811Y332228D02* Y335772D01* X204900Y366087D02* X224387Y346600D01* X185413Y346600D02* X204900Y327113D01* X185413Y346600D02* X204900Y366087D01* Y327113D02* X224387Y346600D01* X144648Y412289D02* X157640D01* X144648Y405399D02* X157640D01* X144648D02* Y412289D01* X157640Y405399D02* Y412289D01* X144548Y431989D02* X157540D01* X144548Y425099D02* X157540D01* X144548D02* Y431989D01* X157540Y425099D02* Y431989D01* X172486Y436583D02* X190202D01* X172486Y416505D02* X190202D01* X172486D02* Y436583D01* X190202Y416505D02* Y436583D01* X180260Y380488D02* X192228D01* X180260Y386000D02* X192228D01* Y380488D02* Y386000D01* X180260Y380488D02* Y386000D01* X251291Y346602D02* X257197D01* X251291Y358886D02* X257197D01* Y346602D02* Y358886D01* X251291Y346602D02* Y358886D01* X250791Y364102D02* X256697D01* X250791Y376386D02* X256697D01* Y364102D02* Y376386D01* X250791Y364102D02* Y376386D01* X251291Y380102D02* X257197D01* X251291Y392386D02* X257197D01* Y380102D02* Y392386D01* X251291Y380102D02* Y392386D01* X260472Y430091D02* X264016D01* X260472Y423398D02* X264016D01* X260472D02* Y430091D01* X264016Y423398D02* Y430091D01* X247374Y382996D02* X251114D01* X247374Y389492D02* X251114D01* Y382996D02* Y389492D01* X247374Y382996D02* Y389492D01* X256874Y385496D02* X260614D01* X256874Y391992D02* X260614D01* Y385496D02* Y391992D01* X256874Y385496D02* Y391992D01* X247874Y349496D02* X251614D01* X247874Y355992D02* X251614D01* Y349496D02* Y355992D01* X247874Y349496D02* Y355992D01* X257374Y351996D02* X261114D01* X257374Y358492D02* X261114D01* Y351996D02* Y358492D01* X257374Y351996D02* Y358492D01* X256874Y369496D02* X260614D01* X256874Y375992D02* X260614D01* Y369496D02* Y375992D01* X256874Y369496D02* Y375992D01* X247374Y366496D02* X251114D01* X247374Y372992D02* X251114D01* Y366496D02* Y372992D01* X247374Y366496D02* Y372992D01* X237972Y375091D02* X241516D01* X237972Y368398D02* X241516D01* X237972D02* Y375091D01* X241516Y368398D02* Y375091D01* X198705Y378933D02* X218783D01* X198705Y396650D02* X218783D01* Y378933D02* Y396650D01* X198705Y378933D02* Y396650D01* X386869Y332124D02* G03* X386869Y332124I-1969J0D01* G01* X368628Y420048D02* G03* X368628Y420048I-1969J0D01* G01* X397209Y382476D02* G03* X397209Y382476I-1969J0D01* G01* X390398Y351472D02* X397090D01* X390398Y355016D02* X397090D01* X390398Y351472D02* Y355016D01* X397090Y351472D02* Y355016D01* X440516Y405898D02* Y412590D01* X436972Y405898D02* Y412590D01* Y405898D02* X440516D01* X436972Y412590D02* X440516D01* X435516Y406398D02* Y413090D01* X431972Y406398D02* Y413090D01* Y406398D02* X435516D01* X431972Y413090D02* X435516D01* X416972Y404398D02* Y411090D01* X420516Y404398D02* Y411090D01* X416972D02* X420516D01* X416972Y404398D02* X420516D01* X422972Y403898D02* Y410590D01* X426516Y403898D02* Y410590D01* X422972D02* X426516D01* X422972Y403898D02* X426516D01* X348996Y335374D02* X355492D01* X348996Y339114D02* X355492D01* X348996Y335374D02* Y339114D01* X355492Y335374D02* Y339114D01* X386898Y339972D02* X393591D01* X386898Y343516D02* X393591D01* X386898Y339972D02* Y343516D01* X393591Y339972D02* Y343516D01* X386898Y334972D02* X393591D01* X386898Y338516D02* X393591D01* X386898Y334972D02* Y338516D01* X393591Y334972D02* Y338516D01* X362898Y375016D02* X369590D01* X362898Y371472D02* X369590D01* Y375016D01* X362898Y371472D02* Y375016D01* X387398Y409016D02* X394090D01* X387398Y405472D02* X394090D01* Y409016D01* X387398Y405472D02* Y409016D01* X405492Y415374D02* Y419114D01* X398996Y415374D02* Y419114D01* X405492D01* X398996Y415374D02* X405492D01* X392091Y415472D02* Y419016D01* X385398Y415472D02* Y419016D01* X392091D01* X385398Y415472D02* X392091D01* X405492Y421374D02* Y425114D01* X398996Y421374D02* Y425114D01* X405492D01* X398996Y421374D02* X405492D01* X392091Y421472D02* Y425016D01* X385398Y421472D02* Y425016D01* X392091D01* X385398Y421472D02* X392091D01* X338996Y363114D02* X345492D01* X338996Y359374D02* X345492D01* Y363114D01* X338996Y359374D02* Y363114D01* X349496Y375374D02* X355992D01* X349496Y379114D02* X355992D01* X349496Y375374D02* Y379114D01* X355992Y375374D02* Y379114D01* X338996Y375374D02* X345492D01* X338996Y379114D02* X345492D01* X338996Y375374D02* Y379114D01* X345492Y375374D02* Y379114D01* X359996Y330874D02* X366492D01* X359996Y334614D02* X366492D01* X359996Y330874D02* Y334614D01* X366492Y330874D02* Y334614D01* X377898Y335516D02* X384590D01* X377898Y331972D02* X384590D01* Y335516D01* X377898Y331972D02* Y335516D01* X377398Y337472D02* X384090D01* X377398Y341016D02* X384090D01* X377398Y337472D02* Y341016D01* X384090Y337472D02* Y341016D01* X366398Y350016D02* X373091D01* X366398Y346472D02* X373091D01* Y350016D01* X366398Y346472D02* Y350016D01* X352898Y408473D02* X359590D01* X352898Y412016D02* X359590D01* Y408473D02* Y412016D01* X352898Y408473D02* Y412016D01* X339547Y359669D02* Y362819D01* X345846Y359669D02* Y362819D01* X339547D02* X345846D01* X339547Y359669D02* X345846D01* X339101Y366242D02* Y378446D01* X346187Y366242D02* Y378446D01* X339101D02* X346187D01* X339101Y366242D02* X346187D01* X432250Y401791D02* Y413209D01* X425950Y401791D02* Y413209D01* Y401791D02* X432250D01* X425950Y413209D02* X432250D01* X415730Y404252D02* Y410748D01* X419470Y404252D02* Y410748D01* X415730Y404252D02* X419470D01* X415730Y410748D02* X419470D01* Y415252D02* Y421748D01* X415730Y415252D02* Y421748D01* X419470D01* X415730Y415252D02* X419470D01* X348803Y335425D02* Y338575D01* X355102Y335425D02* Y338575D01* X348803D02* X355102D01* X348803Y335425D02* X355102D01* X416811Y322228D02* X423504D01* X416811Y325772D02* X423504D01* Y322228D02* Y325772D01* X416811Y322228D02* Y325772D01* Y332228D02* X423504D01* X416811Y335772D02* X423504D01* Y332228D02* Y335772D01* X416811Y332228D02* Y335772D01* X384900Y366087D02* X404387Y346600D01* X365413Y346600D02* X384900Y327113D01* X365413Y346600D02* X384900Y366087D01* Y327113D02* X404387Y346600D01* X324648Y412289D02* X337640D01* X324648Y405399D02* X337640D01* X324648D02* Y412289D01* X337640Y405399D02* Y412289D01* X324548Y431989D02* X337540D01* X324548Y425099D02* X337540D01* X324548D02* Y431989D01* X337540Y425099D02* Y431989D01* X352486Y436583D02* X370202D01* X352486Y416505D02* X370202D01* X352486D02* Y436583D01* X370202Y416505D02* Y436583D01* X360260Y380488D02* X372228D01* X360260Y386000D02* X372228D01* Y380488D02* Y386000D01* X360260Y380488D02* Y386000D01* X431291Y346602D02* X437197D01* X431291Y358886D02* X437197D01* Y346602D02* Y358886D01* X431291Y346602D02* Y358886D01* X430791Y364102D02* X436697D01* X430791Y376386D02* X436697D01* Y364102D02* Y376386D01* X430791Y364102D02* Y376386D01* X431291Y380102D02* X437197D01* X431291Y392386D02* X437197D01* Y380102D02* Y392386D01* X431291Y380102D02* Y392386D01* X440472Y430091D02* X444016D01* X440472Y423398D02* X444016D01* X440472D02* Y430091D01* X444016Y423398D02* Y430091D01* X427374Y382996D02* X431114D01* X427374Y389492D02* X431114D01* Y382996D02* Y389492D01* X427374Y382996D02* Y389492D01* X436874Y385496D02* X440614D01* X436874Y391992D02* X440614D01* Y385496D02* Y391992D01* X436874Y385496D02* Y391992D01* X427874Y349496D02* X431614D01* X427874Y355992D02* X431614D01* Y349496D02* Y355992D01* X427874Y349496D02* Y355992D01* X437374Y351996D02* X441114D01* X437374Y358492D02* X441114D01* Y351996D02* Y358492D01* X437374Y351996D02* Y358492D01* X436874Y369496D02* X440614D01* X436874Y375992D02* X440614D01* Y369496D02* Y375992D01* X436874Y369496D02* Y375992D01* X427374Y366496D02* X431114D01* X427374Y372992D02* X431114D01* Y366496D02* Y372992D01* X427374Y366496D02* Y372992D01* X417972Y375091D02* X421516D01* X417972Y368398D02* X421516D01* X417972D02* Y375091D01* X421516Y368398D02* Y375091D01* X378705Y378933D02* X398783D01* X378705Y396650D02* X398783D01* Y378933D02* Y396650D01* X378705Y378933D02* Y396650D01* M02* ================================================ FILE: hardware/panel.GM15 ================================================ G04 Layer_Color=32768* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD118C,0.00394*% %ADD119C,0.00197*% D118* X213744Y171472D02* Y175016D01* X211972Y173244D02* X215516D01* X209118Y171275D02* X218370D01* X209118Y175213D02* X218370D01* X209118Y171275D02* Y175213D01* X218370Y171275D02* Y175213D01* X256972Y229244D02* X260516D01* X258744Y227472D02* Y231016D01* X260713Y224618D02* Y233870D01* X256776Y224618D02* Y233870D01* Y224618D02* X260713D01* X256776Y233870D02* X260713D01* X251972Y229744D02* X255516D01* X253744Y227972D02* Y231516D01* X255713Y225118D02* Y234370D01* X251776Y225118D02* Y234370D01* Y225118D02* X255713D01* X251776Y234370D02* X255713D01* X236972Y227744D02* X240516D01* X238744Y225972D02* Y229516D01* X236775Y223118D02* Y232370D01* X240713Y223118D02* Y232370D01* X236775D02* X240713D01* X236775Y223118D02* X240713D01* X242972Y227244D02* X246516D01* X244744Y225472D02* Y229016D01* X242775Y222618D02* Y231870D01* X246713Y222618D02* Y231870D01* X242775D02* X246713D01* X242775Y222618D02* X246713D01* X172244Y155374D02* Y159114D01* X170374Y157244D02* X174114D01* X167618Y155079D02* X176870D01* X167618Y159409D02* X176870D01* X167618Y155079D02* Y159409D01* X176870Y155079D02* Y159409D01* X210244Y159972D02* Y163516D01* X208473Y161744D02* X212016D01* X205618Y159775D02* X214870D01* X205618Y163712D02* X214870D01* X205618Y159775D02* Y163712D01* X214870Y159775D02* Y163712D01* X210244Y154972D02* Y158516D01* X208473Y156744D02* X212016D01* X205618Y154775D02* X214870D01* X205618Y158712D02* X214870D01* X205618Y154775D02* Y158712D01* X214870Y154775D02* Y158712D01* X186244Y191472D02* Y195016D01* X184472Y193244D02* X188016D01* X181618Y195213D02* X190870D01* X181618Y191275D02* X190870D01* Y195213D01* X181618Y191275D02* Y195213D01* X210744Y225472D02* Y229016D01* X208972Y227244D02* X212516D01* X206118Y229213D02* X215370D01* X206118Y225275D02* X215370D01* Y229213D01* X206118Y225275D02* Y229213D01* X226870Y235079D02* Y239409D01* X217618Y235079D02* Y239409D01* X226870D01* X217618Y235079D02* X226870D01* X220374Y237244D02* X224114D01* X222244Y235374D02* Y239114D01* X213370Y235276D02* Y239213D01* X204118Y235276D02* Y239213D01* X213370D01* X204118Y235276D02* X213370D01* X206972Y237244D02* X210516D01* X208744Y235472D02* Y239016D01* X226870Y241079D02* Y245409D01* X217618Y241079D02* Y245409D01* X226870D01* X217618Y241079D02* X226870D01* X220374Y243244D02* X224114D01* X222244Y241374D02* Y245114D01* X213370Y241276D02* Y245213D01* X204118Y241276D02* Y245213D01* X213370D01* X204118Y241276D02* X213370D01* X206972Y243244D02* X210516D01* X208744Y241472D02* Y245016D01* X162244Y179374D02* Y183114D01* X160374Y181244D02* X164114D01* X157618Y183409D02* X166870D01* X157618Y179079D02* X166870D01* Y183409D01* X157618Y179079D02* Y183409D01* X172744Y195374D02* Y199114D01* X170874Y197244D02* X174614D01* X168118Y195079D02* X177370D01* X168118Y199410D02* X177370D01* X168118Y195079D02* Y199410D01* X177370Y195079D02* Y199410D01* X162244Y195374D02* Y199114D01* X160374Y197244D02* X164114D01* X157618Y195079D02* X166870D01* X157618Y199410D02* X166870D01* X157618Y195079D02* Y199410D01* X166870Y195079D02* Y199410D01* X183244Y150874D02* Y154614D01* X181374Y152744D02* X185114D01* X178618Y150579D02* X187870D01* X178618Y154910D02* X187870D01* X178618Y150579D02* Y154910D01* X187870Y150579D02* Y154910D01* X201244Y151972D02* Y155516D01* X199472Y153744D02* X203016D01* X196618Y155713D02* X205870D01* X196618Y151775D02* X205870D01* Y155713D01* X196618Y151775D02* Y155713D01* X200744Y157472D02* Y161016D01* X198972Y159244D02* X202516D01* X196118Y157275D02* X205370D01* X196118Y161212D02* X205370D01* X196118Y157275D02* Y161212D01* X205370Y157275D02* Y161212D01* X189744Y166472D02* Y170016D01* X187973Y168244D02* X191516D01* X185118Y170213D02* X194370D01* X185118Y166276D02* X194370D01* Y170213D01* X185118Y166276D02* Y170213D01* X176244Y228473D02* Y232016D01* X174472Y230244D02* X178016D01* X171618Y228276D02* X180870D01* X171618Y232213D02* X180870D01* Y228276D02* Y232213D01* X171618Y228276D02* Y232213D01* X158071Y179275D02* Y183213D01* X167323Y179275D02* Y183213D01* X158071D02* X167323D01* X158071Y179275D02* X167323D01* X161122Y181244D02* X164272D01* X162697Y179669D02* Y182819D01* X153392Y184273D02* Y200415D01* X171896Y184273D02* Y200415D01* X153392D02* X171896D01* X153392Y184273D02* X171896D01* X160676Y192344D02* X164613D01* X162644Y190376D02* Y194313D01* X255990Y221398D02* Y233602D01* X242210Y221398D02* Y233602D01* Y221398D02* X255990D01* X242210Y233602D02* X255990D01* X247131Y227500D02* X251068D01* X249100Y225531D02* Y229468D01* X235730Y227500D02* X239470D01* X237600Y225630D02* Y229370D01* X235435Y222874D02* Y232126D01* X239765Y222874D02* Y232126D01* X235435Y222874D02* X239765D01* X235435Y232126D02* X239765D01* X235730Y238500D02* X239470D01* X237600Y236630D02* Y240370D01* X239765Y233874D02* Y243126D01* X235435Y233874D02* Y243126D01* X239765D01* X235435Y233874D02* X239765D01* X167327Y155031D02* Y158969D01* X176579Y155031D02* Y158969D01* X167327D02* X176579D01* X167327Y155031D02* X176579D01* X170378Y157000D02* X173528D01* X171953Y155425D02* Y158575D01* X240157Y142228D02* Y145772D01* X238386Y144000D02* X241929D01* X235531Y142031D02* X244783D01* X235531Y145969D02* X244783D01* Y142031D02* Y145969D01* X235531Y142031D02* Y145969D01* X240157Y152228D02* Y155772D01* X238386Y154000D02* X241929D01* X235531Y152031D02* X244783D01* X235531Y155969D02* X244783D01* Y152031D02* Y155969D01* X235531Y152031D02* Y155969D01* X203508Y165208D02* X206292Y167992D01* X203508D02* X206292Y165208D01* X151144Y226876D02* Y230813D01* X149176Y228844D02* X153113D01* X143270Y232584D02* X159018D01* X143270Y225104D02* X159018D01* X143270D02* Y232584D01* X159018Y225104D02* Y232584D01* X151044Y246576D02* Y250513D01* X149076Y248544D02* X153013D01* X143170Y252284D02* X158918D01* X143170Y244804D02* X158918D01* X143170D02* Y252284D01* X158918Y244804D02* Y252284D01* X181344Y244576D02* Y248513D01* X179376Y246544D02* X183313D01* X179276Y195567D02* X193213D01* X179276Y210921D02* X193213D01* Y195567D02* Y210921D01* X179276Y195567D02* Y210921D01* X186244Y201276D02* Y205213D01* X184276Y203244D02* X188213D01* X254244Y170776D02* Y174713D01* X252276Y172744D02* X256213D01* X253744Y188276D02* Y192213D01* X251776Y190244D02* X255713D01* X254244Y204276D02* Y208213D01* X252276Y206244D02* X256213D01* X260276Y251370D02* X264213D01* X260276Y242118D02* X264213D01* X260276D02* Y251370D01* X264213Y242118D02* Y251370D01* X262244Y244972D02* Y248516D01* X260472Y246744D02* X264016D01* X247079Y201618D02* X251409D01* X247079Y210870D02* X251409D01* Y201618D02* Y210870D01* X247079Y201618D02* Y210870D01* X249244Y204374D02* Y208114D01* X247374Y206244D02* X251114D01* X256579Y204118D02* X260909D01* X256579Y213370D02* X260909D01* Y204118D02* Y213370D01* X256579Y204118D02* Y213370D01* X258744Y206874D02* Y210614D01* X256874Y208744D02* X260614D01* X247579Y168118D02* X251909D01* X247579Y177370D02* X251909D01* Y168118D02* Y177370D01* X247579Y168118D02* Y177370D01* X249744Y170874D02* Y174614D01* X247874Y172744D02* X251614D01* X257079Y170618D02* X261409D01* X257079Y179870D02* X261409D01* Y170618D02* Y179870D01* X257079Y170618D02* Y179870D01* X259244Y173374D02* Y177114D01* X257374Y175244D02* X261114D01* X256579Y188118D02* X260909D01* X256579Y197370D02* X260909D01* Y188118D02* Y197370D01* X256579Y188118D02* Y197370D01* X258744Y190874D02* Y194614D01* X256874Y192744D02* X260614D01* X247079Y185118D02* X251409D01* X247079Y194370D02* X251409D01* Y185118D02* Y194370D01* X247079Y185118D02* Y194370D01* X249244Y187874D02* Y191614D01* X247374Y189744D02* X251114D01* X237776Y196370D02* X241713D01* X237776Y187118D02* X241713D01* X237776D02* Y196370D01* X241713Y187118D02* Y196370D01* X239744Y189972D02* Y193516D01* X237972Y191744D02* X241516D01* X208744Y205823D02* Y209760D01* X206776Y207791D02* X210713D01* X393744Y171472D02* Y175016D01* X391972Y173244D02* X395516D01* X389118Y171275D02* X398370D01* X389118Y175213D02* X398370D01* X389118Y171275D02* Y175213D01* X398370Y171275D02* Y175213D01* X436972Y229244D02* X440516D01* X438744Y227472D02* Y231016D01* X440713Y224618D02* Y233870D01* X436776Y224618D02* Y233870D01* Y224618D02* X440713D01* X436776Y233870D02* X440713D01* X431972Y229744D02* X435516D01* X433744Y227972D02* Y231516D01* X435713Y225118D02* Y234370D01* X431776Y225118D02* Y234370D01* Y225118D02* X435713D01* X431776Y234370D02* X435713D01* X416972Y227744D02* X420516D01* X418744Y225972D02* Y229516D01* X416775Y223118D02* Y232370D01* X420713Y223118D02* Y232370D01* X416775D02* X420713D01* X416775Y223118D02* X420713D01* X422972Y227244D02* X426516D01* X424744Y225472D02* Y229016D01* X422775Y222618D02* Y231870D01* X426713Y222618D02* Y231870D01* X422775D02* X426713D01* X422775Y222618D02* X426713D01* X352244Y155374D02* Y159114D01* X350374Y157244D02* X354114D01* X347618Y155079D02* X356870D01* X347618Y159409D02* X356870D01* X347618Y155079D02* Y159409D01* X356870Y155079D02* Y159409D01* X390244Y159972D02* Y163516D01* X388473Y161744D02* X392016D01* X385618Y159775D02* X394870D01* X385618Y163712D02* X394870D01* X385618Y159775D02* Y163712D01* X394870Y159775D02* Y163712D01* X390244Y154972D02* Y158516D01* X388473Y156744D02* X392016D01* X385618Y154775D02* X394870D01* X385618Y158712D02* X394870D01* X385618Y154775D02* Y158712D01* X394870Y154775D02* Y158712D01* X366244Y191472D02* Y195016D01* X364472Y193244D02* X368016D01* X361618Y195213D02* X370870D01* X361618Y191275D02* X370870D01* Y195213D01* X361618Y191275D02* Y195213D01* X390744Y225472D02* Y229016D01* X388972Y227244D02* X392516D01* X386118Y229213D02* X395370D01* X386118Y225275D02* X395370D01* Y229213D01* X386118Y225275D02* Y229213D01* X406870Y235079D02* Y239409D01* X397618Y235079D02* Y239409D01* X406870D01* X397618Y235079D02* X406870D01* X400374Y237244D02* X404114D01* X402244Y235374D02* Y239114D01* X393370Y235276D02* Y239213D01* X384118Y235276D02* Y239213D01* X393370D01* X384118Y235276D02* X393370D01* X386972Y237244D02* X390516D01* X388744Y235472D02* Y239016D01* X406870Y241079D02* Y245409D01* X397618Y241079D02* Y245409D01* X406870D01* X397618Y241079D02* X406870D01* X400374Y243244D02* X404114D01* X402244Y241374D02* Y245114D01* X393370Y241276D02* Y245213D01* X384118Y241276D02* Y245213D01* X393370D01* X384118Y241276D02* X393370D01* X386972Y243244D02* X390516D01* X388744Y241472D02* Y245016D01* X342244Y179374D02* Y183114D01* X340374Y181244D02* X344114D01* X337618Y183409D02* X346870D01* X337618Y179079D02* X346870D01* Y183409D01* X337618Y179079D02* Y183409D01* X352744Y195374D02* Y199114D01* X350874Y197244D02* X354614D01* X348118Y195079D02* X357370D01* X348118Y199410D02* X357370D01* X348118Y195079D02* Y199410D01* X357370Y195079D02* Y199410D01* X342244Y195374D02* Y199114D01* X340374Y197244D02* X344114D01* X337618Y195079D02* X346870D01* X337618Y199410D02* X346870D01* X337618Y195079D02* Y199410D01* X346870Y195079D02* Y199410D01* X363244Y150874D02* Y154614D01* X361374Y152744D02* X365114D01* X358618Y150579D02* X367870D01* X358618Y154910D02* X367870D01* X358618Y150579D02* Y154910D01* X367870Y150579D02* Y154910D01* X381244Y151972D02* Y155516D01* X379472Y153744D02* X383016D01* X376618Y155713D02* X385870D01* X376618Y151775D02* X385870D01* Y155713D01* X376618Y151775D02* Y155713D01* X380744Y157472D02* Y161016D01* X378972Y159244D02* X382516D01* X376118Y157275D02* X385370D01* X376118Y161212D02* X385370D01* X376118Y157275D02* Y161212D01* X385370Y157275D02* Y161212D01* X369744Y166472D02* Y170016D01* X367973Y168244D02* X371516D01* X365118Y170213D02* X374370D01* X365118Y166276D02* X374370D01* Y170213D01* X365118Y166276D02* Y170213D01* X356244Y228473D02* Y232016D01* X354472Y230244D02* X358016D01* X351618Y228276D02* X360870D01* X351618Y232213D02* X360870D01* Y228276D02* Y232213D01* X351618Y228276D02* Y232213D01* X338071Y179275D02* Y183213D01* X347323Y179275D02* Y183213D01* X338071D02* X347323D01* X338071Y179275D02* X347323D01* X341122Y181244D02* X344272D01* X342697Y179669D02* Y182819D01* X333392Y184273D02* Y200415D01* X351896Y184273D02* Y200415D01* X333392D02* X351896D01* X333392Y184273D02* X351896D01* X340676Y192344D02* X344613D01* X342644Y190376D02* Y194313D01* X435990Y221398D02* Y233602D01* X422210Y221398D02* Y233602D01* Y221398D02* X435990D01* X422210Y233602D02* X435990D01* X427131Y227500D02* X431068D01* X429100Y225531D02* Y229468D01* X415730Y227500D02* X419470D01* X417600Y225630D02* Y229370D01* X415435Y222874D02* Y232126D01* X419765Y222874D02* Y232126D01* X415435Y222874D02* X419765D01* X415435Y232126D02* X419765D01* X415730Y238500D02* X419470D01* X417600Y236630D02* Y240370D01* X419765Y233874D02* Y243126D01* X415435Y233874D02* Y243126D01* X419765D01* X415435Y233874D02* X419765D01* X347327Y155031D02* Y158969D01* X356579Y155031D02* Y158969D01* X347327D02* X356579D01* X347327Y155031D02* X356579D01* X350378Y157000D02* X353528D01* X351953Y155425D02* Y158575D01* X420157Y142228D02* Y145772D01* X418386Y144000D02* X421929D01* X415531Y142031D02* X424783D01* X415531Y145969D02* X424783D01* Y142031D02* Y145969D01* X415531Y142031D02* Y145969D01* X420157Y152228D02* Y155772D01* X418386Y154000D02* X421929D01* X415531Y152031D02* X424783D01* X415531Y155969D02* X424783D01* Y152031D02* Y155969D01* X415531Y152031D02* Y155969D01* X383508Y165208D02* X386292Y167992D01* X383508D02* X386292Y165208D01* X331144Y226876D02* Y230813D01* X329176Y228844D02* X333113D01* X323270Y232584D02* X339018D01* X323270Y225104D02* X339018D01* X323270D02* Y232584D01* X339018Y225104D02* Y232584D01* X331044Y246576D02* Y250513D01* X329076Y248544D02* X333013D01* X323170Y252284D02* X338918D01* X323170Y244804D02* X338918D01* X323170D02* Y252284D01* X338918Y244804D02* Y252284D01* X361344Y244576D02* Y248513D01* X359376Y246544D02* X363313D01* X359276Y195567D02* X373213D01* X359276Y210921D02* X373213D01* Y195567D02* Y210921D01* X359276Y195567D02* Y210921D01* X366244Y201276D02* Y205213D01* X364276Y203244D02* X368213D01* X434244Y170776D02* Y174713D01* X432276Y172744D02* X436213D01* X433744Y188276D02* Y192213D01* X431776Y190244D02* X435713D01* X434244Y204276D02* Y208213D01* X432276Y206244D02* X436213D01* X440276Y251370D02* X444213D01* X440276Y242118D02* X444213D01* X440276D02* Y251370D01* X444213Y242118D02* Y251370D01* X442244Y244972D02* Y248516D01* X440472Y246744D02* X444016D01* X427079Y201618D02* X431409D01* X427079Y210870D02* X431409D01* Y201618D02* Y210870D01* X427079Y201618D02* Y210870D01* X429244Y204374D02* Y208114D01* X427374Y206244D02* X431114D01* X436579Y204118D02* X440909D01* X436579Y213370D02* X440909D01* Y204118D02* Y213370D01* X436579Y204118D02* Y213370D01* X438744Y206874D02* Y210614D01* X436874Y208744D02* X440614D01* X427579Y168118D02* X431909D01* X427579Y177370D02* X431909D01* Y168118D02* Y177370D01* X427579Y168118D02* Y177370D01* X429744Y170874D02* Y174614D01* X427874Y172744D02* X431614D01* X437079Y170618D02* X441409D01* X437079Y179870D02* X441409D01* Y170618D02* Y179870D01* X437079Y170618D02* Y179870D01* X439244Y173374D02* Y177114D01* X437374Y175244D02* X441114D01* X436579Y188118D02* X440909D01* X436579Y197370D02* X440909D01* Y188118D02* Y197370D01* X436579Y188118D02* Y197370D01* X438744Y190874D02* Y194614D01* X436874Y192744D02* X440614D01* X427079Y185118D02* X431409D01* X427079Y194370D02* X431409D01* Y185118D02* Y194370D01* X427079Y185118D02* Y194370D01* X429244Y187874D02* Y191614D01* X427374Y189744D02* X431114D01* X417776Y196370D02* X421713D01* X417776Y187118D02* X421713D01* X417776D02* Y196370D01* X421713Y187118D02* Y196370D01* X419744Y189972D02* Y193516D01* X417972Y191744D02* X421516D01* X388744Y205823D02* Y209760D01* X386776Y207791D02* X390713D01* X213744Y351472D02* Y355016D01* X211972Y353244D02* X215516D01* X209118Y351275D02* X218370D01* X209118Y355213D02* X218370D01* X209118Y351275D02* Y355213D01* X218370Y351275D02* Y355213D01* X256972Y409244D02* X260516D01* X258744Y407472D02* Y411016D01* X260713Y404618D02* Y413870D01* X256776Y404618D02* Y413870D01* Y404618D02* X260713D01* X256776Y413870D02* X260713D01* X251972Y409744D02* X255516D01* X253744Y407972D02* Y411516D01* X255713Y405118D02* Y414370D01* X251776Y405118D02* Y414370D01* Y405118D02* X255713D01* X251776Y414370D02* X255713D01* X236972Y407744D02* X240516D01* X238744Y405972D02* Y409516D01* X236775Y403118D02* Y412370D01* X240713Y403118D02* Y412370D01* X236775D02* X240713D01* X236775Y403118D02* X240713D01* X242972Y407244D02* X246516D01* X244744Y405472D02* Y409016D01* X242775Y402618D02* Y411870D01* X246713Y402618D02* Y411870D01* X242775D02* X246713D01* X242775Y402618D02* X246713D01* X172244Y335374D02* Y339114D01* X170374Y337244D02* X174114D01* X167618Y335079D02* X176870D01* X167618Y339409D02* X176870D01* X167618Y335079D02* Y339409D01* X176870Y335079D02* Y339409D01* X210244Y339972D02* Y343516D01* X208473Y341744D02* X212016D01* X205618Y339775D02* X214870D01* X205618Y343712D02* X214870D01* X205618Y339775D02* Y343712D01* X214870Y339775D02* Y343712D01* X210244Y334972D02* Y338516D01* X208473Y336744D02* X212016D01* X205618Y334775D02* X214870D01* X205618Y338712D02* X214870D01* X205618Y334775D02* Y338712D01* X214870Y334775D02* Y338712D01* X186244Y371472D02* Y375016D01* X184472Y373244D02* X188016D01* X181618Y375213D02* X190870D01* X181618Y371275D02* X190870D01* Y375213D01* X181618Y371275D02* Y375213D01* X210744Y405472D02* Y409016D01* X208972Y407244D02* X212516D01* X206118Y409213D02* X215370D01* X206118Y405275D02* X215370D01* Y409213D01* X206118Y405275D02* Y409213D01* X226870Y415079D02* Y419409D01* X217618Y415079D02* Y419409D01* X226870D01* X217618Y415079D02* X226870D01* X220374Y417244D02* X224114D01* X222244Y415374D02* Y419114D01* X213370Y415276D02* Y419213D01* X204118Y415276D02* Y419213D01* X213370D01* X204118Y415276D02* X213370D01* X206972Y417244D02* X210516D01* X208744Y415472D02* Y419016D01* X226870Y421079D02* Y425409D01* X217618Y421079D02* Y425409D01* X226870D01* X217618Y421079D02* X226870D01* X220374Y423244D02* X224114D01* X222244Y421374D02* Y425114D01* X213370Y421276D02* Y425213D01* X204118Y421276D02* Y425213D01* X213370D01* X204118Y421276D02* X213370D01* X206972Y423244D02* X210516D01* X208744Y421472D02* Y425016D01* X162244Y359374D02* Y363114D01* X160374Y361244D02* X164114D01* X157618Y363409D02* X166870D01* X157618Y359079D02* X166870D01* Y363409D01* X157618Y359079D02* Y363409D01* X172744Y375374D02* Y379114D01* X170874Y377244D02* X174614D01* X168118Y375079D02* X177370D01* X168118Y379410D02* X177370D01* X168118Y375079D02* Y379410D01* X177370Y375079D02* Y379410D01* X162244Y375374D02* Y379114D01* X160374Y377244D02* X164114D01* X157618Y375079D02* X166870D01* X157618Y379410D02* X166870D01* X157618Y375079D02* Y379410D01* X166870Y375079D02* Y379410D01* X183244Y330874D02* Y334614D01* X181374Y332744D02* X185114D01* X178618Y330579D02* X187870D01* X178618Y334910D02* X187870D01* X178618Y330579D02* Y334910D01* X187870Y330579D02* Y334910D01* X201244Y331972D02* Y335516D01* X199472Y333744D02* X203016D01* X196618Y335713D02* X205870D01* X196618Y331775D02* X205870D01* Y335713D01* X196618Y331775D02* Y335713D01* X200744Y337472D02* Y341016D01* X198972Y339244D02* X202516D01* X196118Y337275D02* X205370D01* X196118Y341212D02* X205370D01* X196118Y337275D02* Y341212D01* X205370Y337275D02* Y341212D01* X189744Y346472D02* Y350016D01* X187973Y348244D02* X191516D01* X185118Y350213D02* X194370D01* X185118Y346276D02* X194370D01* Y350213D01* X185118Y346276D02* Y350213D01* X176244Y408473D02* Y412016D01* X174472Y410244D02* X178016D01* X171618Y408276D02* X180870D01* X171618Y412213D02* X180870D01* Y408276D02* Y412213D01* X171618Y408276D02* Y412213D01* X158071Y359275D02* Y363213D01* X167323Y359275D02* Y363213D01* X158071D02* X167323D01* X158071Y359275D02* X167323D01* X161122Y361244D02* X164272D01* X162697Y359669D02* Y362819D01* X153392Y364273D02* Y380415D01* X171896Y364273D02* Y380415D01* X153392D02* X171896D01* X153392Y364273D02* X171896D01* X160676Y372344D02* X164613D01* X162644Y370376D02* Y374313D01* X255990Y401398D02* Y413602D01* X242210Y401398D02* Y413602D01* Y401398D02* X255990D01* X242210Y413602D02* X255990D01* X247131Y407500D02* X251068D01* X249100Y405531D02* Y409468D01* X235730Y407500D02* X239470D01* X237600Y405630D02* Y409370D01* X235435Y402874D02* Y412126D01* X239765Y402874D02* Y412126D01* X235435Y402874D02* X239765D01* X235435Y412126D02* X239765D01* X235730Y418500D02* X239470D01* X237600Y416630D02* Y420370D01* X239765Y413874D02* Y423126D01* X235435Y413874D02* Y423126D01* X239765D01* X235435Y413874D02* X239765D01* X167327Y335031D02* Y338969D01* X176579Y335031D02* Y338969D01* X167327D02* X176579D01* X167327Y335031D02* X176579D01* X170378Y337000D02* X173528D01* X171953Y335425D02* Y338575D01* X240157Y322228D02* Y325772D01* X238386Y324000D02* X241929D01* X235531Y322031D02* X244783D01* X235531Y325969D02* X244783D01* Y322031D02* Y325969D01* X235531Y322031D02* Y325969D01* X240157Y332228D02* Y335772D01* X238386Y334000D02* X241929D01* X235531Y332031D02* X244783D01* X235531Y335969D02* X244783D01* Y332031D02* Y335969D01* X235531Y332031D02* Y335969D01* X203508Y345208D02* X206292Y347992D01* X203508D02* X206292Y345208D01* X151144Y406876D02* Y410813D01* X149176Y408844D02* X153113D01* X143270Y412584D02* X159018D01* X143270Y405104D02* X159018D01* X143270D02* Y412584D01* X159018Y405104D02* Y412584D01* X151044Y426576D02* Y430513D01* X149076Y428544D02* X153013D01* X143170Y432284D02* X158918D01* X143170Y424804D02* X158918D01* X143170D02* Y432284D01* X158918Y424804D02* Y432284D01* X181344Y424576D02* Y428513D01* X179376Y426544D02* X183313D01* X179276Y375567D02* X193213D01* X179276Y390921D02* X193213D01* Y375567D02* Y390921D01* X179276Y375567D02* Y390921D01* X186244Y381276D02* Y385213D01* X184276Y383244D02* X188213D01* X254244Y350776D02* Y354713D01* X252276Y352744D02* X256213D01* X253744Y368276D02* Y372213D01* X251776Y370244D02* X255713D01* X254244Y384276D02* Y388213D01* X252276Y386244D02* X256213D01* X260276Y431370D02* X264213D01* X260276Y422118D02* X264213D01* X260276D02* Y431370D01* X264213Y422118D02* Y431370D01* X262244Y424972D02* Y428516D01* X260472Y426744D02* X264016D01* X247079Y381618D02* X251409D01* X247079Y390870D02* X251409D01* Y381618D02* Y390870D01* X247079Y381618D02* Y390870D01* X249244Y384374D02* Y388114D01* X247374Y386244D02* X251114D01* X256579Y384118D02* X260909D01* X256579Y393370D02* X260909D01* Y384118D02* Y393370D01* X256579Y384118D02* Y393370D01* X258744Y386874D02* Y390614D01* X256874Y388744D02* X260614D01* X247579Y348118D02* X251909D01* X247579Y357370D02* X251909D01* Y348118D02* Y357370D01* X247579Y348118D02* Y357370D01* X249744Y350874D02* Y354614D01* X247874Y352744D02* X251614D01* X257079Y350618D02* X261409D01* X257079Y359870D02* X261409D01* Y350618D02* Y359870D01* X257079Y350618D02* Y359870D01* X259244Y353374D02* Y357114D01* X257374Y355244D02* X261114D01* X256579Y368118D02* X260909D01* X256579Y377370D02* X260909D01* Y368118D02* Y377370D01* X256579Y368118D02* Y377370D01* X258744Y370874D02* Y374614D01* X256874Y372744D02* X260614D01* X247079Y365118D02* X251409D01* X247079Y374370D02* X251409D01* Y365118D02* Y374370D01* X247079Y365118D02* Y374370D01* X249244Y367874D02* Y371614D01* X247374Y369744D02* X251114D01* X237776Y376370D02* X241713D01* X237776Y367118D02* X241713D01* X237776D02* Y376370D01* X241713Y367118D02* Y376370D01* X239744Y369972D02* Y373516D01* X237972Y371744D02* X241516D01* X208744Y385823D02* Y389760D01* X206776Y387791D02* X210713D01* X393744Y351472D02* Y355016D01* X391972Y353244D02* X395516D01* X389118Y351275D02* X398370D01* X389118Y355213D02* X398370D01* X389118Y351275D02* Y355213D01* X398370Y351275D02* Y355213D01* X436972Y409244D02* X440516D01* X438744Y407472D02* Y411016D01* X440713Y404618D02* Y413870D01* X436776Y404618D02* Y413870D01* Y404618D02* X440713D01* X436776Y413870D02* X440713D01* X431972Y409744D02* X435516D01* X433744Y407972D02* Y411516D01* X435713Y405118D02* Y414370D01* X431776Y405118D02* Y414370D01* Y405118D02* X435713D01* X431776Y414370D02* X435713D01* X416972Y407744D02* X420516D01* X418744Y405972D02* Y409516D01* X416775Y403118D02* Y412370D01* X420713Y403118D02* Y412370D01* X416775D02* X420713D01* X416775Y403118D02* X420713D01* X422972Y407244D02* X426516D01* X424744Y405472D02* Y409016D01* X422775Y402618D02* Y411870D01* X426713Y402618D02* Y411870D01* X422775D02* X426713D01* X422775Y402618D02* X426713D01* X352244Y335374D02* Y339114D01* X350374Y337244D02* X354114D01* X347618Y335079D02* X356870D01* X347618Y339409D02* X356870D01* X347618Y335079D02* Y339409D01* X356870Y335079D02* Y339409D01* X390244Y339972D02* Y343516D01* X388473Y341744D02* X392016D01* X385618Y339775D02* X394870D01* X385618Y343712D02* X394870D01* X385618Y339775D02* Y343712D01* X394870Y339775D02* Y343712D01* X390244Y334972D02* Y338516D01* X388473Y336744D02* X392016D01* X385618Y334775D02* X394870D01* X385618Y338712D02* X394870D01* X385618Y334775D02* Y338712D01* X394870Y334775D02* Y338712D01* X366244Y371472D02* Y375016D01* X364472Y373244D02* X368016D01* X361618Y375213D02* X370870D01* X361618Y371275D02* X370870D01* Y375213D01* X361618Y371275D02* Y375213D01* X390744Y405472D02* Y409016D01* X388972Y407244D02* X392516D01* X386118Y409213D02* X395370D01* X386118Y405275D02* X395370D01* Y409213D01* X386118Y405275D02* Y409213D01* X406870Y415079D02* Y419409D01* X397618Y415079D02* Y419409D01* X406870D01* X397618Y415079D02* X406870D01* X400374Y417244D02* X404114D01* X402244Y415374D02* Y419114D01* X393370Y415276D02* Y419213D01* X384118Y415276D02* Y419213D01* X393370D01* X384118Y415276D02* X393370D01* X386972Y417244D02* X390516D01* X388744Y415472D02* Y419016D01* X406870Y421079D02* Y425409D01* X397618Y421079D02* Y425409D01* X406870D01* X397618Y421079D02* X406870D01* X400374Y423244D02* X404114D01* X402244Y421374D02* Y425114D01* X393370Y421276D02* Y425213D01* X384118Y421276D02* Y425213D01* X393370D01* X384118Y421276D02* X393370D01* X386972Y423244D02* X390516D01* X388744Y421472D02* Y425016D01* X342244Y359374D02* Y363114D01* X340374Y361244D02* X344114D01* X337618Y363409D02* X346870D01* X337618Y359079D02* X346870D01* Y363409D01* X337618Y359079D02* Y363409D01* X352744Y375374D02* Y379114D01* X350874Y377244D02* X354614D01* X348118Y375079D02* X357370D01* X348118Y379410D02* X357370D01* X348118Y375079D02* Y379410D01* X357370Y375079D02* Y379410D01* X342244Y375374D02* Y379114D01* X340374Y377244D02* X344114D01* X337618Y375079D02* X346870D01* X337618Y379410D02* X346870D01* X337618Y375079D02* Y379410D01* X346870Y375079D02* Y379410D01* X363244Y330874D02* Y334614D01* X361374Y332744D02* X365114D01* X358618Y330579D02* X367870D01* X358618Y334910D02* X367870D01* X358618Y330579D02* Y334910D01* X367870Y330579D02* Y334910D01* X381244Y331972D02* Y335516D01* X379472Y333744D02* X383016D01* X376618Y335713D02* X385870D01* X376618Y331775D02* X385870D01* Y335713D01* X376618Y331775D02* Y335713D01* X380744Y337472D02* Y341016D01* X378972Y339244D02* X382516D01* X376118Y337275D02* X385370D01* X376118Y341212D02* X385370D01* X376118Y337275D02* Y341212D01* X385370Y337275D02* Y341212D01* X369744Y346472D02* Y350016D01* X367973Y348244D02* X371516D01* X365118Y350213D02* X374370D01* X365118Y346276D02* X374370D01* Y350213D01* X365118Y346276D02* Y350213D01* X356244Y408473D02* Y412016D01* X354472Y410244D02* X358016D01* X351618Y408276D02* X360870D01* X351618Y412213D02* X360870D01* Y408276D02* Y412213D01* X351618Y408276D02* Y412213D01* X338071Y359275D02* Y363213D01* X347323Y359275D02* Y363213D01* X338071D02* X347323D01* X338071Y359275D02* X347323D01* X341122Y361244D02* X344272D01* X342697Y359669D02* Y362819D01* X333392Y364273D02* Y380415D01* X351896Y364273D02* Y380415D01* X333392D02* X351896D01* X333392Y364273D02* X351896D01* X340676Y372344D02* X344613D01* X342644Y370376D02* Y374313D01* X435990Y401398D02* Y413602D01* X422210Y401398D02* Y413602D01* Y401398D02* X435990D01* X422210Y413602D02* X435990D01* X427131Y407500D02* X431068D01* X429100Y405531D02* Y409468D01* X415730Y407500D02* X419470D01* X417600Y405630D02* Y409370D01* X415435Y402874D02* Y412126D01* X419765Y402874D02* Y412126D01* X415435Y402874D02* X419765D01* X415435Y412126D02* X419765D01* X415730Y418500D02* X419470D01* X417600Y416630D02* Y420370D01* X419765Y413874D02* Y423126D01* X415435Y413874D02* Y423126D01* X419765D01* X415435Y413874D02* X419765D01* X347327Y335031D02* Y338969D01* X356579Y335031D02* Y338969D01* X347327D02* X356579D01* X347327Y335031D02* X356579D01* X350378Y337000D02* X353528D01* X351953Y335425D02* Y338575D01* X420157Y322228D02* Y325772D01* X418386Y324000D02* X421929D01* X415531Y322031D02* X424783D01* X415531Y325969D02* X424783D01* Y322031D02* Y325969D01* X415531Y322031D02* Y325969D01* X420157Y332228D02* Y335772D01* X418386Y334000D02* X421929D01* X415531Y332031D02* X424783D01* X415531Y335969D02* X424783D01* Y332031D02* Y335969D01* X415531Y332031D02* Y335969D01* X383508Y345208D02* X386292Y347992D01* X383508D02* X386292Y345208D01* X331144Y406876D02* Y410813D01* X329176Y408844D02* X333113D01* X323270Y412584D02* X339018D01* X323270Y405104D02* X339018D01* X323270D02* Y412584D01* X339018Y405104D02* Y412584D01* X331044Y426576D02* Y430513D01* X329076Y428544D02* X333013D01* X323170Y432284D02* X338918D01* X323170Y424804D02* X338918D01* X323170D02* Y432284D01* X338918Y424804D02* Y432284D01* X361344Y424576D02* Y428513D01* X359376Y426544D02* X363313D01* X359276Y375567D02* X373213D01* X359276Y390921D02* X373213D01* Y375567D02* Y390921D01* X359276Y375567D02* Y390921D01* X366244Y381276D02* Y385213D01* X364276Y383244D02* X368213D01* X434244Y350776D02* Y354713D01* X432276Y352744D02* X436213D01* X433744Y368276D02* Y372213D01* X431776Y370244D02* X435713D01* X434244Y384276D02* Y388213D01* X432276Y386244D02* X436213D01* X440276Y431370D02* X444213D01* X440276Y422118D02* X444213D01* X440276D02* Y431370D01* X444213Y422118D02* Y431370D01* X442244Y424972D02* Y428516D01* X440472Y426744D02* X444016D01* X427079Y381618D02* X431409D01* X427079Y390870D02* X431409D01* Y381618D02* Y390870D01* X427079Y381618D02* Y390870D01* X429244Y384374D02* Y388114D01* X427374Y386244D02* X431114D01* X436579Y384118D02* X440909D01* X436579Y393370D02* X440909D01* Y384118D02* Y393370D01* X436579Y384118D02* Y393370D01* X438744Y386874D02* Y390614D01* X436874Y388744D02* X440614D01* X427579Y348118D02* X431909D01* X427579Y357370D02* X431909D01* Y348118D02* Y357370D01* X427579Y348118D02* Y357370D01* X429744Y350874D02* Y354614D01* X427874Y352744D02* X431614D01* X437079Y350618D02* X441409D01* X437079Y359870D02* X441409D01* Y350618D02* Y359870D01* X437079Y350618D02* Y359870D01* X439244Y353374D02* Y357114D01* X437374Y355244D02* X441114D01* X436579Y368118D02* X440909D01* X436579Y377370D02* X440909D01* Y368118D02* Y377370D01* X436579Y368118D02* Y377370D01* X438744Y370874D02* Y374614D01* X436874Y372744D02* X440614D01* X427079Y365118D02* X431409D01* X427079Y374370D02* X431409D01* Y365118D02* Y374370D01* X427079Y365118D02* Y374370D01* X429244Y367874D02* Y371614D01* X427374Y369744D02* X431114D01* X417776Y376370D02* X421713D01* X417776Y367118D02* X421713D01* X417776D02* Y376370D01* X421713Y367118D02* Y376370D01* X419744Y369972D02* Y373516D01* X417972Y371744D02* X421516D01* X388744Y385823D02* Y389760D01* X386776Y387791D02* X390713D01* D119* X204900Y189289D02* X227589Y166600D01* X182211D02* X204900Y143911D01* X182211Y166600D02* X204900Y189289D01* Y143911D02* X227589Y166600D01* X165990Y257568D02* X196698D01* X165990Y235520D02* X196698D01* X165990D02* Y257568D01* X196698Y235520D02* Y257568D01* X246567Y165657D02* X261921D01* X246567Y179831D02* X261921D01* Y165657D02* Y179831D01* X246567Y165657D02* Y179831D01* X246067Y183157D02* X261421D01* X246067Y197331D02* X261421D01* Y183157D02* Y197331D01* X246067Y183157D02* Y197331D01* X246567Y199157D02* X261921D01* X246567Y213331D02* X261921D01* Y199157D02* Y213331D01* X246567Y199157D02* Y213331D01* X197720Y192536D02* X219768D01* X197720Y223047D02* X219768D01* Y192536D02* Y223047D01* X197720Y192536D02* Y223047D01* X384900Y189289D02* X407589Y166600D01* X362211D02* X384900Y143911D01* X362211Y166600D02* X384900Y189289D01* Y143911D02* X407589Y166600D01* X345990Y257568D02* X376698D01* X345990Y235520D02* X376698D01* X345990D02* Y257568D01* X376698Y235520D02* Y257568D01* X426567Y165657D02* X441921D01* X426567Y179831D02* X441921D01* Y165657D02* Y179831D01* X426567Y165657D02* Y179831D01* X426067Y183157D02* X441421D01* X426067Y197331D02* X441421D01* Y183157D02* Y197331D01* X426067Y183157D02* Y197331D01* X426567Y199157D02* X441921D01* X426567Y213331D02* X441921D01* Y199157D02* Y213331D01* X426567Y199157D02* Y213331D01* X377720Y192536D02* X399768D01* X377720Y223047D02* X399768D01* Y192536D02* Y223047D01* X377720Y192536D02* Y223047D01* X204900Y369289D02* X227589Y346600D01* X182211D02* X204900Y323911D01* X182211Y346600D02* X204900Y369289D01* Y323911D02* X227589Y346600D01* X165990Y437568D02* X196698D01* X165990Y415520D02* X196698D01* X165990D02* Y437568D01* X196698Y415520D02* Y437568D01* X246567Y345657D02* X261921D01* X246567Y359831D02* X261921D01* Y345657D02* Y359831D01* X246567Y345657D02* Y359831D01* X246067Y363157D02* X261421D01* X246067Y377331D02* X261421D01* Y363157D02* Y377331D01* X246067Y363157D02* Y377331D01* X246567Y379157D02* X261921D01* X246567Y393331D02* X261921D01* Y379157D02* Y393331D01* X246567Y379157D02* Y393331D01* X197720Y372536D02* X219768D01* X197720Y403047D02* X219768D01* Y372536D02* Y403047D01* X197720Y372536D02* Y403047D01* X384900Y369289D02* X407589Y346600D01* X362211D02* X384900Y323911D01* X362211Y346600D02* X384900Y369289D01* Y323911D02* X407589Y346600D01* X345990Y437568D02* X376698D01* X345990Y415520D02* X376698D01* X345990D02* Y437568D01* X376698Y415520D02* Y437568D01* X426567Y345657D02* X441921D01* X426567Y359831D02* X441921D01* Y345657D02* Y359831D01* X426567Y345657D02* Y359831D01* X426067Y363157D02* X441421D01* X426067Y377331D02* X441421D01* Y363157D02* Y377331D01* X426067Y363157D02* Y377331D01* X426567Y379157D02* X441921D01* X426567Y393331D02* X441921D01* Y379157D02* Y393331D01* X426567Y379157D02* Y393331D01* X377720Y372536D02* X399768D01* X377720Y403047D02* X399768D01* Y372536D02* Y403047D01* X377720Y372536D02* Y403047D01* M02* ================================================ FILE: hardware/panel.GM2 ================================================ G04 Layer_Color=8388736* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD68C,0.00500*% D68* X134044Y222344D02* G03* X134044Y222344I-2000J0D01* G01* Y232344D02* G03* X134044Y232344I-2000J0D01* G01* Y242344D02* G03* X134044Y242344I-2000J0D01* G01* Y252344D02* G03* X134044Y252344I-2000J0D01* G01* X237244Y252744D02* G03* X237244Y252744I-2000J0D01* G01* X227244D02* G03* X227244Y252744I-2000J0D01* G01* X217244D02* G03* X217244Y252744I-2000J0D01* G01* X207244D02* G03* X207244Y252744I-2000J0D01* G01* X314044Y222344D02* G03* X314044Y222344I-2000J0D01* G01* Y232344D02* G03* X314044Y232344I-2000J0D01* G01* Y242344D02* G03* X314044Y242344I-2000J0D01* G01* Y252344D02* G03* X314044Y252344I-2000J0D01* G01* X417244Y252744D02* G03* X417244Y252744I-2000J0D01* G01* X407244D02* G03* X407244Y252744I-2000J0D01* G01* X397244D02* G03* X397244Y252744I-2000J0D01* G01* X387244D02* G03* X387244Y252744I-2000J0D01* G01* X134044Y402344D02* G03* X134044Y402344I-2000J0D01* G01* Y412344D02* G03* X134044Y412344I-2000J0D01* G01* Y422344D02* G03* X134044Y422344I-2000J0D01* G01* Y432344D02* G03* X134044Y432344I-2000J0D01* G01* X237244Y432744D02* G03* X237244Y432744I-2000J0D01* G01* X227244D02* G03* X227244Y432744I-2000J0D01* G01* X217244D02* G03* X217244Y432744I-2000J0D01* G01* X207244D02* G03* X207244Y432744I-2000J0D01* G01* X314044Y402344D02* G03* X314044Y402344I-2000J0D01* G01* Y412344D02* G03* X314044Y412344I-2000J0D01* G01* Y422344D02* G03* X314044Y422344I-2000J0D01* G01* Y432344D02* G03* X314044Y432344I-2000J0D01* G01* X417244Y432744D02* G03* X417244Y432744I-2000J0D01* G01* X407244D02* G03* X407244Y432744I-2000J0D01* G01* X397244D02* G03* X397244Y432744I-2000J0D01* G01* X387244D02* G03* X387244Y432744I-2000J0D01* G01* M02* ================================================ FILE: hardware/panel.GM3 ================================================ G04 Layer_Color=12566272* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD40C,0.02000*% %ADD117C,0.04724*% D40* X160800Y531193D02* Y511200D01* X170797D01* X174129Y514532D01* Y517865D01* X170797Y521197D01* X160800D01* X170797D01* X174129Y524529D01* Y527861D01* X170797Y531193D01* X160800D01* X184126Y511200D02* X190790D01* X194123Y514532D01* Y521197D01* X190790Y524529D01* X184126D01* X180793Y521197D01* Y514532D01* X184126Y511200D01* X204119Y524529D02* X210784D01* X214116Y521197D01* Y511200D01* X204119D01* X200787Y514532D01* X204119Y517865D01* X214116D01* X220781Y524529D02* Y511200D01* Y517865D01* X224113Y521197D01* X227445Y524529D01* X230777D01* X254103Y531193D02* Y511200D01* X244106D01* X240774Y514532D01* Y521197D01* X244106Y524529D01* X254103D01* X290758Y531193D02* X284093D01* X280761Y527861D01* Y514532D01* X284093Y511200D01* X290758D01* X294090Y514532D01* Y527861D01* X290758Y531193D01* X300755Y524529D02* Y514532D01* X304087Y511200D01* X314084D01* Y524529D01* X324081Y527861D02* Y524529D01* X320748D01* X327413D01* X324081D01* Y514532D01* X327413Y511200D01* X337410D02* X344074D01* X340742D01* Y531193D01* X337410D01* X354071Y511200D02* X360735D01* X357403D01* Y524529D01* X354071D01* X370732Y511200D02* Y524529D01* X380729D01* X384061Y521197D01* Y511200D01* X400723D02* X394058D01* X390726Y514532D01* Y521197D01* X394058Y524529D01* X400723D01* X404055Y521197D01* Y517865D01* X390726D01* D117* X357900Y124200D02* X358000Y113200D01* X358600Y112600D01* X418000D01* Y124200D01* X357900D02* X418000D01* X361600Y290100D02* X361900Y304300D01* X361600Y290100D02* X405600D01* X405900Y289800D01* X406000Y289900D01* Y304500D01* X362100D02* X406000D01* X361900Y304300D02* X362100Y304500D01* X182100Y112800D02* Y124400D01* Y112800D02* X182800Y112100D01* X235400D01* Y123800D01* X234800Y124400D02* X235400Y123800D01* X182100Y124400D02* X234800D01* X114600Y407900D02* X125400Y407800D01* X114600Y407900D02* X114700Y407800D01* Y357300D02* Y407800D01* Y357300D02* X124600D01* X125400Y358100D01* Y407800D01* X115000Y240000D02* X125400D01* X115000Y180000D02* Y240000D01* Y180000D02* X125400D01* Y240000D01* X291000Y177000D02* Y228000D01* Y177000D02* X305000D01* Y228000D01* X291000D02* X305000D01* X177100Y304500D02* X235100D01* Y290000D02* Y304500D01* X177100Y290000D02* X235100D01* X177100D02* Y304500D01* X291000Y134000D02* Y150000D01* X281500Y124500D02* X291000Y134000D01* X263000Y124500D02* X281500D01* X262500Y125000D02* X263000Y124500D01* X262500Y112500D02* Y125000D01* Y112500D02* X332500D01* X333000Y113000D01* Y124000D01* X315500D02* X333000D01* X305500Y134000D02* X315500Y124000D01* X305500Y134000D02* Y150000D01* X291000D02* X305500D01* X125000Y133000D02* Y152500D01* Y133000D02* X125500D01* X134500Y124000D01* X135000Y124500D01* X154500D01* Y112000D02* Y124500D01* X154000Y112500D02* X154500Y112000D01* X115000Y112500D02* X154000D01* X115000D02* Y152000D01* X114500Y152500D02* X115000Y152000D01* X114500Y152500D02* X125000D01* X114550Y330100D02* X114987Y265000D01* X125500Y265000D01* X125500Y280500D01* X135000Y290000D01* X149500D01* Y304500D01* X134500D02* X149500D01* X125500Y313500D02* X134500Y304500D01* X125500Y313500D02* Y330100D01* X114550D02* X125500D01* X290281Y401131D02* X290900Y402700D01* X290281Y401131D02* X291107Y364800D01* X305500D01* Y402700D01* X290900D02* X305500D01* X290500Y314000D02* Y337500D01* X281000Y304500D02* X290500Y314000D01* X262000Y304500D02* X281000D01* X262000Y290000D02* Y304500D01* Y290000D02* X281000D01* X291000Y280000D01* Y255500D02* Y280000D01* Y255500D02* X304500D01* X305000Y255000D01* Y280500D01* X315000Y290500D01* X334500D01* Y304500D01* X314500D02* X334500D01* X314500D02* Y305000D01* X305500Y314000D02* X314500Y305000D01* X305500Y314000D02* Y337500D01* X290500D02* X305500D01* X471000Y134000D02* Y152500D01* X461500Y124500D02* X471000Y134000D01* X444600Y124500D02* X461500D01* X444600Y112500D02* Y124500D01* Y112500D02* X480000D01* X482500Y115000D01* Y152500D01* X471000D02* X482500D01* X470500Y177500D02* Y215000D01* Y177500D02* X482500D01* Y215000D01* X470500D02* X482500D01* X471000Y338100D02* X482500D01* Y242300D02* Y338100D01* X471000Y242300D02* X482500D01* X471000D02* Y280000D01* X470000D02* X471000D01* X459500Y290500D02* X470000Y280000D01* X432500Y290500D02* X459500D01* X432500D02* Y304000D01* X432000Y304500D02* X432500Y304000D01* X432000Y304500D02* X461000D01* X471000Y314500D01* Y338100D01* X471000Y400400D02* X471000Y365000D01* X482500D01* X480000D02* X482500D01* X480000D02* Y367500D01* X480000Y400400D02* X480000Y367500D01* X471000Y400400D02* X480000D01* X435000Y470000D02* Y480000D01* X480000D01* Y428000D02* Y480000D01* Y428000D02* X480500Y427500D01* X470500D02* X480500D01* X470500D02* Y459500D01* X471000Y460000D01* X461000Y470000D02* X471000Y460000D01* X435000Y470000D02* X461000D01* X366100D02* Y480000D01* X409500D01* Y470000D02* Y480000D01* X366100Y470000D02* X409500D01* X253900D02* Y480000D01* X338700D01* Y470000D02* Y480000D01* X315000Y470000D02* X338700D01* X305000Y460000D02* X315000Y470000D01* X305000Y460000D02* X305500Y459500D01* Y430000D02* Y459500D01* X291000Y430000D02* X305500D01* X291000D02* Y460000D01* X290500D02* X291000D01* X280500Y470000D02* X290500Y460000D01* X253900Y470000D02* X280500D01* X190000D02* X227500D01* Y480000D01* X190000D02* X227500D01* X190000Y470000D02* Y480000D01* X135500Y470000D02* X157500D01* X125500Y460000D02* X135500Y470000D01* X125000Y460000D02* X125500D01* X125000Y435000D02* Y460000D01* X115000Y435000D02* X125000D01* X115000D02* Y480000D01* X157500D01* Y470000D02* Y480000D01* X100000Y100000D02* X493700D01* Y493700D01* X100000D02* X493700D01* X100000Y100000D02* Y493700D01* M02* ================================================ FILE: hardware/panel.GML ================================================ G04 Layer_Color=12632256* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD49C,0.01000*% %ADD50O,0.04724X0.09449*% %ADD51O,0.06102X0.03543*% %ADD52O,0.03740X0.04921*% %ADD53C,0.07000*% %ADD54R,0.07000X0.07000*% %ADD55C,0.04000*% %ADD56R,0.04000X0.04000*% %ADD57R,0.07000X0.07000*% %ADD58C,0.07874*% D49* X125000Y260000D02* D03* Y265000D02* D03* Y255000D02* D03* Y250000D02* D03* Y245000D02* D03* Y240000D02* D03* X124600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X290600Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X305100Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X291400Y229800D02* D03* Y234800D02* D03* Y239800D02* D03* Y244800D02* D03* Y254800D02* D03* Y249800D02* D03* X304800Y229300D02* D03* Y234300D02* D03* Y239300D02* D03* Y244300D02* D03* Y254300D02* D03* Y249300D02* D03* X125200Y409200D02* D03* Y414200D02* D03* Y419200D02* D03* Y424200D02* D03* Y434200D02* D03* Y429200D02* D03* X291200Y338300D02* D03* Y343300D02* D03* Y348300D02* D03* Y353300D02* D03* Y363300D02* D03* Y358300D02* D03* X291000Y404100D02* D03* Y409100D02* D03* Y414100D02* D03* Y419100D02* D03* Y429100D02* D03* Y424100D02* D03* X304900Y404500D02* D03* Y409500D02* D03* Y414500D02* D03* Y419500D02* D03* Y429500D02* D03* Y424500D02* D03* X304700Y338200D02* D03* Y343200D02* D03* Y348200D02* D03* Y353200D02* D03* Y363200D02* D03* Y358200D02* D03* X471200Y401400D02* D03* Y406400D02* D03* Y411400D02* D03* Y416400D02* D03* Y426400D02* D03* Y421400D02* D03* X471600Y339500D02* D03* Y344500D02* D03* Y349500D02* D03* Y354500D02* D03* Y364500D02* D03* Y359500D02* D03* Y216100D02* D03* Y221100D02* D03* Y226100D02* D03* Y231100D02* D03* Y241100D02* D03* Y236100D02* D03* X470600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X443700Y124400D02* D03* X438700D02* D03* X433700D02* D03* X428700D02* D03* X418700D02* D03* X423700D02* D03* X357000Y124000D02* D03* X352000D02* D03* X347000D02* D03* X342000D02* D03* X332000D02* D03* X337000D02* D03* X360500Y289900D02* D03* X355500D02* D03* X350500D02* D03* X345500D02* D03* X335500D02* D03* X340500D02* D03* X432500Y290100D02* D03* X427500D02* D03* X422500D02* D03* X417500D02* D03* X407500D02* D03* X412500D02* D03* X431400Y303700D02* D03* X426400D02* D03* X421400D02* D03* X416400D02* D03* X406400D02* D03* X411400D02* D03* X360600Y304500D02* D03* X355600D02* D03* X350600D02* D03* X345600D02* D03* X335600D02* D03* X340600D02* D03* X365000Y469600D02* D03* X360000D02* D03* X355000D02* D03* X350000D02* D03* X340000D02* D03* X345000D02* D03* X435000D02* D03* X430000D02* D03* X425000D02* D03* X420000D02* D03* X410000D02* D03* X415000D02* D03* X252600D02* D03* X247600D02* D03* X242600D02* D03* X237600D02* D03* X227600D02* D03* X232600D02* D03* X183200Y469800D02* D03* X178200D02* D03* X173200D02* D03* X168200D02* D03* X158200D02* D03* X163200D02* D03* X175500Y303900D02* D03* X170500D02* D03* X165500D02* D03* X160500D02* D03* X150500D02* D03* X155500D02* D03* X175700Y290100D02* D03* X170700D02* D03* X165700D02* D03* X160700D02* D03* X150700D02* D03* X155700D02* D03* X260900Y303300D02* D03* X255900D02* D03* X250900D02* D03* X245900D02* D03* X235900D02* D03* X240900D02* D03* X261100Y290100D02* D03* X256100D02* D03* X251100D02* D03* X246100D02* D03* X236100D02* D03* X241100D02* D03* X261300Y123800D02* D03* X256300D02* D03* X251300D02* D03* X246300D02* D03* X236300D02* D03* X241300D02* D03* X180500Y124000D02* D03* X175500D02* D03* X170500D02* D03* X165500D02* D03* X155500D02* D03* X160500D02* D03* X125100Y351700D02* D03* Y356700D02* D03* Y346700D02* D03* Y341700D02* D03* Y336700D02* D03* Y331700D02* D03* D50* X147744Y146744D02* D03* X269791D02* D03* Y268791D02* D03* X147744D02* D03* X327744Y146744D02* D03* X449791D02* D03* Y268791D02* D03* X327744D02* D03* X147744Y326744D02* D03* X269791D02* D03* Y448791D02* D03* X147744D02* D03* X327744Y326744D02* D03* X449791D02* D03* Y448791D02* D03* X327744D02* D03* D51* X133008Y181964D02* D03* Y209524D02* D03* X313008Y181964D02* D03* Y209524D02* D03* X133008Y361964D02* D03* Y389524D02* D03* X313008Y361964D02* D03* Y389524D02* D03* D52* X144031Y185901D02* D03* Y205587D02* D03* X324031Y185901D02* D03* Y205587D02* D03* X144031Y365901D02* D03* Y385587D02* D03* X324031Y365901D02* D03* Y385587D02* D03* D53* X132044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X235244Y252744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X312044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X415244Y252744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X132044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X235244Y432744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* X312044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X415244Y432744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* D54* X132044Y252344D02* D03* X312044D02* D03* X132044Y432344D02* D03* X312044D02* D03* D55* X141744Y166744D02* D03* Y171744D02* D03* X146744Y166744D02* D03* Y171744D02* D03* X151744Y166744D02* D03* Y171744D02* D03* X156744Y166744D02* D03* Y171744D02* D03* X161744Y166744D02* D03* X321744D02* D03* Y171744D02* D03* X326744Y166744D02* D03* Y171744D02* D03* X331744Y166744D02* D03* Y171744D02* D03* X336744Y166744D02* D03* Y171744D02* D03* X341744Y166744D02* D03* X141744Y346744D02* D03* Y351744D02* D03* X146744Y346744D02* D03* Y351744D02* D03* X151744Y346744D02* D03* Y351744D02* D03* X156744Y346744D02* D03* Y351744D02* D03* X161744Y346744D02* D03* X321744D02* D03* Y351744D02* D03* X326744Y346744D02* D03* Y351744D02* D03* X331744Y346744D02* D03* Y351744D02* D03* X336744Y346744D02* D03* Y351744D02* D03* X341744Y346744D02* D03* D56* X161744Y171744D02* D03* X341744D02* D03* X161744Y351744D02* D03* X341744D02* D03* D57* X205244Y252744D02* D03* X283500Y161200D02* D03* X385244Y252744D02* D03* X463500Y161200D02* D03* X205244Y432744D02* D03* X283500Y341200D02* D03* X385244Y432744D02* D03* X463500Y341200D02* D03* D58* X235744Y276244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* X235744Y456244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* M02* ================================================ FILE: hardware/panel.GPB ================================================ G04 Layer_Color=255* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD13R,0.03347X0.03150*% %ADD24R,0.03543X0.02953*% %ADD49C,0.01000*% %ADD50O,0.04724X0.09449*% %ADD51O,0.06102X0.03543*% %ADD52O,0.03740X0.04921*% %ADD53C,0.07000*% %ADD54R,0.07000X0.07000*% %ADD55C,0.04000*% %ADD56R,0.04000X0.04000*% %ADD57R,0.07000X0.07000*% %ADD58C,0.07874*% %ADD61R,0.03150X0.03347*% %ADD62R,0.02953X0.03543*% G04:AMPARAMS|DCode=63|XSize=23.62mil|YSize=62.99mil|CornerRadius=5.91mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD63* 21,1,0.02362,0.05118,0,0,0.0* 21,1,0.01181,0.06299,0,0,0.0* 1,1,0.01181,0.00591,-0.02559* 1,1,0.01181,-0.00591,-0.02559* 1,1,0.01181,-0.00591,0.02559* 1,1,0.01181,0.00591,0.02559* % %ADD63ROUNDEDRECTD63*% %ADD64R,0.02362X0.06299*% %ADD65R,0.01772X0.05512*% %ADD66O,0.01772X0.05512*% D13* X211283Y173244D02* D03* X216205D02* D03* X207784Y161744D02* D03* X212705D02* D03* X207784Y156744D02* D03* X212705D02* D03* X188705Y193244D02* D03* X183783D02* D03* X213205Y227244D02* D03* X208283D02* D03* X211205Y237244D02* D03* X206283D02* D03* X211205Y243244D02* D03* X206283D02* D03* X203705Y153744D02* D03* X198783D02* D03* X198283Y159244D02* D03* X203205D02* D03* X192205Y168244D02* D03* X187284D02* D03* X391283Y173244D02* D03* X396205D02* D03* X387784Y161744D02* D03* X392705D02* D03* X387784Y156744D02* D03* X392705D02* D03* X368705Y193244D02* D03* X363783D02* D03* X393205Y227244D02* D03* X388283D02* D03* X391205Y237244D02* D03* X386283D02* D03* X391205Y243244D02* D03* X386283D02* D03* X383705Y153744D02* D03* X378783D02* D03* X378283Y159244D02* D03* X383205D02* D03* X372205Y168244D02* D03* X367284D02* D03* X211283Y353244D02* D03* X216205D02* D03* X207784Y341744D02* D03* X212705D02* D03* X207784Y336744D02* D03* X212705D02* D03* X188705Y373244D02* D03* X183783D02* D03* X213205Y407244D02* D03* X208283D02* D03* X211205Y417244D02* D03* X206283D02* D03* X211205Y423244D02* D03* X206283D02* D03* X203705Y333744D02* D03* X198783D02* D03* X198283Y339244D02* D03* X203205D02* D03* X192205Y348244D02* D03* X187284D02* D03* X391283Y353244D02* D03* X396205D02* D03* X387784Y341744D02* D03* X392705D02* D03* X387784Y336744D02* D03* X392705D02* D03* X368705Y373244D02* D03* X363783D02* D03* X393205Y407244D02* D03* X388283D02* D03* X391205Y417244D02* D03* X386283D02* D03* X391205Y423244D02* D03* X386283D02* D03* X383705Y333744D02* D03* X378783D02* D03* X378283Y339244D02* D03* X383205D02* D03* X372205Y348244D02* D03* X367284D02* D03* D24* X249244Y203587D02* D03* Y208902D02* D03* X258744Y206087D02* D03* Y211402D02* D03* X249744Y170087D02* D03* Y175402D02* D03* X259244Y172587D02* D03* Y177902D02* D03* X258744Y190087D02* D03* Y195402D02* D03* X249244Y187087D02* D03* Y192402D02* D03* X429244Y203587D02* D03* Y208902D02* D03* X438744Y206087D02* D03* Y211402D02* D03* X429744Y170087D02* D03* Y175402D02* D03* X439244Y172587D02* D03* Y177902D02* D03* X438744Y190087D02* D03* Y195402D02* D03* X429244Y187087D02* D03* Y192402D02* D03* X249244Y383587D02* D03* Y388902D02* D03* X258744Y386087D02* D03* Y391402D02* D03* X249744Y350087D02* D03* Y355402D02* D03* X259244Y352587D02* D03* Y357902D02* D03* X258744Y370087D02* D03* Y375402D02* D03* X249244Y367087D02* D03* Y372402D02* D03* X429244Y383587D02* D03* Y388902D02* D03* X438744Y386087D02* D03* Y391402D02* D03* X429744Y350087D02* D03* Y355402D02* D03* X439244Y352587D02* D03* Y357902D02* D03* X438744Y370087D02* D03* Y375402D02* D03* X429244Y367087D02* D03* Y372402D02* D03* D49* X125000Y260000D02* D03* Y265000D02* D03* Y255000D02* D03* Y250000D02* D03* Y245000D02* D03* Y240000D02* D03* X124600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X290600Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X305100Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X291400Y229800D02* D03* Y234800D02* D03* Y239800D02* D03* Y244800D02* D03* Y254800D02* D03* Y249800D02* D03* X304800Y229300D02* D03* Y234300D02* D03* Y239300D02* D03* Y244300D02* D03* Y254300D02* D03* Y249300D02* D03* X125200Y409200D02* D03* Y414200D02* D03* Y419200D02* D03* Y424200D02* D03* Y434200D02* D03* Y429200D02* D03* X291200Y338300D02* D03* Y343300D02* D03* Y348300D02* D03* Y353300D02* D03* Y363300D02* D03* Y358300D02* D03* X291000Y404100D02* D03* Y409100D02* D03* Y414100D02* D03* Y419100D02* D03* Y429100D02* D03* Y424100D02* D03* X304900Y404500D02* D03* Y409500D02* D03* Y414500D02* D03* Y419500D02* D03* Y429500D02* D03* Y424500D02* D03* X304700Y338200D02* D03* Y343200D02* D03* Y348200D02* D03* Y353200D02* D03* Y363200D02* D03* Y358200D02* D03* X471200Y401400D02* D03* Y406400D02* D03* Y411400D02* D03* Y416400D02* D03* Y426400D02* D03* Y421400D02* D03* X471600Y339500D02* D03* Y344500D02* D03* Y349500D02* D03* Y354500D02* D03* Y364500D02* D03* Y359500D02* D03* Y216100D02* D03* Y221100D02* D03* Y226100D02* D03* Y231100D02* D03* Y241100D02* D03* Y236100D02* D03* X470600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X443700Y124400D02* D03* X438700D02* D03* X433700D02* D03* X428700D02* D03* X418700D02* D03* X423700D02* D03* X357000Y124000D02* D03* X352000D02* D03* X347000D02* D03* X342000D02* D03* X332000D02* D03* X337000D02* D03* X360500Y289900D02* D03* X355500D02* D03* X350500D02* D03* X345500D02* D03* X335500D02* D03* X340500D02* D03* X432500Y290100D02* D03* X427500D02* D03* X422500D02* D03* X417500D02* D03* X407500D02* D03* X412500D02* D03* X431400Y303700D02* D03* X426400D02* D03* X421400D02* D03* X416400D02* D03* X406400D02* D03* X411400D02* D03* X360600Y304500D02* D03* X355600D02* D03* X350600D02* D03* X345600D02* D03* X335600D02* D03* X340600D02* D03* X365000Y469600D02* D03* X360000D02* D03* X355000D02* D03* X350000D02* D03* X340000D02* D03* X345000D02* D03* X435000D02* D03* X430000D02* D03* X425000D02* D03* X420000D02* D03* X410000D02* D03* X415000D02* D03* X252600D02* D03* X247600D02* D03* X242600D02* D03* X237600D02* D03* X227600D02* D03* X232600D02* D03* X183200Y469800D02* D03* X178200D02* D03* X173200D02* D03* X168200D02* D03* X158200D02* D03* X163200D02* D03* X175500Y303900D02* D03* X170500D02* D03* X165500D02* D03* X160500D02* D03* X150500D02* D03* X155500D02* D03* X175700Y290100D02* D03* X170700D02* D03* X165700D02* D03* X160700D02* D03* X150700D02* D03* X155700D02* D03* X260900Y303300D02* D03* X255900D02* D03* X250900D02* D03* X245900D02* D03* X235900D02* D03* X240900D02* D03* X261100Y290100D02* D03* X256100D02* D03* X251100D02* D03* X246100D02* D03* X236100D02* D03* X241100D02* D03* X261300Y123800D02* D03* X256300D02* D03* X251300D02* D03* X246300D02* D03* X236300D02* D03* X241300D02* D03* X180500Y124000D02* D03* X175500D02* D03* X170500D02* D03* X165500D02* D03* X155500D02* D03* X160500D02* D03* X125100Y351700D02* D03* Y356700D02* D03* Y346700D02* D03* Y341700D02* D03* Y336700D02* D03* Y331700D02* D03* D50* X147744Y146744D02* D03* X269791D02* D03* Y268791D02* D03* X147744D02* D03* X327744Y146744D02* D03* X449791D02* D03* Y268791D02* D03* X327744D02* D03* X147744Y326744D02* D03* X269791D02* D03* Y448791D02* D03* X147744D02* D03* X327744Y326744D02* D03* X449791D02* D03* Y448791D02* D03* X327744D02* D03* D51* X133008Y181964D02* D03* Y209524D02* D03* X313008Y181964D02* D03* Y209524D02* D03* X133008Y361964D02* D03* Y389524D02* D03* X313008Y361964D02* D03* Y389524D02* D03* D52* X144031Y185901D02* D03* Y205587D02* D03* X324031Y185901D02* D03* Y205587D02* D03* X144031Y365901D02* D03* Y385587D02* D03* X324031Y365901D02* D03* Y385587D02* D03* D53* X132044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X235244Y252744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X312044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X415244Y252744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X132044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X235244Y432744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* X312044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X415244Y432744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* D54* X132044Y252344D02* D03* X312044D02* D03* X132044Y432344D02* D03* X312044D02* D03* D55* X141744Y166744D02* D03* Y171744D02* D03* X146744Y166744D02* D03* Y171744D02* D03* X151744Y166744D02* D03* Y171744D02* D03* X156744Y166744D02* D03* Y171744D02* D03* X161744Y166744D02* D03* X321744D02* D03* Y171744D02* D03* X326744Y166744D02* D03* Y171744D02* D03* X331744Y166744D02* D03* Y171744D02* D03* X336744Y166744D02* D03* Y171744D02* D03* X341744Y166744D02* D03* X141744Y346744D02* D03* Y351744D02* D03* X146744Y346744D02* D03* Y351744D02* D03* X151744Y346744D02* D03* Y351744D02* D03* X156744Y346744D02* D03* Y351744D02* D03* X161744Y346744D02* D03* X321744D02* D03* Y351744D02* D03* X326744Y346744D02* D03* Y351744D02* D03* X331744Y346744D02* D03* Y351744D02* D03* X336744Y346744D02* D03* Y351744D02* D03* X341744Y346744D02* D03* D56* X161744Y171744D02* D03* X341744D02* D03* X161744Y351744D02* D03* X341744D02* D03* D57* X205244Y252744D02* D03* X283500Y161200D02* D03* X385244Y252744D02* D03* X463500Y161200D02* D03* X205244Y432744D02* D03* X283500Y341200D02* D03* X385244Y432744D02* D03* X463500Y341200D02* D03* D58* X235744Y276244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* X235744Y456244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* D61* X258744Y226783D02* D03* Y231705D02* D03* X253744Y227283D02* D03* Y232205D02* D03* X238744Y230205D02* D03* Y225283D02* D03* X244744Y229705D02* D03* Y224783D02* D03* X262244Y249205D02* D03* Y244283D02* D03* X239744Y194205D02* D03* Y189283D02* D03* X438744Y226783D02* D03* Y231705D02* D03* X433744Y227283D02* D03* Y232205D02* D03* X418744Y230205D02* D03* Y225283D02* D03* X424744Y229705D02* D03* Y224783D02* D03* X442244Y249205D02* D03* Y244283D02* D03* X419744Y194205D02* D03* Y189283D02* D03* X258744Y406783D02* D03* Y411705D02* D03* X253744Y407283D02* D03* Y412205D02* D03* X238744Y410205D02* D03* Y405283D02* D03* X244744Y409705D02* D03* Y404783D02* D03* X262244Y429205D02* D03* Y424283D02* D03* X239744Y374205D02* D03* Y369283D02* D03* X438744Y406783D02* D03* Y411705D02* D03* X433744Y407283D02* D03* Y412205D02* D03* X418744Y410205D02* D03* Y405283D02* D03* X424744Y409705D02* D03* Y404783D02* D03* X442244Y429205D02* D03* Y424283D02* D03* X419744Y374205D02* D03* Y369283D02* D03* D62* X169587Y157244D02* D03* X174901D02* D03* X224902Y237244D02* D03* X219587D02* D03* X224902Y243244D02* D03* X219587D02* D03* X164902Y181244D02* D03* X159587D02* D03* X170087Y197244D02* D03* X175401D02* D03* X159587D02* D03* X164901D02* D03* X180587Y152744D02* D03* X185901D02* D03* X349587Y157244D02* D03* X354901D02* D03* X404902Y237244D02* D03* X399587D02* D03* X404902Y243244D02* D03* X399587D02* D03* X344902Y181244D02* D03* X339587D02* D03* X350087Y197244D02* D03* X355401D02* D03* X339587D02* D03* X344901D02* D03* X360587Y152744D02* D03* X365901D02* D03* X169587Y337244D02* D03* X174901D02* D03* X224902Y417244D02* D03* X219587D02* D03* X224902Y423244D02* D03* X219587D02* D03* X164902Y361244D02* D03* X159587D02* D03* X170087Y377244D02* D03* X175401D02* D03* X159587D02* D03* X164901D02* D03* X180587Y332744D02* D03* X185901D02* D03* X349587Y337244D02* D03* X354901D02* D03* X404902Y417244D02* D03* X399587D02* D03* X404902Y423244D02* D03* X399587D02* D03* X344902Y361244D02* D03* X339587D02* D03* X350087Y377244D02* D03* X355401D02* D03* X339587D02* D03* X344901D02* D03* X360587Y332744D02* D03* X365901D02* D03* D63* X189984Y199701D02* D03* X369984D02* D03* X189984Y379701D02* D03* X369984D02* D03* D64* X182504Y199701D02* D03* X186244Y206787D02* D03* X362504Y199701D02* D03* X366244Y206787D02* D03* X182504Y379701D02* D03* X186244Y386787D02* D03* X362504Y379701D02* D03* X366244Y386787D02* D03* D65* X216421Y196177D02* D03* X396421D02* D03* X216421Y376177D02* D03* X396421D02* D03* D66* X213862Y196177D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X216421Y219406D02* D03* X213862D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X393862Y196177D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* X396421Y219406D02* D03* X393862D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* X213862Y376177D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X216421Y399406D02* D03* X213862D02* D03* X211303D02* D03* X208744D02* D03* X206185D02* D03* X203626D02* D03* X201067D02* D03* X393862Y376177D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* X396421Y399406D02* D03* X393862D02* D03* X391303D02* D03* X388744D02* D03* X386185D02* D03* X383626D02* D03* X381067D02* D03* M02* ================================================ FILE: hardware/panel.GPT ================================================ G04 Layer_Color=255* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD10R,0.03543X0.03150*% G04:AMPARAMS|DCode=11|XSize=31.5mil|YSize=35.43mil|CornerRadius=7.87mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD11* 21,1,0.03150,0.01969,0,0,270.0* 21,1,0.01575,0.03543,0,0,270.0* 1,1,0.01575,-0.00984,-0.00787* 1,1,0.01575,-0.00984,0.00787* 1,1,0.01575,0.00984,0.00787* 1,1,0.01575,0.00984,-0.00787* % %ADD11ROUNDEDRECTD11*% %ADD12R,0.07087X0.03937*% %ADD13R,0.03347X0.03150*% %ADD14R,0.06890X0.01575*% %ADD15R,0.09449X0.04724*% %ADD16R,0.12205X0.04724*% %ADD17R,0.04724X0.07087*% G04:AMPARAMS|DCode=18|XSize=31.5mil|YSize=31.5mil|CornerRadius=7.87mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD18* 21,1,0.03150,0.01575,0,0,90.0* 21,1,0.01575,0.03150,0,0,90.0* 1,1,0.01575,0.00787,0.00787* 1,1,0.01575,0.00787,-0.00787* 1,1,0.01575,-0.00787,-0.00787* 1,1,0.01575,-0.00787,0.00787* % %ADD18ROUNDEDRECTD18*% %ADD19R,0.03150X0.03150*% G04:AMPARAMS|DCode=20|XSize=27.56mil|YSize=51.18mil|CornerRadius=6.89mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD20* 21,1,0.02756,0.03740,0,0,90.0* 21,1,0.01378,0.05118,0,0,90.0* 1,1,0.01378,0.01870,0.00689* 1,1,0.01378,0.01870,-0.00689* 1,1,0.01378,-0.01870,-0.00689* 1,1,0.01378,-0.01870,0.00689* % %ADD20ROUNDEDRECTD20*% %ADD21R,0.05118X0.02756*% G04:AMPARAMS|DCode=22|XSize=23.62mil|YSize=35.43mil|CornerRadius=5.91mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD22* 21,1,0.02362,0.02362,0,0,270.0* 21,1,0.01181,0.03543,0,0,270.0* 1,1,0.01181,-0.01181,-0.00591* 1,1,0.01181,-0.01181,0.00591* 1,1,0.01181,0.01181,0.00591* 1,1,0.01181,0.01181,-0.00591* % %ADD22ROUNDEDRECTD22*% %ADD23R,0.03543X0.02362*% %ADD24R,0.03543X0.02953*% G04:AMPARAMS|DCode=25|XSize=78.74mil|YSize=39.37mil|CornerRadius=9.84mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD25* 21,1,0.07874,0.01969,0,0,0.0* 21,1,0.05906,0.03937,0,0,0.0* 1,1,0.01969,0.02953,-0.00984* 1,1,0.01969,-0.02953,-0.00984* 1,1,0.01969,-0.02953,0.00984* 1,1,0.01969,0.02953,0.00984* % %ADD25ROUNDEDRECTD25*% %ADD26P,0.28674X4X180.0*% G04:AMPARAMS|DCode=27|XSize=9.84mil|YSize=33.47mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=135.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD27* 21,1,0.02362,0.00984,0.00000,0.00000,225.0* 1,1,0.00984,0.00835,0.00835* 1,1,0.00984,-0.00835,-0.00835* % %ADD27OVALD27*% G04:AMPARAMS|DCode=28|XSize=9.84mil|YSize=35.43mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=135.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD28* 21,1,0.02559,0.00984,0.00000,0.00000,225.0* 1,1,0.00984,0.00905,0.00905* 1,1,0.00984,-0.00905,-0.00905* % %ADD28OVALD28*% G04:AMPARAMS|DCode=29|XSize=9.84mil|YSize=33.47mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD29* 21,1,0.02362,0.00984,0.00000,0.00000,315.0* 1,1,0.00984,-0.00835,0.00835* 1,1,0.00984,0.00835,-0.00835* % %ADD29OVALD29*% G04:AMPARAMS|DCode=30|XSize=9.84mil|YSize=35.43mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD30* 21,1,0.02559,0.00984,0.00000,0.00000,315.0* 1,1,0.00984,-0.00905,0.00905* 1,1,0.00984,0.00905,-0.00905* % %ADD30OVALD30*% G04:AMPARAMS|DCode=31|XSize=9.84mil|YSize=33.47mil|CornerRadius=2.46mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD31* 21,1,0.00984,0.02854,0,0,225.0* 21,1,0.00492,0.03347,0,0,225.0* 1,1,0.00492,-0.01183,0.00835* 1,1,0.00492,-0.00835,0.01183* 1,1,0.00492,0.01183,-0.00835* 1,1,0.00492,0.00835,-0.01183* % %ADD31ROUNDEDRECTD31*% %ADD32R,0.03937X0.06693*% %ADD33R,0.11811X0.11811*% %ADD34O,0.05512X0.01772*% %ADD35R,0.05512X0.01772*% %ADD36R,0.03740X0.02756*% %ADD37R,0.12500X0.04500*% %ADD49C,0.01000*% %ADD50O,0.04724X0.09449*% %ADD51O,0.06102X0.03543*% %ADD52O,0.03740X0.04921*% %ADD53C,0.07000*% %ADD54R,0.07000X0.07000*% %ADD55C,0.04000*% %ADD56R,0.04000X0.04000*% %ADD57R,0.07000X0.07000*% %ADD58C,0.07874*% D10* X246583Y246681D02* D03* X255244Y250618D02* D03* X426583Y246681D02* D03* X435244Y250618D02* D03* X246583Y426681D02* D03* X255244Y430618D02* D03* X426583Y426681D02* D03* X435244Y430618D02* D03* D11* X255244Y242744D02* D03* X435244D02* D03* X255244Y422744D02* D03* X435244D02* D03* D12* X230157Y154000D02* D03* Y144157D02* D03* X410157Y154000D02* D03* Y144157D02* D03* X230157Y334000D02* D03* Y324157D02* D03* X410157Y334000D02* D03* Y324157D02* D03* D13* X178705Y230244D02* D03* X173783D02* D03* X242618Y144000D02* D03* X237697D02* D03* X242618Y154000D02* D03* X237697D02* D03* X358705Y230244D02* D03* X353783D02* D03* X422618Y144000D02* D03* X417697D02* D03* X422618Y154000D02* D03* X417697D02* D03* X178705Y410244D02* D03* X173783D02* D03* X242618Y324000D02* D03* X237697D02* D03* X242618Y334000D02* D03* X237697D02* D03* X358705Y410244D02* D03* X353783D02* D03* X422618Y324000D02* D03* X417697D02* D03* X422618Y334000D02* D03* X417697D02* D03* D14* X143244Y200862D02* D03* Y198303D02* D03* Y195744D02* D03* Y190626D02* D03* Y193185D02* D03* X323244Y200862D02* D03* Y198303D02* D03* Y195744D02* D03* Y190626D02* D03* Y193185D02* D03* X143244Y380862D02* D03* Y378303D02* D03* Y375744D02* D03* Y370626D02* D03* Y373185D02* D03* X323244Y380862D02* D03* Y378303D02* D03* Y375744D02* D03* Y370626D02* D03* Y373185D02* D03* D15* X131433Y200075D02* D03* Y192201D02* D03* X311433Y200075D02* D03* Y192201D02* D03* X131433Y380075D02* D03* Y372201D02* D03* X311433Y380075D02* D03* Y372201D02* D03* D16* X134344Y183944D02* D03* Y207244D02* D03* X314344Y183944D02* D03* Y207244D02* D03* X134344Y363944D02* D03* Y387244D02* D03* X314344Y363944D02* D03* Y387244D02* D03* D17* X143944Y184344D02* D03* X144057Y207187D02* D03* X323944Y184344D02* D03* X324057Y207187D02* D03* X143944Y364344D02* D03* X144057Y387187D02* D03* X323944Y364344D02* D03* X324057Y387187D02* D03* D18* X159744Y181244D02* D03* X169000Y157000D02* D03* X339744Y181244D02* D03* X349000Y157000D02* D03* X159744Y361244D02* D03* X169000Y337000D02* D03* X339744Y361244D02* D03* X349000Y337000D02* D03* D19* X165650Y181244D02* D03* X174906Y157000D02* D03* X345650Y181244D02* D03* X354906Y157000D02* D03* X165650Y361244D02* D03* X174906Y337000D02* D03* X345650Y361244D02* D03* X354906Y337000D02* D03* D20* X157920Y196084D02* D03* X337920D02* D03* X157920Y376084D02* D03* X337920D02* D03* D21* X157920Y192344D02* D03* Y188604D02* D03* X167368D02* D03* Y192344D02* D03* Y196084D02* D03* X337920Y192344D02* D03* Y188604D02* D03* X347368D02* D03* Y192344D02* D03* Y196084D02* D03* X157920Y372344D02* D03* Y368604D02* D03* X167368D02* D03* Y372344D02* D03* Y376084D02* D03* X337920Y372344D02* D03* Y368604D02* D03* X347368D02* D03* Y372344D02* D03* Y376084D02* D03* D22* X253824Y223760D02* D03* X433824D02* D03* X253824Y403760D02* D03* X433824D02* D03* D23* X253824Y227500D02* D03* Y231240D02* D03* X244376D02* D03* Y223760D02* D03* X433824Y227500D02* D03* Y231240D02* D03* X424376D02* D03* Y223760D02* D03* X253824Y407500D02* D03* Y411240D02* D03* X244376D02* D03* Y403760D02* D03* X433824Y407500D02* D03* Y411240D02* D03* X424376D02* D03* Y403760D02* D03* D24* X237600Y224843D02* D03* Y230157D02* D03* Y241157D02* D03* Y235843D02* D03* X417600Y224843D02* D03* Y230157D02* D03* Y241157D02* D03* Y235843D02* D03* X237600Y404843D02* D03* Y410157D02* D03* Y421157D02* D03* Y415843D02* D03* X417600Y404843D02* D03* Y410157D02* D03* Y421157D02* D03* Y415843D02* D03* D25* X158744Y207744D02* D03* X174886D02* D03* X158744Y214043D02* D03* X174744D02* D03* X199244Y128945D02* D03* X215244D02* D03* X199102Y135244D02* D03* X215244D02* D03* X164744Y128945D02* D03* X180744D02* D03* X164602Y135244D02* D03* X180744D02* D03* X250744D02* D03* X234602D02* D03* X250744Y128945D02* D03* X234744D02* D03* X338744Y207744D02* D03* X354886D02* D03* X338744Y214043D02* D03* X354744D02* D03* X379244Y128945D02* D03* X395244D02* D03* X379102Y135244D02* D03* X395244D02* D03* X344744Y128945D02* D03* X360744D02* D03* X344602Y135244D02* D03* X360744D02* D03* X430744D02* D03* X414602D02* D03* X430744Y128945D02* D03* X414744D02* D03* X158744Y387744D02* D03* X174886D02* D03* X158744Y394043D02* D03* X174744D02* D03* X199244Y308945D02* D03* X215244D02* D03* X199102Y315244D02* D03* X215244D02* D03* X164744Y308945D02* D03* X180744D02* D03* X164602Y315244D02* D03* X180744D02* D03* X250744D02* D03* X234602D02* D03* X250744Y308945D02* D03* X234744D02* D03* X338744Y387744D02* D03* X354886D02* D03* X338744Y394043D02* D03* X354744D02* D03* X379244Y308945D02* D03* X395244D02* D03* X379102Y315244D02* D03* X395244D02* D03* X344744Y308945D02* D03* X360744D02* D03* X344602Y315244D02* D03* X360744D02* D03* X430744D02* D03* X414602D02* D03* X430744Y308945D02* D03* X414744D02* D03* D26* X204900Y166600D02* D03* X384900D02* D03* X204900Y346600D02* D03* X384900D02* D03* D27* X203091Y149479D02* D03* X187779Y164791D02* D03* X206709Y183721D02* D03* X222021Y168409D02* D03* X383091Y149479D02* D03* X367779Y164791D02* D03* X386709Y183721D02* D03* X402021Y168409D02* D03* X203091Y329479D02* D03* X187779Y344791D02* D03* X206709Y363721D02* D03* X222021Y348409D02* D03* X383091Y329479D02* D03* X367779Y344791D02* D03* X386709Y363721D02* D03* X402021Y348409D02* D03* D28* X201768Y150941D02* D03* X200376Y152333D02* D03* X198984Y153725D02* D03* X197592Y155116D02* D03* X196200Y156508D02* D03* X194808Y157900D02* D03* X193416Y159292D02* D03* X192025Y160684D02* D03* X190633Y162076D02* D03* X189241Y163468D02* D03* X208032Y182259D02* D03* X209424Y180867D02* D03* X210816Y179475D02* D03* X212208Y178084D02* D03* X213600Y176692D02* D03* X214992Y175300D02* D03* X216384Y173908D02* D03* X217775Y172516D02* D03* X219167Y171124D02* D03* X220559Y169732D02* D03* X381768Y150941D02* D03* X380376Y152333D02* D03* X378984Y153725D02* D03* X377592Y155116D02* D03* X376200Y156508D02* D03* X374808Y157900D02* D03* X373416Y159292D02* D03* X372025Y160684D02* D03* X370633Y162076D02* D03* X369241Y163468D02* D03* X388032Y182259D02* D03* X389424Y180867D02* D03* X390816Y179475D02* D03* X392208Y178084D02* D03* X393600Y176692D02* D03* X394992Y175300D02* D03* X396384Y173908D02* D03* X397775Y172516D02* D03* X399167Y171124D02* D03* X400559Y169732D02* D03* X201768Y330941D02* D03* X200376Y332333D02* D03* X198984Y333725D02* D03* X197592Y335116D02* D03* X196200Y336508D02* D03* X194808Y337900D02* D03* X193416Y339292D02* D03* X192025Y340684D02* D03* X190633Y342076D02* D03* X189241Y343468D02* D03* X208032Y362259D02* D03* X209424Y360867D02* D03* X210816Y359475D02* D03* X212208Y358084D02* D03* X213600Y356692D02* D03* X214992Y355300D02* D03* X216384Y353908D02* D03* X217775Y352516D02* D03* X219167Y351124D02* D03* X220559Y349732D02* D03* X381768Y330941D02* D03* X380376Y332333D02* D03* X378984Y333725D02* D03* X377592Y335116D02* D03* X376200Y336508D02* D03* X374808Y337900D02* D03* X373416Y339292D02* D03* X372025Y340684D02* D03* X370633Y342076D02* D03* X369241Y343468D02* D03* X388032Y362259D02* D03* X389424Y360867D02* D03* X390816Y359475D02* D03* X392208Y358084D02* D03* X393600Y356692D02* D03* X394992Y355300D02* D03* X396384Y353908D02* D03* X397775Y352516D02* D03* X399167Y351124D02* D03* X400559Y349732D02* D03* D29* X187779Y168409D02* D03* X203091Y183721D02* D03* X222021Y164791D02* D03* X367779Y168409D02* D03* X383091Y183721D02* D03* X402021Y164791D02* D03* X187779Y348409D02* D03* X203091Y363721D02* D03* X222021Y344791D02* D03* X367779Y348409D02* D03* X383091Y363721D02* D03* X402021Y344791D02* D03* D30* X189241Y169732D02* D03* X190633Y171124D02* D03* X192025Y172516D02* D03* X193416Y173908D02* D03* X194808Y175300D02* D03* X196200Y176692D02* D03* X197592Y178084D02* D03* X198984Y179475D02* D03* X200376Y180867D02* D03* X201768Y182259D02* D03* X220559Y163468D02* D03* X219167Y162076D02* D03* X217775Y160684D02* D03* X216384Y159292D02* D03* X214992Y157900D02* D03* X213600Y156508D02* D03* X212208Y155116D02* D03* X210816Y153725D02* D03* X209424Y152333D02* D03* X208032Y150941D02* D03* X369241Y169732D02* D03* X370633Y171124D02* D03* X372025Y172516D02* D03* X373416Y173908D02* D03* X374808Y175300D02* D03* X376200Y176692D02* D03* X377592Y178084D02* D03* X378984Y179475D02* D03* X380376Y180867D02* D03* X381768Y182259D02* D03* X400559Y163468D02* D03* X399167Y162076D02* D03* X397775Y160684D02* D03* X396384Y159292D02* D03* X394992Y157900D02* D03* X393600Y156508D02* D03* X392208Y155116D02* D03* X390816Y153725D02* D03* X389424Y152333D02* D03* X388032Y150941D02* D03* X189241Y349732D02* D03* X190633Y351124D02* D03* X192025Y352516D02* D03* X193416Y353908D02* D03* X194808Y355300D02* D03* X196200Y356692D02* D03* X197592Y358084D02* D03* X198984Y359475D02* D03* X200376Y360867D02* D03* X201768Y362259D02* D03* X220559Y343468D02* D03* X219167Y342076D02* D03* X217775Y340684D02* D03* X216384Y339292D02* D03* X214992Y337900D02* D03* X213600Y336508D02* D03* X212208Y335116D02* D03* X210816Y333725D02* D03* X209424Y332333D02* D03* X208032Y330941D02* D03* X369241Y349732D02* D03* X370633Y351124D02* D03* X372025Y352516D02* D03* X373416Y353908D02* D03* X374808Y355300D02* D03* X376200Y356692D02* D03* X377592Y358084D02* D03* X378984Y359475D02* D03* X380376Y360867D02* D03* X381768Y362259D02* D03* X400559Y343468D02* D03* X399167Y342076D02* D03* X397775Y340684D02* D03* X396384Y339292D02* D03* X394992Y337900D02* D03* X393600Y336508D02* D03* X392208Y335116D02* D03* X390816Y333725D02* D03* X389424Y332333D02* D03* X388032Y330941D02* D03* D31* X206709Y149479D02* D03* X386709D02* D03* X206709Y329479D02* D03* X386709D02* D03* D32* X145632Y228844D02* D03* X156656D02* D03* X145532Y248544D02* D03* X156556D02* D03* X325632Y228844D02* D03* X336656D02* D03* X325532Y248544D02* D03* X336556D02* D03* X145632Y408844D02* D03* X156656D02* D03* X145532Y428544D02* D03* X156556D02* D03* X325632Y408844D02* D03* X336656D02* D03* X325532Y428544D02* D03* X336556D02* D03* D33* X181344Y246544D02* D03* X361344D02* D03* X181344Y426544D02* D03* X361344D02* D03* D34* X169730Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* Y237587D02* D03* X192958Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* X349730Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* Y237587D02* D03* X372958Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* X169730Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* Y417587D02* D03* X192958Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* X349730Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* Y417587D02* D03* X372958Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* D35* X192958Y237587D02* D03* X372958D02* D03* X192958Y417587D02* D03* X372958D02* D03* D36* X259067Y172744D02* D03* X249421Y169004D02* D03* Y176484D02* D03* X258567Y190244D02* D03* X248921Y186504D02* D03* Y193984D02* D03* X259067Y206244D02* D03* X249421Y202504D02* D03* Y209984D02* D03* X439067Y172744D02* D03* X429421Y169004D02* D03* Y176484D02* D03* X438567Y190244D02* D03* X428921Y186504D02* D03* Y193984D02* D03* X439067Y206244D02* D03* X429421Y202504D02* D03* Y209984D02* D03* X259067Y352744D02* D03* X249421Y349004D02* D03* Y356484D02* D03* X258567Y370244D02* D03* X248921Y366504D02* D03* Y373984D02* D03* X259067Y386244D02* D03* X249421Y382504D02* D03* Y389984D02* D03* X439067Y352744D02* D03* X429421Y349004D02* D03* Y356484D02* D03* X438567Y370244D02* D03* X428921Y366504D02* D03* Y373984D02* D03* X439067Y386244D02* D03* X429421Y382504D02* D03* Y389984D02* D03* D37* X168644Y273744D02* D03* X193044Y273687D02* D03* X348644Y273744D02* D03* X373044Y273687D02* D03* X168644Y453744D02* D03* X193044Y453687D02* D03* X348644Y453744D02* D03* X373044Y453687D02* D03* D49* X125000Y260000D02* D03* Y265000D02* D03* Y255000D02* D03* Y250000D02* D03* Y245000D02* D03* Y240000D02* D03* X124600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X290600Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X305100Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X291400Y229800D02* D03* Y234800D02* D03* Y239800D02* D03* Y244800D02* D03* Y254800D02* D03* Y249800D02* D03* X304800Y229300D02* D03* Y234300D02* D03* Y239300D02* D03* Y244300D02* D03* Y254300D02* D03* Y249300D02* D03* X125200Y409200D02* D03* Y414200D02* D03* Y419200D02* D03* Y424200D02* D03* Y434200D02* D03* Y429200D02* D03* X291200Y338300D02* D03* Y343300D02* D03* Y348300D02* D03* Y353300D02* D03* Y363300D02* D03* Y358300D02* D03* X291000Y404100D02* D03* Y409100D02* D03* Y414100D02* D03* Y419100D02* D03* Y429100D02* D03* Y424100D02* D03* X304900Y404500D02* D03* Y409500D02* D03* Y414500D02* D03* Y419500D02* D03* Y429500D02* D03* Y424500D02* D03* X304700Y338200D02* D03* Y343200D02* D03* Y348200D02* D03* Y353200D02* D03* Y363200D02* D03* Y358200D02* D03* X471200Y401400D02* D03* Y406400D02* D03* Y411400D02* D03* Y416400D02* D03* Y426400D02* D03* Y421400D02* D03* X471600Y339500D02* D03* Y344500D02* D03* Y349500D02* D03* Y354500D02* D03* Y364500D02* D03* Y359500D02* D03* Y216100D02* D03* Y221100D02* D03* Y226100D02* D03* Y231100D02* D03* Y241100D02* D03* Y236100D02* D03* X470600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X443700Y124400D02* D03* X438700D02* D03* X433700D02* D03* X428700D02* D03* X418700D02* D03* X423700D02* D03* X357000Y124000D02* D03* X352000D02* D03* X347000D02* D03* X342000D02* D03* X332000D02* D03* X337000D02* D03* X360500Y289900D02* D03* X355500D02* D03* X350500D02* D03* X345500D02* D03* X335500D02* D03* X340500D02* D03* X432500Y290100D02* D03* X427500D02* D03* X422500D02* D03* X417500D02* D03* X407500D02* D03* X412500D02* D03* X431400Y303700D02* D03* X426400D02* D03* X421400D02* D03* X416400D02* D03* X406400D02* D03* X411400D02* D03* X360600Y304500D02* D03* X355600D02* D03* X350600D02* D03* X345600D02* D03* X335600D02* D03* X340600D02* D03* X365000Y469600D02* D03* X360000D02* D03* X355000D02* D03* X350000D02* D03* X340000D02* D03* X345000D02* D03* X435000D02* D03* X430000D02* D03* X425000D02* D03* X420000D02* D03* X410000D02* D03* X415000D02* D03* X252600D02* D03* X247600D02* D03* X242600D02* D03* X237600D02* D03* X227600D02* D03* X232600D02* D03* X183200Y469800D02* D03* X178200D02* D03* X173200D02* D03* X168200D02* D03* X158200D02* D03* X163200D02* D03* X175500Y303900D02* D03* X170500D02* D03* X165500D02* D03* X160500D02* D03* X150500D02* D03* X155500D02* D03* X175700Y290100D02* D03* X170700D02* D03* X165700D02* D03* X160700D02* D03* X150700D02* D03* X155700D02* D03* X260900Y303300D02* D03* X255900D02* D03* X250900D02* D03* X245900D02* D03* X235900D02* D03* X240900D02* D03* X261100Y290100D02* D03* X256100D02* D03* X251100D02* D03* X246100D02* D03* X236100D02* D03* X241100D02* D03* X261300Y123800D02* D03* X256300D02* D03* X251300D02* D03* X246300D02* D03* X236300D02* D03* X241300D02* D03* X180500Y124000D02* D03* X175500D02* D03* X170500D02* D03* X165500D02* D03* X155500D02* D03* X160500D02* D03* X125100Y351700D02* D03* Y356700D02* D03* Y346700D02* D03* Y341700D02* D03* Y336700D02* D03* Y331700D02* D03* D50* X147744Y146744D02* D03* X269791D02* D03* Y268791D02* D03* X147744D02* D03* X327744Y146744D02* D03* X449791D02* D03* Y268791D02* D03* X327744D02* D03* X147744Y326744D02* D03* X269791D02* D03* Y448791D02* D03* X147744D02* D03* X327744Y326744D02* D03* X449791D02* D03* Y448791D02* D03* X327744D02* D03* D51* X133008Y181964D02* D03* Y209524D02* D03* X313008Y181964D02* D03* Y209524D02* D03* X133008Y361964D02* D03* Y389524D02* D03* X313008Y361964D02* D03* Y389524D02* D03* D52* X144031Y185901D02* D03* Y205587D02* D03* X324031Y185901D02* D03* Y205587D02* D03* X144031Y365901D02* D03* Y385587D02* D03* X324031Y365901D02* D03* Y385587D02* D03* D53* X132044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X235244Y252744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X312044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X415244Y252744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X132044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X235244Y432744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* X312044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X415244Y432744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* D54* X132044Y252344D02* D03* X312044D02* D03* X132044Y432344D02* D03* X312044D02* D03* D55* X141744Y166744D02* D03* Y171744D02* D03* X146744Y166744D02* D03* Y171744D02* D03* X151744Y166744D02* D03* Y171744D02* D03* X156744Y166744D02* D03* Y171744D02* D03* X161744Y166744D02* D03* X321744D02* D03* Y171744D02* D03* X326744Y166744D02* D03* Y171744D02* D03* X331744Y166744D02* D03* Y171744D02* D03* X336744Y166744D02* D03* Y171744D02* D03* X341744Y166744D02* D03* X141744Y346744D02* D03* Y351744D02* D03* X146744Y346744D02* D03* Y351744D02* D03* X151744Y346744D02* D03* Y351744D02* D03* X156744Y346744D02* D03* Y351744D02* D03* X161744Y346744D02* D03* X321744D02* D03* Y351744D02* D03* X326744Y346744D02* D03* Y351744D02* D03* X331744Y346744D02* D03* Y351744D02* D03* X336744Y346744D02* D03* Y351744D02* D03* X341744Y346744D02* D03* D56* X161744Y171744D02* D03* X341744D02* D03* X161744Y351744D02* D03* X341744D02* D03* D57* X205244Y252744D02* D03* X283500Y161200D02* D03* X385244Y252744D02* D03* X463500Y161200D02* D03* X205244Y432744D02* D03* X283500Y341200D02* D03* X385244Y432744D02* D03* X463500Y341200D02* D03* D58* X235744Y276244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* X235744Y456244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* M02* ================================================ FILE: hardware/panel.GTL ================================================ G04 Layer_Physical_Order=1* G04 Layer_Color=255* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD10R,0.03543X0.03150*% G04:AMPARAMS|DCode=11|XSize=31.5mil|YSize=35.43mil|CornerRadius=7.87mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD11* 21,1,0.03150,0.01969,0,0,270.0* 21,1,0.01575,0.03543,0,0,270.0* 1,1,0.01575,-0.00984,-0.00787* 1,1,0.01575,-0.00984,0.00787* 1,1,0.01575,0.00984,0.00787* 1,1,0.01575,0.00984,-0.00787* % %ADD11ROUNDEDRECTD11*% %ADD12R,0.07087X0.03937*% %ADD13R,0.03347X0.03150*% %ADD14R,0.06890X0.01575*% %ADD15R,0.09449X0.04724*% %ADD16R,0.12205X0.04724*% %ADD17R,0.04724X0.07087*% G04:AMPARAMS|DCode=18|XSize=31.5mil|YSize=31.5mil|CornerRadius=7.87mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD18* 21,1,0.03150,0.01575,0,0,90.0* 21,1,0.01575,0.03150,0,0,90.0* 1,1,0.01575,0.00787,0.00787* 1,1,0.01575,0.00787,-0.00787* 1,1,0.01575,-0.00787,-0.00787* 1,1,0.01575,-0.00787,0.00787* % %ADD18ROUNDEDRECTD18*% %ADD19R,0.03150X0.03150*% G04:AMPARAMS|DCode=20|XSize=27.56mil|YSize=51.18mil|CornerRadius=6.89mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD20* 21,1,0.02756,0.03740,0,0,90.0* 21,1,0.01378,0.05118,0,0,90.0* 1,1,0.01378,0.01870,0.00689* 1,1,0.01378,0.01870,-0.00689* 1,1,0.01378,-0.01870,-0.00689* 1,1,0.01378,-0.01870,0.00689* % %ADD20ROUNDEDRECTD20*% %ADD21R,0.05118X0.02756*% G04:AMPARAMS|DCode=22|XSize=23.62mil|YSize=35.43mil|CornerRadius=5.91mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD22* 21,1,0.02362,0.02362,0,0,270.0* 21,1,0.01181,0.03543,0,0,270.0* 1,1,0.01181,-0.01181,-0.00591* 1,1,0.01181,-0.01181,0.00591* 1,1,0.01181,0.01181,0.00591* 1,1,0.01181,0.01181,-0.00591* % %ADD22ROUNDEDRECTD22*% %ADD23R,0.03543X0.02362*% %ADD24R,0.03543X0.02953*% G04:AMPARAMS|DCode=25|XSize=78.74mil|YSize=39.37mil|CornerRadius=9.84mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD25* 21,1,0.07874,0.01969,0,0,0.0* 21,1,0.05906,0.03937,0,0,0.0* 1,1,0.01969,0.02953,-0.00984* 1,1,0.01969,-0.02953,-0.00984* 1,1,0.01969,-0.02953,0.00984* 1,1,0.01969,0.02953,0.00984* % %ADD25ROUNDEDRECTD25*% %ADD26P,0.28674X4X180.0*% G04:AMPARAMS|DCode=27|XSize=9.84mil|YSize=33.47mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=135.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD27* 21,1,0.02362,0.00984,0.00000,0.00000,225.0* 1,1,0.00984,0.00835,0.00835* 1,1,0.00984,-0.00835,-0.00835* % %ADD27OVALD27*% G04:AMPARAMS|DCode=28|XSize=9.84mil|YSize=35.43mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=135.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD28* 21,1,0.02559,0.00984,0.00000,0.00000,225.0* 1,1,0.00984,0.00905,0.00905* 1,1,0.00984,-0.00905,-0.00905* % %ADD28OVALD28*% G04:AMPARAMS|DCode=29|XSize=9.84mil|YSize=33.47mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD29* 21,1,0.02362,0.00984,0.00000,0.00000,315.0* 1,1,0.00984,-0.00835,0.00835* 1,1,0.00984,0.00835,-0.00835* % %ADD29OVALD29*% G04:AMPARAMS|DCode=30|XSize=9.84mil|YSize=35.43mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD30* 21,1,0.02559,0.00984,0.00000,0.00000,315.0* 1,1,0.00984,-0.00905,0.00905* 1,1,0.00984,0.00905,-0.00905* % %ADD30OVALD30*% G04:AMPARAMS|DCode=31|XSize=9.84mil|YSize=33.47mil|CornerRadius=2.46mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD31* 21,1,0.00984,0.02854,0,0,225.0* 21,1,0.00492,0.03347,0,0,225.0* 1,1,0.00492,-0.01183,0.00835* 1,1,0.00492,-0.00835,0.01183* 1,1,0.00492,0.01183,-0.00835* 1,1,0.00492,0.00835,-0.01183* % %ADD31ROUNDEDRECTD31*% %ADD32R,0.03937X0.06693*% %ADD33R,0.11811X0.11811*% %ADD34O,0.05512X0.01772*% %ADD35R,0.05512X0.01772*% %ADD36R,0.03740X0.02756*% %ADD37R,0.12500X0.04500*% %ADD38C,0.00600*% %ADD39C,0.03000*% %ADD40C,0.02000*% %ADD41C,0.04000*% %ADD42C,0.01600*% %ADD43C,0.00800*% %ADD44C,0.02500*% %ADD45C,0.01000*% %ADD46C,0.05000*% %ADD47C,0.01500*% %ADD48C,0.06000*% %ADD49C,0.01000*% %ADD50O,0.04724X0.09449*% %ADD51O,0.06102X0.03543*% %ADD52O,0.03740X0.04921*% %ADD53C,0.07000*% %ADD54R,0.07000X0.07000*% %ADD55C,0.04000*% %ADD56R,0.04000X0.04000*% %ADD57R,0.07000X0.07000*% %ADD58C,0.07874*% %ADD59C,0.02400*% %ADD60C,0.01969*% G36* X345359Y467825D02* X344887Y467209D01* X344705Y466770D01* X344600D01* X344093Y466669D01* X343663Y466381D01* X343375Y465951D01* X343274Y465444D01* Y456994D01* X341394D01* Y450494D01* X343109D01* Y442544D01* X343247Y441500D01* X343650Y440527D01* X344291Y439691D01* X345127Y439050D01* X346100Y438647D01* X347144Y438510D01* X347315Y438532D01* X347691Y438202D01* Y437390D01* X347124Y437277D01* X346550Y436894D01* X346376Y436838D01* X345986D01* X345846Y437046D01* X345020Y437599D01* X344044Y437793D01* X313644D01* X312669Y437599D01* X311842Y437046D01* X311706Y436844D01* X307544D01* Y427844D01* X316544D01* Y432695D01* X333588D01* Y429496D01* X333407Y429227D01* X333272Y428544D01* X333407Y427861D01* X333588Y427592D01* Y424238D01* X316130D01* X315975Y424614D01* X315253Y425554D01* X314313Y426275D01* X313219Y426728D01* X312044Y426883D01* X310869Y426728D01* X309775Y426275D01* X308835Y425554D01* X308113Y424614D01* X307660Y423519D01* X307529Y422528D01* X307029Y422561D01* Y459566D01* X315788Y468325D01* X345190D01* X345359Y467825D01* D02* G37* G36* X165359D02* X164887Y467209D01* X164705Y466770D01* X164600D01* X164093Y466669D01* X163663Y466381D01* X163375Y465951D01* X163275Y465444D01* Y456994D01* X161394D01* Y450494D01* X163110D01* Y442544D01* X163247Y441500D01* X163650Y440527D01* X164291Y439691D01* X165127Y439050D01* X166100Y438647D01* X167144Y438510D01* X167315Y438532D01* X167691Y438202D01* Y437390D01* X167124Y437277D01* X166550Y436894D01* X166376Y436838D01* X165986D01* X165846Y437046D01* X165020Y437599D01* X164044Y437793D01* X133644D01* X132669Y437599D01* X131842Y437046D01* X131706Y436844D01* X127544D01* Y427844D01* X136544D01* Y432695D01* X153587D01* Y429496D01* X153408Y429227D01* X153272Y428544D01* X153408Y427861D01* X153587Y427592D01* Y424238D01* X136130D01* X135975Y424614D01* X135253Y425554D01* X134313Y426275D01* X133219Y426728D01* X132044Y426883D01* X130869Y426728D01* X129775Y426275D01* X128835Y425554D01* X128113Y424614D01* X127660Y423519D01* X127529Y422528D01* X127029Y422561D01* Y459566D01* X135788Y468325D01* X165190D01* X165359Y467825D01* D02* G37* G36* X410857Y455538D02* X410934Y454955D01* X411432Y453754D01* X412223Y452723D01* X413254Y451931D01* X414455Y451434D01* X415557Y451289D01* X415931Y451134D01* X416844Y451014D01* X417758Y451134D01* X418609Y451487D01* X419340Y452048D01* X419901Y452779D01* X420254Y453631D01* X420309Y454050D01* X420375Y454097D01* X420870Y453834D01* X420544Y437944D01* Y424644D01* X407719D01* X406569Y425793D01* Y428422D01* X407513Y428813D01* X408453Y429535D01* X409175Y430475D01* X409628Y431569D01* X409783Y432744D01* X409628Y433919D01* X409175Y435013D01* X408453Y435953D01* X407513Y436675D01* X406419Y437128D01* X405244Y437283D01* X404069Y437128D01* X402975Y436675D01* X402035Y435953D01* X401313Y435013D01* X400860Y433919D01* X400705Y432744D01* X400860Y431569D01* X401313Y430475D01* X402035Y429535D01* X402975Y428813D01* X403919Y428422D01* Y425244D01* X403938Y425144D01* X403528Y424644D01* X398688D01* X397439Y425893D01* Y428783D01* X397513Y428813D01* X398453Y429535D01* X399175Y430475D01* X399628Y431569D01* X399783Y432744D01* X399628Y433919D01* X399175Y435013D01* X398453Y435953D01* X397513Y436675D01* X396419Y437128D01* X395244Y437283D01* X394069Y437128D01* X392975Y436675D01* X392035Y435953D01* X391313Y435013D01* X390860Y433919D01* X390705Y432744D01* X390860Y431569D01* X391313Y430475D01* X392035Y429535D01* X392975Y428813D01* X394069Y428360D01* X394789Y428265D01* Y425397D01* X394386Y425316D01* X393658Y424830D01* X393534Y424644D01* X386671D01* X383834Y427482D01* X384025Y427944D01* X388544D01* X389244Y427244D01* X389744Y427744D01* Y437244D01* X381244D01* X381497Y436991D01* Y431073D01* X380997Y430866D01* X377984Y433879D01* X377554Y434166D01* X377046Y434267D01* X376211D01* X376188Y434301D01* X375564Y434718D01* X374828Y434865D01* X371088D01* X370352Y434718D01* X369728Y434301D01* X369312Y433678D01* X369165Y432942D01* X369312Y432206D01* X369675Y431662D01* X369312Y431118D01* X369165Y430383D01* X369312Y429647D01* X369675Y429103D01* X369312Y428559D01* X369165Y427824D01* X369312Y427088D01* X369675Y426544D01* X369312Y426000D01* X369165Y425265D01* X369312Y424529D01* X369675Y423985D01* X369312Y423441D01* X369165Y422706D01* X369312Y421970D01* X369675Y421426D01* X369312Y420882D01* X369165Y420146D01* X369312Y419411D01* X369728Y418787D01* X370352Y418370D01* X371088Y418224D01* X374828D01* X375564Y418370D01* X375862Y418569D01* X376181Y418181D01* X374444Y416444D01* Y413788D01* X371407Y410751D01* X371119Y410321D01* X371019Y409814D01* Y408383D01* X370632Y408066D01* X370244Y408143D01* X369386Y407972D01* X368658Y407486D01* X368172Y406758D01* X368001Y405900D01* X368172Y405042D01* X368410Y404685D01* X365363Y401637D01* X365075Y401207D01* X364974Y400700D01* Y389144D01* X359779D01* X359708Y389503D01* X359269Y390159D01* X358613Y390597D01* X357839Y390751D01* X351933D01* X351159Y390597D01* X350502Y390159D01* X350064Y389503D01* X349993Y389144D01* X343637D01* X343566Y389503D01* X343127Y390159D01* X342471Y390597D01* X341697Y390751D01* X335791D01* X335017Y390597D01* X334361Y390159D01* X333922Y389503D01* X333851Y389144D01* X331954D01* X331830Y389330D01* X331102Y389816D01* X330244Y389987D01* X329386Y389816D01* X328658Y389330D01* X328534Y389144D01* X308944D01* X307405Y388948D01* X307029Y389279D01* Y402127D01* X307529Y402160D01* X307660Y401169D01* X308113Y400075D01* X308835Y399135D01* X309775Y398413D01* X310869Y397960D01* X312044Y397805D01* X313219Y397960D01* X314313Y398413D01* X315253Y399135D01* X315956Y400050D01* X339344D01* X340222Y400224D01* X340966Y400722D01* X344966Y404722D01* X345463Y405466D01* X345638Y406344D01* Y411424D01* X351110D01* Y407669D01* X356457D01* Y412819D01* X355109D01* Y412961D01* X355008Y413468D01* X354764Y413833D01* Y416644D01* X354686Y417034D01* X354465Y417365D01* X353465Y418365D01* X353279Y418489D01* X353053Y418927D01* X353377Y419411D01* X353523Y420146D01* X353377Y420882D01* X353013Y421426D01* X353377Y421970D01* X353523Y422706D01* X353377Y423441D01* X353013Y423985D01* X353377Y424529D01* X353523Y425265D01* X353377Y426000D01* X353013Y426544D01* X353377Y427088D01* X353523Y427824D01* X353377Y428559D01* X353013Y429103D01* X353377Y429647D01* X353523Y430383D01* X353377Y431118D01* X353013Y431662D01* X353377Y432206D01* X353523Y432942D01* X353377Y433678D01* X353013Y434221D01* X353377Y434765D01* X353523Y435501D01* X353377Y436237D01* X352960Y436860D01* X352336Y437277D01* X351769Y437390D01* Y439958D01* X351614Y440739D01* X351172Y441400D01* X351037Y441490D01* X351041Y441500D01* X351179Y442544D01* Y450494D01* X355894D01* Y456994D01* X353822D01* X353630Y457456D01* X358488Y462314D01* X404082D01* X410857Y455538D01* D02* G37* G36* X230857D02* X230934Y454955D01* X231432Y453754D01* X232223Y452723D01* X233254Y451931D01* X234455Y451434D01* X235557Y451289D01* X235931Y451134D01* X236844Y451014D01* X237758Y451134D01* X238609Y451487D01* X239340Y452048D01* X239901Y452779D01* X240254Y453631D01* X240309Y454050D01* X240375Y454097D01* X240870Y453834D01* X240544Y437944D01* Y424644D01* X227719D01* X226570Y425793D01* Y428422D01* X227513Y428813D01* X228453Y429535D01* X229175Y430475D01* X229628Y431569D01* X229783Y432744D01* X229628Y433919D01* X229175Y435013D01* X228453Y435953D01* X227513Y436675D01* X226419Y437128D01* X225244Y437283D01* X224069Y437128D01* X222975Y436675D01* X222035Y435953D01* X221313Y435013D01* X220860Y433919D01* X220705Y432744D01* X220860Y431569D01* X221313Y430475D01* X222035Y429535D01* X222975Y428813D01* X223919Y428422D01* Y425244D01* X223938Y425144D01* X223528Y424644D01* X218688D01* X217439Y425893D01* Y428783D01* X217513Y428813D01* X218453Y429535D01* X219175Y430475D01* X219628Y431569D01* X219783Y432744D01* X219628Y433919D01* X219175Y435013D01* X218453Y435953D01* X217513Y436675D01* X216419Y437128D01* X215244Y437283D01* X214069Y437128D01* X212975Y436675D01* X212035Y435953D01* X211313Y435013D01* X210860Y433919D01* X210705Y432744D01* X210860Y431569D01* X211313Y430475D01* X212035Y429535D01* X212975Y428813D01* X214069Y428360D01* X214789Y428265D01* Y425397D01* X214386Y425316D01* X213658Y424830D01* X213534Y424644D01* X206672D01* X203834Y427482D01* X204025Y427944D01* X208544D01* X209244Y427244D01* X209744Y427744D01* Y437244D01* X201244D01* X201497Y436991D01* Y431073D01* X200997Y430866D01* X197984Y433879D01* X197554Y434166D01* X197046Y434267D01* X196211D01* X196188Y434301D01* X195564Y434718D01* X194828Y434865D01* X191088D01* X190352Y434718D01* X189728Y434301D01* X189312Y433678D01* X189165Y432942D01* X189312Y432206D01* X189675Y431662D01* X189312Y431118D01* X189165Y430383D01* X189312Y429647D01* X189675Y429103D01* X189312Y428559D01* X189165Y427824D01* X189312Y427088D01* X189675Y426544D01* X189312Y426000D01* X189165Y425265D01* X189312Y424529D01* X189675Y423985D01* X189312Y423441D01* X189165Y422706D01* X189312Y421970D01* X189675Y421426D01* X189312Y420882D01* X189165Y420146D01* X189312Y419411D01* X189728Y418787D01* X190352Y418370D01* X191088Y418224D01* X194828D01* X195564Y418370D01* X195862Y418569D01* X196181Y418181D01* X194444Y416444D01* Y413788D01* X191407Y410751D01* X191120Y410321D01* X191019Y409814D01* Y408383D01* X190632Y408066D01* X190244Y408143D01* X189386Y407972D01* X188658Y407486D01* X188172Y406758D01* X188001Y405900D01* X188172Y405042D01* X188410Y404685D01* X185363Y401637D01* X185075Y401207D01* X184975Y400700D01* Y389144D01* X179779D01* X179708Y389503D01* X179269Y390159D01* X178613Y390597D01* X177839Y390751D01* X171933D01* X171159Y390597D01* X170502Y390159D01* X170064Y389503D01* X169993Y389144D01* X163637D01* X163566Y389503D01* X163127Y390159D01* X162471Y390597D01* X161697Y390751D01* X155791D01* X155017Y390597D01* X154361Y390159D01* X153922Y389503D01* X153851Y389144D01* X151954D01* X151830Y389330D01* X151102Y389816D01* X150244Y389987D01* X149386Y389816D01* X148658Y389330D01* X148534Y389144D01* X128944D01* X127405Y388948D01* X127029Y389279D01* Y402127D01* X127529Y402160D01* X127660Y401169D01* X128113Y400075D01* X128835Y399135D01* X129775Y398413D01* X130869Y397960D01* X132044Y397805D01* X133219Y397960D01* X134313Y398413D01* X135253Y399135D01* X135956Y400050D01* X159344D01* X160222Y400224D01* X160966Y400722D01* X164966Y404722D01* X165463Y405466D01* X165638Y406344D01* Y411424D01* X171110D01* Y407669D01* X176457D01* Y412819D01* X175109D01* Y412961D01* X175008Y413468D01* X174764Y413833D01* Y416644D01* X174686Y417034D01* X174465Y417365D01* X173465Y418365D01* X173279Y418489D01* X173053Y418927D01* X173377Y419411D01* X173523Y420146D01* X173377Y420882D01* X173013Y421426D01* X173377Y421970D01* X173523Y422706D01* X173377Y423441D01* X173013Y423985D01* X173377Y424529D01* X173523Y425265D01* X173377Y426000D01* X173013Y426544D01* X173377Y427088D01* X173523Y427824D01* X173377Y428559D01* X173013Y429103D01* X173377Y429647D01* X173523Y430383D01* X173377Y431118D01* X173013Y431662D01* X173377Y432206D01* X173523Y432942D01* X173377Y433678D01* X173013Y434221D01* X173377Y434765D01* X173523Y435501D01* X173377Y436237D01* X172960Y436860D01* X172336Y437277D01* X171769Y437390D01* Y439958D01* X171614Y440739D01* X171172Y441400D01* X171037Y441490D01* X171041Y441500D01* X171178Y442544D01* Y450494D01* X175894D01* Y456994D01* X173822D01* X173630Y457456D01* X178488Y462314D01* X224082D01* X230857Y455538D01* D02* G37* G36* X353244Y417144D02* X353744Y416644D01* Y412444D01* X345638D01* Y415244D01* X346746Y416352D01* X347244Y417096D01* X347273Y417246D01* X352644Y417644D01* X352744D01* X353244Y417144D01* D02* G37* G36* X173244D02* X173744Y416644D01* Y412444D01* X165638D01* Y415244D01* X166746Y416352D01* X167244Y417096D01* X167273Y417246D01* X172644Y417644D01* X172744D01* X173244Y417144D01* D02* G37* G36* X338859Y414982D02* Y413642D01* X338407Y413190D01* X333687D01* Y404638D01* X315956D01* X315253Y405553D01* X314313Y406275D01* X313219Y406728D01* X312044Y406883D01* X310869Y406728D01* X309775Y406275D01* X308835Y405553D01* X308113Y404613D01* X307660Y403519D01* X307529Y402528D01* X307029Y402561D01* Y412127D01* X307529Y412160D01* X307660Y411169D01* X308113Y410075D01* X308835Y409135D01* X309775Y408413D01* X310869Y407960D01* X312044Y407805D01* X313219Y407960D01* X314313Y408413D01* X315253Y409135D01* X315975Y410075D01* X316428Y411169D01* X316583Y412344D01* X316428Y413519D01* X316163Y414158D01* X316700Y414695D01* X336844D01* X337820Y414889D01* X338359Y415249D01* X338859Y414982D01* D02* G37* G36* X158859D02* Y413642D01* X158407Y413190D01* X153688D01* Y404638D01* X135956D01* X135253Y405553D01* X134313Y406275D01* X133219Y406728D01* X132044Y406883D01* X130869Y406728D01* X129775Y406275D01* X128835Y405553D01* X128113Y404613D01* X127660Y403519D01* X127529Y402528D01* X127029Y402561D01* Y412127D01* X127529Y412160D01* X127660Y411169D01* X128113Y410075D01* X128835Y409135D01* X129775Y408413D01* X130869Y407960D01* X132044Y407805D01* X133219Y407960D01* X134313Y408413D01* X135253Y409135D01* X135975Y410075D01* X136428Y411169D01* X136583Y412344D01* X136428Y413519D01* X136163Y414158D01* X136700Y414695D01* X156844D01* X157819Y414889D01* X158359Y415249D01* X158859Y414982D01* D02* G37* G36* X320488Y360390D02* X318520D01* Y361965D01* X320488D01* Y360390D01* D02* G37* G36* X140488D02* X138520D01* Y361965D01* X140488D01* Y360390D01* D02* G37* G36* X345359Y287825D02* X344887Y287209D01* X344705Y286770D01* X344600D01* X344093Y286669D01* X343663Y286381D01* X343375Y285951D01* X343274Y285444D01* Y276994D01* X341394D01* Y270494D01* X343109D01* Y262544D01* X343247Y261500D01* X343650Y260527D01* X344291Y259691D01* X345127Y259050D01* X346100Y258647D01* X347144Y258509D01* X347315Y258532D01* X347691Y258202D01* Y257390D01* X347124Y257277D01* X346550Y256893D01* X346376Y256838D01* X345986D01* X345846Y257046D01* X345020Y257599D01* X344044Y257793D01* X313644D01* X312669Y257599D01* X311842Y257046D01* X311706Y256844D01* X307544D01* Y247844D01* X316544D01* Y252695D01* X333588D01* Y249496D01* X333407Y249227D01* X333272Y248544D01* X333407Y247861D01* X333588Y247592D01* Y244238D01* X316130D01* X315975Y244614D01* X315253Y245554D01* X314313Y246275D01* X313219Y246728D01* X312044Y246883D01* X310869Y246728D01* X309775Y246275D01* X308835Y245554D01* X308113Y244614D01* X307660Y243519D01* X307529Y242528D01* X307029Y242561D01* Y279567D01* X315788Y288325D01* X345190D01* X345359Y287825D01* D02* G37* G36* X165359D02* X164887Y287209D01* X164705Y286770D01* X164600D01* X164093Y286669D01* X163663Y286381D01* X163375Y285951D01* X163275Y285444D01* Y276994D01* X161394D01* Y270494D01* X163110D01* Y262544D01* X163247Y261500D01* X163650Y260527D01* X164291Y259691D01* X165127Y259050D01* X166100Y258647D01* X167144Y258509D01* X167315Y258532D01* X167691Y258202D01* Y257390D01* X167124Y257277D01* X166550Y256893D01* X166376Y256838D01* X165986D01* X165846Y257046D01* X165020Y257599D01* X164044Y257793D01* X133644D01* X132669Y257599D01* X131842Y257046D01* X131706Y256844D01* X127544D01* Y247844D01* X136544D01* Y252695D01* X153587D01* Y249496D01* X153408Y249227D01* X153272Y248544D01* X153408Y247861D01* X153587Y247592D01* Y244238D01* X136130D01* X135975Y244614D01* X135253Y245554D01* X134313Y246275D01* X133219Y246728D01* X132044Y246883D01* X130869Y246728D01* X129775Y246275D01* X128835Y245554D01* X128113Y244614D01* X127660Y243519D01* X127529Y242528D01* X127029Y242561D01* Y279567D01* X135788Y288325D01* X165190D01* X165359Y287825D01* D02* G37* G36* X410857Y275538D02* X410934Y274955D01* X411432Y273754D01* X412223Y272723D01* X413254Y271932D01* X414455Y271434D01* X415557Y271289D01* X415931Y271134D01* X416844Y271014D01* X417758Y271134D01* X418609Y271487D01* X419340Y272048D01* X419901Y272779D01* X420254Y273631D01* X420309Y274050D01* X420375Y274096D01* X420870Y273834D01* X420544Y257944D01* Y244644D01* X407719D01* X406569Y245793D01* Y248422D01* X407513Y248813D01* X408453Y249535D01* X409175Y250475D01* X409628Y251569D01* X409783Y252744D01* X409628Y253919D01* X409175Y255013D01* X408453Y255953D01* X407513Y256675D01* X406419Y257128D01* X405244Y257283D01* X404069Y257128D01* X402975Y256675D01* X402035Y255953D01* X401313Y255013D01* X400860Y253919D01* X400705Y252744D01* X400860Y251569D01* X401313Y250475D01* X402035Y249535D01* X402975Y248813D01* X403919Y248422D01* Y245244D01* X403938Y245144D01* X403528Y244644D01* X398688D01* X397439Y245893D01* Y248783D01* X397513Y248813D01* X398453Y249535D01* X399175Y250475D01* X399628Y251569D01* X399783Y252744D01* X399628Y253919D01* X399175Y255013D01* X398453Y255953D01* X397513Y256675D01* X396419Y257128D01* X395244Y257283D01* X394069Y257128D01* X392975Y256675D01* X392035Y255953D01* X391313Y255013D01* X390860Y253919D01* X390705Y252744D01* X390860Y251569D01* X391313Y250475D01* X392035Y249535D01* X392975Y248813D01* X394069Y248360D01* X394789Y248265D01* Y245397D01* X394386Y245316D01* X393658Y244830D01* X393534Y244644D01* X386671D01* X383834Y247482D01* X384025Y247944D01* X388544D01* X389244Y247244D01* X389744Y247744D01* Y257244D01* X381244D01* X381497Y256991D01* Y251073D01* X380997Y250866D01* X377984Y253879D01* X377554Y254166D01* X377046Y254267D01* X376211D01* X376188Y254301D01* X375564Y254718D01* X374828Y254865D01* X371088D01* X370352Y254718D01* X369728Y254301D01* X369312Y253678D01* X369165Y252942D01* X369312Y252206D01* X369675Y251662D01* X369312Y251118D01* X369165Y250383D01* X369312Y249647D01* X369675Y249103D01* X369312Y248559D01* X369165Y247824D01* X369312Y247088D01* X369675Y246544D01* X369312Y246000D01* X369165Y245265D01* X369312Y244529D01* X369675Y243985D01* X369312Y243441D01* X369165Y242706D01* X369312Y241970D01* X369675Y241426D01* X369312Y240882D01* X369165Y240146D01* X369312Y239411D01* X369728Y238787D01* X370352Y238370D01* X371088Y238224D01* X374828D01* X375564Y238370D01* X375862Y238569D01* X376181Y238181D01* X374444Y236444D01* Y233788D01* X371407Y230751D01* X371119Y230321D01* X371019Y229814D01* Y228383D01* X370632Y228066D01* X370244Y228143D01* X369386Y227972D01* X368658Y227486D01* X368172Y226758D01* X368001Y225900D01* X368172Y225042D01* X368410Y224685D01* X365363Y221637D01* X365075Y221207D01* X364974Y220700D01* Y209144D01* X359779D01* X359708Y209503D01* X359269Y210159D01* X358613Y210597D01* X357839Y210751D01* X351933D01* X351159Y210597D01* X350502Y210159D01* X350064Y209503D01* X349993Y209144D01* X343637D01* X343566Y209503D01* X343127Y210159D01* X342471Y210597D01* X341697Y210751D01* X335791D01* X335017Y210597D01* X334361Y210159D01* X333922Y209503D01* X333851Y209144D01* X331954D01* X331830Y209330D01* X331102Y209816D01* X330244Y209987D01* X329386Y209816D01* X328658Y209330D01* X328534Y209144D01* X308944D01* X307405Y208948D01* X307029Y209279D01* Y222127D01* X307529Y222160D01* X307660Y221169D01* X308113Y220075D01* X308835Y219135D01* X309775Y218413D01* X310869Y217960D01* X312044Y217805D01* X313219Y217960D01* X314313Y218413D01* X315253Y219135D01* X315956Y220050D01* X339344D01* X340222Y220224D01* X340966Y220722D01* X344966Y224722D01* X345463Y225466D01* X345638Y226344D01* Y231424D01* X351110D01* Y227669D01* X356457D01* Y232819D01* X355109D01* Y232961D01* X355008Y233468D01* X354764Y233833D01* Y236644D01* X354686Y237034D01* X354465Y237365D01* X353465Y238365D01* X353279Y238489D01* X353053Y238927D01* X353377Y239411D01* X353523Y240146D01* X353377Y240882D01* X353013Y241426D01* X353377Y241970D01* X353523Y242706D01* X353377Y243441D01* X353013Y243985D01* X353377Y244529D01* X353523Y245265D01* X353377Y246000D01* X353013Y246544D01* X353377Y247088D01* X353523Y247824D01* X353377Y248559D01* X353013Y249103D01* X353377Y249647D01* X353523Y250383D01* X353377Y251118D01* X353013Y251662D01* X353377Y252206D01* X353523Y252942D01* X353377Y253678D01* X353013Y254221D01* X353377Y254765D01* X353523Y255501D01* X353377Y256237D01* X352960Y256860D01* X352336Y257277D01* X351769Y257390D01* Y259958D01* X351614Y260739D01* X351172Y261400D01* X351037Y261490D01* X351041Y261500D01* X351179Y262544D01* Y270494D01* X355894D01* Y276994D01* X353822D01* X353630Y277456D01* X358488Y282314D01* X404082D01* X410857Y275538D01* D02* G37* G36* X230857D02* X230934Y274955D01* X231432Y273754D01* X232223Y272723D01* X233254Y271932D01* X234455Y271434D01* X235557Y271289D01* X235931Y271134D01* X236844Y271014D01* X237758Y271134D01* X238609Y271487D01* X239340Y272048D01* X239901Y272779D01* X240254Y273631D01* X240309Y274050D01* X240375Y274096D01* X240870Y273834D01* X240544Y257944D01* Y244644D01* X227719D01* X226570Y245793D01* Y248422D01* X227513Y248813D01* X228453Y249535D01* X229175Y250475D01* X229628Y251569D01* X229783Y252744D01* X229628Y253919D01* X229175Y255013D01* X228453Y255953D01* X227513Y256675D01* X226419Y257128D01* X225244Y257283D01* X224069Y257128D01* X222975Y256675D01* X222035Y255953D01* X221313Y255013D01* X220860Y253919D01* X220705Y252744D01* X220860Y251569D01* X221313Y250475D01* X222035Y249535D01* X222975Y248813D01* X223919Y248422D01* Y245244D01* X223938Y245144D01* X223528Y244644D01* X218688D01* X217439Y245893D01* Y248783D01* X217513Y248813D01* X218453Y249535D01* X219175Y250475D01* X219628Y251569D01* X219783Y252744D01* X219628Y253919D01* X219175Y255013D01* X218453Y255953D01* X217513Y256675D01* X216419Y257128D01* X215244Y257283D01* X214069Y257128D01* X212975Y256675D01* X212035Y255953D01* X211313Y255013D01* X210860Y253919D01* X210705Y252744D01* X210860Y251569D01* X211313Y250475D01* X212035Y249535D01* X212975Y248813D01* X214069Y248360D01* X214789Y248265D01* Y245397D01* X214386Y245316D01* X213658Y244830D01* X213534Y244644D01* X206672D01* X203834Y247482D01* X204025Y247944D01* X208544D01* X209244Y247244D01* X209744Y247744D01* Y257244D01* X201244D01* X201497Y256991D01* Y251073D01* X200997Y250866D01* X197984Y253879D01* X197554Y254166D01* X197046Y254267D01* X196211D01* X196188Y254301D01* X195564Y254718D01* X194828Y254865D01* X191088D01* X190352Y254718D01* X189728Y254301D01* X189312Y253678D01* X189165Y252942D01* X189312Y252206D01* X189675Y251662D01* X189312Y251118D01* X189165Y250383D01* X189312Y249647D01* X189675Y249103D01* X189312Y248559D01* X189165Y247824D01* X189312Y247088D01* X189675Y246544D01* X189312Y246000D01* X189165Y245265D01* X189312Y244529D01* X189675Y243985D01* X189312Y243441D01* X189165Y242706D01* X189312Y241970D01* X189675Y241426D01* X189312Y240882D01* X189165Y240146D01* X189312Y239411D01* X189728Y238787D01* X190352Y238370D01* X191088Y238224D01* X194828D01* X195564Y238370D01* X195862Y238569D01* X196181Y238181D01* X194444Y236444D01* Y233788D01* X191407Y230751D01* X191120Y230321D01* X191019Y229814D01* Y228383D01* X190632Y228066D01* X190244Y228143D01* X189386Y227972D01* X188658Y227486D01* X188172Y226758D01* X188001Y225900D01* X188172Y225042D01* X188410Y224685D01* X185363Y221637D01* X185075Y221207D01* X184975Y220700D01* Y209144D01* X179779D01* X179708Y209503D01* X179269Y210159D01* X178613Y210597D01* X177839Y210751D01* X171933D01* X171159Y210597D01* X170502Y210159D01* X170064Y209503D01* X169993Y209144D01* X163637D01* X163566Y209503D01* X163127Y210159D01* X162471Y210597D01* X161697Y210751D01* X155791D01* X155017Y210597D01* X154361Y210159D01* X153922Y209503D01* X153851Y209144D01* X151954D01* X151830Y209330D01* X151102Y209816D01* X150244Y209987D01* X149386Y209816D01* X148658Y209330D01* X148534Y209144D01* X128944D01* X127405Y208948D01* X127029Y209279D01* Y222127D01* X127529Y222160D01* X127660Y221169D01* X128113Y220075D01* X128835Y219135D01* X129775Y218413D01* X130869Y217960D01* X132044Y217805D01* X133219Y217960D01* X134313Y218413D01* X135253Y219135D01* X135956Y220050D01* X159344D01* X160222Y220224D01* X160966Y220722D01* X164966Y224722D01* X165463Y225466D01* X165638Y226344D01* Y231424D01* X171110D01* Y227669D01* X176457D01* Y232819D01* X175109D01* Y232961D01* X175008Y233468D01* X174764Y233833D01* Y236644D01* X174686Y237034D01* X174465Y237365D01* X173465Y238365D01* X173279Y238489D01* X173053Y238927D01* X173377Y239411D01* X173523Y240146D01* X173377Y240882D01* X173013Y241426D01* X173377Y241970D01* X173523Y242706D01* X173377Y243441D01* X173013Y243985D01* X173377Y244529D01* X173523Y245265D01* X173377Y246000D01* X173013Y246544D01* X173377Y247088D01* X173523Y247824D01* X173377Y248559D01* X173013Y249103D01* X173377Y249647D01* X173523Y250383D01* X173377Y251118D01* X173013Y251662D01* X173377Y252206D01* X173523Y252942D01* X173377Y253678D01* X173013Y254221D01* X173377Y254765D01* X173523Y255501D01* X173377Y256237D01* X172960Y256860D01* X172336Y257277D01* X171769Y257390D01* Y259958D01* X171614Y260739D01* X171172Y261400D01* X171037Y261490D01* X171041Y261500D01* X171178Y262544D01* Y270494D01* X175894D01* Y276994D01* X173822D01* X173630Y277456D01* X178488Y282314D01* X224082D01* X230857Y275538D01* D02* G37* G36* X353244Y237144D02* X353744Y236644D01* Y232444D01* X345638D01* Y235244D01* X346746Y236352D01* X347244Y237096D01* X347273Y237246D01* X352644Y237644D01* X352744D01* X353244Y237144D01* D02* G37* G36* X173244D02* X173744Y236644D01* Y232444D01* X165638D01* Y235244D01* X166746Y236352D01* X167244Y237096D01* X167273Y237246D01* X172644Y237644D01* X172744D01* X173244Y237144D01* D02* G37* G36* X338859Y234982D02* Y233642D01* X338407Y233190D01* X333687D01* Y224638D01* X315956D01* X315253Y225553D01* X314313Y226275D01* X313219Y226728D01* X312044Y226883D01* X310869Y226728D01* X309775Y226275D01* X308835Y225553D01* X308113Y224613D01* X307660Y223519D01* X307529Y222528D01* X307029Y222561D01* Y232127D01* X307529Y232160D01* X307660Y231169D01* X308113Y230075D01* X308835Y229135D01* X309775Y228413D01* X310869Y227960D01* X312044Y227805D01* X313219Y227960D01* X314313Y228413D01* X315253Y229135D01* X315975Y230075D01* X316428Y231169D01* X316583Y232344D01* X316428Y233519D01* X316163Y234158D01* X316700Y234695D01* X336844D01* X337820Y234889D01* X338359Y235249D01* X338859Y234982D01* D02* G37* G36* X158859D02* Y233642D01* X158407Y233190D01* X153688D01* Y224638D01* X135956D01* X135253Y225553D01* X134313Y226275D01* X133219Y226728D01* X132044Y226883D01* X130869Y226728D01* X129775Y226275D01* X128835Y225553D01* X128113Y224613D01* X127660Y223519D01* X127529Y222528D01* X127029Y222561D01* Y232127D01* X127529Y232160D01* X127660Y231169D01* X128113Y230075D01* X128835Y229135D01* X129775Y228413D01* X130869Y227960D01* X132044Y227805D01* X133219Y227960D01* X134313Y228413D01* X135253Y229135D01* X135975Y230075D01* X136428Y231169D01* X136583Y232344D01* X136428Y233519D01* X136163Y234158D01* X136700Y234695D01* X156844D01* X157819Y234889D01* X158359Y235249D01* X158859Y234982D01* D02* G37* G36* X320488Y180390D02* X318520D01* Y181965D01* X320488D01* Y180390D01* D02* G37* G36* X140488D02* X138520D01* Y181965D01* X140488D01* Y180390D01* D02* G37* %LPC*% G36* X327744Y456719D02* X326197Y456567D01* X324710Y456116D01* X323340Y455383D01* X322138Y454397D01* X321152Y453196D01* X320420Y451825D01* X319968Y450338D01* X319816Y448791D01* X319968Y447245D01* X320420Y445757D01* X321152Y444387D01* X322138Y443186D01* X323340Y442200D01* X324710Y441467D01* X326197Y441016D01* X327744Y440864D01* X329291Y441016D01* X330778Y441467D01* X332149Y442200D01* X333350Y443186D01* X334336Y444387D01* X335068Y445757D01* X335520Y447245D01* X335672Y448791D01* X335520Y450338D01* X335068Y451825D01* X334336Y453196D01* X333350Y454397D01* X332149Y455383D01* X330778Y456116D01* X329291Y456567D01* X327744Y456719D01* D02* G37* G36* X147744D02* X146197Y456567D01* X144710Y456116D01* X143340Y455383D01* X142138Y454397D01* X141152Y453196D01* X140419Y451825D01* X139968Y450338D01* X139816Y448791D01* X139968Y447245D01* X140419Y445757D01* X141152Y444387D01* X142138Y443186D01* X143340Y442200D01* X144710Y441467D01* X146197Y441016D01* X147744Y440864D01* X149291Y441016D01* X150778Y441467D01* X152148Y442200D01* X153350Y443186D01* X154336Y444387D01* X155069Y445757D01* X155520Y447245D01* X155672Y448791D01* X155520Y450338D01* X155069Y451825D01* X154336Y453196D01* X153350Y454397D01* X152148Y455383D01* X150778Y456116D01* X149291Y456567D01* X147744Y456719D01* D02* G37* G36* X400244Y461744D02* X390744D01* Y451244D01* X400244D01* Y461744D01* D02* G37* G36* X380244Y456744D02* X365744D01* X366244Y450744D01* X380244D01* Y456744D01* D02* G37* G36* X415244Y437283D02* X414069Y437128D01* X412975Y436675D01* X412035Y435953D01* X411313Y435013D01* X410860Y433919D01* X410705Y432744D01* X410860Y431569D01* X411313Y430475D01* X412035Y429535D01* X412975Y428813D01* X414069Y428360D01* X415244Y428205D01* X416419Y428360D01* X417513Y428813D01* X418453Y429535D01* X419175Y430475D01* X419628Y431569D01* X419783Y432744D01* X419628Y433919D01* X419175Y435013D01* X418453Y435953D01* X417513Y436675D01* X416419Y437128D01* X415244Y437283D01* D02* G37* G36* X220244Y461744D02* X210744D01* Y451244D01* X220244D01* Y461744D01* D02* G37* G36* X200244Y456744D02* X185744D01* X186244Y450744D01* X200244D01* Y456744D01* D02* G37* G36* X235244Y437283D02* X234069Y437128D01* X232975Y436675D01* X232035Y435953D01* X231313Y435013D01* X230860Y433919D01* X230705Y432744D01* X230860Y431569D01* X231313Y430475D01* X232035Y429535D01* X232975Y428813D01* X234069Y428360D01* X235244Y428205D01* X236419Y428360D01* X237513Y428813D01* X238453Y429535D01* X239175Y430475D01* X239628Y431569D01* X239783Y432744D01* X239628Y433919D01* X239175Y435013D01* X238453Y435953D01* X237513Y436675D01* X236419Y437128D01* X235244Y437283D01* D02* G37* G36* X327744Y276719D02* X326197Y276567D01* X324710Y276116D01* X323340Y275383D01* X322138Y274397D01* X321152Y273196D01* X320420Y271825D01* X319968Y270338D01* X319816Y268791D01* X319968Y267245D01* X320420Y265757D01* X321152Y264387D01* X322138Y263186D01* X323340Y262200D01* X324710Y261467D01* X326197Y261016D01* X327744Y260863D01* X329291Y261016D01* X330778Y261467D01* X332149Y262200D01* X333350Y263186D01* X334336Y264387D01* X335068Y265757D01* X335520Y267245D01* X335672Y268791D01* X335520Y270338D01* X335068Y271825D01* X334336Y273196D01* X333350Y274397D01* X332149Y275383D01* X330778Y276116D01* X329291Y276567D01* X327744Y276719D01* D02* G37* G36* X147744D02* X146197Y276567D01* X144710Y276116D01* X143340Y275383D01* X142138Y274397D01* X141152Y273196D01* X140419Y271825D01* X139968Y270338D01* X139816Y268791D01* X139968Y267245D01* X140419Y265757D01* X141152Y264387D01* X142138Y263186D01* X143340Y262200D01* X144710Y261467D01* X146197Y261016D01* X147744Y260863D01* X149291Y261016D01* X150778Y261467D01* X152148Y262200D01* X153350Y263186D01* X154336Y264387D01* X155069Y265757D01* X155520Y267245D01* X155672Y268791D01* X155520Y270338D01* X155069Y271825D01* X154336Y273196D01* X153350Y274397D01* X152148Y275383D01* X150778Y276116D01* X149291Y276567D01* X147744Y276719D01* D02* G37* G36* X400244Y281744D02* X390744D01* Y271244D01* X400244D01* Y281744D01* D02* G37* G36* X380244Y276744D02* X365744D01* X366244Y270744D01* X380244D01* Y276744D01* D02* G37* G36* X415244Y257283D02* X414069Y257128D01* X412975Y256675D01* X412035Y255953D01* X411313Y255013D01* X410860Y253919D01* X410705Y252744D01* X410860Y251569D01* X411313Y250475D01* X412035Y249535D01* X412975Y248813D01* X414069Y248360D01* X415244Y248205D01* X416419Y248360D01* X417513Y248813D01* X418453Y249535D01* X419175Y250475D01* X419628Y251569D01* X419783Y252744D01* X419628Y253919D01* X419175Y255013D01* X418453Y255953D01* X417513Y256675D01* X416419Y257128D01* X415244Y257283D01* D02* G37* G36* X220244Y281744D02* X210744D01* Y271244D01* X220244D01* Y281744D01* D02* G37* G36* X200244Y276744D02* X185744D01* X186244Y270744D01* X200244D01* Y276744D01* D02* G37* G36* X235244Y257283D02* X234069Y257128D01* X232975Y256675D01* X232035Y255953D01* X231313Y255013D01* X230860Y253919D01* X230705Y252744D01* X230860Y251569D01* X231313Y250475D01* X232035Y249535D01* X232975Y248813D01* X234069Y248360D01* X235244Y248205D01* X236419Y248360D01* X237513Y248813D01* X238453Y249535D01* X239175Y250475D01* X239628Y251569D01* X239783Y252744D01* X239628Y253919D01* X239175Y255013D01* X238453Y255953D01* X237513Y256675D01* X236419Y257128D01* X235244Y257283D01* D02* G37* %LPD*% D10* X246583Y246681D02* D03* X255244Y250618D02* D03* X426583Y246681D02* D03* X435244Y250618D02* D03* X246583Y426681D02* D03* X255244Y430618D02* D03* X426583Y426681D02* D03* X435244Y430618D02* D03* D11* X255244Y242744D02* D03* X435244D02* D03* X255244Y422744D02* D03* X435244D02* D03* D12* X230157Y154000D02* D03* Y144157D02* D03* X410157Y154000D02* D03* Y144157D02* D03* X230157Y334000D02* D03* Y324157D02* D03* X410157Y334000D02* D03* Y324157D02* D03* D13* X178705Y230244D02* D03* X173783D02* D03* X242618Y144000D02* D03* X237697D02* D03* X242618Y154000D02* D03* X237697D02* D03* X358705Y230244D02* D03* X353783D02* D03* X422618Y144000D02* D03* X417697D02* D03* X422618Y154000D02* D03* X417697D02* D03* X178705Y410244D02* D03* X173783D02* D03* X242618Y324000D02* D03* X237697D02* D03* X242618Y334000D02* D03* X237697D02* D03* X358705Y410244D02* D03* X353783D02* D03* X422618Y324000D02* D03* X417697D02* D03* X422618Y334000D02* D03* X417697D02* D03* D14* X143244Y200862D02* D03* Y198303D02* D03* Y195744D02* D03* Y190626D02* D03* Y193185D02* D03* X323244Y200862D02* D03* Y198303D02* D03* Y195744D02* D03* Y190626D02* D03* Y193185D02* D03* X143244Y380862D02* D03* Y378303D02* D03* Y375744D02* D03* Y370626D02* D03* Y373185D02* D03* X323244Y380862D02* D03* Y378303D02* D03* Y375744D02* D03* Y370626D02* D03* Y373185D02* D03* D15* X131433Y200075D02* D03* Y192201D02* D03* X311433Y200075D02* D03* Y192201D02* D03* X131433Y380075D02* D03* Y372201D02* D03* X311433Y380075D02* D03* Y372201D02* D03* D16* X134344Y183944D02* D03* Y207244D02* D03* X314344Y183944D02* D03* Y207244D02* D03* X134344Y363944D02* D03* Y387244D02* D03* X314344Y363944D02* D03* Y387244D02* D03* D17* X143944Y184344D02* D03* X144057Y207187D02* D03* X323944Y184344D02* D03* X324057Y207187D02* D03* X143944Y364344D02* D03* X144057Y387187D02* D03* X323944Y364344D02* D03* X324057Y387187D02* D03* D18* X159744Y181244D02* D03* X169000Y157000D02* D03* X339744Y181244D02* D03* X349000Y157000D02* D03* X159744Y361244D02* D03* X169000Y337000D02* D03* X339744Y361244D02* D03* X349000Y337000D02* D03* D19* X165650Y181244D02* D03* X174906Y157000D02* D03* X345650Y181244D02* D03* X354906Y157000D02* D03* X165650Y361244D02* D03* X174906Y337000D02* D03* X345650Y361244D02* D03* X354906Y337000D02* D03* D20* X157920Y196084D02* D03* X337920D02* D03* X157920Y376084D02* D03* X337920D02* D03* D21* X157920Y192344D02* D03* Y188604D02* D03* X167368D02* D03* Y192344D02* D03* Y196084D02* D03* X337920Y192344D02* D03* Y188604D02* D03* X347368D02* D03* Y192344D02* D03* Y196084D02* D03* X157920Y372344D02* D03* Y368604D02* D03* X167368D02* D03* Y372344D02* D03* Y376084D02* D03* X337920Y372344D02* D03* Y368604D02* D03* X347368D02* D03* Y372344D02* D03* Y376084D02* D03* D22* X253824Y223760D02* D03* X433824D02* D03* X253824Y403760D02* D03* X433824D02* D03* D23* X253824Y227500D02* D03* Y231240D02* D03* X244376D02* D03* Y223760D02* D03* X433824Y227500D02* D03* Y231240D02* D03* X424376D02* D03* Y223760D02* D03* X253824Y407500D02* D03* Y411240D02* D03* X244376D02* D03* Y403760D02* D03* X433824Y407500D02* D03* Y411240D02* D03* X424376D02* D03* Y403760D02* D03* D24* X237600Y224843D02* D03* Y230157D02* D03* Y241157D02* D03* Y235843D02* D03* X417600Y224843D02* D03* Y230157D02* D03* Y241157D02* D03* Y235843D02* D03* X237600Y404843D02* D03* Y410157D02* D03* Y421157D02* D03* Y415843D02* D03* X417600Y404843D02* D03* Y410157D02* D03* Y421157D02* D03* Y415843D02* D03* D25* X158744Y207744D02* D03* X174886D02* D03* X158744Y214043D02* D03* X174744D02* D03* X199244Y128945D02* D03* X215244D02* D03* X199102Y135244D02* D03* X215244D02* D03* X164744Y128945D02* D03* X180744D02* D03* X164602Y135244D02* D03* X180744D02* D03* X250744D02* D03* X234602D02* D03* X250744Y128945D02* D03* X234744D02* D03* X338744Y207744D02* D03* X354886D02* D03* X338744Y214043D02* D03* X354744D02* D03* X379244Y128945D02* D03* X395244D02* D03* X379102Y135244D02* D03* X395244D02* D03* X344744Y128945D02* D03* X360744D02* D03* X344602Y135244D02* D03* X360744D02* D03* X430744D02* D03* X414602D02* D03* X430744Y128945D02* D03* X414744D02* D03* X158744Y387744D02* D03* X174886D02* D03* X158744Y394043D02* D03* X174744D02* D03* X199244Y308945D02* D03* X215244D02* D03* X199102Y315244D02* D03* X215244D02* D03* X164744Y308945D02* D03* X180744D02* D03* X164602Y315244D02* D03* X180744D02* D03* X250744D02* D03* X234602D02* D03* X250744Y308945D02* D03* X234744D02* D03* X338744Y387744D02* D03* X354886D02* D03* X338744Y394043D02* D03* X354744D02* D03* X379244Y308945D02* D03* X395244D02* D03* X379102Y315244D02* D03* X395244D02* D03* X344744Y308945D02* D03* X360744D02* D03* X344602Y315244D02* D03* X360744D02* D03* X430744D02* D03* X414602D02* D03* X430744Y308945D02* D03* X414744D02* D03* D26* X204900Y166600D02* D03* X384900D02* D03* X204900Y346600D02* D03* X384900D02* D03* D27* X203091Y149479D02* D03* X187779Y164791D02* D03* X206709Y183721D02* D03* X222021Y168409D02* D03* X383091Y149479D02* D03* X367779Y164791D02* D03* X386709Y183721D02* D03* X402021Y168409D02* D03* X203091Y329479D02* D03* X187779Y344791D02* D03* X206709Y363721D02* D03* X222021Y348409D02* D03* X383091Y329479D02* D03* X367779Y344791D02* D03* X386709Y363721D02* D03* X402021Y348409D02* D03* D28* X201768Y150941D02* D03* X200376Y152333D02* D03* X198984Y153725D02* D03* X197592Y155116D02* D03* X196200Y156508D02* D03* X194808Y157900D02* D03* X193416Y159292D02* D03* X192025Y160684D02* D03* X190633Y162076D02* D03* X189241Y163468D02* D03* X208032Y182259D02* D03* X209424Y180867D02* D03* X210816Y179475D02* D03* X212208Y178084D02* D03* X213600Y176692D02* D03* X214992Y175300D02* D03* X216384Y173908D02* D03* X217775Y172516D02* D03* X219167Y171124D02* D03* X220559Y169732D02* D03* X381768Y150941D02* D03* X380376Y152333D02* D03* X378984Y153725D02* D03* X377592Y155116D02* D03* X376200Y156508D02* D03* X374808Y157900D02* D03* X373416Y159292D02* D03* X372025Y160684D02* D03* X370633Y162076D02* D03* X369241Y163468D02* D03* X388032Y182259D02* D03* X389424Y180867D02* D03* X390816Y179475D02* D03* X392208Y178084D02* D03* X393600Y176692D02* D03* X394992Y175300D02* D03* X396384Y173908D02* D03* X397775Y172516D02* D03* X399167Y171124D02* D03* X400559Y169732D02* D03* X201768Y330941D02* D03* X200376Y332333D02* D03* X198984Y333725D02* D03* X197592Y335116D02* D03* X196200Y336508D02* D03* X194808Y337900D02* D03* X193416Y339292D02* D03* X192025Y340684D02* D03* X190633Y342076D02* D03* X189241Y343468D02* D03* X208032Y362259D02* D03* X209424Y360867D02* D03* X210816Y359475D02* D03* X212208Y358084D02* D03* X213600Y356692D02* D03* X214992Y355300D02* D03* X216384Y353908D02* D03* X217775Y352516D02* D03* X219167Y351124D02* D03* X220559Y349732D02* D03* X381768Y330941D02* D03* X380376Y332333D02* D03* X378984Y333725D02* D03* X377592Y335116D02* D03* X376200Y336508D02* D03* X374808Y337900D02* D03* X373416Y339292D02* D03* X372025Y340684D02* D03* X370633Y342076D02* D03* X369241Y343468D02* D03* X388032Y362259D02* D03* X389424Y360867D02* D03* X390816Y359475D02* D03* X392208Y358084D02* D03* X393600Y356692D02* D03* X394992Y355300D02* D03* X396384Y353908D02* D03* X397775Y352516D02* D03* X399167Y351124D02* D03* X400559Y349732D02* D03* D29* X187779Y168409D02* D03* X203091Y183721D02* D03* X222021Y164791D02* D03* X367779Y168409D02* D03* X383091Y183721D02* D03* X402021Y164791D02* D03* X187779Y348409D02* D03* X203091Y363721D02* D03* X222021Y344791D02* D03* X367779Y348409D02* D03* X383091Y363721D02* D03* X402021Y344791D02* D03* D30* X189241Y169732D02* D03* X190633Y171124D02* D03* X192025Y172516D02* D03* X193416Y173908D02* D03* X194808Y175300D02* D03* X196200Y176692D02* D03* X197592Y178084D02* D03* X198984Y179475D02* D03* X200376Y180867D02* D03* X201768Y182259D02* D03* X220559Y163468D02* D03* X219167Y162076D02* D03* X217775Y160684D02* D03* X216384Y159292D02* D03* X214992Y157900D02* D03* X213600Y156508D02* D03* X212208Y155116D02* D03* X210816Y153725D02* D03* X209424Y152333D02* D03* X208032Y150941D02* D03* X369241Y169732D02* D03* X370633Y171124D02* D03* X372025Y172516D02* D03* X373416Y173908D02* D03* X374808Y175300D02* D03* X376200Y176692D02* D03* X377592Y178084D02* D03* X378984Y179475D02* D03* X380376Y180867D02* D03* X381768Y182259D02* D03* X400559Y163468D02* D03* X399167Y162076D02* D03* X397775Y160684D02* D03* X396384Y159292D02* D03* X394992Y157900D02* D03* X393600Y156508D02* D03* X392208Y155116D02* D03* X390816Y153725D02* D03* X389424Y152333D02* D03* X388032Y150941D02* D03* X189241Y349732D02* D03* X190633Y351124D02* D03* X192025Y352516D02* D03* X193416Y353908D02* D03* X194808Y355300D02* D03* X196200Y356692D02* D03* X197592Y358084D02* D03* X198984Y359475D02* D03* X200376Y360867D02* D03* X201768Y362259D02* D03* X220559Y343468D02* D03* X219167Y342076D02* D03* X217775Y340684D02* D03* X216384Y339292D02* D03* X214992Y337900D02* D03* X213600Y336508D02* D03* X212208Y335116D02* D03* X210816Y333725D02* D03* X209424Y332333D02* D03* X208032Y330941D02* D03* X369241Y349732D02* D03* X370633Y351124D02* D03* X372025Y352516D02* D03* X373416Y353908D02* D03* X374808Y355300D02* D03* X376200Y356692D02* D03* X377592Y358084D02* D03* X378984Y359475D02* D03* X380376Y360867D02* D03* X381768Y362259D02* D03* X400559Y343468D02* D03* X399167Y342076D02* D03* X397775Y340684D02* D03* X396384Y339292D02* D03* X394992Y337900D02* D03* X393600Y336508D02* D03* X392208Y335116D02* D03* X390816Y333725D02* D03* X389424Y332333D02* D03* X388032Y330941D02* D03* D31* X206709Y149479D02* D03* X386709D02* D03* X206709Y329479D02* D03* X386709D02* D03* D32* X145632Y228844D02* D03* X156656D02* D03* X145532Y248544D02* D03* X156556D02* D03* X325632Y228844D02* D03* X336656D02* D03* X325532Y248544D02* D03* X336556D02* D03* X145632Y408844D02* D03* X156656D02* D03* X145532Y428544D02* D03* X156556D02* D03* X325632Y408844D02* D03* X336656D02* D03* X325532Y428544D02* D03* X336556D02* D03* D33* X181344Y246544D02* D03* X361344D02* D03* X181344Y426544D02* D03* X361344D02* D03* D34* X169730Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* Y237587D02* D03* X192958Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* X349730Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* Y237587D02* D03* X372958Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* X169730Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* Y417587D02* D03* X192958Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* X349730Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* Y417587D02* D03* X372958Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* D35* X192958Y237587D02* D03* X372958D02* D03* X192958Y417587D02* D03* X372958D02* D03* D36* X259067Y172744D02* D03* X249421Y169004D02* D03* Y176484D02* D03* X258567Y190244D02* D03* X248921Y186504D02* D03* Y193984D02* D03* X259067Y206244D02* D03* X249421Y202504D02* D03* Y209984D02* D03* X439067Y172744D02* D03* X429421Y169004D02* D03* Y176484D02* D03* X438567Y190244D02* D03* X428921Y186504D02* D03* Y193984D02* D03* X439067Y206244D02* D03* X429421Y202504D02* D03* Y209984D02* D03* X259067Y352744D02* D03* X249421Y349004D02* D03* Y356484D02* D03* X258567Y370244D02* D03* X248921Y366504D02* D03* Y373984D02* D03* X259067Y386244D02* D03* X249421Y382504D02* D03* Y389984D02* D03* X439067Y352744D02* D03* X429421Y349004D02* D03* Y356484D02* D03* X438567Y370244D02* D03* X428921Y366504D02* D03* Y373984D02* D03* X439067Y386244D02* D03* X429421Y382504D02* D03* Y389984D02* D03* D37* X168644Y273744D02* D03* X193044Y273687D02* D03* X348644Y273744D02* D03* X373044Y273687D02* D03* X168644Y453744D02* D03* X193044Y453687D02* D03* X348644Y453744D02* D03* X373044Y453687D02* D03* D38* X191744Y269244D02* X196187Y273687D01* X197044Y274544D02* X206744D01* X196187Y273687D02* X197044Y274544D01* X205244Y259744D02* X205244Y259744D01* X205244Y252744D02* Y259744D01* X188000Y253800D02* X200800Y266600D01* X205244Y252744D02* X212744Y260244D01* X214832D01* X220044Y255032D01* Y243141D02* Y255032D01* Y243141D02* X227343Y235843D01* X216114Y245344D02* X234382Y227076D01* Y224843D02* Y227076D01* X201000Y246744D02* X230700Y217044D01* X200709Y246744D02* X201000D01* X230700Y211200D02* Y217044D01* X225244Y245244D02* X232244Y238244D01* X225244Y245244D02* Y252744D01* X216114Y245344D02* Y251874D01* X242618Y142900D02* Y144000D01* X240218Y140500D02* X242618Y142900D01* X232600Y140500D02* X240218D01* X233455Y128945D02* X234744D01* X229700Y132700D02* X233455Y128945D01* X215244D02* X221045D01* X211300Y155800D02* X211524D01* X212208Y155116D01* X204900Y162424D02* X211524Y155800D01* X180244Y260744D02* Y267744D01* X149344Y246444D02* Y250100D01* X160644Y192344D02* X161500D01* X145632Y227500D02* Y228844D01* Y224900D02* Y227500D01* X144055Y207082D02* X144056D01* X144031Y207083D02* X144055Y207082D01* X142992Y207100D02* X144031Y207083D01* Y207100D01* X143944Y180244D02* Y184344D01* Y179544D02* Y180244D01* X131100Y207100D02* X131400D01* X131756Y183944D02* X132900D01* X249400Y232205D02* X250364Y231240D01* X246583Y235022D02* X249400Y232205D01* X251900Y231240D02* X253824D01* X250364D02* X251900D01* X167144Y273744D02* X168644D01* X169544Y234044D02* X172444D01* X168956D02* X169544D01* X167000Y273744D02* X167144D01* X164600D02* X167000D01* X172444Y234044D02* X172700D01* X166644D02* X168956D01* X150244Y207744D02* X158744D01* X200246Y149418D02* X201768Y150941D01* X200246Y143076D02* Y149418D01* X192414Y135244D02* X200246Y143076D01* X180744Y135244D02* X192414D01* X163900Y181244D02* X165650D01* X176244Y242983D02* Y268744D01* X144031Y205587D02* X144056Y207082D01* X246583Y235022D02* Y246681D01* X249400Y229705D02* Y232205D01* X184500Y143895D02* Y158727D01* X189241Y163468D01* X283500Y181200D02* X288300Y176400D01* X183987Y168409D02* X187779D01* X234382Y224843D02* X237600D01* X233941Y225283D02* X234382Y224843D01* X151744Y166744D02* X155385Y163103D01* X184812D01* X186500Y164791D01* X187779D01* X143244Y189356D02* Y190626D01* Y189356D02* X144031Y188569D01* Y185901D02* Y188569D01* X188700Y186400D02* Y218700D01* X185500Y141665D02* X187425Y143590D01* Y147875D01* X185700Y149600D02* X187425Y147875D01* X185700Y149600D02* Y154360D01* X192025Y160684D01* X167300Y235700D02* X168956Y234044D01* X167300Y237587D02* X169730D01* X224628Y165100D02* X232600D01* X224318Y164791D02* X224628Y165100D01* X222021Y164791D02* X224318D01* X148788Y227500D02* X149644Y226644D01* X250744Y135244D02* Y151189D01* X244533Y157400D02* X250744Y151189D01* X227090Y157400D02* X244533D01* X194906Y230200D02* X195700D01* X193600Y228894D02* X194906Y230200D01* X193400Y176708D02* X194808Y175300D01* X194800Y178092D02* X196200Y176692D01* X131400Y200075D02* X131433D01* X229700Y132700D02* Y137300D01* X224818Y161400D02* X226418Y163000D01* X172056Y192344D02* X173100Y191300D01* X167368Y192344D02* X172056D01* X174744Y214043D02* X179800D01* Y205300D02* Y214043D01* X162400Y194100D02* Y199400D01* X160644Y192344D02* X162400Y194100D01* X157920Y192344D02* X160644D01* X194700Y141400D02* Y149440D01* X198984Y153725D01* X162500Y176921D02* X163177Y176244D01* X162500Y176921D02* Y191344D01* X161500Y192344D02* X162500Y191344D01* X165044Y166256D02* X166000Y165300D01* X165044Y166256D02* Y175044D01* X156700D02* X165044D01* X151300Y180444D02* X156700Y175044D01* X151300Y180444D02* Y191185D01* X149300Y193185D02* X151300Y191185D01* X143244Y193185D02* X149300D01* X192600Y153100D02* X192792D01* X196200Y156508D01* X188900Y152400D02* X190500Y154000D01* Y156376D01* X193416Y159292D01* X197900Y146186D02* Y149856D01* X200376Y152333D01* X204900Y166600D02* X206292D01* X214992Y175300D01* X190000Y168800D02* X202700D01* X204900Y166600D01* X207900Y159200D02* X211300Y155800D01* X194808Y157900D02* X196108Y159200D01* X204900Y162424D02* Y166600D01* X251900Y223760D02* X253824D01* X251100Y224560D02* X251900Y223760D01* X251100Y224560D02* Y230440D01* X251900Y231240D01* X221045Y128945D02* X232600Y140500D01* X226188Y285800D02* X235744Y276244D01* X174906Y157000D02* X177600D01* X178000Y156600D01* X154600Y181244D02* X159744D01* X174700Y214043D02* X174744D01* X143944Y179544D02* X151744Y171744D01* X168430Y259958D02* X169730D01* X166744Y261644D02* X168430Y259958D01* X172700Y234044D02* X173783Y232961D01* Y230244D02* Y232961D01* X145532Y248544D02* Y250100D01* X146400Y214043D02* X158744D01* X144057Y207187D02* Y211700D01* X131433Y192201D02* X132900D01* X136200Y209524D02* X137775Y211098D01* X166844Y274044D02* X167000D01* X132244Y252544D02* Y253844D01* X132044Y252344D02* X132244Y252544D01* X132044Y232344D02* X132244D01* X144057Y207100D02* Y207187D01* X127200Y211000D02* X131100Y207100D01* X127200Y211000D02* Y224900D01* X129500Y227200D01* X134000D01* X136300Y224900D01* X145632D01* X141244Y246244D02* Y250244D01* X164600Y285444D02* X167944D01* X149244Y246344D02* X149344Y246444D01* X137600Y247200D02* X140944Y250544D01* X129100Y247200D02* X137600D01* X127200Y245300D02* X129100Y247200D01* X127200Y229300D02* Y245300D01* Y229300D02* X129000Y227500D01* X137700D01* X141044Y230844D01* Y226544D02* Y230844D01* X196244Y264744D02* Y268744D01* X156556Y248544D02* Y248600D01* X158744Y207744D02* X174886D01* X199102Y135244D02* X215244D01* X234602D02* X250744D01* X164602D02* X180744D01* X234744Y128945D02* X250744D01* X199244D02* X215244D01* X180744D02* X199244D01* X164744D02* X180744D01* X144031Y185087D02* Y185901D01* X143944Y185000D02* X144031Y185087D01* X143944Y184344D02* Y185000D01* X131433Y192201D02* Y200075D01* X185675Y251700D02* X189476Y255501D01* X167368Y196084D02* X173404D01* X175244Y194244D01* Y189296D02* Y194244D01* Y189296D02* X192025Y172516D01* X230157Y154000D02* X237697D01* X230157Y144157D02* X233800D01* X233957Y144000D01* X237697D01* X240400Y230157D02* X241483Y231240D01* X244376D01* X237600Y230157D02* X238630D01* X241300Y232827D01* Y239400D01* X239543Y241157D02* X241300Y239400D01* X237600Y241157D02* X239543D01* X238630Y230157D02* X240400D01* X185675Y250875D02* Y251700D01* X155056Y248600D02* X155112D01* X167000Y273888D02* Y274044D01* X180100Y285800D02* X225588D01* X226188D01* X237600Y224843D02* X240400D01* X241483Y223760D01* X244376D01* X246300Y210784D02* X247100Y209984D01* X244376Y223760D02* X246300D01* X236800Y174900D02* X242696Y169004D01* X199300Y181944D02* X200376Y180867D01* X222021Y168409D02* X230500D01* X252200Y162700D02* Y218500D01* X247500Y223200D02* X252200Y218500D01* X247500Y223200D02* Y226500D01* X247300Y226700D02* X247500Y226500D01* X247300Y226700D02* Y232607D01* X243900Y236007D02* X247300Y232607D01* X243900Y236007D02* Y237200D01* X258744Y216444D02* X283500Y241200D01* X255100Y190400D02* X255256Y190244D01* X258567D01* X269100Y251200D02* X283500D01* X268518Y250618D02* X269100Y251200D01* X255244Y250618D02* X268518D01* X248921Y196721D02* X249100Y196900D01* X248921Y193984D02* Y196721D01* X238900Y186044D02* Y220700D01* X272900Y174500D02* Y205200D01* X258567Y190244D02* X263444D01* X267300Y194100D01* Y207700D01* X268065Y208465D01* Y211097D01* X276000Y219032D01* Y223700D01* X283500Y231200D01* X220559Y169732D02* X223323Y172496D01* X234404D01* X246500Y160400D01* X255100D01* X270733Y176033D01* Y206900D01* X272418Y208585D01* X274047D01* X281461Y216000D01* X286300D01* X288300Y214000D01* Y202100D02* Y214000D01* X287400Y201200D02* X288300Y202100D01* X283500Y201200D02* X287400D01* X253824Y227500D02* X256500D01* Y235800D01* X250900Y241400D02* X256500Y235800D01* X250900Y241400D02* Y256300D01* X240600Y266600D02* X250900Y256300D01* X200800Y266600D02* X240600D01* X245900Y172900D02* X246900Y171900D01* Y169004D02* Y171900D01* X245500Y186600D02* X245596Y186504D01* X248921D01* X246216Y193984D02* X248921D01* X243400Y179988D02* Y191168D01* Y179988D02* X246904Y176484D01* X249421D01* X247100Y202504D02* X249421D01* X246100Y201504D02* X247100Y202504D01* X246100Y200700D02* Y201504D01* X219167Y162076D02* X219439D01* X221415Y160100D01* X228900D01* X197361Y250383D02* X199244Y248500D01* X192958Y250383D02* X197361D01* X227100Y184600D02* X234700Y192200D01* X275500Y177100D02* Y203200D01* X283500Y211200D01* X245941Y193710D02* X248921Y193984D01* X243951Y195700D02* X245941Y193710D01* X243951Y195700D02* Y207635D01* X247100Y209984D01* X249421D01* X266700Y181800D02* X269533Y184633D01* Y209785D02* X275032Y215285D01* X259067Y172744D02* X261400D01* X269533Y180877D01* X275032Y215285D02* X277585D01* X283500Y221200D01* X258744Y206244D02* X259067D01* X155056Y248544D02* Y248600D01* X155112D02* X156556D01* X132244Y232344D02* Y233844D01* X242696Y169004D02* X246900D01* X249421D01* X131756Y181188D02* Y183944D01* Y181188D02* X132700Y180244D01* X143944D01* X132900Y183944D02* Y192201D01* X131400Y200075D02* Y207100D01* X134344Y207244D02* X142992Y207100D01* X133008Y209524D02* X136200D01* X144031Y207100D02* X144057D01* X137775Y211098D02* X140488D01* X250744Y128900D02* X252700D01* X144057Y211700D02* X146400Y214043D01* X158744D02* X174700D01* Y223100D01* X180244Y228644D01* X180200Y222600D02* Y250900D01* X145632Y227500D02* X148788D01* X145532Y250100D02* X149344D01* X180244Y235700D02* Y250875D01* X180200Y250900D02* X193800Y264500D01* X196108Y159200D02* X207900D01* X272900Y174500D02* X275500Y177100D01* X189476Y255501D02* X192900D01* X200244Y264744D02* Y268744D01* X243400Y191168D02* X245941Y193710D01* X246216Y193984D01* X246300Y210784D02* Y223760D01* X167000Y273744D02* Y273888D01* X164600Y273744D02* Y285444D01* X167300Y235700D02* Y237587D01* X168344Y274044D02* X180100Y285800D01* X269533Y180877D02* Y184633D01* Y209785D01* X258744Y202700D02* Y206244D01* Y216444D01* X162400Y199400D02* X165244Y202244D01* X176744D01* X179800Y205300D01* X209424Y180867D02* Y180924D01* X212744Y184244D01* Y185744D01* X221744Y184836D02* Y185244D01* X213600Y176692D02* X221744Y184836D01* X217744Y186404D02* Y187244D01* X210816Y179475D02* X217744Y186404D01* X219844Y189344D02* X220244Y189744D01* X216384Y159292D02* X218432Y157244D01* X220200D01* X213600Y156508D02* X216864Y153244D01* X220886D01* X222300Y151830D01* X214992Y157900D02* X218148Y154744D01* X223244D01* X225900Y157400D01* X227090D01* X206709Y183721D02* Y185509D01* X207744Y186544D01* Y188744D01* X190800Y217300D02* X191600D01* X194800Y178092D02* Y226100D01* X236800Y174900D02* Y193070D01* X201330Y194300D02* X235570D01* X236800Y193070D01* X203091Y183721D02* Y190091D01* X203244Y190244D01* X203744D01* X196444Y179232D02* X197592Y178084D01* X197644Y183599D02* X200376Y180867D01* X197644Y183599D02* Y190614D01* X201330Y194300D01* X183244Y187244D02* Y187941D01* X172823Y198362D02* X183244Y187941D01* X163900Y181244D02* Y197826D01* X164437Y198362D01* X172823D01* X178744Y200744D02* X187244Y192244D01* X216384Y173908D02* X216408D01* X190744Y176580D02* X193416Y173908D01* X190744Y176580D02* Y180944D01* X189744Y185244D02* Y185356D01* X188700Y186400D02* X189744Y185356D01* X187244Y181244D02* Y192244D01* X190744Y180944D02* X192244Y182444D01* Y216656D01* X191600Y217300D02* X192244Y216656D01* X193600Y179944D02* Y228894D01* X193400Y179744D02* X193600Y179944D01* X193400Y176708D02* Y179744D01* X199744Y184283D02* X201768Y182259D01* X199744Y184283D02* Y188244D01* X229571Y144744D02* X230157Y144157D01* X208032Y150941D02* X213229Y145744D01* X206709Y149479D02* X211645Y144544D01* X221901Y145744D02* X230157Y154000D01* X211645Y144544D02* X222398D01* X213229Y145744D02* X221901D01* X222398Y144544D02* X222599Y144744D01* X229571D01* X209424Y152333D02* X213012Y148744D01* X213244D01* Y148244D02* Y148744D01* X214744Y142244D02* X215244Y142744D01* X214744Y142244D02* Y142244D01* X215244Y135244D02* Y142744D01* X242618Y144000D02* Y154000D01* X192600Y149500D02* Y150124D01* X197592Y155116D01* X143244Y200862D02* X150362D01* X152244Y202744D01* X159087D01* X210816Y153725D02* X213696Y150844D01* X217144D01* X217744Y150244D01* X220559Y163468D02* X222627Y161400D01* X224818D01* X212208Y178084D02* X219644Y185520D01* Y186114D01* X219844Y186314D01* Y189344D01* X163177Y176244D02* X182729D01* X189241Y169732D01* X192958Y252942D02* X197046D01* X200444Y249544D01* X227343Y235843D02* X237600D01* X200444Y248706D02* Y249544D01* Y248706D02* X201205Y247944D01* X199244Y248208D02* Y248500D01* Y248208D02* X200709Y246744D01* X198224Y245049D02* Y245265D01* X192958D02* X198224D01* X186300Y200600D02* Y220700D01* X192958Y240146D02* X197842D01* X201744Y236244D02* X202244D01* X197842Y240146D02* X201744Y236244D01* X201205Y247944D02* X201497D01* X214244Y243244D02* X215244D01* X212744Y241744D02* X214244Y243244D01* X201497Y247944D02* X207697Y241744D01* X212744D01* X192958Y247824D02* X197932D01* X198224Y245049D02* X199744Y243529D01* Y243244D02* Y243529D01* X200274Y239744D02* X201244D01* X192958Y242706D02* X197313D01* X200274Y239744D01* X197932Y247824D02* X200411Y245344D01* X200614D01* X204744Y241214D01* Y235774D02* Y241214D01* X195070Y226100D02* X204744Y235774D01* X194800Y226100D02* X195070D01* X196444Y179232D02* Y224444D01* X201244Y229244D01* X196774Y234244D02* X198744D01* X190244Y224644D02* Y225900D01* X186300Y220700D02* X190244Y224644D01* X192344Y229814D02* X196774Y234244D01* X188700Y218700D02* X192344Y222344D01* Y229814D01* X255244Y238753D02* Y242744D01* Y238753D02* X257700Y236297D01* Y221679D02* Y236297D01* X255244Y219223D02* X257700Y221679D01* X255244Y215244D02* Y219223D01* X232244Y202744D02* X234744D01* X226744Y197244D02* X232244Y202744D01* X201188Y197244D02* X226744D01* X198544Y199889D02* X201188Y197244D01* X187087Y237587D02* X192958D01* X183744Y234244D02* X187087Y237587D01* X220744Y178244D02* X221744D01* X217775Y172516D02* X221404Y176144D01* X222614D01* X216408Y173908D02* X220744Y178244D01* X219167Y171124D02* X219291D01* X234700Y186533D01* Y188100D01* X222614Y176144D02* X227100Y180630D01* Y184600D01* X214992Y175300D02* X226244Y186552D01* Y191244D01* X174065Y141665D02* X185500D01* X141744Y164632D02* Y166744D01* Y164632D02* X144132Y162244D01* X153486D01* X174065Y141665D01* X128244Y199944D02* X142300Y214000D01* X128244Y138744D02* Y199944D01* Y138744D02* X138043Y128945D01* X164744D01* X256244Y157844D02* X268744Y170344D01* X272900Y174500D01* X252700Y128900D02* X256244Y132444D01* Y157844D01* X288300Y138500D02* Y176400D01* X259244Y157244D02* X269744Y167744D01* X280044D01* X283500Y171200D01* X258744Y134244D02* X264244Y128744D01* X278544D01* X288300Y138500D01* X169000Y157000D02* X171744Y154256D01* Y150744D02* Y154256D01* X371744Y269244D02* X376187Y273687D01* X377044Y274544D02* X386744D01* X376187Y273687D02* X377044Y274544D01* X385244Y259744D02* X385244Y259744D01* X385244Y252744D02* Y259744D01* X368000Y253800D02* X380800Y266600D01* X385244Y252744D02* X392744Y260244D01* X394832D01* X400044Y255032D01* Y243141D02* Y255032D01* Y243141D02* X407343Y235843D01* X396114Y245344D02* X414382Y227076D01* Y224843D02* Y227076D01* X381000Y246744D02* X410700Y217044D01* X380709Y246744D02* X381000D01* X410700Y211200D02* Y217044D01* X405244Y245244D02* X412244Y238244D01* X405244Y245244D02* Y252744D01* X396114Y245344D02* Y251874D01* X422618Y142900D02* Y144000D01* X420218Y140500D02* X422618Y142900D01* X412600Y140500D02* X420218D01* X413455Y128945D02* X414744D01* X409700Y132700D02* X413455Y128945D01* X395244D02* X401045D01* X391300Y155800D02* X391524D01* X392208Y155116D01* X384900Y162424D02* X391524Y155800D01* X360244Y260744D02* Y267744D01* X329344Y246444D02* Y250100D01* X340644Y192344D02* X341500D01* X325632Y227500D02* Y228844D01* Y224900D02* Y227500D01* X324055Y207082D02* X324056D01* X324031Y207083D02* X324055Y207082D01* X322992Y207100D02* X324031Y207083D01* Y207100D01* X323944Y180244D02* Y184344D01* Y179544D02* Y180244D01* X311100Y207100D02* X311400D01* X311756Y183944D02* X312900D01* X429400Y232205D02* X430364Y231240D01* X426583Y235022D02* X429400Y232205D01* X431900Y231240D02* X433824D01* X430364D02* X431900D01* X347144Y273744D02* X348644D01* X349544Y234044D02* X352444D01* X348956D02* X349544D01* X347000Y273744D02* X347144D01* X344600D02* X347000D01* X352444Y234044D02* X352700D01* X346644D02* X348956D01* X330244Y207744D02* X338744D01* X380246Y149418D02* X381768Y150941D01* X380246Y143076D02* Y149418D01* X372414Y135244D02* X380246Y143076D01* X360744Y135244D02* X372414D01* X343900Y181244D02* X345650D01* X356244Y242983D02* Y268744D01* X324031Y205587D02* X324056Y207082D01* X426583Y235022D02* Y246681D01* X429400Y229705D02* Y232205D01* X364500Y143895D02* Y158727D01* X369241Y163468D01* X463500Y181200D02* X468300Y176400D01* X363987Y168409D02* X367779D01* X414382Y224843D02* X417600D01* X413941Y225283D02* X414382Y224843D01* X331744Y166744D02* X335385Y163103D01* X364812D01* X366500Y164791D01* X367779D01* X323244Y189356D02* Y190626D01* Y189356D02* X324031Y188569D01* Y185901D02* Y188569D01* X368700Y186400D02* Y218700D01* X365500Y141665D02* X367425Y143590D01* Y147875D01* X365700Y149600D02* X367425Y147875D01* X365700Y149600D02* Y154360D01* X372025Y160684D01* X347300Y235700D02* X348956Y234044D01* X347300Y237587D02* X349730D01* X404628Y165100D02* X412600D01* X404318Y164791D02* X404628Y165100D01* X402021Y164791D02* X404318D01* X328788Y227500D02* X329644Y226644D01* X430744Y135244D02* Y151189D01* X424533Y157400D02* X430744Y151189D01* X407090Y157400D02* X424533D01* X374906Y230200D02* X375700D01* X373600Y228894D02* X374906Y230200D01* X373400Y176708D02* X374808Y175300D01* X374800Y178092D02* X376200Y176692D01* X311400Y200075D02* X311433D01* X409700Y132700D02* Y137300D01* X404818Y161400D02* X406418Y163000D01* X352056Y192344D02* X353100Y191300D01* X347368Y192344D02* X352056D01* X354744Y214043D02* X359800D01* Y205300D02* Y214043D01* X342400Y194100D02* Y199400D01* X340644Y192344D02* X342400Y194100D01* X337920Y192344D02* X340644D01* X374700Y141400D02* Y149440D01* X378984Y153725D01* X342500Y176921D02* X343177Y176244D01* X342500Y176921D02* Y191344D01* X341500Y192344D02* X342500Y191344D01* X345044Y166256D02* X346000Y165300D01* X345044Y166256D02* Y175044D01* X336700D02* X345044D01* X331300Y180444D02* X336700Y175044D01* X331300Y180444D02* Y191185D01* X329300Y193185D02* X331300Y191185D01* X323244Y193185D02* X329300D01* X372600Y153100D02* X372792D01* X376200Y156508D01* X368900Y152400D02* X370500Y154000D01* Y156376D01* X373416Y159292D01* X377900Y146186D02* Y149856D01* X380376Y152333D01* X384900Y166600D02* X386292D01* X394992Y175300D01* X370000Y168800D02* X382700D01* X384900Y166600D01* X387900Y159200D02* X391300Y155800D01* X374808Y157900D02* X376108Y159200D01* X384900Y162424D02* Y166600D01* X431900Y223760D02* X433824D01* X431100Y224560D02* X431900Y223760D01* X431100Y224560D02* Y230440D01* X431900Y231240D01* X401045Y128945D02* X412600Y140500D01* X406188Y285800D02* X415744Y276244D01* X354906Y157000D02* X357600D01* X358000Y156600D01* X334600Y181244D02* X339744D01* X354700Y214043D02* X354744D01* X323944Y179544D02* X331744Y171744D01* X348430Y259958D02* X349730D01* X346744Y261644D02* X348430Y259958D01* X352700Y234044D02* X353783Y232961D01* Y230244D02* Y232961D01* X325532Y248544D02* Y250100D01* X326400Y214043D02* X338744D01* X324057Y207187D02* Y211700D01* X311433Y192201D02* X312900D01* X316200Y209524D02* X317775Y211098D01* X346844Y274044D02* X347000D01* X312244Y252544D02* Y253844D01* X312044Y252344D02* X312244Y252544D01* X312044Y232344D02* X312244D01* X324057Y207100D02* Y207187D01* X307200Y211000D02* X311100Y207100D01* X307200Y211000D02* Y224900D01* X309500Y227200D01* X314000D01* X316300Y224900D01* X325632D01* X321244Y246244D02* Y250244D01* X344600Y285444D02* X347944D01* X329244Y246344D02* X329344Y246444D01* X317600Y247200D02* X320944Y250544D01* X309100Y247200D02* X317600D01* X307200Y245300D02* X309100Y247200D01* X307200Y229300D02* Y245300D01* Y229300D02* X309000Y227500D01* X317700D01* X321044Y230844D01* Y226544D02* Y230844D01* X376244Y264744D02* Y268744D01* X336556Y248544D02* Y248600D01* X338744Y207744D02* X354886D01* X379102Y135244D02* X395244D01* X414602D02* X430744D01* X344602D02* X360744D01* X414744Y128945D02* X430744D01* X379244D02* X395244D01* X360744D02* X379244D01* X344744D02* X360744D01* X324031Y185087D02* Y185901D01* X323944Y185000D02* X324031Y185087D01* X323944Y184344D02* Y185000D01* X311433Y192201D02* Y200075D01* X365675Y251700D02* X369476Y255501D01* X347368Y196084D02* X353404D01* X355244Y194244D01* Y189296D02* Y194244D01* Y189296D02* X372025Y172516D01* X410157Y154000D02* X417697D01* X410157Y144157D02* X413800D01* X413957Y144000D01* X417697D01* X420400Y230157D02* X421483Y231240D01* X424376D01* X417600Y230157D02* X418630D01* X421300Y232827D01* Y239400D01* X419543Y241157D02* X421300Y239400D01* X417600Y241157D02* X419543D01* X418630Y230157D02* X420400D01* X365675Y250875D02* Y251700D01* X335056Y248600D02* X335112D01* X347000Y273888D02* Y274044D01* X360100Y285800D02* X405588D01* X406188D01* X417600Y224843D02* X420400D01* X421483Y223760D01* X424376D01* X426300Y210784D02* X427100Y209984D01* X424376Y223760D02* X426300D01* X416800Y174900D02* X422696Y169004D01* X379300Y181944D02* X380376Y180867D01* X402021Y168409D02* X410500D01* X432200Y162700D02* Y218500D01* X427500Y223200D02* X432200Y218500D01* X427500Y223200D02* Y226500D01* X427300Y226700D02* X427500Y226500D01* X427300Y226700D02* Y232607D01* X423900Y236007D02* X427300Y232607D01* X423900Y236007D02* Y237200D01* X438744Y216444D02* X463500Y241200D01* X435100Y190400D02* X435256Y190244D01* X438567D01* X449100Y251200D02* X463500D01* X448518Y250618D02* X449100Y251200D01* X435244Y250618D02* X448518D01* X428921Y196721D02* X429100Y196900D01* X428921Y193984D02* Y196721D01* X418900Y186044D02* Y220700D01* X452900Y174500D02* Y205200D01* X438567Y190244D02* X443444D01* X447300Y194100D01* Y207700D01* X448065Y208465D01* Y211097D01* X456000Y219032D01* Y223700D01* X463500Y231200D01* X400559Y169732D02* X403323Y172496D01* X414404D01* X426500Y160400D01* X435100D01* X450733Y176033D01* Y206900D01* X452418Y208585D01* X454047D01* X461461Y216000D01* X466300D01* X468300Y214000D01* Y202100D02* Y214000D01* X467400Y201200D02* X468300Y202100D01* X463500Y201200D02* X467400D01* X433824Y227500D02* X436500D01* Y235800D01* X430900Y241400D02* X436500Y235800D01* X430900Y241400D02* Y256300D01* X420600Y266600D02* X430900Y256300D01* X380800Y266600D02* X420600D01* X425900Y172900D02* X426900Y171900D01* Y169004D02* Y171900D01* X425500Y186600D02* X425596Y186504D01* X428921D01* X426216Y193984D02* X428921D01* X423400Y179988D02* Y191168D01* Y179988D02* X426904Y176484D01* X429421D01* X427100Y202504D02* X429421D01* X426100Y201504D02* X427100Y202504D01* X426100Y200700D02* Y201504D01* X399167Y162076D02* X399439D01* X401415Y160100D01* X408900D01* X377361Y250383D02* X379244Y248500D01* X372958Y250383D02* X377361D01* X407100Y184600D02* X414700Y192200D01* X455500Y177100D02* Y203200D01* X463500Y211200D01* X425941Y193710D02* X428921Y193984D01* X423951Y195700D02* X425941Y193710D01* X423951Y195700D02* Y207635D01* X427100Y209984D01* X429421D01* X446700Y181800D02* X449533Y184633D01* Y209785D02* X455032Y215285D01* X439067Y172744D02* X441400D01* X449533Y180877D01* X455032Y215285D02* X457585D01* X463500Y221200D01* X438744Y206244D02* X439067D01* X335056Y248544D02* Y248600D01* X335112D02* X336556D01* X312244Y232344D02* Y233844D01* X422696Y169004D02* X426900D01* X429421D01* X311756Y181188D02* Y183944D01* Y181188D02* X312700Y180244D01* X323944D01* X312900Y183944D02* Y192201D01* X311400Y200075D02* Y207100D01* X314344Y207244D02* X322992Y207100D01* X313008Y209524D02* X316200D01* X324031Y207100D02* X324057D01* X317775Y211098D02* X320488D01* X430744Y128900D02* X432700D01* X324057Y211700D02* X326400Y214043D01* X338744D02* X354700D01* Y223100D01* X360244Y228644D01* X360200Y222600D02* Y250900D01* X325632Y227500D02* X328788D01* X325532Y250100D02* X329344D01* X360244Y235700D02* Y250875D01* X360200Y250900D02* X373800Y264500D01* X376108Y159200D02* X387900D01* X452900Y174500D02* X455500Y177100D01* X369476Y255501D02* X372900D01* X380244Y264744D02* Y268744D01* X423400Y191168D02* X425941Y193710D01* X426216Y193984D01* X426300Y210784D02* Y223760D01* X347000Y273744D02* Y273888D01* X344600Y273744D02* Y285444D01* X347300Y235700D02* Y237587D01* X348344Y274044D02* X360100Y285800D01* X449533Y180877D02* Y184633D01* Y209785D01* X438744Y202700D02* Y206244D01* Y216444D01* X342400Y199400D02* X345244Y202244D01* X356744D01* X359800Y205300D01* X389424Y180867D02* Y180924D01* X392744Y184244D01* Y185744D01* X401744Y184836D02* Y185244D01* X393600Y176692D02* X401744Y184836D01* X397744Y186404D02* Y187244D01* X390816Y179475D02* X397744Y186404D01* X399844Y189344D02* X400244Y189744D01* X396384Y159292D02* X398432Y157244D01* X400200D01* X393600Y156508D02* X396864Y153244D01* X400886D01* X402300Y151830D01* X394992Y157900D02* X398148Y154744D01* X403244D01* X405900Y157400D01* X407090D01* X386709Y183721D02* Y185509D01* X387744Y186544D01* Y188744D01* X370800Y217300D02* X371600D01* X374800Y178092D02* Y226100D01* X416800Y174900D02* Y193070D01* X381330Y194300D02* X415570D01* X416800Y193070D01* X383091Y183721D02* Y190091D01* X383244Y190244D01* X383744D01* X376444Y179232D02* X377592Y178084D01* X377644Y183599D02* X380376Y180867D01* X377644Y183599D02* Y190614D01* X381330Y194300D01* X363244Y187244D02* Y187941D01* X352823Y198362D02* X363244Y187941D01* X343900Y181244D02* Y197826D01* X344437Y198362D01* X352823D01* X358744Y200744D02* X367244Y192244D01* X396384Y173908D02* X396408D01* X370744Y176580D02* X373416Y173908D01* X370744Y176580D02* Y180944D01* X369744Y185244D02* Y185356D01* X368700Y186400D02* X369744Y185356D01* X367244Y181244D02* Y192244D01* X370744Y180944D02* X372244Y182444D01* Y216656D01* X371600Y217300D02* X372244Y216656D01* X373600Y179944D02* Y228894D01* X373400Y179744D02* X373600Y179944D01* X373400Y176708D02* Y179744D01* X379744Y184283D02* X381768Y182259D01* X379744Y184283D02* Y188244D01* X409571Y144744D02* X410157Y144157D01* X388032Y150941D02* X393229Y145744D01* X386709Y149479D02* X391645Y144544D01* X401901Y145744D02* X410157Y154000D01* X391645Y144544D02* X402398D01* X393229Y145744D02* X401901D01* X402398Y144544D02* X402598Y144744D01* X409571D01* X389424Y152333D02* X393012Y148744D01* X393244D01* Y148244D02* Y148744D01* X394744Y142244D02* X395244Y142744D01* X394744Y142244D02* Y142244D01* X395244Y135244D02* Y142744D01* X422618Y144000D02* Y154000D01* X372600Y149500D02* Y150124D01* X377592Y155116D01* X323244Y200862D02* X330362D01* X332244Y202744D01* X339087D01* X390816Y153725D02* X393696Y150844D01* X397144D01* X397744Y150244D01* X400559Y163468D02* X402627Y161400D01* X404818D01* X392208Y178084D02* X399644Y185520D01* Y186114D01* X399844Y186314D01* Y189344D01* X343177Y176244D02* X362729D01* X369241Y169732D01* X372958Y252942D02* X377046D01* X380444Y249544D01* X407343Y235843D02* X417600D01* X380444Y248706D02* Y249544D01* Y248706D02* X381206Y247944D01* X379244Y248208D02* Y248500D01* Y248208D02* X380709Y246744D01* X378224Y245049D02* Y245265D01* X372958D02* X378224D01* X366300Y200600D02* Y220700D01* X372958Y240146D02* X377842D01* X381744Y236244D02* X382244D01* X377842Y240146D02* X381744Y236244D01* X381206Y247944D02* X381497D01* X394244Y243244D02* X395244D01* X392744Y241744D02* X394244Y243244D01* X381497Y247944D02* X387697Y241744D01* X392744D01* X372958Y247824D02* X377932D01* X378224Y245049D02* X379744Y243529D01* Y243244D02* Y243529D01* X380274Y239744D02* X381244D01* X372958Y242706D02* X377313D01* X380274Y239744D01* X377932Y247824D02* X380411Y245344D01* X380614D01* X384744Y241214D01* Y235774D02* Y241214D01* X375070Y226100D02* X384744Y235774D01* X374800Y226100D02* X375070D01* X376444Y179232D02* Y224444D01* X381244Y229244D01* X376774Y234244D02* X378744D01* X370244Y224644D02* Y225900D01* X366300Y220700D02* X370244Y224644D01* X372344Y229814D02* X376774Y234244D01* X368700Y218700D02* X372344Y222344D01* Y229814D01* X435244Y238753D02* Y242744D01* Y238753D02* X437700Y236297D01* Y221679D02* Y236297D01* X435244Y219223D02* X437700Y221679D01* X435244Y215244D02* Y219223D01* X412244Y202744D02* X414744D01* X406744Y197244D02* X412244Y202744D01* X381189Y197244D02* X406744D01* X378544Y199889D02* X381189Y197244D01* X367087Y237587D02* X372958D01* X363744Y234244D02* X367087Y237587D01* X400744Y178244D02* X401744D01* X397775Y172516D02* X401404Y176144D01* X402614D01* X396408Y173908D02* X400744Y178244D01* X399167Y171124D02* X399291D01* X414700Y186533D01* Y188100D01* X402614Y176144D02* X407100Y180630D01* Y184600D01* X394992Y175300D02* X406244Y186552D01* Y191244D01* X354065Y141665D02* X365500D01* X321744Y164632D02* Y166744D01* Y164632D02* X324132Y162244D01* X333486D01* X354065Y141665D01* X308244Y199944D02* X322300Y214000D01* X308244Y138744D02* Y199944D01* Y138744D02* X318043Y128945D01* X344744D01* X436244Y157844D02* X448744Y170344D01* X452900Y174500D01* X432700Y128900D02* X436244Y132444D01* Y157844D01* X468300Y138500D02* Y176400D01* X439244Y157244D02* X449744Y167744D01* X460044D01* X463500Y171200D01* X438744Y134244D02* X444244Y128744D01* X458544D01* X468300Y138500D01* X349000Y157000D02* X351744Y154256D01* Y150744D02* Y154256D01* X191744Y449244D02* X196187Y453687D01* X197044Y454544D02* X206744D01* X196187Y453687D02* X197044Y454544D01* X205244Y439744D02* X205244Y439744D01* X205244Y432744D02* Y439744D01* X188000Y433800D02* X200800Y446600D01* X205244Y432744D02* X212744Y440244D01* X214832D01* X220044Y435032D01* Y423141D02* Y435032D01* Y423141D02* X227343Y415843D01* X216114Y425344D02* X234382Y407076D01* Y404843D02* Y407076D01* X201000Y426744D02* X230700Y397044D01* X200709Y426744D02* X201000D01* X230700Y391200D02* Y397044D01* X225244Y425244D02* X232244Y418244D01* X225244Y425244D02* Y432744D01* X216114Y425344D02* Y431874D01* X242618Y322900D02* Y324000D01* X240218Y320500D02* X242618Y322900D01* X232600Y320500D02* X240218D01* X233455Y308945D02* X234744D01* X229700Y312700D02* X233455Y308945D01* X215244D02* X221045D01* X211300Y335800D02* X211524D01* X212208Y335116D01* X204900Y342424D02* X211524Y335800D01* X180244Y440744D02* Y447744D01* X149344Y426444D02* Y430100D01* X160644Y372344D02* X161500D01* X145632Y407500D02* Y408844D01* Y404900D02* Y407500D01* X144055Y387082D02* X144056D01* X144031Y387083D02* X144055Y387082D01* X142992Y387100D02* X144031Y387083D01* Y387100D01* X143944Y360244D02* Y364344D01* Y359544D02* Y360244D01* X131100Y387100D02* X131400D01* X131756Y363944D02* X132900D01* X249400Y412205D02* X250364Y411240D01* X246583Y415022D02* X249400Y412205D01* X251900Y411240D02* X253824D01* X250364D02* X251900D01* X167144Y453744D02* X168644D01* X169544Y414044D02* X172444D01* X168956D02* X169544D01* X167000Y453744D02* X167144D01* X164600D02* X167000D01* X172444Y414044D02* X172700D01* X166644D02* X168956D01* X150244Y387744D02* X158744D01* X200246Y329418D02* X201768Y330941D01* X200246Y323076D02* Y329418D01* X192414Y315244D02* X200246Y323076D01* X180744Y315244D02* X192414D01* X163900Y361244D02* X165650D01* X176244Y422983D02* Y448744D01* X144031Y385587D02* X144056Y387082D01* X246583Y415022D02* Y426681D01* X249400Y409705D02* Y412205D01* X184500Y323895D02* Y338727D01* X189241Y343468D01* X283500Y361200D02* X288300Y356400D01* X183987Y348409D02* X187779D01* X234382Y404843D02* X237600D01* X233941Y405283D02* X234382Y404843D01* X151744Y346744D02* X155385Y343103D01* X184812D01* X186500Y344791D01* X187779D01* X143244Y369356D02* Y370626D01* Y369356D02* X144031Y368569D01* Y365901D02* Y368569D01* X188700Y366400D02* Y398700D01* X185500Y321665D02* X187425Y323590D01* Y327875D01* X185700Y329600D02* X187425Y327875D01* X185700Y329600D02* Y334360D01* X192025Y340684D01* X167300Y415700D02* X168956Y414044D01* X167300Y417587D02* X169730D01* X224628Y345100D02* X232600D01* X224318Y344791D02* X224628Y345100D01* X222021Y344791D02* X224318D01* X148788Y407500D02* X149644Y406644D01* X250744Y315244D02* Y331189D01* X244533Y337400D02* X250744Y331189D01* X227090Y337400D02* X244533D01* X194906Y410200D02* X195700D01* X193600Y408894D02* X194906Y410200D01* X193400Y356708D02* X194808Y355300D01* X194800Y358092D02* X196200Y356692D01* X131400Y380075D02* X131433D01* X229700Y312700D02* Y317300D01* X224818Y341400D02* X226418Y343000D01* X172056Y372344D02* X173100Y371300D01* X167368Y372344D02* X172056D01* X174744Y394043D02* X179800D01* Y385300D02* Y394043D01* X162400Y374100D02* Y379400D01* X160644Y372344D02* X162400Y374100D01* X157920Y372344D02* X160644D01* X194700Y321400D02* Y329440D01* X198984Y333725D01* X162500Y356921D02* X163177Y356244D01* X162500Y356921D02* Y371344D01* X161500Y372344D02* X162500Y371344D01* X165044Y346256D02* X166000Y345300D01* X165044Y346256D02* Y355044D01* X156700D02* X165044D01* X151300Y360444D02* X156700Y355044D01* X151300Y360444D02* Y371185D01* X149300Y373185D02* X151300Y371185D01* X143244Y373185D02* X149300D01* X192600Y333100D02* X192792D01* X196200Y336508D01* X188900Y332400D02* X190500Y334000D01* Y336376D01* X193416Y339292D01* X197900Y326186D02* Y329856D01* X200376Y332333D01* X204900Y346600D02* X206292D01* X214992Y355300D01* X190000Y348800D02* X202700D01* X204900Y346600D01* X207900Y339200D02* X211300Y335800D01* X194808Y337900D02* X196108Y339200D01* X204900Y342424D02* Y346600D01* X251900Y403760D02* X253824D01* X251100Y404560D02* X251900Y403760D01* X251100Y404560D02* Y410440D01* X251900Y411240D01* X221045Y308945D02* X232600Y320500D01* X226188Y465800D02* X235744Y456244D01* X174906Y337000D02* X177600D01* X178000Y336600D01* X154600Y361244D02* X159744D01* X174700Y394043D02* X174744D01* X143944Y359544D02* X151744Y351744D01* X168430Y439958D02* X169730D01* X166744Y441644D02* X168430Y439958D01* X172700Y414044D02* X173783Y412961D01* Y410244D02* Y412961D01* X145532Y428544D02* Y430100D01* X146400Y394043D02* X158744D01* X144057Y387187D02* Y391700D01* X131433Y372201D02* X132900D01* X136200Y389524D02* X137775Y391098D01* X166844Y454044D02* X167000D01* X132244Y432544D02* Y433844D01* X132044Y432344D02* X132244Y432544D01* X132044Y412344D02* X132244D01* X144057Y387100D02* Y387187D01* X127200Y391000D02* X131100Y387100D01* X127200Y391000D02* Y404900D01* X129500Y407200D01* X134000D01* X136300Y404900D01* X145632D01* X141244Y426244D02* Y430244D01* X164600Y465444D02* X167944D01* X149244Y426344D02* X149344Y426444D01* X137600Y427200D02* X140944Y430544D01* X129100Y427200D02* X137600D01* X127200Y425300D02* X129100Y427200D01* X127200Y409300D02* Y425300D01* Y409300D02* X129000Y407500D01* X137700D01* X141044Y410844D01* Y406544D02* Y410844D01* X196244Y444744D02* Y448744D01* X156556Y428544D02* Y428600D01* X158744Y387744D02* X174886D01* X199102Y315244D02* X215244D01* X234602D02* X250744D01* X164602D02* X180744D01* X234744Y308945D02* X250744D01* X199244D02* X215244D01* X180744D02* X199244D01* X164744D02* X180744D01* X144031Y365087D02* Y365901D01* X143944Y365000D02* X144031Y365087D01* X143944Y364344D02* Y365000D01* X131433Y372201D02* Y380075D01* X185675Y431700D02* X189476Y435501D01* X167368Y376084D02* X173404D01* X175244Y374244D01* Y369296D02* Y374244D01* Y369296D02* X192025Y352516D01* X230157Y334000D02* X237697D01* X230157Y324157D02* X233800D01* X233957Y324000D01* X237697D01* X240400Y410157D02* X241483Y411240D01* X244376D01* X237600Y410157D02* X238630D01* X241300Y412827D01* Y419400D01* X239543Y421157D02* X241300Y419400D01* X237600Y421157D02* X239543D01* X238630Y410157D02* X240400D01* X185675Y430875D02* Y431700D01* X155056Y428600D02* X155112D01* X167000Y453888D02* Y454044D01* X180100Y465800D02* X225588D01* X226188D01* X237600Y404843D02* X240400D01* X241483Y403760D01* X244376D01* X246300Y390784D02* X247100Y389984D01* X244376Y403760D02* X246300D01* X236800Y354900D02* X242696Y349004D01* X199300Y361944D02* X200376Y360867D01* X222021Y348409D02* X230500D01* X252200Y342700D02* Y398500D01* X247500Y403200D02* X252200Y398500D01* X247500Y403200D02* Y406500D01* X247300Y406700D02* X247500Y406500D01* X247300Y406700D02* Y412607D01* X243900Y416007D02* X247300Y412607D01* X243900Y416007D02* Y417200D01* X258744Y396444D02* X283500Y421200D01* X255100Y370400D02* X255256Y370244D01* X258567D01* X269100Y431200D02* X283500D01* X268518Y430618D02* X269100Y431200D01* X255244Y430618D02* X268518D01* X248921Y376721D02* X249100Y376900D01* X248921Y373984D02* Y376721D01* X238900Y366044D02* Y400700D01* X272900Y354500D02* Y385200D01* X258567Y370244D02* X263444D01* X267300Y374100D01* Y387700D01* X268065Y388465D01* Y391097D01* X276000Y399032D01* Y403700D01* X283500Y411200D01* X220559Y349732D02* X223323Y352496D01* X234404D01* X246500Y340400D01* X255100D01* X270733Y356033D01* Y386900D01* X272418Y388585D01* X274047D01* X281461Y396000D01* X286300D01* X288300Y394000D01* Y382100D02* Y394000D01* X287400Y381200D02* X288300Y382100D01* X283500Y381200D02* X287400D01* X253824Y407500D02* X256500D01* Y415800D01* X250900Y421400D02* X256500Y415800D01* X250900Y421400D02* Y436300D01* X240600Y446600D02* X250900Y436300D01* X200800Y446600D02* X240600D01* X245900Y352900D02* X246900Y351900D01* Y349004D02* Y351900D01* X245500Y366600D02* X245596Y366504D01* X248921D01* X246216Y373984D02* X248921D01* X243400Y359988D02* Y371168D01* Y359988D02* X246904Y356484D01* X249421D01* X247100Y382504D02* X249421D01* X246100Y381504D02* X247100Y382504D01* X246100Y380700D02* Y381504D01* X219167Y342076D02* X219439D01* X221415Y340100D01* X228900D01* X197361Y430383D02* X199244Y428500D01* X192958Y430383D02* X197361D01* X227100Y364600D02* X234700Y372200D01* X275500Y357100D02* Y383200D01* X283500Y391200D01* X245941Y373710D02* X248921Y373984D01* X243951Y375700D02* X245941Y373710D01* X243951Y375700D02* Y387635D01* X247100Y389984D01* X249421D01* X266700Y361800D02* X269533Y364633D01* Y389785D02* X275032Y395285D01* X259067Y352744D02* X261400D01* X269533Y360877D01* X275032Y395285D02* X277585D01* X283500Y401200D01* X258744Y386244D02* X259067D01* X155056Y428544D02* Y428600D01* X155112D02* X156556D01* X132244Y412344D02* Y413844D01* X242696Y349004D02* X246900D01* X249421D01* X131756Y361188D02* Y363944D01* Y361188D02* X132700Y360244D01* X143944D01* X132900Y363944D02* Y372201D01* X131400Y380075D02* Y387100D01* X134344Y387244D02* X142992Y387100D01* X133008Y389524D02* X136200D01* X144031Y387100D02* X144057D01* X137775Y391098D02* X140488D01* X250744Y308900D02* X252700D01* X144057Y391700D02* X146400Y394043D01* X158744D02* X174700D01* Y403100D01* X180244Y408644D01* X180200Y402600D02* Y430900D01* X145632Y407500D02* X148788D01* X145532Y430100D02* X149344D01* X180244Y415700D02* Y430875D01* X180200Y430900D02* X193800Y444500D01* X196108Y339200D02* X207900D01* X272900Y354500D02* X275500Y357100D01* X189476Y435501D02* X192900D01* X200244Y444744D02* Y448744D01* X243400Y371168D02* X245941Y373710D01* X246216Y373984D01* X246300Y390784D02* Y403760D01* X167000Y453744D02* Y453888D01* X164600Y453744D02* Y465444D01* X167300Y415700D02* Y417587D01* X168344Y454044D02* X180100Y465800D01* X269533Y360877D02* Y364633D01* Y389785D01* X258744Y382700D02* Y386244D01* Y396444D01* X162400Y379400D02* X165244Y382244D01* X176744D01* X179800Y385300D01* X209424Y360867D02* Y360924D01* X212744Y364244D01* Y365744D01* X221744Y364836D02* Y365244D01* X213600Y356692D02* X221744Y364836D01* X217744Y366404D02* Y367244D01* X210816Y359475D02* X217744Y366404D01* X219844Y369344D02* X220244Y369744D01* X216384Y339292D02* X218432Y337244D01* X220200D01* X213600Y336508D02* X216864Y333244D01* X220886D01* X222300Y331830D01* X214992Y337900D02* X218148Y334744D01* X223244D01* X225900Y337400D01* X227090D01* X206709Y363721D02* Y365509D01* X207744Y366544D01* Y368744D01* X190800Y397300D02* X191600D01* X194800Y358092D02* Y406100D01* X236800Y354900D02* Y373070D01* X201330Y374300D02* X235570D01* X236800Y373070D01* X203091Y363721D02* Y370091D01* X203244Y370244D01* X203744D01* X196444Y359232D02* X197592Y358084D01* X197644Y363599D02* X200376Y360867D01* X197644Y363599D02* Y370614D01* X201330Y374300D01* X183244Y367244D02* Y367941D01* X172823Y378362D02* X183244Y367941D01* X163900Y361244D02* Y377826D01* X164437Y378362D01* X172823D01* X178744Y380744D02* X187244Y372244D01* X216384Y353908D02* X216408D01* X190744Y356580D02* X193416Y353908D01* X190744Y356580D02* Y360944D01* X189744Y365244D02* Y365356D01* X188700Y366400D02* X189744Y365356D01* X187244Y361244D02* Y372244D01* X190744Y360944D02* X192244Y362444D01* Y396656D01* X191600Y397300D02* X192244Y396656D01* X193600Y359944D02* Y408894D01* X193400Y359744D02* X193600Y359944D01* X193400Y356708D02* Y359744D01* X199744Y364283D02* X201768Y362259D01* X199744Y364283D02* Y368244D01* X229571Y324744D02* X230157Y324157D01* X208032Y330941D02* X213229Y325744D01* X206709Y329479D02* X211645Y324544D01* X221901Y325744D02* X230157Y334000D01* X211645Y324544D02* X222398D01* X213229Y325744D02* X221901D01* X222398Y324544D02* X222599Y324744D01* X229571D01* X209424Y332333D02* X213012Y328744D01* X213244D01* Y328244D02* Y328744D01* X214744Y322244D02* X215244Y322744D01* X214744Y322244D02* Y322244D01* X215244Y315244D02* Y322744D01* X242618Y324000D02* Y334000D01* X192600Y329500D02* Y330124D01* X197592Y335116D01* X143244Y380862D02* X150362D01* X152244Y382744D01* X159087D01* X210816Y333725D02* X213696Y330844D01* X217144D01* X217744Y330244D01* X220559Y343468D02* X222627Y341400D01* X224818D01* X212208Y358084D02* X219644Y365520D01* Y366114D01* X219844Y366314D01* Y369344D01* X163177Y356244D02* X182729D01* X189241Y349732D01* X192958Y432942D02* X197046D01* X200444Y429544D01* X227343Y415843D02* X237600D01* X200444Y428706D02* Y429544D01* Y428706D02* X201205Y427944D01* X199244Y428208D02* Y428500D01* Y428208D02* X200709Y426744D01* X198224Y425049D02* Y425265D01* X192958D02* X198224D01* X186300Y380600D02* Y400700D01* X192958Y420146D02* X197842D01* X201744Y416244D02* X202244D01* X197842Y420146D02* X201744Y416244D01* X201205Y427944D02* X201497D01* X214244Y423244D02* X215244D01* X212744Y421744D02* X214244Y423244D01* X201497Y427944D02* X207697Y421744D01* X212744D01* X192958Y427824D02* X197932D01* X198224Y425049D02* X199744Y423529D01* Y423244D02* Y423529D01* X200274Y419744D02* X201244D01* X192958Y422706D02* X197313D01* X200274Y419744D01* X197932Y427824D02* X200411Y425344D01* X200614D01* X204744Y421214D01* Y415774D02* Y421214D01* X195070Y406100D02* X204744Y415774D01* X194800Y406100D02* X195070D01* X196444Y359232D02* Y404444D01* X201244Y409244D01* X196774Y414244D02* X198744D01* X190244Y404644D02* Y405900D01* X186300Y400700D02* X190244Y404644D01* X192344Y409814D02* X196774Y414244D01* X188700Y398700D02* X192344Y402344D01* Y409814D01* X255244Y418753D02* Y422744D01* Y418753D02* X257700Y416297D01* Y401679D02* Y416297D01* X255244Y399223D02* X257700Y401679D01* X255244Y395244D02* Y399223D01* X232244Y382744D02* X234744D01* X226744Y377244D02* X232244Y382744D01* X201188Y377244D02* X226744D01* X198544Y379889D02* X201188Y377244D01* X187087Y417587D02* X192958D01* X183744Y414244D02* X187087Y417587D01* X220744Y358244D02* X221744D01* X217775Y352516D02* X221404Y356144D01* X222614D01* X216408Y353908D02* X220744Y358244D01* X219167Y351124D02* X219291D01* X234700Y366533D01* Y368100D01* X222614Y356144D02* X227100Y360630D01* Y364600D01* X214992Y355300D02* X226244Y366552D01* Y371244D01* X174065Y321665D02* X185500D01* X141744Y344632D02* Y346744D01* Y344632D02* X144132Y342244D01* X153486D01* X174065Y321665D01* X128244Y379944D02* X142300Y394000D01* X128244Y318744D02* Y379944D01* Y318744D02* X138043Y308945D01* X164744D01* X256244Y337844D02* X268744Y350344D01* X272900Y354500D01* X252700Y308900D02* X256244Y312444D01* Y337844D01* X288300Y318500D02* Y356400D01* X259244Y337244D02* X269744Y347744D01* X280044D01* X283500Y351200D01* X258744Y314244D02* X264244Y308744D01* X278544D01* X288300Y318500D01* X169000Y337000D02* X171744Y334256D01* Y330744D02* Y334256D01* X371744Y449244D02* X376187Y453687D01* X377044Y454544D02* X386744D01* X376187Y453687D02* X377044Y454544D01* X385244Y439744D02* X385244Y439744D01* X385244Y432744D02* Y439744D01* X368000Y433800D02* X380800Y446600D01* X385244Y432744D02* X392744Y440244D01* X394832D01* X400044Y435032D01* Y423141D02* Y435032D01* Y423141D02* X407343Y415843D01* X396114Y425344D02* X414382Y407076D01* Y404843D02* Y407076D01* X381000Y426744D02* X410700Y397044D01* X380709Y426744D02* X381000D01* X410700Y391200D02* Y397044D01* X405244Y425244D02* X412244Y418244D01* X405244Y425244D02* Y432744D01* X396114Y425344D02* Y431874D01* X422618Y322900D02* Y324000D01* X420218Y320500D02* X422618Y322900D01* X412600Y320500D02* X420218D01* X413455Y308945D02* X414744D01* X409700Y312700D02* X413455Y308945D01* X395244D02* X401045D01* X391300Y335800D02* X391524D01* X392208Y335116D01* X384900Y342424D02* X391524Y335800D01* X360244Y440744D02* Y447744D01* X329344Y426444D02* Y430100D01* X340644Y372344D02* X341500D01* X325632Y407500D02* Y408844D01* Y404900D02* Y407500D01* X324055Y387082D02* X324056D01* X324031Y387083D02* X324055Y387082D01* X322992Y387100D02* X324031Y387083D01* Y387100D01* X323944Y360244D02* Y364344D01* Y359544D02* Y360244D01* X311100Y387100D02* X311400D01* X311756Y363944D02* X312900D01* X429400Y412205D02* X430364Y411240D01* X426583Y415022D02* X429400Y412205D01* X431900Y411240D02* X433824D01* X430364D02* X431900D01* X347144Y453744D02* X348644D01* X349544Y414044D02* X352444D01* X348956D02* X349544D01* X347000Y453744D02* X347144D01* X344600D02* X347000D01* X352444Y414044D02* X352700D01* X346644D02* X348956D01* X330244Y387744D02* X338744D01* X380246Y329418D02* X381768Y330941D01* X380246Y323076D02* Y329418D01* X372414Y315244D02* X380246Y323076D01* X360744Y315244D02* X372414D01* X343900Y361244D02* X345650D01* X356244Y422983D02* Y448744D01* X324031Y385587D02* X324056Y387082D01* X426583Y415022D02* Y426681D01* X429400Y409705D02* Y412205D01* X364500Y323895D02* Y338727D01* X369241Y343468D01* X463500Y361200D02* X468300Y356400D01* X363987Y348409D02* X367779D01* X414382Y404843D02* X417600D01* X413941Y405283D02* X414382Y404843D01* X331744Y346744D02* X335385Y343103D01* X364812D01* X366500Y344791D01* X367779D01* X323244Y369356D02* Y370626D01* Y369356D02* X324031Y368569D01* Y365901D02* Y368569D01* X368700Y366400D02* Y398700D01* X365500Y321665D02* X367425Y323590D01* Y327875D01* X365700Y329600D02* X367425Y327875D01* X365700Y329600D02* Y334360D01* X372025Y340684D01* X347300Y415700D02* X348956Y414044D01* X347300Y417587D02* X349730D01* X404628Y345100D02* X412600D01* X404318Y344791D02* X404628Y345100D01* X402021Y344791D02* X404318D01* X328788Y407500D02* X329644Y406644D01* X430744Y315244D02* Y331189D01* X424533Y337400D02* X430744Y331189D01* X407090Y337400D02* X424533D01* X374906Y410200D02* X375700D01* X373600Y408894D02* X374906Y410200D01* X373400Y356708D02* X374808Y355300D01* X374800Y358092D02* X376200Y356692D01* X311400Y380075D02* X311433D01* X409700Y312700D02* Y317300D01* X404818Y341400D02* X406418Y343000D01* X352056Y372344D02* X353100Y371300D01* X347368Y372344D02* X352056D01* X354744Y394043D02* X359800D01* Y385300D02* Y394043D01* X342400Y374100D02* Y379400D01* X340644Y372344D02* X342400Y374100D01* X337920Y372344D02* X340644D01* X374700Y321400D02* Y329440D01* X378984Y333725D01* X342500Y356921D02* X343177Y356244D01* X342500Y356921D02* Y371344D01* X341500Y372344D02* X342500Y371344D01* X345044Y346256D02* X346000Y345300D01* X345044Y346256D02* Y355044D01* X336700D02* X345044D01* X331300Y360444D02* X336700Y355044D01* X331300Y360444D02* Y371185D01* X329300Y373185D02* X331300Y371185D01* X323244Y373185D02* X329300D01* X372600Y333100D02* X372792D01* X376200Y336508D01* X368900Y332400D02* X370500Y334000D01* Y336376D01* X373416Y339292D01* X377900Y326186D02* Y329856D01* X380376Y332333D01* X384900Y346600D02* X386292D01* X394992Y355300D01* X370000Y348800D02* X382700D01* X384900Y346600D01* X387900Y339200D02* X391300Y335800D01* X374808Y337900D02* X376108Y339200D01* X384900Y342424D02* Y346600D01* X431900Y403760D02* X433824D01* X431100Y404560D02* X431900Y403760D01* X431100Y404560D02* Y410440D01* X431900Y411240D01* X401045Y308945D02* X412600Y320500D01* X406188Y465800D02* X415744Y456244D01* X354906Y337000D02* X357600D01* X358000Y336600D01* X334600Y361244D02* X339744D01* X354700Y394043D02* X354744D01* X323944Y359544D02* X331744Y351744D01* X348430Y439958D02* X349730D01* X346744Y441644D02* X348430Y439958D01* X352700Y414044D02* X353783Y412961D01* Y410244D02* Y412961D01* X325532Y428544D02* Y430100D01* X326400Y394043D02* X338744D01* X324057Y387187D02* Y391700D01* X311433Y372201D02* X312900D01* X316200Y389524D02* X317775Y391098D01* X346844Y454044D02* X347000D01* X312244Y432544D02* Y433844D01* X312044Y432344D02* X312244Y432544D01* X312044Y412344D02* X312244D01* X324057Y387100D02* Y387187D01* X307200Y391000D02* X311100Y387100D01* X307200Y391000D02* Y404900D01* X309500Y407200D01* X314000D01* X316300Y404900D01* X325632D01* X321244Y426244D02* Y430244D01* X344600Y465444D02* X347944D01* X329244Y426344D02* X329344Y426444D01* X317600Y427200D02* X320944Y430544D01* X309100Y427200D02* X317600D01* X307200Y425300D02* X309100Y427200D01* X307200Y409300D02* Y425300D01* Y409300D02* X309000Y407500D01* X317700D01* X321044Y410844D01* Y406544D02* Y410844D01* X376244Y444744D02* Y448744D01* X336556Y428544D02* Y428600D01* X338744Y387744D02* X354886D01* X379102Y315244D02* X395244D01* X414602D02* X430744D01* X344602D02* X360744D01* X414744Y308945D02* X430744D01* X379244D02* X395244D01* X360744D02* X379244D01* X344744D02* X360744D01* X324031Y365087D02* Y365901D01* X323944Y365000D02* X324031Y365087D01* X323944Y364344D02* Y365000D01* X311433Y372201D02* Y380075D01* X365675Y431700D02* X369476Y435501D01* X347368Y376084D02* X353404D01* X355244Y374244D01* Y369296D02* Y374244D01* Y369296D02* X372025Y352516D01* X410157Y334000D02* X417697D01* X410157Y324157D02* X413800D01* X413957Y324000D01* X417697D01* X420400Y410157D02* X421483Y411240D01* X424376D01* X417600Y410157D02* X418630D01* X421300Y412827D01* Y419400D01* X419543Y421157D02* X421300Y419400D01* X417600Y421157D02* X419543D01* X418630Y410157D02* X420400D01* X365675Y430875D02* Y431700D01* X335056Y428600D02* X335112D01* X347000Y453888D02* Y454044D01* X360100Y465800D02* X405588D01* X406188D01* X417600Y404843D02* X420400D01* X421483Y403760D01* X424376D01* X426300Y390784D02* X427100Y389984D01* X424376Y403760D02* X426300D01* X416800Y354900D02* X422696Y349004D01* X379300Y361944D02* X380376Y360867D01* X402021Y348409D02* X410500D01* X432200Y342700D02* Y398500D01* X427500Y403200D02* X432200Y398500D01* X427500Y403200D02* Y406500D01* X427300Y406700D02* X427500Y406500D01* X427300Y406700D02* Y412607D01* X423900Y416007D02* X427300Y412607D01* X423900Y416007D02* Y417200D01* X438744Y396444D02* X463500Y421200D01* X435100Y370400D02* X435256Y370244D01* X438567D01* X449100Y431200D02* X463500D01* X448518Y430618D02* X449100Y431200D01* X435244Y430618D02* X448518D01* X428921Y376721D02* X429100Y376900D01* X428921Y373984D02* Y376721D01* X418900Y366044D02* Y400700D01* X452900Y354500D02* Y385200D01* X438567Y370244D02* X443444D01* X447300Y374100D01* Y387700D01* X448065Y388465D01* Y391097D01* X456000Y399032D01* Y403700D01* X463500Y411200D01* X400559Y349732D02* X403323Y352496D01* X414404D01* X426500Y340400D01* X435100D01* X450733Y356033D01* Y386900D01* X452418Y388585D01* X454047D01* X461461Y396000D01* X466300D01* X468300Y394000D01* Y382100D02* Y394000D01* X467400Y381200D02* X468300Y382100D01* X463500Y381200D02* X467400D01* X433824Y407500D02* X436500D01* Y415800D01* X430900Y421400D02* X436500Y415800D01* X430900Y421400D02* Y436300D01* X420600Y446600D02* X430900Y436300D01* X380800Y446600D02* X420600D01* X425900Y352900D02* X426900Y351900D01* Y349004D02* Y351900D01* X425500Y366600D02* X425596Y366504D01* X428921D01* X426216Y373984D02* X428921D01* X423400Y359988D02* Y371168D01* Y359988D02* X426904Y356484D01* X429421D01* X427100Y382504D02* X429421D01* X426100Y381504D02* X427100Y382504D01* X426100Y380700D02* Y381504D01* X399167Y342076D02* X399439D01* X401415Y340100D01* X408900D01* X377361Y430383D02* X379244Y428500D01* X372958Y430383D02* X377361D01* X407100Y364600D02* X414700Y372200D01* X455500Y357100D02* Y383200D01* X463500Y391200D01* X425941Y373710D02* X428921Y373984D01* X423951Y375700D02* X425941Y373710D01* X423951Y375700D02* Y387635D01* X427100Y389984D01* X429421D01* X446700Y361800D02* X449533Y364633D01* Y389785D02* X455032Y395285D01* X439067Y352744D02* X441400D01* X449533Y360877D01* X455032Y395285D02* X457585D01* X463500Y401200D01* X438744Y386244D02* X439067D01* X335056Y428544D02* Y428600D01* X335112D02* X336556D01* X312244Y412344D02* Y413844D01* X422696Y349004D02* X426900D01* X429421D01* X311756Y361188D02* Y363944D01* Y361188D02* X312700Y360244D01* X323944D01* X312900Y363944D02* Y372201D01* X311400Y380075D02* Y387100D01* X314344Y387244D02* X322992Y387100D01* X313008Y389524D02* X316200D01* X324031Y387100D02* X324057D01* X317775Y391098D02* X320488D01* X430744Y308900D02* X432700D01* X324057Y391700D02* X326400Y394043D01* X338744D02* X354700D01* Y403100D01* X360244Y408644D01* X360200Y402600D02* Y430900D01* X325632Y407500D02* X328788D01* X325532Y430100D02* X329344D01* X360244Y415700D02* Y430875D01* X360200Y430900D02* X373800Y444500D01* X376108Y339200D02* X387900D01* X452900Y354500D02* X455500Y357100D01* X369476Y435501D02* X372900D01* X380244Y444744D02* Y448744D01* X423400Y371168D02* X425941Y373710D01* X426216Y373984D01* X426300Y390784D02* Y403760D01* X347000Y453744D02* Y453888D01* X344600Y453744D02* Y465444D01* X347300Y415700D02* Y417587D01* X348344Y454044D02* X360100Y465800D01* X449533Y360877D02* Y364633D01* Y389785D01* X438744Y382700D02* Y386244D01* Y396444D01* X342400Y379400D02* X345244Y382244D01* X356744D01* X359800Y385300D01* X389424Y360867D02* Y360924D01* X392744Y364244D01* Y365744D01* X401744Y364836D02* Y365244D01* X393600Y356692D02* X401744Y364836D01* X397744Y366404D02* Y367244D01* X390816Y359475D02* X397744Y366404D01* X399844Y369344D02* X400244Y369744D01* X396384Y339292D02* X398432Y337244D01* X400200D01* X393600Y336508D02* X396864Y333244D01* X400886D01* X402300Y331830D01* X394992Y337900D02* X398148Y334744D01* X403244D01* X405900Y337400D01* X407090D01* X386709Y363721D02* Y365509D01* X387744Y366544D01* Y368744D01* X370800Y397300D02* X371600D01* X374800Y358092D02* Y406100D01* X416800Y354900D02* Y373070D01* X381330Y374300D02* X415570D01* X416800Y373070D01* X383091Y363721D02* Y370091D01* X383244Y370244D01* X383744D01* X376444Y359232D02* X377592Y358084D01* X377644Y363599D02* X380376Y360867D01* X377644Y363599D02* Y370614D01* X381330Y374300D01* X363244Y367244D02* Y367941D01* X352823Y378362D02* X363244Y367941D01* X343900Y361244D02* Y377826D01* X344437Y378362D01* X352823D01* X358744Y380744D02* X367244Y372244D01* X396384Y353908D02* X396408D01* X370744Y356580D02* X373416Y353908D01* X370744Y356580D02* Y360944D01* X369744Y365244D02* Y365356D01* X368700Y366400D02* X369744Y365356D01* X367244Y361244D02* Y372244D01* X370744Y360944D02* X372244Y362444D01* Y396656D01* X371600Y397300D02* X372244Y396656D01* X373600Y359944D02* Y408894D01* X373400Y359744D02* X373600Y359944D01* X373400Y356708D02* Y359744D01* X379744Y364283D02* X381768Y362259D01* X379744Y364283D02* Y368244D01* X409571Y324744D02* X410157Y324157D01* X388032Y330941D02* X393229Y325744D01* X386709Y329479D02* X391645Y324544D01* X401901Y325744D02* X410157Y334000D01* X391645Y324544D02* X402398D01* X393229Y325744D02* X401901D01* X402398Y324544D02* X402598Y324744D01* X409571D01* X389424Y332333D02* X393012Y328744D01* X393244D01* Y328244D02* Y328744D01* X394744Y322244D02* X395244Y322744D01* X394744Y322244D02* Y322244D01* X395244Y315244D02* Y322744D01* X422618Y324000D02* Y334000D01* X372600Y329500D02* Y330124D01* X377592Y335116D01* X323244Y380862D02* X330362D01* X332244Y382744D01* X339087D01* X390816Y333725D02* X393696Y330844D01* X397144D01* X397744Y330244D01* X400559Y343468D02* X402627Y341400D01* X404818D01* X392208Y358084D02* X399644Y365520D01* Y366114D01* X399844Y366314D01* Y369344D01* X343177Y356244D02* X362729D01* X369241Y349732D01* X372958Y432942D02* X377046D01* X380444Y429544D01* X407343Y415843D02* X417600D01* X380444Y428706D02* Y429544D01* Y428706D02* X381206Y427944D01* X379244Y428208D02* Y428500D01* Y428208D02* X380709Y426744D01* X378224Y425049D02* Y425265D01* X372958D02* X378224D01* X366300Y380600D02* Y400700D01* X372958Y420146D02* X377842D01* X381744Y416244D02* X382244D01* X377842Y420146D02* X381744Y416244D01* X381206Y427944D02* X381497D01* X394244Y423244D02* X395244D01* X392744Y421744D02* X394244Y423244D01* X381497Y427944D02* X387697Y421744D01* X392744D01* X372958Y427824D02* X377932D01* X378224Y425049D02* X379744Y423529D01* Y423244D02* Y423529D01* X380274Y419744D02* X381244D01* X372958Y422706D02* X377313D01* X380274Y419744D01* X377932Y427824D02* X380411Y425344D01* X380614D01* X384744Y421214D01* Y415774D02* Y421214D01* X375070Y406100D02* X384744Y415774D01* X374800Y406100D02* X375070D01* X376444Y359232D02* Y404444D01* X381244Y409244D01* X376774Y414244D02* X378744D01* X370244Y404644D02* Y405900D01* X366300Y400700D02* X370244Y404644D01* X372344Y409814D02* X376774Y414244D01* X368700Y398700D02* X372344Y402344D01* Y409814D01* X435244Y418753D02* Y422744D01* Y418753D02* X437700Y416297D01* Y401679D02* Y416297D01* X435244Y399223D02* X437700Y401679D01* X435244Y395244D02* Y399223D01* X412244Y382744D02* X414744D01* X406744Y377244D02* X412244Y382744D01* X381189Y377244D02* X406744D01* X378544Y379889D02* X381189Y377244D01* X367087Y417587D02* X372958D01* X363744Y414244D02* X367087Y417587D01* X400744Y358244D02* X401744D01* X397775Y352516D02* X401404Y356144D01* X402614D01* X396408Y353908D02* X400744Y358244D01* X399167Y351124D02* X399291D01* X414700Y366533D01* Y368100D01* X402614Y356144D02* X407100Y360630D01* Y364600D01* X394992Y355300D02* X406244Y366552D01* Y371244D01* X354065Y321665D02* X365500D01* X321744Y344632D02* Y346744D01* Y344632D02* X324132Y342244D01* X333486D01* X354065Y321665D01* X308244Y379944D02* X322300Y394000D01* X308244Y318744D02* Y379944D01* Y318744D02* X318043Y308945D01* X344744D01* X436244Y337844D02* X448744Y350344D01* X452900Y354500D01* X432700Y308900D02* X436244Y312444D01* Y337844D01* X468300Y318500D02* Y356400D01* X439244Y337244D02* X449744Y347744D01* X460044D01* X463500Y351200D01* X438744Y314244D02* X444244Y308744D01* X458544D01* X468300Y318500D01* X349000Y337000D02* X351744Y334256D01* Y330744D02* Y334256D01* D39* X184244Y273744D02* X184301Y273687D01* X193044D02* X196187D01* X205187D02* X205244Y273744D01* X132244Y233844D02* X135644Y237244D01* X156844D01* X133644Y255244D02* X164044D01* X364244Y273744D02* X364301Y273687D01* X373044D02* X376187D01* X385187D02* X385244Y273744D01* X312244Y233844D02* X315644Y237244D01* X336844D01* X313644Y255244D02* X344044D01* X184244Y453744D02* X184301Y453687D01* X193044D02* X196187D01* X205187D02* X205244Y453744D01* X132244Y413844D02* X135644Y417244D01* X156844D01* X133644Y435244D02* X164044D01* X364244Y453744D02* X364301Y453687D01* X373044D02* X376187D01* X385187D02* X385244Y453744D01* X312244Y413844D02* X315644Y417244D01* X336844D01* X313644Y435244D02* X344044D01* D40* X184301Y273687D02* X193044D01* X196187D02* X205187D01* X207744Y276244D02* X215744D01* X221244D01* X169730Y255501D02* Y259958D01* X156895Y250383D02* X169730D01* X364301Y273687D02* X373044D01* X376187D02* X385187D01* X387744Y276244D02* X395744D01* X401244D01* X349730Y255501D02* Y259958D01* X336895Y250383D02* X349730D01* X184301Y453687D02* X193044D01* X196187D02* X205187D01* X207744Y456244D02* X215744D01* X221244D01* X169730Y435501D02* Y439958D01* X156895Y430383D02* X169730D01* X364301Y453687D02* X373044D01* X376187D02* X385187D01* X387744Y456244D02* X395744D01* X401244D01* X349730Y435501D02* Y439958D01* X336895Y430383D02* X349730D01* D41* X207244Y276744D02* X207744Y276244D01* X387244Y276744D02* X387744Y276244D01* X207244Y456744D02* X207744Y456244D01* X387244Y456744D02* X387744Y456244D01* D42* X165124Y237974D02* X165574D01* X162858Y243617D02* X164506Y245265D01* X169730D01* X165694Y242706D02* X169730D01* X160694Y237705D02* X165694Y242706D01* X166246Y240146D02* X169730D01* X165574Y239474D02* X166246Y240146D01* X156656Y228844D02* X160694Y232882D01* Y237705D01* X156844Y237244D02* X162858Y243258D01* Y243617D01* X157344Y241944D02* X161165Y245765D01* Y247265D01* X161724Y247824D01* X165574Y237974D02* Y239474D01* X132044Y242344D02* X132444Y241944D01* X161724Y247824D02* X169730D01* X164044Y255244D02* X166346Y252942D01* X169730D01* X345124Y237974D02* X345574D01* X342858Y243617D02* X344506Y245265D01* X349730D01* X345694Y242706D02* X349730D01* X340694Y237705D02* X345694Y242706D01* X346246Y240146D02* X349730D01* X345574Y239474D02* X346246Y240146D01* X336656Y228844D02* X340694Y232882D01* Y237705D01* X336844Y237244D02* X342858Y243258D01* Y243617D01* X337344Y241944D02* X341165Y245765D01* Y247265D01* X341724Y247824D01* X345574Y237974D02* Y239474D01* X312044Y242344D02* X312444Y241944D01* X341724Y247824D02* X349730D01* X344044Y255244D02* X346346Y252942D01* X349730D01* X165124Y417974D02* X165574D01* X162858Y423617D02* X164506Y425265D01* X169730D01* X165694Y422706D02* X169730D01* X160694Y417705D02* X165694Y422706D01* X166246Y420146D02* X169730D01* X165574Y419474D02* X166246Y420146D01* X156656Y408844D02* X160694Y412882D01* Y417705D01* X156844Y417244D02* X162858Y423258D01* Y423617D01* X157344Y421944D02* X161165Y425765D01* Y427265D01* X161724Y427824D01* X165574Y417974D02* Y419474D01* X132044Y422344D02* X132444Y421944D01* X161724Y427824D02* X169730D01* X164044Y435244D02* X166346Y432942D01* X169730D01* X345124Y417974D02* X345574D01* X342858Y423617D02* X344506Y425265D01* X349730D01* X345694Y422706D02* X349730D01* X340694Y417705D02* X345694Y422706D01* X346246Y420146D02* X349730D01* X345574Y419474D02* X346246Y420146D01* X336656Y408844D02* X340694Y412882D01* Y417705D01* X336844Y417244D02* X342858Y423258D01* Y423617D01* X337344Y421944D02* X341165Y425765D01* Y427265D01* X341724Y427824D01* X345574Y417974D02* Y419474D01* X312044Y422344D02* X312444Y421944D01* X341724Y427824D02* X349730D01* X344044Y435244D02* X346346Y432942D01* X349730D01* D43* X167368Y188604D02* X173153D01* X190633Y171124D01* X155701Y198303D02* X157920Y196084D01* X143244Y198303D02* X155701D01* X143244Y195744D02* X148744D01* X155884Y188604D01* X157920D01* X167320Y328992D02* X170652D01* X168986D01* Y323994D01* X173151D02* X174817D01* X175650Y324827D01* Y326493D01* X174817Y327326D01* X173151D01* X172318Y326493D01* Y324827D01* X173151Y323994D01* X177316Y322328D02* Y327326D01* X179816D01* X180649Y326493D01* Y324827D01* X179816Y323994D01* X177316D01* X190646Y328159D02* X189812Y328992D01* X188146D01* X187313Y328159D01* Y324827D01* X188146Y323994D01* X189812D01* X190646Y324827D01* X193145Y323994D02* X194811D01* X195644Y324827D01* Y326493D01* X194811Y327326D01* X193145D01* X192312Y326493D01* Y324827D01* X193145Y323994D01* X197310Y322328D02* Y327326D01* X199809D01* X200642Y326493D01* Y324827D01* X199809Y323994D01* X197310D01* X202308Y322328D02* Y327326D01* X204807D01* X205641Y326493D01* Y324827D01* X204807Y323994D01* X202308D01* X209806D02* X208140D01* X207307Y324827D01* Y326493D01* X208140Y327326D01* X209806D01* X210639Y326493D01* Y325660D01* X207307D01* X212305Y327326D02* Y323994D01* Y325660D01* X213138Y326493D01* X213971Y327326D01* X214804D01* X347368Y188604D02* X353153D01* X370633Y171124D01* X335701Y198303D02* X337920Y196084D01* X323244Y198303D02* X335701D01* X323244Y195744D02* X328744D01* X335884Y188604D01* X337920D01* X347320Y328992D02* X350652D01* X348986D01* Y323994D01* X353151D02* X354817D01* X355650Y324827D01* Y326493D01* X354817Y327326D01* X353151D01* X352318Y326493D01* Y324827D01* X353151Y323994D01* X357316Y322328D02* Y327326D01* X359816D01* X360649Y326493D01* Y324827D01* X359816Y323994D01* X357316D01* X370645Y328159D02* X369812Y328992D01* X368146D01* X367313Y328159D01* Y324827D01* X368146Y323994D01* X369812D01* X370645Y324827D01* X373145Y323994D02* X374811D01* X375644Y324827D01* Y326493D01* X374811Y327326D01* X373145D01* X372312Y326493D01* Y324827D01* X373145Y323994D01* X377310Y322328D02* Y327326D01* X379809D01* X380642Y326493D01* Y324827D01* X379809Y323994D01* X377310D01* X382308Y322328D02* Y327326D01* X384807D01* X385641Y326493D01* Y324827D01* X384807Y323994D01* X382308D01* X389806D02* X388140D01* X387307Y324827D01* Y326493D01* X388140Y327326D01* X389806D01* X390639Y326493D01* Y325660D01* X387307D01* X392305Y327326D02* Y323994D01* Y325660D01* X393138Y326493D01* X393971Y327326D01* X394804D01* X167368Y368604D02* X173153D01* X190633Y351124D01* X155701Y378303D02* X157920Y376084D01* X143244Y378303D02* X155701D01* X143244Y375744D02* X148744D01* X155884Y368604D01* X157920D01* X167320Y508992D02* X170652D01* X168986D01* Y503994D01* X173151D02* X174817D01* X175650Y504827D01* Y506493D01* X174817Y507326D01* X173151D01* X172318Y506493D01* Y504827D01* X173151Y503994D01* X177316Y502328D02* Y507326D01* X179816D01* X180649Y506493D01* Y504827D01* X179816Y503994D01* X177316D01* X190646Y508159D02* X189812Y508992D01* X188146D01* X187313Y508159D01* Y504827D01* X188146Y503994D01* X189812D01* X190646Y504827D01* X193145Y503994D02* X194811D01* X195644Y504827D01* Y506493D01* X194811Y507326D01* X193145D01* X192312Y506493D01* Y504827D01* X193145Y503994D01* X197310Y502328D02* Y507326D01* X199809D01* X200642Y506493D01* Y504827D01* X199809Y503994D01* X197310D01* X202308Y502328D02* Y507326D01* X204807D01* X205641Y506493D01* Y504827D01* X204807Y503994D01* X202308D01* X209806D02* X208140D01* X207307Y504827D01* Y506493D01* X208140Y507326D01* X209806D01* X210639Y506493D01* Y505660D01* X207307D01* X212305Y507326D02* Y503994D01* Y505660D01* X213138Y506493D01* X213971Y507326D01* X214804D01* X347368Y368604D02* X353153D01* X370633Y351124D01* X335701Y378303D02* X337920Y376084D01* X323244Y378303D02* X335701D01* X323244Y375744D02* X328744D01* X335884Y368604D01* X337920D01* X347320Y508992D02* X350652D01* X348986D01* Y503994D01* X353151D02* X354817D01* X355650Y504827D01* Y506493D01* X354817Y507326D01* X353151D01* X352318Y506493D01* Y504827D01* X353151Y503994D01* X357316Y502328D02* Y507326D01* X359816D01* X360649Y506493D01* Y504827D01* X359816Y503994D01* X357316D01* X370645Y508159D02* X369812Y508992D01* X368146D01* X367313Y508159D01* Y504827D01* X368146Y503994D01* X369812D01* X370645Y504827D01* X373145Y503994D02* X374811D01* X375644Y504827D01* Y506493D01* X374811Y507326D01* X373145D01* X372312Y506493D01* Y504827D01* X373145Y503994D01* X377310Y502328D02* Y507326D01* X379809D01* X380642Y506493D01* Y504827D01* X379809Y503994D01* X377310D01* X382308Y502328D02* Y507326D01* X384807D01* X385641Y506493D01* Y504827D01* X384807Y503994D01* X382308D01* X389806D02* X388140D01* X387307Y504827D01* Y506493D01* X388140Y507326D01* X389806D01* X390639Y506493D01* Y505660D01* X387307D01* X392305Y507326D02* Y503994D01* Y505660D01* X393138Y506493D01* X393971Y507326D01* X394804D01* D44* X163344Y236194D02* X165124Y237974D01* X163344Y226344D02* Y236194D01* X132444Y241944D02* X157344D01* X132044Y222344D02* X159344D01* X163344Y226344D01* X343344Y236194D02* X345124Y237974D01* X343344Y226344D02* Y236194D01* X312444Y241944D02* X337344D01* X312044Y222344D02* X339344D01* X343344Y226344D01* X163344Y416194D02* X165124Y417974D01* X163344Y406344D02* Y416194D01* X132444Y421944D02* X157344D01* X132044Y402344D02* X159344D01* X163344Y406344D01* X343344Y416194D02* X345124Y417974D01* X343344Y406344D02* Y416194D01* X312444Y421944D02* X337344D01* X312044Y402344D02* X339344D01* X343344Y406344D01* D45* X169271Y239687D02* X169730Y240146D01* X167151Y239687D02* X169271D01* X132244Y253844D02* X133644Y255244D01* X349271Y239687D02* X349730Y240146D01* X347151Y239687D02* X349271D01* X312244Y253844D02* X313644Y255244D01* X169271Y419687D02* X169730Y420146D01* X167151Y419687D02* X169271D01* X132244Y433844D02* X133644Y435244D01* X349271Y419687D02* X349730Y420146D01* X347151Y419687D02* X349271D01* X312244Y433844D02* X313644Y435244D01* D46* X168344Y285844D02* X225544D01* X168344Y274044D02* Y285844D01* X167944Y285444D02* X168344Y285844D01* X166844Y274044D02* X167000Y273888D01* X167144Y273744D01* X225544Y285844D02* X225588Y285800D01* X235444Y275944D02* X236844Y274544D01* X235444Y275944D02* X235444Y275944D01* X225588Y285800D02* X235444Y275944D01* X348344Y285844D02* X405544D01* X348344Y274044D02* Y285844D01* X347944Y285444D02* X348344Y285844D01* X346844Y274044D02* X347000Y273888D01* X347144Y273744D01* X405544Y285844D02* X405588Y285800D01* X415444Y275944D02* X416844Y274544D01* X415444Y275944D02* X415444Y275944D01* X405588Y285800D02* X415444Y275944D01* X168344Y465844D02* X225544D01* X168344Y454044D02* Y465844D01* X167944Y465444D02* X168344Y465844D01* X166844Y454044D02* X167000Y453888D01* X167144Y453744D01* X225544Y465844D02* X225588Y465800D01* X235444Y455944D02* X236844Y454544D01* X235444Y455944D02* X235444Y455944D01* X225588Y465800D02* X235444Y455944D01* X348344Y465844D02* X405544D01* X348344Y454044D02* Y465844D01* X347944Y465444D02* X348344Y465844D01* X346844Y454044D02* X347000Y453888D01* X347144Y453744D01* X405544Y465844D02* X405588Y465800D01* X415444Y455944D02* X416844Y454544D01* X415444Y455944D02* X415444Y455944D01* X405588Y465800D02* X415444Y455944D01* D47* X155056Y248544D02* X155112Y248600D01* X156895Y250383D01* X335056Y248544D02* X335112Y248600D01* X336895Y250383D01* X155056Y428544D02* X155112Y428600D01* X156895Y430383D01* X335056Y428544D02* X335112Y428600D01* X336895Y430383D01* D48* X167144Y262544D02* Y273744D01* X347144Y262544D02* Y273744D01* X167144Y442544D02* Y453744D01* X347144Y442544D02* Y453744D01* D49* X125000Y260000D02* D03* Y265000D02* D03* Y255000D02* D03* Y250000D02* D03* Y245000D02* D03* Y240000D02* D03* X124600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X290600Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X305100Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X291400Y229800D02* D03* Y234800D02* D03* Y239800D02* D03* Y244800D02* D03* Y254800D02* D03* Y249800D02* D03* X304800Y229300D02* D03* Y234300D02* D03* Y239300D02* D03* Y244300D02* D03* Y254300D02* D03* Y249300D02* D03* X125200Y409200D02* D03* Y414200D02* D03* Y419200D02* D03* Y424200D02* D03* Y434200D02* D03* Y429200D02* D03* X291200Y338300D02* D03* Y343300D02* D03* Y348300D02* D03* Y353300D02* D03* Y363300D02* D03* Y358300D02* D03* X291000Y404100D02* D03* Y409100D02* D03* Y414100D02* D03* Y419100D02* D03* Y429100D02* D03* Y424100D02* D03* X304900Y404500D02* D03* Y409500D02* D03* Y414500D02* D03* Y419500D02* D03* Y429500D02* D03* Y424500D02* D03* X304700Y338200D02* D03* Y343200D02* D03* Y348200D02* D03* Y353200D02* D03* Y363200D02* D03* Y358200D02* D03* X471200Y401400D02* D03* Y406400D02* D03* Y411400D02* D03* Y416400D02* D03* Y426400D02* D03* Y421400D02* D03* X471600Y339500D02* D03* Y344500D02* D03* Y349500D02* D03* Y354500D02* D03* Y364500D02* D03* Y359500D02* D03* Y216100D02* D03* Y221100D02* D03* Y226100D02* D03* Y231100D02* D03* Y241100D02* D03* Y236100D02* D03* X470600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X443700Y124400D02* D03* X438700D02* D03* X433700D02* D03* X428700D02* D03* X418700D02* D03* X423700D02* D03* X357000Y124000D02* D03* X352000D02* D03* X347000D02* D03* X342000D02* D03* X332000D02* D03* X337000D02* D03* X360500Y289900D02* D03* X355500D02* D03* X350500D02* D03* X345500D02* D03* X335500D02* D03* X340500D02* D03* X432500Y290100D02* D03* X427500D02* D03* X422500D02* D03* X417500D02* D03* X407500D02* D03* X412500D02* D03* X431400Y303700D02* D03* X426400D02* D03* X421400D02* D03* X416400D02* D03* X406400D02* D03* X411400D02* D03* X360600Y304500D02* D03* X355600D02* D03* X350600D02* D03* X345600D02* D03* X335600D02* D03* X340600D02* D03* X365000Y469600D02* D03* X360000D02* D03* X355000D02* D03* X350000D02* D03* X340000D02* D03* X345000D02* D03* X435000D02* D03* X430000D02* D03* X425000D02* D03* X420000D02* D03* X410000D02* D03* X415000D02* D03* X252600D02* D03* X247600D02* D03* X242600D02* D03* X237600D02* D03* X227600D02* D03* X232600D02* D03* X183200Y469800D02* D03* X178200D02* D03* X173200D02* D03* X168200D02* D03* X158200D02* D03* X163200D02* D03* X175500Y303900D02* D03* X170500D02* D03* X165500D02* D03* X160500D02* D03* X150500D02* D03* X155500D02* D03* X175700Y290100D02* D03* X170700D02* D03* X165700D02* D03* X160700D02* D03* X150700D02* D03* X155700D02* D03* X260900Y303300D02* D03* X255900D02* D03* X250900D02* D03* X245900D02* D03* X235900D02* D03* X240900D02* D03* X261100Y290100D02* D03* X256100D02* D03* X251100D02* D03* X246100D02* D03* X236100D02* D03* X241100D02* D03* X261300Y123800D02* D03* X256300D02* D03* X251300D02* D03* X246300D02* D03* X236300D02* D03* X241300D02* D03* X180500Y124000D02* D03* X175500D02* D03* X170500D02* D03* X165500D02* D03* X155500D02* D03* X160500D02* D03* X125100Y351700D02* D03* Y356700D02* D03* Y346700D02* D03* Y341700D02* D03* Y336700D02* D03* Y331700D02* D03* D50* X147744Y146744D02* D03* X269791D02* D03* Y268791D02* D03* X147744D02* D03* X327744Y146744D02* D03* X449791D02* D03* Y268791D02* D03* X327744D02* D03* X147744Y326744D02* D03* X269791D02* D03* Y448791D02* D03* X147744D02* D03* X327744Y326744D02* D03* X449791D02* D03* Y448791D02* D03* X327744D02* D03* D51* X133008Y181964D02* D03* Y209524D02* D03* X313008Y181964D02* D03* Y209524D02* D03* X133008Y361964D02* D03* Y389524D02* D03* X313008Y361964D02* D03* Y389524D02* D03* D52* X144031Y185901D02* D03* Y205587D02* D03* X324031Y185901D02* D03* Y205587D02* D03* X144031Y365901D02* D03* Y385587D02* D03* X324031Y365901D02* D03* Y385587D02* D03* D53* X132044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X235244Y252744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X312044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X415244Y252744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X132044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X235244Y432744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* X312044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X415244Y432744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* D54* X132044Y252344D02* D03* X312044D02* D03* X132044Y432344D02* D03* X312044D02* D03* D55* X141744Y166744D02* D03* Y171744D02* D03* X146744Y166744D02* D03* Y171744D02* D03* X151744Y166744D02* D03* Y171744D02* D03* X156744Y166744D02* D03* Y171744D02* D03* X161744Y166744D02* D03* X321744D02* D03* Y171744D02* D03* X326744Y166744D02* D03* Y171744D02* D03* X331744Y166744D02* D03* Y171744D02* D03* X336744Y166744D02* D03* Y171744D02* D03* X341744Y166744D02* D03* X141744Y346744D02* D03* Y351744D02* D03* X146744Y346744D02* D03* Y351744D02* D03* X151744Y346744D02* D03* Y351744D02* D03* X156744Y346744D02* D03* Y351744D02* D03* X161744Y346744D02* D03* X321744D02* D03* Y351744D02* D03* X326744Y346744D02* D03* Y351744D02* D03* X331744Y346744D02* D03* Y351744D02* D03* X336744Y346744D02* D03* Y351744D02* D03* X341744Y346744D02* D03* D56* X161744Y171744D02* D03* X341744D02* D03* X161744Y351744D02* D03* X341744D02* D03* D57* X205244Y252744D02* D03* X283500Y161200D02* D03* X385244Y252744D02* D03* X463500Y161200D02* D03* X205244Y432744D02* D03* X283500Y341200D02* D03* X385244Y432744D02* D03* X463500Y341200D02* D03* D58* X235744Y276244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* X235744Y456244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* D59* X150244Y207744D02* D03* X249400Y229705D02* D03* X184500Y143895D02* D03* X190800Y217300D02* D03* X183987Y168409D02* D03* X233941Y225283D02* D03* X232600Y165100D02* D03* X195700Y230200D02* D03* X186300Y200600D02* D03* X226418Y163000D02* D03* X173100Y191300D02* D03* X194700Y141400D02* D03* X166000Y165300D02* D03* X192600Y153100D02* D03* X188900Y152400D02* D03* X197900Y146186D02* D03* X192600Y149500D02* D03* X178000Y156600D02* D03* X154600Y181244D02* D03* X141244Y246244D02* D03* X141044Y226544D02* D03* X149244Y246344D02* D03* X149644Y226644D02* D03* X172444Y234044D02* D03* X166644D02* D03* X166744Y261644D02* D03* X167044Y268444D02* D03* X166644Y264944D02* D03* X169544Y234044D02* D03* X180244Y260744D02* D03* X188244D02* D03* X196244Y264744D02* D03* X176244Y268744D02* D03* X192244D02* D03* X196244D02* D03* X200244Y264744D02* D03* X230500Y168409D02* D03* X252200Y162700D02* D03* X243900Y237200D02* D03* X258744Y202700D02* D03* X255100Y190400D02* D03* X249100Y196900D02* D03* X238900Y220700D02* D03* Y186044D02* D03* X234700Y188100D02* D03* X272900Y205200D02* D03* X245900Y172900D02* D03* X245500Y186600D02* D03* X246100Y200700D02* D03* X228900Y160100D02* D03* X230700Y211200D02* D03* X234700Y192200D02* D03* X266700Y181800D02* D03* X175244Y202244D02* D03* X159087Y202744D02* D03* X212744Y185744D02* D03* X220244Y189744D02* D03* X221744Y185244D02* D03* X217744Y187244D02* D03* Y150244D02* D03* X222300Y151830D02* D03* X220200Y157244D02* D03* X207744Y188744D02* D03* X203744Y178244D02* D03* X224400Y227244D02* D03* X203744Y190244D02* D03* X199744Y188244D02* D03* X183244Y187244D02* D03* X187244Y181244D02* D03* X178744Y200744D02* D03* X202400Y165244D02* D03* X189744Y185244D02* D03* X213244Y148744D02* D03* X214744Y142244D02* D03* X242618Y148744D02* D03* X215244Y243244D02* D03* X201244Y239744D02* D03* X202244Y236244D02* D03* X199744Y243244D02* D03* X201244Y229244D02* D03* X198744Y234244D02* D03* X190244Y225900D02* D03* X232244Y238244D02* D03* X255244Y215244D02* D03* X234744Y202744D02* D03* X198544Y199889D02* D03* X141244Y232244D02* D03* X150244D02* D03* X141244Y251244D02* D03* X182744Y256744D02* D03* X180244Y268744D02* D03* X184244Y264744D02* D03* X176744Y236744D02* D03* X186244Y236650D02* D03* X188244Y234244D02* D03* Y230744D02* D03* X183744D02* D03* Y225244D02* D03* X192244Y260744D02* D03* X178744Y234244D02* D03* X183744D02* D03* X185744Y227744D02* D03* X172744Y225244D02* D03* X168744D02* D03* X181744Y221244D02* D03* X140744Y217244D02* D03* X136244Y260244D02* D03* Y269244D02* D03* X135744Y277244D02* D03* X143744Y283744D02* D03* X150744D02* D03* X158744Y283244D02* D03* X159744Y262244D02* D03* X147744Y217244D02* D03* X151744Y128744D02* D03* X206744Y128945D02* D03* X268744Y170344D02* D03* X242744Y128945D02* D03* X221744Y178244D02* D03* X226244Y191244D02* D03* X258744Y134244D02* D03* X259244Y157244D02* D03* X171744Y150744D02* D03* X330244Y207744D02* D03* X429400Y229705D02* D03* X364500Y143895D02* D03* X370800Y217300D02* D03* X363987Y168409D02* D03* X413941Y225283D02* D03* X412600Y165100D02* D03* X375700Y230200D02* D03* X366300Y200600D02* D03* X406418Y163000D02* D03* X353100Y191300D02* D03* X374700Y141400D02* D03* X346000Y165300D02* D03* X372600Y153100D02* D03* X368900Y152400D02* D03* X377900Y146186D02* D03* X372600Y149500D02* D03* X358000Y156600D02* D03* X334600Y181244D02* D03* X321244Y246244D02* D03* X321044Y226544D02* D03* X329244Y246344D02* D03* X329644Y226644D02* D03* X352444Y234044D02* D03* X346644D02* D03* X346744Y261644D02* D03* X347044Y268444D02* D03* X346644Y264944D02* D03* X349544Y234044D02* D03* X360244Y260744D02* D03* X368244D02* D03* X376244Y264744D02* D03* X356244Y268744D02* D03* X372244D02* D03* X376244D02* D03* X380244Y264744D02* D03* X410500Y168409D02* D03* X432200Y162700D02* D03* X423900Y237200D02* D03* X438744Y202700D02* D03* X435100Y190400D02* D03* X429100Y196900D02* D03* X418900Y220700D02* D03* Y186044D02* D03* X414700Y188100D02* D03* X452900Y205200D02* D03* X425900Y172900D02* D03* X425500Y186600D02* D03* X426100Y200700D02* D03* X408900Y160100D02* D03* X410700Y211200D02* D03* X414700Y192200D02* D03* X446700Y181800D02* D03* X355244Y202244D02* D03* X339087Y202744D02* D03* X392744Y185744D02* D03* X400244Y189744D02* D03* X401744Y185244D02* D03* X397744Y187244D02* D03* Y150244D02* D03* X402300Y151830D02* D03* X400200Y157244D02* D03* X387744Y188744D02* D03* X383744Y178244D02* D03* X404400Y227244D02* D03* X383744Y190244D02* D03* X379744Y188244D02* D03* X363244Y187244D02* D03* X367244Y181244D02* D03* X358744Y200744D02* D03* X382400Y165244D02* D03* X369744Y185244D02* D03* X393244Y148744D02* D03* X394744Y142244D02* D03* X422618Y148744D02* D03* X395244Y243244D02* D03* X381244Y239744D02* D03* X382244Y236244D02* D03* X379744Y243244D02* D03* X381244Y229244D02* D03* X378744Y234244D02* D03* X370244Y225900D02* D03* X412244Y238244D02* D03* X435244Y215244D02* D03* X414744Y202744D02* D03* X378544Y199889D02* D03* X321244Y232244D02* D03* X330244D02* D03* X321244Y251244D02* D03* X362744Y256744D02* D03* X360244Y268744D02* D03* X364244Y264744D02* D03* X356744Y236744D02* D03* X366244Y236650D02* D03* X368244Y234244D02* D03* Y230744D02* D03* X363744D02* D03* Y225244D02* D03* X372244Y260744D02* D03* X358744Y234244D02* D03* X363744D02* D03* X365744Y227744D02* D03* X352744Y225244D02* D03* X348744D02* D03* X361744Y221244D02* D03* X320744Y217244D02* D03* X316244Y260244D02* D03* Y269244D02* D03* X315744Y277244D02* D03* X323744Y283744D02* D03* X330744D02* D03* X338744Y283244D02* D03* X339744Y262244D02* D03* X327744Y217244D02* D03* X331744Y128744D02* D03* X386744Y128945D02* D03* X448744Y170344D02* D03* X422744Y128945D02* D03* X401744Y178244D02* D03* X406244Y191244D02* D03* X438744Y134244D02* D03* X439244Y157244D02* D03* X351744Y150744D02* D03* X150244Y387744D02* D03* X249400Y409705D02* D03* X184500Y323895D02* D03* X190800Y397300D02* D03* X183987Y348409D02* D03* X233941Y405283D02* D03* X232600Y345100D02* D03* X195700Y410200D02* D03* X186300Y380600D02* D03* X226418Y343000D02* D03* X173100Y371300D02* D03* X194700Y321400D02* D03* X166000Y345300D02* D03* X192600Y333100D02* D03* X188900Y332400D02* D03* X197900Y326186D02* D03* X192600Y329500D02* D03* X178000Y336600D02* D03* X154600Y361244D02* D03* X141244Y426244D02* D03* X141044Y406544D02* D03* X149244Y426344D02* D03* X149644Y406644D02* D03* X172444Y414044D02* D03* X166644D02* D03* X166744Y441644D02* D03* X167044Y448444D02* D03* X166644Y444944D02* D03* X169544Y414044D02* D03* X180244Y440744D02* D03* X188244D02* D03* X196244Y444744D02* D03* X176244Y448744D02* D03* X192244D02* D03* X196244D02* D03* X200244Y444744D02* D03* X230500Y348409D02* D03* X252200Y342700D02* D03* X243900Y417200D02* D03* X258744Y382700D02* D03* X255100Y370400D02* D03* X249100Y376900D02* D03* X238900Y400700D02* D03* Y366044D02* D03* X234700Y368100D02* D03* X272900Y385200D02* D03* X245900Y352900D02* D03* X245500Y366600D02* D03* X246100Y380700D02* D03* X228900Y340100D02* D03* X230700Y391200D02* D03* X234700Y372200D02* D03* X266700Y361800D02* D03* X175244Y382244D02* D03* X159087Y382744D02* D03* X212744Y365744D02* D03* X220244Y369744D02* D03* X221744Y365244D02* D03* X217744Y367244D02* D03* Y330244D02* D03* X222300Y331830D02* D03* X220200Y337244D02* D03* X207744Y368744D02* D03* X203744Y358244D02* D03* X224400Y407244D02* D03* X203744Y370244D02* D03* X199744Y368244D02* D03* X183244Y367244D02* D03* X187244Y361244D02* D03* X178744Y380744D02* D03* X202400Y345244D02* D03* X189744Y365244D02* D03* X213244Y328744D02* D03* X214744Y322244D02* D03* X242618Y328744D02* D03* X215244Y423244D02* D03* X201244Y419744D02* D03* X202244Y416244D02* D03* X199744Y423244D02* D03* X201244Y409244D02* D03* X198744Y414244D02* D03* X190244Y405900D02* D03* X232244Y418244D02* D03* X255244Y395244D02* D03* X234744Y382744D02* D03* X198544Y379889D02* D03* X141244Y412244D02* D03* X150244D02* D03* X141244Y431244D02* D03* X182744Y436744D02* D03* X180244Y448744D02* D03* X184244Y444744D02* D03* X176744Y416744D02* D03* X186244Y416650D02* D03* X188244Y414244D02* D03* Y410744D02* D03* X183744D02* D03* Y405244D02* D03* X192244Y440744D02* D03* X178744Y414244D02* D03* X183744D02* D03* X185744Y407744D02* D03* X172744Y405244D02* D03* X168744D02* D03* X181744Y401244D02* D03* X140744Y397244D02* D03* X136244Y440244D02* D03* Y449244D02* D03* X135744Y457244D02* D03* X143744Y463744D02* D03* X150744D02* D03* X158744Y463244D02* D03* X159744Y442244D02* D03* X147744Y397244D02* D03* X151744Y308744D02* D03* X206744Y308945D02* D03* X268744Y350344D02* D03* X242744Y308945D02* D03* X221744Y358244D02* D03* X226244Y371244D02* D03* X258744Y314244D02* D03* X259244Y337244D02* D03* X171744Y330744D02* D03* X330244Y387744D02* D03* X429400Y409705D02* D03* X364500Y323895D02* D03* X370800Y397300D02* D03* X363987Y348409D02* D03* X413941Y405283D02* D03* X412600Y345100D02* D03* X375700Y410200D02* D03* X366300Y380600D02* D03* X406418Y343000D02* D03* X353100Y371300D02* D03* X374700Y321400D02* D03* X346000Y345300D02* D03* X372600Y333100D02* D03* X368900Y332400D02* D03* X377900Y326186D02* D03* X372600Y329500D02* D03* X358000Y336600D02* D03* X334600Y361244D02* D03* X321244Y426244D02* D03* X321044Y406544D02* D03* X329244Y426344D02* D03* X329644Y406644D02* D03* X352444Y414044D02* D03* X346644D02* D03* X346744Y441644D02* D03* X347044Y448444D02* D03* X346644Y444944D02* D03* X349544Y414044D02* D03* X360244Y440744D02* D03* X368244D02* D03* X376244Y444744D02* D03* X356244Y448744D02* D03* X372244D02* D03* X376244D02* D03* X380244Y444744D02* D03* X410500Y348409D02* D03* X432200Y342700D02* D03* X423900Y417200D02* D03* X438744Y382700D02* D03* X435100Y370400D02* D03* X429100Y376900D02* D03* X418900Y400700D02* D03* Y366044D02* D03* X414700Y368100D02* D03* X452900Y385200D02* D03* X425900Y352900D02* D03* X425500Y366600D02* D03* X426100Y380700D02* D03* X408900Y340100D02* D03* X410700Y391200D02* D03* X414700Y372200D02* D03* X446700Y361800D02* D03* X355244Y382244D02* D03* X339087Y382744D02* D03* X392744Y365744D02* D03* X400244Y369744D02* D03* X401744Y365244D02* D03* X397744Y367244D02* D03* Y330244D02* D03* X402300Y331830D02* D03* X400200Y337244D02* D03* X387744Y368744D02* D03* X383744Y358244D02* D03* X404400Y407244D02* D03* X383744Y370244D02* D03* X379744Y368244D02* D03* X363244Y367244D02* D03* X367244Y361244D02* D03* X358744Y380744D02* D03* X382400Y345244D02* D03* X369744Y365244D02* D03* X393244Y328744D02* D03* X394744Y322244D02* D03* X422618Y328744D02* D03* X395244Y423244D02* D03* X381244Y419744D02* D03* X382244Y416244D02* D03* X379744Y423244D02* D03* X381244Y409244D02* D03* X378744Y414244D02* D03* X370244Y405900D02* D03* X412244Y418244D02* D03* X435244Y395244D02* D03* X414744Y382744D02* D03* X378544Y379889D02* D03* X321244Y412244D02* D03* X330244D02* D03* X321244Y431244D02* D03* X362744Y436744D02* D03* X360244Y448744D02* D03* X364244Y444744D02* D03* X356744Y416744D02* D03* X366244Y416650D02* D03* X368244Y414244D02* D03* Y410744D02* D03* X363744D02* D03* Y405244D02* D03* X372244Y440744D02* D03* X358744Y414244D02* D03* X363744D02* D03* X365744Y407744D02* D03* X352744Y405244D02* D03* X348744D02* D03* X361744Y401244D02* D03* X320744Y397244D02* D03* X316244Y440244D02* D03* Y449244D02* D03* X315744Y457244D02* D03* X323744Y463744D02* D03* X330744D02* D03* X338744Y463244D02* D03* X339744Y442244D02* D03* X327744Y397244D02* D03* X331744Y308744D02* D03* X386744Y308945D02* D03* X448744Y350344D02* D03* X422744Y308945D02* D03* X401744Y358244D02* D03* X406244Y371244D02* D03* X438744Y314244D02* D03* X439244Y337244D02* D03* X351744Y330744D02* D03* D60* X177013Y250875D02* D03* X181344D02* D03* X185675D02* D03* X177013Y246544D02* D03* X181344D02* D03* X185675D02* D03* X177013Y242213D02* D03* X181344D02* D03* X185675D02* D03* X357013Y250875D02* D03* X361344D02* D03* X365675D02* D03* X357013Y246544D02* D03* X361344D02* D03* X365675D02* D03* X357013Y242213D02* D03* X361344D02* D03* X365675D02* D03* X177013Y430875D02* D03* X181344D02* D03* X185675D02* D03* X177013Y426544D02* D03* X181344D02* D03* X185675D02* D03* X177013Y422213D02* D03* X181344D02* D03* X185675D02* D03* X357013Y430875D02* D03* X361344D02* D03* X365675D02* D03* X357013Y426544D02* D03* X361344D02* D03* X365675D02* D03* X357013Y422213D02* D03* X361344D02* D03* X365675D02* D03* M02* ================================================ FILE: hardware/panel.GTO ================================================ G04 Layer_Color=65535* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD43C,0.00800*% %ADD45C,0.01000*% %ADD67C,0.00984*% %ADD68C,0.00500*% %ADD69C,0.00787*% %ADD70C,0.01400*% D43* X193044Y273687D02* G03* X193044Y273687I-12400J0D01* G01* X249243Y142743D02* X248744Y143243D01* X247744D01* X247244Y142743D01* Y142243D01* X247744Y141744D01* X248744D01* X249243Y141244D01* Y140744D01* X248744Y140244D01* X247744D01* X247244Y140744D01* X250243Y143243D02* Y140244D01* X251243Y141244D01* X252242Y140244D01* Y143243D01* X254742Y140244D02* Y143243D01* X253242Y141744D01* X255241D01* X251743Y263743D02* X250744D01* X251244D01* Y261244D01* X250744Y260744D01* X250244D01* X249744Y261244D01* X252743Y263243D02* X253243Y263743D01* X254243D01* X254743Y263243D01* Y262743D01* X254243Y262244D01* X253743D01* X254243D01* X254743Y261744D01* Y261244D01* X254243Y260744D01* X253243D01* X252743Y261244D01* X151199Y182299D02* X150200D01* X150699D01* Y179800D01* X150200Y179300D01* X149700D01* X149200Y179800D01* X154198Y182299D02* X152199D01* Y180799D01* X153199Y181299D01* X153699D01* X154198Y180799D01* Y179800D01* X153699Y179300D01* X152699D01* X152199Y179800D01* X156743Y279743D02* X156244Y280243D01* X155244D01* X154744Y279743D01* Y277744D01* X155244Y277244D01* X156244D01* X156743Y277744D01* X159742Y277244D02* X157743D01* X159742Y279243D01* Y279743D01* X159243Y280243D01* X158243D01* X157743Y279743D01* X160742Y277244D02* X161742D01* X161242D01* Y280243D01* X160742Y279743D01* X228200Y162199D02* Y161699D01* X229200Y160699D01* X230199Y161699D01* Y162199D01* X229200Y160699D02* Y159200D01* X231199D02* X232199D01* X231699D01* Y162199D01* X231199Y161699D01* X149345Y190844D02* X151844D01* X152344Y191344D01* Y192344D01* X151844Y192843D01* X149345D01* X149845Y195843D02* X149345Y195343D01* Y194343D01* X149845Y193843D01* X150345D01* X150845Y194343D01* Y195343D01* X151344Y195843D01* X151844D01* X152344Y195343D01* Y194343D01* X151844Y193843D01* X149345Y196842D02* X152344D01* Y198342D01* X151844Y198842D01* X151344D01* X150845Y198342D01* Y196842D01* Y198342D01* X150345Y198842D01* X149845D01* X149345Y198342D01* Y196842D01* X152344Y199841D02* Y200841D01* Y200341D01* X149345D01* X149845Y199841D01* X187000Y181699D02* Y179200D01* X187500Y178700D01* X188499D01* X188999Y179200D01* Y181699D01* X189999Y181199D02* X190499Y181699D01* X191499D01* X191998Y181199D01* Y180699D01* X191499Y180200D01* X191998Y179700D01* Y179200D01* X191499Y178700D01* X190499D01* X189999Y179200D01* Y179700D01* X190499Y180200D01* X189999Y180699D01* Y181199D01* X190499Y180200D02* X191499D01* X172544Y189143D02* Y186644D01* X173044Y186144D01* X174044D01* X174543Y186644D01* Y189143D01* X175543D02* X177542D01* Y188643D01* X175543Y186644D01* Y186144D01* X248244Y238243D02* Y235744D01* X248744Y235244D01* X249744D01* X250243Y235744D01* Y238243D01* X253242Y235244D02* X251243D01* X253242Y237243D01* Y237743D01* X252743Y238243D01* X251743D01* X251243Y237743D01* X146743Y218243D02* X146244Y218743D01* X145244D01* X144744Y218243D01* Y217743D01* X145244Y217244D01* X146244D01* X146743Y216744D01* Y216244D01* X146244Y215744D01* X145244D01* X144744Y216244D01* X147743Y218743D02* Y215744D01* X148743Y216744D01* X149742Y215744D01* Y218743D01* X152742D02* X150742D01* Y217244D01* X151742Y217743D01* X152242D01* X152742Y217244D01* Y216244D01* X152242Y215744D01* X151242D01* X150742Y216244D01* X244100Y236500D02* X241101D01* Y238000D01* X241601Y238499D01* X242600D01* X243100Y238000D01* Y236500D01* Y237500D02* X244100Y238499D01* Y241498D02* Y239499D01* X242101Y241498D01* X241601D01* X241101Y240999D01* Y239999D01* X241601Y239499D01* X234244Y227744D02* X231245D01* Y229244D01* X231745Y229743D01* X232745D01* X233244Y229244D01* Y227744D01* Y228744D02* X234244Y229743D01* Y230743D02* Y231743D01* Y231243D01* X231245D01* X231745Y230743D01* X153600Y159899D02* Y156900D01* X155599D01* X158598Y159899D02* X156599D01* Y156900D01* X158598D01* X156599Y158399D02* X157599D01* X159598Y159899D02* Y156900D01* X161098D01* X161597Y157400D01* Y159399D01* X161098Y159899D01* X159598D01* X164596Y156900D02* X162597D01* X164596Y158899D01* Y159399D01* X164097Y159899D01* X163097D01* X162597Y159399D01* X169644Y182943D02* Y179944D01* X171643D01* X174643Y182943D02* X172643D01* Y179944D01* X174643D01* X172643Y181444D02* X173643D01* X175642Y182943D02* Y179944D01* X177142D01* X177641Y180444D01* Y182443D01* X177142Y182943D01* X175642D01* X178641Y179944D02* X179641D01* X179141D01* Y182943D01* X178641Y182443D01* X242444Y253243D02* Y250244D01* X243944D01* X244443Y250744D01* Y252743D01* X243944Y253243D01* X242444D01* X245443Y250244D02* X246443D01* X245943D01* Y253243D01* X245443Y252743D01* X247099Y156699D02* X246600Y157199D01* X245600D01* X245100Y156699D01* Y154700D01* X245600Y154200D01* X246600D01* X247099Y154700D01* X248099Y154200D02* X249099D01* X248599D01* Y157199D01* X248099Y156699D01* X250598D02* X251098Y157199D01* X252098D01* X252598Y156699D01* Y156199D01* X252098Y155700D01* X252598Y155200D01* Y154700D01* X252098Y154200D01* X251098D01* X250598Y154700D01* Y155200D01* X251098Y155700D01* X250598Y156199D01* Y156699D01* X251098Y155700D02* X252098D01* X238999Y149399D02* X238499Y149899D01* X237500D01* X237000Y149399D01* Y147400D01* X237500Y146900D01* X238499D01* X238999Y147400D01* X239999Y146900D02* X240999D01* X240499D01* Y149899D01* X239999Y149399D01* X242498Y149899D02* X244498D01* Y149399D01* X242498Y147400D01* Y146900D01* X164743Y230243D02* X164244Y230743D01* X163244D01* X162744Y230243D01* Y228244D01* X163244Y227744D01* X164244D01* X164743Y228244D01* X165743Y227744D02* X166743D01* X166243D01* Y230743D01* X165743Y230243D01* X168242D02* X168742Y230743D01* X169742D01* X170242Y230243D01* Y229743D01* X169742Y229244D01* X169242D01* X169742D01* X170242Y228744D01* Y228244D01* X169742Y227744D01* X168742D01* X168242Y228244D01* X197244Y259244D02* X197744D01* X198244Y259744D01* Y262243D01* X200243Y260244D02* X201243D01* X200743D01* Y263243D01* X200243Y262743D01* X129500Y260400D02* X130000D01* X130500Y260900D01* Y263399D01* X134498Y264399D02* X133499Y263899D01* X132499Y262899D01* Y261900D01* X132999Y261400D01* X133999D01* X134498Y261900D01* Y262400D01* X133999Y262899D01* X132499D01* X147400Y235600D02* Y238599D01* X148899D01* X149399Y238099D01* Y237100D01* X148899Y236600D01* X147400D01* X148400D02* X149399Y235600D01* X150399D02* X151399D01* X150899D01* Y238599D01* X150399Y238099D01* X152898D02* X153398Y238599D01* X154398D01* X154898Y238099D01* Y236100D01* X154398Y235600D01* X153398D01* X152898Y236100D01* Y238099D01* X147800Y255300D02* Y258299D01* X149300D01* X149799Y257799D01* Y256800D01* X149300Y256300D01* X147800D01* X148800D02* X149799Y255300D01* X150799D02* X151799D01* X151299D01* Y258299D01* X150799Y257799D01* X153298Y255300D02* X154298D01* X153798D01* Y258299D01* X153298Y257799D01* X170543Y141243D02* X170044Y141743D01* X169044D01* X168544Y141243D01* Y140743D01* X169044Y140244D01* X170044D01* X170543Y139744D01* Y139244D01* X170044Y138744D01* X169044D01* X168544Y139244D01* X171543Y141743D02* Y138744D01* X172543Y139744D01* X173542Y138744D01* Y141743D01* X174542Y138744D02* X175542D01* X175042D01* Y141743D01* X174542Y141243D01* X161244Y258743D02* Y256244D01* X161744Y255744D01* X162744D01* X163243Y256244D01* Y258743D01* X164243Y255744D02* X165243D01* X164743D01* Y258743D01* X164243Y258243D01* X204743Y141743D02* X204244Y142243D01* X203244D01* X202744Y141743D01* Y141243D01* X203244Y140744D01* X204244D01* X204743Y140244D01* Y139744D01* X204244Y139244D01* X203244D01* X202744Y139744D01* X205743Y142243D02* Y139244D01* X206743Y140244D01* X207743Y139244D01* Y142243D01* X208742Y141743D02* X209242Y142243D01* X210242D01* X210741Y141743D01* Y141243D01* X210242Y140744D01* X209742D01* X210242D01* X210741Y140244D01* Y139744D01* X210242Y139244D01* X209242D01* X208742Y139744D01* X244743Y205244D02* Y207243D01* X244244Y207743D01* X243244D01* X242744Y207243D01* Y205244D01* X243244Y204744D01* X244244D01* X243744Y205744D02* X244743Y204744D01* X244244D02* X244743Y205244D01* X245743Y204744D02* X246743D01* X246243D01* Y207743D01* X245743Y207243D01* X242743Y188744D02* Y190743D01* X242244Y191243D01* X241244D01* X240744Y190743D01* Y188744D01* X241244Y188244D01* X242244D01* X241744Y189244D02* X242743Y188244D01* X242244D02* X242743Y188744D01* X243743Y190743D02* X244243Y191243D01* X245243D01* X245743Y190743D01* Y190243D01* X245243Y189744D01* X244743D01* X245243D01* X245743Y189244D01* Y188744D01* X245243Y188244D01* X244243D01* X243743Y188744D01* X241743Y172244D02* Y174243D01* X241244Y174743D01* X240244D01* X239744Y174243D01* Y172244D01* X240244Y171744D01* X241244D01* X240744Y172744D02* X241743Y171744D01* X241244D02* X241743Y172244D01* X244243Y171744D02* Y174743D01* X242743Y173244D01* X244742D01* X284243Y262743D02* X283244D01* X283744D01* Y260244D01* X283244Y259744D01* X282744D01* X282244Y260244D01* X287243Y259744D02* X285243D01* X287243Y261743D01* Y262243D01* X286743Y262743D01* X285743D01* X285243Y262243D01* X165720Y330492D02* X169052D01* X167386D01* Y325494D01* X171551D02* X173217D01* X174050Y326327D01* Y327993D01* X173217Y328826D01* X171551D01* X170718Y327993D01* Y326327D01* X171551Y325494D01* X175716Y323828D02* Y328826D01* X178216D01* X179049Y327993D01* Y326327D01* X178216Y325494D01* X175716D01* X189046Y329659D02* X188212Y330492D01* X186546D01* X185713Y329659D01* Y328826D01* X186546Y327993D01* X188212D01* X189046Y327160D01* Y326327D01* X188212Y325494D01* X186546D01* X185713Y326327D01* X190712Y325494D02* X192378D01* X191545D01* Y328826D01* X190712D01* X194877Y325494D02* X196543D01* X195710D01* Y330492D01* X194877D01* X199042Y325494D02* Y330492D01* Y327160D02* X201541Y328826D01* X199042Y327160D02* X201541Y325494D01* X204041D02* X206540D01* X207373Y326327D01* X206540Y327160D01* X204874D01* X204041Y327993D01* X204874Y328826D01* X207373D01* X212371D02* X209872D01* X209039Y327993D01* Y326327D01* X209872Y325494D01* X212371D01* X214037Y328826D02* Y325494D01* Y327160D01* X214870Y327993D01* X215704Y328826D01* X216537D01* X221535Y325494D02* X219869D01* X219036Y326327D01* Y327993D01* X219869Y328826D01* X221535D01* X222368Y327993D01* Y327160D01* X219036D01* X226533Y325494D02* X224867D01* X224034Y326327D01* Y327993D01* X224867Y328826D01* X226533D01* X227366Y327993D01* Y327160D01* X224034D01* X229032Y325494D02* Y328826D01* X231532D01* X232365Y327993D01* Y325494D01* X261744Y253617D02* Y251618D01* X262744Y250618D01* X263743Y251618D01* Y253617D01* X264743D02* X265743D01* X265243D01* Y250618D01* X264743D01* X265743D01* X267242D02* Y253617D01* X269242Y250618D01* Y253617D01* X263243Y243243D02* X262744Y243743D01* X261744D01* X261244Y243243D01* Y242743D01* X261744Y242244D01* X262744D01* X263243Y241744D01* Y241244D01* X262744Y240744D01* X261744D01* X261244Y241244D01* X264243Y243743D02* X266243D01* X265243D01* Y240744D01* X267242D02* Y243743D01* X268742D01* X269241Y243243D01* Y242244D01* X268742Y241744D01* X267242D01* X261244Y232243D02* Y229244D01* X262744D01* X263243Y229744D01* Y231743D01* X262744Y232243D01* X261244D01* X264243D02* X265243D01* X264743D01* Y229244D01* X264243D01* X265243D01* X266742D02* Y232243D01* X268242D01* X268742Y231743D01* Y230744D01* X268242Y230244D01* X266742D01* X267742D02* X268742Y229244D01* X263744Y202243D02* Y199244D01* X265244D01* X265743Y199744D01* Y201743D01* X265244Y202243D01* X263744D01* X266743Y201743D02* X267243Y202243D01* X268243D01* X268742Y201743D01* Y201243D01* X268243Y200744D01* X267743D01* X268243D01* X268742Y200244D01* Y199744D01* X268243Y199244D01* X267243D01* X266743Y199744D01* X260123Y185865D02* X261537Y184451D01* X262951D01* X262951Y185865D01* X261537Y187278D01* X262597Y187632D02* Y188339D01* X263304Y189046D01* X264011Y189046D01* X264365Y188692D01* Y187985D01* X264011Y187632D01* X264365Y187985D01* X265072Y187985D01* X265425Y187632D01* X265425Y186925D01* X264718Y186218D01* X264011D01* X266485Y187985D02* X266132Y188339D01* X266485Y188692D01* X266839Y188339D01* X266485Y187985D01* Y191520D02* Y192227D01* X267192Y192933D01* X267899Y192933D01* X268253Y192580D01* Y191873D01* X267899Y191520D01* X268253Y191873D01* X268959D01* X269313Y191520D01* Y190813D01* X268606Y190106D01* X267899D01* X263744Y181243D02* X265743D01* X264744D01* Y178244D01* X266743Y181243D02* X268742Y178244D01* Y181243D02* X266743Y178244D01* X263744Y169044D02* Y172043D01* X265244D01* X265743Y171543D01* Y170544D01* X265244Y170044D01* X263744D01* X264744D02* X265743Y169044D01* X266743Y172043D02* X268742Y169044D01* Y172043D02* X266743Y169044D01* X263743Y212243D02* X263244Y212743D01* X262244D01* X261744Y212243D01* Y210244D01* X262244Y209744D01* X263244D01* X263743Y210244D01* Y211244D01* X262744D01* X264743Y209744D02* Y212743D01* X266742Y209744D01* Y212743D01* X267742D02* Y209744D01* X269242D01* X269742Y210244D01* Y212243D01* X269242Y212743D01* X267742D01* X258243Y221743D02* X256244D01* Y218744D01* X258243D01* X256244Y220244D02* X257244D01* X259243Y218744D02* Y221743D01* X260743D01* X261243Y221243D01* Y220244D01* X260743Y219744D01* X259243D01* X260243D02* X261243Y218744D01* X262242D02* Y221743D01* X263742D01* X264242Y221243D01* Y220244D01* X263742Y219744D01* X262242D01* X263242D02* X264242Y218744D01* X266741Y221743D02* X265741D01* X265241Y221243D01* Y219244D01* X265741Y218744D01* X266741D01* X267241Y219244D01* Y221243D01* X266741Y221743D01* X268240Y218744D02* Y221743D01* X269740D01* X270240Y221243D01* Y220244D01* X269740Y219744D01* X268240D01* X269240D02* X270240Y218744D01* X262743Y162243D02* X262244Y162743D01* X261244D01* X260744Y162243D01* Y160244D01* X261244Y159744D01* X262244D01* X262743Y160244D01* Y161244D01* X261744D01* X263743Y159744D02* Y162743D01* X265742Y159744D01* Y162743D01* X266742D02* Y159744D01* X268242D01* X268741Y160244D01* Y162243D01* X268242Y162743D01* X266742D01* X373044Y273687D02* G03* X373044Y273687I-12400J0D01* G01* X429243Y142743D02* X428744Y143243D01* X427744D01* X427244Y142743D01* Y142243D01* X427744Y141744D01* X428744D01* X429243Y141244D01* Y140744D01* X428744Y140244D01* X427744D01* X427244Y140744D01* X430243Y143243D02* Y140244D01* X431243Y141244D01* X432242Y140244D01* Y143243D01* X434742Y140244D02* Y143243D01* X433242Y141744D01* X435242D01* X431743Y263743D02* X430744D01* X431244D01* Y261244D01* X430744Y260744D01* X430244D01* X429744Y261244D01* X432743Y263243D02* X433243Y263743D01* X434243D01* X434742Y263243D01* Y262743D01* X434243Y262244D01* X433743D01* X434243D01* X434742Y261744D01* Y261244D01* X434243Y260744D01* X433243D01* X432743Y261244D01* X331199Y182299D02* X330200D01* X330699D01* Y179800D01* X330200Y179300D01* X329700D01* X329200Y179800D01* X334198Y182299D02* X332199D01* Y180799D01* X333199Y181299D01* X333699D01* X334198Y180799D01* Y179800D01* X333699Y179300D01* X332699D01* X332199Y179800D01* X336743Y279743D02* X336244Y280243D01* X335244D01* X334744Y279743D01* Y277744D01* X335244Y277244D01* X336244D01* X336743Y277744D01* X339742Y277244D02* X337743D01* X339742Y279243D01* Y279743D01* X339243Y280243D01* X338243D01* X337743Y279743D01* X340742Y277244D02* X341742D01* X341242D01* Y280243D01* X340742Y279743D01* X408200Y162199D02* Y161699D01* X409200Y160699D01* X410199Y161699D01* Y162199D01* X409200Y160699D02* Y159200D01* X411199D02* X412199D01* X411699D01* Y162199D01* X411199Y161699D01* X329345Y190844D02* X331844D01* X332344Y191344D01* Y192344D01* X331844Y192843D01* X329345D01* X329845Y195843D02* X329345Y195343D01* Y194343D01* X329845Y193843D01* X330345D01* X330845Y194343D01* Y195343D01* X331344Y195843D01* X331844D01* X332344Y195343D01* Y194343D01* X331844Y193843D01* X329345Y196842D02* X332344D01* Y198342D01* X331844Y198842D01* X331344D01* X330845Y198342D01* Y196842D01* Y198342D01* X330345Y198842D01* X329845D01* X329345Y198342D01* Y196842D01* X332344Y199841D02* Y200841D01* Y200341D01* X329345D01* X329845Y199841D01* X367000Y181699D02* Y179200D01* X367500Y178700D01* X368499D01* X368999Y179200D01* Y181699D01* X369999Y181199D02* X370499Y181699D01* X371498D01* X371998Y181199D01* Y180699D01* X371498Y180200D01* X371998Y179700D01* Y179200D01* X371498Y178700D01* X370499D01* X369999Y179200D01* Y179700D01* X370499Y180200D01* X369999Y180699D01* Y181199D01* X370499Y180200D02* X371498D01* X352544Y189143D02* Y186644D01* X353044Y186144D01* X354044D01* X354543Y186644D01* Y189143D01* X355543D02* X357542D01* Y188643D01* X355543Y186644D01* Y186144D01* X428244Y238243D02* Y235744D01* X428744Y235244D01* X429744D01* X430243Y235744D01* Y238243D01* X433243Y235244D02* X431243D01* X433243Y237243D01* Y237743D01* X432743Y238243D01* X431743D01* X431243Y237743D01* X326743Y218243D02* X326244Y218743D01* X325244D01* X324744Y218243D01* Y217743D01* X325244Y217244D01* X326244D01* X326743Y216744D01* Y216244D01* X326244Y215744D01* X325244D01* X324744Y216244D01* X327743Y218743D02* Y215744D01* X328743Y216744D01* X329743Y215744D01* Y218743D01* X332741D02* X330742D01* Y217244D01* X331742Y217743D01* X332242D01* X332741Y217244D01* Y216244D01* X332242Y215744D01* X331242D01* X330742Y216244D01* X424100Y236500D02* X421101D01* Y238000D01* X421601Y238499D01* X422601D01* X423100Y238000D01* Y236500D01* Y237500D02* X424100Y238499D01* Y241498D02* Y239499D01* X422101Y241498D01* X421601D01* X421101Y240999D01* Y239999D01* X421601Y239499D01* X414244Y227744D02* X411245D01* Y229244D01* X411745Y229743D01* X412745D01* X413244Y229244D01* Y227744D01* Y228744D02* X414244Y229743D01* Y230743D02* Y231743D01* Y231243D01* X411245D01* X411745Y230743D01* X333600Y159899D02* Y156900D01* X335599D01* X338598Y159899D02* X336599D01* Y156900D01* X338598D01* X336599Y158399D02* X337599D01* X339598Y159899D02* Y156900D01* X341098D01* X341597Y157400D01* Y159399D01* X341098Y159899D01* X339598D01* X344596Y156900D02* X342597D01* X344596Y158899D01* Y159399D01* X344097Y159899D01* X343097D01* X342597Y159399D01* X349644Y182943D02* Y179944D01* X351643D01* X354643Y182943D02* X352643D01* Y179944D01* X354643D01* X352643Y181444D02* X353643D01* X355642Y182943D02* Y179944D01* X357142D01* X357642Y180444D01* Y182443D01* X357142Y182943D01* X355642D01* X358641Y179944D02* X359641D01* X359141D01* Y182943D01* X358641Y182443D01* X422444Y253243D02* Y250244D01* X423944D01* X424443Y250744D01* Y252743D01* X423944Y253243D01* X422444D01* X425443Y250244D02* X426443D01* X425943D01* Y253243D01* X425443Y252743D01* X427099Y156699D02* X426600Y157199D01* X425600D01* X425100Y156699D01* Y154700D01* X425600Y154200D01* X426600D01* X427099Y154700D01* X428099Y154200D02* X429099D01* X428599D01* Y157199D01* X428099Y156699D01* X430598D02* X431098Y157199D01* X432098D01* X432598Y156699D01* Y156199D01* X432098Y155700D01* X432598Y155200D01* Y154700D01* X432098Y154200D01* X431098D01* X430598Y154700D01* Y155200D01* X431098Y155700D01* X430598Y156199D01* Y156699D01* X431098Y155700D02* X432098D01* X418999Y149399D02* X418500Y149899D01* X417500D01* X417000Y149399D01* Y147400D01* X417500Y146900D01* X418500D01* X418999Y147400D01* X419999Y146900D02* X420999D01* X420499D01* Y149899D01* X419999Y149399D01* X422498Y149899D02* X424498D01* Y149399D01* X422498Y147400D01* Y146900D01* X344743Y230243D02* X344244Y230743D01* X343244D01* X342744Y230243D01* Y228244D01* X343244Y227744D01* X344244D01* X344743Y228244D01* X345743Y227744D02* X346743D01* X346243D01* Y230743D01* X345743Y230243D01* X348242D02* X348742Y230743D01* X349742D01* X350242Y230243D01* Y229743D01* X349742Y229244D01* X349242D01* X349742D01* X350242Y228744D01* Y228244D01* X349742Y227744D01* X348742D01* X348242Y228244D01* X377244Y259244D02* X377744D01* X378244Y259744D01* Y262243D01* X380243Y260244D02* X381243D01* X380743D01* Y263243D01* X380243Y262743D01* X309500Y260400D02* X310000D01* X310500Y260900D01* Y263399D01* X314498Y264399D02* X313499Y263899D01* X312499Y262899D01* Y261900D01* X312999Y261400D01* X313999D01* X314498Y261900D01* Y262400D01* X313999Y262899D01* X312499D01* X327400Y235600D02* Y238599D01* X328900D01* X329399Y238099D01* Y237100D01* X328900Y236600D01* X327400D01* X328400D02* X329399Y235600D01* X330399D02* X331399D01* X330899D01* Y238599D01* X330399Y238099D01* X332898D02* X333398Y238599D01* X334398D01* X334898Y238099D01* Y236100D01* X334398Y235600D01* X333398D01* X332898Y236100D01* Y238099D01* X327800Y255300D02* Y258299D01* X329299D01* X329799Y257799D01* Y256800D01* X329299Y256300D01* X327800D01* X328800D02* X329799Y255300D01* X330799D02* X331799D01* X331299D01* Y258299D01* X330799Y257799D01* X333298Y255300D02* X334298D01* X333798D01* Y258299D01* X333298Y257799D01* X350543Y141243D02* X350044Y141743D01* X349044D01* X348544Y141243D01* Y140743D01* X349044Y140244D01* X350044D01* X350543Y139744D01* Y139244D01* X350044Y138744D01* X349044D01* X348544Y139244D01* X351543Y141743D02* Y138744D01* X352543Y139744D01* X353542Y138744D01* Y141743D01* X354542Y138744D02* X355542D01* X355042D01* Y141743D01* X354542Y141243D01* X341244Y258743D02* Y256244D01* X341744Y255744D01* X342744D01* X343243Y256244D01* Y258743D01* X344243Y255744D02* X345243D01* X344743D01* Y258743D01* X344243Y258243D01* X384743Y141743D02* X384244Y142243D01* X383244D01* X382744Y141743D01* Y141243D01* X383244Y140744D01* X384244D01* X384743Y140244D01* Y139744D01* X384244Y139244D01* X383244D01* X382744Y139744D01* X385743Y142243D02* Y139244D01* X386743Y140244D01* X387742Y139244D01* Y142243D01* X388742Y141743D02* X389242Y142243D01* X390242D01* X390741Y141743D01* Y141243D01* X390242Y140744D01* X389742D01* X390242D01* X390741Y140244D01* Y139744D01* X390242Y139244D01* X389242D01* X388742Y139744D01* X424743Y205244D02* Y207243D01* X424244Y207743D01* X423244D01* X422744Y207243D01* Y205244D01* X423244Y204744D01* X424244D01* X423744Y205744D02* X424743Y204744D01* X424244D02* X424743Y205244D01* X425743Y204744D02* X426743D01* X426243D01* Y207743D01* X425743Y207243D01* X422743Y188744D02* Y190743D01* X422244Y191243D01* X421244D01* X420744Y190743D01* Y188744D01* X421244Y188244D01* X422244D01* X421744Y189244D02* X422743Y188244D01* X422244D02* X422743Y188744D01* X423743Y190743D02* X424243Y191243D01* X425243D01* X425742Y190743D01* Y190243D01* X425243Y189744D01* X424743D01* X425243D01* X425742Y189244D01* Y188744D01* X425243Y188244D01* X424243D01* X423743Y188744D01* X421743Y172244D02* Y174243D01* X421244Y174743D01* X420244D01* X419744Y174243D01* Y172244D01* X420244Y171744D01* X421244D01* X420744Y172744D02* X421743Y171744D01* X421244D02* X421743Y172244D01* X424243Y171744D02* Y174743D01* X422743Y173244D01* X424743D01* X464243Y262743D02* X463244D01* X463744D01* Y260244D01* X463244Y259744D01* X462744D01* X462244Y260244D01* X467242Y259744D02* X465243D01* X467242Y261743D01* Y262243D01* X466743Y262743D01* X465743D01* X465243Y262243D01* X345720Y330492D02* X349052D01* X347386D01* Y325494D01* X351551D02* X353217D01* X354050Y326327D01* Y327993D01* X353217Y328826D01* X351551D01* X350718Y327993D01* Y326327D01* X351551Y325494D01* X355716Y323828D02* Y328826D01* X358216D01* X359049Y327993D01* Y326327D01* X358216Y325494D01* X355716D01* X369045Y329659D02* X368212Y330492D01* X366546D01* X365713Y329659D01* Y328826D01* X366546Y327993D01* X368212D01* X369045Y327160D01* Y326327D01* X368212Y325494D01* X366546D01* X365713Y326327D01* X370712Y325494D02* X372378D01* X371545D01* Y328826D01* X370712D01* X374877Y325494D02* X376543D01* X375710D01* Y330492D01* X374877D01* X379042Y325494D02* Y330492D01* Y327160D02* X381541Y328826D01* X379042Y327160D02* X381541Y325494D01* X384041D02* X386540D01* X387373Y326327D01* X386540Y327160D01* X384874D01* X384041Y327993D01* X384874Y328826D01* X387373D01* X392371D02* X389872D01* X389039Y327993D01* Y326327D01* X389872Y325494D01* X392371D01* X394037Y328826D02* Y325494D01* Y327160D01* X394870Y327993D01* X395704Y328826D01* X396537D01* X401535Y325494D02* X399869D01* X399036Y326327D01* Y327993D01* X399869Y328826D01* X401535D01* X402368Y327993D01* Y327160D01* X399036D01* X406533Y325494D02* X404867D01* X404034Y326327D01* Y327993D01* X404867Y328826D01* X406533D01* X407366Y327993D01* Y327160D01* X404034D01* X409032Y325494D02* Y328826D01* X411532D01* X412365Y327993D01* Y325494D01* X441744Y253617D02* Y251618D01* X442744Y250618D01* X443743Y251618D01* Y253617D01* X444743D02* X445743D01* X445243D01* Y250618D01* X444743D01* X445743D01* X447242D02* Y253617D01* X449242Y250618D01* Y253617D01* X443243Y243243D02* X442744Y243743D01* X441744D01* X441244Y243243D01* Y242743D01* X441744Y242244D01* X442744D01* X443243Y241744D01* Y241244D01* X442744Y240744D01* X441744D01* X441244Y241244D01* X444243Y243743D02* X446243D01* X445243D01* Y240744D01* X447242D02* Y243743D01* X448742D01* X449241Y243243D01* Y242244D01* X448742Y241744D01* X447242D01* X441244Y232243D02* Y229244D01* X442744D01* X443243Y229744D01* Y231743D01* X442744Y232243D01* X441244D01* X444243D02* X445243D01* X444743D01* Y229244D01* X444243D01* X445243D01* X446742D02* Y232243D01* X448242D01* X448742Y231743D01* Y230744D01* X448242Y230244D01* X446742D01* X447742D02* X448742Y229244D01* X443744Y202243D02* Y199244D01* X445244D01* X445743Y199744D01* Y201743D01* X445244Y202243D01* X443744D01* X446743Y201743D02* X447243Y202243D01* X448243D01* X448742Y201743D01* Y201243D01* X448243Y200744D01* X447743D01* X448243D01* X448742Y200244D01* Y199744D01* X448243Y199244D01* X447243D01* X446743Y199744D01* X440124Y185865D02* X441537Y184451D01* X442951D01* X442951Y185865D01* X441537Y187278D01* X442597Y187632D02* Y188339D01* X443304Y189046D01* X444011Y189046D01* X444365Y188692D01* Y187985D01* X444011Y187632D01* X444365Y187985D01* X445072Y187985D01* X445425Y187632D01* X445425Y186925D01* X444718Y186218D01* X444011D01* X446485Y187985D02* X446132Y188339D01* X446485Y188692D01* X446839Y188339D01* X446485Y187985D01* Y191520D02* Y192227D01* X447192Y192933D01* X447899Y192933D01* X448252Y192580D01* Y191873D01* X447899Y191520D01* X448252Y191873D01* X448959D01* X449313Y191520D01* Y190813D01* X448606Y190106D01* X447899D01* X443744Y181243D02* X445743D01* X444744D01* Y178244D01* X446743Y181243D02* X448742Y178244D01* Y181243D02* X446743Y178244D01* X443744Y169044D02* Y172043D01* X445244D01* X445743Y171543D01* Y170544D01* X445244Y170044D01* X443744D01* X444744D02* X445743Y169044D01* X446743Y172043D02* X448742Y169044D01* Y172043D02* X446743Y169044D01* X443743Y212243D02* X443244Y212743D01* X442244D01* X441744Y212243D01* Y210244D01* X442244Y209744D01* X443244D01* X443743Y210244D01* Y211244D01* X442744D01* X444743Y209744D02* Y212743D01* X446742Y209744D01* Y212743D01* X447742D02* Y209744D01* X449242D01* X449742Y210244D01* Y212243D01* X449242Y212743D01* X447742D01* X438243Y221743D02* X436244D01* Y218744D01* X438243D01* X436244Y220244D02* X437244D01* X439243Y218744D02* Y221743D01* X440743D01* X441243Y221243D01* Y220244D01* X440743Y219744D01* X439243D01* X440243D02* X441243Y218744D01* X442242D02* Y221743D01* X443742D01* X444242Y221243D01* Y220244D01* X443742Y219744D01* X442242D01* X443242D02* X444242Y218744D01* X446741Y221743D02* X445741D01* X445241Y221243D01* Y219244D01* X445741Y218744D01* X446741D01* X447240Y219244D01* Y221243D01* X446741Y221743D01* X448240Y218744D02* Y221743D01* X449740D01* X450240Y221243D01* Y220244D01* X449740Y219744D01* X448240D01* X449240D02* X450240Y218744D01* X442743Y162243D02* X442244Y162743D01* X441244D01* X440744Y162243D01* Y160244D01* X441244Y159744D01* X442244D01* X442743Y160244D01* Y161244D01* X441744D01* X443743Y159744D02* Y162743D01* X445743Y159744D01* Y162743D01* X446742D02* Y159744D01* X448242D01* X448741Y160244D01* Y162243D01* X448242Y162743D01* X446742D01* X193044Y453687D02* G03* X193044Y453687I-12400J0D01* G01* X249243Y322743D02* X248744Y323243D01* X247744D01* X247244Y322743D01* Y322243D01* X247744Y321744D01* X248744D01* X249243Y321244D01* Y320744D01* X248744Y320244D01* X247744D01* X247244Y320744D01* X250243Y323243D02* Y320244D01* X251243Y321244D01* X252242Y320244D01* Y323243D01* X254742Y320244D02* Y323243D01* X253242Y321744D01* X255241D01* X251743Y443743D02* X250744D01* X251244D01* Y441244D01* X250744Y440744D01* X250244D01* X249744Y441244D01* X252743Y443243D02* X253243Y443743D01* X254243D01* X254743Y443243D01* Y442743D01* X254243Y442244D01* X253743D01* X254243D01* X254743Y441744D01* Y441244D01* X254243Y440744D01* X253243D01* X252743Y441244D01* X151199Y362299D02* X150200D01* X150699D01* Y359800D01* X150200Y359300D01* X149700D01* X149200Y359800D01* X154198Y362299D02* X152199D01* Y360800D01* X153199Y361299D01* X153699D01* X154198Y360800D01* Y359800D01* X153699Y359300D01* X152699D01* X152199Y359800D01* X156743Y459743D02* X156244Y460243D01* X155244D01* X154744Y459743D01* Y457744D01* X155244Y457244D01* X156244D01* X156743Y457744D01* X159742Y457244D02* X157743D01* X159742Y459243D01* Y459743D01* X159243Y460243D01* X158243D01* X157743Y459743D01* X160742Y457244D02* X161742D01* X161242D01* Y460243D01* X160742Y459743D01* X228200Y342199D02* Y341699D01* X229200Y340700D01* X230199Y341699D01* Y342199D01* X229200Y340700D02* Y339200D01* X231199D02* X232199D01* X231699D01* Y342199D01* X231199Y341699D01* X149345Y370844D02* X151844D01* X152344Y371344D01* Y372344D01* X151844Y372843D01* X149345D01* X149845Y375842D02* X149345Y375343D01* Y374343D01* X149845Y373843D01* X150345D01* X150845Y374343D01* Y375343D01* X151344Y375842D01* X151844D01* X152344Y375343D01* Y374343D01* X151844Y373843D01* X149345Y376842D02* X152344D01* Y378342D01* X151844Y378841D01* X151344D01* X150845Y378342D01* Y376842D01* Y378342D01* X150345Y378841D01* X149845D01* X149345Y378342D01* Y376842D01* X152344Y379841D02* Y380841D01* Y380341D01* X149345D01* X149845Y379841D01* X187000Y361699D02* Y359200D01* X187500Y358700D01* X188499D01* X188999Y359200D01* Y361699D01* X189999Y361199D02* X190499Y361699D01* X191499D01* X191998Y361199D01* Y360699D01* X191499Y360199D01* X191998Y359700D01* Y359200D01* X191499Y358700D01* X190499D01* X189999Y359200D01* Y359700D01* X190499Y360199D01* X189999Y360699D01* Y361199D01* X190499Y360199D02* X191499D01* X172544Y369143D02* Y366644D01* X173044Y366144D01* X174044D01* X174543Y366644D01* Y369143D01* X175543D02* X177542D01* Y368643D01* X175543Y366644D01* Y366144D01* X248244Y418243D02* Y415744D01* X248744Y415244D01* X249744D01* X250243Y415744D01* Y418243D01* X253242Y415244D02* X251243D01* X253242Y417243D01* Y417743D01* X252743Y418243D01* X251743D01* X251243Y417743D01* X146743Y398243D02* X146244Y398743D01* X145244D01* X144744Y398243D01* Y397743D01* X145244Y397244D01* X146244D01* X146743Y396744D01* Y396244D01* X146244Y395744D01* X145244D01* X144744Y396244D01* X147743Y398743D02* Y395744D01* X148743Y396744D01* X149742Y395744D01* Y398743D01* X152742D02* X150742D01* Y397244D01* X151742Y397743D01* X152242D01* X152742Y397244D01* Y396244D01* X152242Y395744D01* X151242D01* X150742Y396244D01* X244100Y416500D02* X241101D01* Y418000D01* X241601Y418499D01* X242600D01* X243100Y418000D01* Y416500D01* Y417500D02* X244100Y418499D01* Y421498D02* Y419499D01* X242101Y421498D01* X241601D01* X241101Y420998D01* Y419999D01* X241601Y419499D01* X234244Y407744D02* X231245D01* Y409244D01* X231745Y409743D01* X232745D01* X233244Y409244D01* Y407744D01* Y408744D02* X234244Y409743D01* Y410743D02* Y411743D01* Y411243D01* X231245D01* X231745Y410743D01* X153600Y339899D02* Y336900D01* X155599D01* X158598Y339899D02* X156599D01* Y336900D01* X158598D01* X156599Y338400D02* X157599D01* X159598Y339899D02* Y336900D01* X161098D01* X161597Y337400D01* Y339399D01* X161098Y339899D01* X159598D01* X164596Y336900D02* X162597D01* X164596Y338899D01* Y339399D01* X164097Y339899D01* X163097D01* X162597Y339399D01* X169644Y362943D02* Y359944D01* X171643D01* X174643Y362943D02* X172643D01* Y359944D01* X174643D01* X172643Y361444D02* X173643D01* X175642Y362943D02* Y359944D01* X177142D01* X177641Y360444D01* Y362443D01* X177142Y362943D01* X175642D01* X178641Y359944D02* X179641D01* X179141D01* Y362943D01* X178641Y362443D01* X242444Y433243D02* Y430244D01* X243944D01* X244443Y430744D01* Y432743D01* X243944Y433243D01* X242444D01* X245443Y430244D02* X246443D01* X245943D01* Y433243D01* X245443Y432743D01* X247099Y336699D02* X246600Y337199D01* X245600D01* X245100Y336699D01* Y334700D01* X245600Y334200D01* X246600D01* X247099Y334700D01* X248099Y334200D02* X249099D01* X248599D01* Y337199D01* X248099Y336699D01* X250598D02* X251098Y337199D01* X252098D01* X252598Y336699D01* Y336199D01* X252098Y335700D01* X252598Y335200D01* Y334700D01* X252098Y334200D01* X251098D01* X250598Y334700D01* Y335200D01* X251098Y335700D01* X250598Y336199D01* Y336699D01* X251098Y335700D02* X252098D01* X238999Y329399D02* X238499Y329899D01* X237500D01* X237000Y329399D01* Y327400D01* X237500Y326900D01* X238499D01* X238999Y327400D01* X239999Y326900D02* X240999D01* X240499D01* Y329899D01* X239999Y329399D01* X242498Y329899D02* X244498D01* Y329399D01* X242498Y327400D01* Y326900D01* X164743Y410243D02* X164244Y410743D01* X163244D01* X162744Y410243D01* Y408244D01* X163244Y407744D01* X164244D01* X164743Y408244D01* X165743Y407744D02* X166743D01* X166243D01* Y410743D01* X165743Y410243D01* X168242D02* X168742Y410743D01* X169742D01* X170242Y410243D01* Y409743D01* X169742Y409244D01* X169242D01* X169742D01* X170242Y408744D01* Y408244D01* X169742Y407744D01* X168742D01* X168242Y408244D01* X197244Y439244D02* X197744D01* X198244Y439744D01* Y442243D01* X200243Y440244D02* X201243D01* X200743D01* Y443243D01* X200243Y442743D01* X129500Y440400D02* X130000D01* X130500Y440900D01* Y443399D01* X134498Y444399D02* X133499Y443899D01* X132499Y442900D01* Y441900D01* X132999Y441400D01* X133999D01* X134498Y441900D01* Y442400D01* X133999Y442900D01* X132499D01* X147400Y415600D02* Y418599D01* X148899D01* X149399Y418099D01* Y417100D01* X148899Y416600D01* X147400D01* X148400D02* X149399Y415600D01* X150399D02* X151399D01* X150899D01* Y418599D01* X150399Y418099D01* X152898D02* X153398Y418599D01* X154398D01* X154898Y418099D01* Y416100D01* X154398Y415600D01* X153398D01* X152898Y416100D01* Y418099D01* X147800Y435300D02* Y438299D01* X149300D01* X149799Y437799D01* Y436799D01* X149300Y436300D01* X147800D01* X148800D02* X149799Y435300D01* X150799D02* X151799D01* X151299D01* Y438299D01* X150799Y437799D01* X153298Y435300D02* X154298D01* X153798D01* Y438299D01* X153298Y437799D01* X170543Y321243D02* X170044Y321743D01* X169044D01* X168544Y321243D01* Y320743D01* X169044Y320244D01* X170044D01* X170543Y319744D01* Y319244D01* X170044Y318744D01* X169044D01* X168544Y319244D01* X171543Y321743D02* Y318744D01* X172543Y319744D01* X173542Y318744D01* Y321743D01* X174542Y318744D02* X175542D01* X175042D01* Y321743D01* X174542Y321243D01* X161244Y438743D02* Y436244D01* X161744Y435744D01* X162744D01* X163243Y436244D01* Y438743D01* X164243Y435744D02* X165243D01* X164743D01* Y438743D01* X164243Y438243D01* X204743Y321743D02* X204244Y322243D01* X203244D01* X202744Y321743D01* Y321243D01* X203244Y320744D01* X204244D01* X204743Y320244D01* Y319744D01* X204244Y319244D01* X203244D01* X202744Y319744D01* X205743Y322243D02* Y319244D01* X206743Y320244D01* X207743Y319244D01* Y322243D01* X208742Y321743D02* X209242Y322243D01* X210242D01* X210741Y321743D01* Y321243D01* X210242Y320744D01* X209742D01* X210242D01* X210741Y320244D01* Y319744D01* X210242Y319244D01* X209242D01* X208742Y319744D01* X244743Y385244D02* Y387243D01* X244244Y387743D01* X243244D01* X242744Y387243D01* Y385244D01* X243244Y384744D01* X244244D01* X243744Y385744D02* X244743Y384744D01* X244244D02* X244743Y385244D01* X245743Y384744D02* X246743D01* X246243D01* Y387743D01* X245743Y387243D01* X242743Y368744D02* Y370743D01* X242244Y371243D01* X241244D01* X240744Y370743D01* Y368744D01* X241244Y368244D01* X242244D01* X241744Y369244D02* X242743Y368244D01* X242244D02* X242743Y368744D01* X243743Y370743D02* X244243Y371243D01* X245243D01* X245743Y370743D01* Y370243D01* X245243Y369744D01* X244743D01* X245243D01* X245743Y369244D01* Y368744D01* X245243Y368244D01* X244243D01* X243743Y368744D01* X241743Y352244D02* Y354243D01* X241244Y354743D01* X240244D01* X239744Y354243D01* Y352244D01* X240244Y351744D01* X241244D01* X240744Y352744D02* X241743Y351744D01* X241244D02* X241743Y352244D01* X244243Y351744D02* Y354743D01* X242743Y353244D01* X244742D01* X284243Y442743D02* X283244D01* X283744D01* Y440244D01* X283244Y439744D01* X282744D01* X282244Y440244D01* X287243Y439744D02* X285243D01* X287243Y441743D01* Y442243D01* X286743Y442743D01* X285743D01* X285243Y442243D01* X165720Y510492D02* X169052D01* X167386D01* Y505494D01* X171551D02* X173217D01* X174050Y506327D01* Y507993D01* X173217Y508826D01* X171551D01* X170718Y507993D01* Y506327D01* X171551Y505494D01* X175716Y503828D02* Y508826D01* X178216D01* X179049Y507993D01* Y506327D01* X178216Y505494D01* X175716D01* X189046Y509659D02* X188212Y510492D01* X186546D01* X185713Y509659D01* Y508826D01* X186546Y507993D01* X188212D01* X189046Y507160D01* Y506327D01* X188212Y505494D01* X186546D01* X185713Y506327D01* X190712Y505494D02* X192378D01* X191545D01* Y508826D01* X190712D01* X194877Y505494D02* X196543D01* X195710D01* Y510492D01* X194877D01* X199042Y505494D02* Y510492D01* Y507160D02* X201541Y508826D01* X199042Y507160D02* X201541Y505494D01* X204041D02* X206540D01* X207373Y506327D01* X206540Y507160D01* X204874D01* X204041Y507993D01* X204874Y508826D01* X207373D01* X212371D02* X209872D01* X209039Y507993D01* Y506327D01* X209872Y505494D01* X212371D01* X214037Y508826D02* Y505494D01* Y507160D01* X214870Y507993D01* X215704Y508826D01* X216537D01* X221535Y505494D02* X219869D01* X219036Y506327D01* Y507993D01* X219869Y508826D01* X221535D01* X222368Y507993D01* Y507160D01* X219036D01* X226533Y505494D02* X224867D01* X224034Y506327D01* Y507993D01* X224867Y508826D01* X226533D01* X227366Y507993D01* Y507160D01* X224034D01* X229032Y505494D02* Y508826D01* X231532D01* X232365Y507993D01* Y505494D01* X261744Y433617D02* Y431618D01* X262744Y430618D01* X263743Y431618D01* Y433617D01* X264743D02* X265743D01* X265243D01* Y430618D01* X264743D01* X265743D01* X267242D02* Y433617D01* X269242Y430618D01* Y433617D01* X263243Y423243D02* X262744Y423743D01* X261744D01* X261244Y423243D01* Y422743D01* X261744Y422244D01* X262744D01* X263243Y421744D01* Y421244D01* X262744Y420744D01* X261744D01* X261244Y421244D01* X264243Y423743D02* X266243D01* X265243D01* Y420744D01* X267242D02* Y423743D01* X268742D01* X269241Y423243D01* Y422244D01* X268742Y421744D01* X267242D01* X261244Y412243D02* Y409244D01* X262744D01* X263243Y409744D01* Y411743D01* X262744Y412243D01* X261244D01* X264243D02* X265243D01* X264743D01* Y409244D01* X264243D01* X265243D01* X266742D02* Y412243D01* X268242D01* X268742Y411743D01* Y410744D01* X268242Y410244D01* X266742D01* X267742D02* X268742Y409244D01* X263744Y382243D02* Y379244D01* X265244D01* X265743Y379744D01* Y381743D01* X265244Y382243D01* X263744D01* X266743Y381743D02* X267243Y382243D01* X268243D01* X268742Y381743D01* Y381243D01* X268243Y380744D01* X267743D01* X268243D01* X268742Y380244D01* Y379744D01* X268243Y379244D01* X267243D01* X266743Y379744D01* X260123Y365865D02* X261537Y364451D01* X262951D01* X262951Y365865D01* X261537Y367279D01* X262597Y367632D02* Y368339D01* X263304Y369046D01* X264011Y369046D01* X264365Y368692D01* Y367985D01* X264011Y367632D01* X264365Y367985D01* X265072Y367985D01* X265425Y367632D01* X265425Y366925D01* X264718Y366218D01* X264011D01* X266485Y367985D02* X266132Y368339D01* X266485Y368692D01* X266839Y368339D01* X266485Y367985D01* Y371520D02* Y372227D01* X267192Y372934D01* X267899Y372934D01* X268253Y372580D01* Y371873D01* X267899Y371520D01* X268253Y371873D01* X268959D01* X269313Y371520D01* Y370813D01* X268606Y370106D01* X267899D01* X263744Y361243D02* X265743D01* X264744D01* Y358244D01* X266743Y361243D02* X268742Y358244D01* Y361243D02* X266743Y358244D01* X263744Y349044D02* Y352043D01* X265244D01* X265743Y351543D01* Y350544D01* X265244Y350044D01* X263744D01* X264744D02* X265743Y349044D01* X266743Y352043D02* X268742Y349044D01* Y352043D02* X266743Y349044D01* X263743Y392243D02* X263244Y392743D01* X262244D01* X261744Y392243D01* Y390244D01* X262244Y389744D01* X263244D01* X263743Y390244D01* Y391244D01* X262744D01* X264743Y389744D02* Y392743D01* X266742Y389744D01* Y392743D01* X267742D02* Y389744D01* X269242D01* X269742Y390244D01* Y392243D01* X269242Y392743D01* X267742D01* X258243Y401743D02* X256244D01* Y398744D01* X258243D01* X256244Y400244D02* X257244D01* X259243Y398744D02* Y401743D01* X260743D01* X261243Y401243D01* Y400244D01* X260743Y399744D01* X259243D01* X260243D02* X261243Y398744D01* X262242D02* Y401743D01* X263742D01* X264242Y401243D01* Y400244D01* X263742Y399744D01* X262242D01* X263242D02* X264242Y398744D01* X266741Y401743D02* X265741D01* X265241Y401243D01* Y399244D01* X265741Y398744D01* X266741D01* X267241Y399244D01* Y401243D01* X266741Y401743D01* X268240Y398744D02* Y401743D01* X269740D01* X270240Y401243D01* Y400244D01* X269740Y399744D01* X268240D01* X269240D02* X270240Y398744D01* X262743Y342243D02* X262244Y342743D01* X261244D01* X260744Y342243D01* Y340244D01* X261244Y339744D01* X262244D01* X262743Y340244D01* Y341244D01* X261744D01* X263743Y339744D02* Y342743D01* X265742Y339744D01* Y342743D01* X266742D02* Y339744D01* X268242D01* X268741Y340244D01* Y342243D01* X268242Y342743D01* X266742D01* X373044Y453687D02* G03* X373044Y453687I-12400J0D01* G01* X429243Y322743D02* X428744Y323243D01* X427744D01* X427244Y322743D01* Y322243D01* X427744Y321744D01* X428744D01* X429243Y321244D01* Y320744D01* X428744Y320244D01* X427744D01* X427244Y320744D01* X430243Y323243D02* Y320244D01* X431243Y321244D01* X432242Y320244D01* Y323243D01* X434742Y320244D02* Y323243D01* X433242Y321744D01* X435242D01* X431743Y443743D02* X430744D01* X431244D01* Y441244D01* X430744Y440744D01* X430244D01* X429744Y441244D01* X432743Y443243D02* X433243Y443743D01* X434243D01* X434742Y443243D01* Y442743D01* X434243Y442244D01* X433743D01* X434243D01* X434742Y441744D01* Y441244D01* X434243Y440744D01* X433243D01* X432743Y441244D01* X331199Y362299D02* X330200D01* X330699D01* Y359800D01* X330200Y359300D01* X329700D01* X329200Y359800D01* X334198Y362299D02* X332199D01* Y360800D01* X333199Y361299D01* X333699D01* X334198Y360800D01* Y359800D01* X333699Y359300D01* X332699D01* X332199Y359800D01* X336743Y459743D02* X336244Y460243D01* X335244D01* X334744Y459743D01* Y457744D01* X335244Y457244D01* X336244D01* X336743Y457744D01* X339742Y457244D02* X337743D01* X339742Y459243D01* Y459743D01* X339243Y460243D01* X338243D01* X337743Y459743D01* X340742Y457244D02* X341742D01* X341242D01* Y460243D01* X340742Y459743D01* X408200Y342199D02* Y341699D01* X409200Y340700D01* X410199Y341699D01* Y342199D01* X409200Y340700D02* Y339200D01* X411199D02* X412199D01* X411699D01* Y342199D01* X411199Y341699D01* X329345Y370844D02* X331844D01* X332344Y371344D01* Y372344D01* X331844Y372843D01* X329345D01* X329845Y375842D02* X329345Y375343D01* Y374343D01* X329845Y373843D01* X330345D01* X330845Y374343D01* Y375343D01* X331344Y375842D01* X331844D01* X332344Y375343D01* Y374343D01* X331844Y373843D01* X329345Y376842D02* X332344D01* Y378342D01* X331844Y378841D01* X331344D01* X330845Y378342D01* Y376842D01* Y378342D01* X330345Y378841D01* X329845D01* X329345Y378342D01* Y376842D01* X332344Y379841D02* Y380841D01* Y380341D01* X329345D01* X329845Y379841D01* X367000Y361699D02* Y359200D01* X367500Y358700D01* X368499D01* X368999Y359200D01* Y361699D01* X369999Y361199D02* X370499Y361699D01* X371498D01* X371998Y361199D01* Y360699D01* X371498Y360199D01* X371998Y359700D01* Y359200D01* X371498Y358700D01* X370499D01* X369999Y359200D01* Y359700D01* X370499Y360199D01* X369999Y360699D01* Y361199D01* X370499Y360199D02* X371498D01* X352544Y369143D02* Y366644D01* X353044Y366144D01* X354044D01* X354543Y366644D01* Y369143D01* X355543D02* X357542D01* Y368643D01* X355543Y366644D01* Y366144D01* X428244Y418243D02* Y415744D01* X428744Y415244D01* X429744D01* X430243Y415744D01* Y418243D01* X433243Y415244D02* X431243D01* X433243Y417243D01* Y417743D01* X432743Y418243D01* X431743D01* X431243Y417743D01* X326743Y398243D02* X326244Y398743D01* X325244D01* X324744Y398243D01* Y397743D01* X325244Y397244D01* X326244D01* X326743Y396744D01* Y396244D01* X326244Y395744D01* X325244D01* X324744Y396244D01* X327743Y398743D02* Y395744D01* X328743Y396744D01* X329743Y395744D01* Y398743D01* X332741D02* X330742D01* Y397244D01* X331742Y397743D01* X332242D01* X332741Y397244D01* Y396244D01* X332242Y395744D01* X331242D01* X330742Y396244D01* X424100Y416500D02* X421101D01* Y418000D01* X421601Y418499D01* X422601D01* X423100Y418000D01* Y416500D01* Y417500D02* X424100Y418499D01* Y421498D02* Y419499D01* X422101Y421498D01* X421601D01* X421101Y420998D01* Y419999D01* X421601Y419499D01* X414244Y407744D02* X411245D01* Y409244D01* X411745Y409743D01* X412745D01* X413244Y409244D01* Y407744D01* Y408744D02* X414244Y409743D01* Y410743D02* Y411743D01* Y411243D01* X411245D01* X411745Y410743D01* X333600Y339899D02* Y336900D01* X335599D01* X338598Y339899D02* X336599D01* Y336900D01* X338598D01* X336599Y338400D02* X337599D01* X339598Y339899D02* Y336900D01* X341098D01* X341597Y337400D01* Y339399D01* X341098Y339899D01* X339598D01* X344596Y336900D02* X342597D01* X344596Y338899D01* Y339399D01* X344097Y339899D01* X343097D01* X342597Y339399D01* X349644Y362943D02* Y359944D01* X351643D01* X354643Y362943D02* X352643D01* Y359944D01* X354643D01* X352643Y361444D02* X353643D01* X355642Y362943D02* Y359944D01* X357142D01* X357642Y360444D01* Y362443D01* X357142Y362943D01* X355642D01* X358641Y359944D02* X359641D01* X359141D01* Y362943D01* X358641Y362443D01* X422444Y433243D02* Y430244D01* X423944D01* X424443Y430744D01* Y432743D01* X423944Y433243D01* X422444D01* X425443Y430244D02* X426443D01* X425943D01* Y433243D01* X425443Y432743D01* X427099Y336699D02* X426600Y337199D01* X425600D01* X425100Y336699D01* Y334700D01* X425600Y334200D01* X426600D01* X427099Y334700D01* X428099Y334200D02* X429099D01* X428599D01* Y337199D01* X428099Y336699D01* X430598D02* X431098Y337199D01* X432098D01* X432598Y336699D01* Y336199D01* X432098Y335700D01* X432598Y335200D01* Y334700D01* X432098Y334200D01* X431098D01* X430598Y334700D01* Y335200D01* X431098Y335700D01* X430598Y336199D01* Y336699D01* X431098Y335700D02* X432098D01* X418999Y329399D02* X418500Y329899D01* X417500D01* X417000Y329399D01* Y327400D01* X417500Y326900D01* X418500D01* X418999Y327400D01* X419999Y326900D02* X420999D01* X420499D01* Y329899D01* X419999Y329399D01* X422498Y329899D02* X424498D01* Y329399D01* X422498Y327400D01* Y326900D01* X344743Y410243D02* X344244Y410743D01* X343244D01* X342744Y410243D01* Y408244D01* X343244Y407744D01* X344244D01* X344743Y408244D01* X345743Y407744D02* X346743D01* X346243D01* Y410743D01* X345743Y410243D01* X348242D02* X348742Y410743D01* X349742D01* X350242Y410243D01* Y409743D01* X349742Y409244D01* X349242D01* X349742D01* X350242Y408744D01* Y408244D01* X349742Y407744D01* X348742D01* X348242Y408244D01* X377244Y439244D02* X377744D01* X378244Y439744D01* Y442243D01* X380243Y440244D02* X381243D01* X380743D01* Y443243D01* X380243Y442743D01* X309500Y440400D02* X310000D01* X310500Y440900D01* Y443399D01* X314498Y444399D02* X313499Y443899D01* X312499Y442900D01* Y441900D01* X312999Y441400D01* X313999D01* X314498Y441900D01* Y442400D01* X313999Y442900D01* X312499D01* X327400Y415600D02* Y418599D01* X328900D01* X329399Y418099D01* Y417100D01* X328900Y416600D01* X327400D01* X328400D02* X329399Y415600D01* X330399D02* X331399D01* X330899D01* Y418599D01* X330399Y418099D01* X332898D02* X333398Y418599D01* X334398D01* X334898Y418099D01* Y416100D01* X334398Y415600D01* X333398D01* X332898Y416100D01* Y418099D01* X327800Y435300D02* Y438299D01* X329299D01* X329799Y437799D01* Y436799D01* X329299Y436300D01* X327800D01* X328800D02* X329799Y435300D01* X330799D02* X331799D01* X331299D01* Y438299D01* X330799Y437799D01* X333298Y435300D02* X334298D01* X333798D01* Y438299D01* X333298Y437799D01* X350543Y321243D02* X350044Y321743D01* X349044D01* X348544Y321243D01* Y320743D01* X349044Y320244D01* X350044D01* X350543Y319744D01* Y319244D01* X350044Y318744D01* X349044D01* X348544Y319244D01* X351543Y321743D02* Y318744D01* X352543Y319744D01* X353542Y318744D01* Y321743D01* X354542Y318744D02* X355542D01* X355042D01* Y321743D01* X354542Y321243D01* X341244Y438743D02* Y436244D01* X341744Y435744D01* X342744D01* X343243Y436244D01* Y438743D01* X344243Y435744D02* X345243D01* X344743D01* Y438743D01* X344243Y438243D01* X384743Y321743D02* X384244Y322243D01* X383244D01* X382744Y321743D01* Y321243D01* X383244Y320744D01* X384244D01* X384743Y320244D01* Y319744D01* X384244Y319244D01* X383244D01* X382744Y319744D01* X385743Y322243D02* Y319244D01* X386743Y320244D01* X387742Y319244D01* Y322243D01* X388742Y321743D02* X389242Y322243D01* X390242D01* X390741Y321743D01* Y321243D01* X390242Y320744D01* X389742D01* X390242D01* X390741Y320244D01* Y319744D01* X390242Y319244D01* X389242D01* X388742Y319744D01* X424743Y385244D02* Y387243D01* X424244Y387743D01* X423244D01* X422744Y387243D01* Y385244D01* X423244Y384744D01* X424244D01* X423744Y385744D02* X424743Y384744D01* X424244D02* X424743Y385244D01* X425743Y384744D02* X426743D01* X426243D01* Y387743D01* X425743Y387243D01* X422743Y368744D02* Y370743D01* X422244Y371243D01* X421244D01* X420744Y370743D01* Y368744D01* X421244Y368244D01* X422244D01* X421744Y369244D02* X422743Y368244D01* X422244D02* X422743Y368744D01* X423743Y370743D02* X424243Y371243D01* X425243D01* X425742Y370743D01* Y370243D01* X425243Y369744D01* X424743D01* X425243D01* X425742Y369244D01* Y368744D01* X425243Y368244D01* X424243D01* X423743Y368744D01* X421743Y352244D02* Y354243D01* X421244Y354743D01* X420244D01* X419744Y354243D01* Y352244D01* X420244Y351744D01* X421244D01* X420744Y352744D02* X421743Y351744D01* X421244D02* X421743Y352244D01* X424243Y351744D02* Y354743D01* X422743Y353244D01* X424743D01* X464243Y442743D02* X463244D01* X463744D01* Y440244D01* X463244Y439744D01* X462744D01* X462244Y440244D01* X467242Y439744D02* X465243D01* X467242Y441743D01* Y442243D01* X466743Y442743D01* X465743D01* X465243Y442243D01* X345720Y510492D02* X349052D01* X347386D01* Y505494D01* X351551D02* X353217D01* X354050Y506327D01* Y507993D01* X353217Y508826D01* X351551D01* X350718Y507993D01* Y506327D01* X351551Y505494D01* X355716Y503828D02* Y508826D01* X358216D01* X359049Y507993D01* Y506327D01* X358216Y505494D01* X355716D01* X369045Y509659D02* X368212Y510492D01* X366546D01* X365713Y509659D01* Y508826D01* X366546Y507993D01* X368212D01* X369045Y507160D01* Y506327D01* X368212Y505494D01* X366546D01* X365713Y506327D01* X370712Y505494D02* X372378D01* X371545D01* Y508826D01* X370712D01* X374877Y505494D02* X376543D01* X375710D01* Y510492D01* X374877D01* X379042Y505494D02* Y510492D01* Y507160D02* X381541Y508826D01* X379042Y507160D02* X381541Y505494D01* X384041D02* X386540D01* X387373Y506327D01* X386540Y507160D01* X384874D01* X384041Y507993D01* X384874Y508826D01* X387373D01* X392371D02* X389872D01* X389039Y507993D01* Y506327D01* X389872Y505494D01* X392371D01* X394037Y508826D02* Y505494D01* Y507160D01* X394870Y507993D01* X395704Y508826D01* X396537D01* X401535Y505494D02* X399869D01* X399036Y506327D01* Y507993D01* X399869Y508826D01* X401535D01* X402368Y507993D01* Y507160D01* X399036D01* X406533Y505494D02* X404867D01* X404034Y506327D01* Y507993D01* X404867Y508826D01* X406533D01* X407366Y507993D01* Y507160D01* X404034D01* X409032Y505494D02* Y508826D01* X411532D01* X412365Y507993D01* Y505494D01* X441744Y433617D02* Y431618D01* X442744Y430618D01* X443743Y431618D01* Y433617D01* X444743D02* X445743D01* X445243D01* Y430618D01* X444743D01* X445743D01* X447242D02* Y433617D01* X449242Y430618D01* Y433617D01* X443243Y423243D02* X442744Y423743D01* X441744D01* X441244Y423243D01* Y422743D01* X441744Y422244D01* X442744D01* X443243Y421744D01* Y421244D01* X442744Y420744D01* X441744D01* X441244Y421244D01* X444243Y423743D02* X446243D01* X445243D01* Y420744D01* X447242D02* Y423743D01* X448742D01* X449241Y423243D01* Y422244D01* X448742Y421744D01* X447242D01* X441244Y412243D02* Y409244D01* X442744D01* X443243Y409744D01* Y411743D01* X442744Y412243D01* X441244D01* X444243D02* X445243D01* X444743D01* Y409244D01* X444243D01* X445243D01* X446742D02* Y412243D01* X448242D01* X448742Y411743D01* Y410744D01* X448242Y410244D01* X446742D01* X447742D02* X448742Y409244D01* X443744Y382243D02* Y379244D01* X445244D01* X445743Y379744D01* Y381743D01* X445244Y382243D01* X443744D01* X446743Y381743D02* X447243Y382243D01* X448243D01* X448742Y381743D01* Y381243D01* X448243Y380744D01* X447743D01* X448243D01* X448742Y380244D01* Y379744D01* X448243Y379244D01* X447243D01* X446743Y379744D01* X440124Y365865D02* X441537Y364451D01* X442951D01* X442951Y365865D01* X441537Y367279D01* X442597Y367632D02* Y368339D01* X443304Y369046D01* X444011Y369046D01* X444365Y368692D01* Y367985D01* X444011Y367632D01* X444365Y367985D01* X445072Y367985D01* X445425Y367632D01* X445425Y366925D01* X444718Y366218D01* X444011D01* X446485Y367985D02* X446132Y368339D01* X446485Y368692D01* X446839Y368339D01* X446485Y367985D01* Y371520D02* Y372227D01* X447192Y372934D01* X447899Y372934D01* X448252Y372580D01* Y371873D01* X447899Y371520D01* X448252Y371873D01* X448959D01* X449313Y371520D01* Y370813D01* X448606Y370106D01* X447899D01* X443744Y361243D02* X445743D01* X444744D01* Y358244D01* X446743Y361243D02* X448742Y358244D01* Y361243D02* X446743Y358244D01* X443744Y349044D02* Y352043D01* X445244D01* X445743Y351543D01* Y350544D01* X445244Y350044D01* X443744D01* X444744D02* X445743Y349044D01* X446743Y352043D02* X448742Y349044D01* Y352043D02* X446743Y349044D01* X443743Y392243D02* X443244Y392743D01* X442244D01* X441744Y392243D01* Y390244D01* X442244Y389744D01* X443244D01* X443743Y390244D01* Y391244D01* X442744D01* X444743Y389744D02* Y392743D01* X446742Y389744D01* Y392743D01* X447742D02* Y389744D01* X449242D01* X449742Y390244D01* Y392243D01* X449242Y392743D01* X447742D01* X438243Y401743D02* X436244D01* Y398744D01* X438243D01* X436244Y400244D02* X437244D01* X439243Y398744D02* Y401743D01* X440743D01* X441243Y401243D01* Y400244D01* X440743Y399744D01* X439243D01* X440243D02* X441243Y398744D01* X442242D02* Y401743D01* X443742D01* X444242Y401243D01* Y400244D01* X443742Y399744D01* X442242D01* X443242D02* X444242Y398744D01* X446741Y401743D02* X445741D01* X445241Y401243D01* Y399244D01* X445741Y398744D01* X446741D01* X447240Y399244D01* Y401243D01* X446741Y401743D01* X448240Y398744D02* Y401743D01* X449740D01* X450240Y401243D01* Y400244D01* X449740Y399744D01* X448240D01* X449240D02* X450240Y398744D01* X442743Y342243D02* X442244Y342743D01* X441244D01* X440744Y342243D01* Y340244D01* X441244Y339744D01* X442244D01* X442743Y340244D01* Y341244D01* X441744D01* X443743Y339744D02* Y342743D01* X445743Y339744D01* Y342743D01* X446742D02* Y339744D01* X448242D01* X448741Y340244D01* Y342243D01* X448242Y342743D01* X446742D01* D45* X125527Y195744D02* Y212279D01* X147968D01* X125527Y179209D02* X147968D01* Y180390D01* Y188657D01* X125527Y179209D02* Y195744D01* X147968Y202831D02* Y212279D01* X176823Y162494D02* Y175994D01* X126665Y162494D02* X176823D01* X126665D02* Y175844D01* X156744Y175949D02* X176823Y175994D01* X126665Y175844D02* X146844D01* X207244Y206244D02* X210244Y209244D01* X207244D02* X210244Y206244D01* X271295Y155295D02* Y257105D01* Y155295D02* X295705D01* Y256995D01* X291500Y161200D02* X295500D01* X291500D02* X293500Y163200D01* X291500Y161200D02* X293500Y159200D01* X291705Y171200D02* X293705Y169200D01* X291705Y171200D02* X293705Y173200D01* X291705Y171200D02* X295705D01* X291705Y181200D02* X293705Y179200D01* X291705Y181200D02* X293705Y183200D01* X291705Y181200D02* X295705D01* X291705Y191200D02* X293705Y189200D01* X291705Y191200D02* X293705Y193200D01* X291705Y191200D02* X295705D01* X291705Y201200D02* X293705Y199200D01* X291705Y201200D02* X293705Y203200D01* X291705Y201200D02* X295705D01* X291705Y211200D02* X293705Y209200D01* X291705Y211200D02* X293705Y213200D01* X291705Y211200D02* X295705D01* X291705Y221200D02* X293705Y219200D01* X291705Y221200D02* X293705Y223200D01* X291705Y221200D02* X295705D01* X291705Y231200D02* X293705Y229200D01* X291705Y231200D02* X293705Y233200D01* X291705Y231200D02* X295705D01* X271295Y257105D02* X295595D01* X291500Y241400D02* X295500D01* X291500D02* X293500Y243400D01* X291500Y241400D02* X293500Y239400D01* X291600Y251900D02* X295600D01* X291600D02* X293600Y253900D01* X291600Y251900D02* X293600Y249900D01* X203776Y259709D02* X247713D01* Y289630D01* X203776Y259709D02* Y288055D01* X204134Y289630D02* X247713D01* X203776Y289272D02* X204134Y289630D01* X203776Y288055D02* Y289272D01* X241213Y282209D02* Y289630D01* X230713Y282209D02* X241213D01* X230713D02* Y289630D01* X220713Y282209D02* Y289709D01* X211713Y282209D02* X220713D01* X211713D02* Y289630D01* X195644Y277744D02* Y287244D01* X169644D02* X195644D01* X165644Y283244D02* X169644Y287244D01* X165644Y277744D02* Y283244D01* Y265744D02* Y269744D01* Y265744D02* X169644Y261744D01* X195644D01* Y268744D01* Y269744D01* X157244Y218744D02* Y222680D01* X159212D01* X159868Y222024D01* Y220712D01* X159212Y220056D01* X157244D01* X158556D02* X159868Y218744D01* X163804Y222680D02* X161180D01* Y218744D01* X163804D01* X161180Y220712D02* X162492D01* X167739Y222024D02* X167083Y222680D01* X165771D01* X165116Y222024D01* Y221368D01* X165771Y220712D01* X167083D01* X167739Y220056D01* Y219400D01* X167083Y218744D01* X165771D01* X165116Y219400D01* X171675Y222680D02* X169051D01* Y218744D01* X171675D01* X169051Y220712D02* X170363D01* X172987Y222680D02* X175611D01* X174299D01* Y218744D01* X185244Y216244D02* Y221242D01* X186910Y219576D01* X188576Y221242D01* Y216244D01* X190243D02* X191909D01* X191076D01* Y219576D01* X190243D01* X194408Y216244D02* X196907D01* X197740Y217077D01* X196907Y217910D01* X195241D01* X194408Y218743D01* X195241Y219576D01* X197740D01* X200239Y216244D02* Y220409D01* Y218743D01* X199406D01* X201072D01* X200239D01* Y220409D01* X201072Y221242D01* X203572Y216244D02* X205238D01* X204404D01* Y219576D01* X203572D01* X208570Y220409D02* Y219576D01* X207737D01* X209403D01* X208570D01* Y217077D01* X209403Y216244D01* X216900Y221242D02* X220233D01* X218567D01* Y216244D01* X224398D02* X222732D01* X221899Y217077D01* Y218743D01* X222732Y219576D01* X224398D01* X225231Y218743D01* Y217910D01* X221899D01* X230229Y219576D02* X227730D01* X226897Y218743D01* Y217077D01* X227730Y216244D01* X230229D01* X231896Y221242D02* Y216244D01* Y218743D01* X232729Y219576D01* X234395D01* X235228Y218743D01* Y216244D01* X192344Y225910D02* X193010Y225244D01* X194343D01* X195010Y225910D01* Y228576D01* X194343Y229243D01* X193010D01* X192344Y228576D01* Y227910D01* X193010Y227243D01* X195010D01* X196343Y225244D02* X199009Y227910D01* X203007Y225244D02* X200342D01* X203007Y227910D01* Y228576D01* X202341Y229243D01* X201008D01* X200342Y228576D01* X204340Y225910D02* X205007Y225244D01* X206340D01* X207006Y225910D01* Y228576D01* X206340Y229243D01* X205007D01* X204340Y228576D01* Y227910D01* X205007Y227243D01* X207006D01* X208339Y225244D02* X211005Y227910D01* X215003Y225244D02* X212338D01* X215003Y227910D01* Y228576D01* X214337Y229243D01* X213004D01* X212338Y228576D01* X216336D02* X217003Y229243D01* X218336D01* X219002Y228576D01* Y225910D01* X218336Y225244D01* X217003D01* X216336Y225910D01* Y228576D01* X220335Y225244D02* X221668D01* X221002D01* Y229243D01* X220335Y228576D01* X226333Y229243D02* X225000Y228576D01* X223667Y227243D01* Y225910D01* X224334Y225244D01* X225667D01* X226333Y225910D01* Y226577D01* X225667Y227243D01* X223667D01* X179244Y194744D02* Y198743D01* X181910Y194744D01* Y198743D01* X183909Y197410D02* X185242D01* X185909Y196743D01* Y194744D01* X183909D01* X183243Y195411D01* X183909Y196077D01* X185909D01* X187241Y194744D02* Y197410D01* X189241D01* X189907Y196743D01* Y194744D01* X191907D02* X193240D01* X193906Y195411D01* Y196743D01* X193240Y197410D01* X191907D01* X191240Y196743D01* Y195411D01* X191907Y194744D01* X199238Y198743D02* X201903D01* Y198076D01* X199238Y195411D01* Y194744D01* X201903D01* X205236D02* X203903D01* X203236Y195411D01* Y196743D01* X203903Y197410D01* X205236D01* X205902Y196743D01* Y196077D01* X203236D01* X207235Y197410D02* Y194744D01* Y196077D01* X207902Y196743D01* X208568Y197410D01* X209234D01* X211900Y194744D02* X213233D01* X213900Y195411D01* Y196743D01* X213233Y197410D01* X211900D01* X211234Y196743D01* Y195411D01* X211900Y194744D01* X221897Y198076D02* X221231Y198743D01* X219898D01* X219231Y198076D01* Y197410D01* X219898Y196743D01* X221231D01* X221897Y196077D01* Y195411D01* X221231Y194744D01* X219898D01* X219231Y195411D01* X223896Y198076D02* Y197410D01* X223230D01* X224563D01* X223896D01* Y195411D01* X224563Y194744D01* X228561D02* X227229D01* X226562Y195411D01* Y196743D01* X227229Y197410D01* X228561D01* X229228Y196743D01* Y196077D01* X226562D01* X230561Y193411D02* Y197410D01* X232560D01* X233227Y196743D01* Y195411D01* X232560Y194744D01* X230561D01* X234560Y193411D02* Y197410D01* X236559D01* X237225Y196743D01* Y195411D01* X236559Y194744D01* X234560D01* X240558D02* X239225D01* X238558Y195411D01* Y196743D01* X239225Y197410D01* X240558D01* X241224Y196743D01* Y196077D01* X238558D01* X242557Y197410D02* Y194744D01* Y196077D01* X243224Y196743D01* X243890Y197410D01* X244556D01* X305527Y195744D02* Y212279D01* X327968D01* X305527Y179209D02* X327968D01* Y180390D01* Y188657D01* X305527Y179209D02* Y195744D01* X327968Y202831D02* Y212279D01* X356823Y162494D02* Y175994D01* X306665Y162494D02* X356823D01* X306665D02* Y175844D01* X336744Y175949D02* X356823Y175994D01* X306665Y175844D02* X326844D01* X387244Y206244D02* X390244Y209244D01* X387244D02* X390244Y206244D01* X451295Y155295D02* Y257105D01* Y155295D02* X475705D01* Y256995D01* X471500Y161200D02* X475500D01* X471500D02* X473500Y163200D01* X471500Y161200D02* X473500Y159200D01* X471705Y171200D02* X473705Y169200D01* X471705Y171200D02* X473705Y173200D01* X471705Y171200D02* X475705D01* X471705Y181200D02* X473705Y179200D01* X471705Y181200D02* X473705Y183200D01* X471705Y181200D02* X475705D01* X471705Y191200D02* X473705Y189200D01* X471705Y191200D02* X473705Y193200D01* X471705Y191200D02* X475705D01* X471705Y201200D02* X473705Y199200D01* X471705Y201200D02* X473705Y203200D01* X471705Y201200D02* X475705D01* X471705Y211200D02* X473705Y209200D01* X471705Y211200D02* X473705Y213200D01* X471705Y211200D02* X475705D01* X471705Y221200D02* X473705Y219200D01* X471705Y221200D02* X473705Y223200D01* X471705Y221200D02* X475705D01* X471705Y231200D02* X473705Y229200D01* X471705Y231200D02* X473705Y233200D01* X471705Y231200D02* X475705D01* X451295Y257105D02* X475595D01* X471500Y241400D02* X475500D01* X471500D02* X473500Y243400D01* X471500Y241400D02* X473500Y239400D01* X471600Y251900D02* X475600D01* X471600D02* X473600Y253900D01* X471600Y251900D02* X473600Y249900D01* X383776Y259709D02* X427713D01* Y289630D01* X383776Y259709D02* Y288055D01* X384134Y289630D02* X427713D01* X383776Y289272D02* X384134Y289630D01* X383776Y288055D02* Y289272D01* X421213Y282209D02* Y289630D01* X410713Y282209D02* X421213D01* X410713D02* Y289630D01* X400713Y282209D02* Y289709D01* X391713Y282209D02* X400713D01* X391713D02* Y289630D01* X375644Y277744D02* Y287244D01* X349644D02* X375644D01* X345644Y283244D02* X349644Y287244D01* X345644Y277744D02* Y283244D01* Y265744D02* Y269744D01* Y265744D02* X349644Y261744D01* X375644D01* Y268744D01* Y269744D01* X337244Y218744D02* Y222680D01* X339212D01* X339868Y222024D01* Y220712D01* X339212Y220056D01* X337244D01* X338556D02* X339868Y218744D01* X343804Y222680D02* X341180D01* Y218744D01* X343804D01* X341180Y220712D02* X342492D01* X347739Y222024D02* X347083Y222680D01* X345772D01* X345116Y222024D01* Y221368D01* X345772Y220712D01* X347083D01* X347739Y220056D01* Y219400D01* X347083Y218744D01* X345772D01* X345116Y219400D01* X351675Y222680D02* X349051D01* Y218744D01* X351675D01* X349051Y220712D02* X350363D01* X352987Y222680D02* X355611D01* X354299D01* Y218744D01* X365244Y216244D02* Y221242D01* X366910Y219576D01* X368576Y221242D01* Y216244D01* X370243D02* X371909D01* X371076D01* Y219576D01* X370243D01* X374408Y216244D02* X376907D01* X377740Y217077D01* X376907Y217910D01* X375241D01* X374408Y218743D01* X375241Y219576D01* X377740D01* X380239Y216244D02* Y220409D01* Y218743D01* X379406D01* X381072D01* X380239D01* Y220409D01* X381072Y221242D01* X383572Y216244D02* X385238D01* X384405D01* Y219576D01* X383572D01* X388570Y220409D02* Y219576D01* X387737D01* X389403D01* X388570D01* Y217077D01* X389403Y216244D01* X396901Y221242D02* X400233D01* X398567D01* Y216244D01* X404398D02* X402732D01* X401899Y217077D01* Y218743D01* X402732Y219576D01* X404398D01* X405231Y218743D01* Y217910D01* X401899D01* X410229Y219576D02* X407730D01* X406897Y218743D01* Y217077D01* X407730Y216244D01* X410229D01* X411896Y221242D02* Y216244D01* Y218743D01* X412729Y219576D01* X414395D01* X415228Y218743D01* Y216244D01* X372344Y225910D02* X373010Y225244D01* X374343D01* X375010Y225910D01* Y228576D01* X374343Y229243D01* X373010D01* X372344Y228576D01* Y227910D01* X373010Y227243D01* X375010D01* X376343Y225244D02* X379009Y227910D01* X383007Y225244D02* X380342D01* X383007Y227910D01* Y228576D01* X382341Y229243D01* X381008D01* X380342Y228576D01* X384340Y225910D02* X385007Y225244D01* X386340D01* X387006Y225910D01* Y228576D01* X386340Y229243D01* X385007D01* X384340Y228576D01* Y227910D01* X385007Y227243D01* X387006D01* X388339Y225244D02* X391005Y227910D01* X395003Y225244D02* X392338D01* X395003Y227910D01* Y228576D01* X394337Y229243D01* X393004D01* X392338Y228576D01* X396336D02* X397003Y229243D01* X398336D01* X399002Y228576D01* Y225910D01* X398336Y225244D01* X397003D01* X396336Y225910D01* Y228576D01* X400335Y225244D02* X401668D01* X401002D01* Y229243D01* X400335Y228576D01* X406333Y229243D02* X405000Y228576D01* X403667Y227243D01* Y225910D01* X404334Y225244D01* X405667D01* X406333Y225910D01* Y226577D01* X405667Y227243D01* X403667D01* X359244Y194744D02* Y198743D01* X361910Y194744D01* Y198743D01* X363909Y197410D02* X365242D01* X365909Y196743D01* Y194744D01* X363909D01* X363243Y195411D01* X363909Y196077D01* X365909D01* X367242Y194744D02* Y197410D01* X369241D01* X369907Y196743D01* Y194744D01* X371907D02* X373240D01* X373906Y195411D01* Y196743D01* X373240Y197410D01* X371907D01* X371240Y196743D01* Y195411D01* X371907Y194744D01* X379238Y198743D02* X381903D01* Y198076D01* X379238Y195411D01* Y194744D01* X381903D01* X385236D02* X383903D01* X383236Y195411D01* Y196743D01* X383903Y197410D01* X385236D01* X385902Y196743D01* Y196077D01* X383236D01* X387235Y197410D02* Y194744D01* Y196077D01* X387901Y196743D01* X388568Y197410D01* X389234D01* X391900Y194744D02* X393233D01* X393900Y195411D01* Y196743D01* X393233Y197410D01* X391900D01* X391234Y196743D01* Y195411D01* X391900Y194744D01* X401897Y198076D02* X401230Y198743D01* X399898D01* X399231Y198076D01* Y197410D01* X399898Y196743D01* X401230D01* X401897Y196077D01* Y195411D01* X401230Y194744D01* X399898D01* X399231Y195411D01* X403896Y198076D02* Y197410D01* X403230D01* X404563D01* X403896D01* Y195411D01* X404563Y194744D01* X408562D02* X407229D01* X406562Y195411D01* Y196743D01* X407229Y197410D01* X408562D01* X409228Y196743D01* Y196077D01* X406562D01* X410561Y193411D02* Y197410D01* X412560D01* X413227Y196743D01* Y195411D01* X412560Y194744D01* X410561D01* X414560Y193411D02* Y197410D01* X416559D01* X417225Y196743D01* Y195411D01* X416559Y194744D01* X414560D01* X420558D02* X419225D01* X418558Y195411D01* Y196743D01* X419225Y197410D01* X420558D01* X421224Y196743D01* Y196077D01* X418558D01* X422557Y197410D02* Y194744D01* Y196077D01* X423223Y196743D01* X423890Y197410D01* X424556D01* X125527Y375744D02* Y392279D01* X147968D01* X125527Y359209D02* X147968D01* Y360390D01* Y368657D01* X125527Y359209D02* Y375744D01* X147968Y382831D02* Y392279D01* X176823Y342494D02* Y355994D01* X126665Y342494D02* X176823D01* X126665D02* Y355844D01* X156744Y355949D02* X176823Y355994D01* X126665Y355844D02* X146844D01* X207244Y386244D02* X210244Y389244D01* X207244D02* X210244Y386244D01* X271295Y335295D02* Y437106D01* Y335295D02* X295705D01* Y436995D01* X291500Y341200D02* X295500D01* X291500D02* X293500Y343200D01* X291500Y341200D02* X293500Y339200D01* X291705Y351200D02* X293705Y349200D01* X291705Y351200D02* X293705Y353200D01* X291705Y351200D02* X295705D01* X291705Y361200D02* X293705Y359200D01* X291705Y361200D02* X293705Y363200D01* X291705Y361200D02* X295705D01* X291705Y371200D02* X293705Y369200D01* X291705Y371200D02* X293705Y373200D01* X291705Y371200D02* X295705D01* X291705Y381200D02* X293705Y379200D01* X291705Y381200D02* X293705Y383200D01* X291705Y381200D02* X295705D01* X291705Y391200D02* X293705Y389200D01* X291705Y391200D02* X293705Y393200D01* X291705Y391200D02* X295705D01* X291705Y401200D02* X293705Y399200D01* X291705Y401200D02* X293705Y403200D01* X291705Y401200D02* X295705D01* X291705Y411200D02* X293705Y409200D01* X291705Y411200D02* X293705Y413200D01* X291705Y411200D02* X295705D01* X271295Y437106D02* X295595D01* X291500Y421400D02* X295500D01* X291500D02* X293500Y423400D01* X291500Y421400D02* X293500Y419400D01* X291600Y431900D02* X295600D01* X291600D02* X293600Y433900D01* X291600Y431900D02* X293600Y429900D01* X203776Y439709D02* X247713D01* Y469630D01* X203776Y439709D02* Y468055D01* X204134Y469630D02* X247713D01* X203776Y469272D02* X204134Y469630D01* X203776Y468055D02* Y469272D01* X241213Y462209D02* Y469630D01* X230713Y462209D02* X241213D01* X230713D02* Y469630D01* X220713Y462209D02* Y469709D01* X211713Y462209D02* X220713D01* X211713D02* Y469630D01* X195644Y457744D02* Y467244D01* X169644D02* X195644D01* X165644Y463244D02* X169644Y467244D01* X165644Y457744D02* Y463244D01* Y445744D02* Y449744D01* Y445744D02* X169644Y441744D01* X195644D01* Y448744D01* Y449744D01* X157244Y398744D02* Y402680D01* X159212D01* X159868Y402024D01* Y400712D01* X159212Y400056D01* X157244D01* X158556D02* X159868Y398744D01* X163804Y402680D02* X161180D01* Y398744D01* X163804D01* X161180Y400712D02* X162492D01* X167739Y402024D02* X167083Y402680D01* X165771D01* X165116Y402024D01* Y401368D01* X165771Y400712D01* X167083D01* X167739Y400056D01* Y399400D01* X167083Y398744D01* X165771D01* X165116Y399400D01* X171675Y402680D02* X169051D01* Y398744D01* X171675D01* X169051Y400712D02* X170363D01* X172987Y402680D02* X175611D01* X174299D01* Y398744D01* X185244Y396244D02* Y401242D01* X186910Y399576D01* X188576Y401242D01* Y396244D01* X190243D02* X191909D01* X191076D01* Y399576D01* X190243D01* X194408Y396244D02* X196907D01* X197740Y397077D01* X196907Y397910D01* X195241D01* X194408Y398743D01* X195241Y399576D01* X197740D01* X200239Y396244D02* Y400409D01* Y398743D01* X199406D01* X201072D01* X200239D01* Y400409D01* X201072Y401242D01* X203572Y396244D02* X205238D01* X204404D01* Y399576D01* X203572D01* X208570Y400409D02* Y399576D01* X207737D01* X209403D01* X208570D01* Y397077D01* X209403Y396244D01* X216900Y401242D02* X220233D01* X218567D01* Y396244D01* X224398D02* X222732D01* X221899Y397077D01* Y398743D01* X222732Y399576D01* X224398D01* X225231Y398743D01* Y397910D01* X221899D01* X230229Y399576D02* X227730D01* X226897Y398743D01* Y397077D01* X227730Y396244D01* X230229D01* X231896Y401242D02* Y396244D01* Y398743D01* X232729Y399576D01* X234395D01* X235228Y398743D01* Y396244D01* X192344Y405910D02* X193010Y405244D01* X194343D01* X195010Y405910D01* Y408576D01* X194343Y409243D01* X193010D01* X192344Y408576D01* Y407910D01* X193010Y407243D01* X195010D01* X196343Y405244D02* X199009Y407910D01* X203007Y405244D02* X200342D01* X203007Y407910D01* Y408576D01* X202341Y409243D01* X201008D01* X200342Y408576D01* X204340Y405910D02* X205007Y405244D01* X206340D01* X207006Y405910D01* Y408576D01* X206340Y409243D01* X205007D01* X204340Y408576D01* Y407910D01* X205007Y407243D01* X207006D01* X208339Y405244D02* X211005Y407910D01* X215003Y405244D02* X212338D01* X215003Y407910D01* Y408576D01* X214337Y409243D01* X213004D01* X212338Y408576D01* X216336D02* X217003Y409243D01* X218336D01* X219002Y408576D01* Y405910D01* X218336Y405244D01* X217003D01* X216336Y405910D01* Y408576D01* X220335Y405244D02* X221668D01* X221002D01* Y409243D01* X220335Y408576D01* X226333Y409243D02* X225000Y408576D01* X223667Y407243D01* Y405910D01* X224334Y405244D01* X225667D01* X226333Y405910D01* Y406577D01* X225667Y407243D01* X223667D01* X179244Y374744D02* Y378743D01* X181910Y374744D01* Y378743D01* X183909Y377410D02* X185242D01* X185909Y376743D01* Y374744D01* X183909D01* X183243Y375411D01* X183909Y376077D01* X185909D01* X187241Y374744D02* Y377410D01* X189241D01* X189907Y376743D01* Y374744D01* X191907D02* X193240D01* X193906Y375411D01* Y376743D01* X193240Y377410D01* X191907D01* X191240Y376743D01* Y375411D01* X191907Y374744D01* X199238Y378743D02* X201903D01* Y378076D01* X199238Y375411D01* Y374744D01* X201903D01* X205236D02* X203903D01* X203236Y375411D01* Y376743D01* X203903Y377410D01* X205236D01* X205902Y376743D01* Y376077D01* X203236D01* X207235Y377410D02* Y374744D01* Y376077D01* X207902Y376743D01* X208568Y377410D01* X209234D01* X211900Y374744D02* X213233D01* X213900Y375411D01* Y376743D01* X213233Y377410D01* X211900D01* X211234Y376743D01* Y375411D01* X211900Y374744D01* X221897Y378076D02* X221231Y378743D01* X219898D01* X219231Y378076D01* Y377410D01* X219898Y376743D01* X221231D01* X221897Y376077D01* Y375411D01* X221231Y374744D01* X219898D01* X219231Y375411D01* X223896Y378076D02* Y377410D01* X223230D01* X224563D01* X223896D01* Y375411D01* X224563Y374744D01* X228561D02* X227229D01* X226562Y375411D01* Y376743D01* X227229Y377410D01* X228561D01* X229228Y376743D01* Y376077D01* X226562D01* X230561Y373411D02* Y377410D01* X232560D01* X233227Y376743D01* Y375411D01* X232560Y374744D01* X230561D01* X234560Y373411D02* Y377410D01* X236559D01* X237225Y376743D01* Y375411D01* X236559Y374744D01* X234560D01* X240558D02* X239225D01* X238558Y375411D01* Y376743D01* X239225Y377410D01* X240558D01* X241224Y376743D01* Y376077D01* X238558D01* X242557Y377410D02* Y374744D01* Y376077D01* X243224Y376743D01* X243890Y377410D01* X244556D01* X305527Y375744D02* Y392279D01* X327968D01* X305527Y359209D02* X327968D01* Y360390D01* Y368657D01* X305527Y359209D02* Y375744D01* X327968Y382831D02* Y392279D01* X356823Y342494D02* Y355994D01* X306665Y342494D02* X356823D01* X306665D02* Y355844D01* X336744Y355949D02* X356823Y355994D01* X306665Y355844D02* X326844D01* X387244Y386244D02* X390244Y389244D01* X387244D02* X390244Y386244D01* X451295Y335295D02* Y437106D01* Y335295D02* X475705D01* Y436995D01* X471500Y341200D02* X475500D01* X471500D02* X473500Y343200D01* X471500Y341200D02* X473500Y339200D01* X471705Y351200D02* X473705Y349200D01* X471705Y351200D02* X473705Y353200D01* X471705Y351200D02* X475705D01* X471705Y361200D02* X473705Y359200D01* X471705Y361200D02* X473705Y363200D01* X471705Y361200D02* X475705D01* X471705Y371200D02* X473705Y369200D01* X471705Y371200D02* X473705Y373200D01* X471705Y371200D02* X475705D01* X471705Y381200D02* X473705Y379200D01* X471705Y381200D02* X473705Y383200D01* X471705Y381200D02* X475705D01* X471705Y391200D02* X473705Y389200D01* X471705Y391200D02* X473705Y393200D01* X471705Y391200D02* X475705D01* X471705Y401200D02* X473705Y399200D01* X471705Y401200D02* X473705Y403200D01* X471705Y401200D02* X475705D01* X471705Y411200D02* X473705Y409200D01* X471705Y411200D02* X473705Y413200D01* X471705Y411200D02* X475705D01* X451295Y437106D02* X475595D01* X471500Y421400D02* X475500D01* X471500D02* X473500Y423400D01* X471500Y421400D02* X473500Y419400D01* X471600Y431900D02* X475600D01* X471600D02* X473600Y433900D01* X471600Y431900D02* X473600Y429900D01* X383776Y439709D02* X427713D01* Y469630D01* X383776Y439709D02* Y468055D01* X384134Y469630D02* X427713D01* X383776Y469272D02* X384134Y469630D01* X383776Y468055D02* Y469272D01* X421213Y462209D02* Y469630D01* X410713Y462209D02* X421213D01* X410713D02* Y469630D01* X400713Y462209D02* Y469709D01* X391713Y462209D02* X400713D01* X391713D02* Y469630D01* X375644Y457744D02* Y467244D01* X349644D02* X375644D01* X345644Y463244D02* X349644Y467244D01* X345644Y457744D02* Y463244D01* Y445744D02* Y449744D01* Y445744D02* X349644Y441744D01* X375644D01* Y448744D01* Y449744D01* X337244Y398744D02* Y402680D01* X339212D01* X339868Y402024D01* Y400712D01* X339212Y400056D01* X337244D01* X338556D02* X339868Y398744D01* X343804Y402680D02* X341180D01* Y398744D01* X343804D01* X341180Y400712D02* X342492D01* X347739Y402024D02* X347083Y402680D01* X345772D01* X345116Y402024D01* Y401368D01* X345772Y400712D01* X347083D01* X347739Y400056D01* Y399400D01* X347083Y398744D01* X345772D01* X345116Y399400D01* X351675Y402680D02* X349051D01* Y398744D01* X351675D01* X349051Y400712D02* X350363D01* X352987Y402680D02* X355611D01* X354299D01* Y398744D01* X365244Y396244D02* Y401242D01* X366910Y399576D01* X368576Y401242D01* Y396244D01* X370243D02* X371909D01* X371076D01* Y399576D01* X370243D01* X374408Y396244D02* X376907D01* X377740Y397077D01* X376907Y397910D01* X375241D01* X374408Y398743D01* X375241Y399576D01* X377740D01* X380239Y396244D02* Y400409D01* Y398743D01* X379406D01* X381072D01* X380239D01* Y400409D01* X381072Y401242D01* X383572Y396244D02* X385238D01* X384405D01* Y399576D01* X383572D01* X388570Y400409D02* Y399576D01* X387737D01* X389403D01* X388570D01* Y397077D01* X389403Y396244D01* X396901Y401242D02* X400233D01* X398567D01* Y396244D01* X404398D02* X402732D01* X401899Y397077D01* Y398743D01* X402732Y399576D01* X404398D01* X405231Y398743D01* Y397910D01* X401899D01* X410229Y399576D02* X407730D01* X406897Y398743D01* Y397077D01* X407730Y396244D01* X410229D01* X411896Y401242D02* Y396244D01* Y398743D01* X412729Y399576D01* X414395D01* X415228Y398743D01* Y396244D01* X372344Y405910D02* X373010Y405244D01* X374343D01* X375010Y405910D01* Y408576D01* X374343Y409243D01* X373010D01* X372344Y408576D01* Y407910D01* X373010Y407243D01* X375010D01* X376343Y405244D02* X379009Y407910D01* X383007Y405244D02* X380342D01* X383007Y407910D01* Y408576D01* X382341Y409243D01* X381008D01* X380342Y408576D01* X384340Y405910D02* X385007Y405244D01* X386340D01* X387006Y405910D01* Y408576D01* X386340Y409243D01* X385007D01* X384340Y408576D01* Y407910D01* X385007Y407243D01* X387006D01* X388339Y405244D02* X391005Y407910D01* X395003Y405244D02* X392338D01* X395003Y407910D01* Y408576D01* X394337Y409243D01* X393004D01* X392338Y408576D01* X396336D02* X397003Y409243D01* X398336D01* X399002Y408576D01* Y405910D01* X398336Y405244D01* X397003D01* X396336Y405910D01* Y408576D01* X400335Y405244D02* X401668D01* X401002D01* Y409243D01* X400335Y408576D01* X406333Y409243D02* X405000Y408576D01* X403667Y407243D01* Y405910D01* X404334Y405244D01* X405667D01* X406333Y405910D01* Y406577D01* X405667Y407243D01* X403667D01* X359244Y374744D02* Y378743D01* X361910Y374744D01* Y378743D01* X363909Y377410D02* X365242D01* X365909Y376743D01* Y374744D01* X363909D01* X363243Y375411D01* X363909Y376077D01* X365909D01* X367242Y374744D02* Y377410D01* X369241D01* X369907Y376743D01* Y374744D01* X371907D02* X373240D01* X373906Y375411D01* Y376743D01* X373240Y377410D01* X371907D01* X371240Y376743D01* Y375411D01* X371907Y374744D01* X379238Y378743D02* X381903D01* Y378076D01* X379238Y375411D01* Y374744D01* X381903D01* X385236D02* X383903D01* X383236Y375411D01* Y376743D01* X383903Y377410D01* X385236D01* X385902Y376743D01* Y376077D01* X383236D01* X387235Y377410D02* Y374744D01* Y376077D01* X387901Y376743D01* X388568Y377410D01* X389234D01* X391900Y374744D02* X393233D01* X393900Y375411D01* Y376743D01* X393233Y377410D01* X391900D01* X391234Y376743D01* Y375411D01* X391900Y374744D01* X401897Y378076D02* X401230Y378743D01* X399898D01* X399231Y378076D01* Y377410D01* X399898Y376743D01* X401230D01* X401897Y376077D01* Y375411D01* X401230Y374744D01* X399898D01* X399231Y375411D01* X403896Y378076D02* Y377410D01* X403230D01* X404563D01* X403896D01* Y375411D01* X404563Y374744D01* X408562D02* X407229D01* X406562Y375411D01* Y376743D01* X407229Y377410D01* X408562D01* X409228Y376743D01* Y376077D01* X406562D01* X410561Y373411D02* Y377410D01* X412560D01* X413227Y376743D01* Y375411D01* X412560Y374744D01* X410561D01* X414560Y373411D02* Y377410D01* X416559D01* X417225Y376743D01* Y375411D01* X416559Y374744D01* X414560D01* X420558D02* X419225D01* X418558Y375411D01* Y376743D01* X419225Y377410D01* X420558D01* X421224Y376743D01* Y376077D01* X418558D01* X422557Y377410D02* Y374744D01* Y376077D01* X423223Y376743D01* X423890Y377410D01* X424556D01* D67* X158412Y199628D02* G03* X158412Y199628I-492J0D01* G01* X250584Y223500D02* G03* X250584Y223500I-492J0D01* G01* X207619Y144886D02* G03* X207619Y144886I-492J0D01* G01* X193450Y234536D02* G03* X193450Y234536I-492J0D01* G01* X249913Y180028D02* G03* X249913Y180028I-492J0D01* G01* X249413Y197528D02* G03* X249413Y197528I-492J0D01* G01* X249913Y213528D02* G03* X249913Y213528I-492J0D01* G01* X338412Y199628D02* G03* X338412Y199628I-492J0D01* G01* X430584Y223500D02* G03* X430584Y223500I-492J0D01* G01* X387619Y144886D02* G03* X387619Y144886I-492J0D01* G01* X373450Y234536D02* G03* X373450Y234536I-492J0D01* G01* X429913Y180028D02* G03* X429913Y180028I-492J0D01* G01* X429413Y197528D02* G03* X429413Y197528I-492J0D01* G01* X429913Y213528D02* G03* X429913Y213528I-492J0D01* G01* X158412Y379628D02* G03* X158412Y379628I-492J0D01* G01* X250584Y403500D02* G03* X250584Y403500I-492J0D01* G01* X207619Y324886D02* G03* X207619Y324886I-492J0D01* G01* X193450Y414536D02* G03* X193450Y414536I-492J0D01* G01* X249913Y360028D02* G03* X249913Y360028I-492J0D01* G01* X249413Y377528D02* G03* X249413Y377528I-492J0D01* G01* X249913Y393528D02* G03* X249913Y393528I-492J0D01* G01* X338412Y379628D02* G03* X338412Y379628I-492J0D01* G01* X430584Y403500D02* G03* X430584Y403500I-492J0D01* G01* X387619Y324886D02* G03* X387619Y324886I-492J0D01* G01* X373450Y414536D02* G03* X373450Y414536I-492J0D01* G01* X429913Y360028D02* G03* X429913Y360028I-492J0D01* G01* X429413Y377528D02* G03* X429413Y377528I-492J0D01* G01* X429913Y393528D02* G03* X429913Y393528I-492J0D01* G01* D68* X248945Y252193D02* X252882D01* X248945Y241169D02* X252882D01* X248945D02* Y252193D01* X252882Y241169D02* Y252193D01* X127044Y257344D02* X132044D01* X127044Y217394D02* Y257344D01* X137044Y217394D02* Y257344D01* X132044D02* X137044D01* X133594Y217394D02* X137044D01* X127044D02* X133594D01* X200244Y247744D02* Y252744D01* Y247744D02* X240194D01* X200244Y257744D02* X240194D01* X200244Y252744D02* Y257744D01* X240194Y254294D02* Y257744D01* Y247744D02* Y254294D01* X428945Y252193D02* X432882D01* X428945Y241169D02* X432882D01* X428945D02* Y252193D01* X432882Y241169D02* Y252193D01* X307044Y257344D02* X312044D01* X307044Y217394D02* Y257344D01* X317044Y217394D02* Y257344D01* X312044D02* X317044D01* X313594Y217394D02* X317044D01* X307044D02* X313594D01* X380244Y247744D02* Y252744D01* Y247744D02* X420194D01* X380244Y257744D02* X420194D01* X380244Y252744D02* Y257744D01* X420194Y254294D02* Y257744D01* Y247744D02* Y254294D01* X248945Y432193D02* X252882D01* X248945Y421169D02* X252882D01* X248945D02* Y432193D01* X252882Y421169D02* Y432193D01* X127044Y437344D02* X132044D01* X127044Y397394D02* Y437344D01* X137044Y397394D02* Y437344D01* X132044D02* X137044D01* X133594Y397394D02* X137044D01* X127044D02* X133594D01* X200244Y427744D02* Y432744D01* Y427744D02* X240194D01* X200244Y437744D02* X240194D01* X200244Y432744D02* Y437744D01* X240194Y434294D02* Y437744D01* Y427744D02* Y434294D01* X428945Y432193D02* X432882D01* X428945Y421169D02* X432882D01* X428945D02* Y432193D01* X432882Y421169D02* Y432193D01* X307044Y437344D02* X312044D01* X307044Y397394D02* Y437344D01* X317044Y397394D02* Y437344D01* X312044D02* X317044D01* X313594Y397394D02* X317044D01* X307044D02* X313594D01* X380244Y427744D02* Y432744D01* Y427744D02* X420194D01* X380244Y437744D02* X420194D01* X380244Y432744D02* Y437744D01* X420194Y434294D02* Y437744D01* Y427744D02* Y434294D01* D69* X161909Y182425D02* X163484D01* X161909Y180063D02* X163484D01* X157382D02* Y182425D01* X162053Y198446D02* X163235D01* X162053Y186242D02* X163235D01* X162053D02* Y198446D01* X163235Y186242D02* Y198446D01* X247722Y221791D02* X250478D01* X247722Y233209D02* X250478D01* Y221791D02* Y233209D01* X247722Y221791D02* Y233209D01* X236222Y227106D02* Y227894D01* X238978Y227106D02* Y227894D01* Y238106D02* Y238894D01* X236222Y238106D02* Y238894D01* X171165Y158181D02* X172740D01* X171165Y155819D02* X172740D01* X166638D02* Y158181D01* X224178Y167644D02* X225222Y166600D01* X224178Y165556D02* X225222Y166600D01* X204900Y186922D02* X205944Y185878D01* X203856Y185878D02* X204900Y186922D01* X184578Y166600D02* X185622Y167644D01* X184578Y166600D02* X185622Y165556D01* X203856Y147322D02* X204900Y146278D01* X205944Y147322D01* X149176Y231797D02* X153113D01* X149176Y225891D02* X153113D01* X149076Y251497D02* X153013D01* X149076Y245591D02* X153013D01* X174061Y256583D02* X188628D01* X174061Y236505D02* X188628D01* X257197Y166642D02* Y169791D01* X252866Y166642D02* X257197D01* Y175697D02* Y178846D01* X252866D02* X257197D01* X256697Y184142D02* Y187291D01* X252366Y184142D02* X256697D01* Y193197D02* Y196346D01* X252366D02* X256697D01* X257197Y200142D02* Y203291D01* X252866Y200142D02* X257197D01* Y209197D02* Y212346D01* X252866D02* X257197D01* X341909Y182425D02* X343484D01* X341909Y180063D02* X343484D01* X337382D02* Y182425D01* X342053Y198446D02* X343235D01* X342053Y186242D02* X343235D01* X342053D02* Y198446D01* X343235Y186242D02* Y198446D01* X427722Y221791D02* X430478D01* X427722Y233209D02* X430478D01* Y221791D02* Y233209D01* X427722Y221791D02* Y233209D01* X416222Y227106D02* Y227894D01* X418978Y227106D02* Y227894D01* Y238106D02* Y238894D01* X416222Y238106D02* Y238894D01* X351165Y158181D02* X352740D01* X351165Y155819D02* X352740D01* X346638D02* Y158181D01* X404178Y167644D02* X405222Y166600D01* X404178Y165556D02* X405222Y166600D01* X384900Y186922D02* X385944Y185878D01* X383856Y185878D02* X384900Y186922D01* X364578Y166600D02* X365622Y167644D01* X364578Y166600D02* X365622Y165556D01* X383856Y147322D02* X384900Y146278D01* X385944Y147322D01* X329176Y231797D02* X333113D01* X329176Y225891D02* X333113D01* X329076Y251497D02* X333013D01* X329076Y245591D02* X333013D01* X354061Y256583D02* X368628D01* X354061Y236505D02* X368628D01* X437197Y166642D02* Y169791D01* X432866Y166642D02* X437197D01* Y175697D02* Y178846D01* X432866D02* X437197D01* X436697Y184142D02* Y187291D01* X432366Y184142D02* X436697D01* Y193197D02* Y196346D01* X432366D02* X436697D01* X437197Y200142D02* Y203291D01* X432866Y200142D02* X437197D01* Y209197D02* Y212346D01* X432866D02* X437197D01* X161909Y362425D02* X163484D01* X161909Y360063D02* X163484D01* X157382D02* Y362425D01* X162053Y378446D02* X163235D01* X162053Y366242D02* X163235D01* X162053D02* Y378446D01* X163235Y366242D02* Y378446D01* X247722Y401791D02* X250478D01* X247722Y413209D02* X250478D01* Y401791D02* Y413209D01* X247722Y401791D02* Y413209D01* X236222Y407106D02* Y407894D01* X238978Y407106D02* Y407894D01* Y418106D02* Y418894D01* X236222Y418106D02* Y418894D01* X171165Y338181D02* X172740D01* X171165Y335819D02* X172740D01* X166638D02* Y338181D01* X224178Y347644D02* X225222Y346600D01* X224178Y345556D02* X225222Y346600D01* X204900Y366922D02* X205944Y365878D01* X203856Y365878D02* X204900Y366922D01* X184578Y346600D02* X185622Y347644D01* X184578Y346600D02* X185622Y345556D01* X203856Y327322D02* X204900Y326278D01* X205944Y327322D01* X149176Y411797D02* X153113D01* X149176Y405891D02* X153113D01* X149076Y431497D02* X153013D01* X149076Y425591D02* X153013D01* X174061Y436583D02* X188628D01* X174061Y416505D02* X188628D01* X257197Y346642D02* Y349791D01* X252866Y346642D02* X257197D01* Y355697D02* Y358846D01* X252866D02* X257197D01* X256697Y364142D02* Y367291D01* X252366Y364142D02* X256697D01* Y373197D02* Y376346D01* X252366D02* X256697D01* X257197Y380142D02* Y383291D01* X252866Y380142D02* X257197D01* Y389197D02* Y392346D01* X252866D02* X257197D01* X341909Y362425D02* X343484D01* X341909Y360063D02* X343484D01* X337382D02* Y362425D01* X342053Y378446D02* X343235D01* X342053Y366242D02* X343235D01* X342053D02* Y378446D01* X343235Y366242D02* Y378446D01* X427722Y401791D02* X430478D01* X427722Y413209D02* X430478D01* Y401791D02* Y413209D01* X427722Y401791D02* Y413209D01* X416222Y407106D02* Y407894D01* X418978Y407106D02* Y407894D01* Y418106D02* Y418894D01* X416222Y418106D02* Y418894D01* X351165Y338181D02* X352740D01* X351165Y335819D02* X352740D01* X346638D02* Y338181D01* X404178Y347644D02* X405222Y346600D01* X404178Y345556D02* X405222Y346600D01* X384900Y366922D02* X385944Y365878D01* X383856Y365878D02* X384900Y366922D01* X364578Y346600D02* X365622Y347644D01* X364578Y346600D02* X365622Y345556D01* X383856Y327322D02* X384900Y326278D01* X385944Y327322D01* X329176Y411797D02* X333113D01* X329176Y405891D02* X333113D01* X329076Y431497D02* X333013D01* X329076Y425591D02* X333013D01* X354061Y436583D02* X368628D01* X354061Y416505D02* X368628D01* X437197Y346642D02* Y349791D01* X432866Y346642D02* X437197D01* Y355697D02* Y358846D01* X432866D02* X437197D01* X436697Y364142D02* Y367291D01* X432366Y364142D02* X436697D01* Y373197D02* Y376346D01* X432366D02* X436697D01* X437197Y380142D02* Y383291D01* X432866Y380142D02* X437197D01* Y389197D02* Y392346D01* X432866D02* X437197D01* D70* X197244Y285743D02* X201909D01* X251744Y284243D02* X257076D01* X254410Y286909D02* Y281577D01* X377244Y285743D02* X381909D01* X431744Y284243D02* X437076D01* X434410Y286909D02* Y281577D01* X197244Y465743D02* X201909D01* X251744Y464243D02* X257076D01* X254410Y466909D02* Y461577D01* X377244Y465743D02* X381909D01* X431744Y464243D02* X437076D01* X434410Y466909D02* Y461577D01* M02* ================================================ FILE: hardware/panel.GTP ================================================ G04 Layer_Color=8421504* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD10R,0.03543X0.03150*% G04:AMPARAMS|DCode=11|XSize=31.5mil|YSize=35.43mil|CornerRadius=7.87mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD11* 21,1,0.03150,0.01969,0,0,270.0* 21,1,0.01575,0.03543,0,0,270.0* 1,1,0.01575,-0.00984,-0.00787* 1,1,0.01575,-0.00984,0.00787* 1,1,0.01575,0.00984,0.00787* 1,1,0.01575,0.00984,-0.00787* % %ADD11ROUNDEDRECTD11*% %ADD12R,0.07087X0.03937*% %ADD13R,0.03347X0.03150*% %ADD14R,0.06890X0.01575*% %ADD15R,0.09449X0.04724*% %ADD16R,0.12205X0.04724*% %ADD17R,0.04724X0.07087*% G04:AMPARAMS|DCode=18|XSize=31.5mil|YSize=31.5mil|CornerRadius=7.87mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD18* 21,1,0.03150,0.01575,0,0,90.0* 21,1,0.01575,0.03150,0,0,90.0* 1,1,0.01575,0.00787,0.00787* 1,1,0.01575,0.00787,-0.00787* 1,1,0.01575,-0.00787,-0.00787* 1,1,0.01575,-0.00787,0.00787* % %ADD18ROUNDEDRECTD18*% %ADD19R,0.03150X0.03150*% G04:AMPARAMS|DCode=20|XSize=27.56mil|YSize=51.18mil|CornerRadius=6.89mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD20* 21,1,0.02756,0.03740,0,0,90.0* 21,1,0.01378,0.05118,0,0,90.0* 1,1,0.01378,0.01870,0.00689* 1,1,0.01378,0.01870,-0.00689* 1,1,0.01378,-0.01870,-0.00689* 1,1,0.01378,-0.01870,0.00689* % %ADD20ROUNDEDRECTD20*% %ADD21R,0.05118X0.02756*% G04:AMPARAMS|DCode=22|XSize=23.62mil|YSize=35.43mil|CornerRadius=5.91mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD22* 21,1,0.02362,0.02362,0,0,270.0* 21,1,0.01181,0.03543,0,0,270.0* 1,1,0.01181,-0.01181,-0.00591* 1,1,0.01181,-0.01181,0.00591* 1,1,0.01181,0.01181,0.00591* 1,1,0.01181,0.01181,-0.00591* % %ADD22ROUNDEDRECTD22*% %ADD23R,0.03543X0.02362*% %ADD24R,0.03543X0.02953*% G04:AMPARAMS|DCode=25|XSize=78.74mil|YSize=39.37mil|CornerRadius=9.84mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD25* 21,1,0.07874,0.01969,0,0,0.0* 21,1,0.05906,0.03937,0,0,0.0* 1,1,0.01969,0.02953,-0.00984* 1,1,0.01969,-0.02953,-0.00984* 1,1,0.01969,-0.02953,0.00984* 1,1,0.01969,0.02953,0.00984* % %ADD25ROUNDEDRECTD25*% %ADD26P,0.28674X4X180.0*% G04:AMPARAMS|DCode=27|XSize=9.84mil|YSize=33.47mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=135.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD27* 21,1,0.02362,0.00984,0.00000,0.00000,225.0* 1,1,0.00984,0.00835,0.00835* 1,1,0.00984,-0.00835,-0.00835* % %ADD27OVALD27*% G04:AMPARAMS|DCode=28|XSize=9.84mil|YSize=35.43mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=135.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD28* 21,1,0.02559,0.00984,0.00000,0.00000,225.0* 1,1,0.00984,0.00905,0.00905* 1,1,0.00984,-0.00905,-0.00905* % %ADD28OVALD28*% G04:AMPARAMS|DCode=29|XSize=9.84mil|YSize=33.47mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD29* 21,1,0.02362,0.00984,0.00000,0.00000,315.0* 1,1,0.00984,-0.00835,0.00835* 1,1,0.00984,0.00835,-0.00835* % %ADD29OVALD29*% G04:AMPARAMS|DCode=30|XSize=9.84mil|YSize=35.43mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD30* 21,1,0.02559,0.00984,0.00000,0.00000,315.0* 1,1,0.00984,-0.00905,0.00905* 1,1,0.00984,0.00905,-0.00905* % %ADD30OVALD30*% G04:AMPARAMS|DCode=31|XSize=9.84mil|YSize=33.47mil|CornerRadius=2.46mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD31* 21,1,0.00984,0.02854,0,0,225.0* 21,1,0.00492,0.03347,0,0,225.0* 1,1,0.00492,-0.01183,0.00835* 1,1,0.00492,-0.00835,0.01183* 1,1,0.00492,0.01183,-0.00835* 1,1,0.00492,0.00835,-0.01183* % %ADD31ROUNDEDRECTD31*% %ADD32R,0.03937X0.06693*% %ADD33R,0.11811X0.11811*% %ADD34O,0.05512X0.01772*% %ADD35R,0.05512X0.01772*% %ADD36R,0.03740X0.02756*% %ADD37R,0.12500X0.04500*% %ADD43C,0.00800*% D10* X246583Y246681D02* D03* X255244Y250618D02* D03* X426583Y246681D02* D03* X435244Y250618D02* D03* X246583Y426681D02* D03* X255244Y430618D02* D03* X426583Y426681D02* D03* X435244Y430618D02* D03* D11* X255244Y242744D02* D03* X435244D02* D03* X255244Y422744D02* D03* X435244D02* D03* D12* X230157Y154000D02* D03* Y144157D02* D03* X410157Y154000D02* D03* Y144157D02* D03* X230157Y334000D02* D03* Y324157D02* D03* X410157Y334000D02* D03* Y324157D02* D03* D13* X178705Y230244D02* D03* X173783D02* D03* X242618Y144000D02* D03* X237697D02* D03* X242618Y154000D02* D03* X237697D02* D03* X358705Y230244D02* D03* X353783D02* D03* X422618Y144000D02* D03* X417697D02* D03* X422618Y154000D02* D03* X417697D02* D03* X178705Y410244D02* D03* X173783D02* D03* X242618Y324000D02* D03* X237697D02* D03* X242618Y334000D02* D03* X237697D02* D03* X358705Y410244D02* D03* X353783D02* D03* X422618Y324000D02* D03* X417697D02* D03* X422618Y334000D02* D03* X417697D02* D03* D14* X143244Y200862D02* D03* Y198303D02* D03* Y195744D02* D03* Y190626D02* D03* Y193185D02* D03* X323244Y200862D02* D03* Y198303D02* D03* Y195744D02* D03* Y190626D02* D03* Y193185D02* D03* X143244Y380862D02* D03* Y378303D02* D03* Y375744D02* D03* Y370626D02* D03* Y373185D02* D03* X323244Y380862D02* D03* Y378303D02* D03* Y375744D02* D03* Y370626D02* D03* Y373185D02* D03* D15* X131433Y200075D02* D03* Y192201D02* D03* X311433Y200075D02* D03* Y192201D02* D03* X131433Y380075D02* D03* Y372201D02* D03* X311433Y380075D02* D03* Y372201D02* D03* D16* X134344Y183944D02* D03* Y207244D02* D03* X314344Y183944D02* D03* Y207244D02* D03* X134344Y363944D02* D03* Y387244D02* D03* X314344Y363944D02* D03* Y387244D02* D03* D17* X143944Y184344D02* D03* X144057Y207187D02* D03* X323944Y184344D02* D03* X324057Y207187D02* D03* X143944Y364344D02* D03* X144057Y387187D02* D03* X323944Y364344D02* D03* X324057Y387187D02* D03* D18* X159744Y181244D02* D03* X169000Y157000D02* D03* X339744Y181244D02* D03* X349000Y157000D02* D03* X159744Y361244D02* D03* X169000Y337000D02* D03* X339744Y361244D02* D03* X349000Y337000D02* D03* D19* X165650Y181244D02* D03* X174906Y157000D02* D03* X345650Y181244D02* D03* X354906Y157000D02* D03* X165650Y361244D02* D03* X174906Y337000D02* D03* X345650Y361244D02* D03* X354906Y337000D02* D03* D20* X157920Y196084D02* D03* X337920D02* D03* X157920Y376084D02* D03* X337920D02* D03* D21* X157920Y192344D02* D03* Y188604D02* D03* X167368D02* D03* Y192344D02* D03* Y196084D02* D03* X337920Y192344D02* D03* Y188604D02* D03* X347368D02* D03* Y192344D02* D03* Y196084D02* D03* X157920Y372344D02* D03* Y368604D02* D03* X167368D02* D03* Y372344D02* D03* Y376084D02* D03* X337920Y372344D02* D03* Y368604D02* D03* X347368D02* D03* Y372344D02* D03* Y376084D02* D03* D22* X253824Y223760D02* D03* X433824D02* D03* X253824Y403760D02* D03* X433824D02* D03* D23* X253824Y227500D02* D03* Y231240D02* D03* X244376D02* D03* Y223760D02* D03* X433824Y227500D02* D03* Y231240D02* D03* X424376D02* D03* Y223760D02* D03* X253824Y407500D02* D03* Y411240D02* D03* X244376D02* D03* Y403760D02* D03* X433824Y407500D02* D03* Y411240D02* D03* X424376D02* D03* Y403760D02* D03* D24* X237600Y224843D02* D03* Y230157D02* D03* Y241157D02* D03* Y235843D02* D03* X417600Y224843D02* D03* Y230157D02* D03* Y241157D02* D03* Y235843D02* D03* X237600Y404843D02* D03* Y410157D02* D03* Y421157D02* D03* Y415843D02* D03* X417600Y404843D02* D03* Y410157D02* D03* Y421157D02* D03* Y415843D02* D03* D25* X158744Y207744D02* D03* X174886D02* D03* X158744Y214043D02* D03* X174744D02* D03* X199244Y128945D02* D03* X215244D02* D03* X199102Y135244D02* D03* X215244D02* D03* X164744Y128945D02* D03* X180744D02* D03* X164602Y135244D02* D03* X180744D02* D03* X250744D02* D03* X234602D02* D03* X250744Y128945D02* D03* X234744D02* D03* X338744Y207744D02* D03* X354886D02* D03* X338744Y214043D02* D03* X354744D02* D03* X379244Y128945D02* D03* X395244D02* D03* X379102Y135244D02* D03* X395244D02* D03* X344744Y128945D02* D03* X360744D02* D03* X344602Y135244D02* D03* X360744D02* D03* X430744D02* D03* X414602D02* D03* X430744Y128945D02* D03* X414744D02* D03* X158744Y387744D02* D03* X174886D02* D03* X158744Y394043D02* D03* X174744D02* D03* X199244Y308945D02* D03* X215244D02* D03* X199102Y315244D02* D03* X215244D02* D03* X164744Y308945D02* D03* X180744D02* D03* X164602Y315244D02* D03* X180744D02* D03* X250744D02* D03* X234602D02* D03* X250744Y308945D02* D03* X234744D02* D03* X338744Y387744D02* D03* X354886D02* D03* X338744Y394043D02* D03* X354744D02* D03* X379244Y308945D02* D03* X395244D02* D03* X379102Y315244D02* D03* X395244D02* D03* X344744Y308945D02* D03* X360744D02* D03* X344602Y315244D02* D03* X360744D02* D03* X430744D02* D03* X414602D02* D03* X430744Y308945D02* D03* X414744D02* D03* D26* X204900Y166600D02* D03* X384900D02* D03* X204900Y346600D02* D03* X384900D02* D03* D27* X203091Y149479D02* D03* X187779Y164791D02* D03* X206709Y183721D02* D03* X222021Y168409D02* D03* X383091Y149479D02* D03* X367779Y164791D02* D03* X386709Y183721D02* D03* X402021Y168409D02* D03* X203091Y329479D02* D03* X187779Y344791D02* D03* X206709Y363721D02* D03* X222021Y348409D02* D03* X383091Y329479D02* D03* X367779Y344791D02* D03* X386709Y363721D02* D03* X402021Y348409D02* D03* D28* X201768Y150941D02* D03* X200376Y152333D02* D03* X198984Y153725D02* D03* X197592Y155116D02* D03* X196200Y156508D02* D03* X194808Y157900D02* D03* X193416Y159292D02* D03* X192025Y160684D02* D03* X190633Y162076D02* D03* X189241Y163468D02* D03* X208032Y182259D02* D03* X209424Y180867D02* D03* X210816Y179475D02* D03* X212208Y178084D02* D03* X213600Y176692D02* D03* X214992Y175300D02* D03* X216384Y173908D02* D03* X217775Y172516D02* D03* X219167Y171124D02* D03* X220559Y169732D02* D03* X381768Y150941D02* D03* X380376Y152333D02* D03* X378984Y153725D02* D03* X377592Y155116D02* D03* X376200Y156508D02* D03* X374808Y157900D02* D03* X373416Y159292D02* D03* X372025Y160684D02* D03* X370633Y162076D02* D03* X369241Y163468D02* D03* X388032Y182259D02* D03* X389424Y180867D02* D03* X390816Y179475D02* D03* X392208Y178084D02* D03* X393600Y176692D02* D03* X394992Y175300D02* D03* X396384Y173908D02* D03* X397775Y172516D02* D03* X399167Y171124D02* D03* X400559Y169732D02* D03* X201768Y330941D02* D03* X200376Y332333D02* D03* X198984Y333725D02* D03* X197592Y335116D02* D03* X196200Y336508D02* D03* X194808Y337900D02* D03* X193416Y339292D02* D03* X192025Y340684D02* D03* X190633Y342076D02* D03* X189241Y343468D02* D03* X208032Y362259D02* D03* X209424Y360867D02* D03* X210816Y359475D02* D03* X212208Y358084D02* D03* X213600Y356692D02* D03* X214992Y355300D02* D03* X216384Y353908D02* D03* X217775Y352516D02* D03* X219167Y351124D02* D03* X220559Y349732D02* D03* X381768Y330941D02* D03* X380376Y332333D02* D03* X378984Y333725D02* D03* X377592Y335116D02* D03* X376200Y336508D02* D03* X374808Y337900D02* D03* X373416Y339292D02* D03* X372025Y340684D02* D03* X370633Y342076D02* D03* X369241Y343468D02* D03* X388032Y362259D02* D03* X389424Y360867D02* D03* X390816Y359475D02* D03* X392208Y358084D02* D03* X393600Y356692D02* D03* X394992Y355300D02* D03* X396384Y353908D02* D03* X397775Y352516D02* D03* X399167Y351124D02* D03* X400559Y349732D02* D03* D29* X187779Y168409D02* D03* X203091Y183721D02* D03* X222021Y164791D02* D03* X367779Y168409D02* D03* X383091Y183721D02* D03* X402021Y164791D02* D03* X187779Y348409D02* D03* X203091Y363721D02* D03* X222021Y344791D02* D03* X367779Y348409D02* D03* X383091Y363721D02* D03* X402021Y344791D02* D03* D30* X189241Y169732D02* D03* X190633Y171124D02* D03* X192025Y172516D02* D03* X193416Y173908D02* D03* X194808Y175300D02* D03* X196200Y176692D02* D03* X197592Y178084D02* D03* X198984Y179475D02* D03* X200376Y180867D02* D03* X201768Y182259D02* D03* X220559Y163468D02* D03* X219167Y162076D02* D03* X217775Y160684D02* D03* X216384Y159292D02* D03* X214992Y157900D02* D03* X213600Y156508D02* D03* X212208Y155116D02* D03* X210816Y153725D02* D03* X209424Y152333D02* D03* X208032Y150941D02* D03* X369241Y169732D02* D03* X370633Y171124D02* D03* X372025Y172516D02* D03* X373416Y173908D02* D03* X374808Y175300D02* D03* X376200Y176692D02* D03* X377592Y178084D02* D03* X378984Y179475D02* D03* X380376Y180867D02* D03* X381768Y182259D02* D03* X400559Y163468D02* D03* X399167Y162076D02* D03* X397775Y160684D02* D03* X396384Y159292D02* D03* X394992Y157900D02* D03* X393600Y156508D02* D03* X392208Y155116D02* D03* X390816Y153725D02* D03* X389424Y152333D02* D03* X388032Y150941D02* D03* X189241Y349732D02* D03* X190633Y351124D02* D03* X192025Y352516D02* D03* X193416Y353908D02* D03* X194808Y355300D02* D03* X196200Y356692D02* D03* X197592Y358084D02* D03* X198984Y359475D02* D03* X200376Y360867D02* D03* X201768Y362259D02* D03* X220559Y343468D02* D03* X219167Y342076D02* D03* X217775Y340684D02* D03* X216384Y339292D02* D03* X214992Y337900D02* D03* X213600Y336508D02* D03* X212208Y335116D02* D03* X210816Y333725D02* D03* X209424Y332333D02* D03* X208032Y330941D02* D03* X369241Y349732D02* D03* X370633Y351124D02* D03* X372025Y352516D02* D03* X373416Y353908D02* D03* X374808Y355300D02* D03* X376200Y356692D02* D03* X377592Y358084D02* D03* X378984Y359475D02* D03* X380376Y360867D02* D03* X381768Y362259D02* D03* X400559Y343468D02* D03* X399167Y342076D02* D03* X397775Y340684D02* D03* X396384Y339292D02* D03* X394992Y337900D02* D03* X393600Y336508D02* D03* X392208Y335116D02* D03* X390816Y333725D02* D03* X389424Y332333D02* D03* X388032Y330941D02* D03* D31* X206709Y149479D02* D03* X386709D02* D03* X206709Y329479D02* D03* X386709D02* D03* D32* X145632Y228844D02* D03* X156656D02* D03* X145532Y248544D02* D03* X156556D02* D03* X325632Y228844D02* D03* X336656D02* D03* X325532Y248544D02* D03* X336556D02* D03* X145632Y408844D02* D03* X156656D02* D03* X145532Y428544D02* D03* X156556D02* D03* X325632Y408844D02* D03* X336656D02* D03* X325532Y428544D02* D03* X336556D02* D03* D33* X181344Y246544D02* D03* X361344D02* D03* X181344Y426544D02* D03* X361344D02* D03* D34* X169730Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* Y237587D02* D03* X192958Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* X349730Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* Y237587D02* D03* X372958Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* X169730Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* Y417587D02* D03* X192958Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* X349730Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* Y417587D02* D03* X372958Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* D35* X192958Y237587D02* D03* X372958D02* D03* X192958Y417587D02* D03* X372958D02* D03* D36* X259067Y172744D02* D03* X249421Y169004D02* D03* Y176484D02* D03* X258567Y190244D02* D03* X248921Y186504D02* D03* Y193984D02* D03* X259067Y206244D02* D03* X249421Y202504D02* D03* Y209984D02* D03* X439067Y172744D02* D03* X429421Y169004D02* D03* Y176484D02* D03* X438567Y190244D02* D03* X428921Y186504D02* D03* Y193984D02* D03* X439067Y206244D02* D03* X429421Y202504D02* D03* Y209984D02* D03* X259067Y352744D02* D03* X249421Y349004D02* D03* Y356484D02* D03* X258567Y370244D02* D03* X248921Y366504D02* D03* Y373984D02* D03* X259067Y386244D02* D03* X249421Y382504D02* D03* Y389984D02* D03* X439067Y352744D02* D03* X429421Y349004D02* D03* Y356484D02* D03* X438567Y370244D02* D03* X428921Y366504D02* D03* Y373984D02* D03* X439067Y386244D02* D03* X429421Y382504D02* D03* Y389984D02* D03* D37* X168644Y273744D02* D03* X193044Y273687D02* D03* X348644Y273744D02* D03* X373044Y273687D02* D03* X168644Y453744D02* D03* X193044Y453687D02* D03* X348644Y453744D02* D03* X373044Y453687D02* D03* D43* X177920Y328192D02* X181252D01* X179586D01* Y323194D01* X183751D02* X185417D01* X186250Y324027D01* Y325693D01* X185417Y326526D01* X183751D01* X182918Y325693D01* Y324027D01* X183751Y323194D01* X187917Y321528D02* Y326526D01* X190416D01* X191249Y325693D01* Y324027D01* X190416Y323194D01* X187917D01* X197913D02* Y328192D01* X200412D01* X201245Y327359D01* Y325693D01* X200412Y324860D01* X197913D01* X203745Y326526D02* X205411D01* X206244Y325693D01* Y323194D01* X203745D01* X202912Y324027D01* X203745Y324860D01* X206244D01* X207910Y323194D02* X210409D01* X211242Y324027D01* X210409Y324860D01* X208743D01* X207910Y325693D01* X208743Y326526D01* X211242D01* X213741Y327359D02* Y326526D01* X212908D01* X214575D01* X213741D01* Y324027D01* X214575Y323194D01* X219573D02* X217907D01* X217074Y324027D01* Y325693D01* X217907Y326526D01* X219573D01* X220406Y325693D01* Y324860D01* X217074D01* X357920Y328192D02* X361252D01* X359586D01* Y323194D01* X363751D02* X365417D01* X366250Y324027D01* Y325693D01* X365417Y326526D01* X363751D01* X362918Y325693D01* Y324027D01* X363751Y323194D01* X367916Y321528D02* Y326526D01* X370416D01* X371249Y325693D01* Y324027D01* X370416Y323194D01* X367916D01* X377913D02* Y328192D01* X380412D01* X381245Y327359D01* Y325693D01* X380412Y324860D01* X377913D01* X383745Y326526D02* X385411D01* X386244Y325693D01* Y323194D01* X383745D01* X382912Y324027D01* X383745Y324860D01* X386244D01* X387910Y323194D02* X390409D01* X391242Y324027D01* X390409Y324860D01* X388743D01* X387910Y325693D01* X388743Y326526D01* X391242D01* X393741Y327359D02* Y326526D01* X392908D01* X394574D01* X393741D01* Y324027D01* X394574Y323194D01* X399573D02* X397907D01* X397074Y324027D01* Y325693D01* X397907Y326526D01* X399573D01* X400406Y325693D01* Y324860D01* X397074D01* X177920Y508192D02* X181252D01* X179586D01* Y503194D01* X183751D02* X185417D01* X186250Y504027D01* Y505693D01* X185417Y506526D01* X183751D01* X182918Y505693D01* Y504027D01* X183751Y503194D01* X187917Y501528D02* Y506526D01* X190416D01* X191249Y505693D01* Y504027D01* X190416Y503194D01* X187917D01* X197913D02* Y508192D01* X200412D01* X201245Y507359D01* Y505693D01* X200412Y504860D01* X197913D01* X203745Y506526D02* X205411D01* X206244Y505693D01* Y503194D01* X203745D01* X202912Y504027D01* X203745Y504860D01* X206244D01* X207910Y503194D02* X210409D01* X211242Y504027D01* X210409Y504860D01* X208743D01* X207910Y505693D01* X208743Y506526D01* X211242D01* X213741Y507359D02* Y506526D01* X212908D01* X214575D01* X213741D01* Y504027D01* X214575Y503194D01* X219573D02* X217907D01* X217074Y504027D01* Y505693D01* X217907Y506526D01* X219573D01* X220406Y505693D01* Y504860D01* X217074D01* X357920Y508192D02* X361252D01* X359586D01* Y503194D01* X363751D02* X365417D01* X366250Y504027D01* Y505693D01* X365417Y506526D01* X363751D01* X362918Y505693D01* Y504027D01* X363751Y503194D01* X367916Y501528D02* Y506526D01* X370416D01* X371249Y505693D01* Y504027D01* X370416Y503194D01* X367916D01* X377913D02* Y508192D01* X380412D01* X381245Y507359D01* Y505693D01* X380412Y504860D01* X377913D01* X383745Y506526D02* X385411D01* X386244Y505693D01* Y503194D01* X383745D01* X382912Y504027D01* X383745Y504860D01* X386244D01* X387910Y503194D02* X390409D01* X391242Y504027D01* X390409Y504860D01* X388743D01* X387910Y505693D01* X388743Y506526D01* X391242D01* X393741Y507359D02* Y506526D01* X392908D01* X394574D01* X393741D01* Y504027D01* X394574Y503194D01* X399573D02* X397907D01* X397074Y504027D01* Y505693D01* X397907Y506526D01* X399573D01* X400406Y505693D01* Y504860D01* X397074D01* M02* ================================================ FILE: hardware/panel.GTS ================================================ G04 Layer_Color=8388736* %FSLAX25Y25*% %MOIN*% G70* G01* G75* %ADD43C,0.00800*% %ADD71R,0.04343X0.03950*% G04:AMPARAMS|DCode=72|XSize=39.5mil|YSize=43.43mil|CornerRadius=11.87mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD72* 21,1,0.03950,0.01969,0,0,270.0* 21,1,0.01575,0.04343,0,0,270.0* 1,1,0.02375,-0.00984,-0.00787* 1,1,0.02375,-0.00984,0.00787* 1,1,0.02375,0.00984,0.00787* 1,1,0.02375,0.00984,-0.00787* % %ADD72ROUNDEDRECTD72*% %ADD73R,0.07887X0.04737*% %ADD74R,0.04147X0.03950*% %ADD75R,0.07690X0.02375*% %ADD76R,0.10249X0.05524*% %ADD77R,0.13005X0.05524*% %ADD78R,0.05524X0.07887*% G04:AMPARAMS|DCode=79|XSize=39.5mil|YSize=39.5mil|CornerRadius=11.87mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD79* 21,1,0.03950,0.01575,0,0,90.0* 21,1,0.01575,0.03950,0,0,90.0* 1,1,0.02375,0.00787,0.00787* 1,1,0.02375,0.00787,-0.00787* 1,1,0.02375,-0.00787,-0.00787* 1,1,0.02375,-0.00787,0.00787* % %ADD79ROUNDEDRECTD79*% %ADD80R,0.03950X0.03950*% G04:AMPARAMS|DCode=81|XSize=35.56mil|YSize=59.18mil|CornerRadius=10.89mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=90.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD81* 21,1,0.03556,0.03740,0,0,90.0* 21,1,0.01378,0.05918,0,0,90.0* 1,1,0.02178,0.01870,0.00689* 1,1,0.02178,0.01870,-0.00689* 1,1,0.02178,-0.01870,-0.00689* 1,1,0.02178,-0.01870,0.00689* % %ADD81ROUNDEDRECTD81*% %ADD82R,0.05918X0.03556*% G04:AMPARAMS|DCode=83|XSize=31.62mil|YSize=43.43mil|CornerRadius=9.91mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=270.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD83* 21,1,0.03162,0.02362,0,0,270.0* 21,1,0.01181,0.04343,0,0,270.0* 1,1,0.01981,-0.01181,-0.00591* 1,1,0.01981,-0.01181,0.00591* 1,1,0.01981,0.01181,0.00591* 1,1,0.01981,0.01181,-0.00591* % %ADD83ROUNDEDRECTD83*% %ADD84R,0.04343X0.03162*% %ADD85R,0.04343X0.03753*% G04:AMPARAMS|DCode=86|XSize=86.74mil|YSize=47.37mil|CornerRadius=13.84mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD86* 21,1,0.08674,0.01969,0,0,0.0* 21,1,0.05906,0.04737,0,0,0.0* 1,1,0.02769,0.02953,-0.00984* 1,1,0.02769,-0.02953,-0.00984* 1,1,0.02769,-0.02953,0.00984* 1,1,0.02769,0.02953,0.00984* % %ADD86ROUNDEDRECTD86*% %ADD87P,0.29805X4X180.0*% G04:AMPARAMS|DCode=88|XSize=17.84mil|YSize=41.47mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=135.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD88* 21,1,0.02362,0.01784,0.00000,0.00000,225.0* 1,1,0.01784,0.00835,0.00835* 1,1,0.01784,-0.00835,-0.00835* % %ADD88OVALD88*% G04:AMPARAMS|DCode=89|XSize=17.84mil|YSize=43.43mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=135.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD89* 21,1,0.02559,0.01784,0.00000,0.00000,225.0* 1,1,0.01784,0.00905,0.00905* 1,1,0.01784,-0.00905,-0.00905* % %ADD89OVALD89*% G04:AMPARAMS|DCode=90|XSize=17.84mil|YSize=41.47mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD90* 21,1,0.02362,0.01784,0.00000,0.00000,315.0* 1,1,0.01784,-0.00835,0.00835* 1,1,0.01784,0.00835,-0.00835* % %ADD90OVALD90*% G04:AMPARAMS|DCode=91|XSize=17.84mil|YSize=43.43mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Round|* %AMOVALD91* 21,1,0.02559,0.01784,0.00000,0.00000,315.0* 1,1,0.01784,-0.00905,0.00905* 1,1,0.01784,0.00905,-0.00905* % %ADD91OVALD91*% G04:AMPARAMS|DCode=92|XSize=17.84mil|YSize=41.47mil|CornerRadius=6.46mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=225.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=RoundedRectangle|* %AMROUNDEDRECTD92* 21,1,0.01784,0.02854,0,0,225.0* 21,1,0.00492,0.04147,0,0,225.0* 1,1,0.01292,-0.01183,0.00835* 1,1,0.01292,-0.00835,0.01183* 1,1,0.01292,0.01183,-0.00835* 1,1,0.01292,0.00835,-0.01183* % %ADD92ROUNDEDRECTD92*% %ADD93R,0.04737X0.07493*% %ADD94R,0.12611X0.12611*% %ADD95O,0.06312X0.02572*% %ADD96R,0.06312X0.02572*% %ADD97R,0.04540X0.03556*% %ADD98R,0.13300X0.05300*% %ADD99C,0.01800*% %ADD100O,0.05524X0.10249*% %ADD101O,0.06902X0.04343*% %ADD102O,0.04540X0.05721*% %ADD103C,0.07800*% %ADD104R,0.07800X0.07800*% %ADD105C,0.04800*% %ADD106R,0.04800X0.04800*% %ADD107R,0.07800X0.07800*% %ADD108C,0.08674*% D43* X171120Y329692D02* X174452D01* X172786D01* Y324694D01* X176951D02* X178617D01* X179450Y325527D01* Y327193D01* X178617Y328026D01* X176951D01* X176118Y327193D01* Y325527D01* X176951Y324694D01* X181116Y323028D02* Y328026D01* X183616D01* X184449Y327193D01* Y325527D01* X183616Y324694D01* X181116D01* X194446Y328859D02* X193612Y329692D01* X191946D01* X191113Y328859D01* Y328026D01* X191946Y327193D01* X193612D01* X194446Y326360D01* Y325527D01* X193612Y324694D01* X191946D01* X191113Y325527D01* X196945Y324694D02* X198611D01* X199444Y325527D01* Y327193D01* X198611Y328026D01* X196945D01* X196112Y327193D01* Y325527D01* X196945Y324694D01* X201110D02* X202776D01* X201943D01* Y329692D01* X201110D01* X208608D02* Y324694D01* X206108D01* X205275Y325527D01* Y327193D01* X206108Y328026D01* X208608D01* X212773Y324694D02* X211107D01* X210274Y325527D01* Y327193D01* X211107Y328026D01* X212773D01* X213606Y327193D01* Y326360D01* X210274D01* X215272Y328026D02* Y324694D01* Y326360D01* X216105Y327193D01* X216938Y328026D01* X217771D01* X351120Y329692D02* X354452D01* X352786D01* Y324694D01* X356951D02* X358617D01* X359450Y325527D01* Y327193D01* X358617Y328026D01* X356951D01* X356118Y327193D01* Y325527D01* X356951Y324694D01* X361116Y323028D02* Y328026D01* X363616D01* X364449Y327193D01* Y325527D01* X363616Y324694D01* X361116D01* X374446Y328859D02* X373612Y329692D01* X371946D01* X371113Y328859D01* Y328026D01* X371946Y327193D01* X373612D01* X374446Y326360D01* Y325527D01* X373612Y324694D01* X371946D01* X371113Y325527D01* X376945Y324694D02* X378611D01* X379444Y325527D01* Y327193D01* X378611Y328026D01* X376945D01* X376112Y327193D01* Y325527D01* X376945Y324694D01* X381110D02* X382776D01* X381943D01* Y329692D01* X381110D01* X388608D02* Y324694D01* X386108D01* X385275Y325527D01* Y327193D01* X386108Y328026D01* X388608D01* X392773Y324694D02* X391107D01* X390274Y325527D01* Y327193D01* X391107Y328026D01* X392773D01* X393606Y327193D01* Y326360D01* X390274D01* X395272Y328026D02* Y324694D01* Y326360D01* X396105Y327193D01* X396938Y328026D01* X397771D01* X171120Y509692D02* X174452D01* X172786D01* Y504694D01* X176951D02* X178617D01* X179450Y505527D01* Y507193D01* X178617Y508026D01* X176951D01* X176118Y507193D01* Y505527D01* X176951Y504694D01* X181116Y503028D02* Y508026D01* X183616D01* X184449Y507193D01* Y505527D01* X183616Y504694D01* X181116D01* X194446Y508859D02* X193612Y509692D01* X191946D01* X191113Y508859D01* Y508026D01* X191946Y507193D01* X193612D01* X194446Y506360D01* Y505527D01* X193612Y504694D01* X191946D01* X191113Y505527D01* X196945Y504694D02* X198611D01* X199444Y505527D01* Y507193D01* X198611Y508026D01* X196945D01* X196112Y507193D01* Y505527D01* X196945Y504694D01* X201110D02* X202776D01* X201943D01* Y509692D01* X201110D01* X208608D02* Y504694D01* X206108D01* X205275Y505527D01* Y507193D01* X206108Y508026D01* X208608D01* X212773Y504694D02* X211107D01* X210274Y505527D01* Y507193D01* X211107Y508026D01* X212773D01* X213606Y507193D01* Y506360D01* X210274D01* X215272Y508026D02* Y504694D01* Y506360D01* X216105Y507193D01* X216938Y508026D01* X217771D01* X351120Y509692D02* X354452D01* X352786D01* Y504694D01* X356951D02* X358617D01* X359450Y505527D01* Y507193D01* X358617Y508026D01* X356951D01* X356118Y507193D01* Y505527D01* X356951Y504694D01* X361116Y503028D02* Y508026D01* X363616D01* X364449Y507193D01* Y505527D01* X363616Y504694D01* X361116D01* X374446Y508859D02* X373612Y509692D01* X371946D01* X371113Y508859D01* Y508026D01* X371946Y507193D01* X373612D01* X374446Y506360D01* Y505527D01* X373612Y504694D01* X371946D01* X371113Y505527D01* X376945Y504694D02* X378611D01* X379444Y505527D01* Y507193D01* X378611Y508026D01* X376945D01* X376112Y507193D01* Y505527D01* X376945Y504694D01* X381110D02* X382776D01* X381943D01* Y509692D01* X381110D01* X388608D02* Y504694D01* X386108D01* X385275Y505527D01* Y507193D01* X386108Y508026D01* X388608D01* X392773Y504694D02* X391107D01* X390274Y505527D01* Y507193D01* X391107Y508026D01* X392773D01* X393606Y507193D01* Y506360D01* X390274D01* X395272Y508026D02* Y504694D01* Y506360D01* X396105Y507193D01* X396938Y508026D01* X397771D01* D71* X246583Y246681D02* D03* X255244Y250618D02* D03* X426583Y246681D02* D03* X435244Y250618D02* D03* X246583Y426681D02* D03* X255244Y430618D02* D03* X426583Y426681D02* D03* X435244Y430618D02* D03* D72* X255244Y242744D02* D03* X435244D02* D03* X255244Y422744D02* D03* X435244D02* D03* D73* X230157Y154000D02* D03* Y144157D02* D03* X410157Y154000D02* D03* Y144157D02* D03* X230157Y334000D02* D03* Y324157D02* D03* X410157Y334000D02* D03* Y324157D02* D03* D74* X178705Y230244D02* D03* X173783D02* D03* X242618Y144000D02* D03* X237697D02* D03* X242618Y154000D02* D03* X237697D02* D03* X358705Y230244D02* D03* X353783D02* D03* X422618Y144000D02* D03* X417697D02* D03* X422618Y154000D02* D03* X417697D02* D03* X178705Y410244D02* D03* X173783D02* D03* X242618Y324000D02* D03* X237697D02* D03* X242618Y334000D02* D03* X237697D02* D03* X358705Y410244D02* D03* X353783D02* D03* X422618Y324000D02* D03* X417697D02* D03* X422618Y334000D02* D03* X417697D02* D03* D75* X143244Y200862D02* D03* Y198303D02* D03* Y195744D02* D03* Y190626D02* D03* Y193185D02* D03* X323244Y200862D02* D03* Y198303D02* D03* Y195744D02* D03* Y190626D02* D03* Y193185D02* D03* X143244Y380862D02* D03* Y378303D02* D03* Y375744D02* D03* Y370626D02* D03* Y373185D02* D03* X323244Y380862D02* D03* Y378303D02* D03* Y375744D02* D03* Y370626D02* D03* Y373185D02* D03* D76* X131433Y200075D02* D03* Y192201D02* D03* X311433Y200075D02* D03* Y192201D02* D03* X131433Y380075D02* D03* Y372201D02* D03* X311433Y380075D02* D03* Y372201D02* D03* D77* X134344Y183944D02* D03* Y207244D02* D03* X314344Y183944D02* D03* Y207244D02* D03* X134344Y363944D02* D03* Y387244D02* D03* X314344Y363944D02* D03* Y387244D02* D03* D78* X143944Y184344D02* D03* X144057Y207187D02* D03* X323944Y184344D02* D03* X324057Y207187D02* D03* X143944Y364344D02* D03* X144057Y387187D02* D03* X323944Y364344D02* D03* X324057Y387187D02* D03* D79* X159744Y181244D02* D03* X169000Y157000D02* D03* X339744Y181244D02* D03* X349000Y157000D02* D03* X159744Y361244D02* D03* X169000Y337000D02* D03* X339744Y361244D02* D03* X349000Y337000D02* D03* D80* X165650Y181244D02* D03* X174906Y157000D02* D03* X345650Y181244D02* D03* X354906Y157000D02* D03* X165650Y361244D02* D03* X174906Y337000D02* D03* X345650Y361244D02* D03* X354906Y337000D02* D03* D81* X157920Y196084D02* D03* X337920D02* D03* X157920Y376084D02* D03* X337920D02* D03* D82* X157920Y192344D02* D03* Y188604D02* D03* X167368D02* D03* Y192344D02* D03* Y196084D02* D03* X337920Y192344D02* D03* Y188604D02* D03* X347368D02* D03* Y192344D02* D03* Y196084D02* D03* X157920Y372344D02* D03* Y368604D02* D03* X167368D02* D03* Y372344D02* D03* Y376084D02* D03* X337920Y372344D02* D03* Y368604D02* D03* X347368D02* D03* Y372344D02* D03* Y376084D02* D03* D83* X253824Y223760D02* D03* X433824D02* D03* X253824Y403760D02* D03* X433824D02* D03* D84* X253824Y227500D02* D03* Y231240D02* D03* X244376D02* D03* Y223760D02* D03* X433824Y227500D02* D03* Y231240D02* D03* X424376D02* D03* Y223760D02* D03* X253824Y407500D02* D03* Y411240D02* D03* X244376D02* D03* Y403760D02* D03* X433824Y407500D02* D03* Y411240D02* D03* X424376D02* D03* Y403760D02* D03* D85* X237600Y224843D02* D03* Y230157D02* D03* Y241157D02* D03* Y235843D02* D03* X417600Y224843D02* D03* Y230157D02* D03* Y241157D02* D03* Y235843D02* D03* X237600Y404843D02* D03* Y410157D02* D03* Y421157D02* D03* Y415843D02* D03* X417600Y404843D02* D03* Y410157D02* D03* Y421157D02* D03* Y415843D02* D03* D86* X158744Y207744D02* D03* X174886D02* D03* X158744Y214043D02* D03* X174744D02* D03* X199244Y128945D02* D03* X215244D02* D03* X199102Y135244D02* D03* X215244D02* D03* X164744Y128945D02* D03* X180744D02* D03* X164602Y135244D02* D03* X180744D02* D03* X250744D02* D03* X234602D02* D03* X250744Y128945D02* D03* X234744D02* D03* X338744Y207744D02* D03* X354886D02* D03* X338744Y214043D02* D03* X354744D02* D03* X379244Y128945D02* D03* X395244D02* D03* X379102Y135244D02* D03* X395244D02* D03* X344744Y128945D02* D03* X360744D02* D03* X344602Y135244D02* D03* X360744D02* D03* X430744D02* D03* X414602D02* D03* X430744Y128945D02* D03* X414744D02* D03* X158744Y387744D02* D03* X174886D02* D03* X158744Y394043D02* D03* X174744D02* D03* X199244Y308945D02* D03* X215244D02* D03* X199102Y315244D02* D03* X215244D02* D03* X164744Y308945D02* D03* X180744D02* D03* X164602Y315244D02* D03* X180744D02* D03* X250744D02* D03* X234602D02* D03* X250744Y308945D02* D03* X234744D02* D03* X338744Y387744D02* D03* X354886D02* D03* X338744Y394043D02* D03* X354744D02* D03* X379244Y308945D02* D03* X395244D02* D03* X379102Y315244D02* D03* X395244D02* D03* X344744Y308945D02* D03* X360744D02* D03* X344602Y315244D02* D03* X360744D02* D03* X430744D02* D03* X414602D02* D03* X430744Y308945D02* D03* X414744D02* D03* D87* X204900Y166600D02* D03* X384900D02* D03* X204900Y346600D02* D03* X384900D02* D03* D88* X203091Y149479D02* D03* X187779Y164791D02* D03* X206709Y183721D02* D03* X222021Y168409D02* D03* X383091Y149479D02* D03* X367779Y164791D02* D03* X386709Y183721D02* D03* X402021Y168409D02* D03* X203091Y329479D02* D03* X187779Y344791D02* D03* X206709Y363721D02* D03* X222021Y348409D02* D03* X383091Y329479D02* D03* X367779Y344791D02* D03* X386709Y363721D02* D03* X402021Y348409D02* D03* D89* X201768Y150941D02* D03* X200376Y152333D02* D03* X198984Y153725D02* D03* X197592Y155116D02* D03* X196200Y156508D02* D03* X194808Y157900D02* D03* X193416Y159292D02* D03* X192025Y160684D02* D03* X190633Y162076D02* D03* X189241Y163468D02* D03* X208032Y182259D02* D03* X209424Y180867D02* D03* X210816Y179475D02* D03* X212208Y178084D02* D03* X213600Y176692D02* D03* X214992Y175300D02* D03* X216384Y173908D02* D03* X217775Y172516D02* D03* X219167Y171124D02* D03* X220559Y169732D02* D03* X381768Y150941D02* D03* X380376Y152333D02* D03* X378984Y153725D02* D03* X377592Y155116D02* D03* X376200Y156508D02* D03* X374808Y157900D02* D03* X373416Y159292D02* D03* X372025Y160684D02* D03* X370633Y162076D02* D03* X369241Y163468D02* D03* X388032Y182259D02* D03* X389424Y180867D02* D03* X390816Y179475D02* D03* X392208Y178084D02* D03* X393600Y176692D02* D03* X394992Y175300D02* D03* X396384Y173908D02* D03* X397775Y172516D02* D03* X399167Y171124D02* D03* X400559Y169732D02* D03* X201768Y330941D02* D03* X200376Y332333D02* D03* X198984Y333725D02* D03* X197592Y335116D02* D03* X196200Y336508D02* D03* X194808Y337900D02* D03* X193416Y339292D02* D03* X192025Y340684D02* D03* X190633Y342076D02* D03* X189241Y343468D02* D03* X208032Y362259D02* D03* X209424Y360867D02* D03* X210816Y359475D02* D03* X212208Y358084D02* D03* X213600Y356692D02* D03* X214992Y355300D02* D03* X216384Y353908D02* D03* X217775Y352516D02* D03* X219167Y351124D02* D03* X220559Y349732D02* D03* X381768Y330941D02* D03* X380376Y332333D02* D03* X378984Y333725D02* D03* X377592Y335116D02* D03* X376200Y336508D02* D03* X374808Y337900D02* D03* X373416Y339292D02* D03* X372025Y340684D02* D03* X370633Y342076D02* D03* X369241Y343468D02* D03* X388032Y362259D02* D03* X389424Y360867D02* D03* X390816Y359475D02* D03* X392208Y358084D02* D03* X393600Y356692D02* D03* X394992Y355300D02* D03* X396384Y353908D02* D03* X397775Y352516D02* D03* X399167Y351124D02* D03* X400559Y349732D02* D03* D90* X187779Y168409D02* D03* X203091Y183721D02* D03* X222021Y164791D02* D03* X367779Y168409D02* D03* X383091Y183721D02* D03* X402021Y164791D02* D03* X187779Y348409D02* D03* X203091Y363721D02* D03* X222021Y344791D02* D03* X367779Y348409D02* D03* X383091Y363721D02* D03* X402021Y344791D02* D03* D91* X189241Y169732D02* D03* X190633Y171124D02* D03* X192025Y172516D02* D03* X193416Y173908D02* D03* X194808Y175300D02* D03* X196200Y176692D02* D03* X197592Y178084D02* D03* X198984Y179475D02* D03* X200376Y180867D02* D03* X201768Y182259D02* D03* X220559Y163468D02* D03* X219167Y162076D02* D03* X217775Y160684D02* D03* X216384Y159292D02* D03* X214992Y157900D02* D03* X213600Y156508D02* D03* X212208Y155116D02* D03* X210816Y153725D02* D03* X209424Y152333D02* D03* X208032Y150941D02* D03* X369241Y169732D02* D03* X370633Y171124D02* D03* X372025Y172516D02* D03* X373416Y173908D02* D03* X374808Y175300D02* D03* X376200Y176692D02* D03* X377592Y178084D02* D03* X378984Y179475D02* D03* X380376Y180867D02* D03* X381768Y182259D02* D03* X400559Y163468D02* D03* X399167Y162076D02* D03* X397775Y160684D02* D03* X396384Y159292D02* D03* X394992Y157900D02* D03* X393600Y156508D02* D03* X392208Y155116D02* D03* X390816Y153725D02* D03* X389424Y152333D02* D03* X388032Y150941D02* D03* X189241Y349732D02* D03* X190633Y351124D02* D03* X192025Y352516D02* D03* X193416Y353908D02* D03* X194808Y355300D02* D03* X196200Y356692D02* D03* X197592Y358084D02* D03* X198984Y359475D02* D03* X200376Y360867D02* D03* X201768Y362259D02* D03* X220559Y343468D02* D03* X219167Y342076D02* D03* X217775Y340684D02* D03* X216384Y339292D02* D03* X214992Y337900D02* D03* X213600Y336508D02* D03* X212208Y335116D02* D03* X210816Y333725D02* D03* X209424Y332333D02* D03* X208032Y330941D02* D03* X369241Y349732D02* D03* X370633Y351124D02* D03* X372025Y352516D02* D03* X373416Y353908D02* D03* X374808Y355300D02* D03* X376200Y356692D02* D03* X377592Y358084D02* D03* X378984Y359475D02* D03* X380376Y360867D02* D03* X381768Y362259D02* D03* X400559Y343468D02* D03* X399167Y342076D02* D03* X397775Y340684D02* D03* X396384Y339292D02* D03* X394992Y337900D02* D03* X393600Y336508D02* D03* X392208Y335116D02* D03* X390816Y333725D02* D03* X389424Y332333D02* D03* X388032Y330941D02* D03* D92* X206709Y149479D02* D03* X386709D02* D03* X206709Y329479D02* D03* X386709D02* D03* D93* X145632Y228844D02* D03* X156656D02* D03* X145532Y248544D02* D03* X156556D02* D03* X325632Y228844D02* D03* X336656D02* D03* X325532Y248544D02* D03* X336556D02* D03* X145632Y408844D02* D03* X156656D02* D03* X145532Y428544D02* D03* X156556D02* D03* X325632Y408844D02* D03* X336656D02* D03* X325532Y428544D02* D03* X336556D02* D03* D94* X181344Y246544D02* D03* X361344D02* D03* X181344Y426544D02* D03* X361344D02* D03* D95* X169730Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* Y237587D02* D03* X192958Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* X349730Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* Y237587D02* D03* X372958Y255501D02* D03* Y252942D02* D03* Y250383D02* D03* Y247824D02* D03* Y245265D02* D03* Y242706D02* D03* Y240146D02* D03* X169730Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* Y417587D02* D03* X192958Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* X349730Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* Y417587D02* D03* X372958Y435501D02* D03* Y432942D02* D03* Y430383D02* D03* Y427824D02* D03* Y425265D02* D03* Y422706D02* D03* Y420146D02* D03* D96* X192958Y237587D02* D03* X372958D02* D03* X192958Y417587D02* D03* X372958D02* D03* D97* X259067Y172744D02* D03* X249421Y169004D02* D03* Y176484D02* D03* X258567Y190244D02* D03* X248921Y186504D02* D03* Y193984D02* D03* X259067Y206244D02* D03* X249421Y202504D02* D03* Y209984D02* D03* X439067Y172744D02* D03* X429421Y169004D02* D03* Y176484D02* D03* X438567Y190244D02* D03* X428921Y186504D02* D03* Y193984D02* D03* X439067Y206244D02* D03* X429421Y202504D02* D03* Y209984D02* D03* X259067Y352744D02* D03* X249421Y349004D02* D03* Y356484D02* D03* X258567Y370244D02* D03* X248921Y366504D02* D03* Y373984D02* D03* X259067Y386244D02* D03* X249421Y382504D02* D03* Y389984D02* D03* X439067Y352744D02* D03* X429421Y349004D02* D03* Y356484D02* D03* X438567Y370244D02* D03* X428921Y366504D02* D03* Y373984D02* D03* X439067Y386244D02* D03* X429421Y382504D02* D03* Y389984D02* D03* D98* X168644Y273744D02* D03* X193044Y273687D02* D03* X348644Y273744D02* D03* X373044Y273687D02* D03* X168644Y453744D02* D03* X193044Y453687D02* D03* X348644Y453744D02* D03* X373044Y453687D02* D03* D99* X125000Y260000D02* D03* Y265000D02* D03* Y255000D02* D03* Y250000D02* D03* Y245000D02* D03* Y240000D02* D03* X124600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X290600Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X305100Y150000D02* D03* Y155000D02* D03* Y160000D02* D03* Y165000D02* D03* Y175000D02* D03* Y170000D02* D03* X291400Y229800D02* D03* Y234800D02* D03* Y239800D02* D03* Y244800D02* D03* Y254800D02* D03* Y249800D02* D03* X304800Y229300D02* D03* Y234300D02* D03* Y239300D02* D03* Y244300D02* D03* Y254300D02* D03* Y249300D02* D03* X125200Y409200D02* D03* Y414200D02* D03* Y419200D02* D03* Y424200D02* D03* Y434200D02* D03* Y429200D02* D03* X291200Y338300D02* D03* Y343300D02* D03* Y348300D02* D03* Y353300D02* D03* Y363300D02* D03* Y358300D02* D03* X291000Y404100D02* D03* Y409100D02* D03* Y414100D02* D03* Y419100D02* D03* Y429100D02* D03* Y424100D02* D03* X304900Y404500D02* D03* Y409500D02* D03* Y414500D02* D03* Y419500D02* D03* Y429500D02* D03* Y424500D02* D03* X304700Y338200D02* D03* Y343200D02* D03* Y348200D02* D03* Y353200D02* D03* Y363200D02* D03* Y358200D02* D03* X471200Y401400D02* D03* Y406400D02* D03* Y411400D02* D03* Y416400D02* D03* Y426400D02* D03* Y421400D02* D03* X471600Y339500D02* D03* Y344500D02* D03* Y349500D02* D03* Y354500D02* D03* Y364500D02* D03* Y359500D02* D03* Y216100D02* D03* Y221100D02* D03* Y226100D02* D03* Y231100D02* D03* Y241100D02* D03* Y236100D02* D03* X470600Y152500D02* D03* Y157500D02* D03* Y162500D02* D03* Y167500D02* D03* Y177500D02* D03* Y172500D02* D03* X443700Y124400D02* D03* X438700D02* D03* X433700D02* D03* X428700D02* D03* X418700D02* D03* X423700D02* D03* X357000Y124000D02* D03* X352000D02* D03* X347000D02* D03* X342000D02* D03* X332000D02* D03* X337000D02* D03* X360500Y289900D02* D03* X355500D02* D03* X350500D02* D03* X345500D02* D03* X335500D02* D03* X340500D02* D03* X432500Y290100D02* D03* X427500D02* D03* X422500D02* D03* X417500D02* D03* X407500D02* D03* X412500D02* D03* X431400Y303700D02* D03* X426400D02* D03* X421400D02* D03* X416400D02* D03* X406400D02* D03* X411400D02* D03* X360600Y304500D02* D03* X355600D02* D03* X350600D02* D03* X345600D02* D03* X335600D02* D03* X340600D02* D03* X365000Y469600D02* D03* X360000D02* D03* X355000D02* D03* X350000D02* D03* X340000D02* D03* X345000D02* D03* X435000D02* D03* X430000D02* D03* X425000D02* D03* X420000D02* D03* X410000D02* D03* X415000D02* D03* X252600D02* D03* X247600D02* D03* X242600D02* D03* X237600D02* D03* X227600D02* D03* X232600D02* D03* X183200Y469800D02* D03* X178200D02* D03* X173200D02* D03* X168200D02* D03* X158200D02* D03* X163200D02* D03* X175500Y303900D02* D03* X170500D02* D03* X165500D02* D03* X160500D02* D03* X150500D02* D03* X155500D02* D03* X175700Y290100D02* D03* X170700D02* D03* X165700D02* D03* X160700D02* D03* X150700D02* D03* X155700D02* D03* X260900Y303300D02* D03* X255900D02* D03* X250900D02* D03* X245900D02* D03* X235900D02* D03* X240900D02* D03* X261100Y290100D02* D03* X256100D02* D03* X251100D02* D03* X246100D02* D03* X236100D02* D03* X241100D02* D03* X261300Y123800D02* D03* X256300D02* D03* X251300D02* D03* X246300D02* D03* X236300D02* D03* X241300D02* D03* X180500Y124000D02* D03* X175500D02* D03* X170500D02* D03* X165500D02* D03* X155500D02* D03* X160500D02* D03* X125100Y351700D02* D03* Y356700D02* D03* Y346700D02* D03* Y341700D02* D03* Y336700D02* D03* Y331700D02* D03* D100* X147744Y146744D02* D03* X269791D02* D03* Y268791D02* D03* X147744D02* D03* X327744Y146744D02* D03* X449791D02* D03* Y268791D02* D03* X327744D02* D03* X147744Y326744D02* D03* X269791D02* D03* Y448791D02* D03* X147744D02* D03* X327744Y326744D02* D03* X449791D02* D03* Y448791D02* D03* X327744D02* D03* D101* X133008Y181964D02* D03* Y209524D02* D03* X313008Y181964D02* D03* Y209524D02* D03* X133008Y361964D02* D03* Y389524D02* D03* X313008Y361964D02* D03* Y389524D02* D03* D102* X144031Y185901D02* D03* Y205587D02* D03* X324031Y185901D02* D03* Y205587D02* D03* X144031Y365901D02* D03* Y385587D02* D03* X324031Y365901D02* D03* Y385587D02* D03* D103* X132044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X235244Y252744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X312044Y222344D02* D03* Y232344D02* D03* Y242344D02* D03* X415244Y252744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y171200D02* D03* Y181200D02* D03* Y191200D02* D03* Y201200D02* D03* Y211200D02* D03* Y221200D02* D03* Y231200D02* D03* Y241200D02* D03* Y251200D02* D03* X132044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X235244Y432744D02* D03* X225244D02* D03* X215244D02* D03* X283500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* X312044Y402344D02* D03* Y412344D02* D03* Y422344D02* D03* X415244Y432744D02* D03* X405244D02* D03* X395244D02* D03* X463500Y351200D02* D03* Y361200D02* D03* Y371200D02* D03* Y381200D02* D03* Y391200D02* D03* Y401200D02* D03* Y411200D02* D03* Y421200D02* D03* Y431200D02* D03* D104* X132044Y252344D02* D03* X312044D02* D03* X132044Y432344D02* D03* X312044D02* D03* D105* X141744Y166744D02* D03* Y171744D02* D03* X146744Y166744D02* D03* Y171744D02* D03* X151744Y166744D02* D03* Y171744D02* D03* X156744Y166744D02* D03* Y171744D02* D03* X161744Y166744D02* D03* X321744D02* D03* Y171744D02* D03* X326744Y166744D02* D03* Y171744D02* D03* X331744Y166744D02* D03* Y171744D02* D03* X336744Y166744D02* D03* Y171744D02* D03* X341744Y166744D02* D03* X141744Y346744D02* D03* Y351744D02* D03* X146744Y346744D02* D03* Y351744D02* D03* X151744Y346744D02* D03* Y351744D02* D03* X156744Y346744D02* D03* Y351744D02* D03* X161744Y346744D02* D03* X321744D02* D03* Y351744D02* D03* X326744Y346744D02* D03* Y351744D02* D03* X331744Y346744D02* D03* Y351744D02* D03* X336744Y346744D02* D03* Y351744D02* D03* X341744Y346744D02* D03* D106* X161744Y171744D02* D03* X341744D02* D03* X161744Y351744D02* D03* X341744D02* D03* D107* X205244Y252744D02* D03* X283500Y161200D02* D03* X385244Y252744D02* D03* X463500Y161200D02* D03* X205244Y432744D02* D03* X283500Y341200D02* D03* X385244Y432744D02* D03* X463500Y341200D02* D03* D108* X235744Y276244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* X235744Y456244D02* D03* X215744D02* D03* X415744D02* D03* X395744D02* D03* M02* ================================================ FILE: hardware/panel.LDP ================================================ Layer Pairs Export File for PCB: C:\Users\TSTERN\Google Drive\projects\Stepper_feedback\hardware\NZS_A4954_R2.0\panel.PcbDoc LayersSetName=Top_Bot_Thru_Holes|DrillFile=panel-roundholes.txt|DrillLayers=gtl,gbl LayersSetName=Top_Bot_Slot_Holes|DrillFile=panel-slotholes.txt|DrillLayers=gtl,gbl ================================================ FILE: hardware/panel.REP ================================================ ************************************************************* FileName = panel.GBR AutoAperture = True ************************************************************* Generating : Top Layer File : panel.GTL Adding Layer : Top Layer Adding Layer : Multi-Layer Used DCodes : D10 D11 D12 D13 D14 D15 D16 D17 D18 D19 D20 D21 D22 D23 D24 D25 D26 D27 D28 D29 D30 D31 D32 D33 D34 D35 D36 D37 D38 D39 D40 D41 D42 D43 D44 D45 D46 D47 D48 D49 D50 D51 D52 D53 D54 D55 D56 D57 D58 D59 D60 ************************************************************* ************************************************************* Generating : Bottom Layer File : panel.GBL Adding Layer : Bottom Layer Adding Layer : Multi-Layer Used DCodes : D13 D24 D38 D40 D41 D43 D48 D49 D50 D51 D52 D53 D54 D55 D56 D57 D58 D59 D60 D61 D62 D63 D64 D65 D66 ************************************************************* ************************************************************* Generating : Bottom Pad Master File : panel.GPB Adding Layer : Bottom Layer Adding Layer : Multi-Layer Used DCodes : D13 D24 D49 D50 D51 D52 D53 D54 D55 D56 D57 D58 D61 D62 D63 D64 D65 D66 ************************************************************* ************************************************************* Generating : Top Pad Master File : panel.GPT Adding Layer : Top Layer Adding Layer : Multi-Layer Used DCodes : D10 D11 D12 D13 D14 D15 D16 D17 D18 D19 D20 D21 D22 D23 D24 D25 D26 D27 D28 D29 D30 D31 D32 D33 D34 D35 D36 D37 D49 D50 D51 D52 D53 D54 D55 D56 D57 D58 ************************************************************* ************************************************************* Generating : Top Overlay File : panel.GTO Adding Layer : Top Overlay Used DCodes : D43 D45 D67 D68 D69 D70 ************************************************************* ************************************************************* Generating : Top Paste File : panel.GTP Adding Layer : Top Paste Adding Layer : Top Layer Adding Layer : Multi-Layer Used DCodes : D10 D11 D12 D13 D14 D15 D16 D17 D18 D19 D20 D21 D22 D23 D24 D25 D26 D27 D28 D29 D30 D31 D32 D33 D34 D35 D36 D37 D43 ************************************************************* ************************************************************* Generating : Top Solder File : panel.GTS Adding Layer : Top Solder Adding Layer : Top Layer Adding Layer : Multi-Layer Used DCodes : D43 D71 D72 D73 D74 D75 D76 D77 D78 D79 D80 D81 D82 D83 D84 D85 D86 D87 D88 D89 D90 D91 D92 D93 D94 D95 D96 D97 D98 D99 D100 D101 D102 D103 D104 D105 D106 D107 D108 ************************************************************* ************************************************************* Generating : Bottom Solder File : panel.GBS Adding Layer : Bottom Solder Adding Layer : Bottom Layer Adding Layer : Multi-Layer Used DCodes : D43 D74 D85 D99 D100 D101 D102 D103 D104 D105 D106 D107 D108 D109 D110 D111 D112 D113 D114 D115 ************************************************************* ************************************************************* Generating : Bottom Paste File : panel.GBP Adding Layer : Bottom Paste Adding Layer : Bottom Layer Adding Layer : Multi-Layer Used DCodes : D13 D24 D43 D61 D62 D63 D64 D65 D66 ************************************************************* ************************************************************* Generating : Bottom Overlay File : panel.GBO Adding Layer : Bottom Overlay Used DCodes : D43 D67 D69 D116 ************************************************************* ************************************************************* Generating : Keep-Out Layer File : panel.GKO Adding Layer : Keep-Out Layer Used DCodes : D38 D45 ************************************************************* ************************************************************* Generating : Mechanical 1 File : panel.GM1 Adding Layer : Mechanical 1 Used DCodes : ************************************************************* ************************************************************* Generating : Mechanical 3 File : panel.GM3 Adding Layer : Mechanical 3 Used DCodes : D40 D117 ************************************************************* ************************************************************* Generating : Mechanical 2 File : panel.GM2 Adding Layer : Mechanical 2 Used DCodes : D68 ************************************************************* ************************************************************* Generating : Mechanical 13 File : panel.GM13 Adding Layer : Mechanical 13 Used DCodes : D118 ************************************************************* ************************************************************* Generating : Mechanical 15 File : panel.GM15 Adding Layer : Mechanical 15 Used DCodes : D118 D119 ************************************************************* ************************************************************* Generating : Dielectric 1 File : panel.1 Adding Layer : Dielectric 1 Used DCodes : ************************************************************* ************************************************************* Generating : Multi-Layer File : panel.GML Adding Layer : Multi-Layer Used DCodes : D49 D50 D51 D52 D53 D54 D55 D56 D57 D58 ************************************************************* ************************************************************* Generating : Drill Drawing File : panel.GD1 Adding Drill Pair : Top Layer-Bottom Layer Adding Layer : Drill Drawing Used DCodes : D120 D121 D122 ************************************************************* ================================================ FILE: hardware/panel.RUL ================================================ DRC Rules Export File for PCB: C:\Users\TSTERN\Google Drive\projects\Stepper_feedback\hardware\NZS_A4954_R2.0\panel.PcbDoc RuleKind=ShortCircuit|RuleName=ShortCircuit|Scope=Board|Allowed=0 RuleKind=Clearance|RuleName=Clearance|Scope=Board|Minimum=10.00 RuleKind=Width|RuleName=Width|Scope=Board|Minimum=10.00 RuleKind=SolderMaskExpansion|RuleName=SolderMaskExpansion|Scope=Board|Minimum=4.00 ================================================ FILE: hardware/panel.apr ================================================ D10 RECTANGULAR 31.496 35.433 0.000 FLASH 270.000 D12 RECTANGULAR 39.370 70.866 0.000 FLASH 270.000 D13 RECTANGULAR 31.496 33.465 0.000 FLASH 90.000 D14 RECTANGULAR 15.748 68.898 0.000 FLASH 270.000 D15 RECTANGULAR 47.244 94.488 0.000 FLASH 270.000 D16 RECTANGULAR 47.244 122.047 0.000 FLASH 270.000 D17 RECTANGULAR 47.244 70.866 0.000 FLASH 0.000 D19 RECTANGULAR 31.496 31.496 0.000 FLASH 90.000 D21 RECTANGULAR 27.559 51.181 0.000 FLASH 90.000 D23 RECTANGULAR 23.622 35.433 0.000 FLASH 270.000 D24 RECTANGULAR 35.433 29.528 0.000 FLASH 0.000 D26 RECTANGULAR 202.756 202.756 0.000 FLASH 135.000 D32 RECTANGULAR 66.929 39.370 0.000 FLASH 270.000 D33 RECTANGULAR 118.110 118.110 0.000 FLASH 180.000 D34 ROUNDED 17.716 55.118 0.000 FLASH 270.000 D35 RECTANGULAR 17.716 55.118 0.000 FLASH 270.000 D36 RECTANGULAR 27.559 37.402 0.000 FLASH 90.000 D37 RECTANGULAR 125.000 45.000 0.000 FLASH 0.000 D38 ROUNDED 6.000 6.000 0.000 LINE 0.000 D39 ROUNDED 30.000 30.000 0.000 LINE 0.000 D40 ROUNDED 20.000 20.000 0.000 LINE 0.000 D41 ROUNDED 40.000 40.000 0.000 LINE 0.000 D42 ROUNDED 16.000 16.000 0.000 LINE 0.000 D43 ROUNDED 8.000 8.000 0.000 LINE 0.000 D44 ROUNDED 25.000 25.000 0.000 LINE 0.000 D45 ROUNDED 10.000 10.000 0.000 LINE 0.000 D46 ROUNDED 50.000 50.000 0.000 LINE 0.000 D47 ROUNDED 15.000 15.000 0.000 LINE 0.000 D48 ROUNDED 60.000 60.000 0.000 LINE 0.000 D49 ROUNDED 10.000 10.000 0.000 FLASH 0.000 D50 ROUNDED 47.244 94.488 0.000 FLASH 0.000 D51 ROUNDED 35.433 61.024 0.000 FLASH 270.000 D52 ROUNDED 49.213 37.402 0.000 FLASH 270.000 D53 ROUNDED 70.000 70.000 0.000 FLASH 0.000 D54 RECTANGULAR 70.000 70.000 0.000 FLASH 0.000 D55 ROUNDED 40.000 40.000 0.000 FLASH 0.000 D56 RECTANGULAR 40.000 40.000 0.000 FLASH 0.000 D57 RECTANGULAR 70.000 70.000 0.000 FLASH 90.000 D58 ROUNDED 78.740 78.740 0.000 FLASH 0.000 D59 ROUNDED 24.000 24.000 0.000 FLASH 0.000 D60 ROUNDED 19.685 19.685 0.000 FLASH 0.000 D61 RECTANGULAR 31.496 33.465 0.000 FLASH 180.000 D62 RECTANGULAR 35.433 29.528 0.000 FLASH 90.000 D64 RECTANGULAR 23.622 62.992 0.000 FLASH 0.000 D65 RECTANGULAR 17.716 55.118 0.000 FLASH 0.000 D66 ROUNDED 17.716 55.118 0.000 FLASH 0.000 D67 ROUNDED 9.842 9.842 0.000 LINE 0.000 D68 ROUNDED 5.000 5.000 0.000 LINE 0.000 D69 ROUNDED 7.874 7.874 0.000 LINE 0.000 D70 ROUNDED 14.000 14.000 0.000 LINE 0.000 D71 RECTANGULAR 39.496 43.433 0.000 FLASH 270.000 D73 RECTANGULAR 47.370 78.866 0.000 FLASH 270.000 D74 RECTANGULAR 39.496 41.465 0.000 FLASH 90.000 D75 RECTANGULAR 23.748 76.898 0.000 FLASH 270.000 D76 RECTANGULAR 55.244 102.488 0.000 FLASH 270.000 D77 RECTANGULAR 55.244 130.047 0.000 FLASH 270.000 D78 RECTANGULAR 55.244 78.866 0.000 FLASH 0.000 D80 RECTANGULAR 39.496 39.496 0.000 FLASH 90.000 D82 RECTANGULAR 35.559 59.181 0.000 FLASH 90.000 D84 RECTANGULAR 31.622 43.433 0.000 FLASH 270.000 D85 RECTANGULAR 43.433 37.528 0.000 FLASH 0.000 D87 RECTANGULAR 210.756 210.756 0.000 FLASH 135.000 D93 RECTANGULAR 74.929 47.370 0.000 FLASH 270.000 D94 RECTANGULAR 126.110 126.110 0.000 FLASH 180.000 D95 ROUNDED 25.716 63.118 0.000 FLASH 270.000 D96 RECTANGULAR 25.716 63.118 0.000 FLASH 270.000 D97 RECTANGULAR 35.559 45.402 0.000 FLASH 90.000 D98 RECTANGULAR 133.000 53.000 0.000 FLASH 0.000 D99 ROUNDED 18.000 18.000 0.000 FLASH 0.000 D100 ROUNDED 55.244 102.488 0.000 FLASH 0.000 D101 ROUNDED 43.433 69.024 0.000 FLASH 270.000 D102 ROUNDED 57.213 45.402 0.000 FLASH 270.000 D103 ROUNDED 78.000 78.000 0.000 FLASH 0.000 D104 RECTANGULAR 78.000 78.000 0.000 FLASH 0.000 D105 ROUNDED 48.000 48.000 0.000 FLASH 0.000 D106 RECTANGULAR 48.000 48.000 0.000 FLASH 0.000 D107 RECTANGULAR 78.000 78.000 0.000 FLASH 90.000 D108 ROUNDED 86.740 86.740 0.000 FLASH 0.000 D109 RECTANGULAR 130.000 250.000 0.000 FLASH 0.000 D110 RECTANGULAR 39.496 41.465 0.000 FLASH 180.000 D111 RECTANGULAR 43.433 37.528 0.000 FLASH 90.000 D113 RECTANGULAR 31.622 70.992 0.000 FLASH 0.000 D114 RECTANGULAR 25.716 63.118 0.000 FLASH 0.000 D115 ROUNDED 25.716 63.118 0.000 FLASH 0.000 D116 ROUNDED 23.622 23.622 0.000 LINE 0.000 D117 ROUNDED 47.244 47.244 0.000 LINE 0.000 D118 ROUNDED 3.937 3.937 0.000 LINE 0.000 D119 ROUNDED 1.968 1.968 0.000 LINE 0.000 D120 ROUNDED 2.000 2.000 0.000 LINE 0.000 D121 ROUNDED 2.667 2.667 0.000 LINE 0.000 D122 ROUNDED 1.333 1.333 0.000 LINE 0.000